• В этой статье используется версия 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