关于Solana v1.16更新的所有内容

  • Helius
  • 发布于 2023-10-08 15:27
  • 阅读 26

本文详细介绍了Solana区块链的v1.16版本更新,包括其测试过程、新特性、验证器优化、零知识证明支持等内容。文章结构清晰,逻辑严谨,适合对Solana生态有一定了解的技术人员阅读。

11分钟阅读

2023年10月6日

这篇文章讲了什么?

Solana 的验证者网络 成功达成了v1.16版本的超大多数采用,这是Solana Labs验证者客户端的最新升级。在经过了详细的审计期,并得到了志愿者和金丝雀节点的积极努力后,这一里程碑是近十个月严格开发的结晶。

在接下来的部分中,我们将深入探讨v1.16是如何进行测试的,以及Solana的功能门控系统;这是一个管理新功能逐步引入网络的框架。然后,我们将讨论v1.16中实现的新功能。

v1.16是如何被测试的?

v1.16在过去几个月中进行了严格的测试。自2023年6月7日起,v1.16发布已在测试网运行,并经历了多次压力测试。此外,一小部分志愿者节点于2023年8月23日起更新到v1.16。这些志愿者能够识别并解决各种问题,例如 RPC节点启动缓慢 以及 一般保护错误。Solana Labs还在主网-测试网部署了几个金丝雀节点。这是为了监控v1.16节点在现实条件下的稳定性。要查看这些金丝雀节点的过去活动和进展,请访问Solana Tech Discord中的#canaries-monitoring频道。

为了捕捉边界情况或不常见的竞争条件,使用多个运行时模糊器执行部分随机化的交易。这些交易在不同的运行时版本之间执行,以确保性能的一致性。v1.16还经过了 Halborn 的广泛审计。审计报告会随着时间的推移发布到 这个代码库

功能门控

需要注意的是,我们将在后续部分讨论的一些功能目前还未上线。相反,功能是通过功能门控系统逐步推出的。功能根据相对优先级和它们在其他网络上激活的顺序,在某些纪元被激活。功能门控激活调度迄今为止是基于一系列标准的临时计划,你可以在 这里 找到这些标准。基本上,这些门控功能应首先在测试网激活,然后是开发网,最后在主网-测试网激活。要激活一个功能,需要具备相关激活密钥对的工程师发送一个事务,该事务会被处理并使功能在下一个纪元上线。每个网络一次只能激活一个功能门控,以确保性能正常。需要注意的是一些功能可能需要“浸泡”期,这可能会延迟低优先级门控的激活。

此功能门控系统的存在是为了确保破坏共识的变更不会导致运行新版本的验证者从标准链中分叉,并继续生成区块。例如,v1.14验证者并不知道新的v1.16功能,当出现争议时可能会导致网络崩溃。本周合并的一项提交鼓励所有破坏共识的变更必须有一份Solana改进文档(SIMD)。功能门控问题模板现在将包含对问题的SIMD的请求。这有助于标准化开发过程,并通过文档提供对新变化的更大透明度。

保密转账

保密转账是由Token2022引入的一项功能,利用零知识证明加密SPL代币的余额和交易金额。此功能的主要焦点是通过强调保密性而非匿名性来改善用户隐私。

保密转账利用 Twisted ElGamal 加密 对加密金额进行数学操作。这些转账使用Sigma协议进行验证,这是一种特殊的零知识证明类别,证明者可以向验证者展示他们知道某个秘密而不实际披露秘密本身。请务必阅读我们的文章 《什么是Token2022?》What is Token2022?),深入了解保密转账的复杂性。

为了配合保密转账的推出,增加了 命令行接口 (CLI) 支持create-token命令已扩展为包括--enable-confidential-transfers标志,这允许用户铸造带有保密转账的代币。此外,还增加了update-confidential-transfer-settings命令,以允许为特定铸造动态更改保密转账配置。这允许更新审计密钥和批准设置。

改进的零知识证明运行时支持

v1.16发布通过增强对零知识计算,特别是128位椭圆曲线操作的运行时支持,提升了Solana的零知识能力。v1.16引入了alt_bn128的系统调用,这对于高效生成证明至关重要。

alt_bn128是用于加密操作的椭圆曲线的一种特定实现,称为Barreto-Naehrig曲线(BN-128)。BN-128是一种分配友好的椭圆曲线,允许高效实施zk-SNARKs(零知识简洁非交互式知识论证)。顺便提一下,当椭圆曲线允许更高效地进行某些计算时,就被认为是“配对友好”的。因此,在我们的情况下,使用BN-128曲线使得处理零知识数学和证明变得更快。

系统调用或系统调用用于请求操作系统内核的服务。在Solana的上下文中,系统调用允许在Solana虚拟机(SVM)中运行的程序与外部资源进行交互。

因此,alt_bn128系统调用是Solana程序用来与高效BN-128曲线交互的调用。这使得零知识证明的验证变得更加简化,提供了更好的安全性和隐私性。最近还增加了alt_bn128 g1和g2系统调用,这允许对Groth16证明进行压缩。这是重要的,因为这些类型的证明每个证明占用256字节的指令数据,而私有Solana程序(PSPs)目前需要验证两个Groth16证明。使用g1和g2压缩后,每个证明所需的字节数可以减半至128字节,这对于空间效率至关重要。

