CN116235463A - 用于分布式账本交易的收敛共识方法 - Google Patents
用于分布式账本交易的收敛共识方法 Download PDFInfo
- Publication number
- CN116235463A CN116235463A CN202180056952.3A CN202180056952A CN116235463A CN 116235463 A CN116235463 A CN 116235463A CN 202180056952 A CN202180056952 A CN 202180056952A CN 116235463 A CN116235463 A CN 116235463A
- Authority
- CN
- China
- Prior art keywords
- consensus
- information
- peer
- trust
- ordering
- 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
-
- 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
-
- 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
-
- 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/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- 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
-
- 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/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- 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/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- 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
-
- 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
- G06Q20/4014—Identity check for transactions
-
- 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/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
-
- 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
- G06Q2220/00—Business processing using cryptography
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- General Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Finance (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Hardware Redundancy (AREA)
Abstract
一种用于在节点的分布式网络中有效地实现收敛共识的计算机系统和计算机实现的方法,该网络维护着具有不可改变的数据存储的去中心化数据库或账本。通过交易,客户端节点请求对账本进行更新,这些更新由一组对等节点来验证,以便在整个网络上实现新的意见一致的共识。该过程涉及快速收敛到共识的信任合并函数和状态转换函数。收敛方法使用对等节点的“权益证明”,以避免具有不可持续的能源需求的“工作量证明”替代方案的高成本。系统的实施例具有每秒几十万个交易的容量。
Description
技术领域
本发明涉及分布式账本技术(DLT)中的系统和方法。这种环境中的共识涉及数字的、密码保护的系统和过程,它们为信息的更新或在签约方之间的价值的安全转移提供了分布式一致性(distributed agreement)和不可改变的证据。关于DLT交易的共识通常由因特网连接网络中的许多对等节点维护。
背景技术
分布式账本技术(DLT)是去中心化数据库和计算技术(其中的一些类型称为区块链(Blockchain)技术),经常在互联网上操作。DLT的特征通常在于去中心化、透明、防篡改、可信赖性、集体维护和可追溯性。区块链在金融行业中被广泛地使用,并且使用在其它领域(例如需要转移表示价值的数字代币的供应链)中继续增长。
区块链中的数据通过经由通信协议连接的服务器网络(在本发明的上下文中有时称为节点(或对等节点))分布。区块链节点通常参与共享过程以达成共识,这确保了它们都认同相同的数据值。
许多当前的DLT系统需要大量的计算机处理能力和/或数据存储,这又浪费了大量的能量和硬件资源。因此,这导致对于每个单个业务交易所产生的高成本。这种低效率意味着它们通常不适用于通常用于支付或消费者应用的小交易。在达成共识之前通常有长的延迟。例如,由于大量的能量消耗,比特币交易可能需要超过10分钟来确认并花费许多美元。另一个主要的区块链以太坊(Ethereum)具有大约20秒的等待时间,最大的全局吞吐量是每秒15到20次交易。
其他共识方法已经尝试通过限制参与者集合来避免这些问题。这意味着由单个实体或少量可信实体进行集中控制。例子是“权威证明”网络,如瑞波币或超级账本。这种方法不能为开放的去中心化网络提供共识,其中任何对等节点(包括不受信任的和潜在恶意的参与者)都可以自由地参与共识,而没有任何集中控制。
一些区块链也容易受到对其安全性和完整性的攻击,例如,众所周知,比特币容易受到“51%”攻击,恶意攻击者可以重写一些最近的区块链历史,并可能从破坏交易的共识顺序中获利。
DLT节点的运营商经常需要以金融激励来补偿它们的处理和数据存储成本。因此,需要确保节点操作的激励与可信节点操作的要求很好地一致。许多网络使用“挖矿”概念来奖励节点运营商(工作量证明)。最近的革新已经提出了节点运营商基于他们在网络中投资的一些经济权益而被奖励的想法(权益证明)。
本发明在DLT的现有技术中呈现了显著的进步,解决了先前方法的许多性能、可扩展性和成本问题,同时即使在完全去中心化的环境中也保持了高安全性。
发明内容
本发明的第一方面提供了一种用于实现有效共识的系统,包括:
在网络中被布置成任意通信和功能参与者的各种类型的一个或多个节点,其中至少第一节点类型被称为对等节点,用于由对等节点产生信任使得每个信任包含用于形成共识的数据的装置;组合一个或多个信任的信任合并函数(Belief Merge Function);其中,所述对等节点被布置成根据共识协议来维持所述网络的所述共识,所述共识协议包括将所述信任合并函数应用于信任;其中,所述信任合并函数被定义为使得所述网络表现出收敛到单个共识的属性。
优选地,至少第二节点类型被称为客户端;并且其中所述客户端被布置成提交新交易,所述新交易可能影响所述共识和由所述网络的所述共识产生的查询信息。
优选地,使用幂等的、关联的和可交换的计算来定义信任合并函数,使得系统能够作为无冲突的复制数据类型来操作。
优选地,所述系统还可以包括:
称为区块的特定类型的信息单元;特定类型的信息单元,即区块的全部或部分排序,包括值和单元,被包括作为信任的组成部分;状态转换函数,能够在给定某种排序的情况下计算更新状态;一个或多个初始状态;其中,可以通过将状态转换函数重复应用于所述初始状态和可以包括在所述排序中的一个或多个信息单元来计算共识状态。
优选地,所述系统还可以包括:
被称为交易的零个或多个信息单元的集合,其被包括作为每个区块的组成部分;由对等节点提供的可选附加信息,例如时间戳或数字签名;其中所述区块及其组成交易和任何附加信息被布置成作为排序的一部分而被包括在内。
优选地,排序中的信息单元被定义为不包含对一个或多个先前信息单元的引用,使得可以在共识过程中对所述区块进行重新排序。
优选地,所述系统还可以包括:
用于计算共识排序的装置;其中,用于计算共识排序的装置将共识排序作为信任合并函数的一部分来计算。
优选地,所述系统还可以包括:
用于向对等节点分配权益的装置;作为共识排序的计算的一部分而包括的权益加权排序合并过程;其中,使用权益加权排序合并来解决由不同对等节点提议的排序之间的冲突。
优选地,所述系统还可以包括:
用于公共前缀计算的装置;其中,利用在排序之间的公共前缀的计算来降低用于共识的计算成本。
优选地,所述系统还可以包括:
用于新事物检测的装置;其中,观察到新事物的节点可以将新事物传达给其他节点;其中节点可以可选地省略非新事物的信息的传达,以节省网络资源和处理成本。
优选地,所述系统还可以包括:
用于表示信息值的装置,所述信息值被表示为一个或多个单元;
用于产生用于单元的编码的装置,优选地以适于存储或网络通信的形式;用于智能引用的装置,其使得对单元的引用能够被包括在另一个单元的信息和/或编码内;用于在另一个编码内嵌入编码从而使任何值能够被完全表示为由智能引用连接的单元的图形的装置。
优选地,所述系统还可以包括:
用于为单元产生值ID的装置,诸如应用于编码的加密哈希函数;其中所述值ID可以用作所述信息单元的唯一引用。
优选地,所述系统还可以包括:
信息值的收敛存储;其中,节点的工作内存中只需要当前处于活动使用的信息单元,可以将其他信息单元持久保存到持久存储器和/或在不需要进一步处理时删除,即垃圾回收;其中将新信息添加到存储器具有收敛属性,从而可以避免数据不一致。
优选地,所述系统还可以包括:
用于计算单元的内存大小或其它信息值的装置;用于内存计费(MemoryAccounting)的装置;其中所述内存计费用于将激励分配给所述网络上的参与者,例如以节省内存、存储器和/或通信带宽。
优选地,所述系统还可以包括:
在工作内存和/或存储器中高速缓存针对每个单元或信息单元计算的内存大小的装置;其中,高速缓存的内存大小被用于降低计算用于大数据结构的内存大小的计算复杂度,例如仅需要计算用于新事物的内存大小。
优选地,所述系统还可以包括:
用于将可信代码执行布置成状态转换函数的一部分的装置;其中,可利用可信代码执行来实现智能合约或可影响共识状态的其它可编程功能。
优选地,所述系统还可以包括:
一个或多个单调头部,其将头部信息与信息值和/或单元相关联;其中,单调头部还提供收敛的属性,从而可以依赖于所述属性来进行高速缓存、性能优化和标记单元的状态。
本发明的第二方面,提供了一种用于实现有效共识的计算机实现的方法,包括:
将各种类型的一个或多个节点布置成网络中的任意通信和功能参与者,其中至少第一节点类型被称为对等节点,由对等节点生成信任,使得每个信任包含用于形成共识的数据;将一个或多个信任合并为信任合并函数;其中,所述对等节点被布置成根据共识协议来维持所述网络的共识,所述共识协议包括将所述信任合并函数应用于信任;其中,所述信任合并函数被定义为使得所述网络表现出收敛到单个共识的属性。
优选地,使用幂等的、关联的和可交换的计算来定义信任合并函数,使得系统能够作为无冲突的复制数据类型来操作。
优选地,所述方法还可以包括:
称为区块的特定类型的信息单元;特定类型的信息单元,即区块的全部或部分排序,包括值和单元,作为信任的组成部分;状态转换函数,能够在给定某种排序的情况下计算更新状态;一个或多个初始状态;其中,可以通过将状态转换函数重复应用于所述初始状态和可以包括在排序中的一个或多个信息单元来计算共识状态。
优选地,所述方法还可以包括:
计算共识排序;其中共识排序是作为信任合并函数的一部分来计算的。
优选地,所述方法还可以包括:
为对等节点分配权益;作为共识排序计算的一部分而包括的权益加权排序合并过程;其中,使用权益加权排序合并来解决由不同对等节点提议的排序之间的冲突。
优选地,所述方法还可以包括:
计算公共前缀;其中,利用在排序之间的公共前缀的计算来降低共识的计算成本。
优选地,所述方法还可以包括:
检测新事物;其中,观察到新事物的节点可以将新事物传达给其他节点;其中节点可以可选地省略非新事物的信息的传达,以节省网络资源和处理成本。
优选地,所述方法还可以包括:
表示信息值,其被表示为一个或多个单元;产生用于单元的编码,优选地以适于存储或网络通信的形式;实现智能引用,使得对单元的引用被包括在另一个单元的信息和/或编码内;在另一个编码中嵌入一个编码,从而使任何值能够完全表示为由智能引用连接的单元的图形。
优选地,所述方法还可以包括:
为单元产生值ID,例如应用于编码的加密哈希函数;其中值ID可以用作所述信息单元的唯一引用。
优选地,所述方法还可以包括:
计算单元的内存大小或其他信息值;对内存计费;其中所述内存计费用于将激励分配给所述网络上的参与者,例如以节省内存、存储器和/或通信带宽。
优选地,所述方法还可以包括:
在工作内存和/或存储器中高速缓存针对每个单元或信息单元计算的内存大小;其中,高速缓存的内存大小被用于降低计算用于大数据结构的内存大小的计算复杂度,例如仅需要计算用于新事物的内存大小。
优选地,所述方法还可以包括:
将可信代码执行布置成状态转换函数的一部分;其中,可利用可信代码执行来实现智能合约或可影响共识状态的其它可编程功能。
附图说明
附图是说明性的,以帮助理解本发明和/或遵循本发明描述的实施例。
图1描述了参与根据本发明的共识方法的对等节点和客户端的网络的示例;
图2示出了用于合并来自几个对等节点的不同信任以创建由所有对等节点共享的单个信任的示例过程;
图3示出了如何通过应用状态转换函数使用区块的共识排序来更新共识状态;
图4示出了基于其排序而被包括在投票集合中的对等节点的示例;
图5示出了从对等节点的角度创建获胜排序的权益投票过程的结果;
图6示出了本发明的共识方法与紧密耦合的传统区块链之间相比的差异,本发明的共识方法产生松散耦合的排序;
图7示出了通过激励资金池分配奖励的过程;
图8示出了用于为单个交易分配交易费用的过程;
图9示出了作为信任合并的一部分的单个对等节点的排序的改变。
具体实施方式
本发明涉及分布式账本技术(DLT)中的系统和方法。这种环境中的共识涉及数字的、密码保护的系统和过程,它们为信息的更新或在签约方之间的价值的安全转移提供了分布式一致性和不可改变的证据。关于DLT交易的共识通常由因特网连接网络中的许多对等节点维持。本发明在DLT的现有技术中呈现了显著的进步,解决了先前方法的许多性能、可扩展性和成本问题,同时即使在完全去中心化的环境中也保持了高安全性。
描述概述
参考图1,给出了参与根据本发明的共识方法的对等节点和客户端的网络的示例,该图是网络的概览。
对等节点利用一种方法来操作网络中的独立节点,以便就网络参与者所感兴趣的信息(通常被称为共识状态)达成共识。客户端通常有兴趣通过交易来观察或改变共识。实施例可以支持诸如以下的应用:
●操作加密货币或代币化应用程序;
●执行“智能合约”;
●建立可验证的公共物源;
●运营去中心化应用程序,例如金融服务;
●发布数字知识产权,接收微支付;
●管理用于游戏、拍卖和数字资产的非同质化代币;
●提供用于身份验证的可信公共数据库和公共密钥基础设施;
●为复杂的金融交易提供托管或并列服务。
本发明的实施例的目的包括但不限于:
●无信任共识,即使在恶意行动者(actor)试图使共识无效或窃取来自其他参与者的资源的情况下也能实现;
●低等待时间,在约1秒内达到全局共识;
●高吞吐量,达到每秒成千上万笔交易;
●保证交易的排序,包括防止“双重花费”攻击;
●通用计算,使任意“智能合约”成为链上协议的一部分;
●有效的处理和内存使用,与交易的数量而不是表示链上状态的数据区块的大小成比例。
使用共识方法的实施例可能只需要处理当前在快速存取存储器中使用和需要的那部分状态。工作内存要求与所做的工作成正比,由交易大小限定。此外,由于收敛的不可变存储或结构共享,可能只需要将delta(改变)与对等节点共享。
共识方法在达成一致的可复制状态的、确认交易完成的去中心化的对等节点的网络上操作。它确保所有参与者使用权益加权投票就单个版本的真相达成一致。每一个去中心化的经济系统都需要执行数字资产的所有权。它可以使用“委托权益证明”来避免浪费“工作量证明”方法所经历的资源和能量。通过结合“无冲突复制数据类型”(CRDT)的变体,使用链上共识方法的实施例是环境友好的,该变体在对等节点之间的几轮随机谣言传播(random gossip)之后收敛到共识。
共识方法在作为网络操作的一个或多个分布式对等节点上操作定义的协议(“共识协议”)。在对等节点认同一组数据信息的有效性和与该数据的生成有关的交易之后,达成共识。在处理期间,导出代表由网络管理的信息的配置的虚拟状态。通过密码机制来控制诸如加密货币账户、智能合约或任意数据之类的资源,以防止未经授权的访问或修改。交易可应用于更新状态,例如将资金从一个帐户转移到另一个帐户,修改数据或调用诸如智能合约的计算。
作为对区块链方法的理解概念的更好的替代,用于在链上分布式账本域和链外客户端门户中实现关于信息单元的排序的共识的系统和方法,包括被布置为网络中的任意通信和功能参与者的各种类型的多个节点;第一节点类型,即对等节点,被布置来维持网络的共识;第二节点类型,即客户端,被布置来查询网络的共识;并且其中每个对等节点的共识的计算由合并对等节点所共享的信任以创建更新的信任的信任合并函数来管理。
本发明公开了一种在分布式计算环境中实现有效共识的系统和方法,包括:
在网络中被布置为任意通信和功能参与者的各种类型的多个节点,其中第一节点类型被称为对等节点,和
可选的第二节点类型被称为客户端;
其中所述对等节点被布置成维持所述网络的共识;
其中所述客户端被布置成提交新交易,所述新交易可能影响所述共识和由所述网络的所述共识产生的查询信息。
对等节点产生信息单元(称为信任),其中每个信任包含与给定对等节点已知的共识相关的信息。
每个对等节点的共识的计算由信任合并函数控制,该函数合并对等节点共享的信任以创建更新的信任,其中信任合并函数满足保证收敛到一个共识值(在某些假设下)的数学属性(优选地是幂等的、关联的和可交换的计算),甚至允许某些恶意对等节点的存在。
该信任包含来自多个对等节点的信息,其可以用数字签名来签名以证明真实性和完整性。
第二节点类型(客户端)被布置成提交与第一节点类型(对等节点)一致地包括的交易(可能包括新信息)。
附加的节点类型,除了客户端和对等节点之外,还可以具有附加的角色,并且可以组合客户端和对等节点的功能。
共识值的计算包括一些信息单元的完全或部分排序,其中这些单元彼此独立(例如,不需要包含对先前信息单元的引用),使得它们可以根据共识算法的进展而被不同地排序。
信息单元是由对等节点提出的区块,并且可以包括:
-已经从客户端收集的零个或更多个单独交易的集合。
-由对等节点提供的附加信息,例如时间戳或数字签名。
-可能影响网络的共识计算的任何其它信息。
这些区块不包含对一个或多个先前区块的引用,从而可以在共识处理中重新排序这些区块。
有序信息单元被用于通过重复应用状态转换函数来计算状态,使得每个对等节点可以在给定已经由共识系统确定的排序和共识计算中包括的任何其它相关信息的情况下独立地和可靠地计算确切的相同状态。
信任合并函数根据从其它对等节点接收的它们各自的信任中的投票来计算(实际的或提议的)共识,其中每个投票代表对等节点对将被包括在排序中的下一信息单元的偏好。
排序中每个信息单元的投票按顺序解析,那些投票给“获胜”信息单元的对等节点被赋予更大的权重(或完全允许)将其投票计入后续信息单元(此过程称为权益加权排序合并)。。
由不同对等节点提议的排序之间的公共前缀的计算可以用于有效地确定对等节点关于它们各自的排序一致的程度。
第一个节点类型,即对等节点,被布置拥有一个经济权益(可以是零),它决定了对等节点的投票权重由置于共识上的经济权益的数量来调整,这些经济权益可以由对等节点的所有者放置,或为由其他参与者委托的利益,或两者的结合。
系统通过以与新交易数量(相反于链上总状态的大小)成比例的方式扩展资源需求来提高带宽效率并管理内存消耗。
系统仅在节点之间共享所观察到的变化/新事物(例如,代表先前看不到的新事物的新交易),加上任何结构或计费开销,并且可以省略已经传达的信息。
根据前述权利要求中任一项所述的系统,其中所述信息单元被定义为具有低级信息格式(例如字节序列)的规范编码。
编码可以通过加密哈希函数来产生用于每个不同信息单元值的唯一值ID,使得值ID可以用作对信息单元本身的引用。
值ID可以作为引用嵌入在其它信息单元的编码中,使得这些引用形成默克有向无环图(Merkle DAG,Directed Acyclic Graph)。
只有当前在活动中使用的信息单元需要在节点的工作内存中,并且其他信息单元可以被持久存储到持久存储器和/或回收的垃圾中(其可以是自动的,例如由Java虚拟机提供的)。
内存或存储器中的任何信息单元可与可递增地计算或高速缓存的头部信息相关联,可经构造以使得头部的改变相对于头部中的值是单调的。
提供一种函数来计算表示信息单元的内存大小的值,其例如可以包括编码的大小加上存储器开销的津贴。
内存大小计算可根据任何引用的信息单元的内存大小而增加,使得总内存大小表示整个Merkle DAG的大小。
内存大小与信息单元(在节点工作内存和/或存储器中)一起被高速缓存,使得内存大小通常可以在不遍历整个Merkle DAG的情况下被有效地计算。
内存大小被用于内存计费的系统中,并且可以被用于产生经济激励,例如为处理具有大的内存大小的交易而收取费用或者增加状态转换函数中的整体状态的大小。
经济激励包括用于减少内存大小的奖励,这样参与者就可以有动力更有效地利用系统资源。
性能、效率和效用
本发明被设计成改善交易吞吐量和等待时间,尤其是与低效的“工作量证明”共识方法相比,“工作量证明”共识方法依赖于强迫节点承担计算上昂贵的任务(除了增强安全性之外,该任务通常不会增加网络的价值)。
本发明优选地通过避免对浪费的工作的任何要求来实现低等待时间,具有非常适于高效存储和通信的有效值编码。它采用非常适合高效性能的数据结构和算法(例如,在不可变值、Merkle树和公共前缀计算中的结构共享)
优选地,实施例通过允许对等节点以松散耦合的方式(参见图6)同时提出区块的排序来改善等待时间和交易吞吐量,这避免了在紧密耦合的区块链中顺序地附加区块的需要。
优选地,实施例通过实现分阶段事件驱动架构(在本领域中有时称为SEDA)进一步改善等待时间,该架构便于一旦节点或节点中的组件能够处理消息就立即异步地处理消息。
安全注意事项
通常的情况是网络中的一些参与者不被信任,例如他们可能试图以未授权的方式中断或操纵共识。这些不受信任的行动者有时被称为“拜占庭(Byzantine)”或“西比尔(Sybil)”行动者。网络的实施例优选地实现“拜占庭式容错”,即对于来自多个坏行动者的非授权更新(有意的或其他的)是鲁棒的。
共识优选地被设计成一旦建立就是稳定的。行动者可能需要依赖交易已经完成的保证,例如加密货币或代币的转移。如果没有这种保证,如果交易随后被取消或回退,行动者可能会面临重大经济风险。
优选地,实施例利用强数字签名方法(例如Ed25519),以便它们能够验证在网络上共享的信息的真实性。
结合附图对本发明的描述
参考图1,示出了参与根据本发明的共识方法的对等节点和客户端的网络的示例。
在图1中,附图标记指:
11-参与共识系统的一组对等节点。
12-对等节点之间的连接,其可以在不同的时间打开和关闭,并且在打开时允许信息的通信。不必每个对等节点始终连接到每个其它对等节点。
13-仅连接到另一个对等节点的对等节点,但间接地仍然连接到整个网络。
14-一组客户端,其连接到对等节点并使用该连接向网络提交新交易或进行查询。
15-客户端和对等节点之间的连接。
更具体地,一组对等节点[11]直接地彼此连接[12]或间接地彼此连接[13]。一组客户端[14]建立连接[15],以便参与网络。
图2示出了用于合并来自几个对等节点的不同信任以创建由所有对等节点共享的单个信任的示例过程。
在图2中,附图标记指:
21-参与共识系统的一组对等节点,每一个都具有初始信任。
22-客户端(也可以是对等节点)以21个或更多个交易的形式生成新事物。
23-客户端将新事物传达到至少一个对等节点(如果客户端本身也是对等节点,则可以省略该步骤)。
24-一种通过将其包含在至少一个对等节点的信任中而并入新事物的方法。
25-将更新的信任从一个对等节点传输到网络中的其它对等节点。
26-一种执行由对等节点执行的信任合并函数的过程,将其自身最近的信任与从一个或多个其它对等节点接收的信任相组合,以便产生更新的信任。
27-由单个参与者维护数据,显示时间流。
28-一段时间,其中传输和合并更新的信任(如25.和26.)被迭代地重复,直到由22引入的新事物被足够数量的对等节点确认为稳定共识的一部分。
29-现在与新事物达成一致并且能够利用状态转换函数计算更新的共识状态的对等节点。
210-对共识结果感兴趣的任何客户端(其可包括原始客户端)可观察共识结果并接收已成功包括新事物的确认。
更具体地,客户端[22](其也可以是对等节点)提交1次或更多次交易[23],其可以被认为是新事物。一组对等节点[21]参与共识过程,每一个都具有初始信任。过程[24]通过将其包含在至少一个对等节点[21]的信任中来并入新事物。更新信任的传输[25]从第一个对等节点传输到网络中的其他对等点[21]。过程[26]执行由每个对等节点执行的“信任合并函数”,将它们自己最近的信任与从其他对等节点接收的信任相结合,以产生更新的信任。每个对等节点[21]在合并过程期间和之后的时间段内保持其自己的信任数据[27]。时间周期[28]表示更新的信任[24,25,26]的迭代传输和合并,直到客户端[22]引入的新事物被足够数量的对等节点一致地确认。在达到共识之后,对等节点[29]现在能够利用状态转换函数计算更新的共识状态。可以包括原始客户端[22]的任何客户端[210]可以查询共识[211]以确认成功的信任合并,并访问新的共识状态中的其他信息。
图3示出了如何通过应用状态转换函数,使用区块的共识排序来更新共识状态。
在图3中,附图标记指:
31-排序中的多个区块,该排序被认为是当前的共识排序。
32-将来提议排序(除了共识排序之外)中将要包含的附加区块的集合。
33-超出提议的共识的附加区块,其可以包含提交的对等节点或客户端的新区块。
34-初始状态,用作对第一区块的状态转换函数的输入
35-状态转换函数的应用,其采用状态和对应的区块来计算下一状态。
36-共识状态,例如,共识排序中所有区块都已由35处理后的状态。
37-从初始状态直到共识状态所产生的状态序列。
38-可选的:基于可能的将来共识排序来预测将来的状态更新,这表示在32和33中将状态转换函数应用到区块将导致什么状态。
更具体地,从初始状态[34]开始,通过状态转换函数[35]以重复的步骤处理共识排序[31]中的一组区块,直到产生共识状态[36]。“排序”[32和33]中的附加区块可以可选地用于预测将来可能的共识状态[38],尽管这尚未在共识中得到确认。[37]表示计算直到共识状态并包括共识状态的全状态序列。
图4示出了将基于投票集合的排序而包括在投票集合中的对等节点的示例。
在图4中,附图标记指:
41-正在考虑的共识排序的开始(通常是排序中的第一个区块)。
42-执行信任合并的当前对等节点的共识点,其从该对等节点的角度定义当前共识。
43-当前对等节点的排序。
44-具有与当前对等节点相同的共识、但可能在随后的区块中不同的对等节点的排序。
45-具有比当前对等节点更长的共识排序、但至少到目前的共识[42]为止是兼容的一些其他对等节点的排序。
46-具有比当前对等节点更短的共识排序、但是在其他方面提议的排序与当前对等节点直至[42]的排序相同的一些其他对等节点的排序。
47-具有比当前对等节点更短的共识排序、并且其后续排序中有一个或多个区块与直到[42]的共识不同因此必须将其排除的对等节点的排序。
48-具有不足以与当前共识进行比较的区块、因此必须排除该对等节点的对等节点的排序。
49-对等节点宣布的共识排序与当前的共识不兼容,因此必须被排除在外(也可能受到惩罚)的排序。
410-将被包括在投票集合中的一组对等节点,因为它们到共识点[42]为止是兼容的。
411-将被排除在投票集合之外的对等节点的集合,因为它们的排序与当前对等节点(直到当前共识点[42])不等。
412-观察到与当前对等节点直到共识点[42]匹配的排序的子集。
414-按区块的数量的排序长度。
415-[42]以外的区块的排序,其与一致性无关。
416-与[43]的共识排序相匹配的区块,在[46]的排序中,但还没有在[46]的共识排序中。
417-区块与[43]的共识排序不一致的位置。
418-对不匹配[412]或超出[412]的位置的区块进行描影(shade)。
419-对匹配[412]但不是按照共识排序的区块进行描影。
420-对在相应对等节点的共识排序中的区块进行描影。
根据与当前对等节点的共识排序的一致性,包括或排除对等节点[43]。当前对等节点认为共识排序是其自身排序中[41]与[42]之间的区块。对等节点[44]、[45]和[46]都是一致的,因为它们的排序与当前对等节点的共识排序[412]匹配到[42],超过该点,排序[415]中的附加区块永远不被认为是不一致的。当与[43]的共识排序相比时,对等节点[47]、[48]和[49]因不一致[417]而被排除。排除对等节点[47],因为它的排序[418]中有一个或多个不一致的区块。排除对等节点[48],因为它的整个排序比点[42]短,因此不能匹配。排除对等节点[49],因为[41]和[42]之间的某些区块与[43]不一致。[410]是将包括在投票集合中的一组对等节点。[411]是将从投票集合中排除的一组对等节点。[412]是与[43]的共识排序匹配的排序的子集。[414]指示排序长度。[415]是与一致性无关的附加区块。[416]是尚未在对等节点[46]的“共识排序”中的一致区块。[417]是不一致的点。[418]表示区块与[412]的位置不匹配或超出[412]的位置。[420]表示各个对等节点的共识排序中的区块。
图5显示了从对等节点的角度创建获胜排序(Winning Ordering)的权益投票过程的结果。
在图5中,附图标记指:
51-当前对等节点。
52到58-初始投票集合中的其他对等节点(列宽表示按比例投票权重)。
59-排序的开始(第一区块)。
510-(对等节点51的)当前共识点。
511-排序的长度。
512-所有投票轮完成后的获胜排序。
513-符号A至H表示包括在各种对等节点的排序中的不同区块。
521-轮的结果:区块A获胜。
522-轮的结果:区块B获胜(在521中投票给A的对等节点中)。
523轮的结果:区块C获胜(在522中投票给B的对等节点中,对D的大多数投票者已经被排除)。
524-轮的结果:区块D获胜(在先前投票给A、B、C的那些人中)。
525-轮的结果:区块E获胜(对等节点53比对等节点54更有优势)。
526-轮的结果:区块F获胜(默认情况下,仅保留对等节点53)。
530-对不是获胜排序的一部分的区块进行描影。
531-对为各轮中的获胜排序的一部分的区块进行描影。
532-对已经与共识排序一致的区块进行描影。
对等节点[51]是当前对等节点,其具有从[59]到[510]的当前共识排序,并且提出用任意符号[A,C,D,E,F]指定的五个新区块。其他对等节点[52到58]中的每一个也具有与共识排序直到[510]匹配的排序以及它们自己在其排序中对将来区块[A-H]的提议,其中一些可以与其他对等节点所提议的区块匹配。对等节点[51-58]一起包括所考虑的“投票集合”(参见图4)。注意,对于每个对等排序,所提议的区块不是相同的顺序。六轮投票后达成共识:
●轮521:五个对等节点[51至55]投票,区块A应该是排序中的下一个,并在该轮获胜;
●轮522:在轮521剩下的对等节点中,区块B由四个对等节点[52至55]投票获胜;
●轮523:区块C由三个对等节点[53,54,55]投票获胜;
●轮524:区块D由两个对等节点[53和54]投票获胜;
●轮525:区块E由一个对等节点[53]投票获胜;
●轮525:区块F默认获胜,因为它是由投票集合[53]中唯一剩余的对等节点投票的,因此导致最终的获胜排序[512]。
阴影:[530]表示不是获胜排序的一部分的区块,[531]表示为各轮中获胜排序的一部分的区块,[532]表示已经与共识排序一致的区块。
图中的对等排序[51-58]的宽度指示投票权重,其与对等节点的权益成比例。
图6示出了与本发明的共识方法与紧密耦合的传统区块链相比它们之间的差异,本发明的共识方法产生松散耦合的排序。
在图6中,附图标记指:
61-具有嵌入在区块62中的指针64的传统紧密耦合的区块链。
62-传统区块链中的区块。
63-指向传统紧密耦合的区块链中的最新区块的指针。
64-区块内的指针指向先前的区块(并且通过重复地间接指向所有先前的区块),使得加密的哈希值被用来作为指针,以确保一个区块和其之前的历史之间的完整性。
65-基于排序的共识观。
66-独立于其它区块的排序中的区块(不包含指向先前区块的指针)。
67-排序数据结构(其通常是可加密验证的结构,例如允许鲁棒完整性检查的Merkle树),其在明确定义的排序中维护区块列表。
68-指向排序数据结构的指针(可能是排序值中根单元的值ID)。
69-指向排序中的最后一个区块的指针。
610-用于表示指向区块/其它数据结构(通常是加密哈希值)的指针的注释。
排序不应该被实现为具有指针[64]的区块[61]的紧密耦合的链表,所述指针[64]包括到每个区块中的前一区块[62]的哈希值。优选地,与传统的“紧密连接的链”[61]相比,排序应该是“松散链接的”[65]。指针[68]链接到数据结构[67],数据结构[67]可以是诸如用于表示排序的Merkle树之类的可密码验证的结构。这使得鲁棒的完整性检查能够以明确定义的顺序来维护区块的列表。“松散链接”排序中的区块[66]独立于其它区块,即,不包含指向先前区块的指针。
可选的指针[63]可用于指定排序中的最后一个区块。[610]表示任何类型的指针。
图7示出了通过激励资金池分配奖励的过程。
在图7中,附图标记指:
71-治理账户。
72-长期区块奖励池。
73-当前区块奖励池。
74-对等节点权益1。
75-对等节点权益2。
76-对等节点权益3。
77-资金分配。
78-资金的释放
79-将具有加权权益的奖励分配给好的对等节点1。
710-将具有加权权益的奖励分配给好的对等节点2。
711-将权益从坏对等节点3中删除,返回到当前区块奖励池。
在一组区块奖励激励池中构造奖励,其中:
●治理账户[71]维护所有奖励的记录,并将[77]大量的资金(例如,本国币)转移到长期区块奖励池[72];
●短期激励奖励池[73]旨在奖励当前操作的对等节点,并相对较快地支付[79,710]以添加好的对等节点的权益[74,75];
●长期奖励池[72]用于随时间“加满”[78]短期奖励池,确保充分激励对等节点[74-76]进行长期操作;
优选地,随着时间的推移,奖励从以下向好的对等节点累积:
●将资金转移到奖励池,例如[77,711];
●从长期奖励池转移到短期奖励池[78];
●可选地,由客户端交易支付的交易费用可以被添加到短期奖励池[73],以便由当前的权益人共享;
●从短期奖励池接收奖励[79,710]。
坏对等节点[76]可以通过“消减”[711]来惩罚,其中其权益的某一部分被减去并放回短期奖励池[73]中。
图8示出了用于为单个交易分配交易费用的过程。
在图8中,附图标记指:
81-客户端帐户。
82-保留的交易资金。
83-当前区块奖励池(有关此池的其他用途,请参阅73)。
84-对等节点权益。
85-分配已签署交易的资金(放在储备金中)。
86-基于执行交易或智能代码的成本的执行费用。
87-可选的交易费用直接支付给对等节点。
88-由对等节点支付的用于提交区块的区块费,该区块费由多个交易共享。
89-未由费用消耗的交易资金的剩余,返回到客户端。
当启动交易时,从用户帐户[81]中取出一定数量的原生币[85],并将其放到储备金中以支付交易[82]。
在交易执行期间,所有的Ops和运行时函数对基于所执行代码的计算复杂度定义的小“果汁(Juice)”成本进行收费。交易的总果汁成本乘以果汁价格,以计算以原生币计价的总执行成本[86],其被转移[86]到当前的区块奖励池[83]。
可选的直接费用[87]可以通过将其添加到对等节点权益[84]来支付给负责提交交易的对等节点。
在支付了所有费用之后,将剩余的保留币返回到用户帐户[89]。可选的区块费用[88]可以由其权益[84]中的对等节点支付(其可以在多个交易之间共享)。
图9示出了作为信任合并的一部分的单个对等节点的排序的改变。
在图9中,附图标记指:
91-已经在共识排序中的区块。
92至99-为共识而提出的区块。
911-初始对等排序(共识排序加上附加区块)。
912-如通过权益加权排序合并所确定的获胜排序。
913-具有以时间戳顺序添加的附加区块98和99的新排序。
914-具有更新的共识排序的新排序(前进到新共识点917的位置)。
915-链的开始。
916-初始共识点。
917-新的共识点。
对等节点的排序可以根据权益加权排序合并的过程进行更新:
●对等节点开始于第一列[911]中的排序;
●对等节点基于具有来自其他对等节点(第二列[912])的排序的权益加权排序合并来计算获胜排序,也参见图5;
●对等节点根据需要在时间戳排序中添加附加区块[98,99],以形成其最终更新的排序[913];
●最后,在[914]中,共识前进到[917],取决于共识排序的计算,其确定哪些区块具有足够的支持以被包含在共识排序中;
●[91]在“共识排序”的开始[915]和当前共识位置[916]之间,指定已经在“共识排序”中的任意数量的区块。[92-99]指定[91]以外的区块。
关键部件的描述
本文使用在本发明的上下文中可能具有特定含义的词语的定义,并且通常用大写首字母来表示。为方便起见,以字母顺序提供定义,但也可根据需要引用其它定义和附图。
账户
可选地,一个实施例可以包括帐户模型,在这种情况下,适用以下段落:
帐户是可以由网络上的参与者拥有或控制的实体。
优选地,状态可以包括关于每个帐户的信息,例如:
●一个或多个原生加密货币(例如Convex币)的余额,;
●由用户上载的用于可信代码执行的代码;
●由所述账户控制的信息值;
●与安全有关的信息,例如用于验证为帐户提交的交易的公钥,或者用于防止重放攻击的随机数(在加密通信中只能使用一次的任意数字)。
优选地,实现访问控制,使得仅有正确授权的客户端(例如,通过数字签名来验证)可以控制帐户。
优选地,通过引用帐户的唯一标识符(例如,帐户地址)来标识帐户。这种标识符应当优选地在状态更新之间保持一致。
可选地,帐户可以是不能由外部用户控制的自主行动者帐户。它根据由共识协议(例如可信代码执行)执行的预定义逻辑来操作。行动者通常用于实现智能合约。
优选地,实施例具有支持管理帐户安全的附加设施,例如旋转公钥,或设置影响其它帐户的访问控制规则。
信任
信任是表示与对等节点持有的共识相关的信息的一组信息。
优选地,信任被实现为单个不变值,表示在特定时间对等节点的理解的快照。
优选地,信任可以包括如下信息:
●由每个对等节点宣布的区块的最新的已知排序;
●共识中有效包括的所有区块(或等同交易)的列表;
●为共识提议的一组交易或一组区块,也许作为提议的排序;
●网络在不同时间点的状态,例如在每次区块更新后的状态列表;
●一组信任,或从由其他对等节点持有的信任中提取的数据。
优选地,使用包括使用结构共享的单元的树的持久不变数据结构来实现信任。
优选地,在大多数情况下,只需要在网络中的对等节点之间传达对信任的增量更改(可能被归类为新事物)。
如果信任满足用于创建信任的协议,则该信任可以被认为是“有效的”。有效的信任必须通过使用包含在信任中的数据来正确应用协议来形成,并且与由其它对等节点广播的任何先前的信任一致。优选地,信任被存储为单个单元或值,其可以包含嵌套的值。
优选地,信任可以包括来自一个或多个其它对等节点的信息,所述其它对等节点可以可选地用数字签名来签名以证明其真实性和完整性。
信任合并函数
信任合并函数根据一个或多个其它信任来计算新的信任。
优选地,信任合并函数是具有以下形式的纯确定性函数:
B=F(E,B1,B2,....,BN)
其中:
B=产生的新信任
E=由对等节点持有的附加上下文信息
B1…Bn=由该对等节点持有或从其它对等节点接收的现有信任。
优选地,F的属性为:
●在信任上的关联,即F(E,B1,F(E,B2,B3))等于F(E,F(E,B1,B2),B3);
●在信任上的交换性,即F(E,B1,B2)=F(E,B2,B1);
●幂等,即F(E,B1,F(B1,B2))=F(E,B1,B2)。
优选地,实施例使用这种形式的信任合并函数,在这种情况下,F的属性足以确保在使用信任合并函数的组合下的信任构成无冲突复制数据类型(CRDT)并具有收敛性。对两个或多个有效的信任应用信任合并函数也产生有效的信任。这可以保证在合理的操作条件下产生有效的共识。
区块
区块是包括零个或多个组成交易的数据值。
优选地,状态更新在整个交易区块上被一次性计算出。区块可以由被称为区块生产者的对等节点同时提交。
优选地,以精确地定义必须执行交易的顺序的方式在区块内对交易进行排序。然而,在一个实施例中,为了效率目的,可以并行地重新排序或计算彼此互不影响(即,不具有直接的数据相关性)的交易,只要这种重新排序不影响所得到的状态。
在本发明的实施例中,区块不是必不可少的。例如,可以独立地执行每个交易,但是对于本发明的实施例,区块确实提供了一些优点:
●传输有效交易的对等节点可以签署整个区块,而不是每个单独的交易;
●状态更新批量减少了状态更新将被传输和存储的频率;
●可以激励对等节点执行有效的交易组。
优选地,与传统的区块链相比,区块不需要包含对先前区块的引用[参见图6]。区块可以在共识的过程中被重新排序,而不会使先前的引用无效。
可选地,除了执行单独交易之外,区块的执行还可以执行处理,例如更新状态以并入最新区块的时间戳,或者执行每区块计费。这可以被认为等同于隐含包括一个或多个自动“每区块”交易。
在本文件中,区块和交易可以互换使用,其中差异是无关紧要的。
单元(cell)
单元是值的子组成部分,使得大值可以由多个单元表示(尽管小值也可以是单个单元)。
实施例可以选择不在值和单元之间进行区分,但是进行这种区分的能力可以提供各种概念和实现优点。
优选地,大值被表示为多个单元的树数据结构。一些一致的单元可以是它们自己本身是值,例如包含在列表数据结构中的单独的值。
优选地,顶层单元包含对多个子单元的引用。这允许将大的数据结构表示为单元的有向无环图(DAG)和/或对单元的智能引用。
优选地,单元应该不可能包含循环引用。这可以例如通过使所有单元不可变,并使用加密哈希值作为标识符来确保,从而不可能构造直接或间接引用其自身的单元。
优选地,每个有效单元的大小由可以在单个单元中编码的数据的大小的最大限制来限定。这允许在固定大小的内存缓冲器内表示所有单元。
在本文件中,术语单元和值可以互换使用,特别是在差异无关紧要的情况下。
客户端
客户端是网络中执行除维护共识之外的作用的参与者节点。客户端通常执行以下一个或多个活动:
-观察或查询共识状态的各方面
-将交易提交给将在将来的共识中包括的对等节点
当对等节点执行维护共识以外的动作时,它也可以充当客户端。例如,如果对等节点提交增加其权益的交易,则其充当客户端。
公共前缀计算
公共前缀计算是一种用于计算两个有序序列的连续元素的最长数目的方法,这两个有序序列从序列的开头开始匹配(在计算机科学文献中有时称为“最长公共前缀”)
例如,考虑两个有序序列:
●[A,B,C,D,F,G]
●[A,B,C,G,D]
在这种情况下,公共前缀是具有前缀长度3的[A,B,C]。
优选地,对等节点使用公共前缀计算来计算两个或更多个排序的一致性。例如,由对等节点提出的任何排序只有当且仅当公共前缀的长度等于共识排序的总长度时,才与共识排序一致。
优选地,使用允许在少于O(n)时间内计算前缀的数据结构来实现公共前缀计算,其中n是比较的结构的长度。例如,O(log n)可通过优选实施例实现。传统的(朴素)算法可能具有不可接受的性能来检查长排序的公共前缀,在O(n)时间内操作,其中n是比较的排序的长度。它们可能需要以不可接受的等待时间和不可承受的计算成本来处理数百万个区块。
优选地,公共前缀计算将Merkle树,即具有嵌入的加密哈希值的树,与树结构(例如基数树)组合,以计算公共前缀长度。因此,有效的前缀计算在O(log n)时间内是可能的。一个实施例可以通过以下方式实现:
●将元素序列存储为“向量”,其中向量是包含任意值序列的数据结构;
●将向量实现为树(例如,基数树),其中每个树节点具有受限数量的子节点,例如多达16个;
●计算每个节点的加密哈希值,并将其包含在父节点(“Merkle树”)中;
●检查每个树节点中的哈希值以找到具有不同哈希值的第一对节点(这意味着两个节点必须包含第一差异),并且递归地检查这两个节点,直到找到第一个不同元素的位置。
计算共识排序
共识排序的计算(计算)是对等节点确定新的共识排序的方法,优选地由实施例实现为信任合并函数的一部分,如图2、图5和图9所示。
优选地,对等节点能够根据包含在信任内的信息(最常见的是与来自其它对等节点的更新合并的信任)来计算更新的共识排序。
优选地,该信任包含由网络中的其他对等节点提出的排序,使得该计算可以依赖于这样的信息。这可以通过数学上的幂等方式来实现,例如,通过包括具有来自每个对等节点的最新时间戳的排序。
优选地,以数学上幂等的方式执行计算,使得其满足用于包括在信任合并函数中的期望属性。
优选地,更新的共识排序将等于先前的共识排序,加上在新的共识中确认的零个或多个附加区块。
优选地,新的共识排序将包括由参与对等节点的定义部分(例如,由权益权重确定的2/3的对等节点)为共识提出的所有区块。
优选地,该计算包括一种方法,用于使对等节点区分它们所持有的实际共识排序和它们对新的共识排序的提议(“提议排序”)。例如,对等节点可以传达更长的排序以及两个数字,它们指示对等节点认为是最新的共识排序的区块(从排序的开始编号)的数量,以及认为是提议排序的区块的数量。在这些数字以外的排序中可能存在附加的区块,它们既不在对等节点的共识排序中也不在对等节点的提议排序中。
优选地,对等节点将在计算中使用“两阶段提交”的形式,其中它们首先创建提议排序,然后仅当该提议由足够数量的其他对等节点(例如,由权益权重确定的2/3的对等节点)确认时才将其确认为新的共识排序。
优选地,如果对等节点确定这可能形成新的共识排序,则它们将提出新的提议排序。例如,一旦观察到足够数量的其它对等节点将相同的区块放置在它们相应的排序中的相同位置(例如,由权益权重确定的2/3的对等节点),则它们可以仅在提议排序中包括区块,如图5所示。
优选地,对于对等节点不能在“共识排序”或“提议排序”中确认的区块(可能是由于多项竞争的提议中的任一项提议都没有足够的投票支持),对等节点应当构造包括这些区块的排序,这些区块在将来最可能由其他对等节点支持,从而有助于向共同一致收敛。权益加权排序合并可以用于该目的。
优选地,整个计算被构造为具有这样的属性,即保证由所有对等节点重复应用信任合并以收敛到单个共识排序,假定以下属性,例如:
●足够比例的对等节点正确地遵循协议(例如2/3的投票权益);
●网络继续连接,使得对等节点可以直接或间接地通信。
参见“共识属性和证明”来更详细地描述这种结构,因为它可以应用于示例性实施方式中。
共识
共识是一组网络节点对一个或多个信息值的认同。
如果一个信息值是由对等节点按照共识协议直接认同的(例如,区块的排序),或者如果它可以从已经在共识中的值中计算出来(例如,从以前的区块中计算出最新的共识状态),则可以被描述为“在共识中”。
优选地,共识被设计为包括共识状态,使得这由网络参与者认同。
优选地,共识被设计成包括共识排序,使得这可以用于计算共识状态和/或共识状态之前的任何状态(潜在地返回到初始状态)。
在(图3)中提供了可以在实施例中实现的共识状态更新的图示。
共识排序
共识排序是对等节点已确认在共识中的区块(或等同交易)的排序,如图3所示。
优选地,给定共识排序,对等节点可以通过重复应用状态转换函数来计算给定任何先前状态的共识状态以及该状态与共识排序的末尾之间的区块的对应子序列。
共识属性和证明
优选地,共识协议可以被显示为收敛到共识,该共识是稳定的,并且假定满足相关的假设,可以被网络中的参与者认为是最终的。
优选地,包括在共识中的唯一区块是已经由对等节点提出的有效区块,例如,如由这种对等节点提供的数字签名所验证的。少量坏的对等节点不能让坏的区块被接受。
优选地,用于好的对等节点的提议排序和共识排序仅在对等节点观察到支持它的大多数对等节点时才被传达。如果是这种情况,那么好的对等节点将永远不会改变它们的意见,并且这种排序可以被认为是最终的。
优选地,实施例被设计成提供拜占庭容错,并且通过投票权益对多达1/3的坏的对等节点具有鲁棒性。该属性的简述证明如下:
●假定坏的对等节点的比例是b,其中b<1/3;
●假设已经达到了良好提议的2/3共识的阈值;
●由于2/3-b>b,那么在共识中坏的对等节点具有比好的对等节点更少的投票权益;
●在最坏的情况下,如果所有坏的对等节点最初都支持好的提议,但是同时将投票转换为新的坏的提议,那么坏的提议仍然具有比好的提议更少的投票。其余的好的对等节点观察到好的对等节点的较高投票,并确认好的共识。坏的对等节点无法阻止好的对等节点达到新的2/3共识。
共识协议
共识协议是对等节点为了计算更新的共识状态所遵循的过程。
优选地,共识协议通过不要求区块包含先前区块的加密哈希值,使得对等节点能够并行地计算多个区块上的共识。这减少了实施例中的等待时间。
优选地,作为协议的一部分,使用以下过程在状态更新上维护共识:
●有效信任包括表示由生产信任的对等节点所观察到的最新的共识排序的共识排序;
●对等节点在它们之间共享信任,如果网络受到容量的限制,则它们优选地给予与较高的权益对等节点共享信任的优先权;
●对等节点使用满足CRDT属性的信任合并函数来合并它们接收到的信任。作为其一部分,可以执行更新的共识排序的计算;
●对等节点能够从合并的信任以及任何其他相关信息获得更新的共识排序;
●对等节点根据需要利用共识排序来计算最新的共识状态;
●对等节点可以可选地将附加的数据添加到它们的信任,例如将附加的区块添加到它们的排序中,以便在将来的共识中考虑;
●对等节点将其更新的信任传达给一个或多个其他对等节点;
●对等节点可选地将结果传达回客户端(例如,客户端提交的交易的结果,目的是实现共识状态的改变);
●根据需要重复该过程。
在[图2]中提供了作为共识协议的一部分的信任合并过程的说明,并进一步描述为示例实施例的一部分。
共识状态
共识状态是节点认为是状态的最新版本的状态,考虑最新的共识。
不同的节点可能对共识状态的值具有不同的意见(例如,允许跨网络的不同的传播速度)。
优选地,在通过对区块的排序应用状态转换函数来确定状态的实施例中,共识状态是紧跟在当前共识排序中最新区块之后的状态。
优选地,网络中的参与者应当将共识状态视为关于由网络管理的所有信息的可靠事实来源,尽管他们可以出于各种目的(例如历史分析)可选地引用先前的状态。
收敛
收敛是其中使信息值随时间收敛到相同值的系统的属性。这种系统可以被称为是“收敛的”。
优选地,一个实施例利用收敛属性以类似于CRDT的方式实现共识。
优选地,收敛可以被布置成使得信息值的某些部分被布置成在其它部分之前收敛,例如,使排序中的较早的区块在较晚的区块之前收敛到共识排序。
收敛存储
收敛存储是一种存储系统,其中存储某些信息的动作具有收敛属性。
优选地,这样的动作是可交换的、幂等的和关联的。这些属性一起使得存储系统的状态能够以类似于收敛复制数据类型(CRDT,convergent replicated data types)的方式操作,从而允许以无冲突的方式可靠地存储值。在该模型下,可以在任何时间将新信息合并到存储器中,而不改变现有信息或使现有信息无效。
优选地,在收敛存储系统上执行的任何动作将导致收敛存储系统的操作状态,该操作状态被保证与存储的所有先前版本一致。此一致性的属性应包括:
●如果值先前存在于存储器中,则其仍将是可访问的;
●新值是纯添加的,因此不可能更改、删除或覆盖现有值(因为这些值优选是不可变的);
●如果新值的单调头部信息不同,则单调头部可以收敛到单个“最大”值,因为单调头部的更新也是可交换的、幂等的和关联的。
优选地,收敛存储被配置为存储由值ID引用的单元。
可选地,收敛存储实现方式可以允许“垃圾回收”来去除不再需要的存储值。该操作不应影响存储系统的行为,只要不再保持随后用于请求已被移除的数据的引用即可。
优选地,实施例包含了呈现上述属性的一些或全部的收敛存储系统。
CRDT
CRDT是“收敛复制数据类型”,如在计算机科学文献中一般理解的。已知这种CRDT在网络通信的各种配置(例如,“随机谣言传播”模型)下共享时具有收敛属性。
优选地,信任具有作为CRDT的属性,使得它们可以被信任合并函数合并以自动解决不一致(信任“收敛”到共识值)。
优选地,存储子系统中的信息组也表现为CRDT,使得新的信息可以可靠地合并到存储器中而没有冲突。
编码
编码是单元中包含的信息的表示,通常使用零个或多个较低级别信息单元。
优选地,编码被定义为用于存储或网络传输的方便形式,例如在典型的计算系统上实现的8比特字节的序列。例如,表示数字“1”的单元可以由以十六进制表示的两个字节“0801”编码。
优选地,编码包含单元中的所有相关信息,从而在构造编码时不丢失信息,并且可以从编码整体上重构具有相同信息的等效单元。
优选地,每个不同的单元被分配唯一的编码。反之不一定为真,例如,一些字节串可能不代表合法单元。
优选地,每个单元或值具有一个且仅一个有效的编码,其可以被称为“规范编码”。
优选地,编码过程可以将小单元“嵌入”在较大的编码内,以减少对单独编码的需要和对小值的存储。例如,一个实施例可以被配置成在任何父单元的编码中自动嵌入140字节或更少字节的编码。这种编码被称为嵌入。
优选地,编码可以包括对其它单元的引用(例如,通过对目标单元的值ID的表示进行编码)。在这种情况下,可能有必要获得所引用的编码以完全重建其整体的值(或单元的树)。
优选地,任何单元的编码具有限定的最大大小,从而可以证明任何有效的编码都适合在较低级别信息单元的固定大小缓冲器(例如字节缓冲器)内。
激励
优选地,实施例实施激励机制(例如参见图7和8)以鼓励诚实、有效和创造价值的参与。这些激励的计算和执行可以在计算状态更新时执行,或者通过在协议本身中编码的规则或者通过智能合约来执行。激励可以包括但不限于:
●客户端的交易费用,对等节点代表客户端提交交易以达成共识时可能需要的交易费用;
●为将许多交易捆绑成较大的区块的对等节点支付区块费用,这提高了共识过程的效率;
●对将权益放在好的对等节点上的对等节点或客户端进行区块奖励;
●对被证明不一致地使用了协议的对等节点的处罚;
●向为网络提供有价值服务的行动者进行酌情支付;
●池从其他池分配一部分费用以提供其他激励,例如网络治理成本。
可以以多种方式确定激励的大小:
●固定在网络级;
●动态计算,例如基于交易计算成本或对等节点的权益水平;
●由网络治理协议调整,例如由调整激励计算并更新网络状态的管理机构签署的交易;
●由处理网络治理的组织进行链下管理;
激励可以通过多个过程进行分发:
●直接转入或转出账户;
●调整对等节点的权益;
●通过智能合约分配代币;
●通过涵盖上述内容的任何组合的池来引导激励。
初始状态
在应用任何区块之前的状态被称为初始状态。
优选地,网络中的所有对等节点被布置成具有相同初始状态的知识。对等节点可能希望确认初始状态的值ID,以便保证它们正在计算同一共识状态。
无效信任
无效信任可能由(有意或由于缺陷)未能实现共识协议的节点创建。
优选地,因此,在应用信任合并函数之前,应该测试从不信任的对等节点接收的所有信任的有效性。实施例可以使用以下技术来标记无效信任,并将它们排除在共识之外:
●检查网络上的加密签名和对等节点注册;
●检查数据结构,如坏的数据格式;
●检查共识中包含的旧信任的时间戳;
●检验信任合并函数的幂等属性,即F(最新信任,先前信任)=最新信任;
优选地,在检测到无效信任之后,好的对等节点可以采取以下一个或多个动作:
●忽视对进一步共识过程的信任;
●将对等节点列入黑名单,断开连接并阻止新连接;
●基于无效的信任,质询对等节点,这可能导致坏的对等节点(通过消减)丢失其部分或全部的权益。
内存计费
内存计费,将内存和/或存储器的使用归于网络中的参与者的方法。
优选地,内存计费被用于为参与者创建经济激励以最小化内存和/或存储器使用,从而提高网络的整体效率和可扩展性。
优选地,内存计费通过利用内存大小计算来操作
优选地,将内存计费应用于改变共识状态的内存大小的交易,将内存大小的改变归因于签署交易的参与者的账户。
优选地,应当要求参与者进行支付(例如,以网络上可用的原生加密货币),以便增加状态的内存大小。
优选地,如果参与者减小了状态的大小,则他们应当接收到退款(例如,以网络上可用的原生加密货币)。
优选地,可以向参与者收取他们在网络上执行的消费存储器资源的其他动作的费用,例如:
●与代表客户端执行的交易的内存大小成比例的费用;
●与对等节点提出的区块的内存大小成比例的费用。
内存大小
内存大小是包含在单元(或等同于值)内的信息的总大小的量度。
优选地,内存大小被定义为包括可以被间接引用(例如经由智能引用)的其它子单元的大小。
优选地,内存大小是存储或发送单元所需的字节数的近似量度,该单元可能包括:
●单元编码的大小;
●任何子单元的内存大小之和(递归地定义的);
●用于索引和存储器开销的津贴。
优选地,如果实现方式支持不需要以它们自己的权限存储的嵌入式单元(如在编码中所定义的),则这些可以被定义为具有零内存大小。然而,应当注意,这种嵌入式单元的大小应当被计入具有包括嵌入式值的编码的任何单元的内存大小中。
优选地,内存大小仅在需要时计算,例如当由交易产生的状态被持续存储时。这最小化了考虑暂态内存中对象的计算成本,使得内存大小能够被高速缓存并提高了性能。在附属于内存或存储器中的单元的元数据中高速缓存内存大小(作为单调头部的一部分)是优选的方法。
单调头部
单调头部是可以与值或单元编码相关联的附加元数据。
优选地,单调头部伴随有“合并”函数,该“合并”函数是可交换的、关联的和幂等的。这创建了与数学中通常定义的“并半格”等效地起作用的结构。这确保了头部可以被合并并且收敛到单个值,这与具有收敛属性和/或被包括在CRDT中相一致。
优选地(并且作为上述属性的逻辑含义),合并函数确保包含在单调头部中的信息只能在一个“方向”上改变,例如增加的整数或与不包含循环的图形(DAG)相关的状态标志序列。
优选地,单调头部包括用于节点的状态标签,以从网络参与者的角度指示处理单元或值的进展。例如,示例实施例包括状态标签,用于:
●未知-对等节点具有值ID哈希值,但是不知道它是否与编码一致,并且可能不具有内存或存储器中的数据;
●已存储-对等节点在存储器中编码数据,其被验证为格式良好的单元(忽略子单元),并且与值ID哈希值一致;
●持久-对等节点已经完全验证了单元的结构,包括递归地验证其所有子单元。此时,参与者在计算过程中使用单元内的数据值是安全的;
●公告-对等节点已将数据包括在公开广播信任中;
优选地,其它可能的标签包括:
●嵌入-数据值可以嵌入在其它单元内,并且不需要单独存储;
●无效-单元可证明与一个或多个验证规则不一致。无效数据不能用于共识,但是高速缓存无效状态可以避免重复验证过程的需要。
优选地,单调头部可以包括可以从单元或值(例如单元的内存大小)以确定性方式计算的高速缓存的信息。高速缓存的信息的这种使用可以通过减少或消除多次重新计算这种值的需要来改善实现方式的性能。由于唯一有效的改变是从“未计算的”状态到“已计算的”,所以这种高速缓存值的计算是可交换的、关联的和幂等的。
网络
网络是被布置成彼此通信的节点的集合。网络可以被认为是单个系统,包括表示各个节点的子系统。
优选地,包括节点的目的是参与共识协议的操作(对于对等节点)或者与被维护的共识(对于客户端)交互。
优选地,网络使用标准和公知的通信技术,例如因特网。
网络优选地操作,使得在所有节点之间的通信在所有时间都是可能的。临时故障可能导致网络停止完全连接(“网络分区”)。各个节点可以在任何时间离开或加入网络。
在图1中描述了一个示例网络。
新事物是第一次被网络参与者(通常是对等节点)认为已经创建或观察到的一定量的信息(例如,单元,或表示值或值的一部分的一组单元)。
优选地,实施例检测新事物以确保参与者节点仅向网络发送新信息,并且不重发非新的信息,从而减少处理或网络带宽使用。
优选地,可以由所存储的单元的单调头部来检测新事物,所述单调头部表示第一次被更新到某一较高状态水平,例如从持久状态转换到公告状态。
优选地,使用新事物检测来提高实施例的效率,例如:
●一种新的信任只需要在提议的排序中增加一个增量,而不需要传达完整的排序,这种完整的排序可能很长,但可能由所有其他对等节点持有;
●在已经被验证的数据部分上不需要验证的重新计算,这对于仅需要小的改变来验证共识状态的大数据结构可能是重要的。
优选地,实施例包括收敛存储系统,其能够例如通过在单调头部中使用状态标签,有效地检测和应用与新事物有关的规则。
排序
排序是一个值,它指定应该执行区块(或等同于交易)的顺序。所表示的顺序可以是全部或部分的(如数学中通常理解的)。
可选地,排序可以并入另外的数据,例如:
●所有状态转换结果的序列,先前计算的直到确认的共识点;
●指向排序中当前共识或提议共识的位置的指针;
●已由对等节点提交但尚未包括在当前共识或提议共识中的附加区块;
●与对等节点之间的通信相关的其他信息。
优选地,排序由对等节点进行数字签名,以提供排序由相关联的对等节点合法创建的证明。对等节点可以忽略未被正确签名的排序。
优选地,排序使用松散耦合的区块(参见图6)。
优选地,使用排序的实施例例如通过允许在达到共识之前同时创建和重新排序独立的区块,能够实现高的可扩展性和低的等待时间。在传统的紧密耦合排序中,在可以添加新的区块之前,必须创建和确认所有先前的区块。
优选地,排序被表示为具有结构共享的不变持久数据结构,使得排序中较早的区块与附加了附加新区块的新版本共享。通过这种方法,只有添加到排序中的新区块可以被认为是新事物。这是一个重要的优化,可以减少内存消耗和网络传输,特别是在网络上共享大量的大排序时。
对等节点
对等节点是网络中参与维护共识的节点。
优选地,对等节点应当严格地根据共识协议来工作,然而,即使在不能正确遵循协议的一些“坏的对等节点”的存在下,整个共识也被设计为鲁棒的和安全的。
优选地,对等节点具有相关联的权益,表示忠实地行动的经济承诺。如果被证明是“坏的行动者”,则对等节点可能丢失其权益。不允许尝试修改共识而不遵循协议,例如未经授权地从用户帐户提取资金。具有零权益的对等节点可以被其它对等节点忽略或取消注册。
计划执行
实施例可以可选地实现计划执行的系统,在这种情况下,适用以下段落:
计划是可以被包括在状态中以指定将来执行的交易的数据结构。
优选地,计划执行是作为状态转换函数的一部分的来自计划的交易的执行(并且通过暗示,这应该由共识协议来实施和验证)。
优选地,计划执行取决于作为共识协议的一部分的由对等节点确认的时间戳。例如,时间戳可以被定义为从迄今为止为产生共识状态而执行的所有区块中观察到的最近的时间戳。
优选地,时间戳应该被包括在状态本身中,使得它也可用于可信代码执行,并且可以由参与者检查和验证。
优选地,用被设计成支持有效索引的数据结构来表示计划,以便可以有效地查询要执行的下一个交易,并且以便可以移除已经执行的交易。这种数据结构的一个例子是“基数树”。
优选地,访问控制被应用于类似于常规交易或可信代码执行的计划交易,使得它们不能对状态进行未授权的改变。
智能合约
智能合约是一种计算机程序或协议,其数字地促进、验证或执行合约的协商或执行。
可选地,实施例可以支持智能合约在网络上的实现,使得它们的可靠执行根据共识协议被验证和实施。
优选地,智能合约具有控制在网络的链上状态内管理的资源(例如原生加密货币或用户定义的代币)的能力。这种控制例如可以包括如果满足某些预定条件则在用户之间转移数字资产的所有权。
优选地,基于网络根据共识协议正确操作的假设,独立方可以信任和验证智能合约的行为。
优选地,使用用于在网络上执行可信代码的工具来实现智能合约(假设在实施例中这是可用的)。
优选地,实现智能合约,以便可以从共识的信息(例如当前状态、交易和状态交易函数的其它输入)确定地计算执行。只要智能合约的输入是在共识中的,执行的输出就可以被验证为是共识的。
优选地,通过提交(直接或间接)调用智能合约的交易来激活智能合约。它们也可以由协议中的其它过程自动调用,例如在预定的时间戳。
在实施例中,智能合约可以用各种特征来实现,例如:
●导出外部可访问的功能;
●接受输出函数的输入参数,并将结果作为输出返回;
●调用其他智能合约并在网络上执行其他交易;
●用预先设定的对交易客户端负责的计算单元的约束来限制计算;
●创建和部署其他智能合约;
●收取用于执行智能合约计算的费用。可以向代表客户端发布交易的对等节点支付费用。付款(可能以加密货币形式)可以作为对任意第三方的佣金或其它商定的方法支付到激励池中;
●根据定义的规则,计划用于将来执行的代码。
智能引用
智能引用是指向单元(或等同于值)的指针。
优选地,智能引用使用值ID作为标识符。假设值是不可变的,这意味着智能引用必须总是引用相同的不可变信息。
优选地,智能引用允许单元或值的“垃圾回收”,特别是当已知数据已经被写入存储器并且当前没有被使用时,从而释放主机系统中的工作内存。实施例可以通过Java垃圾收集器使用Java“软引用”来实现这一点。
优选地,智能引用并入了一种机制,使得如果将来处理需要先前从工作内存数据中垃圾回收的数据,则可以从存储器中恢复数据。作为值ID的加密哈希值确保恢复的数据与原始值相同,具有相同的编码。另外,如果不能直接从存储器中检索值,则智能引用可以从另一对等节点请求“丢失数据”。
权益
权益是可能具有经济价值的资产的数量。
优选地,实施例强制要求参与者在特定情况下提供权益。这通过鼓励来自网络参与者的良好行为(如果网络参与者没有正确行为,则网络参与者可能有丢失他们的权益的风险)来提供安全性。
优选地,要求对等节点提供权益以便有资格参与共识,称为对等节点权益。
优选地,对等节点的权益被记录为状态的一部分,从而可以从共识中获得对每个对等节点的权益的知识。
优选地,对等节点权益可以在共识协议中提供投票权。在共识处理期间,可以认为权益是“锁定的”,并且不能用于其它目的。
优选地,不正确地根据共识协议表现的对等节点可以通过去除它们的部分或全部权益(称为“消减”)而被惩罚。这样的惩罚可以被定义为协议的一部分,或由其他参与者触发。
可选地,可以增加权益作为用于处理交易的奖励。参见[图7],举例说明如何在一个实施例中构造奖励池,以通过增加其权益来奖励对等节点。
可选地,用户和/或客户端可以除了由对等节点放置的权益之外还放置权益,称为“委托权益”。
通常,放置权益可能牵涉风险和责任两者。例如,可能需要对等节点来维护其私钥的保密性,否则它们将面临失去全部权益给恶意行动者的风险。
权益加权排序合并
权益加权排序合并(排序合并)是一个可以解决排序之间的冲突的过程。
优选地,实施例通过执行状态加权的排序合并来解决由不同对等节点提议的排序之间的冲突,并且优选地以与递送期望的共识属性和证明相一致的方式。
优选地,排序合并被应用于当前共识排序之后的所有区块。
优选地,排序合并排除与执行排序合并的对等节点的共识排序不一致的对等节点排序(例如,如果对等节点排序与共识排序的区块直到共识排序的整个长度不完全匹配,则忽略它)。
优选地,实施例通过执行状态加权合并来解决所提议的排序之间的冲突。
图4示出了用于在基于参与权益加权合并的初始投票集合中包括对等节点的系统。
优选地,对等节点根据以下过程计算排序合并:
1.每个对等节点计算具有一致共识的所有对等节点(例如其排序与该对等节点维护的共识排序的位置一致的对等节点)的初始“投票集合”。当前对等节点自动包括在该集合中(因为根据定义,它必须与自身一致)。这可能包括“滞后的”对等节点(具有较短的共识排序,但其排序在其它方面与该对等节点的共识排序一致)和“提前的”(其已经公告共识排序比该对等节点的更长,但仍然与该对等节点一致),但应该排除与当前共识排序不一致的对等节点(这在共识分叉、没有提议或过时的提议的情况下可能是真实的)。参见[图4]和上面相应的解释。
2.确定“获胜排序”(参见图5),其通过以下过程确定:
i)它被初始化为该对等节点的共识排序。
ii)为集合中的每个对等节点计算加权权益(例如,对等节点A可以在给定集合中具有2.3%的投票)。
iii)在集合中具有最高总投票的下一个区块(这被称为“获胜区块”)被附加到获胜排序中。
iv)不再与获胜排序一致的对等节点(即,不对获胜区块投票)被从投票集合中排除(对于不一致的对等节点也可能被赋予减小的权重而不是被完全去除,尽管优选地建议将权重设置为零是最佳的)。
v)如果在投票集合中剩余的任何对等节点在它们的排序中具有附加的区块,则返回到ii),并对下一个区块位置重复。
3.一旦选择了投票集合中的所有区块,就定义了最终的获胜排序[512]。这将(作为上述投票规则的结果)正好等于保持在投票集合中的任何对等节点(一个或多个)的排序(还参考图5,图5示出了计算为与所有先前的获胜轮相一致的最长剩余排序的最终获胜排序)。
4.已经被观察到但尚未被包括在获胜排序链中的区块(例如,由从投票集合中排除的对等节点提供的新区块)可以被附加到获胜排序链(例如,以时间戳顺序)。这确保了所有的区块最终都被包括在由对等节点提议的排序中。此外,使用区块时间戳来通知排序最大化了所提议的排序与其他对等节点所提议的排序一致的可能性,这提高了效率并且最小化了共识发现等待时间。
5.然后,所得到的获胜排序成为该对等节点的新排序,并且被包括在对等节点的信任中,用于随后传输到网络。
参考图9,可见如何根据上述过程更新排序合并的最终结果:
状态
状态是表示可作为共识结果计算或更新的数据的值。
优选地,状态包括网络的对等节点和客户端感兴趣的信息,使得它们可以从该信息导出值。这可以包括但不限于:
●由网络中的参与者控制的加密货币或其它数字资产的持有;
●标识和描述网络中的对等节点的对等节点记录,例如权益和网络地址;
●用户存储或更新的信息;
●可执行智能合约代码;
●全局数据,例如网络状态和智能合约可访问的其他数据。
优选地,使用有助于快速访问和更新包含在状态中的信息的数据结构来实现状态,例如通过提供用于帐户访问的有效索引。
优选地,状态被实现为值,从而整个状态可以被表示为单个不可变信息单元。
包括在状态中或参与更新状态的过程中的信息可以被非正式地称为“在链上”。
状态转换函数
状态转换函数是能够计算更新状态的函数。
优选地,用于状态转换的数学模型可以被认为是以下形式:
S(t+1)=f(S(t),T,E)
其中:
f=状态转换函数
S(t)=在执行状态转换函数之前的状态
S(t+1)=在执行状态转换函数之后的新状态
T=要应用于该状态的交易(或多个交易的区块)
E=附加的环境背景,如果有的话(例如,随机数源)
优选地,状态转换函数的执行对于输入是确定性的,使得在给定相同的初始状态和交易输入的情况下,正确地计算状态更新的所有对等节点将在结果状态上达成一致。这意味着节点也必须就相同的环境背景达成一致。
优选地,状态转换函数可以在有界的时间和空间中计算,从而它们可以在存储、网络和计算资源方面具有合理规范的对等节点机器上执行。
如果状态更新已经根据协议规则和状态转换函数的正确应用来计算,则状态更新可以被称为“有效”。
可选地,不是所有的对等节点都需要计算状态更新,只要它们将来在可以保持一致性时接收到结果状态。这可能发生的情况包括:
●委托给对等节点的子集,例如,如果他们有权访问并非所有对等节点都可以访问的私人数据;
●在断开连接或作为新的对等节点加入网络之后赶上进度,在这种情况下,可以更有效地简单地从另一个对等节点获得最近的状态,而不是重新计算大量先前的状态更新。
●信任另一个对等节点正确地计算新状态。注意,如果受信任的对等节点没有执行有效的状态更新,则这潜在地使权益处于风险中。
优选地,实施例实现支持去中心化账本系统的典型要求的状态转换函数。这些可能包括:
●根据客户端提供的指令执行交易,以使这些交易可以更新共识状态;
●保护只有在提供正确的数字签名时才能修改的用户帐户或数字资产;
●计算交易费用,以便有经济激励用户不提交浪费的交易;
●在检查对等节点的数字签名的情况下,更新对等节点信息,例如权益或网络地址;
●向对等节点分配奖励,例如来自激励池的支付和奖励对等节点提供网络资源;
●以客户端交易或其它触发器所请求的可预测且安全的方式执行代码(包括智能合约);
●管理数字资产的余额和所有权,例如原生加密货币或用户定义的代币,或NFT。
存储
存储是一种方法、系统或过程,其中任何单元(或等同于值)(以及可选地其他信息)可以被保存在持久存储介质上,以待需要时进行检索。
优选地,存储用于防止在系统故障的情况下丢失信息,并允许存储可能超过单个计算系统(例如,操作对等节点的服务器)的工作内存容量的大量数据。
优选地,单元的编码的加密哈希值被用作值ID(VID)以引用单元。VID可用作在索引存储系统中有效寻址数据的秘钥。
优选地,存储系统中引用的单元是不可变的。对于给定的密钥,数据值不能改变,这将使其VID无效。不可变性在实施例中具有以下优点:
●存储的单元不会重新调整大小,并且可以通过“仅附加”限制来增加数据库,从而最大限度地减少存储碎片;
●缓存总是有效的,复制不需要同步;
●如果在存储中存在哈希值,则验证是快速的,在数据被验证之后,它总是有效的。
交易
交易是表示到网络的消息或指令的信息单元,其可以影响共识中的一个或多个信息值。
优选地,交易包括数字签名,使得网络参与者可以验证交易已经被适当的私钥正确地签名,并因此,可以假定这种交易具有与该密钥相关联的访问权限(例如,执行指令以从特定用户帐户转移数字资产的能力)。
优选地,在本发明的实施例中,交易被设计成更新共识状态。交易处理可以包括:
●更新网络状态的计算,例如转移资金或触发智能合约;
●交易发起者的加密签名,以确保安全性。例如,只有具有正确私钥的用户才能从他们自己的帐户花费货币;
●将更新应用于指定的成功或失败的给定状态,例如,如果帐户的资金不足。
优选地,一个实施例提供了一种用于记录交易的结果并将其传达回客户端(特别是,如果交易由客户端提交,则将其传达回提交交易的客户端)的机制。
可信代码执行
根据可由实施例定义的规则,可信代码执行(或简称为代码执行)是作为状态转换函数的一部分的程序代码的执行。
该能力对于实施例是可选的,但是如果实施例选择实现可信代码执行,则应适用以下段落:
优选地,存在这样的设施,使得网络参与者可以例如通过发布适当的交易来将它们自己的代码上载或部署到共识状态。
优选地,可信代码执行受到访问控制规则的约束,使得代码的执行不能对状态进行任意改变(例如,对另一个任意用户拥有的数字资产进行控制)。
优选地,可信代码执行具有实现图灵完备计算机程序的功能,从而可以实现任意逻辑。这可以在使用具有定义的操作码的定制VM的实施例中实现。
优选地,包括一种机制来限制正在执行的代码的计算成本,使得用户不会消耗过多的计算资源。例如,这可以通过为执行的每个代码操作征收交易费用、并且如果超过限制则中止执行来实现。
优选地,每个交易的工作内存要求应该是限制的,从而在具有有限工作内存大小的实现方式中可以安全地完成交易的执行。将数据卸载到存储的能力可以帮助这一点。
优选地,可信代码执行支持原子操作,使得原子操作的执行完全成功,或者在失败的情况下改变被回退。一个实施例可以选择将整个交易实现为原子操作,或者允许代码定义定制的原子操作。
用户
用户是可以执行动作并且可以持有或控制网络上的资产的人或法律实体,因此可以被认为是网络中的间接参与者。
优选地,用户使用客户端软件与网络交互,并且因此可以从网络的角度被视为客户端。
用户可能包括以下示例:
●开发人员,部署新的智能合约;
●具有移动设备的人,检查他们的帐户余额;
●银行雇员,履行链上衍生合约。
优选地,用户拥有或控制一个或多个密码私钥,使得他们能够对交易进行数字签名。
值ID
值ID是值(或等同于单元)的唯一标识符。
优选地,值ID可以用于引用编码中的值或单元或者网络通信中的值或单元。
优选地,使用应用于相关单元的编码的强加密哈希函数来计算值ID(对于大的值,这可以是单元树中的顶级单元的编码)。这提供了极不可能为两个不同的值分配相同的值ID的密码保证。在这种方案下的哈希值冲突是非常不可能的,并且出于实际的目的可以被忽略。示例实施例使用值编码的SHA3-256哈希值来产生值ID。
值
值是表示某一单位信息的实体。
优选地,一些值是合成的,例如包含多个分量值的数据结构。
优选地,使用表示值的标准方法来表示由网络中的参与者共享或处理的所有信息。
优选地,值以类似于通常在数学或计算系统中发现的数据类型的形式表示,例如:
●诸如整数或布尔的原始值;
●位串;
●用于命名的值,例如符号或关键字;
●复合数据结构,例如列表、地图、向量和集合;
●包含多个字段的数据记录;
●与共识协议有关的区块和交易;
●诸如哈希值值或数字签名的密码原语。
优选地,可以使用抽象数据类型(ADT)或以面向对象的编程语言使用公共基类或接口以计算机编程语言来实现值。这样的数据类型可以由计算机程序以统一的方式方便地处理。
优选地,值是不可变的,这意味着一旦构造了包含在特定值中的相关信息,就不能改变它(尽管实现方式可以选择用附加元数据来增加它们的值的内部表示,该附加元数据不被认为是该值(例如高速缓存的值ID)所表示的信息的一部分)。
基于向量的前缀计算
共识算法比较连续的数据集。它比较两个或更多个排序以识别块是否相同。例如,它计算两个序列的最长公共前缀,例如排序:
●[A,B,C,D,F,G]
●[A,B,C,G,D]
公共前缀是前缀长度为3的[A,B,C]。
先前的算法具有在O(n)时间内操作的长排序的不可接受的性能,其中n是较短链的长度。它们可能需要以不可接受的等待时间和不可承受的计算成本来处理数百万个区块。该协议将Merkle树(具有嵌入的加密哈希值的树)与基数树组合以计算公共前缀长度。有效的前缀计算在O(log n)时间内完成。它通过以下方式实现这一点:
●将排序中的区块存储为“向量”,其中向量是包含任意值序列的智能数据结构;
●将向量实现为基数树,其中每个树节点具有受限数量的子节点,优选最大为16;
●在父节点中嵌入每个子节点的加密哈希值。哈希值作为智能引用;
●检查向量中的哈希值,以找到具有不同哈希值的第一对节点,从而确定公共前缀。跳过大向量中的相同节点提高了计算效率;
当两个对应的子分支具有不同的哈希值时,执行递归下降,这确定了元素值中第一个差值出现的位置。
本发明的示例使用
本发明的示例是开放的、可公开访问的、去中心化的网络,其被设计成支持数字资产,诸如非有形代币(NFT)和中央银行数字货币(CBDC)。他们支持灵活的、图灵完备智能合约,该智能合约可用于自动交易和结算涉及这种数字资产的交易。网络被完全去中心化,这意味着允许任何参与者操作网络中的对等节点服务器。它们使用强大的加密技术,例如数字签名。放置经济权益系统以调节对等节点行为,确保网络作为整体以安全、可验证、可信的方式操作。
示例的特征在于协议中使用的原生加密货币(“原生币”)。它们由内存计费系统增强,以产生有效使用链上内存和存储的经济激励。它还具有用于可信代码执行的高级虚拟机的特征,包括在现代函数编程语言中找到的特征和链上编译器(超出大多数DLT系统的能力)。使用这种智能合约工具可以容易地实现和/或管理新类型的数字资产。
示例被设计成支持作为网络的客户端提交交易的用户的访问,例如,用于交易数字资产或执行智能合约的代码。其它工具包括客户端软件库(以不同的编程语言可用),其被提供以使其易于实现客户端软件。期望用户使用数字签名来确保其交易的真实性和其数字资产的安全性,这由可以由不同用户控制的帐户系统来促进。
为了实现高交易吞吐量和低等待时间,示例使用了本发明中描述的共识协议的有效实现方式。它们由有效的数据结构和单元编码、用于区块排序的有效的信任合并函数以及优化的存储系统来支持。
对等节点服务器
网络由一个或多个因特网连接的服务器[11]组成,其具有便于其他对等节点[11,13]和客户端[14]之间的连接和通信[12,15]的可公开寻址的TCP/IP端口。
主机运行时
对等节点服务器[11]使用Java编程语言和Java虚拟机(JVM)来运行。它们可以在操作诸如Linux和Windows等常见操作系统的服务器上运行。
联网
联网实现方式使用Java NIO来提供异步的、事件驱动的消息处理,主要是出于性能的原因。在该实现方式中使用的固定大小的缓冲器允许将背压应用于发送太多消息的连接系统,并减轻拒绝服务攻击。
对等节点协议
对等节点使用称为对等节点协议的标准化协议进行通信。
协议包括以消息标识符开始发送消息作为字节序列,然后以消息类型定义的方式对一个或多个数据值进行编码。实现的最重要的消息类型包括:
●质询-向连接的另一端的参与者发出加密质询,以证明一个或多个私钥的所有权;
●响应-用证明私钥所有权的数字签名响应质询;
●数据-传达数据值(作为单元编码);
●命令-对用于对等节点管理的对等节点的控制指令;
●丢失_数据(MISSING_DATA)-提供与给定值ID对应的一些单元值的请求,所述给定值ID通常由对等节点或客户端使用以获得它们当前不在其本地内存或存储器中持有的值;
●查询-对当前共识状态执行计算的请求,但实际上没有作为交易执行。查询无法修改状态;
●交易-来自客户的请求,要求对等节点提交一个交易,以便包含在共识中。如果成功(包括对任何相关数字签名的验证),则交易可导致对状态的更新;
●结果-一些先前发送的消息的结果的通信;
●信任-根据本发明所述的权益算法的收敛证明,对等节点收敛到共识所必需的对等节点信任数据结构的通信。
消息被限制为8191字节的最大长度,这通常对于小消息编码(例如,TRANSACT)是足够的,但是对于大值(例如,整个BELIEF)是不足够的。实际上,可能只包括消息的一个或多个根单元,并且可以排除一些子单元。要管理此项:
●通常期望对等节点使用DATA消息来预发送子单元,以确保当顶层消息到达时接收者拥有所有相关单元。然而,如果对等节点代表新事物,即其先前没有被对等节点传达,那么对等节点通常只应该发送这样的单元。
●如果对等节点接收到消息但没有一个或多个子单元,则它可以使用MISSING_DATA消息请求丢失的子单元。如果一个或多个MISSING_DATA请求不导致获得所需的单元,则对等节点被授权忽略该消息。
共识与信任合并过程
利用对等节点协议,对等节点执行主要由信任合并过程组成的共识协议[图2]
存储
对等节点服务器利用定制密钥/值数据库来提供对等节点操作所需的持久存储,并允许对等节点服务器重新启动。存储实现方式使用存储器映射的IO来执行。从对等节点服务器的角度来看,存储子系统使得对等节点能够存储具有等于编码的SHA3-256哈希值(值ID)的密钥的任何单元的编码,并且能够根据相同的值ID来查找数据。
信息模型
该实施例定义了适合由对等节点和客户端使用的标准信息模型,并且该标准信息模型能够实现信息值的有效序列化、存储和通信。
值类型
在实施例中创建和转移的所有值在主机运行时环境(JVM)中被实现为不可变值,使用对应于任意单元的公共基类“ACell”。
大多数单元也是值,尽管一些单元被用作较大值的组成部分,并且在它们自己的权限中不被认为是有效的值。
本实施例中可用的主要类型是:
●原语
○字节-一个8比特字节,被认为是范围为0……255的整数;
○双-64比特IEEE双精度浮点值;
○长-64位有符号的整数;
○字符-16位UTF16字符;
○布尔-两个可能的值“真”和“假”;
○Nil-单调值“nil”
○地址-帐户的编号标识符,例如“#123”;
○符号-在代码中使用的命名标识符,例如“x”;
○关键字-通常用作映射秘钥的命名值,例如“:foo”;
●字符串状对象(任意长度)
○字符串-UTF16字符序列;
○团块-8比特字节的序列;
●数据结构
○列表-通常用于表示代码的值的列表,例如“(do 23)”;
○向量-值的序列,例如“[123]”;
○映射-关键字到值的映射,例如“{:foo 1,:bar 2}”;
○集合-一组唯一值,例如“#{123}”;
○记录-具有预定义字段和值类型的类映射对象,最常用于表示实施例中的专用数据结构,例如账户记录;
●代码对象
○语法-用于表示具有可选元数据的代码的对象;
○函数-可以执行的可调用函数;
○Op-为虚拟机编译的指令;
●共识对象
○状态-完整状态
○区块-交易的区块;
○交易-到网络的单个指令;
○顺序-区块的完全排序;
○信任-对等节点信任数据结构;
○签名数据-应用了任何其它值的数字签名。
单元实现一些标准功能以促进它们在实施例中的使用,包括:
●获取单元的编码或值ID的能力;
●检查子单元(如果有的话)的能力;
●用于验证单元的正确性的功能;
●为单元生成智能引用的能力。
所有需要多个单元来表示它们的值都被实现为支持结构共享的持久不可变数据结构,从而允许有效的更新(避免写时复制要求)。
编码
单元被编码为字节序列。
序列中的第一字节总是指定编码表示的单元的类型的“标记”字节。编码的剩余部分是单元的信息内容的序列化表示。
编码利用行业中公知的典型技术来最小化编码的大小,例如
●使用可变长度整数编码,其中小整数以相比于较大值更少的字节来编码;
●使用比特字段来指示可选值的存在/不存在;
●有意为公共值选择短编码(例如,以0x 00字节作为对“nil”的编码)。
值ID
单元由值ID标识,该值ID被定义为等于编码的SHA3-256哈希值,该编码的SHA3-256哈希值可以被表示为32字节(256比特)的序列。
状态由共识算法管理的状态被实现为单个不变数据结构,包含以下信息:
●帐户地址到帐户记录的有序索引;
●对等节点地址到对等节点记录的有序索引;
●计划的将来交易的有序索引;
●一小组全局值。
使用有序索引对于允许在相关联的数据结构中的值的有效查找是重要的,这在O(log n)时间中实现,其中n是索引的大小。
账户记录
状态包括索引内的帐户记录。每个帐户可以是以下中的一个或两个:
●由(受数字签名保护的)网络的外部用户控制的用户帐户;
●根据状态转换函数的规则自主执行代码的行动者帐户,其可用于实现智能合约。
帐户可以包括以下任何信息:
●序列号,指示到目前为止为帐户处理的交易的总数,用于防止交易重放攻击;
●原生币的余额;
●内存津贴的余额,用于内存计费;
●符号到值的映射,表示存储在帐户中的定义的环境,通常用于程序化使用;
●符号到元数据的映射,表示可以为在环境中定义的任何符号提供的可选元数据;
●持有量图,其被提供为方便地存储由其他帐户分配的附加值,通常用于跟踪用户定义的代币或该帐户的数字资产的余额;
●控制器字段,其可用于向另一个帐户授予对该帐户的控制;
●公钥字段,用于存储用户帐户的Ed25519公钥。
帐号用地址索引,该地址是指示帐号在帐号索引中的位置的小整数值。每当新的帐户被添加到状态时,地址从#0开始被顺序地发出。
帐户是系统安全模型的中心。在大多数情况下,从大多数网络参与者的角度来看,帐户是只读的,并且只能使用由正确的Ed25519私钥签名的交易来更新。对该规则存在一些仔细控制的例外(例如,您可以在没有帐户权限的情况下向用户帐户提供原生币,或者您可以在行动者中调用智能合约代码,在该行动者中,行动者已经使这种代码可调用,在这种情况下,智能合约代码可以在明确定义的规则下更新行动者的帐户。
对等节点记录
该状态包括由对等节点的公钥索引的对等节点记录的索引。
每个对等记录包含:
●由对等节点作为对其自身性能的担保而放置的对等节点权益(以原生币表示)
●该对等节点上由其他帐户放置的任何委托的权益(以原生币表示)
使用对等节点上的总权益来计算执行共识协议中的对等节点的投票权重。
奖励池
用于对等节点奖励的原生币也存储在状态中,并且权益持有人有权要求这些累积奖励的份额。
VM中包括一种机制,以确保权益方不能要求超过它们应得的奖励,并且可要求的奖励与对等节点权益成比例地定义。委托的权益方有动机在具有更高的对等节点权益的对等节点上进行投资,因此可能被认为是更“可信的”。
原生币
状态中的每个帐户被定义为具有充当网络的原生币的虚拟货币的量(即,被实现为协议的一部分)。原生币在帐户之间是可转移的,但不能被创建或销毁(这是本实施例作出的选择)。状态中的原生币的总量被定义为固定数量的1,000,000,000,000,000,000个单位。
原生币可用于:
●在对等节点上放置经济权益;
●购买内存津贴以用于附加的链上存储;
●由用户帐户支付与执行每个交易相关联的小费用;
●用作链上智能合约和服务的支付方法;
●转换为稳定的币、法定的货币或加密货币。
内存津贴(memory allowance)
除了原生币之外,状态还包括用于内存的第二虚拟货币,被称为内存津贴,其被用于内存计费。
内存津贴主要用于在如下详述的交易执行期间购买附加的链上内存容量(以字节为单位测量的)。它也是可转移的,并且可用作第二虚拟货币。
虚拟机
该实施例实现了用于作为状态转换函数的一部分的Op和其它运行时函数的执行的虚拟机(VM)。
基础Ops
虚拟机执行被称为“Op”的值,它们是用作可信代码执行的实施例的VM的低级“字节代码”。所提供的Op大致相当于λ演算(Lambda Calculus)的典型实现方式中可用的基本操作,Lambda Calculus是一种最常与计算机语言Lisp相关的函数式编程范式。
这些Op包括:
●常值(constant)-将常值加载到VM的结果寄存器中;
●调用(invoke)-调用运行时函数或用户定义的函数;
●执行(do)-执行一系列子操作;
●条件(Cond)-以类似于通用编程语言构造IF(…)THEN…ELSE IF(THEN)…ELSE…的方式有条件地执行操作;
●查找(lookup)-查找由当前执行背景中的符号定义的值;
●Def-在当前执行背景中定义由符号命名的值;
●λ(Lambda)-创建通常用于函数编程语言的函数(或闭包)的实例;
●让(let)-将一个或多个符号绑定到本地词汇背景中的值;
●查询(query)-执行Op,但忽略所有状态改变;
●循环(loop)-在循环中创建执行代码,其中递归可以由各种运行时函数控制;
●特别(special)-计算并返回与当前执行背景相关的各种特别值,例如当前帐户的原生币余额。
Op被表示为树数据结构形式的值,该树数据结构可以可选地包含子Op。在这种意义上,可以认为Op在结构上类似于编程语言实现方式中常用的“抽象语法树”。
运行时函数
除了VM执行的Op之外,VM还向系统提供一组内置的核心运行时函数。这些通常用于向用户代码提供访问VM的编程能力的能力。本实施例使用运行时函数,包括但不限于:
●常见的数值运算(加法、减法、平方根等);
●用于操纵和查询数据结构的函数(例如,构造向量);
●控制流程构造(在比例如Cond更高的级别);
●用于支持宏的创建的函数;
●用于支持与网络运行相关的操作(例如在一个或多个对等节点上放置权益)的函数;
●用于转移和管理网络上的原生币的函数;
●用于转移和管理帐户的内存津贴的函数;
●用于促进调用以及与行动者和智能合约交互的函数;
●用于管理帐户的安全性(例如旋转Ed25519公钥)的函数。
扩展与编译
VM实现链上编译器,以将代码(表示为Lisp形式)转换为准备好执行的已编译的Ops树。例如,代码“(if true 2 3)”将被翻译成Op树“(Cond(Constant true)(Constant 2)(Constant 3))”。
编译器包括扩展器功能,其在编译之前转换代码形式,类似于大多数基于Lisp的语言。这允许用户定义自定义宏以扩展语言,同时仍然编译到相同的基本Op的标准集。该实施例使用宏扩展器的“扩展通过方式”(Dybvig,Friedman,Haynes 1988)。
执行作为Lisp表单提供的代码的过程为:
●使用默认扩展器扩展表单;
●使用链上编译器编译表单;
●执行生成的Op(可能是Ops树的根)。
用户还可以选择在链外编译代码,并直接提交Op以供执行。这在较低的交易成本和改善的性能方面提供了一些好处,因此如果用户不需要使用链上编译,则鼓励这样做。
用户代码
用户代码可以部署在VM上(作为状态的一部分),该VM使用上述能力来实现自定义功能。由于上述功能是图灵完备,因此可以实现任意的用户功能。为方便起见,可以将实用功能和工具形式的一些用户代码作为网络初始化的一部分自动部署到VM。
用户代码可以被指定为准备在VM上直接执行的Ops树,或者可替代地被指定为在执行之前被扩展和编译的Lisp形式。
用户代码可以存储在用户帐户的环境中,或者可替代地直接包括在提交的查询或交易中。
交易成本计费
该实施例实现了交易费用系统[图8],以激发网络资源的有效利用。
如果在任何时候,交易费用超过了允许的最高费用,交易将以Juice错误中止,用户不会收到任何退款。
内存计费
在每个交易结束时,VM检查状态的内存大小以查看这是否已经改变。
VM按以下方式计算单元内存大小:
64+[编码单元数据的内存大小]+[任何引用的子单元的内存大小之和]
注意:这里给出的常数64是在每个单元的存储中涉及的开销的字节数的估计。
出于效率目的,每当为任何单元计算内存大小时,高速缓存所述内存大小,且此高速缓存的内存大小也可与单元值一起写入到存储器中。
如果交易导致内存大小的增加,则从帐户的内存津贴中减去该增加。在减小的情况下,将内存大小差异作为退款返回给帐户的内存津贴。
如果帐户的内存津贴不足以支付额外的内存消耗,则尝试使用原生币从智能合约购买附加的内存津贴。
如果成功地使用了任何所需的内存津贴,则交易将正常完成。否则,交易中止,任何状态改变回退,并向用户报告错误。
激励池
该实施例实现了激励池的系统,以奖励对等节点参与共识。作为VM的一部分,方便了这些池的管理。
[图7]显示了区块奖励如何通过激励池进行引导,以奖励对等节点的参与并惩罚坏的对等节点。治理账户[71]将原生币的资金[77]分配给长期区块奖励池[72],旨在多年为网络运营提供资金。
随着时间的推移,逐渐释放资金[78]作为协议的一部分进行,该协议将资金存入“当前区块奖励池”[73]。转移率被配置为每年[72]的比例(例如20%)。
当前区块奖励池用于奖励[79和710]好的对等节点[74和75],其中奖励池的份额与他们的权益成比例,随着时间推移而被支付。总支出率被配置为每小时[72]的比例(例如,10%)。
坏的对等节点[76]通过去除它们的部分或全部权益(“消减”)而被惩罚[711],权益被重新分发到当前区块奖励池。
由于从坏的对等节点移除的权益经由当前的区块奖励池被快速地重新分发,所以好的对等节点具有强烈的动机来检测坏的对等节点并惩罚坏的对等节点,因为它们将共享这样做的奖励。
客户端
网络可以在任何时候由客户端加入,客户端可以包括用户应用,例如web浏览器或移动设备。客户端计算机[14]连接到对等节点[11],以便提交和传达[15]有关交易的信息。
客户端通过以下方式更正一个或多个对等节点:
●利用对等节点协议,直接连接到所选对等节点的开放TCP/IP端口
●使用通常理解的web编码和协议(例如JSON)经由HTTP REST API访问
●例如,如果客户端功能也在对等节点的服务器进程或同时操作的具有适当访问权限的进程中实现,则直接访问对等节点实现方式。
客户端通常需要维护安全私钥,这是需要的,以便客户端能够签署提交给对等节点的交易。在正常情况下,客户端不应向任何第三方泄露私钥本身。
交易
客户端通常通过提交交易(例如使用对等节点协议的TRANSACT消息)来与网络交互。交易通常包含:
●序列号,其中1是第一个交易,随后的交易被顺序编号(用于防止相同交易的“重放攻击”);
●用于帐户的地址;
●数字签名使得节点能够验证交易是由用户帐户的正确私钥签名的;
●有效载荷,通常是以要执行的VM代码的形式。
对等节点通常在确认交易被包括在其中的区块在共识中之后,将交易的结果报告回客户端。
客户端库
为了便于应用程序的开发,客户端库提供了简单的API,用于以编程方式访问网络能力。性能包括:
●准备和提交由对等节点网络执行的交易;
●查询对等节点上的数据(例如,从最新的共识状态请求用户当前的币余额);
●同步(等待要确认的结果)或异步(提交请求并稍后检查结果)地执行交易;
●用于与特定智能合约交互的API。
客户端库被提供用于多种不同的编程语言,例如Java、Python、C和JavaScript。客户端库的不同语言版本使得可以使用特定编程语言的用户更熟悉的API、接口和习语来访问去中心化网络的性能,例如,在Java中,到网络的连接由Java类的实例来表示。
Claims (34)
1.一种用于实现有效共识的系统,包括:
在网络中被布置为任意通信和功能参与者的各种类型的一个或多个节点,其中至少第一节点类型被称为对等节点,
用于由所述对等节点生产信任使得每个信任包含用于形成共识的数据的装置;
组合一个或多个信任的信任合并函数;
其中,所述对等节点被布置成根据共识协议来维持所述网络的所述共识,所述共识协议包括将所述信任合并函数应用于信任;
其中,所述信任合并函数被定义为使得所述网络表现出收敛到单个共识的属性。
2.根据权利要求1所述的系统,其中,至少第二节点类型被称为客户端;和
其中所述客户端被布置成提交新交易,所述新交易可能影响所述共识和由所述网络的所述共识产生的查询信息。
3.根据权利要求1或2所述的系统,其中,使用幂等的、关联的和可交换的计算来定义所述信任合并函数,使得所述系统能够作为无冲突的复制数据类型来操作。
4.根据前述权利要求中任一项所述的系统,还包括:
称为区块的特定类型的信息单元;
所述特定类型的信息单元、即所述区块的全部或部分排序,包括值和单元,被包括作为信任的组成部分;
状态转换函数,能够在给定某种排序的情况下计算更新状态;
一个或多个初始状态;
其中,可以通过将所述状态转换函数重复应用于所述初始状态和可以包括在所述排序中的一个或多个信息单元来计算共识状态。
5.根据权利要求4所述的系统,还包括:
被称为交易的零个或多个信息单元的集合,其被包括作为每个区块的组成部分;
由所述对等节点提供的可选附加信息,例如时间戳或数字签名;
其中所述区块及其组成交易和任何附加信息被布置成作为所述排序的一部分而被包括在内。
6.根据权利要求4或5所述的系统,
其中,排序中的所述信息单元被定义为不包含对一个或多个先前信息单元的引用,使得可以在共识过程中对所述区块进行重新排序。
7.根据权利要求6所述的系统,还包括:
用于计算共识排序的装置;
其中,所述用于计算共识排序的装置将共识排序作为所述信任合并函数的一部分来计算。
8.根据权利要求7所述的系统,还包括:
用于向对等节点分配权益的装置;
作为所述共识排序的计算的一部分而包括的权益加权排序合并过程;
其中,使用所述权益加权排序合并来解决由不同对等节点提议的排序之间的冲突。
9.根据权利要求7所述的系统,还包括:
用于公共前缀计算的装置;
其中,利用在排序之间的公共前缀的计算来降低用于共识的计算成本。
10.根据权利要求1所述的系统,还包括:
用于新事物检测的装置;
其中观察到新事物的节点可以将新事物传达给其他节点;
其中节点可以可选地省略非新事物的信息的传达,以便节省网络资源和处理成本。
11.根据权利要求1所述的系统,还包括:
用于表示信息值的装置,所述信息值被表示为一个或多个单元;
用于产生用于单元的编码的装置,优选地以适于存储或网络通信的形式;
用于智能引用的装置,其使得对所述单元的引用能够被包括在另一个单元的信息和/或编码内;
用于在另一个编码内嵌入编码从而使任何值能够被完全表示为由所述智能引用连接的单元的图形的装置。
12.根据权利要求11所述的系统,还包括:
用于为单元产生值ID的装置,诸如应用于编码的加密哈希函数;
其中所述值ID可以用作所述信息单元的唯一引用。
13.根据权利要求1所述的系统,还包括:
信息值的收敛存储;
其中,节点的工作内存中只需要当前处于活动使用的信息单元,可以将其他信息单元持久保存到持久存储器和/或在不需要进一步处理时删除,即垃圾回收;
其中将新信息添加到存储器具有收敛属性,从而可以避免数据不一致。
14.根据权利要求1所述的系统,还包括:
用于计算单元的内存大小或其它信息值的装置;
用于内存计费的装置;
其中所述内存计费用于将激励分配给所述网络上的参与者,例如以节省内存、存储器和/或通信带宽。
15.根据权利要求14所述的系统,还包括:
在工作内存和/或存储器中高速缓存针对每个单元或信息单元计算的内存大小的装置;
其中,高速缓存的内存大小被用于降低计算用于大数据结构的内存大小的计算复杂度,例如仅需要计算用于新事物的内存大小。
16.根据权利要求4所述的系统,还包括:
用于将可信代码执行布置成所述状态转换函数的一部分的装置;
其中,可利用可信代码执行来实现智能合约或可影响共识状态的其它可编程功能。
17.根据权利要求13或15所述的系统,还包括:
一个或多个单调头部,其将头部信息与信息值和/或单元相关联;
其中,单调头部还提供收敛的属性,从而可以依赖于所述属性来高速缓存、性能优化和标记单元的状态。
18.一种用于实现有效共识的计算机实现的方法,包括:
将各种类型的一个或多个节点布置成网络中的任意通信和功能参与者,其中至少第一节点类型被称为对等节点,
由所述对等节点生成信任,使得每个信任包含用于形成共识的数据;
将一个或多个信任合并为信任合并函数;
其中,所述对等节点被布置成根据共识协议来维持所述网络的共识,所述共识协议包括将所述信任合并函数应用于信任;
其中,所述信任合并函数被定义为使得所述网络表现出收敛到单个共识的属性。
19.根据权利要求18所述的方法,其中,至少第二节点类型被称为客户端;和
布置所述客户端提交新交易,所述新交易可能影响所述共识和由所述网络的所述共识产生的查询信息。
20.根据权利要求18或19所述的方法,其中,使用幂等的、关联的和可交换的计算来定义所述信任合并函数,使得所述系统能够作为无冲突的复制数据类型来操作。
21.根据前述权利要求中任一项所述的方法,还包括:
称为区块的特定类型的信息单元;
所述特定类型的信息单元、即所述区块的全部或部分排序,包括值和单元,被包括作为信任的组成部分;
状态转换函数,能够在给定某种排序的情况下计算更新状态;
一个或多个初始状态;
其中,可以通过将所述状态转换函数重复应用于所述初始状态和可以包括在所述排序中的一个或多个信息单元来计算共识状态。
22.根据权利要求21所述的方法,还包括:
被称为交易的零个或多个信息单元的集合,其被包括作为每个区块的组成部分;
由对等节点提供的可选附加信息,例如时间戳或数字签名;
其中所述区块及其组成交易和任何附加信息被布置成作为所述排序的一部分而被包括在内。
23.根据权利要求21或22所述的方法,
其中排序中的所述信息单元被定义为不包含对一个或多个先前信息单元的引用,使得可以在共识过程中对所述区块进行重新排序。
24.根据权利要求23所述的方法,还包括:
计算共识排序;
其中所述共识排序是作为信任合并函数的一部分来计算的。
25.根据权利要求24所述的方法,还包括:
为对等节点分配权益;
作为所述共识排序计算的一部分而包括的权益加权排序合并过程;
其中,使用所述权益加权排序合并来解决由不同对等节点提议的排序之间的冲突。
26.根据权利要求24所述的方法,还包括:
计算公共前缀;
其中,利用在排序之间的公共前缀的计算来降低用于共识的计算成本。
27.根据权利要求18所述的方法,还包括:
检测新事物;
其中观察到新事物的节点可以将新事物传达给其他节点;
其中节点可以可选地省略非新事物的信息的传达,以便节省网络资源和处理成本。
28.根据权利要求18所述的方法,还包括:
表示信息值,所述信息值被表示为一个或多个单元;
产生用于所述单元的编码,优选地以适于存储或网络通信的形式;
实现智能引用,使得对所述单元的引用被包括在另一个单元的信息和/或编码内;
在另一个编码内嵌入编码,从而使任何值能够被完全表示为由所述智能引用连接的单元的图形。
29.根据权利要求28所述的方法,还包括:
为单元产生值ID,例如应用于编码的加密哈希函数;
其中所述值ID可以用作所述信息单元的唯一引用。
30.根据权利要求28所述的方法,还包括:
信息值的收敛存储;
其中,节点的工作内存中只需要当前处于活动使用的信息单元,可以将其他信息单元持久保存到持久存储器和/或在不需要进一步处理时删除,即垃圾回收;
其中将新信息添加到存储器具有收敛属性,从而可以避免数据不一致。
31.根据权利要求18所述的方法,还包括:
计算单元的内存大小或其他信息值;
对内存计费;
其中所述内存计费用于将激励分配给所述网络上的参与者,例如以节省内存、存储器和/或通信带宽。
32.根据权利要求31所述的方法,还包括:
在工作内存和/或存储器中高速缓存针对每个单元或信息单元计算的内存大小;
其中,高速缓存的内存大小被用于降低计算用于大数据结构的内存大小的计算复杂度,例如仅需要计算用于新事物的内存大小。
33.根据权利要求32所述的方法,还包括:
将可信代码执行布置为所述状态转换函数的一部分;
其中,可利用可信代码执行来实现智能合约或可影响共识状态的其它可编程功能。
34.根据权利要求30或32所述的方法,还包括:
一个或多个单调头部,其将头部信息与信息值和/或单元相关联;
其中,单调头部还提供收敛的属性,从而可以依赖于所述属性来高速缓存、性能优化和标记单元的状态。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB2005833.5A GB202005833D0 (en) | 2020-04-21 | 2020-04-21 | On-chain distributed ledger domain and off-chain client portal and interactions |
GB2008452.1 | 2020-06-04 | ||
GBGB2008452.1A GB202008452D0 (en) | 2020-04-21 | 2020-06-04 | On-chain distributed ledger domain, off-chain client portal and interactions, and convex digital value exchange |
GBGB2012819.5A GB202012819D0 (en) | 2020-04-21 | 2020-08-17 | On-chain distributed ledger domain and off-chain client portal and interactions |
GB2012819.5 | 2020-08-17 | ||
PCT/EP2021/065080 WO2021245284A1 (en) | 2020-04-21 | 2021-06-04 | Convergent consensus method for distributed ledger transaction processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116235463A true CN116235463A (zh) | 2023-06-06 |
Family
ID=70860226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180056952.3A Pending CN116235463A (zh) | 2020-04-21 | 2021-06-04 | 用于分布式账本交易的收敛共识方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230245080A1 (zh) |
EP (1) | EP4162644A1 (zh) |
CN (1) | CN116235463A (zh) |
GB (3) | GB202005833D0 (zh) |
WO (1) | WO2021245284A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473557A (zh) * | 2023-12-22 | 2024-01-30 | 北京天润基业科技发展股份有限公司 | 一种可信设置方法及装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220350645A1 (en) * | 2021-04-28 | 2022-11-03 | EMC IP Holding Company, LLC | Queue Management System and Method |
CN114416766B (zh) * | 2022-03-29 | 2022-06-28 | 深圳市一航网络信息技术有限公司 | 实用计算能力证明共识方法、装置、电子设备及存储介质 |
CN115996130B (zh) * | 2023-03-23 | 2023-06-30 | 安徽中科晶格技术有限公司 | 基于预置合约的dao治理方法、装置、设备及存储介质 |
CN117527832A (zh) * | 2024-01-03 | 2024-02-06 | 杭州趣链科技有限公司 | 一种区块链的交易排序方法、装置、电子设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112449705A (zh) * | 2018-05-10 | 2021-03-05 | 康奈尔大学 | 亚稳态拜占庭协定 |
-
2020
- 2020-04-21 GB GBGB2005833.5A patent/GB202005833D0/en not_active Ceased
- 2020-06-04 GB GBGB2008452.1A patent/GB202008452D0/en not_active Ceased
- 2020-08-17 GB GBGB2012819.5A patent/GB202012819D0/en not_active Ceased
-
2021
- 2021-06-04 CN CN202180056952.3A patent/CN116235463A/zh active Pending
- 2021-06-04 WO PCT/EP2021/065080 patent/WO2021245284A1/en unknown
- 2021-06-04 US US18/000,323 patent/US20230245080A1/en active Pending
- 2021-06-04 EP EP21731954.0A patent/EP4162644A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117473557A (zh) * | 2023-12-22 | 2024-01-30 | 北京天润基业科技发展股份有限公司 | 一种可信设置方法及装置 |
CN117473557B (zh) * | 2023-12-22 | 2024-02-27 | 北京天润基业科技发展股份有限公司 | 一种可信设置方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021245284A1 (en) | 2021-12-09 |
US20230245080A1 (en) | 2023-08-03 |
GB202005833D0 (en) | 2020-06-03 |
EP4162644A1 (en) | 2023-04-12 |
GB202012819D0 (en) | 2020-09-30 |
GB202008452D0 (en) | 2020-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200396065A1 (en) | System and method using a fitness-gradient blockchain consensus and providing advanced distributed ledger capabilities via specialized data records | |
CN109314642B (zh) | 用区块链实施的用于安全投票和分配的计数系统和方法 | |
Buterin | Ethereum white paper | |
CN116235463A (zh) | 用于分布式账本交易的收敛共识方法 | |
Akcora et al. | Blockchain networks: Data structures of bitcoin, monero, zcash, ethereum, ripple, and iota | |
JP2023078359A (ja) | ブロックチェーンを用いる並行状態機械処理 | |
McCorry et al. | Sok: Validating bridges as a scaling solution for blockchains | |
EP3736760A1 (en) | Automated transaction protocol linking renewable energy generation assets to energy power consumers applying distributed digital ledger technology and iot energy meters | |
TW202139127A (zh) | 用於與區塊鏈相關聯之服務平台之運算服務 | |
CN114096966A (zh) | 可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络 | |
Pop et al. | Blockchain based decentralized applications: Technology review and development guidelines | |
Drąsutis | IOTA smart contracts | |
Van der Laan | „Understanding Blockchain “ | |
Singhal et al. | How Ethereum Works | |
Gorenflo | Towards a New Generation of Permissioned Blockchain Systems | |
Antal et al. | Distributed Ledger Technology Review and Decentralized Applications Development Guidelines. Future Internet 2021, 13, 62 | |
Urbančok | Blockchain open-source software comparison | |
Pérez Jiménez | Analysis of the ethereum state | |
Bellaj et al. | Drawing the boundaries between blockchain and blockchain-like systems: A comprehensive survey on distributed ledger technologies | |
Cai et al. | Advanced Blockchain Technology | |
GB2572339A (en) | System and method for data processing using tokens | |
Pierro et al. | A Study on Diem Distributed Ledger Technology | |
Mast | Protocols for Building Secure and Scalable Decentralized Applications | |
Torp et al. | A decentralized Ethereum platform for smart energy trading: Designing and implementing an eAuction application for energy trading on the Ethereum blockchain by using smart contracts | |
Anusuya et al. | Privacy-preserving in smart grids using Ethereum and Hyperledger blockchain |
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 |