用于在区块链网络中验证数据的方法和装置制造方法及图纸

技术编号:37347422 阅读:14 留言:0更新日期:2023-04-22 21:43
用于表明默克尔证明数据的方法、装置和数据结构,该默克尔证明数据包括用于交易在区块内的交易的有序集中的位置的索引位置字段。当自下而上跟踪默克尔路径时,索引使得能够在计算上直接确定每个计算出的元素的左边/右边位置。用于使用索引执行默克尔证明的方法和装置包括默克尔证明过程中的至少一个扩展的有效性检查。在某些情况下,扩展的有效性检查使得能够验证区块的交易计数和/或索引有效性的证明。明。

【技术实现步骤摘要】
【国外来华专利技术】用于在区块链网络中验证数据的方法和装置


[0001]本公开涉及区块链网络,并且具体地涉及用于在区块链网络中验证数据的方法和装置,例如,验证区块内交易的存在和交易的索引。

技术介绍

[0002]区块链是指一种分布式数据结构的形式,其中,在分布式对等(P2P)网络(以下称为“区块链网络”)中的多个节点中的每一个处维护区块链的复制副本,并且该复制副本被广泛地宣传。区块链由成链的数据区块形成,其中,每个区块包括一个或多个交易。除了所谓的“创币(coinbase)交易”之外,每个交易都指向回序列中的在先交易,该序列可能跨越一个或多个区块,直到一个或多个创币交易为止。在下面对创币交易进行讨论。提交到区块链网络的交易包括在新区块中。新区块由通常称为“挖掘”的过程创建,该过程涉及多个节点中的每一个竞争执行“工作量证明”,即,基于等待被包括在区块链的新区块中的有序且经验证的待定交易的定义的集合的表示来求解加密难题。应该注意的是,区块链可以在节点处被修剪,并且可以通过仅发布区块头来实现区块的发布。
[0003]区块链中的交易用于执行以下一项或多项:传送数字资产(即,许多数字令牌),对虚拟分类账或注册表中的日记帐条目的集合进行排序,接收和处理时间戳条目,和/或对索引指针在时间上排序。还可以利用区块链以便在区块链之上叠放附加功能。区块链协议可以允许在交易中存储附加的用户数据或数据索引。单个交易内可以存储的最大数据容量没有预先指定的限制,因此可以并入日益复杂的数据。例如,这可以用于在区块链中存储电子文档,或音频或视频数据。
[0004]区块链网络的节点(通常称为“矿工”)执行分布式交易注册和验证过程,下面将对此进行详细描述。总之,在该过程期间,节点验证交易并将其插入区块模板中,节点试图为该区块模板标识有效的工作量证明解。一旦找到有效的解,就将新区块传播到网络的其他节点,从而使每个节点都能够在区块链上记录新区块。为了将交易记录在区块链中,用户(例如,区块链客户端应用)将交易发送到网络的节点之一以进行传播。接收交易的节点可以竞相寻找将经验证的交易并入到新区块中的工作量证明解。每个节点被配置为执行相同的节点协议,该节点协议将包括交易有效的一个或多个条件。将不会传播无效交易,也不会将无效交易并入到区块中。假设交易经过验证并因此被接受到区块链上,因此交易(包括任何用户数据)则将作为不可变的公共记录在区块链网络中的每个节点处保持为已注册和已索引的。
[0005]成功求解出工作量证明难题以创建最新的区块的节点通常被奖励称为“创币交易”的新交易,该交易分配一定数额的数字资产(即,许多令牌)。无效交易的检测和拒绝通过竞争节点的动作执行,竞争节点充当网络代理并被激励报告和阻止不当行为。信息的广泛发布允许用户不断地审计节点的性能。仅发布区块头允许参与方确保区块链的持续完整性。
[0006]在“基于输出”的模型(有时称为基于UTXO的模型)中,给定交易的数据结构包括一
个或多个输入和一个或多个输出。任何可花费的输出包括指定从交易的进行序列(proceeding sequence)中可导出的数字资产的数额的元素。可花费的输出有时被称为UTXO(“未花费的交易输出”)。输出还可以包括锁定脚本,该锁定脚本指定未来赎回输出的条件。锁定脚本是限定验证和转移数字令牌或资产所需条件的阐述。(除了创币交易之外的)交易的每个输入都包括指向先前交易中的这种输出的指针(即,引用),并且还可以包括用于解锁所指向的输出的锁定脚本的解锁脚本。考虑交易对可以被标记为第一交易和第二交易(或“目标”交易)。第一交易包括至少一个输出,该至少一个输出指定数字资产的数额,并且具有限定解锁该输出的一个或多个条件的锁定脚本。第二交易即目标交易具有包括指向第一交易的输出的指针的至少一个输入和用于解锁第一交易的输出的解锁脚本。
[0007]在这种模型中,当第二交易即目标交易被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性标准之一将是解锁脚本满足在第一交易的锁定脚本中限定的所有一个或多个条件。另一个有效性标准将是第一交易的输出尚未被另一个更早的有效交易赎回。根据这些条件中的任何一个发现目标交易无效的任何节点都不会传播它(作为有效交易,但可能登记无效交易),也不会将其包括在新区块中以记录在区块链中。
[0008]替代类型的交易模型是基于账户的模型。在这种情况下,每个交易都不会通过引用回在过去交易的序列中在先交易的UTXO来限定要转移的数额,而是通过参考绝对账户余额来限定要转移的数额。所有账户的当前状态由独立于区块链的节点存储,并不断被更新。
[0009]为了使区块链网络对大量参与方实际有用,终端用户装置可以运行客户端应用(有时称为“钱包”或简化支付验证(SPV)软件)。这种客户端应用缺乏完整区块链节点的功能,并且没有区块链的完整副本。终端用户装置可以通过其客户端应用向区块链节点发送针对证明特定交易存在于区块链中(即,特定交易已被包括在区块中,意味着它已被“确认”)的数据的请求。具有用于提供这种数据并使终端用户装置或其他节点能够证明区块中包括交易和/或证明区块的其他特征的改进方法和装置将是有利的。
附图说明
[0010]现在将通过示例的方式参考附图,附图示出了本申请的示例实施例,并且其中:
[0011]图1示出了用于实现区块链的示例系统;
[0012]图2示出了示例交易协议;
[0013]图3A示出了客户端应用的示例实现;
[0014]图3B示出了客户端应用的用户界面的示例;
[0015]图4示出了用于区块链节点的示例节点软件;
[0016]图5A示出了默克尔树的示例;
[0017]图5B示出了“部分”默克尔树的示例;
[0018]图6示出了默克尔路径的示例;以及
[0019]图7以流程图形式示出了验证区块链数据的一个示例方法。
[0020]在附图中使用相同的附图标记来表示相同的元素和特征。
具体实施方式
[0021]在一个方面,可以提供一种用于确定区块链中数据的有效性的计算机实现的方
法。该方法可以包括:从远程节点接收区块内交易的索引和用于默克尔证明的散列的有序集;从默克尔树的底部层级开始,对于默克尔树的每一层级直到到达顶部层级为止,按顺序从散列的有序集中选择提供的散列,以基于索引确定的顺序将提供的散列和当前层级的计算出的散列级联,对级联进行散列以找到上面一层级的计算出的散列;根据索引和计算出的散列及其对应的来自散列的有序集的提供的散列的每对来确定交易是否是区块中最后的交易;将顶部层级的计算出的散列与区块头中的默克尔根进行比较;以及输出比较和确定的结果。
[0022]在一些实现方式中,接收到的索引可以是位置索引,该位置索引指示交易在区块内的交易的有序集中的位置。在一些示例中,该方法还可以包括:对于底部层级之上的每个层级,基于低一层级的索引模2来确定该层级的索引。
[0023]在一些实现方式中,确定交易是区块中最后的交易可以包括确本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种用于确定区块链中数据的有效性的计算机实现的方法,包括:从远程节点接收区块内交易的索引和用于默克尔证明的散列的有序集;从默克尔树的底部层级开始,对于所述默克尔树的每一层级,直到到达顶部层级为止,按顺序从所述散列的有序集中选择提供的散列,以基于所述索引确定的顺序将对于当前层级的所述提供的散列和计算出的散列级联,对所述级联进行散列以找到上一层级的计算出的散列;根据所述索引和所述计算出的散列及其对应的来自所述散列的有序集的提供的散列的每对,来确定所述交易是否是区块中最后的交易;将所述顶部层级的计算出的散列与区块的头中的默克尔根进行比较;以及输出比较和确定的结果。2.根据权利要求1所述的方法,其中,接收到的索引是位置索引,所述位置索引指示所述交易在所述区块内的交易的有序集中的位置。3.根据权利要求2所述的方法,还包括:对于底部层级之上的每个层级,基于下一层级的索引模2来确定该层级的索引。4.根据权利要求1至3中任一项所述的方法,其中,确定所述交易是区块中最后的交易包括:确定除了所述顶部层级的计算出的散列之外,每个计算出的散列是所述默克尔树内的右边元素。5.根据权利要求1至4中任一项所述的方法,其中,确定所述交易是区块中最后的交易包括:对于作为其配对中的左边元素的任何计算出的散列,确定其对应的提供的散列等于计算出的散列。6.根据权利要求1至5中任一项所述的方法,其中,确定所述交易是否是区块中最后的交易包括:基于确定至少一个计算出的散列是左边元素并且其对应的提供的散列不等于所述至少一个计算出的散列,来确定所述交易不是区块中最后的交易。7.根据...

【专利技术属性】
技术研发人员:S
申请(专利权)人:恩晨特许股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1