基于区块链的数据处理方法、装置、设备、介质及产品与流程

未命名 09-22 阅读:52 评论:0


1.本技术涉及区块链技术领域,尤其涉及基于区块链的数据处理方法、基于区块链的数据处理装置、数据处理设备、计算机可读存储介质以及计算机程序产品。


背景技术:

2.随着计算机技术的不断发展和应用,区块链技术也迅速发展,由于存储在区块链上的信息不可伪造和篡改,利用区块链技术进行业务数据处理成为了当前的发展趋势。在进行区块同步时,出块节点会创建区块,基于创建的区块生成区块提案信息广播给共识节点,共识节点可以根据接收到的区块提案信息进行诸如区块共识等处理。然而,区块提案信息在传输过程中可能会出现数据丢失等异常情况,而共识节点无法对区块提案信息进行数据校验,从而导致共识节点接收到的区块提案信息出现错误,共识节点再基于错误的区块提案信息系进行处理,导致处理结果出现异常。因此,如何实现区块提案信息的数据校验,保证基于区块提案信息进行处理后的处理结果的准确性,是目前亟需解决的问题。


技术实现要素:

3.本技术提供了基于区块链的数据处理方法、装置、设备、介质及产品,可以实现区块提案信息的数据校验,保证基于区块提案信息进行处理后的处理结果的准确性。
4.本技术提供了一种基于区块链的数据处理方法,该方法包括:
5.接收出块节点发送的区块提案信息;其中,上述区块提案信息包括目标区块和目标数字签名,上述目标区块包括区块头信息和区块体信息,上述目标数字签名是对上述区块头信息进行数字签名处理得到的,上述区块头信息包括根据上述区块体信息中的交易数据确定的标准默克尔树根;
6.从上述区块提案信息中获取上述区块头信息和上述目标数字签名,对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息,以及对上述目标数字签名进行解签处理,得到上述区块头信息的第二摘要信息;
7.若上述第一摘要信息与上述第二摘要信息相匹配,则从上述区块提案信息中获取上述标准默克尔树根和上述交易数据,以及根据上述交易数据确定目标默克尔树根;
8.根据上述标准默克尔树根和上述目标默克尔树根的比较结果,对上述目标区块执行操作。
9.本技术提供了另一种基于区块链的数据处理方法,该方法包括:
10.创建目标区块,上述目标区块包括区块头信息和区块体信息,上述区块体信息包括交易数据,上述区块头信息包括根据上述交易数据确定的标准默克尔树根;
11.对上述区块头信息进行数字签名处理,得到目标数字签名,并根据上述目标区块和上述目标数字签名生成区块提案信息;
12.将上述区块提案信息发送给区块链网络中的共识节点,以使上述区块链网络中的共识节点对上述区块提案信息中包括的数据进行校验,并根据校验结果对上述目标区块执
行操作。
13.本技术提供了一种基于区块链的数据处理装置,以该装置应用于一实施例中,包括:
14.数据获取模块501,用于接收出块节点发送的区块提案信息;其中,上述区块提案信息包括目标区块和目标数字签名,上述目标区块包括区块头信息和区块体信息,上述目标数字签名是对上述区块头信息进行数字签名处理得到的,上述区块头信息包括根据上述区块体信息中的交易数据确定的标准默克尔树根;
15.处理模块502,用于从上述区块提案信息中获取上述区块头信息和上述目标数字签名,对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息,以及对上述目标数字签名进行解签处理,得到上述区块头信息的第二摘要信息;
16.上述处理模块502,还用于若上述第一摘要信息与上述第二摘要信息相匹配,则从上述区块提案信息中获取上述标准默克尔树根和上述交易数据,以及根据上述交易数据确定目标默克尔树根;
17.上述处理模块502,还用于根据上述标准默克尔树根和上述目标默克尔树根的比较结果,对上述目标区块执行操作。
18.本技术提供了另一种基于区块链的数据处理装置,以该装置应用于一实施例中,包括:
19.数据获取模块501,用于创建目标区块,上述目标区块包括区块头信息和区块体信息,上述区块体信息包括交易数据,上述区块头信息包括根据上述交易数据确定的标准默克尔树根;
20.处理模块502,用于对上述区块头信息进行数字签名处理,得到目标数字签名,并根据上述目标区块和上述目标数字签名生成区块提案信息;
21.上述处理模块502,还用于将上述区块提案信息发送给区块链网络中的共识节点,以使上述区块链网络中的共识节点对上述区块提案信息中包括的数据进行校验,并根据校验结果对上述目标区块执行操作。
22.本技术提供了一种数据处理设备,包括处理器、存储器和网络接口,上述处理器、存储器和网络接口相互连接,其中,上述存储器用于存储计算机程序,上述计算机程序包括程序指令,上述处理器被配置用于调用上述程序指令,用以实现上述基于区块链的数据处理方法的步骤。
23.本技术提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令被处理器执行,用以实现上述基于区块链的数据处理方法的步骤。
24.本技术提供了一种计算机程序产品,上述计算机程序产品包括计算机程序或计算机指令,上述计算机程序或计算机指令被处理器执行,用以实现如上述基于区块链的数据处理方法的步骤。
25.本技术利用区块链数据结构的特点,在进行区块链提案的过程中,出块节点通过区块头信息直接构造目标数字签名,相比于对整体目标区块(即区块头信息和区块体信息)进行签名来说,使参与构造数字签名的数据量大大减少,减少了构造数字签名的时间消耗。同时,在目标区块中存储根据交易数据确定的标准默克尔值,用于共识节点对接收到的交
易数据进行验证,实现了区块头信息和交易数据的校验,保证了基于区块提案信息进行处理后的处理结果的准确性;出块节点再根据目标数字签名和目标区块生成区块提案信息,提高了出块节点生成提案的效率;出块节点最后将区块提案信息发送给共识节点,根据共识节点返回的校验结果对目标区块执行相应的操作。
26.在共识节点处理提案的过程中,首先接收出块节点发送的区块提案信息;再对区块提案信息中的区块头信息进行摘要计算,得到第一摘要信息,以及对区块提案信息中的目标数字签名进行解签处理,得到第二摘要信息。由于第一摘要信息和第二摘要信息都是对应区块头信息生成的,通过第一摘要信息和第二摘要信息可以对区块头信息进行数据校验,从而保证区块头信息的正确性;若第一摘要信息与第二摘要信息匹配,再根据接收到的交易数据计算目标默克尔树根,并将目标默克尔树根与区块提案信息中的标准默克尔树根进行比较,可以对区块体信息(交易数据)进行数据校验,从而保证区块体信息的正确性。该方法相比于通过对大量的交易数据进行摘要处理以实现数据验证,提高了处理提案的效率;在提案传输过程中,由于目标数字签名是基于区块头信息生成的,其数据量较小,相比于对整体目标区块(即区块头信息和区块体信息)进行签名来说,提高了提案传输效率。共识节点最后根据比较结果对目标区块执行相应的操作。通过上述方法,在保证区块提案信息可信度的情况下,可以提高出块节点生成提案的效率,以及共识节点处理提案的效率。
附图说明
27.为了更清楚地说明本技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
28.图1a是本技术实施例提供的一种基于区块链提案的流程示意图;
29.图1b是本技术实施例提供的一种基于区块链的数据处理系统的架构示意图;
30.图1c是本技术实施例提供的一种区块链的结构示意图;
31.图1d是本技术实施例提供的一种产生新区块的过程示意图;
32.图2是本技术实施例提供的一种基于区块链的数据处理方法的流程示意图;
33.图3a是本技术实施例提供的一种区块链中区块的结构示意图;
34.图3b是本技术实施例提供的一种计算默克尔树根的流程示意图;
35.图3c是本技术实施例提供的一种基于区块链提案的流程示意图;
36.图4是本技术实施例提供的另一种基于区块链的数据处理方法的流程示意图;
37.图5是本申实施例提供的一种基于区块链的数据处理装置的示意框图;
38.图6是本技术实施例提供的一种数据处理设备的示意框图。
具体实施方式
39.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
40.需要说明的是,本技术实施例中所涉及到的“第一”、“第二”等描述仅用于描述目
的,而不能理解为指示或者暗示其相对重要性或者隐含指明所指示的技术特征的数量。因此,限定有“第一”、“第二”的技术特征可以明示或者隐含的包括至少一个该特征。
41.下面将会对本技术实施例中出现的一些关键术语进行说明。
42.区块链中,一个区块分为两大部分,即区块头和区块体。区块头里面存储着区块的头信息,例如上一个区块的哈希值(prehash),本区块体的哈希值(hash),以及时间戳(timestamp)等等;区块体存储着这个区块的详细数据(data),这个数据包含若干行记录,可以是交易信息,也可以是其他某种信息。区块链中出块节点将区块信息连同自身的签名信息打包成网络消息并广播给其它节点,这个信息称为提案,提案是区块链中一种常见的消息类型。
43.数字签名又称公钥数字签名,是只有信息的发送者才能产生的其他对象无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现,是一种用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
44.联盟链(consortium blockchain)是介于公有链与私有链之间的一种系统形态,它往往由多个中心控制。由若干组织一起合作维护一条区块链,该区块链的使用必须是带有权限的限制访问,相关信息会得到保护,如供应链机构或银行联盟。联盟链可以看作是分布式托管记账系统,系统由组织指定的多个“权威”节点控制,这些节点之间根据共识机制对整个系统进行管理与送作。联盟链可视为“部分去中心化”,公众可以查阅和交易,但验证交易或发布智能合约需获得联盟许可。联盟链的典型特点是,各个节点通常有对应的实体机构,只有得到联盟的批准才能加入或退出系统。各个利益相关的机构组织在区块链上展开紧密地合作,并共同维护系统健康稳定的发展。在联盟链中,节点有一定的准入机制,节点间的消息通信也需要携带身份信息(例如数字签名),证实是联盟链的有效节点发出的信息后(即验签过程),该信息才能被其它节点接受并处理。本技术将以联盟链为例,进行后续实施例方法的描述。
45.本技术首先提出一种区块链提案方法,请参见图1a,在区块链提案流程中,包括出块节点提案和共识节点处理提案两个部分。
46.在出块节点提案过程中,出块节点m首先构造区块a;然后将区块a序列化成二进制数组b;再对二进制数组b进行摘要计算,得到数字摘要c;对数字摘要c进行签名,得到数字签名d;出块节点最后将区块a和数字签名d打包成提案(a+d),广播到共识节点。
47.在共识节点处理提案过程中,共识节点n首先接收出块节点广播的提案(a+d);然后提取提案(a+d)中的区块a,将提案中的区块a序列化成二进制数组b1;再对二进制数组b1进行摘要计算,得到数字摘要c1;共识节点使用出块节点的公钥对数字签名d进行解密,得到数字摘要c2;最后比较数字摘要c1和数字摘要c2,若c1等于c2,则处理区块a;若c1不等于c2,则拒绝处理区块a。
48.通过上述方法,可以实现区块链提案,出块节点基于区块中的区块头信息和区块体信息构造数字签名,将目标区块和数字签名打包成提案发送给共识节点。共识节点接收目标区块和数字签名,通过目标区块中的区块头信息和区块体信息生成一个数字摘要,再对接收到的数字签名进行解密,生成另一个数字摘要,通过对两个摘要进行对比,共识节点
可以验证接收到的提案的真实性和完整性。但是,当一个区块比较大时(也即是区块链的负载较高),单个区块的数据量会比较大,使得整个提案的耗时会较长,因为构造数字签名需要序列化很大的交易列表(即区块体信息),而这个过程耗时较长,会降低整条链的性能。本技术利用区块链数据结构的特点,通过区块头信息直接构造数字签名,使参与构造数字签名的数据量大大减少,并利用接收到的交易数据构造目标默克尔树根,并与区块头中基于自身交易数据生成的标准默克尔树根进行交易数据验证,保证信息的可信度,提升提案的效率。
49.本技术将通过以下实施例进行说明:
50.请参见图1b,是本技术实施例提供的一种基于区块链的数据处理系统的架构示意图,该基于区块链的数据处理系统包括区块链网络10、客户端102,其中:
51.区块链网络10是指用于进行节点与节点之间数据共享的网络,区块链网络中可以包括多个节点101,其中,该多个节点101中可以包括共识节点。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护区块链网络内的共享数据(即区块链)。其中,区块链网络中的每个节点均存储一条相同的区块链,该区块链包括一系列按照产生的先后时间顺序相互接续的区块(block),如图1b中所示的区块1、区块m-1等等,新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链网络中节点提交的记录数据。为了保证区块链网络内的信息互通,每个节点之间可以存在信息连接,任意两个节点之间可以实现点对点(peer to peer,p2p)通信,具体可以通过有线通信链路或无线通信链路进行p2p通信。例如,当区块链网络中的任意节点接收到输入信息时,其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链网络中全部节点上存储的数据均一致。
52.客户端102可以接入该区块链网络,并可以与区块链网络中的节点进行通信,例如,向节点发送交易数据等等。其中,客户端102所在的终端具体可以是智能手机、平板电脑、笔记本电脑、台式电脑、车载智能终端等,本技术实施例不做限定。
53.需要说明的是,图1b中所示的节点的数目仅仅是示意性的,根据实际需要,可以部署任意数目的节点,该节点可以是指接入网络中的任意形式的计算设备,例如服务器、用户终端均可以加入而成为节点。
54.其中,对于区块链网络中的每个节点,均具有与其对应的节点标识,而且区块链网络中的每个节点均可以存储有区块链网络中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至区块链网络中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为互联网协议(internet protocol,ip)地址以及其他任一种能够用于标识该节点的信息,表中仅以ip地址为例进行说明。
55.节点名称节点标识节点1117.114.151.174节点2117.116.189.145
……
节点n119.123.789.258
56.其中,区块链网络中的每个节点均存储一条相同的区块链。区块链由多个区块组
成,参见图1c,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
57.其中,在生成区块链中的各个区块时,参见图1d,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
58.sha256(sha256(version+prev_hash+merkle_root+ntime+nbits+x))《target
59.其中,sha256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;target为特征值阈值,该特征值阈值可以根据nbits确定得到。
60.这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据区块链网络中其他节点的节点标识,将新生成的区块分别发送给其所在的区块链网络中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
61.其中,区块链网络的节点上可以运行智能合约,可以通过调用该智能合约实现各种交易。智能合约是一种运行在区块链上的不可篡改、自动执行的计算机程序,智能合约是用于在满足一定条件时而执行的代码实现,开发人员可以通过编程语言定义合约逻辑,发布到区块链上(智能合约注册),根据合约条款的逻辑,调用密钥或者其他的事件触发执行,完成合约逻辑,同时还提供对智能合约升级、注销的功能。
62.在一些可行的实施方式中,区块链网络的任一节点101可以获取客户端的交易数据,该交易数据可以携带客户端的身份标识,该身份标识可以是根据客户端的身份证书确定的,节点101可以根据身份标识从智能合约中查询客户端的身份证书,若从智能合约中查询到客户端的身份证书,且根据身份证书确定出客户端具备针对区块链执行交易数据所对应交易操作的权限,则节点101可以针对区块链执行交易数据所对应的交易操作,可以利用交易数据所携带的身份标识和智能合约中所记录的身份证书之间的映射关系,确定客户端对应的身份证书,并按照身份证书中指示的权限进行交易操作,从而提升区块链上数据处理的安全性。在交易数据中只携带身份标识,可以在保证能够获取到相应身份证书的情况下,相对于在交易数据中携带完整的身份证书,可以减少交易数据的数据量,有利于交易数据的快速传输。
63.通常,还需要针对交易数据生成交易区块,并将区块进行上链(将区块存储到区块链上),由于只携带身份标识,可以在保证能够获取到相应身份证书的情况下,相对于在交易数据中携带完整的身份证书,可以减少交易数据的数据量,以实现一定程度上的数据压缩,这样可以降低对区块链存储资源的消耗。
64.可以理解的是,在本技术的具体实施方式中,涉及到区块链状态数据、交易数据、用户信息等相关的数据,当本技术实施例运用上述数据到具体产品或技术中时,均需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
65.以下对本技术实施例的技术方案的实现细节进行详细阐述:
66.请参见图2,图2是本技术实施例提供的一种基于区块链的数据处理方法的流程示意图,本技术实施例的数据处理方法以共识节点一侧进行描述的,如图2所示,该基于区块链的数据处理方法可包括:
67.s201、接收出块节点发送的区块提案信息;其中,区块提案信息包括目标区块和目标数字签名,目标区块包括区块头信息和区块体信息,目标数字签名是对区块头信息进行数字签名处理得到的,区块头信息包括基于区块体信息中的交易数据所确定的标准默克尔树根。
68.首先对区块的结构进行介绍(也即是目标区块),请参见图3a,图3a是本技术实施例提供的一种区块链中区块的结构示意图,区块中包括区块头和区块体,在区块头中包括父区块哈希值(prev block hash)、时间戳(timestamp)、版本号(version)、默克尔树根哈希值(merkel root hash)、目标值(nonce)和难度值(difficulty target)。在区块体中包括多个交易(例如图3a中交易1、交易2、交易3、交易4
……
交易n)。
69.在区块头部分,父区块哈希值用于区块连接到父区块,记录了父区块的哈希地址,其效果可以体现在以下两方面,一方面,可以通过某一个区块追溯到它前面所有的区块链交易信息,溯源效果好;另一方面,只要某一个区块产生变动,那么这个区块后面所有的区块的哈希值都会改变,除非将它后面所有的区块都进行修改,体现了账本不可修改或修改代价无法承受的特性。时间戳标志了该交易的存在时间。在整个区块链上可以看到一条有序的时间戳链条,该时间戳具有不可修改性。版本号描述软件或协议更新的版本号。默克尔树根哈希值是交易的数字指纹,唯一标志了区块体中部分或全部的交易数据,只要参与构成默克尔树根里面的任何交易数据被修改,那么这个数字指纹一定会变化,进而影响该区块的哈希值,以至于后面区块对应的所有哈希值都发生改变。目标值是用户输入试探的随机数,初始值为0,目标值是工作量证明算法的关键,假设当前区块的哈希值是等于对整个区块头进行哈希运算的哈希值,所以共识节点在计算哈希值前先用将交易记录进行哈希产生的默克尔树根(默克尔树根是一个哈希值),接着对着目标值进行不间断的尝试性输入,直到输入的目标值小于当前区块所得哈希值的阈值。难度值描述了本区块工作量证明算法的难度目标。
70.在区块体部分,是该区块存储的交易,其中包括交易数量和交易数据。具体来说,区块体共分为三部分:即numtransactionsbytes,numtransactions和transactions。numtransactionsbytes的大小为1字节,记录了交易数量占用的字节数;numtransactions的大小为0-8个字节,记录了区块内的交易数量;transactions的大小不确定,记录了区块内存的多个交易数据。其中,numtransactions(记录区块内交易数量)是存储交易信息的重要字段,将numtransactions(记录区块内交易数量)部分使用压缩存储方式,这样可以大量的节约存储空间。numtransactionsbytes字段的存在是为了指出numtransactions在区块体中存在的部位,为读取交易数量而做准备。
71.本技术实施例中,区块提案信息包括目标区块和目标数字签名,目标数字签名是对区块头信息进行数字签名处理得到的,区块头信息包括基于区块体信息中的交易数据所确定的标准默克尔树根。其中,进行数字签名的具体方法,以及计算标准默克尔树根的具体方法将在后续实施例中详细介绍,本实施例不再赘述。
72.需要说明的是,在本技术中将以区块头信息指代上述区块头部分,以区块体信息指代上述区块体部分,以默克尔树根指代默克尔树根哈希值,其他相关数据可参考上述区块链中数据结构的相关描述,本技术在后续实施例中不再赘述。
73.在一实施例中,由于共识节点可能接收到某一节点发送的区块提案信息(例如上述出块节点),但是该发送区块提案信息的节点不一定是当前阶段负责出块的主节点,也有可能是异常节点发送的区块提案信息,为了保证提案的安全性,需要验证接收到的区块提案信息的节点标识。基于此,在区块提案信息中,可以包括出块节点的节点标识,验证接收到的区块提案信息的节点标识的实现步骤如下。
74.(1)、获取当前阶段负责出块的主节点的节点标识,以及从区块提案信息中获取出块节点的节点标识。
75.本技术实施例中,当前阶段指的是区块高度,也即是当前正在进行处理的区块链中的第几个区块。当前阶段负责出块的主节点是通过选取产生的。例如,在当前阶段通过选取确定区块链上的第1000-1050个区块由节点1负责出块,那么节点1即是当前阶段负责出块的主节点的节点标识。基于此,共识节点可以根据上述方法获取主节点的节点标识,再从区块提案信息中获取该区块提案信息对应的出块节点的节点标识。
76.(2)、若出块节点的节点标识与主节点的节点标识相匹配,则执行从区块提案信息中获取区块头信息和目标数字签名,对区块头信息进行摘要计算,得到区块头信息的第一摘要信息的步骤。
77.本技术实施例中,通过比较出块节点的节点标识与主节点的节点标识,共识节点可以确定接收到的区块提案信息是否是当前阶段负责出块的主节点发送的,从而保证了数据的安全性。若出块节点的节点标识与主节点的节点标识相匹配,则可以继续执行从区块提案信息中获取区块头信息和目标数字签名,对区块头信息进行摘要计算,得到区块头信息的第一摘要信息的步骤,也即是继续执行步骤s202~s204。
78.在一实施例中,若出块节点的节点标识与主节点的节点标识不相匹配,说明接收到的区块提案信息不是当前阶段负责出块的主节点发送的,共识节点则可以拒绝对该区块提案信息进行处理,继续等待获取下一个区块提案信息,再利用上述提供的节点标识判断方法进行主节点的检验,直到检测到获取到的下一个区块提案信息当前阶段负责出块的主节点发送的区块提案信息;共识节点再针对检验通过后的区块提案信息中的目标区块进行区块链操作(例如区块共识)。
79.s202、从区块提案信息中获取目标区块的区块头信息和目标数字签名,对区块头信息进行摘要计算,得到区块头信息的第一摘要信息,以及对目标数字签名进行解签处理,得到区块头信息的第二摘要信息。
80.本技术实施例中,区块头信息中存储着区块的头信息,例如父区块哈希值(prev block hash)、时间戳(timestamp)、版本号(version)、默克尔树根哈希值(merkel root hash)、目标值(nonce)和难度值(difficulty target)。通过对区块头信息进行摘要计算,
可以生成一个第一摘要信息,也就是说,不同的区块头信息生成的摘要信息各不相同,不仅如此,同一区块头信息中任意数据被修改,生成的摘要信息也会发生改变。
81.目标数字签名是共识节点从接收到的区块提案信息中提取出来的,由于目标数字签名是出块节点基于区块头信息确定的,因此,共识节点通过对目标数字签名进行解签处理,可以得到对应区块头信息的第二摘要信息。正是由于目标数字签名是基于区块头信息生成的,其数据量较小,因此,在区块提案信息传输的过程中,相比于对整体目标区块(即区块头信息和区块体信息)进行签名再进行区块提案信息的传输来说,提高了提案传输效率。
82.通过对比区块头信息对应的第一摘要信息和第二摘要信息,共识节点可以判断出接收到的区块提案信息中目标区块的区块头信息是否被篡改(若第一摘要信息和第二摘要信息相匹配,则确定区块头信息被篡改;若第一摘要信息和第二摘要信息不相匹配,则确定区块头信息未被篡改),保证了区块头信息的数据准确性。由于在本实施例中,只验证了区块头信息的正确性,但区块体信息也有可能被篡改,因此也需要对区块体信息(例如交易数据)进行验证,本技术提出的是基于默克尔树根进行区块体信息验证的方法,具体操作步骤将在后续实施例中详细介绍,在此不再赘述。
83.在一实施例中,目标数字签名携带用于解密该目标数字签名的公钥(或者说,共识节点存储有出块节点分发的能够解密该目标数字签名的公钥),上述共识节点对目标数字签名进行解签处理,得到区块头信息的第二摘要信息的过程,可以是共识节点利用该公钥对目标数字签名进行解签处理,得到区块头信息的第二摘要信息。
84.在一实施例中,上述对区块头信息进行摘要计算,得到区块头信息的第一摘要信息,具体实现步骤如下。
85.(1)、对区块头信息进行序列化处理,得到序列化数据。
86.本技术实施例中,序列化处理是指将程序数据(例如本实施例中的区块体数据)转化成能被存储并传输的格式的过程,用以实现将序列化处理后的序列化数据进行存储、写入文件、数据传输等。序列化处理的逆过程是反序列化处理,可以根据流重构程序数据。在本技术中,通过结合序列化处理和反序列化处理,可以轻松地实现存储和传输数据。通过序列化技术生成序列化数据进行存储,下次重新运行程序或进行数据处理时,只需要读取已存储的序列化数据进行相关操作即可,提高了数据处理速度。利用该方法应用于本技术中的摘要生成过程,提高了摘要生成效率。
87.在一实施例中,可以使用基于java原生的objectoutputstream.write()和objectinputstream.read()的方法来进行对象序列化和反序列化;也可以使用基于json的方法进行序列化和反序列化;还可以使用基于xml的方法进行序列化和反序列化。
88.(2)、对序列化数据进行摘要计算,得到区块头信息的第一摘要信息。
89.本技术实施例中,摘要计算是指进行数字摘要(digital digest,也叫做数字指纹或数字手印)处理,也即是将任意长度的消息通过数字摘要处理变成固定长度的短消息。数字摘要处理可以看作是一个处理自变量为任意长度的消息的函数(即哈希函数),通过采用单向哈希函数将需要加密的明文处理成一串固定长度(128位)的密文。该密文又称为数字指纹。由于不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。通过对序列化数据进行摘要计算,共识节点只需要比较区块头信息对应的第一摘要信息和第二摘要信息是否一致,就可以确认区块头信息是否被篡改,保证了区块头信息的真实性和
完整性。
90.在一实施例中,数字摘要处理可以采用md5(message-digest algorithm,一种密码散列函数),通过md5方法可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。除此之外,数字摘要处理还可以采用md2、md4、sha1、sha256、sha384和sha512中的任一种方法进行处理,本实施例不再赘述。
91.s203、若第一摘要信息与第二摘要信息相匹配,则从区块提案信息中获取标准默克尔树根和交易数据,以及根据交易数据确定目标默克尔树根。
92.本技术实施例中,第一摘要信息与第二摘要信息相匹配,共识节点可以判断出区块提案信息对应的目标区块的区块头信息未被篡改,保证了区块头信息的数据准确性。由于区块体信息也有可能被篡改,因此也需要对区块体信息(例如交易数据)进行验证。
93.由于区块头信息中包括了根据区块体信息中的交易数据确定的标准默克尔树根,通过从接收到的区块提案信息中获取交易数据,并根据交易数据生成目标默克尔树根。将标准默克尔树根作为参考依据与目标默克尔树根进行比较,可以检验区块体信息中的交易数据是否被篡改,从而保证了区块体信息(交易数据)的真实性和完整性。
94.需要说明的是,上述从区块提案信息中获取标准默克尔树根的步骤,以及获取交易数据的步骤,可以是同时执行的(例如同时执行获取标准默克尔树根的步骤和获取交易数据的步骤),也可以是分步执行的(例如先执行获取标准默克尔树根的步骤,再执行获取交易数据的步骤,或者调换顺序进行处理)。
95.在一实施例中,上述根据区块提案信息中的交易数据确定目标默克尔树根,可以基于以下步骤实现。
96.(1)、获取区块提案信息中的多个交易数据,以及多个交易数据的序列。
97.本技术实施例中,目标区块中的多个交易数据是具有时序关系的,也即是序列。该序列指示了多个交易数据对应的发生交易的时间。在计算交易数据的目标默克尔树根时,加入交易数据的序列,丰富了数据的描述维度,体现了目标默克尔树根与交易数据的唯一对应性。
98.(2)、获取多个交易数据的哈希值。
99.该步骤是分别获取多个交易数据中每个交易数据通过哈希算法计算得到的哈希值。
100.(3)、利用哈希算法计算多个第一数据组对应的多个第一哈希值,多个第一数据组中的每个第一数据组包括按照多个交易数据的序列进行排序的相邻的两个交易数据。
101.(4)、利用哈希算法计算多个第二数据组对应的多个第二哈希值,多个第二数据组中的每个第二数据组包括相邻的两个第一哈希值;
102.(5)、根据所述多个第二哈希值确定目标默克尔树根。
103.步骤(3)~(5),是基于二叉树计算的方法,逐层计算哈希值,最终得到目标默克尔树根。请参见图3b,图3b是本技术实施例提供的一种计算默克尔树根的流程示意图,下面将通过图3b对上述步骤(1)~(4)进行具体阐述。示例性的,区块提案信息中包括多个交易数据(例如交易1、交易2、交易3和交易4);获取多个交易数据的哈希值(也即是对交易1进行哈希运算得到交易1的哈希值,根据该方法可以得到交易2的哈希值、交易3的哈希值和交易4的哈希值);然后利用哈希算法计算多个第一数据组对应的多个第一哈希值,第一数据组包
括按照多个交易数据的序列进行排序的相邻的两个交易数据(例如按照交易数据的序列1~4,对4个交易数据进行划分,得到两个第一数据组,分别是[交易1的哈希值、交易2的哈希值]和[交易3的哈希值、交易4的哈希值]),再计算对应的多个第一哈希值(例如[交易1的哈希值、交易2的哈希值]对应的哈希值和[交易3的哈希值、交易4的哈希值]对应的哈希值);利用哈希算法计算多个第二数据组对应的多个第二哈希值,每个第二数据组包括相邻的两个第一哈希值(例如[交易1的哈希值、交易2的哈希值]对应的哈希值与[交易3的哈希值、交易4的哈希值]对应的哈希值融合得到的交易1、交易2、交易3和交易4对应的哈希值)。通过上述步骤,可以基于二叉树计算的方式依次计算完所有交易数据,最终得到所有交易对应的一个哈希值,将其作为目标默克尔树根。
[0104]
需要说明的是,在执行完利用哈希算法计算多个第二数据组对应的多个第二哈希值的步骤(即上述步骤3)时,可能不止两个第二哈希值,当不止两个第二哈希值时,可参考上述步骤(1)~(3)重复执行,直到只产生两个哈希值,再根据两个哈希值进行哈希运算,得到最终哈希值,这个最终哈希值即是目标默克尔树根。
[0105]
上述方法中的默克尔树根是交易数据的数字指纹,唯一标志了区块体中部分或全部的交易数据,只要参与构成默克尔树根里面的任何交易数据被修改,那么这个数字指纹一定会变化。通过计算默克尔树根,后续基于默克尔树根验证接收的区块提案信息中的交易数据是否被篡改,保证了数据的可靠性和完整性。
[0106]
在一实施例中,当区块提案信息中的多个交易数据的数量为奇数时,还需要构造平衡数据,即可基于上述提供的方法计算默克尔树根,具体操作步骤如下。
[0107]
(1)、构造平衡数据,平衡数据通过复制多个交易数据中的最后一个交易数据得到。
[0108]
(2)、将平衡数据添加在多个交易数据的末尾。
[0109]
本技术实施例中,当多个交易数据的数量为奇数时,无法通过上述提供的方法计算默克尔树根,因为上述方法基于二叉树分类方法实现,无法应用于交易数据为奇数的情况。因此,通过复制多个交易数据中的最后一个交易数据,将其作为平衡数据放在交易数据的末尾,即可基于上述提供的方法计算默克尔树根,保证了默克尔树根的准确性。
[0110]
在一实施例中,平衡数据可以是多个交易数据中的最后一个交易数据,也可以是多个交易数据中的任意一个交易数据(例如多个交易数据中的第一个交易数据),同时平衡数据可以添加在多个交易数据的末尾,也可以添加在多个交易数据中的任意位置。本实施例还提出了一种处理效果较好地平衡数据构造及处理方法,首先构造平衡数据,平衡数据通过复制多个交易数据中的第一个交易数据得到;再将平衡数据添加在多个交易数据的首部。需要说明的是,可以根据不同的业务数据合理配置平衡数据构造及处理方法,以获得更好的处理效果。
[0111]
s204、根据标准默克尔树根和目标默克尔树根的比较结果,对目标区块执行操作。
[0112]
本技术实施例中,根据标准默克尔树根和目标默克尔树根的比较结果,即可判断区块体信息(交易数据)是否真实完整。在一实施例中,根据标准默克尔树根和目标默克尔树根的比较结果,对目标区块执行操作,可以包括以下步骤。
[0113]
(1)、若标准默克尔树根和目标默克尔树根的比较结果为相匹配,则对目标区块进行共识处理。
[0114]
在标准默克尔树根和目标默克尔树根的比较结果为相匹配的情况下,即表示共识节点接收到的区块提案信息中,区块头信息和区块体信息都通过数据检验,未被篡改。因此,可以针对接收到的区块提案信息中的目标区块进行共识处理。
[0115]
在一实施例中,在共识节点进行区块共识时,可以将接收到的区块提案信息中的目标区块中的数据与自身存储的数据进行比对和校验,若数据相匹配,则确认共识该目标区块(也即是在区块共识时投赞成票),将该共识结果反馈给出块节点以完成区块共识。
[0116]
(2)、若标准默克尔树根和目标默克尔树根的比较结果为不相匹配,则拒绝对目标区块进行处理,并向出块节点发送反馈信息,反馈信息用于指示目标区块中的交易数据被篡改。
[0117]
在一实施例中,当第一摘要信息与第二摘要信息不同时,可以生成第一异常报告,第一异常报告用于指示接收到的区块提案消息的区块头信息被篡改。当标准默克尔树根和目标默克尔树根的比较结果为不同时,可以生成第二异常报告,第二异常报告用于指示接收到的区块提案消息的区块体信息(也即是交易数据)被篡改。
[0118]
本技术实施例中,反馈信息标识了接收出现异常的具体类型,即接受到的区块提案信息中的交易数据被篡改。除此之外,在标准默克尔树根和目标默克尔树根的比较结果为相匹配时,第一摘要信息与第二摘要信息相匹配时,以及第一摘要信息与第二摘要信息不相匹配时,都可以向出块节点发送不同情况对应的反馈信息,反馈信息用于指示不同情况下数据的异常状况,增加在数据异常时进行异常消息提示的多样性,也便于共识节点和出块节点基于多样化的异常消息提示进行相应的处理。
[0119]
在一实施例中,当标准默克尔树根和目标默克尔树根的比较结果为不相匹配时,还可执行以下操作。
[0120]
(1)、接收出块节点发送的加密区块提案信息;加密区块提案信息是出块节点在返回反馈信息的共识节点的数量满足消息重发条件时,对区块提案信息包括的目标区块中的交易数据进行校验,并在校验结果为通过时,利用区块链网络中的共识节点的节点公钥对区块提案信息进行加密得到的。
[0121]
本技术实施例中,共识节点返回的反馈信息用于指示目标区块中的交易数据被篡改。消息重发条件可以是一个数量阈值(例如2/3),也即是出块节点在检测到返回反馈信息的共识节点的数量达到数量阈值时,会对区块提案信息包括的目标区块中的交易数据进行校验。校验结果为通过指的是出块节点对目标区块中的交易数据进行校验,发现数据正确,则将校验结果确定为通过。
[0122]
可以理解的是,共识节点接收到的区块提案信息中包括交易数据,如果交易数据出现错误,至少包括以下两种情况。
[0123]
第一种是出块节点本身打包的交易数据出现异常,导致共识节点接收到的交易数据出现异常,第二种是出块节点本身打包的交易数据准确,但是共识节点在接收到交易数据的过程中,交易数据出现异常。共识节点会将反馈信息返回给出块节点,当出块节点接收到一定数量的共识节点发送的反馈信息后,出块节点此时就会判断是自身的数据出现异常,还是共识节点在接收区块提案信息的过程中出现的数据异常,从而导致的共识节点最终接收到的数据出现错误(即对区块提案信息包括的目标区块中的交易数据进行校验)。出块节点在检验到自身数据未出现异常(即校验结果为通过)时,利用区块链网络中的共识节
点的节点公钥对区块提案信息进行加密得到加密区块提案信息。共识节点可以接收该加密区块提案信息,用以重新得到区块提案信息。
[0124]
(2)、利用节点公钥对应的节点私钥对加密区块提案信息进行解密,得到解密后的区块提案信息。
[0125]
在一实施例中,上述节点公钥和节点私钥可以各自只产生一把,示例性的,存在一个出块节点(主节点),以及多个共识节点,出块节点利用唯一的节点公钥进行加密,得到加密区块提案信息,再将加密区块提案信息分别发送给多个共识节点。多个共识节点利用唯一的节点私钥对加密区块提案信息进行解密,得到解密后的区块提案信息。该方法可以较好地应用于具有可靠传输环境的情况下(例如联盟链),因为只利用唯一的节点公钥进行加密产生一个加密区块提案信息,不需要基于不同的共识节点多次产生对应的加密区块提案信息,提高了提案效率。同时,共识节点通过接收出块节点发送的加密区块提案信息,再进行解密得到区块提案信息,可以进一步降低在接收区块提案信息时数据出现异常的风险,保证了接收区块提案信息的数据准确性和完整性。
[0126]
(3)、对解密后的区块提案信息中包括的数据进行校验,并根据校验结果对目标区块执行操作。
[0127]
本技术实施例中,当标准默克尔树根和目标默克尔树根的比较结果为不相匹配时,会接收出块节点发送的加密区块提案信息,再基于加密区块提案信息进行解密,得到解密后的区块提案信息。再对解密后的区块提案信息中包括的数据进行校验,并根据校验结果对目标区块执行操作。其中,对解密后的区块提案信息中包括的数据进行校验的方法,可参考上述步骤s202~s204及其包括的各实施例中的具体描述,本实施例不再赘述。
[0128]
请参见图3c,图3c是本技术实施例基于上述方法提出的另一种区块链提案方法。在区块链提案流程中,包括出块节点提案和共识节点处理提案两个部分。
[0129]
在出块节点提案过程中,出块节点m首先构造区块a;然后将区块a的区块头(即本技术中的区块头信息)序列化成二进制数组b;再对二进制数组b进行摘要计算,得到数字摘要c;出块节点再对数字摘要c进行签名,得到数字签名d;出块节点最后将区块a和数字签名d打包成提案(a+d),广播到共识节点。
[0130]
在共识节点处理提案过程中,共识节点n首先接收出块节点广播的提案(a+d);然后提取提案(a+d)中的区块a,将提案中的区块a的区块头(即本技术中的区块头信息)序列化成二进制数组b1;共识节点再对二进制数组b1进行摘要计算,得到数字摘要c1;共识节点使用出块节点的公钥对数字签名d进行解密,得到数字摘要c2;然后比较数字摘要c1和数字摘要c2,若c1不等于c2,则拒绝处理区块a;若c1等于c2,共识节点则会计算区块a中的交易数据对应的默克尔哈希值(即本技术中的目标默克尔树根),再比较区块头中的标准默克尔树根与目标默克尔树根,若标准默克尔树根与目标默克尔树根相同,共识节点则处理区块a;若标准默克尔树根与目标默克尔树根不同,共识节点则拒绝处理区块a。
[0131]
通过上述方法,可以实现区块链提案,出块节点基于区块中的区块头信息构造数字签名,将目标区块和数字签名打包成提案发送给共识节点。共识节点接收目标区块和数字签名,通过目标区块中的区块头信息生成一个数字摘要,再对接收到的数字签名进行解密,生成另一个数字摘要,通过对两个摘要进行对比,共识节点可以验证接收到的提案中的区块头信息的真实性和完整性。再基于提案中的区块体信息生成目标默克尔根值,与目标
区块中的区块头信息的标准默克尔根值进行对比,共识节点可以验证接收到的提案中的区块体信息的真实性和完整性。
[0132]
由于在提案过程中构造数字签名的时间消耗较大,而在利用交易数据计算目标默克尔根值的时间消耗较小,基于本技术提出的方法,在构造数字签名时只需要处理数据量较小的区块头信息,无需序列化很大的交易列表(即区块体信息),使得参与构造数字签名的数据量大大减少,再根据接收到的区块体信息中的交易数据计算目标默克尔树根,与标准默克尔树根对比,从而保证了提案中区块体信息的真实性和完整性。在整体过程中,极大地提高了提案的效率,同时也保证了提案的消息可信度。
[0133]
在一实施例中,由于出块节点在进行广播时,具有实时性,共识节点在限定时间内可能无法接收到区块提案信息,或者无法接收到完整的区块提案信息。因此,可以先获取区块提案信息的接收情况,再根据接收情况执行后续操作,具体步骤如下。
[0134]
(1)、确定在目标时间内是否成功接收出块节点发送的区块提案信息。
[0135]
(2)、若在目标时间内成功接收出块节点发送的区块提案信息,则执行对所述区块提案信息中的区块头信息进行摘要计算,得到第一摘要信息的步骤。
[0136]
(3)、若在目标时间内未成功接收出块节点发送的区块提案信息,则向区块链网络中的共识节点广播目标消息,目标消息用于指示接收区块提案信息失败。
[0137]
本技术实施例中,判断在目标时间内是否成功接收出块节点发送的区块提案信息,可以从多个维度进行检验。示例性的,可以对区块提案信息的完整度进行检验,若在接收到的数据包中只存在区块头信息,或只存在区块体信息,则判断接收到的区块提案信息不完整,此时可以看作是上述在目标时间内未成功接收出块节点发送的区块提案信息的情况,则向区块链网络中的共识节点广播目标消息,目标消息用于指示接收区块提案信息失败,同时也可以指示区块提案信息不完整,以及丢失的数据类型。通过目标消息指示不同维度的区块提案信息失败的相关消息,进一步提高了异常提示消息的维度的丰富度,便于共识节点基于异常报告执行相应的运维操作。
[0138]
综上所述,本技术利用区块链数据结构的特点,在共识节点处理提案的过程中,首先接收出块节点发送的区块提案信息;再对区块提案信息中的区块头信息进行摘要计算,得到第一摘要信息,以及对区块提案信息中的目标数字签名进行解签处理,得到第二摘要信息。由于第一摘要信息和第二摘要信息都是对应区块头信息生成的,通过比对第一摘要信息和第二摘要信息可以对区块头信息进行数据校验,从而保证区块头信息的正确性;若第一摘要信息与第二摘要信息匹配,再根据接收到的交易数据计算目标默克尔树根,并将目标默克尔树根与区块提案信息中的标准默克尔树根进行比较。由于默克尔树根可以唯一标识区块体中部分或全部的交易数据,因此可以对区块体信息(交易数据)进行数据校验,从而保证区块体信息的正确性。该方法相比于通过对大量的交易数据进行摘要处理以实现数据验证,提高了处理提案的效率;在提案传输过程中,由于目标数字签名是基于区块头信息生成的,其数据量较小,相比于对整体目标区块(即区块头信息和区块体信息)进行签名来说,提高了提案传输效率。共识节点最后根据比较结果对目标区块执行相应的操作。
[0139]
本技术还提出构造平衡数据的方法,提高了通过默克尔树根验证交易数据的方法的适用性;共识节点最后根据比较结果对目标区块执行相应的操作。通过上述方法,在保证区块提案信息可信度的情况下,提升提案的生产效率。本技术还通过获取当前阶段负责出
块的主节点的节点标识与接收到的区块提案信息的节点标识进行节点标识验证,避免接收到异常节点发送的区块提案信息,为保证提案的安全性。本技术通过将区块头信息进行序列化处理,再进行摘要计算获取区块头信息对应的摘要信息,提高了摘要生成效率。
[0140]
本技术提出共识节点在检验到标准默克尔树根和目标默克尔树根的比较结果为不相匹配时,拒绝对目标区块进行处理,并向出块节点发送用于指示目标区块中的交易数据被篡改的反馈信息,以及针对不同阶段的判断结果(如摘要信息比对结果不吻合,默克尔树根比对结果不吻合),生成多种异常信息指示产生异常的情况,提高了异常提示信息的维度的丰富度,便于共识节点和出块节点基于多样化的异常提示信息进行相应的处理。本技术还提出共识节点接收出块节点发送的加密区块提案信息并进行解密,得到新的区块提案信息,可以进一步降低在共识节点在接收区块提案信息时数据出现异常的风险,进一步保证接收区块提案信息的正确性。本技术还提出共识节点在接收区块提案信息后,对接收到的区块提案信息进行完整度的校验,并生成能够指示完整度验证情况的目标消息,进一步提高了异常提示消息的维度的丰富度。通过上述方法,在保证区块提案信息可信度的情况下,可以提高出块节点生成提案的效率,以及共识节点处理提案的效率。
[0141]
请参见图4,图4是本技术实施例提供的一种基于区块链的数据处理方法的流程示意图,本技术实施例的数据处理方法以出块节点一侧进行描述的,该基于区块链的数据处理方法可包括:
[0142]
s401、创建目标区块,目标区块包括区块头信息和区块体信息,区块体信息包括交易数据,区块头信息包括根据交易数据确定的标准默克尔树根。
[0143]
本技术实施例中,出块节点在进行出块操作(例如进行区块共识)之前,需要先创建目标区块,目标区块就是出块节点进行出块操作的原始数据。区块中包括区块头和区块体,在区块头中包括父区块哈希值(prev block hash)、时间戳(timestamp)、版本号(version)、默克尔树根哈希值(merkel root hash)、目标值(nonce)和难度值(difficulty target)。在区块体中包括多个交易(例如图3a中交易1、交易2、交易3、交易4
……
交易n)。目标区块的具体结构请参见图3a,目标区块的详细介绍请参见前述实施例中的相关叙述,本实施例不再赘述。
[0144]
值得注意的是,区块头信息中包括标准默克尔树根,标准默克尔树根是根据交易数据确定的,根据交易数据确定标准默克尔树根的方法请参见图3b,以及前述实施例中根据区块提案信息中的交易数据确定目标默克尔树根的方法,本实施例不再赘述。
[0145]
s402、对区块头信息进行数字签名处理,得到目标数字签名,并根据目标区块和目标数字签名生成区块提案信息。
[0146]
在一实施例中,上述对区块头信息进行数字签名处理,得到目标数字签名,具体实现步骤如下。
[0147]
(1)、对区块头信息进行序列化处理,得到序列化数据。
[0148]
本技术实施例中,序列化处理是指将程序数据(例如本实施例中的区块体数据)转化成能被存储并传输的格式的过程,用以实现将序列化处理后的序列化数据进行存储、写入文件、数据传输等。序列化处理的逆过程是反序列化处理,可以根据流重构程序数据。在本技术中,通过结合序列化处理和反序列化处理,可以轻松地实现存储和传输数据。通过序列化技术生成序列化数据进行存储,下次重新运行程序或进行数据处理时,只需要读取已
存储的序列化数据进行相关操作即可,提高了数据处理速度。利用该方法应用于本技术中的摘要生成过程,提高了摘要生成效率。
[0149]
在一实施例中,可以使用基于java原生的objectoutputstream.write()和objectinputstream.read()的方法来进行对象序列化和反序列化;也可以使用基于json的方法进行序列化和反序列化;还可以使用基于xml的方法进行序列化和反序列化。
[0150]
其中,出块节点对区块头信息进行序列化处理,得到序列化数据的方法可参见前述实施例中共识节点对区块头信息进行序列化处理,得到序列化数据的方法的相关描述,本实施例不再赘述。
[0151]
(2)、对序列化数据进行摘要计算,得到区块头信息的第二摘要信息。
[0152]
本技术实施例中,摘要计算是指进行数字摘要(digital digest,也叫做数字指纹或数字手印)处理,将任意长度的消息变成固定长度的短消息。数字摘要处理可以看作是一个处理自变量为任意长度的消息的函数(即哈希函数),通过采用单向哈希函数将需要加密的明文处理成一串固定长度(128位)的密文。该密文又称为数字指纹。由于不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致,通过对序列化数据进行摘要计算,共识节点只需要比较区块头信息对应的第一摘要信息和第二摘要信息是否一致,就可以确认区块头信息是否被篡改,保证了区块头信息的真实性和完整性。
[0153]
在一实施例中,数字摘要处理可以采用md5(message-digest algorithm,一种密码散列函数),通过md5方法可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。除此之外,数字摘要处理还可以采用md2、md4、sha1、sha256、sha384和sha512中的任一种方法进行处理,本实施例不再赘述。
[0154]
其中,出块节点对序列化数据进行摘要计算,得到区块头信息的第二摘要信息的方法可参见前述实施例中共识节点对序列化数据进行摘要计算,得到区块头信息的第一摘要信息的方法的相关描述,本实施例不再赘述。
[0155]
(3)、利用签名私钥对第二摘要信息进行加密处理,得到目标数字签名。
[0156]
本技术实施例中,利用数字签名方法具有两个作用,即验证和加密。验证指的是验证消息发送方(即出块节点)的身份,以防伪造者;而加密指的是将明文(即第二摘要信息)进行加密,以防止泄露给非消息接收方。数字签名既可以使用“对称加密”的方法来实现(加密,解密使用相同的密钥,并且需要第三方仲裁者),也可以使用“非对称加密”的方法来实现(用公钥加密的信息只有私钥能解开,同样用私钥加密的东西,只有公钥能解开,并且使用两个密钥对,每个密钥对包含一个公钥和一个私钥,不需要第三方仲裁就可以完成数字签名)。
[0157]
s403、将区块提案信息发送给区块链网络中的共识节点,以使区块链网络中的共识节点对区块提案信息中包括的数据进行校验,并根据校验结果对目标区块执行操作。
[0158]
本技术实施例中,区块提案信息是将目标区块和目标数字签名打包生成的,将区块提案信息发送给区块链网络中的共识节点,等待共识节点对接收到的区块提案信息进行数据校验,当出块节点接收到共识节点返回的校验结果时,根据校验结果可以判断共识节点是否对区块提案信息中的目标区块达成共识,以执行后续的区块链操作(例如区块上链)。
[0159]
在一实施例中,区块提案信息中的目标数字签名还携带用于解密该目标数字签名
的公钥(或者说,共识节点存储有出块节点分发的能够解密该目标数字签名的公钥),上述对目标数字签名进行解签处理,得到区块头信息的第二摘要信息的过程,可以是出块节点利用该公钥对目标数字签名进行解签处理,得到区块头信息的第二摘要信息。
[0160]
在一实施例中,若共识节点检测到标准默克尔树根和目标默克尔树根的比较结果为不相匹配,拒绝对目标区块进行处理,并向出块节点发送反馈信息,反馈信息用于指示目标区块中的交易数据被篡改。出块节点可以接收共识节点返回的反馈信息,并基于反馈信息执行相应的操作,具体方法如下。
[0161]
(1)、接收区块链网络中的共识节点返回的反馈信息,反馈信息用于指示目标区块中的交易数据被篡改;若返回反馈信息的共识节点的数量满足消息重发条件,则对区块提案信息包括的目标区块中的交易数据进行校验。
[0162]
本技术实施例中,共识节点返回的反馈信息用于指示目标区块中的交易数据被篡改。消息重发条件可以是一个数量阈值(例如2/3),也即是出块节点在检测到返回反馈信息的共识节点的数量达到数量阈值时,会对区块提案信息包括的目标区块中的交易数据进行校验。校验结果为通过指的是出块节点对目标区块中的交易数据进行校验,发现数据正确,则将校验结果确定为通过。
[0163]
可以理解的是,共识节点接收到的区块提案信息中包括交易数据,如果交易数据出现错误,至少包括以下两种情况,第一种是出块节点本身打包的交易数据出现异常,导致共识节点接收到的交易数据出现异常,第二种是出块节点本身打包的交易数据准确,但是共识节点在接收到交易数据的过程中,交易数据出现异常。共识节点会将反馈信息返回给出块节点,当出块节点接收到一定数量的共识节点发送的反馈信息后,出块节点此时就会判断是自身的数据出现异常,还是共识节点在接收区块提案信息时出现的异常,从而导致的共识节点最终接收到的数据出现错误(即对区块提案信息包括的目标区块中的交易数据进行校验)。出块节点在检验到自身数据未出现异常(即校验结果为通过)时,利用区块链网络中的共识节点的节点公钥对区块提案信息进行加密得到加密区块提案信息。上述方法可以理解为,出块节点接收到共识节点交易数据被篡改的反馈信息,进行自身的交易数据验证,发现数据正确时(即是共识节点在接收时数据出现异常),将区块提案信息进行加密发送。共识节点可以接收该加密区块提案信息,用以重新得到区块提案信息。
[0164]
在一实施例中,出块节点接收区块链网络中的共识节点返回的反馈信息,该反馈信息可以是多个维度的。示例性的,该反馈信息可以是共识节点对区块提案信息的完整度进行检验,若在接收到的数据包中只存在区块头信息,或只存在区块体信息,则判断接收到的区块提案信息不完整时(此时可以看作是上述在目标时间内未成功接收出块节点发送的区块提案信息的情况),向出块节点返回的反馈信息,返回的反馈信息用于指示接收区块提案信息失败。同时,反馈信息也可以指示区块提案信息不完整,以及丢失的数据类型。出块节点通过接收区块链网络中的共识节点返回的多种维度的反馈信息,提高了异常提示消息的维度的丰富度,便于出块节点基于接收到的多种维度的反馈信息执行相应的操作。
[0165]
(2)、若校验结果为通过,则利用区块链网络中的共识节点的节点公钥对区块提案信息进行加密,得到加密区块提案信息。
[0166]
(3)、将加密区块提案信息发送给区块链网络中的共识节点。
[0167]
本技术实施例中,出块节点通过向共识节点发送加密区块提案信息,用于共识节
点利用节点私钥进行解密得到区块提案信息,可以提高区块提案信息的送达成功率,降低共识节点在接收区块提案信息时数据出现的异常的风险,提高了接收区块提案信息的数据准确性和完整性。
[0168]
在一实施例中,反馈信息是共识节点检测到区块提案消息中包括的标准默克尔树根和目标默克尔树根不相匹配时发送的;目标默克尔树根是共识节点检测到区块头信息的第一摘要信息和第二摘要信息不相匹配时,根据区块提案信息中的交易数据确定的;第一摘要信息是共识节点对区块提案信息中的区块头信息进行摘要计算得到的,第一摘要信息是共识节点对区块提案信息中的目标数字签名进行解签处理得到的。
[0169]
其中,反馈信息、目标默克尔树根、第一摘要信息和第二摘要信息的介绍可以参照本技术第一实施例的相关描述,本实施例不再赘述。
[0170]
在一实施例中,出块节点确定目标区块的标准默克尔树根的过程,可根据以下步骤实现。
[0171]
(1)、获取区块体信息中的多个交易数据,以及多个交易数据的序列。
[0172]
(2)、根据哈希算法确定多个第一数据组对应的多个第一哈希值,所述多个第一数据组中的每个第一数据组包括按照所述交易数据的序列进行排序的相邻的两个交易数据。
[0173]
(3)、根据哈希算法确定多个第二数据组对应的多个第二哈希值,多个第二数据组中的每个第二数据组包括相邻的两个第一哈希值。
[0174]
(4)、根据多个第二哈希值确定标准默克尔树根。
[0175]
其中,上述具体实现过程请参见本技术第一实施例中共识节点确定目标默克尔树根的相关描述,本实施例不再赘述。
[0176]
在一实施例中,当区块提案信息中的多个交易数据的数量为奇数时,出块节点还需要构造平衡数据,即可基于上述提供的方法计算默克尔树根,具体操作步骤如下。
[0177]
(1)、构造平衡数据,平衡数据通过复制多个交易数据中的最后一个交易数据得到。
[0178]
(2)、将平衡数据添加在多个交易数据的末尾。
[0179]
本技术实施例中,当多个交易数据的数量为奇数时,无法通过上述提供的方法计算默克尔树根,因为上述方法基于二叉树分类方法实现,无法应用于交易数据为奇数的情况。因此,出块节点通过复制多个交易数据中的最后一个交易数据,将其作为平衡数据放在交易数据的末尾,即可基于上述提供的方法计算默克尔树根,保证了默克尔树根的准确性。
[0180]
在一实施例中,平衡数据可以是多个交易数据中的最后一个交易数据,也可以是多个交易数据中的任意一个交易数据(例如多个交易数据中的第一个交易数据),同时平衡数据可以添加在多个交易数据的末尾,也可以添加在多个交易数据中的任意位置。需要说明的是,可以根据不同的业务数据合理配置平衡数据构造及处理方法,以获得更好的处理效果。
[0181]
在一实施例中,出块节点可以根据校验结果对目标区块执行操作。校验结果可以是共识节点针对所述区块提案信息的投票结果,那么出块节点根据校验结果对目标区块执行操作可以包括以下步骤。
[0182]
(1)、接收区块链网络中的共识节点针对区块提案信息的投票结果。
[0183]
(2)、根据投票结果确定共识结果。
[0184]
在一实施例中,根据投票结果确定共识结果的实现方法可以包括以下步骤。
[0185]
1)、确定投票结果中投票结果为赞成的投票结果数量,以及确定投票结果的投票结果总数。
[0186]
2)、计算投票结果为赞成的投票结果数量与投票结果总数之间的比值,并检测比值是否大于比例阈值。
[0187]
3)、若比值大于比例阈值,则确定共识结果为达成共识;若比值小于或等于比例阈值,则确定共识结果为未达成共识。
[0188]
(3)、若共识结果为达成共识,则将目标区块上链到区块链。
[0189]
本技术实施例中,投票结果可以是共识节点针对该目标区块中的交易数据的合法性、交易数据所对应的各笔交易的执行顺序等进行校验后得到的结果数据(例如赞成,或反对)。出块节点接收各个共识节点的投票结果,并基于投票结果确定是否将该目标区块上链。例如,若超过2/3的共识节点同意将目标区块上链(即超过2/3的共识节点的投票结果为赞成,达成共识),则将目标区块链添加到区块链上。
[0190]
综上所述,本技术利用区块链数据结构的特点,在进行区块链提案的过程中,出块节点通过区块头信息直接构造目标数字签名,相比于对整体目标区块(即区块头信息和区块体信息)进行签名来说,使参与构造数字签名的数据量大大减少,减少了构造数字签名的时间消耗。同时,在目标区块中存储根据交易数据确定的标准默克尔值,用于共识节点对接收到的交易数据进行验证,实现了区块头信息和交易数据的校验,保证了基于区块提案信息系进行处理后的处理结果的准确性;出块节点再根据目标数字签名和目标区块生成区块提案信息,提高了出块节点生成提案的效率;出块节点最后将区块提案信息发送给共识节点,根据共识节点返回的校验结果对目标区块执行相应的操作。
[0191]
本技术提出了出块节点在获取到共识节点在检验到标准默克尔树根和目标默克尔树根的比较结果为不相匹配时,发送的用于指示目标区块中的交易数据被篡改的反馈信息,以及获取共识节点针对不同阶段的判断结果(如摘要信息比对结果不吻合,默克尔树根比对结果不吻合)生成的多种异常信息,提高了异常提示信息的维度的丰富度,便于出块节点基于多样化的异常提示信息进行相应的处理。本技术还提出了出块节点在检测到未成功接收区块提案信息的共识节点数量达到阈值时,向共识节点发送加密区块提案信息,降低在共识节点在接收区块提案信息时数据出现异常的风险,保证接收区块提案信息的数据准确性和完整性。本技术还提出了出块节点可以根据校验结果判断是否达到区块上链的要求,以决定是否执行目标区块的上链操作。本技术也提出了出块节点确定目标默克尔树根,以及构造平衡数据的方法,提高了通过默克尔树根验证交易数据的方法的适用性。本技术也提出了出块节点通过将区块头信息进行序列化处理,再进行摘要计算获取区块头信息对应的摘要信息,提高了摘要生成效率。
[0192]
请参阅图5,是本技术实施例提供的一种基于区块链的数据处理装置的结构示意图。本实施例中所描述的数据处理装置可应用于前文所述第一实施例,包括:
[0193]
数据获取模块501,用于接收出块节点发送的区块提案信息;其中,上述区块提案信息包括目标区块和目标数字签名,上述目标区块包括区块头信息和区块体信息,上述目标数字签名是对上述区块头信息进行数字签名处理得到的,上述区块头信息包括根据上述区块体信息中的交易数据确定的标准默克尔树根;
[0194]
处理模块502,用于从上述区块提案信息中获取上述区块头信息和上述目标数字签名,对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息,以及对上述目标数字签名进行解签处理,得到上述区块头信息的第二摘要信息;
[0195]
上述处理模块502,还用于若上述第一摘要信息与上述第二摘要信息相匹配,则从上述区块提案信息中获取上述标准默克尔树根和上述交易数据,以及根据上述交易数据确定目标默克尔树根;
[0196]
上述处理模块502,还用于根据上述标准默克尔树根和上述目标默克尔树根的比较结果,对上述目标区块执行操作。
[0197]
可选地,上述处理模块502,在用于根据上述标准默克尔树根和上述目标默克尔树根的比较结果,对上述目标区块执行操作时,具体用于:
[0198]
若上述标准默克尔树根和上述目标默克尔树根的比较结果为相匹配,则对上述目标区块进行共识处理;
[0199]
若上述标准默克尔树根和上述目标默克尔树根的比较结果为不相匹配,则拒绝对上述目标区块进行处理,并向上述出块节点发送反馈信息,上述反馈信息用于指示上述目标区块中的交易数据被篡改。
[0200]
可选地,上述区块提案信息还包括上述出块节点的节点标识,上述处理模块502还用于:
[0201]
获取当前阶段负责出块的主节点的节点标识,以及从上述区块提案信息中获取上述出块节点的节点标识;
[0202]
若上述出块节点的节点标识与上述主节点的节点标识相匹配,则执行上述从上述区块提案信息中获取上述区块头信息和上述目标数字签名,对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息的步骤。
[0203]
可选地,上述处理模块502还用于:
[0204]
当上述标准默克尔树根和上述目标默克尔树根的比较结果为不相匹配时,接收上述出块节点发送的加密区块提案信息;上述加密区块提案信息是上述出块节点在返回上述反馈信息的共识节点的数量满足消息重发条件时,对上述区块提案信息包括的上述目标区块中的交易数据进行校验,并在校验结果为通过时,利用上述区块链网络中的共识节点的节点公钥对上述区块提案信息进行加密得到的;
[0205]
利用上述节点公钥对应的节点私钥对上述加密区块提案信息进行解密,得到解密后的区块提案信息;
[0206]
对上述解密后的区块提案信息中包括的数据进行校验,并根据校验结果对上述目标区块执行操作。
[0207]
可选地,上述处理模块502,在用于对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息时,具体用于:
[0208]
对上述区块头信息进行序列化处理,得到序列化数据;
[0209]
对上述序列化数据进行摘要计算,得到上述区块头信息的第一摘要信息。
[0210]
本实施例中所描述的数据处理装置可应用于前文上述第二实施例,包括:
[0211]
数据获取模块501,用于创建目标区块,上述目标区块包括区块头信息和区块体信息,上述区块体信息包括交易数据,上述区块头信息包括根据上述交易数据确定的标准默
克尔树根;
[0212]
处理模块502,用于对上述区块头信息进行数字签名处理,得到目标数字签名,并根据上述目标区块和上述目标数字签名生成区块提案信息;
[0213]
上述处理模块502,还用于将上述区块提案信息发送给区块链网络中的共识节点,以使上述区块链网络中的共识节点对上述区块提案信息中包括的数据进行校验,并根据校验结果对上述目标区块执行操作。
[0214]
可选地,上述处理模块502还用于:
[0215]
接收上述区块链网络中的共识节点返回的反馈信息,上述反馈信息用于指示上述目标区块中的交易数据被篡改;若返回上述反馈信息的共识节点的数量满足消息重发条件,则对上述区块提案信息包括的上述目标区块中的交易数据进行校验;
[0216]
若校验结果为通过,则利用上述区块链网络中的共识节点的节点公钥对上述区块提案信息进行加密,得到加密区块提案信息;
[0217]
将上述加密区块提案信息发送给上述区块链网络中的共识节点。
[0218]
可选地,上述反馈信息是上述共识节点检测到上述区块提案消息中包括的标准默克尔树根和目标默克尔树根不相匹配时发送的;上述目标默克尔树根是上述共识节点检测到上述区块头信息的第一摘要信息和第二摘要信息不相匹配时,根据上述区块提案信息中的上述交易数据确定的;上述第一摘要信息是上述共识节点对上述区块提案信息中的上述区块头信息进行摘要计算得到的,上述第一摘要信息是上述共识节点对上述区块提案信息中的上述目标数字签名进行解签处理得到的。
[0219]
可选地,上述处理模块502,在用于对上述区块头信息进行数字签名处理,得到目标数字签名时,具体用于:
[0220]
对上述区块头信息进行序列化处理,得到序列化数据;
[0221]
对上述序列化数据进行摘要计算,得到上述区块头信息的第二摘要信息;
[0222]
利用签名私钥对上述第二摘要信息进行加密处理,得到目标数字签名。
[0223]
需要说明的是,本技术实施例的数据处理装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
[0224]
请参阅图6,是本技术实施例提供的一种数据处理设备的结构示意图。本实施例中所描述的数据处理设备,包括:处理器601、存储器602以及网络接口603。上述处理器601、存储器602以及网络接口603之间可以交互数据。
[0225]
上述处理器601可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0226]
上述存储器602可以包括只读存储器和随机存取存储器,并向处理器601提供程序指令和数据。存储器602的一部分还可以包括非易失性随机存取存储器。在可行的实施例中,该数据处理设备可应用于前文所述的第一实施例,其中,上述处理器601调用上述程序
指令时用于执行:
[0227]
接收出块节点发送的区块提案信息;其中,上述区块提案信息包括目标区块和目标数字签名,上述目标区块包括区块头信息和区块体信息,上述目标数字签名是对上述区块头信息进行数字签名处理得到的,上述区块头信息包括根据上述区块体信息中的交易数据确定的标准默克尔树根;
[0228]
从上述区块提案信息中获取上述区块头信息和上述目标数字签名,对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息,以及对上述目标数字签名进行解签处理,得到上述区块头信息的第二摘要信息;
[0229]
若上述第一摘要信息与上述第二摘要信息相匹配,则从上述区块提案信息中获取上述标准默克尔树根和上述交易数据,以及根据上述交易数据确定目标默克尔树根;
[0230]
根据上述标准默克尔树根和上述目标默克尔树根的比较结果,对上述目标区块执行操作。
[0231]
可选地,上述处理器601,在用于根据上述标准默克尔树根和上述目标默克尔树根的比较结果,对上述目标区块执行操作时,具体用于:
[0232]
若上述标准默克尔树根和上述目标默克尔树根的比较结果为相匹配,则对上述目标区块进行共识处理;
[0233]
若上述标准默克尔树根和上述目标默克尔树根的比较结果为不相匹配,则拒绝对上述目标区块进行处理,并向上述出块节点发送反馈信息,上述反馈信息用于指示上述目标区块中的交易数据被篡改。
[0234]
可选地,上述区块提案信息还包括上述出块节点的节点标识,上述处理器601还用于:
[0235]
获取当前阶段负责出块的主节点的节点标识,以及从上述区块提案信息中获取上述出块节点的节点标识;
[0236]
若上述出块节点的节点标识与上述主节点的节点标识相匹配,则执行上述从上述区块提案信息中获取上述区块头信息和上述目标数字签名,对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息的步骤。
[0237]
可选地,上述处理器601还用于:
[0238]
当上述标准默克尔树根和上述目标默克尔树根的比较结果为不相匹配时,接收上述出块节点发送的加密区块提案信息;上述加密区块提案信息是上述出块节点在返回上述反馈信息的共识节点的数量满足消息重发条件时,对上述区块提案信息包括的上述目标区块中的交易数据进行校验,并在校验结果为通过时,利用上述区块链网络中的共识节点的节点公钥对上述区块提案信息进行加密得到的;
[0239]
利用上述节点公钥对应的节点私钥对上述加密区块提案信息进行解密,得到解密后的区块提案信息;
[0240]
对上述解密后的区块提案信息中包括的数据进行校验,并根据校验结果对上述目标区块执行操作。
[0241]
可选地,上述处理器601,在用于对上述区块头信息进行摘要计算,得到上述区块头信息的第一摘要信息时,具体用于:
[0242]
对上述区块头信息进行序列化处理,得到序列化数据;
[0243]
对上述序列化数据进行摘要计算,得到上述区块头信息的第一摘要信息。
[0244]
在可行的实施例中,该数据处理设备可应用于前文上述的第二实施例,其中,上述处理器601调用上述程序指令时用于执行:
[0245]
创建目标区块,上述目标区块包括区块头信息和区块体信息,上述区块体信息包括交易数据,上述区块头信息包括根据上述交易数据确定的标准默克尔树根;
[0246]
对上述区块头信息进行数字签名处理,得到目标数字签名,并根据上述目标区块和上述目标数字签名生成区块提案信息;
[0247]
将上述区块提案信息发送给区块链网络中的共识节点,以使上述区块链网络中的共识节点对上述区块提案信息中包括的数据进行校验,并根据校验结果对上述目标区块执行操作。
[0248]
可选地,上述处理器601还用于:
[0249]
接收上述区块链网络中的共识节点返回的反馈信息,上述反馈信息用于指示上述目标区块中的交易数据被篡改;若返回上述反馈信息的共识节点的数量满足消息重发条件,则对上述区块提案信息包括的上述目标区块中的交易数据进行校验;
[0250]
若校验结果为通过,则利用上述区块链网络中的共识节点的节点公钥对上述区块提案信息进行加密,得到加密区块提案信息;
[0251]
将上述加密区块提案信息发送给上述区块链网络中的共识节点。
[0252]
可选地,上述反馈信息是上述共识节点检测到上述区块提案消息中包括的标准默克尔树根和目标默克尔树根不相匹配时发送的;上述目标默克尔树根是上述共识节点检测到上述区块头信息的第一摘要信息和第二摘要信息不相匹配时,根据上述区块提案信息中的上述交易数据确定的;上述第一摘要信息是上述共识节点对上述区块提案信息中的上述区块头信息进行摘要计算得到的,上述第一摘要信息是上述共识节点对上述区块提案信息中的上述目标数字签名进行解签处理得到的。
[0253]
可选地,上述处理器601,在用于对上述区块头信息进行数字签名处理,得到目标数字签名时,具体用于:
[0254]
对上述区块头信息进行序列化处理,得到序列化数据;
[0255]
对上述序列化数据进行摘要计算,得到上述区块头信息的第二摘要信息;
[0256]
利用签名私钥对上述第二摘要信息进行加密处理,得到目标数字签名。
[0257]
具体实现中,本技术实施例中所描述的处理器601、存储装置602以及网络接口603可执行本技术实施例图2或图4提供的数据处理方法的相关实施例中所描述的实现方式,也可执行本技术实施例图5提供的数据处理装置的相关实施例中所描述的实现方式,在此不再赘述。
[0258]
在本技术所提供的几个实施例中,应该理解到,所揭露的方法、装置和系统,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的;例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式;例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0259]
本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储
有程序指令,所述程序执行时可包括如图2或者图4对应实施例中的基于区块链的数据处理方法的部分或全部步骤。
[0260]
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
[0261]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
[0262]
本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。服务器的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该服务器执行上述各方法的实施例中所执行的步骤。
[0263]
以上对本技术实施例所提供的一种基于区块链的数据处理方法、装置、设备以及介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。

