Как читать блок-эксплореры и понимать транзакции, трассировки и логи на Ethereum (EVM)

9/13/2024, 10:17:49 PM
Изучите, как читать данные исследователей, таких как Etherscan и naviGate, в этих трех ключевых структурах данных и как найти таблицы, которые вам нужно запросить.

Что включено в транзакцию?

Если вы когда-либо проводили транзакцию на Ethereum (или любом блокчейне с поддержкой смарт-контрактов), то вы, вероятно, искали ее в эксплорере блоков, например, etherscan.io, и видели этот кучу информации:

Вкладка Обзор транзакций

И если вы попытались посмотреть логи или трассировки (внутренние транзакции), вы могли видеть эти запутанные страницы:

Вкладка Журналы (вам повезло, если они красиво расшифрованы, как это)

Вкладка трасс (да, выглядит как куча ерунды)

Изучение деталей транзакции в обозревателях блоков станет основой для всех ваших анализа данных и знаний Ethereum, поэтому давайте рассмотрим все компоненты и способы работы с ними в SQL.

Я только объясняю, как понимать эти концепции на высоком уровне; если вы хотите научиться расшифровывать их вручную, то вам нужно ознакомиться с тем, как это делать.данные кодируются (то же самое для транзакций/следов/журналов) и как использовать Функции bytearray/hex в Duneпереходить между различными типами.

К концу этого руководства вы сможете понимать и навиGate таблицы данных для любого контракта с помощью этого запроса поиска таблиц транзакций:

Ссылка для запроса(Подключите любой хэш транзакции, цепь и номер блока)

После того, как вы освоите концепции в этом руководстве, вам стоит также научиться использовать мою Панель быстрого запуска EVMчтобы начать анализ любого контракта.

Как проанализировать любой протокол или продукт Ethereum за пять минут

Андрю Хонг

·

30 декабря 2022 года

Прочитать полную историю

Транзакции

Транзакции - это только вершина айсберга данных, все следы и журналы вызываются ПОСЛЕ того, как исходные данные запускают функцию верхнего уровня. Давайте сначала пометим все поля, которые вы увидите на странице транзакции в исследователе блоков:

Это те же поля, которые вы увидите, когда запросите «ethereum.transactions» на Dune. Основной момент, который нужно выучить здесь, это определить, является ли «to» контрактом или нет. Обычно контракты будут четко обозначены. Если это контракт, там должны быть «входные данные», которые содержат вызов функции.

ссылка на транзакцию

Из всех этих концепций первым, что стоит хорошо изучить, является EOA по сравнению с адресом контракта. Контракты развертываются EOA и могут быть вызваны в поле "to" транзакции. Если вы нажмете на адрес, исследователи покажут в верхнем левом углу, является ли он контрактом или учетной записью. На дюне вы можете присоединиться к таблице ethereum.creation_traces, чтобы проверить, является ли это контрактом. Обратите внимание, что только EOA может быть подписчиком tx "from".

Важно узнать, какие данные поступают непосредственно с цепочки, а какие данные добавлены исследователем/передними частями сверху. Все в блокчейне представлено в виде шестнадцатеричного кода (иногда называемого двоичным или байтами), поэтому вызов обмена 1inch будет иметь эту строку входных данных:

пример транзакции

Первые 4 байта (8 символов) представляют собой "сигнатуру функции", котораяхэш keccakназвания функции и типы входных данных. У Etherscan есть удобная кнопка «декодировать» для некоторых контрактов, которая дает вам эту читаемую форму:

пример транзакции

Как вы можете видеть, в том длинном шестнадцатеричном строке, которую мы рассматривали ранее, упаковано множество переменных. Они кодируются в соответствии со спецификацией интерфейса бинарных приложений (ABI) для умных контрактов.

ABI - это документация API для смарт-контрактов (подобно спецификациям OpenAPI), вы можете узнать больше на технические детали здесь. Большинство разработчиков будут проверять, соответствует ли их ABI контракту, и загружать ABI для того, чтобы все остальные могли использовать его для декодирования. Многие контракты могут быть связаны с MEV/трейдингом, где разработчик хочет сохранить их закрытыми и конфиденциальными - поэтому мы не получаем от них никаких данных для декодирования.

