Layanan Akun
Modul AccountService menyediakan utilitas untuk menghasilkan akun blockchain dan pasangan kunci untuk berinteraksi dengan jaringan IDCHAIN.
Ini mendukung pembuatan akun berbasis mnemonic, pembuatan keypair untuk operasi DID, dan pendanaan otomatis (melalui transfer token faucet) untuk akun baru.
Ringkasan
Layanan ini membantu pengembang:
- Hasilkan akun baru (dengan mnemonic dan alamat).
- Dapatkan akun dari mnemonic yang ada.
- Hasilkan pasangan kunci khusus untuk pembuatan DID (otentikasi, perjanjian kunci, pernyataan, delegasi).
Kunci yang dihasilkan kompatibel dengan semua modul IDCHAIN lainnya (DID, Credential, Web3Names).
Referensi API
Hasilkan Akun
AccountService.generateAccount(): Promise<{ mnemonic: string; account: UidKeyringPair; }>
Menghasilkan akun blockchain baru dengan mnemonic acak, mendapatkan pasangan kuncinya, dan secara otomatis meminta transfer token untuk saldo awal.
Pengembalian:
mnemonic: Frasa mnemonic 12 kata (string).account: ObjekUidKeyringPairberisi:address: alamat blockchain berformat SS58.sign(data: Uint8Array): Uint8Array: Metode penandatanganan.
Contoh:
const { mnemonic, account } = await AccountService.generateAccount();
console.log("Mnemonic:", mnemonic);
console.log("Address:", account.address);
Dapatkan Akun
AccountService.getAccount(mnemonic: string): Promise<UidKeyringPair>
Mendapatkan pasangan kunci akun blockchain dari mnemonic yang ada.
Parameter:
mnemonic(string, wajib diisi): Frasa mnemonic yang valid (12/24 kata).
Pengembalian:
UidKeyringPair: Sama seperti di atas, dengan kemampuan penandatanganan.
lemparan:
Error("Mnemonic tidak disediakan atau tidak valid") jika mnemonic hilang atau tidak ada string.
Contoh:
const existingAccount = await AccountService.getAccount("seed seed seed ...");
console.log("Recovered address:", existingAccount.address);
Hasilkan Pasangan Kunci
AccountService.generateKeypairs(mnemonic: string): Promise<{ authentication, keyAgreement, assertionMethod, capabilityDelegation }>
Menghasilkan beberapa pasangan kunci untuk operasi DID, yang berasal dari mnemonic yang sama:
authentication: Kunci utama untuk penandatanganan dan otentikasi.keyAgreement: Kunci enkripsi untuk pesan aman.assertionMethod: Kunci yang digunakan untuk mengeluarkan kredensial yang dapat diverifikasi.abilityDelegation: Kunci untuk delegasi dan otorisasi.
Parameter:
mnemonic(string, wajib diisi): Benih mnemonic untuk mendapatkan kunci.
Pengembalian: Sebuah objek dengan:
authentication:UidKeyringPairkeyAgreement:UidEncryptionKeypairassertionMethod:UidKeyringPaircapabilityDelegation:UidKeyringPair
Contoh:
const keys = await AccountService.generateKeypairs(mnemonic);
console.log("Authentication key:", keys.authentication.address);
console.log(
"Encryption key (public):",
keys.keyAgreement.publicKey.toString("hex")
);
Contoh Penggunaan
import { AccountService } from "@baliola/idchain-sdk";
async function setupAccounts() {
// Buat akun baru untuk DID Attester
const { mnemonic, account } = await AccountService.generateAccount();
console.log("Attester Mnemonic:", mnemonic);
console.log("Attester Address:", account.address);
// Turunkan kunci untuk pembuatan DID
const keypairs = await AccountService.generateKeypairs(mnemonic);
console.log("Authentication key address:", keypairs.authentication.address);
// Pulihkan akun yang ada
const recovered = await AccountService.getAccount(mnemonic);
console.log("Recovered Address:", recovered.address);
}
setupAccounts();
Penanganan Kesalahan
- Mnemonic tidak valid: Semua metode akan dibuang jika mnemonic yang diberikan adalah null, bukan string, atau formatnya tidak tepat.
- Kegagalan pendanaan token: Pada generateAccount, jika transfer faucet (transferToken) gagal, kesalahan akan terjadi.
Untuk aplikasi produksi, bungkus panggilan dalam try-catch:
try {
const { mnemonic, account } = await AccountService.generateAccount();
} catch (err) {
console.error("Account generation failed:", err);
}
Modul Terkait
- Layanan DID: Gunakan kunci yang dihasilkan untuk membuat dan mengelola DID.
- Layanan Kredensial: Gunakan DID dan kunci untuk mengeluarkan kredensial.