经过两轮牛市,Solana终于将在2021年闪亮登场。
Solana是一个高性能、高质量的公链,旨在提供一个快速、廉价、反审查的区块链网络,而不牺牲去中心化或安全性,从而满足快速增长的应用落地需求。
目前,碎片化、侧链等仍然是提高其性能的主流解决方案。
然而,Solana找到了一种新的方法,利用自己创新的新技术带来更有效的可扩展性解决方案。
Solana使用其工作历史证明poh、塔BFT、涡轮机(块传播协议)、海湾流(无内存事务转发协议)、海平面(并行智能合约)、管道(验证事务),云山(横向扩展账户数据库)和档案(分布式账本存储)等八项突破性技术构建了超高性能区块链。
本文将重点讨论三种技术:turbine(块传播协议)、gulfflow(无内存事务转发协议)和sea-level(并行智能合约)。
通过分析Solana的底层技术,我们可以更好地理解Solana是如何解决区块链可伸缩性的三大悖论以及对区块链网络造成严重影响的内存池问题的。
涡轮机:
块数据传输协议
区块链技术中可伸缩性的三个悖论与带宽有关。如今,在大多数区块链网络中,由于每个节点都有固定的带宽,增加节点数量将增加将所有数据传播到所有节点所需的时间。
这是每个人的问题。
然而,也有许多新的数据分发技术,每种技术都针对特定的应用进行了优化。例如,BitTorrent被优化为通过TCP向大量人群提供大文件,而mediaflo被优化为在物理层进行数据传输,以提高无线网络中多播的效率。
Solana的turbine,一个块传播协议,是如何解决区块链可伸缩性的三个悖论的?
高性能区块链的挑战之一是网络如何将大量数据传播给大量的对等方。例如,一个由20000名验证者组成的网络。***需要将128MB的数据块(大约500000个事务)传输给20000个验证器。为了实现传播,***需要与每个验证者建立一个唯一的连接,并将整个128MB数据传输20000次。
显然,没有足够的带宽来容纳这么多的连接。
turbine对这一问题的解决在很大程度上借鉴了BitTorrent的经验,但在主要技术细节上仍存在一些差异。
turbine协议通过将数据分成更小的数据包来帮助区块链节点之间的数据传输变得更容易。正因为如此,Solana可以解决带宽限制的问题,提高其整体容量,从而更快地完成事务。
Turbine对流传输进行了优化,采用UDP进行数据传输,实现了网络中每个数据包在leader(block producer)流数据时的随机路径。***将128MB的数据块分成不超过64KB的数据包,并将每个数据包发送给不同的验证器。
然后,每个验证器将数据包重新传输给一组称为“邻居”的对等方。每个邻居负责将部分数据传输给它下面的每个邻居。
如果***以擦除码的形式传输块中33%的数据包,则网络可以放弃任何33%的数据包而不丢失块。
领导甚至可以根据网络情况动态调整这个数字。这些决定是由***根据在前一个块中观察到的丢包率做出的。
并非所有的验证者都是平等的。最重要的核查者是那些承诺最多的人。
因此,相应的传播将被优先化。加权公平选择算法构造一棵树,使得保证值较高的验证者更接近邻域中的领先者。每个验证器独立地计算同一棵树。
尽管擦除代码可以修复故障,但树中的恶意节点可能会导致故障,尤其是与DOS(拒绝服务攻击)结合使用时。
Solana是如何应对这次日食攻击的?
扇出算法。
Solana的扇出算法使用基于数字签名的随机源为每个包生成一个公平加权树。由于每个包都有不同的路径,而且路径事先是未知的,所以邻居级的eclipse攻击需要对网络进行几乎完全的控制。
这种技术可以扩展到200到1000个节点。支持1 Gbps的网卡每秒可传输100万个数据包。如果网络连接允许,单个验证器可以在一秒钟内向1000台机器发送高达64KB的数据包。
墨西哥湾流:
无内存事务转发协议
MemPool是一组已提交但网络尚未处理的事务。
就比特币和以太坊而言,内存池的大小通常是通过未确认的事务数来衡量的,具体取决于块空间的供求关系。即使在区块链早期,当内存池增加时,也会对整个网络造成严重的瓶颈影响。
那么,Solana是如何不断进步的呢?
在不增加网络吞吐量的情况下,Solana验证器可以管理100000个事务的内存池大小。这意味着,当网络吞吐量为50000 TPS时,100000个事务的内存池可以在几秒钟内执行。这就是Solana成为世界上最强大的未授权区块链的原因。
Solana网络解决这一问题的方法是将事务缓存和转发推到网络的边缘,称为gulfstream。
由于每个验证者都知道未来***的顺序,因此客户机和验证者提前将事务转发给预期***。这使得验证器能够提前执行事务,减少确认时间,更快地切换前导,减少未确认事务池对验证器的内存压力,使Solana每秒可以处理50000个事务。这种解决方案在***不确定的区块链网络中是不可能的。
它是如何工作的?
客户端(如钱包)对引用特定块哈希的事务进行签名。客户端选择一个最近的块散列,该散列已经被网络完全确认。大约每800毫秒提出一个块,每个额外的块需要多次扩展。使用默认超时曲线,在最坏的情况下,完全确认的块哈希是32个块。
一旦事务被转发给任何验证者,验证者就会将它转发给未来的***之一。客户端可以订阅验证者的交易确认信息。客户机知道块散列已在限定时间内过期,或者该事务已被网络确认。这允许客户机签署保证执行或失败的事务。
一旦网络通过回滚点,事务引用的块散列将过期,客户可以保证事务现在无效,并且永远不会在链上执行。
到目前为止,很明显,区块链网络的功能只有在其内存池最小的情况下才能发挥作用。
当交易吞吐量有限的网络试图改造新的扩展技术来解决内存池不断增加的问题时,Solana通过优化湾流等设计从一开始就解决了第一代区块链网络的问题,实现了巨大的交易吞吐量。
海平面:
智能合约操作的并行引擎
以太坊的EVM和EOS基于wa的运行时都是单线程的。这意味着每次都有一个智能合约来修改区块链的状态。
海平面是Solana建立的智能合约操作的并行引擎,可以并行处理数以万计的合约,并以验证器为核心。它可以使Solana的执行时间更加高效,并允许在同一状态区块链上同时执行交易。
Solana可以并行处理事务的原因是,当Solana中的事务被执行时,所有状态都将被读取或写入。这不仅允许并发执行不重叠的事务,而且允许仅读取相同状态的事务并发执行。
Solana的账户数据库cloudbreak是账户映射的公钥。所有者是管理帐户状态转换的程序的公钥。程序是代码,无状态的。它们依赖于分配给它们的帐户中的数据向量进行状态转换。
默认情况下,所有帐户最初由系统程序所有。用户定义的程序由加载程序加载。加载器程序可以将帐户中的数据标记为可执行。
此时,加载程序验证字节码,字节码加载到的帐户可以用作可执行程序。新帐户可以标记为由用户定义的程序拥有。
这里的关键是程序是代码。在键值存储中,有一些键的子集。只有这个程序有写权限。
事务指定一个指令向量。每个指令都包含程序、程序指令和事务要读写的帐户列表。
像readv或writeev这样的接口预先告诉内核用户他们想读或写什么内存。这允许操作系统在设备允许的同时预取、准备设备和执行操作。
在Solana上,每条指令都提前告诉虚拟机要读写哪些帐户。
SIMD指令允许在多个数据流上执行一段代码。这意味着sealevel可以执行额外的优化,这是Solana设计所独有的。
表演方面没有免费的午餐。为了使SIMD优化可行,执行的指令应该包含少量的分支,并且它们都应该采用相同的分支。
通过对海平面的并行处理,与单线程运行时相比,Solana具有较高的吞吐量和可用性。
后记
由此可见,Solana在技术创新等方面独树一帜,开辟了属于第1层的独特道路。未来,Solana将继续为应用层的大规模应用开发和提供高性能、低成本的去中心化解决方案。
预计在Solana大规模开发DeFi生态。
文章标题:了解索拉纳:涡轮机,海湾洋流和海平面
文章链接:https://www.btchangqing.cn/289322.html
更新时间:2021年06月24日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。