技术新讯 > 电子通信装置的制造及其应用技术 > 用于孤立事务的数据结构的制作方法  >  正文

用于孤立事务的数据结构的制作方法

  • 国知局
  • 2024-08-02 14:13:06

本公开涉及一种创建和/或维护用于表示孤立事务的数据结构的方法,并且涉及该数据结构本身。

背景技术:

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

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

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

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

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

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

技术实现思路

1、区块链事务形成链,由此一个事务(子事务)的输入引用所述链中的上一个事务(父事务)的输出。所述链可以包含任意数量的事务。

2、子事务必须经过区块链节点的核实,才能包含在区块中。核实子事务的过程包括对父事务执行各种检查和/或使用父事务,例如验证父事务是否存在,验证子事务的输出中分布的数字资产的数量是否不大于与父事务的所引用的输出相关联的数字资产的数量等。

3、然而,区块链节点不一定按顺序接收事务链。例如,子事务可能在父辈到达之前,或者甚至在祖父辈到达之前到达所述节点。此类事务称为孤立事务。由于区块链节点需要父事务来核实子事务,因此无法核实子事务。

4、一些区块链协议使用核实管道(validation pipeline)来处理和核实事务。核实管道包括一系列处理器,每个处理器执行特定任务。至少一个处理器的任务是基于父事务来核实子事务。当子事务进入核实管道并且其输出点中的一个输出点(即,由子事务的输入引用的上一个事务的输出)属于区块链节点尚未看见的父事务时,出现用于核实事务的所识别的瓶颈。这会导致死锁问题,其中区块链节点反复尝试核实子事务但失败,并且优先于父事务来核实子事务。

5、根据本文公开的一个方面,提供了一种计算机实现的方法,所述方法由区块链节点执行,所述方法包括:维护表示孤立事务的数据结构;其中所述孤立事务是区块链事务,所述区块链事务具有:至少一个父事务,所述至少一个父事务为不可用事务,和/或至少一个父事务,所述至少一个父事务为其他的孤立事务;其中所述不可用事务是不能被所述区块链节点的核实管道利用的事务;并且其中:所述数据结构包括有向图,所述有向图包括节点和边,其中所述图中的每个节点表示:相应孤立事务或相应不可用事务,其中用于将相应父节点连接到相应子节点的每个边表示:由所述相应父节点表示的相应事务的输出的通过由所述相应子节点表示的相应事务的输入的花费;并且,其中所述图中的每个节点与由所述节点表示的相应事务的相应事务标识符相关联并且包括:

6、a)相应入度值,其中所述相应入度值是以下各项中的一项:i)第一值,所述第一值用于指示所述相应事务具有未知数量的父事务,所述父事务是不可用事务或孤立事务,或者,ii)零值,所述零值用于指示所述相应事务不具有父事务,所述父事务是不可用事务或孤立事务,或者,iii)用于指示所述相应事务的相应父事务的数量的值,所述相应父事务是不可用事务或孤立事务;以及,b)相应子节点(如果有的话)的相应引用列表,所述相应子节点通过相应边连接到所述节点。

7、根据本文公开的另一方面,提供了一种数据结构,用于表示孤立事务,其中所述孤立事务是区块链事务,所述区块链事务具有:至少一个父事务,所述至少一个父事务为不可用事务,和/或至少一个父事务,所述至少一个父事务为其他的孤立事务;其中所述不可用事务是不能被所述区块链节点的核实管道利用的事务;并且其中:所述数据结构包括有向图,所述有向图包括节点和边,其中所述图中的每个节点表示:相应孤立事务或相应不可用事务,其中用于将相应父节点连接到相应子节点的每个边表示:由所述相应父节点表示的相应事务的输出的通过由所述相应子节点表示的相应事务的输入的花费;并且,其中所述图中的每个节点与由所述节点表示的相应事务的相应事务标识符相关联并且包括:a)相应入度值,其中所述相应入度值是以下各项中的一项:i)第一值,所述第一值用于指示所述相应事务具有未知数量的父事务,所述父事务是不可用事务或孤立事务,或者,ii)零值,所述零值用于指示所述相应事务不具有父事务,所述父事务是不可用事务或孤立事务,或者,iii)用于指示所述相应事务的相应父事务的数量的值,所述相应父事务是不可用事务或孤立事务;以及,b)相应子节点(如果有的话)的相应引用列表,所述相应子节点通过相应边连接到所述节点。

8、本公开提供了一种用于表示和/或组织孤立事务的新型数据结构(称为“孤立池”)。当孤立事务到达区块链节点时,通过添加或更新节点来更新孤立池。将孤立事务发送到孤立池而不是核实管道,从而避免死锁问题。类似地,当必要的父事务变得可用时,将孤立事务从孤立池释放到节点的核实管道,从而更新孤立池。数据结构利用由节点和边组成的有向图。这里,在不同的上下文中使用“节点”来指代图的元素,而不是创建和/或维护图的区块链节点。

9、图中的每个节点(“图节点”)表示孤立池中的事务。更具体地,每个图节点表示孤立事务或不可用事务。不可用事务(也称为“不可见事务”)是指区块链节点的核实管道尚未看见的事务,或者在某些示例中,是指区块链节点作为整体尚未看见的事务。孤立事务是孤立事务的子事务(即,子事务的父事务是孤立事务),或者是不可见事务的子事务。

10、每个图节点还可以包括由节点表示的事务。或者,事务可以存储在别处,并且在一些实施例中,事务的位置(例如,存储器地址)可以由图节点引用。

本文地址:https://www.jishuxx.com/zhuanli/20240801/242066.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。