此外,如果Solidity合约包含对以下预编译合约的调用以进行椭圆曲线操作,可能会与Solana发生兼容性问题:

  • bn256Add - 进行椭圆曲线操作的加法
  • bn256ScalarMult - 进行椭圆曲线操作的标量乘法
  • bn256Pairing - 在块气体限制内执行zkSNARKs验证的椭圆曲线配对操作

这些操作在以太坊上通过 EIP-196EIP-197EIP-198 进行了标准化。引入alt_bn128系统调用是缩小兼容性差距的重大飞跃。依赖这些椭圆曲线操作的Solidity合约现在可能更容易过渡到Solana或甚至与Solana互操作。

在Solana的v1.16更新中包含alt_bn128系统调用,标志着Solana在高效且安全地处理零知识证明能力方面的重大进步。如果你想了解更多关于alt_bn128系统调用的信息,请查看以下拉取请求:

验证者

v1.16更新显著减少了验证者的RAM使用量。Solana以前依赖RAM来索引账户。现在系统已经重新配置为将账户默认为在磁盘上索引,从而大大减少了RAM使用量。Luganodes的Yanshu指出,自v1.16发布以来,他们的验证者仅在约39GB RAM上顺利运行,而以前的版本则需要约120GB:

Yanshu推文

v1.16发布还引入了重新设计的gossip拉取请求对等体采样系统。该新系统在减少验证者的启动带宽方面非常有效。在以前的版本中,验证者可能由于gossip拉取请求的高收量而遇到带宽限制。这可能会减缓甚至压倒验证者。v1.16通过引入自上次请求以来的时间变量解决了这个问题。该变量用于估计传入流量的级别,并应用速率限制,以防止验证者在启动时被淹没。

与网络相距较远的质押验证者现在可以更快地赶上当前状态,采用与其抵押成比例的新修复请求功能。每当大型质押验证者从网络中分叉时,他们会发出修复请求。这个验证者现在将更快获取shreds,因为他们持有大量质押。这确保了该验证者不再从网络中分叉并继续做出贡献。相较于RPC节点,质押验证者在修复请求上拥有更高的优先权,因为他们不会产生区块。

发出shred修复的延迟阈值也已从100ms增加到200ms。这一变化是为了减少通过 Turbine 提供的shred修复请求的数量。顺便提一下,Turbine是Solana用于广播分类账条目到所有节点的多层区块传播机制。在这里,Solana集群将自身划分为多个节点层,每个层中的每个节点负责向下游层传播数据。这是一个关键调整,因为它最小化了不必要的修复请求,提高了Turbine数据传播的效率。

运行你自己的验证者从未如此简单。对于想要操作自己验证者的人,Solana提供了 Solana验证者教育,一系列的验证者工作坊,可以在其YouTube频道找到。

可调整大小账户的支持

在Solana上部署程序时,分配给程序的数量总是程序大小的两倍。v1.16允许你以可调整大小的数据账户部署程序。这意味着你可以使用较小的账户部署程序,然后在稍后扩展其大小,同时支付内存差额。对于在Solana上部署应用程序的开发者而言,支持可调整大小账户提供了更多灵活性和更好的资源分配。

纪元账户哈希

在之前的版本中,存在关于区块和验证所有账户状态的问题。如果验证者长时间未与特定账户交互,该验证者可能对该账户有一个损坏的版本却未意识到。这是因为账户状态不会与其他验证者节点持有的状态进行检查,因为没有事务更新其状态。

v1.16通过引入纪元账户哈希解决了这个问题。这是一个在每个纪元结束时生成的所有账户的哈希,即使那些账户未接触。纪元账户哈希使网络能够识别并分叉数据损坏的节点,从而提高Solana的完整性和安全性。

系统调优

系统调优是优化验证者操作系统和硬件配置以实现最佳性能的过程。随着v1.16的发布,solana-sys-tuner已被移除,现在推荐手动测试。这一移除是因为在先前版本中,RocksDB的TransactionStatusAddressSignature列没有得到适当清理。此外,默认情况下禁用了定期压缩,这是一个重新回收存储空间的过程。这导致在运行--enable-rpc-transaction-history标志的节点中,这些列的增长没有界限。现在,使用这个标志的验证者将更有效地管理其存储空间,得益于以下 提交。这在去除存储不必要的交易状态和地址签名的需求方面显著改善了验证者的存储要求。

结论

Solana的v1.16发布标志着一个重要的里程碑,封装了十个月的开发。其发布缓慢的原因在于对QUIC的优先考虑,因此在保密转账、零知识支持和验证者优化方面的这些进展早已逾期。然而,这些改进绝对是具有突破性的。这一版本帮助Solana带来了更高的效率和隐私水平。

展望未来,Solana Labs正在转向更灵活的发布周期,目标是在大约三个月内发布一次新版本。这些未来的发布将比v1.16小得多。这使得迭代更快并减少部署风险。v1.17的发布计划可以在 这里 找到,并被证明是另一个备受期待的发布,具有更好的零知识支持和 潜在引入Posidon系统调用

如果你读到了这里,感谢你!随着更灵活的发布周期和一系列新功能和改进,Solana的未来看起来比以往更好。无论你是开发者、投资者、验证者,还是Solana的爱好者,请务必关注即将发布的版本!你的Solana之旅才刚刚开始。

其他资源 / 深入阅读

  • 原文链接: helius.dev/blog/all-you-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/