具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
上述相关技术中的一个交易冲突场景示例可以如下。
交易数据中通常包含机构账户的Nonce值。Nonce值可以为用于防止区块链发生重复攻击的随机数或伪随机数。一个Nonce值仅能够被一个交易数据所使用。不同交易数据中包含的Nonce值是不同的。例如,Nonce值在不同的交易数据中可以是单调递增的。
机构A可以包括区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4;可以包括区块链节点BCnode-A1和BCnode-A2。机构A在区块链中的机构账户可以为AccountA。机构账户AccountA当前的Nonce值可以为100。
区块链客户端BCclient-X1可以按照区块链中交易数据的格式,构建Nonce值为101的交易数据TX1。区块链客户端BCclient-X1可以向区块链节点BCnode-A1发送交易数据TX1。同一机构的多个区块链客户端是分别独立向该机构的区块链节点发送交易数据的,因此在区块链客户端构建交易数据TX1的同时,区块链客户端BCclient-X2有可能按照区块链中交易数据的格式,构建Nonce值为101的交易数据TX2。区块链客户端BCclient-X2可以向区块链节点BCnode-A2发送交易数据TX2。由于交易数据TX1和交易数据TX2中包含的Nonce值相同,会在后续过程中导致区块链对Nonce值的校验失败,从而造成交易冲突。具体地,例如,当区块链先处理交易数据TX1,后处理交易数据TX2时,会导致交易数据TX2处理失败。或者,当区块链先处理交易数据TX2,后处理交易数据TX1时,会导致交易数据TX1处理失败。
请参阅图1。本说明书实施例提供一种数据处理系统。
在一些实施例中,所述数据处理系统可以包括区块链网络。所述区块链网络例如可以为P2P网络(peer-to-peer network)等。基于所述区块链网络可以建立区块链。所述区块链可以是一种按照时间先后顺序,将多个数据区块以链式结构进行组织,并以密码学算法保证安全、可追溯、且不可篡改的分布式账本。所述区块链例如可以为公有区块链、联合区块链(也称为联盟区块链)或私有区块链等。
所述区块链网络可以包括多个区块链节点。所述多个区块链节点共同维护了所述分布式账本。所述多个区块链节点可以隶属于多个机构。每个机构可以包括所述区块链网络中的一个或多个区块链节点。例如,机构A可以包括所述区块链网络中的区块链节点BCnode-A1和BCnode-A2,机构B可以包括所述区块链网络中的区块链节点BCnode-B1和BCnode-B2。
在一些实施例中,所述数据处理系统还可以包括所述多个机构的区块链客户端。具体地,每个机构可以包括一个或多个区块链客户端,所述一个或多个区块链客户端可以共用该机构在所述区块链中的机构账户。每个机构的每个区块链客户端可以与该机构的一个或多个区块链节点进行通信。延续前例,机构A可以包括区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4。区块链客户端BCclient-X1可以同时与区块链节点BCnode-A1和区块链节点BCnode-A2进行通信。区块链客户端BCclient-X2和BCclient-X3可以分别与区块链节点BCnode-A2进行通信。区块链客户端BCclient-X4可以同时与区块链节点BCnode-A1和区块链节点BCnode-A2进行通信。这里的区块链客户端例如可以为业务服务器、手机、平板电脑、或个人电脑等设备;或者也可以是由多台设备组成的系统,例如由多个业务服务器组成的服务器集群。
在一个场景示例中,出于容灾等因素的考虑,每个机构可以部署一个或多个机房,每个机房可以包括该机构的一个或多个区块链客户端。延续前例,机构A可以部署有北京机房和上海机房,北京机房可以包括区块链客户端BCclient-X1和BCclient-X2,上海机房可以包括区块链客户端BCclient-X3和BCclient-X4。
基于所述数据处理系统,下面介绍本说明书数据处理方法的一个实施例。请参阅图2,该实施例可以包括以下步骤。
步骤S11:区块链客户端向区块链节点发送令牌获取请求。
在一些实施例中,所述区块链客户端和所述区块链节点可以隶属于同一机构。所述区块链客户端在提交交易数据之前,可以向所述区块链节点发送令牌获取请求。所述令牌获取请求中可以包括机构标识、客户端标识和区块高度(为了便于描述,以下称为第一区块高度)中的至少一个。所述机构标识可以用于标识所述区块链客户端隶属的机构。所述客户端标识可以用于标识所述区块链客户端。所述第一区块高度可以用于表示所述区块链客户端申请的数据区块在区块链中的位置。
所述区块链客户端可以获取区块链的区块高度(为了便于描述,以下称为第二区块高度);可以根据所述第二区块高度确定所述第一区块高度。在一个场景示例中,所述区块链客户端可以查询所述第一区块高度。例如,所述区块链客户端可以向所述区块链节点发送区块高度查询请求。所述区块链节点可以接收所述区块高度查询请求;可以获取所述第一区块高度;可以向所述区块链客户端反馈所述第一区块高度。在另一个场景示例中,所述区块链节点可以向所述区块链客户端主动推送所述第一区块高度。例如,所述区块链节点可以预先设置区块高度推送事件。在区块链有新的数据区块上链时,便可以触发所述区块高度推送事件。所述区块链节点在监测到所述区块高度推送事件被触发时;可以获取所述第一区块高度;可以向所述区块链客户端推送所述第一区块高度。值得注意的是,鉴于上链时刻较晚的数据区块,其区块高度较大;上链时刻较早的数据区块,其区块高度较小。因而所述第二区块通常小于所述第一区块高度。所述区块链客户端具体可以采用任意方式来确定所述第一区块高度。例如,所述区块链客户端可以计算所述第二区块高度与N的和,作为所述第一区块高度。N为大于0的自然数,例如可以为1、或2等。
在一些实施例中,所述区块链客户端可以与一个区块链节点进行通信。如此所述区块链客户端可以直接向该区块链节点发送令牌获取请求。或者,所述区块链客户端可以与多个区块链节点进行通信。如此所述区块链客户端可以从所述多个区块链节点中选取区块链节点;可以向选取的区块链节点发送令牌获取请求。所述区块链客户端具体可以采用任意方式来选取区块链节点。例如,所述区块链客户端可以随机选取一个区块链节点。
步骤S13:区块链节点接收所述令牌获取请求,调用部署在区块链中的令牌分配合约,生成提交令牌。
在一些实施例中,所述区块链中可以部署有令牌分配合约。所述令牌分配合约可以是原生的智能合约;或者,还可以是自定义的智能合约。自定义的智能合约可以是业务人员通过代码构建的智能合约。例如,机构的业务人员可以使用计算机高级语言编写令牌分配合约。该机构的区块链节点可以对所述令牌分配合约进行编译得到字节码;可以根据所述字节码生成构建令牌分配合约的交易;可以向区块链提交所述构建令牌分配合约的交易,从而实现将所述令牌分配合约部署到区块链上。
所述令牌分配合约可以为一段可执行的程序代码,用于协调提交令牌在同一机构的多个区块链客户端中的分配。在一个场景示例中,所述令牌分配合约中提交令牌的分配方式可以为轮转方式。例如,机构A可以包括区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4。基于所述令牌分配合约可以实现:将提交令牌在区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4中依次轮转分配。在另一个场景示例中,所述令牌分配合约中提交令牌的分配方式可以为随机方式。例如,机构A可以包括区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4。基于所述令牌分配合约可以实现:从区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4中随机选取区块链客户端,将提交令牌分配给选取的区块链客户端。当然,以上的分配方式仅为举例,在实际中任意能够实现提交令牌分配的方式均可以作为所述令牌分配合约中提交令牌的分配方式。值得注意的是,所述令牌分配合约是以机构为维度实现提交令牌的分配的。接入区块链的每个机构均可以通过所述令牌分配合约,实现提交令牌在该机构的区块链客户端中的分配。
所述令牌分配合约的输入可以包括机构标识、客户端标识和第一区块高度中的至少一个。在一个场景示例中,所述令牌分配合约的输入可以包括机构标识、客户端标识和第一区块高度。所述令牌分配合约可以表示为Allocate(InstitutionID,ClientID,BlockHeight),InstitutionID表示机构标识,ClientID表示客户端标识,BlockHeight表示第一区块高度。在另一个场景示例中,所述令牌分配合约的输入可以包括机构标识和客户端标识。所述令牌分配合约可以表示为Allocate(InstitutionID,ClientID)。在另一个场景示例中,所述令牌分配合约的输入可以包括机构标识。所述令牌分配合约可以表示为Allocate(InstitutionID)。
所述令牌分配合约的输出可以包括提交令牌。获得所述提交令牌的区块链客户端可以具有向区块链节点发送交易数据的权限,从而具有了向区块链的特定数据区块提交交易数据的权限。所述特定数据区块例如可以为所述第一区块高度对应的数据区块。值的注意的是,这里区块链客户端向数据区块提交交易数据,可以理解为:区块链客户端向区块链节点发送交易数据,区块链节点向区块链提交交易数据,从而实现区块链客户端向区块链的数据区块提交交易数据。通过所述令牌分配合约,可以避免同一机构的多个区块链客户端同时获得提交令牌,从而能够避免同一机构的多个区块链客户端并发向区块链节点发送交易数据,避免了交易冲突的问题。
进一步地,所述提交令牌中还可以包含所述第一区块高度。
在一些实施例中,如前所述,所述令牌分配合约的输入可以包括机构标识、客户端标识和第一区块高度中的至少一个。如此所述区块链节点可以将所述机构标识、所述客户端标识和所述第一区块高度中的至少一个作为输入参数,调用所述令牌分配合约,生成提交令牌。
所述区块链节点可以基于所述令牌分配合约的地址,调用所述令牌分配合约。具体地,所述区块链节点可以基于所述令牌分配合约的地址,获得所述令牌分配合约;可以在本地执行所述令牌分配合约,从而实现对所述令牌分配合约的调用。所述令牌分配合约可以是原生的智能合约。如此所述区块链节点在接入所述区块链网络时,便可以获得所述令牌分配合约的地址。或者,所述令牌分配合约还可以是自定义的智能合约。这里为了便于描述,可以将调用所述令牌分配合约的区块链节点称为第一区块链节点;可以将部署所述令牌分配合约的区块链节点称为第二区块链节点。如此所述第二区块链节点可以采用任意方式向所述第一区块链节点发送所述令牌分配合约的地址。例如,所述第二区块链节点和所述第一区块链节点之间可以建立链下通道。基于建立的链下通道,所述第二区块链节点可以向所述第一区块链节点发送所述令牌分配合约的地址。
在一些实施例中,区块链节点调用部署在区块链中的令牌分配合约,还可以获得提交令牌生成失败的信息;可以向所述区块链客户端反馈提交令牌生成失败的信息。所述区块链客户端可以接收提交令牌生成失败的信息;可以放弃向区块链节点发送交易数据。
步骤S15:区块链节点向区块链客户端发送所述提交令牌。
在一些实施例中,通过步骤S13,所述区块链节点可以获得提交令牌。如此所述区块链节点可以向所述区块链客户端发送所述提交令牌。
步骤S17:区块链客户端接收所述提交令牌,向区块链节点发送交易数据。
在一些实施例中,所述区块链客户端可以接收所述提交令牌;可以按照区块链中交易数据的格式,构建一个或多个交易数据;可以向区块链节点发送所述一个或多个交易数据。所述交易数据可以包括狭义的交易数据和广义的交易数据。狭义的交易数据包括能够实现价值转移的交易数据,例如转账交易的交易数据。广义的交易数据包括能够实现业务意图的业务数据,例如租房、存证、车辆调度、保险理赔等业务的业务数据。在一个场景示例中,所述区块链客户端可以根据上游设备发来的交易相关信息,按照区块链中交易数据的格式,构建一个或多个交易数据。例如,所述区块链客户端可以为机构的业务服务器,所述业务服务器的上游设备可以包括用户终端。那么,所述业务服务器可以根据用户终端发来的交易相关信息,按照区块链中交易数据的格式,构建一个或多个交易数据。
进一步地,所述区块链客户端还可以基于所述提交令牌,构建一个或多个交易数据。构建的交易数据中可以包含所述提交令牌。这样在后续过程中便于共识区块链节点对所述一个或多个交易数据中令牌的合法性进行验证。例如,所述提交令牌中可以包含所述第一区块高度。如此针对每个交易数据,所述共识区块链节点可以获取该交易数据的提交令牌中所包含的第一区块高度;可以从区块链的状态数据中获得所述区块链客户端申请的第一区块高度;可以将二者进行比对,从而实现对该交易数据中提交令牌的合法性进行验证。
进一步地,所述区块链客户端还可以基于机构账户当前的Nonce值,构建一个或多个交易数据。所述机构账户可以为所述区块链客户端隶属的机构在所述区块链中的账户。Nonce值可以为用于防止区块链发生重复攻击的随机数或伪随机数。一个Nonce值仅能够被一个交易数据所使用。不同交易数据中包含的Nonce值是不同的。例如,Nonce值在不同的交易数据中可以是单调递增的。具体地,所述区块链客户端可以获取所述机构账户当前的Nonce值;可以根据获取的Nonce值,构建一个或多个交易数据。例如,机构账户当前的Nonce值可以为100。所述区块链客户端可以分别构建Nonce值为101的交易数据、Nonce值为102的交易数据、Nonce值为103的交易数据等3个交易数据。在一个场景示例中,所述区块链客户端可以查询所述机构账户当前的Nonce值。例如,所述区块链客户端可以向所述区块链节点发送Nonce值查询请求。所述区块链节点可以接收所述Nonce值查询请求;可以获取所述机构账户当前的Nonce值;可以向所述区块链客户端反馈获取的Nonce值。在另一个场景示例中,所述区块链节点可以向所述区块链客户端主动推送所述机构账户当前的Nonce值。例如,所述区块链节点可以每间隔预设时间间隔,获取所述机构账户当前的Nonce值;可以向所述区块链客户端推送获取的Nonce值。
当然,所述区块链客户端还可以基于其它信息,构建一个或多个交易数据,在此不再依次列举。所述其它信息例如可以包括所述机构账户的地址等。
在一些实施例中,所述区块链客户端可以直接向所述区块链节点发送一个或多个交易数据。或者,所述区块链客户端还可以将一个或多个交易数据按照特定顺序进行打包,得到数据包;可以向所述区块链节点发送所述数据包。所述特定顺序例如可以包括交易发生时刻由早到晚的顺序。
步骤S19:区块链节点接收所述交易数据,向区块链提交所述交易数据。
在一些实施例中,所述区块链节点可以接收所述交易数据;可以向区块链提交所述交易数据,以便所述共识区块链节点对所述交易数据进行处理。所述共识区块链节点在处理完成所述交易数据以后,可以构建包含所述交易数据的数据区块;可以按照链式数据结构,将所述数据区块存储至所述区块链中。其中,所述共识区块链节点构建的数据区块的区块高度可以等于所述第一区块高度。这样便实现了区块链客户端向所述第一区块高度对应的数据区块提交交易数据。
在一些实施方式中,所述区块链节点可以接收区块链客户端发来的交易数据;可以向区块链提交接收的交易数据。或者,所述区块链节点还可以接收区块链客户端发来的数据包;可以向区块链提交所述数据包。这样可以使得所述共识区块链节点按照数据包中交易数据的排列顺序,处理所述数据包中的交易数据。
本说明书实施例的数据处理方法,区块链客户端可以向区块链节点发送令牌获取请求;区块链节点可以接收所述令牌获取请求,可以调用部署在区块链中的令牌分配合约,生成提交令牌,可以向区块链客户端发送所述提交令牌;区块链客户端可以接收所述提交令牌,可以向区块链节点发送交易数据;区块链节点可以接收所述交易数据,可以向区块链提交所述交易数据。这样通过部署在区块链中的令牌分配合约来协调同一机构的多个区块链客户端的提交权限,可以避免同一机构的多个区块链客户端并发向区块链节点发送交易数据,从而能够避免交易冲突的问题。
请参阅图3。下面介绍本说明书实施例的一个场景示例。
本场景示例的系统构架可以如图1所示。在本场景示例中,所述区块链的区块高度可以为10。所述区块链中可以部署有令牌分配合约。所述令牌分配合约的输入可以包括机构标识、客户端标识和区块高度;输出可以包括提交令牌。所述令牌分配合约具体可以表示为Allocate(InstitutionID,ClientID,BlockHeight)。
机构A可以包括区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4;可以包括区块链节点BCnode-A1和BCnode-A2。机构A在区块链中的机构账户可以为AccountA。机构账户AccountA当前的Nonce值可以为100。区块链客户端BCclient-X1、BCclient-X2、BCclient-X3和BCclient-X4的客户端标识可以分别为X1、X2、X3和X4。
区块链客户端BCclient-X1可以向区块链节点BCnode-A1发送令牌获取请求。所述令牌获取请求中可以包括机构标识A、客户端标识X1和区块高度11。区块链节点BCnode-A1可以接收所述令牌获取请求;可以将机构标识A、客户端标识X1和区块高度11作为输入参数,调用令牌分配合约Allocate(A,X1,11),生成提交令牌;可以向区块链客户端BCclient-X1发送所述提交令牌。所述提交令牌中可以包含区块高度11。
区块链客户端BCclient-X1可以接收所述提交令牌;可以按照区块链中交易数据的格式,构建交易数据TX1、TX2和TX3。交易数据TX1中可以包含所述提交令牌和机构账户AccountA的Nonce值101;交易数据TX2中可以包含所述提交令牌和机构账户AccountA的Nonce值102;交易数据TX3中可以包含所述提交令牌和机构账户AccountA的Nonce值103。
区块链客户端BCclient-X1可以将交易数据TX1、TX2和TX3进行打包,得到数据包;可以向区块链节点BCnode-A1发送所述数据包。区块链节点BCnode-A1可以接收所述数据包;可以向区块链提交所述数据包。
下面介绍本说明书数据处理方法的另一个实施例。请参阅图4,该实施例以区块链客户端为执行主体,可以包括以下步骤。
步骤S21:向区块链节点发送令牌获取请求。
所述区块链客户端在需要提交交易数据时,可以向所述区块链节点发送令牌获取请求。所述令牌获取请求中可以包括机构标识、客户端标识和区块高度中的至少一个。所述机构标识可以用于标识所述区块链客户端隶属的机构。所述客户端标识可以用于标识所述区块链客户端。所述区块高度可以用于表示所述区块链客户端申请的数据区块在区块链中的位置。
步骤S23:接收区块链节点反馈的提交令牌。
所述区块链节点可以接收所述令牌获取请求;可以调用部署在区块链中的令牌分配合约,生成提交令牌;可以向所述区块链客户端反馈所述提交令牌。所述区块链客户端可以接收所述提交令牌。所述提交令牌可以用于表示所述区块链客户端具有向所述区块链的特定数据区块提交交易数据的权限。所述特定数据区块例如可以为所述区块高度对应的数据区块。
步骤S25:向区块链节点提交交易数据。
所述区块链客户端可以接收所述提交令牌;可以按照区块链中交易数据的格式,构建一个或多个交易数据;可以向区块链节点发送所述一个或多个交易数据。构建的交易数据中可以包含所述提交令牌。所述提交令牌中可以包含所述区块高度。
所述区块链客户端可以向所述区块链节点发送一个交易数据;或者,也可以向所述区块链节点发送多个交易数据。在向所述区块链节点发送多个交易数据时,所述区块链客户端可以向所述区块链节点逐个发送交易数据;或者,还可以将所述多个交易数据按照特定顺序进行打包,得到数据包;可以向所述区块链节点发送所述数据包。所述特定顺序例如可以包括交易发生时刻由早到晚的顺序。
本说明书实施例的数据处理方法,区块链客户端可以向区块链节点发送令牌获取请求;可以接收区块链节点反馈的提交令牌;可以向区块链节点发送交易数据。这样可以实现区块链客户端在获得提交令牌后,才向区块链节点发送交易数据。
下面介绍本说明书数据处理方法的另一个实施例。请参阅图5,该实施例以区块链节点为执行主体,可以包括以下步骤。
步骤S31:接收区块链客户端发来的令牌获取请求。
所述令牌获取请求中可以包括机构标识、客户端标识和区块高度中的至少一个。所述机构标识可以用于标识所述区块链客户端隶属的机构。所述客户端标识可以用于标识所述区块链客户端。所述区块高度可以用于表示所述区块链客户端申请的数据区块在区块链中的位置。
步骤S33:调用部署在区块链中的令牌分配合约,生成提交令牌。
所述提交令牌可以用于表示所述区块链客户端具有向所述区块链的特定数据区块提交交易数据的权限。所述令牌分配合约可以用于协调提交令牌在同一机构的多个区块链客户端中的分配。如前所述,所述令牌分配合约的输入可以包括机构标识、客户端标识和第一区块高度中的至少一个。如此所述区块链节点可以将所述机构标识、所述客户端标识和所述第一区块高度中的至少一个作为输入参数,调用所述令牌分配合约,生成提交令牌。
步骤S35:向区块链客户端反馈所述提交令牌。
所述区块链客户端可以接收所述提交令牌;可以按照区块链中交易数据的格式,构建一个或多个交易数据;可以向区块链节点发送所述一个或多个交易数据。所述区块链节点接收所述交易数据,向区块链提交所述交易数据。所述交易数据中可以包含所述提交令牌。所述提交令牌中可以包含所述区块高度。
本说明书实施例的数据处理方法,区块链节点可以接收区块链客户端发来的令牌获取请求;可以调用部署在区块链中的令牌分配合约,生成提交令牌;可以向区块链客户端反馈所述提交令牌。这样通过部署在区块链中的令牌分配合约来协调同一机构的多个区块链客户端的提交权限,可以避免同一机构的多个区块链客户端并发向区块链节点发送交易数据,从而能够避免交易冲突的问题。
下面介绍本说明书数据处理装置的一个实施例。请参阅图6。该实施例可以应用于区块链客户端,具体可以包括以下单元。
发送单元41,用于向区块链节点发送令牌获取请求;
接收单元43,用于接收区块链节点反馈的提交令牌,所述提交令牌用于表示所述区块链客户端具有向所述区块链的特定数据区块提交交易数据的权限;
发送单元45,用于向区块链节点发送交易数据。
下面介绍本说明书区块链客户端的一个实施例。图7是该实施例中一种区块链客户端的硬件结构示意图。如图7所示,所述区块链客户端可以包括一个或多个(图中仅示出一个)处理器、存储器和传输模块。当然,本领域普通技术人员可以理解,图7所示的硬件结构仅为示意,其并不对上述区块链客户端的硬件结构造成限定。在实际中所述区块链客户端还可以包括比图7所示更多或者更少的组件单元;或者,具有与图7所示不同的配置。
所述存储器可以包括高速随机存储器;或者,还可以包括非易失性存储器,例如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。当然,所述存储器还可以包括远程设置的网络存储器。所述远程设置的网络存储器可以通过诸如互联网、企业内部网、局域网、移动通信网等网络连接至所述区块链客户端。所述存储器可以用于存储应用软件的程序指令或模块,例如本说明书实施例中数据处理方法对应的程序指令或模块。
所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以读取并执行所述存储器中的程序指令或模块。
所述传输模块可以用于经由网络进行数据传输,例如经由诸如互联网、企业内部网、局域网、移动通信网等网络进行数据传输。
下面介绍本说明书数据处理装置的一个实施例。请参阅图8。该实施例可以应用于区块链节点,具体可以包括以下单元。
接收单元51,用于接收区块链客户端发来的令牌获取请求;
调用单元53,用于调用部署在区块链中的令牌分配合约,生成提交令牌,所述提交令牌用于表示所述区块链客户端具有向所述区块链的特定数据区块提交交易数据的权限,所述令牌分配合约用于协调提交令牌在同一机构的多个区块链客户端中的分配;
反馈单元55,用于向区块链客户端反馈所述提交令牌。
下面介绍本说明书区块链节点的一个实施例。图9是该实施例中一种区块链节点的硬件结构示意图。如图9所示,所述区块链节点可以包括一个或多个(图中仅示出一个)处理器、存储器和传输模块。当然,本领域普通技术人员可以理解,图9所示的硬件结构仅为示意,其并不对上述区块链节点的硬件结构造成限定。在实际中所述区块链节点还可以包括比图9所示更多或者更少的组件单元;或者,具有与图9所示不同的配置。
所述存储器可以包括高速随机存储器;或者,还可以包括非易失性存储器,例如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。当然,所述存储器还可以包括远程设置的网络存储器。所述远程设置的网络存储器可以通过诸如互联网、企业内部网、局域网、移动通信网等网络连接至所述区块链节点。所述存储器可以用于存储应用软件的程序指令或模块,例如本说明书实施例中数据处理方法对应的程序指令或模块。
所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以读取并执行所述存储器中的程序指令或模块。
所述传输模块可以用于经由网络进行数据传输,例如经由诸如互联网、企业内部网、局域网、移动通信网等网络进行数据传输。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例、区块链客户端实施例和区块链节点实施例而言,由于其基本相似于数据处理方法实施例,所以描述的比较简单,相关之处参见数据处理方法实施例的部分说明即可。
另外,可以理解的是,本领域技术人员在阅读本说明书文件之后,可以无需创造性劳动想到将本说明书列举的部分或全部实施例进行任意组合,这些组合也在本说明书公开和保护的范围内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。