- В этой статье используется версия
0.20.6
Web3.js.
Подготовьте ABI к взаимодействию со смарт-контрактами токенов ERC20
- ABI - это интерфейс, который представляет, какие функции / переменные состояния имеет смарт-контракт.
- Чтобы взаимодействовать со смарт-контрактами с Web3.js, ABI необходим для вызова его функций и переменных состояния.
- В общем, ABI содержит все функции / переменные состояния, которые есть в смарт-контракте. Однако в этой статье я собираюсь использовать минимальный ABI, потому что нужны только
getBalance
иdecimals
.
Минимальный ABI для вызова getBalance и десятичных дробей
let minABI = [ // balanceOf { "constant":true, "inputs":[{"name":"_owner","type":"address"}], "name":"balanceOf", "outputs":[{"name":"balance","type":"uint256"}], "type":"function" }, // decimals { "constant":true, "inputs":[], "name":"decimals", "outputs":[{"name":"","type":"uint8"}], "type":"function" } ];
Пример кода
- С адресом токена ERC20 и адресом кошелька этот код получает баланс токена ERC20 в адресе кошелька.
let tokenAddress = "REPLACE_WITH_ERC20_TOKEN_ADDRESS"; let walletAddress = "REPLACE_WITH_WALLET_ADDRESS"; // The minimum ABI to get ERC20 Token balance let minABI = [ // balanceOf { "constant":true, "inputs":[{"name":"_owner","type":"address"}], "name":"balanceOf", "outputs":[{"name":"balance","type":"uint256"}], "type":"function" }, // decimals { "constant":true, "inputs":[], "name":"decimals", "outputs":[{"name":"","type":"uint8"}], "type":"function" } ]; // Get ERC20 Token contract instance let contract = web3.eth.contract(minABI).at(tokenAddress); // Call balanceOf function contract.balanceOf(walletAddress, (error, balance) => { // Get decimals contract.decimals((error, decimals) => { // calculate a balance balance = balance.div(10**decimals); console.log(balance.toString()); }); });
Рабочая демонстрация
Https://piyolab.github.io/playground/ethereum/getERC20TokenBalance/
Служба поддержки
Если вы сочтете эту статью полезной, мы будем очень признательны, если вы дадите Эфир чаевые по указанному ниже адресу. Спасибо!
0x0089d53F703f7E0843953D48133f74cE247184c2