一招读懂以太坊区块浏览器:交易、追踪和日志完全指南

·

想在五分钟之内把手的一串哈希拆成可读的交易地图?本文教你从区块浏览器Dune SQL 一站打通,彻底无障碍浏览 以太坊/EVM 交易日志追踪

一、为什么区块浏览器第一眼像天书?

打开 Etherscan、Phalcon 或 Blocksec,常见的界面通常堆满:交易概览Logs 标签页Internal Txn 追踪。很多人在这三张屏幕前卡住,原因无非两条:

  1. 没有区分 交易层、函数层、事件层 三层视角;
  2. 不清楚十六进制串与真实数据的对应方式。

只要掌握下面六个核心关键词—交易哈希外部账户(EOA)合约地址函数签名事件日志(Log)Trace(追踪)—所有“乱码”都会变成可解释的数据流。


二、交易:链上一切动作的根节点

交易编号(tx_hash)就像包裹的快递单号,后面所有 Gas 记录、函数调用、Token 转进转出 都能顺着它找到。

2.1 要看的第一眼:接收者是合约还是普通地址?

判断方法:

-- Dune 环境示例
SELECT
    tx_hash,
    to,
    CASE 
        WHEN creation."from" IS NOT NULL THEN 'Contract'
        ELSE 'EOA'
    END AS to_type
FROM ethereum.transactions t
LEFT JOIN ethereum.creation_traces creation
    ON creation.address = t.to
WHERE tx_hash = 0x9d88a9…   -- 换成你的 tx_hash

2.2 拆解 Input:函数签名+参数

任何 input 前四字节,即 keccak 哈希前缀,映射唯一的函数。例如:

0xa9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa... -- transfer

将其代入浏览器“Decode”按钮,即出现:

Function: transfer(address _to, uint256 _value)
 Params: ...

👉 点这实操:最快速定位交易主函数调用


三、日志 Log:智能合约的弹幕

3.1 四个字段速记

字段名说明
topic0事件签名哈希,32 字节
topic1~3索引参数(最多 3 个)
data剩余非索引参数的十六进制拼接
log_index事件在区块内的序号

3.2 实操:定位 Uniswap V3 的 Swap 事件

在浏览器 Logs 面板Swap(address,address,int256,int256,uint160,uint128,int24),记下 topic0= 0xc42079f94a6870ff3ebc9...

SELECT evt_tx_hash, amount0, amount1
FROM uniswap_v3_ethereum.Pair_evt_Swap
WHERE evt_tx_hash = 0x9d88a9…

借助 Solidity emit 关键字可回溯源码。点进合约 → Code → 搜索 emit Swap 就能找到事件触发点,精准阅读触发逻辑。


四、追踪 Trace:层层嵌套的执行路径

Trace 区分四种操作类型。只需记口诀:

浏览器里 Trace 呈 [0,1,1,1] 路径格式,对应递归访问深度。想理清顺序,可配合 PhalconDune table finder 查询模板

  1. 粘贴 tx_hash
  2. 得到函数→事件→Trace 完全顺序表
  3. 直接跳到 SQL 透视

👉 没有 Phalcon?用这张模板立即层叠展开所有调用路径


五、把浏览器数据搬回 SQL:三步“转码”

场景:一个大 V 拿 tx_hash 问你“这笔 1inch 交换了哪些代币,套利点在哪?”

只需魔法三步:

  1. table finder 查询 确认对应函数表、事件表;
  2. JOIN 对应函数 decoded 表,提取 fromTokentoTokenamountInamountOut
  3. timestamp_diff() 依次比对 DEX 价格,锁定套利价差。

六、FAQ:新手最常踩的坑

  1. Q:为什么我查到的 input 完全无法解码?
    A:70% 因项目未公开 ABI。可先在 Dune 提交 PR,或在 社区解码 repo 补充。
  2. Q:同函数名但不同合约,Decode 表名会不会混淆?
    A:Dune 按 project + contract + call_type + version 组合命名,一般用全称即不会冲突。
  3. Q:Trace_address 能否与事件 log_index 打通?
    A:目前不支持一一映射,需自建中间表记录事件对应的 trace_depth,或用官方 Pro 脚本。
  4. Q:交易失败但 Trace 里头有 CALL,值钱吗?
    A:Trace 内的独立 CALL 仍消耗 Gas,需查看 status = success/failed 字段判断。
  5. Q:如何批量清洗一年 100 万条交易?
    A:使用 Dune 的 Spellbook 中立模型,或自建 Spark + Iceberg 分布式治理,关键词 批量解码
  6. Q:静态调用返回值为何浏览器不显示?
    A:STATICCALL 不更改状态、不触发 Logs,想拿数据直接 eth_call 即可,无需上链追踪。

七、把工具链树状拆解,永不过时

真实作业时,让浏览器作“人肉初步目测”,Dune/自建仓库再做 微博、日报、周报、链上治理透明看板。能熟练切换这 4 层工具者,就是 Crypto 分析师里面最稀缺的那一批人。


读完本文,你已站在 交易—日志—追踪 三层金字塔顶。剩下的只需 持续实战+维护 SQL 模板,任何新协议瞬间可拆,仅剩快感。