Надсилання токенів за допомогою ethers.js
ETHERS.JS
ERC-20
ТОКЕНИ
Початківець
Kim YongJun
6 квітня 2021 р.
3 читається за хвилину
Надсилання токену за допомогою ethers.js(5.0)
У цьому посібнику ви дізнаєтеся, як
- Імпортувати ethers.js
- Переказати токен
- Установити ціну на газ відповідно до ситуації з трафіком у мережі
Для початку
Для початку ми маємо спочатку імпортувати бібліотеку ethers.js у наш javascript Підключіть ethers.js(5.0)
Установлення
1/home/ricmoo> npm install --save ethersES6 у браузері
1<script type="module">2 import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"3 // Ваш код тут...4</script>ES3(UMD) у браузері
1<script2 src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"3 type="application/javascript"4></script>Параметри
contract_address: адреса контракту токена (адреса контракту потрібна, якщо токен, який ви хочете переказати, — не ether)send_token_amount: сума, яку ви хочете надіслати одержувачуto_address: адреса одержувачаsend_account: адреса відправникаprivate_key: приватний ключ відправника для підпису транзакції та фактичного переказу токенів
Примітка
signTransaction(tx) видалено, оскільки sendTransaction() робить це внутрішньо.
Процедури надсилання
1. Підключення до мережі (тестової мережі)
Налаштувати постачальника (Infura)
Підключитися до тестової мережі Ropsten
1window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")2. Створити гаманець
1let wallet = new ethers.Wallet(private_key)3. Підключити гаманець до мережі
1let walletSigner = wallet.connect(window.ethersProvider)4. Отримати поточну ціну на газ
1window.ethersProvider.getGasPrice() // ціна на газ5. Визначити транзакцію
Змінні, визначені нижче, залежать від send_token()
Параметри транзакції
send_account: адреса відправника токенаto_address: адреса одержувача токенаsend_token_amount: сума токенів для надсиланняgas_limit: ліміт газуgas_price: ціна на газ
Див. нижче, як використовувати
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. Переказ
1walletSigner.sendTransaction(tx).then((transaction) => {2 console.dir(transaction)3 alert("Надсилання завершено!")4})Як це використовувати
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)Показати всеУспіх!
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}`)1415 if (contract_address) {16 // загальне надсилання токена17 let contract = new ethers.Contract(18 contract_address,19 send_abi,20 walletSigner21 )2223 // Скільки токенів?24 let numberOfTokens = ethers.utils.parseUnits(send_token_amount, 18)25 console.log(`кількість токенів: ${numberOfTokens}`)2627 // Надіслати токени28 contract.transfer(to_address, numberOfTokens).then((transferResult) => {29 console.dir(transferResult)30 alert("токен надіслано")31 })32 } // надсилання 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("Надсилання завершено!")50 })51 } catch (error) {52 alert("не вдалося надіслати!!")53 }54 }55 })56}Показати всеОстанні оновлення сторінки: 4 грудня 2023 р.
