CN111563820B - 智能合约并行执行方法及装置 - Google Patents
智能合约并行执行方法及装置 Download PDFInfo
- Publication number
- CN111563820B CN111563820B CN202010384557.5A CN202010384557A CN111563820B CN 111563820 B CN111563820 B CN 111563820B CN 202010384557 A CN202010384557 A CN 202010384557A CN 111563820 B CN111563820 B CN 111563820B
- Authority
- CN
- China
- Prior art keywords
- contract
- transaction
- parallel
- transfer
- intelligent
- 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
Classifications
-
- 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
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q20/102—Bill distribution or payments
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Multi Processors (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请实施例提供一种智能合约并行执行方法及装置,方法包括:在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;协程与合约通道一一对应,每个合约通道均包含智能合约链码号相同的多个交易信息;根据带权有向图生成转账交易并行顺序,并执行各个属于转账类型的智能合约,以使各个合约通道中的交易信息属于存证类型和转账类型的智能合约并行执行。本申请能够有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
Description
技术领域
本申请涉及区块链技术领域,具体涉及智能合约并行执行方法及装置。
背景技术
人类对信息处理的追求从未停止脚步。在计算机通信领域,业界提出了每秒交易数(TPS,Transactions Per Second),即系统吞吐量来评价一个系统对信息处理的速度。然而,区块链系统作为后起之秀在TPS方面却与传统的中心化系统相差甚远,其主要原因在于区块链系统安全、共识、智能合约执行等机制的影响。因此,区块链系统在高并发,高压力的场景中难以施展拳脚,极大的限制了区块链技术的应用场景。
目前业界区块链智能合约并行方面也有不少成熟的方案,如以业务为粒度划分多条并行链以及DAG有向无环图等,然而,以业务为粒度划分多条并行链的方式因链与链之间的并行处理方式,使得该方式所占用的资源较多,使得该方式的并行成本较高;并且无论是上述哪一种方式,均存在交易成功率无法提升的瓶颈,例如在交易排序后执行的DAG有向无环图的应用过程中,其智能合约并行执行成功率等同于交易排序后的执行成功率,无法获得进一步提升。
发明内容
针对现有技术中的问题,本申请提供一种智能合约并行执行方法及装置,能够有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
为解决上述技术问题,本申请提供以下技术方案:
第一方面,本申请提供一种智能合约并行执行方法,包括:
在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息;
根据所述带权有向图生成对应的转账交易并行顺序;
基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
第二方面,本申请提供一种智能合约并行执行装置,包括:
带权有向图生成模块,用于在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息;
执行顺序生成模块,用于根据所述带权有向图生成对应的转账交易并行顺序;
转账合约执行模块,用于基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
第三方面,本申请提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的智能合约并行执行方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的智能合约并行执行方法的步骤。
由上述技术方案可知,本申请提供的一种智能合约并行执行方法及装置,方法包括:在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息;根据所述带权有向图生成对应的转账交易并行顺序;基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行,能够有效解决现有区块链系统在高并发情况下转账交易处理速度低的问题,进而能够有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例中的智能合约并行执行方法的流程示意图。
图2是本申请实施例中的智能合约并行执行方法中步骤010和步骤020的具体流程示意图。
图3是本申请实施例中的智能合约并行执行方法中步骤010至步骤030的具体流程示意图。
图4是本申请实施例中的智能合约并行执行方法中步骤010至步骤040的具体流程示意图。
图5是本申请实施例中的包含有步骤050的智能合约并行执行方法的流程示意图。
图6是本申请实施例中的智能合约并行执行方法中步骤200的具体流程示意图。
图7是本申请实施例中的包含有步骤400的智能合约并行执行方法的流程示意图。
图8是本申请实施例中的智能合约并行执行装置的第一种结构示意图。
图9是本申请实施例中的智能合约并行执行装置的第二种结构示意图。
图10是本申请实施例中的智能合约并行执行装置中的执行顺序生成模块的具体结构示意图。
图11是本申请应用实例提供的区块交易分类器结构图。
图12是本申请应用实例提供的区块交易分类器逻辑示意图。
图13是本申请应用实例提供的区块交易分类器流程图。
图14是本申请应用实例提供的合约通道管理器结构图。
图15是本申请应用实例提供的合约逻辑筛选示意图。
图16是本申请应用实例提供的合约并行分析器流程图。
图17是本申请应用实例提供的合约并行算法一趟流程图。
图18是本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
当前对区块链中智能合约进行并行执行的方案包括:传统区块链交易、以业务为粒度划分多条并行链以及DAG有向无环图等,这三种该方式与本申请实施例中提高的智能合约并行执行方法之间的区别对比内容如表1所示。
表1
其中,在传统区块链的交易中,智能合约与交易是一对一关系,交易并行即智能合约并行。
常见的智能合约的类型有:发布、查询、存证、转账和终止五大类型,而调用类型又可细分为存证与转账两大类,本发明提出的并行策略主要针对转账交易类型,具体说明如下:
(1)查询类型:查询交易不上链,对数据无读写依赖,可并发执行。
(2)发布、终止类型:在一般情况下发布智能合约与终止智能合约仅需执行一次,无并发需求。
(3)存证类型:站在区块链角度,区块链中保存的每一笔交易都是独立的(由交易uuid、上链时间,上链账户等属性作为主键),链上每一笔交易都可查询,可追溯,因此不存在对同一个资源对象因合约执行顺序造成脏数据的问题,该类型交易天然支持并发。
(4)转账类型:由于同一个区块内的交易有可能涉及对同一账户资金的转入与转出,账户账本间对数据的依赖大,因此传统的解决方案是按顺序执行智能合约,但串行执行耗时大,不能满足高并发交易的需求,因此需要一种高效且稳定的方案,在提高智能合约执行速度的同事还能保证,甚至提高区块内交易的成功率。
为了有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率,本申请提供一种智能合约并行执行方法的实施例,参见图1,所述智能合约并行执行方法具体包含有如下内容:
步骤100:在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息。
可以理解的是,通过将各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息的设置,能够有效划分可并行的交易,进而能够有效提高区块内的高智能合约的并发度。
步骤200:根据所述带权有向图生成对应的转账交易并行顺序。
可以理解的是,该转账交易并行顺序即为属于转账类型的智能合约的最优执行顺序。
步骤300:基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
在步骤200和步骤300中,通过获取转账类型的智能合约的转账交易并行顺序,并应用该最优的转账交易执行各个属于所述转账类型的智能合约,能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
为了进一步提高区块内的智能合约的并发度,在本申请提供的智能合约并行执行方法的一实施例中,参见图2,所述智能合约并行执行方法中的步骤100之前还具体包含有如下内容:
步骤010:获取当前区块链中的各节点对应的共识区块内容中的多个交易信息。
步骤020:基于各个所述交易信息各自对应的智能合约链码号将各个所述交易信息分别划分至对应的合约通道内,且各个所述合约通道分别与预设的各个协程之间一一对应。
在步骤020中,所述智能合约链码号具体指智能合约对应的链码的标识,可以具体表示为CCID,CCID是智能合约ID号,也称为链码ID(chaincode id),是智能合约的唯一标识符。
为了有效提高智能合约并行执行的可靠性,在本申请提供的智能合约并行执行方法的一实施例中,参见图3,所述智能合约并行执行方法中的步骤020之后以及步骤100之前还具体包含有如下内容:
步骤030:获取各个所述合约通道中的各个交易信息分别应的智能合约的类型,其中,所述智能合约的类型包括:发布类型、存证类型、转账类型和终止类型。
为了有效提高合约成功率,仅有合约发布成功后,合约才能执行成功,需把属于发布类型的智能合约对应的交易作为前置交易,在本申请提供的智能合约并行执行方法的一实施例中,参见图4,所述智能合约并行执行方法中的步骤030之后以及步骤100之前还具体包含有如下内容:
步骤040:应用所述协程执行对应的所述合约通道中的交易信息对应的属于所述发布类型的智能合约。
相对应的,参见图5,在步骤040之后执行的步骤具体可以包含有如下内容:
步骤050:应用各个所述协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约。
其中,所述步骤050与步骤100至步骤300并行执行。
为了有效提高转账交易并行顺序的获取准确性,以进一步有效提升区块内的交易成功率,在本申请提供的智能合约并行执行方法的一实施例中,参见图6,所述智能合约并行执行方法中的步骤200具体包含有如下内容:
步骤210:建立所述带权有向图对应的邻接矩阵。
步骤220:根据所述邻接矩阵以及各个账户在当前区块链的账本信息获取对应的邻接矩阵表,其中,该邻接矩阵表用于存储账户信息、初始权值、出度边和入度边之间的对应关系。
步骤230:根据所述邻接矩阵表生成对应的转账交易并行顺序。
可以理解的是,具体可以选取一个账户,判断是否存在比自身权值小的出度边,若是,则以数量原则尽可能多的选择出度边,使得出度边权值之和小于自身权值,而后挑选出的出度边放入并行池并行执行智能合约,以及并行执行并行池中的智能合约,若否,选取下一个账户重新进行出度边判断,直至邻接矩阵表中的账户全部遍历完毕。
为了进一步提高智能合约执行的成功率,避免因过早执行属于所述终止类型的智能合约而导致的合约执行失败的情形出现,在本申请提供的智能合约并行执行方法的一实施例中,参见图7,所述智能合约并行执行方法中的步骤300之后还具体包含有如下内容:
步骤400:应用所述协程执行对应的所述合约通道中的交易信息对应的属于所述终止类型的智能合约。
从软件层面来说,为了有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率,本申请还提供一种用于实现所述智能合约并行执行方法中全部或分部内容的智能合约并行执行装置的实施例,参见图8,所述智能合约并行执行装置具体包含有如下内容:
带权有向图生成模块1,用于在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息。
执行顺序生成模块2,用于根据所述带权有向图生成对应的转账交易并行顺序。
转账合约执行模块3,用于基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
为了进一步提高区块内的智能合约的并发度,在本申请提供的智能合约并行执行装置的一实施例中,参见图9,所述智能合约并行执行装置中还具体包含有如下内容:
交易信息获取模块01,用于获取当前区块链中的各节点对应的共识区块内容中的多个交易信息。
合约通道划分模块02,用于基于各个所述交易信息各自对应的智能合约链码号将各个所述交易信息分别划分至对应的合约通道内,且各个所述合约通道分别与预设的各个协程之间一一对应。
为了有效提高智能合约并行执行的可靠性,在本申请提供的智能合约并行执行装置的一实施例中,参见图9,所述智能合约并行执行装置中还具体包含有如下内容:
合约分类模块03,用于获取各个所述合约通道中的各个交易信息分别应的智能合约的类型,其中,所述智能合约的类型包括:发布类型、存证类型、转账类型和终止类型。
为了有效提高合约成功率,仅有合约发布成功后,合约才能执行成功,需把属于发布类型的智能合约对应的交易作为前置交易,在本申请提供的智能合约并行执行装置的一实施例中,参见图9,所述智能合约并行执行装置中还具体包含有如下内容:
发布合约执行模块04,用于应用所述协程执行对应的所述合约通道中的交易信息对应的属于所述发布类型的智能合约。
相对应的,参见图9,在发布合约执行模块04执行之后,所述智能合约并行执行装置中还具体包含有:
存证合约执行模块05,用于应用各个所述协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约。
为了有效提高转账交易并行顺序的获取准确性,以进一步有效提升区块内的交易成功率,在本申请提供的智能合约并行执行装置的一实施例中,参见图10,所述智能合约并行执行装置中的执行顺序生成模块2具体包含有如下内容:
邻接矩阵建立单元21,用于建立所述带权有向图对应的邻接矩阵。
邻接矩阵表生成单元22,用于根据所述邻接矩阵以及各个账户在当前区块链的账本信息获取对应的邻接矩阵表,其中,该邻接矩阵表用于存储账户信息、初始权值、出度边和入度边之间的对应关系。
转账交易并行顺序生成单元23,用于根据所述邻接矩阵表生成对应的转账交易并行顺序。
为了进一步提高智能合约执行的成功率,避免因过早执行属于所述终止类型的智能合约而导致的合约执行失败的情形出现,在本申请提供的智能合约并行执行装置的一实施例中,参见图9,所述智能合约并行执行装置中还具体包含有如下内容:
终止合约执行模块4,用于应用所述协程执行对应的所述合约通道中的交易信息对应的属于所述终止类型的智能合约。
从上述描述可知,本申请实施例提供的智能合约并行执行装置,能够有效解决现有区块链系统在高并发情况下转账交易处理速度低的问题,进而能够有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
为进一步说明本方案,本申请还提供一种应用区块交易分类器实现的智能合约并行执行方法的具体应用实例,该方法主要针对转账类型的智能合约。通过提取区块内交易的转账关系构建对应的带权有向图,分析出智能合约的最优执行顺序,该步骤包括:1)分析可并行的交易;2)调整交易执行顺序;步骤1能够尽可能的提区块内高智能合约的并发度,步骤2)能够尽可能的提升区块内的交易成功率。通过该方法能够有效解决现有区块链系统在高并发情况下转账交易处理速度低的问题。
本申请应用实例提供的具体内容如下:
参见图11,区块交易分类器10由4个模块组成,分别是:交易解析器11、交易分类逻辑单元12、协程生成器13、合约通道管理器14。
所述交易解析器11用于解析区块链系统中各节点共识后的区块内容,并把解析后的交易信息发送到交易分类逻辑单元12。
所述交易分类逻辑单元12主要根据区块内每笔交易所携带的智能合约链码号CCID做交易分类,相同CCID的交易将会同被划分到同一个合约通道,不同合约通道使用不同的协程并行处理。
所述协程生成器13主要用于管理和生成协程,不同的CCID的交易将会使用不同的协程进行处理,协程、CCID和交易的关系为1:1:N。
所述合约通道管理器14由多个合约通道(队列)组成,每条通道内的交易所携带的CCID皆相同。
参见图12,能够简单阐述区块内的交易是如何根据CCID进行分类。
Block N表示区块链系统共识后的区块,区块内包含多笔交易。
Transaction表示区块链系统接收到的交易信息,每笔交易都携带一个链码ID号。
Chaincode表示链码,ChaincodeA、B和C分别表示不同的链码。
CCID表示智能合约链码号,也是智能合约ID号,也称为链码ID(Chaincode id),他是智能合约的唯一标识符。
Routine表示指Go语言中的协程,每一个合约通道都运行在不同的协程中,不同协程间并行执行,RoutineA、B和C分别表示不同的协程。
Channel表示合约通道,每一个合约通道表示一个交易集,交易集中的CCID都是相同的,ChannelA、B和C分别表示不同的合约通道。
通过交易分类器,区块内的交易将会归类到不同的合约通道中,不同的合约通道间的交易可并行支持,因此该部件也称为“智能合约一级并行器”。
参见图13,当全网共识完成后,VP节点将会触发该流程。
步骤S101,VP节点接收共识区块。
步骤S102,解析共识的区块交易,分析区块内交易的CCID号。
步骤S103,判断交易中的CCID是否已存在,已存在则直接执行步骤S106,不存在则依次执行步骤S104、S105和S106。
步骤S104,创建合约通道Channel-CCID,用于存放链码ID为CCID号的交易。
步骤S105,创建协程Rountine-CCID,用于执行合约通道Channel-CCID上的智能合约。
步骤S106,把交易存放到合约通道Channel-CCID。
参见图14,合约通道管理器14是管理合约通道与执行智能合约的模块,其中包含合约解析模块141、合约筛选逻辑单元142、合约并行分析器143和合约执行器144。
所述合约解析模块141主要用于解析交易内智能合约的类型,有发布Deploy、存证Set、转账Transfer和终止Terminate四大类型(查询Query交易不上链,因此区块内无Query类型合约)。
所述合约筛选逻辑单元142主要从区块中筛选出发布、存证、转账和终止四大类型的交易集,并作为入参参数发送到合约并行分析器中。
所述合约并行分析器143能根据入参数据分析出最优的交易(智能合约)执行顺序。
所述合约执行器144根据合约并行器分析的结果执行交易中的智能合约。
参见图15,Channel是步骤S104创建的合约通道,内部的交易信息Transaction都有一个共同的特征,智能合约的链码ID号一致。通过合约筛选逻辑单元142后,将会得出四个交易集,分别为:发布集合Deploy Queue、存证集合Set Queue、转账集合Transfer Queue和终止集合Terminate Queue。(在一般情况下,发布Deploy和终止Terminate交易仅会出现1次),最后把这四个集合作为入参传入合约并行分析器中。
参见图16所示的合约并行分析器流程,合约逻辑筛选单元142得出结果后会触发合约并行分析器执行该流程。
步骤S14301,执行Deploy Queue中的交易,仅有合约发布成功后,合约才能执行成功,为了提高合约成功率,需把此类型交易作为前置交易。
步骤S14302,并发执行Set Queue中的交易,与S14303并行。
步骤S14303,根据Transfer Queue中的交易构建带权有向图,与S14302并行。
步骤S14304,通过带权有向图分析最优的交易执行顺序。
步骤S14305,根据分析结果执行交易。
步骤S14306,执行Terminate Queue中的交易,终止智能合约交易需作为后置交易,过早执行会导致合约执行失败。
现以一案例,针对步骤S14303与S14304做详细说明,假设Transfer Queue中包含10笔交易E1-E10,其中涉及到A-F共6个用户,则可构建邻接矩阵,参见表2。
E1:B—>A,5;
E2:B—>E,20;
E3:B—>F,30;
E4:A—>B,20;
E5:A—>C,15;
E6:C—>B,4;
E7:C—>F,10;
E8:E—>D,15;
E9:F—>D,4;
E10:F—>E,10。
表2
A | B | C | D | E | F | |
A | - | 20 | 15 | - | - | - |
B | 5 | - | - | - | 20 | 30 |
C | - | 4 | - | - | - | 10 |
D | - | - | - | - | - | - |
E | - | - | - | 15 | - | - |
F | - | - | - | 4 | 10 | - |
通过带权有向图的邻接矩阵,再结合各用户当前在区块链的账本信息可分析得邻接矩阵表,其中并行分析算法主要关心初始值和出度边,参见表3。
表3
参见图17所示的智能合约并行分析算法流程,具体为合约并行算法一趟流程图,在实际的并行分析中,将回循环执行多趟算法,每一趟算法将回把可并行的交易放入并行池,并行池接收到每一趟的可并行的交易后将会通知合约执行器144执行,直到并行池无交易后,算法结束。详细步骤如下:
步骤S1430401:判断邻接矩阵表中的账户是否遍历完毕,若否则执行S1430402,若是则执行S1430407。
步骤S1430402:判断是否存在比自身权值小的出度边,若有则执行S143043,若否则执行S1430406。
步骤S1430403:以数量原则尽可能多的选择出度边,使得出度边权值之和小于自身权值。
步骤S1430404:挑选出的出度边放入并行池并行执行智能合约。
步骤S1430405:并行执行并行池中的智能合约。
步骤S1430406:下一个用户。
步骤S1430407:算法结束。因此,按照算法流程,算法流程的每一趟结果如表4所示。
表4
其中,对比按顺序执行,参见表5。
表5
从上述表5当中,可以看出本申请在提升交易并发度的同时,能够极大的提升交易成功率,但本方法存在两个缺点:
执行算法前,需要获取每个账户对应的权值(余额)来构建带权有向图(邻接矩阵)。
算法涉及的用户较多时,循环分析的次数较多,过程较慢。
解决方案如下:
在内存保存每个账户的余额信息,例如在内存中保存余额信息表,该表中保存一万个键值对<K:V>,K为账户ID,V为账户余额,并以最近最少使用原则更新此表。使用该方法能有效减少带权有向图的构建时间。
使用多协程方式进行并行分析,例如邻接矩阵涉及10个账本,可以启动十个协程并行分析出度边与自身权值的大小关系,从而提高算法速度。
从上述描述可知,本申请应用实例提供的基于带权有向图的智能合约并行执行方法,该方法主要针对区块链系统中的转账交易,它能根据区块中涉及的转账信息及账户余额构建带权有向图,并能分析出区块内交易的最优执行顺序。使用该方法不仅能提高区块内的交易成功率,还能提高智能合约的执行速度,有效地解决区块链网络在高并发情况下,拥堵及处理速度不高的问题。
从硬件层面来说,为了有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率,本申请提供一种用于实现所述智能合约并行执行方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现电子设备与用户终端以及相关数据库等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例中的智能合约并行执行方法的实施例,以及,智能合约并行执行装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
图18为本申请实施例的电子设备9600的系统构成的示意框图。如图18所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图18是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在一实施例中,智能合约并行执行功能可以被集成到中央处理器中。其中,中央处理器可以被配置为进行如下控制:
步骤100:在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息。
可以理解的是,通过将各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息的设置,能够有效划分可并行的交易,进而能够有效提高区块内的高智能合约的并发度。
步骤200:根据所述带权有向图生成对应的转账交易并行顺序。
可以理解的是,该转账交易并行顺序即为属于转账类型的智能合约的最优执行顺序。
步骤300:基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
在步骤200和步骤300中,通过获取转账类型的智能合约的转账交易并行顺序,并应用该最优的转账交易执行各个属于所述转账类型的智能合约,能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
从上述描述可知,本申请实施例提供的电子设备,能够有效解决现有区块链系统在高并发情况下转账交易处理速度低的问题,进而能够有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
在另一个实施方式中,智能合约并行执行装置可以与中央处理器9100分开配置,例如可以将智能合约并行执行装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现智能合约并行执行功能。
如图18所示,该电子设备9600还可以包括:通信模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图18中所示的所有部件;此外,电子设备9600还可以包括图18中没有示出的部件,可以参考现有技术。
如图18所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通信模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的智能合约并行执行方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的智能合约并行执行方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤100:在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息。
可以理解的是,通过将各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息的设置,能够有效划分可并行的交易,进而能够有效提高区块内的高智能合约的并发度。
步骤200:根据所述带权有向图生成对应的转账交易并行顺序。
可以理解的是,该转账交易并行顺序即为属于转账类型的智能合约的最优执行顺序。
步骤300:基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
在步骤200和步骤300中,通过获取转账类型的智能合约的转账交易并行顺序,并应用该最优的转账交易执行各个属于所述转账类型的智能合约,能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
从上述描述可知,本申请实施例提供的计算机可读存储介质,能够有效解决现有区块链系统在高并发情况下转账交易处理速度低的问题,进而能够有效提高区块内的智能合约的并发度,并能够在有效保证执行效率及降低执行成本的基础上,有效提升区块内的交易成功率,尤其能够提高转账交易的处理成功率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种智能合约并行执行方法,其特征在于,包括:
在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息;且多个所述交易信息与交易排序无关;
根据所述带权有向图生成对应的转账交易并行顺序;
基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
2.根据权利要求1所述的智能合约并行执行方法,其特征在于,在所述生成各个属于转账类型的智能合约分别对应的交易的带权有向图之前,还包括:
获取当前区块链中的各节点对应的共识区块内容中的多个交易信息;
基于各个所述交易信息各自对应的智能合约链码号将各个所述交易信息分别划分至对应的合约通道内,且各个所述合约通道分别与预设的各个协程之间一一对应。
3.根据权利要求1所述的智能合约并行执行方法,其特征在于,在所述生成各个属于转账类型的智能合约分别对应的交易的带权有向图之前,还包括:
获取各个所述合约通道中的各个交易信息分别对应的智能合约的类型,其中,所述智能合约的类型包括:发布类型、存证类型、转账类型和终止类型。
4.根据权利要求3所述的智能合约并行执行方法,其特征在于,在所述获取各个所述合约通道中的各个交易信息分别对应的智能合约的类型之后,以及在所述生成各个属于转账类型的智能合约分别对应的交易的带权有向图之前,还包括:
应用所述协程执行对应的所述合约通道中的交易信息对应的属于所述发布类型的智能合约;
以及,应用所述协程执行对应的所述合约通道中的交易信息对应的属于所述存证类型的智能合约。
5.根据权利要求1所述的智能合约并行执行方法,其特征在于,所述根据所述带权有向图生成对应的转账交易并行顺序,包括:
建立所述带权有向图对应的邻接矩阵;
根据所述邻接矩阵以及各个账户在当前区块链的账本信息获取对应的邻接矩阵表,其中,该邻接矩阵表用于存储账户信息、初始权值、出度边和入度边之间的对应关系;
根据所述邻接矩阵表生成对应的转账交易并行顺序。
6.根据权利要求3所述的智能合约并行执行方法,其特征在于,在所述基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约之后,还包括:
应用所述协程执行对应的所述合约通道中的交易信息中属于所述终止类型的智能合约。
7.一种智能合约并行执行装置,其特征在于,包括:
带权有向图生成模块,用于在应用各个预设的协程并发执行各个合约通道中的交易信息对应的属于存证类型的智能合约时,生成各个属于转账类型的智能合约分别对应的交易的带权有向图;其中,各个所述协程与各个所述合约通道一一对应,且每个所述合约通道中均包含有当前区块链中经共识且智能合约链码号相同的多个所述交易信息;且多个所述交易信息与交易排序无关;
执行顺序生成模块,用于根据所述带权有向图生成对应的转账交易并行顺序;
转账合约执行模块,用于基于所述转账交易并行顺序执行各个属于所述转账类型的智能合约,以使各个合约通道中的交易信息对应的属于所述存证类型和属于所述转账类型的智能合约并行执行。
8.根据权利要求7所述的智能合约并行执行装置,其特征在于,还包括:
交易信息获取模块,用于获取当前区块链中的各节点对应的共识区块内容中的多个交易信息;
合约通道划分模块,用于基于各个所述交易信息各自对应的智能合约链码号将各个所述交易信息分别划分至对应的合约通道内,且各个所述合约通道分别与预设的各个协程之间一一对应。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述的智能合约并行执行方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的智能合约并行执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010384557.5A CN111563820B (zh) | 2020-05-08 | 2020-05-08 | 智能合约并行执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010384557.5A CN111563820B (zh) | 2020-05-08 | 2020-05-08 | 智能合约并行执行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111563820A CN111563820A (zh) | 2020-08-21 |
CN111563820B true CN111563820B (zh) | 2023-09-22 |
Family
ID=72074626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010384557.5A Active CN111563820B (zh) | 2020-05-08 | 2020-05-08 | 智能合约并行执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111563820B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112488831A (zh) * | 2020-11-20 | 2021-03-12 | 东软集团股份有限公司 | 区块链网络交易方法、装置、存储介质及电子设备 |
CN112882774A (zh) * | 2021-02-08 | 2021-06-01 | 北京微芯区块链与边缘计算研究院 | 并行执行的智能合约芯片装置及方法、区块链节点装置 |
CN113867903B (zh) * | 2021-12-06 | 2022-04-01 | 深圳前海微众银行股份有限公司 | 一种区块链中智能合约的并行冲突域确定方法及装置 |
CN115906183B (zh) * | 2023-01-06 | 2023-05-26 | 南京理工大学 | 可审计追溯的区块链隐私保护系统及方法 |
CN116108042A (zh) * | 2023-04-11 | 2023-05-12 | 北京淘友天下技术有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256337A (zh) * | 2018-02-26 | 2018-07-06 | 北京阿尔山金融科技有限公司 | 智能合约漏洞检测方法、装置及电子设备 |
CN108805561A (zh) * | 2017-04-27 | 2018-11-13 | 中思博安科技(北京)有限公司 | 可访问多个区块链的智能合约的执行方法和系统 |
CN109377230A (zh) * | 2018-12-11 | 2019-02-22 | 四川大学 | 一种基于有向图的智能合约在区块链中实现的方法及装置 |
CN110555700A (zh) * | 2019-09-04 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2879907T3 (es) * | 2018-12-28 | 2021-11-23 | Advanced New Technologies Co Ltd | Ejecución paralela de transacciones en una red de cadena de bloques basada en listas blancas de contratos inteligentes |
-
2020
- 2020-05-08 CN CN202010384557.5A patent/CN111563820B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108805561A (zh) * | 2017-04-27 | 2018-11-13 | 中思博安科技(北京)有限公司 | 可访问多个区块链的智能合约的执行方法和系统 |
CN108256337A (zh) * | 2018-02-26 | 2018-07-06 | 北京阿尔山金融科技有限公司 | 智能合约漏洞检测方法、装置及电子设备 |
CN109377230A (zh) * | 2018-12-11 | 2019-02-22 | 四川大学 | 一种基于有向图的智能合约在区块链中实现的方法及装置 |
CN110555700A (zh) * | 2019-09-04 | 2019-12-10 | 腾讯科技(深圳)有限公司 | 区块链智能合约执行方法、装置、计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111563820A (zh) | 2020-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111563820B (zh) | 智能合约并行执行方法及装置 | |
CN108846659B (zh) | 基于区块链的转账方法、装置及存储介质 | |
US11876856B2 (en) | Method for computational-power sharing and related device | |
CN112767113A (zh) | 基于区块链的对账数据处理方法、装置、系统 | |
CN108537534A (zh) | 一种适配多终端的通用支付方法及系统装置 | |
CN108600564A (zh) | 客户服务的方法和装置 | |
CN111222869A (zh) | 交易数据处理方法、装置、计算机设备及介质 | |
CN111698233A (zh) | 报文处理方法及装置 | |
CN106034148B (zh) | 一种快速信息交互方法、本地服务器、异地服务器及系统 | |
CN111352719B (zh) | 交易簿记服务数据处理方法、装置及系统 | |
CN112783853A (zh) | 基于区块链的作业处理方法、装置及系统 | |
CN111857676A (zh) | 基于模板配置实现业务受理场景的方法和系统 | |
CN112799943A (zh) | 业务系统自动化测试方法及装置 | |
CN110662188B (zh) | 计费方法和系统 | |
CN111311395A (zh) | 公积金冲还贷业务的管理系统、方法、设备及存储介质 | |
CN115879889A (zh) | 基于区块链的业务处理方法、装置和计算机设备 | |
CN106933655A (zh) | 事件执行方法及装置 | |
CN114897511A (zh) | 基于rpa技术的业务流程调度处理方法及系统 | |
CN101883345A (zh) | 一种处理at指令的方法及装置 | |
CN112506644B (zh) | 基于云边端混合计算模式系统的任务调度方法和系统 | |
CN106446257A (zh) | 一种网络数据获取方法 | |
CN105959406A (zh) | 用户权利拆分方法及系统 | |
CN111767435A (zh) | 用户行为分析方法及装置 | |
CN112101915A (zh) | 金融服务管控数据处理方法及装置 | |
CN112184248A (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 |