发明内容
为克服相关技术中存在的问题,本公开提供一种交易验证处理方法、装置、节点设备、计算机程序产品及非临时性计算机可读存储介质。
根据本公开实施例的第一方面,提供一种交易验证处理方法,应用于轻量级节点,包括:
向目的可信节点发送待验证交易的交易哈希,所述目的可信节点为区块链网络中可进行新区块创建并保存有完整区块链的节点;
接收所述目的可信节点根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后返回的验证结果。
第二方面,提供一种交易验证处理方法,应用于可信节点,所述可信节点为区块链网络中可进行新区块创建并保存有完整区块链的节点;
所述方法包括:
接收轻量级节点发送的待验证交易的交易哈希;
根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后,将验证结果返回给所述轻量级节点。
第三方面,提供一种交易验证处理装置,应用于轻量级节点,包括:
交易哈希发送模块,被配置为向目的可信节点发送待验证交易的交易哈希,所述目的可信节点为区块链网络中可进行新区块创建并保存有完整区块链的节点;
验证结果接收模块,被配置为接收所述目的可信节点根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后返回的验证结果。
第四方面,提供一种交易验证处理装置,应用于可信节点,所述可信节点为区块链网络中可进行新区块创建并保存有完整区块链的节点;
所述装置包括:
接收模块,被配置为接收轻量级节点发送的待验证交易的交易哈希;
验证模块,被配置为根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后,将验证结果返回给所述轻量级节点。
第五方面,提供一种节点设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器,被配置为向目的可信节点发送待验证交易的交易哈希,所述目的可信节点为区块链网络中可进行新区块创建并保存有完整区块链的节点;接收所述目的可信节点根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后返回的验证结果。
第六方面,提供一种节点设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器,被配置为接收轻量级节点发送的待验证交易的交易哈希;根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后,将验证结果返回给所述轻量级节点。
第七方面,提供一种计算机程序产品,所述计算机程序产品包含能够由可编程的装置执行的计算机程序,所述计算机程序具有当由所述可编程的装置执行时用于执行上述应用于轻量级节点的方法的代码部分。
第八方面,提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行上述应用于轻量级节点的方法。
第九方面,提供一种节点设备,包括:
上述述的非临时性计算机可读存储介质;以及
一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。
第十方面,提供一种计算机程序产品,所述计算机程序产品包含能够由可编程的装置执行的计算机程序,所述计算机程序具有当由所述可编程的装置执行时用于上述应用于可信节点的方法的代码部分。
第十一方面,提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行上述应用于可信节点的方法。
第十二方面,提供一种节点设备,包括:
上述的非临时性计算机可读存储介质;以及
一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。
本公开的实施例提供的技术方案可以包括以下有益效果:由可信节点对轻量级节点的待验证交易进行验证,简化了轻量级节点的验证过程,可同时进行交易验证和支付验证;可实现轻量级节点的验证过程的快速有效,并依靠区块链技术实现分布式及高可靠性;且由于轻量级节点对可信节点的确定是基于可信节点的节点状况,可有效保证验证过程中的安全性,保证信息同步,降低验证时延,提高验证效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
参见图1,为本公开一实施例的区块链网络的结构示意图。该区块链网络100包括:多个节点101。每个参与交易,区块存储,区块验证或转发等的P2P网络节点都可作为区块链中的节点。例如,节点101可为智能电话、平板电脑、服务器、具有嵌入式系统的电子设备等。
在一个实施例中,节点101通过向区块链网络发布交易(Transaction) 实现向区块链写入数据。节点101发布的交易包括:节点按照预设的交易数据格式生成的交易数据包,以及利用该节点自己的私钥对该交易数据包进行的数字签名。数字签名用于证明该节点的身份。
节点101发布的交易,被广播到区块链网络中的所有节点。区块链网络中的具有“矿工”功能的挖矿节点,构建新的空区块,作为候选区块。区块头的字段填充后,矿机开始挖矿,目标是找到一个使区块头哈希值小于难度目标的随机数(nonce)。求得解的矿机,将结果放进区块头,发送给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传递此区块。每个节点将该区块加到自身节点的区块链副本中。
当新区块在区块链网络中传递时,每一个节点在将它转发到其它节点之前,会进行一系列的测试去验证它,若没有通过验证,该区块将被拒绝;当该区块所包含的交易有效时,所有节点接受该区块。
区块是一种被包含在区块链里的聚合了交易信息的容器数据结构。每个区块包括区块头和区块主体。区块主体记录前一段时间内的所有交易信息。
在本公开的一实施例中,区块头包括:版本号(4字节,用于跟踪软件/ 协议的更新)、父区块哈希值(32字节,引用区块链中父区块的哈希值)、 merkle根(32字节,该区块中交易的merkle树根的哈希值,merkle_root_hash)、时间戳(4字节,该区块产生的近似时间)、难度目标(4字节,该区块工作量证明算法的难度目标)、随机数(4字节,工作量证明算法的计数器)。
在区块链网络中的全节点能够独立自主地校验所有交易。而轻量级节点 (SPV节点)只需保存区块头,而不用保存包含在每个区块中的交易信息。由此产生的不含交易信息的区块链,大小约只有完整区块链的1/1000。SPV 节点通过“简易支付验证(SPV)”的方式来完成交易验证。
本公开实施例中,在区块链网络中引入“可信节点”,这些节点是整个区块链网络中的全节点,具有完整的区块链,每个轻量级节点在同一时刻可连接到一个或多个可信节点,由可信节点为轻量级节点提供支付验证和交易验证。
参见图2,在本公开一实施例的区块链网络中,全节点201、203、205 等为可信节点,轻量级节点202、204、206……分别与一可信节点201连接;轻量级节点208、210、212……分别与一可信节点203连接;轻量级节点214、 216、218……分别与一可信节点205连接。由此,轻量级节点可分别通过与之连接的可信节点进行交易验证和支付验证。
在本公开的一实施例中,可信节点具有完整的区块链,且为了确保可信节点的可信赖性和验证的安全性,满足条件的全节点才能成为可信节点。在一个实施例中,可信节点具有“矿工”功能且创建过新区块。在另一些实施例中,可信节点除具有“矿工”功能且创建过新区块外,还需由可靠组织管理。且由于可信节点需要为一个或多个轻量级节点提供验证,其还需满足以下条件中的一者或多者:具备强大的算力、抵御网络攻击的能力、足够的网络带宽,以及可通过数据签名将日志存储到区块链中。
在一个实施例中,轻量级节点可根据可信节点的节点状况(例如,新区块的创建情况,网络情况,是否由可靠组织管理,或算力等),进行可信节点的选择和动态更新所连接的可信节点。
在本公开的一实施例中,为了提高验证的安全性,可信节点和轻量级节点之间为直连,即轻量级节点直接与可信节点连接,而不再通过区块链中的节点进行中转。轻量级节点和可信节点之间经一个或多个网络设备(例如,路由器、交换机等)实现直连,轻量级节点可将与各可信节点之间通信所经的网络设备的个数(传输所需的跳数)作为选择可信节点的依据之一来。
应理解,可信节点与轻量节点之间并不限于直连的方式,而不论直连与否,由于两者之间的通信有加密的过程,因此,可以保证安全性。
参见图3为本公开一实施例中轻量级节点对目的可信节点的发现(即选择确定目的可信节点)流程示意图。
在步骤301中,轻量级节点同步区块链的区块头。
在区块链网络中产生了新区块时,轻量级节点同步区块的区块头。
在步骤302中,轻量级节点根据区块头中的节点信息,确定候选可信节点。
在本公开的实施例中,可信节点在创建新区块后,会将节点信息存储到区块头中。由此,轻量级节点通过同步可得到包含可信节点的节点信息的区块头,这些节点信息将用于后续对可信节点进行选择确认。其中,节点信息至少包括:公钥和地址信息。地址信息可包括IP地址或统一资源定位符 (URL)。由此,轻量级节点可根据区块头中的节点信息,确定候选节点。
由于可信节点需要将节点信息写入到区块中,而信息写入只能在新区块创建时,才能进行。因此,可信节点只有在竞争到新区块创建权后,才能进行节点信息的写入操作。不参与“挖矿”及未能成功“挖矿”的节点不能实现节点信息的写入操作,因而不能成为可信节点。
在一个实施例中,可信节点再次创建新区块时,可对自身的节点信息进行更新。
参见图4,为本公开一实施例的可信节点创建的新区块的区块头的结构示意图。本公开实施例,在区块头中增加了两个字段,分别用于存储公钥和可信节点的地址信息。该两个字段的长度可根据实际情况进行设定,例如,存储公钥的字段的长度可为32字节~128字节,存储地址信息的字段可为16 字节~32字节。轻量级节点可根据公钥,利用与公钥相对应的私钥对信息进行加密后发送给可信节点。地址信息为可信节点的地址信息,轻量级节点可根据地址信息,实现向可信节点发送信息。
应理解,本公开实施例图4所示的区块头的结构仅为示意性的,区块头的结构还可为其它形式,只需包括了用于存储公钥和可信节点的地址信息的两个字段即可。
在步骤303中,轻量级节点根据候选可信节点的节点状况,从候选可信节点中选择可信节点作为目的可信节点。
轻量级节点可根据可信节点的可信度、与轻量级节点之间的距离、通信质量等节点状况,实现对可信节点的选择。
在一个实施例中,可对可信度、与可信节点之间的距离和通信质量设置权重(例如,三者的权重分别为0.5、0.3、0.2),由此,实现对可信节点的选择。
对于可信度,可将可信节点的可信度与其创建区块的时间进行关联,将创建了区块的可信节点,按照区块的创建时间进行倒序排序。创建区块的时间距离当前时间越近,则可信节点的可信度越高。此外,可信节点的可信度还可结合轻量级节点的历史验证记录确定,后续将详细介绍。
对于与可信节点之间的距离,可根据可信节点的地址信息确定,例如,根据地址信息的所属地域,确定与可信节点之间的距离;或根据地址信息,利用“traceroute命令”确定与可信节点之间的数据传输将经过多少跳转,从而可根据跳转的次数来衡量与可信节点之间的距离。
对于通信质量,其可包括:网络延迟、丢包率等。通信质量可通过测量获得,例如,轻量级节点发送空数据包给可信节点,根据可信节点返回的信息,可得到网络延迟、丢包率等信息。通信质量越高的可信节点,被轻量节点选择的概率越高。
轻量级节点选择确定了目的可信节点后,则轻量级节点已至少能与一个可信节点建立通信,实现交易验证和支付验证。
参见图5,为本公开一实施例的轻量级节点通过所选择的目的可信节点进行验证的流程示意图。该验证过程包括以下步骤:
在步骤501中,轻量级节点对待验证交易的交易哈希(tx_hash)进行公钥加密。
轻量级节点选定目的可信节点后,根据区块头中的公钥,对交易哈希进行加密。在本公开的实施例中,交易哈希是根据待验证的交易计算得到的。
在步骤502中,轻量级节点将公钥加密后的交易哈希发送给目的可信节点。
轻量级节点根据区块头中目的可信节点的地址信息,将加密后的交易哈希发送给目的可信节点。
在步骤503中,目的可信节点利用私钥对接收到的交易哈希进行解密。
目的可信节点利用私钥对公钥解密的交易哈希进行解密后获得交易哈希。
在步骤504中,目的可信节点根据交易哈希,对待验证交易进行交易验证和支付验证。
在本公开的一实施例中,目的可信节点根据交易哈希,进行交易验证包括以下步骤:遍历完整区块链,定位待验证交易对应的账户,查询该账户上是否曾经有足够的金额;遍历完整区块链,查询该账户是否包含多个输出(是否存在双花);通过验证脚本确定该账户的支配权。
在本公开的一实施例中,目的可信节点根据交易哈希,进行支付验证包括以下步骤:根据交易哈希,确定待验证交易所在的区块;取得对应区块的交易信息,并根据交易信息计算merkle根;若计算结果与区块头中的merkle 根相等,则待验证交易真实存在,且已经被记录在区块链中;根据区块在区块链中的位置,确定该区块得到了多少确认(若经过了六次区块确认,则该交易在区块链上被承认合法)。
在步骤505中,目的可信节点将验证结果通过私钥签名后,返回给轻量级节点。
在本公开的一实施例中,验证结果包括:交易验证结果(例如,验证成功或失败)和支付验证结果(例如,验证成功或失败)。在一些实施例中,目的可信节点将待验证交易的具体信息,例如,merkle根(merkle_root_hash),是否被记录在区块链中,得到了多少确认等。目的可信节点对验证结果进行私钥签名,可对自己的验证进行背书,以证明自己的身份,表明自己是该验证结果的验证者。
轻量级节点接收到私钥签名后的验证结果,利用公钥进行解密后,即获得验证结果,实现了对待验证交易的验证。
在本公开的一实施例中,为了进一步保证交易的安全性,轻量级节点可利用目的可信节点的公钥对自己的公钥加密后,发送给目的可信节点,实现与目的可信节点交换公钥。由此,目的可信节点私钥签名后验证结果,还可通过公钥进行加密,轻量级节点分别用自己的私钥和目的可信节点的公钥进行两次解密后,获得验证结果。
本公开实施例的验证方法,由可信节点对轻量级节点的待验证交易进行验证,简化了轻量级节点的验证过程,可同时进行交易验证和支付验证;且由于轻量级节点对可信节点的确定是基于可信节点的节点状况,可有效保证验证过程中的安全性,保证信息同步,降低验证时延,提高验证效率。
在本公开的另一实施例中,为了进一步确保验证的安全性,轻量级节点接收到目的可信节点返回的验证结果,则向区块链网络发布交易,以将相关的验证记录写入到区块链中。在一个实施例中,验证记录包括:返回验证结果的可信节点的节点信息和/或节点标识(例如,目的节点的设备编号等唯一标识)。
区块链网络中的节点,接收到轻量级节点发布的包含验证记录的交易后,即进行“挖矿”竞争新区块的创建权。最终由一个竞争成功的节点,将轻量级节点发布的交易写入到新区块中,并发布到区块链网络中。从而,实现将验证记录存储到区块链的一区块中。
由此,可对轻量级节点的验证记录进行日志留存。这些日志可作为轻量级节点选择目的可信节点的依据,用于甄别可信节点的可信度,例如,返回验证结果次数越多的可信节点,其可信度越高。
在一些实施例中,轻量级节点还可将验证记录存储到本地。
参见图6,在本公开的一实施例中,区块链网络中包括:轻量级节点601,以及与轻量级节点601连接的一个或多个目的可信节点602,目的可信节点 602为区块链网络中可进行新区块创建并保存有完整区块链的节点。目的可信节点602可完成新区块的发现,数据同步等。轻量级节点601可为客户端等设备,其向区块链网络同步仅包括区块头信息的链。区块头包括可信节点的地址信息和公钥等信息。轻量级节点601根据包括新增可信节点的节点信息的区块头,选择一个或多个可信节点作为目的可信节点。由此,轻量级节点至少能向一个目的可信节点发起通信,进行验证。
轻量级节点601向目的可信节点602发送经公钥加密的待验证交易的交易哈希。目的可信节点602利用私钥解密后,根据交易哈希,对待验证交易进行支付验证和交易验证,并将验证结果返回给轻量级节点601。为了确保安全性,返回的验证结果经私钥签名。
轻量级节点601接收到目的可信节点602返回的验证结果,则向区块链网络发布包含验证记录的交易,以将验证记录写入到区块链中。轻量级节点 601将验证结果写入日志,日志中的历史验证记录,可作为以后选择目的可信节点的依据。
参见图7,相应的本公开实施例还提供一种交易验证处理装置,应用于轻量级节点,该装置700包括:
交易哈希发送模块701,被配置为向目的可信节点发送待验证交易的交易哈希,所述目的可信节点为区块链网络中可进行新区块创建并保存有完整区块链的节点;
验证结果接收模块702,被配置为接收所述目的可信节点根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后返回的验证结果。
在一个实施例中,装置700还包括:
同步模块703,被配置为同步区块链网络中的可信节点创建的新区块的区块头,所述区块头中包括可信节点的节点信息,所述节点信息包括:公钥和地址信息。
候选可信节点确定模块704,被配置为根据区块头中的节点信息,确定候选可信节点;
目的可信节点确定模块705,被配置为根据候选可信节点的节点状状况,从所述候选可信节点中选择可信节点作为所述目的可信节点,所述节点状况至少包括以下其中之一:可信度、与所述轻量级节点之间距离和通信质量。
在一个实施例中,交易哈希发送模块701包括:
加密子模块,被配置为利用目的可信节点公钥对所述交易哈希进行加密;
发送子模块,被配置为根据所述目的可信节点的地址信息,将加密后的交易哈希发送给所述目的可信节点。
在一个实施例中,装置700还包括:
交易发布模块706,被配置为接收到所述目的可信节点返回的验证结果,则向所述区块链网络发布包含验证记录的交易,以将验证记录写入到区块链中,所述验证记录包括:返回验证结果的目的可信节点的节点信息和/或节点标识。
参见图8,相应的本公开实施例还提供一种交易验证处理装置,应用于可信节点,可信节点为区块链网络中可进行新区块创建并保存有完整区块链的节点。该装置800包括:
接收模块801,被配置为接收轻量级节点发送的待验证交易的交易哈希;
验证模块802,被配置为根据所述交易哈希,对所述待验证交易进行支付验证和交易验证后,将验证结果返回给所述轻量级节点。
在一个实施例中,装置800还包括:
新区块创建模块803,被配置为在创建新区块时,将节点信息写入到区块头中,所述节点信息包括:公钥和地址信息。
在一个实施例中,验证模块802,还被配置为将验证结果进行私钥签名后返回给轻量级节点。
在一个实施例中,验证模块802包括交易验证子模块,被配置为遍历完整区块链,定位待验证交易对应的账户;查询所述账户上是否曾经有足够的金额;遍历完整区块链,查询所述账户是否包含多个输出;通过验证脚本确定所述账户的支配权。
在一个实施例中,验证模块802包括支付验证子模块,被配置为根据所述交易哈希,确定待验证交易所在的区块;取得对应区块的交易信息,并根据交易信息计算merkle根,若计算结果与区块头中的merkle根相等,则待验证交易真实存在,且已经被记录在区块链中;根据区块在区块链中的位置,确定该区块得到了多少确认。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开实施例,可实现轻量级节点的验证过程的快速有效,并依靠区块链技术实现分布式及高可靠性;由可信节点对轻量级节点的待验证交易进行验证,简化了轻量级节点的验证过程,可同时进行交易验证和支付验证;且由于轻量级节点对可信节点的确定是基于可信节点的节点状况,可有效保证验证过程中的安全性,保证信息同步,降低验证时延,提高验证效率。
图9是根据一示例性实施例示出的一种用于交易验证处理方法的装置 900的框图,该装置900可以是轻量级节点设备或可信节点设备。如图9所示,该装置900可以包括:处理器901,存储器902,多媒体组件903,输入 /输出(I/O)接口904,以及通信组件905。
其中,处理器901用于控制该装置900的整体操作,以完成上述的交易验证处理方法中的全部或部分步骤。存储器902用于存储操作系统,各种类型的数据以支持在该装置900的操作,这些数据的例如可以包括用于在该装置900上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器902可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称 ROM),磁存储器,快闪存储器,磁盘或光盘。
多媒体组件903可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器902或通过通信组件905发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口904为处理器901和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件905用于该装置900与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件905可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,装置900可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称 PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的交易验证处理方法。
在另一示例性实施例中,还提供了一种计算机程序产品,所述计算机程序产品包含能够由可编程的装置执行的计算机程序,所述计算机程序具有当由所述可编程的装置执行时用于执行上述的交易验证处理方法的代码部分。
在另一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器902,上述指令可由装置900的处理器901 执行以完成上述的交易验证处理方法。示例地,该非临时性计算机可读存储介质可以是ROM、随机存取存储器(Random Access Memory,简称RAM)、 CD-ROM、磁带、软盘和光数据存储设备等。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
流程图中或在本公开的实施例中以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所述技术领域的技术人员所理解。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。