
Agave 4.0 更新:你需要了解的一切
衷心感谢 0xIchigo 和 Brian Wong 审阅本文的早期版本。
简介
借助 Agave 4.0,Solana 的核心验证客户端再次向前迈进,在优化核心性能路径的同时,也为更大的区块以及备受期待的 Alpenglow 共识更新做好准备。
Agave 4.0 发布周期的重要更新
- XDP 大幅加快 Turbine 重传
- 延迟更低的重放阶段
- 为 Alpenglow 做好准备:快速领导者交接标记与链式区块 ID 验证*
- 扩展密码学支持:G2 运算与 BLS12-381 系统调用*
- 使用 Wincode 改进序列化
- 通过质押程序 v5 提高最低质押委托额*
- 重新启用 ZK ElGamal 证明程序*
- 支持 SBPFv3 程序*
* 受功能门控控制的升级
无论你是验证节点运营者还是开发者,本指南都将提供充分利用最新改进所需的更新与洞察。本文各部分相互独立,方便读者聚焦与自己最相关的主题。
在撰写本文时,Agave v4.0.0-rc.0 被视为主网升级候选版本(MUC),Anza 正在招募志愿者,协助将该版本的质押占比提升至 25%。验证节点:该升级了!
XDP 已准备好迎接更广泛采用
XDP(eXpress Data Path 的缩写)是 Agave 用于加速 Turbine 的高性能网络路径。它让 Agave 能够在靠近网卡的位置加载一个 eBPF 程序,使 shred 流量绕过 Linux 标准数据包处理路径的大部分环节。
这一点至关重要,因为随着 Solana 向更高的区块上限迈进,Turbine 正成为主要瓶颈。领导者必须将 shred 扇出至数百个对等节点,而在当前条件下,大型验证节点的每秒出站数据包数量已可接近 150,000 个。随着网络向长期目标——1 亿 CU 区块——迈进,数据包分发和重传性能必须与执行吞吐量同步扩展。XDP 通过大幅加快区块传播,为此提供了充足余量。
在 Agave 4.0 中,XDP 已准备好供更多验证节点采用。它已在多种配置下通过压力测试,得到进一步强化,并完成了额外的路由改进。生产环境中的结果非常振奋,Turbine 重传速度提升了数个数量级。
如需进一步了解 XDP 为何能带来如此显著的改进,请参阅我们此前对 Anza 工程师 Alessandro Decina 的采访。
更快的重放阶段
Agave 4.0 将两个成本高昂的验证步骤移出重放线程的关键路径,从而加快重放速度。在 v4.0 中,条目验证和交易签名验证均采用异步分派,让重放可以继续处理,同时由后台任务确认该 slot 有效。
第一项变更将 PoH 条目验证移至后台。此前,重放必须以内联方式验证条目哈希链后才能继续。第二项变更将相同思路应用于交易签名,但做出了一项重要拆分:Agave 现在将交易哈希/消息验证与 Ed25519 签名验证分开。哈希路径仍会预先运行,以便安全地清理和执行交易;成本更高的签名检查则在后台运行,并在接受区块前合并结果。
实际效果是重放阶段受到的阻塞大幅减少,尤其是在繁忙的 slot 中,因为签名检查会随交易数量增加而扩展。
进一步采用 Wincode
Wincode 是一个由 Anza 开发的序列化与反序列化库,专为原位初始化和直接内存写入而构建,以尽量减少中间缓冲。它在与更流行的 bincode 完全兼容的同时,提供 Rust 序列化器中的顶级性能。
在 Agave 4.0 中,更多对性能至关重要的序列化路径正从 bincode 迁移至 wincode。由于 Solana 中几乎所有写入磁盘或通过网络发送的数据都依赖 bincode,优化这些路径将带来广泛影响。
提高最低质押委托额(质押程序 v5)
Agave 4.0 将为质押程序带来一项重大更新。这项受功能门控控制的变更详见 SIMD-0490,旨在为 Solana 更广泛地降低质押保证金(即租金)做好准备。
最值得关注的变化是,最低质押委托额将从 1 lamport 提高到 1 SOL。这样可防止在租金要求降低后,创建和维护质押账户的成本变得过低,进而形成潜在攻击途径。虽然许多小额质押账户低于这一门槛,但它们仅占活跃质押总额的 0.02%,并将在更新上线后获得豁免。
此次升级还清理了质押账户处理中的多个环节。租金计算将改用 Rent sysvar,而不是依赖每个账户中存储的 rent_exempt_reserve;质押程序操作中的 sysvar 账户输入将变为可选;Split 实现也将重写,以修复长期存在的边界情况。
验证节点运营者社区已表示能够接受新的 1 SOL 最低限额。与质押程序交互的工具和 dapp 需要检查其逻辑,以适配新的最低限额。
改进密码学支持
Agave 4.0 发布周期中的多项功能激活旨在扩展 Solana 的原生密码学能力,从而更好地支持包括 ZK 证明和 BLS 签名在内的现代用例。
重新启用 ZK ElGamal 证明程序
ZK ElGamal 证明程序是一个原生 Solana 程序,用于验证 Token-2022 机密转账中使用的零知识证明,以便在不泄露底层数据的情况下验证加密余额和交易。它可作为基于 ElGamal 的密码学证明的通用验证器,是 Solana 隐私保护型代币功能的关键组成部分。
在 2025 年 6 月的安全事件后,该程序在主网上被禁用。此次事件中,证明验证逻辑存在缺陷,具体而言是 Fiat-Shamir 转录哈希中缺少一个元素,使攻击者能够构造可通过验证的伪造证明。虽然没有观察到实际利用,但鉴于潜在影响,该程序被功能门控关闭,机密转账也暂停,直至修复和审计完成。相关问题现已解决,实现也得到强化,该程序已计划在主网上重新激活。
alt_bn128 的 G2 运算
SIMD-0302:添加 alt_bn128 G2 系统调用扩展了 Solana 现有的 BN254(alt_bn128)密码学系统调用,以支持对 G2 曲线点执行原生操作,包括加法、减法和标量乘法。G1 和 G2 是基于配对的密码学所使用的两个椭圆曲线群,其中 G2 定义在更大的扩域上。
这填补了当前系统调用集中的一个关键空白。现有系统调用主要聚焦于 G1 操作,而这项变更将进一步完善链上对基于配对的密码学的支持,尤其适用于 BLS 签名验证和高级 ZK 证明系统等用例。
在缺乏原生 G2 支持的情况下,一些项目一直依赖 solana-alt-bn128-bls 等自定义实现。它是 Blueshift 的 Dean Little 基于现有系统调用构建的端到端 BLS 签名库。在系统调用层面启用 G2 操作将不再需要这些变通方案,让开发者更容易在 Solana 上原生构建生产级密码学协议。
alt_bn128 的小端序支持
SIMD-0284:为 alt_bn128 添加小端序兼容性扩展了 Solana 现有的 alt_bn128 密码学系统调用,使其支持小端序输入和输出格式。此前,这些系统调用仅接受大端序编码,给使用相关工具和库的开发者带来不便,尤其是来自 Ethereum 生态系统的开发者,因为 Solana 上大多数 ZK 团队使用以小端序运行的 ark-bn254。该变更保持向后兼容,并扩展了对 alt_bn128 椭圆曲线操作现有用例的支持。
BLS12-381 系统调用
最后,SIMD-0388:BLS12-381 系统调用为 BLS12-381 椭圆曲线上的密码学操作引入原生支持,将一条支持现代 128 位安全级别且适合配对的曲线带入 Solana 程序。此前,Solana 一直依赖 BN254(alt_bn128)进行基于配对的密码学操作,但它无法达到这一安全标准,也限制了与 Ethereum 等其他广泛采用的生态系统的兼容性。
此次升级没有引入全新的系统调用接口,而是使用 BLS12-381 G1 和 G2 操作的新标识符扩展现有曲线系统调用。开发者由此可以通过熟悉的接口执行群运算、点验证、解压缩和批量配对检查,同时大幅扩展密码学能力。
除了全面改进零知识证明和 BLS 签名验证外,这项工作也是 Alpenglow 共识的关键基础。具体而言,它允许验证节点在链上验证 BLS 持有证明,从而防止流氓密钥攻击。这也引出了下一节。
为 Alpenglow 做好准备
BLS12-381 系统调用只是 Agave 4.0 发布周期中多项功能门控激活之一,它们共同为 Alpenglow 共识升级奠定基础。以下是推动此次发布的其他激活项。目前,Alpenglow 计划于 2026 年第三季度与 Agave 4.1 一同登陆主网。
链式区块 ID 验证
SIMD-0340:验证链式区块 ID规定了验证节点必须如何验证区块祖先关系,以确保在 TowerBFT 和 Alpenglow 共识下都能形成一致的规范链。由于仅凭 slot 编号无法唯一标识区块,尤其是在发生双签、同一 slot 可能产生多个区块时,客户端不能依赖 slot 顺序来确定正确的父子关系。
这项变更引入明确的链验证规则,确保每个区块都正确引用其父区块,从而防止分叉并帮助网络收敛至单一历史记录。在 TowerBFT 下,这通过要求 FEC 集在 slot 内部和跨 slot 引用其父级的 Merkle 根来强制执行。Alpenglow 则对一个 slot 中的所有 FEC 集使用双 Merkle 根结构。如果这些检查失败,区块或 slot 将被标记为失效。执行这些规则可增强共识安全性,并确保验证节点能够从收到错误或冲突区块的状态中恢复。
快速领导者交接标记
SIMD-0337:Alpenglow 快速领导者交接标记定义了明确的信号规则,让验证节点能够确定父 slot 何时完全结束并可安全地在其上继续构建,这是实现快速领导者切换的前提。该变更为 DATA_COMPLETE_SHRED 引入更严格的位置要求,并新增“父级就绪”标记,确保仅通过 shred 流本身就能明确判断区块是否完整。
目前,由于无法明确判断一个 slot 是否已完全传输,下一位领导者可能会被延迟,因为它可能需要等待更多 shred,或冒险基于不完整的数据进行构建。通过标准化完成信号的发送方式,这项变更让下一位领导者无需额外协调或猜测,就能更早、更有把握地开始生成区块。
这是 Alpenglow 快速领导者交接设计的关键基础模块。在该设计中,尽量缩短领导者之间的空档可直接提高网络吞吐量。
投票交易成本模型更新
SIMD-0458:停止使用静态 SimpleVote 交易成本取消对投票交易使用固定 CU 成本,使其与非投票交易所使用的标准交易成本模型保持一致。
目前,简单投票交易固定收取 3,428 CU,这源于对确定性执行成本的旧有假设。在新模型下,投票交易将像其他交易一样动态计量,使成本核算更加一致,也不再需要单独设置投票 CU 上限。
虽然投票交易的实际运行时 CU 消耗保持不变,但在区块打包期间的核算方式会发生变化。具体而言,投票现在将计入额外约 ~1.6 万个预估 CU,例如账户数据加载成本,因此领导者构建区块时需要预留更多 CU。
| 总消耗 CU | 总预留 CU | |
| 成本模型更新前 | 3,428 | 3,428 |
| 成本模型更新后 | 3,428 | 19,812 |
这项变更承接 SIMD-0387(在投票账户中管理 BLS 公钥)。后者取消了投票程序具有静态执行特征的假设。
其他重要升级
Agave 4.0 发布周期的其他亮点包括支持 SBPFv3 程序、能够创建预注资账户,以及使用直接 I/O 解包快照。
支持 SBPFv3 程序
Agave 4.0 发布周期包含一个功能门控,用于启用 SBPFv3 程序的部署和执行。Solana Berkeley Packet Filter(SBPF)是 Solana 基于 Rust 的 eBPF 分支,是链上程序执行前所编译到的底层字节码格式和虚拟机。此次更新整合了三个 SIMD 中概述的工作:SIMD-0178、SIMD-0189 和 SIMD-0377。
SIMD-0178引入静态系统调用,使系统调用引用可在链接时解析,而不是通过运行时 ELF 重定位来处理。目前,这些重定位增加了程序加载器的复杂性;移除它们可以简化执行并降低安全风险。
随后,SIMD-0189收紧了程序允许使用的 ELF 布局,要求更严格的文件结构,从而减少验证节点需要解析的边界情况和处理的意外数据。由于链接器工具链预计会自动生成合规二进制文件,这项变更对开发者而言应当是透明的。
最后,SIMD-0377更新了 SBPF 虚拟机,使其更好地匹配 LLVM 生成的现代 eBPF 指令集,包括支持 32 位跳转操作等额外指令。目标是提高 Solana VM 与上游工具的兼容性,同时让程序能够编译为更高效的字节码。对开发者而言,实际成果是程序加载更快、攻击面更小,并有可能在不更改应用逻辑的情况下降低计算用量。
创建预注资账户
SIMD-0312:CreateAccountAllowPrefund计划在 Agave 4.0 发布周期内于主网激活。它在系统程序中引入一条新指令,不再要求新创建的账户初始 lamport 余额必须为零。账户因此可以在创建前预先注资,从而简化常见的开发者工作流并减少不必要的指令。
此前,如果目标账户已持有 lamport,CreateAccount 指令就会失败。因此,开发者必须将账户初始化拆分为多个步骤,通常先转账,再分配空间并指派所有者。这会增加复杂性和额外的计算成本。这种模式在预先为账户注资的程序中尤为常见。
新指令允许直接初始化预注资账户,将这些步骤整合到单次调用中。在实践中,这会降低 CPI 开销,并能在常见流程中节省数千个计算单元,为开发者提供更简洁、性能更高的后续路径。由于它以新指令的形式引入,而不是修改现有指令,因此保持完全向后兼容。
使用直接 I/O 解包快照
Agave 4.0 将默认使用直接 I/O 解包快照,不再通过操作系统页缓存写入快照,从而缩短启动时间并提升快照恢复性能。这一点尤其有用,因为快照数据通常以流式方式写入磁盘,无需将更常用的验证节点数据挤出内存。如果文件系统不支持 O_DIRECT,运营者可以使用 --no-accounts-db-snapshots-direct-io 选择退出。未来版本预计还会将直接 I/O 扩展至快照创建。
总结
Agave v4.0 是一次重大客户端升级,带来一系列性能改进和运行时优化。这些变更旨在让网络更快、更安全,也更易于构建应用。
展望未来,下一个里程碑是 Agave 4.1 和 Apenglow 共识更新。
更多资源
相关文章
订阅 Helius
及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新


