基于区块链的智能合约执行方法及装置和电子设备
技术领域
本说明书实施例涉及区块链技术领域,尤其涉及一种基于区块链的智能合约执行方法及装置和电子设备。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术在众多的领域中广泛的进行应用。
发明内容
本说明书实施例提供的一种基于区块链的智能合约执行方法及装置和电子设备:
根据本说明书实施例的第一方面,提供一种基于区块链的智能合约执行方法,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态,所述方法包括:
所述数据存储系统中的第一节点设备接收客户端发起的目标交易,并将所述目标交易广播给所述合约管理系统中的第二节点设备;
所述第二节点设备响应所述目标交易,预执行所述目标交易对应的目标智能合约,并将预执行结果发送给所述第一节点设备;
所述第一节点设备接收所述第二节点设备返回的执行结果,并将所述执行结果发送给所述数据存储系统中的其它节点设备进行共识。
根据本说明书实施例的第二方面,提供一种基于区块链的智能合约执行方法,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态,所述方法包括:
合约管理系统中的第二节点设备接收数据存储系统中的第一节点设备广播的由客户端发起的目标交易;
响应所述目标交易,预执行所述目标交易对应的目标智能合约;
将所述预执行结果发送给所述第一节点设备,以使所述第一节点设备根据所述预执行结果进行共识。
根据本说明书实施例的第三方面,提供一种基于区块链的智能合约执行方法,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态,所述方法包括:
数据存储系统中的第一节点设备接收客户端发起的目标交易;
将所述目标交易广播给所述合约管理系统中的第二节点设备;
接收所述第二节点设备预执行所述目标交易对应的目标智能合约后返回的预执行结果;
将所述预执行结果发送给所述数据存储系统中的其它节点设备进行共识。
根据本说明书实施例的第四方面,提供一种基于区块链的智能合约执行装置,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态,所述装置包括:
接收单元,合约管理系统中的第二节点设备接收数据存储系统中的第一节点设备广播的由客户端发起的目标交易;
执行单元,响应所述目标交易,预执行所述目标交易对应的目标智能合约;
返回单元,将所述预执行结果发送给所述第一节点设备,以使所述第一节点设备根据所述预执行结果进行共识。
根据本说明书实施例的第五方面,提供一种基于区块链的智能合约执行装置,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态,所述装置包括:
第一接收单元,数据存储系统中的第一节点设备接收客户端发起的目标交易;
广播单元,将所述目标交易广播给所述合约管理系统中的第二节点设备;
第二接收单元,接收所述第二节点设备预执行所述目标交易对应的目标智能合约后返回的预执行结果;
共识单元,将所述预执行结果发送给所述数据存储系统中的其它节点设备进行共识。
根据本说明书实施例的第六方面,提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为上述任一项基于区块链的智能合约执行方法。
本说明书实施例,提供了一种基于区块链的智能合约执行方案,将区块链分为合约管理系统和数据存储系统,所述合约管理系统仅存储区块链的智能合约,所述数据存储系统仅存储区块链的数据状态。当数据存储系统中的数据存储节点接收到用户通过客户端发起的目标交易时,该数据存储节点可以将该目标交易广播到合约管理系统中的一个或多个智能合约节点;这些智能合约节点通过预执行目标交易对应的目标智能合约,并将预执行结果返回给数据存储节点;最后数据存储节点对各个智能合约节点返回的预执行结果进行数据校验以及后续共识。通过上述过程,一方面,将交易过程中的合约执行和数据记录解耦,分为独立的两个部分;合约管理系统中的智能合约节点只负责合约的预执行,数据存储系统中的数据存储节点只负责数据状态记录;简化了每部分系统内部的执行逻辑、缩减合约运行周期。另一方面,由于合约管理系统中不存储数据状态,不同智能合约节点可以同时预执行相同的智能合约,提高了业务处理能力。再一方面,合约管理系统中的节点设备之间可以共享部署的智能合约。
附图说明
图1是本说明书一实施例提供的区块链系统的架构示意图;
图2是本说明书一实施例提供的基于区块链的智能合约执行方法的流程图;
图3是本说明书一实施例提供的针对查询交易的智能合约执行方法的流程图;
图4是本说明书一实施例提供的智能合约节点向数据存储节点获取数据状态的流程示意图;
图5是图2中以数据存储节点为执行主体的方法流程图;
图6是图2中以智能合约节点为执行主体的方法流程图;
图7是本说明书一实施例提供的基于区块链的智能合约执行装置的硬件结构图;
图8是本说明书一实施例提供的基于区块链的智能合约执行装置的模块;
图9是本说明书一实施例提供的基于区块链的智能合约执行装置的模块。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
智能合约(Smart contract)是一种旨在应用在可以部署在区块链上的以信息化方式传播、验证或执行合同的计算机协议。通过在智能合约中声明业务逻辑可以实现执行相应操作。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约能够提供优于传统合同方法的安全,并减少与合同相关的其他交易成本。
首先,介绍传统区块链中智能合约的部署方式。传统智能合约是直接部署在区块链中节点设备上,并在节点设备执行交易请求时,直接运行本地部署的相应智能合约;并且节点设备还存储有全量的交易数据。节点设备在响应一个交易时,即要对智能合约的执行进行逻辑校验也要在数据存储时进行数据校验。可见,传统区块链中,对节点设备的要求较高,必须兼备逻辑校验和数据校验,校验逻辑复杂,校验周期也长。
本说明书提出了一种区块链中智能合约的执行方案,将区块链分为合约管理系统和数据存储系统,所述合约管理系统仅存储区块链的智能合约,所述数据存储系统仅存储区块链的数据状态。当数据存储系统中的数据存储节点接收到用户通过客户端发起的目标交易时,该数据存储节点可以将该目标交易广播到合约管理系统中的一个或多个智能合约节点;这些智能合约节点通过预执行目标交易对应的目标智能合约,并将预执行结果返回给数据存储节点;最后数据存储节点对各个智能合约节点返回的预执行结果进行数据校验以及后续共识。通过上述过程,一方面,将交易过程中的合约执行和数据记录解耦,分为独立的两个部分;合约管理系统中的智能合约节点只负责合约的预执行,数据存储系统中的数据存储节点只负责数据状态记录;简化了每部分系统内部的执行逻辑、缩减合约运行周期。另一方面,由于合约管理系统中不存储数据状态,不同智能合约节点可以同时预执行相同的智能合约,提高了业务处理能力。再一方面,合约管理系统中的节点设备之间可以共享部署的智能合约。
合约管理系统可以关联多个数据存储系统。用于预执行数据存储系统需要执行交易对应的智能合约方法逻辑。
在本说明书所描述的区块链,具体可以包括私有链、共有链以及联盟链等,在本说明书中不进行特别限定。所述区块链中的节点设备可以无限制的添加,各个节点设备可以同步一个系统时间,以保障智能合约执行的时效性。
需要说明的是,在本说明书中所描述的交易(Transaction),是指通过区块链的客户端创建,并需要最终发布至区块链的数据存储系统中的一笔数据。
区块链中的交易,通常存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,宽泛的可以分为查询业务、调用业务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
上述客户端,可以包括任意类型的以区块链中存储的底层业务数据作为数据支撑,来实现特定的业务功能的上层应用。
请参考图1,图1为本说明书提供的区块链系统的架构示意图:
所述区块链分为合约管理系统11和数据存储系统12。
所述合约管理系统12存储智能合约,其不会对智能合约具体的方法调用生产的数据进行存储。但是,每个智能合约节点都具有运行智能合约的环境、以及存储的智能合约编译地名或智能合约源代码;因此,每个智能合约节点都可以具备对部署的智能合约进行执行的能力。
所述合约管理系统11中包含若干智能合约节点的设备,所述数据存储系统12中包含若干数据存储节点的设备。
所述合约管理系统11和数据存储系统12之间通过衔接SDK13连接,以完成数据交互。
具体地,所述合约管理系统11可以是一套独立的区块链系统,主要负责智能合约的部署(创建)、升级(更新)以及运行。并且,所述合约管理系统11还需要对智能合约的执行进行逻辑校验。
合约管理系统11中的合约源码等可以通过IPFS等技术进行分布式存储,以减少存储占用。
所述数据存储系统12存储业务数据。所述数据存储系统12可以是区别于合约管理系统11的另一套独立的区块链系统,主要负责存储智能合约对应的数据状态以及变更。并且,所述数据存储系统12还需要对数据状态变更进行数据校验。
所述衔接SDK13用于将交易打包封装为智能合约节点需求的类型。在智能合约节点进行预执行时从数据存储节点获取数据状态,以及收集智能合约节点返回的预执行结果(结果集)。具体地,可以根据交易中所调用的目标智能合约方法向数据存储节点获取数据状态。
数据存储节点可以通过SDK的配置选择不同的智能合约节点进行预执行调用,以及一次调用多个。
本说明书中的智能合约系统11和数据存储系统12可以构成一个完备的基于智能合约的区块链系统,且每个系统中的节点可以配置进行灵活调整。
所述数据存储系统12还可以是传统的数据库存储系统,其嵌入值得的SDK13后即可以关联智能合约节点。
如果数据存储节点是一个数据库服务管理端,其只对结果集进行收集存储。那么,这将会是一个具有隐私保护的存证系统。结果集可以通过任意节点进行复现、验证。结果集中有时间戳且对结果集有各个参与智能合约节点的签名。因此能够对数据有效性进行校验。在每个执行的智能合约节点也可以做交易结果集hash的存证。
请参考图2,图2为本说明书一实施例提供的基于区块链的智能合约执行方法的流程图。如图1所示,该区块链分为合约管理系统和数据存储系统。
1.用户发起一笔交易到数据存储系统中的任意一个数据存储节点;设为数据存储节点1。
2.数据存储节点1将该交易广播到各个关联的智能合约节点。
具体地,数据存储节点1可以通过衔接SDK将交易广播到与本数据存储节点关联的一个或多个位于合约管理系统中的智能合约节点。所述多个包括2个或2个以上的情况。
3.各个智能合约节点预执行智能合约后,返回签名的结果集。
每个智能合约节点在接收到数据存储节点1广播的交易后,响应该交易,可以预运行该交易对应的目标智能合约;并且将预执行目标智能合约过程中产生的读写集以及其他信息打包为结果集;然后对该结果集进行签名,以对结果集进行背书。同样地,每个智能合约节点也是通过衔接SDK向数据存储节点1返回签名的结果集。
值得一提的是,合约管理系统中节点设备只要预执行成功,就会在自身节点设备上做记录。本着节点设备只做逻辑校验的原则,记录为交易id+结果集hash构成的一条独一无二的值。各个交易记录在一定时间范围内收集打包为一个区块。该区块中有打包的时间戳。各条记录没有先后顺序,只是明确在这个时间段内执行完成了某些笔交易。
4.数据存储节点1对签名的结果集进行有效性校验。
数据存储节点1接收各个智能合约节点返回的带有签名的结果集,并对其进行有效性校验。
这里的有效性校验可以是指对结果集的签名进行校验,如果签名校验为有效,则可以认为返回的结果集也有效。
5.数据存储节1在验证了这些结果集有效后,将交易发生给其它数据存储节点进行共识。
在验证了结果集有效之后,可以从读写集中提取出数据状态变化结果,并将该数据状态变化结果发送给其它数据存储节点进行共识。
6.数据存储节对数据状态变化进行数据校验;若校验通过,修改对应的数据状态,并设置交易为有效交易。
这里的共识机制主要是对数据状态变化进行数据校验;如果该数据状态变化与本地存储的数据状态一致则说明校验通过。从而修改对应的数据状态,并设置交易为有效交易。
7.在共识通过后,数据存储节点1返回提示信息。
在共识通过后,数据存储节点1可以向用户返回提示信息,例如执行结果或者发生区块事件。如此一个完整的交易流程结束。
在一实施例中,如果交易类型为查询,则可以如图3所示:
1.用户发起一笔查询交易到数据存储系统中的任意一个数据存储节点;设为数据存储节点1。
2.数据存储节点1将该交易发送给指定的智能合约节点;设为智能合约节点1。
3.智能合约节点1预执行智能合约后,返回签名的结果集。
类似的,结果集为智能合约节点1预执行智能合约过程中产生的读写集打包而成;并且结果集还签有智能合约节点1的签名。
4.数据存储节点1从结果集中提取查询结果并返回给用户。
数据存储节点1在接收到签名的结果集后,对结果集进行有效性校验,如果校验通过,从读写集中提取查询结果并返回给用户。如此一个完整的查询交易流程结束。
与上述图1不同的是,在交易类型为查询时,数据存储节点将交易发送给任意一个指定的智能合约节点,并且在接收到结果后也不需要进行共识。
以下结合图4所示示例,介绍智能合约节点1向数据存储节点1获取数据状态的流程图。
1.数据存储节点1通过衔接SDK向智能合约节点1发送交易。
其中,所述交易中携带有执行参数。所述执行参数具体可以包括合约参数和业务参数。
所述合约参数可以用于定位目标智能合约。所述合约参数可以包括合约标识、调用函数名、合约版本号、输入参数、交易ID、时间戳等信息。
2.智能合约节点1响应交易,执行所述交易对应的智能合约;在执行智能合约过程中,向数据存储节点1获取数据状态。
智能合约节点1基于所述合约参数中的合约标识、调用函数名等信息,可以确定调用函数接口方法。
所述业务参数可以用于定位执行合约逻辑所需的数据状态。
以下举例说明业务参数和数据状态的区别:
假设客户端发送的交易是,令a+1。则字段a和加1即为业务参数,而a当前的值即为数据状态。在实际运算a+1时,首先需要获取a的原始值(业务数据),然后在原始值基础上加1才能得到执行结果。
如图4所示,智能合约节点1在执行合约逻辑过程中,可以产生读写集(r/w set)。所述读写集可以包括合约标识、状态读取和状态写入。
这里的合约标识用于表示读写集对应的是哪个智能合约。这里的状态读取是指智能合约节点1通过衔接SDK访问数据存储节点1从而读取的数据状态。这里的状态写入是指根据读取到的数据状态计算出的变更后的数据状态。
通常,对于复杂的智能合约,存在多组状态读取和状态写入;即读写集可以智能合约执行过程中所有的状态读取和状态写入构成的数据集合。通过读写集可以真实反映智能合约的整个执行计算过程。
3.在智能合约节点1执行完智能合约后,可以将执行结果返回给数据存储节点1。
这里的执行结果可以为将合约参数、读写集打包而成的结果集,并且为所述结果集进行签名背书。
该实施例中,由于只是进行数据查询不需要修改数据状态,因此可以访问一个智能合约节点完成对应查询。
为了便于区别,后续将智能合约节点设备简称为第二节点设备,将数据存储节点设备简称为第一节点设备。
以下结合图5介绍本说明书以数据存储系统中的数据存储节点为执行主体的方法实施例,该实施例可以对应图2,并且如图1所示该区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约、不存储区块链的数据状态,所述数据存储系统存储区块链的数据状态、不存储区块链的智能合约。
步骤210:数据存储系统中的第一节点设备接收客户端发起的目标交易;
步骤220:将所述目标交易广播给所述合约管理系统中的第二节点设备。
步骤230:接收所述第二节点设备预执行所述目标交易对应的目标智能合约后返回的预执行结果。
步骤240:将所述预执行结果发送给所述数据存储系统中的其它节点设备进行共识。
在一实施例中,所述将所述目标交易广播给所述合约管理系统中的第二节点设备,具体包括:
将所述目标交易广播给所述合约管理系统中与所述第一节点设备关联的第二节点设备。
其中,所述第二节点设备可以为一个或者多个。
在一实施例中,所述数据存储系统中的第一节点设备可以预先与所述合约管理系统中的一个或多个第二节点设备建立对应关系。
在一实施例中,所述预执行结果为所述第二节点设备预执行目标智能合约过程中生成的读写集打包而成的结果集;并且所述结果集携带有第二节点设备的签名;所述方法还包括:
对所述携带有第二节点设备签名的结果集进行有效性校验;
所述将所述预执行结果发送给所述数据存储系统中的其它节点设备进行共识,具体包括:
在校验通过的情况下,将所述读写集发送给所述数据存储系统中的其它节点设备进行共识。
在一实施例中,所述共识主要是对读写集数据状态变化进行数据校验;如果该数据状态变化与本地存储的数据状态一致则说明校验通过。从而修改对应的数据状态,并设置交易为有效交易。
在一实施例中,在共识通过后,数据存储节点还可以向客户端返回提示信息。例如执行结果或者发生区块事件。
以下结合图6介绍本说明书以合约管理系统中的智能合约节点为执行主体的方法实施例,该实施例可以对应图2,并且如图1所示该区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态。
步骤310:合约管理系统中的第二节点设备接收数据存储系统中的第一节点设备广播的由客户端发起的目标交易;
步骤320:响应所述目标交易,预执行所述目标交易对应的目标智能合约;
步骤330:将所述预执行结果发送给所述第一节点设备,以使所述第一节点设备根据所述预执行结果进行共识。
在一实施例中,所述响应所述目标交易,预执行所述目标交易对应的目标智能合约,具体包括:
根据所述目标交易中携带的合约参数,获取所述合约参数对应的目标智能合约;
预执行所述目标智能合约的合约逻辑。
该实施例中,所述目标交易可以携带有用于定位执行该目标交易所需智能合约的合约参数。
其中,所述合约参数可以包括合约标识、调用函数名、合约版本号、输入参数、交易ID、时间戳等信息。
基于所述合约参数中的合约标识,从所述合约管理系统中获取该合约标识对应的智能合约地址;
根据所述调用函数名,确定该智能合约地址下的调用函数接口方法。
然而,一般的,一个智能合约可能对外提供有多个函数接口方法。每个函数接口方法都对应了一个具体业务逻辑,因此在根据合约标识确定了智能合约地址后,还需要根据调用函数名确定该智能合约地址下的调用函数接口方法。
在一实施例中,结合前述图4所示,如果预执行所述目标智能合约时需要输入交易相关的数据状态;由于区块链中的数据状态存储于数据存储系统中;因此,第二节点设备可以根据所述目标交易中携带的业务参数,向所述数据存储系统中的第一节点设备获取预执行所述目标交易所需的数据状态。具体地,第二节点设备可以通过衔接SDK向所述数据存储系统中的第一节点设备获取预执行所述目标交易所需的数据状态。
在实际应用中,有的交易可以不需要输入数据状态,对于这类交易可以不向数据存储系统获取数据状态。但对于一些复杂地交易,则需要用到数据状态;为此目标交易中需要提供这些数据状态对应的业务参数。
以下举例说明业务参数和数据状态的区别:
假设客户端发送的交易是,令a+1。则字段a和加1即为业务参数,而a当前的值即为数据状态。在实际运算a+1时,首先需要获取a的原始值(业务数据),然后在原始值基础上加1才能得到执行结果。
需要说明的是,执行智能合约的业务逻辑过程中还会产生读写集。所述读写集可以包括预执行智能合约时需要的输入数据(包括数据状态)和输入数据对应的输出数据。对于复杂的智能合约,输入数据和输出数据可以包含多组,即读写集是智能合约执行过程中所需的所有输入数据和对应的输出数据,构成的数据集合,可以真实反映智能合约的整个执行计算过程。
值得一提的是,第二节点设备将预执行所述目标智能合约后得到的执行结果发送给所述数据存储系统时,需要为执行结果添加本节点设备的签名;以对执行结果进行背书。
以下介绍智能合约部署、升级等过程进一步进行说明:
在一实施例中,在一个新的智能合约上链过程中,会分配一个唯一对应智能合约的合约标识,具体地:
合约管理系统接收智能合约的部署请求;其中,所述部署请求中携带有待部署的智能合约的源码;
为所述待部署的智能合约分配唯一对应该智能合约的合约标识;
将所述分配有合约标识的智能合约分发给所述合约管理系统中的所有第二节点设备,以使每个第二节点设备记录所述智能合约以及对应的合约标识。
其中,所述合约标识可以唯一指向存储智能合约的智能合约地址。通过合约标识,就可以定位到智能合约地址,进而可以获取该智能合约地址中存储的智能合约。
一般的,所述部署请求中还携带有该智能合约的版本号,以便于后续对智能合约进行升级。
值得一提的是,智能合约管理系统部署的智能合约源码是公用共享的,任何人都可以从任何智能合约节点下载获取任意的智能合约源的源码;并可以进一步的编辑后再次部署及升级。
在一实施例中,在对智能合约进行升级时,所述方法还包括:
合约管理系统接收智能合约的升级请求;其中,所述升级请求中携带有已部署的升级前智能合约的合约标识,以及待部署的升级后的智能合约、版本号;
将所述待部署的升级后的智能合约、版本号分发给所述合约管理系统中的所有第二节点设备,以使每个第二节点设备在所述合约标识对应的智能合约地址处,记录所述升级后的智能合约以及版本号。
值得一提的是,本说明书中升级前的智能合约依然有效,可以供外部业务方进行调用。虽然升级前后的智能合约具有相同的合约标识,但可以通过业务方输入的版本号来确定实际需要调用的是哪个版本的智能合约。
通过上述实施例,将区块链分为合约管理系统和数据存储系统,所述合约管理系统仅存储区块链的智能合约,所述数据存储系统仅存储区块链的数据状态。当数据存储系统中的数据存储节点接收到用户通过客户端发起的目标交易时,该数据存储节点可以将该目标交易广播到合约管理系统中的一个或多个智能合约节点;这些智能合约节点通过预执行目标交易对应的目标智能合约,并将预执行结果返回给数据存储节点;最后数据存储节点对各个智能合约节点返回的预执行结果进行数据校验以及后续共识。如此,合约管理系统只负责智能合约的部署、升级和执行即可,无需负责数据状态的存储维护(交由数据存储系统进行记录数据状态)。一方面,将交易过程中的合约执行和数据记录解耦,分为独立的两个部分;合约管理系统中的智能合约节点只负责合约的预执行,数据存储系统中的数据存储节点只负责数据状态记录;简化了每部分系统内部的执行逻辑、缩减合约运行周期。另一方面,由于合约管理系统中不存储数据状态,不同智能合约节点可以同时预执行相同的智能合约,提示了业务处理能力。再一方面,合约管理系统中的节点设备之间可以共享部署的智能合约。
与前述图所示基于区块链的智能合约执行方法实施例相对应,本说明书还提供了基于区块链的智能合约执行装置的实施例。所述装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机业务程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本说明书基于区块链的智能合约执行装置所在设备的一种硬件结构图,除了图7所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据基于区块链的智能合约执行实际功能,还可以包括其他硬件,对此不再赘述。
请参见图8,为本说明书一实施例提供的基于区块链的智能合约执行装置的模块图,所述装置对应了图5所示实施例,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态,所述装置包括:
接收单元410,合约管理系统中的第二节点设备接收数据存储系统中的第一节点设备广播的由客户端发起的目标交易;
执行单元420,响应所述目标交易,预执行所述目标交易对应的目标智能合约;
返回单元430,将所述预执行结果发送给所述第一节点设备,以使所述第一节点设备根据所述预执行结果进行共识。
可选的,所述执行单元420中预执行所述目标交易对应的目标智能合约,具体包括:
如果预执行所述目标智能合约需要所述目标交易的数据状态,根据所述目标交易中携带的业务参数,向所述数据存储系统中的第一节点设备获取所述目标交易的数据状态。
可选的,所述预执行结果为所述第二节点设备预执行目标智能合约过程中生成的读写集打包而成的结果集;并且所述结果集携带有所述第二节点设备的签名。
可选的,所述装置还包括:
合约部署单元,合约管理系统接收智能合约的部署请求;其中,所述部署请求中携带有待部署的智能合约的源码;为所述待部署的智能合约分配唯一对应该智能合约的合约标识;将所述分配有合约标识的智能合约分发给所述合约管理系统中的所有节点设备,以使每个节点设备记录所述智能合约以及对应的合约标识。
可选的,所述装置还包括:
合约升级单元,合约管理系统接收智能合约的升级请求;其中,所述升级请求中携带有已部署的升级前智能合约的合约标识,以及待部署的升级后的智能合约、版本号;将所述待部署的升级后的智能合约、版本号分发给所述合约管理系统中的所有节点设备,以使每个节点设备在所述合约标识对应的智能合约地址处,记录所述升级后的智能合约以及版本号。
请参见图9,为本说明书一实施例提供的基于区块链的智能合约执行装置的模块图,所述装置对应了图6所示实施例,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态,所述装置包括:
第一接收单元510,数据存储系统中的第一节点设备接收客户端发起的目标交易;
广播单元520,将所述目标交易广播给所述合约管理系统中的第二节点设备;
第二接收单元530,接收所述第二节点设备预执行所述目标交易对应的目标智能合约后返回的预执行结果;
共识单元540,将所述预执行结果发送给所述数据存储系统中的其它节点设备进行共识。
可选的,所述广播单元520,具体包括:
将所述目标交易广播给所述合约管理系统中与所述第一节点设备关联的第二节点设备。
可选的,所述预执行结果为所述第二节点设备预执行所述目标智能合约过程中生成的读写集打包而成的结果集;并且所述结果集携带有第二节点设备的签名;所述装置还包括:
校验子单元,对所述携带有第二节点设备签名的结果集进行有效性校验;
所述共识单元540,具体包括:
在校验通过的情况下,将所述读写集发送给所述数据存储系统中的其它节点设备进行共识。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上图8描述了基于区块链的智能合约执行装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
合约管理系统中的第二节点设备接收数据存储系统中的第一节点设备广播的由客户端发起的目标交易;
响应所述目标交易,预执行所述目标交易对应的目标智能合约;
将所述预执行结果发送给所述第一节点设备,以使所述第一节点设备根据所述预执行结果进行共识;
其中,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态。
以上图9描述了基于区块链的智能合约执行装置的内部功能模块和结构示意,其实质上的执行主体可以为一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
数据存储系统中的第一节点设备接收客户端发起的目标交易;
将所述目标交易广播给所述合约管理系统中的第二节点设备;
接收所述第二节点设备预执行所述目标交易对应的目标智能合约后返回的预执行结果;
将所述预执行结果发送给所述数据存储系统中的其它节点设备进行共识;
其中,所述区块链分为合约管理系统和数据存储系统,所述合约管理系统存储区块链的智能合约,所述数据存储系统存储区块链的数据状态。
在上述电子设备的实施例中,应理解,该处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,而前述的存储器可以是只读存储器(英文:read-only memory,缩写:ROM)、随机存取存储器(英文:random access memory,简称:RAM)、快闪存储器、硬盘或者固态硬盘。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。