ERC-20-адреса на всех EVM-сетях

ERC20-адрес: формат, balanceOf и создание через API

Как устроены ERC-20-адрес и balanceOf изнутри, как это переносится на Polygon и Arbitrum, и как создавать и отслеживать ERC-20-адреса через REST вместо сырого JSON-RPC.

7 дней бесплатно — для начала не нужна карта и KYC Некастодиальный — приватные ключи остаются под вашим контролем Тарифы от 49 €/мес (490 €/год) — посмотреть тарифы и лимиты запросов

ERC20-адрес — это тот же самый формат адреса с префиксом 0x и длиной 42 символа, который Ethereum использует для любого аккаунта, — он становится «ERC-20-адресом» в контексте, когда этот аккаунт хранит токены, построенные по стандарту ERC-20. Поскольку формат общий для всех сетей EVM, тот же erc20-адрес, который вы используете в Ethereum, работает без изменений в Polygon и Arbitrum, хотя токены и балансы по этому адресу привязаны к конкретной сети. Эта страница описывает формат, вызов balanceOf, читающий баланс токена, и создание адресов через API.

Стандарт ERC-20 кратко

ERC-20 — это стандарт взаимозаменяемых токенов Ethereum: небольшой набор функций — transfer, approve, balanceOf и ещё несколько, — которые реализует любой совместимый токен-контракт, поэтому кошельки и биржи могут поддерживать новые ERC-20-токены без индивидуальной интеграции для каждого токена. Полная механика описана в статье о стандарте токенов ERC20 в блоге; эта страница сосредоточена на стороне адреса: что такое erc20-адрес и как работать с ним программно.

balanceOf: как на самом деле читается баланс ERC-20

Баланс токена ERC-20 хранится не на самом адресе — он хранится внутри смарт-контракта токена, в маппинге, ключом которого является адрес. balanceOf(address) — это стандартная функция только для чтения, которую предоставляет каждый ERC-20-контракт для получения этого значения. Вызов её напрямую означает кодирование сырого запроса JSON-RPC eth_call к контракту токена и декодирование возвращённого hex. API Chaingateway выполняет это декодирование за вас: эндпоинты баланса и истории транзакций возвращают обычные числа, поэтому «erc20 balanceof» перестаёт быть задачей сырого RPC и становится обычным ответом API.

Тот же адрес в Polygon и Arbitrum

Polygon и Arbitrum совместимы с EVM, поэтому адрес в Polygon и адрес в Arbitrum используют тот же формат 0x, что и адрес Ethereum, и фактически могут быть тем же самым адресом, если он выведен из того же ключа. Именно поэтому токены Polygon являются ERC-20-токенами в любом функциональном смысле — является ли Polygon сетью ERC-20-токенов, а не другим стандартом адресов, — POL и нативные токены Polygon реализуют тот же интерфейс, что и токены Ethereum. Токен-контракты различаются по сетям, даже когда формат адреса не различается; токен, развёрнутый в Ethereum, требует отдельного развёртывания (или моста), чтобы существовать в Polygon.

ERC-721 и ERC-721A: другой стандарт, тот же формат адреса

ERC-721 — это стандарт невзаимозаменяемых токенов (NFT) Ethereum: каждый ID токена уникален, а не взаимозаменяем, в отличие от взаимозаменяемых балансов ERC-20. ERC-721A — широко используемая, оптимизированная по gas реализация того же интерфейса ERC-721, популярная для NFT-коллекций, минтящихся пакетами; она меняет способ внутреннего хранения данных в контракте, а не то, как выглядит адрес владельца. Оба стандарта используют идентичный адрес 0x в стиле erc20 для владения. Статья о стандарте токенов ERC721 подробно описывает сторону NFT.

Создание и чтение ERC-20-адресов через REST

ЭндпоинтЧто он делает
POST /api/v2/ethereum/addressesСгенерировать новый адрес Ethereum
POST /api/v2/ethereum/addresses/importИмпортировать приватный ключ, чтобы API мог подписывать от имени этого адреса
POST /api/v2/ethereum/webhooksЗарегистрировать вебхук для депозитов ERC-20 на адрес
POST /api/v2/ethereum/transactions/erc20Отправить ERC-20-токен с адреса

Такой же формат запроса применяется с /polygon/ или /arbitrum/ вместо /ethereum/ в пути, поскольку все три сети используют общий формат адреса и общий интерфейс ERC-20.

Нужны балансы ERC-20 без ручного декодирования вызовов balanceOf? Создайте бесплатный аккаунт и запросите тестовый адрес через REST — 7-дневный пробный период, без карты, без KYC.

FAQ: ERC-20-адреса

Формат адреса с префиксом 0x и длиной 42 символа, который Ethereum использует для каждого аккаунта, независимо от того, хранит ли он ERC-20-токены. Он называется ERC-20-адресом в контексте, когда речь идёт именно о токенах, которые он хранит.

Набор функций — transfer, approve, balanceOf и другие, — которые реализует любой контракт взаимозаменяемого токена в Ethereum, чтобы кошельки и биржи могли поддерживать новые токены без индивидуального кода для каждого из них.

balanceOf(address) — это функция только для чтения, которую предоставляет каждый ERC-20-контракт. Вызов её напрямую означает eth_call к контракту токена и декодирование hex-ответа; API Chaingateway напрямую возвращает декодированный баланс.

Polygon — это блокчейн, а не токен, но он совместим с EVM, поэтому токены в нём реализуют тот же интерфейс ERC-20, что и токены Ethereum, а адрес Polygon использует идентичный формат 0x.

Оптимизированная по gas реализация стандарта NFT ERC-721, распространённая для коллекций, минтящихся пакетами. Она меняет внутреннее хранение данных контракта, а не формат адреса — владение по-прежнему определяется стандартным адресом 0x.

Готовы разрабатывать на Ethereum, Polygon или Arbitrum?

Создайте аккаунт и запросите тестовый баланс ERC-20 уже сегодня — 7-дневный пробный период, без карты, без KYC. Полный справочник — в документации Ethereum API, либо охватите все семь сетей с помощью multi-chain blockchain API.