Menghasilkan akun
Mewakili akun
Mewakili akun menggunakan Namada SDK sangatlah mudah. Akun di Namada ditentukan oleh kunci publik dan kunci pribadinya (jamak untuk multisignatures). Kunci publik digunakan untuk mengidentifikasi akun dan kunci pribadi digunakan untuk menandatangani transaksi. Dalam cuplikan di bawah ini, kami mewakili akun menggunakan kunci publik dan kunci pribadi.
use namada_sdk::core::types::key::common::{PublicKey, SecretKey};
struct SimpleAccount {
public_key: PublicKey,
private_key: SecretKey
}
Untuk akun multisignature, kami dapat merepresentasikannya melalui vektor kunci.
use namada_sdk::core::types::key::common::{PublicKey, SecretKey};
struct MultisigAccount {
public_keys: Vec<PublicKey>,
private_keys: Vec<SecretKey>
}
Akun multisignature, karena diinisialisasi melalui transaksi on-chain, kunci publiknya akan selalu terungkap ke buku besar. Namun, ketika pasangan kunci dibuat secara offline, pengguna harus mengirimkan transaksi untuk mengungkapkan kunci publiknya. Oleh karena itu, akan sangat membantu jika menambahkan kolom tersebut revealed
ke struktur akun.
use namada_sdk::core::types::key::common::{PublicKey, SecretKey};
struct Account {
public_key: PublicKey,
private_key: SecretKey,
revealed: bool
}
Mengungkap kunci publik dari akun implisit
Untuk mengungkapkan kunci publik dari akun implisit, pengguna harus mengirimkan transaksi ke buku besar.
use namada_sdk::io::NullIo;
use namada_sdk::NamadaImpl;
use namada_sdk::core::types::chain::ChainId;
// Define the namada implementation (assuming we have a wallet, http_client, and shielded_ctx)
let mut namada = NamadaImpl::new(&http_client, &mut wallet, &mut shielded_ctx, &NullIo)
.await
.expect("unable to construct Namada object")
.chain_id(ChainId::from_str("public-testnet-14.5d79b6958580").unwrap());
// Generate an account (assuming sk is a SecretKey)
let account = Account {
public_key: sk.to_public(),
private_key: sk,
revealed: false,
};
// Build the reveal pk transaction using the NamadaImpl object
let reveal_tx_builder = namada
.new_reveal_pk(account.public_key.clone())
.signing_keys(vec![account.private_key.clone()]);
let (mut reveal_tx, signing_data, _) = reveal_tx_builder
.build(namada)
.await
.expect("unable to build reveal pk tx");
// Sign the transaction
namada
.sign(&mut reveal_tx, &reveal_tx_builder.tx, signing_data)
.await
.expect("unable to sign reveal pk tx");
// Submit the signed tx to the ledger for execution
namada.submit(reveal_tx.clone(), reveal_tx_builder)
Setelah kunci publik terungkap, akun tersebut dapat digunakan untuk menandatangani transaksi.
Last updated