智能合约部署方法、系统、装置及存储介质转让专利

申请号 : CN202111438048.7

文献号 : CN113849191B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马超李书博杨仁慧王天雨

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本公开涉及一种智能合约部署方法、系统、装置及存储介质。本公开实施例提供一种在区块链中协作部署智能合约的方法。在区块链中预先部署授权管理系统合约。由区块链网络接收并执行第一交易以创建用于审批智能合约的授权流程,第一交易包括关于调用系统合约中的用于创建授权流程的第一方法的信息和用于初始化第一方法的第一参数信息。由区块链网络接收并执行第二交易以生成对智能合约的审批结果,第二交易包括关于调用系统合约中的用于执行授权流程的第二方法的信息和用于初始化第二方法的第二参数信息。当智能合约的审批结果为通过时,由区块链网络接收并执行包括关于创建智能合约的信息的第三交易以将智能合约部署在区块链中。

权利要求 :

1.一种用于在区块链中协作部署智能合约的方法,在所述区块链中预先部署用于授权管理的系统合约,所述方法包括:

由区块链网络接收并执行第一交易以创建用于审批由部署发起方生成的智能合约的授权流程,所述第一交易包括关于调用所述系统合约中的用于创建授权流程的第一方法的信息和用于初始化所述第一方法的第一参数信息,所述第一参数信息包括所述智能合约的第一哈希值和协作参与方的身份信息;

由区块链网络接收并执行第二交易以生成对所述智能合约的审批结果,所述第二交易包括关于调用所述系统合约中的用于执行授权流程的第二方法的信息和用于初始化所述第二方法的第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得的智能合约的副本的第二哈希值和协作参与方对智能合约的审批状态的修改;以及当所述智能合约的审批结果为通过时,由区块链网络接收并执行包括关于创建所述智能合约的信息的第三交易以将所述智能合约部署在区块链中。

2.根据权利要求1所述的方法,其中,所述第二方法被配置为当所述第一哈希值与所述第二哈希值相同并且协作参与方将智能合约的审批状态修改为通过时,将所述智能合约的审批结果生成为通过。

3.根据权利要求1所述的方法,其中,由区块链网络接收并执行包括关于创建所述智能合约的信息的第三交易以将所述智能合约部署在区块链中包括:计算所述第三交易中包括的智能合约的第三哈希值;当所述第三哈希值与所述第二哈希值相同时,部署所述智能合约。

4.根据权利要求1所述的方法,还包括:在将所述智能合约部署在区块链中之后,由区块链网络接收并执行包括关于初始化所述智能合约的信息的第四交易以对所述智能合约进行初始化。

5.根据权利要求4所述的方法,其中,所述第一交易和所述第三交易是由部署发起方的第一客户端发送到区块链网络的,并且所述第二交易和所述第四交易是由协作参与方的第二客户端发送到区块链网络的。

6.根据权利要求4所述的方法,其中,所述第一交易和所述第三交易是由与部署发起方的第一客户端通信耦合的第一托管平台发送到区块链网络的,并且所述第二交易和所述第四交易是由与协作参与方的第二客户端通信耦合的第二托管平台发送到区块链网络的。

7.根据权利要求4所述的方法,其中,所述第四交易直接由经协作参与方授权的托管平台发送到区块链网络而无需协作参与方的参与。

8.根据权利要求1所述的方法,其中,所述第一参数信息包括所述智能合约的编写结果、编译结果和检查结果中的一者或多者。

9.根据权利要求8所述的方法,其中,对所述智能合约的编写、编译和检查中的每一者分别在部署发起方的第一客户端或者与部署发起方的第一客户端通信耦合的第一托管平台上实现。

10.根据权利要求1所述的方法,其中,部署发起方的第一客户端作为区块链网络的第一区块链节点从区块链监听或回查所述智能合约的审批结果。

11.根据权利要求1所述的方法,其中,与部署发起方的第一客户端通信耦合的第一托管平台作为区块链网络的第一区块链节点从区块链监听或回查所述智能合约的审批结果并将所述智能合约的审批结果推送至部署发起方的第一客户端。

12.根据权利要求1所述的方法,其中,协作参与方的第二客户端作为区块链网络的第二区块链节点从区块链监听授权流程创建事件。

13.根据权利要求1所述的方法,其中,与协作参与方的第二客户端通信耦合的第二托管平台作为区块链网络的第二区块链节点从区块链监听授权流程创建事件并将授权流程创建事件推送至协作参与方的第二客户端。

14.根据权利要求12或13所述的方法,还包括:响应于监听到授权流程创建事件,获取关于所创建的授权流程的信息并将其录入到协作参与方的内部审批流程;以及

在执行所述内部审批流程之后,向所述第二区块链节点发送所述第二交易,其中所述智能合约的审批状态基于所述内部审批流程的审批结果而被修改。

15.根据权利要求1所述的方法,其中,所述第二交易是第一第二交易,所述第一第二交易中的第二参数信息包括第一协作参与方从部署发起方获得的智能合约的副本的第二哈希值和第一协作参与方对智能合约的审批状态的修改,所述审批结果是第一协作参与方对所述智能合约的第一审批结果,并且所述方法还包括:由区块链网络接收并执行第二第二交易以生成对所述智能合约的第二审批结果,所述第二第二交易包括关于调用所述系统合约中的用于执行授权流程的第二方法的信息和用于初始所述第二方法的第二参数信息,所述第二第二交易中的第二参数信息包括第二协作参与方从部署发起方获得的智能合约的副本的第二哈希值和第二协作参与方对智能合约的审批状态的修改;以及

当所述智能合约的第一审批结果和第二审批结果均为通过时,由区块链网络接收并执行包括关于创建所述智能合约的信息的第三交易以将所述智能合约部署在区块链中。

16.根据权利要求15所述的方法,其中,所述第一协作参与方的第二客户端和所述第二协作参与方的第三客户端均与第二托管平台通信耦合,所述第一第二交易和所述第二第二交易均是由所述第二托管平台发送到区块链网络的。

17.一种用于在区块链中协作部署目标智能合约的方法,在所述区块链中预先部署用于创建授权流程的第一智能合约和用于执行授权流程的第二智能合约,所述方法包括:由区块链网络接收并执行第一交易以创建用于审批由部署发起方生成的目标智能合约的授权流程,所述第一交易包括关于调用所述第一智能合约的信息和用于初始化所述第一智能合约的第一参数信息,所述第一参数信息包括所述目标智能合约的第一哈希值和协作参与方的身份信息;

由区块链网络接收并执行第二交易以生成对所述目标智能合约的审批结果,所述第二交易包括关于调用所述第二智能合约的信息和用于初始化所述第二智能合约的第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得的目标智能合约的副本的第二哈希值和协作参与方对目标智能合约的审批状态的修改;以及当所述目标智能合约的审批结果为通过时,由区块链网络接收并执行包括关于创建所述目标智能合约的信息的第三交易以将所述目标智能合约部署在区块链中。

18.一种用于在区块链中协作部署智能合约的区块链节点设备,在所述区块链中预先部署用于授权管理的系统合约,所述区块链节点设备包括:接收模块,被配置用于:

