solana-core v1.9 或更新版本中可用。对于运行 solana-core v1.8 或更早版本的节点,请改用 getRecentBlockhash 方法。
常见用例
- 交易构建: 在签名并发送新交易之前,获取最近的 blockhash 以包含在其中。
- 交易生命周期管理: 使用
lastValidBlockHeight来了解引用获取的 blockhash 的交易预计能保留多长时间。 - 预检: 尽管
simulateTransaction可以隐式执行此操作,应用程序可能会获取 blockhash 以手动准备模拟交易。
请求参数
此方法可以选择性地接受一个包含以下参数的配置对象:commitment(字符串,可选):指定查询的承诺级别。如果省略,则使用节点的默认承诺。对于交易,通常使用confirmed或finalized以确保 blockhash 来自链的相对稳定部分。minContextSlot(整数,可选):请求可在其上评估的最小槽位。这确保查询针对至少处理到该槽位的账本状态进行。
响应结构
JSON-RPC 响应的result 字段将是一个 RpcResponse 对象。该对象内的 value 字段包含:
blockhash(string):一个经过 base-58 编码的字符串,代表最新的区块哈希。lastValidBlockHeight(u64):该区块哈希将过期的区块高度。在网络达到此区块高度之前,引用此区块哈希的交易是有效的。
context 对象。
示例
1. 使用默认承诺获取最新区块哈希
此示例使用节点的默认承诺获取最新的区块哈希。2. 使用 ‘confirmed’ 承诺获取最新区块哈希
此示例明确请求具有confirmed 承诺的最新区块哈希。
开发者提示
- 区块哈希有效性: 区块哈希在有限的时间内有效,约为 2 分钟(但这可能有所不同)。交易必须在其区块高度过期之前由网络确认。如果自上次获取区块哈希以来已经过了相当长的时间,始终获取新的区块哈希。
- 选择承诺: 对于关键交易,使用
finalized承诺提供了最强的保证,确保区块哈希来自主链分叉,但可能会稍微旧一些。confirmed提供了良好的平衡。了解更多关于承诺级别的详细信息。 - 交易费用: 请记住同时计算并包含适当的交易费用。区块哈希本身并不决定费用。
- 重试逻辑: 如果交易因过了其区块高度而过期,则必须使用新的、更近的区块哈希重新签名并重新提交。
getLatestBlockhash 的步骤,这是通过交易与 Solana 网络互动的基石。