除了分片、侧链、减少节点,Solana公链正在尝试一种新的提速方案

in #cn4 years ago

❖写在前面❖

公链的性能一直是被我们所诟病的。

目前,分片、侧链、减少节点是提高公链性能的方案。然而,solana提出了一种新的解决方案,这种解决方案是现在的区块链中从来不曾存在的,是solana首创的公链提速方案。

不谈币,单说Solana的技术创新,这是一个公链提速的新方案。


❖What:Solana是什么❖

➤高性能

Solana是一条高性能、POS共识的开源公链,通过使用历史证明序列,使其实现了公链提速。除此以外,在Solana公链上,数据的传输和存储,都具有一定的创新。

当然,Solana也是该项目开发团队的公司名称,相当于EOS公链的开发公司Blockone,都是合法注册的公司制机构。

➤筹资与上所

Solana非常重视技术和性能,目前测试网络顺利运行中,但是Solana暂时还没有上线任何交易所,也没有登陆coinmarketcap。

这不是因为Solana没有钱,Solana在2019年7月,就在Multicoin Capital领导的A轮融资中筹集了2000万美元,参与方包括Distributed Global,Blocktower Capital,Foundation Capital,Blockchange VC,Slow Ventures,NEO Global Capital,Passport Capital和Rockaway风险投资。

在2019年9月初,根据 Trust Wallet Core Github 代码库显示,币安官方钱包 Trust Wallet 正在开发支持高性能公链 Solana 的存储、转账和质押等基础功能。Solana上线币安,相信币安应该不会抵触。

➤专注技术

TVB找到了github上Solana的代码提交情况:

solana
solana

可以看到Solana不仅有高频的代码更新,并且有多个开发者在提交代码。Solana紧锣密鼓地在搞开发,却不急着上交易所,这比很多项目好太多。


❖HOW:如何提速❖

那么这个Solana是如何实现高性能的呢?

➤历史证明序列

历史证明序列,是Solana公链最关键的创新点,也是Solana公链实现高性能的原因。

什么是历史证明呢?来看这张图:

历史证明

这是一张刊登在2014 年 10 月 14 日纽约时报上的照片。有趣的是,照片上的奥巴马手中拿着一张2014年10月12日的报纸。

毫无疑问,照片中的场景发生在2014年10月12日报纸发行以后,在2014 年 10 月 14 日报纸排版之前。

这就是一个历史证明。这个报纸上保存了它的时间,以及上一个时间。

上图的这张报纸就相当于Solana的一个区块,它保存着这份报纸的内容和时间,同时也保存了上一份报纸的内容和时间,这样可以充分的证明这两份报纸上事件的历史顺序。所以叫历史证明。

历史证明序列,与其他区块链有什么不同呢?下图是其他区块链的区块结构的简化图:

区块链

每一个区块的数据,会经过哈希加密,生成一个哈希值,而这个哈希值会保存在下一个区块中,这样区块之间彼此相互衔接形成区块链。比特币也好、以太坊好也好,其他的区块链大体上都是这样的结构。

问题来了,如果一个区块没有完成,比如出块以后,验证节点没有完成确认,那么这个区块中的信息就是待确认交易,未成的区块就不能生成哈希,下一个区块就也就不能继续下去。问题是用户不等你,人家该转账就转账,该玩游戏就玩游戏,该交易就交易……于是后面的交易就卡在这里了。

而Solana呢,在它的区块结构中,不仅有上一个区块的哈希值,同时还有上一个区块的时间戳。这样的话,每一个区块都会有它自己的时间,以及上一个区块的时间,这样就可以明确区块的历史顺序,就像前面的那张报纸一样:

历史证明序列

历史证明序列的优势主要有两个表现,一是支持区块的并列处理,二是防止内存池的拥堵。

1.并行处理

分片,是通过把全网分成几个片,这样在运行时,由于每个分片中的节点变少了,所以通讯时压力较小,这样发生这种拥挤的可能性和拥挤的程度就会变小,但还是会拥挤。

侧链,是通过跨链,把主链上的一些事务转移到侧链上去运行。比如某一种币的交易可以移到侧链上去。如果随便就搞侧链,搞太多了,和主链的关系会变得薄弱,主链的意义就不大了。比如每个币都搞个侧链去运行,那和重新做个链就也差不多了。

减少节点,就是DPOS这种解决方案,由于节点数据较少,性能确实提高了,但是形成了一定程度的中心化,无论是在记账还是代币分配上,都会有中心化的问题,这就给公链的治理带来了极大的挑战,EOS就是这种困局。

而Solana就像值班一样,节点轮流把信息打包写成区块,无需等待上一个区块完成。这样可以保证区块链序时地、顺利地进行。

各个区块的验证也可以并行,验证者可以分别去验证各个区块的信息。

2.内存灵活

出块待确认的交易位于内存池中,而交易太多会拥挤在内存池中。而在Solana中,如果某一个区块出现拥挤,交易可以进入下个区块中,相当于内存流动到一个新的内存池中,由下一个区块的领导者将其打包,也就不再有内存池拥挤这样发生了。

➤POS+Tower BFT共识

在Solana的POS+Tower BFT共识中,由领导者负责记账,也就是将信息打包成区块;验证者负责对区块信息进行验证和确认。

当然,成为领导者或验证器,都需要抵押Solana的代币,这是POS共识的规则。POS共识,只有抵押代币,才可以参与记账和验证,包括攻击者在内。不同于POW,POS共识中,攻击者必须要抵押大量代币才可以进行攻击,攻击成本过高,因此POS相对于POW具有更高的安全性。不同于DPOS等共识,POS共识由大量节点参与,因此具有高度的去中心化。

