Layanan Nama Web3
Modul Web3Names menyediakan alat untuk mengklaim, menyelesaikan, menanyakan kredensial, dan merilis Web3Names di blockchain IDCHAIN.
Web3Names adalah alias yang dapat dibaca manusia (misalnya, johndoe-claimer) yang dapat ditautkan ke DID, sehingga lebih mudah untuk dibagikan dan ditemukan.
Ringkasan
Layanan Web3Names memungkinkan pengembang untuk:
- Klaim Nama Web3 untuk DID (harus memenuhi aturan format).
- Selesaikan Web3Name untuk mengambil Dokumen DID tertaut.
- Kueri kredensial yang diterbitkan terkait dengan Web3Name.
- Rilis Web3Name (batalkan tautan dan gratiskan untuk orang lain).
Semua operasi dilakukan dengan verifikasi on-chain dan jaminan keunikan Web3Name.
Aturan Penamaan
Web3Name yang valid harus:
- Hanya berisi huruf kecil (a-z), angka (0-9), tanda hubung (-), dan garis bawah (_).
- Panjangnya antara 3 dan 32 karakter.
- Jadilah unik di blockchain.
- Cocokkan ekspresi reguler: /^[a-z0-9-_]{3,32}$/
Referensi API
Mengeklaim
Web3Names.claim(userDid, submitterAccount, name): Promise<void>
Mengklaim Web3Name baru untuk DID.
Parameter:
userDid(UidDocument): Dokumen DID yang namanya diklaim.submitterAccount(UidKeyringPair): Akun yang diberi wewenang untuk mengirimkan transaksi.name(string): Nama Web3 yang diinginkan (harus lulus validasi format).
Pengembalian:
void(memunculkan kesalahan jika nama tidak valid atau nama sudah dipakai).
Contoh:
await Web3Names.claim(userDid.document, userAccount, "johndoe-claimer");
console.log("Web3Name claimed successfully");
Menyelesaikan
Web3Names.resolve(web3Name): Promise<UidDocument>
Menyelesaikan Web3Name untuk mengambil Dokumen DID terkaitnya.
Parameter:
web3Name(string): Web3Name yang akan diselesaikan.
Pengembalian:
UidDocument: Dokumen DID yang ditautkan ke Web3Name.
Contoh:
const didDoc = await Web3Names.resolve("johndoe-claimer");
console.log("Resolved DID Document:", didDoc);
Merilis
Web3Names.release(userDid, submitterAccount): Promise<void>
Merilis (membatalkan pendaftaran) Web3Name, membebaskannya untuk digunakan kembali oleh orang lain.
Parameter:
userDid(UidDocument): Dokumen DID yang saat ini memiliki Web3Name.submitterAccount(UidKeyringPair): Akun resmi.
Pengembalian:
void
Contoh:
await Web3Names.release(userDid.document, userAccount);
console.log("Web3Name released");
Contoh Penggunaan Lengkap
import { Web3Names, AccountService, DidService } from "@idchain-sdk";
async function manageWeb3Names() {
const { mnemonic, account: userAccount } = await AccountService.generateAccount();
const userDidInfo = await DidService.createDidClaimer(userAccount, {
authentication: { publicKey: userAccount.publicKey, type: "ed25519" },
}, async ({ data }) => ({
keyType: "ed25519",
signature: userAccount.sign(data),
}));
const userDid = userDidInfo.document;
// Klaim Nama Web3
const web3Name = "johndoe-claimer";
await Web3Names.claim(userDid, userAccount, web3Name);
console.log(`Web3Name "${web3Name}" claimed`);
// Selesaikan DID dari Web3Name
const resolvedDid = await Web3Names.resolve(web3Name);
console.log("Resolved DID Document:", resolvedDid);
// Ambil kredensial yang dipublikasikan (jika ada)
try {
const publishedCreds = await Web3Names.queryPublishedCredentials(web3Name);
console.log("Published Credentials:", publishedCreds);
} catch (err) {
console.log("No credentials found or fetch failed:", err);
}
// Rilis Web3Name
await Web3Names.release(userDid, userAccount);
console.log(`Web3Name "${web3Name}" released`);
Penanganan Kesalahan
- Web3Name Tidak Valid: Dilempar jika nama tidak cocok dengan pola yang diizinkan.
- DID yang belum terselesaikan: queryPublishedCredentials muncul jika DID tidak dapat diselesaikan.
- Kredensial yang Dicabut: Operasi pengambilan akan ditolak jika ada kredensial yang tidak valid.
- Kesalahan Titik Akhir: Jika titik akhir IPFS/HTTP tidak dapat dijangkau atau JSON tidak valid dikembalikan.
Modul Terkait
- Layanan DID: Membuat dan mengelola DID yang ditautkan ke Web3Names.
- Layanan Kredensial: Mengeluarkan kredensial yang terkait dengan DID yang terkait dengan Web3Name.