Что лежит в input обычного ABI-вызова
ФрагментКак читатьЧего он не доказывает
Первые 4 байтаSelector = первые байты Keccak-256 канонической сигнатурыЕдинственное имя функции или безопасность кода
Байты с позиции 5ABI-кодированный tuple аргументовТипы без внешней схемы ABI
Пустой inputВозможен простой перевод native asset или receive/fallbackОтсутствие исполнения contract code
Декодированная строкаГипотеза ABI для конкретного адреса и блокаЧто вызов успешно исполнится
Что лежит в input обычного ABI-вызова
Фрагмент
Первые 4 байта
Как читать
Selector = первые байты Keccak-256 канонической сигнатуры
Чего он не доказывает
Единственное имя функции или безопасность кода
Фрагмент
Байты с позиции 5
Как читать
ABI-кодированный tuple аргументов
Чего он не доказывает
Типы без внешней схемы ABI
Фрагмент
Пустой input
Как читать
Возможен простой перевод native asset или receive/fallback
Чего он не доказывает
Отсутствие исполнения contract code
Фрагмент
Декодированная строка
Как читать
Гипотеза ABI для конкретного адреса и блока
Чего он не доказывает
Что вызов успешно исполнится

Selector — индекс функции, а не полный перевод транзакции

Каноническая сигнатура записывается как имя и типы без пробелов: например, тип uint для selector нормализуется до uint256, а return type не входит в хеш. Первые четыре байта слишком коротки, чтобы исключить коллизии. Публичная база сигнатур даёт кандидатов; авторитетный ответ даёт ABI кода, который реально исполнялся на нужном блоке.

Не смешивайте calldata с логами receipt. Input описывает запрос верхнего уровня, события — то, что контракты записали во время исполнения, а call trace показывает вложенные вызовы. Успешная декодировка input не заменяет разбор событий и call trace после транзакции.

ABI выбирают по коду и состоянию выбранного блока

Воспроизводимый разбор

  1. 1
    Зафиксировать контекст

    Запишите chain ID, transaction hash, to, value, input и block number; pending-состояние пометьте отдельно.

  2. 2
    Определить исполняемый код

    Проверьте bytecode адреса to на этом block tag. Для proxy найдите implementation или beacon по применимой схеме и сохраните оба адреса.

  3. 3
    Получить ABI

    Берите ABI из воспроизводимо verified source либо compiler artifact той же реализации; не склеивайте интерфейсы разных версий.

  4. 4
    Сопоставить selector

    Вычислите selector из каждой подходящей канонической сигнатуры и оставьте только точное совпадение первых четырёх байтов.

  5. 5
    Декодировать и проверить

    Разберите аргументы по типам, нормализуйте address/amount/deadline/bytes, затем выполните eth_call с тем же block number, tag или hash. RPC должен хранить состояние выбранного блока; иначе historical call не является воспроизводимым.

Proxy особенно важен: внешняя транзакция адресована proxy, но delegatecall может исполнить implementation. Стандарт EIP-1967 задаёт известные storage slots, однако контракт может использовать другую схему. Проверяйте proxy, implementation и admin/upgrade boundary отдельно.

У dynamic types ABI хранит в основной области offsets, а содержимое строк, bytes, массивов и вложенных tuples — в хвосте. Поэтому визуальное разбиение по 32 байта ещё не даёт значений: offset должен указывать внутрь корректной длины payload, длины и padding должны согласовываться со схемой. Декодер, который молча подставил неверный tuple или обрезал хвост, может показать правдоподобные addresses и amounts. Сохраняйте raw input и воспроизводите декодирование второй библиотекой; расхождение считается stop-сигналом.

Когда результат можно считать подтверждённым

Decision и stop-сигналы
НаблюдениеВыводДействие
ABI, selector и длина аргументов согласованыДекодировка структурно возможнаПроверить смысл адресов, сумм, дедлайнов и вложенных bytes
Selector имеет несколько кандидатовИмя не определено четырьмя байтамиОстановиться до ABI фактической реализации
Proxy implementation неизвестна на нужном блокеИсполняемый интерфейс не установленНе переносить текущий ABI назад во времени
eth_call успешенВ выбранном state вызов не вернул revertНе обещать включение, цену или идентичный будущий state
Аргументы содержат непонятный target/approval/delegatecall payloadРиск не классифицированНе подписывать; расшифровать вложенные данные
Decision и stop-сигналы
Наблюдение
ABI, selector и длина аргументов согласованы
Вывод
Декодировка структурно возможна
Действие
Проверить смысл адресов, сумм, дедлайнов и вложенных bytes
Наблюдение
Selector имеет несколько кандидатов
Вывод
Имя не определено четырьмя байтами
Действие
Остановиться до ABI фактической реализации
Наблюдение
Proxy implementation неизвестна на нужном блоке
Вывод
Исполняемый интерфейс не установлен
Действие
Не переносить текущий ABI назад во времени
Наблюдение
eth_call успешен
Вывод
В выбранном state вызов не вернул revert
Действие
Не обещать включение, цену или идентичный будущий state
Наблюдение
Аргументы содержат непонятный target/approval/delegatecall payload
Вывод
Риск не классифицирован
Действие
Не подписывать; расшифровать вложенные данные

Итоговый артефакт разбора — chain ID, to, block tag, hash bytecode/implementation, источник ABI, каноническая сигнатура, selector, таблица аргументов в raw и нормализованном виде, value и simulation result. Перед подписью сопоставьте этот набор с тем, что показывает кошелёк: понятный интерфейс не меняет фактические байты.

Источники

Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.

  1. Solidity — Contract ABI Specification Solidity · Проверено 23 августа 2026 г. в 15:43 GMT+5
  2. Solidity — ABI encoding and decoding functions Solidity · Проверено 23 августа 2026 г. в 15:43 GMT+5
  3. EIP-1967 — Proxy Storage Slots Ethereum Improvement Proposals · Проверено 23 августа 2026 г. в 15:43 GMT+5
  4. Solidity — Contract Metadata Solidity · Проверено 23 августа 2026 г. в 15:43 GMT+5
  5. Ethereum Execution APIs — eth_call Ethereum Execution APIs · Проверено 23 августа 2026 г. в 17:07 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.