默克尔证明实体的制作方法

文档序号:35056066发布日期:2023-08-06 13:00阅读:27来源:国知局
默克尔证明实体的制作方法

本公开涉及证明区块链事务的数据存在于区块链上并获取所述证明的方法,或者换句话说,本公开涉及证明包含该数据的区块链事务存在于区块链上并获取所述证明的方法。


背景技术:

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

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

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

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

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

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

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


技术实现思路

1、默克尔证明通常用于验证事务存在于区块链上。想要验证特定事务存在于所述区块链上的一方(例如,用户)可以从区块链节点寻找默克尔证明。如果使用所接收的默克尔证明,可以将所述事务追溯到与所述区块链的区块中包括的默克尔根匹配的值,则所述用户可以确信所述事务存在于所述区块链上。应当注意的是,为了确保绝对确定,可能需要进行额外的检查。

2、目前,提供默克尔证明的唯一实体是区块链节点(也称为矿工)。如上所述,区块链节点主要涉及事务核实、区块构建和发布。

3、区块链技术的使用量不断增加,因此区块链系统需要能够进行扩展,以满足日益增长的使用量和需求量。扩展区块链系统的一种方法是增加所述区块的大小、提高事务率,并将所述区块链技术用作各种数据应用的不可变分类账。这会大幅增加所述区块链的大小,并增加用于事务核实的处理量。因此,对于终端用户和服务提供者来说,用于存储完整的区块链、核实事务以及响应事务相关查询的资源可能过于昂贵(就存储和处理要求而言)。

4、因此,需要一种资源效率更高的实体,所述实体能够证明事务存在于所述区块链上。此外,如果此类实体能够证明事务中存储(即,嵌入)的数据的完整性,则将是可取的。这在无信任环境中尤其可取。

5、根据本文公开的一个方面,提供了一种证明区块链事务的数据项存在于区块链上的计算机实现的方法,其中所述方法由默克尔证明实体执行,所述默克尔证明实体被配置为存储相应区块链事务的一组事务标识符但不向区块链网络发布新的区块链区块,并且其中所述方法包括:从请求方,获取目标区块链事务的目标数据项;获取所述目标区块链事务;获取所述目标区块链事务的目标默克尔证明,其中对应的目标默克尔根包含在所述区块链的区块内,并且其中获取所述目标默克尔证明包括:计算所述目标区块链事务的目标事务标识符在对应的目标默克尔树的叶层内的索引;以及,至少输出所述目标默克尔证明,以供所述请求方用作所述目标数据项作为所述目标区块链事务的一部分存在于所述区块链上的证明。

6、默克尔证明实体不执行在所述区块链上构建和/或发布区块的操作。换言之,所述默克尔证明实体不是区块链节点(根据本领域中用于此类节点的一个术语,不是“矿工”)。所述默克尔证明实体(以下也称为默克尔证明服务器(mps))能够向请求方提供默克尔证明,但不参与事务核实或区块构建,因此资源密集度低于区块链节点。通过仅存储相关信息来优化数据存储、数据搜索和数据检索,在本例中,所述相关信息是所存储的一组事务。

7、在一些示例中,所述mps可以提供默克尔证明而不必存储整个区块链,因此与区块链节点相比具有明显更少的存储要求。例如,所述mps可以仅以原始格式存储所述相关事务。所述存储的事务可以涉及特定应用或服务。作为特定示例,所述存储的事务可以包含一个或多个患者的医疗数据。作为另一示例,所述存储的事务可以包含任何事务,所述任何事务包含特定数据项(例如,公钥哈希)。所述mps支持按所述事务中的数据字段(例如,地址、公钥、数据协议标志等)或任何部分事务数据进行查询。

8、在其他示例中,所述mps可以在区块链事务的整个域上提供其服务。虽然在事务方面具有与区块链节点相同的存储要求,但是所述mps具有更少的处理要求,因为它不需要核实所述事务。为了提供默克尔证明,所述mps可以简单地根据事务数据或对应的txid来构建默克尔树,而不显式地验证所述事务。

9、所述mps识别包含所述查询的数据的事务,并输出包含所述数据的所述事务的默克尔证明。所述默克尔证明可证明所述事务存在于所述区块链上。因此,如果所述查询的数据存在于所述事务中,则所述查询的数据存在于所述区块链上的所述事务中。应当注意的是,这是因为原始事务中数据的任何更改都意味着所述默克尔证明将无效。换言之,所述原始事务中的最轻微更改都意味着所述事务的所述事务标识符(txid)将发生更改,并且由于所述txid是用于生成所述默克尔证明的默克尔树的叶哈希,因此所述默克尔证明将不会生成所需的默克尔根(即,存储在包含所述事务的所述区块中的所述默克尔根)。

10、通过确定所述目标事务标识符的所述索引,即所述目标事务的所述叶哈希,所述mps可以正确地识别正确的哈希以作为所述默克尔证明的一部分提供。

11、此外,如果提供了某个事务的默克尔证明,或者如果花费了所述事务的输出中的一个输出,并且连同原始花费事务一起提供了花费事务的默克尔证明,则可以证明所述事务存在于所述区块链上。该观察结果可以用于最小化相关事务链所需的证明数量。下面提供了更多详细信息。

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