Kutuma Tokeni Kwa Kutumia ethers.js
ETHERS.JS
ERC-20
TOKENS
Beginner
Kim YongJun
6 Aprili 2021
3 minute read
Tuma Tokeni Kwa Kutumia ethers.js(5.0)
Katika Somo Hili Utajifunza Jinsi ya
- Ingiza ethers.js
- Hamisha tokeni
- Weka bei ya gesi kulingana na hali ya msongamano wa mtandao
Ili Kuanza
Ili kuanza, ni lazima kwanza tuingize maktaba ya ethers.js kwenye javascript yetu Jumuisha ethers.js(5.0)
Kusakinisha
1/home/ricmoo> npm install --save ethersES6 katika Kivinjari
1<script type="module">2 import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"3 // Msimbo wako hapa...4</script>ES3(UMD) katika Kivinjari
1<script2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"3 type="application/javascript"4></script>Vigezo
contract_address: Anwani ya mkataba wa Tokeni (anwani ya mkataba inahitajika wakati tokeni unayotaka kuhamisha si ether)send_token_amount: Kiasi unachotaka kutuma kwa mpokeajito_address: Anwani ya mpokeajisend_account: Anwani ya mtumajiprivate_key: Ufunguo binafsi wa mtumaji ili kusaini muamala na kuhamisha tokeni
Tangazo
signTransaction(tx) imeondolewa kwa sababu sendTransaction() inaifanya ndani kwa ndani.
Taratibu za Kutuma
1. Unganisha na mtandao (testnet)
Weka Mtoa Huduma (Infura)
Unganisha na Ropsten testnet
1window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")2. Tengeneza mkoba
1let wallet = new ethers.Wallet(private_key)3. Unganisha Mkoba na mtandao
1let walletSigner = wallet.connect(window.ethersProvider)4. Pata bei ya sasa ya gesi
1window.ethersProvider.getGasPrice() // bei ya gesi5. Bainisha Muamala
Vigezo hivi vilivyobainishwa hapa chini vinategemea send_token()
Vigezo vya muamala
send_account: anwani ya mtumaji wa tokenito_address: anwani ya mpokeaji wa tokenisend_token_amount: kiasi cha tokeni za kutumagas_limit: kikomo cha gesigas_price: bei ya gesi
Tazama hapa chini jinsi ya kutumia
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. Hamisha
1walletSigner.sendTransaction(tx).then((transaction) => {2 console.dir(transaction)3 alert("Kutuma kumekamilika!")4})Jinsi ya kuitumia
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)Onyesha yoteImefanikiwa!
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 // utumaji wa tokeni wa jumla17 let contract = new ethers.Contract(18 contract_address,19 send_abi,20 walletSigner21 )2223 // Tokeni ngapi?24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)25 console.log(`numberOfTokens: ${numberOfTokens}`)2627 // Tuma tokeni28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {29 console.dir(transferResult)30 alert("tokeni imetumwa")31 })32 } // utumaji wa ether33 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("Kutuma kumekamilika!")50 })51 } catch (error) {52 alert("imeshindwa kutuma!!")53 }54 }55 })56}Onyesha yoteUkurasa ulihaririwa mwisho: 4 Desemba 2023
