CN111736963B - 一种用于无主链多分片区块链的事务处理系统及方法 - Google Patents
一种用于无主链多分片区块链的事务处理系统及方法 Download PDFInfo
- Publication number
- CN111736963B CN111736963B CN202010511562.8A CN202010511562A CN111736963B CN 111736963 B CN111736963 B CN 111736963B CN 202010511562 A CN202010511562 A CN 202010511562A CN 111736963 B CN111736963 B CN 111736963B
- Authority
- CN
- China
- Prior art keywords
- transaction
- fragment
- block
- source
- account
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明提供一种用于无主链多分片区块链的事务处理系统,包括:客户端,用于创建和管理本地账户集合信息并定期获取本地账户集合的全网最新状态、基于账户间的交易需求生成包含源分片和目的分片信息的事务并发送给事务对应的分片执行;区块链平台,用于处理接收和执行区块链上账户状态改变的事务,其包括多个分片,每个分片包括所有运行相同区块链协议的节点;每个分片基于接收到的事务,改变本分片上对应账户的状态并将事务对应交易打包进新区块以完成事务的执行。本发明改进了区块结构,采用了三阶段处理机制,解决了跨片事务执行顺序不可预测的问题以及区块链的扩展性问题,实现了更小的存储计算开销,减轻节点运营负担,实现了通量提升。
Description
技术领域
本发明涉及区块链领域,具体来说涉及区块链应用扩展领域,更具体地说,涉及一种用于无主链多分片区块链的事务处理系统及方法。
背景技术
区块链作为新兴技术,还有很多问题亟待完善,尤其是区块链协议在应用过程中面临着可扩展性的障碍。以比特币为代表的区块链技术,普遍采用全网统一的共识过程、全网复制共享的全局账本数据,这一设计源于其最初的设计目标只是针对小范围技术社区内的验证和使用需求,区块链协议的简单和健壮性是区块链技术的最初设计前提,并没有考虑向更广范围的、高并发的互联网应用推广。因此区块链全网节点采用“统一的共识过程、事务数据和区块数据在全网进行洪泛式传播、每个共识节点需要验证并存储所有的区块数据”这一简单但健壮的事务处理机制。这些特点成为了最初的区块链技术特征并继承至今,但这一机制并不有利于区块链向大规模、高并发的网络中扩展,造成了区块链事务处理速度远远低于主流的中心化处理系统,例如,现在比特币、以太坊等主流区块链平台每秒处理交易数只有7-8笔,而主流支付平台每秒处理交易数高达10000-50000笔。
造成区块链扩展性障碍的因素主要包括以下两方面:
一方面,现有机制下的区块链节点需要维护全网的账本数据,随着网络规模的扩大,这将对节点的存储能力与运算处理能力带来很大的障碍。例如,具有代表性的比特币区块链以及以太坊区块链数据均已超过200GB,根据Etherscan最新统计,完整运行以太坊全部数据的“存档节点”的数据总量已超2TB,并且在目前的区块链共识协议中,区块链账本数据量会随时间越来越大;与此同时随着参与用户的增加,其所需维护的账户数据也会急剧增多,这对节点的运算能力带来极大的负担,大大提高了系统的准入门槛,并极大程度的降低了系统可扩展性。
另一方面,为保证各节点状态一致性,最大限度的避免分叉冲突情况的发出,其出块间隔设置必须远远大于区块的广播时间,因为只有这样才能保证区块链在上一状态确认之后,各个节点有足够的时间获取全网的最新消息,并对下一状态达成共识。假设一个区块存在1000笔事务,根据统计其平均洪泛广播到全网的时间大约为4-5s,那么每秒最多可以处理的交易数只有200-300笔,而实际环境中出块间隔需要远大于广播时间,例如比特币10分钟,以太坊15秒。随着网络规模的大规模扩大,广播时间会大幅增加,交易处理数也会大幅下降,但与之对应的参与节点会急剧增加,待处理的交易也会急剧上升,造成系统的拥堵甚至瘫痪。
在区块链技术的基础架构和协议框架下,通过优化其协议内置的参数(出块间隔、区块大小)和运行环境参数(挖矿节点的GPU、内存、硬盘、网络带宽)等,其预期的优化效果上限可以预估且无法达到传统中心化技术的通量水平,因此,受制于区块链核心协议的限制,对区块链系统的运行参数进行调整所能预期的效率提升是有限的,区块链核心协议严重制约了区块链技术在高并发、高通量业务场景的应用。例如,普通的信用卡公司可以每秒处理10000笔事务,支付卡VISA每秒处理的事务数量峰值可以到达50000笔,支付宝每秒处理的事务数量峰值可以达到25万笔,并且事务的确认时间只需几秒钟,远高于主流区块链平台
基于主流区块链平台的缺陷,有研究者提出侧链(或称跨链)技术,用于实现多链之间的业务互通,侧链技术的目的是将不同的区块链网络链接在一起,形成覆盖范围更广的信任网络。例如,Blockstream公司提出,将多种类型的区块链网络挂钩到比特币区块链上,其目的是搭建不同区块链系统之间的价值传递桥梁,尤其是实现价值在比特币区块链和其它区块链之间相互转换。根据侧链白皮书所述,侧链通过双向楔入的方式,允许资产在比特币区块链和其它链之间移动,在一定程度上解决了比特币事务上限的问题,通过双向楔入的方式将部分事务移动到其它的替代链上,也就是多链之间的互操作或称跨链事务。但是,截止目前,侧链技术关注的核心问题是业务场景跨链,将相关业务转移至侧链中运行,因此,侧链技术并没有给通量需求带来技术进步,也没有解决应用扩展性问题。
目前,分片技术发展迅速,2018年以太坊提出以太坊2.0解决方案,在该方案中,区块链以地址空间划分为多个分片,每个分片中的节点维护一条独立的区块链,并增设一个信标链负责执行维护整个网络所需的操作,即生成随机数将验证者分配到各个片区,接收分片的信息更新(并创建快照),处理权益证明(PoS)系统中验证者质押的押金及其罚没,并不断重划片区处理验证节点的选举问题。以该方案为代表还有许多类似的主链扩容方案,基本采取引入一条主链用来在各独立分片间创造一条信息沟通桥梁,完成跨片交易的验证与执行。其中主链来维护各个分片的快照信息,为各分片处理跨片交易提供支持,打通各分片之间的状态交流,分片链负责并行处理各个分片事务。虽然这种设计实现了区块链的跨片并行,但是这种并行只是在不同分片链中并行,主链作为不同分片沟通的桥梁,不同分片的事务最终在主链仍然是串行状态,并且本质上主链仍然是一条单链,其处理能力也将受到单链系统的性能限制,其所能处理的分片事务仍然有限,从而主链能够有效管理的分片数量自然也是有上限的。当性能提升到一定空间之后,主链便成了限制通量的新瓶颈,主链将追不上分片链的处理速度,从而造成交易事务的大规模堵塞。并且主链的引入,使得一笔跨片交易需要经过多个节点串行处理,从分片节点到主链节点再到分片节点,跨片交易的处理延迟也将大幅增加。
2019年,Monoxide是在Symposium on Network System Design andImplementation会议上提出无主链分片方案,该方案依然将网络按地址空间划分为多个独立的分片,将交易划分为前序交易与后序交易两个阶段,区块链节点维护全局的chainblock信息(即区块头信息),维护本分片的TX block信息(即完整的交易事务区块信息),相当于任意节点可以看作是所属分片的全节点,其他分片的轻节点,保证节点对宏观全局状态有一个统一的认识。与此同时,前序交易通过签名进行认证,后序交易通过前序交易的merkle树路径进行验证确保交易的有效性。该方案通过两阶段协议在没有主链的情况下完成跨片事务的并行处理。但该方案仅适用于转账等简单逻辑事务,在复杂的合约环境或是分布式区块链应用中,两阶段处理方案面临着事务执行失败但无法退回的风险,因为这类事务交易验证相对独立且复杂,两阶段协议中前序交易很难在没有相关代码与状态信息的情况下预测交易的成功与否,当前序交易成功、后序交易失败后,难以进行交易的回溯和交易损失的挽回。与此同时合约交易间可能存在相关性与一定的发生顺序,该方案可能导致后序交易顺序与前序交易顺序不一致,导致系统结算异常,引发运行错误,所以两阶段跨片交易处理模式并不适用于复杂的应用场景。与此同时Monoxide还存在着全局状态认知的不统一的问题,它只保证节点对宏观全局状态有一个统一的认识,但是不能保证一个分片内节点全局状态的进度一致,即有些节点拥有最新的状态,有些节点的全局状态相对落后。而这种对于状态的认知的不统一,会导致节点对于相同交易事务作出不同的判断,这与区块链共识理念相违背,也会导致一系列安全问题,例如恶意分叉/双花攻击等。
近年来,layer2链下扩容方案也十分流行,其中代表的便是支付通道网络,有研究者实现了支付通道网络新的路由选择算法,提出了容量锁定概念,提高了支付过程的并发度。也有研究者针对闪电网络中的多跳支付过程进行了路径优化研究,利用线性规划的方法平衡节点多通道之间的支付余额,使得多跳支付路径缩短,提高支付效率,降低支付费用。还有一些研究者针对闪电网络存在的并发性和隐私性问题进行研究,提出了两个闪电网络协议Fulgor和Rayo。Fulgor和Rayo的核心是多跳哈希时间锁(Multi-Hop HTLC),提供有条件的支付功能,同时减少了运行时间和通信开销。但是支付通道网络只是相当于将多笔事务通过某种形式用一笔事务来替代,进而实现区块链的整体扩容,但是这种扩容方案并没有提升区块链处理事务能力,仍然受区块链核心协议性能限制。例如大规模的用户结算或是过多的通道创建与关闭都是需要在区块链平台上进行,而区块链核心协议性能较弱仍会导致整个网络交易的拥堵和瘫痪。
通过上述描述可知,现有技术中区块链通量优化受限于单条链的共识算法、网络带宽等因素,但单链系统的性能提升空间很小,并且由于主链模式受限于主链性能,存在性能瓶颈。因此现有的研究方案中多采取多链并行模式,但现有方案对于多链并行模式的研究尚未深入,目前的多链方案并行方案尚不成熟,仍然存在各种薄弱之处,存在区块链整体扩容瓶颈、应用扩展障碍等。
发明内容
本发明的目的在于克服上述现有技术的缺陷,提供一种用于无主链多分片区块链的事务处理系统及方法。
根据本发明的第一方面,提供一种用于无主链多分片区块链的事务处理系统,包括:客户端,用于创建和管理本地账户集合信息并定期获取本地账户集合的全网最新状态、基于账户间的交易需求生成包含源分片和目的分片信息的事务并发送给事务对应的分片执行;区块链平台,用于处理接收和执行区块链上账户状态改变的事务,其包括多个分片,每个分片包括所有运行相同区块链协议的节点;每个分片基于接收到的事务,改变本分片上对应账户的状态并将事务对应交易打包进新区块以完成事务的执行。
其中,所述区块链平台上每个分片打包的新区块包括:本分片的区块头、其他分片的快照信息、与本分片相关的多个事务集合;其中,所述与本分片相关的多个事务集合包括以本分片为源分片的事务集合、和/或以本分片为目的分片的事务集合,其中,每个集合中的事务按执行顺序进行堆叠。新区块的本分片区块头中包含该区块对应的区块事务根hash;新区块的每一个其他分片的快照信息包含该其他分片的某一高度的区块头信息以及该其他分片中处理的所有与本分片相关的事务集合的merkle根hash、集合编号、集合验证路径;新区块的事务集合被赋予不同的集合编号。
客户端生成的交易事务分为片内事务和跨片事务,所述片内事务是源分片和目的分片为同一分片的事务,所述跨片事务是源分片和目的分片为不同分片的事务;其中,所述跨片事务包括前序阶段、后序阶段以及反馈阶段;其中,跨片事务的前序阶段在源分片上执行、后序阶段在目的分片上执行、反馈阶段在源分片上执行。
优选的,所述客户端包括:账户管理模块,用于创建本地账户、维护本地账户对应的子账户、生成和保存账户密钥,其中,每个本地账户在每个分片上有一个对应的子账户,同一个本地账户对应的所有子账户密钥相同;客户端事务处理模块,用于事务数据管理和事务跟踪;其中,事务数据管理包括事务数据的生成和发送;事务跟踪包括对已发送的事务的执行状态进行持续跟踪并将跟踪的信息反馈给用户、以及基于用户反馈发出事务请求以执行撤回操作。
优选的,所述每个分片上的每个节点包括:区块共识模块,用于产生新的区块,并在本分片内对新区块进行共识过程;网络广播模块,用于维护本分片内节点和客户端的网络连接以及与其他分片之间的通信连接,将区块共识模块产生的新区块向片内广播并将区块快照发送给相关的其他分片节点;节点事务处理模块,用于本分片相关事务的验证与执行;超时处理合约,用于执行超时未处理的跨片事务的撤回操作。
其中,所述区块共识模块用于对新区块进行区块头验证、分片快照信息验证、事务集合验证,其中:区块头验证是通过计算该区块头所在区块中的事务集合的merkle树获取最终区块的merkle树根并与区块头中的区块事务根hash进行对比以验证二者是否匹配以验证事务集合的有效性与完整性;分片快照信息验证是验证产生新区块的节点是否收到过匹配的其他分片快照信息、验证其他分片快照信息中的区块头信息是否完备、以及验证其他分片快照信息中的事务集合有效性;事务集合验证是验证该区块中以产生该区块的节点所在分片为源分片的事务的集合中的事务是否按顺序执行成功,以及验证该区块中以产生该区块的节点所在分片为目的分片的事务集合中对应的源分片的快照信息是否在本分片中得到验证确认。
所述节点事务处理模块根据其所在分片接收到的事务来源判断事务所处阶段,根据不同阶段选择不同的验证方式,并按照不同阶段的规则执行验证通过的处于不同阶段的事务,其中:所述节点事务处理模块验证处于前序阶段的事务对应的事务签名以及账户状态,验证通过后更新该事务对应的源分片子账户状态;所述节点事务处理模块验证处于后序阶段的事务对应的源分片前序区块的快照信息是否在本节点所在分片的得到确认以及该事务前的同类型事务的后序阶段是否都得到了执行,验证通过后更新该事务对应的目的分片子账户状态;所述节点事务处理模块验证处于反馈阶段的事务对应的目的分片后序区块的快照信息是否在本节点所在分片得到确认以及该事务前的同类型事务的反馈阶段是否都得到了执行,验证通过后更新该事务对应的源分片子账号状态。
所述超时处理合约用于处理后序阶段超时未处理的跨片事务的源分片子账户退回操作以及反馈阶段超时未处理的跨片事务的目的分片子账户退回操作,其中,后序阶段超时未处理的跨片事务的源分片子账户退回操作是指在预设的后序阶段超时时限(预设的后序阶段超时时限是事务后序阶段有效的区块高度)前,事务的后序阶段未执行导致跨片事务失效,源分片子账户向事务对应的目的分片的超时合约发送退回相关的事务请求,超时合约检测通过后执行退回操作;反馈阶段超时未处理的跨片事务的目的分片子账户退回操作是指在预设的反馈阶段超时时限(预设的反馈阶段超时时限是事务反馈阶段有效的区块高度)前,事务的反馈阶段未执行,源分片子账户向事务对应的目的分片的超时合约发送退回相关的事务请求,超时合约检测通过后执行退回操作。
根据本发明的第二方面,提供一种基于本发明第一方面所述的一种用于无主链多分片区块链的事务处理系统的事务处理方法,所述处理方法包括:根据交易需求,由客户端生成多个事务,事务中包含处理事务的源分片信息、目的分片信息,并将事务发送给对应的源分片和目的分片;分片基于接收到的事务,改变本分片上对应账户的状态并将事务对应交易打包进新区块以完成事务的执行;其中,所述分片打包的新区块包括:本分片的区块头、其他分片的快照信息、与本分片相关的多个事务集合;其中,所述与本分片相关的多个事务集合包括以本分片为源分片的事务集合、和/或以本分片为目的分片的事务集合,其中,每个集合中的事务按执行顺序进行堆叠。
其中,所述客户端生成的事务分为片内事务和跨片事务,且跨片事务包括:前序阶段、后序阶段、反馈阶段;在源分片执行跨片事务的前序阶段,其中,源分片对本分片中的处于前序阶段的事务按事务产生顺序执行,事务执行完毕后打包进源分片的最新区块中,并在区块链全网进行广播;在目的分片执行事务的后序阶段,其中,来自于同一源分片的事务,目的分片按照事务在源分片中的前序区块高度顺序执行事务在本分片中的后序阶段;基于反馈需求,在源分片执行事务的反馈阶段,其中,源分片根据处于反馈阶段的事务在源分片中对应的区块高度顺序执行。
与现有技术相比,本发明的优点在于:本发明改进了区块结构,解决了事务执行顺序不可预测的问题,同时,本发明的区块链事务处理系统对跨片事务采用三阶段事务并行处理机制,通过增加反馈机制来提高分片区块链的扩展性,实现在复杂环境下跨片交易的处理,并通过共识机制保证片内全局状态认知进度一致,保证区块链的安全性。本发明通过区块整体打包验证执行实现更小的存储计算开销,减轻节点运营负担,在保证事务执行顺序统一的情况下,实现通量提升。并通过在共识过程中增加对于其他分片的状态认知信息,让节点知道其他分片事务处理进度,并通过引入超时合约实现事务处理的定时原子性。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例的一种用于无主链多分片区块链的事务处理系统架构示意图;
图2为根据本发明实施例的一种用于无主链多分片区块链的事务处理系统分片产生的区块结构示意图;
图3为根据本发明实施例的区块头验证中的事务Merkle树结构示意图;
图4为根据本发明实施例的分片快照信息示意图;
图5为根据本发明实施例的采用本发明的一种用于无主链多分片区块链的事务处理系统进行转账交易流程示意图;
图6为根据本发明实施例的采用本发明的一种用于无主链多分片区块链的事务处理系统进行合约调用流程示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明的目的在于解决区块链基础架构和核心协议面临的通量优化及扩展性受限的问题。发明人对现有的区块链架构、两阶段机制及并行多链技术进行研究发现,其主要存在以下几个方面的问题:
(1)现有区块链架构及相关分片技术中的跨片事务缺乏反馈机制,导致应用扩展受限,即使在区块链中采用两阶段协议,仍然不能适用于复杂环境,例如无法支持区块链上跨片的智能合约调用以及其他复杂应用,只能完成简单的跨片转账交易。
(2)现有区块链架构及相关分片技术中,没有通过区块链共识保证各节点各种共有状态的进度一致,现有的区块链节点只保证了分片内节点全局状态宏观总体的一致,这种一致在于分片上节点认同的区块都在同一条链上,但不能保证一个分片内节点全局状态的进度一致,即有些节点拥有最新的状态,有些节点的全局状态相对落后,即对于最新全局状态的认知不统一。
(3)现有区块链中涉及的跨片事务执行顺序不可预测,与单链不同,分片区块链事务处理需要多个阶段,在不同阶段事务处理顺序应该相同,然而当前跨片事务处理是每笔事务单独处理,没有充分考虑事务之间相关性以及顺序性,造成后序阶段事务执行顺序与前序阶段可能不同,这种情况很容易造成最终结果与用户实际预期结果不同。
(4)跨片交易独立验证存在计算存储冗余:现有主流分片方案中,每一条跨片交易事务的后序交易都需要提供一条merkle树验证路径进行独立的合规验证,以确保前序交易已经打包处理。这设计相对简单易于实现,但是带来了巨大的计算和存储冗余。由于跨片交易的比例远高于片内交易,在相同通量条件下,跨片交易独立验证将导致区块大小增大一半用来存储相关验证路径,区块计算需要增加一倍用来验证路径。
(5)交易时效性无法保证,在现有系统中,只能保证了事务处理的最终原子性,即事务最终一定只有成功和失败两种状态,但交易何时成功或何时失败则没有一个明确的期限,这对于区块链事务处理以及状态预测是不友好的,究其原因是因为对于区块链上其他分片状态信息监控不充分造成的,节点无法预知发过去的事务是否执行、何时执行、执行结果如何,进而导致无法判断事务是否超时,是否需要撤回处理。
发明人基于上述问题,从多分片并行处理事务的角度为出发点,改进区块结构并提出一种三阶段区块链事务并行处理机制,解决现有技术下因缺乏反馈机制导致的应用扩展受限问题,在保障区块链系统安全性和交易原子性的前提下,解决现有区块链系统通量优化瓶颈问题,大幅减少跨片交易处理带来的计算冗余和安全性问题。
概况来说,本发明主要从以下几个方面进行改进来解决现有技术存在的问题:
第一方面,针对跨片事务提出三阶段并行处理机制,跨片事务的执行包括三个阶段:前序阶段、后序阶段、反馈阶段。其中,前序阶段是事务的起始阶段,在源账户所属分片上执行,源分片从节点事务池中获取要处理的事务,前序阶段主要是执行源分片上事务相关账户的状态更新。后序阶段是事务的中间阶段,在目的分片上执行,不同于前序阶段,目的分片不是从节点事务池中选取事务,而是通过其他分片(源分片)的区块进行事务的获取,后序阶段主要是执行目的分片上事务相关账户的状态更新。反馈阶段是事务的最终阶段,在源分片上执行,其与后序阶段类似,通过其他分片(目的分片)的区块进行事务的获取,反馈阶段主要是基于事务在目的分片上的执行结果来执行源分片上事务相关账户的状态更新。
第二方面,改进区块结构,在分片产生的区块中添加其他分片快照信息、将各种事务进行分类形成不同的集合,并在集合中对事务进行排序使事务按序执行以保证具有相关性和顺序性的事务各阶段执行不出错;在区块共识过程中,包含节点的各种共有状态,以保障节点全局状态进度统一;在事务验证过程中,以集合为单位,将集合内的事务合并验证,减少存储和计算开销。
第三方面,在分片上布置超时处理合约,对于具有时效性的事务,超时未处理时,可以创建额外的事务请求调用超时处理合约以在分片中进行退回操作,保证交易时效性。
为了实现上述目的,本发明提出一种用于无主链多分片区块链的事务处理系统。
根据本发明的一个实施例,本发明的一种用于无主链多分片区块链的事务处理系统,包括区块链平台和客户端。其中,区块链平台采用账户分片机制,包含多个分片,每个分片由所有运行相同区块链协议的节点组成,每个分片维护一条独立的分片链,区块链采用的账户分片机制是确定区块链协议中分片启动参数的具体规则,也是用于区分不同分片节点的主要方法。各分片节点之间存在随机的网络连接以保证各分片之间可以相互通信广播,每条分片除了负责片内事务的处理,还负责处理与本分片相关的跨片事务的处理,即目的地址或源地址属于本分片的事务。同时,各分片上预设有超时处理合约,用于确保事务执行的定时原子性。优选的,每个分片设置有全局唯一的网络分片标识id,且分片标识id呈线性增长,例如分片1、2、3、…n或者分片A、B、C、…等,本发明中为了描述方便,实施例中的分片标识id以A、B、C、…为例。客户端用于管理本地账户集合信息,并“定期”获取本地账户集合的全网最新状态。当发送交易时,客户端获取账户余额信息,并生成新的交易事务以发送给相关分片的节点处理;然后跟踪之前发出事务的执行情况以监控交易的状态信息,针对交易超时等异常情况进行应对,避免用户损失。
本发明的区块链事务系统采用三阶段处理机制处理跨片事务,系统生成的事务中包含有源分片和目的分片信息,并将事务按照源分片和目的分片进行分类,将源分片和目的分片相同的事务划分为一个集合,以此来区分事务的不同阶段,例如,对于A分片中的源分片为分片A的事务集合,由A分片执行该事务集合中事务的前序阶段;在A分片中的目的分片为分片A的事务集合,由A分片执行该事务集合中事务的后序阶段。下面详细介绍本发明的跨片事务三阶段机制,为了方便叙述,假设源分片为A,目的分片为B。
1)前序阶段:A分片节点从节点事务池中获取要处理的事务,如果为跨片事务,则将开始执行事务的前序阶段。前序阶段是事务执行的起始阶段,在源账户所属分片A上执行。在前序阶段,将执行事务的有效性验证,例如事务签名验证、事务序号验证、事务余额充足验证、源账户状态检验等,如果验证未通过则该事务无效将被节点丢弃;验证通过后,前序阶段还将执行源账户的状态更新,按照事务类型与参数对源账户进行一系列运算操作,例如交易费的扣除、转账金额的扣除等,如果执行过程中发生错误或事异常,账户状态将恢复并中止交易的执行。当前序阶段完成后,事务被打包进源分片的最新区块BlockA中,区块BlockA将在全网进行广播。
2)后序阶段:后续阶段是跨片事务处理的中间阶段,并在目的分片B上执行。不同于前序阶段,后续阶段的事务将不再是从节点事务池中选取,而是通过其他分片的区块进行获取。当B分片节点收到A分片发来的区块BlockA相关信息后,对于其中需要B分片处理的交易将按照这些事务在区块BlockA内的顺序开始后序阶段的执行。
由于跨片事务中目的分片节点无法获取源分片中账户的状态,所以无法通过源分片账户状态检验来验证事务的有效性,因此在后序阶段中,事务的有效性通过源分片区块BlockA的有效性进行验证,并且与前序阶段事务执行不同,源分片相同的事务在后序阶段是有序的,需要按照顺序先后执行,因此后序阶段中,验证源分片区块BlockA的有效性不仅仅需要对区块BlockA进行常规的区块头验证,还需要对于事务执行顺序进行验证。当验证不通过时,则认为收到的A分片区块BlockA为无效区块,节点将抛弃该区块,不在分片B的分片链中记录。
事务在后序阶段主要执行目的账户的状态更新,根据事务参数执行转账金额的增加、合约的调用与合约状态转换等一系列操作。在执行过程中如果发生错误或异常,则将对目的账户状态进行恢复,与前序阶段不同,事务不会被抛弃,依然记录在目的分片区块链中。当事务执行成功或失败中止后,若无后续操作则交易执行结束;若是仍然需要根据事务结果对源账户进行状态更新,例如合约取款操作或是事务失败的账户回退操作等,则将触发事务的反馈阶段,节点会根据区块链协议与合约规范,将反馈阶段所需的相关状态信息与操作写入事务中,包括但不限于使用事务的附加字段进行填充或是创建关联事务等操作。最终无论事务执行结果如何,事务的所有信息都将写入目的分片B中区块链的最新区块BlockB中,并在全网广播。
3)反馈阶段:反馈阶段与后序阶段在事务的获取与验证方面相同,源分片(分片A)依然是通过收到其他分片(目的分片B)的区块来进行事务的获取,以及依托于区块有效性验证以及区块事务顺序验证来保证反馈阶段事务的有效性,验证失败则代表A分片节点收到的目的分片区块BlockB无效,将被节点抛弃。
事务的反馈阶段是事务的最终阶段,在源账户所属分片上执行,并且为了确保事务执行最终执行完毕,即事务的原子性,事务的执行在反馈阶段必须确保成功,不能因各种原因而失败,因此反馈阶段执行操作必然相对简单,其次反馈阶段不存在计算资源的限制,确保操作不会因事务中可用计算资源的设置过小而失败,与此同时因为缺少了对于计算资源的限制,必须保证反馈阶段不会消耗过多的计算存储资源。因此与前两阶段最大的不同在于,反馈阶段对于状态的更新有明确的操作限制,只能进行简单且有限的操作,确保反馈阶段操作不会复杂,导致占用过多资源,并且在后序阶段,目的分片节点需要验证反馈阶段操作的简单性。具体而言,在反馈阶段将执行一系列的退款或是状态回退等一系列安全且简单的操作。当反馈阶段执行完毕,则事务处理完成,最终事务信息将写入源分片最新的区块BlockA中,并全网广播。
由于分片区块链本质是一种异步系统,因此无法保证跨片事务何时才能真正执行完毕,或者因为网络问题或是恶意攻击部分分片可能陷入停滞状态。因此对于具有时效性的事务,在执行过程中事务可能无效,因此本发明的事务中将存在时效字段,例如事务在某一区块前有效,因此在各个阶段中都需要对时效字段进行检测,如果在前序阶段事务失效则抛弃事务不在区块链中记录,如果后序阶段或是反馈阶段中事务失效则将忽视该事务,不再执行也不会进入反馈阶段,但仍事务保留在区块中且顺序不变。之后事务所属账户可以通过创建额外的事务请求调用所在分片链上的事务超时处理合约在所在分片中进行回退操作。
此外,上述规则只是针对跨片事务,即目的分片与源分片不同的事务。对于目的分片与源分片相同的片内事务,即源账户与目的账户均在一个分片中,意味着节点可以直接更新源账户与目的账户,所以片内事务将不分阶段直接执行完毕。若片内事务超时或执行失败,则将对账户状态恢复之后,抛弃事务部在区块链中记录,对于片内事务超时,双方账户已经恢复状态,所以需要再次调用超时合约恢复账户状态。
下面结合附图及实施例详细说明本发明。
根据本发明的一个实施例,如图1所示,客户端包括账户管理模块和客户端事务处理模块,区块链采用账户分片机制,且每个分片上的每个节点包括节点事务处理模块、区块共识模块、网路广播模块、事务超时处理合约。下面对本实施例中的模块进行详细介绍。
1、客户端介绍
1.1账户管理模块
账户管理模块负责生成并在本地保存账户私钥,以及维护账户在各分片的各类资产与状态信息。优选的,账户管理模使用椭圆曲线数字签名算法(ECDSA)与Keccak-256算法得到私钥对应的账户地址,每个用户可以拥有多个账户,基于账户分片机制,一个账户可以在所有分片上有效,即一个本地账户在所有分片上有一个对应的子账户且不同分片上子账户密钥相同,但需使用特定的标记位进行区分,例如使用分片标识id进行区分。同一账户在不同分片上的资金或状态信息相互独立,可根据用户需求独立进行操作。
1.2客户端事务处理模块
客户端事务处理模块主要负责事务数据管理和事务跟踪,其中,事务数据管理主要指事务数据的生成与发送,可根据用户需求生成各类标准的事务数据,包括但不限于片内/跨片转账事务,片内/跨片合约调用,对DApp类应用兼容(即状态类应用事务)等多类型事务,之后客户端事务处理模块将生成的标准事务数据发送给对应的分片,由分片节点进行处理。事务跟踪则指对事物状态的持续跟踪处理,监听客户端已发送事务的执行状态(等待/成功/失败),在检测到事务打包确认或返回错误信息后,将结果反馈给用户;并且当事务超时仍未获得执行时,可根据用户反馈,向超时处理合约发送事务请求,撤回相关操作。其中,客户端事务处理模块生成的事务包含与处理事务相关的源分片信息和目的分片信息,优选的,用源分片和目的分片id表示,例如事务_A_B,表示源分片为A分片、目的分片为B分片的事务。
2、区块链平台介绍
为了更好的理解本发明区块链平台的结构和功能,首先介绍一下区块链平台中涉及的一些术语。
分片链节点基于账户分片机制负责接收并执行特定分片中账户状态改变的相关事务,维护特定分片中账户的最新状态,为上层应用提供该分片空间中最新的账户状态信息。与此同时分片链还将维护其他分片的快照信息,并对其完成共识过程,保障分片状态认知统一。并且分片链节点还将通过网络广播模块以特定规则向片内与片外广播最新区块的信息,维护系统运行。每个分片中预设有超时处理合约,用于处理各种超时交易的撤回操作,保障用户资产和状态信息的有效性。
区块链平台处理客户端上由本地账户发起的事务,该事务是源地址某分片(源分片)子账户向目的地址某分片(目的分片)子账户发起的事务处理请求,其可能为转账、合约调用等不同类型。为了便于描述,下文中用源账户与目的账户用来代表事务的双方子账户,用源分片、目的分片代表事务双方所在的分片。当一个事务的源分片与目的分片相同则为片内交易,若不是同一个分片则为跨片交易,在本发明中跨片交易存在三个阶段:前序阶段、后序阶段、反馈阶段,其中,前序阶段与反馈阶段在源账户分片执行,后序阶段在目的账户分片执行。不过对于某些跨片交易,反馈阶段是可忽略的。本发明中各分片间通过事务集合来处理跨片事务,例如A分片创建一个事务集合,A分片将其处理打包进A分片区块后,将A分片区块传递给B分片,B继续提取出相关的事务集合继续处理,并将该事务集合打包进B分片区块,事务集合处理结束,则该事务类型为A_B,事务集合的前序区块为A分片中该集合所在区块,后序区块为B分片中该集合所在区块。值得注意的是,A_B事务集合不仅仅包含A分片发向B分片的跨片事务,还包含少部分的B分片发向A分片的反馈阶段事务。其中,事务与区块均存在确认机制,区块确认则是在该区块后连续产生多个(以太坊:12,比特币:7)区块,确保该区块不会被分叉,包括事务确认、事务集合确认、区块头确认,三者均得到确认则认为其所在区块得到确认。此外,还有区块快照信息确认,是在该分片状态库中,该区块快照信息后连续存在多个同分片区块快照信息。
区块链平台采用的分片机制,可支持分片子网链按需扩展,每个子网链具有全局唯一的分片标识id,并严格成线性增长。分片标识id用于同一本地账户在不同分片上的子账户间的区分,形式包括但不限于在子账户20位地址空间后设定额外的标识位来区分不同分片的子账户。同一账户的不同分片子账户相互独立,当客户端构建新事务时,需明确从发送账户的特定分片子账户(源账户)向目的地址的特定分片子账户进行某种事务操作。由于同一账户的不同分片子账户所持有的密钥相同、根据密钥计算出的账户地址也相同,因此不同分片间同一个账户地址代表着相同的用户,在某些操作下,不同子账户之间可以相互替代。例如当A分片发生故障时,B分片合约将无法将资金退回到用户在A分片的子账户,此时用户可以在B分片中向合约申请,将资金退回到B分片上相同地址的子账户中。当现存区块链系统已经达到饱和状态,为了满足区块链的生态需求而增加分片链时,可以根据社区的共识,开设新的分片对原区块链系统进行扩展,即可线性增加分片标识符(id)用于新片的标识。新片启动时,各账户在该片的初始资产均为0,除可以通过产生区块所获的的奖励资产和手续费外,用户也可从根据个人需求从其他分片子账户进行资产的转移用于新片账户资产的流通。
2.1区块共识模块
区块共识模块负责产生新的区块信息,并根据共识算法在分片内对齐进行共识过程,其所采用的共识算法可以根据实际情况在链启动时灵活配置,包括但不限于pow/pos/pbft算法。
区块共识模块产生的区块包含本分片区块头、其他分片的快照信息、多个事务集合,本发明采用这样的区块结构能够有效区分事务的不同阶段、事务执行顺序,并能支持跨片事务打包验证。
其中,其他分片的快照信息为一个256位的二进制序列。
事务集合根据源分片、目的分片、事务对应交易所处状态划分为不同的集合,每个集合赋予不同的集合编号,同一个集合中所有事务的源分片和目的分片相同。
特别说明,为了方便表示,下文中用X:n表示X分片高度为n的区块,例如B分片快照信息(B:100)代表B分片高度100区块的快照信息,merkle树验证路径(B:92)代表该验证路径使用B分片高度92区块的事务merkle根进行验证,以及B_A事务集合(B:92)代表B分片高度92区块中的B_A类型事务集合。此外X分片中X_Y事务集合为需要X分片执行然后由Y分片继续执行且X分片为源分片的事务,Y分片中X_Y事务集合为X分片已经执行且需要Y分片继续执行的所有事务的集合。
为了更好的理解区块结构,以A分片为例,A分片某一区块中的A_X事务集合中即包含A分片账户发出的各种事务,其前序阶段已在A分片执行完毕,需要X分片继续处理;以及由X分片账户发出,但其后续阶段在A分片执行失败或存在退款操作等需要进入反馈机制等待X分片继续处理的事务。A_X事务集合由上述事务按顺序堆叠形成,特别注意A_A事务集合代表源账户与目的账户均在A分片中,所以A_A事务集合中事务为区块内所有片内事务,集合内的事务有不同的事务编号且每个事务集合在不同的区块中也有不同的事务集合编号。同理,在A分片中,X_A事务集合则来自于X分片区块中X_A事务集合,由该集合在X分片前序区块中的集合编号、一条merkle树验证路径、该事务在A分片本区块中的编号和一些事务信息组成,其中merkle验证路径用于对该集合事务进行验证,以确保该事务集合完整、顺序正确、并确实来自于X分片前序区块,此时,该集合事务状态处于后序阶段。该类事务集合必须等到其前序区块快照信息在A分片中得到确认,且其前序区块之前区块中X_A事务集合都已执行才能执行。例如X分片高度为100的X_A事务集合在A分片中执行时,必须等到A分片区块链中包含X_A事务集合在X分片中的区块快照信息,和所有X分片高度小于该区块的X_A事务集合都已经执行。在一个区块中,以分片A为例,对于特定分片X,至多包含一个A_X待处理事务集合,但可以包含多个X_A待处理事务集合,多个X分片快照信息。
根据本发明的一个示例,如图2所示,以A分片高度为100的区块为例,区块头为A:100,包含B分片高度为100的区块快照信息、C分片高度为101的区块快照信息、…、A_A事务集合、A_B事务集合、A_C事务集合、…、B_A事务集合(B:92)、B_A事务集合(B:93)、C_A事务集合(C:94)…,分别给这些事务集合赋予不同的事务编号,例如事务集合S1、S2等。其中,处于前序阶段的事务以A_B事务集合为例,该集合中包含多个以A分片为源分片B分片为目的分片的事务,且每个事务按顺序堆叠且赋予事务编号,例如事务_A_B_1、事务_A_B_2等。处于后序阶段的事务以B_A事务集合(B:93)为例,其包含该B_A事务集合在先序区块B:93中的编号、在区块B:93中的merkle树验证路径、该B_A事务集合在后序区块A:100中的编号、以及具体的包含编号的事务_B_A_1、事务_B_A_2等。
新区快生成之后需要验证其有效性,根据本发明的区块结构,区块验证策略包含区块头验证、区块快照信息验证、事务集合验证三分部分,只有三部分验证均通过的区块才有效,否则为无效区块,下面详细说明每个部分的验证。
2.11区块头验证
在本发明的区块头验证中,除了常规的区块头hash字段验证、上一区块hash是否匹配、区块高度、区块最大耗费计算资源值、区块签名等常规验证策略、共识算法验证外,为了保证merkle路径能够有效的验证各个事务集合的有效性与完整性,本发明改进了原有的事务merkle树的计算方式,变为先计算集合的merkle树再计算最终区块的merkle树根。具体而言,首先计算各个交易集合的merkle树根哈希,再以集合的编号+该集合merkle树根哈希为叶子结点重新构造merkle树,其中如果某一类型集合不在该区块中,则以集合的编号为叶子结点。其中,merkle树则为通过两个子结点hash拼接之后再做哈希计算得到父结点hash,进而不断迭代所构建的一棵二叉树。根据本发明的一个示例,以四个事务集合为例,其中S1、S2、S3、S4代表不同类型的交易事务集合,tx1、tx2、tx3代表集合S3内不同的事务,图3示出了以4个集合为例计算区块mekle根哈希的过程,hash代表mekle计算过程所用的哈希函数。首先每个集合以集合内的事务为叶子结点构建一棵二叉树,树上每个节点通过哈希函数计算两个子节点哈希和的哈希,例如,图3中由tx1、tx2、tx3计算出集合S3的mekle根哈希,之后再以系统中所有与本分片相关(源地址或目的地址在本分片)的事务集合为叶子结点构建新的一棵二叉树,例如图3中以S1、S2、S3、S4为例代表系统中所有与本分片相关的事务集合,每个集合使用集合编号+集合事务的merkle根哈希表示,如图3中S1、S2、S3表示事务集合的根哈希;如果区块内某一种集合为空集时则只用集合编号表示,如图中集合S4为例,之后通过哈希函数计算出整个区块的merkle树根,将通过上述过程计算处的区块的merkle树根与区块头中的区块事务merkle根hash进行对比验证以检验该集合merkle根哈希+集合编号与验证路径进行计算是否与区块头的事务merkle根哈希相匹配,对比一致则验证通过,对比不一致则验证不通过。
优选的,本发明中,集合编号则为集合类型+分片标志位+区块高度+该类型集合总数+该集合为第几个,例如AB_B_100_03_02则代表B分片高度100区块中3个A_B事务集合中第二个集合。如果区块中不含某类集合,则编号为XY_**_**_00_00。由于X_Y类型的事务集合在X分片区块中至多含有一个,所以X分片区块中含有的XY集合编号确定为XY_X_**_01_01。
2.12区块快照信息验证
区块快照信息验证主要是指区块中分片快照信息哈希验证,为了方便理解,假设区块对应节点所属分片为A分片,该区块中其他分片X的快照信息则由X分片某一高度区块头信息、该区块头所代表的X分片区块中处理的所有A_X类型事务集合的merkle根哈希、集合编号、以及集合验证路径组成,如果该区块中包含多个A_X类型事务集合集合,则都应包含在该快照信息内。对于不同分片来说,收集的同一区块的快照信息均不同相同,但都是由同一个区块加工产生。例如,A分片区块中收集的B分片区块高度100的快照信息与C分片区块中手机的B分片区块高度100的快照信息不一样,但是都是由B分片区块高度100的区块加工产生,只不过A分片中收集的是B分片区块高度100的区块中与A分片相关的事务,C分片中收集的是B分片区块高度100的区块中与C分片相关的事务。根据本发明的一个示例,如图4所示,以A分片区块中收集的B分片快照信息(B:100)结构为例,该快照信息即为B分片高度为100的区块中对A分片有用的信息,包含B分片高度100区块的区块头、以及这个区块中所有的AB事务集合的merkle根哈希、集合的编号、以及集合的merkle树验证路径,图4中以集合S1为例列举了S1集合在快照信息中的所提供各个元素。但由于实际区块结构中只有快照的哈希信息,并没有直接包含实际的快照详细信息,所以在验证分片最新区块的过程中,区块链节点会先根据快照信息哈希检测自己是否收到过该快照信息,如果没有则向发送区块的节点以及其他邻节点请求该快照信息,如果仍未收到匹配的快照信息,则认为该区块无效。
当前区块收到匹配的某分片快照信息后,则验证该分片快照信息中的区块头信息是否完备,是否与节点状态库中该分片区块状态相冲突,该快照中区块头的前一区块是否已经存在于当前区块对应的分片中,除此之外还对该分片快照信息附属事务集合信息进行校验,首先检验该集合merkle根哈希+集合编号与验证路径进行计算确定其是否与该分片对应的区块头的事务merkle根哈希相匹配,其次在本地区块链状态库中检测验证该事务集合是否由该分片发出,且该事务集合前的各个同类型集合是否均已包含在之前或当前的该分片快照信息中,若满足则该分片快照信息有效,否则该分片快照信息无效。
2.13事务集合验证
事务集合验证主要是验证区块中事务的有效性,包括两类事务集合验证,一种是以当前区块所在分片为缘分片的事务集合,一种是以当前区块所在分片为目的分片的事务集合,为方便理解,当前分片以A分片为例,X代表其他分片:
A_X类型事务集合中的事务验证:对所有A_X类型事务集合中源地址来自于A分片的事务基于交易顺序重新排序,按照顺序执行事务,并验证事务是否执行成功,最后计算状态是否与区块头状态一致,如果执行失败或状态不一致,则该区块无效;
X_A类型事务集合验证:首先,检验该事务集合在X分片中前序区块对应的区块快照信息在本分片(A分片)是否得到确认,(确认方法可根据需要在链启动时设置,包括但不限于该区块快照信息深度大于等于7,即该区块快照信息后面已经连续堆叠7个同分片的区块快照信息);其次,根据集合编号确认该集合之前的同类型集合是否都已经执行,如未执行则验证失败即该区块无效,若已执行,则通过该集合事务merkle树根+集合编号与集合中的merkle树路径,验证是否与该集合对应的X分片前序区块merkle根哈希匹配;之后按照集合内的事务顺序进行事务执行操作,最后计算状态是否与区块头状态一致。注意此集合中交易失败不会导致区块无效,而是判断是否进入反馈阶段,如果无需反馈阶段,则该事务执行完成,否则检测在A_X类型事务集合中是否存在该事务的反馈事务,若没有,则该区块无效。
2.2网络广播模块
本发明区块链事务处理系统中的网络广播模块不仅用于维护片内区块链节点和客户端之间的网络连接,还维护与其他分片节点间的通信连接,实现跨片事务的通信,此外,玩过广播模块还负责接收并验证从客户端和片内节点发来的各种事务信息、从片内节点发来的各种区块信息、以及从其余分片网络广播模块发来的各种分片快照信息、事务集合信息等,还负责向分片内广播所接收到的上述各类信息。当产生新的区块时,网络广播模块不仅向片内广播区块信息,还将以快照的形式向其余分片节点发送相关区块快照信息。
其中,客户端发送的事务交易消息,对于属于本分片的事务信息仅做片内广播,即便收到了属于其他分片的事务,网络广播模块会根据事务源账户的标识位验证该事务是否属于本分片从而屏蔽非本分片事务;对于本分片产生的区块信息,则在区块验证之后向本分片内节点进行广播,与此同时,基于区块信息,通过添加各种编号和验证路径,进行重新排序等操作,以及对于缺乏的集合信息补充编号和验证路径,产生该区块对应不同分片的区块快照信息以及事务集合信息,向其余分片节点广播该区块的快照信息,以及包含的事务集合信息;对于接受的其余分片快照信息,则在验证之后在片内进行广播操作;与此同时,在共识过程中,负责回应其他节点的快照信息请求,保证共识过程的顺利进行。
2.3节点事务处理模块
节点事务处理模块主要负责事务的相关验证与执行操作,同时还负责维护本分片的各种状态信息,以及通过区块链上各分片快照信息还原其他分片的区块链的区块状态、其他分片中需要本分片处理的事务集合、以及本分片事务集合在其他分片上的执行情况。为了提升效率,本发明中设计的节点事务处理模块将维护待共识的各分片快照信息、等待确认执行的其余分片事务集合、客户端发来的未处理事务池等多个数据资源库。
节点事务处理模块是本发明三阶段事务处理机制的执行者,当节点收到要执行的事务时,节点会调用节点事务处理模块进行事务的验证以及执行。节点事务处理模块会根据事务的来源、事务的参数、以及事务执行时上下文环境判断接下来要执行事务的哪一阶段。例如,如果源地址与目的地址均属于本分片,则为片内事务可以直接执行;如果源地址属于其他分片、目的地址属于节点所在分片,事务将执行后序阶段;如果源地址属于本分片、目的地址属于其他分片,若此时事务来源于节点候选事务池则事务将执行前序阶段,否则若事务来源于其他分片区块中的事务集合则事务将执行反馈阶段。对于不同阶段的事务,节点事务处理模块将根据三阶段处理规则,选择不同的验证方式。对于前序阶段事务,只会验证事务签名以及验证账户状态等;对于后序阶段事务,节点会验证事务的源分片前序区块的快照信息在本分片(事务的目的分片)是否确认以及该事务前的同类型事务是否都执行了后序阶段;对于反馈阶段,节点会验证事务的目的分片后序区块的快照信息在本分片(事务的源分片)是否确认以及该事务前的同类型事务是否都执行了反馈阶段。如果验证失败,节点将根据三阶段规则进行对于异常事务的处理,例如抛弃事务、事务集合或快照信息等。
当事务验证通过后,节点事务处理模块将会根据不同阶段规则执行该事务,例如对于片内事务进行源账户和目的账户的更新,对于前序阶段节点更新源账户状态;如果处于后序阶段则更新目的账户;若是反馈阶段则对源账户根据事务参数更新源账户。
此外节点事务处理模块对于事务的执行顺序也与现有技术有着不同的处理方式,在生成区块过程中,对于客户端发来的未处理事务,节点事务处理模块将按照交易的产生顺序(即根据事务中的账户nonce字段)按顺序执行,对于其余分片发来的事务集合信息,当事务集合来自于同一分片,只能按其在源分片中前序区块高度顺序执行,执行时必须等到源分片前序区块的快照信息在本分片得到确认,执行过程中按集合内的事务顺序递增执行。对于来自不同分片的事务集合,则不规定执行顺序,在产生区块时,节点可自行确定。此外,对于其余分片发来事务集合中事务执行失败或存在反馈操作,则在事务信息中增加一系列的状态信息和需要继续执行的相关操作,并将该信息添加到该区块发给该事务源账户分片的事务集合中;之后将这些事务按区块结构重新排序将不同事务放在不同集合,并计算集合与区块的事务merkle树,待计算出共识信息后生成区块,通过网络广播模块全网广播。当收到本分片新产生的区块时,对区块验证之后,按区块内顺行进行执行操作,与生成区块执行方式相同,最后根据执行结果更新本地状态数据库。在执行过程中对于超时事务将根据事务处理的阶段选择抛弃事务或只是不执行事务但依旧打包进去块中。
由于其余分片的事务集合与客户端发来的未处理事务之间理论上不存在事务冲突,所以可不规定这两大类事务的执行顺序,且这个顺序不影响最终运行结果,事务可并行执行,提高执行效率。基于本发明的区块链事务系统产生的区块结构,解决了事务之间的相关性以及顺序性,防止执行乱序造成结果错误。
2.4超时处理合约
超时处理合约用于跨片事务长时间未执行导致跨片事务失效后源账户退回的相关操作,挽回自身损失,从而确保跨片事务执行的定时原子性。合约为预编译合约,当链启动时,自动部署在区块链上,并为所有节点所共识。超时的界定则是由事务中的后序阶段超时时限(用x表示)与反馈阶段超时时限(用y表示)来界定,即后序阶段操作在目的账户分片区块高度小于等于x时有效,反馈阶段操作在源账户分片区块高度小于等于y时有效。
根据本发明的一个示例,假设事务源分片为A,目的分片为B,对于后序阶段超时,源账户可以向超时合约发送一笔事务请求,进行相关的事务退回操作。收到请求后,超时合约首先检测要退回的事务是否满足三个条件:该事务已在源分片A中(即合约所在分片)执行,并打包进源分片(A分片)区块BlockA;根据源分片链上目的分片的快照信息,确认区块BlockA内的跨片交易集合在目的分片(B分片)高度为x的区块BlockB前未被执行;包含目的分片B:x区块的快照信息在源分片(A分片)区块链中的快照信息状态库中得到确认。若满足这三个条件,则执行前序阶段的退回操作。用户可根据情况设置反馈阶段超时信息,但因为反馈阶段在源分片中执行,当反馈阶段超时则认为源分片已经出现了事务堵塞等异常情况,所以节点可以通过在目的分片的子账户,向目的分片超时合约发送相关请求,将反馈阶段中的退款,退回到源账户在目的分片上的子账户。此时超时合约判断标准与后序阶段超时相似,即判断是否满足三个条件:该事务后序阶段已在目的分片执行,并打包进目的分片(B分片)区块BlockB中;根据目的分片区块链上的源分片快照信息判断,BlockB区块内的交易集合在源分片(A分片)高度为y的区块BlockA:y前未被执行;且BlockA:y区块快照信息已经被目的分片(B分片)确认。若满足这三个条件,则执行前序阶段的退回操作。
由上述描述可知,本发明的区块链事务系统从以下几个方面来解决了现有技术存在的问题:
(1)本发明采用三阶段事务处理机制,相对于现有技术下的两阶段处理机制,本发明增加了反馈阶段,解决了因缺乏反馈机制导致的应用扩展性问题。
(2)本发明的区块链事务处理系统改进了区块结构,尤其是在区块中增加其他分片快照信息、后续阶段的事务集合中增加了执行该事务集合中事务前序阶段的分片相关信息,通过验证机制,保障了有相关性和顺序性事务的执行顺序不出错。
(3)基于本发明区块链事务处理系统产生的区块结构,本发明区块链事务处理系统采用集合验证的方式验证区块,极大的降低了区块验证的计算和存储开销。
(4)本发明的区块链事务系统中区块共识包含了节点各种共有状态,保证了区块链上节点全局状态认知的统一。
(5)本发明的区块链事务系统中采用了超时处理合约,有效的保证了交易时效性。
(6)本发明的区块链事务处理系统的分片机制简单,扩展性强,无单链瓶颈限制,解决了现有技术下的因单链瓶颈限制带来的区块链规模扩展性问题。
下面结合具体的示例来说明本发明的区块链事务处理系统的具体应用。
示例中主要以跨片事务为例,从跨片转账、跨片调用智能合约触发反馈阶段以及跨片转账超时退款为例。
根据本发明的一个示例,采用本发明的区块链事务处理系统执行用户从分片A子账户a向分片B子账户b转移数量为V的资产的操作,如图5所示,包括如下步骤:
S1、客户端的账户管理模块收到用户转账请求,客户端获取账户a在分片A的地址与余额信息,并根据转账金额V生成交易信息;
S2、判断账户a在分片A中的交易余额是否足够,若余额不足,则返回错误信息,交易结束;如果余额足够,则转到步骤S3;
S3、生成一笔由分片A中的账户a发向分片B中的账户b、转账金额为V、超时时限为h的跨片事务tx,创建事务tx成功并将事务在分片A进行广播;
S4、分片A区块链节点收到事务tx后,验证事务tx是否有效,包括验证事务签名以及检查账户信息,如果无效,返回错误信息;如果有效,执行步骤S5;
S5、验证通过后通过分片A的节点广播模块继续广播该事务tx,与此同时,分片A的节点执行该事务tx,将分片A中账户a的资产余额减少V,并将事务打包进分片A的区块,假设区块高度为h,将该事务打包进区块A:h,A分片成功执行该事务tx的前序阶段后向分片B广播区块A:h的快照信息以及区块A:h中与分片B相关的事务集合信息;如果账户信息出错则抛弃该事务,回溯状态(账户a的余额+V),返回错误信息,事务处理结束;
其中,在向分片B广播的区块A:h快照信息中包含所有与分片B相关的事务集合信息,包括整合该区块内B_A事务的集合信息、事务集合编号、事务集合的merkle树验证路径,以及该区块内的A_B事务的集合信息、事务集合编号、事务集合的merkle树验证路径;
需要说明的是,如果分片A当前节点收到分片内其他节点的高度为h的区块,则对区块进行验证,并按顺序执行区块内的事务,执行成功则打包区块并向其他分片广播相关的快照信息,如果执行失败则抛弃区块,回溯分片内账户状态;
S6、分片B收到分片A高度为h(A:h)的区块快照信息后,经过事务处理模块验证后,分片B对分片A区块A:h快照信息进行共识,然后打包进区块;并实时维护本地数据库信息,当分片B中A:h快照信息得到确认后即A:h+x快照信息共识完成(x为确认块数),且A:h区块之前的A_B事务结合已经全部执行时则进入步骤S7;
S7、当执行环境达成后,分片B的节点将含有事务tx的A_B事务集合打包进B分片的区块(其中,若检验到尚未等待x个区块,则该区块非法),并判断该事务tx是否超时,即检查超时时限h是否大于当前分片B将事务tx打包进的区块高度,如果是则未超时,即分片B则执行步骤S8,如果否则超时,则执行步骤S9;
S8、分片B的节点执行区块中的A_B事务的后续阶段,将分片B中的账户b的资产增加V,分片B的节点将该事务打包进区块并广播该区块,形成共识,事务tx执行完成;
S9、事务tx的超时时限h小于分片B将事务tx打包进的区块高度,则tx无效,分片B不执行事务tx,等待客户端检查发现事务超时以调用超时合约退款。
上述过程中,客户端生成事务tx并将事务广播后,就开始跟踪事务tx的执行状态,检查其是否在分片B区块高度h前执行完成,若事务tx执行完成,则事务tx结束;若事务tx超时仍未完成,则账户a可以向链上的超时合约发送一笔事务请求,进行相关事务tx的退款操作。超时合约收到退款请求后,检查是否满足:该事物已在A:h中是否包含事务tx、B:h前的区块快照信息前是否已在A分片中得到确认、A:h中A_B事务集合是否未在B:h前执行,条件都满足后,则执行前序阶段的退款操作,A分片账户a的资产增加V。
根据本发明的一个示例,采用本发明的区块链事务处理系统执行分片A子账户a调用分片B合约账户b’向合约转移数量为V的资产的操作,如图6所示,包括如下步骤:
T1、客户端的账户管理模块收到用户转账请求,客户端获取账户a在分片A的地址与余额信息,以根据转账金额V生成交易信息;
T2、判断账户a在分片A中的交易余额是否足够,若余额不足,则返回错误信息,交易结束;如果余额足够,则转到步骤T3;
T3、生成一笔由分片A中的账户a发向分片B中的账户b’、转账金额为V、超时时限为h的跨片事务tx,并将事务在分片A进行广播;
T4、分片A区块链节点收到事务tx后,验证事务tx是否有效,包括验证事务签名以及检查账户信息,如果无效,返回错误信息;如果有效,执行步骤T5;
T5、验证通过后通过分片A的节点广播模块继续广播该事务tx,与此同时,节点执行该事务tx,将分片A中账户a的余额减少V,并将事务打包进区块,假设区块高度为h,将该事务打包进区块A:h,A分片成功执行该事务tx的前序阶段后向分片B广播区块A:h的快照信息以及区块A:h中与分片B相关的事务集合信息;如果账户信息出错则抛弃该事务,回溯状态(账户a的余额+V),返回错误信息,事务处理结束;
其中,在向分片B广播的区块A:h快照信息中包含所有与分片B相关的事务集合信息,包括整合该区块内B_A事务的集合信息、事务集合编号、事务集合的merkle树验证路径,以及该区块内的A_B事务的集合信息、事务集合编号、事务集合的merkle树验证路径;
需要说明的是,如果分片A当前节点收到分片内其他节点的高度为h的区块,则对区块进行验证,并按顺序执行区块内的事务,执行成功则打包区块并向其他分片广播相关的快照信息,如果执行失败则抛弃区块,回溯分片内账户状态;
T6、分片B收到分片A高度为h(A:h)的区块快照信息后,经过事务处理模块验证后,分片B对分片A区块A:h快照信息进行共识,然后打包进区块;并实时维护本地数据库信息,当分片B中A:h快照信息得到确认后即A:h+x快照信息共识完成(x为确认块数),A:h区块之前的A_B事务结合已经全部执行时则进入步骤T7;
T7、当执行环境达成后,分片B的节点将含有事务tx的A_B事务集合打包进B分片的区块(其中,若检验到尚未等待x个区块,则该区块非法),并判断该事务tx是否超时,即检查超时时限h是否大于当前分片B将事务tx打包进的区块高度,如果是则未超时,即分片B则执行步骤T8,如果否则超时,则执行步骤T9;
T8、分片B的节点执行区块中的A_B事务的后续阶段,根据合约状态执行事务tx,将分片B中的合约账户b’的资产增加V,进入步骤T10
T9、事务tx的超时时限h小于分片B将事务tx打包进的区块高度,则tx无效,分片B不执行事务tx,等待客户端检查发现事务超时以调用超时合约。
T10、判断是否需要进入反馈阶段,如果需要不需要进入反馈阶段,之恶事务执行结束;如果需要进入反馈阶段,分片B生成反馈阶段操作,将事务打包进区块(例如区块B:h’)的B_A事务集合,并向分片A广播该区块的苦熬宅信息以及与分片A相关的事务处理集合;
T11、分片A对分片B发来的快照信息进行共识,并实时维护本地数据库信息,判断是否满足:B:h’+x快照信息共识完成(x为确认块数)、B:h’区块之前的B_A事务集合已经全部执行,如果满足,则共识完成,分片A执行B:h’快照信息中对应的B_A事务集合,执行事务tx反馈阶段的操作;如果不满足则继续共识。
上述过程中,客户端生成事务tx并将事务广播后,就开始跟踪事务tx的执行状态,检查其是否在分片B区块高度h前执行完成,若事务tx执行完成,则事务tx结束;若事务tx超时仍未完成,则账户a可以向链上的超时合约发送一笔事务请求,进行相关事务tx的退款操作。超时合约收到退款请求后,检查是否满足:该事物已在A:h中是否包含事务tx、B:h前的区块快照信息前是否已在A分片中得到确认、A:h中A_B事务集合是否未在B:h前执行,条件都满足后,则执行前序阶段的退款操作,A分片账户a的资产增加V,合约账户b’中的资产减少V。
本发明改进了区块结构,解决了事务执行顺序不可预测的问题,同时,本发明对跨片事务采用三阶段事务并行处理机制,通过增加反馈机制来提高分片区块链的扩展性,实现在复杂环境下跨片交易的处理,并通过共识机制保证片内全局状态认知进度一致,保证区块链的安全性。本发明通过区块整体打包验证执行实现更小的存储计算开销,减轻节点运营负担,在保证事务执行顺序统一的情况下,实现通量提升。并通过在共识过程中增加对于其他分片的状态认知信息,让节点知道其他分片事务处理进度,并通过引入超时合约实现事务处理的定时原子性。
本发明的目的在于,解决区块链基础架构和核心协议面临的通量优化及扩展性受限的问题。以多分片并行处理事务角度入手,提出一种三阶段区块链事务并行处理机制,在保障系统安全性和交易原子性的前提下,解决了原有通量优化方案的瓶颈问题,大幅减少了跨片交易处理带来的冗余与安全性问题,以及原有分片方案无法适用于复杂应用环境的问题。
因为有一部分实际事务不存在反馈阶段,实际跨片比例也可能低于所以实际通量水平可能高于该提高水平。假设一个区块中包含M个交易集合,那么集合的merkle验证路径长度为log2M。假设各分片产生区块数量相差不多时,M≈2N-1,其中N-1个为前序集合,N-1个为后序集合,1个为片内集合,那么区块链上用于事务验证的额外存储2*(N-1)*log2(2N-1)*32字节,主要区块内后序阶段集合与快照信息中集合的验证路径,设一个集合中平均为K笔事务,事务单独验证所需(N-1)K*log2((2N-1)K)*32字节额外存储用于验证路径,所以本发明将多片环境中额外的验证路径存储减少到了倍。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种用于无主链多分片区块链的事务处理系统,其特征在于,包括:
客户端,用于创建和管理本地账户集合信息并定期获取本地账户集合的全网最新状态、基于账户间的交易需求生成包含源分片和目的分片信息的事务并发送给事务对应的分片执行;
区块链平台,用于处理接收和执行区块链上账户状态改变的事务,其包括多个分片,每个分片包括所有运行相同区块链协议的节点;每个分片基于接收到的事务,改变本分片上对应账户的状态并将事务对应交易打包进新区块以完成事务的执行;
其中,所述区块链平台上每个分片打包的新区块包括:本分片的区块头、其他分片的快照信息、与本分片相关的多个事务集合;其中,所述与本分片相关的多个事务集合包括以本分片为源分片的事务集合、和/或以本分片为目的分片的事务集合,事务分为片内事务和跨片事务,且每个跨片事务包括按顺序执行的前序阶段、后序阶段、反馈阶段,且每个集合中的事务按执行顺序进行堆叠;所述跨片事务的前序阶段、后序阶段、反馈阶段按照如下方式执行:在源分片执行跨片事务的前序阶段,其中,源分片对本分片中的处于前序阶段的事务按事务产生顺序执行,事务执行完毕后打包进源分片的最新区块中,并在区块链全网进行广播;在目的分片执行事务的后序阶段,其中,来自于同一源分片的事务,目的分片按照事务在源分片中的前序区块高度顺序执行事务在本分片中的后序阶段;基于反馈需求,在源分片执行事务的反馈阶段,其中,源分片根据处于反馈阶段的事务在源分片中对应的区块高度顺序执行。
2.根据权利要求1所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,
新区块的本分片区块头中包含该区块对应的区块事务根hash;
新区块的每一个其他分片的快照信息包含该其他分片的某一高度的区块头信息以及该其他分片中处理的所有与本分片相关的事务集合的merkle根hash、集合编号、集合验证路径;
新区块的事务集合被赋予不同的集合编号。
3.根据权利要求2所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,
客户端生成的交易事务分为片内事务和跨片事务,所述片内事务是源分片和目的分片为同一分片的事务,所述跨片事务是源分片和目的分片为不同分片的事务;
其中,所述跨片事务包括前序阶段、后序阶段以及反馈阶段;其中,跨片事务的前序阶段在源分片上执行、后序阶段在目的分片上执行、反馈阶段在源分片上执行。
4.根据权利要求3所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,所述客户端包括:
账户管理模块,用于创建本地账户、维护本地账户对应的子账户、生成和保存账户密钥,其中,每个本地账户在每个分片上有一个对应的子账户,同一个本地账户对应的所有子账户密钥相同;
客户端事务处理模块,用于事务数据管理和事务跟踪;其中,事务数据管理包括事务数据的生成和发送;事务跟踪包括对已发送的事务的执行状态进行持续跟踪并将跟踪的信息反馈给用户、以及基于用户反馈发出事务请求以执行撤回操作。
5.根据权利要求4所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,所述每个分片上的每个节点包括:
区块共识模块,用于产生新的区块,并在本分片内对新区块进行共识过程;
网络广播模块,用于维护本分片内节点和客户端的网络连接以及与其他分片之间的通信连接,将区块共识模块产生的新区块向片内广播并将区块快照发送给相关的其他分片节点;
节点事务处理模块,用于本分片相关事务的验证与执行;
超时处理合约,用于执行超时未处理的跨片事务的撤回操作。
6.根据权利要求5所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,所述区块共识模块用于对新区块进行区块头验证、分片快照信息验证、事务集合验证,其中:
区块头验证是通过计算该区块头所在区块中的事务集合的merkle树获取最终区块的merkl e树根并与区块头中的区块事务根hash进行对比以验证二者是否匹配以验证事务集合的有效性与完整性;
分片快照信息验证是验证产生新区块的节点是否收到过匹配的其他分片快照信息、验证其他分片快照信息中的区块头信息是否完备、以及验证其他分片快照信息中的事务集合有效性;
事务集合验证是验证该区块中以产生该区块的节点所在分片为源分片的事务的集合中的事务是否按顺序执行成功,以及验证该区块中以产生该区块的节点所在分片为目的分片的事务集合中对应的源分片的快照信息是否在本分片中得到验证确认。
7.根据权利要求6所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,
所述节点事务处理模块根据其所在分片接收到的事务来源判断事务所处阶段,根据不同阶段选择不同的验证方式,并按照不同阶段的规则执行验证通过的处于不同阶段的事务,其中:
所述节点事务处理模块验证处于前序阶段的事务对应的事务签名以及账户状态,验证通过后更新该事务对应的源分片子账户状态;
所述节点事务处理模块验证处于后序阶段的事务对应的源分片前序区块的快照信息是否在本节点所在分片的得到确认以及该事务前的同类型事务的后序阶段是否都得到了执行,验证通过后更新该事务对应的目的分片子账户状态;
所述节点事务处理模块验证处于反馈阶段的事务对应的目的分片后序区块的快照信息是否在本节点所在分片得到确认以及该事务前的同类型事务的反馈阶段是否都得到了执行,验证通过后更新该事务对应的源分片子账号状态。
8.根据权利要求7所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,
所述超时处理合约用于处理后序阶段超时未处理的跨片事务的源分片子账户退回操作以及反馈阶段超时未处理的跨片事务的目的分片子账户退回操作,其中:
后序阶段超时未处理的跨片事务的源分片子账户退回操作是指在预设的后序阶段超时时限前,事务的后序阶段未执行导致跨片事务失效,源分片子账户向事务对应的目的分片的超时合约发送退回相关的事务请求,超时合约检测通过后执行退回操作;
反馈阶段超时未处理的跨片事务的目的分片子账户退回操作是指在预设的反馈阶段超时时限前,事务的反馈阶段未执行,源分片子账户向事务对应的目的分片的超时合约发送退回相关的事务请求,超时合约检测通过后执行退回操作。
9.根据权利要求8所述的一种用于无主链多分片区块链的事务处理系统,其特征在于,
所述预设的后序阶段超时时限是事务后序阶段有效的区块高度;
所述预设的反馈阶段超时时限是事务反馈阶段有效的区块高度。
10.一种基于权利要求1至9任一所述的一种用于无主链多分片区块链的事务处理系统的事务处理方法,其特征在于,所述处理方法包括:
根据交易需求,由客户端生成多个事务,事务中包含处理事务的源分片信息、目的分片信息,并将事务发送给对应的源分片和目的分片;
分片基于接收到的事务,改变本分片上对应账户的状态并将事务对应交易打包进新区块以完成事务的执行;其中,所述分片打包的新区块包括:本分片的区块头、其他分片的快照信息、与本分片相关的多个事务集合;其中,所述与本分片相关的多个事务集合包括以本分片为源分片的事务集合、和/或以本分片为目的分片的事务集合,其中,事务分为片内事务和跨片事务,且每个跨片事务包括按顺序执行的前序阶段、后序阶段、反馈阶段,且每个集合中的事务按执行顺序进行堆叠;所述跨片事务的前序阶段、后序阶段、反馈阶段按照如下方式执行:在源分片执行跨片事务的前序阶段,其中,源分片对本分片中的处于前序阶段的事务按事务产生顺序执行,事务执行完毕后打包进源分片的最新区块中,并在区块链全网进行广播;在目的分片执行事务的后序阶段,其中,来自于同一源分片的事务,目的分片按照事务在源分片中的前序区块高度顺序执行事务在本分片中的后序阶段;基于反馈需求,在源分片执行事务的反馈阶段,其中,源分片根据处于反馈阶段的事务在源分片中对应的区块高度顺序执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010511562.8A CN111736963B (zh) | 2020-06-08 | 2020-06-08 | 一种用于无主链多分片区块链的事务处理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010511562.8A CN111736963B (zh) | 2020-06-08 | 2020-06-08 | 一种用于无主链多分片区块链的事务处理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111736963A CN111736963A (zh) | 2020-10-02 |
CN111736963B true CN111736963B (zh) | 2022-10-11 |
Family
ID=72648469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010511562.8A Active CN111736963B (zh) | 2020-06-08 | 2020-06-08 | 一种用于无主链多分片区块链的事务处理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111736963B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113205424B (zh) * | 2020-10-28 | 2023-08-25 | 支付宝(杭州)信息技术有限公司 | 在区块链中部署和调用合约的方法和装置 |
CN112463310B (zh) * | 2020-12-08 | 2024-04-23 | 北京众享比特科技有限公司 | 基于节点分片的事务数据处理方法、系统、设备和介质 |
CN112261162B (zh) * | 2020-12-21 | 2021-03-26 | 支付宝(杭州)信息技术有限公司 | 执行跨片事务的方法及系统、主链节点和目标分片节点 |
CN112261160B (zh) * | 2020-12-21 | 2021-04-06 | 支付宝(杭州)信息技术有限公司 | 包含分片的区块链系统中退出跨片事务的方法及系统 |
CN112579261A (zh) * | 2020-12-21 | 2021-03-30 | 支付宝(杭州)信息技术有限公司 | 退出跨片事务的方法和系统、主链节点和目标分片节点 |
CN112261156B (zh) * | 2020-12-21 | 2021-04-06 | 支付宝(杭州)信息技术有限公司 | 一种提交跨片事务的方法及系统、主链节点和源分片节点 |
CN112732831B (zh) * | 2020-12-31 | 2023-12-15 | 上海简苏网络科技有限公司 | 一种交易源目地址分离处理方法及系统 |
CN112669155B (zh) * | 2020-12-31 | 2024-05-03 | 杭州趣链科技有限公司 | 基于区块链的交易分发执行方法、装置服务器及存储介质 |
CN112866025B (zh) * | 2021-01-14 | 2022-10-11 | 公安部第三研究所 | 一种智能合约的分片处理方法 |
CN112910965B (zh) * | 2021-01-18 | 2022-12-06 | 香港理工大学深圳研究院 | 一种提交分片型区块链下跨分片事务的方法及系统 |
CN112907252B (zh) * | 2021-02-02 | 2023-10-31 | 中国科学院计算技术研究所 | 一种基于多人链下通道的区块链交易方法及系统 |
CN112801665B (zh) * | 2021-03-19 | 2021-08-24 | 北京万物智链科技有限公司 | 一种基于服务器中继的跨链交易方法及系统 |
CN112988073B (zh) * | 2021-03-26 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种可降低区块链存储开销的阶梯式数据存储方法及系统 |
CN113157805B (zh) * | 2021-04-16 | 2024-05-03 | 西安瓜大网络科技有限公司 | 一种事务定序共识方法和系统 |
CN113064768B (zh) * | 2021-04-19 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法和装置 |
CN113254170B (zh) * | 2021-06-17 | 2021-11-05 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中退出跨片事务的方法及装置 |
CN114385756A (zh) * | 2021-06-17 | 2022-04-22 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法和区块链节点 |
CN113807847B (zh) * | 2021-09-15 | 2023-07-25 | 南京信息工程大学 | 一种可信区块链分片性能优化方法 |
CN113965570B (zh) * | 2021-10-25 | 2024-05-17 | 网络通信与安全紫金山实验室 | 区块链结构以及区块链事务执行方法、装置、设备和介质 |
CN115426125A (zh) * | 2022-01-28 | 2022-12-02 | 中国科学院计算技术研究所 | 一种用于区块链分片系统的区块有效性验证方法 |
CN118679708A (zh) * | 2022-02-07 | 2024-09-20 | 区块链许可股份公司 | 基于区块链的隐私增强外包数据存储 |
CN114331481B (zh) * | 2022-03-15 | 2022-06-03 | 北京伊甸之尘科技有限公司 | 基于以太坊信标链体系的产品防伪溯源系统 |
CN117648159B (zh) * | 2023-11-08 | 2024-07-19 | 东南大学 | 一种区块链事务并行化执行方法、装置和电子设备 |
CN117236961B (zh) * | 2023-11-16 | 2024-02-20 | 中国兵器工业信息中心 | 链上链下的多方交易安全监管方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3064499A1 (en) * | 2017-06-14 | 2018-12-20 | Visa International Service Association | Systems and methods for creating multiple records based on an ordered smart contract |
CN109949160A (zh) * | 2019-03-27 | 2019-06-28 | 上海优扬新媒信息技术有限公司 | 一种区块链的分片方法及装置 |
CN110287205A (zh) * | 2019-06-21 | 2019-09-27 | 中国银联股份有限公司 | 一种区块链跨分片交易数据处理方法及装置 |
CN111026511A (zh) * | 2019-11-20 | 2020-04-17 | 中国科学院计算技术研究所 | 基于事务数据分区-链间融合的区块链并行系统及方法 |
CN111046437A (zh) * | 2019-10-31 | 2020-04-21 | 中国科学院计算技术研究所 | 基于同构多链的区块链并行事务处理方法及系统、终端 |
-
2020
- 2020-06-08 CN CN202010511562.8A patent/CN111736963B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3064499A1 (en) * | 2017-06-14 | 2018-12-20 | Visa International Service Association | Systems and methods for creating multiple records based on an ordered smart contract |
CN109949160A (zh) * | 2019-03-27 | 2019-06-28 | 上海优扬新媒信息技术有限公司 | 一种区块链的分片方法及装置 |
CN110287205A (zh) * | 2019-06-21 | 2019-09-27 | 中国银联股份有限公司 | 一种区块链跨分片交易数据处理方法及装置 |
CN111046437A (zh) * | 2019-10-31 | 2020-04-21 | 中国科学院计算技术研究所 | 基于同构多链的区块链并行事务处理方法及系统、终端 |
CN111026511A (zh) * | 2019-11-20 | 2020-04-17 | 中国科学院计算技术研究所 | 基于事务数据分区-链间融合的区块链并行系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111736963A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111736963B (zh) | 一种用于无主链多分片区块链的事务处理系统及方法 | |
Xu et al. | A survey of blockchain consensus protocols | |
CA3055108C (en) | System and method for parallel-processing blockchain transactions | |
JP7472333B2 (ja) | バリデータノードにより提供されるブロックチェーントランザクションをマイニングする方法及びシステム | |
Miller et al. | The honey badger of BFT protocols | |
US20190354518A1 (en) | Chain mesh network for decentralized transaction systems | |
US11520777B2 (en) | High performance distributed system of record with extended transaction processing capability | |
JP7165148B6 (ja) | ブロックチェーンネットワークにおける整合性のある分散型メモリプールのための方法及びシステム | |
Hong et al. | Scaling blockchain via layered sharding | |
JP2022508247A (ja) | 信頼度ベースのコンセンサスを伴う高性能分散型記録システム | |
CN111046437A (zh) | 基于同构多链的区块链并行事务处理方法及系统、终端 | |
CN115859343A (zh) | 一种交易数据处理方法、装置以及可读存储介质 | |
Wang et al. | Prism removes consensus bottleneck for smart contracts | |
WO2021070106A1 (en) | Methods and devices for secure symbiotic mining | |
Dinh et al. | A blueprint for interoperable blockchains | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
Tennakoon et al. | CollaChain: A BFT collaborative middleware for decentralized applications | |
Sgier | Bazo–A Cryptocurrency from Scratch | |
CN115426125A (zh) | 一种用于区块链分片系统的区块有效性验证方法 | |
Harishankar et al. | Payplace: A scalable sidechain protocol for flexible payment mechanisms in blockchain-based marketplaces | |
CN111222876A (zh) | 一种用于解决跨链耦合性的方法及系统 | |
Gupta | Blockchain Optimization Techniques and its Application in Fintech | |
Harishankar et al. | Payplace: Secure and flexible operator-mediated payments in blockchain marketplaces at scale | |
Djari et al. | Yggdrasil: Secure state sharding of transactions and smart contracts that self-adapts to transaction load | |
Anceaume et al. | Distributed ledger register: From safe to atomic |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |