会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 智能合约 / 一种智能合约执行方法及智能合约执行系统

一种智能合约执行方法及智能合约执行系统

申请号 CN201811496345.5 申请日 2018-12-07 公开(公告)号 CN109615517A 公开(公告)日 2019-04-12
申请人 北京瑞卓喜投科技发展有限公司; 发明人 扬子一; 李斌; 张勇;
摘要 本发明涉及一种智能合约执行方法及系统,该方法包括:判断对于当前智能合约是否在区块链上部署合约;当确定对于当前智能合约在区块链上部署合约时,创建子链;从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行;从创建子链开始经过预定时间段后,判断下一个智能合约是否在区块链上部署合约。本发明通过多方投票判定是否将子链上的智能合约移植到主链上,确保了准确性和安全性,且从创建子链开始累计到预定时间,合约移植的判定自动跳转到下一个智能合约上,提高了子链合约移植的效率,进而提高了合约执行效率。
权利要求

1.一种智能合约执行方法,其特征在于,包括以下步骤:判断对于当前智能合约是否在区块链上部署合约;

当确定对于当前智能合约在区块链上部署合约时,创建子链;

从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行;

从创建子链开始经过预定时间段后,判断对于合约队列中的下一个智能合约是否在区块链上部署合约。

2.根据权利要求1所述的智能合约执行方法,其特征在于,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行之后,还包括:将子链上的智能合约数据迁移到主链上预先构建的存储区域;

从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之后,还包括:当投票结果不支持合约移植时,回收所述主链上预先构建的存储区域。

3.根据权利要求1所述的智能合约执行方法,其特征在于,从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之前,还包括:根据子链节点对预定时间段设置的投票结果,确定预定时间段。

4.根据权利要求1所述的智能合约执行方法,其特征在于,判断对于当前智能合约是否在区块链上部署合约之后,还包括:当确定对于当前智能合约不在区块链上部署合约时,解析智能合约对应的交易参数;

对解析后的交易参数进行安全性检查、权限检查以及参数合法化检查;

当解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,对所述智能合约进行封装,并将封装后的智能合约派发给执行端,使得执行端调用其他智能合约并执行。

5.根据权利要求1所述的智能合约执行方法,其特征在于,所述判断对于当前智能合约是否在区块链上部署合约之前,还包括:对编译后的智能合约进行排序,将排序后的智能合约放到合约队列中;

对排序后的智能合约进行合约代码测试后,生成智能合约字节码;

对智能合约字节码进行安全性检查和有效性检查。

6.一种实现权利要求1所述方法的智能合约执行系统,其特征在于,包括:第一判断模块,用于判断对于当前智能合约是否在区块链上部署合约;

创建模块,用于在确定对于当前智能合约在区块链上部署合约时,创建子链;

移植模块,用于从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行;

第二判断模块,用于从创建子链开始经过预定时间段后,判断对于合约队列中的下一个智能合约是否在区块链上部署合约。

7.根据权利要求6所述的智能合约执行系统,其特征在于,移植模块,还用于在投票结果支持合约移植时,将子链上的智能合约移植到主链上执行之后,将子链上的智能合约数据迁移到主链上预先构建的存储区域;

系统还包括:

回收模块,用于在投票结果不支持合约移植时,回收所述主链上预先构建的存储区域。

8.根据权利要求6所述的智能合约执行系统,其特征在于,还包括:确定模块,用于从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之前,根据子链节点对预定时间段设置的投票结果,确定预定时间段。

9.根据权利要求6所述的智能合约执行系统,其特征在于,还包括:解析模块,用于在确定对于当前智能合约不在区块链上部署合约时,解析智能合约对应的交易参数;

第一检查模块,用于对解析后的交易参数进行安全性检查、权限检查以及参数合法化检查;

封装模块,用于在解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,对所述智能合约进行封装,并将封装后的智能合约派发给执行端,使得执行端调用其他智能合约并执行。

10.根据权利要求6所述的智能合约执行系统,其特征在于,还包括:排序模块,用于对编译后的智能合约进行排序,将排序后的智能合约放到合约队列中;

生成模块,用于对排序后的智能合约进行合约代码测试后,生成智能合约字节码;

第二检查模块,用于对智能合约字节码进行安全性检查和有效性检查。

说明书全文

一种智能合约执行方法及智能合约执行系统

技术领域

[0001] 本发明涉及区块链技术领域,尤其涉及一种智能合约执行方法及智能合约执行系统。

背景技术