领导者在记账时按照历史证明序列来工作。Solana将每一个工作纪元划分为若干时隙,再将验证者随机排序,然后将时隙分给验证者。相当于给验证者排好了值班表。由于使用历史证明序列,区块之间的前后顺序由时间戳来标识,每个区块不需要等待上一个区块的完成就可以产生,因此具有更高的工作速度。

验证者在验证时,按照BFT共识算法。BFT是一种容错算法,他允许验证器在验证时出现失误,但是失误率不可以超过1/3,只要超过2/3的验证验证通过,就可以接受这个被大多数验证器确认的区块。不可能同时存在2个区块同时获得2/3的支持,因此不会产生分叉。


❖WHO:核心团队❖

Solana团队核心成员如下:

CEO毕业于伊利诺伊大学香槟分校,曾经是小型企业的VoIP系统开发公司的创始人和工开发人员,曾经担任高通公司的高级工程师等。他曾经从事Mesosphere的分布式系统以及Dropbox的压缩,拥有2项高性能操作系统协议的专利,是BREW的核心内核开发人员,为每台CDMA翻盖手机(100m +设备)提供动力。

CTO先后毕业于伊利诺伊大学香槟分校、加州大学圣地亚哥分校,曾经为小企业开发了一种基于Linux的IP-PBX电话系统。该产品被授予Linux Journal的每日产品。他曾是高通公司首席科学家,他为BREW操作系统在C和Lua之间创建了双向RPC桥,帮助启动了LLVM编译器工具链的ARM后端,并发布了各种开源项目,包括Haskell中的流LLVM优化器,Python中的许可证分析工具以及TypeScript中的反应式Web框架。

COO毕业于宾夕法尼亚大学-沃顿商学院,曾经是一家数字健康公司的创始CEO,该公司制造专注于化学监测的可穿戴健康监测设备。为基于SF的健康技术孵化器Rock Health的多家数字健康公司提供法律服务、公司战术和营销策略。

Solana的团队以开发人员为主,团队成员包括操作系统开发、框架师、嵌入式开发、大数据开发等多个领域。就连Solana的CEO是技术出身。


❖WHY:一个疑问❖

事实上,在9月份,TVB曾经学习和研究过Solana。当时,心中产生过一个疑问。

Solana的历史证明序列工作原理是这样的:

假如第n个区块已经完成,而第n+1个区块在时隙内未完成,第n+2个区块可以继续工作,它可能会衔接着第n个区块,将第n个区块的时间戳和哈希值写入第n+2个区块中。

然后,当第n+1个区块确认完成以后,再插入到时间序列中。第n+1个区块将第n个区块的时间戳和哈希值写入第n+1个区块,然后再将第n+1个区块的哈希值和时间戳传递给第n+2个区块链,第n+2个区块再重新加密生成哈希值。

然后再将第n+2个区块重新加密重成哈希值传给第n+3个区块……以此类推。

那么问题来了:

这样每次一个区块出来延时,都需要对它后面的区块重新计算希值,这样的运算量很可能导致区块链的效果下降。

Solana的方案:

Solana根据计算机的运行,设计了一个交易处理单位 Transactional Proccessing Unit(TPU)。TPU的运行空间如下:

solana

在TPU中,事物被划分成4个阶段,每个阶段由不同的硬件负责处理:

数据获取:内核空间

签名验证:CPU

存款:GPU

数据写入:内核空间

由于这四个阶段是连续的,必须要获取数据以后才可以验证签名,验证签名以后才可以存款,存款以后才可以写入数据。所以,上一个验证的数据写入和下一个验证的数据获取可以同时进行,不发生冲突,这样可以提高速度处理的效率。

没有TPU之间的验证时间是这样的:

solana

而有了TPU之后的验证时间是这样的:

solana

显然,TPU分段设计让验证器的硬件得到更充分的使用,时间安排更合理,验证的速度加快。并且,Solana的TPU设计,将工作量最大的签名验证工作交由GPU处理,而目前市面上的计算机GPU性能高于CPU的处理,这使得Solana的验证速度进一步提高。

Solana的CEO表示:“这一切都可以用不到5000美元的现成计算机来实现,而不需要一些超级计算机。”这意味着Solana公链的运行是低成本的。

Solana验证器的TPU工作设计,可以大大提高Solana的块信息验证速度。在一定程度上,要可以减少块延迟的现象,提高Solana的速度。

但是,TPU的设计能否完美的解决出块延迟问题,还需要进一步观察Solana的实际运行情况。


❖写在最后❖

Solana 首席执行官 Anatoly Yakovenko表示,分片技术(Sharding)存在安全风险,更容易受到共识攻击,实施分片的风险远远大于潜在的可扩展性优势。Yakovenko 补充称,网络一旦被拆分,就会引入一个额外的攻击媒介。他同时表示,如果网络中一个分片被黑客接管,可能会引起多米诺骨牌效应,从而影响代币价格并导致大量用户和节点外流,允许黑客利用分散策略破坏全网生态系统。

TVB觉得,分片技术是对公链在物理上的分割,而Solana的历史证明序列是对公链在时间上进行分割,鹿死谁手尚未可知。

但可以肯定的是,Solana在共识算法、验证器设计、物理存储等方面,都与以往的公链不同,如果Solana一旦成功,将给公链技术带来新的思路。