跳至主要內容

使用 ethers.js 發送代幣

ETHERS.JS
ERC-20
代幣
初階
金容俊
2021年4月6日
3 分鐘閱讀

使用 ethers.js (5.0) 發送代幣

在本教學中,您將學到如何

  • 匯入 ethers.js
  • 轉帳代幣
  • 根據網路流量狀況設定 Gas 價格

開始之前

首先,我們必須將 ethers.js 函式庫匯入到我們的 JavaScript 中 包含 ethers.js (5.0)

安裝

/home/ricmoo> npm install --save ethers

瀏覽器中的 ES6

<script type="module">
  import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
  // 在此輸入您的程式碼...
</script>

瀏覽器中的 ES3 (UMD)

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

參數

  1. contract_address:代幣合約地址(當您想要轉帳的代幣不是以太幣時,需要合約地址)
  2. send_token_amount:您想要發送給接收者的金額
  3. to_address:接收者的地址
  4. send_account:發送者的地址
  5. private_key:發送者的私鑰,用於簽署交易並實際轉帳代幣

注意

已移除 signTransaction(tx),因為 sendTransaction() 會在內部執行此操作。

發送程序

1. 連接到網路(測試網)

設定提供者 (Infura)

連接到 Ropsten 測試網

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

2. 建立錢包

let wallet = new ethers.Wallet(private_key)

3. 將錢包連接到網路

let walletSigner = wallet.connect(window.ethersProvider)

4. 取得當前 Gas 價格

window.ethersProvider.getGasPrice() // Gas 價格

5. 定義交易

以下定義的這些變數取決於 send_token()

交易參數

  1. send_account:代幣發送者的地址
  2. to_address:代幣接收者的地址
  3. send_token_amount:要發送的代幣數量
  4. gas_limit:Gas 限制
  5. gas_price:Gas 價格

有關如何使用,請參閱下文

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. 轉帳

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

如何使用

成功!

image of transaction done successfully

send_token()