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
/home/ricmoo> npm install --save ethers
Tarayıcıda ES6
<script type="module">
import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
// Kodunuz buraya...
</script>
Tarayıcıda ES3(UMD)
<script
src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
type="application/javascript"
></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
window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")
2. Cüzdan oluştur
let wallet = new ethers.Wallet(private_key)
3. Cüzdanı Ağa Bağla
let walletSigner = wallet.connect(window.ethersProvider)
4. Mevcut gaz ücretini al
window.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: 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
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. Aktarım
walletSigner.sendTransaction(tx).then((transaction) => {
console.dir(transaction)
alert("Gönderim tamamlandı!")
})
Nasıl kullanılır
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
)
Başarılı!
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) {
// genel jeton gönderimi
let contract = new ethers.Contract(
contract_address,
send_abi,
walletSigner
)
// Kaç tane jeton?
let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)
console.log(`numberOfTokens: ${numberOfTokens}`)
// Jetonları gönder
contract.transfer(to_address, numberOfTokens).then((transferResult) => {
console.dir(transferResult)
alert("jeton gönderildi")
})
} // ether gönderimi
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("Gönderim tamamlandı!")
})
} catch (error) {
alert("gönderim başarısız oldu!!")
}
}
})
}
Sayfanın son güncellenme tarihi: 3 Mart 2026
