Skip to main content
Leafage 按指定链和区块读取链上状态。以下示例在 Chaintable Notebook 中运行;Function 中的使用方式见数据访问。源码提供完整实现。

创建区块上下文

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 源码。