区块链区块和存在证明的制作方法

文档序号:37243177发布日期:2024-03-06 17:13阅读:144来源:国知局
区块链区块和存在证明的制作方法

本公开涉及一种构建区块链区块的方法,并且涉及一种执行证明以确定目标区块链事务是否存在于区块链区块中的方法。


背景技术:

1、区块链是指一种分布式数据结构,其中在分布式对等(p2p)网络(以下称为“区块链网络”)中的多个节点中的每个节点处维护区块链的副本,并且广泛公开该副本。区块链包括一系列数据区块,其中每个区块包括一个或多个事务(transaction)。除所谓的“coinbase事务”外,每个事务都指向序列中的先前事务,该序列可以跨越一个或多个区块,回到一个或多个coinbase事务。coinbase事务将在下文进一步讨论。提交给区块链网络的事务包括在新区块中。新区块的创建过程通常称为“挖掘”,该过程涉及多个节点中的每个节点争相执行“工作证明(proof-of-work)”,即,基于等待被包括在区块链的新区块中的一组定义的有序且核实有效的未决事务的表示解决加密难题。应当注意的是,区块链可以在一些节点处被修剪(prune),并且区块的发布可以通过仅发布区块头来实现。

2、区块链中的事务可用于以下目的中的一个或多个:传送数字资产(即,一定数量的数字通证);对虚拟化分类账或注册表中的一组条目进行排序;接收和处理时间戳条目;和/或对索引指针按时间排序。也可利用区块链实现区块链上的层级附加功能。例如,区块链协议可允许在事务中存储附加的用户数据或数据索引。能够存储在单个事务中的最大数据容量没有预先指定的限制,因此可以并入越来越复杂的数据。例如,这可用于在区块链中存储电子文档、音频或视频数据。

3、区块链网络的节点(通常称为“矿工”)执行分布式事务注册和验证过程,这将后续更详细地描述。总之,在该过程中,节点核实事务并将这些事务插入到区块模板中,这些事务尝试为该区块模板标识有效的工作证明解。一旦找到有效的解,新区块便会被传播到网络的其它节点,从而使得每个节点能够在区块链上记录新区块。为了将事务记录在区块链中,用户(例如,区块链客户端应用程序)将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的节点可以争相寻找将核实有效的事务并入新区块的工作证明解。每个节点被配置为执行相同的节点协议,该协议将包括用于确认事务有效的一个或多个条件。无效事务将不会传播或并入到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此在区块链网络中的每个节点上作为不可改变的公共记录进行注册和索引。

4、成功解决工作证明难题可创建最新区块的节点通常被奖励一个称为“coinbase事务”的新事务,该事务分发数字资产数额,即通证数量。无效事务的检测和拒绝是通过竞争节点的行动来执行的,这些竞争节点充当网络的代理并且通过激励报告和阻止不正当行为。信息的广泛发布使得用户可以连续地审计节点的性能。仅发布区块头使得参与者可以确保区块链具有持续完整性。

5、在“基于输出的”模型(有时称为基于utxo的模型)中,给定事务的数据结构包括一个或多个输入和一个或多个输出。任何可花费输出包括指定数字资产数额的元素,该元素可从进行中的事务序列导出。可花费输出有时称为utxo(“未花费事务输出”)。输出还可以包括锁定脚本,该锁定脚本指定输出的未来赎回条件。锁定脚本是限定核实和传送数字通证或资产所必需的条件的谓词。事务(除coinbase事务之外)的每个输入包括指向先前事务中的此类输出的指针(即引用),并且还可以包括解锁脚本,用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或多个条件的锁定脚本。第二目标事务包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。

6、在此类模型中,当第二目标事务被发送到区块链网络以在区块链中传播和记录时,在每个节点处应用的有效性条件之一将是解锁脚本满足在第一事务的锁定脚本中定义的一个或多个条件中的所有条件。另一条件将是第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务(作为有效事务,但可能注册无效事务),也不将该事务包括在要记录在区块链中的新区块中。

7、另一种事务模型是基于账户的模型。在这种情况下,每个事务均不通过参考过去事务序列中先前事务的utxo来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由节点单独存储到区块链中,并不断更新。


技术实现思路

