端点
chainId 用十进制,ETH 主网是 /1。十六进制写法会被 proxy 规范化为十进制。
下文示例以生产端点为准,直连时去掉路径即可。
请求头
第一个请求:eth_call
读取 USDT 合约的 totalSupply(),函数选择器是 0x18160ddd:
eth_call 的参数依次是调用对象、区块参数、可选的 stateOverride 和 blockOverrides。调用对象的字段与以太坊的 eth_call 相同:from、to、data / input、value、gas、gasPrice 等。
批量请求
请求体是数组时按 JSON-RPC 批量处理,一次往返返回多个结果:contractMultiCall 比批量 eth_call 更合适:它保证所有调用看到同一份状态。
指定区块:blockCtx
DeBank 命名空间的方法名没有前缀,用 blockCtx 对象声明区块上下文。读取某个历史高度的余额:
省略
blockCtx 等同于 latest。语义详见区块上下文与路由。
一次调用多个合约:contractMultiCall
在同一份状态上执行一组只读调用,返回每个调用的结果和这份状态对应的区块:
requests、blockCtx、blockOverrides、stateOverride、fastFail、useParallel、disableCache。可选参数按位置传入,跳过的位置用 null 占位。
单个调用的
code 为 0 表示成功;revert 时为 -39000,err 里是解码后的 revert 原因。整个请求只在参数或区块解析失败时才返回 JSON-RPC 级别的错误。
eth_multiCall 是同一能力的 eth 命名空间版本:区块参数用标准写法,响应字段是驼峰(fromCache、gasUsed、blockNum),单个调用的 revert 码是 -40014。两者不要共用同一套解析代码。估算 gas:estimateGas
方法名没有 eth_ 前缀。估算一笔 USDT 转账:
blockCtx,第三个是可选的 blockOverrides。
模拟交易序列:simulateTransactions
按顺序执行一组交易,后一笔看到前一笔的状态变更,返回每笔的调用追踪与事件:
results[i] 包含 traces、events、code、err、gas_used;stats 给出模拟所基于的区块。
追踪一次调用:pre_traceCall
返回逐指令的 struct log,不需要写节点的 debug API:
eth_call 相同。批量版本是 pre_traceMany。
处理错误
JSON-RPC 级别的错误出现在响应的error 字段:
完整错误码表见 RPC 参考。
下一步
RPC 参考
全部方法、参数与返回结构。
区块上下文与路由
Equals / Contains 的语义与 proxy 的路由规则。