ERC20 — очень известный и широко используемый стандарт смарт-контрактов для взаимозаменяемых токенов. Токены, такие как USDT, USDC, Matic и т. д., являются примерами токенов erc20.

В этой статье мы узнаем, как мы можем взаимодействовать со смарт-контрактом erc20, используя ethcontracts.js.

ethcontracts.js — это библиотека JavaScript, которая обеспечивает реализацию готового контракта на JavaScript. Это упрощает интеграцию контрактов или общую разработку Dapp.

Вот ссылка на гитхаб — https://github.com/ujjwalguptaofficial/ethcontracts

Давайте посмотрим, как мы можем использовать Ethcontracts.js. Сначала нам нужно установить его -

Монтаж

Вам нужно установить два пакета:

  1. Основной пакет
  2. Пакет библиотеки эфиров

1. Основной пакет

Базовый пакет содержит все контракты и основную реализацию

npm i @ethcontracts/core

2. Пакет библиотеки эфиров

Пакет библиотеки эфиров является оберткой над библиотекой эфириума, например — web3.js, ethers.js

Итак, в зависимости от того, какую библиотеку эфириума вы используете. Вам необходимо установить соответствующий пакет.

эфиры.js

npm i @ethcontracts/ethers

web3.js

npm i @ethcontracts/web3

Допустим, вы используете ethers.js — просто установите пакет ethers.

Если вы новичок в web3, просто установите пакет ethers.js. Это просто и легко.

Код

Теперь давайте напишем код для взаимодействия с нашим контрактом erc20. В этой статье мы будем использовать ethers.js, но такой же код будет и для web3.js.

Учтите, что наш контактный адрес —

0x8f3cf7ad23cd3cadbd9735aff958023239c6a063

поэтому нам нужно вызвать метод по этому адресу контракта.

Инициировать контракт

Чтобы взаимодействовать с контрактом — нам сначала нужно инициировать его с адресом токена и провайдером.

import { ERC20 } from "@ethcontracts/core";
import { EthersClient } from "@ethcontracts/ethers";
import { providers } from "ethers"

// create token with token address
const token = new ERC20("0x8f3cf7ad23cd3cadbd9735aff958023239c6a063");

// create provider
const provider = new providers.JsonRpcProvider('https://polygon-rpc.com');

// initiate token with provider
await token.init(
    new EthersClient(provider)
);

теперь контракт инициирован, теперь мы можем вызвать метод контракта.

В коде я использую провайдер json для простоты, но вы можете использовать любого провайдера, например, провайдера метамаски или любого провайдера кошелька.

получитьбаланс

Метод getBalance позволяет нам получить баланс пользователя. Внутри он вызывает метод BalanceOf для контракта.

// call token balance api

const balance = await token.getBalance("0xd5D3F35Bdd08950CCFE0DeAb638F8B5498297076");
console.log("balance", balance);

как видите, EthContract.js все очень упрощает. Когда вы с ним взаимодействуете — вас мало волнуют контракты и их реализация, так как вы вызываете javascript api.

получить имя

getName возвращает имя токена.

const tokenName = await token.getName();

До сих пор мы видели пример API, который считывает данные из смарт-контрактов. Давайте посмотрим на пример записи данных в смарт-контракты.

При записи транзакции нам нужны две вещи: transactionHash и transactionReceipt.

  • получение transactionHash означает, что транзакция была отправлена.
  • получение транзакции Receipt означает, что транзакция была подтверждена и включена в блокчейн.

Давайте посмотрим на реальный пример вызова transfer API.

передача

метод перевода может быть использован для перевода суммы другому пользователю. Давайте посмотрим, что мы хотим передать 10000 токенов другому пользователю.

// call transfer api

const toAddress = "0xd5D3F35Bdd08950CCFE0DeAb638F8B5498297076";
const [getTransactionHash, getTransactionReceipt] = token.transfer(toAddress,10000);

// get transaction hash

const txHash = await getTransactionHash();

// get tx receipt
const txReceipt = await getTransactionReceipt();

простой да?

Аналогичным образом вы можете вызывать другие API, такие как approve, transferFrom и т. д.

На этом пока все. Я надеюсь, что эта статья даст вам представление о том, как взаимодействовать с токеном erc20.

Вот ссылка на документ для EthContract.js — https://ujjwalguptaofficial.github.io/ethcontracts-doc/

Пожалуйста, загляните в репозиторий github и поделитесь им с друзьями.

Хотите подключиться?

вот мои социальные ссылки.

Твиттер — https://twitter.com/ujjwal_kr_gupta

Linkedin — https://www.linkedin.com/in/ujjwalkrgupta/

Гитхаб — https://github.com/ujjwalguptaofficial