[0002] Hyper EVM(Hyper Ethereum Virtual Machine,超级以太坊虚拟机)结构包括Compiler(编译器)、Interpreter(解释器)、Executor(执行器)、State(状态机)以及Guard(安全防护模块)。Compiler用于编译智能合约,Interpreter用于解释智能合约,Executor用于执行相关功能,State赋予智能合约操作区块链账本的相关功能,安全防护模块提供智能合约安全保障相关机制,Hyper EVM完全兼容以太坊智能合约规范,采用优化的以太坊虚拟机EVM作为默认后端执行系统。
[0003] CI-chain(Cloud-insurance Chain,云保链)的通用智能合约系统考虑了区块链的可扩展性,同时强调自动化和高效率,交易速度快,费用低廉,并且平台支持任何编程语言编写智能合约以及兼容不同的加密货币进行投票或是众筹。
[0004] Clause(智能法律承包技术提供商)则将智能合约嵌入到工作流中,从根本上将合同从文档转换为操作实体,与企业系统和基础结构的连接有效地形成企业的操作系统,将“契约关系”理论逐步转化为现实。
[0005] 现有的这三种智能合约执行系统在对智能合约的安全性检查方面以及合约的执行效率方面存在不足。智能合约执行系统的执行效率关乎用户的使用体验,而智能合约执行系统的安全性也很重要。
[0006] 因此,提供一种智能合约执行方法及智能合约执行系统。

发明内容

[0007] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的智能合约执行方法及智能合约执行系统,解决了目前智能合约系统的安全机制以及智能合约执行效率不足的问题。
[0008] 根据本发明的一个方面,提供一种智能合约执行方法,包括以下步骤:
[0009] 判断对于当前智能合约是否在区块链上部署合约;
[0010] 当确定对于当前智能合约在区块链上部署合约时,创建子链;
[0011] 从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行;
[0012] 从创建子链开始经过预定时间段后,判断对于合约队列中的下一个智能合约是否在区块链上部署合约。
[0013] 进一步地,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行之后,还包括:
[0014] 将子链上的智能合约数据迁移到主链上预先构建的存储区域;
[0015] 从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之后,还包括:
[0016] 当投票结果不支持合约移植时,回收所述主链上预先构建的存储区域。
[0017] 进一步地,从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之前,还包括:
[0018] 根据子链节点对预定时间段设置的投票结果,确定预定时间段。
[0019] 进一步地,判断对于当前智能合约是否在区块链上部署合约之后,还包括:
[0020] 当确定对于当前智能合约不在区块链上部署合约时,解析智能合约对应的交易参数;
[0021] 对解析后的交易参数进行安全性检查、权限检查以及参数合法化检查;
[0022] 当解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,对所述智能合约进行封装,并将封装后的智能合约派发给执行端,使得执行端调用其他智能合约并执行。
[0023] 进一步地,所述判断对于当前智能合约是否在区块链上部署合约之前,还包括:
[0024] 对编译后的智能合约进行排序,将排序后的智能合约放到合约队列中;
[0025] 对排序后的智能合约进行合约代码测试后,生成智能合约字节码;
[0026] 对智能合约字节码进行安全性检查和有效性检查。
[0027] 根据本发明的另一方面,提供一种实现上述方法的智能合约执行系统,包括:
[0028] 第一判断模块,用于判断对于当前智能合约是否在区块链上部署合约;
[0029] 创建模块,用于在确定对于当前智能合约在区块链上部署合约时,创建子链;
[0030] 移植模块,用于从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行;
[0031] 第二判断模块,用于从创建子链开始经过预定时间段后,判断对于合约队列中的下一个智能合约是否在区块链上部署合约。
[0032] 进一步地,移植模块,还用于在投票结果支持合约移植时,将子链上的智能合约移植到主链上执行之后,将子链上的智能合约数据迁移到主链上预先构建的存储区域;
[0033] 系统还包括:回收模块,用于在投票结果不支持合约移植时,回收所述主链上预先构建的存储区域。
[0034] 进一步地,上述智能合约执行系统,还包括:
[0035] 确定模块,用于从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之前,根据子链节点对预定时间段设置的投票结果,确定预定时间段。
[0036] 进一步地,上述智能合约执行系统,还包括:
[0037] 解析模块,用于在确定对于当前智能合约不在区块链上部署合约时,解析智能合约对应的交易参数;
[0038] 第一检查模块,用于对解析后的交易参数进行安全性检查、权限检查以及参数合法化检查;
[0039] 封装模块,用于在解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,对所述智能合约进行封装,并将封装后的智能合约派发给执行端,使得执行端调用其他智能合约并执行。进一步地,上述智能合约执行系统,还包括:
[0040] 排序模块,用于对编译后的智能合约进行排序,将排序后的智能合约放到合约队列中;
[0041] 生成模块,用于对排序后的智能合约进行合约代码测试后,生成智能合约字节码;
[0042] 第二检查模块,用于对智能合约字节码进行安全性检查和有效性检查。
[0043] 本发明与现有技术相比具有以下的优点:
[0044] 1.本发明的智能合约执行方法及智能合约执行系统,通过子链节点多方投票判定是否将子链上的智能合约移植到主链上,确保了子链合约移植判断的准确性和安全性,且从创建子链开始累计到预定时间,合约移植的判定自动跳转到下一个智能合约上,提高了子链合约移植的效率,进而提高了合约的执行效率;
[0045] 2.本发明的智能合约执行方法及智能合约执行系统检查智能合约字节码的安全性和有效性,能够提供智能合约执行的安全机制。

