许多新开发者在构建应用程序时,常常会遇到与交易确认相关的问题。
本文旨在提升对Solana区块链交易确认机制的整体理解,并提供一些推荐的最佳实践。
交易的简要背景
在深入了解Solana的交易确认和过期机制之前,
让我们简要了解以下几个方面:
- 交易是什么
- 交易的生命周期
- 什么是区块哈希(
blockhash) - 对历史证明(
Proof of History,PoH)及其与区块哈希的关系有一个简要了解
什么是交易?
交易由两部分组成:消息和签名列表。交易消息是关键,它由以下三部分组成:
- 要调用的指令列表
- 要加载的账户列表
- 一个最近的区块哈希
本文将重点讨论交易的最近区块哈希,因为它在交易确认中起着重 要作用。
交易生命周期回顾
下面是交易生命周期的高层次视图。
本文将涉及除步骤1和4之外的所有内容。
- 创建指令列表以及指令需要读取和写入的账户列表
- 获取最近的区块哈希并使用它来准备交易消息
- 模拟交易以确保其行为符合预期
- 提示用户使用其私钥签署准备好的交易消息
- 将交易发送到RPC节点,该节点尝试将其转发给当前的区块生产者
- 希望区块生产者验证并将交易提交到其生成的区块中
- 确认交易是否已包含在区块中或检测其是否已过期
什么是区块哈希?
区块哈希指的是某个槽位(slot)的最后一个历史证明(PoH)哈希。
由于Solana使用PoH作为可信的时钟,
交易的最近区块哈希可以看作是一个时间戳。