用途:查询 EVM 链上不会出现在交易表中的内部合约交互,包括内部调用、内部 ETH 转账、合约部署、自毁与历史区块奖励。适用场景有:追踪合约部署(CREATE/CREATE2)、监控内部 ETH 转账、分析合约间内部函数调用、追踪代理 delegatecall、调查 MEV 机器人多跳交换、查找某地址部署的合约。
查询结构:使用 JSON 请求,type 固定为 "evm",fromBlock/toBlock 为必填区块范围,traces 为过滤对象数组,fields 指定返回字段。trace 类型共 4 种:call(内部调用,索引过滤字段 callFrom、callTo、callSighash)、create(部署,索引字段仅 createFrom)、suicide(销毁,索引字段 suicideAddress、suicideRefundAddress)、reward(历史区块奖励,PoS 链不用)。
用法要点:每次过滤必须显式指定 "type": ["call"](或 create、suicide);CREATE 用 createFrom 而非 callFrom;注意 createResultAddress 不支持作为过滤字段,只能按部署者过滤。响应为 JSON Lines,每行一个 JSON,首行为区块头;响应字段为嵌套结构,部署者取 trace.action.from,新合约取 trace.result.address;trace 无 transactionHash,只有 transactionIndex。
限制:trace 数据量很大,过滤选择性从高到低为「具体地址+类型+sighash、具体地址+类型、仅类型、无过滤」;CREATE 查询建议每请求不超过 5 万区块,更大范围会静默丢失结果;多地址过滤时高频部署者会淹没其他结果,建议逐个地址查询;createResultCode 为运行时字节码,创建字节码需查 transaction.input。若环境提供 Portal MCP,可先用 portal_query_traces 快速查询,复杂过滤或流式大数据再使用原始 Stream API。