ERC20 — очень известный и широко используемый стандарт смарт-контрактов для взаимозаменяемых токенов. Токены, такие как USDT, USDC, Matic и т. д., являются примерами токенов erc20.
В этой статье мы узнаем, как мы можем взаимодействовать со смарт-контрактом erc20, используя ethcontracts.js.
ethcontracts.js — это библиотека JavaScript, которая обеспечивает реализацию готового контракта на JavaScript. Это упрощает интеграцию контрактов или общую разработку Dapp.
Вот ссылка на гитхаб — https://github.com/ujjwalguptaofficial/ethcontracts
Давайте посмотрим, как мы можем использовать Ethcontracts.js. Сначала нам нужно установить его -
Монтаж
Вам нужно установить два пакета:
- Основной пакет
- Пакет библиотеки эфиров
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/