Ethers.js Kullanarak Token Gönderimi
ETHERS.JSERC-20TOKEN'LAR
AcemiKim YongJun
6 Nisan 2021
2 dakikalık okuma minute read
ethers.js(5.0) Kullanarak Token Gönderin
Bu Eğitimde Şunların Nasıl Yapılacağını Öğreneceksiniz
- Ethers.js içe aktarımı
- Token transferi
- Gaz fiyatını ağ trafiği durumuna göre ayarlama
Başlamak İçin
Başlamak için önce ethers.js kitaplığını javascript'imize aktarmalıyız ethers.js(5.0) dahil
Kurulum
1/home/ricmoo> npm install --save ethers
Tarayıcıda ES6
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>
Tarayıcıda ES3(UMD)
1<script2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"3 type="application/javascript"4></script>
Parametreler
contract_address
: Token sözleşme adresi (aktarmak istediğiniz token, ether olmadığında sözleşme adresi gereklidir)send_token_amount
: Alıcıya göndermek istediğiniz token miktarıto_address
: Alıcının adresisend_account
: Göndericinin adresiprivate_key
: İşlemi imzalamak ve token'ları tam olarak aktarmak için göndericinin özel anahtarı
Uyarı
sendTransaction()
onu dahili olarak yaptığı için signTransaction(tx)
kaldırılmıştır.
Gönderim Prosedürleri
1. Ağa bağlan (test ağı)
Sağlayıcı Ayarla (Infura)
Ropsten test ağına bağlan
1window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
2. Cüzdan oluştur
1let wallet = new ethers.Wallet(private_key)
3. Cüzdanı ağa bağla
1let walletSigner = wallet.connect(window.ethersProvider)
4. Mevcut gaz ücretini al
1window.ethersProvider.getGasPrice() // gasPrice
5. İşlemi tanımla
Aşağıda tanımlanan bu değişkenler, send_token()
komutuna bağlıdır
İşlem parametreleri
send_account
: token göndericisinin adresito_address
: token alıcısının adresisend_token_amount
: gönderilecek token miktarıgas_limit
: gaz sınırıgas_price
: gaz ücreti
Nasıl kullanılacağını görmek için aşağıya bakınız
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. Aktarım
1walletSigner.sendTransaction(tx).then((transaction) => {2 console.dir(transaction)3 alert("Send finished!")4})
Nasıl kullanılır
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)Tümünü göster
Başarılı!
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}Tümünü göster
p
Son düzenleme: @pettinarip(opens in a new tab), 4 Aralık 2023