Kutuma Tokeni Kwa Kutumia ethers.js
ETHERS.JS
ERC-20
TOKENS
Mwanzo
Kim YongJun
6 Aprili 2021
3 soma ndani ya dakika
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
/home/ricmoo> npm install --save ethers
ES6 katika Kivinjari
<script type="module">
import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
// Msimbo wako hapa...
</script>
ES3(UMD) katika Kivinjari
<script
src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
type="application/javascript"
></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
window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
2. Tengeneza mkoba
let wallet = new ethers.Wallet(private_key)
3. Unganisha Mkoba na mtandao
let walletSigner = wallet.connect(window.ethersProvider)
4. Pata bei ya sasa ya gesi
window.ethersProvider.getGasPrice() // bei ya gesi
5. 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
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. Hamisha
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
alert("Kutuma kumekamilika!")
})
Jinsi ya kuitumia
let private_key =
"41559d28e936dc92104ff30691519693fc753ffbee6251a611b9aa1878f12a4d"
let send_token_amount = "1"
let to_address = "0x4c10D2734Fb76D3236E522509181CC3Ba8DE0e80"
let send_address = "0xda27a282B5B6c5229699891CfA6b900A716539E6"
let gas_limit = "0x100000"
let wallet = new ethers.Wallet(private_key)
let walletSigner = wallet.connect(window.ethersProvider)
let contract_address = ""
window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
send_token(
contract_address,
send_token_amount,
to_address,
send_address,
private_key
)
Imefanikiwa!
send_token()
function send_token(
contract_address,
send_token_amount,
to_address,
send_account,
private_key
) {
let wallet = new ethers.Wallet(private_key)
let walletSigner = wallet.connect(window.ethersProvider)
window.ethersProvider.getGasPrice().then((currentGasPrice) => {
let gas_price = ethers.utils.hexlify(parseInt(currentGasPrice))
console.log(`gas_price: ${gas_price}`)
if (contract_address) {
// utumaji wa tokeni wa jumla
let contract = new ethers.Contract(
contract_address,
send_abi,
walletSigner
)
// Tokeni ngapi?
let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
console.log(`numberOfTokens: ${numberOfTokens}`)
// Tuma tokeni
contract.transfer(to_address, numberOfTokens).then((transferResult) => {
console.dir(transferResult)
alert("tokeni imetumwa")
})
} // utumaji wa ether
else {
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,
}
console.dir(tx)
try {
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
alert("Kutuma kumekamilika!")
})
} catch (error) {
alert("imeshindwa kutuma!!")
}
}
})
}
Ukurasa ulisasishwa mwisho: 3 Machi 2026
