Chuyển đến nội dung chính

Gửi token bằng ethers.js

ETHERS.JS
ERC-20
TOKEN
Người mới bắt đầu
Kim YongJun
6 tháng 4, 2021
3 phút đọc

Gửi token bằng ethers.js(5.0)

Trong hướng dẫn này, bạn sẽ học cách

  • Nhập ethers.js
  • Chuyển token
  • Đặt giá gas theo tình trạng lưu lượng mạng lưới

Để bắt đầu

Để bắt đầu, trước tiên chúng ta phải nhập thư viện ethers.js vào JavaScript của mình Bao gồm ethers.js(5.0)

Cài đặt

/home/ricmoo> npm install --save ethers

ES6 trong Trình duyệt

<script type="module">
  import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
  // Mã của bạn ở đây...
</script>

ES3(UMD) trong Trình duyệt

<script
  src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
  type="application/javascript"
></script>

Các tham số

  1. contract_address: Địa chỉ hợp đồng token (cần có địa chỉ hợp đồng khi token bạn muốn chuyển không phải là ether)
  2. send_token_amount: Số lượng bạn muốn gửi cho người nhận
  3. to_address: Địa chỉ của người nhận
  4. send_account: Địa chỉ của người gửi
  5. private_key: Khóa riêng tư của người gửi để ký giao dịch và thực sự chuyển token

Lưu ý

signTransaction(tx) bị loại bỏ vì sendTransaction() thực hiện việc đó ở bên trong.

Quy trình gửi

1. Kết nối với mạng lưới (mạng thử nghiệm)

Thiết lập Provider (Infura)

Kết nối với mạng thử nghiệm Ropsten

window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")

2. Tạo ví

let wallet = new ethers.Wallet(private_key)

3. Kết nối ví với mạng lưới

let walletSigner = wallet.connect(window.ethersProvider)

4. Lấy giá gas hiện tại

window.ethersProvider.getGasPrice() // giá gas

5. Định nghĩa giao dịch

Các biến được định nghĩa dưới đây phụ thuộc vào send_token()

Các tham số giao dịch

  1. send_account: địa chỉ của người gửi token
  2. to_address: địa chỉ của người nhận token
  3. send_token_amount: số lượng token cần gửi
  4. gas_limit: giới hạn gas
  5. gas_price: giá gas

Xem bên dưới để biết cách sử dụng

const tx = {
  from: send_account,
  to: to_address,
  value: ethers.utils.parseEther(send_token_amount),
  nonce: window.ethersProvider.getTransactionCount(send_account, "latest"),
  gasLimit: ethers.utils.hexlify(gas_limit), // 100000
  gasPrice: gas_price,
}

6. Chuyển

walletSigner.sendTransaction(tx).then((transaction) => {
  console.dir(transaction)
  alert("Send finished!")
})

Cách sử dụng

Thành công!

image of transaction done successfully

send_token()