接收第一交易,所述第一交易包括关于调用所述系统合约中的用于创建授权流程的第一方法的信息和用于初始化所述第一方法的第一参数信息,所述第一参数信息包括由部署发起方生成的智能合约的第一哈希值和协作参与方的身份信息,接收第二交易,所述第二交易包括关于调用所述系统合约中的用于执行授权流程的第二方法的信息和用于初始化所述第二方法的第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得的智能合约的副本的第二哈希值和协作参与方对智能合约的审批状态的修改,以及

接收第三交易,所述第三交易包括关于创建所述智能合约的信息;以及执行模块,被配置为用于:

执行所述第一交易以创建用于审批所述智能合约的授权流程,执行所述第二交易以生成对所述智能合约的审批结果,以及当所述智能合约的审批结果为通过时,执行所述第三交易以将所述智能合约部署在区块链中。

19.一种用于在区块链中协作部署目标智能合约的区块链节点设备,在所述区块链中预先部署用于创建授权流程的第一智能合约和用于执行授权流程的第二智能合约,所述区块链节点设备包括:

接收模块,被配置用于:

接收第一交易,所述第一交易包括关于调用所述第一智能合约的信息和用于初始化所述第一智能合约的第一参数信息,所述第一参数信息包括由部署发起方生成的目标智能合约的第一哈希值和协作参与方的身份信息,接收第二交易,所述第二交易包括关于调用所述第二智能合约的信息和用于初始化所述第二智能合约的第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得的目标智能合约的副本的第二哈希值和协作参与方对目标智能合约的审批状态的修改,以及接收第三交易,所述第三交易包括关于创建所述目标智能合约的信息;以及执行模块,被配置为用于:

执行所述第一交易以创建用于审批所述目标智能合约的授权流程,执行所述第二交易以生成对所述目标智能合约的审批结果,以及当所述目标智能合约的审批结果为通过时,执行所述第三交易以将所述目标智能合约部署在区块链中。

20.一种用于在区块链中协作部署智能合约的计算装置,包括:一个或多个处理器;以及

存储计算机可执行指令的存储器,所述计算机可执行指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行根据权利要求1至17中任一项所述的方法。

21.一种其上存储有计算机可执行指令的非瞬态存储介质,所述计算机可执行指令在被计算机执行时使得计算机执行根据权利要求1至17中任一项所述的方法。

说明书 :

智能合约部署方法、系统、装置及存储介质

技术领域

[0001] 本说明书实施例属于区块链技术领域,尤其涉及一种用于在区块链中协作部署智能合约的方法、区块链节点设备、系统、计算装置及存储介质。

背景技术

[0002] 区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成
链式数据结构,并以密码学方式保证了不可篡改和不可伪造的分布式账本。由于区块链具
有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
[0003] 区块链2.0时代中出现的智能合约(Smart Contract),将区块链的应用范围提升到了新的高度。智能合约是在区块链中执行的程序,旨在以信息化方式传播、验证或执行合
同的计算机协议,允许在没有第三方的情况下进行可信交易。凭借智能合约,区块链所能实
现的不再仅仅是单一的转账交易,而是还能够调用一段代码,而这段代码可以由用户自定
义。
[0004] 在联盟应用场景中,可以通过在区块链中部署相应的智能合约来实现多个协作参与方之间的协作。然而,在这种多方参与协作的应用场景中,在智能合约的实际部署阶段之
前,需要各个协作参与方进行协商以确定要部署的智能合约。
[0005] 因此,期望一种允许多方共同协商部署智能合约的有效可靠的方案。

发明内容

[0006] 本公开的目的在于提供一种用于在区块链中协作部署智能合约的方法、区块链节点设备、系统、计算装置及存储介质。
[0007] 根据本公开的第一方面,提供了一种用于在区块链中协作部署智能合约的方法,在所述区块链中预先部署用于授权管理的系统合约,所述方法包括:由区块链网络接收并
执行第一交易以创建用于审批由部署发起方生成的智能合约的授权流程,所述第一交易包
括关于调用所述系统合约中的用于创建授权流程的第一方法的信息和用于初始化所述第
一方法的第一参数信息,所述第一参数信息包括所述智能合约的第一哈希值和协作参与方
的身份信息;由区块链网络接收并执行第二交易以生成对所述智能合约的审批结果,所述
第二交易包括关于调用所述系统合约中的用于执行授权流程的第二方法的信息和用于初
始化所述第二方法的第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得
的智能合约的副本的第二哈希值和协作参与方对智能合约的审批状态的修改;以及当所述
智能合约的审批结果为通过时,由区块链网络接收并执行包括关于创建所述智能合约的信
息的第三交易以将所述智能合约部署在区块链中。
[0008] 根据本公开的第二方面,提供了一种用于在区块链中协作部署目标智能合约的方法,在所述区块链中预先部署用于创建授权流程的第一智能合约和用于执行授权流程的第
二智能合约,所述方法包括:由区块链网络接收并执行第一交易以创建用于审批由部署发
起方生成的目标智能合约的授权流程,所述第一交易包括关于调用所述第一智能合约的信
息和用于初始化所述第一智能合约的第一参数信息,所述第一参数信息包括所述目标智能
合约的第一哈希值和协作参与方的身份信息;由区块链网络接收并执行第二交易以生成对
所述目标智能合约的审批结果,所述第二交易包括关于调用所述第二智能合约的信息和用
于初始化所述第二智能合约的第二参数信息,所述第二参数信息包括协作参与方从部署发
起方获得的目标智能合约的副本的第二哈希值和协作参与方对目标智能合约的审批状态
的修改;以及当所述目标智能合约的审批结果为通过时,由区块链网络接收并执行包括关
于创建所述目标智能合约的信息的第三交易以将所述目标智能合约部署在区块链中。
[0009] 根据本公开的第三方面,提供了一种用于在区块链中协作部署智能合约的区块链节点设备。在所述区块链中预先部署用于授权管理的系统合约。所述区块链节点设备包括
接收模块和执行模块。接收模块被配置用于:接收第一交易,所述第一交易包括关于调用所
述系统合约中的用于创建授权流程的第一方法的信息和用于初始化所述第一方法的第一
参数信息,所述第一参数信息包括由部署发起方生成的智能合约的第一哈希值和协作参与
方的身份信息;接收第二交易,所述第二交易包括关于调用所述系统合约中的用于执行授
权流程的第二方法的信息和用于初始化所述第二方法的第二参数信息,所述第二参数信息
包括协作参与方从部署发起方获得的智能合约的副本的第二哈希值和协作参与方对智能
合约的审批状态的修改;以及接收第三交易,所述第三交易包括关于创建所述智能合约的
信息。执行模块被配置为用于:执行所述第一交易以创建用于审批所述智能合约的授权流
程;执行所述第二交易以生成对所述智能合约的审批结果;以及当所述智能合约的审批结
果为通过时,执行所述第三交易以将所述智能合约部署在区块链中。
[0010] 根据本公开的第四方面,提供了一种用于在区块链中协作部署目标智能合约的区块链节点设备。在所述区块链中预先部署用于创建授权流程的第一智能合约和用于执行授
权流程的第二智能合约。所述区块链节点设备包括接收模块和执行模块。接收模块被配置
用于:接收第一交易,所述第一交易包括关于调用所述第一智能合约的信息和用于初始化
所述第一智能合约的第一参数信息,所述第一参数信息包括由部署发起方生成的目标智能
合约的第一哈希值和协作参与方的身份信息;接收第二交易,所述第二交易包括关于调用
所述第二智能合约的信息和用于初始化所述第二智能合约的第二参数信息,所述第二参数
信息包括协作参与方从部署发起方获得的目标智能合约的副本的第二哈希值和协作参与
方对目标智能合约的审批状态的修改;以及接收第三交易,所述第三交易包括关于创建所
述目标智能合约的信息。执行模块被配置为用于:执行所述第一交易以创建用于审批所述
目标智能合约的授权流程;执行所述第二交易以生成对所述目标智能合约的审批结果;以
及当所述目标智能合约的审批结果为通过时,执行所述第三交易以将所述目标智能合约部
署在区块链中。
[0011] 根据本公开的第五方面,提供了一种用于在区块链中协作部署智能合约的计算装置,包括:一个或多个处理器;以及存储计算机可执行指令的存储器,所述计算机可执行指
令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行根据本公开的第一
方面或第二方面所述的方法。
[0012] 根据本公开的第六方面,提供了一种其上存储有计算机可执行指令的非瞬态存储介质,所述计算机可执行指令在被计算机执行时使得计算机执行根据本公开的第一方面或
第二方面所述的方法。

