CN113419823B - 一种适用于高并发事务的联盟链系统及其设计方法 - Google Patents
一种适用于高并发事务的联盟链系统及其设计方法 Download PDFInfo
- Publication number
- CN113419823B CN113419823B CN202110692495.9A CN202110692495A CN113419823B CN 113419823 B CN113419823 B CN 113419823B CN 202110692495 A CN202110692495 A CN 202110692495A CN 113419823 B CN113419823 B CN 113419823B
- Authority
- CN
- China
- Prior art keywords
- transaction
- transactions
- query
- epoch
- execution
- 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
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000013461 design Methods 0.000 title abstract description 12
- 230000008520 organization Effects 0.000 claims abstract description 26
- 230000001965 increasing effect Effects 0.000 claims abstract description 12
- 238000004891 communication Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims abstract description 11
- 239000003795 chemical substances by application Substances 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 23
- 230000007246 mechanism Effects 0.000 claims description 15
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 239000000872 buffer Substances 0.000 claims description 4
- 230000006835 compression Effects 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000012856 packing Methods 0.000 claims description 3
- 238000011217 control strategy Methods 0.000 abstract description 3
- 238000012360 testing method Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 239000004744 fabric Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- 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
- H04L9/3239—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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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/3247—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 involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种适用于高并发事务的联盟链系统及其设计方法,涉及区块链技术领域。本系统包含多个组织,每一个组织都包含客户端代理、至少一个Peer节点;本发明设计了一个无协调节点的、支持高并发事务的联盟链系统。本发明提出的联盟链系统减小了共识带来的通信开销,并且在保证一致性的同时,增强事务的并发性,系统的性能得到了明显提升。同时,利用重排序算法优化了并发控制策略,增加了事务的提交成功率,很大程度上减少了无效事务的存储,节约了存储成本。此外,该系统是基于关系型数据库实现,支持SQL语句查询并且单独提供查询接口以实现复杂的查询功能和历史数据查询。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种适用于高并发事务的联盟链系统及其设计方法。
背景技术
区块链作为一种去中心化的分布式账本,同时具备开放性、防篡改、可溯源等特点,随着政府和企业的推动,各个领域都相继加入区块链的研发,尤其是金融领域可以借助区块链的特性消除中心化结构造成的瓶颈问题、提高交易的透明性、增强系统的安全性等。然而目前的区块链系统在金融领域中的应用存在性能上的瓶颈,我们用每秒钟处理的事务数量来表示系统的吞吐量(TPS),目前的公有链的吞吐量为7-30TPS,联盟链处理简单事务最多可以到700TPS,对比线上支付系统每秒几万条交易甚至十几万条交易的吞吐量,仍无法满足银行等金融机构处理高并发事务的需求。
区块链主要分为公有链、私有链、联盟链三种,联盟链通常为多个企业之间的共同协作提供服务,所以更符合金融领域的应用场景。在区块链系统中,没有像银行一样的中心化机构,因为节点之间互不信任,系统中每个节点都会保存一份账本副本并且独立地执行或者验证区块中的事务。为了保证每一笔事务在所有分布式记帐节点上的一致性和正确性,需要使用有效的区块共识机制和事务执行策略,而这也正是影响区块链系统吞吐量的主要因素。目前的联盟链系统采用的方法分为两种:(1)节点之间通过共识算法确定区块,每个节点串行执行事务;(2)单独设计一个排序模块,负责对事务进行排序打包成区块,节点在排序之前并行执行事务,排序之后按照区块中事务的顺序验证是否有并发冲突。中国专利“CN112232619A联盟链的区块出块和定序方法、节点及区块链网络系统”采用了第(1)种设计方法,并优化了其中的共识机制,实现了区块定序过程与区块出块过程在逻辑上解耦合,试图降低共识机制对性能的影响,使得多个节点可以同时出块。虽然减少了共识的等待时间,但是共识带来的通信开销实际上没有减少,所以对性能没有显著的提升。并且每个节点依然采用串行化的执行方式,也是限制吞吐量的一个因素。Linux基金会发起的开源项目Hyperledger Fabric采用了第(2)种设计方法,该方法将排序部分作为一个模块单独拿出来,想要降低共识带来的开销,但是该排序服务模块可扩展性差,增加模块中排序节点的数量,只能增加共识的复杂性,却不能提高性能,所以在事务高并发的情况下,这个中心化模块仍然是系统的瓶颈。而且该方法的事务执行机制存在严重缺陷,当事务的并发冲突增加,将会有大量的事务在验证阶段被判断为执行失败,事务的提交率下降会直接导致系统的吞吐量下降。
随着电子银行、线上支付越来越普及,银行以及金融企业的工作量愈加繁重,需要提升区块链系统的性能以更好地应用于金融领域的高并发事务场景。因此,本发明提出了一个降低共识开销且适用于处理高并发事务的联盟链设计框架来提升现有区块链系统的吞吐量,满足用户转账低延迟的需求,主要包含了无协调的基于epoch的区块共识机制、确定性的并发执行策略和确定性的重排序算法。其次,本发明基于该框架实现了一个支持高并发分布式事务的联盟链系统,以适用于银行转账、线上支付等具有高并发、低延迟、高可用需求的业务场景。
发明内容
为解决上述技术问题,本发明提出一种适用于高并发事务的联盟链系统及其设计方法。支持高并发事务处理和高事务吞吐量,包含分布式事务共识机制、确定性的执行算法和并发控制策略等方面。
一种适用于高并发事务的联盟链系统,具体包括:Epoch服务器以及组织;
所述联盟中包含多个组织,每一个组织都包含客户端代理、至少一个Peer节点;
所述Epoch服务器,提供了节点打包事务生成区块的标识,保证区块的有序性,具体包括以下功能:1)维护单调递增的变量epoch编号,目的是提供确定事务所属区块的标识,2)接收客服端代理的请求,返回本地最新的epoch编号的值,并记录不同编号所对应的事务数量,起到共识的作用;3)负责集群节点状态监控,维护联盟中活跃节点的列表。Epoch服务器可以为单点或BFT、CFT容错的集群。当Epoch服务器部署为集群时,为了减少共识协议开销,只有当epoch编号需要更新时Epoch服务器间才会执行共识协议。
所述组织包括客户端代理、Peer节点;
所述客户端代理收集用户发起的事务或者查询请求,同时验证用户的权限,用户签名以及消息格式是否合法。用户通过客户端代理连接到联盟链网络中。
所述事务包含读写操作,事务执行完成后被记录在区块链上,所述事务为查询请求,即只包含读操作,为了提高查询效率,Peer节点提供单独的查询接口,查询请求不记录;当事务满足一定数量或者超时,若事务集不为空,客户端代理会为这批事务向Epoch服务器请求一个epoch编号,即这批事务所属于的区块号;客户端代理将分配好Epoch编号的事务集打包广播给其他的组织,查询请求无需广播,客户端代理根据负载均衡将查询请求分配给组织中的节点,并将结果立即返回给用户。
所述Peer节点采用确定性事务执行策略,负责打包区块和执行事务。Peer节点包含通信模块、查询模块、事务处理模块;
所述通信模块与当前组织的客户端代理进行通信,并与组织中其他节点进行区块和状态同步,包括事务请求和查询请求;事务请求传送至事务处理模块处理,查询请求传送至查询模块执行查询操作;
所述查询模块支持对区块链上的事务或者状态数据库进行查询,提供溯源查询和当前数据查询;所述事务处理模块用于执行事务,记录事务内容以及事务执行状态到账本上,并将结果更新到数据库中。
前述一种适用于高并发事务的联盟链系统的设计方法,包括以下步骤:
步骤1:设计Epoch服务器维护一个单调递增的变量epoch,利用epoch的概念作为出块的标志,同时也是一次状态存储的更新同步,组织之间以epoch编号为依据收集事务日志,从而保证每个组织记录到区块中的事务是一致的。
步骤2:设计事务排序机制,并且该机制保证排序结果唯一,从而确保各节点的可串行化顺序一致。通过对事务取哈希值为事务生成一个独一无二的事务标识(TID),根据这个标识的数值大小确定客户端提交的事务的顺序。另外由于在同一个Epoch内的事务顺序完全取决于哈希算法,只要哈希算法具有随机性便可保证公平性。
所述生成标识采用SHA256算法生成TID:具体包括以下步骤:
步骤S1:对事务进行补位处理,使事务占用的存储空间是512位的倍数;
步骤S2:以512位为单位对事务进行分段,得到M(1),M(2),...,M(N),其中,M(i)表示第i个事务段,事务段数量为N;
步骤S3:对事务段进行逐个计算,求当前事务的哈希值:从一个固定的初始哈希值H(0)开始,根据公式(1)进行递归运算:
其中C是SHA256的压缩函数,+是mod 232加法,即将两个数字加在一起,然后对232取余,H(i)是前i个事务段M(1),M(2),...,M(i)的总哈希值。
由此,最终可以递归得到事务的总哈希值H(N),可以代表令TID=H(N)。
步骤3:事务执行由Peer节点负责,采取分批次的并发执行策略,epoch编号作为事务的批次,批次之间是串行的关系,批次内部事务是并发执行的。每个批次分为执行和提交两个阶段,处理事务时,同一批次的事务按照确定性执行策略并发执行,因为事务的执行逻辑是完全确定的,各个节点的抽象账本和状态数据是最终一致的,从而维护了区块链中账本的一致性。
所述确定性执行策略包括:
步骤D1:并行执行阶段:处理器模块调用相应的智能合约并行地执行事务,每个事务都从本地存储读取数据,并将事务的写入操作保存在本地写集中,缓冲事务的写操作直到批处理结束;若同一区块中的所有事务都完成了在副本上的执行,进入提交阶段;
步骤D2:并行提交阶段,根据有序事务列表判断事务结果是否允许提交,若当前事务Ti与有序的事务列表中顺序在Tj之前的事务(Tj的TID小于Ti的TID)存在冲突,验证器模块判定事务Ti为冲突事务,会导致结果的不确定性,因此中止事务Ti。为了保证每个事务最后都可以被提交,除非事务是被显式中止的,否则中止的事务将在下一批事务开始执行时自动进行调度;若一个事务与先前的事务没有冲突,则系统会将它的结果更新到数据库。
步骤4:使用确定的重排序机制,提高事务的提交成功率;该机制根据事务并发执行得到的结果分析事务之间的依赖关系,调整事务顺序之后再进入提交阶段,通过减少因并发冲突被丢弃的事务数量,增加事务提交成功的概率;
步骤5:更新数据库、生成区块。当一批事务验证结束后,将提交成功的事务的写操作更新到状态数据库中,并将这批事务以及对应的执行结果打包,称为区块。使用关系型数据库PostgreSQL作为底层区块存储数据库,并提供查询接口以支持查询功能和历史数据查询,得到联盟链系统。同时提供了连接其他数据库的接口。
本发明所产生的有益效果在于:
本技术方案提供了一种适用于高并发事务的联盟链系统,结合了现有联盟链系统和分布式数据库系统中的共识机制和事务并发控制策略,根据实际需求加以改进使用,发明了一个无协调一致性的、支持高并发事务的联盟链系统。本发明提出的联盟链系统减小了共识带来的通信开销,并且在保证一致性的同时,增强事务的并发性,系统的性能得到了明显提升。同时,利用重排序算法优化了并发控制策略,增加了事务的提交成功率,很大程度上减少了无效事务的存储,节约了存储成本。此外,该系统是基于关系型数据库实现,支持SQL语句查询并且单独提供查询接口以实现负责的查询功能和历史数据查询。
附图说明
图1为本发明实施例中支持高并发的无协调节点的联盟链框架示意图;
图2为本发明实施例中联盟链系统中Peer节点的功能示意图;
图3为本发明实施例中无协调联盟链系统的流程示意图;
图4为本发明实施例中联盟链系统及其他系统于Smallbank数据集上的吞吐量测试结果对比图;
图5为本发明实施例中联盟链系统及其他系统于Smallbank数据集上的事务延迟测试结果对比图;
图6为本发明实施例中联盟链系统及其他系统于YCSB数据集(事务的读操作和更新操作比例为1:1)上的吞吐量测试结果对比图;
图7为本发明实施例中联盟链系统及其他系统于YCSB数据集(事务的读操作和更新操作比例为1:1)上的事务延迟测试结果对比图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本实施方式的系统,软件环境为Ubuntu16.04系统,实现系统的编程语言为C++。系统架构主要由三部分组成:Epoch服务器、客户端代理、Peer节点。其中客户端代理和Peer节点可以部署在同一台机器上。本实施方式在集群环境下进行,集群包括七个节点。集群相应的工作参数如下:Peer节点数量是4,分别对应同一联盟中的4个组织,客户端代理作为Peer节点的一个模块,两者部署在同一台机器上。Epoch服务器部署在3个节点的集群上,防止宕机问题。
一种适用于高并发事务的联盟链系统,具体包括:Epoch服务器以及组织;
如图1所示,联盟链系统共享一个Epoch服务器集群,实现高效的无协调区块共识。联盟中包含多个组织,每一个组织都包含客户端代理、至少一个Peer节点;为了防止Peer节点宕机,组织中可以设置轻节点起到备份的作用。
所述Epoch服务器主要包含了三个功能,以便我们在异步的系统中达成区块共识:1)维护单调递增的变量epoch编号,目的是提供确定事务所属区块的标识,2)接收客服端代理的请求,返回本地最新的epoch编号的值,并记录不同编号所对应的事务数量,起到共识的作用;3)负责集群节点状态监控,维护联盟中活跃节点的列表。Epoch服务器可以为单点或BFT、CFT容错的集群。当Epoch服务器部署为集群时,为了减少共识协议开销,只有当epoch编号需要更新时Epoch服务器间才会执行共识协议。
所述组织包括客户端代理、Peer节点;
所述客户端代理收集用户发起的事务或者查询请求,同时验证用户的权限,用户签名以及消息格式是否合法。用户通过客户端代理连接到联盟链网络中。
所述事务包含读写操作,事务执行完成后被记录在区块链上,所述查询请求只有读操作,查询请求不记录。当事务满足一定数量或者超时,若事务集不为空,客户端代理会为这批事务向Epoch服务器请求一个Epoch编号,即这批事务所属于的区块号。客户端代理将分配好Epoch编号的事务集打包广播给其他的组织,查询请求无需广播,客户端代理根据负载均衡将查询请求分配给组织中的节点,并将结果返回给用户。
所述Peer节点类似区块链系统中传统意义上的记账节点,采用确定性事务执行策略,保证联盟链中分布式账本的一致性。负责打包区块和执行事务。每个Peer节点以数据库文件的形式维护自己的账本,独立执行智能合约,并验证和提交事务块。每个节点也有一个加密标识(即公钥),所有通信都以加密方式签名和身份验证。如图2所示,Peer节点包含通信模块、查询模块、事务处理模块;
所述通信模块与当前组织的客户端代理进行通信,并与组织中其他节点进行区块和状态同步,包括事务请求和查询请求;事务请求传送至事务处理模块处理,查询请求传送至查询模块执行查询操作;
所述查询模块对区块链上的事务或者状态数据库进行查询;为了提高查询效率,Peer节点提供单独的查询接口,若底层数据库为关系型数据库,则该接口处理复杂的关系型查询会更加有优势。在之后的工作中,我们致力于研究提供高效的复杂查询以及溯源查询。
所述事务处理模块用于执行事务,记录事务内容以及事务执行状态到账本上,并将结果更新到数据库中。
首先设计了Epoch服务器用于实现高效的共识,将事务以epoch的概念进行划分,系统内节点按照相同epoch的事务属于一个区块的原则独立地生成区块,降低共识的开销;其次设计了客户端代理,负责接收用户的事务请求以及与其他组织的客户端代理进行通信,将接收的事务按照epoch打包成有序的区块;最后设计了Peer节点,功能等同于区块链中的记账节点,Peer节点本地保存一份账本,并且独立地执行事务。
图3描述了本发明设计的联盟链系统的流程概括。该系统中,一个联盟包含了至少两个组织,比如具有业务往来的几个银行可以组成一个联盟,联盟中共享一个Epoch服务器,每个组织内部包括一个客户端代理和一个Peer节点,考虑到崩溃容错问题会部署多个节点,其他的节点称为普通节点。客户端代理负责接收用户的事务请求以及与其他组织的客户端代理进行通信,Peer节点负责事务的处理;普通节点起到备份的作用,Peer节点宕机后,从普通节点中推选出新的Peer节点继续服务。区块链的特性是每隔一段时间将事务存储为区块的形式,也就是账本。在区块链去中心化的特性下,必须要保证每个组织存储的账本需要是一致的,为此本发明设计让每个组织独立地处理事务、生成区块,增强了联盟链的可信度。
步骤1:采用了一种无协调节点的区块同步技术以减小共识的开销,设计Epoch服务器维护一个单调递增的变量epoch,利用epoch的概念作为出块的标志,同时也是一次状态存储的更新同步,组织之间以epoch编号为依据收集事务日志,从而保证每个组织记录到区块中的事务是一致的。
本实施例中用户提交事务提案给客户端代理,事务内容包含智能合约名称,相关的参数,时间戳信息和用户对事务内容的签名。
步骤2:为了保障可串行化隔离级别,确保所有Peer节点得到一致的事务结果,区块内的事务在执行之前需要有确定的顺序,形成一个有序的事务列表,基于公平和一致性的原则,设计事务排序机制,并且该机制保证排序结果唯一,从而确保各节点的可串行化顺序一致。通过对事务取哈希值为事务生成一个独一无二的事务标识(TID),根据这个标识的数值大小确定客户端提交的事务的顺序。因此,副本无需相互通信即可保持一致,从而使共识更简单、更高效。另外由于在同一个Epoch内的事务顺序完全取决于哈希算法,只要哈希算法具有随机性便可保证公平性。
所述生成标识采用SHA256算法生成TID:具体包括以下步骤:
步骤S1:对事务进行补位处理,使事务占用的存储空间是512位的倍数;
步骤S2:以512位为单位对事务进行分段,得到M(1),M(2),...,M(N),其中,M(i)表示第i个事务段,事务段数量为N;
步骤S3:对事务段进行逐个计算,求当前事务的哈希值:从一个固定的初始哈希值H(0)开始,根据公式(1)进行递归运算:
其中C是SHA256的压缩函数,+是mod 232加法,即将两个数字加在一起,然后对232取余,H(i)是前i个事务段M(1),M(2),...,M(i)的总哈希值。
由此,最终可以递归得到事务的总哈希值H(N),可以代表令TID=H(N)。
本实施例中客户端代理负责接收用户的事务请求、对事务进行初步检测并且为事务获取epoch编号,客户端代理负责接收用户的事务请求,验证用户的签名和用户的读写权限是否合法,检测事务内容是否符合规范,丢弃不规范的事务。解析事务类型,对查询事务和涉及更新的事务进行分类操作,如果是查询事务,调用Peer节点专用的SQL查询接口直接查询;如果是update事务,客户端代理积攒一定的事务或者到达时间阈值T之后,向Epoch服务器发起请求,为当前的事务获取一个epoch编号,并且添加到事务的payload中。
因为每个Peer节点都会接收并处理所有的update事务,客户端代理需要把打包好的一组标有epoch编号的事务发送给其他所有的Peer节点对应的客户端代理模块。客户端代理收集齐一批事务后,发送给对应的Peer节点进行处理。
步骤3:事务执行由Peer节点负责,Peer节点的系统结构图如附图2所示。本发明采取分批次的并发执行策略来提高事务的执行效率,epoch编号作为事务的批次,批次之间是串行的关系,批次内部事务是并发执行的。每个批次分为执行和提交两个阶段,分别对应图2中的处理器和验证器来完成。处理器处理事务时,同一批次的事务按照确定性执行策略并发执行,因为事务的执行逻辑是完全确定的,从而保证了联盟链中的节点在没有共识开销的情况下也可以得到相同的执行结果,即各个节点的抽象账本和状态数据是最终一致的,从而维护了区块链中账本的一致性。
Peer节点并行执行事务,生成事务的读写集。在执行阶段,调用对应的智能合约执行事务,每个事务都从数据库的当前快照读取数据,并将事务的写入操作保存在本地写集中。它缓冲事务的写操作直到批处理结束。一旦同一区块中的所有事务都完成了在副本上的执行,它将进入提交阶段。事务的执行结果并不会被立即更新到数据库中,所以可以看做是预执行。
所述确定性执行策略包括:
步骤D1:并行执行阶段:处理器模块调用相应的智能合约并行地执行事务,每个事务都从本地存储读取数据,并将事务的写入操作保存在本地写集中,缓冲事务的写操作直到批处理结束;若同一区块中的所有事务都完成了在副本上的执行,进入提交阶段;
步骤D2:并行提交阶段:为了提高效率,我们设计的提交策略也可以并行执行。根据有序事务列表判断事务结果是否允许提交,若当前事务Ti与有序的事务列表中顺序在Tj之前的事务(Tj的TID小于Ti的TID)存在冲突,验证器模块判定事务Ti为冲突事务,会导致结果的不确定性,因此中止事务Ti。例如,如果事务Ti读取了某个较早事务Ti修改的记录,则该事务将被中止。为了保证每个事务最后都可以被提交,除非事务是被显式中止的(例如,转账后余额为负数),否则中止的事务将在下一批事务开始执行时自动进行调度;若一个事务与先前的事务没有冲突,则系统会将它的结果更新到数据库。
步骤4:使用确定的重排序机制,提高事务的提交成功率;该机制根据事务并发执行得到的结果分析事务之间的依赖关系,调整事务顺序之后再进入提交阶段,通过减少因并发冲突被丢弃的事务数量,增加事务提交成功的概率,从而提高系统的吞吐量。
Peer节点对epoch编号相同的事务进行排序,排序依据是唯一的事务标号TID,根据这个标识的数值大小确定客户端提交的事务的顺序。并行验证,检测冲突。Peer节点上的提交阶段也可以在多个工作线程上运行,并且每个线程可以独立执行。在提交阶段,线程中止那些与较早事务(即具有较小TID的事务)有冲突操作的事务。除非事务是被显式中止的(例如由于违反某些完整性约束),否则中止的事务将在下一批开始时自动进行调度。如果一个事务与先前的事务没有冲突,则系统会将其更改应用于数据库。为了提高有效事务的比例,我们还使用确定性的重新排序技术来减少提交阶段的冲突,它将提交更多事务。
步骤5:更新数据库、生成区块。当一批事务验证结束后,将提交成功的事务的写操作更新到状态数据库中,并将这批事务以及对应的执行结果打包,称为区块。使用关系型数据库PostgreSQL作为底层区块存储数据库,并提供查询接口以支持查询功能和历史数据查询,得到联盟链系统。同时提供了连接其他数据库的接口,比如非关系型数据库LevelDB的接口,LevelDB适用于简单的转账事务,可以实现比PostgreSQL更高的性能。
经过本实施方案,可以搭建一个联盟链系统,本发明不仅具有匿名交易、去中心化、安全、防篡改等传统区块链的特点,还具备高吞吐量、支持复杂查询等特点。经过发明人实践证明,本发明达到较好效果。基于两个公开测试集Smallbank和YCSB,分别于本发明搭建的系统,名为TrustDB,以及其他几个典型的联盟链系统Fabric、Fabric++、Fabric#进行性能测试,测试指标为吞吐量和事务延迟。Smallbank的测试结果如图4和图5所示,YCSB的测试结果如图6和图7所示,其中YCSB的测试集中,事务的读操作和更新操作比例为1:1。通过对系统性能进行初步测试,预计进一步优化后系统吞吐量可以达到30000TPS,对比已有系统,吞吐量可以提高近30倍。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
Claims (6)
1.一种适用于高并发事务的联盟链系统,其特征在于,包括Epoch服务器以及组织;
所述Epoch服务器,提供了节点打包事务生成区块的标识,保证区块的有序性;
所述组织包括客户端代理、Peer节点;
所述客户端代理收集用户发起的事务或者查询请求,同时验证用户的权限、用户签名以及消息格式是否合法;用户通过客户端代理连接到联盟链网络中;
所述Peer节点采用确定性执行策略,负责打包区块和执行事务;
所述确定性执行策略包括以下步骤:
步骤D1:并行执行阶段:处理器模块调用相应的智能合约并行地执行事务,每个事务都从本地存储读取数据,并将事务的写入操作保存在本地写集中,缓冲事务的写操作直到批处理结束;若同一区块中的所有事务都完成了在副本上的执行,进入提交阶段;
步骤D2:并行提交阶段,根据有序事务列表判断事务结果是否允许提交,若当前事务Ti与有序的事务列表中顺序在Tj之前的事务存在冲突,即Tj的TID小于Ti的TID,验证器模块判定事务Ti为冲突事务,会导致结果的不确定性,因此中止事务Ti;为了保证每个事务最后都可以被提交,除非事务是被显式中止的,否则中止的事务将在下一批事务开始执行时自动进行调度;若一个事务与先前的事务没有冲突,则系统会将它的结果更新到数据库。
2.根据权利要求1所述的一种适用于高并发事务的联盟链系统,其特征在于,所述联盟链中包含若干个组织,每一个组织都包含客户端代理、至少一个Peer节点。
3.根据权利要求1所述的一种适用于高并发事务的联盟链系统,其特征在于,所述事务包含读写操作,事务执行完成后被记录在区块链上,所述查询请求只包含读操作,为了提高查询效率,Peer节点提供单独的查询接口,查询请求不记录;当事务满足一定数量或者超时,若事务集不为空,客户端代理为事务向Epoch服务器请求一个epoch编号,即这批事务所属于的区块号;客户端代理将分配好Epoch编号的事务集打包广播给其他的组织,查询请求无需广播,客户端代理根据负载均衡将查询请求分配给组织中的节点,并将结果立即返回给用户。
4.根据权利要求1所述的一种适用于高并发事务的联盟链系统,其特征在于,Peer节点包含通信模块、查询模块、事务处理模块;
所述通信模块与当前组织的客户端代理进行通信,并与组织中其他节点进行区块和状态同步,通信模块接受的请求包含事务请求和查询请求;事务请求传送至事务处理模块处理,查询请求传送至查询模块执行查询操作;
所述查询模块支持对区块链上的事务或者状态数据库进行查询,提供溯源查询和当前数据查询;
所述事务处理模块用于执行事务,记录事务内容以及事务执行状态到账本上,并将结果更新到数据库中。
5.权利要求1所述的一种适用于高并发事务的联盟链系统的设计方法,其特征在于,包括以下步骤:
步骤1:设计Epoch服务器维护单调递增的变量epoch,利用epoch编号作为出块的标志,同时也是一次状态存储的更新同步,组织之间以epoch编号为依据收集事务日志,从而保证每个组织记录到区块中的事务是一致的;
步骤2:设计事务排序机制,并且该机制保证排序结果唯一,从而确保各节点的可串行化顺序一致;通过对事务取哈希值为事务生成一个独一无二的事务标识TID,根据这个标识的数值大小确定客户端提交的事务的顺序;另外由于在同一个Epoch内的事务顺序完全取决于哈希算法,只要哈希算法具有随机性便可保证公平性;
步骤3:事务执行由Peer节点负责,采取分批次的并发执行策略,epoch编号作为事务的批次,批次之间是串行的关系,批次内部事务是并发执行的;每个批次分为执行和提交两个阶段,处理事务时,同一批次的事务按照确定性执行策略并发执行,因为事务的执行逻辑是完全确定的,各个节点的抽象账本和状态数据是最终一致的,从而维护了区块链中账本的一致性;
步骤4:使用确定的重排序机制,提高事务的提交成功率;该机制根据事务并发执行得到的结果分析事务之间的依赖关系,调整事务顺序之后再进入提交阶段,通过减少因并发冲突被丢弃的事务数量,增加事务提交成功的概率;
步骤5:更新数据库、生成区块;当一批事务验证结束后,将提交成功的事务的写操作更新到状态数据库中,并将这批事务以及对应的执行结果打包,称为区块;使用关系型数据库PostgreSQL作为底层区块存储数据库,并提供查询接口以支持查询功能和历史数据查询,得到联盟链系统;同时提供了连接其他数据库的接口。
6.根据权利要求5所述的一种适用于高并发事务的联盟链系统的设计方法,其特征在于,步骤2中所述生成一个独一无二的事务标识TID采用SHA256算法:具体包括以下步骤:
步骤S1:对事务进行补位处理,使事务占用的存储空间是512位的倍数;
步骤S2:以512位为单位对事务进行分段,得到M(1),M(2),...,M(N),其中,M(i)表示第i个事务段,事务段数量为N;
步骤S3:对事务段进行逐个计算,求当前事务的哈希值:从一个固定的初始哈希值H(0)开始,根据公式(1)进行递归运算:
其中C是SHA256的压缩函数,+是mod232加法,即将两个数字加在一起,然后对232取余,H(i)是前i个事务段M(1),M(2),...,M(i)的总哈希值;
由此,最终递归得到事务的总哈希值H(N),代表令TID=H(N)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110692495.9A CN113419823B (zh) | 2021-06-22 | 2021-06-22 | 一种适用于高并发事务的联盟链系统及其设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110692495.9A CN113419823B (zh) | 2021-06-22 | 2021-06-22 | 一种适用于高并发事务的联盟链系统及其设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113419823A CN113419823A (zh) | 2021-09-21 |
CN113419823B true CN113419823B (zh) | 2023-07-18 |
Family
ID=77716057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110692495.9A Active CN113419823B (zh) | 2021-06-22 | 2021-06-22 | 一种适用于高并发事务的联盟链系统及其设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113419823B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965570B (zh) * | 2021-10-25 | 2024-05-17 | 网络通信与安全紫金山实验室 | 区块链结构以及区块链事务执行方法、装置、设备和介质 |
CN114157550B (zh) * | 2021-12-06 | 2023-01-31 | 东北大学 | 一种基于无冲突事务合并的联盟区块链系统 |
CN115037813B (zh) * | 2022-06-08 | 2024-08-23 | 北京知帆科技有限公司 | 一种区块链数据解析方法、装置及电子设备 |
CN115720238B (zh) * | 2022-09-01 | 2024-04-02 | 西安电子科技大学 | 一种支持高并发的区块链请求处理系统与方法 |
CN115878729B (zh) * | 2023-03-03 | 2023-05-02 | 湖北省楚天云有限公司 | 一种基于联盟链的节点区块存储分配优化方法及系统 |
CN116501801B (zh) * | 2023-05-11 | 2023-10-13 | 天津大学 | 一种面向许可型区块链的高性能事务异步并发处理方法 |
CN116795850B (zh) * | 2023-05-31 | 2024-04-12 | 山东大学 | 一种联盟链海量事务并发执行方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040029A (zh) * | 2018-07-13 | 2018-12-18 | 上海点融信息科技有限责任公司 | 在区块链中执行事务的方法和装置 |
WO2019120332A2 (en) * | 2019-04-12 | 2019-06-27 | Alibaba Group Holding Limited | Performing parallel execution of transactions in a distributed ledger system |
CN111008835A (zh) * | 2018-10-08 | 2020-04-14 | 上海派链信息科技有限公司 | 用于确定区块链的交易验证节点的方法、设备、计算机可读存储介质和计算机程序产品 |
CN112463311A (zh) * | 2021-01-28 | 2021-03-09 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503427B2 (en) * | 2017-03-10 | 2019-12-10 | Pure Storage, Inc. | Synchronously replicating datasets and other managed objects to cloud-based storage systems |
WO2019147295A1 (en) * | 2018-01-29 | 2019-08-01 | Ubiquicorp Limited | Proof of majority block consensus method for generating and uploading a block to a blockchain |
CN109964446B (zh) * | 2018-06-08 | 2022-03-25 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
CN109697217B (zh) * | 2018-12-06 | 2021-04-06 | 成都佰纳瑞信息技术有限公司 | 一种区块链事务处理方法 |
CN109710387B (zh) * | 2018-12-06 | 2020-12-15 | 成都佰纳瑞信息技术有限公司 | 一种用于区块链事务优先级排序的策略引擎及其使用方法 |
CN111539750B (zh) * | 2020-04-27 | 2023-05-05 | 中山大学 | 一种基于区块链和大数据技术的商品溯源系统 |
CN112039964B (zh) * | 2020-08-24 | 2022-01-04 | 大连理工大学 | 一种基于区块链的节点信誉共识方法 |
CN112511590B (zh) * | 2020-10-26 | 2022-07-19 | 南京辰阔网络科技有限公司 | 一种区块链分片的高效存储重配置方法 |
-
2021
- 2021-06-22 CN CN202110692495.9A patent/CN113419823B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040029A (zh) * | 2018-07-13 | 2018-12-18 | 上海点融信息科技有限责任公司 | 在区块链中执行事务的方法和装置 |
CN111008835A (zh) * | 2018-10-08 | 2020-04-14 | 上海派链信息科技有限公司 | 用于确定区块链的交易验证节点的方法、设备、计算机可读存储介质和计算机程序产品 |
WO2019120332A2 (en) * | 2019-04-12 | 2019-06-27 | Alibaba Group Holding Limited | Performing parallel execution of transactions in a distributed ledger system |
CN112463311A (zh) * | 2021-01-28 | 2021-03-09 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113419823A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113419823B (zh) | 一种适用于高并发事务的联盟链系统及其设计方法 | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
Ruan et al. | A transactional perspective on execute-order-validate blockchains | |
US20220188332A1 (en) | Distributed transaction database log with immediate reads and batched writes | |
US11196542B2 (en) | Checkpointing for increasing efficiency of a blockchain | |
US11334439B2 (en) | Checkpointing for increasing efficiency of a blockchain | |
US10901957B2 (en) | Checkpointing for increasing efficiency of a blockchain | |
CN111597015B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN102016842B (zh) | 与海量处理指令的实时处置和处理相关的改进 | |
JP7438603B2 (ja) | トランザクション処理方法、装置、コンピュータデバイス及びコンピュータプログラム | |
Xin et al. | On scaling and accelerating decentralized private blockchains | |
US11080262B1 (en) | Optimistic atomic multi-page write operations in decoupled multi-writer databases | |
CN112654978A (zh) | 分布式异构存储系统中数据一致性实时检查的方法、设备和系统 | |
US11366802B1 (en) | Batch undo processing for transaction rollbacks in a multi-writer database | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
Al-Mamun et al. | SciChain: Blockchain-enabled lightweight and efficient data provenance for reproducible scientific computing | |
WO2012152110A1 (zh) | 清分结算子系统的拆分规则的生成方法及装置 | |
Hong et al. | PROPHET: Conflict-free sharding blockchain via byzantine-tolerant deterministic ordering | |
Qi et al. | SChain: Scalable Concurrency over Flexible Permissioned Blockchain | |
CN113111125A (zh) | 一种基于区块链的业务存证方法 | |
CN116366353A (zh) | 基于x86平台的业务登录方法、装置、介质及平台 | |
US8229946B1 (en) | Business rules application parallel processing system | |
Lai et al. | Blockchains for Business–Permissioned Blockchains# | |
Singh et al. | TransEdge: Supporting Efficient Read Queries Across Untrusted Edge Nodes. | |
US11874796B1 (en) | Efficient garbage collection in optimistic multi-writer database systems |
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 |