TenderlyCheatcodes 合约的调用表示。

- evm_increaseTime
- evm_setNextBlockTimestamp
- tenderly_setNextBlockTimestamp
- evm_increaseBlocks
- evm_mine
- tenderly_setBalance
- tenderly_addBalance
- tenderly_setErc20Balance
- tenderly_addErc20Balance
- tenderly_setMaxErc20Balance
evm_increaseTime
将区块链时间按指定数量向前推进,并使用新的时间戳创建一个空区块。
后续对 eth_call 和 eth_sendRawTransaction 的调用会根据它们所针对的 blockNumber 获取不同的 block.timestamp 值:
- 对于
pending区块:返回current_time + time_increase这表示下一个将被挖掘区块的预期时间戳。 - 对于
latest区块:返回time_of_evm_increaseTimestamp_call + time_increase。这是调用evm_increaseTimestamp时创建的空区块的时间戳。
QUANTITY- 十六进制编码的time_increase(要向前跳跃的秒数)
DATA- 新生成区块的 32 字节区块哈希
example.json
example.json
evm_setNextBlockTimestamp
将当前时间偏移到指定时间戳,并使用给定的时间戳创建一个空区块。
后续对 eth_call 和 eth_sendRawTransaction 的调用将根据它们所针对的 blockNumber 返回不同的 block.timestamp 值:
- 对于
pending区块:返回specified_timestamp + time_since_evmSetNextBlockTimestamp_call。这表示设置的时间戳加上自方法被调用以来经过的任何时间。 - 对于
latest区块:返回specified_timestamp。这是调用evm_setNextBlockTimestamp时创建的空区块的时间戳。
QUANTITY- 十六进制编码的specified_timestamp,表示 epoch 时间戳(以秒为单位)
QUANTITY- 为下一个区块设置的整数(epoch 时间戳)
example.json
example.json
tenderly_setNextBlockTimestamp
将当前时间偏移到给定的时间戳,而不创建空区块。
后续对 eth_call 和 eth_sendRawTransaction 的调用将根据它们所针对的 blockNumber 返回不同的 block.timestamp 值:
- 对于
pending区块:返回specified_timestamp + time_since_tenderly_setNextBlockTimestamp。这表示设置的时间戳加上自方法被调用以来经过的任何时间。 - 对于
latest区块:返回最新创建区块的时间戳。
QUANTITY- 十六进制编码的specified_timestamp,表示 epoch 时间戳(以秒为单位)
QUANTITY- 为下一个区块设置的整数(epoch 时间戳)
example.json
example.json
evm_increaseBlocks
跳过若干区块,并使用新的区块号生成一个新区块。
参数
QUANTITY- 十六进制编码的要跳过的区块数
DATA- 新生成区块的 32 字节区块哈希
example.json
example.json
eth_sendTransaction
提交一笔未签名的交易。
参数
- Transaction - 交易对象
from:DATA,20 字节 - 交易发送方的地址。to:DATA,20 字节 - (可选,创建新合约时省略)交易的目标地址。gas:QUANTITY- (可选)为交易执行提供的 gas 整数。将返回未使用的 gas。gasPrice:QUANTITY- (可选)每单位已付 gas 使用的gasPrice整数。value:QUANTITY- (可选)随此交易发送的 value 整数。data:DATA- (可选)合约的编译代码,或调用方法签名与编码参数的哈希。
example.json
STRING,32 字节十六进制值
eth_createAccessList
返回此交易将访问的访问元组。
参数
SendTransactionObject- 交易对象(与提供给 eth_sendTransaction 的对象相同)BlockNumber- 区块号参数
AccessList- 交易访问的访问元组数组
example.json
example.json
evm_getLatest
获取网络 Virtual Environment 上的最新交易 ID。
参数
返回值
DATA- 最新 Virtual Environment 交易的 UUID
example.json
example.json
tenderly_setBalance
修改一个或多个账户的余额。
参数
ADDRESS/ADDRESSES- 账户地址字符串或字符串数组AMOUNT- 以 wei 为单位的十六进制编码金额
DATA- 新创建交易的 32 字节区块哈希
example.json
example.json
example.json
tenderly_addBalance
向提供的一个或多个账户添加余额。
参数
ADDRESS/ADDRESSES- 账户地址字符串或字符串数组AMOUNT- 以 wei 为单位的十六进制编码金额
DATA- 新创建交易的 32 字节区块哈希
example.json
example.json
example.json
tenderly_setErc20Balance
在提供的 erc20 合约上为钱包设置代币余额。
tenderly_setErc20Balance 会将新余额直接写入代币合约的存储中,并不会发出 ERC-20 Transfer 事件。如果您的下游工具(索引器、subgraph、账务系统)依赖 Transfer 事件来追踪余额,请改用 tenderly_addErc20Balance,它会为每个被充值的账户发出一个合成的 Transfer 日志。TOKEN_ADDRESS- ERC20 合约的地址WALLET- 将被充值的钱包地址VALUE- 表示代币 wei 值的 32 字节哈希
DATA - 新创建交易的 32 字节哈希(存储覆盖通过交易提交)
示例请求
example.json
example.json
tenderly_addErc20Balance
在提供的 ERC-20 合约上向一个或多个钱包添加指定数量的代币。与 tenderly_setErc20Balance 不同,此方法会为每个被充值的账户发出一个合成的 Transfer 事件,因此索引器、subgraph 以及任何从日志中对账余额的工具都会与最终状态保持同步。
发出的日志使用标准的 ERC-20 Transfer(address,address,uint256) topic,将交易发送方作为 from 地址,将被充值的钱包作为 to 地址,并在 data 字段中携带添加的 amount。
参数
TOKEN_ADDRESS- ERC-20 合约的地址WALLETS- 将接收代币的钱包地址数组VALUE- 32 字节哈希,表示向每个钱包添加的代币的 wei 数量
DATA - 新创建交易的 32 字节哈希(存储覆盖通过交易提交)
示例请求
example.json
example.json
tenderly_setMaxErc20Balance
在提供的 erc20 合约上,将钱包地址充值至最大可能的代币余额(主要用于没有简单余额映射的代币)。
与
tenderly_setErc20Balance 类似,此方法直接写入存储,不会发出 ERC-20 Transfer 事件。当您需要索引器或基于日志的工具捕获余额变化时,请使用 tenderly_addErc20Balance。YIELD_TOKEN_ADDRESS- ERC20 合约的地址WALLET- 将被充值的钱包地址
DATA - 新创建交易的 32 字节哈希(存储覆盖通过交易提交)
示例请求
example.json
example.json
tenderly_setStorageAt
在提供地址的指定存储槽上设置存储。
参数
ADDRESS- 要覆盖存储的地址SLOT- 表示存储槽键的 32 字节哈希VALUE- 表示键slot处值的 32 字节哈希
DATA- 新创建交易的 32 字节哈希(存储覆盖通过交易提交)
example.json
example.json
evm_snapshot
返回一个快照 ID,让您可以将 Virtual Environment 回退到先前的时间点(与 evm_getLatest 中的区块 hash 相同)。
参数
返回值
DATA- Virtual Environment 生成的最新区块的哈希(快照 ID)
example.json
example.json
evm_revert
将 Virtual Environment 的状态回退到先前的快照。
单次 evm_revert 最多可回滚 2000 个区块。如果快照比这更早,调用将失败,并返回 revert operation is limited to maximum 2000 blocks 错误。要回到超过 2000 个区块之前的时间点,请改为在目标历史区块处克隆 Virtual Environment。
参数
DATA- 快照的 ID
BOOLEAN- 操作成功标志
example.json
example.json
Network Mirror Mode 同步控制
以下方法控制 Network Mirror Mode,它们用于启动、停止、单步执行、回退以及检查 Virtual Environment 与其父网络之间的持续同步。当 Network Mirror Mode 同步处于活动状态时,其他 Admin RPC 作弊码(例如
tenderly_setBalance、tenderly_setStorageAt、tenderly_sendBlock)会被禁用。如果您需要它们立即生效,请先通过 tenderly_stopSync 暂停同步。tenderly_startSync
启动 Virtual Environment 与其父网络之间的持续同步。父网络的新区块会在产生时被吸收,Virtual Environment 内存池中的任何交易会以 FIFO 顺序被前置到下一个同步的区块中。
参数
无。
返回值
BOOLEAN- 如果同步已启动则为true
example.json
example.json
tenderly_stopSync
停止正在进行的任何同步。Virtual Environment 停留在当前区块;您可以使用 tenderly_startSync 恢复,或使用 tenderly_syncNext 手动前进。当 Mirror Mode 处于活动状态时,在调用其他 Admin RPC 作弊码之前请使用此方法。
参数
无。
返回值
BOOLEAN- 如果同步已停止(或已经处于停止状态)则为true
example.json
example.json
tenderly_syncNext
将下一个父网络区块同步到 Virtual Environment 上。任何待处理的 Virtual Environment 交易都会以 FIFO 顺序前置到该区块中。适用于逐个区块单步同步。
参数
无。
返回值
DATA- 新同步区块的 32 字节区块哈希
example.json
example.json
tenderly_revertSync
将 Virtual Environment 回退 N 个已同步的区块,撤销它们对 Virtual Environment 状态的影响。默认为 10 个区块。使用此方法可将 Mirror-Mode Virtual Environment 步回父网络历史中较早的一个时间点。
参数
QUANTITY(可选) - 十六进制编码的要回退的区块数。默认为0xa(10)。
DATA- Virtual Environment 当前所处区块的 32 字节区块哈希
example.json
example.json
tenderly_getSyncStatus
返回 Virtual Environment 的当前同步状态,包括同步是否处于活动状态、其落后于父网络的程度以及最新同步的区块。
参数
无。
返回值
OBJECT- 具有以下字段的同步状态:active-BOOLEAN,如果同步当前正在运行则为truelag-QUANTITY,Virtual Environment 落后于父网络的区块数latestSyncedBlock-QUANTITY,同步到 Virtual Environment 上的最新区块的区块号parentLatestBlock-QUANTITY,父网络上最新区块的区块号
example.json
example.json