附图说明

[0013] 为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实
施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附
图获得其他的附图。
[0014] 图1是根据本说明书的一个或多个实施例的创建智能合约的图示过程;
[0015] 图2是根据本说明书的一个或多个实施例的调用智能合约的图示过程;
[0016] 图3和图4是根据本说明书的一个或多个实施例的用于在区块链中协作部署智能合约的方法的流程图;
[0017] 图5至图7是根据本说明书的一个或多个实施例的用于在区块链中协作部署智能合约的系统的示意图;
[0018] 图8是根据本说明书的一个或多个实施例的用于在区块链中协作部署智能合约的区块链节点设备的示意性框图;
[0019] 图9是根据本说明书的一个或多个实施例的用于在区块链中协作部署智能合约的系统的示意性框图;
[0020] 图10是图示可以在其上实现本说明书的一个或多个实施例的计算机系统的示意性框图;
[0021] 图11是根据本说明书的一个或多个实施例的用于在区块链中协作部署智能合约的计算装置的示意性框图。

具体实施方式

[0022] 本说明书实施例提供了一种用于在区块链中协作部署智能合约的方法。
[0023] 为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述
的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,
本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于
本说明书保护的范围。
[0024] 区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(Private Blockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,比
如私有链+联盟链、联盟链+公有链等。其中,去中心化程度最高的是公有链。公有链以比特
币、以太坊为代表,加入公有链的参与者(也可称为区块链中的节点)可以读取链上的数据
记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进
行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受
组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量
较少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链
之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构
或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
[0025] 基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成
一条在时间上有序的数据链条。对于物理世界产生的真实数据,可以将其构建成区块链所
支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点设备对收到
的交易进行共识处理,并在达成共识后,由区块链中作为记账节点的节点设备,将这笔交易
打包进区块,在区块链中进行持久化存证。
[0026] 在实际应用中,不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链上可以被交易触发执行的合约。智能合约可以通过代码的
形式定义。以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑。以太坊作
为一个可编程区块链,其核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM
是一个图灵完备的虚拟机,通过它可以实现各种复杂的逻辑。用户在以太坊中发布和调用
智能合约就是在EVM上运行的。实际上,EVM直接运行的是虚拟机代码(虚拟机字节码,以下
简称为“字节码”),所以部署在区块链上的智能合约可以是字节码。
[0027] 如图1所示,Bob将一笔包含创建智能合约信息的交易发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。例如,节点1的EVM可以执行这笔交易并生成对应的合约实
例。图1中的交易的From字段用于记录发起创建智能合约的账户的地址,交易的Data字段的
字段值保存的合约代码可以是字节码,交易的To字段的字段值为一个null(空)的账户。当
节点间通过共识机制达成一致后,这个智能合约成功创建,后续用户可以调用这个智能合
约。
[0028] 在智能合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址;比如,图1中各节点中的“0x68e12cf284…”就代表了创建的这个合约账户的
地址;合约代码(Code)和账户存储(Storage)将保存在该合约账户的账户存储中。智能合约
的行为由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约
使得区块链上产生包含合约代码和账户存储的虚拟账户。
[0029] 前述提到,包含创建智能合约的交易的Data字段保存的可以是该智能合约的字节码。字节码由一连串的字节组成,每一字节可以标识一个操作。基于开发效率、可读性等多
方面考虑,开发者可以不直接书写字节码,而是选择一门高级语言编写智能合约代码。例
如,高级语言可以采用诸如Solidity、Serpent、LLL语言等。对于采用高级语言编写的智能
合约代码,可以经过编译器编译,生成可以部署到区块链上的字节码。以Solidity语言为
例,用其编写的合约代码与面向对象编程语言中的类(Class)很相似,在一个合约中可以声
明多种成员,包括状态变量、函数、函数修改器、事件等。状态变量是永久存储在智能合约的
账户存储(Storage)字段中的值,用于保存合约的状态。
[0030] 另外,如图2所示,仍以以太坊为例,Bob将一笔包含调用智能合约信息的交易发送到以太坊网络后,各节点均可以在EVM中执行这笔交易。其中,图2中交易的From字段用于记
录发起调用智能合约的账户的地址,To字段用于记录被调用的智能合约的地址,交易的
Data字段用于记录调用智能合约的方法和参数。调用智能合约后,合约账户的账户状态可
能改变。后续,某个客户端可以通过接入的区块链节点查看合约账户的账户状态。
[0031] 智能合约可以以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当这样的交易执行完毕后,区块链上就保存了无法篡改、不
会丢失的交易凭证。以太坊中要创建一个智能合约,需要经过编写智能合约、编译成字节
码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,
各个节点的EVM可以分别执行该交易,将智能合约代码分布式地运行在以太坊网络中每个
节点的虚拟机中。
[0032] 智能合约的事件机制是智能合约与链外实体进行交互的一种方式。对于区块链上部署的智能合约来说,通常无法直接与链外实体进行交互;例如,在调用完智能合约后,通
常无法将智能合约的调用结果点对点地发送给智能合约的调用发起方。智能合约在调用的
过程中产生的调用结果(包括中间结果和最终的调用结果),通常都会以事件(Event)的形
式记录到调用该智能合约的那笔交易的交易日志(Transaction Logs),在节点设备的存储
空间中进行存储。而需要与智能合约进行交互的链外实体,则可以通过监听节点设备的存
储空间中存储的上述交易日志的方式,来获取智能合约的调用结果。例如,以以太坊为例,
交易日志最终会作为调用该智能合约的那笔交易的收据(Receipt)的一部分内容,存储在
例如MPT收据树中。而与智能合约进行交互的链外实体,可以监听节点设备的存储空间中存
储的MPT收据树上的交易收据,并从监听到的交易收据中,来获取智能合约生成的事件。
[0033] 在联盟应用场景中,可以通过在区块链中部署相应的智能合约来实现多个协作参与方之间的协作。智能合约是基于具体的协作内容编写的。然而,在这种存在多个协作参与
方的应用场景中,在智能合约的实际部署之前需要各个协作参与方进行协商以确定要部署
的智能合约。在智能合约的实际部署时还需要各个协作参与方注册协作所需信息来完成合
约的初始化以激活合约。传统的协商过程通常发生在线下。部署发起方(其可以是多个协作
参与方之一,但为了阐述清楚,将多个协作参与方中发起部署智能合约的一方称为“部署发
起方”)在根据协作内容拟定好智能合约后,需要将拟定好的智能合约提交给其他各个协作
参与方审核确认。当所有协作参与方均确认后,部署发起方才可以将拟定好的经确认的智
能合约部署到区块链。为了激活合约,各个协作参与方还需向部署发起方提供协作所需信
息(相当于注册过程)来完成合约的初始化。举例来说,A公司在运营过程中会产生大量数
据,但是A公司并不具备足够的计算资源,因此A公司寻求与B公司进行协作,约定由A公司提
供数据,并由B公司提供计算资源,从而进行数据计算协作。在该数据计算协作中,A公司与B
公司这两个协作参与方中的B公司可以作为部署发起方。B公司根据关于计算数据的协作内
容编写相应的智能合约代码,然后送交A公司审批,并在得到A公司确认后将智能合约部署
到区块链上以实现与A公司的协作。之后,A公司还需向B公司提供协作所需信息(例如,A公
司的身份信息等等)来完成合约的初始化。
[0034] 本公开提供了一种用于在区块链中协作部署智能合约的方法,其利用区块链技术实现了多个协作参与方在共同参与区块链智能合约部署时的链上协商和链上注册。下面结
合附图来详细描述根据本说明书的一个或多个实施例的用于在区块链中协作部署智能合
约的方法。
[0035] 图3示出了根据本说明书的一个或多个实施例的用于在区块链中协作部署智能合约的方法100。可以在区块链中预先部署用于授权管理的系统合约。该系统合约可以是部署
在区块链中的系统级智能合约,并且可以包括授权管理方法的多个实例。例如,可以参考图
1所示的创建智能合约的过程来将该系统合约预先部署在区块链中。该系统合约可以包括
用于创建授权流程的第一方法和用于执行授权流程的第二方法。例如,通过调用系统合约
的第一方法并提供相关初始化参数可以创建相应的授权流程。在通过初始化参数对流程初
始化后,可以限定流程由谁发起(通常是部署发起方)、审批何种事项、涉及什么合约、协作
具体内容、由哪些协作参与方审批等等。通过调用系统合约的第二方法可以执行所创建的
授权流程以产生审批结果。
[0036] 如图3所示,用于在区块链中协作部署智能合约的方法100包括:在S102,由区块链网络接收并执行第一交易以创建用于审批由部署发起方生成的智能合约的授权流程。所述
第一交易可以包括关于调用所述系统合约中的用于创建授权流程的第一方法的信息和用
于初始化所述第一方法的第一参数信息。所述第一参数信息可以包括所述智能合约的第一
哈希值和协作参与方的身份信息。智能合约的第一哈希值可以用于指示所创建的授权流程
涉及审批什么智能合约,并且可以用于验证要部署的智能合约与要审批的智能合约之间的
一致性。协作参与方的身份信息可以用于限定在所创建的授权流程中由哪些协作参与方参
与审批。
[0037] 在一些实施例中,第一参数信息还可以包括以下中的一者或多者:部署发起方的身份信息;部署发起方与协作参与方之间约定的对应于所述智能合约的协作内容;每个协
作参与方的审批角色;每个协作参与方的审批内容。部署发起方的身份信息可以用于限定
所创建的授权流程由谁发起。协作内容可以用于限定所创建的授权流程具体涉及什么协
作。每个协作参与方的审批角色及审批内容可以用于限定所创建的授权流程的各个审批环
节的负责人及审批事项。例如,在创建授权流程时,可以利用第一参数信息具体限定协作参
与方中的一些或全部参与授权流程,还可以具体限定其间的审批逻辑。例如,A为部署发起
方,B、C、D为协作参与方,可以要求B、C、D均审批通过才可以部署智能合约,也可以要求B、C、
D中的至少一者审批通过即可部署智能合约,还可以要求B、C、D的特定审批顺序(例如,B审
批通过才能由C进行审批),等等。
[0038] 在一些实施例中,第一参数信息还可以包括以下中的一者或多者:智能合约的编写结果、编译结果和检查结果。如前所述,部署发起方可以用高级语言编写智能合约代码,
然后可以通过编译器编译用高级语言编写的智能合约代码以生成可以部署到区块链上的
字节码。因此,智能合约的编写结果例如可以是智能合约的高级语言形式,并且智能合约的
编译结果例如可以是智能合约的字节码形式。另外,为了安全起见,还可以对智能合约进行
检查以防安全漏洞。在一些示例中,可以对高级语言形式的智能合约和字节码形式的智能
合约中的至少一者进行检查以生成智能合约的检查结果。在一些实施例中,只有通过了检
查的智能合约才有被送交其它协作参与方审批的必要,因为其它协作参与方在看到负面检
查结果时通常不会许可该智能合约。
[0039] 第一参数信息可以在第一交易被执行时为调用系统合约中的用于创建授权流程的第一方法提供初始化参数。例如,可以参考图2所示的调用智能合约的过程来调用系统合
约中的用于创建授权流程的第一方法。当第一交易被发送到区块链网络时,区块链网络的
任一区块链节点均可执行第一交易以创建用于智能合约的授权流程,使得创建结果在所有
区块链节点同步。
[0040] 方法100还包括:在S104,由区块链网络接收并执行第二交易以生成对所述智能合约的审批结果。所述第二交易可以包括关于调用所述系统合约中的用于执行授权流程的第
二方法的信息和用于初始化所述第二方法的第二参数信息。所述第二参数信息可以包括协
作参与方从部署发起方获得的智能合约的副本的第二哈希值和协作参与方对智能合约的
审批状态的修改。协作参与方可以通过链外或链内方式获得来自部署发起方的智能合约的
副本。作为链外方式的非限制性示例,部署发起方可以将其生成的智能合约的副本(其可以
是智能合约编写结果和/或编译结果)经由电子邮件等方式发送给协作参与方。作为链内方
式的非限制性示例,部署发起方可以将其生成的智能合约的副本(其可以是智能合约编写
结果和/或编译结果)包括在交易(其例如可以是所述第一交易)中并上传至区块链,使得协
作参与方可以从区块链获取智能合约的副本。第二哈希值可以用于指示协作参与方对智能
合约的审批状态的所述修改是针对与第二哈希值对应的版本的智能合约的。
[0041] 在一些实施例中,第二方法被配置为当所述第一哈希值与所述第二哈希值相同并且协作参与方将智能合约的审批状态修改为通过时,将所述智能合约的审批结果生成为通
过。第一哈希值与第二哈希值相同,意味着协作参与方当前审批的智能合约与拟定要部署
的智能合约是一致的。这样,可以防止部署发起方故意欺骗协作参与方审批假的智能合约,
也可以防止非故意的错误审批。
[0042] 在一些实施例中,第二参数信息还可以包括协作参与方的身份信息。每个协作参与方可以修改授权流程中由其负责的部分的审批状态。第二参数信息可以在第二交易被执
行时为调用系统合约中的用于审批授权流程的第二方法提供初始化参数。例如,可以参考
图2所示的调用智能合约的过程来调用系统合约中的用于审批授权流程的第二方法。当第
二交易被发送到区块链网络时,区块链网络的任一区块链节点均可执行第二交易以生成智
能合约的审批结果,使得审批结果在所有区块链节点同步。
[0043] 方法100还包括:在S106,当智能合约的审批结果为通过时,由区块链网络接收并执行包括关于创建所述智能合约的信息的第三交易以将所述智能合约部署在区块链中。例
如,可以参考图1所示的创建智能合约的过程来将智能合约部署在区块链中。
[0044] 在一些实施例中,由区块链网络接收并执行包括关于创建所述智能合约的信息的第三交易以将所述智能合约部署在区块链中包括:计算所述第三交易中包括的智能合约的
第三哈希值;当所述第三哈希值与所述第二哈希值相同时,部署所述智能合约。这样,每个
区块链节点可以在基于第三哈希值与第二哈希值相同而确定现在要部署的智能合约与之
前审批通过的智能合约是一致的后,才部署所述智能合约。
[0045] 在一些实施例中,方法100还可以包括:在S108,在将智能合约部署在区块链中之后,由区块链网络接收并执行包括关于初始化所述智能合约的信息的第四交易以对所述智
能合约进行初始化。例如,所部署的智能合约可以留用用于填充初始化信息的接口,通过执
行第四交易可以调用所部署的智能合约并提供相关的参数信息来初始化所部署的智能合
约。
[0046] 图4示出了用于在区块链中协作部署目标智能合约的方法200。方法200与方法100的不同之处在于,在区块链中预先部署的是用于创建授权流程的第一智能合约和用于执行
授权流程的第二智能合约,而不是单个系统合约。这里将要在区块链中协作部署的智能合
约称为目标智能合约仅仅是为了避免与第一智能合约与第二智能合约混淆,而没有任何限
制。例如,可以参考图1所示的创建智能合约的过程来将第一智能合约和第二智能合约预先
部署在区块链中。类似地,方法200可以包括:在S202,由区块链网络接收并执行第一交易以
创建用于审批由部署发起方生成的目标智能合约的授权流程,所述第一交易包括关于调用
所述第一智能合约的信息和用于初始化所述第一智能合约的第一参数信息,所述第一参数
信息包括所述目标智能合约的第一哈希值和协作参与方的身份信息;在S204,由区块链网
络接收并执行第二交易以生成对所述目标智能合约的审批结果,所述第二交易包括关于调
用所述第二智能合约的信息和用于初始化所述第二智能合约的第二参数信息,所述第二参
数信息包括协作参与方从部署发起方获得的目标智能合约的副本的第二哈希值和协作参
与方对目标智能合约的审批状态的修改;在S206,当所述目标智能合约的审批结果为通过
时,由区块链网络接收并执行包括关于创建所述目标智能合约的信息的第三交易以将所述
目标智能合约部署在区块链中。在一些实施例中,方法200还可以包括:在S208,在将目标智
能合约部署在区块链中之后,由区块链网络接收并执行包括关于初始化目标智能合约的信
息的第四交易以对目标智能合约进行初始化。除了上述不同之处外,方法200的其它方面可
以与方法100相同或相似,在此不再赘述。
[0047] 如前所述,当一笔交易被发送到区块链网络时,各区块链节点均可以在EVM中执行这笔交易。因此,上述方法可以在区块链网络的任一区块链节点处执行。在一些实施例中,
第一交易至第四交易中的每一者可以在第一区块链节点被接收,然后在第二区块链节点被
执行。第一区块链节点和第二区块链节点可以是相同的,也可以是不同的。在一些实施例
中,第一交易至第四交易彼此之间可以在相同或不同的区块链节点上被接收和/或执行。
[0048] 参考图5,区块链网络20中包括多个区块链节点,例如第一区块链节点201、第二区块链节点202、第三区块链节点203、第四区块链节点204等。在一些实施例中,第一交易和第
三交易可以是由部署发起方的第一客户端211发送到区块链网络20的,并且第二交易和第
四交易是由协作参与方的第二客户端212发送到区块链网络20的。在一些示例中,第一交易
和第三交易可以是由部署发起方的第一客户端211发送到第一区块链节点201的。然后,第
一交易和第三交易可以经由区块链网络20同步到其它区块链节点202、203、204。在一些示
例中,第二交易和第四交易是由协作参与方的第二客户端212发送到第二区块链节点202
的。然后,第二交易和第四交易可以经由区块链网络20同步到其它区块链节点201、203、
204。
[0049] 部署发起方的第一客户端211可以通信耦合到第一区块链节点201。在一些实施例中,与部署发起方的第一客户端211通信耦合的第一区块链节点201从区块链监听或回查智
能合约的审批结果并将智能合约的审批结果推送至部署发起方的第一客户端211。替代地,
部署发起方的第一客户端211本身可以作为第一区块链节点201耦合到区块链网络20。在一
些实施例中,部署发起方的第一客户端211可以作为第一区块链节点201从区块链监听或回
查智能合约的审批结果。在一些实施例中,当协作参与方完成审批后,也可以通过链外方式
通知部署发起方审批结果已生成。
[0050] 协作参与方的第二客户端212可以通信耦合到第二区块链节点202。在一些实施例中,与协作参与方的第二客户端212通信耦合的第二区块链节点202从区块链监听授权流程
创建事件并将授权流程创建事件推送至协作参与方的第二客户端212。替代地,协作参与方
的第二客户端212本身可以作为第二区块链节点202耦合到区块链网络20。在一些实施例
中,协作参与方的第二客户端212作为第二区块链节点202从区块链监听授权流程创建事
件。在一些实施例中,当部署发起方完成授权流程的创建后,也可以通过链外方式通知协作
参与方授权流程已创建。
[0051] 另外,在一些实施例中,第一交易和第三交易可以是由部署发起方的第一客户端211发送到与第一区块链节点201不同的例如第三区块链节点203的。在第一交易和第三交
易经由第三区块链节点203发送到区块链网络20时,第一区块链节点201也可以接收和执行
第一交易和第三交易。部署发起方的第一客户端211可以通信耦合到第三区块链节点203。
替代地,部署发起方的第一客户端211本身可以作为第三区块链节点203耦合到区块链网络
20。
[0052] 另外,在一些实施例中,第二交易和第四交易可以是由协作参与方的第二客户端212发送到与第二区块链节点202不同的例如第四区块链节点204的。在第二交易和第四交
易经由第四区块链节点204发送到区块链网络20时,第二区块链节点202也可以接收和执行
第二交易和第四交易。协作参与方的第二客户端212可以通信耦合到第四区块链节点204。
替代地,协作参与方的第二客户端212本身可以作为第四区块链节点204耦合到区块链网络
20。
[0053] 参考图6,在一些实施例中,第一交易和第三交易可以是由与部署发起方的第一客户端211通信耦合的第一托管平台221发送到区块链网络20的,并且第二交易和第四交易是
由与协作参与方的第二客户端212通信耦合的第二托管平台222发送到区块链网络20的。在
一些示例中,第一交易和第三交易可以是由与部署发起方的第一客户端211通信耦合的第
一托管平台221发送到第一区块链节点201的。然后,第一交易和第三交易可以经由区块链
网络20同步到其它区块链节点202、203、204。在一些示例中,第二交易和第四交易是由与协
作参与方的第二客户端212通信耦合的第二托管平台222发送到第二区块链节点202的。然
后,第二交易和第四交易可以经由区块链网络20同步到其它区块链节点201、203、204。
[0054] 第一托管平台221可以通信耦合到第一区块链节点201。在一些实施例中,第一区块链节点201从区块链监听或回查智能合约的审批结果并将智能合约的审批结果经由与部
署发起方的第一客户端211通信耦合的第一托管平台221推送至部署发起方的第一客户端
211。替代地,第一托管平台221本身可以作为第一区块链节点201耦合到区块链网络20。在
一些实施例中,与部署发起方的第一客户端211通信耦合的第一托管平台221作为第一区块
链节点201从区块链监听或回查智能合约的审批结果并将智能合约的审批结果推送至部署
发起方的第一客户端211。
[0055] 第二托管平台222可以通信耦合到第二区块链节点202。在一些实施例中,第二区块链节点202从区块链监听授权流程创建事件并将授权流程创建事件经由与协作参与方的
第二客户端212通信耦合的第二托管平台222推送至协作参与方的第二客户端212。替代地,
第二托管平台222本身可以作为第二区块链节点202耦合到区块链网络20。在一些实施例
中,与协作参与方的第二客户端212通信耦合的第二托管平台222作为第二区块链节点202
从区块链监听授权流程创建事件并将授权流程创建事件推送至协作参与方的第二客户端
212。
[0056] 另外,在一些实施例中,第一交易和第三交易可以是由第一托管平台221发送到与第一区块链节点201不同的例如第三区块链节点203的。在第一交易和第三交易经由第三区
块链节点203发送到区块链网络20时,第一区块链节点201也可以接收和执行第一交易和第
三交易。第一托管平台221可以通信耦合到第三区块链节点203。替代地,第一托管平台221
本身可以作为第三区块链节点203耦合到区块链网络20。
[0057] 另外,在一些实施例中,第二交易和第四交易可以是由第二托管平台222发送到与第二区块链节点202不同的例如第四区块链节点204的。在第二交易和第四交易经由第四区
块链节点204发送到区块链网络20时,第二区块链节点202也可以接收和执行第二交易和第
四交易。第二托管平台222可以通信耦合到第四区块链节点204。替代地,第二托管平台222
本身可以作为第四区块链节点204耦合到区块链网络20。
[0058] 在一些实施例中,第四交易可以直接由经协作参与方授权的托管平台发送到区块链网络20而无需协作参与方的参与。也就是说,在审批通过之后的智能合约的实际部署阶
段可以不需要来自协作参与方的交互。
[0059] 第一客户端211和第二客户端212可以是任何合适的计算设备,例如但不限于台式或膝上型计算机、平板电脑、智能电话、个人数字助理等。第一托管平台221和第二托管平台
222可以是任何合适的计算环境,例如但不限于服务器、计算中心、云端等。在一些实施例
中,第一托管平台221和第二托管平台222相互连接以形成二层网络。在一些实施例中,第一
托管平台221和第二托管平台222是相同的云计算平台。在一些实施例中,对智能合约的编
写、编译和检查中的每一者分别在部署发起方的第一客户端211或者与部署发起方的第一
客户端211通信耦合的第一托管平台221上实现。例如,部署发起方可以在第一客户端211上
编写和编译智能合约,然后在第一托管平台221上检查智能合约。在一些实施例中,部署发
起方的第一客户端211可以经由第一区块链节点201或作为第一区块链节点201通信耦合到
区块链网络20,而与第一客户端211通信耦合的第一托管平台221可以不通信耦合到区块链
网络20并且用于实现对智能合约的编写、编译和检查中的至少一者并将相应结果返回给第
一客户端211,然后仍由第一客户端211将第一交易发送到区块链网络20。
[0060] 方法100或200中的授权管理还可以对接协作参与方已有的审批流程,实现协作参与方机构内部审批流程。在一些实施例中,方法100或200还可以包括:响应于监听到授权流
程创建事件,获取关于所创建的授权流程的信息并将其录入到协作参与方的内部审批流
程;以及在执行内部审批流程之后,向第二区块链节点202发送第二交易,其中智能合约的
审批状态基于内部审批流程的审批结果而被修改。
[0061] 在一些情况下,协作还可能涉及更多参与方。根据本公开的用于在区块链中协作部署智能合约的方法可以适用于两个或更多个协作参与方的情况。在一些实施例中,两个
或更多个协作参与方可以包括部署发起方、第一协作参与方和第二协作参与方,由此在
S102之后,方法100还可以替代地包括:由区块链网络接收并执行第一第二交易以生成对所
述智能合约的第一审批结果,所述第一第二交易包括关于调用所述系统合约中的用于执行
授权流程的第二方法的信息和用于初始所述第二方法的第二参数信息,所述第一第二交易
中的第二参数信息包括第一协作参与方从部署发起方获得的智能合约的副本的第二哈希
值和第一协作参与方对智能合约的审批状态的修改;由区块链网络接收并执行第二第二交
易以生成对所述智能合约的第二审批结果,所述第二第二交易包括关于调用所述系统合约
中的用于执行授权流程的第二方法的信息和用于初始所述第二方法的第二参数信息,所述
第二第二交易中的第二参数信息包括第二协作参与方从部署发起方获得的智能合约的副
本的第二哈希值和第二协作参与方对智能合约的审批状态的修改;以及当所述智能合约的
第一审批结果和第二审批结果均为通过时,由区块链网络接收并执行包括关于创建所述智
能合约的信息的第三交易以将所述智能合约部署在区块链中。这样,第一协作参与方和第
二协作参与方可以基于区块链分别修改授权流程中与其相关的部分的审批状态。在一些实
施例中,方法还可以包括:在将智能合约部署在区块链中之后,由区块链网络接收并执行包
括与第一协作参与方相关联的关于初始化智能合约的信息的第一第四交易,由区块链网络
接收并执行包括与第二协作参与方相关联的关于初始化智能合约的信息的第二第四交易,
以对智能合约进行初始化。在这些情况下,方法200也可以被类似地修改,在此不再赘述。
[0062] 如前所述,当一笔交易被发送到区块链网络时,各区块链节点均可以在EVM中执行这笔交易。因此与前述第二交易和第四交易类似的,在第二第二交易和第二第四交易被发
送到区块链网络20后,区块链网络20的任一区块链节点均可执行第二第二交易和第二第四
交易。
[0063] 在一些实施例中,第二第二交易和第二第四交易可以是由第二协作参与方的第三客户端213发送到第三区块链节点203的。第二协作参与方的第三客户端213可以通信耦合
到第三区块链节点203。在一些实施例中,与第二协作参与方的第三客户端213通信耦合的
第三区块链节点203从区块链监听授权流程创建事件并将授权流程创建事件推送至第二协
作参与方的第三客户端213。替代地,第二协作参与方的第三客户端213本身可以作为第三
区块链节点203耦合到区块链网络20。在一些实施例中,第二协作参与方的第三客户端213
作为第三区块链节点203从区块链监听授权流程创建事件。
[0064] 另外,在一些实施例中,第二第二交易和第二第四交易可以是由第二协作参与方的第三客户端213发送到与第三区块链节点203不同的例如第四区块链节点204的。在第二
第二交易和第二第四交易经由第四区块链节点204发送到区块链网络20时,第三区块链节
点203也可以接收和执行第二第二交易和第二第四交易。第二协作参与方的第三客户端213
可以通信耦合到第四区块链节点204。替代地,第二协作参与方的第三客户端213本身可以
作为第四区块链节点204耦合到区块链网络20。
[0065] 另外,参考图6,在一些实施例中,第二第二交易和第二第四交易可以是由与第二协作参与方的第三客户端213通信耦合的第三托管平台223发送到第三区块链节点203的。
第三托管平台223可以通信耦合到第三区块链节点203。在一些实施例中,第三区块链节点
203从区块链监听授权流程创建事件并将授权流程创建事件经由与第二协作参与方的第三
客户端213通信耦合的第三托管平台223推送至第二协作参与方的第三客户端213。替代地,
第三托管平台223本身可以作为第三区块链节点203耦合到区块链网络20。在一些实施例
中,与第二协作参与方的第三客户端213通信耦合的第三托管平台223作为第三区块链节点
203从区块链监听授权流程创建事件并将授权流程创建事件推送至第二协作参与方的第三
客户端213。另外,在一些实施例中,第二第二交易和第二第四交易可以是由第三托管平台
223发送到与第三区块链节点203不同的例如第四区块链节点204的。在第二第二交易和第
二第四交易经由第四区块链节点204发送到区块链网络20时,第三区块链节点203也可以接
收和执行第二第二交易和第二第四交易。第三托管平台223可以通信耦合到第四区块链节
点204。替代地,第三托管平台223本身可以作为第四区块链节点204耦合到区块链网络20。
[0066] 另外,参考图7,在一些实施例中,第一协作参与方的第二客户端212和第二协作参与方的第三客户端213可以均与第二托管平台222通信耦合,第一第二交易、第二第二交易、
第一第四交易、第二第四交易均可以是由第二托管平台222发送到区块链网络20的。在一些
实施例中,第一第二交易、第二第二交易、第一第四交易、第二第四交易可以是由第二托管
平台222发送到第二区块链节点202的。在一些实施例中,第一第二交易、第二第二交易、第
一第四交易、第二第四交易可以是由第二托管平台222发送到与第二区块链节点202不同的
例如第四区块链节点204的。在第一第二交易、第二第二交易、第一第四交易、第二第四交易
经由第四区块链节点204发送到区块链网络20时,第二区块链节点202也可以接收和执行第
一第二交易、第二第二交易、第一第四交易、第二第四交易。第二托管平台222可以通信耦合
到第四区块链节点204。替代地,第二托管平台222本身可以作为第四区块链节点204耦合到
区块链网络20。
[0067] 根据本公开的用于在区块链中协作部署智能合约的方法能够在多参与方的情况下通过基于区块链的授权流程来实现协作的各参与方对智能合约部署的协商与共识,还能
够通过初始化合约来实现各参与方参与协作所需信息的注册,提高了多参与方共同部署智
能合约的效率,保护了各参与方的信息隐私,使得授权流程可追溯且不可篡改。
[0068] 下面结合图8来介绍根据本说明书的一个或多个实施例的用于在区块链中部署智能合约的区块链节点设备300。区块链节点设备300包括接收模块301和执行模块302。区块
链节点设备300可以部署在前述区块链网络20中的任何区块链节点处。
[0069] 在一些实施例中,在区块链中预先部署用于授权管理的系统合约,由此区块链节点设备300可以被配置为执行方法100。具体地,接收模块301可以被配置用于:接收第一交
易,所述第一交易包括关于调用所述系统合约中的用于创建授权流程的第一方法的信息和
用于初始化所述第一方法的第一参数信息,所述第一参数信息包括由部署发起方生成的智
能合约的第一哈希值和协作参与方的身份信息;接收第二交易,所述第二交易包括关于调
用所述系统合约中的用于执行授权流程的第二方法的信息和用于初始化所述第二方法的
第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得的智能合约的副本的
第二哈希值和协作参与方对智能合约的审批状态的修改;以及接收第三交易,所述第三交
易包括关于创建所述智能合约的信息。执行模块302可以被配置为用于:执行所述第一交易
以创建用于审批所述智能合约的授权流程;执行所述第二交易以生成对所述智能合约的审
批结果;以及当所述智能合约的审批结果为通过时,执行所述第三交易以将所述智能合约
部署在区块链中。
[0070] 在一些实施例中,在区块链中预先部署用于创建授权流程的第一智能合约和用于审批授权流程的第二智能合约,由此区块链节点设备300可以被配置为执行方法200。具体
地,接收模块301可以被配置用于:接收第一交易,所述第一交易包括关于调用所述第一智
能合约的信息和用于初始化所述第一智能合约的第一参数信息,所述第一参数信息包括由
部署发起方生成的目标智能合约的第一哈希值和协作参与方的身份信息;接收第二交易,
所述第二交易包括关于调用所述第二智能合约的信息和用于初始化所述第二智能合约的
第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得的目标智能合约的副
本的第二哈希值和协作参与方对目标智能合约的审批状态的修改;以及接收第三交易,所
述第三交易包括关于创建所述目标智能合约的信息。执行模块302可以被配置为用于:执行
所述第一交易以创建用于审批所述目标智能合约的授权流程;执行所述第二交易以生成对
所述目标智能合约的审批结果;以及当所述目标智能合约的审批结果为通过时,执行所述
第三交易以将所述目标智能合约部署在区块链中。
[0071] 区块链节点设备300的实施例基本类似于前述方法实施例,因此在此不再赘述,相关之处可参见方法实施例部分的说明。
[0072] 下面结合图9来介绍根据本说明书的一个或多个实施例的用于在区块链中部署智能合约的系统400。系统400包括第一区块链节点设备410和第二区块链节点设备420。第一
区块链节点设备410包括第一接收模块411和第一执行模块412。第二区块链节点设备420包
括第二接收模块421和第二执行模块422。第一区块链节点设备410和第二区块链节点设备
420可以部署在前述区块链网络20中的任何区块链节点处。
[0073] 在一些实施例中,在区块链中预先部署用于授权管理的系统合约,由此系统400可以被配置为执行方法100。具体地,第一接收模块411可以被配置用于:接收第一交易,所述
第一交易包括关于调用所述系统合约中的用于创建授权流程的第一方法的信息和用于初
始化所述第一方法的第一参数信息,所述第一参数信息包括由部署发起方生成的智能合约
的第一哈希值和协作参与方的身份信息;以及接收第三交易,所述第三交易包括关于创建
所述智能合约的信息。第一执行模块412可以被配置为用于:执行所述第一交易以创建用于
审批所述智能合约的授权流程;以及当智能合约的审批结果为通过时,执行第三交易以将
智能合约部署在区块链中。第二接收模块421可以被配置用于接收第二交易,所述第二交易
包括关于调用所述系统合约中的用于执行授权流程的第二方法的信息和用于初始化所述
第二方法的第二参数信息,所述第二参数信息包括协作参与方从部署发起方获得的智能合
约的副本的第二哈希值和协作参与方对智能合约的审批状态的修改。第二执行模块422可
以被配置为用于执行所述第二交易以生成对所述智能合约的审批结果。
[0074] 在一些实施例中,在区块链中预先部署用于创建授权流程的第一智能合约和用于审批授权流程的第二智能合约,由此系统400可以被配置为执行方法200。具体地,第一接收
模块411可以被配置用于:接收第一交易,所述第一交易包括关于调用所述第一智能合约的
信息和用于初始化所述第一智能合约的第一参数信息,所述第一参数信息包括由部署发起
方生成的目标智能合约的第一哈希值和协作参与方的身份信息;以及接收第三交易,所述
第三交易包括关于创建所述目标智能合约的信息。第一执行模块412可以被配置为用于:执
行所述第一交易以创建用于审批所述目标智能合约的授权流程;以及当所述目标智能合约
的审批结果为通过时,执行所述第三交易以将所述目标智能合约部署在区块链中。第二接
收模块421可以被配置用于接收第二交易,所述第二交易包括关于调用所述第二智能合约
的信息和用于初始化所述第二智能合约的第二参数信息,所述第二参数信息包括协作参与
方从部署发起方获得的目标智能合约的副本的第二哈希值和协作参与方对目标智能合约
的审批状态的修改。第二执行模块422可以被配置为用于执行所述第二交易以生成对所述
目标智能合约的审批结果。
[0075] 系统400的实施例基本类似于前述方法实施例,因此在此不再赘述,相关之处可参见方法实施例部分的说明。
[0076] 图10是图示了可以在其上实现本说明书的实施例的计算机系统500的框图。计算机系统500包括总线502或用于传送信息的其它通信机构,以及与总线502耦合的用于处理
信息的处理器504。计算机系统500还包括与总线502耦合的用于存储要由处理器504执行的
指令的存储器506,存储器506可以是随机存取存储器(RAM)或其它动态存储设备。存储器
506还可以被用于在要由处理器504执行的指令的执行期间存储临时变量或其它中间信息。
计算机系统500还包括耦合到总线502的用于为处理器504存储静态信息和指令的只读存储
器(ROM)508或其它静态存储设备。诸如磁盘或光盘之类的存储装置510被提供并且被耦合
到总线502以用于存储信息和指令。计算机系统500可以经由总线502耦合到用于向用户提
供输出的输出设备512,例如但不限于显示器(诸如阴极射线管(CRT)或液晶显示器(LCD))、
扬声器等。诸如键盘、鼠标、麦克风等之类的输入设备514被耦合到总线502,以用于将信息
和命令选择传送给处理器504。计算机系统500可以执行本说明书的实施例。与本说明书的
某些实现方式一致,由计算机系统500响应于处理器504执行存储器506中所包含的一个或
多个指令的一个或多个序列来提供结果。可以将这种指令从诸如存储装置510之类的另一
计算机可读介质读取到存储器506中。存储器506中所包含的指令序列的执行使处理器504
执行本文描述的方法。可替代地,可以使用硬连线电路系统取代软件指令或者结合软件指
令来实现本教导。因此,本说明书的实现方式不限于硬件电路系统与软件的任何特定组合。
在各种实施例中,计算机系统500可以经由网络接口516跨网络连接到如计算机系统500一
样的一个或多个其它计算机系统,以形成联网系统。该网络可以包括专用网络或诸如互联
网之类的公共网络。在联网系统中,一个或多个计算机系统可以存储数据并且将数据供应
给其它计算机系统。如本文使用的术语“计算机可读介质”是指参与向处理器504提供指令
以供执行的任何介质。这种介质可以采用许多形式,包括但不限于非易失性介质、易失性介
质和传输介质。非易失性介质包括例如诸如存储装置510之类的光盘或磁盘。易失性介质包
括诸如存储器506之类的动态存储器。传输介质包括同轴电缆、铜线和光纤,包括包含总线
502的布线。常见形式的计算机可读介质或计算机程序产品包括例如软盘、柔性盘、硬盘、磁
带、或任何其它磁性介质、CD‑ROM、数字视频盘(DVD)、蓝光盘、任何其它光学介质、拇指驱动
器、存储器卡、RAM、PROM和EPROM、快速EPROM、任何其它存储器芯片或盒、或计算机可以从中
读取的任何其它有形介质。在将一个或多个指令的一个或多个序列携带到处理器504以供
执行时可以涉及各种形式的计算机可读介质。例如,指令最初可以被携带在远程计算机的
磁盘上。远程计算机可以将指令加载到其动态存储器中并且使用调制解调器通过电话线发
送指令。计算机系统500本地的调制解调器可以在电话线上接收数据,并且使用红外发射器
将数据转换成红外信号。耦合到总线502的红外检测器可以接收在红外信号中携带的数据,
并且将数据置于总线502上。总线502将数据携带到存储器506,处理器504从存储器506中检
索指令并执行指令。可选地,由存储器506接收到的指令可以在由处理器504执行之前或之
后被存储在存储装置510上。
[0077] 根据各种实施例,被配置为由处理器执行以执行方法的指令被存储在计算机可读介质上。计算机可读介质可以是存储数字信息的设备。例如,计算机可读介质包括如本领域
中已知用于存储软件的致密盘只读存储器(CD‑ROM)。计算机可读介质由适合于执行被配置
为被执行的指令的处理器访问。
[0078] 例如,本公开还可以提供一种计算装置,该计算装置可以包括一个或多个处理器以及存储计算机可执行指令的存储器,计算机可执行指令在被一个或多个处理器执行时使
得一个或多个处理器执行根据本公开的前述任一实施例所述的方法。如图11所示,计算装
置600可以包括(一个或多个)处理器601以及存储计算机可执行指令的存储器602,计算机
可执行指令在被(一个或多个)处理器601执行时使得(一个或多个)处理器601执行根据本
公开的前述任一实施例所述的方法。(一个或多个)处理器601例如可以是计算装置600的中
央处理单元(CPU)。(一个或多个)处理器601可以是任何类型的通用处理器,或者可以是专
门设计用于在区块链中协作部署智能合约的处理器,诸如专用集成电路(“ASIC”)。存储器
602可以包括可由(一个或多个)处理器601访问的各种计算机可读介质。在各种实施例中,
本文描述的存储器602可以包括易失性和非易失性介质、可移除和不可移除介质。例如,存
储器602可以包括以下的任何组合:随机存取存储器(“RAM”)、动态RAM(“DRAM”)、静态RAM
(“SRAM”)、只读存储器(“ROM”)、闪存、高速缓冲存储器和/或任何其它类型的非瞬态计算机
可读介质。存储器602可以存储在被处理器601执行时使得处理器601执行根据本公开的前
述任一实施例所述的方法。
[0079] 另外,本公开还可以提供一种其上存储有计算机可执行指令的非瞬态存储介质,计算机可执行指令在被计算机执行时使得计算机执行根据本公开的前述任一实施例所述
的方法。
[0080] 在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然
而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。
设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因
此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件
(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable Gate 
Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员
自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作
专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻
辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,
而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言
(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL
(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description 
Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL
(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby 
Hardware Description Language)等,目前最普遍使用的是VHDL(Very‑High‑Speed 
Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应
该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,
就可以很容易得到实现该逻辑方法流程的硬件电路。
[0081] 控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可
读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,
ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制
器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,
存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了
以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来
使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来
实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各
种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置
视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0082] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排
除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝
上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放
器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何
设备的组合。
[0083] 虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤
顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或
终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行
处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其
任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者
设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、
方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的
过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词
语用来表示名称,而并不表示任何特定的顺序。
[0084] 为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以
将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅
仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外
的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以
忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通
过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0085] 本公开是参照根据本公开实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0086] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
[0087] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
[0088] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0089] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的
示例。
[0090] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动
态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除
可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、
数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他
磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文
中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据
信号和载波。
[0091] 本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或
结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或
多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、
CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0092] 本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型
的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个
或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执
行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机
存储介质中。
[0093] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实
施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例
的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、
“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料
或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意
性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点
可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本
领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特
征进行结合和组合。
[0094] 以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种
更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包
含在权利要求范围之内。