Что такое ABI в блокчейне

ABI расшифровывается как Application Binary Interface — интерфейс взаимодействия приложения с бинарным кодом. В контексте блокчейна это JSON-файл, который описывает все функции смарт-контракта: их названия, какие параметры они принимают, какие типы данных возвращают.

Смарт-контракт на блокчейне хранится в виде байт-кода — машинного языка, который человек или фронтенд-приложение прочитать не могут. ABI служит переводчиком: он сообщает программе, что в контракте есть функция transfer, она принимает адрес получателя и сумму, а возвращает true или false.

Концепция ABI существует не только в блокчейне — это общий термин в программировании, но в крипте он стал особенно важным из-за того, что смарт-контракты работают на виртуальной машине (EVM в случае Ethereum), и прямого доступа к исходному коду у приложений нет.

Как ABI связывает смарт-контракт и приложение

Когда я подключаю MetaMask к DeFi-протоколу и нажимаю «Swap», приложение формирует транзакцию для вызова функции смарт-контракта. Чтобы правильно закодировать эту транзакцию — указать, какую функцию вызвать и какие параметры передать — фронтенду нужен ABI.

Библиотеки вроде web3.js или ethers.js используют ABI, чтобы превратить вызов contract.transfer(address, amount) в набор байтов, который поймёт виртуальная машина блокчейна. Без ABI программа не знает, как правильно упаковать данные.

Разработчик встраивает ABI в код приложения на этапе разработки. Если ты работаешь с верифицированным контрактом, ABI можно скачать с Etherscan — он появляется там автоматически после верификации исходного кода контракта.

Где взять ABI контракта

Самый простой способ — открыть страницу контракта на Etherscan (или BscScan для Binance Smart Chain, Polygonscan для Polygon) и перейти во вкладку Contract. Если контракт верифицирован, там будет раздел Contract ABI — JSON-массив, который можно скопировать.

Если контракт не верифицирован, ABI придётся искать в документации проекта или в его GitHub-репозитории. Некоторые проекты публикуют ABI в папке artifacts после компиляции. Без верификации нет гарантии, что байт-код на блокчейне соответствует исходному коду, который тебе дали, — это риск.

Если ты сам разработчик и компилируешь контракт через Solidity, компилятор автоматически генерирует ABI вместе с байт-кодом. В Remix IDE он появляется сразу после компиляции — там есть кнопка для копирования.

Практический пример: как использовать ABI

Допустим, я хочу проверить баланс токена ERC-20 на своём адресе через скрипт. Мне нужен адрес контракта токена и его ABI. Я захожу на Etherscan, нахожу контракт, копирую ABI из вкладки Contract.

Дальше подключаю библиотеку ethers.js, указываю адрес контракта, ABI и RPC-провайдер (Infura, Alchemy или свой узел). Создаю экземпляр контракта: const contract = new ethers.Contract(address, abi, provider). Теперь могу вызвать функцию contract.balanceOf(myAddress) — библиотека сама закодирует вызов и отправит запрос в блокчейн.

Без ABI я бы не смог использовать удобные методы вроде balanceOf — пришлось бы вручную кодировать вызовы через низкоуровневые функции, что сложно и чревато ошибками.

Когда ABI нужен трейдеру

Большинство трейдеров никогда не видят ABI — они работают через готовые интерфейсы бирж или DeFi-протоколов. Но если ты хочешь взаимодействовать с контрактом напрямую (например, вызвать функцию через Etherscan или написать скрипт для автоматизации), ABI понадобится.

Ещё ABI помогает проверить легитимность токена: я открываю контракт на Etherscan, смотрю на функции в ABI и убеждаюсь, что там нет подозрительных методов вроде скрытого mint или pause, которые дают владельцу контракта чрезмерный контроль.

Если ты только начинаешь разбираться в технических терминах, полезно заглянуть в «Словарь трейдера» — там собраны базовые понятия простым языком, без перегруза деталями.


Больше разборов технических тонкостей и реальных кейсов — в моём Telegram-канале @bragis_trader. Там я делюсь наблюдениями из практики, без хайпа и обещаний быстрого заработка.