区块链网络划分的制作方法
- 国知局
- 2024-07-31 22:58:01
本公开涉及一种用于划分(partitioning)区块链网络的方法和一种用于验证经划分的区块链网络交易的方法,并且尤其但非排他地涉及一种用于对区块链的未被花费的交易输出(utxo)集进行划分的方法和一种对被划分后区块链的utxo集的交易进行验证的方法。
背景技术:
1、在本文档中,我们使用“区块链”一词来涵盖所有形式的基于计算机的电子分布式账本。包括基于共识的区块链和交易链技术,允许和不允许的分类账,共享分类账及其变体。应当注意,本公开内容不限于与特定区块链一起使用,替代性的区块链实施方式和协议落入本公开内容的范围内。术语“用户”在本文中可以指基于人力或基于处理器的资源。
2、区块链是一种点对点的电子分类账,其实现为基于计算机的分散式分布式系统,该系统由多个块组成,而多个块又由多个交易(transaction)组成。每个交易是一种数据结构,该数据结构对参与者之间对区块链系统中数字资产控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起以创建自区块链创建以来一直写入区块链的所有交易的永久,不可更改的记录。交易包含嵌入到其输入和输出中的称为脚本的小程序,这些程序指定如何以及由谁访问交易的输出。在一些平台上,这些脚本是使用基于堆栈的脚本语言编写的。
3、为了将交易写入区块链,必须对其进行“验证”。网络节点执行工作以确保每个交易均有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定和解锁脚本来对未被花费的交易(utxo)执行此验证工作。如果锁定和解锁脚本的执行评估为true,则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收该交易的第一个节点验证–如果交易被验证,则该节点将其中继到网络中的其他节点;并且ii)添加到建造的新区块中;iii)添加到以往交易的公共分类账中。
4、数字企业家已经开始探索同时使用加密安全系统以及可以存储在区块链上的数据来实施新系统。如果区块链可以用于自动化任务和流程,那将是非常有利的。这样的解决方案能够利用区块链的好处(例如,事件,分布式处理等的永久性,防篡改证据性记录),同时在其应用程序中更具通用性。
5、如上所述,区块链网络,是一种安全的分布式计算系统。系统的所有节点都将保留并管理整个区块链的副本,发送和接收交易,对其进行验证,并基于共享的去中心化共识协议向区块链添加块。这种方法虽然安全,但确实存在与每个交易都由每个完整节点验证和存储这一事实有关的需要克服的缺陷。在验证方面,这会导致交易网络传播的延迟,因为每个交易都需要先进行验证,然后才能继续传播。此外,归因于验证导致的网络延迟,使得更容易受到“双花(double-spend)”相关的攻击,例如女巫(sybil)攻击。
技术实现思路
1、本公开旨在通过使用水平划分(也称为分片(sharding))以及在经过分片的区块链网络上分配和/或验证交易相关的技术或协议来改善区块链网络的可扩展性、速度、可靠性以及安全性。在此公开的是:
2、·分片后区块链的网络结构;和
3、·分片后utxo和内存池的结构。
4、该技术的划分考虑两个特定的维度:水平和垂直。在被水平划分的数据库的划分部分(称为分片)中,实际上存在特定数据库模式的多个实例,数据在每个实例中传播,从而减少了实例冗余。但是,垂直划分是将给定的数据库模式跨多个节点进行拆分,从而使用归一化方法扩展特定对象的属性。
5、希望参与区块链网络的各方可以拥有各种计算资源,从小型低功率机器到服务器农场。因此,参与方被计算资源限制在区块链网络中的预定参与级别。
6、在交易验证期间,需要进行的一项检查是检查是否存在双重支付(doublespend)。双重支付是指已在内存池(mempool)中或在区块链上确认的交易输入中引用了交易输出。内存池是对每个完整节点自身维护的交易的内存的池或区域的指代。传统上,在交易被节点验证之后,它会在内存池中等待直到被插入到区块中。为了使交易验证在交易输入检查方面更加有效率,作为验证整个区块链的代替,网络的当前状态被保存在称为utxo集的独立结构中。该结构包含交易尚未支付的每个交易输出,该交易可以包括币库(coinbase)和标准交易。
7、根据本公开的一方面,提供了一种将区块链网络划分为分片(shards)的计算机实现的方法。该方法包括:识别区块链交易的交易id;并基于该交易id将该交易分配给分片。
8、将区块链网络划分为多个分片,使用户(user)能够选择自己对区块链网络的参与程度。每个用户都可以选择成为一个或多个分片的成员(member)。作为分片数量少于所有分片的成员的用户,该用户需要较少的存储空间来存储分配给该用户所属分片的所有交易。根据交易id将交易分配给分片具有以下优点:生成的分片大小将大致相等,从而相对于较小分片的成员来说,避免了将不恰当的负担施加到较大分片的成员,同时使得交易和相关验证能够准确执行,而没有任何不恰当的延迟。
9、本文所指的用户可以与一个或多个节点或计算设备相关联,并且这些节点可以指的是被划分的区块链网络中的客户端实体。在下文中,对用户的引用也可以理解为对与用户相关联的节点或实体的引用(该用户可以拥有或控制作为一部分的被分片的或被划分的区块链网络的节点或实体)。每个节点可以与被划分的区块链网络中的至少一个或多个其他节点通过通信方式耦合。
10、本文所讨论的与本公开内容以及本公开内容的其他方面相关的这些优点(下面讨论)归因于节点的结构以及分片式区块链网络的导致的网络拓扑和体系结构以及与网络节点相关的协议。使用所描述和要求保护的用于通信、数据存储、数据共享以及每个分片内节点的验证技术的方法、规则或协议、并基于与属于不同分片的节点进行通信的规则和协议,在此类分片网络中实施接收、存储和/或验证utxo。
11、这些特定的结构、数据流的方法、交易分配和验证协议将在下面相对于本公开的各种实施例进一步解释。有利地,本文所述的用于分片区块链网络中的分配交易和对分配后交易的验证的分片网络结构或体系结构和相关方法,使得能够实施用于数据流、数据存储和utxo验证检查的新颖技术。此外,鉴于该结构和数据通信/验证协议,这些技术有利地防止了双重支付攻击,例如女巫攻击。
12、该方法可以进一步包括使用该交易id执行操作的步骤。将该交易分配给分片的步骤可以基于该操作的结果。
13、这提供了以下优点:根据该操作的选择来调整多个分片的布置。
14、该操作可以包括取模操作(modulo operation)。
15、这提供了可以更容易地生成期望数量的大小相等的分片的优点。根据本公开,提供了另一种将区块链网络划分为分片的计算机实现的方法。该方法包括:识别父区块链交易,该父交易由与子区块链交易的输入相对应的输出所定义;并将父交易和子交易分配给相同的分片。
16、将区块链网络划分为多个分片,使用户能够选择自己对区块链网络的参与程度。每个用户都可以选择成为一个或多个分片的成员。作为分片数少于所有分片的成员的用户,该用户需要较少的存储空间来存储分配给该用户所属分片的所有交易。基于识别父区块链交易来将交易分配给分片,该父交易由与子区块链交易的输入相对应的输出定义,并将父交易和子交易分配给同一分片,具有如下优势:由作为特定分片成员的用户执行验证操作时,可以需要较少的与作为不同分片成员的用户之间来回传输的信息,因为被验证的子交易将始终具有作为同一分片成员的父交易。
17、可以使用子区块链交易的多个输入中的一个输入来识别父交易。根据其索引来选择所要使用的输入。该索引可以是1,在这种情况下,使用的输入是多个输入中的第一个输入。
18、这提供了以下优点:能够将具有多个输入的一子交易分配给一分片。
19、可以使用子区块链交易的多个输入中的最大输入子集(输入的最大子集)来识别父交易。例如,在子交易具有五个输入的实例中,五个输入中的两个涉及(refer to)一个较早交易(earlier transaction)的两个输出,其余三个输入中的每个都引用(refer to)三个不同的较早交易,则将父交易定义为该两个输入都涉及的该较早交易,因为它们是输入的最大子集。
20、这样做的优点是,对于具有多个输入的子交易,减少了来自作为不同分片成员的用户所需要的信息量。
21、根据本公开,还提供了一种用于验证区块链交易的计算机实现的方法。该方法包括:从包括至少一个utxo的至少一个分片的成员节点,请求由交易的至少一个相应输入引用(reference)的至少一个utxo;从至少一个节点,获取至少一个utxo的有效性数据;并使用该有效性数据对至少一个输入执行验证检查。
22、这种方法使得能够在分片式区块链网络中进行区块链交易的验证。此方法提供的优点是,每个用户都可以选择成为一个或多个分片的成员,而作为分片数量少于所有分片的成员的用户,该用户需要较少的计算能力来验证分配给该用户所属分片的所有交易。
23、根据本公开,还提供了一种用于验证区块链交易的计算机实现的方法。该方法包括:识别至少一个分片,该至少一个分片包括由交易的至少一个相应输入引用的至少一个utxo;将该交易传输到至少一个分片的至少一个成员节点;并使用该utxo的有效性数据来对至少一个输入进行验证检查。
24、这种方法使得能够在分片式区块链网络中进行区块链交易的验证。此方法提供的优点是,每个用户都可以选择成为一个或多个分片的成员,而作为分片数少于所有分片的成员的用户,该用户需要较少的计算能力来验证分配给该用户所属分片的所有交易。
25、相应地,本公开涉及一种用于验证与区块链网络相关联的区块链交易的计算机实现方法,其中,所述区块链网络被划分为多个分片,每个分片包括至少一个成员节点,并且其中,所述区块链网络中的每个节点是所述多个分片中的至少一个分片的成员,所述方法包括以下步骤:响应于在一节点处接收一个给定交易,确定与该节点相关联的至少一个utxo被该交易的至少一个相应输入所引用,其中该节点与一组utxo相关联,这些utxo与分配给该节点所属的每个分片中一个或多个交易有关;基于该给定交易的该至少一个输入与该节点所属的分片相关联的确定,使用与utxo相关的有效性数据对至少一个输入执行验证检查;基于该交易有效的确定,将该交易添加到与该节点关联的内存池(mempool)中;将该交易传播到该节点所属的该至少一个分片的其他成员节点。
26、本公开还涉及一种计算机实现的方法,用于分配和验证与区块链网络相关联的区块链交易。其中所述区块链网络被划分为多个分片,每个分片包括至少一个成员节点,其中:所述区块链网络中的每个节点是所述多个分片中的至少一个分片的成员;所述区块链网络中的每个交易被分配给所述多个分片中的至少一个分片;并且,对于每个分片,对于作为所述分片的成员的节点,每个节点维护utxo集合,所述utxo集合与分配给所述分片的交易相关,从而使得每个分片被认为包含utxo集合。所述方法包括以下步骤:在第一节点:创建第一交易,识别第一分片,所述第一分片包含第一utxo,所述第一utxo与所述第一交易的第一输入相对应,和,将所述第一交易传输到所述第一分片中的第二节点;以及,在所述第二节点:识别所述第一utxo位于由所述第二节点为所述第一分片持有的utxo中,使用所述utxo的有效性数据对所述第一输入执行验证检查,基于所述第一输入有效的确定,将所述第一交易添加到与所述节点关联的内存池中,以及,将所述交易传播到所述第一分片的其他成员节点。
27、在一些实施例中,所述的方法还包括以下步骤,在所述第一节点:识别第二分片,所述第二分片包含第二utxo,所述第二utxo与所述第一交易的第二输入相对应;和,附加地,将所述第一交易传输到所述第二分片中的第三节点。
28、上述方法中的任何一种还可以包括以下步骤:将对一个节点的分片成员资格信息(membership information)的请求传达给另一节点。
29、这提供了以下优点:该寻求分片成员资格信息的节点被提供了更容易定位该信息的机制。
30、上述方法中的任何一种还可以包括以下步骤:将一个节点的分片成员资格信息传达给另一节点。
31、这提供了用于在节点之间传递节点的分片成员资格信息的机制,从而提供了如下优点:降低节点无法执行验证操作的可能性。
32、在一些实施例中,该方法包括以下步骤:将一个节点的分片成员资格信息传达(communicating)或广播(broadcasting)到与该节点和/或网络中的一个或多个其他节点相关联的分片中的所有其他节点。该方法还包括使用修改的addr消息(地址消息)来执行该通信(communication),其中,该修改的addr消息包括一指示,该指示是与该节点相关联的一个或多个分片的指示。
33、可以使用修改后的addr消息执行通信。
34、这提供了如下优点:提供节点间可以更安全交换分片成员资格信息的机制。
35、本公开还提供一种系统,包括:
36、处理器;和
37、包括可执行指令的存储器,该可执行指令由于被该处理器执行而使得该系统执行本公开所述的计算机实现方法的任何实施例。
38、本公开还提供了一种其上存储有可执行指令的非暂时性计算机可读存储介质,该可执行指令由于被计算机系统的处理器执行而使得该计算机系统至少执行本公开所述的计算机实现方法的一个实施例。
本文地址:https://www.jishuxx.com/zhuanli/20240730/195519.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表