Layanan APAKAH
Modul DidService menyediakan alat untuk membuat, menyelesaikan, memperbarui, dan menghapus Pengidentifikasi Terdesentralisasi (DID) pada blockchain IDCHAIN.
Ini mendukung DID sederhana (untuk pengklaim) dan DID penuh (untuk pengesahan dengan kunci tambahan untuk kredensial dan delegasi).
Ringkasan
Layanan DID membantu pengembang:
- Buat DID untuk Penggugat (hanya kunci autentikasi dasar).
- Buat DID untuk Attester (autentikasi, enkripsi, pernyataan, kunci delegasi).
- Lampirkan titik akhir layanan (misalnya, untuk kredensial penerbitan).
- Selesaikan Dokumen DID.
- Hapus DID bila tidak diperlukan lagi.
Semua operasi DID diautentikasi DID, artinya transaksi ditandatangani menggunakan kunci DID dan dikirimkan dengan akun resmi.
Referensi API
Buat Did Claimer
DidService.createDidClaimer(submitterAccount, { authentication }, signCallback): Promise<DidInfo>
Membuat Claimer DID (DID yang disederhanakan hanya dengan kunci autentikasi).
Parameter:
submitterAccount(UidKeyringPair): Akun yang diberi wewenang untuk mengirimkan transaksi DID.authentication(NewDidVerificationKey): Objek denganpublicKeydantype(misalnya,"ed25519").signCallback(GetStoreTxSignCallback): Callback asinkron digunakan untuk menandatangani payload pembuatan DID.
Pengembalian:
DidInfo: Objek yang berisi:document:UidDocument(Dokumen DID yang dibuat).metadata: Info tambahan terkait rantai (misalnya, status penonaktifan).
Contoh:
const claimerKeys = await AccountService.generateKeypairs(mnemonic);
const signCallback = async ({ data }) => ({
keyType: "ed25519",
signature: claimerKeys.authentication.sign(data),
});
const didInfo = await DidService.createDidClaimer(
accountClaimer,
{
authentication: {
publicKey: claimerKeys.authentication.publicKey,
type: claimerKeys.authentication.type,
},
},
signCallback
);
console.log("Claimer DID URI:", didInfo.document.uri);
Buat Did Attester
DidService.createDidAttester(submitterAccount, { otentikasi, keyAgreement, assertionMethod, abilityDelegation }, signCallback): Janji<UidDocument>
Membuat Full Attester DID dengan beberapa kunci untuk tujuan berbeda:
otentikasi– Otentikasi & penandatanganan.Perjanjian Kunci– Enkripsi.assertionMethod– Penerbitan kredensial.capabilityDelegation– Delegasi dan otorisasi.
Parameter:
submitterAccount(UidKeyringPair): Akun yang mengirimkan transaksi.Keys(object): Masing-masing berisipublicKeydantype.signCallback(GetStoreTxSignCallback): Panggilan balik asinkron untuk penandatanganan.
Pengembalian:
UidDocument: Dokumen DID lengkap disimpan secara on-chain.
Contoh:
const keys = await AccountService.generateKeypairs(mnemonic);
const signCallback = async ({ data }) => ({
keyType: "ed25519",
signature: keys.authentication.sign(data),
});
const attesterDid = await DidService.createDidAttester(
accountAttester,
{
authentication: {
publicKey: keys.authentication.publicKey,
type: keys.authentication.type,
},
keyAgreement: {
publicKey: keys.keyAgreement.publicKey,
type: keys.keyAgreement.type,
},
assertionMethod: {
publicKey: keys.assertionMethod.publicKey,
type: keys.assertionMethod.type,
},
capabilityDelegation: {
publicKey: keys.capabilityDelegation.publicKey,
type: keys.capabilityDelegation.type,
},
},
signCallback
);
console.log("Attester DID URI:", attesterDid.uri);
Menyelesaikan DID
DidService.resolveDid(account: UidKeyringPair): Promise<UidDocument | null>
Menyelesaikan Dokumen DID untuk akun tertentu.
Parameter:
account(UidKeyringPair): Akun yang DID-nya akan diselesaikan.
Pengembalian:
UidDocumentjika ditemukan,nulljika DID tidak ada atau dinonaktifkan.
Contoh:
const resolved = await DidService.resolveDid(accountAttester);
if (resolved) {
console.log("Resolved DID Document:", resolved);
}
Hapus DID
DidService.deleteDid(submitterAccount, fullDid): Promise<void>
Menghapus DID dari blockchain. Harus ditandatangani dengan kunci otentikasi DID dan diserahkan oleh akun resmi.
Parameter:
submitterAccount(UidKeyringPair): Akun diberi wewenang untuk melakukan penghapusan.fullDid(Uid): DID URI yang akan dihapus.
Pengembalian:
void(memunculkan kesalahan jika gagal).
Contoh:
await DidService.deleteDid(accountClaimer, userDid.document.uri);
console.log("DID deleted successfully");
Contoh Penggunaan
import { AccountService, DidService } from "@idchain-sdk";
async function manageDids() {
const { mnemonic, account } = await AccountService.generateAccount();
const keys = await AccountService.generateKeypairs(mnemonic);
// Buat DID Attester
const attesterDid = await DidService.createDidAttester(
account,
{
authentication: {
publicKey: keys.authentication.publicKey,
type: keys.authentication.type,
},
keyAgreement: {
publicKey: keys.keyAgreement.publicKey,
type: keys.keyAgreement.type,
},
assertionMethod: {
publicKey: keys.assertionMethod.publicKey,
type: keys.assertionMethod.type,
},
capabilityDelegation: {
publicKey: keys.capabilityDelegation.publicKey,
type: keys.capabilityDelegation.type,
},
},
async ({ data }) => ({
keyType: "ed25519",
signature: keys.authentication.sign(data),
})
);
console.log("Attester DID:", attesterDid.uri);
// Lampirkan titik akhir layanan
await DidService.setServiceDid(
attesterDid.uri,
account,
"#vc-endpoint",
"https://gateway.example"
);
// Selesaikan lalu hapus DID
const resolved = await DidService.resolveDid(account);
console.log("Resolved DID:", resolved?.uri);
await DidService.deleteDid(account, attesterDid.uri);
console.log("DID removed");
}
manageDids();
Penanganan Kesalahan
- DID yang belum terselesaikan: deleteDid throw jika DID tidak dapat diselesaikan ("Could not resolve DID").
- DID yang dinonaktifkan: resolveDid mengembalikan null jika DID dinonaktifkan atau hilang.
- Kesalahan Penandatanganan: Jika signCallback gagal atau kunci tidak valid, pembuatan DID akan gagal.
Modul Terkait
- Layanan Akun: Menghasilkan akun dan kunci untuk pembuatan DID.
- Layanan Kredensial: Menerbitkan dan mencabut kredensial yang terkait dengan DID.
- Layanan Web3Names: Tautkan nama yang dapat dibaca manusia ke DID.