CN112041870B - 区块链网络划分 - Google Patents
区块链网络划分 Download PDFInfo
- Publication number
- CN112041870B CN112041870B CN201980028769.5A CN201980028769A CN112041870B CN 112041870 B CN112041870 B CN 112041870B CN 201980028769 A CN201980028769 A CN 201980028769A CN 112041870 B CN112041870 B CN 112041870B
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- blockchain
- network
- utxo
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000638 solvent extraction Methods 0.000 title description 10
- 238000000034 method Methods 0.000 claims abstract description 68
- 239000012634 fragment Substances 0.000 claims abstract description 32
- 238000010200 validation analysis Methods 0.000 claims abstract description 8
- 230000015654 memory Effects 0.000 claims description 23
- 238000012795 verification Methods 0.000 description 17
- 230000008901 benefit Effects 0.000 description 15
- 238000013515 script Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000000644 propagated effect Effects 0.000 description 6
- 241001481828 Glyptocephalus cynoglossus Species 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 238000013467 fragmentation Methods 0.000 description 3
- 238000006062 fragmentation reaction Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 241001025261 Neoraja caerulea Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
公开了一种验证区块链交易的计算机实现的方法。该方法包括:从包括至少一个UTXO的至少一个分片的成员节点,请求由交易的至少一个相应输入引用的至少一个UTXO;从至少一个节点,获取至少一个UTXO的有效性数据;和使用所述有效性数据对至少一个输入执行验证检查。
Description
技术领域
本公开涉及一种用于划分(partitioning)区块链网络的方法和一种用于验证经划分的区块链网络交易的方法,并且尤其但非排他地涉及一种用于对区块链的未被花费的交易输出(UTXO)集进行划分的方法和一种对被划分后区块链的UTXO集的交易进行验证的方法。
背景技术
在本文档中,我们使用“区块链”一词来涵盖所有形式的基于计算机的电子分布式账本。包括基于共识的区块链和交易链技术,允许和不允许的分类账,共享分类账及其变体。术语“用户”在本文中可以指基于人力或基于处理器的资源。
区块链是一种点对点的电子分类账,其实现为基于计算机的分散式分布式系统,该系统由多个块组成,而多个块又由多个交易组成。每个交易是一种数据结构,该数据结构对参与者之间对区块链系统中数字资产控制权的转移进行编码,并包括至少一个输入和至少一个输出。每个区块都包含前一个区块的哈希值,因此区块被链接在一起以创建自区块链创建以来一直写入区块链的所有交易的永久,不可更改的记录。交易包含嵌入到其输入和输出中的称为脚本的小程序,这些程序指定如何以及由谁访问交易的输出。
为了将交易写入区块链,必须对其进行“验证”。网络节点执行工作以确保每个交易均有效,而无效交易则被网络拒绝。安装在节点上的软件客户端通过执行其锁定和解锁脚本来对未被花费的交易(UTXO)执行此验证工作。如果锁定和解锁脚本的执行评估为TRUE,则该交易有效,并将该交易写入区块链。因此,为了将交易写入区块链,必须:i)由接收该交易的第一个节点验证–如果交易被验证,则该节点将其中继到网络中的其他节点;并且ii)添加到由网络节点建造的新区块中;iii)添加到以往交易的公共分类账中。
如果区块链可以用于不限于加密货币领域的自动化任务和流程,那将是非常有利的。这样的解决方案能够利用区块链的好处(例如,事件,分布式处理等的永久性,防篡改证据性记录),同时在其应用程序中更具通用性。
如上所述,区块链网络是一种安全的分布式计算系统。系统的所有节点都将保留并管理整个区块链的副本,发送和接收交易,对其进行验证,并基于共享的去中心化共识协议向区块链添加块。这种方法虽然安全,但确实存在与每个交易都由每个完整节点验证和存储这一事实有关的需要克服的缺陷。在验证方面,这会导致交易网络传播的延迟,因为每个交易都需要先进行验证,然后才能继续向网络节点传播。此外,归因于验证导致的网络延迟,使得更容易受到“双花(double-spend)”相关的攻击,例如女巫(Sybil)攻击。
发明内容
本公开旨在通过使用水平划分(也称为分片(sharding))以及在经过分片的区块链网络上分配和/或验证交易相关的技术或协议来改善区块链网络的可扩展性、速度、可靠性以及安全性。在此公开的是:
·分片后区块链的网络结构;和
·分片后UTXO和内存池的结构。
该技术的划分考虑两个特定的维度:水平和垂直。在被水平划分的数据库的划分部分(称为分片)中,实际上存在特定数据库模式的多个实例,数据在每个实例中传播,从而减少了实例冗余。但是,垂直划分是将给定的数据库模式跨多个节点进行拆分,从而使用归一化方法扩展特定对象的属性。
希望参与区块链网络的各方可以拥有各种计算资源,从小型低功率机器到服务器农场。因此,参与方被计算资源限制在区块链网络中的预定参与级别。
在交易验证期间,需要进行的一项检查是检查是否存在双重支付(doublespend)。双重支付是指已在内存池(mempool)中或在区块链上确认的交易输入中引用了交易输出。内存池是对每个完整节点自身维护的交易的内存的池或区域的指代。传统上,在交易被节点验证之后,它会在内存池中等待直到被插入到区块中。为了使交易验证在交易输入检查方面更加有效率,作为验证整个区块链的代替,网络的当前状态被保存在称为UTXO集的独立结构中。该结构包含交易尚未支付的每个交易输出,该交易可以包括币库(coinbase)和标准交易。
根据本公开的一方面,提供了一种将区块链网络划分为分片(shards)的计算机实现的方法。该方法包括:识别区块链交易的交易ID;并基于该交易ID将该交易分配给分片。
将区块链网络划分为多个分片,使用户(user)能够选择自己对区块链网络的参与程度。每个用户都可以选择成为一个或多个分片的成员(member)。作为分片数量少于所有分片的成员的用户,该用户需要较少的存储空间来存储分配给该用户所属分片的所有交易。根据交易ID将交易分配给分片具有以下优点:生成的分片大小将大致相等,从而相对于较小分片的成员来说,避免了将不恰当的负担施加到较大分片的成员,同时使得交易和相关验证能够准确执行,而没有任何不恰当的延迟。
本文所指的用户可以与一个或多个节点或计算设备相关联,并且这些节点可以指的是被划分的区块链网络中的客户端实体。在下文中,对用户的引用也可以理解为对与用户相关联的节点或实体的引用(该用户可以拥有或控制作为一部分的被分片的或被划分的区块链网络的节点或实体)。每个节点可以与被划分的区块链网络中的至少一个或多个其他节点通过通信方式耦合。
本文所讨论的与本公开内容以及本公开内容的其他方面相关的这些优点(下面讨论)归因于节点的结构以及分片式区块链网络的导致的网络拓扑和体系结构以及与网络节点相关的协议。使用所描述和要求保护的用于通信、数据存储、数据共享以及每个分片内节点的验证技术的方法、规则或协议、并基于与属于不同分片的节点进行通信的规则和协议,在此类分片网络中实施接收、存储和/或验证UTXO。
这些特定的结构、数据流的方法、交易分配和验证协议将在下面相对于本公开的各种实施例进一步解释。有利地,本文所述的用于分片区块链网络中的分配交易和对分配后交易的验证的分片网络结构或体系结构和相关方法,使得能够实施用于数据流、数据存储和UTXO验证检查的新颖技术。此外,鉴于该结构和数据通信/验证协议,这些技术有利地防止了双重支付攻击,例如区块链中的女巫攻击。
该方法可以进一步包括使用该交易ID执行操作的步骤。将该交易分配给分片的步骤可以基于该操作的结果。
这提供了以下优点:根据该操作的选择来调整多个分片的布置。
该操作可以包括取模操作(modulo operation)。
这提供了可以更容易地生成期望数量的大小相等的分片的优点。
根据本公开,提供了另一种将区块链网络划分为分片的计算机实现的方法。该方法包括:识别父区块链交易,该父交易由与子区块链交易的输入相对应的输出所定义;并将父交易和子交易分配给相同的分片。
将区块链网络划分为多个分片,使用户能够选择自己对区块链网络的参与程度。每个用户都可以选择成为一个或多个分片的成员。作为分片数少于所有分片的成员的用户,该用户需要较少的存储空间来存储分配给该用户所属分片的所有交易。基于识别父区块链交易来将交易分配给分片,该父交易由与子区块链交易的输入相对应的输出定义,并将父交易和子交易分配给同一分片,具有如下优势:由作为特定分片成员的用户执行验证操作时,可以需要较少的与作为不同分片成员的用户之间来回传输的信息,因为被验证的子交易将始终具有作为同一分片成员的父交易。
可以使用子区块链交易的多个输入中的一个输入来识别父交易。根据其索引来选择所要使用的输入。该索引可以是1,在这种情况下,使用的输入是多个输入中的第一个输入。
这提供了以下优点:能够将具有多个输入的一子交易分配给一分片。
可以使用子区块链交易的多个输入中的最大输入子集(输入的最大子集)来识别父交易。例如,在子交易具有五个输入的实例中,五个输入中的两个涉及(refer to)一个较早交易(earlier transaction)的两个输出,其余三个输入中的每个都引用(refer to)三个不同的较早交易,则将父交易定义为该两个输入都涉及的该较早交易,因为它们是输入的最大子集。
这样做的优点是,对于具有多个输入的子交易,减少了来自作为不同分片成员的用户所需要的信息量。
根据本公开,还提供了一种用于验证区块链交易的计算机实现的方法。该方法包括:从包括至少一个UTXO的至少一个分片的成员节点,请求由交易的至少一个相应输入引用(reference)的至少一个UTXO;从至少一个节点,获取至少一个UTXO的有效性数据;并使用该有效性数据对至少一个输入执行验证检查。
这种方法使得能够在分片式区块链网络中进行区块链交易的验证。此方法提供的优点是,每个用户都可以选择成为一个或多个分片的成员,而作为分片数量少于所有分片的成员的用户,该用户需要较少的计算能力来验证分配给该用户所属分片的所有交易。
相应地,本公开涉及一种验证与区块链网络相关联的区块链交易的计算机实现方法,其中,所述区块链网络被划分为多个分片,每个分片包括至少一个成员节点,并且其中,所述区块链网络中的每个节点是所述多个分片中的至少一个分片的成员,所述方法包括以下步骤:由一请求节点,从至少一个分片包括的至少一个UTXO的一成员节点,请求被该交易的至少一个相应输入引用的至少一个UTXO其中该成员节点与一组UTXO相关联,这些UTXO与分配给该成员节点所属的每个分片中一个或多个交易有关;基于从该成员节点请求的该至少一个UTXO为可用的确定,该方法进一步包括以下步骤:基于与至少一个UTXO相关的有效性数据对至少一个输入执行验证检查;基于该交易有效的确定,将该交易添加到与该请求节点关联的内存池(mempool)中;将该交易传播到该请求节点所属的该至少一个分片的其他成员节点。
根据本公开,还提供了一种用于验证区块链交易的计算机实现的方法。该方法包括:识别至少一个分片,该至少一个分片包括由交易的至少一个相应输入引用的至少一个UTXO;将该交易传输到至少一个分片的至少一个成员节点;并使用该UTXO的有效性数据来对至少一个输入进行验证检查。
这种方法使得能够在分片式区块链网络中进行区块链交易的验证。此方法提供的优点是,每个用户都可以选择成为一个或多个分片的成员,而作为分片数少于所有分片的成员的用户,该用户需要较少的计算能力来验证分配给该用户所属分片的所有交易。
上述方法中的任何一种还可以包括以下步骤:将对一个节点的分片成员资格信息(membership information)的请求传达给另一节点。
这提供了以下优点:该寻求分片成员资格信息的节点被提供了更容易定位该信息的机制。
上述方法中的任何一种还可以包括以下步骤:将一个节点的分片成员资格信息传达给另一节点。
这提供了用于在节点之间传递节点的分片成员资格信息的机制,从而提供了如下优点:降低节点无法执行验证操作的可能性。
在一些实施例中,该方法包括以下步骤:将一个节点的分片成员资格信息传达(communicating)或广播(broadcasting)到与该节点和/或网络中的一个或多个其他节点相关联的分片中的所有其他节点。该方法还包括使用修改的addr消息(地址消息)来执行该通信(communication),其中,该修改的addr消息包括一指示,该指示是与该节点相关联的一个或多个分片的指示。
可以使用修改后的addr消息执行通信。
这提供了如下优点:提供节点间可以更安全交换分片成员资格信息的机制。
本公开还提供一种系统,包括:
处理器;和
包括可执行指令的存储器,该可执行指令由于被该处理器执行而使得该系统执行本公开所述的计算机实现方法的任何实施例。
本公开还提供了一种其上存储有可执行指令的非暂时性计算机可读存储介质,该可执行指令由于被计算机系统的处理器执行而使得该计算机系统至少执行本公开所述的计算机实现方法的一个实施例。
附图说明
下面参照附图以一般性而非限制性的方式描述本公开的优选实施例,其中:
图1a和1b示出了传统区块链网络(图1a)与根据本公开第一实施例的分片区块链(图1b)网络之间的比较。
图2示出了关于本公开第二实施例中轮流使用的节点。
图3示出了根据本公开第三实施例将交易分配给分片的方法。
图4示出了根据第四实施例将交易分配给分片的方法。
图5示出了现有技术的UTXO数据结构;
图6示出了本公开的第五实施例;
图7a和7b示出了本公开的第六实施例;以及
图8a和8b示出了本公开的第七实施例。
图9示出了可以实现本公开各个实施例的计算环境示意图。
具体实施方式
在当前的区块链网络中,不同的节点以很大程度上非结构化的方式进行点对点连接(除了客户端中有助于发现节点的许多硬编码网络种子)。这些节点进行通信以共享有效的交易,块和关于其他节点的信息。
分片网络的结构
在图1b中可以参见本公开的第一实施例,其描绘了根据本公开分片区块链网络的结构。另一方面,图1a显示了现有的(即现有技术中的)区块链网络的结构。
根据本公开,为了减少区块链网络中按照预定参与级别参与的多方对昂贵且强大的计算资源的依赖,可以允许各方成为分片式区块链网络中任何数量分片的成员。如图1b所示,这意味着包括爱好者在内的小型团体可以选择成为图1b所示网络中单个分片的成员,而大型团体(例如金融机构)可以选择成为如图1b所示分片化区块链网络中许多甚至所有分片的成员。此方法适用于可能需要交易历史安全性的实体或参与方,例如,确保那些意图或需要更高安全性的各参与方能够验证并存储区块链中的每个交易,而其他参与方或实体可能不期望或不需要相同(更高)级别的参与度或可能需要更轻量级的参与度,也可能参与到与图1b相同分片区块链网络中并且可能仅存储区块链的一个子集。
如图1b中所示,一个特定节点可以是一个或多个分片组的成员。如图中阴影线所示,其中阴影区域内的节点是分片2和分片3的成员。对于通信,可用对等方(即网络中的节点)列表包含有关其可以连接到,分发到和从其接收的多节点信息。在根据第一实施例的分片区块链中,保留附加信息,包括每个节点属于哪个分片的成员。在一些实现方式中,为了处理跨网络的交易传播,图1b中分片网络内所示每个节点布置为或配置为使得它可以与来自每个分片的至少单个节点通信以传播目的地为不同分片的交易。在一些实施方式中,每个节点持有的信息可以采用数据结构的形式,以指示其可以连接到和分布(distribute)到的节点,以及可以接收信息的节点和图1b所示分片网络中其从属的分片。也可以保存与该节点有关的其他细节,例如标识符,实体关联性等。例如,该数据结构可以被保存在与每个节点相关联的存储器中,或者可以被保存在与分片相关联的存储器中。
在如图1b所示涉及分片网络的第二实施例中,说明一种节点与单个分片内多个其他节点通信的技术。该技术有利地防止了区块链网络中的“女巫型”攻击。
女巫攻击是一种单个对手或恶意实体可能控制网络未知情况下网络上多个节点的攻击。例如,对手可能会创建多个计算机和IP地址,并且可能还会创建多个账户/节点,以假装它们都存在。通过以下示例实现可以看到这种攻击的表现。如果攻击者试图用他们控制的客户端充满整个网络,则节点很可能仅连接到攻击者节点。例如,攻击者可以拒绝为该节点中继块和交易,从而有效地将该特定节点与网络的连接断开。这也体现在攻击者中继其所创建的块,从而将节点或实体有效地放置在单独的网络上,从而使节点以及与该节点或它所代表的实体相关联的交易容易受到双重支付攻击。因此,女巫攻击是现有区块链网络的一个问题。
为了防止如图1b所示的分片式区块链网络受到女巫攻击,根据第二实施例,节点被配置为与单个分片内的多个或所有其他节点通信。如上所述,女巫攻击可以有效地忽略从特定节点发送的交易,从而防止它们进一步通过网络传播。因此,在本公开的第二实施例中,如图2所示,给定分片中的节点可以交换关于其他分片中节点的信息并轮流使用的技术。
根据第二实施例,分片网络中的每个节点可以彼此广播每个交易。如果给定节点不是与一交易关联的分片的成员(此关联将在下面参考第三和第四实施例进行描述),则不会进行完整的交易验证,而会在继续向前传播之前进行基本的交易级别检查。需要注意的是在一些实施方式中,以上关于第二实施例讨论的协议和规则与这里讨论的本公开的一个或多个或所有其他实施例有关并且被认为是它们的一部分。
在不同或特定的时间/实例处,也可以在特定分片中多个节点之间共享有关其他节点的详细信息。根据本公开的第二实施例,使用addr协议消息的修改版来执行共享。addr消息实现为用于列出或标识一个或多个IP地址和端口。例如,可以使用getaddr请求来获取包含大量已知活动对等方的addr消息(例如,用于引导(bootstrapping))。addr消息通常仅包含一个地址,但有时包含更多地址,在某些示例中,多达1000个地址。在某些示例中,所有节点周期地(即每24小时)广播包含其自身IP地址的addr。然后,节点可以将这些消息中继到其对等方,并且可以存储中继后的地址(如果对它们而言是新的)。这样,网络中的节点在连接到网络时或连接到网络后,可以清晰地了解哪些IP连接到网络。在大多数情况下,由于最初的addr广播,该IP地址被添加到每个人的地址数据库中。
除了上述内容之外,根据本公开修改的addr协议的实现方式还能够在特定节点所述的一个分片或者多个分片上传输附加的信息。例如,在修改的addr协议中,当共享网络(例如图1b)中的节点加入网络中的特定分片时,作为addr消息的一部分广播的内容可能还包括一个字段,该字段标识其所属的一个或多个分片。因此,响应于来自图1b网络中的对等方的getaddr请求,返回该信息。如在第一实施例中所讨论的,这样的信息可以基于与每个节点和/或与该节点相关联的每个分片相关联的数据结构。在一些实施例中,修改的addr协议还包括节点所属的分片的状态和/或节点自身的状态。例如,可以标识每个成员分片中节点数量的详细信息,或者特定的分片是否处于活动状态,或者也可以标识给定分片中活动节点的数量。
将交易分配给分片网络中的分片
如上所述,在分片后的区块链网络中,交易不是由每个节点验证和存储的,而是将它们分配给一个或多个特定的分片。因此,需要一种用于将交易分配给不同分片的策略。下面将描述两个可能的实施例,并且将其称为根据本公开的第三实施例的“基于交易id”的分片和根据本公开的第四实施例的“基于输入”的分片。
在一些实现方式中,当给定分片中的节点后续接收到一个交易时,它们可以检查是否已将其发送到正确的分片。这种方法提供了跨分片的交易平衡。
每种分片方法都可追溯到并且以任何程度上适用于区块链。也就是说,可以使用任何一种方法,以将分片网络定义为从区块链中的第一个区块建立时直到未来任意选择的区块号。
下述分片方法可以依次且以任意顺序多次应用。例如,第一实例中,可以首先执行基于交易id的分片,此后执行基于输入的分片。此外,如上所述,可以追溯地应用这两种方法中的任一种,此外,可以随后应用这两种方法中的任何一种。每次应用分片方法时,可以选择分片的数量n,并允许通过增加节点的数量来扩展协议。可以基于网络上的总节点数,区块链的大小和/或其他特征来选择节点数。对于以下描述的两种分片方法,还将描述一旦进行分片后每个节点存储交易的方式。
基于交易ID的分片分布
在水平划分的区块链中,由于每个分片不会包含和处理网络上的所有交易,因此需要一种将交易分配给不同分片的策略。此外,任何分片方法都需要能够执行进一步的分片。本公开的第三实施例中,借助于图3所解释的,基于交易id(txid)来处理跨分片的交易分发。
在步骤302中,创建给定交易的交易ID,表示为txid。在一些实施方式中,由于对交易数据应用SHA256函数而获得该txid。
在步骤304中,使用该交易id,基于txid和分片网络中分片的可用数量执行操作。在一些实现方式中,将当前在区块链网络上活动的分片数量的模数应用于交易id,即分片数量=txid mod n,其中n是(所需的或活动的)分片数量。
在步骤306中,步骤304的结果对应于给定交易所分配到的分片。
在步骤308中,一旦在步骤306中进行了分配,则将交易分配给所标识的分片,即,在步骤306中将交易分配给所标识分片中包括的节点。
因此,当给定分片中的节点接收到交易时,它们可以轻易检查交易是否已被发送到正确的分片中。在一些实施例中,如上面在第一实施例中所讨论的,基于与每个节点相关联的数据结构有助于这种检查,该数据结构包括与该节点相关联的信息。有利地,该方法提供了跨分片交易的均匀平衡。
可以基于大量参数任意选择网络上的分片数量,包括:
·网络上的总节点数;和
·区块链的大小。
基于输入的分片分布
借助于图4中的流程图解释根据本公开的第四实施例的分片方法。
在该实施例中,在步骤402中,识别给定交易的输入。在某些实现中,这是交易的第一输入。
在步骤404中,识别步骤402中的输入所涉及的较早交易(earlier transaction)的输出。
在步骤406中,如图1b所示,将步骤402和404的结果,即相应的输入以及来自较早交易的输出都分配给分片网络中的同一分片。在一些实现方式中,该步骤包括识别分配两个交易的分片。在一个示例中,如果已经分配了一较早交易,则该分片可能是与该较早交易关联的分片。在另一个示例中,如上所述,可以使用修改的地址广播或对给定或更早交易对getaddr请求的响应来标识分片。在其他示例中,只要两个交易都被分配给相同的分片,就可以基于随机或预定的,即基于轮换的方式来选择这两个交易的分片。例如,如果未识别父交易,即如果接收到的为币库(coinbase)交易,则可以应用该方法。
步骤408示出了迭代步骤402至406中的上述过程以生成通过其第一输入链接的交易链。
在此上下文中,其输出被后续交易的第一输入涉及的交易被称为“父”交易,而后续交易被称为“子”交易。
要注意的是,在步骤402中使用第一输入来定义父代对于该方法不是必不可少的。如果在给定交易中存在多个输入,则可以选择任何输入来执行该方法。例如,如果子交易的特定数量的输入涉及与父代同一分片的交易的输出,则可以将较早交易定义为子交易的父代。输入的数量可以定义子交易的输入的大部分数量。因此,在上面步骤406中讨论的一些实现中,基于输入的数量或者实际上要考虑的第一或任何其他规定的特定输入,所分配的分片将与所标识的父代的分片相同。
要注意的是,第三和第四实施例的上述两种分片方法可以任何顺序顺次执行,并且这两种方法可以根据需要多次执行。例如,可以根据第四实施例中基于输入的分布使区块链网络分叉,并且后续可以根据第三实施例基于交易id的分布来对一个或多个形成的分叉进行分片。
UTXO集/Mempool分片
UTXO集的示例如图5所示。
根据本公开的第五实施例,在分片的区块链(例如图1b中所示)中,一个或多个分片的每个成员节点具有与交易相关的UTXO集,该交易与节点所属的每个分片相关。这在图6中得到了进一步说明,图6描述了作为多个分片成员的节点。在此图中重叠的明显阴影区域可以看到这些。可以理解的是,在一些实现方式中,与第五实施例有关的此类UTXO集(以下称为分片的UTXO)可以涉及并且被认为是本文所讨论的本公开的一个或多个或所有其他实施例的一部分。
交易验证
为了验证交易,需要在网络中检查和更新UTXO集。本公开提供了该过程的新版本,用于在对UTXO集进行分片时对分片的区块链实施验证。如上所述,诸如图1b中所示,分片区块链上的每个节点与网络上的节点列表相关联或维护该列表,节点列表包括它们所属分片的信息。上面关于第一实施例讨论了这一点。
下面描述根据本公开的用于交易验证的两种方法,其可以用于检查UTXO集。这些分别被称为根据第六实施例的交易分片验证以及根据本公开第七实施例的UTXO分片验证。
交易分片验证
在第六实施例中,交易验证由分配交易的分片执行的。如以上关于第三实施例所述,使用应用于交易id的模函数的结果,将交易分配给分片。因为交易可以具有来自不同分片的输入,所以验证节点与其他分片进行通信以进行UTXO检查。
参考图7a,现在将描述在不同分片中各节点之间执行的UTXO集检查。并且参考图7b解释了该过程。
根据第六实施例,分片4中的节点向其已知的分片1中的节点发出请求以获取UTXO。这在步骤702中可见。指定各分片号仅用于说明,并且与任何给定分片关联的任何给定节点都可以执行该请求。
然后在步骤704中评估接收到响应的有效性。如果没有节点具有UTXO,则给出空响应。在这种情况下,在步骤706中,所考虑的交易被认为是无效的。在这种情况下,将不进行交易的进一步传播。在某些情况下,例如,如果发生脚本错误或任何表明UTXO不可用的交易也被视为无效。
在接收到给定交易UTXO的情况下,在步骤708中交易输入被认为是有效的。如在背景技术部分中所讨论的,已知安装在节点上的软件客户端或程序或应用可以通过执行它的锁定和解锁脚本在UTXO上执行该验证。在一些实现方式中,这被称为交易的有效性数据。如果执行锁定和解锁脚本被评估为TRUE,则该交易有效,并将该交易写入区块链。此外,如上所述,有效性检查之一是检查是否发生双重支付。在一些实现方式中,当节点接收到交易时,它将在与该节点或关联的分片相关联的数据结构中查询该交易花费的UTXO。
在步骤710中,然后将所讨论的交易添加到分片4或分片4的内存池上的节点中。
在步骤712中,然后将该交易传播到分片4中的其他节点。
基于UTXO分片的验证
在第七实施例中,交易被传播到包含给定交易UTXO的(如图1b所示的分片网络的)多个分片。
图8a示出了由分片4中的节点创建的支出交易(Tx),该支出交易被传播到包含该交易UTXO的每个分片。在该实施例中,节点将该交易发送到分片1和分片2。该过程在图8b中进一步示出。
当在步骤802中,当分片内的某一节点接收到给定的交易后,该节点基于同一分片内的输入继续验证交易。
从而,在步骤804中,检查给定交易的输入是否与相同的分片相关联。根据第四实施例,如上所述,可以将交易分配给分片。如上所述,如果节点是多个分片的成员,则此步骤中的“相同”的分片检查将适用于任何此类分片。
如步骤806b所示,与不同分片中UTXO相关的输入未被验证。在一些实现方式中,在步骤806a中,节点继续验证交易。
继步骤806a之后,在步骤808中检查与给定交易相关联的输入有效性。如上所述,同样在图7b的步骤706和708中,可以通过执行其锁定和解锁脚本在未花费交易(UTXO)上进行验证。在一些实现方式中,这被称为交易的有效性数据。如果执行锁定和解锁脚本被评估为TRUE,则该交易有效,并将该交易写入区块链。此外,如上所述,有效性检查之一是检查是否存在双重支付。在一些实现方式中,当节点接收到交易后,它将在与该节点或与该节点的分片相关联的数据结构中查找该交易花费的UTXO。
在输入无效的情况下,例如,UTXO不存在、或值大于UTXO、或脚本错误;那么如步骤810b所示,丢弃给定交易。在这种情况下,给定交易不会被传播到同一分片中的其他节点。
如果输入被认为是有效的,则在步骤810a中将交易识别为有效。
然后在步骤812中将交易添加到节点的内存池中。
在步骤814中,交易被传播到与该节点相关联的分片中的其他节点。
现在转向图9,提供了可用于实践本公开至少一个实施例的计算设备2600的说明性简化框图。在各种实施例中,当单独地或当通信地耦合到一个或多个其他这样的节点或系统时,计算设备2600可用于实现图1b中所示分片式区块链网络的一个或多个分片中的一个节点或节点的组合,和/或所示的任何计算机实现的系统,方法或协议。
例如,计算设备2600可以被配置为用作数据服务器,网络服务器,便携式计算设备,个人计算机或任何电子计算设备。如图9所示,计算设备2600包括具有一个或多个高级别的高速缓存存储器以及存储器控制器(统称为2602)的一个或多个处理器,存储器控制器可被配置为与包括主存储器2608和永久性存储器2610的存储子系统2606通信。主存储器2608可以包括如图所示的动态随机存取存储器(DRAM)2618和只读存储器(ROM)2620。存储子系统2606和高速缓冲存储器2602可以用于存储信息,诸如与本公开中所描述的与交易和块相关联的细节。处理器2602可以被用来提供本公开中所描述的任何实施例的步骤或功能。
处理器2602还可以与一个或多个用户界面输入设备2612,一个或多个用户界面输出设备2614以及网络接口子系统2616通信。
总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期彼此通信的机制。尽管总线子系统2604被示意性地示出为单个总线,但是总线子系统的替代实施例可以使用多条总线。
网络接口子系统2616可以提供到其他计算设备和网络的接口。网络接口子系统2616可用作由计算设备2600从其他系统接收数据以及向其他系统传输数据的接口。例如,网络接口子系统2616可以使数据技术人员能够将设备连接至网络,使得数据技术人员能够在远程位置(例如数据中心)将数据传输到设备并从设备接收数据。
用户界面输入设备2612可以包括一个或多个用户输入设备,诸如键盘;点触设备,例如集成鼠标,轨迹球,触摸板或图形输入板;扫描仪;条形码扫描仪;包含在显示器中的触摸屏;音频输入设备,例如语音识别系统,麦克风;和其他类型的输入设备。通常,术语“输入设备”的使用旨在包括用于将信息输入到计算设备2600的所有可能类型的设备和机构。
一个或多个用户界面输出设备2614可以包括显示子系统,打印机或诸如音频输出设备等的非可视显示器。显示子系统可以是阴极射线管(CRT),平板设备,例如液晶显示器(LCD),发光二极管(LED)显示器或投影仪或其他显示设备。通常,术语“输出设备”的使用旨在包括所有可能类型的设备和用于从计算设备2600输出信息的结构。一个或多个用户界面输出设备2614可以用于例如向用户展示界面,这些界面有助于用户与执行所描述的过程和其中变化的应用进行交互,当这样的交互是适当的情况下。
存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储提供本公开至少一个实施例的功能的基本程序和数据构造。当由一个或多个处理器执行该应用程序(程序,代码模块,指令)时,可以提供本公开的一个或多个实施例的功能,并且可以被存储在存储子系统2606中。这些应用程序模块或指令可以被一个或多个处理器2602执行。存储子系统2606可以额外提供用于存储根据本公开所使用数据的存储库。例如,主存储器2608和高速缓冲存储器2602可以为程序和数据提供易失性存储。永久性存储器2610可以为程序和数据提供永久性(非易失性)存储,并且可以包括闪存,一个或多个固态驱动器,一个或多个磁性硬盘驱动器,一个或多个具有相关可移动介质的软盘驱动器,一个或更多具有相关可移动介质和其他类似存储介质的光驱(例如CD-ROM或DVD或Blue-Ray)驱动器。这样的程序和数据可以包括用于执行本公开中所描述的一个或多个实施例的步骤的程序,以及与本公开中所描述的与交易和块相关联的数据。
计算设备2600可以是各种类型,包括便携式计算机设备,平板计算机,工作站或以下描述的任何其他设备。另外,计算设备2600可以包括可以通过一个或多个端口(例如,USB,耳机插孔,Lightning连接器等)连接到计算设备2600的另一设备。可以连接到计算设备2600的设备可以包括被配置为容纳光纤连接器的多个端口。因此,该设备可以被配置为将光信号转换为电信号,该电信号可以通过将设备连接至计算设备2600的端口进行传输以进行处理。由于计算机和网络的不断变化的性质,出于说明设备的优选实施例的目的,图9中描绘的计算设备2600的描述仅旨在作为特定示例。具有比图9中所示的系统更多或更少的组件的许多其他配置是可能的。
应当注意,上述实施例说明而不是限制本公开,并且本领域技术人员将能够设计许多替代实施例而不会脱离由所附权利要求限定的本公开的范围。在权利要求中,括号中的任何附图标记都不应解释为对权利要求的限制。词语“包括”和“包含”等不排除任何权利要求或说明书整体中列出的元件或步骤以外的元件或步骤的存在。在本说明书中,“包括”是指“包括或由……组成”,“包括”是指“包括或由……组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本公开可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列举几个装置的设备权利要求中,这些装置中的几个可以由一个且相同的硬件来体现。在互不相同的从属权利要求中记载某些措施的事实并不表示不能有利地使用这些措施的组合。
应当理解,以上描述意图是说明性的,而不是限制性的。在阅读和理解以上描述之后,许多其他实施方式对于本领域技术人员将是显而易见的。尽管已经参考特定示例实施方式描述了本公开,但是将认识到,本公开不限于所描述的实施方式,而是可以在所附权利要求的范围内通过修改和变更来实践。因此,说明书和附图应被认为是说明性的而不是限制性的。因此,本公开的范围应参考所附的权利要求书以及这些权利要求书所赋予的等效物的全部范围来确定。
Claims (5)
1.一种验证区块链交易的计算机实现的方法,所述区块链交易与区块链网络相关联,其中所述区块链网络被划分为多个分片,每个分片包括至少一个成员节点,并且其中所述区块链网络中的每个节点是所述多个分片中的至少一个分片的成员,所述方法包括:
从包括至少一个UTXO的至少一个分片的成员节点,请求由所述交易的至少一个相应输入引用的所述至少一个UTXO;
从至少一个节点,获取所述至少一个UTXO的有效性数据;
使用所述有效性数据对至少一个输入执行验证检查;以及,
将对一个节点的分片成员资格信息的请求传达给另一节点。
2.根据权利要求1所述的方法,还包括以下步骤:将一个节点的分片成员资格信息传达给另一节点。
3.根据权利要求1或2所述的方法,其中,使用修改的addr消息来执行所述传达。
4.一种系统,包括:
处理器;和
包括可执行指令的存储器,其由于处理器的执行而使所述系统执行权利要求1至3中任一项所述的计算机实现的方法。
5.一种非暂时性计算机可读存储介质,其上存储有可执行指令,所述可执行指令由于被计算机系统的处理器执行而使所述计算机系统至少执行权利要求1至3中的任一项所述的计算机实现的方法。
Applications Claiming Priority (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1806911.2 | 2018-04-27 | ||
GB1806914.6 | 2018-04-27 | ||
GBGB1806914.6A GB201806914D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
GBGB1806907.0A GB201806907D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
GB1806907.0 | 2018-04-27 | ||
GBGB1806909.6A GB201806909D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
GB1806909.6 | 2018-04-27 | ||
GB1806930.2 | 2018-04-27 | ||
GBGB1806911.2A GB201806911D0 (en) | 2018-04-27 | 2018-04-27 | A computer-implemented method and system |
GBGB1806930.2A GB201806930D0 (en) | 2018-04-27 | 2018-04-27 | Computer-implemented systems and methods |
PCT/IB2019/053381 WO2019207502A1 (en) | 2018-04-27 | 2019-04-24 | Partitioning a blockchain network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112041870A CN112041870A (zh) | 2020-12-04 |
CN112041870B true CN112041870B (zh) | 2024-07-05 |
Family
ID=
Non-Patent Citations (1)
Title |
---|
Bringing secure Bitcoin transactions to your smartphone;Davide Frey等;https://dl.acm.org/doi/epdf/10.1145/3008167.3008170;1-6 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112041873B (zh) | 区块链网络划分 | |
JP7165148B6 (ja) | ブロックチェーンネットワークにおける整合性のある分散型メモリプールのための方法及びシステム | |
US9648008B2 (en) | Terminal identification method, and method, system and apparatus of registering machine identification code | |
CN110998631A (zh) | 分布式账本技术 | |
US20140380310A1 (en) | Sharing usb key by multiple virtual machines located at different hosts | |
CN112041870B (zh) | 区块链网络划分 | |
CN112055864B (zh) | 区块链网络划分 | |
US12028453B2 (en) | Partitioning a blockchain network | |
CN112187786A (zh) | 网络服务的业务处理方法、装置、服务器及存储介质 | |
CN113746630A (zh) | 区块链证书管理方法、装置、联盟链及存储介质 | |
CN118216121A (zh) | 用于分布式区块链功能的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |