原创 | 本体社区成员@币莱
原文 | https://m.lcyoufu.com/#/articleDetail?articleid=625261&inviter=dE4Y&VNK=d6a2eec7
-----------------------------------------------
一、分片和区块链分片
1、分片
分片是数据库分区的一种形式,也称为水平分区,即将一个大的数据库切分成很多小的、可处理的部分,从而提高性能,缩短响应时间。商业上,一个普遍的分片案例就是将用户信息的数据库按照地理位置划分,同一个区域的用户信息放在一起,存到单独的服务器中。
2、区块链分片
区块链就相当于一个数据库,每一个节点都相当于一个独立的服务器。正常情况下,这些节点每次只有一个节点能获得记账出块的权利,剩下没获得出块权的节点相当于做了“无用功”,白白浪费了算力。
如果将分片技术运用到区块链中,就相当于将区块链网络里的所有待处理任务(比如确认交易、运行 DApp 等)进行分解,全网的节点也进行分组,每一组同时处理一个分解后的任务(比如200笔待确认交易),这样就从原先单一节点处理全网的所有任务变成了多组节点同时并行处理。
多年来,分片一直是传统数据库技术的重要组成部分,也是区块链扩容方面的焦点。数据库分片技术是将数据库分成更小、更快和更容易管理的数据分片,通过并行处理不同数据分片上的交易实现数据库系统的扩展。
可以这样说:如果不能解决处理速度的问题,那么区块链技术的落地将遥遥无期。分片技术就是解决这一难题的利刃。
二、本体分片筹备、初衷和目标
1、筹备
本体的分片最早立项时已经确定了本体链群的技术方向。确立了整个技术方向后,第一步是建立稳定而易用的基础链,所以团队第一阶段就是完成本体主网的开发。但是开发主网的同时,团队很明确后续链群的设计方向,因此很多分片的设计,在主网开发时都有一定的考虑。
在去年主网上线后,本体研究团队就开启了本体链群的下一步计划。当时,团队调研很多区块链扩展性和性能的相关方案,最终选择先进行本体分片的研究和开发。
2、初衷
分片技术是从区块链的基础层上对区块链进行扩展的一项技术。基于区块链生态还处于早期培育阶段,本体分片在基础层上为区块链生态打好技术基础,而后根据生态需要,在区块链应用角度进行进一步的扩展。
3、设计目标
从基础设施角度:通过区块链分片技术,扩大区块链底层去中心化程度的同时,提高智能合约业务的性能;
从区块链应用角度:保持区块链底层技术对上层 dApp 和智能合约的易用性。
通过分片技术使区块链网络在保持可信性的条件下可以满足大多数应用的性能需求。基于此,我们提出了本体多层网络架构的分片技术。
三、 本体分片技术设计
1、设计目标
(1)交易处理过程能够在分片中完成(2)有效实现线性扩展(3)支持智能合约事务的跨链原子性(4)通过 ONG 实现分片网络的激励模型。
2、基本设计情况:
(1)分片性能只由参与到分片的网络节点和节点间的网络性能决定;
(2)分片之间通过可靠消息队列的方式相互通讯,所有消息都在分片中完成共识,实现安全性和可验证性;
(3)本体分片支持分片内智能合约的事务性和跨分片智能合约的事务性。对于分片内交易,沿用了单链中的同步事务模型,跨分片的交易采用全新的异步事务模型,基于MVCO(Multi-Version Commitment Ordering) 的分布式事务算法实现高扩展性的跨分片事务交互;
(4)本体分片设计中实现了智能合约在分片间的迁移,这对于分片网络的按需扩展同样非常重要。
3、本体分片的设计经历了三个阶段
在第一阶段,主要确定了技术方向和主要技术问题的解决方案,并且完成整个分片协议的理论验证。这其中,遇到的一个难题是:如何在分片智能合约间完成可信的跨分片事务性调用。分布式事务是一个古老的问题,但是之前都是在可信网络环境中的分布式事务,根据区块链本身要求 trustless,即区块链是一个去信任的环境。最终,通过分片间可验证消息队列和多版本事务提交管理(MVCO)两个技术完美解决了这个问题。
在第二阶段,对第一阶段的设计完成了原型实现,验证协议的正确性和整体架构的扩展性。在其中,也遇到一些设计和实现的问题,其中一个问题就是跨分片事务性调用时的扩展性问题,因为初步设计时采用智能合约锁的方式完成跨分片事务性结果的 commit。而在完成原型进行扩展性压力测试时,发现在跨分片事务增加到一定比例后,跨分片事务失败的比例急剧增长,极大影响了跨分片智能合约的可用性。因此在第二阶段,对原始设计进行了进一步的细化,完成了基于账户模型的两阶段提交协议,从而解决了跨分片事务的扩展性。
在第三阶段,完成了理论设计和原型验证后,本体分片的开发和实现进行得非常顺利。但是,随着开发的完成,测试占据了大部分的开发工作,如何对本体多层分片网络进行完整的测试成为了我们面临的新的挑战,为此开发了新的白盒测试框架,从而保证本体分片的质量和安全。
现在本体测试网已经上线,但任务还没有结束,要持续对其进行优化和测试,使本体分片网络切实解决区块链应用的性能需求。
四、 本体分片技术框架
本体在扩容方面引入多层分片的技术架构以进一步扩展区块链核心系统的能力,分片设计全面,涉及状态分片、交易分片和网络分片。随着业务的发展,本体分片网络将会扩展出新的分片,网络吞吐量将随之扩展。
1、分片结构
本体分片结构采取多层结构,每一个分片都支持独立的分布式部署,“母分片”(主分片)包含“子分片”。主分片在分片网络中处理全局请求;子分片在分片中处理智能合约请求。
图:本体多层分片网络架构
本体分片网络以主分片为主,二者类似于隶属关系。子分片由主分片创建,其节点来自于主分片,主分片的区块与账本需要在子分片中备份,且分片治理合约部署在主分片中,治理执行权也主要掌控在主分片中。
整体来说,本体分片技术框架与逻辑相对较基础,对于分片技术常遇到的如何保证每个分片分配的公正性,
但对于如何解决跨片信息传递繁杂性、延迟性等问题,需要给出完整的解决方案。
2、 跨片事务
跨片事务是分片中的重要组成部分,用以解决片与片之间的信息及数据的传递。本体主要采取两种技术手段实现跨片事务:
-
跨片消息队列。以系统合约的形式在本体分片体系中实现这一消息队列的设计;
-
应用智能合约通过调用这一跨片消息队列合约发送跨片消息,实现跨片事务的消息传递。
图:本体跨片消息传递
3、 功能分片
此外,本体分片也支持功能性的业务分片。比如,为了丰富本体生态,有溯源分片等规划。现阶段,本体功能分片集中解决身份、数据储存、计算能力扩展等功能。
整体来说,本体分片技术框架与逻辑相对较基础,对于分片技术常遇到的如何保证每个分片分配的公正性,如何解决跨片信息传递繁杂性、延迟性等问题,本体并没有给出完整的解决方案。
五、本体分片技术网络内容
分片技术最终要达到三层实现:1、网络分 2、交易分片 3、状态分片。
其中第一、二层,在当前主打分片的公链上已经基本实现。而第三层状态分片,由于状态机制下,合约的依赖性问题,并行执行合约是个比较棘手的难题。当前分片赛道的各竞争对手,包括本体,都在紧锣密鼓地开发着,争取能够早日实现。
1、网络分片。网络分片较为简单,但也最为重要,算是其他两层的地基。
网络分片,通过随机抽取出特定数量的节点,创建成一个分片。当形成多个分片后,分片中自行建立共识,对交易进行确认。这些分片可以同时、平行地处理相互未建立连接的交易,提高网络并发量。
本体的网络分片采用层次化的网络架构,每个分片的网络相互独立管理,每个节点通过质押参与不同的分片网络中。
2、交易分片。不同交易将只在不同的分片中运行,每个分片运行独立的共识算法。
本体交易分片以智能合约为基本单元,每个智能合约都运行在某个分片网络中,调用智能合约的交易需要发送到对应的分片网络中处理,以此实现交易分片。
3、状态分片。这也是最为复杂、最具有挑战性的一种分片机制。整个储存库被分开,分别放在了不同的分片上。每个分片储存自己分片中的所有数据,而不是整个区块链的状态。
本体分片中,所有服务都以智能合约的方式实现,智能合约的状态数据也只在对应的分片网络中保存,以此来实现状态分片。
“本体分片设计支持网络分片、交易分片和状态分片,解决扩容问题的同时,有效推动基础设施完善。本体的分片设计还可以满足各种商业和社区需求,特别是在不同地区个人数据所有权等方面。
六、本体分片技术测试
2019年6月30日,本体一周年之际上线分片测试网。
本体分片具备多层分片的网络架构、基于智能合约的分片策略、支持分片间智能合约消息通讯和分片间的原子调用四大特性,三个分片之间可以完成跨链业务。
本体分片开发进度高于预期,其实际表现值得期待。本体在分片技术方向进展超过预期,提前解决了以太坊2.0中出现的问题,但是全维度分片实现难度巨大,本体能够先于以太坊解决一些难题,足以说明其团队的开发能力,但本体分片的实际表现,仍需等待其项目落地之后,再进行进一步验证。
七、本体分片技术优势
相对于其他分片技术,本体分片最突出一点为——本体分片为基于智能合约的分片策略,因此本体分片不但是为了提高区块链的扩展性和性能,更是为智能合约为核心的 dApp 生态提供更好的扩展性和性能。另外和其他分片相比,本体分片提供了异步可靠通信和同步原子调用等多种 dApp 间协作方式,从而极大方便 dApp 的开发和协作,更有利于 dApp 生态的扩展。
另外,本体多层分片的网络架构对于本体生态合作伙伴也有很好的激励,是本体合作伙伴间可以更加紧密的合作在一起,共同完成区块链的实体化落地。
本体负责人李俊谈分片技术开发情况:
......我们在分片技术研究方面非常早,去年主网上线的时候交易分片就已经有方案,没有做任何的宣传,研究完发现只有交易分片是不够的,我们做了大量的研究,今年第一个支持网络、交易和状态分片在测试链上开发完成。国内有兴趣的人可以在本体分片现有的技术上提出改进意见,对于被接纳到本体分片设计中的建议将会有巨额回报,希望以本体分片为起点,以中国技术社区为核心,让大家参与到这件事情中,推动世界级的分片落地。
八、公链分片技术潜在的风险
分片技术虽然能在一定程度上解决区块链的性能问题,让区块链更具有可扩展性,但也存在缺陷。
一个是分区后,不同区的通信问题。如果要通信,势必要增加跨分区的通信机制(类似跨链),这会增加区块链的复杂性,开发难度也会提高。
第二个是区块链的安全性。在未分片之前,网络是多个节点组成的算力,分成若干个分区后,每个分区相当于一条独立的区块链,节点组成的算力下降。此时,对其中一个分区进行 51% 算力攻击就容易很多。控制了一个分区,攻击者就可以在这个分区内做恶,篡改交易。
就是说主分片掌握了绝大多数的核心数据与核心权力,存在一定中心化风险与安全风险,攻击者只需对主分片实施攻击,便可导致分片网络的瘫痪。
结束语:
片区之间交流机制,区块的扩展性,智能合约的规范等,因此目前来说分片技术还是需要很长的路要走,当然以本体的技术能力,在今后的运行中能得到一个完美的解决。
来源:CSDN
作者:Ontology Blockchain
链接:https://blog.csdn.net/ontologycoding/article/details/102497125