目录
1、Firedancer
2、关键要点
3、介绍
3.1迈向Solana 2.0
4、布局初期
5、Solana上的验证器客户端现状
6、为什么需要另一个验证器客户端?
7、Firedancer
7.1Firedancer堆栈
7.2模块化架构
7.3安全模型
8、未来之路
9、结论
10、参考文献
11、声明
Firedancer
在接下来的报告中,我们将深入探讨Firedancer,探索其价值主张以及它在实现Solana原始白皮书中概述的愿景中所扮演的角色。对许多人来说,它的发布将标志着迈向Solana 2.0的第一步,将硬件和软件的极限推向极致,解决现有验证器客户端的挑战,重新定义网络的可扩展性、可靠性和效率。
关键要点
Solana的愿景是以硬件为中心,相信随着摩尔定律的线性可扩展性,前提是软件优化能够跟上步伐。
在当前状态下,现有的验证器面临性能和可扩展性问题,主要是由于软件限制而非硬件限制。
Solana网络的弹性依赖于多样化其验证器客户端,以减少系统故障风险并增强容错能力。引入Firedancer,一款新的第三方验证器客户端软件,标志着向增强这种弹性、促进客户端多样性及解决Solana对有限客户端依赖的方向迈进。
Jump Crypto团队推出的Firedancer,其方法论基于高性能全球交易系统——这是优化Solana的天作之合,最终目标是在物理和理论极限的边缘运行。
虽然Firedancer的开发代表了一个重要的里程碑,但持续在文档、兼容性和社区治理上的努力对于Solana演变为开放标准至关重要。
简介
Solana的故事始于2017年,当时Anatoly Yakovenko发布了描述历史证明(Proof of History)的原始白皮书。这描绘了一个愿景,旨在构建一个能够克服现有解决方案的可扩展性问题的区块链。它被设计为一个高性能、低延迟的平台——一个可以构建能与纳斯达克竞争的交易引擎的区块链。
基于Anatoly和创始团队提出的原始理念,只要软件不妨碍硬件,区块链的整体网络性能可以随着硬件的进步而线性增长——正如摩尔定律所描述的,集成电路中的晶体管数量大约每两年翻一番,成本增长极小。假设软件是最优的,Solana的性能指标可以在不进行任何进一步升级的情况下,每两年翻一番。
来源:Medium
然而,即使性能可以随着硬件的进步而提升,高效的节点通信对于防止网络带宽成为瓶颈、避免网络延迟至关重要。这对于防止任何形式的网络延迟都是至关重要的,即便有了硬件的进步。
目前Solana验证器客户端存在一些限制,这些限制可能会影响其性能和可扩展性,以及由于多样性不足而导致的网络可靠性问题。这些限制大多是基于软件的,而不是硬件级别的限制所致。Kevin J Bowers是Jump高性能系统研究员,负责推动Firedancer项目,他以一句夸张的话闻名:“光速都太慢了”。凭借数十年开发高性能全球交易系统的经验,Jump希望通过构建一个独立的验证器客户端Firedancer来提高Solana的可靠性。
来源:Solana
Firedancer不是仅仅通过回顾过去而设计的短期解决方案。它旨在推动计算能力的极限,提供规模和可靠性,在物理和理论的边界上运行。
迈向 Solana 2.0
在传统开发中,操作通常是从数据空间的角度来看,而不是物理空间。这种观点不可避免地受到物理限制的约束,比如光速,导致硬件利用率低下和系统运行缓慢。
来源:Revelo Intel
由于传统开发实践经常忽略物理限制,这导致硬件利用率不佳。换句话说,系统的可扩展性不是受到硬件的限制,而是由于软件效率低下。有一句著名的话是这么说的:“更快的硬件是对慢软件的糟糕初级解决方案”。
Jump Trading直面这些挑战,从传统的交易系统演变为高度定制化的技术堆栈。这一转变解决了全球规模交易的独特挑战,其中与交易所的物理接近性、异质市场需求和严格的运营标准至关重要。
与传统的超级计算机不同,Jump的系统必须迅速、透明地容错,并且能够逐步升级。它们需要在一个多样化、竞争激烈且受到严格监管的环境中运行,且有严格的数据保留和问责标准。仅仅增加更多硬件到Solana是不够的。相反,软件的优化是关键,Firedancer推动它更接近实现这些目标。
作为参考,一个运行Firedancer的单一验证器在2022年11月的现场演示中处理了120万TPS,尽管大多数估计指出600k TPS是一个更现实的数字。这个数字是Solana当前理论限制的50k TPS的多倍,远超领先服务提供商如Visa通常处理的交易量(约1.5k - 2k TPS)。
来源:Twitter
Firedancer 在 Solana 的验证器客户端架构和功能上引入了一种范式转变。这不仅仅是构建一个验证器客户端;它是在打造一个高度可靠且以性能为导向的客户端,从而增强已经迅速且高效的 Solana 区块链。
来源: Frictionless Capital
随着Firedancer的推出,Jump正在引领被许多人称为Solana 2.0的新阶段。通过利用多年在高频交易环境中的经验,将这个即将推出的独立验证者客户端加入到Solana的工具箱中,将有助于使网络更加可靠、高效和强大。
来源:Revelo Intel
Solana因其卓越的速度和最近对系统停机问题的解决方案而脱颖而出。然而,它还有进一步提升的潜力。Firedancer旨在成为跨区块链中表现最佳的验证器客户端,通过增加Solana的客户端多样性,解决当前对少数几个客户端过度依赖的问题。
来源: Github
搭建舞台
在Solana中,验证者参与Solana的权益证明共识机制,以验证交易并提议将新区块添加到链上。
来源:Revelo Intel
这样,Solana($SOL)代币持有者可以通过将他们的$SOL代币锁定在验证节点中,参与共识并获得质押奖励。
来源:Revelo Intel
权益证明(PoS)提供了正面和负面的激励机制。参与者需要有一笔财务抵押作为安全保证金。如果验证者违反规则,他们的部分抵押将被作为处罚“削减”。否则,他们将通过质押奖励获得补偿。
为了完成工作并与网络中的其他节点连接,验证者需要使用验证客户端,这些应用程序使他们能够参与共识。这是一种软件,允许验证和确认交易以确保它们遵守网络规则。
不同的验证器客户端可以包含不同的代码,但它们都必须实现相同的逻辑。这一点非常重要,因为如果某个客户端出现了错误或故障,运行其他客户端的节点将能够保持网络在线,并防止网络出现停机时间。
来源:Revelo Intel
增加客户端的多样性意味着在验证器客户端代码中存在可能的错误或漏洞时,有更多的韧性和保护措施。例如,在2016年,攻击者发现了以太坊geth客户端的一个错误,并开始对网络进行一系列的DDoS(分布式拒绝服务)攻击。为了防范此类攻击,解决方案是节点操作者迅速切换到另一个客户端,以保持网络在修补漏洞期间仍能运行。
Solana验证器客户端的当前状态
Solana目前有大约1,649个验证器,拥有节点数量最多的PoS网络之一,同时根据中本聪系数来衡量,也是分布最广的网络之一。目前Solana的验证器客户端包括Solana实验室客户端和Jito实验室客户端,分别持有68%和32%的活跃权益。尽管Jito实验室客户端在2023年期间的增长在网络多样化方面发挥了关键作用,但仍有待进一步努力。
Jito客户端是Solana Labs客户端的一个分支,不同之处在于它引入了一个伪内存池(因为Solana没有内存池),以优化MEV。这使得验证者能够搜索内存池中未确认或待处理的交易,将它们最优化地捆绑在一起,然后提交给Jito区块引擎。
来源:Revelo Intel
然而,这是一个分支的事实意味着两个客户端共享了许多在原始代码库中开发的组件。因此,如果原始的Solana Labs客户端中存在任何未发现的漏洞或错误,这两个客户端都会受到影响。
展望未来,除了现有的两个客户端(Solana Labs和Jito)以及Firedancer,还有两个独立的团队正在开发新的客户端。这使得总共有5个验证器,其中三个使用Rust(Solana Labs、Jito和由Anza开发的Agave),一个使用C(Firedancer),一个使用Zig(由Syndica开发的Sig)。
为什么需要另一个验证器客户端?
对于Solana来说,拥有像Firedancer这样的另一个验证器客户端非常重要,因为它增强了网络的韧性和性能。多样化的验证器客户端降低了系统故障的风险,因为不同的客户端可能对相同的网络问题有不同的反应。
来源:Solana
软件验证客户端的多样性确保了一个客户端中的单一错误或漏洞不会危及整个网络。此外,像Firedancer这样的专业客户端可以针对Solana的独特需求带来性能提升,进一步增强网络的效率和可靠性。
来源:Revelo Intel
当网络上有多个不同的客户端运行时,它们不太可能共享相同的漏洞。如果一个客户端因为特定的错误或攻击而失败,其他具有不同架构的客户端可能不会受到影响,从而确保了网络的连续性和稳定性。
来源:Revelo Intel
另一个问题是,目前的客户端(Solana Labs 和 Jito)作为单一进程运行,这使得一旦代码在生产环境中运行,就很难进行更改。例如,运行这些客户端的验证器在需要实施即时安全升级时,被迫关闭。所有分布式系统——无论是中心化支付处理器、数据库还是区块链——都有一个共同点。一个单一的实现错误可能会导致整个系统崩溃。
此外,再多的测试也无法预防所有可能的错误。这就是为什么在生产环境中支持多个客户端非常重要,特别是对于一个旨在实现零停机时间并在极限情况下保持抗脆弱性的区块链。
理想情况下,可以有4个由独立团队开发、使用不同编程语言的客户端,每个客户端控制25%的活跃股份。这样,没有任何单一实现会控制超过33%的活跃股份,有助于防止单点故障。
来源:Revelo Intel
除了提升性能外,Jump还在为Solana构建一个新的验证器客户端,以提高网络的可靠性。例如,Solana过去已经发生了四次因软件模块中的问题影响共识而导致区块生产停滞的事件。这些问题通常通过在Discord上协调验证器并需要手动修复来解决。
一旦Firedancer投入生产,就会更容易在所有其他客户端中应用相同的优化。例如,Jito正在开发JitoDancer,它将实施必要的优化,以便与Firedancer协同工作。
Firedancer
Firedancer是用C语言重写的Solana当前验证器客户端,确保不会从原始代码库中带入任何错误。
它由Jump从零开始开发。通过利用他们在高频交易中的专长,Jump是构建如此高性能、低延迟和容错的系统的最有能力的团队之一。
来源:Revelo Intel
代码是开源的,这使得任何人都可以审核并了解正在开发的优化措施。Kevin Bowers目前正在领导一个在高性能环境中不断突破技术极限的团队。他们在优化数据编排、定制技术栈以及全球系统扩展方面的专长是无与伦比的。
就像Jump一样,Solana需要一个强大、灵活且高效的基础设施来支持其不断增长的生态系统。引入Firedancer,这一独立的第二验证器,是朝着这一目标迈出的一步。Firedancer旨在实现全球可扩展性,可逐步演进,具有容错能力,并面向广泛社区开放。它的开发是公开的,邀请Solana社区的合作与反馈。
来源:Revelo Intel
除此之外,客户端仍与Solana Labs和Jito Labs的客户端兼容,尽管它们是用Rust编写的。Firedancer客户端还将与Solana验证器使用的现有硬件兼容,不强迫他们升级到新机器。有了Firedancer,Solana将随着带宽和硬件一起扩展。
Firedancer的愿景很简单:每个组件都必须为最大性能而优化,以便客户端的运行能力仅受验证器硬件的限制。与当前状态形成对比,当前状态下验证器的性能受到软件效率低下的限制。
Firedancer技术栈
Firedancer是通过用C语言从头重写Solana Labs客户端的三个主要功能组件而构建的,优化每个单独部分,以将客户端推向其硬件极限。
来源:Revelo Intel
本质上,Firedancer不仅仅是一个验证器;它是Jump坚信突破界限和在技术与金融交汇处创新能力的证明——旨在优化交易吞吐量并降低成本。
来源:Revelo Intel
通过优化这些关键组件,Firedancer确保Solana的扩展主要受到客户端硬件的限制,而不是软件本身。这与Anatoly多年前提出的Solana的原始愿景相符:设计一种节点间高效通信的方式,从而使带宽不再成为瓶颈。
在高性能计算的世界中,最终必须优化一切。这种方法与摩尔定律相符,摩尔定律指出微芯片上的晶体管数量大约每两年翻倍,这导致计算能力增强,每个晶体管的成本降低。
Firedancer的扩展性与微芯片中晶体管的数量密切相关,因为更多的晶体管意味着芯片表面的物理空间增加。因此,芯片设计师可以增加更多的核心,从而为Solana带来更高的数据吞吐量。这使得网络能够随着带宽和硬件的改进而扩展,同时保持足够的去中心化水平。
来源:Revelo Intel
在Solana的背景下,拥有更多的处理器核心意味着能够并行执行更多交易。这导致数据吞吐量显著提高,因为多个交易可以同时被处理,无需相互等待。
早期模拟显示,随着核心数量的增加,带宽几乎线性增长。换句话说,验证器硬件中核心数量翻倍,将导致该验证器在相同时间内接收到的交易数量几乎翻倍。
模块化架构
Firedancer 的模块化架构使其与现有客户端区别开来。这种模块化指的是其内部结构,旨在提高网络验证过程的效率和可靠性。这不应与更广泛的区块链架构辩论混为一谈,后者关注的是区块链网络本身的结构和运作方式。
后者涉及到区块链生态系统内部劳动分工的讨论,例如将共识、执行和数据可用性层分开,这一概念与Firedancer的设计原则或功能并无直接关联。
来源:Revelo Intel
Firedancer采用基于瓦片的架构,每个瓦片都是一个独立的Linux C进程,拥有一些内存。相比之下,当前的Rust客户端作为单一进程运行。
在这个上下文中,进程指的是运行中程序的实例。例如,现代操作系统通过分配内存和资源给不同的进程来工作,每个进程处理特定的任务。
来源:Revelo Intel
瓦片作为独立的进程,相较于单一进程系统具有多个优势。它们通过在不同的工作区管理验证器状态来隔离故障,确保一个瓦片的问题不会影响整个系统。
这种隔离还简化了维护和升级过程,因为可以单独修改或更换各个瓦片,而无需停止整个系统。例如,在重启或升级期间,每个瓦片可以从中断的地方继续处理。
此外,瓦片还能更好地利用资源,因为每个瓦片可以在单独的CPU核心上运行,避免资源竞争并优化性能。这些因素使得瓦片比单进程方法更加健壮、灵活和高效。
早期测试显示,与Solana Labs客户端相比,性能提升了10-100倍,在测试中每个GPU核心的处理速度超过了100万次交易。
来源:Revelo Intel
安全模型
C语言相对于Rust的一个折衷之处在于,C语言没有Rust天生提供的内存安全保障。为了防范这些情况,Jump采用了一种称为“操作系统沙盒化”的做法,基本上是指将不同的进程(瓦片)与操作系统隔离。
遵循最小权限原则,瓦片只能访问系统资源并执行它们严格需要执行其工作的系统调用。实际上,C语言内存安全领域的深入研究促使团队采取对抗性思维,并尽可能地减小攻击面。如果瓦片没有被隔离,一次攻击可能会在它们成功利用这一漏洞影响多个验证器时,对整个网络造成损害。
这种做法承认没有所谓的“完美代码”,并且不可避免地会引入某些漏洞或安全漏洞。然而,为了防范这些情况,Jump采用了深层防御策略,这样即使攻击者设法破坏了一段代码,其影响范围也将受到限制,且不会影响到其他技术栈的部分。
前方的道路
毫无疑问,Firedancer投入生产是Solana的一个重大里程碑,许多人将其称为Solana 2.0。尽管如此,从安全角度来看,未来仍然面临挑战。
尽管Firedancer带来了诸多好处,但它仍需密切复制现有客户端的行为。否则,由于不兼容,可能会引入共识错误。
解决这些问题的一个方法是让一定比例的股份在两个客户端上运行,目标是在较长时间内将Firedancer的总股份保持在33%以下。
最重要的是要考虑到代码库不能孤立开发。这就是为什么Jump继续根据现有Labs客户端的功能来评估性能的原因。
Jump目前面临的另一个挑战是缺乏规范和标准化文档。从积极方面来看,这种情况将会改变。
新的实现需要在追赶开发速度的同时格外小心,以免引入新的错误。因此,Jump已将改进Solana文档作为其优先事项之一。
一旦Jump提供了定义Solana协议的实际规范文件,任何人只需查阅文档,而不是验证器代码,就应该能够创建一个Solana验证器。
这不仅有助于Firedancer随时间保持兼容,而且这份全面的文档还将对其他独立团队构建自己的客户端发挥关键作用。最终,即使网络能够利用Jump数十年的专业知识,Solana的终极目标也是成为一个由多样化的社区贡献者管理的开放标准。
结论
总之,即使Firedancer只是Solana的一个独立验证器客户端,它的引入也代表了网络的一个重要里程碑。
Firedancer旨在提高Solana的可靠性、性能和客户端多样性,解决当前对少数几个客户端的过度依赖问题。
这一举措与Solana的愿景相符,即设计一种高效的节点通信方式,随着硬件的改进而扩展,而不是受到软件低效的限制。
参考资料
Solana Whitepaper
Solana Validators
Solana Labs client
Jito Labs client
Firedancer client
Tinydancer – Solana’s first light client
Jump vs the speed of light
Helius: What is Firedancer?
Firedancer Docs
披露
我们与 Solana 或 Jump Crypto 从未有过商业往来,本报告也未受到任何形式的资助或委托。
我们团队的成员,包括直接参与上述分析的人员,可能持有所讨论代币的头寸。
本内容仅供教育目的使用,并不构成财务或投资建议。您应进行自己的研究,并且只投资您能承受的损失。我们是一个研究平台,不是投资或财务顾问。
本文信息来源:revelointel