CN112748994A - 一种区块链交易并行处理方法及系统 - Google Patents
一种区块链交易并行处理方法及系统 Download PDFInfo
- Publication number
- CN112748994A CN112748994A CN202011638960.2A CN202011638960A CN112748994A CN 112748994 A CN112748994 A CN 112748994A CN 202011638960 A CN202011638960 A CN 202011638960A CN 112748994 A CN112748994 A CN 112748994A
- Authority
- CN
- China
- Prior art keywords
- thread
- transactions
- account
- transaction
- ordered
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000000034 method Methods 0.000 claims description 22
- 238000007781 pre-processing Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- 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
Abstract
本发明公开了一种区块链交易并行处理方法及系统,包括:S1:将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息,其中,有序锁设有若干线程标识,线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级;S2:根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的有序锁中优先级最高的线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对有序锁中线程标识的优先级进行更新,以此重复直至各组交易均被执行。本发明解决了涉及多个账户的多笔交易多线程并行处理的顺序问题,保障了并行化处理的有序性,从而保障了并行化处理的效率。
Description
技术领域
本发明属于区块链技术领域,尤其涉及一种区块链交易并行处理方法及系统。
背景技术
区块链技术基于其不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征,在现实生活中实现了各种各样的功能,不仅得到了安全、可靠的保障,而且极大地方便了现实生活的方方面面。同时正是因为区块链独特的特性,也使得原本现实当中的简单交易处理在区块链中变得十分复杂,尤其对于交易并行处理的这一块,现有的交易处理技术还不能有序、安全、准确地进行并行处理。
其中,现有技术一般并行处理多笔交易时,每个账户在一个区块中只能转出或接收一笔交易,这样不仅对用户来说限制太大,而且会导致交易处理的效率低下,这就需要对账户进行上锁,当多个线程分别处理涉及同一账户的交易时,每个线程在执行交易处理时,可通过账户的账户锁对账户进行上锁,以避免并行处理中其他线程对该账户同时进行处理,造成交易处理上的混乱。
但是其中也还存在着问题,当账户涉及的多笔交易需要多个线程进行有序执行时,上述方法显然无法做到有序执行,同时,当一个线程内有多笔交易涉及同一个账户,当线程执行好其中一笔交易之后,那么这时候是该执行当前线程中剩下的涉及该账户的交易就会因为其他线程的交易处理而会出现并行化处理问题。
发明内容
本发明为解决上述技术问题,提供了一种区块链交易并行处理方法及系统,其技术方案为:
一种区块链交易并行处理方法,包括以下步骤:
S1:将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息,其中,有序锁设有若干线程标识,线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级;
S2:根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的有序锁中优先级最高的线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的有序锁中线程标识的优先级进行更新,以此重复直至各组交易均被执行。
在其中一个实施例中,将区块内的交易分为若干组别进一步包括:
根据创建的并行化处理区块交易的线程的数量,将区块内的交易分为等数量的组别。
在其中一个实施例中,将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息进一步包括:
根据所创建的线程的编号顺序,串行地将每组别中交易涉及的所有账户的有序锁压入各组别所对应的线程的调度信息。
在其中一个实施例中,有序锁为队列结构,有序锁的线程标识按照线程的编号顺序排列。
在其中一个实施例中,根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易进一步包括:
各线程依次取出对应组别中的交易,每取出一个交易,则将该交易对应的账户的有序锁内的第一个线程标识与当前的线程的编号进行比较:
若相同,则当前的线程对该账户执行交易的优先权最高,执行取出的交易;
若不相同,则将取出的交易放入待执行缓冲区。
在其中一个实施例中,线程标识为线程名字或线程编号,有序锁还设有线程标识对应的下标,下标为线程标识的优先级。
在其中一个实施例中,,对交易涉及账户的有序锁中线程标识的优先级进行更新进一步包括:
将交易涉及的账户的有序锁中优先级当前最高的线程标识弹出。
在其中一个实施例中,有序锁还设有线程标识对应的计数器,计数器为同一线程内涉及该账户的交易个数,其中,对交易涉及账户的有序锁中线程标识的优先级进行更新进一步包括:
对交易涉及的账户的有序锁中优先级当前最高线程标识对应的计数器减1,其中,当计数器为0时,则将线程标识弹出。
一种区块链交易并行处理系统,包括:
预处理模块,用于将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息,其中,有序锁设有若干线程标识,线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级;
并行处理模块,用于根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的有序锁中优先级最高的线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的有序锁中线程标识的优先级进行更新,以此重复直至各组交易均被执行。
一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述区块链交易并行处理方法。
一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述区块链交易并行处理方法。
本发明与现有技术相比具有以下的优点和积极效果:
1)本发明通过有序锁进行并行处理中上锁,可以限定线程之间对多笔交易中同一账户的交易之间的处理先后顺序,其中,基于有序锁,各线程根据各个账户的有序锁内线程标识的优先级,有序地并行化执行各组别的交易,解决了多个账户各自涉及的多笔交易在多线程并行处理情况下的处理顺序问题,保障了并行化处理的效率;
2)本发明通过在有序锁中设置线程标识对应的计数器,当一个线程内有多笔交易涉及同一账户时,线程可以保持现有优先级的情况下依次执行该多笔交易,而其他线程需等待该多笔交易执行结束之后,才能对该统一账户进行其他交易处理,避免了线程执行涉及统一账户的多笔交易时,其他线程干扰其执行,解决了一个线程内有多笔交易涉及同一个账户的并行处理问题,保障了并行化处理的有序性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1为本发明一个实施例中区块链交易并行处理方法的整体流程图;
图2为本发明一个实施例中区块链交易并行处理方法的并行化执行流程图;
图3为本发明一个实施例中区块链交易并行处理系统的结构框图。
附图标记说明:
1-预处理模块;2-并行处理模块。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
区块链简单地说就是一种去中心化的分布式账本数据库,区块链技术本质上是一种数据库技术,每个区块就像一个硬盘,把信息全部保存下来,再通过密码学技术进行加密,这些被保存的信息就无法被篡改。区块链具有去中心化、开放性、独立性、安全性、匿名性的特征,可以应用到生活的众多方面,其中,在众多应用中,交易、支付等是区块链的重要应用之一,由于区块链去中心化的特点,可以帮助点对点交易,让支付和交易变得更加高效、更加便捷。
虽然区块链具有众多优势,但对于区块链平台上并行处理交易时,不仅需要满足当账户涉及的多笔交易需要多个线程进行有序执行的需求,同时,还需面对一个线程内有多笔交易涉及同一个账户的并行处理情况。
第一实施例
为解决上述问题,参看图1,本实施例提出一种区块链交易并行处理方法,包括以下步骤:
S1:将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息,其中,有序锁设有若干线程标识,线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级;
S2:根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的有序锁中优先级最高的线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的有序锁中线程标识的优先级进行更新,以此重复直至各组交易均被执行。
现对本实施例进行详细说明,但不仅限于此。
本实施例适用于并行处理多笔交易,尤其适用于解决多笔交易并行处理的顺序问题,可以实现各个线程有序地执行各自需要处理的交易组,并且执行交易不会互相影响,避免一些如数据覆盖等交易失败的情况,保障了多笔交易并行处理的有序性,从而保障了并行处理的整体效率。
1)具体介绍步骤S1
本实施例将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息。其中,根据创建的并行化处理区块交易的线程的数量,将区块内的交易分为等数量的组别,并且根据所创建的线程的编号顺序,串行地将每组别中交易涉及的所有账户的有序锁压入各组别所对应线程的调度信息,各线程根据调度信息就可以有序地并行化处理各组别交易。
本实施例中的每个账户内都设有一个有序锁,该锁为队列结构,其元素为线程标识,具体可以是线程名字或者线程标号,其中,有序锁中的若干线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级。具体例如某个账户的有序锁为:|1|3|7|,其中,1、3、7为线程标识,其表示线程1、线程3、线程7均需对该账户执行交易,若默认线程标识的队列顺序为其优先级高低,故线程1对该账户执行对应交易的优先级最高,线程7对该账户执行对应交易的优先级最低。优选地,有序锁的线程标识按照线程的编号顺序排列,进一步地,有序锁还可以设有线程标识对应的下标,下标为线程标识的优先级。同样地,也可以按照其他顺序排列,以限定对同一账户线程之间处理的优先级。
具体地,例如预先创建了16个线程并行化处理区块交易,线程编号分别为0~f,区块开始之前,首先将区块内的交易分为16个组,每个线程对应一个组。从第一组开始,将第一组交易涉及的所有账户的有序锁压入线程1的调度信息,然后将第二组交易涉及的所有账户的有序锁压入线程2的调度信息,以此类推,直到第16组完成。值得注意的是,本实例的有序锁压入需要一组一组的串行执行。通过上述步骤实现并行处理之前的交易预处理,以便于各线程可以并行化地执行各自组别的交易。
2)具体介绍步骤S2
本实施例根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的有序锁中优先级最高的线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的有序锁中线程标识的优先级进行更新,以此重复直至各组交易均被执行。
其中,参看图2,各线程依次取出对应组别中的交易,每取出一个交易,则将该交易对应的账户的有序锁内的第一个线程标识与当前的线程的编号进行比较:若相同,则当前的线程对该账户执行交易的优先权最高,执行取出的交易;若不相同,则将取出的交易放入待执行缓冲区。
具体地,再拿上述举例的账户进行说明,其有序锁为:|1|3|7|,当线程1、线程3、线程7并行化交易时,当线程1取出了涉及该账户的交易,则获取交易账号的有序锁的第一个元素为1,此与线程1的标号相同,则说明当前线程1对该账户的处理权在第一位,则直接执行,当线程1对涉及该账户的交易完成后,则对交易涉及账户的有序锁中线程标识的优先级进行更新,具体可以将线程标识1弹出有序锁,上述有序锁弹出线程标识1之后将变成:|3|7|。此情况下更新之后的有序锁的最高优先级为3,则当线程3取出了涉及该账户的交易,则获取交易账号的有序锁的第一个元素现在为3,此与线程3的标号相同,则说明当前线程3对该账户的处理权在第一位,可以直接执行,同样的,线程7待线程3完成对该账户的交易之后,可执行其组别中涉及该账户的交易。
另一方面,若线程1还未执行其组别中涉及该账户的交易,则线程3取出了涉及该账户的交易时,获取交易账号的有序锁的第一个元素现在还是为1,此与线程3的标号不相同,则说明当前线程3对该账户的处理权不在第一位,可以将取出的交易放入待执行缓冲区,该线程3先执行其他交易,待线程1执行其组别中涉及该账户的交易之后,线程3再从缓冲区中取出涉及该账户的交易进行执行。
本实施例通过有序锁进行并行处理中上锁,可以限定线程之间对多笔交易中同一账户的交易之间的处理先后顺序,其中,基于有序锁,各线程根据各个账户的有序锁内线程标识的优先级,有序地并行化执行各组别的交易,解决了多个账户各自涉及的多笔交易在多线程并行处理情况下的处理顺序问题,保障了并行化处理的效率。
具体地,本实施例对交易涉及账户的有序锁中线程标识的优先级进行更新,可以将交易涉及的账户的有序锁中优先级当前最高的线程标识弹出,同样地,也可以修改有序锁中的线程标识的优先级,以使得下一待执行交易的线程对该账户的处理权在第一位。
虽然上述可以实现多个线程并行化执行多笔交易,但是当前一个线程在执行第一笔涉及该账户的交易后,就将有序锁内的线程编号弹出了,那么这时候是该执行当前线程中剩下的涉及该账户的交易将会出现问题,故需要解决该问题。
优选地,为解决上述问题,有序锁还设有线程标识对应的计数器,计数器为同一线程内涉及该账户的交易个数,其中,对交易涉及账户的有序锁中线程标识的优先级进行更新进一步包括:对交易涉及的账户的有序锁中优先级当前最高线程标识对应的计数器减1,其中,当计数器为0时,则将线程标识弹出。
具体地,例如一个账户的有序锁为:|1:5|3:1|7:10|,其中,1、3、7还为线程标识,其表示线程1、线程3、线程7均需对该账户执行交易,而后面对应的5、1、10则表示同一线程中涉及该账户的交易数量,其中,优先级最高的是1号线程,该线程内有5个交易涉及当前地址。第2优先级的为3号线程,线程内只有1个交易涉及当前地址,第3优先级为7号线程,线程内有10个交易涉及当前地。基于该有序锁,线程1需要执行完其涉及该账户的5笔交易之后,才轮到线程3执行其涉及该账户的1笔交易,待线程3执行完,才轮到线程7执行其涉及该账户的10笔交易,其中每个线程每执行一笔涉及该账号的交易,则对应的计数器减1,当对应的计数器为0时,则将对当前线程标识从有序锁中弹出。
本实施例通过在有序锁中设置线程标识对应的计数器,当一个线程内有多笔交易涉及同一账户时,线程可以保持现有优先级的情况下依次执行该多笔交易,而其他线程需等待该多笔交易执行结束之后,才能对该统一账户进行其他交易处理,避免了线程执行涉及统一账户的多笔交易时,其他线程干扰其执行,解决了一个线程内有多笔交易涉及同一个账户的并行处理问题,保障了并行化处理的有序性。
第二实施例
参看图3,本发明提出了一种基于第一实施例的一种区块链交易并行处理系统,包括:
预处理模块1,用于将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息,其中,有序锁设有若干线程标识,线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级;
并行处理模块2,用于根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的有序锁中优先级最高的线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的有序锁中线程标识的优先级进行更新,以此重复直至各组交易均被执行。
现具体对本实施例进行详细说明,但不仅限于此。
本实施例适用于并行处理多笔交易,尤其适用于解决多笔交易并行处理的顺序问题,可以实现各个线程有序地执行各自需要处理的交易组,并且执行交易不会互相影响,避免一些如数据覆盖等交易失败的情况,保障了多笔交易并行处理的有序性,从而保障了并行处理的整体效率。
1)具体介绍预处理模块
本实施例的预处理模块将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息。其中,根据创建的并行化处理区块交易的线程的数量,将区块内的交易分为等数量的组别,并且根据所创建的线程的编号顺序,串行地将每组别中交易涉及的所有账户的有序锁压入各组别所对应的线程的调度信息,各线程根据调度信息就可以有序地并行化处理各组别交易。
本实施例中的每个账户内都设有一个有序锁,该锁为队列结构,其元素为线程标识,具体可以是线程名字或者线程标号,其中,有序锁中的若干线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级。具体例如某个账户的有序锁为:|1|3|7|,其中,1、3、7为线程标识,其表示线程1、线程3、线程7均需对该账户执行交易,若默认线程标识的队列顺序为其优先级高低,故线程1对该账户执行对应交易的优先级最高,线程7对该账户执行对应交易的优先级最低。优选地,有序锁的线程标识按照线程的编号顺序排列,进一步地,有序锁还可以设有线程标识对应的下标,下标为线程标识的优先级。同样地,也可以按照其他顺序排列,以限定对同一账户线程之间处理的优先级。
具体地,例如预先创建了16个线程并行化处理区块交易,线程编号分别为0~f,区块开始之前,首先将区块内的交易分为16个组,每个线程对应一个组。从第一组开始,将第一组交易涉及的所有账户的有序锁压入线程1的调度信息,然后将第二组交易涉及的所有账户的有序锁压入线程2的调度信息,以此类推,直到第16组完成。值得注意的是,本实例的有序锁压入需要一组一组的串行执行。通过上述步骤实现并行处理之前的交易预处理,以便于各线程可以并行化地执行各自组别的交易。
2)具体介绍并行处理模块
本实施例的并行处理模块根据各个账户的有序锁内线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的有序锁中优先级最高的线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的有序锁中线程标识的优先级进行更新,以此重复直至各组交易均被执行。
其中,各线程依次取出对应组别中的交易,每取出一个交易,则将该交易对应的账户的有序锁内的第一个线程标识与当前的线程的编号进行比较:若相同,则当前的线程对该账户执行交易的优先权最高,执行取出的交易;若不相同,则将取出的交易放入待执行缓冲区。
具体地,再拿上述举例的账户进行说明,其有序锁为:|1|3|7|,当线程1、线程3、线程7并行化交易时,当线程1取出了涉及该账户的交易,则获取交易账号的有序锁的第一个元素为1,此与线程1的标号相同,则说明当前线程1对该账户的处理权在第一位,则直接执行,当线程1对涉及该账户的交易完成后,则对交易涉及账户的有序锁中线程标识的优先级进行更新,具体可以将线程标识1弹出有序锁,上述有序锁弹出线程标识1之后将变成:|3|7|。此情况下更新之后的有序锁的最高优先级为3,则当线程3取出了涉及该账户的交易,则获取交易账号的有序锁的第一个元素现在为3,此与线程3的标号相同,则说明当前线程3对该账户的处理权在第一位,可以直接执行,同样的,线程7待线程3完成对该账户的交易之后,可执行其组别中涉及该账户的交易。
另一方面,若线程1还未执行其组别中涉及该账户的交易,则线程3取出了涉及该账户的交易时,获取交易账号的有序锁的第一个元素现在还是为1,此与线程3的标号不相同,则说明当前线程3对该账户的处理权不在第一位,可以将取出的交易放入待执行缓冲区,该线程3先执行其他交易,待线程1执行其组别中涉及该账户的交易之后,线程3再从缓冲区中取出涉及该账户的交易进行执行。
本实施例通过有序锁进行并行处理中上锁,可以限定线程之间对多笔交易中同一账户的交易之间的处理先后顺序,其中,基于有序锁,各线程根据各个账户的有序锁内线程标识的优先级,有序地并行化执行各组别的交易,解决了多个账户各自涉及的多笔交易在多线程并行处理情况下的处理顺序问题,保障了并行化处理的效率。
具体地,本实施例对交易涉及账户的有序锁中线程标识的优先级进行更新,可以将交易涉及的账户的有序锁中优先级当前最高的线程标识弹出,同样地,也可以修改有序锁中的线程标识的优先级,以使得下一待执行交易的线程对该账户的处理权在第一位。
虽然上述可以实现多个线程并行化执行多笔交易,但是当前一个线程在执行第一笔涉及该账户的交易后,就将有序锁内的线程编号弹出了,那么这时候是该执行当前线程中剩下的涉及该账户的交易将会出现问题,故需要解决该问题。
优选地,为解决上述问题,有序锁还设有线程标识对应的计数器,计数器为同一线程内涉及该账户的交易个数,其中,对交易涉及账户的有序锁中线程标识的优先级进行更新进一步包括:对交易涉及的账户的有序锁中优先级当前最高线程标识对应的计数器减1,其中,当计数器为0时,则将线程标识弹出。
具体地,例如一个账户的有序锁为:|1:5|3:1|7:10|,其中,1、3、7还为线程标识,其表示线程1、线程3、线程7均需对该账户执行交易,而后面对应的5、1、10则表示同一线程中涉及该账户的交易数量,其中,优先级最高的是1号线程,该线程内有5个交易涉及当前地址。第2优先级的为3号线程,线程内只有1个交易涉及当前地址,第3优先级为7号线程,线程内有10个交易涉及当前地。基于该有序锁,线程1需要执行完其涉及该账户的5笔交易之后,才轮到线程3执行其涉及该账户的1笔交易,待线程3执行完,才轮到线程7执行其涉及该账户的10笔交易,其中每个线程每执行一笔涉及该账号的交易,则对应的计数器减1,当对应的计数器为0时,则将对当前线程标识从有序锁中弹出。
本实施例通过在有序锁中设置线程标识对应的计数器,当一个线程内有多笔交易涉及同一账户时,线程可以保持现有优先级的情况下依次执行该多笔交易,而其他线程需等待该多笔交易执行结束之后,才能对该统一账户进行其他交易处理,避免了线程执行涉及统一账户的多笔交易时,其他线程干扰其执行,解决了一个线程内有多笔交易涉及同一个账户的并行处理问题,保障了并行化处理的有序性。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
第三实施例
本发明还提出了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如上述第一实施例所提及的区块链交易并行处理方法。
第四实施例
本发明提出了一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述第一实施例中所提及的区块链交易并行处理方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种区块链交易并行处理方法,其特征在于,包括以下步骤:
S1:将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息,其中,所述有序锁设有若干线程标识,所述线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级;
S2:根据各个账户的所述有序锁内所述线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的所述有序锁中优先级最高的所述线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的所述有序锁中所述线程标识的优先级进行更新,以此重复直至各组交易均被执行。
2.根据权利要求1所述的区块链交易并行处理方法,其特征在于,所述将区块内的交易分为若干组别进一步包括:
根据创建的并行化处理区块交易的线程的数量,将区块内的交易分为等数量的组别。
3.根据权利要求2所述的区块链交易并行处理方法,其特征在于,所述将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息进一步包括:
根据所创建的线程的编号顺序,串行地将每组别中交易涉及的所有账户的所述有序锁压入各组别所对应的线程的调度信息。
4.根据权利要求1所述的区块链交易并行处理方法,其特征在于,所述有序锁为队列结构,所述有序锁的线程标识按照线程的编号顺序排列。
5.根据权利要求4所述的区块链交易并行处理方法,其特征在于,所述根据各个账户的所述有序锁内所述线程标识的优先级,各线程并行化执行各组别的交易进一步包括:
各线程依次取出对应组别中的交易,每取出一个交易,则将该交易对应的账户的所述有序锁内的第一个线程标识与当前的线程的编号进行比较:
若相同,则所述当前的线程对该账户执行交易的优先权最高,执行取出的交易;
若不相同,则将取出的交易放入待执行缓冲区。
6.根据权利要求1所述的区块链交易并行处理方法,其特征在于,所述线程标识为线程名字或线程编号,所述有序锁还设有所述线程标识对应的下标,所述下标为所述线程标识的优先级。
7.根据权利要求1至6任意一项所述的区块链交易并行处理方法,其特征在于,所述对交易涉及账户的所述有序锁中所述线程标识的优先级进行更新进一步包括:
将交易涉及的账户的所述有序锁中优先级当前最高的所述线程标识弹出。
8.根据权利要求1至6任意一项所述的区块链交易并行处理方法,其特征在于,所述有序锁还设有所述线程标识对应的计数器,所述计数器为同一线程内涉及该账户的交易个数,其中,所述对交易涉及账户的所述有序锁中所述线程标识的优先级进行更新进一步包括:
对交易涉及的账户的所述有序锁中优先级当前最高所述线程标识对应的所述计数器减1,其中,当所述计数器为0时,则将所述线程标识弹出。
9.一种区块链交易并行处理系统,其特征在于,包括:
预处理模块,用于将区块内的交易分为若干组别,并将每组别中交易涉及的所有账户的有序锁压入各自线程的调度信息,其中,所述有序锁设有若干线程标识,所述线程标识用于标识需对账户执行交易的线程、以及线程之间处理的优先级;
并行处理模块,用于根据各个账户的所述有序锁内所述线程标识的优先级,各线程并行化执行各组别的交易,其中,与各个账户的所述有序锁中优先级最高的所述线程标识对应的线程,优先执行涉及账户的交易,并且交易完成后,对交易涉及账户的所述有序锁中所述线程标识的优先级进行更新,以此重复直至各组交易均被执行。
10.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至8中任一项所述的区块链交易并行处理方法。
11.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至8中任一项所述的区块链交易并行处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011638960.2A CN112748994B (zh) | 2020-12-31 | 2020-12-31 | 一种区块链交易并行处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011638960.2A CN112748994B (zh) | 2020-12-31 | 2020-12-31 | 一种区块链交易并行处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112748994A true CN112748994A (zh) | 2021-05-04 |
CN112748994B CN112748994B (zh) | 2023-11-28 |
Family
ID=75651175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011638960.2A Active CN112748994B (zh) | 2020-12-31 | 2020-12-31 | 一种区块链交易并行处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112748994B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656510A (zh) * | 2021-08-26 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 区块链系统中执行交易的方法及装置 |
CN113656507A (zh) * | 2021-08-26 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 区块链系统中执行交易的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001016704A2 (en) * | 1999-08-31 | 2001-03-08 | Accenture Llp | System, method, and article of manufacture for a request sorter in a transaction services patterns environment |
US20020087736A1 (en) * | 2000-12-30 | 2002-07-04 | Emc Corporation | Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products |
CN107678865A (zh) * | 2017-09-20 | 2018-02-09 | 中国银行股份有限公司 | 基于交易分组的区块链的验证方法以及系统 |
CN108804112A (zh) * | 2018-05-22 | 2018-11-13 | 上海分布信息科技有限公司 | 一种区块链落账处理方法及系统 |
CN109598598A (zh) * | 2018-10-25 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
CN110300985A (zh) * | 2018-12-28 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 基于智能合约白名单在区块链网络中并行执行交易 |
-
2020
- 2020-12-31 CN CN202011638960.2A patent/CN112748994B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001016704A2 (en) * | 1999-08-31 | 2001-03-08 | Accenture Llp | System, method, and article of manufacture for a request sorter in a transaction services patterns environment |
US20020087736A1 (en) * | 2000-12-30 | 2002-07-04 | Emc Corporation | Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products |
CN107678865A (zh) * | 2017-09-20 | 2018-02-09 | 中国银行股份有限公司 | 基于交易分组的区块链的验证方法以及系统 |
CN108804112A (zh) * | 2018-05-22 | 2018-11-13 | 上海分布信息科技有限公司 | 一种区块链落账处理方法及系统 |
CN109598598A (zh) * | 2018-10-25 | 2019-04-09 | 阿里巴巴集团控股有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
CN110300985A (zh) * | 2018-12-28 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 基于智能合约白名单在区块链网络中并行执行交易 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656510A (zh) * | 2021-08-26 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 区块链系统中执行交易的方法及装置 |
CN113656507A (zh) * | 2021-08-26 | 2021-11-16 | 支付宝(杭州)信息技术有限公司 | 区块链系统中执行交易的方法及装置 |
CN113656507B (zh) * | 2021-08-26 | 2024-03-08 | 支付宝(杭州)信息技术有限公司 | 区块链系统中执行交易的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112748994B (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113836227B (zh) | 一种基于区块链的资产申购方法、装置及电子设备 | |
CN107391527B (zh) | 一种基于区块链的数据处理方法及设备 | |
EP3955191A1 (en) | Method and apparatus for verifying commodities in batches based on blockchain, and electronic device | |
CN112748994B (zh) | 一种区块链交易并行处理方法及系统 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
EP3230860B1 (en) | Technologies for efficient synchronization barriers with work stealing support | |
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
CN111444192B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN108073687B (zh) | 随机游走、基于集群的随机游走方法、装置以及设备 | |
CN104252386B (zh) | 数据更新的加锁方法和设备 | |
CN114529417A (zh) | 执行交易的方法、区块链、主节点和从节点 | |
CN113744063B (zh) | 区块链中执行交易的方法及装置 | |
CN113744062B (zh) | 在区块链中执行交易的方法、区块链节点和区块链 | |
US10776334B2 (en) | Random walking and cluster-based random walking method, apparatus and device | |
US10901972B2 (en) | Table partition configuration method, apparatus and system for database system | |
CN116993519A (zh) | 账单生成方法及装置 | |
CN115829000A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113506164B (zh) | 一种风控决策方法、装置、电子设备及机器可读存储介质 | |
WO2022134426A1 (zh) | 可重构处理器中的指令分发方法、系统以及存储介质 | |
CN109213821B (zh) | 数据处理方法及系统 | |
CN110888865A (zh) | 一种基于单向链表的数据处理方法及装置 | |
CN113342897A (zh) | 一种数据同步的方法及装置 | |
CN109903165B (zh) | 一种模型合并方法和装置 | |
CN109101641B (zh) | 表格处理方法、装置、系统和介质 | |
CN112288586A (zh) | 基于HBase的保险行业数据整合方法及相关设备 |
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 |