Перейти к основному контенту

Отправка токенов с помощью ethers.js

ETHERS.JS
ERC-20
токены
Для начинающих
Ким Ёнджун
6 апреля 2021 г.
3 минут на чтение

Отправка токенов с помощью ethers.js (5.0)

В этом руководстве вы узнаете, как

  • Импортировать ethers.js
  • Переводить токены
  • Устанавливать цену газа в зависимости от загруженности сети

С чего начать

Для начала мы должны импортировать библиотеку ethers.js в наш код на JavaScript. Подключение ethers.js (5.0)

Установка

/home/ricmoo> npm install --save ethers

ES6 в браузере

<script type="module">
  import { ethers } from "https://cdn.ethers.io/lib/ethers-5.0.esm.min.js"
  // Ваш код здесь...
</script>

ES3 (UMD) в браузере

<script
  src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"
  type="application/javascript"
></script>

Параметры

  1. contract_address: Адрес контракта токена (адрес контракта необходим, если токен, который вы хотите перевести, не является эфиром)
  2. send_token_amount: Сумма, которую вы хотите отправить получателю
  3. to_address: Адрес получателя
  4. send_account: Адрес отправителя
  5. private_key: Приватный ключ отправителя для подписания транзакции и фактического перевода токенов

Примечание

signTransaction(tx) удален, так как sendTransaction() делает это внутренне.

Процедура отправки

1. Подключение к сети (тестовая сеть)

Настройка провайдера (Infura)

Подключение к тестовой сети Ропстен

window.ethersProvider = new ethers.providers.InfuraProvider("ropsten")

2. Создание кошелька

let wallet = new ethers.Wallet(private_key)

3. Подключение кошелька к сети

let walletSigner = wallet.connect(window.ethersProvider)

4. Получение текущей цены газа

window.ethersProvider.getGasPrice() // цена газа

5. Определение транзакции

Переменные, определенные ниже, зависят от send_token()

Параметры транзакции

  1. send_account: адрес отправителя токена
  2. to_address: адрес получателя токена
  3. send_token_amount: количество токенов для отправки
  4. gas_limit: лимит газа
  5. gas_price: цена газа

Смотрите ниже, как это использовать

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. Перевод

walletSigner.sendTransaction(tx).then((transaction) => {
  console.dir(transaction)
  alert("Send finished!")
})

Как это использовать

Успех!

image of transaction done successfully

send_token()