Lewati ke isi

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.