附图说明

[0046] 以下结合附图和实施例对本发明作进一步说明。
[0047] 图1是本发明实施例提供的智能合约执行方法的流程图;
[0048] 图2是本发明实施例提供的智能合约执行系统的结构示意图。

具体实施方式

[0049] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0050] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
[0051] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
[0052] 图1是本发明实施例的智能合约执行方法的流程图,参见图1所示,本发明实施例提供的智能合约执行方法,包括以下步骤:
[0053] S101,判断对于当前智能合约是否在区块链上部署合约。
[0054] 在这里,部署合约可以理解成是一种交易类型,可以是在写完智能合约代码,并对智能合约编译之后进行的一种操作。
[0055] 对智能合约可以有多种操作,部署合约属于其中一种,本步骤通过判断对于当前智能合约是否在区块链上部署合约,以确定对智能合约是否执行部署合约的操作。
[0056] 其中,可根据用户输入的对智能合约的操作请求来判断是否对智能合约在区块链上部署合约,如当用户输入对智能合约的部署请求时,确定在区块链上部署合约。当然判断是否部署合约的方式并不限于此,如还可根据智能合约中预定字段的值来判断是否对智能合约在区块链上部署合约,当预定字段的值是目标值时确定在区块链上部署合约,或采用其他合理的判断方式,在此不一一说明。
[0057] S102,当确定对于当前智能合约在区块链上部署合约时,创建子链。
[0058] 这里,当确定对于当前智能合约在区块链上部署合约时,通过创建子链作为合约缓冲,能够避免网络拥堵,以满足高吞吐量需求。
[0059] S103,从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行。
[0060] 在这里,从创建子链开始的预定时间段内,通过多方投票的方式确定是否将子链上的智能合约移植到主链上执行,以确保对智能合约移植判断的准确性和安全性,避免由于恶意节点的干扰导致智能合约无法执行。
[0061] 其中,智能合约里面包含交易参数信息和对应的交易代码,通过多方投票的方式将智能合约部署到主链上之后可调用交易,执行对应的交易代码,交易代码生效后,可对交易参数信息(交易账户和交易数据)执行相应的操作。
[0062] S104,从创建子链开始经过预定时间段后,判断对于合约队列中的下一个智能合约是否在区块链上部署合约。
[0063] 这里,从创建子链开始经过预定时间段后,合约移植的判定自动跳转到下一个智能合约上,保证了子链合约移植的有序进行,避免了由于恶意节点干扰或者非法智能合约干扰导致的子链合约移植无法正常进行,且提高了子链合约移植的效率,进而提高了合约执行效率。
[0064] 其中,合约队列中的智能合约按照编写时序依次排列。
[0065] 本发明实施例的智能合约执行方法,通过多方投票判定是否将子链上的智能合约移植到主链上,确保了子链合约移植的准确性和安全性,且从创建子链开始累计到预定时间,合约移植的判定自动跳转到下一个智能合约上,提高了子链合约移植的效率,进而提高了合约的执行效率。
[0066] 可选的,S103当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行之后,还包括:
[0067] 将子链上的智能合约数据迁移到主链上预先构建的存储区域。
[0068] 在这里,通过将子链上的存储区域里存放的智能合约数据迁移到主链上的存储区域里,以确保智能合约移植到主链后,主链上能顺利执行该智能合约,同时可释放子链的存储区域,以节省存储空间。迁移的智能合约数据如可包括子链上原本存储的智能合约代码、参数等。
[0069] 其中,为了便于查询和统计,可将子链上合约移植和合约数据迁移到主链上的交互行为记录在智能合约执行引擎存储模块的Meta DB(Meta Data Base,元数据库)中。
[0070] 可选的,S103从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之后,还包括:
[0071] 当投票结果不支持合约移植时,回收所述主链上预先构建的存储区域。
[0072] 这里,当投票结果不支持合约移植时,回收主链上预先构建的存储区域,以释放主链的存储区域,节省存储空间。
[0073] 可选的,S103从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之前,还包括:
[0074] 根据子链节点对预定时间段设置的投票结果,确定预定时间段。
[0075] 这里,通过多方投票的方式确定子链合约移植的自动跳转时间间隔,即预定时间段t,能够确保预定时间段t设置的合理性和安全性。
[0076] 本发明实施例的智能合约执行方法,当确定对于当前智能合约在区块链上部署合约时,创建新的子链,然后通过多方投票的方式决定是否将子链上的合约放到主链上,若多方投票成功,则将子链上的合约移植到主链上,并将子链上存储的合约数据复制到主链上的存储区域,若多方投票失败,则回收主链上的存储区域;且从子链创建开始t时间后,合约移植的判定自动跳转到最新的智能合约上,该时间t由多方投票决定。提高了子链合约移植的效率,进而提高了合约的执行效率。
[0077] 对智能合约的操作除了部署合约之外,还可以用来调用另一个合约。因此,可选的,S101判断对于当前智能合约是否在区块链上部署合约之后,还包括:
[0078] S105,当确定对于当前智能合约不在区块链上部署合约时,解析智能合约对应的交易参数。
[0079] 这里,通过解析智能合约的交易参数,以利用交易参数调用其他合约执行交易。
[0080] S106,对解析后的交易参数进行安全性检查、权限检查以及参数合法化检查。
[0081] 这里,通过对解析后的交易参数进行安全性检测、权限检查以及参数合法化检查,保证了交易的合法性和安全性。
[0082] S107,当解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,对所述智能合约进行封装,并将封装后的智能合约派发给执行端,使得执行端调用其他智能合约并执行。
[0083] 这里,当解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,通过对智能合约进行封装,确保了传输的安全性,通过将封装后的智能合约派发给执行端,使得执行端根据交易参数调用其他合约并执行,完成了在不部署合约时智能合约对其他合约的调用及交易的执行。
[0084] 优选的,S107可通过调用服务器端对智能合约进行封装,并通过服务器端依据命名空间对封装后的智能合约进行派发,并通过线程池的方式并行调用多个命名空间中的合约并且执行。进一步的,可通过合约执行模块保存交易回执,并提交交易回执的副本给控制端。
[0085] 优选的,S101判断对于当前智能合约是否在区块链上部署合约之前,还包括:
[0086] 对编译后的智能合约进行排序,将排序后的智能合约放到合约队列中。
[0087] 这里,通过对编译后的智能合约进行排序,并将排序后的智能合约放到合约队列中,确保了对智能合约的有序处理,从而提高了合约移植的效率。
[0088] 具体地,对编译后的智能合约进行排序,生成智能合约队列可采用如下方式:依据智能合约历史交易派生的交易图对主链节点进行排序,生成主链节点排序图;依据主链节点排序图以及Tx-ID(交易哈希,区块链中标记转账需要的字符段,一般由几十位数字组成)中的交易确认数对智能合约进行排序。
[0089] 对排序后的智能合约进行合约代码测试后,生成智能合约字节码。
[0090] 这里,通过对排序后的智能合约进行合约代码测试,保证合约代码能够正常运行,合约代码测试成功后,生成智能合约字节码,以供调用。
[0091] 具体地,可根据智能合约队列依次对智能合约进行合约代码测试。
[0092] 另外,本发明可以基于LLVM(low-level-virtual-machine,是一个编译器框架,编译器基础设施,以c++写成)支持编译任何编程语言的静态和动态编译特性。
[0093] 对智能合约字节码进行安全性检查和有效性检查。
[0094] 这里,通过对智能合约字节码进行安全性检测和有效性检测,提供了智能合约执行的安全机制,确保了智能合约执行的安全性和有效性。
[0095] 为了便于部署合约的存储以及非部署合约的执行,上述智能合约执行方法,在对接收的智能合约进行编译之后,还包括:为智能合约字节码提供存储区域并准备加载代码的内存。
[0096] 本发明实施例的智能合约执行方法,通过多方投票判定是否将子链上的智能合约移植到主链上,确保了子链合约移植的准确性和安全性,且从创建子链开始累计到预定时间,合约移植的判定自动跳转到下一个智能合约上,提高了子链合约移植的效率,进而提高了合约的执行效率。
[0097] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0098] 图2是本发明实施例的智能合约执行系统的结构示意图,参见图2所示,本发明实施例提供的智能合约执行系统,包括:
[0099] 第一判断模块201,用于判断对于当前智能合约是否在区块链上部署合约;
[0100] 创建模块202,用于在确定对于当前智能合约在区块链上部署合约时,创建子链;
[0101] 移植模块203,用于从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行;
[0102] 第二判断模块204,用于从创建子链开始经过预定时间段后,判断对于合约队列中的下一个智能合约是否在区块链上部署合约。
[0103] 另外,移植模块,还用于在投票结果支持合约移植时,将子链上的智能合约移植到主链上执行之后,将子链上的智能合约数据迁移到主链上预先构建的存储区域;系统还包括:回收模块,用于在投票结果不支持合约移植时,回收所述主链上预先构建的存储区域。
[0104] 本发明实施例的智能合约执行系统,通过多方投票判定是否将子链上的智能合约移植到主链上,确保了子链合约移植的准确性和安全性,且从创建子链开始累计到预定时间,合约移植的判定自动跳转到下一个智能合约上,提高了子链合约移植的效率,进而提高了合约的执行效率。
[0105] 上述智能合约执行系统,还包括:
[0106] 确定模块,用于从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之前,根据子链节点对预定时间段设置的投票结果,确定预定时间段。
[0107] 上述智能合约执行系统,还包括:
[0108] 解析模块205,用于在确定对于当前智能合约不在区块链上部署合约时,解析智能合约对应的交易参数;
[0109] 第一检查模块206,用于对解析后的交易参数进行安全性检查、权限检查以及参数合法化检查;
[0110] 封装模块207,用于在解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,对所述智能合约进行封装,并将封装后的智能合约派发给执行端,使得执行端调用其他智能合约并执行。
[0111] 上述智能合约执行系统,还包括:
[0112] 排序模块,用于对编译后的智能合约进行排序,将排序后的智能合约放到合约队列中;
[0113] 生成模块,用于对排序后的智能合约进行合约代码测试后,生成智能合约字节码;
[0114] 第二检查模块,用于对智能合约字节码进行安全性检查和有效性检查。
[0115] 对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0116] 本发明一实施例还提供了一种智能合约执行系统,包括处理器,存储器,存储在存储器上并可在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现如下步骤:
[0117] 判断对于当前智能合约是否在区块链上部署合约;
[0118] 当确定对于当前智能合约在区块链上部署合约时,创建子链;
[0119] 从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果,当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行;
[0120] 从创建子链开始经过预定时间段后,判断对于合约队列中的下一个智能合约是否在区块链上部署合约。
[0121] 可选的,该计算机程序被处理器执行时还实现如下步骤:
[0122] 当投票结果支持合约移植时,将子链上的智能合约移植到主链上执行之后,将子链上的智能合约数据迁移到主链上预先构建的存储区域。
[0123] 可选的,该计算机程序被处理器执行时还实现如下步骤:
[0124] 从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之后,当投票结果不支持合约移植时,回收所述主链上预先构建的存储区域。
[0125] 可选的,该计算机程序被处理器执行时还实现如下步骤:
[0126] 从创建子链开始的预定时间段内,获取子链节点对是否支持合约移植的投票结果之前,根据子链节点对预定时间段设置的投票结果,确定预定时间段。
[0127] 可选的,该计算机程序被处理器执行时还实现如下步骤:
[0128] 判断对于当前智能合约是否在区块链上部署合约之后,当确定对于当前智能合约不在区块链上部署合约时,解析智能合约对应的交易参数;
[0129] 对解析后的交易参数进行安全性检查、权限检查以及参数合法化检查;
[0130] 当解析后的交易参数的安全性检查、权限检查以及参数合法化检查均通过时,对所述智能合约进行封装,并将封装后的智能合约派发给执行端,使得执行端调用其他智能合约并执行。
[0131] 可选的,该计算机程序被处理器执行时还实现如下步骤:
[0132] 所述判断对于当前智能合约是否在区块链上部署合约之前,对编译后的智能合约进行排序,将排序后的智能合约放到合约队列中;
[0133] 对排序后的智能合约进行合约代码测试后,生成智能合约字节码;
[0134] 对智能合约字节码进行安全性检查和有效性检查。
[0135] 本发明一实施例提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现上述智能合约执行方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
[0136] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0137] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0138] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0139] 以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。