- vừa được xem lúc

Sui Blockchain Wallet Account

0 0 33

Người đăng: Long Nguyễn Giao Huỳnh

Theo Viblo Asia

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
// ...

--

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Type annotation vs Type Inference - Typescript

Trong bài viết này, chúng ta sẽ tìm hiểu kỹ về TypeScript bằng cách tìm hiểu sự khác biệt giữa kiểu chú thích và kiểu suy luận. Tôi sẽ cho rằng bạn có một số kinh nghiệm về JavaScript và biết về các kiểu cơ bản, như chuỗi, số và boolean.

0 0 32

- vừa được xem lúc

Type Annotation và Type Inference trong TypeScript là gì?

Khi làm việc với javascript chắc hẳn các bạn đã quá quen với việc dùng biến mà không cần phải quan tâm đến kiểu dữ liệu của nó là gì phải không? Đúng là mới đầu tiếp cận với Typescript mình cũng cảm thấy nó khá là phiền vì cần phải khai báo đủ type để nó chặt chẽ hơn. Lúc đó mình còn nghĩ: " JavaScr

0 0 25

- vừa được xem lúc

Tìm hiểu TypeScript và kiến thức cơ bản

TypeScript là gì. TypeScript sử dụng tất cả các tính năng của của ECMAScript 2015 (ES6) như classes, modules.

0 0 35

- vừa được xem lúc

TypeScript - P1: Vì sao TypeScript được yêu thích đến vậy?

Trải nghiệm thực tế. Trước khi là một Web Developer, tôi là một Mobile Developer và Java là thứ mà tôi từng theo đuổi.

0 1 58

- vừa được xem lúc

4 Tính năng rất hay từ TypeScript

Xin chào các bạn hôm nay mình xin chia sẽ những tính năng rất hay của TypeScript (TS), các bạn cùng tìm hiểu nhé. Ngoài việc set Type cho biến, tham số hay function thì ví dụ khi bạn nhìn vào một tham

0 0 82