自定义 RPC 方法位于
tenderly_ 命名空间下。tenderly_simulateBundle返回每笔交易完整的已解码执行结果:日志、调用跟踪、资产变化和余额变化。tenderly_estimateGasBundle以同样的方式执行捆绑,但每笔交易仅返回 gas 数值。当您需要精确 gas 值而不需要完整模拟负载时使用此方法。
tenderly_simulateBundle
模拟一组交易在给定区块上的执行情况,并返回每笔交易的结果。
参数
- Transactions 交易
ARRAY:捆绑中的交易列表- from(可选)
STRING:十六进制编码地址 - to
STRING:十六进制编码地址 - gas(可选)
NUMBER - maxFeePerGas(可选)
NUMBER最高费用:发送方愿意为每单位 gas 支付的最大总费用(包含网络/基础费用和矿工/优先费),单位为 wei - maxPriorityFeePerGas(可选)
NUMBER最高优先费:发送方愿意支付给矿工的每单位 gas 最大费用,单位为 wei - gasPrice(可选)
NUMBER:发送方愿意支付的 gas 价格,单位为 wei - value(可选)
NUMBER - data(可选)
STRING:十六进制编码字节 - accessList(可选)
ARRAY,元素为访问列表条目OBJECT- address
STRING十六进制编码地址 - storageKeys
ARRAY,元素为 32 字节十六进制编码存储键的STRING表示
- address
- from(可选)
- Simulation Block Number(可选)交易应据以模拟的区块号。可为:
STRING区块号ENUM区块标签earliest|finalized|safe|latest|pending
- State Overrides(可选)
MAP:从账户(地址)到覆盖规范的映射- key
STRING:此覆盖适用的账户 - value
OBJECT:覆盖规范- nonce(可选)
STRING:账户的十六进制编码 8 字节 nonce 覆盖 - code(可选)
STRING:账户代码覆盖的数据 - balance(可选)
STRING:账户十六进制编码 32 字节余额覆盖,单位为 wei - stateDiff(可选)
MAP:存储键到存储值覆盖的映射- key
STRING:存储键 - value
STRING:给定存储键的值覆盖
- key
- nonce(可选)
- key
- Block Overrides(可选)
OBJECT:区块中要覆盖的头字段集。- number (可选)
STRING:hex,覆盖区块号 - difficulty (可选)
STRING:hex,覆盖区块难度 - time(可选)
STRING:hex,覆盖区块时间戳 - gasLimit (可选)
STRING:hex,覆盖 gas 限制 - coinbase (可选)
STRING:hex,覆盖区块矿工 - random (可选)
STRING:hex,覆盖区块的额外数据,该数据将输入到 RANDOM 操作码 - baseFee (可选)
STRING:hex,覆盖区块基础费
- number (可选)
- example.json
- example
- example.js
- example.json
example.json
ARRAY:捆绑中的模拟结果列表
- status
NUMBER:``1(成功)或0(失败) - gasUsed
NUMBER:单笔交易本身使用的 gas 数量 - cumulativeGasUsed
NUMBER:该交易在区块中执行时使用的总 gas 数量 - blockNumber
NUMBER:该交易被模拟所在的区块号 - type
NUMBER:交易类型,0x00为传统交易,0x01为访问列表类型,0x02为动态费用 - logsBloom
STRING:供轻客户端快速检索相关日志的布隆过滤器 - logs:发出的事件数组
ARRAY,元素为OBJECT- name
STRING:事件名称 - anonymous
BOOLEAN:指示事件是否为匿名 - inputs:已解码日志参数数组
ARRAY,元素为已解码日志OBJECT- name
STRING:事件参数名称 - type
STRING:来自 Solidity 类型系统的事件参数类型 - value(可选)
STRING:参数值的字符串表示;请根据type字段解读
- name
- raw
OBJECT:原始日志- address
STRING十六进制编码地址:发出日志的合约地址 - topics
ARRAY,元素为STRING32 十六进制编码字节 - data
STRING表示事件数据的十六进制编码字符串
- address
- name
- trace:跟踪
ARRAY,元素为OBJECT- type
STRING类型:跟踪项类型——CALL、CALLCODE、STATICCALL、DELEGATECALL、CREATE、CREATE2、SELFDESTRUCT之一 - from
STRING:十六进制编码地址 - to
STRING:十六进制编码地址 - gas
STRING:表示事件 gas 的十六进制编码无符号 64 字节整数 - gasUsed
STRING:表示事件 gasUsed 的十六进制编码无符号 64 字节整数 - value
STRING:表示事件 value(单位 wei)的十六进制编码无符号 64 字节整数 - error
STRING:来自虚拟机的低级错误 - errorReason
STRING:回滚时提取的错误原因 - input
STRING:表示跟踪点原始输入字节的十六进制编码字符串 - method
STRING:被调用的合约方法 - decodedInput:被调用方法的已解码输入——
ARRAY,元素为已解码入参OBJECT- value
STRING:参数值的字符串表示;请根据type字段解读。 - type
STRING:该参数的 Solidity 类型 - name
STRING:该参数的名称
- value
- output
STRING:原始跟踪输出 - decodedOutput:被调用方法的已解码输出——
ARRAY,元素为已解码出参OBJECT- value
STRING:参数值的字符串表示;请根据type字段解读。 - type
STRING:该参数的 Solidity 类型 - name
STRING:该参数的名称
- value
- subtraces
NUMBER:子跟踪数量 - traceAddress:跟踪位置
ARRAY,元素为NUMBER
- type
assetChangesARRAY:typeSTRING资产变化类型,可为 transfer、mint、burnfromSTRING:发送方地址(mint 转账时为空)toSTRING:接收方地址(burn 转账时为空)amountSTRING:转移的代币数量rawAmountSTRING:代币的原始转移数量dollarValueSTRING:转移代币的美元价值assetInfoOBJECT:资产信息standardSTRING:受支持的代币标准:ERC20、ERC721、NativeCurrencytypeSTRING:代币类型:Native、Fungible、Non-FungiblecontractAddressSTRING:合约地址symbolSTRING:代币符号nameSTRING:代币名称logoSTRING:代币图标的 URLdecimalsNUMBER:代币小数位数dollarValueSTRING:单个代币的美元价值
balanceChangesARRAY:余额变化数组——累计资产变化addressSTRING地址dollarValueSTRING:累计资产变化的美元价值transfersARRAY:资产变化索引数组
tenderly_estimateGasBundle
为给定的交易列表计算精确的 gas 估算,可选地采用类似模拟的状态和区块覆盖。与 tenderly_estimateGas 类似,每次估算都基于完全执行的交易,因此在 eth_estimateGas 可能回滚并给出低估值的情况下,返回值仍然准确。交易按顺序执行,每笔都基于前一笔留下的状态。
与 tenderly_simulateBundle 的差异:
- 两种方法都以相同方式针对给定区块执行捆绑,并且都接受相同的状态和区块覆盖。
tenderly_simulateBundle返回每笔交易完整的已解码执行结果:日志、调用跟踪、资产变化和余额变化。tenderly_estimateGasBundle每笔交易仅返回两个 gas 数值:推荐 gas 限制和实际消耗的 gas。当您只需要 gas 值时使用它;当您需要预览捆绑的效果时,请使用tenderly_simulateBundle。
- Transactions 交易
ARRAY:捆绑中的交易列表,结构与tenderly_simulateBundle相同 - Simulation Block Number(可选)执行捆绑所依据的区块号。可为:
STRING区块号ENUM区块标签earliest|finalized|safe|latest|pending
- State Overrides(可选)
MAP:从账户(地址)到覆盖规范的映射,结构与tenderly_simulateBundle相同 - Block Overrides(可选)
OBJECT:区块中要覆盖的头字段集,结构与tenderly_simulateBundle相同
- example.json
- example
- response.json
example.json
ARRAY:gas 估算列表,捆绑中每笔交易对应一项
- gas
STRING:十六进制编码的推荐 gas 限制,用于交易设置(在实际消耗 gas 的基础上包含安全余量) - gasUsed
STRING:十六进制编码的已执行交易实际消耗 gas 数量