跳到主要内容
知识地图Solana 交易:多条指令,一个结果外部项目

你在这里。看看这个问题与其他知识怎样相连。

选择节点前往页面 · 展开后可留在地图中阅读

知识地图沿着连接,读懂一个问题
← 区块链与共享状态

一个问题

Solana 交易:多条指令,一个结果

理解原子执行,也理解失败时仍可能产生费用。

一笔 Solana 交易可以包含多条指令,以及授权所需的签名和近期区块哈希等时效信息。每条指令指出使用哪个程序、涉及哪些账户。

一个两步操作

假设一笔交易先准备账户,再执行转账。如果其中一条指令失败,交易中的应用状态修改一起回滚。这种原子性避免应用把半笔交易当作已经完成;失败时仍可能收取费用。

原子性有范围:它覆盖这笔交易,不会自动覆盖网站数据库的更新,或随后发送的邮件。应用应确认链上结果,再记录交付,并让链下处理可以安全重试。

查看付款时,需要检查具体指令与要求的签名者,而不只是看到某个账户地址出现在交易中。某个账户出现在交易里,并不能单独证明控制它的人批准了每一个动作。

提交、执行与确认

节点接受请求后,sendTransaction 会返回交易签名,但这不保证交易已执行。近期区块哈希用来指明最近的链历史,也让交易具有有限的提交有效期;它可能在交易被收录之前过期。

查询签名对应的状态时,要同时看执行错误和确认级别。processed 是节点最新处理的视图,仍可能回退;confirmed 表示代表超过三分之二活跃质押权重的验证者已对区块投票;finalized 是网络最强的确认状态。一笔失败交易即使达到 finalized,其操作仍然是失败的。

转账应用应保留网络和交易签名,核实成功,再等待所选确认级别。结果未知时,先查清原交易再签一笔替代交易,否则重试可能成为第二笔付款。提交参考与状态参考分别说明这些检查。

来源与延伸阅读