Sui Blockchain Wallet Account
Bộ code snippets để tạo wallet/signer tương tác với Sui blockchain một cách nhanh chóng.
Chuẩn bị mnemonic
Bạn có thể tạo 1 mnemonic
mới từ package @scure/bip39
:
import * as bip39 from "@scure/bip39";
import { wordlist } from "@scure/bip39/wordlists/english.js";
const mnemonic = bip39.generateMnemonic(wordlist);
hoặc sử dụng mnemonic
hiện đã có của bạn.
Lấy keypair
Lấy keypair từ mnemonic
Chuẩn bị sui js sdk
yarn add @mysten/sui.js
# hoặc
pnpm add @mysten/sui.js
Lấy key pair từ mnemonic
Sui blockchain sử dụng 2 cơ chế: Ed25519
, Secp256k1
. Code snippets trong bài viết này mình sẽ sử dụng cơ chế mặc định của Sui là Ed25519
.
import { DEFAULT_ED25519_DERIVATION_PATH, Ed25519Keypair } from "@mysten/sui.js";
const keypair = Ed25519Keypair.deriveKeypair(mnemonic, DEFAULT_ED25519_DERIVATION_PATH);
Lấy private key từ keypair
const privateKey = HexString.fromUint8Array(fromB64(keypair.export().privateKey)).toString();
Public key và Sui address
const publicKey = keypair.getPublicKey();
const address = publicKey.toSuiAddress();
Lấy keypair từ private key
private key
của bạn từ Sui Wallet hoặc bất kỳ wallet nào.
// cắt bỏ 0x ở đầu private key
const privateKeyBytes = Uint8Array.from(Buffer.from(privateKey.slice(2), "hex"));
const keypair = fromExportedKeypair({
schema: "ED25519",
privateKey: toB64(privateKeyBytes),
});
const publicKey = keypair.getPublicKey();
const address = publicKey.toSuiAddress();
// có thể thử so sánh địa chỉ ví với địa chỉ trong sui wallet xem có chính xác không nhé!
Provider và signer
Để tương tác với Sui Blockchain, chúng ta cần có 1 provider:
Sui Blockchain provider
Tạo 1 provider tương tác với Sui blockchain mainnet
import { Connection, JsonRpcProvider } from "@mysten/sui.js";
export const connection = new Connection({
fullnode: "https://fullnode.mainnet.sui.io",
});
export const provider = new JsonRpcProvider(mainnetConnection);
Sử dụng các functions của provider
provider.getTransactionBlock
provider.queryEvents
provider.queryTransactionBlocks
provider.waitForTransactionBlock
provider.getAllBalances
provider.getOwnedObjects
// ...
Tạo signer từ keypair và provider
Để ký 1 transaction bất kỳ trong sui, ta cần tạo 1 signer
:
const signer = new RawSigner(keypair, provider);
Sử dụng các functions của signer vừa được tạo ra
signer.signAndExecuteTransactionBlock
signer.signMessage
signer.signTransactionBlock
// ...
All rights reserved