Layanan Skema Dokumen UID
Modul UidDocumentSchema menyediakan utilitas untuk membuat, menyimpan, dan mengambil Skema Dokumen UID di blockchain IDCHAIN.
Skema adalah definisi yang dapat digunakan kembali (mirip dengan Skema JSON) yang menstandardisasi struktur kredensial untuk penerbitan dan verifikasi.
Ringkasan
Layanan ini memungkinkan pengembang untuk:
- Buat skema yang dapat digunakan kembali (misalnya, ID Nasional, sertifikat).
- Simpan skema secara on-chain sehingga dapat direferensikan oleh banyak penerbit.
- Ambil skema dari blockchain untuk validasi atau digunakan kembali.
Skema menentukan struktur subjek kredensial untuk memastikan konsistensi dan interoperabilitas di seluruh dApps.
Referensi API
Skema Toko
UidDocumentSchema.storeSchema(verifierAccount, verifierDid, uidDocument): Promise<IUidDocument>
Menyimpan Skema Dokumen UID baru di blockchain. Jika skema sudah ada, metode akan melewati pembuatan dan mengembalikan skema yang ada.
Parameter:
verifierAccount(UidKeyringPair): Akun blockchain yang diberi wewenang untuk mengirimkan transaksi skema.verifierDid(Uid): URI DID dari verifikator (pemilik skema).uidDocument(IUidDocument): Objek skema, biasanya dibuat denganfromPropertiesatau fungsi pembantu (sepertigenerateSchema).
Pengembalian:
IUidDocument: Skema disimpan atau diambil dari rantai.
Ambil Dokumen Uid
UidDocumentSchema.fetchUidDocument(uidDocumentId): Promise<IUidDocumentDetails>
Mengambil Skema Dokumen UID dari blockchain berdasarkan ID-nya.
Parameter:
uidDocumentId(string): ID skema unik. Contoh formatnya:uid:dokumen:0x329a2a5861ea63c250763e5e4c4d4a18fe4470a31e541365c7fb831e5432b940
Pengembalian:
IUidDocumentDetails: Objek yang berisi:uidDocument: Konten skema.metadata: Metadata on-chain (versi, stempel waktu, dll.).
Hasilkan Skema
generateSchema(schemaName: string, fields: Record<string, { type: string }>, version: "V1" | string): IUidDocument
Fungsi utilitas (contoh) untuk dengan cepat menghasilkan Skema Dokumen UID. Ini bukan bagian dari modul inti namun merupakan pola yang direkomendasikan untuk proyek.
Parameter:
schemaName(string): Judul skema yang dapat dibaca manusia.fields(object): Definisi field dengan anotasi tipe (string, angka, dll.).version(string): Versi skema (biasanya"V1").
Pengembalian:
IUidDocument: Objek Skema Dokumen UID yang siap digunakan.
Contoh
import { fromProperties, IUidDocument } from "@idchain-sdk";
function generateKTPSchema(): IUidDocument {
console.log("⚙️ Creating KTP Schema...");
const uidDocument = fromProperties(
"KTP Schema",
{
NIK: { type: "string" },
Nama: { type: "string" },
TTL: { type: "string" },
status: { type: "string" },
},
"V1"
);
console.log("✅ Schema generated");
return uidDocument;
}
// Penggunaan
const schema = generateKTPSchema();
await UidDocumentSchema.storeSchema(attesterAccount, attesterDid.uri, schema);
Contoh Penggunaan Lengkap
import {
connect,
disconnect,
fromProperties,
UidDocumentSchema,
IUidDocument,
} from "@id-chain";
// Helper: Menghasilkan skema KTP yang terstandarisasi
function generateKTPSchema(): IUidDocument {
console.log("⚙️ Creating KTP Schema...");
const uidDocument = fromProperties(
"KTP Schema",
{
NIK: { type: "string" },
Nama: { type: "string" },
TTL: { type: "string" },
status: { type: "string" },
},
"V1"
);
console.log("✅ Schema generated");
return uidDocument;
}
async function manageSchemas() {
await connect(process.env.WSS_ADDRESS as string);
// Langkah 1: Buat skema
const schema = generateKTPSchema();
// Langkah 2: Simpan skema on-chain (untuk DID attester)
const storedSchema = await UidDocumentSchema.storeSchema(
attesterAccount,
attesterDid.uri,
schema
);
console.log("Stored schema ID:", storedSchema.$id);
// Langkah 3: Ambil skema dari blockchain
const fetched = await UidDocumentSchema.fetchUidDocument(storedSchema.$id);
console.log("Fetched UID Document Schema:", JSON.stringify(fetched, null, 2));
await disconnect();
}
manageSchemas();
Penanganan Kesalahan
- DID Hilang: Menampilkan "Could not resolve DID" jika verifierDid tidak dapat diselesaikan.
- Skema Tidak Valid: Akan muncul selama penyimpanan jika validasi atau pengkodean gagal.
- Kesalahan Jaringan: Kegagalan koneksi Blockchain akan menyebabkan operasi pengambilan dan penyimpanan ditolak.
Modul Terkait
- Layanan Kredensial: Mengeluarkan dan memverifikasi kredensial menggunakan skema ini.
- Layanan Verifikasi: Validasi kredensial yang mengandalkan skema yang disimpan.