技术特征:
1.一种基于区块链的数据处理方法,其特征在于,所述方法包括:接收出块节点发送的区块提案信息;其中,所述区块提案信息包括目标区块和目标数字签名,所述目标区块包括区块头信息和区块体信息,所述目标数字签名是对所述区块头信息进行数字签名处理得到的,所述区块头信息包括根据所述区块体信息中的交易数据确定的标准默克尔树根;从所述区块提案信息中获取所述区块头信息和所述目标数字签名,对所述区块头信息进行摘要计算,得到所述区块头信息的第一摘要信息,以及对所述目标数字签名进行解签处理,得到所述区块头信息的第二摘要信息;若所述第一摘要信息与所述第二摘要信息相匹配,则从所述区块提案信息中获取所述标准默克尔树根和所述交易数据,以及根据所述交易数据确定目标默克尔树根;根据所述标准默克尔树根和所述目标默克尔树根的比较结果,对所述目标区块执行操作。2.根据权利要求1所述的方法,其特征在于,所述根据所述标准默克尔树根和所述目标默克尔树根的比较结果,对所述目标区块执行操作,包括:若所述标准默克尔树根和所述目标默克尔树根的比较结果为相匹配,则对所述目标区块进行共识处理;若所述标准默克尔树根和所述目标默克尔树根的比较结果为不相匹配,则拒绝对所述目标区块进行处理,并向所述出块节点发送反馈信息,所述反馈信息用于指示所述目标区块中的交易数据被篡改。3.根据权利要求1所述的方法,其特征在于,所述区块提案信息还包括所述出块节点的节点标识,所述方法还包括:获取当前阶段负责出块的主节点的节点标识,以及从所述区块提案信息中获取所述出块节点的节点标识;若所述出块节点的节点标识与所述主节点的节点标识相匹配,则执行所述从所述区块提案信息中获取所述区块头信息和所述目标数字签名,对所述区块头信息进行摘要计算,得到所述区块头信息的第一摘要信息的步骤。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:当所述标准默克尔树根和所述目标默克尔树根的比较结果为不相匹配时,接收所述出块节点发送的加密区块提案信息;所述加密区块提案信息是所述出块节点在返回所述反馈信息的共识节点的数量满足消息重发条件时,对所述区块提案信息包括的所述目标区块中的交易数据进行校验,并在校验结果为通过时,利用所述区块链网络中的共识节点的节点公钥对所述区块提案信息进行加密得到的;利用所述节点公钥对应的节点私钥对所述加密区块提案信息进行解密,得到解密后的区块提案信息;对所述解密后的区块提案信息中包括的数据进行校验,并根据校验结果对所述目标区块执行操作。5.根据权利要求1~4中任一项所述的方法,其特征在于,所述对所述区块头信息进行摘要计算,得到所述区块头信息的第一摘要信息,包括:对所述区块头信息进行序列化处理,得到序列化数据;
对所述序列化数据进行摘要计算,得到所述区块头信息的第一摘要信息。6.一种基于区块链的数据处理方法,其特征在于,所述方法包括:创建目标区块,所述目标区块包括区块头信息和区块体信息,所述区块体信息包括交易数据,所述区块头信息包括根据所述交易数据确定的标准默克尔树根;对所述区块头信息进行数字签名处理,得到目标数字签名,并根据所述目标区块和所述目标数字签名生成区块提案信息;将所述区块提案信息发送给区块链网络中的共识节点,以使所述区块链网络中的共识节点对所述区块提案信息中包括的数据进行校验,并根据校验结果对所述目标区块执行操作。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:接收所述区块链网络中的共识节点返回的反馈信息,所述反馈信息用于指示所述目标区块中的交易数据被篡改;若返回所述反馈信息的共识节点的数量满足消息重发条件,则对所述区块提案信息包括的所述目标区块中的交易数据进行校验;若校验结果为通过,则利用所述区块链网络中的共识节点的节点公钥对所述区块提案信息进行加密,得到加密区块提案信息;将所述加密区块提案信息发送给所述区块链网络中的共识节点。8.根据权利要求7所述的方法,其特征在于,所述反馈信息是所述共识节点检测到所述区块提案消息中包括的标准默克尔树根和目标默克尔树根不相匹配时发送的;所述目标默克尔树根是所述共识节点检测到所述区块头信息的第一摘要信息和第二摘要信息不相匹配时,根据所述区块提案信息中的所述交易数据确定的;所述第一摘要信息是所述共识节点对所述区块提案信息中的所述区块头信息进行摘要计算得到的,所述第一摘要信息是所述共识节点对所述区块提案信息中的所述目标数字签名进行解签处理得到的。9.根据权利要求6~8中任一项所述的方法,其特征在于,所述对所述区块头信息进行数字签名处理,得到目标数字签名,包括:对所述区块头信息进行序列化处理,得到序列化数据;对所述序列化数据进行摘要计算,得到所述区块头信息的第二摘要信息;利用签名私钥对所述第二摘要信息进行加密处理,得到目标数字签名。10.一种基于区块链的数据处理装置,其特征在于,包括用于实现如权利要求1~5中任一项所述的基于区块链的数据处理方法的模块,或者,包括用于实现如权利要求6~9中任一项所述的基于区块链的数据处理方法的模块。11.一种数据处理设备,其特征在于,包括处理器、存储器和网络接口,所述处理器、存储器和网络接口相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,实现如权利要求1~5中任一项所述的基于区块链的数据处理方法,或者,实现如权利要求6~9中任一项所述的基于区块链的数据处理方法。12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,使得具有所述处理器的计算机设备实现如权利要求1~5中任一项所述的基于区块链的数据处理方法,或者,实现如权利要求6~9中任一项所述的基于区块链的数据处理方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或计算机指令,所述计算机程序或计算机指令被处理器执行时,实现如权利要求1~5中任一项所述的基于区块链的数据处理方法,或者,实现如权利要求6~9中任一项所述的基于区块链的数据处理方法。

技术总结
本申请提供了基于区块链的数据处理方法、装置、设备、介质及产品,方法包括:接收出块节点发送的包括目标区块和目标数字签名的区块提案信息,目标数字签名是对目标区块包括的区块头信息进行数字签名处理得到的,区块头信息包括根据区块体信息中的交易数据确定的标准默克尔树根;对区块头信息进行摘要计算得到第一摘要信息,以及对目标数字签名进行解签处理得到第二摘要信息;若第一摘要信息与第二摘要信息相匹配,则根据从区块提案信息中获取的交易数据确定目标默克尔树根;根据标准默克尔树根和目标默克尔树根的比较结果,对目标区块执行操作。本申请可以实现区块提案信息的数据校验,保证基于区块提案信息进行处理后的处理结果的准确性。果的准确性。果的准确性。


技术研发人员:刘区城 王宗友 张劲松 朱耿良 时一防 刘汉卿 郭英杰 廖志勇 蓝虎
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.03.07
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