创建区块上下文
ChainState(chain_id, block_id)
返回
ChainState 对象。需要一致的多次读取时,先确定区块 ID,再复用同一个对象。
区块查询
以下接口是类方法,直接通过ChainState 调用。
区块字典包含
id、height、timestamp 等字段;timestamp 为 Unix 秒数。不同链可能包含不同的附加字段。
账户状态
get_address_nonce() 使用最新区块,不能据此取得上面 chain 对象指定的历史 nonce。其他三个实例方法使用对象的区块上下文。
单次合约调用
chain.call(contract, method, payload, from_addr=None)
返回解码后的值。多个输出值返回可解包的结果;整数为 Python
int。
批量合约调用
['USDC', 6]。
例如,将末尾
.values() 改为 .dict('symbol', 'decimals'),得到 {'symbol': 'USDC', 'decimals': 6}。
状态覆盖
set_block_overrides(value) 和 set_state_overrides(value) 设置模拟调用的区块和账户状态覆盖;对应的 get_*_overrides() 返回当前设置。覆盖只影响模拟读取,不修改链上状态。字段规范与完整示例见 Leafage 源码。