Skip to main content
Leafage 对外只有一种协议:HTTP 上的 JSON-RPC 2.0。任何能发 HTTP POST 的客户端都可以直接使用,不需要 SDK。本页从第一个请求开始,逐步覆盖批量调用、区块上下文、gas 估算、模拟与追踪。

端点

chainId 用十进制,ETH 主网是 /1。十六进制写法会被 proxy 规范化为十进制。 下文示例以生产端点为准,直连时去掉路径即可。

请求头

第一个请求:eth_call

读取 USDT 合约的 totalSupply(),函数选择器是 0x18160ddd
响应:
eth_call 的参数依次是调用对象、区块参数、可选的 stateOverrideblockOverrides。调用对象的字段与以太坊的 eth_call 相同:fromtodata / inputvaluegasgasPrice 等。
eth_* 方法与标准以太坊兼容,ethers、viem、web3.py 这类库把 http://proxy:8663/1 当作普通 RPC 端点即可使用。DeBank 命名空间的方法用它们的原始调用接口发送,例如 ethers 的 provider.send(method, params)

批量请求

请求体是数组时按 JSON-RPC 批量处理,一次往返返回多个结果:
批量请求作为一个整体被路由到同一个节点。要在一个区块上批量执行合约调用,用下面的 contractMultiCall 比批量 eth_call 更合适:它保证所有调用看到同一份状态。

指定区块:blockCtx

DeBank 命名空间的方法名没有前缀,用 blockCtx 对象声明区块上下文。读取某个历史高度的余额:
省略 blockCtx 等同于 latest。语义详见区块上下文与路由

一次调用多个合约:contractMultiCall

在同一份状态上执行一组只读调用,返回每个调用的结果和这份状态对应的区块:
参数顺序是 requestsblockCtxblockOverridesstateOverridefastFailuseParalleldisableCache。可选参数按位置传入,跳过的位置用 null 占位。 单个调用的 code0 表示成功;revert 时为 -39000err 里是解码后的 revert 原因。整个请求只在参数或区块解析失败时才返回 JSON-RPC 级别的错误。
eth_multiCall 是同一能力的 eth 命名空间版本:区块参数用标准写法,响应字段是驼峰(fromCachegasUsedblockNum),单个调用的 revert 码是 -40014。两者不要共用同一套解析代码。

估算 gas:estimateGas

方法名没有 eth_ 前缀。估算一笔 USDT 转账:
返回十六进制的 gas 用量。第二个参数是可选的 blockCtx,第三个是可选的 blockOverrides

模拟交易序列:simulateTransactions

按顺序执行一组交易,后一笔看到前一笔的状态变更,返回每笔的调用追踪与事件:
响应的 results[i] 包含 traceseventscodeerrgas_usedstats 给出模拟所基于的区块。

追踪一次调用:pre_traceCall

返回逐指令的 struct log,不需要写节点的 debug API:
第二个参数是可选的区块参数,写法与 eth_call 相同。批量版本是 pre_traceMany

处理错误

JSON-RPC 级别的错误出现在响应的 error 字段:
完整错误码表见 RPC 参考

下一步

RPC 参考

全部方法、参数与返回结构。

区块上下文与路由

Equals / Contains 的语义与 proxy 的路由规则。