一种基于区块链智能合约的数据处理方法及系统
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种基于区块链智能合约的数据处理方法及系统。
背景技术
目前,通过在基于以太坊协议搭建的区块链网络中部署智能合约,可以满足各种各样的线上业务需求。
在实践中,对于有的业务需求,区块链网络中的各节点在通过以太坊虚拟机调用该业务需求对应的智能合约执行交易时,需要进行可扩展标记语言(eXtensible MarkupLanguage,XML)数据处理操作。其中,XML是一种常见的数据交换格式,XML数据是具有这种数据交换格式的数据。
但是,现有的以太坊虚拟机并不支持对XML数据的处理操作。
发明内容
为了解决现有的以太坊虚拟机不默认支持XML处理操作的问题,本说明书实施例提供一种基于区块链智能合约的数据处理方法及系统,技术方案如下:
根据本说明书实施例的第1方面,提供一种基于区块链智能合约的数据处理方法,区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑;
智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含所述XML处理指令;
区块链网络中部署有所述业务智能合约;
所述数据处理方法包括:
所述区块链网络中的节点获得业务发起交易并广播给其他节点;
针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;
该节点通过区块链虚拟机,根据所述业务智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
根据本说明书实施例的第2方面,提供另一种基于区块链智能合约的数据处理方法,区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑;
智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含XML处理智能合约的合约标识,所述XML处理智能合约是预先部署于区块链网络中的智能合约;
区块链网络中部署有所述业务智能合约;
所述数据处理方法包括:
所述区块链网络中的节点获得业务发起交易并广播给其他节点;
针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;
该节点通过区块链虚拟机,根据所述业务智能合约中的所述XML处理智能合约的合约标识,调用所述XML处理智能合约;
该节点通过区块链虚拟机,根据所述XML处理智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
根据本说明书实施例的第3方面,提供一种区块链虚拟机,用于实现上述第1方面与第2方面的方法;
其中,智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含所述XML处理指令。
根据本说明书实施例的第4方面,提供一种智能合约编译器,用于实现上述第1方面的方法;
其中,智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含所述XML处理指令。
根据本说明书实施例的第5方面,提供一种智能合约编译器,用于实现上述第2方面的方法;
其中,智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含XML处理智能合约的合约标识,所述XML处理智能合约是预先部署于区块链网络中的智能合约。
根据本说明书实施例的第6方面,提供一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑;智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含所述XML处理指令;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
根据本说明书实施例的第7方面,提供另一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑;智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含XML处理智能合约的合约标识,所述XML处理智能合约是预先部署于区块链网络中的智能合约;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的所述XML处理智能合约的合约标识,调用所述XML处理智能合约;通过区块链虚拟机,根据所述XML处理智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
本说明书实施例所提供的技术方案,一方面,定义XML处理指令并添加到区块链虚拟机的指令集中,同时,在区块链虚拟机中部署对应于所述XML处理指令的XML处理逻辑。另一方面,还需要将定义的XML处理指令添加到智能合约编译器的指令集中,使得经智能合约编译器编译的业务智能合约中包含XML处理指令。
这样一来,倘若将所述业务智能合约部署到区块链网络中,那么,用户在构建业务发起交易时,就可以同时指定调用所述业务智能合约执行该业务发起交易,进而,虚拟机在执行该业务发起交易时,就会调用所述业务智能合约,并根据所述业务智能合约中的XML处理指令,触发执行预先部署的XML处理逻辑。
通过本说明书实施例,通过对区块链虚拟机与智能合约编译器的指令集进行扩展,使得区块链虚拟机可以默认支持XML处理操作。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种基于区块链智能合约的编码方法的流程示意图;
图2是本说明书实施例提供的另一种基于区块链智能合约的编码方法的流程示意图;
图3是本说明书实施例提供的一种基于区块链智能合约的解码方法的流程示意图;
图4是本说明书实施例提供的另一种基于区块链智能合约的解码方法的流程示意图;
图5a~b是本说明书实施例提供的BASE64编解码操作的部署示意图;
图6是本说明书实施例提供的一种基于区块链智能合约的签名验证方法的流程示意图;
图7是本说明书实施例提供的另一种基于区块链智能合约的签名验证方法的流程示意图;
图8a~b是本说明书实施例提供的RSA签名验证操作的部署示意图;
图9是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图;
图10是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图;
图11a~b是本说明书实施例提供的JSON处理操作的部署示意图;
图12是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图;
图13是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图;
图14a~b是本说明书实施例提供的处理操作的部署示意图;
图15是本说明书实施例提供的一种基于区块链智能合约的交易哈希获取方法的流程示意图;
图16是本说明书实施例提供的一种基于区块链智能合约的交易哈希获取方法的流程示意图;
图17a~b是本说明书实施例提供的交易哈希获取操作的部署示意图;
图18是本说明书实施例提供的一种基于区块链智能合约的转账方法的流程示意图;
图19是本说明书实施例提供的一种基于区块链智能合约的交易哈希获取方法的流程示意图;
图20a~b是本说明书实施例提供的转账交易的相关校验操作的部署示意图;
图21示出了本说明书实施例所提供的一种区块链系统的结构示意图;
图22是用于配置本说明书实施例方法的一种计算机设备的结构示意图。
具体实施方式
在本文中,区块链虚拟机,是指每个区块链节点在执行交易时所依赖的执行程序。区块链虚拟机为区块链交易提供了执行环境。
需要说明的是,区块链虚拟机不仅可以是以太坊协议中记载的以太坊虚拟机(Ethereum Virtual Machine,EVM),还可以是除以太坊协议之外的其他区块链协议中所指的虚拟机。
在本文中,智能合约编译器,是指用于将使用编程语言(如solidity语言)编写的智能合约,编译成区块链虚拟机可以识别并执行的机器语言(如字节码、二进制码等)的程序。需要说明的是,部署于区块链网络中的智能合约,一般是指经过智能合约编译器编译后的智能合约,即字节码形式或二进制码形式的智能合约。
在以太坊协议或其他类似于以太坊协议的区块链协议中,区块链虚拟机在本地维护了若干组指令与操作之间的映射关系(如下表1所示),并且,区块链虚拟机本地还部署有表1中的每个操作的代码逻辑。指令1~指令N都是区块链虚拟机所默认支持的指令,指令1~指令N组成了区块链虚拟机的指令集。区块链虚拟机在调用智能合约时,如果从智能合约中读取到表1中的任一指令,就会触发执行该指令对应的操作的代码逻辑。需要说明的是,本文所述的指令一般是字节码形式或二进制码形式的。
表1
因此,如果想让区块链虚拟机执行表1中的任一操作,就需要在区块链虚拟机所要调用智能合约中,预先写入该操作对应的指令。这意味着,智能合约编译器在预先对该智能合约进行编译时,能够将智能合约(使用编程语言编写的)中声明实现表1中任一操作的内容编译成对应的指令,以便区块链虚拟机可以识别。这就要求,智能合约编译器也需要默认支持表1中的指令1~指令N,指令1~指令N组成了智能合约编译器的指令集。
总之,在以太坊协议或其他类似于以太坊协议的区块链协议中,一般是由区块链虚拟机、智能合约编译器以及智能合约协同实现特定的业务需求。
但是,现有的以太坊虚拟机在本地默认支持的操作是有限的,而业务需求是复杂多样的。例如,现有的以太坊虚拟机与以太坊的智能合约编译器并不默认支持如下操作,导致在现有的以太坊架构中,无法实现一些依赖于如下操作的业务需求:
1、基于64个可打印字符(BASE64)的编解码操作。
2、RSA签名验证操作;其中,RSA算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman),RSA算法也因此得名。
3、对JS对象简谱(JavaScript Object Notation,JSON)数据的处理操作;其中,JSON是一种常见的数据交换格式,JSON数据是具有这种数据交换格式的数据。
4、对可扩展标记语言(eXtensible Markup Language,XML)数据的处理操作;其中,XML是一种常见的数据交换格式,XML数据是具有这种数据交换格式的数据。
5、获取当前执行的交易的交易哈希的操作。
6、对于一笔转账交易,在不暴露转账人的资产余额与转账金额的前提下,判断转账人的资产余额是否足够支付这笔转账交易的转账金额。
由于现有的以太坊虚拟机与以太坊的智能合约编译器不默认支持上述操作的问题,因此,在现有技术中,针对上述任一种操作,一般采用将实现该操作的代码逻辑直接写入智能合约的方式,使得以太坊虚拟机在执行交易时,调用智能合约来执行该操作的代码逻辑。也就是说,以太坊虚拟机虽然不默认支持上述操作,但是将上述操作的代码逻辑写入智能合约,并让以太坊虚拟机调用该智能合约,也可以实现以太坊虚拟机执行上述操作的目的。
但是,实践中,相比于以太坊虚拟机直接执行本地预先部署的代码逻辑,以太坊虚拟机执行智能合约中的代码逻辑的效率较低。
而本发明的核心思想在于,一方面,对区块链虚拟机的指令集进行扩展,增加上述操作对应的指令,同时在区块链虚拟机本地预先部署上述操作对应的代码逻辑,使得区块链虚拟机可以默认支持上述操作。另一方面,对智能合约编译器的指令集也进行扩展,增加上述操作对应的指令。其中,针对同一操作,为区块链虚拟机的指令集增加的对应于该操作的指令与为智能合约编译器的指令集增加的对应于该操作的指令应当一致。如表2所示。
指令1 |
操作1 |
指令2 |
操作2 |
指令3 |
操作3 |
BASE64编码指令 |
BASE64编码操作 |
…… |
…… |
指令N |
操作N |
表2
如此,以上述的BASE64编码操作为例,可以在使用编程语言编写智能合约时,在智能合约中声明调用BASE64编码操作,智能合约编译器在对智能合约进行编译时,将这段声明编译成BASE64编码指令。该智能合约被部署到区块链网络中之后,用户在发起业务时,可以在业务发起交易中指定调用该智能合约,这样,区块链虚拟机在执行业务发起交易时,就会调用该智能合约,并当从该智能合约中读取到BASE64编码指令,触发在本地执行相应的BASE64编码逻辑,以实现BASE64编码操作。
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。需要说明的是,由于以下的各实施例所基于的技术思想都是类似的,因此,下文的各实施例可互相参照理解。
实施例一
图1是本说明书实施例提供的一种基于区块链智能合约的编码方法的流程示意图,包括以下步骤:
S100:区块链网络中的节点获得业务发起交易并广播给其他节点。
S102:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S104:该节点通过区块链虚拟机,根据所述业务智能合约中的BASE64编码指令,触发执行所述BASE64编码逻辑,以对待编码数据进行编码操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括BASE64编码指令,并且,区块链虚拟机中部署有对应于所述BASE64编码指令的BASE64编码逻辑。
2)智能合约编译器的指令集中包括所述BASE64编码指令,经所述智能合约编译器编译的业务智能合约中包含所述BASE64编码指令。
3)区块链网络中部署有所述业务智能合约。
所述业务智能合约是需要调用BASE64编码功能的业务所对应的智能合约。
在本说明的各实施例中,区块链网络包括多个节点。其中,从软件层面上看,节点是指用于实现区块链功能的区块链程序;从硬件层面上看,节点是指安装有区块链程序的用户设备。在实际应用中,每个节点可以对接至少一个客户端(或称钱包),区块链中的交易通常是客户端构建的。
在本说明的各实施例中所描述的交易(transaction),是指用户通过区块链的客户端创建,并需要最终发布至区块链的分布式数据库中的一笔数据。交易是区块链协议中所约定的一种数据结构,一笔数据要存入区块链,就需要被封装成交易。
区块链中的交易,存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
在区块链网络中,用户通常以交易的形式发起业务。具体地,节点需要获得业务发起交易如果上述的业务智能合约不是区块链网络中部署的唯一的智能合约,业务发起交易中还会注明所述业务智能合约的合约标识,以明确交易执行时所需要调用的智能合约。
其中,业务发起交易通常是用户通过客户端构建并发送给节点的。一般而言,区块链网络对接的客户端与各用户一一对应。
节点在将业务发起交易广播给其他节点之后,针对每个节点,该节点在接收到所述业务发起交易之后,需要通过区块链虚拟机调用所述业务智能合约来执行该业务发起交易。此处需要说明的是,在区块链网络中,每个节点上都部署有区块链虚拟机,节点执行交易时,实际上是节点上部署的区块链虚拟机在执行交易。
在实施例一中,区块链虚拟机调用所述业务智能合约之后,会读取所述业务智能合约中的字节码或二进制码并执行,当读取到所述业务智能合约中的BASE64编码指令时,相当于明确了此时需要进行BASE64编码操作,因此,区块链虚拟机此时会触发执行预先部署于本地的BASE64编码逻辑,以对待编码数据进行编码操作。
在实际应用中,视具体的业务需求的不同,待编码数据可以是包含于所述业务发起交易中的,也可以包含于所述业务智能合约中的,还可以是区块链虚拟机在执行所述业务发起交易时产生的。
此外,各节点除了通过区块链虚拟机执行业务发起交易之外,还需要基于共识机制,将所述业务发起交易写入区块链。
另外需要说明的是,区块链虚拟机如果根据所述业务智能合约中的BASE64编码指令触发执行BASE64编码逻辑,那么,在执行过程中所采用的数据传递方式通常是栈传递(即一般会将BASE64编码后的数据写入栈中),但是,对于经过BASE64编码后的数据而言,其数据长度是不固定的,如果采用栈传递的方式,就要求针对各种可能当数据长度都预先设置相应的BASE64编码指令,实现起来较为复杂。
为此,以下的实施例二提供了另一种基于区块链智能合约的编码方法。
实施例二
图2是本说明书实施例提供的另一种基于区块链智能合约的编码方法的流程示意图,包括以下步骤:
S200:区块链网络中的节点获得业务发起交易并广播给其他节点。
S202:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S204:该节点通过区块链虚拟机,根据所述业务智能合约中的所述BASE64编码智能合约的合约标识,调用所述BASE64编码智能合约。
S206:该节点通过区块链虚拟机,根据所述BASE64编码智能合约中的,BASE64编码指令,触发执行所述BASE64编码逻辑,以对待编码数据进行编码操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括BASE64编码指令,并且,区块链虚拟机中部署有对应于所述BASE64编码指令的BASE64编码逻辑。
2)智能合约编译器的指令集中包括所述BASE64编码指令,经所述智能合约编译器编译的业务智能合约中包含BASE64编码智能合约的合约标识,所述BASE64编码智能合约是预先部署于所述区块链网络中的智能合约。
3)区块链网络中部署有所述业务智能合约。
实施例二与实施例一的区别主要在于,在实施例二中,区块链虚拟机调用所述业务智能合约之后,当读取到所述BASE64编码智能合约的合约标识时,相当于明确了此时需要进一步调用所述BASE64编码智能合约。区块链虚拟机调用所述BASE64编码智能合约,也会读取所述BASE64编码智能合约中的字节码或二进制码,当读取到所述BASE64编码指令时,相当于明确了此时需要执行BASE64编码操作,因此,区块链虚拟机此时会触发执行预先部署于本地的BASE64编码逻辑,以对待编码数据进行编码操作。
也就是说,在实施例二中,智能合约编译器在编译业务智能合约时,如果发现业务智能合约中声明调用BASE64编码操作,则不会将这段声明编译BASE64编码指令,而是编译成所述BASE64编码智能合约的合约标识。这样,区块链虚拟机在调用业务智能合约时,会进一步调用所述BASE64编码智能合约。
在区块链技术领域,所述BASE64编码智能合约实际上是一种预编译合约,区块链虚拟机在调用并执行如BASE64编码智能合约这样的预编译合约时,并不会采用栈传递的方式进行参数传递,而是会采用内存传递的方式进行参数传递(支持不固定长度的数据读写)。
实施例三
图3是本说明书实施例提供的一种基于区块链智能合约的编码方法的流程示意图,包括以下步骤:
S300:区块链网络中的节点获得业务发起交易并广播给其他节点。
S302:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S304:该节点通过区块链虚拟机,根据所述业务智能合约中的BASE64解码指令,触发执行所述BASE64解码逻辑,以对待解码数据进行解码操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括BASE64解码指令,并且,区块链虚拟机中部署有对应于所述BASE64解码指令的BASE64解码逻辑。
2)智能合约编译器的指令集中包括所述BASE64解码指令,经所述智能合约编译器编译的业务智能合约中包含所述BASE64解码指令。
3)区块链网络中部署有所述业务智能合约。
由于BASE64解码操作与BASE64编码操作是相对应的一组操作,因此,相关说明参见实施例一即可,不再赘述。
需要说明的是,在实际应用中,视具体的业务需求的不同,待解码数据可以是包含于所述业务发起交易中的,也可以包含于所述业务智能合约中的,还可以是区块链虚拟机在执行所述业务发起交易时产生的。
此外,在实施例三中,也存在前文所述的栈传递实现复杂的问题,为此,以下的实施例四提供了另一种基于区块链智能合约的解码方法。
实施例四
图4是本说明书实施例提供的另一种基于区块链智能合约的解码方法的流程示意图,包括以下步骤:
S200:区块链网络中的节点获得业务发起交易并广播给其他节点。
S202:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S204:该节点通过区块链虚拟机,根据所述业务智能合约中的所述BASE64解码智能合约的合约标识,调用所述BASE64解码智能合约。
S206:该节点通过区块链虚拟机,根据所述BASE64解码智能合约中的,BASE64解码指令,触发执行所述BASE64解码逻辑,以对待解码数据进行解码操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括BASE64解码指令,并且,区块链虚拟机中部署有对应于所述BASE64解码指令的BASE64解码逻辑。
2)智能合约编译器的指令集中包括所述BASE64解码指令,经所述智能合约编译器编译的业务智能合约中包含BASE64解码智能合约的合约标识,所述BASE64解码智能合约是预先部署于所述区块链网络中的智能合约。
3)区块链网络中部署有所述业务智能合约。
实施例四与实施例三的区别主要在于,在实施例四中,区块链虚拟机调用所述业务智能合约之后,当读取到所述BASE64解码智能合约的合约标识时,相当于明确了此时需要进一步调用所述BASE64解码智能合约。区块链虚拟机调用所述BASE64解码智能合约,也会读取所述BASE64解码智能合约中的字节码或二进制码,当读取到所述BASE64解码指令时,相当于明确了此时需要执行BASE64解码操作,因此,区块链虚拟机此时会触发执行预先部署于本地的BASE64解码逻辑,以对待解码数据进行解码操作。
图5a是本说明书实施例提供的对应于实施例一与实施例三的BASE64编解码操作的部署示意图。如图5a所示,其一,为区块链虚拟机的指令集添加BASE64编码指令和/或BASE64解码指令,同时,在区块链虚拟机中部署BASE64编码逻辑和/或BASE64解码逻辑。其二,为智能合约编译器的指令集添加BASE64编码指令和/或BASE64解码指令。其三,将经过智能合约编译器编译的业务智能合约(包含BASE64编码指令和/或BASE64解码指令)部署于区块链网络中。
需要说明的是,在为智能合约编译器增加功能指令(包括本文中所述的各种指令)时,一般需要相应为智能合约编译器增加该功能指令对应的处理逻辑,(如参数/返回值处理逻辑),以便智能合约编译器将该功能指令对应的处理逻辑也写入业务智能合约。
对于实施例二与实施例四,图5b是本说明书实施例提供的对应于实施例二与实施例四的BASE64编解码操作的部署示意图。如图5b所示,其一,为区块链虚拟机的指令集添加BASE64编码指令和/或BASE64解码指令,同时,在区块链虚拟机中部署BASE64编码逻辑和/或BASE64解码逻辑。其二,为智能合约编译器的指令集添加BASE64编码指令和/或BASE64解码指令。其三,将经过智能合约编译器编译的业务智能合约(包含BASE64编码智能合约的合约标识与BASE64解码智能合约的合约标识)部署于区块链网络中。
实施例五
图6是本说明书实施例提供的一种基于区块链智能合约的签名验证方法的流程示意图,包括如下步骤:
S600:区块链网络中的节点获得业务发起交易并广播给其他节点。
S602:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S604:该节点通过区块链虚拟机,根据所述业务智能合约中的RSA签名验证指令,触发执行所述RSA签名验证逻辑,以对业务签名进行RSA签名验证操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括RSA签名验证指令,并且,区块链虚拟机中部署有对应于所述RSA签名验证指令的RSA签名验证逻辑。
2)智能合约编译器的指令集中包括所述RSA签名验证指令,经所述智能合约编译器编译的业务智能合约中包含所述RSA签名验证指令。
3)区块链网络中部署有所述业务智能合约。
所述业务智能合约是需要调用RSA签名验证功能的业务所对应的智能合约。
在实施例一中,区块链虚拟机调用所述业务智能合约之后,会读取所述业务智能合约中的字节码或二进制码并执行,当读取到所述业务智能合约中的RSA签名验证指令时,相当于明确了此时需要进行RSA签名验证操作,因此,区块链虚拟机此时会触发执行预先部署于本地的RSA签名验证逻辑,以对业务签名进行签名验证操作。
在实际应用中,视具体的业务需求的不同,存在以下几种情况:
1)所述业务发起交易包含所述业务签名、所述业务签名对应的被签名数据以及用于验证所述业务签名的公钥。
2)所述业务发起交易包含所述业务签名、所述业务签名对应的被签名数据的摘要以及用于验证所述业务签名的公钥。
3)所述业务发起交易包含所述业务签名、所述业务签名对应的被签名数据,所述业务智能合约包含用于验证所述业务签名的公钥。
4)所述业务发起交易包含所述业务签名、所述业务签名对应的被签名数据的摘要,所述业务智能合约包含用于验证所述业务签名的公钥。
需要说明的是,区块链虚拟机如果根据所述业务智能合约中的RSA签名验证指令触发执行RSA签名验证逻辑,那么,在执行过程中所采用的数据传递方式通常是栈传递。
此外,区块链虚拟机也可以使用内存传递的方式执行RSA签名验证逻辑(预编译合约的方式),即以下的实施例六。
实施例六
图7是本说明书实施例提供的一种基于区块链智能合约的签名验证方法的流程示意图,包括如下步骤:
S700:区块链网络中的节点获得业务发起交易并广播给其他节点。
S702:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S704:该节点通过区块链虚拟机,根据所述业务智能合约中的所述RSA签名验证智能合约的合约标识,调用所述RSA签名验证智能合约。
S706:该节点通过区块链虚拟机,根据所述RSA签名验证智能合约中的RSA签名验证指令,触发执行所述RSA签名验证逻辑,以对业务签名进行RSA签名验证操作,以对业务签名进行RSA签名验证操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括RSA签名验证指令,并且,区块链虚拟机中部署有对应于所述RSA签名验证指令的RSA签名验证逻辑。
2)智能合约编译器的指令集中包括所述RSA签名验证指令,经所述智能合约编译器编译的业务智能合约中包含RSA签名验证智能合约的合约标识,所述RSA签名验证智能合约是预先部署于所述区块链网络中的智能合约。
3)区块链网络中部署有所述业务智能合约。
实施例六与实施例五的区别主要在于,在实施例六中,区块链虚拟机调用所述业务智能合约之后,当读取到所述RSA签名验证智能合约的合约标识时,相当于明确了此时需要进一步调用所述RSA签名验证智能合约。区块链虚拟机调用所述RSA签名验证智能合约,也会读取所述RSA签名验证智能合约中的字节码或二进制码,当读取到所述RSA签名验证指令时,相当于明确了此时需要执行RSA签名验证操作,因此,区块链虚拟机此时会触发执行预先部署于本地的RSA签名验证逻辑,以对业务签名进行RSA签名验证操作。
也就是说,在实施例六中,智能合约编译器在编译业务智能合约时,如果发现业务智能合约中声明调用RSA签名验证操作,则不会将这段声明编译为RSA签名验证指令,而是编译成所述RSA签名验证智能合约的合约标识。这样,区块链虚拟机在调用业务智能合约时,会进一步调用所述RSA签名验证智能合约。
图8a是本说明书实施例提供的对应于实施例五的RSA签名验证操作的部署示意图。如图8a所示,其一,为区块链虚拟机的指令集添加RSA签名验证指令,同时,在区块链虚拟机中部署RSA签名验证逻辑。其二,为智能合约编译器的指令集添加RSA签名验证指令。其三,将经过智能合约编译器编译的业务智能合约(包含RSA签名验证指令)部署于区块链网络中。
图8b是本说明书实施例提供的对应于实施例六的RSA签名验证操作的部署示意图。如图8b所示,其一,为区块链虚拟机的指令集添加RSA签名验证指令,同时,在区块链虚拟机中部署RSA签名验证逻辑。其二,为智能合约编译器的指令集添加RSA签名验证指令。其三,将经过智能合约编译器编译的业务智能合约(包含RSA签名验证智能合约的合约标识)部署于区块链网络中。
实施例七
图9是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图,包括如下步骤:
S900:区块链网络中的节点获得业务发起交易并广播给其他节点。
S902:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S904:该节点通过区块链虚拟机,根据所述业务智能合约中的JSON处理指令,触发执行所述JSON处理逻辑,以对待处理数据进行JSON处理操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括JSON处理指令,并且,区块链虚拟机中部署有对应于所述JSON处理指令的JSON处理逻辑。
2)智能合约编译器的指令集中包括所述JSON处理指令,经所述智能合约编译器编译的业务智能合约中包含所述JSON处理指令。
3)区块链网络中部署有所述业务智能合约。
所述业务智能合约是需要调用JSON处理功能的业务所对应的智能合约。JSON处理具体包括JSON数据解析与JSON数据生成。
在实施例七中,区块链虚拟机调用所述业务智能合约之后,会读取所述业务智能合约中的字节码或二进制码并执行,当读取到所述业务智能合约中的JSON处理指令时,相当于明确了此时需要进行JSON处理操作,因此,区块链虚拟机此时会触发执行预先部署于本地的JSON处理逻辑,以对待处理数据进行JSON处理操作。
在实际应用中,视具体的业务需求的不同,所述待处理数据可以包含于所述业务发起交易中,也可以包含于所述业务智能合约中,还可以是区块链虚拟机执行所述业务发起交易时产生的。
另外需要说明的是,区块链虚拟机如果根据所述业务智能合约中的JSON处理指令触发执行JSON处理逻辑,那么,在执行过程中所采用的数据传递方式通常是栈传递(即一般会将JSON处理出的数据写入栈中),但是,对于JSON处理出的数据而言,其数据长度是不固定的,采用栈传递的方式往往会导致实现较为复杂。
为此,以下的实施例八提供了另一种基于区块链智能合约的数据处理方法(预编译合约的方式)。
实施例八
图10是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图,包括如下步骤:
S1000:区块链网络中的节点获得业务发起交易并广播给其他节点。
S1002:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S1004:该节点通过区块链虚拟机,根据所述业务智能合约中的所述JSON处理智能合约的合约标识,调用所述JSON处理智能合约。
S1006:该节点通过区块链虚拟机,根据所述JSON处理智能合约中的JSON处理指令,触发执行所述JSON处理逻辑,以对待处理数据进行JSON处理操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括JSON处理指令,并且,区块链虚拟机中部署有对应于所述JSON处理指令的JSON处理逻辑。
2)智能合约编译器的指令集中包括所述JSON处理指令,经所述智能合约编译器编译的业务智能合约中包含JSON处理智能合约的合约标识,所述JSON处理智能合约是预先部署于所述区块链网络中的智能合约。
3)区块链网络中部署有所述业务智能合约。
实施例八与实施例七的区别主要在于,在实施例八中,区块链虚拟机调用所述业务智能合约之后,当读取到所述JSON处理智能合约的合约标识时,相当于明确了此时需要进一步调用所述JSON处理智能合约。区块链虚拟机调用所述JSON处理智能合约,也会读取所述JSON处理智能合约中的字节码或二进制码,当读取到所述JSON处理指令时,相当于明确了此时需要执行JSON处理操作,因此,区块链虚拟机此时会触发执行预先部署于本地的JSON处理逻辑,以对待处理数据进行JSON处理操作。
也就是说,在实施例八中,智能合约编译器在编译业务智能合约时,如果发现业务智能合约中声明调用JSON处理操作,则不会将这段声明编译为JSON处理指令,而是编译成所述JSON处理智能合约的合约标识。这样,区块链虚拟机在调用业务智能合约时,会进一步调用所述JSON处理智能合约。
图11a是本说明书实施例提供的对应于实施例七的JSON处理操作的部署示意图。如图11a所示,其一,为区块链虚拟机的指令集添加JSON处理指令,同时,在区块链虚拟机中部署JSON处理逻辑。其二,为智能合约编译器的指令集添加JSON处理指令。其三,将经过智能合约编译器编译的业务智能合约(包含JSON处理指令)部署于区块链网络中。
图11b是本说明书实施例提供的对应于实施例八的JSON处理操作的部署示意图。如图11b所示,其一,为区块链虚拟机的指令集添加JSON处理指令,同时,在区块链虚拟机中部署JSON处理逻辑。其二,为智能合约编译器的指令集添加JSON处理指令。其三,将经过智能合约编译器编译的业务智能合约(包含JSON处理智能合约的合约标识)部署于区块链网络中。
实施例九
图12是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图,包括如下步骤:
S1200:区块链网络中的节点获得业务发起交易并广播给其他节点。
S1202:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S1204:该节点通过区块链虚拟机,根据所述业务智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑。
2)智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含所述XML处理指令。
3)区块链网络中部署有所述业务智能合约。
所述业务智能合约是需要调用XML处理功能的业务所对应的智能合约。所述XML处理具体包括XML数据解析与XML数据生成。
在实施例九中,区块链虚拟机调用所述业务智能合约之后,会读取所述业务智能合约中的字节码或二进制码并执行,当读取到所述业务智能合约中的XML处理指令时,相当于明确了此时需要进行XML处理操作,因此,区块链虚拟机此时会触发执行预先部署于本地的XML处理逻辑,以对待处理数据进行XML处理操作。
在实际应用中,视具体的业务需求的不同,所述待处理数据可以包含于所述业务发起交易中,也可以包含于所述业务智能合约中,还可以是区块链虚拟机执行所述业务发起交易时产生的。
另外需要说明的是,区块链虚拟机如果根据所述业务智能合约中的XML处理指令触发执行XML处理逻辑,那么,在执行过程中所采用的数据传递方式通常是栈传递(即一般会将XML处理出的数据写入栈中),但是,对于XML处理出的数据而言,其数据长度是不固定的,采用栈传递的方式往往会导致实现较为复杂。
为此,以下的实施例十提供了另一种基于区块链智能合约的数据处理方法(预编译合约的方式)。
实施例十
图13是本说明书实施例提供的一种基于区块链智能合约的数据处理方法的流程示意图,包括如下步骤:
S1300:区块链网络中的节点获得业务发起交易并广播给其他节点。
S1302:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S1304:该节点通过区块链虚拟机,根据所述业务智能合约中的所述XML处理智能合约的合约标识,调用所述XML处理智能合约。
S1306:该节点通过区块链虚拟机,根据所述XML处理智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑。
2)智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含XML处理智能合约的合约标识,所述XML处理智能合约是预先部署于所述区块链网络中的智能合约。
3)区块链网络中部署有所述业务智能合约。
实施例十与实施例九的区别主要在于,在实施例十中,区块链虚拟机调用所述业务智能合约之后,当读取到所述XML处理智能合约的合约标识时,相当于明确了此时需要进一步调用所述XML处理智能合约。区块链虚拟机调用所述XML处理智能合约,也会读取所述XML处理智能合约中的字节码或二进制码,当读取到所述XML处理指令时,相当于明确了此时需要执行XML处理操作,因此,区块链虚拟机此时会触发执行预先部署于本地的XML处理逻辑,以对待处理数据进行XML处理操作。
也就是说,在实施例十中,智能合约编译器在编译业务智能合约时,如果发现业务智能合约中声明调用XML处理操作,则不会将这段声明编译为XML处理指令,而是编译成所述XML处理智能合约的合约标识。这样,区块链虚拟机在调用业务智能合约时,会进一步调用所述XML处理智能合约。
图14a是本说明书实施例提供的对应于实施例九的XML处理操作的部署示意图。如图14a所示,其一,为区块链虚拟机的指令集添加XML处理指令,同时,在区块链虚拟机中部署XML处理逻辑。其二,为智能合约编译器的指令集添加XML处理指令。其三,将经过智能合约编译器编译的业务智能合约(包含XML处理指令)部署于区块链网络中。
图14b是本说明书实施例提供的对应于实施例十的XML处理操作的部署示意图。如图14b所示,其一,为区块链虚拟机的指令集添加XML处理指令,同时,在区块链虚拟机中部署XML处理逻辑。其二,为智能合约编译器的指令集添加XML处理指令。其三,将经过智能合约编译器编译的业务智能合约(包含XML处理智能合约的合约标识)部署于区块链网络中。
实施例十一
图15是本说明书实施例提供的一种基于区块链智能合约的交易哈希获取方法的流程示意图,包括如下步骤:
S1500:区块链网络中的节点获得业务发起交易并广播给其他节点。
S1502:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S1504:该节点通过区块链虚拟机,根据所述业务智能合约中的交易哈希获取指令,触发执行所述交易哈希获取逻辑,以获取所述业务发起交易的交易哈希。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括交易哈希获取指令,并且,区块链虚拟机中部署有对应于所述交易哈希获取指令的交易哈希获取逻辑。
2)智能合约编译器的指令集中包括所述交易哈希获取指令,经所述智能合约编译器编译的业务智能合约中包含所述交易哈希获取指令。
3)区块链网络中部署有所述业务智能合约。
所述业务智能合约是需要调用交易哈希获取功能的业务所对应的智能合约。
在实施例十一中,区块链虚拟机调用所述业务智能合约之后,会读取所述业务智能合约中的字节码或二进制码并执行,当读取到所述业务智能合约中的交易哈希获取指令时,相当于明确了此时需要进行交易哈希获取操作,因此,区块链虚拟机此时会触发执行预先部署于本地的交易哈希获取逻辑,以对待处理数据进行交易哈希获取操作。
在实际应用中,针对所述区块链网络中的每个节点,该节点在调用所述业务智能合约之前,初始化区块链虚拟机的上下文,并将所述业务发起交易的交易哈希写入所述上下文中。
如此,在步骤S1504中,具体地,该节点通过区块链虚拟机,根据所述业务智能合约中的交易哈希获取指令,触发执行所述交易哈希获取逻辑,以从所述上下文中获取所述业务发起交易的交易哈希。
另外需要说明的是,区块链虚拟机如果根据所述业务智能合约中的交易哈希获取指令触发执行交易哈希获取逻辑,那么,在执行过程中所采用的数据传递方式通常是栈传递。以下的实施例十二提供了另一种基于区块链智能合约的交易哈希获取方法(预编译合约的方式)。
实施例十二
图16是本说明书实施例提供的一种基于区块链智能合约的交易哈希获取方法的流程示意图,包括如下步骤:
S1600:区块链网络中的节点获得业务发起交易并广播给其他节点。
S1602:针对所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约。
S1604:该节点通过区块链虚拟机,根据所述业务智能合约中的所述交易哈希获取智能合约的合约标识,调用所述交易哈希获取智能合约。
S1606:该节点通过区块链虚拟机,根据所述交易哈希获取智能合约中的交易哈希获取指令,触发执行所述交易哈希获取逻辑,以获取所述业务发起交易的交易哈希。
在本实施例中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括交易哈希获取指令,并且,区块链虚拟机中部署有对应于所述交易哈希获取指令的交易哈希获取逻辑。
2)智能合约编译器的指令集中包括所述交易哈希获取指令,经所述智能合约编译器编译的业务智能合约中包含交易哈希获取智能合约的合约标识,所述交易哈希获取智能合约是预先部署于所述区块链网络中的智能合约。
3)区块链网络中部署所述业务智能合约。
实施例十二与实施例十一的区别主要在于,在实施例十二中,区块链虚拟机调用所述业务智能合约之后,当读取到所述交易哈希获取智能合约的合约标识时,相当于明确了此时需要进一步调用所述交易哈希获取智能合约。区块链虚拟机调用所述交易哈希获取智能合约,也会读取所述交易哈希获取智能合约中的字节码或二进制码,当读取到所述交易哈希获取指令时,相当于明确了此时需要执行交易哈希获取操作,因此,区块链虚拟机此时会触发执行预先部署于本地的交易哈希获取逻辑,以获取所述业务发起交易的交易哈希。
也就是说,在实施例十二中,智能合约编译器在编译业务智能合约时,如果发现业务智能合约中声明调用交易哈希获取操作,则不会将这段声明编译为交易哈希获取指令,而是编译成所述交易哈希获取智能合约的合约标识。这样,区块链虚拟机在调用业务智能合约时,会进一步调用所述交易哈希获取智能合约。
在实际应用中,针对所述区块链网络中的每个节点,该节点在调用所述业务智能合约之前,初始化区块链虚拟机的上下文,并将所述业务发起交易的交易哈希写入所述上下文中。
如此,在步骤S1606中,具体地,该节点通过区块链虚拟机,根据所述交易哈希获取智能合约中的交易哈希获取指令,触发执行所述交易哈希获取逻辑,以从所述上下文中获取所述业务发起交易的交易哈希。
图17a是本说明书实施例提供的对应于实施例十一的交易哈希获取操作的部署示意图。如图17a所示,其一,为区块链虚拟机的指令集添加交易哈希获取指令,同时,在区块链虚拟机中部署交易哈希获取逻辑。其二,为智能合约编译器的指令集添加交易哈希获取指令。其三,将经过智能合约编译器编译的业务智能合约(包含交易哈希获取指令)部署于区块链网络中。
图17b是本说明书实施例提供的对应于实施例十二的交易哈希获取操作的部署示意图。如图17b所示,其一,为区块链虚拟机的指令集添加交易哈希获取指令,同时,在区块链虚拟机中部署交易哈希获取逻辑。其二,为智能合约编译器的指令集添加交易哈希获取指令。其三,将经过智能合约编译器编译的业务智能合约(包含交易哈希获取智能合约的合约标识)部署于区块链网络中。
实施例十三
图18是本说明书实施例提供的一种基于区块链智能合约的转账方法的流程示意图,包括如下步骤:
S1800:区块链网络中的节点通过转账外部账户获得转账交易并广播给其他节点。
即节点接收客户端(登录了转账外部账户)构建并发送的转账交易。
S1802:针对所述区块链网络中的每个节点,该节点在执行所述转账交易时,通过区块链虚拟机,调用所述业务智能合约并根据所述业务智能合约中的出入校验指令,触发执行所述出入校验逻辑。
S1804:若校验结果为是,则该节点通过区块链虚拟机,执行所述业务智能合约中的用户资产表修改逻辑。
在以太坊架构中,各外部账户与各用户一一对应,两个用户之间的转账行为实际上就是两个外部账户之间的转账行为。
假设外部账户A想要向外部账户B转账,那么,外部账户A首先会构建包含转账金额与外部账户B的账户地址的转账交易,随后,该转账交易会被广播给区块链网络中的各节点。各节点对转账交易进行验证通过后,执行转账交易,将转账金额写入外部账户B。
需要说明的是,各节点对转账交易的验证事项一般包括验证外部账户A的余额是否充足,即外部账户A的余额是否大于或等于转账金额,若是,则验证通过。这意味着,在现有的以太坊架构中,如果要进行转账,那么转账人的账户余额以及转账金额都会暴露给区块链网络中的各节点。
在实施例十三中,实际上给出了一种业务需求,即针对区块链网络中的节点之间的一笔转账交易,在不暴露转账用户的资产余额以及转账金额的前提下,判断转账用户的资产余额是否足够支付转账金额。
为了满足这种业务需求,本发明采用了一种新的转账模型,不再使用区块链网络中的外部账户中的余额进行转账和收账,而是创建业务智能合约,在业务智能合约中重新搭建一个用户的资产体系。在这个资产体系中,不再有资产余额概念,每个用户拥有的资产相当于是一种虚拟物,用户花出一个资产,这个资产就会消失。
具体地,在区块链网络中部署所述业务智能合约,所述业务智能合约对应有用户资产表,所述用户资产表用于记录每个外部账户(与每个用户一一对应)对应的资产,针对任一资产,该资产为包含加密金额的数据,该加密金额是对该资产的金额进行加密后得到的。
下表3示列性地给出了所述用户资产表。
外部账户1 |
资产1、资产2 |
外部账户2 |
资产3、资产4、资产5 |
外部账户3 |
资产6 |
表3
例如,外部账户1向外部账户2转账120元,假设资产1的金额为100元,资产2的金额为50元,那么外部账户1需要花销掉自己的资产1与资产2,随后,资产1与资产2消失,产生了资产7(金额为120元)与资产8(金额为30元),外部账户1得到资产8,外部账户2得到资产7。可见,资产1+资产2实际上是这笔转账的输入,资产7+资产8实际上是这笔转账的输出。经过这笔转账后,表3会更新为如下所示的表4。
外部账户1 |
资产8 |
外部账户2 |
资产3、资产4、资产5、资产7 |
外部账户3 |
资产6 |
表3
如此,在本发明中,针对一笔转账交易,将验证余额的问题转化成了验证输入输出是否平衡的问题。由于每个资产的金额实际上是加密的,因为不会暴露给区块链虚拟机,这意味着,要求区块链虚拟机在执行转账交易时,采用同态加密算法(如PedersenCommitment算法),校验输入的资产与输出的资产是否相等,如果校验结果为是,就意味着这笔转账交易是可行的(相当于说明了转账人的余额充足)。
对于具体地实施方式,在本实施例十三中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括出入校验指令,并且,区块链虚拟机中部署有对应于所述交易哈希获取指令的出入校验逻辑。
其中,所述出入校验逻辑包括:针对任一转账交易,采用同态加密算法,校验该转账交易指定的转账资产的金额与该转账交易指定的找零资产的金额之和,是否等于该转账交易指定的各花销资产的金额之和。
还需要说明的是,所述转账交易实际上就是前文所述的业务发起交易,只不过此处的业务具体为加密转账业务。
2)智能合约编译器的指令集中包括所述出入校验指令,经所述智能合约编译器编译的业务智能合约中包含所述出入校验指令。
3)区块链网络中部署有所述业务智能合约。
所述业务智能合约是用于实现隐藏转账金额和资产余额的转账功能的智能合约。
在步骤S1800中,节点实际上是指转账用户对应的节点。转账外部账户实际上是指转账用户所控制的外部账户。
节点通过转账外部账户获得转账交易,实际上是转账用户登录客户端(或称“钱包”),构建转账交易并发送给节点。
所述转账交易中包括转账资产、找零资产和至少一个花销资产。其中,所述至少一个花销资产实际上就是输入到这笔转账的资产,转账资产与找零资产实际上就是这笔转账输出的资产。
在实施例十三中,区块链虚拟机调用所述业务智能合约之后,会读取所述业务智能合约中的字节码或二进制码并执行,当读取到所述业务智能合约中的出入校验指令时,相当于明确了此时需要进行出入校验操作,因此,区块链虚拟机此时会触发执行预先部署于本地的出入校验逻辑,以便采用同态加密算法,校验所述转账资产的金额与所述找零资产的金额之和是否等于各花销资产的金额之和。
如果校验结果为是,则说明这笔转账交易是可行的。进而,区块链虚拟机需要执行这笔转账交易,即根据转账交易修改用户资产表。修改用户资产表的用户资产表修改逻辑实际上是预先写入到业务智能合约中的。用户资产表修改逻辑为,解除所述转账外部账户与各花销资产的对应关系,建立所述转账外部账户与所述找零资产的对应关系,并建立收账外部账户与所述转账资产的对应关系。
此外,在实际应用中,为了防止出现如下情况:某些恶意用户在发起转账交易时,将转账交易中包含的转账资产的实际金额设置为负数,以转账的方式偷取他人的资产;以及,用户在发起转账交易操作失误,将转账交易中包含的找零资产的实际金额设置为负数,导致用户实际转出的资产的金额大于转账资产的金额,可以采用零知识证明的方法,在转账资产的实际金额与找零资产的实际金额都不可见的情况下,校验转账资产的实际金额与找零资产的实际金额是否皆落入指定数值范围,如(0,264]。如果校验结果为是,就排除了以上情况发生的可能性。
具体地,在实施例十三中,可以进一步针对区块链网络进行预先配置,使得:
4)区块链虚拟机的指令集中还包括金额校验指令,并且,区块链虚拟机中还部署有对应于所述金额校验指令的金额校验逻辑。
5)所述智能合约编译器的指令集中还包括所述金额校验指令,经所述智能合约编译器编译的业务智能合约中还包含所述金额校验指令。
基于此,用户发起的转账交易中还需要包括用于实现零知识证明的证明相关数据(如Bullet Proof、Borromean环签名等)。
区块链虚拟机在读取到所述业务智能合约中的金额校验指令时,会触发执行本地预先部署的金额校验逻辑,即根据所述证明相关数据,校验所述转账资产的金额与所述找零资产的金额是否皆落入指定数值范围。
另外,在实施例十三中,业务智能合约中还可以包含花销资产校验逻辑,使得区块链虚拟机在执行业务智能合约时,还可以根据所述用户资产表,校验所述转账外部账户对应的资产中是否包括各花销资产。如果校验结果为是,说明转账用户所要使用的花销资产是自己拥有的资产。
此外,针对任一资产,该资产的数据结构还可以包括表征该资产已花销或未花销的第一状态参数。业务智能合约中还可以包括第一状态参数相关逻辑,以便区块链虚拟机在执行业务智能合约时,针对转账交易中的每个花销资产,该花销资产包括的第一状态参数,校验该花销资产是否未花销。并且,所述第一状态参数相关逻辑还包括:如果最终针对所述转账交易的全部校验的结果皆为是,那么,对该花销资产包括的第一状态参数进行修改,使得修改后的该第一状态参数表征该花销资产已花销。如果最终针对所述转账交易的全部校验的结果中有任一结果为否,则转账交易会失败,各花销资产并没有被花销出去,自然没必要对第一状态参数进行修改。
还有,针对任一资产,该资产的数据结构还可以包括表征该资产存在或不存在的第二状态参数。业务智能合约中还可以包括第二状态参数相关逻辑,以便区块链虚拟机在执行业务智能合约时,针对所述转账交易中的每个花销资产,根据该花销资产包括的第二状态参数,校验该花销资产是否存在。这样,可以有效防止恶意用户虚构并不存在的资产并使用虚构的资产来进行转账。
另外需要说明的是,区块链虚拟机如果根据所述业务智能合约中的出入校验指令与金额校验指令触发执行出入校验逻辑与金额校验逻辑,那么,在执行过程中所采用的数据传递方式通常是栈传递。以下的实施例十四提供了另一种基于区块链智能合约的转账方法(预编译合约的方式)。
实施例十四
图19是本说明书实施例提供的一种基于区块链智能合约的交易哈希获取方法的流程示意图,包括如下步骤:
S1900:区块链网络中的节点通过转账外部账户获得转账交易并广播给其他节点。
S1902:针对所述区块链网络中的每个节点,该节点在执行所述转账交易时,通过区块链虚拟机,调用所述业务智能合约,并根据所述业务智能合约中的所述出入校验智能合约的合约标识,调用所述出入校验智能合约。
S1904:该节点根据所述出入校验智能合约中的出入校验指令,触发执行所述出入校验逻辑。
S1906:若校验结果为是,则该节点通过区块链虚拟机,执行所述业务智能合约中的用户资产表修改逻辑。
在实施例十四中,需要针对区块链网络进行预先配置,使得:
1)区块链虚拟机的指令集中包括交易哈希获取指令,并且,区块链虚拟机中部署有对应于所述交易哈希获取指令的交易哈希获取逻辑。
2)智能合约编译器的指令集中包括所述出入校验指令,经所述智能合约编译器编译的业务智能合约中包含出入校验智能合约的合约标识,所述出入校验智能合约是预先部署于所述区块链网络中的智能合约。
3)区块链网络中部署有所述业务智能合约。
实施例十四与实施例十三的区别主要在于,在实施例十二中,区块链虚拟机调用所述业务智能合约之后,当读取到所述出入校验智能合约的合约标识时,相当于明确了此时需要进一步调用所述出入校验智能合约。区块链虚拟机调用所述出入校验智能合约,也会读取所述出入校验智能合约中的字节码或二进制码,当读取到所述出入校验指令时,相当于明确了此时需要执行出入校验操作,因此,区块链虚拟机此时会触发执行预先部署于本地的出入校验逻辑。
也就是说,在实施例十二中,智能合约编译器在编译业务智能合约时,如果发现业务智能合约中声明调用出入校验操作,则不会将这段声明编译为出入校验指令,而是编译成所述所述出入校验智能合约的合约标识。这样,区块链虚拟机在调用业务智能合约时,会进一步调用所述出入校验智能合约。
进一步地,在实施例十四中,需要针对区块链网络进行预先配置,使得:
4)区块链虚拟机的指令集中还包括金额校验指令,并且,区块链虚拟机中还部署有对应于所述金额校验指令的金额校验逻辑。
5)所述智能合约编译器的指令集中还包括所述金额校验指令,经所述智能合约编译器编译的业务智能合约中还包含所述金额校验智能合约的合约标识,所述金额校验智能合约是预先部署于所述区块链网络中的智能合约。
如此,在实施例十四中,针对所述区块链网络中的每个节点,该节点通过区块链虚拟机,根据所述业务智能合约中的所述金额校验智能合约的合约标识,调用所述金额校验智能合约;该节点根据所述金额校验智能合约中的金额校验指令,触发执行所述金额校验逻辑,以便根据所述证明相关数据,校验所述转账资产的金额与所述找零资产的金额是否皆落入指定数值范围。
此外需要说明的是,在实施例十四中,执行的校验事项与实施例十三中的一致,只不过,对于出入校验与金额校验,是通过调用预编译合约(即出入校验智能合约与金额校验智能合约)的方式进行的。
在实施例十三与实施例十四中,针对转账交易进行的校验事项有多个时,当全部校验结果都为是时,区块链虚拟机才会执行用户资产表修改逻辑。
图20a是本说明书实施例提供的对应于实施例十三的转账交易的相关校验操作的部署示意图。如图20a所示,其一,为区块链虚拟机的指令集添加出入校验指令与金额校验指令,同时,在区块链虚拟机中部署出入校验逻辑与金额校验逻辑。其二,为智能合约编译器的指令集添加出入校验指令与金额校验指令。其三,将经过智能合约编译器编译的业务智能合约(包含出入校验指令与金额校验指令)部署于区块链网络中。
图20b是本说明书实施例提供的对应于实施例十四的转账交易的相关校验操作的部署示意图。如图20b所示,其一,为区块链虚拟机的指令集添加出入校验指令与金额校验指令,同时,在区块链虚拟机中部署出入校验逻辑与金额校验逻辑。其二,为智能合约编译器的指令集添加出入校验指令与金额校验指令。其三,将经过智能合约编译器编译的业务智能合约(包含出入校验智能合约的合约标识与金额校验智能合约的合约标识)部署于区块链网络中。
以上,是分别对实施例一~实施例十四的解释说明。实际上,在实际应用中,业务发起交易具体可以是转账交易,而为了实现转账交易,可能不仅需要进行相关校验(如实施例十三中提及的各项校验),还需要进行BASE54编码操作、BASE54解码操作、RSA签名验证操作、JSON处理操作、XML处理操作、交易哈希获取操作中的一种或多种。
也就是说,可以将上述的BASE64编码方法、BASE64解码方法、RSA签名验证方法、JSON处理方法、XML处理方法以及交易哈希获取方法中的一种或多种应用于实施例十三或实施例十四中的转账方法中,此时,前文所述业务发起交易就是转账交易。
此外需要说明的是,在本说明书的各实施例中,如果业务智能合约不是所述区块链网络中唯一的智能合约,那么,业务发起交易(以及转账交易)中还需要包含业务智能合约的合约标识,以便区块链虚拟机根据所述业务发起交易(以及转账交易)中包括的合约标识,调用对应的业务智能合约。
还有,对于本说明书中的各实施例,所述区块链虚拟机的指令集中还包括至少一个以太坊指令,以太坊指令是以太坊虚拟机的指令集中的指令;针对所述区块链虚拟机的指令集中包括的每个以太坊指令,所述区块链虚拟机中部署有对应于该以太坊指令的相关逻辑。所述智能合约编译器的指令集中还包括至少一个以太坊指令,以太坊指令是以太坊虚拟机的指令集中的指令。也就是说,本发明中的区块链虚拟机可以是在以太坊虚拟机的基础上扩展得到的,本发明中的智能合约编译器可以是在以太坊的智能合约编译器的基础上扩展得到的。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括出入校验指令,并且,区块链虚拟机中部署有对应于所述出入校验指令的出入校验逻辑;智能合约编译器的指令集中包括所述出入校验指令,经所述智能合约编译器编译的业务智能合约中包含所述出入校验指令;区块链网络中部署有所述业务智能合约,所述业务智能合约对应有用户资产表,所述用户资产表用于记录每个外部账户对应的资产,针对任一资产,该资产为包含加密金额的数据,该加密金额是对该资产的金额进行加密后得到的;
所述区块链网络中的节点,通过转账外部账户获得转账交易并广播给其他节点;所述转账交易包括转账资产、找零资产和至少一个花销资产;
所述区块链网络中的每个节点,在执行所述转账交易时,通过区块链虚拟机,调用所述业务智能合约并根据所述业务智能合约中的出入校验指令,触发执行所述出入校验逻辑,以便采用同态加密算法,校验所述转账资产的金额与所述找零资产的金额之和是否等于各花销资产的金额之和;若校验结果为是,则通过区块链虚拟机,执行所述业务智能合约中的用户资产表修改逻辑,以便解除所述转账外部账户与各花销资产的对应关系,建立所述转账外部账户与所述找零资产的对应关系,并建立收账外部账户与所述转账资产的对应关系。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括出入校验指令,并且,区块链虚拟机中部署有对应于所述出入校验指令的出入校验逻辑;智能合约编译器的指令集中包括所述出入校验指令,经所述智能合约编译器编译的业务智能合约中包含出入校验智能合约的合约标识,所述出入校验智能合约是预先部署于所述区块链网络中的智能合约;区块链网络中部署有所述业务智能合约,所述业务智能合约对应有用户资产表,所述用户资产表用于记录每个外部账户对应的资产,针对任一资产,该资产为包含加密金额的数据,该加密金额是对该资产的金额进行加密后得到的;
所述区块链网络中的节点,通过转账外部账户获得转账交易并广播给其他节点;所述转账交易包括转账资产、找零资产和至少一个花销资产;
所述区块链网络中的每个节点,在执行所述转账交易时,通过区块链虚拟机,调用所述业务智能合约,并根据所述业务智能合约中的所述出入校验智能合约的合约标识,调用所述出入校验智能合约;根据所述出入校验智能合约中的出入校验指令,触发执行所述出入校验逻辑,以便采用同态加密算法,校验所述转账资产的金额与所述找零资产的金额之和是否等于各花销资产的金额之和;若校验结果为是,则通过区块链虚拟机,执行所述业务智能合约中的用户资产表修改逻辑,以便解除所述转账外部账户与各花销资产的对应关系,建立所述转账外部账户与所述找零资产的对应关系,并建立收账外部账户与所述转账资产的对应关系。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括BASE64编码指令,并且,区块链虚拟机中部署有对应于所述BASE64编码指令的BASE64编码逻辑;智能合约编译器的指令集中包括所述BASE64编码指令,经所述智能合约编译器编译的业务智能合约中包含所述BASE64编码指令;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的BASE64编码指令,触发执行所述BASE64编码逻辑,以对待编码数据进行编码操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括BASE64编码指令,并且,区块链虚拟机中部署有对应于所述BASE64编码指令的BASE64编码逻辑;智能合约编译器的指令集中包括所述BASE64编码指令,经所述智能合约编译器编译的业务智能合约中包含BASE64编码智能合约的合约标识,所述BASE64编码智能合约是预先部署于所述区块链网络中的智能合约;所述区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的所述BASE64编码智能合约的合约标识,调用所述BASE64编码智能合约;通过区块链虚拟机,根据所述BASE64编码智能合约中的,BASE64编码指令,触发执行所述BASE64编码逻辑,以对待编码数据进行编码操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括BASE64解码指令,并且,区块链虚拟机中部署有对应于所述BASE64解码指令的BASE64解码逻辑;智能合约编译器的指令集中包括所述BASE64解码指令,经所述智能合约编译器编译的业务智能合约中包含所述BASE64解码指令;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的BASE64解码指令,触发执行所述BASE64解码逻辑,以对待解码数据进行解码操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括BASE64解码指令,并且,区块链虚拟机中部署有对应于所述BASE64解码指令的BASE64解码逻辑;智能合约编译器的指令集中包括所述BASE64解码指令,经所述智能合约编译器编译的业务智能合约中包含BASE64解码智能合约的合约标识,所述BASE64解码智能合约是预先部署于所述区块链网络中的智能合约;所述区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,该节点在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的所述BASE64解码智能合约的合约标识,调用所述BASE64解码智能合约;通过区块链虚拟机,根据所述BASE64解码智能合约中的,BASE64解码指令,触发执行所述BASE64解码逻辑,以对待解码数据进行解码操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括RSA签名验证指令,并且,区块链虚拟机中部署有对应于所述RSA签名验证指令的RSA签名验证逻辑;智能合约编译器的指令集中包括所述RSA签名验证指令,经所述智能合约编译器编译的业务智能合约中包含所述RSA签名验证指令;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的RSA签名验证指令,触发执行所述RSA签名验证逻辑,以对业务签名进行RSA签名验证操作,以对业务签名进行RSA签名验证操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括RSA签名验证指令,并且,区块链虚拟机中部署有对应于所述RSA签名验证指令的RSA签名验证逻辑;智能合约编译器的指令集中包括所述RSA签名验证指令,经所述智能合约编译器编译的业务智能合约中包含所述RSA签名验证智能合约的合约标识,所述RSA签名验证智能合约是预先部署于所述区块链网络中的智能合约;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的所述RSA签名验证智能合约的合约标识,调用所述RSA签名验证智能合约;通过区块链虚拟机,根据所述RSA签名验证智能合约中的RSA签名验证指令,触发执行所述RSA签名验证逻辑,以对业务签名进行RSA签名验证操作,以对业务签名进行RSA签名验证操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括JSON处理指令,并且,区块链虚拟机中部署有对应于所述JSON处理指令的JSON处理逻辑;智能合约编译器的指令集中包括所述JSON处理指令,经所述智能合约编译器编译的业务智能合约中包含所述JSON处理指令;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的JSON处理指令,触发执行所述JSON处理逻辑,以对待处理数据进行JSON处理操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括JSON处理指令,并且,区块链虚拟机中部署有对应于所述JSON处理指令的JSON处理逻辑;智能合约编译器的指令集中包括所述JSON处理指令,经所述智能合约编译器编译的业务智能合约中包含JSON处理智能合约的合约标识,所述JSON处理智能合约是预先部署于所述区块链网络中的智能合约;区块链网络中部署有所述JSON处理智能合约与所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的所述JSON处理智能合约的合约标识,调用所述JSON处理智能合约;通过区块链虚拟机,根据所述JSON处理智能合约中的JSON处理指令,触发执行所述JSON处理逻辑,以对待处理数据进行JSON处理操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑;智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含所述XML处理指令;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括XML处理指令,并且,区块链虚拟机中部署有对应于所述XML处理指令的XML处理逻辑;智能合约编译器的指令集中包括所述XML处理指令,经所述智能合约编译器编译的业务智能合约中包含XML处理智能合约的合约标识,所述XML处理智能合约是预先部署于所述区块链网络中的智能合约;区块链网络中部署有所述XML处理智能合约与所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的所述XML处理智能合约的合约标识,调用所述XML处理智能合约;通过区块链虚拟机,根据所述XML处理智能合约中的XML处理指令,触发执行所述XML处理逻辑,以对待处理数据进行XML处理操作。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括交易哈希获取指令,并且,区块链虚拟机中部署有对应于所述交易哈希获取指令的交易哈希获取逻辑;智能合约编译器的指令集中包括所述交易哈希获取指令,经所述智能合约编译器编译的业务智能合约中包含所述交易哈希获取指令;区块链网络中部署有所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的交易哈希获取指令,触发执行所述交易哈希获取逻辑,以获取所述业务发起交易的交易哈希。
本说明书提供的一种区块链系统,包括区块链网络;
其中,区块链虚拟机的指令集中包括交易哈希获取指令,并且,区块链虚拟机中部署有对应于所述交易哈希获取指令的交易哈希获取逻辑;智能合约编译器的指令集中包括所述交易哈希获取指令,经所述智能合约编译器编译的业务智能合约中包含交易哈希获取智能合约的合约标识,所述交易哈希获取智能合约是预先部署于所述区块链网络中的智能合约;区块链网络中部署有所述交易哈希获取智能合约与所述业务智能合约;
所述区块链网络中的节点,获得业务发起交易并广播给其他节点;
所述区块链网络中的每个节点,在执行所述业务发起交易时,通过区块链虚拟机,调用所述业务智能合约;通过区块链虚拟机,根据所述业务智能合约中的所述交易哈希获取智能合约的合约标识,调用所述交易哈希获取智能合约;通过区块链虚拟机,根据所述交易哈希获取智能合约中的交易哈希获取指令,触发执行所述交易哈希获取逻辑,以获取所述业务发起交易的交易哈希。
图21示出了本说明书实施例所提供的一种区块链系统的结构示意图。
本说明书还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现本文各实施例的方法以及各实施例中至少两个实施例组合后的方法的功能。
图22示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器2210、存储器2220、输入/输出接口2230、通信接口2240和总线2250。其中处理器2210、存储器2220、输入/输出接口2230和通信接口2240通过总线2250实现彼此之间在设备内部的通信连接。
处理器2210可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器2220可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器2220可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器2220中,并由处理器2210来调用执行。
输入/输出接口2230用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口2240用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线2250包括一通路,在设备的各个组件(例如处理器2210存储器2220、输入/输出接口2230和通信接口2240)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器2210、存储器2220、输入/输出接口2230、通信接口2240以及总线2250,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本文各实施例的方法以及各实施例中至少两个实施例组合后的方法的功能。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。