trace_filter
方法允许您在一系列区块中搜索特定的追踪,可以通过各种条件过滤,如发送/接收地址、区块范围和追踪类型。这提供了一种强大的方式来分析特定合约或账户的区块链活动。
此方法根据指定的过滤条件检索交易追踪。
过滤参数
起始区块(十六进制区块号或 "latest"、"earliest"、"pending")
结束区块(十六进制区块号或 "latest"、"earliest"、"pending")
按发送者地址过滤追踪(地址字符串数组)
按接收者地址过滤追踪(地址字符串数组)
在给定索引之后偏移追踪
返回的最大追踪数量
追踪对象数组
关于所采取行动的信息
调用类型(例如,"call"、"delegatecall"、"staticcall")
发送者地址
接收者地址
为执行的这部分提供的燃料
调用数据输入
以 wei 为单位转移的价值
构造函数初始化代码(对于 "create" 追踪)
合约地址(对于 "suicide" 追踪)
接收退款的地址(对于 "suicide" 追踪)
销毁时合约的余额(对于 "suicide" 追踪)
包含此追踪的区块的哈希
包含此追踪的区块号
调用结果
使用的燃料量
调用的输出数据
创建的合约地址(对于 "create" 追踪)
部署的合约代码(对于 "create" 追踪)
子追踪数量
调用树中追踪位置的地址路径
被追踪的交易的哈希
交易在区块中的索引位置
追踪类型(call、create、suicide)
如果调用失败的错误消息(可选)
参数 | 类型 | 描述 |
---|---|---|
fromBlock | string | 起始区块号(十六进制)或标签("latest"、"earliest"、"pending") |
toBlock | string | 结束区块号(十六进制)或标签("latest"、"earliest"、"pending") |
fromAddress | array | 可选的按发送者地址过滤的数组 |
toAddress | array | 可选的按接收者地址过滤的数组 |
after | integer | 可选的分页参数 - 在给定索引之后偏移追踪 |
count | integer | 可选的返回的最大追踪数量 |
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"action": {
"callType": "call",
"from": "0x8bbb73bcb5d553b5a556358d27625323fd781d37",
"to": "0x6090a6e47849629b7245dfa1ca21d94cd15878ef",
"gas": "0x12a94",
"input": "0x0000000000000000000000000000000000000000000000000000000000000000",
"value": "0x0"
},
"blockHash": "0x7eb25504e4c202cf3d62fd585d3e238f592c780cca82dacb2ed3cb5b38883add",
"blockNumber": 3928366,
"result": {
"gasUsed": "0xd979",
"output": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
"subtraces": 1,
"traceAddress": [],
"transactionHash": "0x17104ac9d3312d8c136b7f44d4b8b47852618065ebfa534bd2d3b5ef218ca1f3",
"transactionPosition": 2,
"type": "call"
}
]
}
不同的过滤组合可用于回答特定问题:
查找对特定合约的所有调用:
{
"toAddress": ["0x1234567890123456789012345678901234567890"]
}
查找合约的所有内部交易:
{
"fromAddress": ["0x1234567890123456789012345678901234567890"]
}
查找两个特定地址之间的交互:
{
"fromAddress": ["0x1234567890123456789012345678901234567890"],
"toAddress": ["0xabcdef0123456789abcdef0123456789abcdef01"]
}
分析特定区块范围内的活动:
{
"fromBlock": "0x429d3b",
"toBlock": "0x429d3d"
}
对于大型结果集,使用 after
和 count
参数进行分页:
{ "after": 0, "count": 100, ... }
{ "after": 100, "count": 100, ... }
count
值递增 after
该方法返回不同类型的追踪:
--gcmode=archive
的 Geth 和 OpenEthereum/Nethermind)