Bắt đầu
Tài liệu này dành cho các nhà phát triển dùng caver-js v1.5.0 trở lên. Nếu bạn đang sử dụng phiên bản cũ hơn, hãy xem [Bắt đầu (~v1.4.1)](../caver-js-1.4.1/get-started-1.4.1.md ../caver-js-1.4.1/get-started-1.4.1.md).
Điều kiện tiên quyết
Phần phụ thuộc
Cần có các gói sau đây để dùng thư viện caver-js.
Lưu ý caver-js có thể chạy trên Node.js phiên bản 12 và 14. Chúng tôi khuyến nghị sử dụng các phiên bản sau:
Nếu bạn dùng một phiên bản khác của Node (ví dụ như Node v15), hãy dùng Trình quản lý phiên bản Node (nvm) để cài đặt và sử dụng phiên bản được caver-js hỗ trợ.
Cài đặt
Để thử dùng, hãy cài đặt caver-js với npm bằng cách dùng lệnh sau:
$ npm install caver-js
Lưu ý: tập tin package.json
phải tồn tại trên cùng một đường dẫn cài đặt. Nếu nó không tồn tại, package.json
có thể được tạo qua npm init
.
Để cài đặt một phiên bản caver-js cụ thể, hãy thử lệnh sau:
$ npm install caver-js@X.X.X
Bắt đầu với caver-js
Khi đã cài xong caver-js, bạn có thể kết nối với một nút Klaytn bằng caver-js.
Để thực hành các ví dụ dưới đây, trước tiên, hãy tạo một tập tin thử nghiệm trong thư mục làm việc.
$ touch test.js
Bạn có thể thấy tập tin test.js
được tạo ra trong thư mục làm việc.
Viết mã sau trong test.js.
// test.jsconst Caver = require('caver-js')const caver = new Caver('https://public-en-baobab.klaytn.net/')async function testFunction() { const version = await caver.rpc.klay.getClientVersion() console.log(version)}testFunction()
Khi chạy mã trên, bạn sẽ nhận đư ợc kết quả sau.
$ node ./test.jsKlaytn/v1.4.0/linux-amd64/go1.14.1
Nếu bạn thấy kết quả đầu ra của console.log như trên, hãy tiếp tục với các bước dưới đây. Số phiên bản có thể sẽ khác theo phiên bản của nút Klaytn được kết nối.
Kết nối với một Nút Klaytn
Bạn có thể nhập mô-đun caver-js và kết nối nó với một Nút Klaytn trong mạng thử nghiệm Baobab như trong ví dụ dưới đây:
const Caver = require('caver-js')const caver = new Caver('https://public-en-baobab.klaytn.net/')
Nếu bạn đang chạy một EN, bạn có thể kết nối nó với nút của riêng mình bằng cách thay đổi máy chủ và cổng như dưới đây:
const Caver = require('caver-js')const caver = new Caver('https://your.en.url:8651/')
Quản lý Keyring
Keyring là một cấu trúc chứa địa chỉ của một tài khoản Klaytn và (các) khóa riêng tư.
Keyring có thể được phân thành ba loại tùy thuộc vào loại khóa được lưu trữ: SingleKeyring chứa một địa chỉ và một khóa riêng tư, MultipleKeyring chứa một địa chỉ và nhiều khóa riêng tư và RoleBasedKeyring chứa một địa chỉ và một hoặc nhiều khóa riêng tư cho từng vai trò.
SingleKeyring xác định thuộc tính key
bên trong, và key
này chứa một khóa riêng tư.
MultipleKeyring xác định thuộc tính keys
bên trong, và keys
này đư ợc triển khai dưới dạng một mảng để chứa nhiều khóa riêng tư.
Thuộc tính keys
được xác định trong RoleBasedKeyring được triển khai dưới dạng một mảng hai chiều (keys
trống có dạng [ [], [], [] ]
) có thể bao gồm nhiều khóa cho từng role. Phần tử đầu tiên của mảng này chứa (các) khóa riêng tư để sử dụng cho roleTransactionKey
, phần tử thứ hai là (các) khóa riêng tư để sử dụng cho roleAccountUpdateKey
, và phần tử thứ ba là (các) khóa riêng tư để sử dụng cho roleFeePayerKey
.
Tạo một Keyring
Tạo một SingleKeyring
Bạn có thể tạo ngẫu nhiên một keyring đơn lẻ như dưới đây.
// test.jsconst Caver = require('caver-js')const caver = new Caver('https://public-en-baobab.klaytn.net/')async function testFunction() { const keyring = caver.wallet.keyring.generate() console.log(keyring)}testFunction()
Khi chạy mã trên, bạn sẽ nhận được kết quả sau.
$ node ./test.jsSingleKeyring { _address: '0x3d263c3c0df60c5516f932d244531742f45eed5c', _key: PrivateKey { _privateKey: '0x{private key}' }}
Kết quả thực thi được hiển thị ở trên. Các biến thành viên được xác định bên trong đối tượng cụ thể có thể được truy cập qua keyring.address
và keyring.key
.
Tạo một SingleKeyring từ khóa riêng tư
Ngoài ra, nếu bạn sở hữu một khóa riêng tư cụ thể, bạn có thể sử dụng khóa này để tạo một keyring như bên dưới.
// test.jsconst Caver = require('caver-js')const caver = new Caver('https://public-en-baobab.klaytn.net/')async function testFunction() { // Create a keyring from a private key const keyringFromPrivateKey = caver.wallet.keyring.createFromPrivateKey('0x{private key}') console.log(keyringFromPrivateKey)}testFunction()
Khi chạy mã trên, bạn sẽ nhận được kết quả sau.
$ node ./test.jsSingleKeyring { _address: '0xf5a9079f311f9ec55170af351627aff0c5d2e287', _key: PrivateKey { _privateKey: '0x{private key}' } }
Kết quả của caver.wallet.keyring.createFromPrivateKey
, cũng như kết quả của caver.wallet.keyring.generate
ở trên, là một đối tượng SingleKeyring cụ thể với một địa chỉ được xác định bên trong nó, và một đối tượng [PrivateKey] cụ thể trong keyring.key
.
Tạo một SingleKeyring bằng một khóa riêng tư và một địa chỉ
Nếu khóa riêng tư cho tài khoản Klaytn của bạn tách rời khỏi địa chỉ, bạn có thể tạo một keyring bằng địa chỉ đã cho và khóa riêng tư đã cho như dưới đây.
// test.jsconst Caver = require('caver-js')const caver = new Caver('https://public-en-baobab.klaytn.net/')async function testFunction() { // Create a keyring with an address and a private key const keyring = caver.wallet.keyring.createWithSingleKey('0x{address in hex}', '0x{private key}') console.log(keyring) // Create a keyring from a KlaytnWalletKey const keyringFromKlaytnWalletKey = caver.wallet.keyring.createFromKlaytnWalletKey('0x{private key}0x{type}0x{address in hex}') console.log(keyringFromKlaytnWalletKey)}testFunction()
Chạy mã này trong bảng điều khiển như dưới đây.
$ node ./test.jsSingleKeyring { _address: '0x17e7531b40ad5d7b5fa7b4ec78df64ce1cb36d24', _key: PrivateKey { _privateKey: '0x{private key}' }}SingleKeyring { _address: '0x17e7531b40ad5d7b5fa7b4ec78df64ce1cb36d24', _key: PrivateKey { _privateKey: '0x{private key}' }}