在了解本体分片技术之前,有几个专业名词你必须有个简单的概念。
首先是区块链,你可以把区块链看作是处理大量交易的系统,包括处理交易的产生,验证,确认,记录等一系列活动。在区块链上的交易活动都是点对点的,没有第三方参与,这是区块链系统的去中心化特征。
然后是TPS,TPS中文名称叫每秒处理的交易数,TPS的快慢几乎决定了一个区块链系统的性能,决定了它的发展前景。举个例子,淘宝上每天都有几亿人进行交易,如果每秒只能处理10笔交易,太慢的效率,你当然不愿意使用它。
目前区块链里非常有名的项目比特币和以太坊的TPS怎么样呢?以太坊 TPS在 10~20笔,比特币 5-7 笔。
第三是节点及共识,节点可以对交易进行验证确认,通俗一点说,就是同时有多个人(多个节点)根据一定的规则都验证了你这笔交易是正确可信的,这笔交易才会成交并被区块链记录下来,验证的过程就叫共识。
第四是智能合约,智能合约是区块链系统中的特定为完成某个功能的一段代码程序,自动运行,不受第三方控制。
最后是Sharding,中文名叫分片技术。随着区块链发展,需要处理的交易数据越来越大。大量去中心化应用也对交易的处理速度有迫切需求。区块链网络的交易处理性能是制约区块链网络应用规模最主要的问题。而分片技术是解决交易速度问题的一大解决方案。
实例理解分片
分片技术为什么能提高区块链的交易速度呢?这里,return2ok用一个实例带你理解分片技术的基本运作。
假如你是公司一个不大不小的领导,最近很不走运,大领导觉得你的账目有问题,于是派了20个人来核查你的账目。
你很牛啊,给这20个人准备了一个账本,上面有100条账目。按照一般的做法,这个账本要20个人挨个的进行核实验证,这其实正是以太坊与比特币的常规做法。
这样审核的速度当然很慢,怎么办呢?我们采用分片技术,我们把账本分成10个部份,每个部份10个账目。在此基础上,我们又把审查组分成对应的10组,也就是让每2个人验证账本上1/10的账目。
我们让这10组同时进行核查,相对原处理方式,每个核查组从20人减少到2个,整体速度相对原处理方式肯定会大于10倍。
显然,通过分片技术,显著提高了账目核查的处理速度。
本体分片技术
2018年底,本体网络发布了分片技术设计,并向广大技术社区开源。本体分片技术的内容包括三个维度:网络分片、交易分片和状态分片。
网络分片:要求分片的消息只在分片内部网络中传播
本体分片网络采用层次化的网络架构,每个分片的网络相互独立管理,每个节点通过质押参与不同的分片网络中。
实例:如上面的例子,也就是说,每组2个人对账目某个问题的审核讨论只在这个组中进行讨论与并确定结果,不与其它组交叉。并且在分配组员时,根据每个审核组员能力大小分配到不同难度账目的组中。
交易分片:指不同交易将只在不同的分片中运行,每个分片运行独立的共识算法
本体交易分片以智能合约为基本单元,每个智能合约都运行在某个分片网络中,调用智能合约的交易需要发送到对应的分片网络中处理,以此实现交易分片。
实例:也就是说,每个组对账目的审核都采用这个组规定的审核方法,每个组的审核方法针对不同的账目相互独立,不同的账目分配到对应审核方法的组中。
状态分片:要求分片只需要维护分片内部的状态数据而不需要保存其它分片的数据
本体分片中所有服务都以智能合约的方式实现,和智能合约一样,智能合约的状态数据也只在对应的分片网络中保存,以此实现状态分片。
实例:每个审核小组的审核过程中产生的问题都独立记录,不与其它审核小组交叉,审核结论也由各自小组核实确定。
本体分片的基本设计如下:
1、分片性能只由参与到分片的网络节点和节点间的网络性能决定;
实例:每个小组的审核速度及效率只由每个组成员的自身能力及沟通能力决定,这也决定了整体的账目审核速度。
2、分片之间通过可靠消息队列的方式相互通讯,所有消息都在分片中完成共识,实现安全性和可验证性;
实例:每个审核小组之间具备事先确定的交流方法,比如OK手势,“过”等语言来确定账目的正确与否,每个小组成员参考这些消息独立判断自已小组所负责账目的正确性并给出核实结果。
3、 本体分片支持分片内智能合约的事务性和跨分片智能合约的事务性。对于分片内交易,沿用了单链中的同步事务模型,跨分片的交易采用全新的异步事务模型,基于 MVCO(Multi-Version Commitment Ordering) 的分布式事务算法实现高扩展性的跨分片事务交互;
实例:简单点说,就是在各审核小组内部,账目必须经小组内成员挨个的进行验证。而小组之间账目核查,随时可以通过OK手势,“过”等语言进行交流核实。
4、 本体分片设计中实现了智能合约在分片间的迁移,这对于分片网络的按需扩展同样非常重要。
实例:智能合约你可以看成每个审核小组内规定的账目审核方法,根据这种审核方法,能够保证审核过程及结论是正确可信的。一般情况下,为了保持区块链的确定性以及一致状态,每个智能合约一次只能在一个分片上执行,而本体分片网络能够实现智能合约在各个分片之间迁移,提高了分片的处理效率。