ethers.js Kullanarak Jeton Gönderme
ETHERS.JS
ERC-20
JETONLAR
Acemi
Kim YongJun
6 Nisan 2021
2 dakikalık okuma
ethers.js(5.0) Kullanarak Jeton Gönderin
Bu Eğitimde Şunları Öğreneceksiniz
- ethers.js içe aktarımı
- Jeton transferi
- Gaz fiyatını ağ trafiği durumuna göre ayarlama
Başlarken
Başlamak için önce ethers.js kütüphanesini javascript'imize aktarmalıyız ethers.js(5.0) dahil
Yükleme
1/home/ricmoo> npm install --save ethersTarayıcıda ES6
1<script type="module">2 import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"3 // Kodunuz buraya...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: Jeton sözleşme adresi (aktarmak istediğiniz jeton, ether olmadığında sözleşme adresi gereklidir)send_token_amount: Alıcıya göndermek istediğiniz jeton miktarıto_address: Alıcının adresisend_account: Göndericinin adresiprivate_key: İşlemi imzalamak ve jetonları fiilen aktarmak için göndericinin özel anahtarı
Not
sendTransaction() bunu dahili olarak yaptığı için signTransaction(tx) kaldırılmıştır.
Gönderme Prosedürleri
1. Ağa bağlanma (test ağı)
Sağlayıcıyı Ayarla (Infura)
Ropsten test ağına bağlanma
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() // gasPrice5. İşlemi Tanımla
Aşağıda tanımlanan bu değişkenler, send_token() komutuna bağlıdır
İşlem parametreleri
send_account: jeton göndericisinin adresito_address: jeton alıcısının adresisend_token_amount: gönderilecek jeton miktarıgas_limit: gaz limitigas_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("Gönderim tamamlandı!")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österBaş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 // genel jeton gönderimi17 let contract = new ethers.Contract(18 contract_address,19 send_abi,20 walletSigner21 )2223 // Kaç tane jeton?24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)25 console.log(`numberOfTokens: ${numberOfTokens}`)2627 // Jetonları gönder28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {29 console.dir(transferResult)30 alert("jeton gönderildi")31 })32 } // ether gönderimi33 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("Gönderim tamamlandı!")50 })51 } catch (error) {52 alert("gönderim başarısız oldu!!")53 }54 }55 })56}Tümünü gösterSayfanın son güncellenmesi: 4 Aralık 2023
