CN109191287B - 一种区块链智能合约的分片方法、装置及电子设备 - Google Patents
一种区块链智能合约的分片方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109191287B CN109191287B CN201810678682.XA CN201810678682A CN109191287B CN 109191287 B CN109191287 B CN 109191287B CN 201810678682 A CN201810678682 A CN 201810678682A CN 109191287 B CN109191287 B CN 109191287B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- intelligent
- called
- contracts
- block chain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
Abstract
本申请公开了一种区块链智能合约的分片方法、装置及电子设备。该方法包括:获取区块链中待调用的智能合约集合;确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种区块链智能合约分片方法、装置及电子设备。
背景技术
随着计算机技术的快速发展,智能合约由于其能够以信息化方式传播、验证或执行,并允许在没有第三方的情况下进行可信交易,且这些可信交易可追踪且不可逆转,这与传统合约相比,极大地节省了在传统合约执行过程中所需耗费的大量社会资源。
随着区块链技术的普及发展,其为智能合约提供了可信的执行环境,智能合约技术也得到了飞速发展。然而,又由于区块链的强安全性和去中心化特性都是通过大规模的计算和存储冗余来保证的,这就导致整个区块链的网络系统的智能合约运行效率低下。
通常情况下,智能合约计算模型所有的参与节点都保存有所有的智能合约和账户状态,并且这些节点还要串行执行所有需要验证的智能合约。也就是要用极大的计算和存储冗余来保证整个区块链的网络系统的安全性和去中心化,但这也意味着整个区块链的网络系统丧失了可扩展性、单节点的计算性能成为了整个区块链的网络系统的瓶颈。
因此,智能合约计算模型仍需进一步优化。
发明内容
本申请实施例提供了一种区块链智能合约的分片方法、装置及电子设备,以解决现有技术中的智能合约计算模型不够优化的问题。
为解决上述技术问题,本申请实施例是这样实现的:
第一方面,提出了一种区块链智能合约的分片方法,包括:
获取区块链中待调用的智能合约集合;
确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片。
第二方面,提出了一种区块链智能合约的分片装置,包括:
获取单元,用于获取区块链中待调用的智能合约集合;
确定单元,用于确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
分片单元,用于基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片。
第三方面,提出了一种电子设备,该电子设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
获取区块链中待调用的智能合约集合;
确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
获取区块链中待调用的智能合约集合;
确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片。
本申请实施例采用上述技术方案至少可以达到下述技术效果:
本发明实施例能够获取区块链中待调用的智能合约集合,确定待调用的智能合约集合中的智能合约与该智能合约以外的其他智能合约的关联信息,最后能够基于待调用的智能合约集合中的智能合约对应的关联信息,对待调用的智能合约集合进行分片,以在分片之后的多个片区并行执行各个片区中的智能合约,提高了区块链中智能合约的处理效率,优化了现有技术中的智能合约计算模型。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书一个实施例提供的一种区块链智能合约的分片方法的实现流程示意图;
图2为本说明书一个实施例提供的一种区块链智能合约的分片装置的结构示意图;
图3为本说明书一个实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
为解决现有技术中的智能合约计算模型不够优化的问题,本说明书实施例提供一种区块链智能合约的分片方法。本说明书实施例提供的区块链智能合约的分片方法的执行主体可以但不限于服务器、个人电脑等能够被配置为执行本发明实施例提供的该方法终端中的至少一种。
为便于描述,下文以该方法的执行主体为能够执行该方法的服务器为例,对该方法的实施方式进行介绍。可以理解,该方法的执行主体为服务器只是一种示例性的说明,并不应理解为对该方法的限定。
如背景技术中所描述的,现有的区块链的智能合约计算模型中的所有参与计算的节点由于保存有所有的智能合约和账号状态,且这些节点还要串行执行所有需要验证的智能合约,这就使得整个区块链的网络系统需要牺牲可扩展性,且区块链中参与执行智能合约的节点的计算性能也难以提升。为了解决这个问题,本说明书的一个或多个实施例引入了分片的思想。
分片的基本思想是一种经典的分而治之(英文名称为:Divide-and-Conquer)的算法,基于分片的基本思想,本说明书一个或多个实施例可以考虑将区块链中的网络节点分为若干个片区,每个片区则可以被指定执行一部分智能合约,被分配执行有智能合约的片区可以并行执行所分配的智能合约,最后将执行的结果进行汇总。显然,基于分片的思想所建立的智能合约计算模型能够极大地提高智能合约的执行效率。
具体地,本说明书一个或多个实施例提供的一种区块链智能合约的分片方法的实现流程示意图如图1所示,包括:
步骤101,获取区块链中待调用的智能合约集合;
下面以简单交易(比如两个账号之间的转账交易)为例,来说明下本说明书一个或多个实施例中分片的思想。假设当前网络系统中所有可交易的账号集合为A,有一批C个等待验证的交易集合T,将账号si和账号ri之间的交易记为Ti=(si,ri),其中,si,ri∈A,i∈[1,C],那么可以基于上述信息构建以账号集合中等待验证的交易所涉及的账号为顶点,构建图结构G1=(V1,E1),其中,V1为账号集合中等待验证的交易所涉及的账号,E1为图结构G1的边,用于表示边连接的顶点之间存在交易关系。
在构建了图结构G1之后,可以确定图结构G1中的连通分量,该连通分量可以作为分片算法的基础,只要能够将落在同一个连通分量中的所有交易分配到同一个片区,并在该片区中验证执行,则就不存在片区与片区之间的跨片区通信,也就不会带来额外的复杂度和通信开销。
基于上述简单介绍的分片思想,本说明书一个或多个实施例可以将该分片思想应用到智能合约中。然而,不同于上述简单交易在交易处理之前就能够获取交易所涉及的两个账号信息,智能合约的动态调用机制决定了一个智能合约在执行过程中所涉及的账号数据甚至是所涉及的账号数量都只能在其执行过程中确定,因此,在对区块链智能合约进行分片处理时,可以通过引入开发者的干预(具体则可以通过代码的静态分析)来确定智能合约在执行时可能会调用哪些智能合约。
步骤102,确定待调用的智能合约集合中的智能合约与该智能合约以外的其他智能合约的关联信息;
其中,确定待调用的智能合约集合中的智能合约与智能合约以外的其他智能合约的关联信息,可选地,可以首先,从待调用的智能合约集合中,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约;然后,基于与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约,构建第一智能合约集合和第二智能合约集合;其中,第一智能合约集合包含第一智能合约,第二智能合约集合包含第二智能合约;第一智能合约和第二智能合约为待调用的智能合约集合中的任意两个智能合约,且第一智能合约和第二智能合约对待调用的智能合约集合中的其他智能合约没有更新操作。
假设在实际应用中,以ContractInstance类来表示智能合约对象,那么,这里所述的更新操作具体可以是一个智能合约在其执行过程中,会对对应于其他智能合约的智能合约变量ContractInstance有创建、销毁或者赋值等更新操作,为便于描述,本说明书一个或多个实施例可以将这种更新操作称为TC-DIRTY操作,相应地,可以将可能发生这种更新操作的智能合约设置一个标志位为TC-SHOULD-DIRTY;而若一个智能合约在其执行过程中没有出现这种更新操作时,则可以称为TC-CLEAN操作,相应地,可以将不会发生这种更新操作的智能合约设置一个标志位为TC-SHOULD-CLEAN。而若标志位为TC-SHOULD-CLEAN的智能合约在其执行过程中触发了TC-DIRTY操作,则可以将这种情况记为TC-BREAK状况。
对于标志位为TS-SHOULD-DIRTY的智能合约,由于它会动态地变更与其所存在关联关系的智能合约的集合,因此,不能将涉及这种智能合约的交易进行分片处理。且对于智能合约在其执行过程中出现TC-BREAK状况,其也会动态地变更与其所存在关联关系的智能合约的集合,因此,也不能将涉及这种智能合约的交易进行分片处理。
因此,本说明书一个或多个实施例中能够对第一智能合约和第二智能合约进行分片处理的前提是,第一智能合约和第二智能合约对待调用的智能合约集合中的其他智能合约没有更新操作。
而从待调用的智能合约集合中,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约,可选地,可以首先,从待调用的智能合约集合中,确定与第一智能合约直接关联的智能合约、以及与第二智能合约直接关联的智能合约;然后,基于与第一智能合约直接关联的智能合约、以及与第二智能合约直接关联的智能合约,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约。
下面以具体例子来详细说明,从待调用的智能合约集合中,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约的实施过程。
假设当前时间点有一批N个等待触发调用的智能合约集合T={t1,t2…tN},其中标志位为TC-SHOULD-CLEAN的个数为NC的合约集合为TC={tc1,tc2…tcNC},标志位为TC-SHOULD-DIRTY的个数为ND的合约集合为TD={td1,td2…tdND}。下面,以第一智能合约为tc1,第二智能合约为tc2为例,来详细说明确定第一智能合约集合和第二智能合约集合的过程。
本说明书一个或多个实施例定义映射F_LIST_ONE(tc1)为第一智能合约tc1直接指向的其他智能合约的集合,且F_LIST_ONE(tc1)还包含第一智能合约tc1本身,定义映射F_LIST_ALL(tc1)为待调用的智能合约集合中与第一智能合约tc1相关联的智能合约的集合;定义映射F_LIST_ONE(tc2)为第二智能合约tc2直接指向的其他智能合约的集合,且F_LIST_ONE(tc2)还包含第二智能合约tc2本身,定义映射F_LIST_ALL(tc2)为待调用的智能合约集合中与第二智能合约tc2相关联的智能合约的集合。
那么,具体可以通过如下算法来基于F_LIST_ONE(tc1)确定F_LIST_ALL(tc1),以及基于F_LIST_ONE(tc2)确定F_LIST_ALL(tc2)。下面以F_LIST_ONE(tc1)为例来说明,如何基于F_LIST_ONE(tc1)确定F_LIST_ALL(tc1)的过程,包括下述主要步骤:
步骤i,从待调用的智能合约集合中确定出第一智能合约tc1直接指向的智能合约集合F_LIST_ONE(tc1),令TEMP=F_LIST_ONE(tc1);
步骤ii,从待调用的智能合约集合中分别确定出与智能合约集合F_LIST_ONE(tc1)中的各个智能合约直接指向的智能合约集合,即TEMP_EXPAND={F_LIST_ONE(tmp1)∪F_LIST_ONE(tmp2)…∶tmpi∈TEMP},其中,TEMP=F_LIST_ONE(tc1);
步骤iii,若确定步骤ii中确定的智能合约集合与步骤i中的智能合约集合相等,则退出流程,将步骤i中确定的智能合约集合确定为第一智能合约集合F_LIST_ALL(tc1),即F_LIST_ALL(tc1)=TEMP;而若确定步骤ii中确定的智能合约集合与步骤i中的智能合约集合不相等,则执行步骤iv;
步骤iv,令步骤ii确定的智能合约集合TEMP_EXPAND赋值给步骤i中的TEMP,然后执行步骤iii,直到从待调用的智能合约集合中确定出所有与智能合约tc1相关联的第一智能合约集合F_LIST_ALL(tc1)。
以此类推,与第二智能合约tc2相关联的第二智能合约集合F_LIST_ALL(tc2)也可以通过上述步骤来确定,这里将不再赘述。
步骤103,基于待调用的智能合约集合中的智能合约对应的关联信息,对待调用的智能合约集合进行分片。
可选地,基于待调用的智能合约集合中的智能合约对应的关联信息,对待调用的智能合约集合进行分片,具体若确定第一智能合约集合与第二智能合约集合没有交集,则将第一智能合约集合和第二智能合约集合分配到区块链中不同的片区。沿用上述F_LIST_ALL(tc1)为待调用的智能合约集合中与第一智能合约tc1相关联的智能合约的集合、以及F_LIST_ALL(tc2)为待调用的智能合约集合中与第二智能合约tc2相关联的智能合约的集合,那么这里所述的第一智能合约集合与第二智能合约集合没有交集即为F_LIST_ALL(tc1)与F_LIST_ALL(tc2)之间的交集为空,在这种情况下,则可以将F_LIST_ALL(tc1)中的智能合约与F_LIST_ALL(tc2)中的智能合约分配到区块链中不同的片区并行执行。
可选地,基于待调用的智能合约集合中的智能合约对应的关联信息,对待调用的智能合约集合进行分片,可以首先,基于待调用的智能合约集合中的智能合约对应的关联信息,建立以待调用的智能合约集合中的智能合约为顶点的图结构,图结构中的边用于表示边连接的顶点之间的关联关系;然后,确定图结构的连通分量;最后,基于图结构的连通分量,对待调用的智能合约集合进行分片。
可选地,基于图结构的连通分量,对待调用的智能合约集合进行分片,具体可以将图结构中属于同一个连通分量中的顶点所对应的智能合约分配到区块链中的一个片区。
具体地,本说明书一个或多个实施例可以基于上述信息定义一个图结构G2=(V2,E2),其中,V2={F_LIST_ALL(tc1)∪F_LIST_ALL(tc2)∪…∪F_LIST_ALL(tcNC)};E2为图结构G2的边,用于表示边连接的顶点之间存在关联关系,即顶点对应的智能合约间存在调用关系。同样地,基于所构建的图结构G2,可以确定该图结构G2中的连通分量,在对待调用的智能合约集合进行分片处理时,只要能够将落在同一个连通分量的所有智能合约分配到同一个片区,并在该片区中验证执行,那就不存在跨片区通信带来的额外复杂度和通信开销。
可选地,当网络系统中存在N个计算节点供待调用的智能合约集合进行分片处理时,在对待调用的智能合约集合进行分片之后,还可以首先获取网络系统的运行状态;然后,基于网络系统的运行状态,从N个计算节点中确定分配给片区的计算节点,片区为对待调用的智能合约集合进行分片之后的片区。
假设将落在同一个连通分量里面的智能合约所构成的交易组合成一个交易组,那么所有的交易组集合则可以称之为TG={TG1,TG2,…,TGm}。可以看出,对于这m个交易组,最多可以做m个并行计算。
下面以单节点并行执行智能合约集合和多节点分片执行智能合约集合两种情况来详细说明。
对于单节点并行的场景,通常考虑的问题是如何利用单节点的硬件能力来实现最大程度的并行计算,假设硬件的可并行计算单元数量为N,记为CORE={CORE1,CORE2…COREN},那么则需要考虑如何把上述m个交易组分配到这N个计算单元上执行。对于前文所述的简单交易,因为每个TGi的时间复杂度和交易数量成正比,若记分配到COREi上的所有交易的复杂度之和为S(COREi),那这个分配问题可以简化为求解而对于涉及智能合约执行的情况,由于智能合约的时间复杂度是无法静态计算的,在N个计算节点上进行轮询调度(英文名称为:round-robin)算法是一种比较直观的分配方法。
对于多节点的分片执行智能合约的场景,假设全网可用计算节点为Node={Node1,Node2,…,NodeN_NUM},且分片的片区的数量为SN∈[1,N_NUM]。不同于单节点并行场景中N的值是正相关于单节点的硬件能力,SN的数量选取则会映射到网络中的安全(Security),可扩展性(Scalability)和分散(Decentralization)组成的三难选择的难题(triangle)中的一个锚点(anchor point)。
假设上述锚点(anchor point)可以是动态可配置的,为便于描述,可以设置如下两个参数:wij和sij,其中,wij只有在交易组TGi被指定给片区j时才为1,其他情况下为0,sij只有在计算节点Nodei被指定给片区j时才为1,其他情况下为0。
那么本说明书一个或多个实施例中提供的分片算法的衡量标准则可以记为:min(SecurityLoss+α*ScalabilityLoss+β*DecentralizationLoss)。其中,SecurityLoss为安全损耗、ScalabilityLoss为可扩展性损耗、DecentralizationLoss为分散损耗,且SecurityLoss~(SN),即SecurityLoss为与计算节点的数量SN相关的函数,ScalabilityLoss~(SN,wij),即ScalabilityLoss为与计算节点的数量SN和上述参数wij相关的函数,DecentralizationLoss~(SN,sij),即DecentralizationLoss为与计算节点的数量SN和上述参数sij相关的函数,α和β则为权重项。
直观上来看,SecurityLoss受分片数量SN的影响最大;ScalabilityLoss主要取决于分片的数量以及每个分片里计算量的分配;DecentralizationLoss主要取决于分片的数量,以及各个计算节点如何划分到各个片区中。可以看出一旦上述具体的三个损失函数确定了,权重项α和β才是调节trilemma平衡的关键参数。本说明书一个或多个实施例中权重项α和β可以是动态可调节的,能反应当前网络运行状态的,且能对齐社区对网络的期望演进方向。
例如,如果当前网络出现异常的拥堵,则可以提高α的权重来增加分片属性从而提高网络的并行性能;如果当前网络出现恶意节点增多的迹象,威胁到对分片的安全假设,那么则可以将α调小一些,来临时切换到弱分片状态(即每个片区会有更多的计算节点参与)来抵御恶意节点的攻击。又如,当检查到网络中出现计算节点有被中心化控制的迹象发生时,则可以考虑增加β的权重从而得到一个更加体现去中心化特性的节点到片区的分布。
综上,权重项α和β的动态设定可以是个隶属于网络治理的投票过程,也可以根据网络状态指标输入的,即权重项α和β是可以动态变化的并适应于当前网络状态的。
本发明实施例能够获取区块链中待调用的智能合约集合,确定待调用的智能合约集合中的智能合约与该智能合约以外的其他智能合约的关联信息,最后能够基于待调用的智能合约集合中的智能合约对应的关联信息,对待调用的智能合约集合进行分片,以在分片之后的多个片区并行执行各个片区中的智能合约,提高了区块链中智能合约的处理效率,优化了现有技术中的智能合约计算模型。
图2是本说明书提供的区块链智能合约的分片装置200的结构示意图。请参考图2,在一种软件实施方式中,区块链智能合约的分片装置200可包括获取单元201、确定单元202、分片单元203,其中:
获取单元201,用于获取区块链中待调用的智能合约集合;
确定单元202,用于确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
分片单元203,用于基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片。
可选地,在一种实施方式中,所述确定单元202,用于:
从所述待调用的智能合约集合中,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约;
基于与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约,构建第一智能合约集合和第二智能合约集合;
其中,所述第一智能合约集合包含所述第一智能合约,所述第二智能合约集合包含所述第二智能合约;
所述第一智能合约和所述第二智能合约为所述待调用的智能合约集合中的任意两个智能合约,且所述第一智能合约和所述第二智能合约对所述待调用的智能合约集合中的其他智能合约没有更新操作。
可选地,在一种实施方式中,所述确定单元202,用于:
从所述待调用的智能合约集合中,确定与所述第一智能合约直接关联的智能合约、以及与所述第二智能合约直接关联的智能合约;
基于与所述第一智能合约直接关联的智能合约、以及与所述第二智能合约直接关联的智能合约,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约。
可选地,在一种实施方式中,所述分片单元203,用于:
若确定所述第一智能合约集合与所述第二智能合约集合没有交集,则将所述第一智能合约集合和所述第二智能合约集合分配到区块链中不同的片区。
可选地,在一种实施方式中,所述分片单元203,用于:
基于所述待调用的智能合约集合中的智能合约对应的关联信息,建立以所述待调用的智能合约集合中的智能合约为顶点的图结构,所述图结构中的边用于表示所述边连接的顶点之间的关联关系;
确定所述图结构的连通分量;
基于所述图结构的连通分量,对所述待调用的智能合约集合进行分片。
可选地,在一种实施方式中,所述分片单元203,用于:
将所述图结构中属于同一个连通分量中的顶点所对应的智能合约分配到区块链中的一个片区。
可选地,在一种实施方式中,当网络系统中存在N个计算节点供所述待调用的智能合约集合进行分片处理时,在对所述待调用的智能合约集合进行分片之后,所述装置还包括:
第一获取单元,用于获取所述网络系统的运行状态;
第一确定单元,用于基于所述网络系统的运行状态,从所述N个计算节点中确定分配给片区的计算节点,所述片区为对所述待调用的智能合约集合进行分片之后的片区。
区块链智能合约的分片装置200能够实现图1的方法实施例的方法,具体可参考图1所示实施例的区块链智能合约的分片方法,不再赘述。
图3是本说明书的一个实施例提供的电子设备的结构示意图。请参考图3,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成资源增值对象与资源对象的关联装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
获取区块链中待调用的智能合约集合;
确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片。
上述如本说明书图1所示实施例揭示的区块链智能合约的分片方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1的区块链智能合约的分片方法,本说明书在此不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (7)
1.一种区块链智能合约的分片方法,其特征在于,包括:
获取区块链中待调用的智能合约集合;
确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片;
其中,
第一智能合约和第二智能合约为待调用的智能合约集合中的任意两个智能合约,且第一智能合约和第二智能合约对待调用的智能合约集合中的其他智能合约没有更新操作,若确定第一智能合约集合与第二智能合约集合没有交集,则将第一智能合约集合和第二智能合约集合分配到区块链中不同的片区,建立以待调用的智能合约集合中的智能合约为顶点的图结构,图结构中的边用于表示边连接的顶点之间的关联关系;
确定图结构的连通分量,将图结构中属于同一个连通分量中的顶点所对应的智能合约分配到区块链中的一个片区。
2.如权利要求1所述的方法,其特征在于,确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息,包括:
从所述待调用的智能合约集合中,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约;
基于与所述第一智能合约相关联的智能合约、以及与所述第二智能合约相关联的智能合约,构建第一智能合约集合和第二智能合约集合;
其中,所述第一智能合约集合包含所述第一智能合约,所述第二智能合约集合包含所述第二智能合约。
3.如权利要求2所述的方法,其特征在于,从所述待调用的智能合约集合中,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约,包括:
从所述待调用的智能合约集合中,确定与所述第一智能合约直接关联的智能合约、以及与所述第二智能合约直接关联的智能合约;
基于与所述第一智能合约直接关联的智能合约、以及与所述第二智能合约直接关联的智能合约,确定与第一智能合约相关联的智能合约、以及与第二智能合约相关联的智能合约。
4.如权利要求1~3中任一所述的方法,其特征在于,当网络系统中存在N个计算节点供所述待调用的智能合约集合进行分片处理时,在对所述待调用的智能合约集合进行分片之后,所述方法还包括:
获取所述网络系统的运行状态;
基于所述网络系统的运行状态,从所述N个计算节点中确定分配给片区的计算节点,所述片区为对所述待调用的智能合约集合进行分片之后的片区。
5.一种区块链智能合约的分片装置,包括:
获取单元,用于获取区块链中待调用的智能合约集合;
确定单元,用于确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
分片单元,用于基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片;
其中,
第一智能合约和第二智能合约为待调用的智能合约集合中的任意两个智能合约,且第一智能合约和第二智能合约对待调用的智能合约集合中的其他智能合约没有更新操作,若确定第一智能合约集合与第二智能合约集合没有交集,则将第一智能合约集合和第二智能合约集合分配到区块链中不同的片区,建立以待调用的智能合约集合中的智能合约为顶点的图结构,图结构中的边用于表示边连接的顶点之间的关联关系;
确定图结构的连通分量,将图结构中属于同一个连通分量中的顶点所对应的智能合约分配到区块链中的一个片区。
6.一种电子设备,该电子设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
获取区块链中待调用的智能合约集合;
确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片;
其中,
第一智能合约和第二智能合约为待调用的智能合约集合中的任意两个智能合约,且第一智能合约和第二智能合约对待调用的智能合约集合中的其他智能合约没有更新操作,若确定第一智能合约集合与第二智能合约集合没有交集,则将第一智能合约集合和第二智能合约集合分配到区块链中不同的片区,建立以待调用的智能合约集合中的智能合约为顶点的图结构,图结构中的边用于表示边连接的顶点之间的关联关系;
确定图结构的连通分量,将图结构中属于同一个连通分量中的顶点所对应的智能合约分配到区块链中的一个片区。
7.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
获取区块链中待调用的智能合约集合;
确定所述待调用的智能合约集合中的智能合约与所述智能合约以外的其他智能合约的关联信息;
基于所述待调用的智能合约集合中的智能合约对应的关联信息,对所述待调用的智能合约集合进行分片;
其中,
第一智能合约和第二智能合约为待调用的智能合约集合中的任意两个智能合约,且第一智能合约和第二智能合约对待调用的智能合约集合中的其他智能合约没有更新操作,若确定第一智能合约集合与第二智能合约集合没有交集,则将第一智能合约集合和第二智能合约集合分配到区块链中不同的片区,建立以待调用的智能合约集合中的智能合约为顶点的图结构,图结构中的边用于表示边连接的顶点之间的关联关系;
确定图结构的连通分量,将图结构中属于同一个连通分量中的顶点所对应的智能合约分配到区块链中的一个片区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810678682.XA CN109191287B (zh) | 2018-06-27 | 2018-06-27 | 一种区块链智能合约的分片方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810678682.XA CN109191287B (zh) | 2018-06-27 | 2018-06-27 | 一种区块链智能合约的分片方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109191287A CN109191287A (zh) | 2019-01-11 |
CN109191287B true CN109191287B (zh) | 2020-08-04 |
Family
ID=64948578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810678682.XA Active CN109191287B (zh) | 2018-06-27 | 2018-06-27 | 一种区块链智能合约的分片方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109191287B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110443710B (zh) * | 2019-08-02 | 2022-06-07 | 中国工商银行股份有限公司 | 一种批量签名的区块链系统及方法 |
CN110543407B (zh) * | 2019-08-21 | 2021-11-05 | 杭州趣链科技有限公司 | 一种Solidity智能合约性能静态分析方法 |
CN110570187A (zh) * | 2019-09-10 | 2019-12-13 | 苏州阿尔山数字科技有限公司 | 基于片区的数字货币性能拓展方法 |
CN110602227B (zh) * | 2019-09-19 | 2021-11-23 | 腾讯科技(深圳)有限公司 | 一种智能合约管理的方法以及相关装置 |
CN110808838B (zh) * | 2019-10-24 | 2020-09-22 | 华东师范大学 | 一种面向联盟链的分片方法 |
CN110809042B (zh) * | 2019-10-31 | 2022-07-12 | 杭州云象网络技术有限公司 | 一种基于de bruijn序列生成技术的智能合约分片存储方法 |
CN112866025B (zh) * | 2021-01-14 | 2022-10-11 | 公安部第三研究所 | 一种智能合约的分片处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106530083A (zh) * | 2016-10-27 | 2017-03-22 | 上海亿账通区块链科技有限公司 | 基于区块链的多链管理方法及系统 |
CN106936589A (zh) * | 2017-04-21 | 2017-07-07 | 杭州秘猿科技有限公司 | 一种无中心的许可链平行分片方法及交易方法 |
CN108134822A (zh) * | 2017-12-15 | 2018-06-08 | 成都链网络科技有限公司 | 基于区块链的存储系统的下载方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106682984B (zh) * | 2016-10-27 | 2019-09-10 | 深圳壹账通智能科技有限公司 | 基于区块链的交易事务处理方法及系统 |
CN106899680B (zh) * | 2017-03-09 | 2019-07-30 | 深圳壹账通智能科技有限公司 | 多区块链的分片处理方法和装置 |
CN107274186A (zh) * | 2017-05-11 | 2017-10-20 | 上海点融信息科技有限责任公司 | 在区块链中获得智能合约接口的方法和设备 |
CN107688500B (zh) * | 2017-07-26 | 2021-12-24 | 创新先进技术有限公司 | 一种分布式任务处理方法、装置、系统及设备 |
CN107809484B (zh) * | 2017-10-30 | 2020-08-18 | 中国联合网络通信集团有限公司 | 区块链交易信息处理方法及区块链节点 |
CN108111585B (zh) * | 2017-12-15 | 2021-08-31 | 成都波霎科技有限公司 | 基于区块链的分布式存储方法 |
-
2018
- 2018-06-27 CN CN201810678682.XA patent/CN109191287B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106530083A (zh) * | 2016-10-27 | 2017-03-22 | 上海亿账通区块链科技有限公司 | 基于区块链的多链管理方法及系统 |
CN106936589A (zh) * | 2017-04-21 | 2017-07-07 | 杭州秘猿科技有限公司 | 一种无中心的许可链平行分片方法及交易方法 |
CN108134822A (zh) * | 2017-12-15 | 2018-06-08 | 成都链网络科技有限公司 | 基于区块链的存储系统的下载方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109191287A (zh) | 2019-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109191287B (zh) | 一种区块链智能合约的分片方法、装置及电子设备 | |
US20160269313A1 (en) | Opportunistic resource migration to optimize resource placement | |
US9535759B2 (en) | Work queue thread balancing | |
CN109710406B (zh) | 数据分配及其模型训练方法、装置、及计算集群 | |
US10616134B1 (en) | Prioritizing resource hosts for resource placement | |
CN112540841B (zh) | 任务调度的方法、装置、处理器与电子设备 | |
CN109417488A (zh) | 虚拟网络功能资源管理的方法和设备 | |
CN110955720B (zh) | 一种数据加载方法、装置及系统 | |
CN111722933A (zh) | 分布式进程之间的死锁解决 | |
CN114625500A (zh) | 云环境下拓扑感知的微服务应用调度的方法及应用 | |
US20140115599A1 (en) | Submitting operations to a shared resource based on busy-to-success ratios | |
CA3139693A1 (en) | Dynamic allocation of computing resources | |
CN104679575A (zh) | 输入输出流的控制系统及其方法 | |
US20190310856A1 (en) | Executing instructions based on a shared physical register | |
US10812408B1 (en) | Preventing concentrated selection of resource hosts for placing resources | |
US10594620B1 (en) | Bit vector analysis for resource placement in a distributed system | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN111885184A (zh) | 高并发场景下热点访问关键字处理方法和装置 | |
CN108964904B (zh) | 群密钥安全管理方法、装置、电子设备及存储介质 | |
CN116304212A (zh) | 一种数据处理系统、方法、设备及存储介质 | |
US20210149746A1 (en) | Method, System, Computer Readable Medium, and Device for Scheduling Computational Operation Based on Graph Data | |
CN115934354A (zh) | 在线存储方法和装置 | |
US11669358B2 (en) | Virtual network functions allocation in a datacenter | |
CN109614242B (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210122 Address after: 100080 1120-64, 11 / F, 18 Zhongguancun Street, Haidian District, Beijing Patentee after: Beijing Lianhua Future Technology Co.,Ltd. Address before: 310026 room 401-1, unit 3, building 9, No. 1218, Wenyi West Road, Cangqian street, Yuhang District, Hangzhou City, Zhejiang Province Patentee before: ZHEJIANG ULTRAIN SPACE TECHNOLOGY Co.,Ltd. |