CN115136560A - 分层网络 - Google Patents
分层网络 Download PDFInfo
- Publication number
- CN115136560A CN115136560A CN202180014957.XA CN202180014957A CN115136560A CN 115136560 A CN115136560 A CN 115136560A CN 202180014957 A CN202180014957 A CN 202180014957A CN 115136560 A CN115136560 A CN 115136560A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- core
- external
- transaction
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1046—Joining mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
- H04L67/1089—Hierarchical topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1087—Peer-to-peer [P2P] networks using cross-functional networking aspects
- H04L67/1091—Interfacing with client-server systems or between P2P systems
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- 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/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种计算机实现的用于连接到分层网络的方法。分层网络包括设置在有序层集中的多个节点。有序层集依次包括核心层、第二层和一个或更多个外层,该核心层包括一组核心节点,该第二层包括一组第二节点,每个外层包括相应的一组外部节点。每个核心节点连接到至少一个另外的核心节点。该方法由连接节点执行并且包括根据连接协议连接到网络。该连接协议要求每个节点必须连接到先前层中的至少一个节点,并且每个外部节点还必须连接到至少一个核心节点。
Description
技术领域
本公开涉及一种根据连接协议连接分层网络的方法。
背景技术
区块链是指一种分布式数据结构形式,其中在点对点(P2P)网络中的多个节点中的每个节点处维护区块链副本。区块链包括一系列数据区块,其中每个区块包括一个或更多个事务(transaction)。每个事务都可以回指序列中的先前事务,其可以扩展一个或更多区块。事务可以通过提交到网络包括在新区块中。新区块的创建过程称为“挖掘”,该过程涉及多个挖掘节点中的每个挖掘节点争相执行“工作量证明”,即基于等待包括在区块中的未决事务池解决加密难题。
网络中的每个节点可以具有以下三个角色中的任何一个、两个或全部:转发、挖掘和存储。转发节点在整个网络节点中传播事务。挖掘节点将事务挖掘到区块中。存储节点各自对区块链中的已挖掘区块存储自己的副本。为了将事务记录在区块链中,一方将该事务发送到网络中的节点中的一个节点进行传播。接收该事务的挖掘节点可以争相将该事务挖掘到新区块中。每个节点被配置为遵守相同的节点协议,该协议将包括用于确认事务有效的一个或更多个条件。无效事务将不会传播或挖掘到区块中。假定事务已经核实有效,从而在区块链上被接受,则该事务(包括任何用户数据)将因此作为不可改变的公共记录,继续存储在P2P网络中的各个节点处。
成功解决工作量证明难题以创建最新区块的矿工通常被奖励一个称为“区块创始事务”的新事务,该事务会生成新的数字资产数额。工作量证明激励矿工不要欺骗系统,在他们的区块中包括双重花费事务,因为挖掘区块需要大量计算资源,而包括试图双重花费的区块很可能不会被其他节点接受。
在“基于输出的”模型(有时称为基于UTXO的模型)中,给定事务的数据结构包括一个或更多个输入以及一个或更多个输出。任何可花费输出包括指定数字资产数额的元素,有时称为UTXO(“未花费的事务输出”)。该输出还可以包括指定用于赎回该输出的条件的锁定脚本。每个输入包括指向先前事务中的此类输出的指针,并且还可以包括解锁脚本以用于解锁指向输出的锁定脚本。因此,考虑一对事务,将其称为第一事务和第二事务(或“目标”事务)。第一事务包括指定数字资产数额的至少一个输出,并且包括定义解锁该输出的一个或更多个条件的锁定脚本。第二事务(目标事务)包括至少一个输入和解锁脚本,该至少一个输入包括指向第一事务的输出的指针;该解锁脚本用于解锁第一事务的输出。
在此类模型中,当第二事务(目标事务)被发送到P2P网络以在区块链中传播和记录时,在每个节点处应用的有效性准则之一将是:解锁脚本满足在第一事务的锁定脚本中定义的一个或更多个条件中的所有条件。另一条件将是:第一事务的输出尚未被另一早期有效事务赎回。根据这些条件中的任何一个条件发现目标事务无效的任何节点都不会传播该事务,也不会包括该事务以便挖掘到要记录在区块链中的区块中。
传统上,区块链中的事务用于传递数字资产,即许多数字代币。但是也可利用区块链在区块链上叠加其它功能。例如,区块链协议可允许在事务输出中存储附加用户数据。现代区块链在单一事务中可存储的最大数据容量在不断增加,从而能够并入更复杂的数据。例如,这可用于在区块链中存储电子文档,甚至音频或视频数据。
发明内容
C.桑帕约·菲洛、A.莫雷拉、R.安德雷德等人在“Mandala网络:超小世界和高度稀疏图”Sci Rep 5,9082(2015)中提出了Mandala网络的概念。
Mandala网络是在多层(或外壳或世代)中构建的网络,其中第一层形成完全图,同一层中的每个节点具有相同的度。此处,第一层形成完全图,因为第一层中的每个节点连接到第一层中的所有其它节点。层的“度”这一术语表示给定节点所连接到的同一层的节点数。例如,如果层的度为2,则该层的每个节点连接到同一层的其它两个节点。
选择三个参数(n1,b,λ)可指定Mandala网络的类型。参数n1表示第一层的节点数,参数b表示连接到第ith层的每个节点的节点数,以形成第(i+1)th层,λ是决定每个外壳中节点度的比例因子。第ith层中的节点称为连接到该节点的第(i+1)th层中的节点的“祖先”。按照构造,每层中的每个节点都直接连接到第一层之前的所有祖先节点。
如果g是Mandala网络中的总层数,则i层中的节点度表示kig,并由以下公式给出:
kig=bλg-i+(i-1)
A型Mandala网络具有参数(n1,b,λ)=(3,2,2),在这种情况下,上述公式可简化为B型Mandala网络具有参数(n1,b,λ)=(4,4,2)。这些网络采用环形拓扑,层内度为2。A型网络的属性在于,二层(即,第二层)及以上层中的每个节点都精确地连接到一层(即,第一层或中心层)的一个节点。
按照定义,任何类型的Mandala网络都只使用三个参数(n1,b,λ)进行构建。为此,这些参数只能够描述一组非常具体的限制性网络。目前,认为需要建立节点的分层网络,由此连接到网络的节点根据预定义的规则集这样做。
根据本文公开的一个方面,提供了一种计算机实现的用于连接到分层网络的方法。分层网络包括设置在有序层集中的多个节点。有序层集依次包括核心层、第二层和一个或更多个外层,该核心层包括一组核心节点,该第二层包括一组第二节点,每个外层包括相应的一组外部节点。每个核心节点连接到至少一个另外的核心节点。该方法由连接节点执行并且包括根据连接协议连接到网络。该连接协议要求每个节点必须连接到先前层中的至少一个节点,并且每个外部节点还必须连接到至少一个核心节点。
本发明提供了一种根据连接协议连接到分层网络(LN)的方法。连接协议允许形成比Mandala网络限制性更小的分层网络,同时仍保留Mandala网络的某些有益方面。
在实施例中,核心节点包括区块链网络的多个节点。在实施例中,核心节点中的每一个都可以是区块链网络的挖矿节点和/或存储节点(例如,完整复制节点)。
附图说明
为了帮助理解本公开的实施例并示出如何实施此类实施例,现将仅通过举例的方式参考附图进行说明,其中:
图1是一种用于实现区块链的系统的示意性框图;
图2示意性地示出了可记录在区块链中的事务的一些示例;
图3是分层网络的示例的示意性表示;
图4是分层网络的示例的另一示意性表示;
图5是分层网络的示例的另一示意性表示;
图6是分层网络的示例的另一示意性表示。
具体实施方式
示例性系统概述
图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中。
作为基于账户的事务模型的一部分,另一种类型的事务协议可称为“基于账户的”协议。在基于账户的情况下,每个事务均不通过参考过去事务序列中先前事务的UTXO来定义转移的数额,而是通过参考绝对账户余额进行定义。所有账户的当前状态由矿工单独存储到区块链中,并不断更新。在此类系统中,事务使用账户的运行事务记录(也称为“头寸”)进行排序。该值由发送者签名作为其加密签名的一部分,并作为事务引用计算的一部分进行哈希处理。此外,可选的数据字段也可以在事务中签名。例如,如果数据字段中包含先前事务的ID,则该数据字段可指向先前事务。
无论在何种类型的模式中,当用户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透明且易于审核。
自适应连接
本发明的实施例还提供了一种基于分层网络的属性(条件)有意地删除(或禁用)分层网络的连接的方法。也就是说,在这些实施例中,LN 300的节点可被配置为响应于某些不利或不良的网络条件而将其连接适配到其它节点。
适配节点(即,适配连接的节点)可以是核心节点301、第二节点302或外部节点303。在一些示例中,LN 300的每个节点可被配置为基于网络属性适配其与其它节点的连接。如上文所述,适配节点可以是SPV类节点。
在LN 300的上下文中,禁用与节点的连接意味着防止通过连接将任何数据传输到该节点,而不一定物理地终止连接。换言之,如上所述,分层网络300的两个节点301、302、303之间的连接意味着这些节点可以直接通信,在这种情况下,这意味着不必经由分层网络300的另一节点301、302、303执行跳转。在分层网络等覆盖网络的上下文中,“连接”指在分层网络300层(即,分层网络的覆盖网络协议层)的连接(即,边缘)。因此,禁用连接意味着分层网络300中的两个节点301、302、303之间的连接不再支持这些节点的直接通信。
适配节点可以连接到一个或更多个核心节点301。比如,适配节点可以是连接到其它核心节点301的核心节点301。在其它示例中,适配节点可以是连接到一个或更多个核心节点301的第二节点302或外部节点303。在这些示例中,适配节点可以响应于网络属性,禁用适配节点与连接到该适配节点的核心节点301之间的一个或更多个而非全部的连接。
适配节点可以连接到一个或更多个第二节点302。比如,适配节点可以是连接到第二节点302的核心节点301。在其它示例中,适配节点可以是连接到其它第二节点的第二节点302,或适配节点可以是连接到一个或更多个第二节点302的外部节点303(例如,在第一外层或第二外层中,以此类推)。在这些示例中,适配节点可以响应于网络属性,禁用适配节点与连接到适配节点的第二节点302之间的一个、部分或全部连接。
适配节点可以连接到一个或更多个外部节点303,例如在同一外层或不同外层中。比如,适配节点可以是核心节点301,该核心节点经由核心祖先连接而连接到外部节点303。在其它示例中,适配节点可以是连接到外部节点的第二节点302,或外部节点可以是外部节点303,该外部节点连接到同一外层和/或跨不同外层的一个或更多个外部节点303。在这些示例中,适配节点可以响应于网络属性,禁用适配节点与连接到适配节点的外部节点303之间的一个、部分或全部连接。
在一些实施例中,执行适配所基于的一个或更多个网络属性可包括分层网络上的负载。适配节点可以响应于检测到负载均衡问题,禁用一个或更多个连接(例如,分层网络300的一个或更多个连接上流量过多)。负载均衡问题可以是全网络的问题,即整个网络的负载超过阈值量。在这种情况下,适配节点可以选择禁用哪些连接,以便使负载低于允许的阈值。在其它示例中,适配节点可以从连接到适配节点的节点中的一个接收指示,其中指令指示适配节点删除某些连接。比如,核心节点301可指示适配节点(例如,外部节点)删除核心节点301与适配节点之间的连接。
负载均衡问题可以是适配节点与连接到适配节点的特定节点之间的负载。例如,适配节点可以是核心节点301,在第二节点302或外部节点303之间的负载有所增加。适配节点可以禁用负载增加的连接,例如以使负载在允许的阈值范围内。或者,适配节点可以是连接到核心节点301的节点,适配节点可以禁用该连接,例如响应于核心节点301发出的删除连接的指令。
负载均衡问题可指核心层的核心节点301上的负载高于允许阈值。如果适配节点是核心节点301,则核心节点301可删除其连接中的一个或更多个,例如到其它核心节点301的连接、和/或到一个或更多个第二节点302的连接、和/或到一个或更多个外部节点303的连接。如果适配节点是第二节点302或外部节点303,则第二节点302或外部节点303可删除其核心连接中的一个或更多个。
检测负载均衡问题可包括检测分层网络中适配节点与一个或更多个其它节点之间的连接上的负载超过阈值。此类负载可以例如根据带宽、错误率、丢包率、延迟、抖动或组合一个或更多个此类度量方式的组合度量标准进行测量。此外/或者,检测负载均衡问题可包括检测适配节点上的处理负载超过阈值。这可以例如根据适配节点所消耗的处理资源、适配节点的可用处理资源来进行测量。
在实施例中,检测负载均衡问题可包括检测网络的适配节点与一个或更多个其它节点(例如,核心节点301)之间的连接数超过连接数阈值,例如,到适配节点(例如,核心节点)的最大总连接数。例如,适配节点可以在上述连接协议所允许的最小或最大连接数范围内适配。
比如,适配节点可以是连接到太多节点的核心节点301。阈值可以是适配节点与特定层的节点之间的连接的阈值。比如,只允许适配节点形成(和维持)一定数量的核心连接,或到第二节点302的连接,或者到外部节点303的连接(例如,特定层的连接或整个外层的总连接)。适配节点可以删除其与其它节点的一个或更多个连接,和/或指示其所连接节点中的一个或更多个删除其与适配节点的连接。所删除连接的数量可以等于或大于超出允许连接数阈值的连接数。
在一些实施例中,网络属性可包括隐私问题。也就是说,适配节点可接收关于网络隐私泄露的指示(或以其它方式获取有关信息)。隐私问题可以指网络的节点遭到黑客攻击或出现故障。或者,隐私问题可以指识别信息(例如,LN 300的适配节点或其它节点的标识信息)已泄露(例如,偷窃或泄露)。适配节点可以删除与标识信息泄露的节点的连接。识别信息可包括与LN 300的给定节点相关联的私钥和/或公钥。
适配节点可从所述适配节点所连接的LN 300的一个或更多个节点接收网络属性的指示。指示还可包括删除连接的指令,例如删除与向适配节点发送指示的节点的连接。在一些示例中,仅核心节点301被配置为发布指示和/或指令。在其它示例中,此外/或者,第二节点302和/或外部节点303可以被配置为发布指示和/或指令。适配节点可删除与向适配节点发送指示的节点的连接。
在一些实施例中,禁用与相应节点的连接可包括撤销由适配节点向相应节点颁发的相应数字证书。在这些示例中,节点必须具有有效的数字证书才能与另一节点连接。适配节点可以是负责向第二节点302和/或外部节点303颁发数字证书的核心节点301。适配节点可以撤销外部节点303等的数字证书,以禁用与该节点的连接。再如,第二节点302可负责向外部节点303颁发数字证书。适配节点仍然属于核心节点301,可以指示第二节点302撤销外部节点303的数字证书,从而禁用适配节点与外部节点303之间的连接。
适配节点可以是需要了解区块链150的状态的第二节点302或外部节点303,例如是否在挖矿节点104M的池154中接受事务,是否在区块链150的区块151中记录事务等。适配节点可以将信息请求传输到作为区块链节点104的一个或更多个核心节点301(例如,连接到适配节点的单个核心节点)和一个或更多个第二节点302(例如,连接到适配节点的单个第二节点)。从一个或更多个核心节点301接收信息后,适配节点可检查所接收的不同信息集之间的一致性。如果接收到的信息一致,则适配节点可以确信核心节点与第二节点返回了正确的信息。如果适配节点连接到表示区块链网络106的哈希功率51%以下的挖矿节点,例如仅单个挖矿节点104M,则这是特别有益的。
适配节点可以从核心节点301和第二节点302请求相同的信息。或者,适配节点可以从不同的节点301、302请求不同但相关的信息。例如,适配节点可以从核心节点请求区块头或默克尔根,同时从第二节点请求事务或默克尔证明。
在一些实施例中,适配节点可被配置为重新连接(例如,重新启用)所禁用连接中的一个或更多个。比如,适配节点可确定(例如,从LN 300的节点接收信息)网络属性已经恢复到正常条件,例如不再存在负载均衡问题。
结论
应当理解,上述实施例仅通过示例的方式进行描述。更通俗地说,可以根据下述任何一个或更多个语句提供一种方法、装置或程序。
语句1:一种用于连接到分层网络的计算机实现的方法,其中所述分层网络包括设置在有序层集(ordered set of layers)中的多个节点,所述有序层集依次包括核心层、第二层以及一个或更多个外层,所述核心层包括核心节点的集合,所述第二层包括第二节点的集合,每个所述外层包括相应的外部节点的集合,其中每个核心节点连接到至少一个其它核心节点;并且,其中所述方法由连接节点执行并且包括根据连接协议连接到所述网络,其中所述连接协议要求:每个节点必须连接到先前层中的至少一个节点;且,每个外部节点还必须连接到至少一个核心节点。
这些层从最内层(例如,核心层)到最外层(例如,外层中的一个)进行排序
语句2:根据语句1所述的方法,其中所述核心节点中的一个、部分或全部核心节点连接到多个其它核心节点。
语句3:根据语句2所述的方法,其中所述核心节点中的一个、部分或全部核心节点连接到多个而非全部的其它核心节点。
语句4:根据语句1至3中任一项所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或每个第二节点必须连接到多个核心节点。
语句5:根据语句4所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或全部第二节点必须连接到多个而非全部的核心节点。
语句6:根据前述任一项语句所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或全部第二节点必须连接到至少一个其它第二节点。
语句7:根据语句6所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或全部第二节点必须连接到多个其它第二节点。
语句8:根据前述任一项语句所述的方法,其中所述连接协议要求与先前层的相应节点相连接的给定外层的每个外部节点必须连接到所述先前层的相应节点所连接到的所述核心节点中的至少一个核心节点。
语句9:根据语句8所述的方法,其中所述连接协议要求与所述先前层的所述相应节点相连接的给定外层的每个外部节点必须连接到所述先前层的相应节点所连接到的所有所述核心节点。
语句10:根据前述任一项语句所述的方法,其中所述连接协议要求所述外层中的一个、部分或全部外层必须包括:与所述同一外层的至少一个其它外部节点相连接的至少一个外部节点。
语句11:根据语句10所述的方法,其中所述连接协议要求所述外层中的一个、部分或全部外层必须包括至少一个外部节点,所述外部节点连接到所述同一外层的多个其它外部节点。
语句12:根据语句10或语句11所述的方法,其中所述连接协议要求给定外层的每个外部节点连接到相同数量的所述外层的其它外部节点。
语句13:根据语句10或语句11所述的方法,其中所述连接协议要求给定外层的至少一个外部节点连接到不同数量的所述外层的其它外部节点。
语句14:根据前述任一项语句所述的方法,其中每层的所述节点的数量从所述核心层到所述外层的最外层是递增的。
语句15:根据前述任一项语句所述的方法,其中所述一个或更多个外层包括多个外层,给定外层中的每个外部节点连接到所述给定外层内部的第一先前层的相应一个或更多个外部节点,所述第一先前层的所述一个或更多个外部节点中的每一个外部节点连接到所述第一先前层内部的第二先前层中的相应一个或更多个外部节点,并且其中所述连接协议要求所述给定外层中的所述外部节点中的一个、部分或全部外部节点必须连接到所述第一先前层的所述相应一个或更多个外部节点所连接到的所述第二先前层的所述相应一个或更多个外部节点中的至少一个外部节点。
语句16:根据语句15所述的方法,其中所述连接协议要求所述给定外层中的所述外部节点中的一个、部分或全部外部节点必须连接到所述第二先前层的所述相应一个或更多个外部节点中的每一个外部节点,所述第二先前层是所述第一先前层的所述相应一个或更多个外部节点所连接到的。
语句17:根据语句15或语句16所述的方法,其中所述连接协议要求给定外层中的每个相应外部节点必须连接到所述网络的每个先前层中的至少一个节点。
语句18:根据前述任一项语句所述的方法,其中所述核心节点包括区块链网络的多个节点。
分层网络在核心层包括区块链网络,或区块链网络的至少一部分。第二节点和外部节点中的每一个提供围绕区块链网络或至少围绕其一部分分层的服务。
语句19:根据语句18所述的方法,其中每个核心节点是所述区块链网络的相应区块链节点。
语句20:根据语句19所述的方法,其中每个核心节点是以下至少一项:所述区块链网络的相应挖矿节点、相应存储节点、相应转发节点。
在实施例中,每个核心节点是挖矿节点和/或存储节点(例如,完整复制节点)。
语句21:根据前述任一项语句所述的方法,其中最外层的所述外部节点中的一个、部分或全部外部节点包括相应的最终用户设备(end-user device)。
语句22:根据前述任一项语句所述的方法,其中所述连接节点是以下各项中的一项:所述核心节点中的一个、所述第二节点中的一个、或所述外部节点中的一个。
语句23:根据前述任一项语句所述的方法,其中每个相应第二节点和/或外部节点被配置为将区块链事务传输到所述相应第二节点所连接的所述核心节点中的一个、部分或全部核心节点。
语句24:根据语句10或其任何从属语句所述的方法,其中每个相应外部节点被配置为将区块链事务传输到所述相应外部节点所连接的所述其它外部节点中的一个、部分或全部其它外部节点。
语句25:根据语句19或其任何从属语句所述的方法,其中每个相应第二节点和/或外部节点被配置为,从所述相应第二节点和/或外部节点所连接的所述核心节点中的一个、部分或全部核心节点,请求确认事务池中已接受区块链事务,所述事务池已根据所述区块链网络的一组共识规则核实。
语句26:根据语句19或其任何从属语句所述的方法,其中每个相应第二节点和/或外部节点被配置为,从所述相应第二节点和/或外部节点所连接的所述核心节点中的一个、部分或全部核心节点,请求在所述区块链的区块中已挖掘的事务的默克尔证明。
语句27:根据语句19或其任何从属语句所述的方法,其中所述区块链的每个区块包括区块头,并且其中每个相应第二节点和/或外部节点被配置为从所述相应第二节点和/或外部节点所连接的所述核心节点中的一个、部分或全部核心节点请求一个或更多个区块头。
语句28:根据前述任一项语句所述的方法,其中所述第二节点中的一个、部分或全部第二节点操作相应智能合约服务,其中所述智能合约服务被配置为响应于、并基于一区块链事务执行预定义操作,所述区块链事务是由所述外部节点中的一个外部节点传输到所述智能合约服务的。
语句29:根据前述任一项语句所述的方法,其中所述第二节点中的一个、部分或全部第二节点操作分布式数据库,其中操作所述分布式数据库的每个第二节点被配置为对从与所述第二节点相连接的外部节点接收的数据进行存储。
语句30:根据语句19或其任何从属语句所述的方法,其中所述第二节点和/或外部节点中的一个、部分或全部被配置为基于相应挖矿标识符来识别所述核心层的相应挖矿节点,所述挖矿标识符包含在由所述相应挖矿节点挖掘的区块的Coinbase事务中。
语句31:根据前述任一项语句所述的方法,其中所述分层网络的所述节点中的一个、部分或全部节点与相应数字证书相关联。
语句32:根据语句31所述的方法,其中所述网络的所述节点中的一个、部分或全部被配置为基于与所述节点相关联的相应数字证书识别所述网络的其它节点。
语句33:根据语句31或语句32中任一项所述的方法,其中所述连接协议要求给定节点必须仅连接到与相应数字证书相关联的节点。
语句34:根据前述任一项语句所述的方法,其中所述核心节点中的一个、部分或全部被配置为将相应数字证书发布给所述一个或更多个相应第二节点,所述相应第二节点连接到所述相应核心节点。
语句35:根据前述任一项语句所述的方法,其中所述第二节点中的一个、部分或全部被配置为向所述第一外层的所述一个或更多个相应外部节点颁发相应数字证书,所述一个或更多个相应外部节点连接到所述相应第二节点。
语句36:根据语句35所述的方法,其中所述第一外层的所述外部节点中的一个、部分或全部被配置为向所述第二外层的所述一个或更多个相应外部节点颁发相应数字证书,所述相应外部节点连接到所述第一外层的所述相应外部节点。
语句37:根据语句34至36中任一项所述的方法,其中所述连接协议要求相应节点仅连接到已向相应节点颁发数字证书的先前层中的节点。
语句38:根据语句19或其任何从属语句所述的方法,其中所述核心节点中的一个、部分或全部核心节点被配置为将一组事务传输到所述核心节点所连接的第二节点中的至少一个第二节点,其中所述一组事务包括以下至少一项:一组事务,其中每个事务包括特定协议标志;一组事务,其中每个事务包括特定区块链地址;和/或,一组事务,其中每个事务包括由事务输出的相应控制分支指示的相应二级共识规则集。
语句39:根据语句2所述的方法,其中所述核心节点中的一个、部分或全部核心节点连接到所述其它核心节点中的每一个其它核心节点。
语句40:一种计算机设备,所述计算机设备包括:存储器,所述存储器包括一个或更多个存储器单元;处理装置,所述处理装置包括一个或更多个处理单元;网络接口,所述网络接口包括一个或更多个网络接口单元;其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时通过执行根据前述任一项语句所述的方法来操作所述计算机设备。
语句41:一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或更多个处理器上运行时,执行根据语句1至39中任一项所述的方法。
一旦给出本文的公开内容,所公开技术的其他变体或用例对于本领域技术人员可能变得显而易见。本公开的范围不受所描述的实施例限制,而仅受随附权利要求限制。
Claims (41)
1.一种计算机实现的用于连接到分层网络的方法,其中所述分层网络包括设置在有序层集中的多个节点,所述有序层集依次包括核心层、第二层以及一个或更多个外层,所述核心层包括一组核心节点,所述第二层包括一组第二节点,每个所述外层包括相应的一组外部节点,其中每个核心节点连接到至少一个其它核心节点;并且,
其中所述方法由连接节点执行并且包括根据连接协议连接到所述网络,其中所述连接协议要求:
每个节点必须连接到先前层中的至少一个节点;且
每个外部节点还必须连接到至少一个核心节点。
2.根据权利要求1所述的方法,其中所述核心节点中的一个、部分或全部核心节点连接到多个其它核心节点。
3.根据权利要求2所述的方法,其中所述核心节点中的一个、部分或全部核心节点连接到多个而非全部的其它核心节点。
4.根据权利要求1至3中任一项所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或每个第二节点必须连接到多个核心节点。
5.根据权利要求4所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或全部第二节点必须连接到多个而非全部的核心节点。
6.根据前述任一项权利要求所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或全部第二节点必须连接到至少一个其它第二节点。
7.根据权利要求6所述的方法,其中所述连接协议要求所述第二节点中的一个、部分或全部第二节点必须连接到多个其它第二节点。
8.根据前述任一项权利要求所述的方法,其中所述连接协议要求与先前层的相应节点相连接的给定外层的每个外部节点必须连接到所述先前层的相应节点所连接到的所述核心节点中的至少一个核心节点。
9.根据权利要求8所述的方法,其中所述连接协议要求与所述先前层的所述相应节点相连接的给定外层的每个外部节点必须连接到所述先前层的相应节点所连接到的所有所述核心节点。
10.根据前述任一项权利要求所述的方法,其中所述连接协议要求所述外层中的一个、部分或全部外层必须包括:至少一个外部节点,所述外部节点连接到所述同一外层的至少一个其它外部节点。
11.根据权利要求10所述的方法,其中所述连接协议要求所述外层中的一个、部分或全部外层必须包括至少一个外部节点,所述外部节点连接到所述同一外层的多个其它外部节点。
12.根据权利要求10或权利要求11所述的方法,其中所述连接协议要求给定外层的每个外部节点连接到相同数量的所述外层的其它外部节点。
13.根据权利要求10或权利要求11所述的方法,其中所述连接协议要求给定外层的至少一个外部节点连接到不同数量的所述外层的其它外部节点。
14.根据前述任一项权利要求所述的方法,其中每层的所述节点的数量从所述核心层到所述外层的最外层是递增的。
15.根据前述任一项权利要求所述的方法,其中所述一个或更多个外层包括多个外层,给定外层中的每个外部节点连接到所述给定外层内部的第一先前层的相应一个或更多个外部节点,所述第一先前层的所述一个或更多个外部节点中的每一个外部节点连接到所述第一先前层内部的第二先前层中的相应一个或更多个外部节点,并且其中所述连接协议要求所述给定外层中的所述外部节点中的一个、部分或全部外部节点必须连接到所述第一先前层的所述相应一个或更多个外部节点所连接到的所述第二先前层的所述相应一个或更多个外部节点中的至少一个外部节点。
16.根据权利要求15所述的方法,其中所述连接协议要求所述给定外层中的所述外部节点中的一个、部分或全部外部节点必须连接到所述第一先前层的所述相应一个或更多个外部节点所连接到的所述第二先前层的所述相应一个或更多个外部节点中的每一个外部节点。
17.根据权利要求15或权利要求16所述的方法,其中所述连接协议要求给定外层中的每个相应外部节点必须连接到所述网络的每个先前层中的至少一个节点。
18.根据前述任一项权利要求所述的方法,其中所述核心节点包括区块链网络的多个节点。
19.根据权利要求18所述的方法,其中每个核心节点是所述区块链网络的相应区块链节点。
20.根据权利要求19所述的方法,其中每个核心节点是以下至少一项:所述区块链网络的相应挖矿节点、相应存储节点、相应转发节点。
21.根据前述任一项权利要求所述的方法,其中最外层的所述外部节点中的一个、部分或全部外部节点包括相应的最终用户设备。
22.根据前述任一项权利要求所述的方法,其中所述连接节点是以下各项中的一项:所述核心节点中的一个、所述第二节点中的一个、或所述外部节点中的一个。
23.根据前述任一项权利要求所述的方法,其中每个相应第二节点和/或外部节点被配置为将区块链事务传输到所述相应第二节点所连接的所述核心节点中的一个、部分或全部核心节点。
24.根据权利要求10或其任何从属权利要求所述的方法,其中每个相应外部节点被配置为将区块链事务传输到所述相应外部节点所连接的所述其它外部节点中的一个、部分或全部其它外部节点。
25.根据权利要求19或其任何从属权利要求所述的方法,其中每个相应第二节点和/或外部节点被配置为,从所述相应第二节点和/或外部节点所连接的所述核心节点中的一个、部分或全部核心节点,请求确认事务池中已接受区块链事务,所述事务池已根据所述区块链网络的一组共识规则核实。
26.根据权利要求19或其任何从属权利要求所述的方法,其中每个相应第二节点和/或外部节点被配置为,从所述相应第二节点和/或外部节点所连接的所述核心节点中的一个、部分或全部核心节点,请求在所述区块链的区块中已挖掘的事务的默克尔证明。
27.根据权利要求19或其任何从属权利要求所述的方法,其中所述区块链的每个区块包括区块头,并且其中每个相应第二节点和/或外部节点被配置为从所述相应第二节点和/或外部节点所连接的所述核心节点中的一个、部分或全部核心节点请求一个或更多个区块头。
28.根据前述任一项权利要求所述的方法,其中所述第二节点中的一个、部分或全部第二节点操作相应智能合约服务,其中所述智能合约服务被配置为响应于并基于由所述外部节点中的一个外部节点传输到所述智能合约服务的区块链事务执行预定义操作。
29.根据前述任一项权利要求所述的方法,其中所述第二节点中的一个、部分或全部第二节点操作分布式数据库,其中操作所述分布式数据库的每个第二节点被配置为对从与所述第二节点相连接的外部节点接收的数据进行存储。
30.根据权利要求19或其任何从属权利要求所述的方法,其中所述第二节点和/或外部节点中的一个、部分或全部被配置为基于相应挖矿标识符来识别所述核心层的相应挖矿节点,所述挖矿标识符包含在由所述相应挖矿节点挖掘的区块的Coinbase事务中。
31.根据前述任一项权利要求所述的方法,其中所述分层网络的所述节点中的一个、部分或全部节点与相应数字证书相关联。
32.根据权利要求31所述的方法,其中所述网络的所述节点中的一个、部分或全部被配置为基于与所述节点相关联的相应数字证书识别所述网络的其它节点。
33.根据权利要求31或权利要求32中任一项所述的方法,其中所述连接协议要求给定节点必须仅连接到与相应数字证书相关联的节点。
34.根据前述任一项权利要求所述的方法,其中所述核心节点中的一个、部分或全部被配置为将相应数字证书发布给所述一个或更多个相应第二节点,所述相应第二节点连接到所述相应核心节点。
35.根据前述任一项权利要求所述的方法,其中所述第二节点中的一个、部分或全部被配置为向所述第一外层的所述一个或更多个相应外部节点颁发相应数字证书,所述一个或更多个相应外部节点连接到所述相应第二节点。
36.根据权利要求35所述的方法,其中所述第一外层的所述外部节点中的一个、部分或全部被配置为向所述第二外层的所述一个或更多个相应外部节点颁发相应数字证书,所述相应外部节点连接到所述第一外层的所述相应外部节点。
37.根据权利要求34至36中任一项所述的方法,其中所述连接协议要求相应节点仅连接到已向相应节点颁发数字证书的先前层中的节点。
38.根据权利要求19或其任何从属权利要求所述的方法,其中所述核心节点中的一个、部分或全部核心节点被配置为将一组事务传输到所述核心节点所连接的第二节点中的至少一个第二节点,其中所述一组事务包括以下至少一项:
-一组事务,其中每个事务包括特定协议标志,
-一组事务,其中每个事务包括特定区块链地址,和/或
-一组事务,其中每个事务包括由事务输出的相应控制分支指示的相应二级共识规则集。
39.根据权利要求2所述的方法,其中所述核心节点中的一个、部分或全部核心节点连接到所述其它核心节点中的每一个其它核心节点。
40.一种计算机设备,所述计算机设备包括:
存储器,所述存储器包括一个或更多个存储器单元;
处理装置,所述处理装置包括一个或更多个处理单元;
网络接口,所述网络接口包括一个或更多个网络接口单元;
其中所述存储器存储被设置在所述处理装置上运行的代码,所述代码被配置为当在所述处理装置上运行时通过执行根据前述任一项权利要求所述的方法来操作所述计算机设备。
41.一种计算机程序,所述计算机程序包含在计算机可读存储器上并且被配置为当在一个或更多个处理器上运行时,执行根据权利要求1至39中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2002273.7 | 2020-02-19 | ||
GB2002273.7A GB2594684A (en) | 2020-02-19 | 2020-02-19 | Layered network |
PCT/IB2021/050367 WO2021165758A1 (en) | 2020-02-19 | 2021-01-19 | Layered network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115136560A true CN115136560A (zh) | 2022-09-30 |
Family
ID=69956609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180014957.XA Pending CN115136560A (zh) | 2020-02-19 | 2021-01-19 | 分层网络 |
Country Status (6)
Country | Link |
---|---|
US (2) | US12021924B2 (zh) |
EP (1) | EP4097930A1 (zh) |
JP (1) | JP2023513950A (zh) |
CN (1) | CN115136560A (zh) |
GB (1) | GB2594684A (zh) |
WO (1) | WO2021165758A1 (zh) |
Families Citing this family (2)
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 |
GB2618052A (en) * | 2021-12-07 | 2023-11-01 | Nchain Licensing Ag | Blockchain script engine |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3425192B2 (ja) | 1993-08-25 | 2003-07-07 | 富士通株式会社 | アドレス情報の自動設定処理方法およびアドレス情報の設定装置 |
US6975631B1 (en) | 1998-06-19 | 2005-12-13 | Juniper Networks, Inc. | Network packet forwarding lookup with a reduced number of memory accesses |
US6338082B1 (en) | 1999-03-22 | 2002-01-08 | Eric Schneider | Method, product, and apparatus for requesting a network resource |
US6751673B2 (en) | 2001-01-03 | 2004-06-15 | Akamai Technologies, Inc. | Streaming media subscription mechanism for a content delivery network |
US7133905B2 (en) | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
US7051102B2 (en) * | 2002-04-29 | 2006-05-23 | Microsoft Corporation | Peer-to-peer name resolution protocol (PNRP) security infrastructure and method |
KR100429900B1 (ko) | 2002-05-07 | 2004-05-03 | 한국전자통신연구원 | IPv4 주소체계 확장방법 및 확장된 IPv4주소체계를 이용하여 계층적으로 레이블을 스위칭하는방법 및 그 기록매체 |
US7554988B2 (en) | 2002-09-10 | 2009-06-30 | Hewlett-Packard Development Company, L.P. | Creating expressway for overlay routing |
US7613796B2 (en) | 2002-09-11 | 2009-11-03 | Microsoft Corporation | System and method for creating improved overlay network with an efficient distributed data structure |
WO2008066481A1 (en) | 2006-11-27 | 2008-06-05 | Telefonaktiebolaget Lm Ericsson (Publ) | A method and system for providing arouting architecture for overlay networks |
US9537747B2 (en) | 2010-06-11 | 2017-01-03 | International Business Machines Corporation | Publish/subscribe overlay network control system |
EP2724446A4 (en) * | 2011-06-08 | 2014-10-22 | Socpra Sciences Et Génie S E C | METHOD FOR MANAGING A DISTRIBUTED ELECTRICAL LOAD AND SYSTEM FOR CONTROLLING COMMON LOADS |
US9600440B2 (en) * | 2013-10-30 | 2017-03-21 | Futurewei Technologies, Inc. | Network topology of hierarchical ring with recursive shortcuts |
WO2018078584A1 (en) | 2016-10-28 | 2018-05-03 | nChain Holdings Limited | Systems and methods for implementing deterministic finite automata (dfas) via a blockchain |
SG11201908957XA (en) | 2017-05-15 | 2019-10-30 | Visa Int Service Ass | Techniques for secure blockchain routing |
EP3631719A1 (en) | 2017-05-26 | 2020-04-08 | Nchain Holdings Limited | Script-based blockchain interaction |
US10630769B2 (en) * | 2017-12-26 | 2020-04-21 | Akamai Technologies, Inc. | Distributed system of record transaction receipt handling in an overlay network |
US10956075B2 (en) * | 2018-02-02 | 2021-03-23 | Bank Of America Corporation | Blockchain architecture for optimizing system performance and data storage |
SG11202104677YA (en) | 2018-11-27 | 2021-06-29 | Nchain Holdings Ltd | Systems and methods for efficient and secure processing, accessing and transmission of data via a blockchain network |
SG11202108152XA (en) | 2019-02-15 | 2021-08-30 | Nchain Holdings Ltd | Computer-implemented systems and methods for implementing transfers over a blockchain network |
DE102019202063A1 (de) | 2019-02-15 | 2020-08-20 | Hauni Maschinenbau Gmbh | Docht-Heizer-Einheit für einen Inhalator |
GB2583766A (en) | 2019-05-10 | 2020-11-11 | Nchain Holdings Ltd | Methods and devices for recording work history and proving reputation in a blockchain network |
GB2583767A (en) | 2019-05-10 | 2020-11-11 | Nchain Holdings Ltd | Methods and devices for public key management using a blockchain |
GB2583770A (en) | 2019-05-10 | 2020-11-11 | Nchain Holdings Ltd | Methods and devices for registering and authenticating miner identity in a blockchain network |
GB201907345D0 (en) | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Protocol for validating blockchain transactions |
GB201907346D0 (en) | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Using blockchain transactions to provide off-chain functionality |
GB201907347D0 (en) | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | In-script functions within a blockchain transaction |
GB202002305D0 (en) | 2020-02-19 | 2020-04-01 | Nchain Holdings Ltd | Smart contracts |
GB2592225A (en) | 2020-02-19 | 2021-08-25 | Nchain Holdings Ltd | Attestation service for use with a blockchain network |
US11349736B1 (en) | 2020-11-09 | 2022-05-31 | Vmware, Inc. | Flow-based latency measurement for logical overlay network traffic |
-
2020
- 2020-02-19 GB GB2002273.7A patent/GB2594684A/en active Pending
-
2021
- 2021-01-19 WO PCT/IB2021/050367 patent/WO2021165758A1/en unknown
- 2021-01-19 JP JP2022549579A patent/JP2023513950A/ja active Pending
- 2021-01-19 EP EP21700645.1A patent/EP4097930A1/en active Pending
- 2021-01-19 CN CN202180014957.XA patent/CN115136560A/zh active Pending
- 2021-01-19 US US17/798,036 patent/US12021924B2/en active Active
-
2024
- 2024-05-14 US US18/663,965 patent/US20240305687A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2023513950A (ja) | 2023-04-04 |
US20240305687A1 (en) | 2024-09-12 |
US12021924B2 (en) | 2024-06-25 |
GB2594684A (en) | 2021-11-10 |
EP4097930A1 (en) | 2022-12-07 |
US20230072531A1 (en) | 2023-03-09 |
WO2021165758A1 (en) | 2021-08-26 |
GB202002273D0 (en) | 2020-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115136543A (zh) | 在区块链网络中使用的认证服务 | |
JP2023504535A (ja) | アイデンティティ(id)ベース公開鍵生成プロトコル | |
CN114982193A (zh) | 使用区块链事务的数字合约 | |
CN115136566A (zh) | 分布式数据库 | |
US20240305687A1 (en) | Layered network | |
CN115606150A (zh) | 多层通信网络 | |
CN114128216A (zh) | 多输入交易 | |
US20220405749A1 (en) | Allocation of a digital asset using blockchain transactions | |
CN113924748A (zh) | 知识证明 | |
CN113875190A (zh) | 包括基于哈希的验证的可运行代码的区块链交易 | |
JP2023500258A (ja) | ブロックチェーントランザクションを使用する要求および応答プロトコル | |
CN114424223A (zh) | 可分割代币 | |
CN117480758A (zh) | 用于验证区块链上的通证的计算机实现的方法和系统 | |
CN115280346A (zh) | 区块链事务双重花费证明 | |
CN114531941A (zh) | 多标准区块链协议 | |
CN115152195A (zh) | 分层网络的适配连接 | |
CN117836771A (zh) | 使用区块链协调对等数据传输 | |
CN118176694A (zh) | 用于分布式区块链功能的方法和系统 | |
CN118216121A (zh) | 用于分布式区块链功能的方法和系统 | |
CN115699676A (zh) | 自定义事务脚本 | |
CN115428400A (zh) | 撤销对网络的访问权限 | |
Tian | Robust and effective consensus approaches for blockchain systems | |
CN117836772A (zh) | 使用区块链协调对等数据传输 | |
CN118202622A (zh) | 用于分布式区块链功能的方法和系统 | |
CN117716365A (zh) | 使用区块链形成对等连接 |
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 |