System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及区块链,提供一种基于智能合约的区块链生成方法、装置及设备。
技术介绍
1、区块链是一种链式数据结构,其具备去中心化以及数据难以篡改两大特点,基于这两个特点,区块链所记录的信息更加真实可靠。
2、区块链的核心是智能合约技术,智能合约由开发者编写并发布到维护区块链的各个节点上。实际应用中,智能合约可以应用在公有链上,也可以应用在联盟链上。
3、公有链(如,以太坊)上的智能合约(如,solidity合约)规定:各个节点执行的每一项操作均需要消耗一定的资源(如,计费);这样,在各区块的生成过程中,当各个节点执行的代码逻辑和计算过程较为复杂时,会消耗大量资源,给区块链的运维带来严重负荷。另一方面,公有链上的智能合约使用的开发语言不够丰富,具有一定的限制,如solidity合约仅支持solidity语言进行开发。
4、而联盟链(如,长安链和hyperledger fabric)上的智能合约并未针对资源消耗给出相关规定,并且支持使用原生语言(如golang和java)进行开发,因此,可以解决上述公有链上的智能合约存在的问题。
5、然而,联盟链上的智能合约被调用时,使用的原生语言通常会占用至少一个进程,当智能合约的处理逻辑过于复杂时,会增加cpu和内存的开销,并且还需要占用一定网络开销等,这样,在各区块的生成过程中,会导致区块链的开销较大,从而造成区块链的启动速度较慢,影响区块链的使用效率。
6、因此,实现智能合约通用的轻量级运行方案,是区块链技术中亟待解决的
技术实现思路
1、本申请实施例提供了一种基于智能合约的区块链生成方法、装置及设备,用于提高区域链的运行效率,降低资源开销。
2、一方面,本申请实施例提供一种基于智能合约的区块链生成方法,应用于维护区块链的网络节点,包括:
3、在满足预设的区块生成条件时,从交易池中选取一批交易数据,并分别获取每个交易数据的合约类型;
4、将所述一批交易数据中的至少一个第一交易数据存入合约任务队列;其中,每个所述第一交易数据对应合约类型为调用类合约的一条智能合约;
5、针对获得的至少一条智能合约,分别执行以下操作:基于所述网络节点维护的合约容器池中各容器各自当前的交易承载量,从所述合约容器池中选取至少一个目标容器,并采用所述至少一个目标容器,调用一条智能合约对所述合约任务队列中相应的第一交易数据进行处理,获得交易结果;
6、基于获得的至少一个交易结果生成新区块,并在所述新区块通过与所述网络节点之间具有共识机制的其他节点的共识验证后,将所述新区块上链保存。
7、另一方面,本申请实施例提供一种基于智能合约的区块链生成装置,包括:
8、获取模块,用于在满足预设的区块生成条件时,从交易池中选取一批交易数据,并分别获取每个交易数据的合约类型;
9、交易存储模块,用于将所述一批交易数据中的至少一个第一交易数据存入合约任务队列;其中,每个所述第一交易数据对应合约类型为调用类合约的一条智能合约;
10、容器分配模块,用于针对获得的至少一条智能合约,分别执行以下操作:基于所述网络节点维护的合约容器池中各容器各自当前的交易承载量,从所述合约容器池中选取至少一个目标容器,并采用所述至少一个目标容器,调用一条智能合约对所述合约任务队列中相应的第一交易数据进行处理,获得交易结果;
11、区块生成模块,用于基于获得的至少一个交易结果生成新区块,并在所述新区块通过与所述网络节点之间具有共识机制的其他节点的共识验证后,将所述新区块上链保存。
12、可选的,所述容器分配模块具体用于:
13、查询所述合约容器池中是否存在至少一个未被分配第一交易数据的空闲容器;
14、若是,则将所述至少一个空闲容器,作为所述一条智能合约的至少一个目标容器;
15、否则,查询所述一条智能合约是否已分配了至少一个容器;
16、当所述一条智能合约未被分配任何容器时,从所述合约容器池中已分配给其它智能合约的容器中,选取至少一个目标容器;
17、当所述一条智能合约已分配至少一个容器时,基于所述至少一个容器各自当前的交易承载量,选取一个目标容器。
18、可选的,所述容器分配模块具体用于:
19、针对已被分配多个容器的至少一个其它智能合约,分别执行以下操作:从一个其它智能合约的多个容器中,按照交易承载量从小到大的顺序选择一个候选容器,并基于预设的负荷均衡规则,将所述一个候选容器当前的交易承载量,分给所述一个其它智能合约的其它容器;
20、将选择的至少一个候选容器,作为所述一条智能合约的至少一个目标容器。
21、可选的,所述容器分配模块具体用于:
22、从所述至少一个容器中,按照交易承载量从小到大的顺序选择一个目标容器,并确定所述目标容器是否满足预设分配条件;
23、若所述目标容器满足预设分配条件,则分别从至少一个其它智能合约的多个容器中,按照交易承载量从小到大的顺序选择一个候选容器,并基于预设的负荷均衡规则,将至少一个候选容器各自当前的交易承载量,分给同一智能合约的其它容器;
24、获取所述至少一个容器中当前的交易承载量大于预设上限的至少一个待调整容器,并将所述至少一个待调整容器各自的当前的交易承载量,分给所述至少一个候选容器。
25、可选的,所述预设分配条件包括以下至少一项:
26、所述目标容器当前的交易承载量大于预设承载阈值;
27、所述目标容器当前的交易承载量,大于其它智能合约对应的容器的最小交易承载量。
28、可选的,该装置还包括合约安装模块,用于针对所述一批交易数据中合约类型为创建类合约的至少一个第二交易数据,为所述至少一个第二交易数据分别创建一个新的合约任务队列,每个新的合约任务队列用于存储调用新智能合约的第一交易数据;
29、在项目仓库中创建新目录,并将所述新智能合约编译后的二进制文件,存到所述新目录中;
30、在所述新目录中为所述新智能合约配置依赖项和函数库,并修改容器配置文件以启动所述新智能合约。
31、可选的,启动所述新智能合约后,所述交易存储模块还用于:
32、将所述一批交易数据中调用所述新智能合约的第一交易数据,存入相应的合约任务队列中。
33、可选的,该装置还包括安全验证模块,所述从交易池中选取一批交易数据前,所述安全验证模块用于:
34、接收目标对象发布的至少一条智能合约;
35、对所述目标对象的签名和权限中的至少一项安全认证;
36、安全验证通过后,将所述至少一条合约各自的第一交易数据存入所述交易池中。
37、可选的,所述合约容器池中的每个容器,对应一个用于存储其处理的第一交易数据的容器交易队列,每个容器交本文档来自技高网...
【技术保护点】
1.一种基于智能合约的区块链生成方法,其特征在于,应用于维护区块链的网络节点,所述方法包括:
2.如权利要求1所述的方法,其特征在于,所述针对一条智能合约,基于所述网络节点维护的合约容器池中各容器各自分配的交易数量,从所述合约容器池中选取至少一个目标容器,包括:
3.如权利要求2所述的方法,其特征在于,所述从所述合约容器池中已分配给其它智能合约的容器中,选取至少一个目标容器,包括:
4.如权利要求2所述的方法,其特征在于,所述基于所述至少一个容器各自当前的交易承载量,选取一个目标容器,包括:
5.如权利要求4所述的方法,其特征在于,所述预设分配条件包括以下至少一项:
6.如权利要求1所述的方法,其特征在于,针对所述一批交易数据中合约类型为创建类合约的至少一个第二交易数据,所述方法还包括:
7.如权利要求6所述的方法,其特征在于,启动所述新智能合约后,所述方法还包括:
8.如权利要求1-7中任一项所述的方法,其特征在于,所述从交易池中选取一批交易数据前,所述方法还包括:
9.如权利要求1
10.如权利要求1-7中任一项所述的方法,其特征在于,所述容器的类型为runc容器。
11.一种基于智能合约的区块链生成装置,其特征在于,包括:
12.一种电子设备,其特征在于,包括处理器和存储器,其中,所述存储器存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-10中任一所述方法的步骤。
13.一种计算机可读存储介质,其特征在于,其包括计算机程序,当所述计算机程序在电子设备上运行时,所述计算机程序用于使所述电子设备执行权利要求1-10中任一所述方法的步骤。
14.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序存储在计算机可读存储介质中;当电子设备的处理器从所述计算机可读存储介质读取所述计算机程序时,所述处理器执行所述计算机程序,使得所述电子设备执行权利要求1-10中任一所述方法的步骤。
...【技术特征摘要】
1.一种基于智能合约的区块链生成方法,其特征在于,应用于维护区块链的网络节点,所述方法包括:
2.如权利要求1所述的方法,其特征在于,所述针对一条智能合约,基于所述网络节点维护的合约容器池中各容器各自分配的交易数量,从所述合约容器池中选取至少一个目标容器,包括:
3.如权利要求2所述的方法,其特征在于,所述从所述合约容器池中已分配给其它智能合约的容器中,选取至少一个目标容器,包括:
4.如权利要求2所述的方法,其特征在于,所述基于所述至少一个容器各自当前的交易承载量,选取一个目标容器,包括:
5.如权利要求4所述的方法,其特征在于,所述预设分配条件包括以下至少一项:
6.如权利要求1所述的方法,其特征在于,针对所述一批交易数据中合约类型为创建类合约的至少一个第二交易数据,所述方法还包括:
7.如权利要求6所述的方法,其特征在于,启动所述新智能合约后,所述方法还包括:
8.如权利要求1-7中任一项所述的方法,其特征在于,所述从交易池中选取一批交易数据前,所述方法还包括:
9.如权...
【专利技术属性】
技术研发人员:卢光宏,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。