Solana 近期经历了前所未有的交易量,导致交易失败或丢失的比例很高。该网络每秒的交易量(TPS)约为2000-3000 笔,其中大约 800-900 笔是非投票交易。Quinn (网络层的 Rust 实现- QUIC)在高需求场景下有效处理垃圾邮件方面存在局限性,这可能导致区块领导者必须有选择地断开连接。在所有失败的交易中,大约 8% 是由实际用户发起的,其余的是机器人的任意交易。
了解事务如何在 Solana 上提交和处理对于处理失败的事务至关重要。本文深入探讨了事务失败的可能原因,并推荐了提高事务吞吐量的最佳实践。本文假设您对Solana 的编程模型以及创建和发送交易有基本的了解。
交易
程序执行从提交到集群的事务开始。一笔交易包含:
* 打算读取或写入的所有帐户的数组
* 一条或多条指令(即最小执行单元)
* 最近的区块哈希
* 一个或多个签名
运行时将按顺序和原子地处理事务中包含的每条指令。如果指令的任何部分失败,则整个事务将失败。
什么是区块哈希?
“blockhash”是插槽的最新历史证明(PoH)哈希值。由于 Solana 依赖PoH机制