1、在区块链的传统实现方式(例如,比特币、莱特币和以太币)中,通常会发现至少在实现方式的某个方面使用默克尔树。在区块链设计中普遍使用默克尔树可以归因于这些设计通常旨在最大化系统中的事务吞吐量。因此,在这些系统中使用默克尔树进行紧凑数据表示是一种自然的选择,因为计算默克尔存在证明的计算复杂性为其中n是所述默克尔树表示的数据集中的元素总数。在区块链系统的情况下,可以将n视为区块链的单个区块中包含的事务数量,并且在假设处于稳态的情况下,可以将它视为与区块链的事务吞吐量对应的常量。考虑到二叉树的层数也为同样将为大量元素构建默克尔树视为较为高效。

2、相反,在n预期较小的情况下,默克尔树对替代区块链系统的适用性显著不同。实际上,对于设计上每个区块具有较小n的区块链,使用默克尔树来表示区块中的事务集可能会由于所述默克尔树本身的计算而增加不必要的计算开销。在区块生产频率f非常高(例如,远远大于10分钟)的此类区块链中,这个问题可能会进一步加剧,因为每个区块都会遇到这种额外的开销,这会增加区块链核实者的总体运营支出。

3、因此,希望使用事务集的更高效的替代表示,所述事务集的事务构成区块链的区块。更高效的事务表示将提供低负担的区块链架构,所述架构可以用作具有低n和高f的区块链系统的基础。更高效的事务表示将实现区块链在设计上对于核实者和用户而言都是“低负担”的特性。

4、根据本文公开的一个方面,提供了一种计算机实现的方法,用于构建区块链的候选区块,其中所述方法包括:获取区块链事务的有序序列;通过对数据对象进行哈希处理来获取事务表示(transaction representation),其中所述数据对象包括所述区块链事务的有序序列;以及,构建所述候选区块,其中所述候选区块包括所述事务表示。

5、区块构建者或区块生产者(例如,区块链节点)例如从其他块生产者的用户获取事务集。事务可以从等待放置到新区块链区块中的事务池中获取。所述区块生产者结合使用事务的有序序列的哈希来表示所述事务集,而不是使用默克尔根来表示所述事务集。也就是说,组合(例如,级联)所述事务,并对所述组合进行哈希处理以产生所述事务表示。例如,可以使用sha哈希函数家族中的一个或多个sha哈希函数(例如,sha-256)对所述事务的有序序列进行哈希处理。所述事务集可以由所述区块生产者放置在所述有序序列中(例如,通过为每个事务分配相应索引),或者每个事务可以在获取所述事务时与相应索引相关联。在已经将所述事务表示包括在所述候选区块中之后,然后可以将所述候选区块提交给所述区块链网络,以供所述网络的节点核实。

6、根据本文公开的一个方面,提供了一种计算机实现的方法,用于确定区块链的区块是否包括目标区块链事务,其中所述区块包括事务表示,所述事务表示是通过对区块链事务的有序序列进行哈希处理而获取的,并且其中所述方法包括:获取区块链事务集,其中所述区块链事务集包括所述目标事务,并且其中所述区块链事务集中的每个区块链事务与相应索引相关联;通过将每个区块链事务放置在区块链事务的候选有序序列中对应于与所述相应区块链事务相关联的所述相应索引的位置,来构建所述区块链事务的候选有序序列;通过对所述区块链事务的候选有序序列进行哈希处理来获取候选事务表示;以及,基于所述事务表示和所述候选事务表示的比较,来确定所述区块是否包括所述目标区块链事务。

7、根据本公开,可以使用所述事务的有序序列的所述哈希来证明事务是否作为构成区块链区块的事务集的一部分而存在。验证用户希望确定目标事务(例如,从不同用户接收的事务)是否存在于所述区块链上。所述验证用户获取所述目标事务和给定区块(即,声称包含所述目标事务的区块)的事务表示(哈希值)。所述验证用户还获取所述目标事务以及声称由所述事务表示来表示的所述事务集。所述验证用户(例如,通过基于所述事务的相应索引来级联所述事务)将所述事务放置在有序序列中,然后对所述事务的有序序列进行哈希处理。如果所得哈希值与所述事务表示相匹配,则所述验证用户可以确定所述目标事务由所述事务表示来表示,并且因此被包括在所述区块中,所述区块包括所述事务表示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1