Перейти к содержимому
Глобальный взгляд на цифровые активыГЛОБАЛЬНЫЙ ВЗГЛЯД · МЕСТНЫЙ КОНТЕКСТ
ChainView BTC866CHAIN VIEW
Обучение

ABI контрактов: функции, события и пользовательские ошибки

ABI описывает кодирование вызова и результатов, но не доказывает соответствие опубликованной реализации.

Читать на языкеРусский简体中文繁體中文English한국어العربيةEspañol (México)Tiếng Việtไทย
ABI контрактов: функции, события и пользовательские ошибки

Оригинальная тематическая иллюстрация: Оригинальная тематическая схема ChainView BTC866 · ChainView BTC866 Editorial · CC BY 4.0

Интерфейс не аудит

ABI описывает кодирование вызова и результатов, но не доказывает соответствие опубликованной реализации. Установите адрес, сеть и текущий implementation прокси. Похожее имя функции может вести к иному поведению. Читабельная подпись помогает человеку, но безопасность требует просмотра кода, состояния и полномочий.

Селектор и типы

Function selector и параметры кодируются с полными типами. Перегруженные функции нельзя различить только именем. Уточните единицы, десятичные разряды, адреса и динамические поля. В чтении без записи сопоставьте сырые байты и декодированный результат. Ошибка единицы может изменить сумму, хотя инструмент красиво покажет знакомый заголовок.

Логи и темы

Event topics, indexed-поля и data имеют разные правила. Indexed динамическое значение может быть хешем, а не восстановимой строкой. Наличие события не доказывает, что бизнес-результат ожидался. Сохраните подпись события, адрес контракта и успешную квитанцию. Несколько похожих логов могут относиться к внешним вызовам, поэтому контекст транзакции тоже важен.

Ошибки исполнения

Revert может декодироваться в стандартное сообщение или custom error. Без ABI, правильной версии прокси и состояния интерпретация ограничена. Не повышайте газ вслепую при логической ошибке: повтор только тратит средства. Запишите селектор ошибки и блок, скрыв чувствительные аргументы. Ошибка внешнего контракта может выглядеть как ошибка основной функции, поэтому прочитайте полный путь вызовов.

Безопасная практика

Начните с безвредных read-only примеров и официального ABI. Сверьте адрес, код и функцию до подписи. Если кошелёк показывает непонятные байты, остановитесь. ABI помогает понять форму операции, но не заменяет аудит, оценку прав администратора и правовые или ценовые вопросы. Учебный скрипт должен быть воспроизводимым, без загрузки приватного ключа в онлайн-декодер.

Источники

  1. Solidity contract ABI specification (откроется в новой вкладке)
  2. Solidity contract ABI specification (откроется в новой вкладке)