В Dune у нас есть расшифрованные таблицына основе представленных контрактов ABIsв таблицу контрактов (т.е. ethereum.contracts), функции и события преобразуются в байтовые сигнатуры (ethereum.signatures), которые затем сопоставляются с трассами и журналами, чтобы дать вам декодированные таблицы, такие как uniswap_v2_ethereum.Pair_evt_Swap, которая хранит все обмены для всех пар контрактов, созданных фабрикой пар Uniswap v2. Вы можете фильтровать обмены для конкретной пары, просматривая таблицу contract_address для событий.

На Dune вы захотите запросить эту таблицу для вызова функции oneinch_ethereum.AggregationRouterV6_call_swap. Вы увидите, что название этой таблицы находится вверху результатов запроса в поиске таблицы в начале руководства.

Для следующих разделов о трассировке и журналах мы будем использоватьтот же обменный транзакт агрегатора 1inch. Это хороший пример, потому что маршрутизатор будет обменивать токены по множеству контрактов DEX, так что у нас будет хорошее разнообразие трасс и журналов для расследованияGate.

Журналы

Теперь давайте поговорим о журналах событий. Журналы могут быть выведены в любой момент вызова функции. Разработчики обычно выведут журнал в конце функции, после того как все трансферы/логика будут завершены без ошибок. Давайте посмотрим на событие обмена uniswap v3, выведенное из ранее совершенной транзакции:

пример транзакции

Вы увидите, что есть поле topic0, topic1, topic2 и data. topic0 аналогичен сигнатуре функции, за исключением того, что он составляет 32 байта вместо 4 байт (все равно хэшируется таким же образом). События могут иметь «индексированные» поля для более быстрой фильтрации данных, которые могут появляться в topic1, topic2 или topic3. Все остальные поля кодируются вместе в объекте «data». Опять же, они следуют тем же правилам кодирования, что и транзакции и трассировки. «28» - это индекс события во всем блоке. Иногда может быть полезно объединиться, когда вы хотите первый переход или передачу в транзакции.

Чтобы понять логику того, где и как было сгенерировано это событие, мне нужно погрузиться в код на Solidity. Я нажму на связанный адрес события, перейду на вкладку контракта и выполню поиск по запросу 'emit swap', потому что я знаю, что все события имеют префикс 'emit' перед тем, как они вызываются в коде.

Это контракт uniswapv3poolэто завод, созданный для каждой пары.

Я вижу, что это отправляется в строке 786 контракта, как часть функции «swap».

Умение навигировать по функциям и событиям в цепочке контрактов будет ключевым навыком, который вам нужно освоить, чтобы точно понимать цепочку данных, которые вы запрашиваете. Вам не нужно глубоко изучать солидити, чтобы навигировать по этим файлам, просто знайте, как их понимать.интерфейсы контрактови когда вызываются функции/события (function и emit - ваши ключевые слова).

Для подробного примера расследования кода функций и событий,проверьте этот разбор контрактов и данных Sudoswap.

Используя ранее найденный запрос таблицы, я вижу, что таблицу, которую я должен запросить для этого свопа, называется uniswap_v3_ethereum.Pair_evt_Swap, и она генерируется после вызова функции swap().

Следы (ethereum.traces)

Следы могут быстро стать очень сложными для навигации из-за того, насколько вложенными являются вызовы между различными контрактами. Давайте сначала поймем типы следов:

  • CREATE: это трасса, излучаемая при развертывании нового контракта. Вы можете развернуть контракт непосредственно в начале транзакции, это означает, что в данных транзакции нет адреса "to". Вы также можете развернуть контракт внутри вызова функции, отсюда и существование фабрик контрактов. Посмотрите таблицу ethereum.creation_traces для более простого представления об этом.
  • DELEGateCALL: это входит в ваш мысленный список «игнорирования» при просмотре транзакции. Это можно сравнить с переадресацией запроса с одного сервера на другой без изменения логики. Это связано с прокси и хранилищем, вы можете @bansaltushar014/deleGatecall-in-solidity-4138b121cbe">подробнее здесь.
  • CALL: это наиболее распространенный и общий трейс. Вызов может быть просто передачей значения ETH без участия каких-либо контрактов. Это также может быть любой вызов функции на любом контракте.
  • STATICCALL: это вызов функции, который НЕ изменяет какое-либо состояние и используется исключительно для вычислений. Такие вещи, как оракулы ценовых лент, расчеты цен AMM, проверки коэффициентов ликвидации, проверки балансов и т. д., все происходит в рамках статических вызовов. Часто встречается в Solidity как типы функций «view» или «pure».

