CN115136543A - 在区块链网络中使用的认证服务 - Google Patents
在区块链网络中使用的认证服务 Download PDFInfo
- Publication number
- CN115136543A CN115136543A CN202180015115.6A CN202180015115A CN115136543A CN 115136543 A CN115136543 A CN 115136543A CN 202180015115 A CN202180015115 A CN 202180015115A CN 115136543 A CN115136543 A CN 115136543A
- Authority
- CN
- China
- Prior art keywords
- transaction
- node
- nodes
- network
- core
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一种方法包括,在网络的认证节点处:从所述网络的一个或更多个客户端节点接收数据项序列,确定所述数据项序列的顺序,以及认证所述顺序。所述认证的方式如下:在一系列区块链事务的每一个中包含所述数据项中的一个或更多个的相应集合的指示。每个接续事务包括相应输入,所述相应输入指向所述相应先前事务的输出,其中所述相应先前事务的所述输出包括锁定脚本,所述相应接续事务的所述输入包含解锁脚本,所述解锁脚本包括基于一系列密钥中的相应密钥的相应签名。每个接续事务中的所述相应签名签署所述相应接续事务的一部分,至少包含所述相应数据项集合的所述指示。
Description
技术领域
本公开涉及一种在区块链网络中使用的认证服务,其中区块链网络传播并挖掘事务,以记录在区块链上。
背景技术
区块链是指一种分布式数据结构形式,其中在点对点(P2P)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一个或更多个事务(transaction)。每个事务都可以回指序列中的先前事务,其可以扩展一个或更多区块。事务可以通过提交到网络包括在新区块中。新区块的创建过程称为“挖掘”,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决事务池解决加密难题。
网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播事务。挖掘节点将事务挖掘到区块中。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将事务记录在区块链中,一方将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的挖掘节点可以争相将该事务挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认事务有效的一个或更多个条件。无效事务将不会传播或挖掘到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此作为不可改变的公共记录,继续存储在P2P网络中的各个节点处。
成功解决工作量证明难题以创建最新区块的矿工通常被奖励一个称为“区块创始事务”的新事务,该事务会生成新的数字资产数额。工作量证明激励矿工不要欺骗系统,在他们的区块中包括双重花费事务,因为挖掘区块需要大量计算资源,而包括试图双重花费的区块很可能不会被其他节点接受。
在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或更多个输入以及一个或更多个输出。任何可花费输出包括指定数字资产数额的元素,有时称为UTXO(“未花费的事务输出”)。该输出还可以包括指定用于赎回该输出的条件的锁定脚本。每个输入包括指向先前事务中的此类输出的指针,并且还可以包括解锁脚本以用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或更多个条件的锁定脚本。第二事务(目标事务)包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
在此类模型中,当第二事务(目标事务)被发送到P2P网络以在区块链中传播和记录时,在每个节点处应用的有效性准则之一将是:解锁脚本满足在第一事务的锁定脚本中定义的一个或更多个条件中的所有条件。另一条件将是:第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务,也不会包括该事务以便挖掘到要记录在区块链中的区块中。
传统上,区块链中的事务用于传递数字资产,即许多数字代币。但是也可利用区块链在区块链上叠加其它功能。例如,区块链协议可允许在事务输出中存储附加用户数据。现代区块链在单一事务中可存储的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。
发明内容
本文认识到,确定并记录与待记录在区块链上的某些数据项相关联的最终顺序可能是有益的。比如,考虑在区块链上实现数据库应用程序等的用例。在这种情况下,待记录在链上的每个数据项可以表示数据库中条目的状态变化或诸如此类。然而,变化是不可交换的,即顺序很重要。例如,先将先前值重置为零然后再添加值不同于先添加值然后再进行重置。如果数据项在挖掘到区块之前在不同节点之间进行传播,正确捕获数据项的最终顺序对于某些应用程序可能很重要。
根据本文公开的一个方面,提供了一种认证数据项序列的顺序的方法。所述方法包括在网络的认证节点处:从所述网络的一个或更多个客户端节点接收所述数据项序列;确定所述数据项序列的顺序,由此所述序列中的每个接续数据项随接所述序列中的所述数据项中的先前数据项;以及,基于所述确定认证所述顺序。所述认证的具体方式如下:在一系列区块链事务的每一个中包含所述数据项中的一个或更多个的相应集合的指示,所述系列中的每个接续事务随接所述系列中的相应先前事务,其中每个接续事务中指示的所述集合根据所述顺序随接所述相应先前事务中指示的所述集合。每个接续事务包括相应输入,所述相应输入指向所述相应先前事务的输出,其中所述相应先前事务的所述输出包括锁定脚本,所述相应接续事务的所述输入包含解锁脚本,所述解锁脚本包括基于一系列密钥中的相应密钥的相应签名,所述包括所述相应签名是解锁所述相应先前事务的所述解锁脚本的条件。每个接续事务中的所述相应签名签署所述相应接续事务的一部分,至少包含所述相应数据项集合的所述指示。所述认证顺序步骤还包括发送待记录在区块链上的所述事务。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图;
图2示意性地示出了可记录在区块链中的事务的一些示例;
图3是分层网络的示例的示意性表示;
图4是分层网络的示例的另一示意性表示;
图5是分层的示例的另一示意性表示;
图6是分层网络的示例的另一示意性表示;
图7示意性地示出了分层网络中实现的示例性认证服务;
图8是用于记录区块链上的数据项顺序的示例性事务的示意性事务图;
图9示意性地示出了用于记录事务中一组数据项的顺序的示例性索引列表;
图10示意性地示出了用于记录事务中一组数据项的顺序的索引列表的另一示例;
图11示意性地示出了用于记录事务中一组数据项的顺序的索引列表的另一示例。
具体实施方式
示例性系统概述
图1示出了一种用于实现区块链150的示例性系统100。系统100包括分组交换网络101,通常是诸如互联网的广域互联网。分组交换网络101包括多个节点104,该多个节点被设置成在分组交换网络101内形成点对点(P2P)覆盖网络106。该区块链网络106的每个节点104包括对等体的计算机设备,不同的节点104属于不同的对等体。每个节点104包括含一个或更多个处理器的处理装置,例如一个或更多个中央处理单元(CPU)、加速器处理器、特定应用程序处理器和/或现场可编程门阵列(FPGA)。每个节点还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等的磁介质、诸如固态硬盘(SSD)、闪存或电可擦可编程只读存储器(EEPROM)等的电子媒介和/或诸如光盘驱动器等的光学介质。
区块链150包括一系列数据区块151,其中在P2P网络160中的多个节点中的每个节点处维护相应的区块链150副本。区块链中的每个区块151均包括一个或更多个事务152,其中该上下文中的事务是指一种数据结构。数据结构的性质将取决于用作事务模型或计划的一部分的事务协议类型。给定的区块链通常全程使用一个特定的事务协议。在一种常见的事务协议中,每个事务152的数据结构至少包括一个输入和至少一个输出。每个输出指定一个数额,该数额表示属于输出被加密锁定的用户103的数字资产值(需要该用户的签名进行解锁,从而进行赎回或花费)。每个输入指向先前事务152的输出,从而链接这些事务。
节点104中的至少一些节点扮演转发节点104F的角色,这些节点转发并因此传播事务152。节点104中的至少一些节点扮演挖掘区块151的矿工104M的角色。节点104中的至少一些节点扮演存储节点104S(有时也称为“完整副本”节点)的角色,每个存储节点均在相应的存储器中存储相同区块链150的相应副本。每个矿工节点104M还维护等待挖掘到区块151中的事务152的池154。给定节点104可以是转发节点104、矿工104M、存储节点104S或其中两个节点或所有节点的任意组合。
在给定的当前事务152j中,输入(或每个输入)包括指针,该指针引用事务序列中先前事务152i的输出,指定该输出将在当前事务152j中被赎回或“花费”。通常,当前事务可以是池154或任何区块151中的任何事务。尽管为了确保当前事务有效,将需要存在先前事务152i并核实其有效,但是在创建当前事务152j甚至向网络106发送当前事务152j时,不必存在先前事务152i。因此,在本文中,“先前”是指由指针链接的逻辑序列中的前任,而不一定是时间序列中的创建时间或发送时间,因此,不一定排除无序创建或发送事务152i、152j的情况(参见下面关于孤立事务的讨论)。先前事务152i同样可以称为先行事务或前任事务。
当前事务152j的输入还包括先前事务152i的输出被锁定到的用户103a的签名。反过来,当前事务152j的输出可以加密锁定到新用户103b。因此,当前事务152j可将先前事务152i的输入中定义的数额转移到当前事务152j的输出中定义的新用户103b。在某些情况下,事务152可具有多个输出,以在多个用户间分割输入数额(其中一个可以是原始用户103a,以便进行变更)。在某些情况下,一事务还可以具有多个输入,以将一个或更多个先前事务的多个输出中的数额汇总在一起,并重新分配到当前事务的一个或更多个输出。
上述可称为“基于输出的”事务协议,有时也称为未花费的事务输出(UTXO)的协议(其中输出称为UTXO)。用户的总余额不是用区块链中存储的任何一个数字定义的;替代地,用户需要特殊“钱包”应用程序105,以整理该用户的所有UTXO值,这些UTXO值分散在区块链151的许多不同事务152中。
当用户103希望执行新事务152j时,其希望将新事务从其计算机终端102发送至P2P核实网络106的节点104中的一个(现在通常是服务器或数据中心,但原则上可以是其他用户终端)。此节点104根据在节点104中的每个节点处应用的节点协议检查事务是否有效。节点协议的详细信息将与相关区块链150中使用的事务协议类型相对应,一起形成整个事务模型。节点协议通常要求节点104检查新事务152j中的加密签名是否与预期签名相匹配,这取决于事务152的有序序列中的先前事务152i。在基于输出的情况下,这可包括检查新事务152j的输入中包含的用户加密签名是否与新事务花费的先前事务152i的输出中定义的条件相匹配,其中该条件通常包括至少检查新事务152j的输入中的加密签名是否解锁新事务的输入所指向的先前事务152i的输出。在一些事务协议中,条件可至少部分地由输入和/或输出中包含的自定义脚本定义。或者,这可仅由节点协议单独确定,或可通过其组合确定。无论采用哪种方式,如果新事务152j有效,当前节点会将其转发到P2P网络106中的一个或更多个其他节点104。这些节点104中的至少一些节点还作为转发节点104F,根据相同的节点协议应用相同的测试,从而将新事务152j转发到一个或更多个进一步的节点104,依此类推。通过这种方式,新事务在节点104的整个网络中进行传播。
在基于输出的模型中,给定输出(例如,UTXO)是否花费的定义是,根据节点协议,其是否通过另一个随后事务152j的输入有效赎回。事务有效的另一个条件是其试图花费或赎回的先前事务152i的输出尚未被另一个有效事务花费/赎回。同样,如果无效,事务152j将不会在区块链中传播或记录。这可防止重复花费,即花费者对同一个事务的输出花费超过一次。
除核实之外,节点104M中的至少一些节点在称为挖矿的过程中争先创建事务区块,该过程以“工作量证明”为基础。在挖矿节点104M处,将新事务添加到区块中尚未出现的有效事务的池中。然后,矿工争相通过尝试解决加密难题来组装事务池154中事务152的新的有效区块151。通常情况下,这包括搜索“随机数”值,从而当随机数与事务池154并置且进行哈希处理时,哈希值的输出满足预定条件。例如,预定条件可以是哈希值的输出具有某个预定义的前导零数。哈希函数的特性是,相对于其输入,其具有不可预测的输出。因此,该搜索只能通过强力执行,从而在试图解决难题的每个节点104M处消耗大量的处理资源。
解决难题的第一矿工节点104M在网络106上宣布难题解决,提供解决方案作为证明,然后网络中的其他节点104则可以轻松检查该解决方案(一旦给出哈希值的解决方案,就可以直接检查该解决方案是否使哈希值的输出满足条件)。基于已在每个此类节点处检查获胜者的已宣布解决方案,获胜者已为其解决该难题的事务池154之后由充当存储节点104S的节点104中的至少一些节点记录在区块链150中作为新区块151。区块指针155还分配给指向区块链中先前创建的区块151n-1的新区块151n。工作量证明有助于降低重复花费的风险,因为创建新区块151需要大量工作,并且由于包含重复花费的任何区块都可能被其他节点104拒绝,因此挖矿节点104M受到激励,不允许在其区块中包含双重花费。一旦创建,则不可修改区块151,因为其根据相同的协议在P2P网络106中的存储节点104S中的每个存储节点进行识别和维护。区块指针155还向区块151施加顺序。由于事务152记录在P2P网络106中每个存储节点104S处的有序区块中,因此提供了事务的不可变公共分类账。
池154有时称为“内存池”。在本文中,该术语并不限于任何特定的区块链、协议或模型。它是指矿工已接受用于挖矿的事务池,并且矿工已承诺不接受试图花费相同输出的任何其它事务。
应当注意的是,在任何给定时间争相解决难题的不同矿工104M可能会根据任何给定时间的未挖掘事务池154的不同快照执行该操作,具体取决于他们何时开始搜索解决方案。解决相应难题的人员首先定义新区块151n中包含的事务152,并更新当前未挖掘事务池154。然后,矿工104M继续争相从新定义的未完成池154中创建区块,依此类推。此外,还存在解决可能出现的任何“分叉”的协议,其中两名矿工104M彼此在很短的时间内解决难题,从而传播区块链的冲突视图。简言之,分叉方向最长的成为最终区块链150。
在大部分区块链中,获胜矿工104M会自动获得特殊类型的新事务作为奖励,该新事务创建新的数字资产值(与将数字资产数额从一个用户转移至另一个用户的正常事务截然相反)。因此,获胜节点被视为已“挖掘”一定数量的数字资产。这种特殊类型的事务有时称为“生成”事务,其自动形成新区块151n的一部分。该奖励可激励矿工104M争相参与工作量证明。通常情况下,常规(非生成)事务152还将在其输出中的一个输出中指定附加事务费用,以进一步奖励创建其中包含事务的区块151n的获胜矿工104M。
由于挖掘中涉及的计算资源,通常至少矿工节点104M中的每个矿工节点采用服务器的形式,该服务器包括一个或更多个物理服务器单元,甚至整个数据中心。每个转发节点104M和/或存储节点104S还可采取服务器或数据中心的形式。但是,原则上来说,任何给定节点104均可采用一个用户终端或联网在一起的一组用户终端的形式。
每个节点104的存储器均存储被配置为在节点104的处理装置上运行的软件,以根据节点协议执行其相应的角色并处理事务152。应当理解的是,在本文中归因于节点104的任何动作均可通过在相应计算机设备的处理装置上运行的软件执行。节点软件可以在应用层的一个或更多个应用中实现,或者在诸如操作系统层或协议层的较低层中实现,或者在这些层的任何组合中实现。此外,在本文中使用的“区块链”一词是指一般技术类型的通用术语,不限于任何特定专有区块链、协议或服务。
扮演消费用户角色的多方103中的每一方的计算机设备102也连接到网络101。他们充当事务中的支付者和收受者,但不一定代表其他方参与挖掘或传播事务。他们不一定运行挖矿协议。出于说明目的,示出了双方103及其相应的设备102:第一方103a及其相应的计算机设备102a,以及第二方103b及其相应的计算机设备102b。应当理解的是,更多此类当事方103及其相应的计算机设备102可能存在并参与系统,但为了方便起见,未进行说明。每一方103均可以是个人或组织。仅出于说明目的,在本文中,第一方103a称为爱丽丝(Alice),第二方103b称为鲍勃(Bob),但应当理解的是,这并不仅限于爱丽丝或鲍勃,且本文对爱丽丝或鲍勃的任何引用均可分别用“第一方”和“第二方”替换。
每一方103的计算机设备102包括相应的处理装置,其包括一个或更多个处理器,例如一个或更多个CPU、图形处理单元(GPU)、其他加速器处理器、特定应用程序处理器和/或FPGA。每一方103的计算机设备102还包括存储器,即采用非暂时性计算机可读介质形式的计算机可读存储器。该存储器可包括一个或更多个存储器单元,其采用一个或更多个存储器介质,例如诸如硬盘等磁介质、诸如SSD、闪存或EEPROM等电子媒介和/或诸如光盘驱动器等的光学介质。每一方103的计算机设备102上的存储器存储软件,其包括被设置为在处理装置上运行的至少一个客户端应用程序105的相应实例。应当理解的是,在本文中归因于给定方103的任何行动均可通过在相应计算机设备102的处理装置上运行的软件执行。每一方103的计算机设备102包括至少一个用户终端,例如台式或笔记本电脑、平板电脑、智能手机或诸如智能手表等的可穿戴设备。给定方103的计算机设备102还可包括一个或更多个其他网络资源,诸如通过用户终端访问的云计算资源。
客户端应用程序105最初可通过例如从服务器下载的适当计算机可读存储介质,或通过诸如可移动SSD、闪存密钥、可移动EEPROM、可移动磁盘驱动器、软盘或磁带等的可移动存储设备、诸如CD或DVD ROM等的光盘或可移动光驱等提供至任何给定方103的计算机设备102。
客户端应用程序105至少包括“钱包”功能。这有两个主要功能。其中一个功能是使相应的用户方103创建、签名和发送拟在节点104的整个网络中传播的事务152,并因此包含在区块链150中。另一个功能是向相应方汇报其目前拥有的数字资产数额。在基于输出的系统中,该第二功能包括整理分散在区块链150中属于相关方的各种事务152的输出中定义的数额。
注意:虽然各种客户端功能可以描述为集成到给定客户端应用105中,但这不一定是限制性的,相反,在本文中所描述的任何客户端功能可以在由两个或更多个不同应用组成的套件中实现,例如经由API进行接口连接或一个应用作为另一个应用的插件。更通俗地说,客户端功能可以在应用层或诸如操作系统的较低层或这些层的任意组合实现。下面将根据客户端应用105进行描述,但应当理解的是,这不是限制性的。
每个计算机设备102上的客户端应用程序或软件105的实例可操作地耦合到P2P网络106的转发节点104F中的至少一个转发节点。这可以启用客户端105的钱包功能,以将事务152发送至网络106。客户端105还可联系一个、一些或所有存储节点104,以在区块链150中查询相应方103作为接收者的任何事务(或实际上在区块链150中检查其他方的事务,因为在实施例中,区块链150是在某种程度上通过其公开可见性提供事务信任的公共设施)。每个计算机设备102上的钱包功能被配置为根据事务协议制定和发送事务152。每个节点104运行软件,其被配置为根据节点协议核实事务152有效的软件,并且在转发节点104F的情况下转发事务152,以在整个网络106中传播此类事务。事务协议和节点协议相互对应,给定事务协议和给定节点协议一起实现给定的事务模型。区块链150中的所有事务152均采用相同的事务协议(尽管事务协议可允许其内存在不同的事务子类型)。网络106中的所有节点104采用相同的节点协议(尽管其可根据针对该子类型定义的规则区分处理不同的事务子类型,并且不同的节点还可扮演不同的角色,从而实现协议的不同对应方面)。
如上所述,区块链150包括一系列区块151,其中每个区块151包括通过如前所述的工作量证明过程创建的一个或更多个事务152的集合。每个区块151还包括区块指针155,其指向区块链中先前创建的区块151,以定义区块151的顺序。区块链150还包括有效事务池154,其等待通过工作量证明过程包含在新的区块中。每个事务152(除了一生成事务)包括指向先前事务的指针,以定义事务序列的顺序(注:事务152的序列可进行分支)。区块151的区块链一直追溯到创始区块(Gb)153,该创始区块是区块链中的第一区块。区块链150中早期的一个或更多个原始事务152指向创始区块153,而非先前事务。
当给定方103(比方说爱丽丝)希望发送拟包含在区块链150中的新事务152j时,她将根据相关事务协议(使用其客户端应用程序105中的钱包功能)制定新事务。然后,她将事务152从客户端应用程序105发送至其连接的一个或更多个转发节点104F中的一个。例如,这可以是与爱丽丝的计算机102最近或最佳连接的转发节点104F。当任何给定节点104接收新事务152j时,其将根据节点协议及其相应的角色进行处理。这包括首先检查新接收的事务152j是否满足变为“有效”的特定条件,具体示例稍后将详细讨论。在一些事务协议中,有效条件可通过事务152中包含的脚本在每个事务的基础上进行配置。或者,条件可仅仅是节点协议的内置功能,或通过组合脚本和节点协议进行定义。
如果新接收的事务152j通过有效性测试(即:“有效”的条件下),接收事务152j的任何存储节点104S将向在该节点104S处维护的区块链150的副本中的池154中添加新有效事务152。进一步地,接收事务152j的任何转发节点104F随后将有效事务152传播至P2P网络106中的一个或更多个其他节点104。由于每个转发节点104F应用相同的协议,因此假定事务152j有效,这意味着事务很快将在整个P2P网络106中传播。
一旦进入在一个或更多个存储节点104处维护的区块链150的副本中的池154中,矿工节点104M将开始竞相解决包括新事务152的池154的最新版本方面的工作量证明难题(其他矿工104M可继续尝试基于池154的旧视角解决难题,但首先解决难题的矿工将定义下一个新区块151的结束位置和新池154的开始位置,最终将有人解决包括爱丽丝的事务152j的池154的一部分的难题)。一旦包括新事务152j的池154完成工作量证明,其将不可变地成为区块链150中区块151中的一个区块的一部分。每个事务152包括指向早前事务的指针,因此事务的顺序也被不可变地记录下来。
不同的节点104可以首先接收给定事务的不同实例,并且因此在一个实例被挖掘到区块151中之前具有关于哪个实例“有效”的冲突视图,此时所有节点104同意所挖掘的实例是唯一的有效实例。如果节点104接受一个实例为有效实例,然后发现第二实例已记录在区块链150中,则该节点104必须接受这一点,并将丢弃(即视为无效)其最初接受的未挖掘实例。
基于UTXO的模型
图2示出了示例性事务协议。这是基于UTXO的协议的示例。事务152(简称“Tx”)是区块链150的基本数据结构(每个区块151包括一个或更多个事务152)。下面将通过参考基于输出或基于“UTXO”的协议进行描述。但这并不限于所有可能的实施例。
在基于UTXO的模型中,每个事务(“Tx”)152包括数据结构,其包括一个或更多个输入202和一个或更多个输出203。每个输出203可包括未花费的事务输出(UTXO),其可用作另一新事务的输入202的来源(如果UTXO尚未赎回)。UTXO包括指定数字资产数额的值。这表示(分布式)分类账上的一组代币。UTXO还可包含其来源事务的事务ID以及其他信息。事务数据结构还可包括头部201,其可包括输入字段202和输出字段203的大小指示符。头部201还可包括事务的ID。在实施例中,事务ID是事务数据(不含事务ID本身)的哈希值,且存储在提交至矿工104M的原始事务152的头部201中。
比方说,爱丽丝103a希望创建转移相关数字资产数额至鲍勃103b的事务152j。在图2中,爱丽丝的新事务152j标记为“Tx1”。该新事务获取在序列中先前事务152i的输出203中锁定至爱丽丝的数字资产数额,并至少将此类数额中的一部分转移至鲍勃。在图2中,先前事务152i标记为“Tx0”。Tx0和Tx1只是任意的标记,其不一定意味着Tx0指区块链151中的第一事务且Tx1指池154中的下一个事务。Tx1可指向仍具有锁定至爱丽丝的未花费输出203的任何先前(即先行)事务。
当爱丽丝创建其新事务Tx1时,或至少在她将该新事务发送至网络106时,先前事务Tx0可能已经有效并包括在区块链150中。该事务此时可能已包括在区块151中的一个区块中,或者可能仍在池154中等待,在这种情况下,该事务将很快包括在新区块151中。或者,Tx0和Tx1可以创建并一起发送至网络102;或者,如果节点协议允许缓冲“孤立”事务,Tx0甚至可以在Tx1之后发送。本文事务序列上下文中使用的“先前”和“后续”一词是指由事务中指定的事务指针定义的序列中的事务顺序(哪个事务指向哪个其他事务等等)。它们同样可以替换为“前任”和“继任”、“先行”和“后代”或“父项”和“子项”等。这不一定指其创建、发送至网络106或到达任何给定节点104的顺序。然而,指向先前事务(先行事务或“父事务”)的后续事务(后代事务或“子事务”)不会有效除非父事务有效。在父事务之前到达节点104的子事务被视为孤立事务。根据节点协议和/或矿工行为,其可被丢弃或缓冲一段时间,以等待父事务。
先前事务Tx0的一个或更多个输出203中的一个包括特定的UTXO,标记为UTXO0。每个UTXO包括指定UTXO表示的数字资产数额的值以及锁定脚本,该锁定脚本定义后续事务的输入202中的解锁脚本必须满足的条件,以使后续事务有效,从而成功赎回UTXO。通常情况下,锁定脚本将数额锁定至特定方(该数额的事务的受益者)。即,锁定脚本定义解锁条件,该解锁条件通常包括以下条件:后续事务的输入中的解锁脚本包括先前事务被锁定到的一方的加密签名。
锁定脚本(亦称scriptPubKey)是节点协议识别的域特定语言中写入的一段代码。此类语言的特定示例称为“脚本(Script)”(S大写)。锁定脚本指定花费事务输出203所需的信息,例如爱丽丝签名的要求。解锁脚本出现在事务的输出中。解锁脚本(亦称scriptSig)是提供满足锁定脚本准则所需信息的域特定语言中写入的一段代码。例如,其可包含鲍勃的签名。解锁脚本出现在事务的输入202中。
因此在示出的示例中,Tx0的输出203中的UTXO0包括锁定脚本[Checksig PA],该锁定脚本需要爱丽丝的签名Sig PA,以赎回UTXO0(严格来说,是为了使试图赎回UTXO0的后续事务有效)。[Checksig PA]包含爱丽丝的公私密钥对中的公钥PA。Tx1的输入202包括向回指向Tx1的指针(例如,通过其事务ID(TxID0),其在实施例中是整个事务Tx0的哈希值)。Tx1的输入202包括在Tx0中标识UTXO0的索引,以在Tx0的任何其他可能输出中对其进行标识。Tx1的输入202进一步包括解锁脚本<Sig PA>,该解锁脚本包括爱丽丝的加密签名,该签名由爱丽丝通过将其密钥对中的私钥应用于预定的部分数据(有时在密码学中称为“消息”)创建。爱丽丝需要签名以提供有效签名的数据(或“消息”)可通过锁定脚本、节点协议或其组合进行定义。
根据实施方式,所需的签名可以例如是传统的ECDSA(椭圆曲线数字签名算法)签名、DSA(数字签名算法)签名或RSA(Rivest–Shamir–Adleman)签名,或任何其它适当形式的加密签名。签名的挑战可以例如实现为标准的支付到公钥(P2PK)难题或P2PK哈希(P2PKH)难题,或者替代地,R难题(R-puzzle)等难题可以实现为签名的手段。本示例以P2PK为例进行说明。
当新事务Tx1到达节点104时,该节点应用节点协议。这包括一起运行锁定脚本和解锁脚本,以检查解锁脚本是否满足锁定脚本中定义的条件(其中该条件可包括一个或更多个准则)。在实施例中,这涉及并置两个脚本:
<Sig PA><PA>||[Checksig PA]
其中“||”表示并置,“<…>”表示将数据放在堆栈上,“[…]”表示由解锁脚本组成的函数(在该示例中指基于堆栈的语言)。同样,脚本可以使用公共堆栈一个接一个地运行,而不是并置脚本。无论采用哪种方式,当一起运行时,脚本使用爱丽丝的公钥PA(包括在Tx0的输出的锁定脚本中),以认证Tx1的输入中的锁定脚本是否包含爱丽丝签名预期部分的数据时的签名。预期的部分数据本身(“消息”)也需要包括在Tx0中,以便执行此认证。在实施例中,签名的数据包括整个Tx0(因此不需要包括一个单独的元素来明文指定签名的部分数据,因为其本身便已存在)。
本领域技术人员将熟悉通过公私密码进行认证的细节。基本上而言,如果爱丽丝已通过使用其私钥加密签署消息,则给定爱丽丝的公钥和明文中的消息(未加密消息),诸如节点104等其他实体可认证加密版本的消息必须已经由爱丽丝签名。签署通常包括对消息进行散列,签署哈希值和将此标记到消息的明文版本作为签名,从而使公钥的任何持有者能够认证签名。因此,应当注意的是,在实施例中,在本文中对签名特定数据片段或事务部分等的任何引用可以意味着对该数据片段或事务部分的哈希值进行签名。
本文任何位置提及的哈希可以例如通过SHA(安全哈希算法)哈希函数、HMAC(基于哈希的消息认证码)哈希函数或本领域已知的任何其它适当形式的加密哈希函数来实现。
如果Tx1中的解锁脚本满足Tx0的锁定脚本中指定的一个或更多个条件(因此,在所示示例中,如果在Tx1中提供了爱丽丝的签名并进行认证),则节点104认为Tx1有效。如果是挖矿节点104M,这意味着其将添加至等待工作量证明的事务154池。如果是转发节点104F,则其将事务Tx1转发到网络106中的一个或更多个其他节点104,从而将在整个网络中传播。一旦Tx1有效并包括在区块链150中,这将把Tx0中的UTXO0定义为已花费。请注意,Tx1仅在花费未花费的事务输出203时才有效。如果试图花费另一事务152已经花费的输出,则即使满足所有其他条件,Tx1也将无效。因此,节点104还需要检查先前事务Tx0中引用的UTXO是否已经花费(已经形成另一有效事务的有效输入)。这是为何区块链150对事务152施加定义的顺序很重要的原因之一。在实践中,给定节点104可维护单独的数据库,标记已花费事务152的UTXO 203,但最终定义UTXO是否已花费取决于是否在区块链150中形成了另一有效事务的有效输入。
如果给定事务152的所有输出203中指定的总数额大于其所有输入202所指向的总数额,则这是大多数事务模型中的另一失效依据。因此,此类事务将不会传播或挖掘到区块151中。
请注意,在基于UTXO的事务模型中,给定UTXO需要作为一个整体使用。不能“留下”UTXO中定义为已花费的一部分数额,而同时又花费另一部分。但UTXO的数额可以在下一个事务的多个输出之间分割。例如,Tx0的UTXO0中定义的数额可以在Tx1中的多个UTXO之间分割。因此,如果爱丽丝不想将UTXO0中定义的所有数额都给鲍勃,她可以使用剩余部分在Tx1的第二输出中自己找零,或者支付给另一方。
在实践中,爱丽丝通常还将需要包括获胜矿工的费用,因为现在仅靠区块创始事务的奖励币通常不足以激励挖掘。如果爱丽丝未包括矿工的费用,Tx0可能会被矿工节点104M拒绝,因此,尽管技术上有效,但仍然不会传播并包括在区块链150中(如果矿工104M不愿意,矿工协议不会强制他们接受事务152)。在一些协议中,挖掘费不需要其自身的单独输出203(即不需要单独的UTXO)。替代地,给定事务152中输入202所指向的总数额与输出203所指定的总数额之间的任何差额都将自动提供给获胜矿工104。例如,假设指向UTXO0的指针是Tx1的唯一输入,而Tx1只有一个输出UTXO1。如果UTXO0中指定的数字资产的数额大于UTXO1中指定的数额,则该差额将自动提供给获胜矿工104M。替代地或附加地,这不一定排除可以在其自身事务152的其中一个UTXO 203中明确指定矿工费用。
爱丽丝和鲍勃的数字资产由区块链150中任何位置的任何事务152中的锁定至他们的未花费UTXO组成。因此,通常情况下,给定方103的资产分散在整个区块链150的各种事务152的UTXO中。区块链150中的任何位置均未存储定义给定方103的总余额的一个数字。客户端应用程序105的钱包功能的作用是将锁定至相应方且在其他随后事务中尚未花费的各种UTXO值整理在一起。通过查询在任何存储节点104S(例如,与相应方的计算机设备102最近或最佳连接的存储节点104S)处存储的区块链150副本,可以实现这一点。
请注意,脚本代码通常用示意图表示(即非精确语言)。例如,可写入[ChecksigPA]表示[Checksig PA]=OP_DUP OP_HASH160<H(PA)>OP_EQUALVERIFY OP_CHECKSIG。“OP_...”是指脚本语言的特定操作码。OP_CHECKSIG(又称“Checksig”)是脚本操作码,其取两个输入(签名和公钥),并使用椭圆曲线数字签名算法(ECDSA)验证签名的有效性。在运行时,移除脚本中任何出现的签名(‘sig’),但在由‘sig’输入验证的事务中仍保留附加要求,诸如哈希难题。再如,OP_RETURN是脚本语言操作码,用于创建事务的不可花费输出,其可以将元数据储存在事务中,从而将元数据不可变地记录在区块链150中。例如,元数据可包括需存储在区块链中的文件。
签名PA是数字签名。在实施例中,这基于使用椭圆曲线secp256k1的ECDSA。数字签名对特定的数据段进行签名。在实施例中,对于给定事务,签名将对部分事务输入以及全部或部分事务输出进行签名。对输出的特定部分进行签名取决于SIGHASH标志。SIGHASH标志是包含在签名末尾的4字节代码,用于选择签名的输出(并因此在签名时固定)。
锁定脚本有时称为“scriptPubKey”,指其包括相应事务被锁定到的当事方的公钥。解锁脚本有时称为“scriptSig”,指其提供相应的签名。但是更通俗地说,在区块链150的所有应用中,UTXO赎回的条件并不一定包括对签名进行认证。更通俗地说,脚本语言可用于定义任何一个或更多个条件。因此,可以优选更为通用的术语“锁定脚本”和“解锁脚本”。
分层网络
分层网络结构:分层网络指在通信信道上分层的覆盖网络。比如,通信信道可以是底层基础设施网络,例如个人局域网、局域网(例如,公司间P2P网络)或广域网(例如,互联网)。在其它示例中,分层网络可以是经由有线连接而连接的节点网络。在另一示例中,连接可以是无线连接,例如蓝牙或Wi-Fi连接。在一些示例中,上述示例性连接中的部分或全部可用于形成分层网络。
部分或全部节点是被配置为根据连接协议连接(即,加入或重新加入)分层网络的网络。连接协议可能因连接节点所连接(即,尝试连接或重新连接)的网络的特定层而异。在详细描述连接协议之前,将描述可由连接协议创建或实施的一系列示例性分层网络。然而,应当理解的是,这些仅仅是说明性示例,通常而言,可以创建遵守连接协议的任何分层网络。
图3是分层网络(LN)300的示例的示意性表示。通常而言,LN包括由核心节点301和一系列层(或外壳)组成的核心网络(或核心层)。核心层也称为LN的第一层。该系列层从核心层向外依次从由第二节点302组成的第二层延伸到一个或更多个外层。每个外层由一组外部节点303组成。图3中仅示出了一个外层,但应当理解的是,LN可以包括任意数量的外层。作为特定示例,图5示出了包括五层的LN 500的示例,图6示出了包括四层的LN 600的示例。
图3的示例性LN 300包括五个核心节点301、六个第二节点302和八个外部节点303。在一些LN 300中,节点的数量可随着每一层而增加,即核心层由最小数量的节点组成,最外层由最大数量的节点组成。在其它示例中,核心层与最外层之间的一层或更多层可以由最大数量的节点组成。在此示例中,核心层是LN 300的最内层,第二层是中间层,外层(作为唯一的外层)是最外层。
核心层(LN内的网络)在此示例中形成完全图,即每个核心节点301与另一核心节点301相互连接。对于五个核心节点301的核心层,在给定的示例中,核心层需要十个不同的核心连接(即,两个核心节点之间的连接)。在其它示例(例如,图4)中,核心层可能不是完全图。核心层可以形成“近完全图”。在近完全图中,至少一个核心节点301未连接到至少一个其它核心节点301。可能只缺少一个核心连接。在近完全图的特定示例中,每个核心节点301可以连接到一个或更多个节点,而不是所有其它核心节点301。
第二层包括第二节点302。需要注意的是,术语“第二节点”仅用作节点302的标签,节点302通过构造位于LN 300的第二层中。每个第二节点302连接到至少一个核心节点301。在一些示例中,每个第二节点302可以仅连接到一个核心节点301。或者,第二节点302中的部分或全部可以连接到多个核心节点301。比如,第二节点302中的部分或全部可以连接到核心节点301中的每一个核心节点。在图3的示例性LN 300中,每个核心节点301连接到两个第二节点302。然而,在此示例中,一些第二节点302(示出为条纹圆圈)连接到一个核心节点301,而一些第二节点302(示出为白色圆圈和阴影圆圈)连接到两个核心节点301。连接到相同核心节点301的第二节点302(和外层的外部节点303)称为“社区”。比如,多个白色节点形成一个社区,多个条纹节点形成一个社区,多个阴影节点形成又一社区。第二节点302与核心节点301之间的连接称为“祖先连接”,并示出为宽虚线。
在图3的示例中,每个第二节点302连接到另外两个第二节点302。在一些示例中,第二节点302中的部分或全部可能不与其它第二节点形成连接,例如,一些第二节点302可连接到其它第二节点302,而一些第二节点可连接到其它第二节点302。这些“层内”连接在图3中示为节点之间的实线。
图3的外层包括外部节点303。需要注意的是,尽管存在一定的可能性,但“外层”中的“外”一词本身并不一定局限于整个LN网络的最外层。每个外部节点303连接到至少一个第二节点302。在一些示例中,每个外部节点303可以仅连接到一个第二节点302。或者,外部节点303中的部分或全部可以连接到多个第二节点302。比如,外部节点303中的部分或全部可以连接到每个第二节点301。在图3的示例性LN 300中,每个外部节点303连接到两个第二节点302。一些第二节点302(即,条状节点)连接到两个外部节点303,一些第二节点302(即,白色节点和阴影节点)连接到三个外部节点303。
在图3的示例中,每个外部节点303连接到同一层的两个其它第二节点303。在一些示例中,外部节点303中的部分或全部可能不与同一层的其它外部节点303形成任何连接。外部节点303中的部分或全部可以与同一层的另一外部节点303形成至少一个连接。
除了连接到至少一个第二节点302之外,每个外部节点303还连接到至少一个核心节点301。外部节点303与核心节点301之间的连接称为“核心祖先连接”,示为细虚线。每个外部节点303可以连接到其第二祖先节点302所连接到的每个核心节点301。如图3所示,每个外部节点303可以连接到其第二祖先节点302所连接到的每个核心节点301,而非连接到其它核心节点301。在这种情况下,每个外部节点303属于单个社区。
图4是LN 400的另一示例的示意性表示。与图3的LN 300一样,示例性LN 400包括核心层、第二层和外层。这些示例性LN 300、400共享相同数量的节点(即,五个核心节点301、六个第二节点302和八个外部节点303),但包括不同数量的连接。比如,在此示例中,核心层不是完全图,因为核心节点301之间不存在一些连接。另一区别在于,两个社区(白色节点和阴影节点)包括单个核心节点301,而另一社区(阴影节点)包括三个核心节点301。又一区别在于,LN 400外壳中的节点度现在为1,而LN 300外壳中的节点度为2。也就是说,在此示例中,对于LN 400,每个外部节点303连接到单个其它外部节点303。因此,不同层的节点具有不同的度。
图5是LN 500的另一示例的示意性表示。在此示例中,仅一些核心节点301连接到第二节点和外部节点303。也就是说,在此示例中,一些核心节点301仅与其它核心节点301形成连接。因此,在此示例中,LN 500包括单个社区(阴影节点)。该示例中的LN 500包括五层:核心层、第二层和三个外层。核心层由五个核心节点301组成,这些节点构成近完全图。在近完全图的此示例中,只缺少单个核心连接。第二层由连接到两个核心节点301的单个第二节点302组成。第二层由连接到两个核心节点301的单个第二节点302组成。第三层由经由祖先连接而连接到第二节点302的单个外部节点303组成。第三层的外部节点303还连接到第二节点302所连接到的两个核心节点301。外部节点303经由相应的核心祖先连接而连接到两个核心节点301。第四层也由单个外部节点304组成。第四层的外部节点304经由祖先连接而连接到第三层的外部节点303,并且经由祖先连接而连接到第二节点302。第四层的外部节点304还连接到第二节点302和第三层的外部节点303所连接的两个核心节点301。外部节点304经由相应的核心祖先连接而连接到两个核心节点301。最后,第五层由两个外部节点305组成。第五层的两个外部节点305连接到第四层的外部节点304、第三层的外部节点303和第二节点302,其中每个连接都是祖先连接。两个外部节点305还经由核心祖先连接而连接到两个核心节点301。在此示例中,对于LN 500,第二层的节点和外层的节点未连接到同一层的任何其它节点。
图6是LN 600的另一示例的示意性表示。该LN包括两个节点社区,具体如白色节点和黑色节点所示。在此示例中,核心层形成完全图(即,节点网络)。每个社区包括一组特有的三个核心节点301。该示例性LN 600包括四层(核心层、第二层和两个外层)。外层的每个节点连接到先前的层中的一个节点。与图5的示例性LN 500类似,第二层的节点和外层的节点未连接到同一层的任何其它节点。
在一些实施例中,LN 300、400、500、600(为简洁起见,从现在起用“300”表示)可以是“区块链分层网络(BLN)”。本文中“BLN”一词定义为分层网络,其包括区块链网络或至少部分区块链网络,例如参考图1描述的区块链网络106。
BLN受到Mandala网络的启发,具有一些类似的功能,但其被设计成允许更灵活和理想的连接结构,例如用于利用区块链网络106的服务和用户网络。
BLN 300可以在其核心包括区块链网络106的至少一部分。通常而言,分层网络的节点覆盖在底层基础设施网络上,例如互联网101。核心节点中的部分或全部是区块链网络106的节点104。它们可以包括挖矿节点104M、存储节点104S或其组合。在实施例中,核心节点中的每一个都是挖矿节点104M和/或存储节点104S(例如,完整复制节点)。
每个外部节点303(或最外层的每个外部节点)可以是最终用户节点,包括用户的计算机设备。这可以是个人用户或组织,例如公司、学术机构或政府机构等。因此,每个外部节点303可以包括一个或更多个用户终端和/或服务器,该服务器包括位于一个或更多个站点的一个或更多个服务器单元。每个外部节点303包括存储器,该存储器包括一个或更多个存储器单元;处理装置,该处理装置包括一个或更多个处理单元。这些可以例如采用任何形式的存储器介质和/处理器,与前面关于其它网络元件或用户设备所讨论的一样。存储器存储被设置成在处理装置上运行的客户端软件,其中客户端软件被配置为当运行时根据以下任何实施例或类似实施例将节点作为遵循连接协议的协议客户端进行操作。可选地,最终用户节点中的一个或更多个可以包括区块链网络106的用户102的用户设备103,并且客户端软件可以包括区块链钱包应用程序105等。
每个第二节点302可采用服务器的形式,该服务器包括一个或更多个物理服务器单元。每个此类节点包括存储器,该存储器包括一个或更多个存储器单元;处理装置,该处理装置包括一个或更多个处理单元。这些可以例如采用任何形式的存储器介质和/处理器,与前面关于其它网络元件所讨论的一样。存储器存储被设置成在第二节点302的处理装置上运行的软件。软件被配置为在运行时根据以下任何实施例或类似实施例遵循连接协议。在一些实施例中,软件被配置为当运行时提供根据以下描述的任何实施例或类似实施例操作的服务。
在一些示例中,第二节点302中的部分或全部可以操作智能合约服务。智能合约服务被配置为响应并基于由LN 300的其它节点中的一个(例如,由外部节点303)传输到智能合约服务的区块链事务来执行预定义操作。比如,智能合约可以响应于从外部节点303接收特定区块链事务,将区块链事务传输到核心节点301。
在其它示例中,第二节点302中的部分或全部可以操作其中的分布式数据库。也就是说,操作分布式数据库的每个第二节点302被配置为存储从LN 300的另一节点(例如,外部节点303)接收的数据。接收和存储数据的第二节点302可以被配置为将数据传播到同样操作分布式数据库的其它第二节点302。
节点301、302、303被配置为在覆盖网络层形成彼此之间的连接。也就是说,分层网络的节点301、302、303被配置为遵循覆盖网络协议,该协议指定可以并且不可以与分层网络的其它节点301、302、303形成的连接。因此,尽管所有节点可以(但不一定)在物理上经由底层基础设施(例如,互联网)彼此连接,但当它们作为分层网络的节点301、302、303参与并根据分层网络300的相关覆盖网络协议进行操作时,此类节点301、302、303之间的连接可能会受到更大的限制。分层网络300的两个节点301、302、303之间的连接意味着这些节点可以直接通信,在这种情况下,意味着不必经由分层网络300的另一节点301、302、303执行跳转。在分层网络等覆盖网络的上下文中,“连接”指在分层网络300层(即,分层网络的覆盖网络协议层)的连接(即,边缘)。
在实施例中,当LN 300是BLN,第二节点302中的部分或全部可以被配置为将区块链事务传输到这些第二节点302所连接的核心节点301。在一些示例中,第二节点302可以在将区块链事务传输到核心节点301之前生成区块链事务。在其它示例中,第二节点302可以将区块链事务转发给核心节点301。比如,第二节点302可以从外部节点303接收区块链事务,然后将接收到的区块链事务发送给核心节点301。类似地,给定的第二节点302(即,第二节点中的部分或全部)可以被配置为从连接到给定的第二节点302的核心节点301和/或外部节点303获得区块链事务。
此外/或者,外部节点303中的部分或全部可以被配置为将区块链事务传输到其所连接的核心节点301。外部节点303还可以被配置为将区块链事务传输到其所连接的第二节点302。在一些示例中,外部节点303可以将区块链事务传输给第二节点302和核心节点301。
外部节点303中的部分或全部可以被配置为将区块链事务传输给其它外部节点303,例如同一层的外部节点,或有序层集合中上一层或下一层的外部节点。
在BLN 300的每个核心节点301执行区块链节点104的角色的实施例中,第二节点302和/或外部节点303中的部分或全部可以被配置为请求确认已在给定的第二节点302或外部节点303所连接的挖矿节点104M的事务池中接受给定事务。池154(有时称为“内存池”)包括已根据区块链网络106的一组共识规则进行核实的事务。如果事务(例如,“第一事务”)包含在池154中,则挖矿节点104M不会接受试图双重花费第一事务的输入所引用的输出的另一事务(例如,“第二事务”)。因此,第二节点302和/或外部节点303可以查询核心节点301,以检查事务(例如,节点302、303向区块链网络106提交的事务)是否已被接受,或检查是否事务(例如,从BLN 300的另一节点接收的事务)是否为双重花费事务。核心节点301被配置为将对请求的回复传输到请求节点302、303。
此外/或者,第二节点302和/或第三节点303可以被配置为向核心节点301传输请求,以获取已在区块链150的区块151中挖掘的事务的默克尔证明。技术人员熟悉默克尔证明。默克尔证明是追溯到默克尔根的哈希序列。为了验证是否已在区块151中挖掘事务,节点302、303获取事务的哈希值,将其与默克尔证明的哈希序列中的第一哈希值进行级联(即,与事务的哈希值处于同一默克尔树级别的哈希伙伴),并对结果进行哈希处理。重复该级联和哈希处理过程,直到默克尔证明中的所有哈希值都被利用为止。如果产生的哈希与默克尔根相同,则事务必须包含在默克尔树中,并且因此包含在区块151中。核心节点301被配置为将默克尔证明传输给请求节点302、303。
此外/或者,第二节点302和/或第三节点303可以被配置为向核心节点301传输针对给定区块151的区块头的请求。在其它数据中,区块头包括挖掘到该区块151中的事务的默克尔根。核心节点301被配置为将默克尔证明传输给请求节点302、303。
在一些实施例中,核心节点301中的部分或全部可以被配置为将一组事务传输给部分或全部第二节点302和/或连接到核心节点301的部分或全部外部节点。该组中的事务可共享公共属性。比如,核心节点301可以传输包含特定协议标志的所有事务。标志可以包含在事务的输出中,例如,在不可花费的输出中。再如,事务可包括特定(且相同)的区块链地址,例如,它们可能应支付给同一区块链地址。外部节点303可与核心节点301达成协议,即核心节点301将向与外部节点303相关联的地址发送任何应付的事务。又如,事务可包括二级共识规则集。也就是说,事务可在输出中包括多个控制分支,每个控制分支特定于相应的共识规则集。输出可包括特定于第一规则集的第一控制分支和特定于第二规则集的第二控制分支(这两个控制分支可以包含在if-else条件中)。如果节点302、303被配置为实现第二规则集,则核心节点301可以将事务传输给节点302、303。如果节点302、303未被配置为实现第一规则集和第二规则集,则核心节点不会将事务传输给节点302、303。
作为挖矿节点104M的核心节点301可以在由该挖矿节点104M挖掘到区块151的生成事务(也称为“Coinbase”事务)中包含特定于该挖矿节点104M的标识符(例如,“矿工ID”)。BLN 300的其它节点可使用标识符来识别网络上的该挖矿节点104M。
识别LN 300的节点301、302、303的另一种方式是通过数字证书。节点301、302、303中的部分或全部可以与数字证书相关联。数字证书包含并证明相应节点的标识符,例如与该节点相关联的公钥、节点的网络地址(例如,IP地址)等。LN 300的节点可以使用不同节点的数字证书来连接到该节点。例如,外部节点303可以从第二节点302获取数字证书,并使用包含在数字证书中的第二节点的标识信息来连接到第二节点302。
给定层的节点可以向有序层集中的下一层的节点颁发数字证书,即核心节点301可以向第二节点302颁发数字证书,第二节点302可以向第一外层的外部节点303颁发数字证书,依此类推。在一些示例中,给定层的节点可以向同一层的节点颁发数字证书,例如,第二节点302可以向一个或更多个其它第二节点302颁发相应的数字证书。
连接协议:如上所述,连接到分层网络300的每个节点可以根据连接协议进行连接。也就是说,连接节点必须遵循连接协议的规则。连接节点只能形成连接协议所允许的连接。不得形成其它连接。在示例中,连接节点可以是核心节点301、第二节点302或外部节点303。在一些示例中,LN 300的每个节点都必须遵守连接协议。在其它示例中,只有第一次连接到LN 300或重新加入LN 300的节点必须遵循连接协议。图3至图6示出了根据连接协议建立的示例性LN 300、400、500、600。
需要注意的是,从物理上讲,在一些示例中,LN 300的每个节点可以连接或能够在其它层彼此连接,例如经由互联网。连接协议限制覆盖网络层可以形成的连接,即在分层网络层不存在或不允许一些连接。LN 300的每个连接节点被配置为根据LN 300中的覆盖层协议(包括连接协议)进行操作,该协议确定节点可以和无法在覆盖层形成的连接。换言之,连接是允许的通信信道,其中两个节点被配置为允许通过其协议形成。如果节点与另一节点连接,则可以与该节点交换,而不经由分层网络中的另一节点跳转,但如果没有连接,则不能交换,只能经由存在连接的一个或更多个其它节点的跳转进行通信。
连接协议要求连接节点连接到先前层(更内层)的至少一个节点和至少一个核心节点,但在一些示例中,核心节点可以是最内层,并且因此无法连接到先前层。在连接节点是第二节点的示例中,这两个要求是等效的。如果连接节点是第一外层的外部节点,则连接节点至少连接到第二节点302和核心节点301。
连接协议可要求连接节点连接到多个核心节点。连接协议可进一步要求连接节点连接到多个(而非全部)核心节点,例如,除一个核心节点外的所有核心节点。连接节点可以是必须连接到两个或更多个核心节点的第二节点。也就是说,第二节点中的部分或全部必须连接到两个或更多个核心节点(在一些示例中,并非所有核心节点)。
连接协议可要求连接节点连接到一个或更多个第二节点。如果连接节点是第二节点,这意味着连接(第二)节点必须连接到一个或更多个不同的第二节点。如果连接节点是外部节点,连接(第二)节点必须连接到一个或更多个第二节点。连接外部节点可以是第一外层的外部节点,或第二层的外部节点,以此类推。
连接协议可要求连接到先前层节点的外部节点必须连接到先前层节点所连接的部分或全部核心节点(上面称为“核心祖先”)。例如,外部节点可连接到第二节点。在那种情况下,外部节点还必须连接到第二节点所连接的核心节点。如果外部节点连接到多个第二节点,则连接协议可要求外部节点必须连接到每个第二节点所连接的核心节点。再如,第二外层的外部节点可以连接到第一外层的外部结点。在该示例中,连接协议要求第二外层的外部节点必须连接到第一外层的外部结点所连接的核心节点。
连接协议可要求外部节点连接到同一外层的一个或更多个(例如,两个)外部节点。连接协议可要求每个外部节点连接到同一层的一个或更多个外部节点。或者,一些外层可包含形成一个或更多个同层连接的外部节点,而一些外层可包含不形成一个或更多个同一层连接的外部节点。连接协议可要求同一外层的每个外部节点必须连接到该层相同数量的不同外部节点。例如,第一外层的每个外部节点可能需要连接到两个外部节点。第二外层的每个外部节点可能需要连接到三个外部节点。也就是说,外部节点所连接的同一层的外部节点数量可能在不同的外层之间有所不同。
在一些实施例中,第ith外层(例如,第三外层)的外部节点可连接到前(i-1)th层(例如,第二外层)的外部节点。连接协议可要求下一(i+1)th外层的外部节点(例如,所有外部节点)必须连接到第(i-1)th外层的外部节点所连接的第ith层的每个节点。比如,图5所示的LN 500中第五层的外部节点305连接到第四层的外部节点304和第三层的外部节点303。在一些示例中,连接协议可要求第(i+1)th层的外部节点必须连接到第ith外层的外部结点所连接的每个先前层的每个外部节点。
在LN 300的部分或全部节点与数字证书相关联的实施例中,连接协议可要求连接节点必须仅连接到与相应数字证书相关联的节点相关联的节点。在一些实施例中,如果与相应的节点相关联的数字证书已由相应节点之前的层的节点(例如,核心节点)颁发,或在一些示例中,由相应节点的同一层的节点(例如,不同的第二节点)颁发,则连接协议可要求连接节点(例如,外部节点)必须仅连接到相应的节点(例如,第二节点)。
在一些实施例中,连接协议可要求连接节点只能连接到已向连接节点颁发数字证书的节点。也就是说,连接到节点包括从该节点接收数字证书。
连接协议支持BLN的构建。与Mandala网络一样,BLN是分层建立的。与Mandala网络不同,第一层可形成不完全图(例如,近完全图)。BLN与Mandala网络之间的其它区别在于,在BLN中,每个接续层中的节点可以具有不同的度,节点可以连接到中心层中的多个节点,和/或各层之间的节点度可能不同。
优选地,对于中央核心之外的所有节点:
(i)每个节点连接到中央核心内n1个节点中的m。
(ii)每个节点连接到每层中的一个节点,其中g是总层数。
(iii)每个节点都是正好一个社区的成员。最多有n2个社区,其中n2是第二层的节点数。
(iv)每个节点最多通过3次跳转连接到其它节点。这称为图的直径。
在BLN中,“社区”指共享同一组核心祖先的节点集合。图6示出了带网络n1=6、m=3和g=4的BLN,并绘制两个不同社区的节点:黑色节点社区和白色节点社区。白色节点社区包括均连接到中央核心左侧的三个节点的所有节点,黑色节点社区包括连接到中央核心右侧的三个节点的所有节点。
Mandala网络的特征在于核心层(i=1)外的所有节点都连接到正好一个核心祖先(即,ci=1)。这在很大程度上有助于Mandala网络的涌现性:
·具有平均最短路径长度,该长度随着网络规模(N=∑ini)的增大而逐渐趋于常数。
·随着网络规模(N=∑ini)增大变得特别稀疏。
·可以抵抗随机节点故障。
BLN的特点在于所有非核心节点都连接到至少一个祖先。然而,BLN定义适用于最多与核心祖先有m个连接的非核心节点(即,1≤ci≤m)。在BLN中从ci=1推广到1≤ci≤m是区块链协议的人工产物。定义区块链系统的协议依赖于概率安全模型。从本质上来讲,这意味着BLN中的任何参与者(节点)对区块链150上记录的事件存在既得利益时,必须通过连接到网络哈希算力(hash power)的最小分数f考虑概率安全模型,其中所有总哈希算力分布在BLN核心层的节点中。
假设核心层在其n1个核心节点中呈现出哈希算力的统一均衡分布,则节点的最小分数为:
f=m/n1
区块链协议表明最小分数的下限为f=0.51,但大规模BLN的网络参与者可能需要比这更大的分数(例如,f=0.67)来提高弹性(例如,双重花费)。BLN可以通过参数m的选择进行表征,因为这决定了BLN内参与者操作的概率安全性,具体取决于相关BLN需求的特定用例。
最接近核心的第二层L2中的节点最依赖于区块链协议的概率安全模型,并且在接近Lg的层中,这种依赖性可能会降低。连接协议可要求L2的节点恰好连接到c2=m个核心祖先,而所有接续层i>2中的节点可连接到核心节点范围1<<ci≤m内的任何位置。在一些示例中,所有接续层中的节点必须连接到m个核心祖先。
BLN中央核心外的节点可以与核心有“SPV类”连接。这意味着可以做到以下几点。
a)向核心节点发送事务
b)询问核心节点是否已在其内存池/候选区块中接受事务
c)要求提供已在区块中挖掘的事务的默克尔证明
d)要求提供最新的区块头列表
这些简单且有针对性的请求旨在尽可能减少核心节点301的负担,同时允许使用BLN在顶部构建尽可能广泛的可扩展解决方案。许多用例只需要上述连接类型。在一些示例中,第二节点302和/或外部节点303被配置成使得只能执行上述动作a)至d)。然而,其它解决方案通常是企业级的,可能需要核心主动为其提供更多数据,例如满足特定标准的事务。因此,动作a)至d)是BLN的最低要求,但在一些示例中,这些节点与核心之间也可能存在额外数据传送。
对于运行智能合约的节点,一些节点可能只需要SPV之类的操作a)到d),而另一些节点可能需要协议,以便从核心节点接收更多数据。
在一些BLN中,用户可操作第3层或更高层的节点,智能合约可以由第2层或更高层的节点操作。用户实际上无法连续“监听”区块链上具有特定输出地址的事务,因为需要对区块链150进行持续监控,以获取包括特定地址在内的事务。鉴于每个时间段内可以传输到区块链的事务数量均不断增加,此类持续监控对于最终用户来说是不现实的。尽管在某些区块链的钱包架构中不断监控区块链是常见的,但鉴于每个时间段提交给区块链的事务数量和区块链的用户数量预计未来都将出现大幅增加,该解决方案不具备可扩展性。考虑以下示例:爱丽丝想向鲍勃付费。她利用其知道属于鲍勃的输出地址为所需数额创建事务。然后,爱丽丝将该事务提交给挖矿网络,而非直接提交给鲍勃。为了让鲍勃知道已经接受事务,他必须“监听”区块链,查看网络上是否以及何时出现了带有其输出地址的事务。他必须请求挖矿节点代表他这样操作。这意味着挖矿节点必须记录鲍勃的地址,并检查是否其收到的每个事务与该地址相匹配。需要注意的是,矿工没有这样做的经济动机。假设矿工每秒必须处理一百万个事务,并且必须检查是否匹配一百万个地址,则很快变得不切实际。
替代地,在BLN中,爱丽丝可能与鲍勃有直接联系,并且可直接向他发送事务。然后,鲍勃可向核心中的矿工发送事务,并且同时询问他们是否接受该事务有效。由于事务中包含矿工的费用,因此激励矿工接受事务,并且激励他们确认是否已接受事务,以降低构建孤立区块的风险。为了使系统更加安全,爱丽丝可以向鲍勃发送她的事务输入的默克尔证明。鲍勃可以检查这些默克尔证明,因为他有区块头副本。这可向鲍勃确保爱丽丝的输入在某一点上是区块链150的一部分,如果她已经花费这些输入,则鲍勃将拥有双重花费的证据,因为他已在爱丽丝给他的事务中收到爱丽丝的签名。需要注意的是,鲍勃可以是智能合约(第二节点),爱丽丝可以是希望与该智能合约交互的用户(外部节点)。如果智能合约是“轻量级”的,在这种意义上,智能合约操作者(operator)未与挖矿节点达成任何特定协议以促进智能合约的处理,则也不能依靠监听区块链150来接收触发状态变化的事务。爱丽丝必须将此类事务直接发送至智能合约。
服务提供者可以操作第2层或更高层中的节点。服务提供者的情况不同于用户或轻量级智能合约的情况。服务提供者可以与核心挖矿节点或核心节点集合订立商业协议,然后将事务的某个子集传播给服务提供者节点。此类事务应易于识别并满足特定标准,例如:
·待特定协议标志的OP_RETURN数据。例如,Metanet协议、代币化协议或数字证书协议。
·匹配小型特定集合的输出地址。例如,企业级智能合约或地址白名单/黑名单。
·OP_VER控制分支指示的二级共识规则集。
此外,按照这些规则发送到核心的事务,或以其它方式确定为参与服务级别协议的社区的一部分的事务可能具有较低(或甚至为零)的事务费用。差额可以通过更多的事务量或服务水平协议的法定货币收入来弥补。
BLN 300的所有节点可能和与其身份相关联的半永久公钥相关联。该公钥可允许安全通信,并通过身份密钥的确定性推导,或通过使用身份密钥对事务密钥进行签名或加密,来提供区块链事务中使用的公钥链接。
识别挖矿核心节点的两种方式如下所示:
1)矿工ID。矿工可以选择通过向其挖掘的每个区块的Coinbase事务输入中添加他们的身份密钥来识别自己。
2)网络分析。一些矿工选择匿名。然而,通过分析网络,例如通过查看新区块的来源,仍然可以识别构建区块的节点。
重要的是,BLN的节点能够识别两种类型的矿工,从而能够轮询尽可能多的矿工,以确定是否已接受他们的事务。
具有矿工ID的核心节点能够向第2层节点颁发数字证书。这可能是因为他们与这些节点有服务级别协议,或者可能是因为这些节点要求证书收费。在这种意义上,核心节点可充当证书颁发机构(CA)。
无论是否有来自核心节点的证书,第2层节点都可以请求外部CA向其颁发数字证书。因此,每个第2层节点可以具有至少一个数字证书来证明其身份。它们可以向第2层中的其它节点颁发证书,从而在它们之间创建信任网。第2层的节点可以向第3层的节点颁发证书,第3层的节点可以将证书颁发给第4层的节点,依此类推,从而创建称为公钥基础设施(PKI)的证书层次结构。
事实上,此类PKI不仅可以用于识别BLN中的节点,还可以确保遵循正确的BLN结构。例如,如果第3层向过多的第4层节点颁发证书,或者无法确保它们与系统中的其它节点具有适当的连接,则可能会撤销第3层节点的证书。
这些证书本身可以存储在区块链150上。这使得PKI透明且易于审核。
排序和时间戳
许多应用可以使用区块链来实现,其中应用数据的顺序很重要。为解决此问题,根据本公开的实施例,网络的一个或更多个节点可以被配置为充当认证服务(attestationservice),在提交给服务的不同数据项之间进行仲裁,以确定数据项的最终顺序,然后将该顺序不可变地记录在区块链上。
认证服务在一个或更多个认证节点处实现。在实施例中,这些是覆盖在底层基础设施网络上的覆盖网络的节点,例如互联网。然而,也不排除它们本身可以是网络的基础设施节点,例如组织内的专用网络。无论采用哪种方式,一个或更多个认证节点被设置成从一个或更多个客户端节点接收数据项,以形成记录所接收数据项的顺序的事务,并将这些事务转发到一个或更多个核心节点以记录在区块链150上。核心节点是区块链网络106的节点104。它们可以包括挖矿节点104M、存储节点104S或其组合。在实施例中,核心节点中的每一个都是挖矿节点104M和/或存储节点104S(例如,完整复制节点)。
每个客户端节点可以是最终用户节点,包括服务用户的计算机设备。这可以是个人用户或组织,例如公司、学术机构或政府机构等。因此,每个客户端节点可以包括一个或更多个用户终端和/或服务器,该服务器包括位于一个或更多个站点的一个或更多个服务器单元。每个客户端节点包括存储器,该存储器包括一个或更多个存储器单元;处理装置,该处理装置包括一个或更多个处理单元。这些可以例如采用任何形式的存储器介质和/处理器,与前面关于其它网络元件或用户设备所讨论的一样。存储器存储被设置成在处理装置上运行的客户端软件,其中客户端软件被配置为当运行时根据以下任何实施例或类似实施例将节点作为认证节点提供的认证服务的客户端进行操作。可选地,传输最终用户节点中的一个或更多个可以包括区块链网络106的用户102的用户设备103,并且客户端软件可以包括区块链钱包应用程序105等。然而,认证服务可以被设置成代表此类最终用户制定至少一些事务,而不是必须在用户的钱包105中制定所有此类事务。
认证节点被设置成在客户端节点与核心节点之间调和的认证服务。每个认证节点可采用服务器的形式,该服务器包括一个或更多个物理服务器单元。每个此类节点包括存储器,该存储器包括一个或更多个存储器单元;处理装置,该处理装置包括一个或更多个处理单元。这些可以例如采用任何形式的存储器介质和/处理器,与前面关于其它网络元件所讨论的一样。存储器存储被设置成在认证节点的处理装置上运行的认证服务软件。该软件被配置为当运行时提供根据以下描述的任何实施例或类似实施例操作的认证服务。在实施例中,每个认证节点的身份可以由证书颁发机构认证,以使客户端节点、核心节点和/或其它认证服务节点能够验证该认证节点的身份。每个客户端节点的身份可以由证书颁发机构认证,以使认证服务节点、核心节点和/或其它客户端节点能够验证该客户端节点的身份。为了提供或使用认证服务,此类节点之间的交互可能取决于验证。此外/或者,节点版本控制可以用作在覆盖网络中识别节点的替代机制。
在实施例中,上述布置可以用分层网络700的形式实现,例如图3至图6中描述的类型,并且如图7中的示例所示。也就是说,分层网络包括:核心网络,该核心网络包括核心节点701;围绕核心的至少一个中间层,每个中间层包括一个或更多个中间层节点702;围绕中间层的最外层的至少一个外层,每个外层包括一个或更多个外层节点703。需要注意的是,尽管存在一定的可能性,但“外层”中的“外”一词本身并不一定局限于整个分层网络700的最外层。在实施例中,图7的分层网络700可以是图3的分层网络300,在这种情况下,图7的外层节点是图3或图4的第三层节点,图7中的中间层节点702是图3或图4的第二层节点302,图7的核心节点701可以是图3或图4的核心节点301。
如关于图3至图6所讨论,分层网络700可以是覆盖在底层物理或基础设施网络上的覆盖网络,例如互联网。在此类实施例中,节点701、702、703被配置为在覆盖网络层形成彼此之间的连接。也就是说,分层网络的节点701、702、703被配置为遵循覆盖网络协议,该协议指定可以并且不可以与分层网络的其它节点701、702、703形成的连接。因此,尽管所有节点在物理上能够经由底层基础设施(例如,互联网)彼此连接,但当它们作为分层网络的节点701、702、703参与并根据分层网络700的相关覆盖网络协议进行操作时,此类节点701、702、703之间的连接可能会受到更大的限制。分层网络700的两个节点701/702/703之间的连接意味着这些节点可以直接通信,在这种情况下,意味着不必经由分层网络700的另一节点701/702/703执行跳转。在覆盖网络的上下文中,“连接”指在分层网络层(即,分层网络的覆盖网络协议层)的连接(即,边缘)。
每个中间层节点702连接到核心网络中的至少一个核心节点701(区块链网络节点104)。核心网络包括区块链网络106的至少一部分。在实施例中,核心网络本身可以是完整的网络。
在一些情况下,一些中间层节点702和/或外层节点703可以包括区块链网络106的外围节点104,例如除挖矿节点104M和/或存储节点104S之外的节点,例如转发节点104F。或者,它们可包括在区块链网络106中不具有任何角色的节点(挖掘、存储或转发),而非作为区块链网络106的客户端。
每个外层节点703连接到至少一个中间层中的中间层节点中的至少一个。在实施例中,每个外层节点703还有连接到至少一个核心节点701的至少一个连接(即,连接到区块链网络106)。在一些此类实施例中,外层节点703中的一个或更多个分别都具有连接到多个(而非全部)核心节点701的连接。在实施例中,整个分层网络700可以是非完整网络,即不是每个节点701、702、703都在覆盖网络层彼此连接。在实施例中,给定层内的每个节点都可连接到同一层中的至少一个其它节点。例如,中间层内的每个节点702可连接到同一中间层内的一个或更多个其它节点,和/或外层中的每个结点703可连接到同一外层中的一个或更多个其它节点。在实施例中,还可以在不同中间层的不同中间层节点702和/或不同外层的不同外层节点703之间形成连接。
在实施例中,分层网络700可以根据与图3至图6中有关的任何协议规则或结构特征进行配置;其中中间节点702的每个中间层是核心与最外层之间的层,外部节点703的每个外层是第二层外面的层(中间层在核心与外层之间)。
下面的实施例将在分层网络的上下文中进行举例论证,但应当理解的是,这并不构成限制,更通俗地说,认证节点可以是在区块链网络106的一个或更多个客户端节点与一个或更多个核心节点104之间调和的任何类型的覆盖网络的任何节点。
在分层网络700的实施方式中,至少一个中间层内的中间节点702中的至少一个充当提供认证服务的认证节点702A的角色。在至少一个外层的外层中的外部节点703中的至少一个是由认证节点702A提供的认证服务的客户端节点703C。每个核心节点701是区块链网络106的节点104中的一个,优选矿工104M和/或存储节点104S(例如,完整复制节点)。为便于说明,图7中仅示出了两个客户端节点703C和两个认证节点702A,但应当理解的是,可能还存在更多节点。在实施例中,客户端节点703C和认证节点702A可以作为彼此同一社区的一部分。
客户端节点703C是客户端,至少因为它们是认证服务的客户端。在实施例中,在客户端节点703C中的一个或更多个上运行的客户端软件可以进一步被配置为将其节点703C作为由一个或更多第二层节点702提供的一个或更多个附加服务的客户端进行操作,例如数据库服务或智能合约服务。和/或其可被配置为将其节点703C作为区块链网络106的一个或更多个核心节点701(例如,104M、104S)的客户端进行操作,例如能够查询区块链150。
此外,客户端节点703C描述为认证服务的客户端(以及可选的一个或更多个其它服务)这一事实并不排除这些节点本身也可能是提供给一个或更多个进一步实体的一个或更多个进一步服务的服务器的可能性(未示出)。例如,客户端节点703C可包括向客户提供在线服务的公司的计算机设备。本文中“最终用户”指相关特定服务的最终用户,不一定局限于商业供应链末端的个人消费者(尽管当然也存在这种可能性)。
下面描述了一种方法,其中排序服务实体702A可以使用区块链150来记录从一个或更多个客户端节点703C接收数据元素的排序和时间。可选地,排序服务还可以盖时间戳。
首先针对单个可信的顺序认证节点702A描述该方法。这可以建模为以区块链网络节点104/701为核心的分层网络700中的单个中间层(例如,第二层)节点。然后,该服务的用户将是外层(例如,第三层)节点703C的用户,其直接连接到服务702A,并且可选地也连接到区块链150(通过连接到核心中的至少一个核心节点701)。
当从外层中的客户端节点703C接收数据元素时,中间层时间戳服务702A将按照排序将数据元素收集在一起。当某个时间段过去时,例如0.1秒,数据元素的该有序列表封装在事务中,并经由核心701发送到区块链150,并且因此不可更改地进行记录。如果将时间戳添加到记录中,则也会记录时间和顺序。
示例性应用用于定义数据库等中条目更新的最终顺序。在这种情况下,从客户端节点703C接收的每个数据项可表示数据库中条目的相应状态变化(即,更新)。然而,此类更新不一定是可交换的,即顺序很重要。例如,如果存在两个执行数据元素的非交换操作的请求,例如从左侧进行矩阵乘法,则顺序很重要。在另一示例中,一个请求可以是删除文件,另一请求是读取文件。同样,应用这些请求的顺序会对结果产生影响。
另一示例性应用是在基于输出(例如,基于UTXO)的区块链模型中实现智能合约。基于UTXO的事务等不像基于账户的模型的事务一样本质上支持智能合约,因此如果要在基于输出的模型(例如,基于UTXO的模型)中实现智能合约,则智能合约功能需要在基本事务模型上分层。在这种情况下,待记录在区块链150上的数据项可同样表示状态的变化,例如所有权的变化等。同样,顺序很重要,例如,因为这可能会影响试图转让所有权的有效性。
另一示例性应用是证书颁发机构(CA)的数字证书的排序和时间戳。数字证书用于批准访问权限或其它电子许可,例如用于支持互联网的SSL/TLS和HTTPS安全性。2011年,Dutch CA被从伊朗进行操作的攻击者攻破。高知名度的域被授予虚假证书,并且篡改了CA服务器上的日志文件。如果使用下述排序和时间戳服务将这些日志文件存储在区块链上,则由于工作量证明提供的安全性,无法更改日志文件。值得注意的是,公司HSM中的私钥在攻击中被泄露。这表明不能总是仅依靠经典的加密协议来确保信息的安全,而且依赖其它机制(例如,工作量证明)来使此类攻击变得极其繁琐可能也是有益的。
在操作中,认证节点702A被设置成通过中间层与外层之间的覆盖网络连接从一个或更多个客户端节点703C接收多个数据项。在本文中,数据项可以通过任意术语的方式标记为D。多个相关数据项可以从相同的客户端节点703C或不同的客户端节点703C接收,或者一些数据项从同一客户端节点703C接收,另一些数据项从不同的客户端节点703C接收。它们可以经由客户端节点703C与认证节点702A之间的连接直接接收,或者可以经由其中分层网络的一个或更多个其它节点转发(即,可经由传输客户端节点703C与认证节点702A之间的多次跳转接收)。
认证节点702A被配置为确定多个数据项D的顺序,从而确定多个数据项的序列。在实施例中,确定的顺序是在认证节点702A接收数据项的顺序。然而,并不排除可以适用其它仲裁规则。例如,如果传输数据项的客户端节点703C加盖传输或创建时间的时间戳,并且认证节点702A信任这些客户端节点,则顺序可能是报告的传输或创建时间,而非接收时间。再如,顺序可取决于为不同数据项赋予不同权重的优先级方案。
无论确定的顺序如何,认证节点702A通过创建一系列区块链事务152以记录在区块链150上来认证该顺序。认证节点702A生成一系列两个或更多个此类事务,在本文中可通过任意术语的方式标记为Tx0、Tx1、Tx2……。认证节点702A包含该系列中每个接续事务Tx的有效载荷(payload)中一个或更多个数据项D的不同集合的指示。有效载荷可包含在相应事务的不可花费的输出中。此类输出可通过终止该输出的锁定脚本的操作码变得不可花费,例如OP_RETURN。然而,在其它事务协议中,可通过其它方式包含有效载荷。根据认证节点702A确定的数据项的顺序,每个接续事务中指示的一个或更多个数据项的集合紧接在该系列事务中该事务之前的事务中指示的集合之后。即,该系列中事务的顺序与确定的数据项序列中集合的顺序相匹配。
认证节点702A为一系列事务创建或以其它方式确定对应的一系列公共/私有密钥对:
P1,P2,P3,…
认证节点702A使用每个密钥对的私钥对签署一系列事务中的对应事务:
Tx0→Tx1→Tx2→Tx3→…。
事务Tx1在其输入的解锁脚本中包含P1的签名,事务Tx2包含P2的签名,以此类推。每个事务还包含有效载荷,例如在OP_RETURN字段中,包含由相应事务认证的一个或更多个数据项D的集合的指示。该有效载荷由每个签名进行签署(在使用脚本语言的实施例中,可使用适当的SIGHASH标志)。初始资金事务Tx0构建成使得可以通过P1的签名进行解锁。其可具有带微量(dust)值的输出点0。例如,Tx1可构建为如图8所示。所有后续事务都具有相同的结构。即,Tx2包含签名,该签名使用指向Tx1的输入中的P2,以解锁Tx1,并且在输出中具有锁定脚本,可以通过P3的签名进行解锁,以此类推。区块链网络106可以基于密钥对的对应公钥来验证签名。资金事务Tx0可以包含或不包含第一组数据项的指示(序列中的第一组数据项可以在Tx0或Tx1中指示)。
注:为简单起见,图8所示的表格忽略了事务费用。这可以通过向事务添加另一输入和输出来进行解释(例如,由认证服务管理)。
OP_RETURN语句包含称为data1的有效载荷。这包含数据元素D或其指示,由用户按照由Tx1认证的集合中的认证服务所认证的顺序提交。(Tx2中的data2也是类似的,以此类推。)由于每个事务都对先前事务的哈希值进行签名,因此这也意味着有效载荷data1、data2、data3的排序,以此类推。
一旦被区块链网络106接受,区块链事务便不能双重花费。此外,它还充当对认证节点702A提供的认证服务进行认证的顺序的发布形式。这使客户端节点703的用户确信,其数据元素按该认证机构认证的顺序出现的位置无法可追溯地进行更改。一旦在区块151中挖掘出此类事务,则更不可能改变顺序,因为替换现有区块的计算成本昂贵。
在一些实施例中,每个事务Tx0、Tx1、Tx2……中指示的集合只包含每个事务的一个数据项D(即,每个data有效载荷仅指示单个相应的D)。或者,每个此类事务指示的集合可包括每个事务的多个数据项D(每个data有效载荷指示多个不同数据项D的不同相应集合)。在后一种情况下,有效载荷信息还指定相应事务的本地集合内数据项D的顺序。这可以例如通过有效载荷中包含的有序列表(例如,OP_RETURN输出)和/或指示映射到每个D的指示的顺序的索引来实现。稍后将更详细地讨论图9至图11所示的示例。
当每个事务指示多个数据项D时,需要一些依据才能确定每个事务待收集在一起的数据项。原则上,任何方案都可以用于在事务之间划分数据项,但在实施例中,这可以基于固定的时间间隔来完成。即,在该系列的第一事务中包含由认证节点702A在固定时间间隔的第一实例内接收的所有数据项D,然后在固定时间间隔的下一实例中接收的所有数据项D在该序列中的下一事务中指示,以此类推。
事务之间间隔的确切时间可以通过实施方式进行配置。例如,事务可以按0.1秒的间隔提交。
数据项的相应集合可以仅通过将该集合的数据项明确地(“明文”)包含在相应事务Tx的有效载荷中,而在事务中进行指示。此外/或者,它们可以用转换后的形式表示,例如哈希值、加密形式或r难题。下面将参考图9至图11对示例进行更详细的讨论。在排序认证服务的上下文中,本文中数据项的“指示”至少指允许查询节点检查事务以验证数据项的认证顺序的某些信息。在数据项D的确切值未明确包含在事务中的某些情况下,可能需要查询节点预先知道数据项D的值,并且仅检查链上的事务或区块链节点104的内存池154中的事务,以确认这些项的预期顺序。
在实施例中,认证节点702A还可在该系列中每个事务Tx0、Tx1、Tx2……的有效载荷中包括至少一个时间戳。时间戳指示在认证节点702A接收到相应数据项的时间。对于每个事务的单个数据项D,这可能只是接收该数据项的时间。对于每个事务Tx的多个数据项D,每个事务有效载荷可包含指示集合的到达时间的单个时间戳(例如,接收的时间间隔),或集合中每个数据项D的单个时间戳。
当认证服务向区块链150提交包含用户数据的事务时,在一些实施例中,该服务还将该事务发送到提交数据项D的客户端节点703。这一点是可以实现的,因为外层(例如,第3层)的用户直接连接到中间层(例如,第2层)的认证节点702A。因为在实施例中,客户端节点703还直接连接到核心的区块链挖矿节点104M和/或存储节点104S,所以可独立检查区块链网络106是否已接受事务Tx0、Tx1、Tx2……。因此,客户端节点703A可以查询矿工104M的内存池154,和/或存储节点104S上的实际区块链150记录,以确认已认证预期的顺序。其它第三方节点也可经由区块链网络106任何合适的连接以类似的方式验证这一点。在一些实施例中,客户端节点703A的查询可通过客户端节点703C与核心之间的连接执行,其中该核心仅使用前面相对于图3至图6所讨论的SPV类连接。
可选地,认证服务还可以向提交数据项的客户端节点703C发送包含其数据的事务之前的事务链。这是为了让用户可确保不存在两个通过服务提交给区块链且具有不同顺序的竞争性事务链。事务链的长度应与用户所需的信任级别相适应。该信任可以外包:例如,证书颁发机构可以每小时证明事务链的准确性。
在实施例中,层内的客户端节点703C也可以相互连接,并可以相互发送包含它们的默克尔证明及对应的默克尔证明的(挖矿)事务。因为在实施例中,每个外层(例如,第3层)节点独立地连接到区块链150,因此可以验证默克尔证明是否正确。由此,外层(例如,第3层)的用户可以在信任区块链上的工作量证明之前,只需在时间戳服务中获得最小数量的临时信任,便可针对数据的排序达成一致。
下面将更详细地探讨OP_RETURN有效载荷data1。服务旨在认证在时间间隔内接收数据元素D1,D2,D3,…的顺序。需要注意的是,数据元素可表示与每个用户相关的数据的提交哈希值。用户自行选择是否公开他们的数据,还是记录他们数据的提交哈希值。
在事务Tx中指示数据项D的集合及其相对顺序有几种不同的方法。最简单的方法是为每个元素建立索引,由于已签署OP_RETURN,因此通过时间戳服务进行认证。然而,做到这一点可采用更明智的方法,从而提供额外的排序证据,并允许推广到分布式时间戳服务。
方法1.1:哈希链。为每个数据元素Di分配唯一的索引i,并在哈希链中创建条目Hi。Hi的值取决于数据元素和哈希链的先前元素。这意味着哈希链的每个元素都必须在先前元素之后创建,从而按顺序执行。图9的表格中示出了哈希链的示例。该表格将包含在事务的有效载荷(数据)中,可以选择是否在事务中包含明确的D列。
未明确包含D值的一个优势在于,哈希值可能小于D,并且因此在链上所需存储的位数较少。同时,这意味着如果用户不想公开,则不需要公布D的实际值。无论采用哪种方式,且无论是否明确地包含D值,哈希链的另一优势在于顺序很难进行更改。例如,假设每个事务有1000个数据项D。然后,重新排序这些数据项需要执行1000次哈希处理,这在计算上是繁琐的。因此,即使认证节点702A不完全可信,但用户能更加确信数据项未进行重新排序。
在一些实施例中,还可包含接收每个数据元素Di的时间戳ti的认证。其中一种方法是在哈希链的每个元素的原像中包含时间戳,例如:
H′1=H(D1||t1),H′2=H(D2||t2||H′1),以此类推
在这种情况下,包含时间的列也将添加到图9的表格中。
OP_RETURN有效载荷data1由例如图9所示的表格组成。为节省空间或保持数据元素的私密性,可省略“数据”列。尽管需要注意的是,在那种情况下,证明哈希链顺序的唯一方法是已知所有数据元素。
用HMAC替换哈希函数可以确保额外的安全性。HMAC的描述见RFC2104,其将秘密对称密钥引入哈希处理过程。这意味着仅知道秘密密钥的人员才能证明数据的顺序。
方法I.2:带默克尔树的哈希链。这种情况与图9的哈希链类似,但不是发布整个哈希链,而是转换为默克尔树,并且只发布根。在这种情况下,集合中的每个数据项D建模为默克尔树的叶子,默克尔根作为指示包含在事务中。需要注意的是,数据的索引用其在默克尔树叶子中显示的顺序表示。稍后可以向用户提供默克尔证明,以允许用户检查是否存在数据项及其在默克尔树中的位置。该方法节省了事务的空间,因为默克尔根的OP_RETURN有效载荷中只需要256位。
此外/或者,每个数据项可以在事务中由该叶子的对应默克尔证明表示。本领域技术人员熟悉的是,给定数据项的默克尔根和默克尔证明(即根与叶之间的哈希链),则默克尔树可以证明给定数据项是集合的成员。
方法2.1:签名链。在此方法中,为每个数据元素D创建新的公钥,并使用新的公钥对该元素进行签名。这符合RFC 3161中所述时间戳协议的要求。
考虑图10中所示的公钥序列和签名。思路是每个公钥均基于先前数据生成。与哈希链类似,序列中的每个公钥(并且因此签名)只有在知道序列中的先前公钥的情况下才能创建,从而按顺序执行。
在该方法的变体中,表格中的每个条目都可以是其本身的事务。
方法2.2:r难题链。r难题是近期公开的一种挑战和证明形式。它基于ECDSA签名(S,R)的r部分,可在不泄露秘密的情况下证明知道秘密。参见https://www.youtube.com/watch?v=9EHKvNuRc0A&t=978s和https://www.youtube.com/watch?v=CqqTCsLzbEA。
ECDSA(椭圆曲线数字签名算法)签名由(S,R)组合构成,其中R是临时密钥对的公共部分的x轴。每个签名可以使用相同的公钥,但将临时密钥链接在一起。这将给出图11所示的序列。这可包含在事务有效载荷(数据)中,作为上述任何方法的替代或补充。
此处,R1是随机临时密钥,<S1、R1i>(H(Di))指使用临时密钥R1i与P1签署的数据H(Di)。
通常而言,方法1.1、方法1.2、方法2.2和/或方法2.2等中的任何一种方法可单独使用或联合使用,以指示事务的有效载荷(数据)中一组数据项D之间的顺序。
分布式情况:单个节点702A提供顺序认证服务的场景中已描述上述内容。此外,还可以通过多个认证节点702A提供此类服务。
考虑例如使用分层网络700达成共识的分布式认证服务的情况。在这种情况下,图7中的多个中间层节点702(例如,第2层节点)将扮演认证节点的角色。
假设大部分认证节点702A诚实行事,并希望就在社区(如先前所定义)传播的数据的排序和时间戳达成共识,该社区由认证服务节点702A和用户703C组成。假设N个独立认证服务节点703A连接到m个核心挖矿节点701的相同子集,并且因此定义分层网络700的社区。存在多个中间层(例如,第2层)认证节点702A这一事实允许外层(例如,第3层)的许多用户连接到中间层(例如,第2层)中的节点702,而不会对中间层节点造成过高的负载(连接太多)。
接下来要解决的问题是,在此类分布式情况中,中间层认证节点层702A(例如,第2层节点)如何可在两个数据项的排序中达成共识,例如两个用户提交的两个数据项D1、D2,即使以不同的顺序到达一个认证节点702A。
解决此问题的一种方法是使用阈值签名,即如前所述,需要至少M个不同的签名(M>1)来解锁事务,而不只是一个签名。考虑适用于认证服务节点702A的M/N阈值签名系统。这意味着存在带私有密钥共享a1,a2,..,aN的N个参与节点。M个参与者的任何子组都可以产生签名共享,其组合形成消息的签名,该消息将解锁该系列中的先前事务。
假设其中一个认证服务节点702A产生包含OP_REUTRN有效载荷data1的候选事务Tx1,该有效载荷是在所选时间段内其接收到的所有数据元素D的有序列表。该节点可将候选事务广播给所有其它认证服务节点702A(或至少其中一些),并要求它们的签名共享以对事务进行签名。如果至少收到M个签名共享(包括其自身的签名),则可将事务提交给区块链网络106,并挖掘到区块151。这可确保至少通过分布式网络中的M/N个时间戳服务,针对数据元素的排序达成一致。
如何选择在事务中创建单个认证节点702A?上面已假设只有一个认证服务节点702A已创建候选事务Tx1,并且其它认证节点702A支持这一点。但是下一候选事务呢?至少有两种方案:(i)始终有一个创建候选事务的特许认证节点702A,或(ii)在创建每个事务后,随机选择一个认证节点702A作为创建下一事务的下一节点。这可以是提前确定的随机序列,或者可以是基于与刚提交的事务Tx1相关的种子的确定性随机选择。例如,种子可以是Tx1。此外,也可以使用其它分布式仲裁算法进行分布式计算。
结论
应当理解,上述实施例仅通过示例的方式进行描述。更通俗地说,可以根据下述任何一个或更多个语句提供一种方法、装置或程序。
语句1:一种认证数据项序列的顺序的方法,所述方法包括在网络的认证节点处:从所述网络的一个或更多个客户端节点接收所述数据项序列;
确定所述数据项序列的顺序,由此所述序列中的每个接续(successive)数据项随接(succeed)所述序列中的所述数据项中的先前数据项;以及,基于所述确定,认证所述顺序,如下:在一系列区块链事务的每一个区块链事务中包含所述数据项中的一个或更多个数据项的相应集合的指示,所述系列中的每个接续事务随接所述系列中的相应先前事务,其中每个接续事务中所指示的所述集合根据所述顺序随接所述相应先前事务中指示的所述集合;其中每个接续事务包括相应输入,所述相应输入指向所述相应先前事务的输出,其中所述相应先前事务的所述输出包括锁定脚本,且所述相应接续事务的所述输入包含解锁脚本,所述解锁脚本包括基于一系列密钥中的相应密钥的相应签名,所述包括所述相应签名是解锁所述相应先前事务的所述解锁脚本的条件;其中每个接续事务中的所述相应签名签署所述相应接续事务的一部分,其至少包含所述相应数据项集合的所述指示;其中所述认证所述顺序的步骤还包括发送待记录在区块链上的所述事务。
语句2:根据语句1所述的方法,其中所述顺序是在所述认证节点接收所述数据项的顺序。
或者,顺序可以是符合其它仲裁规则的顺序,例如传输顺序或优先级顺序。
语句3:根据语句1或2所述的方法,其中所述认证所述顺序的步骤还包括:为所述事务中的每一个盖时间戳信息,所述时间戳信息指定所述相应数据项集合的至少一次接收时间,所述接收时间是在所述认证节点的接收时间。
语句4:根据前述任一项语句所述的方法,其中所述集合中的每一个集合包括相应的多个数据项,其中每个事务中包含的所述指示包括所述相应集合中每个单独数据项的指示,并且其中所述认证所述顺序的步骤包括:在所述一系列事务的每一个中,包含指定所述相应集合内所述数据项顺序的信息,从所述集合中的第一数据项到所述集合中的一个或更多个接续数据项。
在实施例中,该信息可包含在相应事务的不可花费的输出中。不可花费的输出通过包含终止不可花费的输出的脚本的操作码而变得不可花费。例如,所述操作码可以是OP_RETURN。
语句5:根据语句4所述的方法,其中所述信息包括:映射到所述相应集合中每个单独数据项的所述指示的索引、和/或所述集合中所述单独数据项的有序列表。
语句6:根据语句4或5所述的方法,其中基于所述认证节点在预定重复时间间隔的相应实例内接收到的数据,选择每个相应集合的所述多个数据项。
语句7:根据从属于语句3的语句4、5或6所述的方法,其中在每个事务内:所述时间戳信息包括对应于所述相应集合中每个单独数据项的单独时间戳,指定在所述单独数据项的所述认证节点的接收时间。
语句8:根据语句4至7中任一项所述的方法,其中在每个事务内:每个单独数据项的所述指示包括至少一个哈希值;所述第一数据项的所述指示包括第一原像的哈希值,其中所述第一原像至少包括所述第一数据项;并且,随接所述第一数据项的每个接续数据项的所述指示包括相应接续原像的哈希值,其中每个接续原像至少包括所述序列中的所述先前哈希值。
语句9:根据从属于语句7的语句8所述的方法,其中所述第一原像和所述接续原像中的每一个还包括所述对应的时间戳。
语句10:根据语句4至9中任一项所述的方法,其中对于每个事务,将所述单独数据项建模为默克尔树的叶子,并且所述指示包括以下一项或两项:默克尔树的默克尔根,和/或每个单独数据项的默克尔证明。
在一些实施例中,指定相应集合内数据项顺序的信息包括默克尔树的默克尔根,其中默克尔树的每片叶子包括原像的相应哈希值,其中第一原像至少包括第一数据项;默克尔树的每片接续叶子包括相应接续原像的哈希值,其中每个接续原像至少包括该接续数据项和该序列中的先前哈希值。
语句11:根据语句4至10中任一项所述的方法,其中在每个事务内:每个单独数据项的所述指示包括至少一个对应公钥,所述第一数据项的所述指示包括基于所述第一数据项生成的第一公钥,所述集合中每个接续数据项的所述指示包括接续公钥,所述接续公钥是基于所述接续数据项和所述序列中的先前公钥生成的。
语句12:根据语句11所述的方法,其中所述签名包括使用所述公钥中的每一个单独签名,每个所述公钥均对包含所述对应数据项或其哈希值的消息进行签名。
语句13:根据语句4至12中任一项所述的方法,其中在每个事务内,每个单独数据项的所述指示包括所述单独数据项的r难题。
语句14:根据语句4至13中任一项所述的方法,其中每个数据项的所述指示包括明文(in-the-clear)的所述相应数据项。
语句15:根据语句1至13中任一项所述的方法,其中每个事务均不包含任何明文的所述数据项。
在实施例中,从同一客户端节点接收多个数据项中的至少一些。此外/或者,从不同客户端节点接收多个数据项中的至少一些。
每个数据项可以直接通过认证节点与从中接收该数据项的客户端节点之间的连接来进行接收。或者,可经由多次跳转替代地接收数据项,并经由客户端节点与认证节点之间的网络的一个或更多个节点转发数据项。
语句16:根据前述任一项语句所述的方法,其中所述每个网络包括分层网络,所述分层网络包含核心节点的核心层、一个或更多个中间层以及一个或更多个外层,每个所述中间层包括多个中间层节点,每个所述外层包括多个外层节点;其中所述核心节点包括区块链网络的一个或更多个节点。
在实施例中,核心节点包括区块链网络的一个或更多个挖矿节点和/或存储节点。在实施例中,核心节点中的每一个都是区块链网络的挖矿节点和/或存储节点(例如,完整复制节点)。
语句17:根据语句16所述的方法,其中所述认证节点是所述中间层节点中的一个。
语句18:根据语句16或17所述的方法,其中所述传输节点或所述传输节点中的至少一个是所述外层节点中的一个。
语句19:根据语句16、17或18所述的方法,其中所述发送包括将所述事务发送到所述核心层。
语句20:根据语句19所述的方法,其中所述发送包括,通过所述认证节点与所述核心节点之间的连接,将所述事务中的至少一些直接发送到所述核心节点中的至少一个。
语句21:根据语句19所述的方法,其中所述发送包括,将所述事务中的至少一些事务经由所述中间层节点中的另一中间层节点发送到所述核心节点中的一个或更多个核心节点。
语句22:根据语句21所述的方法,其中所述另一中间层节点被配置为将其自身的签名添加到从所述认证节点接收的每个所述事务中,其中所述一系列事务中的每个解锁脚本以多个所述中间层节点的签名作为条件进行解锁。
在实施例中,该另一中间层节点可以与认证节点位于同一中间层。或者,该另一中间层节点可以位于分层网络的不同中间层中,介于核心层与认证节点层之间。
语句23:根据前述任一项语句所述的方法,其中每个数据项的所述指示包含在所述相应事务的不可花费的输出中。
不可花费的输出通过包含终止不可花费的输出的脚本的操作码而变得不可花费。例如,所述操作码可以是OP_RETURN。
语句24:根据前述任一项语句所述的方法,其中所述事务和/或所述认证节点由证书颁发机构进行认证。
语句25:一种计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;处理装置,所述处理装置包括一个或更多个处理单元;网络接口,所述网络接口包括一个或更多个网络接口单元;其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时通过执行根据前述任一项语句所述的方法来操作作为所述认证节点的所述计算机设备,包括经由所述网络接口接收所述数据项和发送所述事务。
语句26:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或更多个处理器上运行时,执行根据语句1至24中任一项所述的方法。
语句27:一种确定数据项序列的记录顺序是否与预期顺序相匹配的方法,所述方法包括在网络的客户端节点处:通过从区块链上记录的一系列事务中的每一个事务读取所述数据项中的一个或更多个数据项的相应集合的指示来确定所述记录顺序,所述系列中的每个接续事务随接所述系列中的相应先前事务;以及,对于每个接续事务,根据所述预期顺序,检查:所述接续事务中指示的所述相应集合的所述一个或更多个数据项是否随接所述相应先前事务中指示的所述相应集合的所述一个或更多个数据项;其中每个接续事务包括相应输入,所述相应输入指向所述相应先前事务的输出,其中所述相应先前事务的所述输出包括锁定脚本,所述相应接续事务的所述输入包含解锁脚本,所述解锁脚本包括基于一系列密钥中的相应密钥的相应签名,所述包括所述相应签名是解锁所述相应先前事务的所述解锁脚本的条件;并且,所述方法包括验证每个接续事务中的所述签名。
语句28:根据语句27所述的方法,其中所述客户端节点先前地将至少一个所述数据项传输到所述网络的认证节点,以便所述认证节点通过创建所述一系列事务并将其发送到所述区块链上进行记录来认证所述记录顺序。
语句29:根据语句27或28所述的方法,其中所述网络的至少一部分包括分层网络,所述分层网络包含核心节点的核心层、一个或更多个中间层、以及一个或更多个外层,每个所述中间层包括多个中间层节点,每个所述外层包括多个外层节点;其中所述核心节点包括区块链网络的一个或更多个节点,所述客户端节点是所述外层节点中的一个,所述认证节点是所述中间层节点中的一个。
语句30:根据语句29所述的方法,其中所述客户端节点,经由所述客户端节点与一个所述中间层之间的连接,将所述至少一个数据项发送给所述认证节点,但经由所述客户端节点与所述核心层之间的直接连接,执行所述读取;其中所述核心层的至少一些所述节点维护所述区块链的副本。
语句31:一种计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;处理装置,所述处理装置包括一个或更多个处理单元;网络接口,所述网络接口包括一个或更多个网络接口单元;其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时通过执行语句27至30中任一项所述的方法来操作作为所述查询节点的所述计算机设备,包括经由所述网络接口读取所述指示。
语句32:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或更多个处理器上运行时,执行根据语句27至30中任一项所述的方法。
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
Claims (32)
1.一种认证数据项序列的顺序的方法,所述方法包括在网络的认证节点处:
从所述网络的一个或更多个客户端节点接收所述数据项序列;
确定所述数据项序列的顺序,由此所述序列中的每个接续数据项随接所述序列中的所述数据项中的先前数据项;以及
基于所述确定,认证所述顺序,如下:在一系列区块链事务的每一个区块链事务中包含所述数据项中的一个或更多个数据项的相应集合的指示,所述系列中的每个接续事务随接所述系列中的相应先前事务,其中每个接续事务中所指示的所述集合根据所述顺序随接所述相应先前事务中指示的所述集合;
其中每个接续事务包括相应输入,所述相应输入指向所述相应先前事务的输出,其中所述相应先前事务的所述输出包括锁定脚本,且所述相应接续事务的所述输入包含解锁脚本,所述解锁脚本包括基于一系列密钥中的相应密钥的相应签名,所述包括所述相应签名是解锁所述相应先前事务的所述解锁脚本的条件;
其中每个接续事务中的所述相应签名签署所述相应接续事务的一部分,其至少包含所述相应数据项集合的所述指示;
其中所述认证所述顺序的步骤还包括发送待记录在区块链上的所述事务。
2.根据权利要求1所述的方法,其中所述顺序是在所述认证节点接收所述数据项的顺序。
3.根据权利要求1或2所述的方法,其中所述认证所述顺序的步骤还包括:
-为所述事务中的每一个盖时间戳信息,所述时间戳信息指定所述相应数据项集合的至少一次接收时间,所述接收时间是在所述认证节点的接收时间。
4.根据前述任一项权利要求所述的方法,其中所述集合中的每一个集合包括相应的多个数据项,其中每个事务中包含的所述指示包括所述相应集合中每个单独数据项的指示,并且其中所述认证所述顺序的步骤包括:
-在所述一系列事务的每一个中,包含指定所述相应集合内所述数据项顺序的信息,从所述集合中的第一数据项到所述集合中的一个或更多个接续数据项。
5.根据权利要求4所述的方法,其中所述信息包括:映射到所述相应集合中每个单独数据项的所述指示的索引、和/或所述集合中所述单独数据项的有序列表。
6.根据权利要求4或5所述的方法,其中基于所述认证节点在预定重复时间间隔的相应实例内接收到的数据,选择每个相应集合的所述多个数据项。
7.根据从属于权利要求3的权利要求4、5或6所述的方法,其中在每个事务内:
所述时间戳信息包括对应于所述相应集合中每个单独数据项的单独时间戳,指定在所述单独数据项的所述认证节点的接收时间。
8.根据权利要求4至7中任一项所述的方法,其中在每个事务内:
每个单独数据项的所述指示包括至少一个哈希值;所述第一数据项的所述指示包括第一原像的哈希值,其中所述第一原像至少包括所述第一数据项;并且,随接所述第一数据项的每个接续数据项的所述指示包括相应接续原像的哈希值,其中每个接续原像至少包括所述序列中的所述先前哈希值。
9.根据从属于权利要求7的权利要求8所述的方法,其中所述第一原像和所述接续原像中的每一个还包括所述对应的时间戳。
10.根据权利要求4至9中任一项所述的方法,其中对于每个事务,将所述单独数据项建模为默克尔树的叶子,并且所述指示包括以下一项或两项:
默克尔树的默克尔根,和/或
每个单独数据项的默克尔证明。
11.根据权利要求4至10中任一项所述的方法,其中在每个事务内:
每个单独数据项的所述指示包括至少一个对应公钥,所述第一数据项的所述指示包括基于所述第一数据项生成的第一公钥,所述集合中每个接续数据项的所述指示包括接续公钥,所述接续公钥是基于所述接续数据项和所述序列中的先前公钥生成的。
12.根据权利要求11所述的方法,其中所述签名包括使用所述公钥中的每一个单独签名,每个所述公钥均对包含所述对应数据项或其哈希值的消息进行签名。
13.根据权利要求4至12中任一项所述的方法,其中在每个事务内,每个单独数据项的所述指示包括所述单独数据项的r难题。
14.根据权利要求4至13中任一项所述的方法,其中每个数据项的所述指示包括明文的所述相应数据项。
15.根据权利要求1至13中任一项所述的方法,其中每个事务均不包含任何明文的所述数据项。
16.根据前述任一项权利要求所述的方法,其中所述每个网络包括分层网络,所述分层网络包含核心节点的核心层、一个或更多个中间层以及一个或更多个外层,每个所述中间层包括多个中间层节点,每个所述外层包括多个外层节点;其中所述核心节点包括区块链网络的一个或更多个节点。
17.根据权利要求16所述的方法,其中所述认证节点是所述中间层节点中的一个。
18.根据权利要求16或17所述的方法,其中所述传输节点或所述传输节点中的至少一个是所述外层节点中的一个。
19.根据权利要求16、17或18所述的方法,其中所述发送包括将所述事务发送到所述核心层。
20.根据权利要求19所述的方法,其中所述发送包括,通过所述认证节点与所述核心节点之间的连接,将所述事务中的至少一些直接发送到所述核心节点中的至少一个。
21.根据权利要求19所述的方法,其中所述发送包括,将所述事务中的至少一些事务经由所述中间层节点中的另一中间层节点发送到所述核心节点中的一个或更多个核心节点。
22.根据权利要求21所述的方法,其中所述另一中间层节点被配置为将其自身的签名添加到从所述认证节点接收的每个所述事务中,其中所述一系列事务中的每个解锁脚本以多个所述中间层节点的签名作为条件进行解锁。
23.根据前述任一项权利要求所述的方法,其中每个数据项的所述指示包含在所述相应事务的不可花费的输出中。
24.根据前述任一项权利要求所述的方法,其中所述事务和/或所述认证节点由证书颁发机构进行认证。
25.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;
处理装置,所述处理装置包括一个或更多个处理单元;
网络接口,所述网络接口包括一个或更多个网络接口单元;
其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时通过执行根据前述任一项权利要求所述的方法来操作作为所述认证节点的所述计算机设备,包括经由所述网络接口接收所述数据项和发送所述事务。
26.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或更多个处理器上运行时,执行根据权利要求1至24中任一项所述的方法。
27.一种确定数据项序列的记录顺序是否与预期顺序相匹配的方法,所述方法包括在网络的客户端节点处:
通过从区块链上记录的一系列事务中的每一个事务读取所述数据项中的一个或更多个数据项的相应集合的指示来确定所述记录顺序,所述系列中的每个接续事务随接所述系列中的相应先前事务;以及
对于每个接续事务,根据所述预期顺序,检查:所述接续事务中指示的所述相应集合的所述一个或更多个数据项是否随接所述相应先前事务中指示的所述相应集合的所述一个或更多个数据项;
其中每个接续事务包括相应输入,所述相应输入指向所述相应先前事务的输出,其中所述相应先前事务的所述输出包括锁定脚本,所述相应接续事务的所述输入包含解锁脚本,所述解锁脚本包括基于一系列密钥中的相应密钥的相应签名,所述包括所述相应签名是解锁所述相应先前事务的所述解锁脚本的条件;并且
所述方法包括验证每个接续事务中的所述签名。
28.根据权利要求27所述的方法,其中所述客户端节点先前地将至少一个所述数据项传输到所述网络的认证节点,以便所述认证节点通过创建所述一系列事务并将其发送到所述区块链上进行记录来认证所述记录顺序。
29.根据权利要求27或28所述的方法,其中所述网络的至少一部分包括分层网络,所述分层网络包含核心节点的核心层、一个或更多个中间层、以及一个或更多个外层,每个所述中间层包括多个中间层节点,每个所述外层包括多个外层节点;其中所述核心节点包括区块链网络的一个或更多个节点,所述客户端节点是所述外层节点中的一个,所述认证节点是所述中间层节点中的一个。
30.根据权利要求29所述的方法,其中所述客户端节点经由所述客户端节点与一个所述中间层之间的连接将所述至少一个数据项发送给所述认证节点,但经由所述客户端节点与所述核心层之间的直接连接执行所述读取,其中所述核心层的至少一些所述节点维护所述区块链的副本。
31.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;
处理装置,所述处理装置包括一个或更多个处理单元;
网络接口,所述网络接口包括一个或更多个网络接口单元;
其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时通过执行权利要求27至30中任一项所述的方法来操作作为所述查询节点的所述计算机设备,包括经由所述网络接口读取所述指示。
32.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或更多个处理器上运行时,执行根据权利要求27至30中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2002311.5A GB2592225A (en) | 2020-02-19 | 2020-02-19 | Attestation service for use with a blockchain network |
GB2002311.5 | 2020-02-19 | ||
PCT/IB2021/050364 WO2021165755A1 (en) | 2020-02-19 | 2021-01-19 | Attestation service for use with a blockchain network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115136543A true CN115136543A (zh) | 2022-09-30 |
Family
ID=69956544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180015115.6A Pending CN115136543A (zh) | 2020-02-19 | 2021-01-19 | 在区块链网络中使用的认证服务 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230066711A1 (zh) |
EP (1) | EP4097915A1 (zh) |
JP (1) | JP2023515368A (zh) |
KR (1) | KR20220139871A (zh) |
CN (1) | CN115136543A (zh) |
GB (1) | GB2592225A (zh) |
WO (1) | WO2021165755A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2592211A (en) * | 2020-02-19 | 2021-08-25 | Nchain Holdings Ltd | Adapting connections of a layered network |
GB202114285D0 (en) * | 2021-10-06 | 2021-11-17 | Nchain Licensing Ag | Layer 2 token protocol |
GB2615820A (en) * | 2022-02-22 | 2023-08-23 | Nchain Licensing Ag | Data exchange attestation method |
CN116634025B (zh) * | 2023-07-25 | 2023-12-29 | 武汉趣链数字科技有限公司 | 一种确定交易顺序的方法、设备、系统和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111247547A (zh) * | 2017-05-26 | 2020-06-05 | 区块链控股有限公司 | 基于脚本的区块链交互 |
-
2020
- 2020-02-19 GB GB2002311.5A patent/GB2592225A/en active Pending
-
2021
- 2021-01-19 KR KR1020227026627A patent/KR20220139871A/ko unknown
- 2021-01-19 WO PCT/IB2021/050364 patent/WO2021165755A1/en unknown
- 2021-01-19 CN CN202180015115.6A patent/CN115136543A/zh active Pending
- 2021-01-19 JP JP2022548672A patent/JP2023515368A/ja active Pending
- 2021-01-19 US US17/796,618 patent/US20230066711A1/en active Pending
- 2021-01-19 EP EP21700644.4A patent/EP4097915A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202002311D0 (en) | 2020-04-01 |
KR20220139871A (ko) | 2022-10-17 |
EP4097915A1 (en) | 2022-12-07 |
GB2592225A (en) | 2021-08-25 |
WO2021165755A1 (en) | 2021-08-26 |
US20230066711A1 (en) | 2023-03-02 |
JP2023515368A (ja) | 2023-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2746446C2 (ru) | Способы и устройство для распределенной базы данных, содержащей анонимные входные данные | |
CN115136543A (zh) | 在区块链网络中使用的认证服务 | |
CN115136566A (zh) | 分布式数据库 | |
CN113924748A (zh) | 知识证明 | |
CN116235460A (zh) | 认证系统和方法 | |
CN116210016A (zh) | 共生通证系统 | |
CN114747172A (zh) | 加密链接身份 | |
CN114128216A (zh) | 多输入交易 | |
CN117480758A (zh) | 用于验证区块链上的通证的计算机实现的方法和系统 | |
CN115136560A (zh) | 分层网络 | |
CN116157796A (zh) | 警报账户 | |
CN116508291A (zh) | 默克尔证明实体 | |
CN115136542A (zh) | 智能合约 | |
CN114531941A (zh) | 多标准区块链协议 | |
US20220405749A1 (en) | Allocation of a digital asset using blockchain transactions | |
CN115152195A (zh) | 分层网络的适配连接 | |
CN117836771A (zh) | 使用区块链协调对等数据传输 | |
CN117280653A (zh) | 多方区块链地址方案 | |
CN115699676A (zh) | 自定义事务脚本 | |
CN116547945A (zh) | 默克尔证明实体 | |
CN116745794A (zh) | 区块链相关验证方法和系统 | |
CN116349201A (zh) | 在区块链上存储响应值的物理不可克隆函数 | |
CN115428400A (zh) | 撤销对网络的访问权限 | |
Sadasiuvam | A critical review on using blockchain technology in education domain | |
Tian | Robust and effective consensus approaches for blockchain systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |