去中心化、安全和可拓展性无法同时满足,被称为区块链的不可能三角。这一结论难以通过数学证明的方式验证,也一直被众多项目质疑和挑战。开发者们提出了分片、DAG、状态通道、侧链/跨链等多种Layer 1和Layer 2的扩容方案。分片技术在不降低去中心化程度的情况下提升了可拓展性,具有良好的应用前景。
近期多个公链项目如Ontology 等宣布了自己分片技术方案,一些知名分片公链如QuarkChain 等宣布将于近期主网上线,引发市场对于分片技术的关注。TokenInsight邀请了QuarkChain、MultiVAC、Alephium、Ontology、Top Network 等采用分片技术的公链项目一起讨论分片技术的现状与未来。
火星财经:传统世界我们用的很多互联网服务都是基于分片技术的,您觉得区块链系统的分片技术与传统的中心化服务器采用的分片技术有哪些不同呢?
QuarkChain CEO 周期:感谢陆老师的问题,我以前在谷歌、Facebook专门做分布式系统,用到各种分片技术。所以对分片技术,尤其在中心化的系统里面与区块链的分片技术的区别还是深有体会的。那么我觉得主要三个方面,第一方面是代币经济学和去中心化。第二方面是安全,第三个就是其他的硬件方面和网络的假设。
首先说一下去中心化的代币经济学。区块链里面有一个非常伟大的发明,就是引入了这个代币经济学的机制。那么,通过引入代币经济学,使得大家在没有信任,以及每一个个体都是为了自己最大利益的情况下,能达到一个共同繁荣的局面。包括安全性的获得,还有账本的交易能够顺利执行。
在这一方面与传统的中心化系统是有非常大的区别的,因为所有的节点都是基于制信的节点,它们之间的互相的通信,还有它们之间的整个配置部署,都是以中心化、互相制信的方式来实现的。那么这样的话,在区块链系统中的分片技术,相比于中心化系统的分片技术,尤其是代币经济学里的设计,会有非常大的不同。
举个例子来说,在分片设计里面一个很重要的设计叫做跨片设计。在中心化服务器里的跨片设计,很多时候可以通过中心化的锁服务、Messaging、Passing、Message Que的方式来实现。但是在区块链系统里面,第一个,我们这种跨片交易怎么能够通过比如代币经济学的方式,能够保证这些跨片交易的安全性、原子性等各方面。所以在这方面,整体的设计和实现的思路会跟中心化的服务器使用的分片技术有很大的区别。
那么第二就是安全假设,现在的区块链系统都是指公链系统,所有人都能够去访问,并且有可能会遭受攻击的。而传统中心化服务器的分片技术,大部分情况下,用户是不能直接去访问运行这些分片技术的服务器的。而且经常是有好几层的防火墙,还有各种各样的安全配置,然后去访问这个运行分片技术的服务器。所以对安全的要求,那么区块链尤其是公链系统的分片技术的安全要求,会远远高于使用传统中心化服务器分片技术的安全要求。
第三个,就是对其他的一些硬件环境还有网络环境假设。像中心化的服务器,基本上所有运行的分片的技术节点,都是运行在中心化控制数据中心里面。那么它们可以通过Quality of Service 方式,去让整个网络会小延时、高吞吐的方式进行通信。这种条件下,他们可以把这个整个网络建构成为一个趋向于同步的网络系统。
但是区块链系统是基于整个互联网的大网络系统。那么在这里面我们可以预料到会遇到很多网络问题,比如断网、被(D)DOS攻击。断网其实是对网络的同步和异步的假设,互联网本身是可以认为是一个大的异步的网络系统。
从这几个维度来说,区块链系统对分片技术的要求会比中心化系统的更高,因为它会遇到更严峻的安全假设以及更差的网络环境。所以在区块链系统设计的分片技术,会要比传统的中心化服务器采用的分片技术难很多。
链闻:MultiVAC的分片方案怎么保证安全性和去中心化?实现了交易分片,存储和传输是否成为瓶颈?
MultiVAC CTO 应翔:这是一个关键性的问题。我先说安全性,分片的技术方案关键挑战在于单个分片的安全性是否会比全网更弱,这是核心问题。那么它的关键就在于我们能否去动态调整分片,或者调整矿工,或者调整分片的从属关系。通俗解释一下,就是假如说我的交易总在这个分片上,然后服务于这个分配的人也永远是那几个矿工,那么这个分片一定是脆弱的,久而久之我就可以跟这些矿工去串通了。毕竟分片内的矿工数还是少,我勾结他们比勾结全网矿工要容易的多。
那么MultiVAC的方案就是使用了VRF(TokenInsight 注:Verifiable Random Function,可验证随机函数)动态重分片的方案,具体就是两个点,第一,随机分配;第二,动态调整。随机分配比较好理解,就是并不是你想去当哪个分片的矿工你就可以去,你必须使用VRF的方式去用数学的办法来随机地选择。所以你没法跟别人说,我们十个人一起去某个分片。那么第二个,就是MultiVAC的一个首创,也是非常关键的一点,就是动态调整。就是我服务于这个分片的矿工,并不永远是这波人,我可能几分钟到十几分钟就换人。那么这个就保证了,哪怕你想串通都来不及。这是一个很关键的点,那么我们是怎么做到让矿工可以轻易在几个分片之间来回切换的呢。
矿工可以在几个分片之间来回切换,是我们动态调整的一个关键点。我们的解决方案是一个成体系的、同时也解决去中心化的这个问题。
我们说一下去中心化,我认为如果要真正做到去中心化,第一,我们要少用PoW,因为现在的PoW基本上都是矿池来把控了,普通人很少能自己弄矿机在家挖矿的。而且现在社会都是吃过猪肉的人多,见过猪跑的人反而少了,我想在座的各位大多可能都是用过币,或者买过币,但真正挖挖出来过比特币的人,我估计很少很少。
第二,我们一定要降低矿工的准入门槛,把权力下放。现在很多的技术方案,一遇到瓶颈、困难,他就设置一个超级节点去处理问题,或者设置一个上层的根链、上层的委员会,或者上层的这种信标链去解决问题。但是我认为区块链的未来应该是争取权力分散,而不是权力集中。
MultiVAC的有一个很大的创新,我们设计了一个基于Merkle Tree的交互式控制数据库,我们把数据的控制权和存储分离,也就是说,在我们的系统有存储节点和矿工两种角色,怎么旷工呢,他拥有完整的控制权,但他却不需要全账本,他只要有很轻量级的数据啊,几百个字节都不到1KB的数据,它就可以出块,可以投票,可以验证交易,可以更新账本。
存储节点,就跟电信、联通或者美国的AT&T这样的运营商一样,他们只提供最基础的基础设施服务,他不能对你的数据有任何的控制权,就象电信给你拉个宽带,你来决定宽带上跑的数据是什么,它控制不了。我们是在数学上保证了存储节点,无法对数据进行任何的增删改操作,而不仅仅是靠经济模型来制衡。
然后因为矿工不需要全账本,只要有很轻量级的数据。所以矿工在各个分片之间的切换也就变得非常的方便,就几百个字节的事情。所以你可以来去如风,这会儿在这个分片当矿工,下一刻就去了另外一个分片当矿工。也就是像我们刚才说的这个动态重分片的功能,同时也保证了分片的安全性。
因为MultiVAC的矿工门槛很低,低到什么程度呢,目前来看是拥有一个双核的CPU、4GB的内存,你就可以成为矿工了。现在我们还在进一步优化我们的代码,甚至未来你有1GB的内存,就足够作为一个矿工,那么,到时候你开着电脑挖矿都不会影响你正常办公。那这样的门槛意味着任何一个人都可以成为矿工,这样就可以吸引到很多人来加入我们这个网络。我们的MultiVAC的系统的控制权又完全是掌握在普通矿工手里,所以它是一个真正去中心化的一个分片技术。我们预计在第二季度(五月份左右)会放出我们的普通节点,即可以参与挖矿的客户端,到时候大家每个人都可以参与并加入我们。
存储和传输方面,MultiVAC是第一个提出计算、存储、传输全维度分片的技术方案,详细的技术细节在我们的黄皮书里面大家可以在我们官网上看到,我们的黄皮书是非常严谨的,具体技术细节我可能没有时间来充分的解释。但是我可以放一个结论。
这个结论就是,MultiVAC是真正做到每一个分片内的计算、存储、传输的业务量,都正比于本分片的TPS的业务量,他跟全网的总业务量无关。举个例子就是,如果全网有20个分片。每个分片500个TPS,那一共就是1万个TPS,但是在MultiVAC里面,每个分片处理的传输量跟500个TPS差不多;存储量,只有存储节点,它也是差不多500个TPS;它的计算量也是那么多。不需要去关心全网有多少的业务量,然后真正实现从水平扩展可以无限增加分片,然后我们的门槛很低,所以加入的矿工就很多;然后我们支持水平扩展,所以会有更多的矿工加入,就会有更多的分片,就会有更强的TPS性能,就会有更多的生态接在上面。
碳链价值:Alephium的分片技术有哪些创新,分片技术与DAG这两种链上扩容技术的结合将带来哪些优势呢?
Alephium CEO 王成:我们的分片技术跟现有的方法有很大不同,我们的分片分为两步,第一步是把账户地址分成G个组,第二步是交易分片,我们的交易是采用UTXO模型,我们根据交易的输入和输出属于哪个用户组,来把交易分成G*G个组。举个简单的例子来说明一下:假设我们将用户分成三个组A B C,那么就可以根据交易的输入和输出将交易分成九类(A到A,A到B等等),对于每类交易,我们单独建一条区块链来进行交易确认。
这种分片方法带来几个好处,我们说两个最重要的。首先是跨分片交易特别快,如果要从A转账给B,我们直接把这笔交易放到对应的链上即可,而现有的其他分片项目都需要采用类似于two-phase commit的方法。第二个好处就是可扩展性,账户组A不需要下载账户组B,C之间的交易,相当于把总帐本拆分成多个分片账本,每个账户组只需要处理相应的分片账本。
相比于单链,分片技术会给一致性和安全性带来挑战。我们通过引入DAG技术到我们的区块流算法里,通过精巧的数据结构来维护分片之间以及区块之间的依赖关系,这些关系形成一个DAG(有向无环图)。区块流算法能保证矿工不断的添加新的区块到DAG上,再通过finality算法产生共识。同时,由于这些依赖关系,分片的安全性能相互累加,攻击者攻击一个分片里的区块,必然需要攻击其他分片依赖此分片的区块,从而提高了分片的安全性。
我觉得DAG结合分片将会成为未来的趋势,这一点大家可以参考计算模型的进化过程。计算模型从序列计算到并发计算,再到分布式计算,分布式系统里单个节点里采用的是并发计算模型。类似的,区块链从单链发展到DAG,现在扩容如果结合分片和DAG,就非常类比计算模型的演化。从这个角度,我觉得我们走的是一条非常正确的技术路线。
链得得:Ontology于2018年发布了分片设计方案,请问您为何在众多扩容方案中选择了分片技术?分片技术对Ontology的价值是什么?未来分片方案如何与现有系统结合并落地?
Ontology (本体)资深架构专家 丛宏雷:谢谢常老师的问题,在去年六月份Ontology主网上线之后,我们就开始了2.0的研发,2.0的一个目标就是解决2B应用的需求,也就是让区块链在2B的方向能够落地。
当时,Layer 2的技术才刚开始,我们也研究了很多的Layer 2的技术,将Plasma等。然后我们发现要做真正好的安全的可扩展性很难。因为在Layer 2上是采用了法庭的假设,然后通过Challenge的方式,做重放进行状态证明。因为区块链是一个数字化的世界,和现实世界有比较大的区别,这样很难真正实现安全的可扩展。
因此我们发现是只有通过在Base layer的Sharding技术,才能实现区块链的安全可扩展。然后虽然大家认为这个分片技术很难,但是实际上要真正做安全可用的Layer 2,真正Practical(可实现的)技术,我们认为需要更多的密码学技术才能实现,这个好像是更难。但是分片,基本上源自这个十几年前的一个历史。
数据库技术经过十几年的发展,理论研究很成熟,所以在我们这个分片的设计上有了很足够的理论支撑,所以我们选择了Sharding的方式来做扩展。
第二个问题是,未来分片的方案,怎么和现有的系统相结合,这个实际上是在我们本体一开始设计的时候,本体的设计是一个可延续的设计,因为大家都了解区块链是一个自激励的系统,它的设计目标是就是保持去中心化的运行,这是区块链的系统和所有其他系统不同的地方,也是区块链系统设计的魅力所在,所以说在Ontology的设计最开始的时候,我们对系统的演化作了充分的考虑。
在Ontology里面,很多核心的功能都是采用系统智能合约的方式来实现的,我们的分片的设计,也是基于智能合约方式的分片。也就是对智能合约业务做分片,而不是做Token Transfer式的分片。所以说是我们新的分片的设计和实现,都主要是通过增加新的系统合约的方式来实现分片。包括这个分片的治理,分片的激励模型,这些都是通过系统合约来实现。另外就是分片中间最难的那个原子事务方面,我们也是通过系统合约的方式来实现。
因此,对于我们这个Ontology分片的升级,在我们开发、测试、审计都做完之后,根据需要直接通过系统活跃部署升级的方式,直接就可以无缝完成Ontology分片的升级。
Block :TOP Network采用了双层分片的机制,请问是基于什么样的考虑呢?Zone 和Shard 的划分标准是怎么样的?
TOP Network Co-founder&CTO Taylor Wei :谢谢David的问题。从TOP Network采用双层分片的机制,其实际的原因来自于我们不得不这么做。因为从分布式的计算机理论上来看,分片来解决吞吐量和性能的,那带来问题必然是有限的节点在执行局部传输和局部存储等职能。那对公司的安全,网络安全和数据可用性都将是极大的挑战,而传统用一层分片来解决这个问题,这一工程上和产品实现上,难度极大,不具有可操作性。
具体来说,TOP Network采用两层分片是考虑到五个因素:第一,两层分面的设计,一层进行交易共识,另外一层进行审计,相互制约和两层分立,即使下层全被攻陷了,还能保证系统的安全;第二,两层网络能相互保护,大大增强了网络层面的抗攻击能力;第三,数据可用性得到增强,我们说两层分片可以对数据逐层进行压缩备份,理论上,下面一层存在数据全部被破坏的可能性,这就需要另外一层能够保证异常情况下能cover回来;第四,Shard竞争load(分片内的交易处理压力)肯定是不平衡的,有非常繁忙的,非常闲的Shard,那地保证安全前提下需要能量值。最后,跨下的交易和流量。我们两层分片之后可以更有序地分流,传播效率大大增加。
为了解决这些问题,我们TOP Network是业界第一个采用基于点阵DAG实现全状态分片的公有链,必须结合两层点阵技术来阐述。那我们采用的DAG叫点阵DAG,不同于传统混沌结构的DAG,点阵DAG在数学上具有非常有序一致的,可以很好的保证了交易的确定性和有序性。带来三大好处:
第一,大大增强分片共识的安全性,因为点阵DAG本质上可以理解为每个账号都有条迷你链,这个账号的交易在迷你链进行共识。然后Shard这一级对账号进行打包共识,Shard block。这相当于两层共识相互保驾护航。
第二,点阵DAG在数学上具有非常有序一致,所以非常适合状态分片,可以用来管理整个链的数据,对交易和状态分配的划分是非常确定有序的,每个Shard相当于一批点阵构建的空间。
第三,Cross-Shard的交易系统非常清晰直观,支撑好了跨下的数据同步,才能支撑起各个节点的Shard不断轮换,允许节点快速进入和离开,才能对分片的安全性有很大帮助。
据前面点阵DAG的应用,在这个基础上面,我们开发了两层分片,具体来说,这两层分片是由Zone和Shard两层组成的,Shard这一层实现账号级别的状态,做的是交易共识,解决跨片交易限制或者账号级别的并发扩展、水平发展。而Zone一级更多人实现block级别的状态分片,对完成对管辖下的交易共识审计的同时,对跨下的数据进行同步。
第二个问题,Shard和Zone的划分标准是什么,简单说从业务上面来看,Zone是做审计的,Shard做交易共识;从网络角度去解构,Zone是做路由和同步的,Shard是独立分割的交易子网络;那从节点组成上来区分,Zone是由高级节点组成的集群构建,Shard是由共识节点组成的子集。
/ 第二环节:圆桌会议一 /
链闻:众所周知,分片技术的技术实现难度非常大。请问您的项目目前进展如何,曾经在分片技术开发上遇到过哪些问题?
QuarkChain:的确在分片的实现上面,难度很大。分片本身在中心化系统里面难度也是非常大的,大家可以看看比如谷歌,他们都是花了一两年的时间,再加上非常多,五六十至一百人的团队,才能够去实现一个他们内部的中心化的分片系统。那么因为这些经验,我们在开发过程中就受益于此,吸取了很多经验和教训,所以在我们开发过程中能够很好在早期去避免一些问题。
但是在其他方面,尤其是区块链相关的分片还是遇到很多问题。第一个问题就是我们当时在设计跨片交易的时候,尤其是处理一个叫做热分片问题时,我们花了很多时间和精力,涉及包括代币经济学和各方面机制,去保证能够很好的解决这个问题。这个问题其实就是说,假设,很多分片都向某一个分片发送大量的跨片交易,怎么能够保证目标的分片不被这些大量的交易给攻击。
举个例子,像扎克伯格发个博客,然后很多人在上面点赞,写评论,那么系统会把这些点赞的消息区分发给比如说你的好友,或者朋友圈分组。刚好这个话题是非常非常火的,同时这个博客分到了某一个单独的分片里,那么可能会造成一下子这个分片就过载,并且导致所有处理服务器都崩溃的情况。
像这样的问题,我们在中心化系统有非常多这种问题出现,然后解决的方法也有各种各样的。但是怎么样能够找到一个非常适合区块链这种去中心化的方式运行,并且能够解决这个问题的方案,我们也尝试了很多。最后,我们找到了一个我们认为,不管是在安全角度还是在代币经济学角度都是可行的。
那么第二个方面,就是在安全审计尤其是安全的设计方面,我们也遇到了新的一些问题。我们在整个的分片设计过程中,邀请了四到五个来自不同专业的安全公司,对我们源代码做了安全审计。然后很多之前我们的经验,比如说比特币和以太坊,不管是他们的黑名单或者抗女巫攻击或者是其他攻击的一些方案,在分片上面确实会产生一些新的攻击维度。
那么我们不像很多其他的项目,他们直接使用已有的比如比特币和以太坊的一些代码。然后去做安全审计的时候要做一个增量审计就行了。那么对我们而言,对于整个的分片技术,在做的不管是安全审计,还是新的一个攻击向量预防等各方面,其实也会有相当多的挑战。
那么第三个的话,除了开发之外,其实任何一套成熟的系统,不只是一个生产代码,还有需要相应的调试和测试的代码。
在中心化系统里面,尤其是像这种大公司,他们有非常成熟的调试和测试工具,去监视这个节点的运行,还有去运行一个小的环境来做一个小的样本。但是在区块链行业里面,我们就是发现这方面的一些工具还是非常缺乏,那么出现了很多一些问题都需要人工手动的去分析。然后解决思路的话,我认为也是比较野蛮和暴力的。
不过我也觉得就是这些都是一个新技术在新领域里很正常的应用问题。所以我们也希望我们能够在不只是说分片的区块链技术,还有包括安全、调试、测试工具方面,还有其它一些代币经济学设计方面,都希望能够做出一些贡献。
MultiVAC:好的,谢谢主持人。也谢谢刚才周老板的分享。其实周老板的观点跟我们这边儿还是很接近的,就是包括共识跨片、安全审计,测试、经济设计等等,很多问题,其实我们也遇到了。那我就不重复讲那些东西了,确实大家做的东西比较接近,那么我们面临的困难可能也是相似的。说起来,做分片这个事情,学术和工程两方面难度都不小。我们这边现在主要是靠我们有最顶级的团队来做这个事情。我们有七八个Google的工程师,有Facebook的架构师,然后还有哈佛,斯坦福的博士。
相比来说,设计应该说是最难的,怎么去架构下一代合理的系统。不过好在我们最难的设计阶段已经过去了。然后目前我们基本已经设计清楚,剩下的就是工程推进的问题。之前我们也很难招到顶级的工程师,主要是因为行业以内溢价太高,骗子也多,不靠谱的人太多。经历了这一波熊市大洗牌,我们趁机招了一波人,还是蛮开心的,潮水退去才知道谁在裸泳。
要说困难,我觉得最大的困难应该是行业太浮躁,行业的普遍认知和我们的认知不一致。要么就是喊着三个月测试网,六个月上主网怎么之类的。你要这么说,我fork一下以太坊源码三天就有一个主网,怎么说呢,有一点劣币驱逐良币的这种感觉吧。只要做一个技术创新的项目,它需要的时间资源是远超大家预期的。还有要么就是行业的人会问我们,说这个功能有没有,那个功能有没有。但是我认为真正划时代的技术突破,应该学会去舍弃。如果一个项目号称自己有DAG,有分片、大数据、人工智能、虚拟现实,还有区块链,往往它是能唬住人的,但往往也最不靠谱。
技术的突破,本质是一件苦行僧一样的事情。但区块链行业恰恰是一个极为浮躁,极为拜金的行业。我可以不赚钱,我就追求技术上的突破,我就实现一个内心的梦想,但是你能不能找到志同道合的人,跟你沉下心来,一起做。这个行业的浮躁氛围,愿不愿等待你去做出来,这些才是问题。
Alephium:首先讲一下我们项目的进展吧。我们其实从今年年初开始就已经在内部开发我们项目代码,我们项目比较特殊,我们是先有代码、alpha版本,然后我们再完善的白皮书。我个人是做技术出身的,所以我特别希望我有一个完整的PLC,能够证明我的算法是work的时候才希望把他推出来。目前我们已经把我们的alpha版本做好了,然后实现了白皮书里面的核心算法,并且在亚马逊云上测试过我们的算法。所以从项目真正公布的时候,我们就知道我们肯定可以实现我们白皮书里面承诺的东西。
然后第二个说一下,开发分片技术难度。分片技术肯定是比单链要难很多的,然后我们在分片上又是比较新颖的,所以很多东西需要自己摸索。总体而言,开发分片技术其实跟分布式系统挺像的,还是有很多可以借鉴的地方。首先最大的挑战就是来自于架构方面的挑战,就刚才大家也都提到了。因为分片的时候没有考虑更多的资源调度方面的事情,还有非常多的并发场景。如果大家写过大型的分布式系统的话,就知道分片场景处理起来,资源共享、资源竞争的时候就非常的麻烦,同时因为这个线程比较多,测试起来也是非常的麻烦。
然后对于我们项目而言,我和我的瑞士同事,他是原来是很有名的一个创业公司的CTO。我们都有丰富的分布式系统开发经验,我们用一些比较先进的软件和工程技术,包括函数式语言等,然后里面一些比较好的自动测试的基础技术。相对而言,就是把我们的架构设计的比较合理,测试覆盖面也比较广。目前,我们系统在亚马逊云上跑起来测试是比较稳定的。但区块链行业对安全性要求极其高,所以,长远来看我们还有很多的事情要做。也希望有更多的高级程序员加入我们,一起帮助我们推进这个事情。
Ontology :好的,接下来我介绍一下本体sharding开发的一些问题。这个实际上是和前面各位介绍的差不多,主要也都是设计方面还有开发测试方面的一些难度。
首先说,设计方面难度,sharding实际是来自十几年前列式数据库的理论在区块链领域的应用。所以,如何把sharding的理论和区块链的安全理论,包括密码经济学设计、激励机制设计,这些融合在一起来实现一个安全可扩展,而且高性能的这样一个区块链。这是在我们整个sharding的设计中最难的地方。
目前,我们算是完成了Ontology sharding的设计,现在在稳步开发。在我们的设计的过程中,我们是采用和其他以往的一些设计方不同的,就是我们采用这个CBC的方法学设计。CBC,Correct By Construction,是以太坊的Casper提出来的一个新的一种设计方法学。
对于CBC,他实际上就是从终点出发,来确定整个系统设计的一个边界。然后从终点一步步朝回走,就一步步保证在你整个设计都在边界之内的方式,然后反推出来一个可行的设计。就类似于“条条大路通罗马”,现在我们怎么找一条我到罗马的路呢,就是从罗马出发,找一条回家的路,然后用这条路来做我们的设计,这样就可以从家里面直接到罗马。
在整个过程中,我们遇到的最难的问题,实际上是智能合约sharding设计中的一个跨链事物的一致性的问题,当然,这个在列式数据库设计里面也是一个难点,在区块链场景下就是变得更难一些,尤其设计容易实现更难,这也是我们当时最大的挑战。不过,好在现在列式数据库有很多理论成果。如果遇到什么问题,那些理论成果,就已经给我们指明了设计的边界在哪里。所以说也就给我们指明了,设计的方向在哪里。
目前我们是通过可验证消息队列的方式来实现垮链事物的一致性,就是基于可验证消息队列,然后来实现这个一致性的方式,目前这个问题我们还在这个持续优化。另外一点就是工程实现,因为设计再完美,工程实现跟不上也很难,毕竟工程跟设计还是差别很大的。所以说怎么在工程上来保证测试覆盖难度,尤其是在分片的场景下。分片是一个更大的网络,和单链的开发会有很大的不同。所以如何保证测试覆盖的难度,这个也是很难。
最后说一下,目前我们Ontology sharding的开发进度,目前大概是在40%左右。如果在开发完成之后,再加上测试审计的工作,根据目前的进度,有可能今年可以看到上线。但是这个要取决于测试,还有审计以及后面一些重要功能的开发进度。
TOP Network :好的,我分享一下TOP Network的宝贵分片经历。首先,我们TOP Network内部已经发布了Testnet3.0,我们官网上放的是Testnet2.0。今年第二季度的我们主网会上线,目前进度都挺顺利,从技术上来说呢,分片的基础验证,其实我很早就完成了,包括两层分片,两层点阵,从理论上到设计开发,实现,到时这个测试结果也都是符合我们预期的,我们这去年十月份开通的1.0的时候也实现了8000多TPS的成绩,后续对我们主网上线的信任,大家可以有足够的期待。
但我们从2017年底到2018年,为开发出真正安全可用的分片技术,碰到了非常多的挑战。这其中绝大多数的挑战在业界其实没有现成的解决方案可以参考,其中最麻烦的就是需要系统性的、完整的解决各种分片的异常情况。比如说假设整个shard节点全部下线了,那么整体的系统还能够自动恢复吗,多久能恢复,这个恢复期间,怎么保证交易的安全性和可用性。
假设整个shard被人攻陷了,那整体系统还能保证公司的安全,毕竟我说分片了,那分片你的节点必定是数还是大大小于全局的。比如单个shard被攻陷的可能性是从理论上是升明显增加的。所以这种情况理论上虽然说实际上很难发生,但要从系统可靠性的角度,还是要能保证这种异常发生的时候安全,所以这个是一个非常大的一个挑战。
假设所有的交易全部是跨Zone的交易或者跨Shard的交易,那我们说分片技术还能保持着线性扩展吗?通常说,很多分片系统的TPS测试,绝大部分在单个分片内完成了,这样的TPS性能就不符合实际的情况。我们之前测试一个假设实例的交易都是夸Zone的,跨Shard的。这种情况下系统还是需要那个平衡,能够水平线性扩展。这是我们经历了很多很多的挑战。
总的来说呢,纯粹的分片技术对实验室来实现验证,从我个人的感觉其实不是特别困难。我们团队,其实很早也就实现了,就是验证了这些东西。那我们在Testnet 3.0,也就是内部release出来的,最后已经做到了在满足安全的前提下,分片性能最大化,数据的可用性,抗攻击和同步的时效性之间达到平衡,而且是动态平衡。那这样就解决了,我们主管上线前的最后的技术挑战,所以我们非常也非常有信心,在今年第二季度把我们的主网上线。这个过程当中,我们在工程开发上确实经历了很多痛苦,才走到了今天。