Вам также нужно понять столбец/индекс trace_address. Это шаблон [0,1,1,1,1], который вы часто видите. Представьте, что это похоже на маркеры, где количество чисел в массиве указывает на глубину и порядок вызовов функций.

A (null) - первый вход транзакции имеет trace_address []

CALLs B (0)

CALLs C (0,0)

CALLs D (1)

CALLs E (1,0)  CALLs F (1,0,0)CALLs G (1,1)

CALLs H (2)

Как вы можете судить по нашим предыдущим внутренним транзакциям (следам) на скриншоте, etherscan не является дружественным местом для просмотра следов. Я предпочитаю использовать вместо этого phalcon blocksec, который раскрывает транзакцию таким образом:

Ссылка на обозреватель

Это может выглядеть сложно, но на самом деле это очень простой способ исследования всех функций, событий и аргументов в ходе транзакции. Когда вы сможете понять это, тогда вы смело сможете сказать, что вы понимаете все данные в транзакции. Обратите внимание на то, что моя запрос таблицы поискапочти точная копия этого макета, я в значительной степени вдохновился ими!

Обратите внимание, что на Dune мы автоматически декодируем как вызовы транзакций, так и трассировки одного и того же имени функции в одну и ту же таблицу. Возможно, вы задаетесь вопросом, можно ли легко объединить события и трассировки/транзакции в том же порядке, что и в phalcon. На Dune вы можете объединять данные по хэшу транзакции, чтобы в целом связать данные вместе, но вы не можете объединить их по любому индексу, чтобы воссоздать точный порядок взаимодействий. Это недопустимое ограничение на данный момент, требующее настраиваемого индексатора.

Вперед, глубже в темный лес криптовалют

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

Вероятно, я еженедельно использую около 10 разных обозревателей, а количество инструментов в 10 раз превышает это количество. Я пишу ежегодное руководство, в котором рассказывается о том, как развивается стек инструментов для работы с данными, и для чего следует использовать каждый инструмент:

Ссылка на руководство

Disclaimer:

  1. Эта статья взята из [ криптоданные], Все авторские права принадлежат автору оригинала [Andrew Hong]. Если у вас есть возражения против этой перепечатки, пожалуйста, свяжитесь с Gate Learnкоманду, и они оперативно справятся с этим.
  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
  3. Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, запрещается копирование, распространение или плагиат переведенных статей.

Пригласить больше голосов

Крипто-календарь

Обновления проекта
Etherex запустит токен REX 6 августа.
REX
22.27%
2025-08-06
Редкий день разработки и управления в Лас-Вегасе
Cardano проведет Rare Dev & Governance Day в Лас-Вегасе с 6 по 7 августа, включая семинары, хакатоны и панельные дискуссии, сосредоточенные на техническом развитии и вопросах управления.
ADA
-3.44%
2025-08-06
Блокчейн.Rio в Рио-де-Жанейро
Stellar примет участие в конференции Blockchain.Rio, которая состоится в Рио-де-Жанейро с 5 по 7 августа. Программа будет включать в себя ключевые выступления и панельные дискуссии с участием представителей экосистемы Stellar в сотрудничестве с партнерами Cheesecake Labs и NearX.
XLM
-3.18%
2025-08-06
Вебинар
Circle объявила о проведении вебинара Executive Insights на тему "Эра Закона GENIUS начинается", который запланирован на 7 августа 2025 года в 14:00 UTC. В ходе сессии будут рассмотрены последствия недавно принятого Закона GENIUS — первой федеральной регулирующей рамки для платежных стейблкоинов в Соединенных Штатах. Данта Диспарте и Кори Тен из Circle возглавят обсуждение того, как законодательство влияет на инновации в области цифровых активов, ясность регулирования и лидерство США в глобальной финансовой инфраструктуре.
USDC
-0.03%
2025-08-06
AMA на X
Ankr проведет AMA в X 7 августа в 16:00 UTC, сосредоточив внимание на работе DogeOS по созданию прикладного слоя для DOGE.
ANKR
-3.23%
2025-08-06

