CN113220745B - 一种基于区块链的交易处理方法、装置及电子设备 - Google Patents
一种基于区块链的交易处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113220745B CN113220745B CN202110546261.3A CN202110546261A CN113220745B CN 113220745 B CN113220745 B CN 113220745B CN 202110546261 A CN202110546261 A CN 202110546261A CN 113220745 B CN113220745 B CN 113220745B
- Authority
- CN
- China
- Prior art keywords
- transaction
- target transaction
- node
- target
- preset database
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000012163 sequencing technique Methods 0.000 claims abstract description 17
- 238000012795 verification Methods 0.000 claims description 34
- 238000001514 detection method Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 7
- 238000012856 packing Methods 0.000 claims description 2
- 239000004744 fabric Substances 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- 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/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Mathematical Physics (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Fuzzy Systems (AREA)
- Technology Law (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链的交易处理方法、装置及电子设备,该方法包括:在交易执行之前,通过预排序节点对交易的冲突情况进行检测,若预设的数据库中存在与交易的读集相冲突的写集,则表示存在与该交易相冲突的交易,则将该交易存储到等待队列中,若预设的数据库中不存在与该交易相冲突的交易,则将该交易发送给背书节点,以使背书节点执行该交易。由此,通过预排序节点对交易的冲突情况进行检测,避免了具有冲突的交易的并发执行,降低了产生无效交易的概率,提高Fabric系统有效交易的吞吐量。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种基于区块链的交易处理方法、装置及电子设备。
背景技术
区块链是以比特币为代表的加密货币底层支撑技术,由于具有去中心化,不可篡改等特性,引起了广泛关注,区块链技术本质是建立在对等网络上的分布式账本技术。
Hyperledger Fabric是一个提供分布式账本解决方案的平台,在该平台上,交易是并发执行的,例如,两笔交易读写同样的账本数据,第一交易在提交时更新了键的版本好,第二笔交易在最后验证提交阶段被发现读集的版本号是过时的,与状态数据库的版本号不一致,导致第二笔交易会被当成无效交易。由此,由于交易的并发执行机制,导致交易会产生冲突,进而导致大量无效交易产生,不仅浪费系统资源,也影响用户体验。
发明内容
有鉴于此,本发明实施例公开了一种基于区块链的交易处理方法、装置及电子设备,通过预排序节点对交易的冲突情况进行检测,避免了具有冲突的交易的并发执行,降低了产生无效交易的概率,提高Fabric系统有效交易的吞吐量。
本发明实施例公开了一种基于区块链的交易处理方法,包括:
预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易;所述预设的数据库中存储有处于交易状态的交易的写集;
若预设的数据库中存在与所述第一目标交易的读集相冲突的交易,则将所述第一目标交易添加到等待队列中;
若预设的数据库中不存在与所述第一目标交易的读集相冲突的交易,将所述第一目标交易发送给背书节点以使所述背书节点执行所述第一目标交易,并将所述第一目标交易的写集存储到所述预设的数据库中。
可选的,还包括:
按照预设的时间周期从等待队列中读取第二目标交易,并检测预设的数据库中是否存在与第二目标交易的读集相冲突的交易;其中,所述第二目标交易为所述等待队列中任意一个交易,所述第二目标交易存储到等待队列中的时间为所述第二目标交易预设的时间周期的起始点;
若检测到预设的数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使背书节点执行所述第二目标交易。
可选的,所述预设的时间周期是基于区块的生成时间确定的。
可选的,还包括:
当排序节点接收到背书节点已执行完成的第三目标交易的交易信息后,获取所述第三目标交易从预排序节点发送给背书节点的时间;所述第三目标交易为至少一个交易;
排序节点按照所述第三目标交易从预排序节点发送给背书节点的时间,将所述第三目标交易存储到排序队列中;
当触发区块生成条件后,按照排序队列
中第三目标交易的顺序对第三目标交易的交易信息打包成区块。
可选的,还包括:
当验证节点接收到第四目标交易的区块后,对第四目标交易的区块的有效性进行验证;
验证节点将有效的第四目标交易的区块发送给预排序节点,预排序节点从预设数据库中删除所述有效的第四目标交易的写集。
可选的,所述在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易,包括:
获取所述第一目标交易的读集的键值;
在预设的数据库中查询是否存在第一目标交易的读集的键值;
若预设的数据库中存在第一目标交易的读集的键值,则表示存在与第一目标交易相冲突的交易。
本发明实施例公开了一种基于区块链的交易处理装置,包括:
冲突检测单元,用于预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易;所述预设的数据库中存储有处于交易状态的交易的写集;
等待队列添加单元,用于若预设的数据库中存在与所述第一目标交易的读集相冲突的交易,则将所述第一目标交易添加到等待队列中;
第一发送单元,用于若预设的数据库中不存在与所述第一目标交易的读集相冲突的交易,将所述第一目标交易发送给背书节点以使所述背书节点执行所述第一目标交易,并将所述第一目标交易的写集存储到所述预设的数据库中。
可选的,还包括:
读取单元,用于按照预设的时间周期从等待队列中读取第二目标交易,并检测预设的数据库中是否存在与第二目标交易的读集相冲突的交易;其中,所述第二目标交易为所述等待队列中任意一个交易,所述第二目标交易存储到等待队列中的时间为所述第二目标交易预设的时间周期的起始点;
第二发送单元,用于若检测到预设的数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使背书节点执行所述第二目标交易。
可选的,所述预设的时间周期是基于区块的生成时间确定的。
可选的,还包括:
获取单元,用于当排序节点接收到背书节点已执行完成的第三目标交易的交易信息后,获取所述第三目标交易从预排序节点发送给背书节点的时间;所述第三目标交易为至少一个交易;
存储单元,用于排序节点按照所述第三目标交易从预排序节点发送给背书节点的时间,将所述第三目标交易存储到排序队列中;
区块生成单元,用于当触发区块生成条件后,按照排序队列中第三目标交易的顺序对第三目标交易的交易信息打包成区块。
可选的,还包括:
验证单元,用于当验证节点接收到第四目标交易的区块后,对第四目标交易的区块的有效性进行验证;
删除单元,用于验证节点将有效的第四目标交易的区块发送给预排序节点,预排序节点从预设数据库中删除所述有效的第四目标交易的写集。
可选的,所述冲突检测单元,包括:
获取子单元,用于获取所述第一目标交易的读集的键值;
冲突检测子单元,用于在预设的数据库中查询是否存在第一目标交易的读集的键值;
冲突确定子单元,用于若预设的数据库中存在第一目标交易的读集的键值,则表示存在与第一目标交易相冲突的交易。
本发明实施例还公开了一种电子设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储程序,所述处理器用于执行所述存储程序时,执行上述所述的一种基于区块链的交易处理方法。
本发明实施例公开了一种基于区块链的交易处理方法、装置及电子设备,该方法包括:在交易执行之前,通过预排序节点对交易的冲突情况进行检测,若预设的数据库中存在与交易的读集相冲突的写集,则表示存在与该交易相冲突的交易,则将该交易存储到等待队列中,若预设的数据库中不存在与该交易相冲突的交易,则将该交易发送给背书节点,以使背书节点执行该交易。由此,通过预排序节点对交易的冲突情况进行检测,避免了具有冲突的交易的并发执行,降低了产生无效交易的概率,提高Fabric系统有效交易的吞吐量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明实施例提供的一种基于区块链的交易处理方法的流程示意图;
图2示出了本发明实施例提供的一种基于区块链的交易处理方法的又一流程示意图
图3示出了本发明实施例公开的一种基于区块链的交易处理方法的另一流程示意图
图4示出了本发明实施例提供的一种基于区块链的交易处理装置的结构示意图;
图5示出了本发明实施例还公开了一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解,对HyperledgerFabric交易处理流程中主要的节点,以及节点的作用进行介绍:
Client节点:发起交易提案,将背书之后交易发送给排序节点。
Peer节点:所有的Peer节点都是验证节点,部分安装链码的Peer节点为背书节点;验证节点主要是对交易进行验证和提交写入账本,背书节点则模拟执行交易提案及背书。
Order节点:将交易排序并打包生成区块。
本实施例中,增加了一个预排序节点,例如表示为PreOrder节点,该节点利用利用分布式锁机制进行交易冲突检测,并将无冲突交易发送给背书节点,冲突交易等待无冲突时再发送。
参考图1,示出了本发明实施例提供的一种基于区块链的交易处理方法的流程示意图,在本实施例中,该方法包括:
S101:预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与所述第一目标交易的读集相冲突的交易;所述预设的数据库中存储有处于交易状态的交易的写集;
本实施例中,分布式交易中存在读集和写集,其中写集会更新交易的数据。
举例说明:交易Tx1:{readset{k1,k2},writeset{k1}},其中,readset表示交易的读集,writeset表示写集,K1、K2表示键值。
本实施例中,预排序节点用于检测接收到的交易是否存在冲突,若不存在冲突,则将交易的写集存储到预设的数据库中,或者可以理解为对该交易的写集进行加锁设置,在该交易的写集处于锁定状态时,则不可执行与该交易相冲突的其它交易。并且,直到处于锁定的状态的交易执行完成后,从预设的数据库中删除该交易的写集,或者可以理解为对该交易的写集进行解锁。
由此可知,预设的数据库中会存储有当前处于交易状态的交易的写集,优选的,预设的数据库中存储有当前处于交易状态的交易的写集的键值。
本实施例中,当预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易,优选的,该步骤可以包括:在预设的数据库中查询是否存在第一目标交易的读集的键值,若预设的数据库中存在第一目标交易的读集的键值,则表示当前存在与第一目标交易相冲突的交易,具体的是S101包括:
获取所述第一目标交易的读集的键值;
在预设的数据库中查询是否存在第一目标交易的读集的键值;
若预设的数据库中存在第一目标交易的读集的键值,则表示存在与第一目标交易相冲突的交易。
S102:若预设的数据库中存在与所述第一目标交易的读集相冲突的交易,则将所述第一目标交易添加到等待队列中;
本实施例中,在预设的数据库中存在与第一目标交易的读集相冲突的交易的情况下,若第一目标交易也执行的话,那么很有可能会产生无效交易,为了避免产生无效交易,当存在于第一目标交易相冲突的交易处于未执行完成的状态时,则先将第一目标交易添加到等待队列中,等待解除冲突的时候,再执行。
本实施例中,等待队列可以设置在任何一个数据库中,本实施例中,为了便于操作,优选的,将等待队列设置在预设的数据库中,例如Redis数据库。
S103:若预设的数据库中不存在与所述第一目标交易的读集相冲突的交易,将所述第一目标交易发送给背书节点,以使所述背书节点执行所述第一目标交易,并将所述第一目标交易的写集存储到所述预设的数据库中;
本实施例中,当检测到预设的数据库中不存在与第一目标交易的读集相冲突的交易时,则表示第一目标交易可以执行,但是,为了在第一目标交易执行的过程中,与第一目标交易的写集有冲突的交易不被执行,则可以将第一目标交易的写集存储到预设的数据库中,优选的,可以将第一目标交易的写集的键值存储到预设的数据库中。
本实施例中,预设的数据库可以是任何一种用于存储信息的数据库,优选的,可以预设的数据可以为Redis数据库。
本实施例中,对于等待队列中的交易,仍需要不断的检测是否仍有与等待队列中的交易存在冲突的交易,以保障交易得以正常执行,具体的,包括如下的几种实施方式:
实施方式一:
S201:按照预设的时间周期从等待队列数据库中读取第二目标交易,并检测预设的数据库中是否存在与所述第二目标交易的读集相冲突的交易;
其中,所述第二目标交易为所述等待队列中任意一个交易,所述第二目标交易存储到等待队列中的时间为所述第二目标交易预设的时间周期的起始点;
本实施例中,预排序节点在检测到预设数据库中存在与某个交易冲突的交易后,会将产生冲突的交易存放到等待队列中,存放到等待队列中的时间为预设时间周期的起点,并且,从该起点开始计时,达到一个预设的时间周期,则读取该交易,并检测预设的数据库中是否存在与该交易的读集相冲突的交易。
在该实施方式一中,等待队列中的每个交易对应的预设的时间周期相同,但是每个交易对应的预设的时间周期的起点不同,那么每个交易进行检测的时间也可能不同。
其中,预设的时间周期可以基于区块的生成时间确定,区块的生成时间与当前系统的性能相关。
S202:若检测到数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使背书节点执行所述第二目标交易。
实施方式二:
S301:按照预设的时间周期从等待队列中依次读取每个交易,并依次对等待队列中的每个交易的冲突情况进行检测;
S302:针对若检测到预设的数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使所述背书节点执行所述第二目标交易;所述第二目标交易为所述数据库中任意一个交易。
在该实施方式二中,等待队列中每个交易对应的预设的时间周期相同,并且,时间周期的起点与交易无关,每间隔预设的时间周期,则依次对等待队列中的交易进行冲突检测。
实施方式三:
S401:按照预设的时间周期从等待队列中依次读取前N个交易,并依次对前N个交易的冲突情况进行检测;
S402:针对若检测到预设的数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使所述背书节点执行所述第二目标交易;所述第二目标交易为前N个交易中任意一个交易。
本实施例中,为了提升系统运行的性能,避免无效的检测,实施方式三中,每次只对等待队列中的前N个交易进行检测,避免了对存储时间较为靠后的交易进行无效检测。
本实施例中,在交易执行之前,通过预排序节点对交易的冲突情况进行检测,若预设的数据库中存在与交易的读集相冲突的写集,则表示存在与该交易相冲突的交易,则将该交易存储到等待队列中,若预设的数据库中不存在与该交易相冲突的交易,则将该交易发送给背书节点,以使背书节点执行该交易。由此,通过预排序节点对交易的冲突情况进行检测,避免了具有冲突的交易的并发执行,降低了产生无效交易的概率,提高Fabric系统有效交易的吞吐量。
参考图2,示出了本发明实施例提供的一种基于区块链的交易处理方法的又一流程示意图,在本实施例中,该方法包括:
S501:预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易;所述预设的数据库中存储有处于交易状态的交易的写集;
S502:若预设的数据库中存在与所述第一目标交易的读集相冲突的交易,则将所述第一目标交易添加到等待队列中;
S503:若预设的数据库中不存在与所述第一目标交易的读集相冲突的交易,将所述第一目标交易发送给背书节点以使所述背书节点执行所述第一目标交易,并将所述第一目标交易的写集存储到所述预设的数据库中。
S504:当排序节点接收到验证节点发送的第四目标交易的区块时,从预设数据库中删除所述有效的第四目标交易的写集。
本实施例中,当预排序节点向背书节点发送了交易后,背书节点执行交易,客户端会收集背书节点的的交易结果发送给排序节点,排序节点将交易打包成区块,发送给验证节点,验证节点对交易的有效性进行验证,并将有效的交易的区块发送给预排序节点,预排序节点从预设数据库中删除所述有效的第四目标交易的写集,具体的,还包括:
当验证节点接收到第四目标交易的区块后,将第四目标交易的区块的有效性进行验证;
验证节点将有效的第四目标交易的区块发送给预排序节点,预排序节点从预设数据库中删除所述有效的第四目标交易的写集。
优选的,通过上述介绍可知,预设的数据库中存储有交易的写集的键值,那么当需要对该交易进行解锁时,可以从预设的数据库中删除该交易的写集的键值。
本实施例中,在交易执行之前,通过预排序节点对交易的冲突情况进行检测,若预设的数据库中存在与交易的读集相冲突的写集,则表示存在与该交易相冲突的交易,则将该交易存储到等待队列中,若预设的数据库中不存在与该交易相冲突的交易,则将该交易发送给背书节点,以使背书节点执行该交易,并在预排序节点接收到已执行的交易的区块后,从预设的数据库中删除已执行的交易的写集。由此,通过预排序节点对交易的冲突情况进行检测,避免了具有冲突的交易的并发执行,降低了产生无效交易的概率,提高Fabric系统有效交易的吞吐量。
本实施例中,交易在背书节点执行后,由客户端将背书节点对交易的执行结果发送给排序节点,由排序节点生成区块,发送给验证节点,由于网络延迟等原因,若交易到达排序节点的顺序与预排序节点发送交易提案的顺序不一致,还有可能会产生交易冲突,为了避免这一问题,参考图3,示出了本发明实施例公开的一种基于区块链的交易处理方法的另一流程示意图,该方法包括:
S601:当排序节点接收到背书节点已执行完成的第三目标交易的交易信息后,获取所述第三目标交易从预排序节点发送给背书节点的时间;所述第三目标交易为至少一个交易;
S602:排序节点按照所述第三目标交易从预排序节点发送给背书节点的时间,将所述第三目标交易存储到排序队列中;
S603:当触发区块生成条件后,按照排序队列中第三目标交易的顺序对第三目标交易的交易信息打包成区块。
本实施例中,通常情况下,排序节点会维护一个排队机制,当触发了区块生成条件后,则将排队队列中的交易进行打包,并生成区块。
本实施例中,排序节点在对向排序队列中存储交易时,按照交易从预排序节点向背书节点发送的时间进行排序,并在触发了区块生成条件后,按照排序队列中的交易的顺序生成交易的区块。这样,避免了由于网络延迟导致的交易冲突,进一步的避免了产生无效交易的概率,,提高Fabric系统有效交易的吞吐量。
本实施例中,为了便于理解本方案在Hyperledger Fabric链上的交易处理过程,本实施例中,对Hyperledger Fabric链上的交易的完整处理过程进行介绍:
1)预排序阶段:预排序节点对接收到的交易提案进行冲突检测:
a)建立实现锁机制的Redis数据库;保存有当前处于交易状态的交易的写集的键值。
b)预排序节点接收到交易提案后在数据库中查询当前交易的读集;
c)在b)的判断中,如果存在,说明链上有未提交交易与当前交易冲突,将其添加到等待队列中;
d)在b)的判断中,如果不存在,说明无冲突交易,将当前交易的写集插入数据库加锁,发送给背书节点执行。
2)执行阶段,预排序节点将交易提案发送给背书节点,节点会执行交易并背书,返回执行结果。
a)当背书节点接收到交易提案时,执行链码中指定的操作来模拟执行交易;
b)模拟执行得到的结果加上节点签名等信息作为背书结果返回客户端。
3)排序阶段,客户端将收集到足够背书结果的交易发送给排序节点,排序节点将交易打包成区块,发送给验证节点。
a)客户端收集到足够的一致且合法签名的背书结果,将原始的交易提案与背书结果组合成一笔交易,并发送给排序节点;
b)排序节点根据区块生成的条件将交易按检测交易冲突完成时间排序(由于网络延迟等原因,若交易到达排序节点的顺序与预排序节点发送交易提案的顺序不一致,还是可能存在交易冲突),并打包生成区块,并发送给验证节点中的主节点。
4)验证阶段,验证节点结合当前账本状态依次对区块中交易背书签名和其执行结果的合法性进行验证,并更新账本。
a)主节点接收到区块后,通过Gossip协议发送所有的验证节点;
i)背书策略验证,节点根据链码相应的背书策略区块内交易的背书信息进行验证,若满足则通过背书策略验证,否则标记为无效交易;
ii)读集版本验证,检查交易中读集的版本号与本地状态数据库中对应的版本号是否一致,若一致则通过读集版本验证,否则标记为无效交易;
iii)更新账本,将区块添加到本地的区块链,并根据有效交易的写集更新状态数据库中对应的值和版本号;
b)预排序节点接收到区块后,删除数据库中区块内交易的写集,将等待队列的交易提案取出并检测冲突
举例说明:现有三笔交易Tx1:{readset{k1,k2},writeset{k1}},Tx2:{readset{k1,k3},writeset{k1,k3}},Tx3:{readset{k2,k3},writeset{k2,k3}}由三个不同的客户端同时提交,此时本地状态数据库记录为{<k1,v11,version11>,<k2,v21,version21>,<k3,v31,version31>}};其中,readset表示读集,writeset表示写集,k1,k2,k3表示键值,v11,v21,v31表示键值对应的具体的值,version11,version21,version31表示键值的版本号。
1)预排序阶段
假设Redis数据库为空,等待队列也为空,Tx1、Tx2、Tx3先后到达预排序节点。首先对Tx1进行冲突检测,数据库中没有Tx1的readset,说明无冲突交易,将Tx1的写集插入数据库中,此时数据库记录为{k1},并记录检测完成时间t1一并发送给背书节点(执行节点);
接下来对Tx2进行冲突检测,数据库与Tx2的readset都有k1,说明链上有未提交的冲突交易,将Tx2添加到等待队列,等待无冲突时提交,此时等待队列为{Tx2};
最后对Tx3进行冲突检测,数据库中没有k3说明无冲突交易,将Tx3的写集插入数据库中,此时数据库记录为{k1,k2,k3},并记录检测完成时间t3(t3>t1)一并发送给背书节点。
2)执行阶段
背书节点接收到Tx1和Tx3,分别执行链码中指定的操作来模拟执行两个交易,得到相应的读集和写集,Tx1:{readset{<k1,version11>,<k2,version21>},writeset{<k1,v12>}},Tx3:{readset{<k2,version21>,<k3,version31>},writeset{<k2,v22>,<k3,v32>}},节点签名之后返回给客户端。
3)排序阶段,客户端将收集到足够背书结果的交易发送给排序节点,排序节点将交易打包成区块,发送给验证节点。
客户端将收集到足够背书的Tx1和Tx3分别发送给排序节点。排序节点按检测交易冲突完成时间将收到的交易排序生成区块(即t1<t3,将Tx3排在Tx1后面),并发送给验证节点中的主节点。
4)验证阶段
当主节点接收到区块,通过Gossip协议发送至所有的验证节点;此处假设Tx1和Tx3都是合法有效交易,则必定通过背书策略验证和读集版本验证,并标记为有效交易。最后将区块添加到区块链中,并根据Tx1和Tx3的写集更新状态数据库的值和版本号,此时更新之后本地状态数据库记录为{<k1,v12,version12>,<k2,v22,version22>,<k3,v32,version32>}}。
当预排序节点接收到区块,删除数据库中区块内所有交易的写集,此时数据库记录为{},等待队列为{Tx2},依次取出等待队列中阻塞的交易提案,如取出Tx2并检查交易冲突,进入交易流程的预排序阶段。
参考图4,示出了本发明实施例提供的一种基于区块链的交易处理装置的结构示意图,在本实施例中,该装置包括:
冲突检测单元701,用于预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易;所述预设的数据库中存储有处于交易状态的交易的写集;
等待队列添加单元702,用于若预设的数据库中存在与所述第一目标交易的读集相冲突的交易,则将所述第一目标交易添加到等待队列中;
第一发送单元703,用于若预设的数据库中不存在与所述第一目标交易的读集相冲突的交易,将所述第一目标交易发送给背书节点以使所述背书节点执行所述第一目标交易,并将所述第一目标交易的写集存储到所述预设的数据库中。
可选的,还包括:
读取单元,用于按照预设的时间周期从等待队列中读取第二目标交易,并检测预设的数据库中是否存在与第二目标交易的读集相冲突的交易;其中,所述第二目标交易为所述等待队列中任意一个交易,所述第二目标交易存储到等待队列中的时间为所述第二目标交易预设的时间周期的起始点;
第二发送单元,用于若检测到预设的数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使背书节点执行所述第二目标交易。
可选的,所述预设的时间周期是基于区块的生成时间确定的。
可选的,还包括:
获取单元,用于当排序节点接收到背书节点已执行完成的第三目标交易的交易信息后,获取所述第三目标交易从预排序节点发送给背书节点的时间;所述第三目标交易为至少一个交易;
存储单元,用于排序节点按照所述第三目标交易从预排序节点发送给背书节点的时间,将所述第三目标交易存储到排序队列中;
区块生成单元,用于当触发区块生成条件后,按照排序队列中第三目标交易的顺序对第三目标交易的交易信息打包成区块。
可选的,还包括:
验证单元,用于当验证节点接收到第四目标交易的区块后,对第四目标交易的区块的有效性进行验证;
删除单元,用于验证节点将有效的第四目标交易的区块发送给预排序节点,预排序节点从预设数据库中删除所述有效的第四目标交易的写集。
可选的,所述冲突检测单元,包括:
获取子单元,用于获取所述第一目标交易的读集的键值;
冲突检测子单元,用于在预设的数据库中查询是否存在第一目标交易的读集的键值;
冲突确定子单元,用于若预设的数据库中存在第一目标交易的读集的键值,则表示存在与第一目标交易相冲突的交易。
本实施例中,在交易执行之前,通过预排序节点对交易的冲突情况进行检测,若预设的数据库中存在与交易的读集相冲突的写集,则表示存在与该交易相冲突的交易,则将该交易存储到等待队列中,若预设的数据库中不存在与该交易相冲突的交易,则将该交易发送给背书节点,以使背书节点执行该交易。由此,通过预排序节点对交易的冲突情况进行检测,避免了具有冲突的交易的并发执行,降低了产生无效交易的概率,提高Fabric系统有效交易的吞吐量。
参考图5,示出了本发明实施例还公开了一种电子设备的结构示意图,包括:
存储器704和处理器705;
所述存储器用于存储程序,所述处理器用于执行所述存储程序时,执行上述所述的一种基于区块链的交易处理方法,具体的过程已在上文中进行介绍,本实施例中不再赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
Claims (8)
1.一种基于区块链的交易处理方法,其特征在于,包括:
预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易;所述预设的数据库中存储有处于交易状态的交易的写集;
若预设的数据库中存在与所述第一目标交易的读集相冲突的交易,则将所述第一目标交易添加到等待队列中;
若预设的数据库中不存在与所述第一目标交易的读集相冲突的交易,将所述第一目标交易发送给背书节点以使所述背书节点执行所述第一目标交易,并将所述第一目标交易的写集存储到所述预设的数据库中;
按照预设的时间周期从等待队列中读取第二目标交易,并检测预设的数据库中是否存在与第二目标交易的读集相冲突的交易;其中,所述第二目标交易为所述等待队列中任意一个交易,所述第二目标交易存储到等待队列中的时间为所述第二目标交易预设的时间周期的起始点;
若检测到预设的数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使背书节点执行所述第二目标交易。
2.根据权利要求1所述的方法,其特征在于,所述预设的时间周期是基于区块的生成时间确定的。
3.根据权利要求1所述的方法,其特征在于,还包括:
当排序节点接收到背书节点已执行完成的第三目标交易的交易信息后,获取所述第三目标交易从预排序节点发送给背书节点的时间;所述第三目标交易为至少一个交易;
排序节点按照所述第三目标交易从预排序节点发送给背书节点的时间,将所述第三目标交易存储到排序队列中;
当触发区块生成条件后,按照排序队列中第三目标交易的顺序对第三目标交易的交易信息打包成区块。
4.根据权利要求1所述的方法,其特征在于,还包括:
当验证节点接收到第四目标交易的区块后,对第四目标交易的区块的有效性进行验证;
验证节点将有效的第四目标交易的区块发送给预排序节点,预排序节点从预设数据库中删除所述有效的第四目标交易的写集。
5.根据权利要求1所述的方法,其特征在于,所述在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易,包括:
获取所述第一目标交易的读集的键值;
在预设的数据库中查询是否存在第一目标交易的读集的键值;
若预设的数据库中存在第一目标交易的读集的键值,则表示存在与第一目标交易相冲突的交易。
6.一种基于区块链的交易处理装置,其特征在于,包括:
冲突检测单元,用于预排序节点接收到第一目标交易提案后,在预设的数据库中查询是否存在与第一目标交易的读集相冲突的交易;所述预设的数据库中存储有处于交易状态的交易的写集;
等待队列添加单元,用于若预设的数据库中存在与所述第一目标交易的读集相冲突的交易,则将所述第一目标交易添加到等待队列中;
第一发送单元,用于若预设的数据库中不存在与所述第一目标交易的读集相冲突的交易,将所述第一目标交易发送给背书节点以使所述背书节点执行所述第一目标交易,并将所述第一目标交易的写集存储到所述预设的数据库中;
读取单元,用于按照预设的时间周期从等待队列中读取第二目标交易,并检测预设的数据库中是否存在与第二目标交易的读集相冲突的交易;其中,所述第二目标交易为所述等待队列中任意一个交易,所述第二目标交易存储到等待队列中的时间为所述第二目标交易预设的时间周期的起始点;
第二发送单元,用于若检测到预设的数据库中不存在与第二目标交易的读集相冲突的交易,则将所述第二目标交易发送给背书节点,以使背书节点执行所述第二目标交易。
7.根据权利要求6所述的装置,其特征在于,还包括:
验证单元,用于当验证节点接收到第四目标交易的区块后,对第四目标交易的区块的有效性进行验证;
删除单元,用于验证节点将有效的第四目标交易的区块发送给预排序节点,预排序节点从预设数据库中删除所述有效的第四目标交易的写集。
8.一种电子设备,其特征在于,包括:
存储器和处理器;
所述存储器用于存储程序,所述处理器用于执行所述存储程序时,执行上述权利要求1-5中任意一项所述的一种基于区块链的交易处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110546261.3A CN113220745B (zh) | 2021-05-19 | 2021-05-19 | 一种基于区块链的交易处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110546261.3A CN113220745B (zh) | 2021-05-19 | 2021-05-19 | 一种基于区块链的交易处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220745A CN113220745A (zh) | 2021-08-06 |
CN113220745B true CN113220745B (zh) | 2024-02-09 |
Family
ID=77093096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110546261.3A Active CN113220745B (zh) | 2021-05-19 | 2021-05-19 | 一种基于区块链的交易处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220745B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114764709A (zh) * | 2021-01-14 | 2022-07-19 | 富士通株式会社 | 信息处理装置和信息处理方法 |
CN113205417B (zh) * | 2021-04-27 | 2022-10-25 | 华东师范大学 | 一种面向联盟链的交易并行处理方法及系统 |
CN114048027B (zh) * | 2021-10-21 | 2022-05-13 | 中国科学技术大学 | 一种应用于超算集群调度的作业运行参数优化方法 |
CN113743942B (zh) * | 2021-11-04 | 2023-06-02 | 支付宝(杭州)信息技术有限公司 | 交易执行方法、区块链、主节点和主存储设备 |
CN113743940B (zh) * | 2021-11-04 | 2022-08-12 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法、区块链、主节点和从节点 |
CN113743941B (zh) * | 2021-11-04 | 2022-08-26 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中执行交易的方法、区块链和主节点 |
CN114022148B (zh) * | 2021-12-24 | 2022-04-22 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
CN114331440A (zh) * | 2021-12-31 | 2022-04-12 | 北京江融信科技有限公司 | 一种冲突检测及性能优化方法和装置 |
CN114564412B (zh) * | 2022-04-27 | 2022-07-22 | 北京微芯感知科技有限公司 | 区块链的确定性交易并发调度方法及系统 |
CN116993340A (zh) * | 2022-07-08 | 2023-11-03 | 腾讯云计算(北京)有限责任公司 | 一种交易处理方法、装置、设备、存储介质及程序产品 |
WO2024105577A1 (en) * | 2022-11-18 | 2024-05-23 | Apocalypse Studios Inc. | Computing platform architecture for providing an online gaming system with a digital economy |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112737782A (zh) * | 2021-03-30 | 2021-04-30 | 支付宝(杭州)信息技术有限公司 | 提供跨链消息的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11070360B2 (en) * | 2018-08-13 | 2021-07-20 | International Business Machines Corporation | Parallel transaction validation and block generation in a blockchain |
-
2021
- 2021-05-19 CN CN202110546261.3A patent/CN113220745B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112737782A (zh) * | 2021-03-30 | 2021-04-30 | 支付宝(杭州)信息技术有限公司 | 提供跨链消息的方法和装置 |
Non-Patent Citations (1)
Title |
---|
刘东伟 ; 张学旺 ; 郭晓金 ; .基于区块链的学位证书存证系统设计与实现.计算机工程与设计.2020,(02),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN113220745A (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113220745B (zh) | 一种基于区块链的交易处理方法、装置及电子设备 | |
CN108683630B (zh) | 跨区块链的认证方法及装置、电子设备 | |
Mu et al. | Consolidating concurrency control and consensus for commits under conflicts | |
CN110032438B (zh) | 延时任务执行方法、装置及电子设备 | |
CN101009516B (zh) | 一种进行数据同步的方法、系统及装置 | |
CN112737782B (zh) | 提供跨链消息的方法和装置 | |
KR102232641B1 (ko) | 블록체인 기반 IoT 환경에서의 다중 검색을 지원하는 데이터 구조체를 이용한 검색 방법 및 그 방법에 따른 장치 | |
CN110706101B (zh) | 在区块链中并发执行交易的方法和装置 | |
CN108710681A (zh) | 文件获取方法、装置、设备及存储介质 | |
CN112734431B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
Verdian et al. | Quant overledger whitepaper | |
US6877051B2 (en) | Consistency checking mechanism for configuration parameters in embedded systems | |
CN111694873B (zh) | 虚拟资源包的处理方法、装置及数据库服务器 | |
CN110287226A (zh) | 基于区块链的数据查询方法及装置 | |
CN112804359B (zh) | 提供跨链消息的方法和装置 | |
CN112732800B (zh) | 提供跨链消息的方法和装置 | |
CN112395104A (zh) | 一种分布式事务上下文在路由层传递的实现方法与装置 | |
CN111768202B (zh) | 一种支付验证方法、支付验证节点、全量节点及存储介质 | |
CN115687276B (zh) | 一种文件处理方法、装置、电子设备及存储介质 | |
JP2006277158A (ja) | データ更新システム、サーバ及びプログラム | |
CN113505125B (zh) | 数据上链的方法及上链代理装置 | |
CN111428277B (zh) | 区块链数据的校验方法、装置及系统 | |
CN116977067A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN113672776B (zh) | 一种故障分析方法及装置 | |
CN114371870A (zh) | 代码扫描、提交方法及代码扫描服务器、客户端和服务端 |
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 |