Sending Tokens Using ethers.js
ETHERS.JS
ERC-20
TOKENS
Beginner
Kim YongJun
 6 aprel 2021
3 minute read
Send Token Using ethers.js(5.0)
In This Tutorial You'll Learn How To
- Import ethers.js
- Transfer token
- Set gas price according to the network traffic situation
To-Get-Started
To get started, we must first import the ethers.js library into our javascript Include ethers.js(5.0)
Installing
1/home/ricmoo> npm install --save ethersES6 in the Browser
1<script type="module">2  import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"3  // Your code here...4</script>ES3(UMD) in the Browser
1<script2  src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"3  type="application/javascript"4></script>Parameters
- contract_address: Token contract address (contract address is needed when the token you want to transfer is not ether)
- send_token_amount: The amount you want to send to the receiver
- to_address: The receiver's address
- send_account: The sender's address
- private_key: Private key of the sender to sign the transaction and actually transfer the tokens
Notice
signTransaction(tx) is removed because sendTransaction() does it internally.
Sending Procedures
1. Connect to network (testnet)
Set Provider (Infura)
Connect to Ropsten testnet
1window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")2. Create wallet
1let wallet = new ethers.Wallet(private_key)3. Connect Wallet to net
1let walletSigner = wallet.connect(window.ethersProvider)4. Get current gas price
1window.ethersProvider.getGasPrice() // gasPrice5. Define Transaction
These variables defined below are dependent on send_token()
Transaction parameters
- send_account: address of the token sender
- to_address: address of the token receiver
- send_token_amount: the amount of tokens to send
- gas_limit: gas limit
- gas_price: gas price
1const tx = {2  from: send_account,3  to: to_address,4  value: ethers.utils.parseEther(send_token_amount),5  nonce: window.ethersProvider.getTransactionCount(send_account, "latest"),6  gasLimit: ethers.utils.hexlify(gas_limit), // 1000007  gasPrice: gas_price,8}6. Transfer
1walletSigner.sendTransaction(tx).then((transaction) => {2  console.dir(transaction)3  alert("Send finished!")4})How to use it
1let private_key =2  "41559d28e936dc92104ff30691519693fc753ffbee6251a611b9aa1878f12a4d"3let send_token_amount = "1"4let to_address = "0x4c10D2734Fb76D3236E522509181CC3Ba8DE0e80"5let send_address = "0xda27a282B5B6c5229699891CfA6b900A716539E6"6let gas_limit = "0x100000"7let wallet = new ethers.Wallet(private_key)8let walletSigner = wallet.connect(window.ethersProvider)9let contract_address = ""10window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")1112send_token(13  contract_address,14  send_token_amount,15  to_address,16  send_address,17  private_key18)Hemmesini görkezSuccess!
send_token()
1function send_token(2  contract_address,3  send_token_amount,4  to_address,5  send_account,6  private_key7) {8  let wallet = new ethers.Wallet(private_key)9  let walletSigner = wallet.connect(window.ethersProvider)1011  window.ethersProvider.getGasPrice().then((currentGasPrice) => {12    let gas_price = ethers.utils.hexlify(parseInt(currentGasPrice))13    console.log(`gas_price: ${gas_price}`)1415    if (contract_address) {16      // general token send17      let contract = new ethers.Contract(18        contract_address,19        send_abi,20        walletSigner21      )2223      // How many tokens?24      let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)25      console.log(`numberOfTokens: ${numberOfTokens}`)2627      // Send tokens28      contract.transfer(to_address, numberOfTokens).then((transferResult) => {29        console.dir(transferResult)30        alert("sent token")31      })32    } // ether send33    else {34      const tx = {35        from: send_account,36        to: to_address,37        value: ethers.utils.parseEther(send_token_amount),38        nonce: window.ethersProvider.getTransactionCount(39          send_account,40          "latest"41        ),42        gasLimit: ethers.utils.hexlify(gas_limit), // 10000043        gasPrice: gas_price,44      }45      console.dir(tx)46      try {47        walletSigner.sendTransaction(tx).then((transaction) => {48          console.dir(transaction)49          alert("Send finished!")50        })51      } catch (error) {52        alert("failed to send!!")53      }54    }55  })56}Hemmesini görkezPage last update: 4 dekabr 2023