Похожие статьи

Руководство для начинающих по TradingView
Новичок

Руководство для начинающих по TradingView

TradingView - это одна из лучших аналитических платформ для трейдеров финансовых, фондовых и криптовалютных рынков. При постоянной практике можно освоить все возможности платформы.
11/29/2022, 4:17:43 AM
Что такое Tronscan и как вы можете использовать его в 2025 году?
Новичок

Что такое Tronscan и как вы можете использовать его в 2025 году?

Tronscan — это обозреватель блокчейна, который выходит за рамки основ, предлагая управление кошельком, отслеживание токенов, аналитику смарт-контрактов и участие в управлении. К 2025 году она будет развиваться за счет улучшенных функций безопасности, расширенной аналитики, кроссчейн-интеграции и улучшенного мобильного опыта. Теперь платформа включает в себя расширенную биометрическую аутентификацию, мониторинг транзакций в режиме реального времени и комплексную панель управления DeFi. Разработчики получают выгоду от анализа смарт-контрактов на основе искусственного интеллекта и улучшенных сред тестирования, в то время как пользователи наслаждаются унифицированным многоцепочечным представлением портфеля и навигацией на основе жестов на мобильных устройствах.
11/22/2023, 6:27:42 PM
Что такое Нейро? Все, что вам нужно знать о NEIROETH в 2025 году
Средний

Что такое Нейро? Все, что вам нужно знать о NEIROETH в 2025 году

Neiro - это собака породы шиба-ину, которая вдохновила запуск токенов Neiro на различных блокчейнах. К 2025 году Neiro Ethereum (NEIROETH) превратился в ведущий мем-коин с рыночной капитализацией 215 миллионов долларов, 87 000+ держателей и листингом на 12 крупнейших биржах. Экосистема теперь включает DAO для управления сообществом, официальный магазин мерчандайза и мобильное приложение. NEIROETH внедрил решения второго уровня для увеличения масштабируемости и закрепил свою позицию в топ-10 мем-коинов по капитализации, поддерживаемый активным сообществом и ведущими крипто-инфлюенсерами.
9/5/2024, 3:37:05 PM
Лучшие криптовалютные лотерейные платформы на 2024 год
Новичок

Лучшие криптовалютные лотерейные платформы на 2024 год

Откройте для себя мир крипто-лотерей с помощью этого исчерпывающего руководства по механике крипто-лотерей, а также по лучшим платформам.
1/28/2024, 4:53:22 PM
Что такое Solscan и как его использовать? (Обновление 2025 года)
Средний

Что такое Solscan и как его использовать? (Обновление 2025 года)

Solscan — это усовершенствованный обозреватель блокчейна Solana, который предлагает пользователям веб-платформу для исследования и анализа транзакций, адресов кошельков, контрактов, NFT и DeFi проектов на блокчейне Solana. После его приобретения Etherscan в 2025 году платформа теперь имеет переработанную аналитическую панель, расширенные инструменты для разработчиков, продвинутые функции безопасности, комплексный мониторинг DeFi протоколов по 78 протоколам и сложные интеграции NFT-рынков с инструментами анализа редкости.
3/8/2024, 2:36:44 PM
Руководство по трейдингу для начинающих
Новичок

Руководство по трейдингу для начинающих

Эта статья открывает ворота в криптовалютную торговлю, исследует неизвестные области, объясняет криптопроекты и предупреждает читателей о потенциальных рисках.
11/21/2022, 8:11:24 AM
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!