Lewati ke isi

IDCHAIN SDK

IDCHAIN ​​SDK adalah perpustakaan berbasis TypeScript yang membantu pengembang (baik backend maupun frontend) berinteraksi secara lancar dengan blockchain IDCHAIN. Ini menyediakan utilitas tingkat tinggi untuk mengelola Pengidentifikasi Terdesentralisasi (DID), menangani Kredensial yang Dapat Diverifikasi, mendefinisikan dan menyimpan skema dokumen, dan mengklaim dan mengelola Nama Web3 – semuanya sesuai dengan standar W3C.

SDK ini dirancang untuk Node.js dan lingkungan browser, memungkinkan integrasi yang mudah dengan aplikasi terdesentralisasi (dApps), backend, dan platform web.


Fitur

  • Pengelolaan DID: Membuat, menyelesaikan, memperbarui, dan menghapus DID dengan dukungan kunci penuh (autentikasi, perjanjian kunci, pernyataan, delegasi kemampuan).

  • Kredensial yang Dapat Diverifikasi (VC): Menerbitkan, mencabut, membatalkan pencabutan, dan memverifikasi kredensial dengan model data yang sesuai dengan W3C.

  • Skema Dokumen UID: Tentukan dan simpan skema yang dapat digunakan kembali untuk penerbitan kredensial standar.

  • Verifikasi Kredensial: Verifikasi kredensial dan presentasi, termasuk pengungkapan selektif (pembagian klaim sebagian).

  • Web3Names: Klaim, selesaikan, dan rilis nama yang dapat dibaca manusia yang terkait dengan DID.

  • Lintas Platform: Kompatibel dengan lingkungan backend (Node.js) dan frontend (browser).


Instalasi

SDK ini saat ini hanya untuk penggunaan internal (tidak dipublikasikan ke npm). Untuk memasukkannya ke dalam proyek Anda:

  1. Tambahkan baris ini ke Anda package.json

"@idchain-sdk": "github:idchain-sdk",

  1. Instal ulang menggunakan manajer paket Anda

npm install

  1. Impor paket dalam file kode Anda ts import { disconnect } from "@idchain-sdk";

Arsitektur

Di bawah ini adalah ikhtisar tingkat tinggi tentang bagaimana SDK berinteraksi dengan IDCHAIN ​​dan aplikasi Anda:

flowchart-architecture

Contoh Mulai Cepat

Berikut adalah contoh sederhana menyeluruh yang menunjukkan cara menggunakan SDK. Skrip ini terhubung ke blockchain, membuat akun, menyiapkan DID, mengeluarkan kredensial, memverifikasinya, dan mengklaim Web3Name.

import dotenv from "dotenv";
import {
  connect,
  disconnect,
  AccountService,
  DidService,
  UidDocumentSchema,
  Credential,
  Verification,
  Web3Names,
  fromProperties,
  UidDocument,
  Uid,
} from "@idchain-sdk";

dotenv.config();

async function main() {
  await connect(process.env.WSS_ADDRESS as string);

  // Langkah 1: Buat akun untuk Attester dan User (Claimer)
  const { mnemonic: attesterMnemonic, account: attester } =
    await AccountService.generateAccount();
  const { mnemonic: userMnemonic, account: user } =
    await AccountService.generateAccount();

  // Langkah 2: Buat DID untuk keduanya
  const attesterDid = await DidService.createDidAttester(
    attesterMnemonic,
    attester,
    async ({ data }) => ({
      keyType: "ed25519",
      signature: attester.sign(data),
    })
  );
  const userDidInfo = await DidService.createDidClaimer(
    userMnemonic,
    user,
    async ({ data }) => ({
      keyType: "ed25519",
      signature: user.sign(data),
    })
  );

  // Langkah 3: Tentukan dan simpan Skema Dokumen UID
  const schema = fromProperties(
    "KTP Schema",
    {
      NIK: { type: "string" },
      Name: { type: "string" },
      BirthDate: { type: "string" },
    },
    "V1"
  );

  await UidDocumentSchema.storeSchema(attester, attesterDid.uri, schema);

  // Langkah 4: Terbitkan Kredensial untuk pengguna
  const unsignedVc = await Credential.requestAttestation(
    userDidInfo.document.uri as Uid,
    schema,
    { NIK: "1234567890", Name: "Alice", BirthDate: "2000-01-01" },
    attesterDid.uri as Uid
  );
  const vc = await Credential.issueAttestation(
    unsignedVc,
    attesterDid as UidDocument,
    attester
  );

  // Langkah 5: Verifikasi Kredensial melalui Presentasi
  const presentation = await Verification.setPresentation(
    vc,
    { uidDocument: userDidInfo.document as UidDocument, signers: [user] },
    new Date(Date.now() + 5 * 60 * 1000),
    { includeClaims: ["/NIK"], challenge: "random-challenge" }
  );
  const verificationResult = await Verification.verifyPresentation(
    presentation,
    {
      challenge: "random-challenge",
      now: new Date(),
    }
  );

  console.log("Verification Result:", verificationResult);

  // Langkah 6: Klaim Nama Web3
  await Web3Names.claim(userDidInfo.document, user, "alice-id");

  // Putuskan sambungan
  await disconnect();
}

main().catch(console.error);

Ikhtisar Modul

SDK disusun menjadi enam modul utama, masing-masing dengan dokumentasi khusus:

  1. Layanan Akun – Pembuatan akun & manajemen kunci.
  2. Layanan DID – Membuat, menyelesaikan, memperbarui, dan menghapus DID.
  3. Layanan Skema Dokumen UID – Menentukan dan mengelola skema UID.
  4. Layanan Kredensial – Menerbitkan, mencabut, dan mengelola kredensial.
  5. Layanan Verifikasi – Verifikasi kredensial & presentasi.
  6. Layanan Web3Names – Klaim, selesaikan, dan rilis Web3Names.