CN114096966A - 可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络 - Google Patents
可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络 Download PDFInfo
- Publication number
- CN114096966A CN114096966A CN202080044037.8A CN202080044037A CN114096966A CN 114096966 A CN114096966 A CN 114096966A CN 202080044037 A CN202080044037 A CN 202080044037A CN 114096966 A CN114096966 A CN 114096966A
- Authority
- CN
- China
- Prior art keywords
- transaction
- user account
- event
- data structure
- account
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- 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
Abstract
本公开涉及用于实现可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络的系统、方法和非暂时性计算机可读存储介质。实际上,所公开的系统可以降低存储和处理要求,提高实现计算设备和底层数字资产的安全性,适应各种不同的数字程序(或“智能合约”),并进行扩展以适应数十亿用户和相关联的数字交易。例如,所公开的系统可以利用改进存储、账户/地址管理、数字交易执行、共识和同步过程的许多特征。所公开的系统还可以利用提高分布式数字分类账交易网络的效率和安全性的新编程语言。
Description
相关申请的交叉引用
本申请要求2019年6月15日提交的美国申请第16/442,470号、2019年6月15日提交的美国申请第16/442,472号、2019年6月15日提交的美国申请第16/442,473号、2019年6月15日提交的美国申请第16/442,474号、2019年6月15日提交的美国申请第16/442,475号和2019年6月15日提交的美国申请第16/442,476号的优先权。出于所有目的,美国申请第16/442,470号、美国申请第16/442,472号、美国申请第16/442,473号、美国申请第16/442,474号、美国申请第16/442,475号和美国申请第16/442,476号的内容通过引入以其整体并入本文。
背景
近年来,在用于跨计算设备的网络管理分布式分类账(ledger)数据库的硬件和软件平台方面取得了显著进步。实际上,所谓的“区块链(blockchain)”系统可以经由分布在世界各地的实体的网络且在没有中央实体的情况下管理共识(consensus)分类账,中央实体可能被破坏或以其他方式被操纵而削弱数字分类账的安全性和性能。具体地,传统区块链系统可以通过在许多复制的服务器或验证者节点(validator node)上维护数字分类账来去中心化(decentralize)控制。算法、密码学和激励机制使验证者节点的这样的网络能够维护交易或其他数字信息的集体的、防篡改的分类账。
然而,尽管有这些进步,但是传统区块链系统仍遭受削弱实现计算设备和相应分布式数据库的效率、可扩展性(scalability)、灵活性和安全性的几个技术缺陷。例如,对于跨实现网络进行交互的验证者节点和客户端设备,传统区块链系统常常需要相当多的处理和存储。如上面所提到的,许多传统区块链系统跨存储数字交易历史的复制的服务器来维护副本数据库。此外,许多传统区块链系统跨验证者节点顺序地分析交易以就交易达成共识,并最终更新分布式和重复的分类账。这种方法可能对计算设备提出过高的存储和处理需求。实际上,对某些处理设备的需求近年来与传统区块链系统在存储和分析跨分布式计算机网络的交易时所需的增加的计算需求成比例地暴涨。
传统区块链系统的低效率也阻碍了这些系统的可扩展性。例如,由传统区块链系统强加的处理和存储负担削弱了跨网络的交易吞吐量,且因此限制了传统系统可以管理的交易速率和交易数量。因此,传统区块链系统通常缺乏可扩展性来提供用于管理数字交易的全球分布式计算解决方案。实际上,迄今为止,传统区块链系统通常限于少数利基用户(niche user),将数十亿用户排除在访问和利用区块链技术之外。
除了效率和可扩展性顾虑以外,传统区块链系统也是僵化和不灵活的。例如,传统区块链系统提供关于不同的程序、交易、合约、资产和/或资源的有限选择,其可以经由分布式数据库被适应或执行。此外,传统区块链系统为在验证者节点处的存储提供有限控制、在验证者节点处执行交易方面提供有限灵活性以及在用于账户持有者和客户端设备的用户访问网络的认证密钥和验证方法上提供有限选择。
如上面所提到的,传统区块链系统也容易受到不准确性和/或数字安全攻击。例如,验证者节点组可以就不同版本的数字分类账达成一致,导致底层数字信息的不准确、硬分叉(hard-fork)和不安全。一些传统系统对交易区块执行共识,假设交易的执行是确定性的;因此,任何非确定性的执行行为可能导致在单独设备处的不准确结果(或跨数字分类账传播的不准确性)。此外,许多传统系统在响应于查询而提供交易细节时利用布隆过滤器,冒误报(false positives)的风险并且无法提供用反面证明(negative proofs)确认账户数据的准确性的能力。此外,传统区块链系统常常提供对存储数字资产的用户账户的无限制的数字资产访问,导致在与用户账户相关联的私钥丢失时所有资产暴露于恶意攻击。此外,由于许多传统系统在程序在机器代码级别被执行时对源代码执行引用安全分析,因此许多这样的系统不准确地识别引用安全问题和/或引入恶意攻击的载体。
关于传统区块链系统,存在这些以及额外的问题和争论点(issue)。
概述
本文描述的一个或更多个实施例利用用于实现可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络的系统、方法和非暂时性计算机可读存储介质来提供益处和/或解决本领域中的一个或更多个前述或其他问题。实际上,所公开的系统可以降低存储和处理要求,提高实现计算设备和底层数字资产的安全性,适应各种不同的数字程序(或“智能合约(smart contract)”),并进行扩展以适应数十亿用户和相关联的数字交易。
例如,所公开的系统可以通过将达成共识的区块链视为单一数据结构来使数据存储变得更加可扩展和高效,该单一数据结构记录交易和状态随着时间的推移的历史。这个实现简化了访问区块链的计算设备的工作,允许它们从任何时间点读取数据并使用统一的框架来验证完整性。类似地,为了在验证者节点之间达成一致,所公开的系统可以利用独特的拜占庭容错(Byzantine-fault-tolerant)共识协议。相对于其他区块链,这种方法提供了高交易吞吐量、低时延和计算上更高效的用于达成共识的方法。
此外,所公开的系统可以利用新的编程语言来在区块链上实现智能合约。特别地,这种新的编程语言使编写代码以满足用户意图变得本质上更容易,从而避免非故意的故障(bug)或安全事件(例如,防止资产克隆)。具体地,所公开的系统可以利用启用线性数据类型的编程语言,该线性数据类型将数字资产约束到物理资产的属性(例如,单个所有者,只可以消耗一次,对创建新资源的限制)。在一些实施例中,所公开的系统还利用具有树结构存储器模型的实现编程语言来改进引用安全分析。使用这种编程语言,所公开的系统可以在字节码级别实现静态-动态引用安全分析,这减少了恶意攻击的载体。
此外,所公开的系统提供了改进存储、账户/地址管理、数字交易执行、共识和同步过程的大量附加特征。例如,关于存储,所公开的系统可以实现灵活的存储删除和/或存储合并策略,其允许单独的计算机节点删除分布式数据结构,同时保留足够的分类账信息以跨分布式数字分类账交易网络准确地达成共识。所公开的系统还可以实现懒惰账户逐出策略(lazy account eviction policy),其允许基于个人偏好和/或在单独的计算设备处的计算机存储器或处理能力的可用性进行更灵活的存储管理。所公开的系统还可以利用独特的便笺式数据结构(scratch pad data structure),其在等待共识的同时灵活地跟踪数字分类账的变化。
类似地,所公开的系统可以提供关于在数字分类账上可访问的用户账户、地址和账户数据的各种改进。为了说明,所公开的系统可以利用重新加密的子地址来避免跨网络对账户活动的追踪。所公开的系统可以通过利用电子邮件地址(或其他用户标识符)以确定和加密对应于分布式分类账的主地址和子地址标识符来减少发起交易的障碍。此外,所公开的系统可以将智能合约代码与在用户账户内的智能合约数据分开,允许个人账户存储多个智能合约,将账户许可委托(delegate)给在数字分类账上的其他用户账户,以及将账户地址与加密密钥(cryptographic key)去耦合(允许账户灵活地轮换经认证的密钥以提高整个网络的安全性)。
此外,所公开的系统可以改进跨分布式数字分类账交易网络执行的数字交易。例如,所公开的系统可以使用任意交易脚本和可配置的智能合约以管理围绕交易执行的任务来在网络上实现交易。为了说明,在一些实施例中,所公开的系统可以利用可配置的智能合约来接受/拒绝交易、扣除gas支付款、使序列号递增以及将gas分配给计算机节点(以及当分布式数字分类账交易网络的需求随着时间的推移而改变时,通过共识来灵活地修改这些过程)。在一些实施例中,所公开的系统通过执行交易的推测性并行执行以减少执行交易区块所需的时间和计算开销、利用访问限制以减少由访问密钥的被盗或丢失而引起的数字资产的暴露以及使用交易事件计数器以准确地识别交易事件细节并执行反面证明,来进一步改进交易执行。
除了在数字交易执行方面的改进之外,所公开的系统还可以相对于传统系统改进共识过程。例如,所公开的系统可以通过对反映执行结果的状态数据结构执行共识(而不是对潜在地非确定性的交易执行共识)来提高准确性。所公开的系统还可以实现共识流水线规则以确保所提交的分类账准确地反映数字分类账的状态。在一些实施例中,所公开的系统进一步实现系统重启协议以维持网络的共识安全(例如,即使当所有节点经历关机时)。此外,所公开的系统可以通过经由智能合约管理投票权的时期(epoch)来有效地、灵活地和准确地控制参与共识的验证者节点。
除了前述改进之外,所公开的系统还可以改进跨分布式数字分类账交易网络的同步过程。例如,所公开的系统可以通过在与网络同步的各个计算机节点处实现增量的和并行的验证来提高跨分布式数字分类账交易网络的同步的效率。此外,在一些实施例中,所公开的系统利用路径点(waypoint)(例如,特定基本事实(ground-truth)参考状态的所公布的指示符)来便于计算机节点与网络的同步(例如,校正冲突的数字分类账状态、生成硬分叉或实现创世区块(genesis block))。
本发明涉及第一方法,该第一方法包括:生成分布式数字分类账交易网络的经认证数据结构,其中经认证数据结构包括数据树,该数据树包括具有映射到数据库中的条目的数据表示的节点;通过下列操作来执行从经认证数据结构中懒惰删除(lazy deletion)数据:从数据树的节点访问数据表示以确定与节点相关联的逐出日期的到期,以及响应于确定逐出日期的到期,从数据库中删除对应于该节点的一个或更多个条目,同时将数据表示保持在数据树内。
在根据本发明的第一方法的实施例中,该方法还可以包括从数据库中删除对应于该节点的一个或更多个条目而没有在分布式数字分类账交易网络上的用于删除一个或更多个条目的交易事件请求。
在根据本发明的第一方法的另一实施例中,该方法还可以包括:在从数据库中删除对应于该节点的一个或更多个条目之前,从客户端设备接收请求,该请求要求使用一个或更多个条目;响应于从客户端设备接收到该请求,从数据树的节点访问数据表示以确定逐出日期的到期;以及处理该请求,就好像一个或更多个条目已经被删除一样。
在根据本发明的第一方法的又一实施例中,数据库可以包括状态数据库,一个或更多个条目可以包括对应于用户账户的账户数据,数据树可以包括状态树,并且节点可以包括与用户账户的账户数据对应的账户状态表示。
在根据本发明的第一方法的另一实施例中,该方法还可以包括:响应于接收到引用用户账户的交易,从状态树访问对应于用户账户的账户状态表示以确定逐出日期的到期;以及处理该交易,就好像用户账户已经到期一样。
在根据本发明的第一方法的另一实施例中,该方法还可以包括:识别与用户账户相关联的账户恢复请求(account reinstatement request),其中该账户恢复请求包括用户账户的被提议的账户数据;以及基于在状态树内的账户状态表示来验证用户账户的被提议的账户数据。
在根据本发明的第一方法的又一实施例中,该方法还可以包括基于验证用户账户的被提议的账户数据,在分布式数字分类账交易网络的状态数据库内重新缓存与用户账户相关联的被提议的账户数据。
在根据本发明的第一方法的另一实施例中,该方法还可以包括基于重新缓存与用户账户相关联的被提议的账户数据,更新与节点相关联的逐出日期。
在根据本发明的第一方法的另一实施例中,该方法还可以包括通过下列操作来生成账户状态表示:将散列函数应用于状态数据库中的对应于用户账户的账户数据以生成对应于用户账户的账户数据的散列值;以及将账户数据的散列值与和用户账户相关联的逐出日期组合以生成对应于用户账户的账户状态表示。
在根据本发明的第一方法的又一实施例中,该方法还可以包括基于下列项中的至少一项来确定逐出日期的到期:租用存放金额、最后一次用户账户访问的时间、从用户账户转移数字资产的交易的时间或者将数字资产转移到用户账户的交易的时间。
本发明还涉及第一非暂时性计算机可读介质,其上存储有指令,指令在由至少一个处理器执行时使计算设备:生成分布式数字分类账交易网络的经认证数据结构,其中经认证数据结构包括数据树,该数据树包括具有映射到数据库中的条目的数据表示的节点;通过下列操作来执行从经认证数据结构中懒惰删除数据:从数据树的节点访问数据表示以确定与节点相关联的逐出日期的到期,以及响应于确定逐出日期的到期,从数据库中删除对应于该节点的一个或更多个条目,同时将数据表示保持在数据树内。
在根据本发明的第一非暂时性计算机可读介质的实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备从数据库中删除对应于节点的一个或更多个条目而没有在分布式数字分类账交易网络上的用于删除一个或更多个条目的交易事件请求。
在根据本发明的第一非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:在从数据库中删除对应于节点的一个或更多个条目之前:从客户端设备接收请求,该请求要求使用一个或更多个条目;响应于从客户端设备接收到该请求,从数据树的节点访问数据表示以确定逐出日期的到期;以及处理该请求,就好像一个或更多个条目已经被删除一样。。
在根据本发明的第一非暂时性计算机可读介质的实施例中,数据库可以包括状态数据库,一个或更多个条目可以包括对应于用户账户的账户数据,数据树可以包括状态树,并且节点可以包括与用户账户的账户数据对应的账户状态表示。
在根据本发明的第一非暂时性计算机可读介质的实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:识别与用户账户相关联的账户恢复请求,其中该账户恢复请求包括用户账户的被提议的账户数据;以及基于在状态树内的账户状态表示来验证用户账户的被提议的账户数据;基于验证用户账户的被提议的账户数据,在分布式数字分类账交易网络的状态数据库内重新缓存与用户账户相关联的被提议的账户数据;以及基于重新缓存与用户账户相关联的被提议的账户数据,更新与节点相关联的逐出日期。
在根据本发明的第一非暂时性计算机可读介质的实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备通过下列操作来生成账户状态表示:将散列函数应用于状态数据库中的对应于用户账户的账户数据以生成对应于用户账户的账户数据的散列值;以及将账户数据的散列值与和用户账户相关联的逐出日期组合以生成对应于用户账户的账户状态表示。
本发明还涉及第一系统,其包括:至少一个处理器;以及至少一个非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使该系统:生成分布式数字分类账交易网络的经认证数据结构,其中经认证数据结构包括数据树,该数据树包括具有映射到数据库中的条目的数据表示的节点;通过下列操作来执行从经认证数据结构中懒惰删除数据:从数据树的节点访问数据表示以确定与节点相关联的逐出日期的到期,以及响应于确定逐出日期的到期,从数据库中删除对应于该节点的一个或更多个条目,同时将数据表示保持在数据树内。
在根据本发明的第一系统的实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统从数据库中删除对应于节点的一个或更多个条目而没有在分布式数字分类账交易网络上的用于删除一个或更多个条目的交易事件请求。
在根据本发明的第一系统的另一实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统:在从数据库中删除对应于节点的一个或更多个条目之前:从客户端设备接收请求,该请求要求使用一个或更多个条目;响应于从客户端设备接收到该请求,从数据树的节点访问数据表示以确定逐出日期的到期;以及处理该请求,就好像一个或更多个条目已经被删除一样。
在根据本发明的第一系统的又一实施例中,数据库可以包括状态数据库,一个或更多个条目可以包括对应于用户账户的账户数据,数据树可以包括状态树,并且节点可以包括与用户账户的账户数据对应的账户状态表示;以及该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统:识别与用户账户相关联的账户恢复请求,其中该账户恢复请求包括用户账户的被提议的账户数据;以及基于在状态树内的账户状态表示来验证用户账户的被提议的账户数据;基于验证用户账户的被提议的账户数据,在分布式数字分类账交易网络的状态数据库内重新缓存与用户账户相关联的被提议的账户数据;以及基于重新缓存与用户账户相关联的被提议的账户数据,更新与节点相关联的逐出日期。
本发明涉及第二方法,其包括:通过下列操作生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求:识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥(public encryptionkey);以及通过将公开加密密钥应用于子地址标识符来生成对交易唯一的加密子地址;以及使用主公开地址标识符和对交易唯一的加密子地址来提交对在第一用户账户和第二用户账户之间的交易的请求,用于经由分布式数字分类账交易网络进行执行。
在根据本发明的第二方法的实施例中,生成对交易唯一的加密子地址可以包括:将随机数(nonce)值添加到子地址标识符;以及将公开加密密钥应用于具有随机数值的子地址标识符。
在根据本发明的第二方法的另一实施例中,识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥可以包括扫描对主公开地址标识符、子地址标识符和公开加密密钥编码的数字视觉代码。
在根据本发明的第二方法的实施例中,该方法还可以包括基于对应于第二用户账户的用户的电子邮件地址来识别主公开地址标识符、子地址标识符和公开加密密钥。
在根据本发明的第二方法的另一实施例中,识别主公开地址标识符、子地址标识符和公开加密密钥可以包括:从对应于第二用户账户的用户的电子邮件地址识别域名和个人电子邮件标识符;基于来自电子邮件地址的域名来确定主公开地址标识符;以及基于来自电子邮件地址的个人电子邮件标识符来确定子地址标识符。
在根据本发明的第二方法的又一实施例中,基于域名来确定主公开地址标识符可以包括访问对应于域名的DNS记录以识别下列项中的至少一项:主公开地址标识符或公开加密密钥。
在根据本发明的第二方法的另一实施例中,该方法还可以包括利用DNSSEC来验证通过访问对应于域名的DNS记录而识别的主公开地址标识符或公开加密密钥。
在根据本发明的第二方法的另一实施例中,生成加密子地址可以包括将通过访问DNS记录而确定的公开加密密钥应用于基于个人电子邮件标识符而确定的子地址标识符。
在根据本发明的第二方法的又一实施例中,识别主公开地址标识符、子地址标识符和公开加密密钥可以包括响应于将来自电子邮件地址的个人电子邮件标识符提供到对应于域名的远程服务器,从对应于域名的远程服务器接收公开加密密钥。
在根据本发明的第二方法的另一实施例中,该方法还可以包括基于下列项中的至少一项来识别主公开地址标识符、子地址标识符和公开加密密钥:对应于第二用户账户的用户的电话号码或该用户的用户ID。
本发明还涉及第二非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使计算设备:通过下列操作生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求:识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥;以及通过将公开加密密钥应用于子地址标识符来生成对交易唯一的加密子地址;以及使用主公开地址标识符和对交易唯一的加密子地址来提交对在第一用户账户和第二用户账户之间的交易的请求,用于经由分布式数字分类账交易网络进行执行。
在根据本发明的第二非暂时性计算机可读介质的实施例中,生成对交易唯一的加密子地址可以包括:
将随机数值添加到子地址标识符;以及将公开加密密钥应用于具有随机数值的子地址标识符。
在根据本发明的第二非暂时性计算机可读介质的实施例中,识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥可以包括扫描对主公开地址标识符、子地址标识符和公开加密密钥编码的数字视觉代码。
在根据本发明的第二非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备基于对应于第二用户账户的用户的电子邮件地址来识别主公开地址标识符、子地址标识符和公开加密密钥;并且其中,识别主公开地址标识符、子地址标识符和公开加密密钥可以包括:从对应于第二用户账户的用户的电子邮件地址识别域名和个人电子邮件标识符;基于来自电子邮件地址的域名来确定主公开地址标识符;以及基于来自电子邮件地址的个人电子邮件标识符来确定子地址标识符。
在根据本发明的第二非暂时性计算机可读介质的另一实施例中,基于域名来确定主公开地址标识符可以包括访问对应于域名的DNS记录以识别主公开地址标识符或公开加密密钥中的至少一个;并且生成加密子地址包括将通过访问DNS记录而确定的公开加密密钥应用于基于个人电子邮件标识符而确定的子地址标识符。
在根据本发明的第二非暂时性计算机可读介质的又一实施例中,识别主公开地址标识符、子地址标识符和公开加密密钥可以包括响应于将来自电子邮件地址的个人电子邮件标识符提供到对应于域名的远程服务器,从对应于域名的远程服务器接收公开加密密钥。
本发明还涉及第二系统,其包括:至少一个处理器;以及至少一个非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使该系统:通过下列操作生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求:识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥;以及通过将公开加密密钥应用于子地址标识符来生成对交易唯一的加密子地址;以及使用主公开地址标识符和对交易唯一的加密子地址来提交对在第一用户账户和第二用户账户之间的交易的请求,用于经由分布式数字分类账交易网络进行执行。
在根据本发明的第二系统的实施例中,识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥可以包括扫描对主公开地址标识符、子地址标识符和公开加密密钥编码的数字视觉代码。
在根据本发明的第二系统的另一实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统基于对应于第二用户账户的用户的电子邮件地址来识别主公开地址标识符、子地址标识符和公开加密密钥。
在根据本发明的第二系统的又一实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统基于对应于第二用户账户的用户的电子邮件地址来识别主公开地址标识符、子地址标识符和公开加密密钥;并且其中,识别主公开地址标识符、子地址标识符和公开加密密钥可以包括:从对应于第二用户账户的用户的电子邮件地址识别域名和个人电子邮件标识符;基于来自电子邮件地址的域名来确定主公开地址标识符;以及基于来自电子邮件地址的个人电子邮件标识符来确定子地址标识符。
本发明涉及第三方法,其包括:确定分布式数字分类账交易网络的第一状态数据结构,其中第一状态数据结构表示分布式数字分类账交易网络的多个用户账户的账户状态;识别包括与多个用户账户中的用户账户相关联的交易的多个交易;关于第一状态数据结构并行地执行交易的先予执行以确定多个交易结果和交易对于用户账户的依赖性;以及通过基于交易的依赖性应用多个交易结果来将第一状态数据结构修改为第二状态数据结构。
在根据本发明的第三方法的实施例中,第二状态数据结构可以等效于针对第一状态数据结构串行地执行多个交易。
在根据本发明的第三方法的另一实施例中,交易包括第一交易和第二交易,并且执行先予执行可以包括:确定反映第一交易关于第一状态数据结构的应用的第一交易结果;确定反映第二交易关于第一状态数据结构的应用的第二交易结果;以及确定第二交易不依赖于第一交易并且第一交易不依赖于第二交易。
在根据本发明的第三方法的又一实施例中,该方法还可以包括基于确定第二交易不依赖于第一交易并且第一交易不依赖于第二交易,关于第一状态数据结构应用第一交易结果和第二交易结果。
在根据本发明的第三方法的另一实施例中,该方法还可以包括通过将第一交易结果应用于第一状态数据结构来生成中间状态数据结构。
在根据本发明的第三方法的另一实施例中,交易可以包括第三交易,并且执行先予执行包括:确定反映第三交易关于第一状态数据结构的应用的第三交易结果;以及确定第三交易依赖于第一交易。
在根据本发明的第三方法的又一实施例中,该方法还可以包括响应于确定第三交易依赖于第一交易,针对中间状态数据结构执行第三交易以生成第二状态数据结构。
在根据本发明的第三方法的另一实施例中,确定第三交易依赖于第一交易包括确定第三交易和第一交易与来自用户账户中的同一用户账户相关联。
在根据本发明的第三方法的又一实施例中,该方法还可以包括:从验证者节点接收多个交易的依赖性指示符;以及基于依赖性指示符识别多个交易中的第一子集和多个交易中的第二子集,并且其中执行交易的先予执行包括基于依赖性指示符执行多个交易中的第一子集的先予执行。
在根据本发明的第三方法的另一实施例中,该方法还可以包括:基于从执行多个交易中的第一子集的先予执行获得的交易结果来生成中间状态数据结构;以及通过关于中间状态数据结构执行多个交易中的第二子集来生成第二状态数据结构。
本发明还涉及第三非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使计算设备:确定分布式数字分类账交易网络的第一状态数据结构,其中第一状态数据结构表示分布式数字分类账交易网络的多个用户账户的账户状态;识别包括与多个用户账户中的用户账户相关联的交易的多个交易;关于第一状态数据结构并行地执行交易的先予执行以确定多个交易结果和交易对于用户账户的依赖性;以及通过基于交易的依赖性应用多个交易结果来将第一状态数据结构修改为第二状态数据结构。
在根据本发明的第三非暂时性计算机可读介质的实施例中,第二状态数据结构可以等效于针对第一状态数据结构串行地执行多个交易。
在根据本发明的第三非暂时性计算机可读介质的实施例中:交易可以包括第一交易和第二交易;以及指令在由至少一个处理器执行时使计算设备通过下列操作来执行先予执行:确定反映第一交易关于第一状态数据结构的应用的第一交易结果;确定反映第二交易关于第一状态数据结构的应用的第二交易结果;以及确定第二交易不依赖于第一交易并且第一交易不依赖于第二交易。
在根据本发明的第三非暂时性计算机可读介质的实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时可以使计算设备基于确定第二交易不依赖于第一交易并且第一交易不依赖于第二交易,关于第一状态数据结构应用第一交易结果和第二交易结果。
在根据本发明的第三非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备通过将第一交易结果应用于第一状态数据结构来生成中间状态数据结构。
在根据本发明的第三非暂时性计算机可读介质的又一实施例中,交易可以包括第三交易;以及指令在由至少一个处理器执行时可以使计算设备通过下列操作来执行先予执行:确定反映第三交易关于第一状态数据结构的应用的第三交易结果;以及确定第三交易依赖于第一交易。
本发明还涉及第三系统,其包括:至少一个处理器;以及至少一个非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使该系统:确定分布式数字分类账交易网络的第一状态数据结构,其中第一状态数据结构表示分布式数字分类账交易网络的多个用户账户的账户状态;识别包括与多个用户账户中的用户账户相关联的交易的多个交易;关于第一状态数据结构并行地执行交易的先予执行以确定多个交易结果和交易对于用户账户的依赖性;以及通过基于交易的依赖性应用多个交易结果来将第一状态数据结构修改为第二状态数据结构。
在根据本发明的第三系统的实施例中,第二状态数据结构可以等效于针对第一状态数据结构串行地执行多个交易。
在根据本发明的第三系统的实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统:从验证者节点接收多个交易的依赖性指示符;以及基于依赖性指示符识别多个交易中的第一子集和多个交易中的第二子集,并且其中指令在由至少一个处理器执行时可以使计算设备通过基于依赖性指示符执行多个交易中的第一子集的先予执行来执行交易的先予执行。
在根据本发明的第三系统的另一实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统:基于从执行多个交易中的第一子集的先予执行获得的交易结果来生成中间状态数据结构;以及通过关于中间状态数据结构执行多个交易中的第二子集来生成第二状态数据结构。
本发明还涉及第四方法,其包括:生成分布式数字分类账交易网络的状态数据结构,其中状态数据结构包括对应于用户账户的账户数据、对应于用户账户的交易事件计数器以及用户账户在状态数据结构内的地址;响应于执行包括与分布式数字分类账交易网络的用户账户对应的事件的交易:修改在状态数据结构内的用户账户的交易事件计数器的计数值;以及在事件数据结构内生成交易事件,事件数据结构内的交易事件反映地址、用户账户的交易事件计数器的计数值以及事件的细节。
在根据本发明的第四方法的实施例中,状态数据结构可以包括对应于用户账户的附加交易事件计数器,交易事件计数器可以对应于第一交易事件类型,并且附加交易事件计数器可以对应于第二交易事件类型。
在根据本发明的第四方法的另一实施例中,修改用户账户的交易事件计数器的计数值可以包括:确定交易事件对应于第一交易事件类型;以及基于确定交易事件对应于第一交易事件类型,修改交易事件计数器的计数值。
在根据本发明的第四方法的又一实施例中,交易可以包括第二交易事件类型的附加事件,并且该方法还可以包括:修改在状态数据结构内的用户账户的附加交易事件计数器的附加计数值;以及在事件数据结构内生成附加交易事件,事件数据结构内的附加交易事件反映地址、用户账户的附加交易事件计数器的附加计数值以及附加事件的细节。
在根据本发明的第四方法的另一实施例中,事件数据结构可以包括反映响应于交易的执行而生成的交易事件的事件树。
在根据本发明的第四方法的另一实施例中,该方法还可以包括:确定反映对应于交易的交易事件的事件树的根值;以及将事件树的根值存储在分布式数字分类账交易网络的交易树中。
在根据本发明的第四方法的又一实施例中,该方法还可以包括:从客户端设备接收事件计数请求,事件计数请求包括对交易事件计数器的引用;以及响应于从客户端设备接收到事件计数请求,将来自状态数据结构的交易事件计数器的已修改的计数值提供到客户端设备。
在根据本发明的第四方法的另一实施例中,对交易事件计数器的引用可以包括反映地址和交易事件计数器两者的访问路径。
在根据本发明的第四方法的另一实施例中,该方法还可以包括:从客户端设备接收交易事件细节请求,该交易事件细节请求包括交易事件计数器的计数值和包括地址和交易事件计数器的访问路径;以及响应于接收到交易事件细节请求,将来自事件数据结构的事件的细节连同对应于交易事件的Merkle证明一起提供到客户端设备。
本发明还涉及第四非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使计算设备:生成分布式数字分类账交易网络的状态数据结构,其中状态数据结构包括对应于用户账户的账户数据、对应于用户账户的交易事件计数器以及用户账户在状态数据结构内的地址;响应于执行包括与分布式数字分类账交易网络的用户账户对应的事件的交易:修改在状态数据结构内的用户账户的交易事件计数器的计数值;以及在事件数据结构内生成交易事件,事件数据结构内的交易事件反映地址、用户账户的交易事件计数器的计数值以及事件的细节。
在根据本发明的第四非暂时性计算机可读介质的实施例中,状态数据结构可以包括对应于用户账户的附加交易事件计数器,交易事件计数器可以对应于第一交易事件类型,并且附加交易事件计数器可以对应于第二交易事件类型。
在根据本发明的第四非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备通过下列操作修改用户账户的交易事件计数器的计数值:确定交易事件对应于第一交易事件类型;以及基于确定交易事件对应于第一交易事件类型,修改交易事件计数器的计数值。
在根据本发明的第四非暂时性计算机可读介质的又一实施例中,交易可以包括第二交易事件类型的附加事件,并且该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:修改在状态数据结构内的用户账户的附加交易事件计数器的附加计数值;以及在事件数据结构内生成附加交易事件,事件数据结构内的附加交易事件反映地址、用户账户的附加交易事件计数器的附加计数值以及附加事件的细节。
在根据本发明的第四非暂时性计算机可读介质的另一实施例中,事件数据结构可以包括反映响应于交易的执行而生成的交易事件的事件树,并且该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:确定反映对应于交易的交易事件的事件树的根值;以及将事件树的根值存储在分布式数字分类账交易网络的交易树中。
在根据本发明的第四非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时可以使计算设备:从客户端设备接收事件计数请求,事件计数请求包括对交易事件计数器的引用;以及响应于从客户端设备接收到事件计数请求,将来自状态数据结构的交易事件计数器的已修改的计数值提供到客户端设备。
在根据本发明的第四非暂时性计算机可读介质的又一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:从客户端设备接收交易事件细节请求,该交易事件细节请求包括交易事件计数器的计数值和包括地址和交易事件计数器的访问路径;以及响应于接收到交易事件细节请求,将来自事件数据结构的事件的细节连同对应于交易事件的Merkle证明一起提供到客户端设备。
本发明还涉及第四系统,其包括:至少一个处理器;以及至少一个暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使该系统:生成分布式数字分类账交易网络的状态数据结构,其中状态数据结构包括对应于用户账户的账户数据、对应于用户账户的交易事件计数器以及用户账户在状态数据结构内的地址;响应于执行包括与分布式数字分类账交易网络的用户账户对应的事件的交易:修改在状态数据结构内的用户账户的交易事件计数器的计数值;以及在事件数据结构内生成交易事件,事件数据结构内的交易事件反映地址、用户账户的交易事件计数器的计数值以及事件的细节。
在根据本发明的第四系统的实施例中,状态数据结构可以包括对应于用户账户的附加交易事件计数器,交易事件计数器可以对应于第一交易事件类型,并且附加交易事件计数器可以对应于第二交易事件类型;并且其中,指令在由至少一个处理器执行时使该系统通过下列操作修改用户账户的交易事件计数器的计数值:确定交易事件对应于第一交易事件类型;以及基于确定交易事件对应于第一交易事件类型,修改交易事件计数器的计数值。
在根据本发明的第四系统的另一实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统:从客户端设备接收事件计数请求,事件计数请求包括对交易事件计数器的引用;以及响应于从客户端设备接收到事件计数请求,将来自状态数据结构的交易事件计数器的已修改的计数值提供到客户端设备。
在根据本发明的第一系统的又一实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统:从客户端设备接收交易事件细节请求,该交易事件细节请求包括交易事件计数器的计数值和包括地址和交易事件计数器的访问路径;以及响应于接收到交易事件细节请求,将来自事件数据结构的事件的细节连同对应于交易事件的Merkle证明一起提供到客户端设备。
本发明还涉及第五方法,其包括:监控与存储在分布式数字分类账交易网络的计算机节点处的状态数据结构的用户账户对应的交易事件计数器;传输对来自存储在分布式数字分类账交易网络的一个或更多个计算机节点处的事件数据结构中的交易事件数据的交易事件细节请求;以及响应于传输交易事件细节请求,经由一个或更多个计算机节点接收与从交易事件计数器确定的计数值对应的交易事件数据。
在根据本发明的第五方法的实施例中,该方法还可以包括基于监控交易事件计数器来确定交易事件计数器的计数值,并且其中,交易事件细节请求包括交易事件计数器的计数值和与状态数据结构内的用户账户对应的交易事件计数器的访问路径。
在根据本发明的第五方法的另一实施例中,监控交易事件计数器可以包括在计算机节点处轮询交易事件计数器,并且该方法还可以包括:在第一时间确定交易事件计数器的计数值;以及在第二时间确定交易事件计数器的附加计数值。
在根据本发明的第五方法的又一实施例中,该方法还可以包括通过确定交易事件计数器在第一时间的计数值和交易事件计数器在第二时间的附加计数值是相同的计数值,验证在第一时间和第二时间之间不存在对应于用户账户的事件。
在根据本发明的第五方法的另一实施例中,该方法还可以包括基于比较交易事件计数器在第一时间的计数值和交易事件计数器在第二时间的附加计数值,确定指示经由分布式数字分类账交易网络已经发生了对应于用户账户的事件序列的计数值序列。
在根据本发明的第五方法的另一实施例中:传输交易事件细节请求可以包括传输对事件序列的交易事件序列请求;以及接收交易事件数据可以包括接收对应于多个事件的交易事件数据集合。
在根据本发明的第五方法的又一实施例中,该方法还可以包括:将对应于多个事件的交易事件数据集合与计数值序列进行比较以确定:多个事件是事件序列的完整集合;或者多个事件集合是事件序列的不完整集合。
在根据本发明的第五方法的另一实施例中,事件数据结构可以包括事件Merkle树,并且状态数据结构可以包括状态Merkle树;并且接收交易事件数据可以包括响应于传输交易事件细节请求,从分布式数字分类账交易网络的计算机节点接收Merkle证明。
在根据本发明的第五方法的另一实施例中,监控交易事件计数器和传输交易事件细节请求可以是到计算机节点的组合请求的一部分。
本发明还涉及第五非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使计算设备:监控与存储在分布式数字分类账交易网络的计算机节点处的状态数据结构的用户账户对应的交易事件计数器;传输对来自存储在分布式数字分类账交易网络的一个或更多个计算机节点处的事件数据结构中的交易事件数据的交易事件细节请求;以及响应于传输交易事件细节请求,经由一个或更多个计算机节点接收与从交易事件计数器确定的计数值对应的交易事件数据。
在根据本发明的第五非暂时性计算机可读介质的实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时可以使计算设备确定交易事件计数器的计数值,并且其中,交易事件细节请求可以包括交易事件计数器的计数值和与状态数据结构内的用户账户对应的交易事件计数器的访问路径。
在根据本发明的第五非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时可以使计算设备通过在计算机节点处轮询交易事件计数器来监控交易事件计数器,并且该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:在第一时间确定交易事件计数器的计数值;以及在第二时间确定交易事件计数器的附加计数值。
在根据本发明的第五非暂时性计算机可读介质的又一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备通过确定交易事件计数器在第一时间的计数值和交易事件计数器在第二时间的附加计数值是相同的计数值,验证在第一时间和第二时间之间不存在对应于用户账户的事件。
在根据本发明的第五非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备基于比较交易事件计数器在第一时间的计数值和交易事件计数器在第二时间的附加计数值,确定指示经由分布式数字分类账交易网络已经发生了对应于用户账户的事件序列的计数值序列。
在根据本发明的第五非暂时性计算机可读介质的实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:通过传输对事件序列的交易事件序列请求来传输交易事件细节请求;以及通过接收对应于多个事件的交易事件数据集合来接收交易事件数据;并且该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备将对应于多个事件的交易事件数据集合与计数值序列进行比较以确定:多个事件是事件序列的完整集合;或者多个事件集合是事件序列的不完整集合。
在根据本发明的第五非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备监控交易事件计数器和传输交易事件细节请求,作为到计算机节点的组合请求的一部分。
本发明还涉及第五系统,其包括:至少一个处理器;以及至少一个非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使系统:监控与存储在分布式数字分类账交易网络的计算机节点处的状态数据结构的用户账户对应的交易事件计数器;传输对来自存储在分布式数字分类账交易网络的一个或更多个计算机节点处的事件数据结构中的交易事件数据的交易事件细节请求;以及响应于传输交易事件细节请求,经由一个或更多个计算机节点接收与从交易事件计数器确定的计数值对应的交易事件数据。
在根据本发明的第五系统的实施例中,该系统还可以包括指令,该指令在由至少一个处理器执行时使该系统确定交易事件计数器的计数值,并且其中,交易事件细节请求包括交易事件计数器的计数值和与状态数据结构内的用户账户对应的交易事件计数器的访问路径。
在根据本发明的第一系统的另一实施例中,指令在由至少一个处理器执行时使系统通过在计算机节点处轮询交易事件计数器来监控交易事件计数器,并且该系统还可以包括指令,该指令在由至少一个处理器执行时使计算设备:在第一时间确定交易事件计数器的计数值;以及在第二时间确定交易事件计数器的附加计数值。
在根据本发明的第一系统的又一实施例中,事件数据结构可以包括事件Merkle树,并且状态数据结构可以包括状态Merkle树;并且指令在由至少一个处理器执行时使该系统通过响应于传输交易事件细节请求而从分布式数字分类账交易网络的计算机节点接收Merkle证明来接收交易事件数据。
本发明还涉及第六方法,其包括:识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求;在对该交易的请求内确定数字资产的线性数据类型;以及通过在对应于线性数据类型的线性分型规则的规限下将数字资产从状态数据结构上的第一用户账户转移到第二用户账户来执行利用线性数据类型的该交易。
在根据本发明的第六方法的实施例中,线性分型规则可以是用于控制分布式数字分类账交易网络的状态数据结构的修改的编程语言的一部分。
在根据本发明的第六方法的另一实施例中,线性分型规则可以包括在交易中利用线性数据类型确切地一次的第一线性分型规则。
在根据本发明的第六方法的又一实施例中,线性分型规则包括反对复制线性数据类型的第二线性分型规则。
在根据本发明的第六方法的实施例中,该方法还可以包括:识别对经由分布式数字分类账交易网络转移由线性数据类型表示的附加数字资产的附加交易的附加请求;确定对该附加交易的附加请求利用由线性数据类型表示的附加数字资产多于一次;以及基于确定对该附加交易的附加请求的线性数据类型违反来自线性分型规则中的第一线性分型规则,拒绝对该附加交易的附加请求。
在根据本发明的第六方法的另一实施例中,该方法还可以包括:识别对经由分布式数字分类账交易网络从第一用户账户转移附加数字资产的附加交易的附加请求,其中对该附加交易的附加请求未能识别接收方用户账户;以及由于违反了来自线性分型规则中的第一线性分型规则而拒绝对该附加交易的附加请求。
在根据本发明的第六方法的另一实施例中,数字资产的线性数据类型按照编程语言和线性分型规则是可分割和可合并的。
在根据本发明的第六方法的又一实施例中,数字资产包括保持在分布式数字分类账交易网络的状态数据结构内的数字货币(digital currency)。
本发明还涉及第六非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使计算设备:识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求;在对该交易的请求内确定数字资产的线性数据类型;以及通过在对应于线性数据类型的线性分型规则的规限下将数字资产从状态数据结构上的第一用户账户转移到第二用户账户来执行利用线性数据类型的该交易。
在第六非暂时性计算机可读介质的实施例中,线性分型规则可以是用于控制分布式数字分类账交易网络的状态数据结构的修改的编程语言的一部分。
在第六非暂时性计算机可读介质的另一实施例中,线性分型规则可以包括在交易中利用线性数据类型确切地一次的第一线性分型规则。
在第六非暂时性计算机可读介质的又一实施例中,线性分型规则包括反对复制线性数据类型的第二线性分型规则。
在第六非暂时性计算机可读介质的另一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:识别对经由分布式数字分类账交易网络转移由线性数据类型表示的附加数字资产的附加交易的附加请求;确定对该附加交易的附加请求利用由线性数据类型表示的附加数字资产多于一次;以及基于确定对该附加交易的附加请求的线性数据类型违反了来自线性分型规则中的第一线性分型规则,拒绝对该附加交易的附加请求。
在第六非暂时性计算机可读介质的又一实施例中,该非暂时性计算机可读介质还可以包括指令,该指令在由至少一个处理器执行时使计算设备:识别对经由分布式数字分类账交易网络从第一用户账户转移附加数字资产的附加交易的附加请求,其中对该附加交易的附加请求未能识别接收方用户账户;以及由于违反了来自线性分型规则中的第一线性分型规则而拒绝对该附加交易的附加请求。
在第六非暂时性计算机可读介质的另一实施例中,数字资产的线性数据类型按照编程语言和线性分型规则是可分割和可合并的。
在第六非暂时性计算机可读介质的另一实施例中,数字资产包括保持在分布式数字分类账交易网络的状态数据结构内的数字货币。
本发明还涉及第六系统,其包括:至少一个处理器;以及至少一个非暂时性计算机可读介质,其上存储有指令,该指令在由至少一个处理器执行时使该系统:识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求;在对该交易的请求内确定数字资产的线性数据类型;以及通过在对应于线性数据类型的线性分型规则的规限下将数字资产从状态数据结构上的第一用户账户转移到第二用户账户来执行利用线性数据类型的该交易。
在根据本发明的第六系统的实施例中,线性分型规则可以是用于控制分布式数字分类账交易网络的状态数据结构的修改的编程语言的一部分;并且数字资产的线性数据类型按照编程语言和线性分型规则是可分割和可合并的。
在根据本发明的第六系统的另一实施例中,线性分型规则可以包括:在交易中利用线性数据类型确切地一次的第一线性分型规则;以及反对复制线性数据类型的第二线性分型规则。
在根据本发明的第六系统的又一实施例中,数字资产可以包括保持在分布式数字分类账交易网络的状态数据结构内的数字货币。
总之,所公开的系统可以实现具有高交易吞吐量、低时延和高效的高容量存储系统的分布式数字分类账交易网络。此外,所公开的系统可以安全地管理各种各样的数字资产,灵活地适应各种不同的可定制程序和智能合约,并且可以扩展从而为跨全球的用户执行和管理数字交易。
附图简述
本公开将通过参考附图以附加的特性和细节描述本发明的一个或更多个实施例。下面的段落简要描述了这些图,其中:
图1示出了根据一个或更多个实施例的分类账交易系统可以在其中操作的示例分布式数字分类账交易网络;
图2示出了根据一个或更多个实施例的在处理、执行和提交交易时使用的验证者节点设备的部件的示意图;
图3示出了根据一个或更多个实施例的由分类账交易系统生成和维护的状态数据结构;
图4示出了根据一个或更多个实施例的由分类账交易系统生成和维护的事件数据结构;
图5示出了根据一个或更多个实施例的由分类账交易系统生成和维护的交易数据结构;
图6示出了根据一个或更多个实施例的用于获得共识的分类账信息的表示;
图7示出了根据一个或更多个实施例的删除存储在计算机节点处的交易树的一部分的分类账交易系统;
图8示出了根据一个或更多个实施例的删除或合并存储在计算机节点处的状态树的部分的分类账交易系统;
图9示出了根据一个或更多个实施例的在具有反映多个不同的状态树的状态树部件(state tree component)的情况下删除状态树的部分的分类账交易系统;
图10示出了根据一个或更多个实施例的执行账户逐出的分类账交易系统;
图11示出了根据一个或更多个实施例的分类账交易系统重新缓存对应于用户账户的账户数据的框图;
图12示出了根据一个或更多个实施例的来自状态数据结构的状态树,该状态树表示分布式数字分类账交易网络的当前被提交状态;
图13示出了根据一个或更多个实施例的由分类账交易系统识别的交易区块的框图;
图14A-图14B示出了根据一个或更多个实施例的利用便笺式数据结构来跟踪执行结果的分类账交易系统;
图15示出了根据一个或更多个实施例的对应于分布式数字分类账交易网络的用户账户的地址的示意图;
图16示出了根据一个或更多个实施例的从数字视觉代码识别用户账户的主公开地址标识符和子地址标识符的分类账交易系统的框图;
图17示出了根据一个或更多个实施例的从数字视觉代码识别与用户账户相关联的主公开地址标识符、子地址标识符和加密密钥的分类账交易系统的框图;
图18示出了根据一个或更多个实施例的基于电子邮件地址来识别用户账户的主公开地址标识符、子地址标识符和加密密钥的分类账交易系统的框图;
图19示出了根据一个或更多个实施例的存储模块和资源的用户账户的示意图;
图20示出了根据一个或更多个实施例的在用户账户之间转移许可资源的分类账交易系统的框图;
图21示出了根据一个或更多个实施例的轮换用户账户的认证密钥的分类账交易系统的框图;
图22示出了根据一个或更多个实施例的向分布式数字分类账交易网络提交交易的框图;
图23示出了根据一个或更多个实施例的存储在分布式数字分类账交易网络上的模块和相应资源;
图24示出了根据一个或更多个实施例的利用智能合约来对接收到的交易请求执行一系列检查的分类账交易系统的框图;
图25示出了根据一个或更多个实施例的利用智能合约来进行执行收尾任务(execution epilogue tasks)的分类账交易系统的框图;
图26示出了根据一个或更多个实施例的利用智能合约来分发gas支付款的分类账交易系统的框图;
图27示出了根据一个或更多个实施例的并行地执行交易的分类账交易系统的框图;
图28示出了根据一个或更多个实施例的基于所确定的依赖性来执行交易的分类账交易系统的框图;
图29示出了根据一个或更多个实施例的对存储在用户账户处的数字资产实现访问限制的分类账交易系统;
图30A-图30B示出了根据一个或更多个实施例的生成交易事件的分类账交易系统的框图;
图31示出了根据一个或更多个实施例的用于确定对应于用户账户的新交易事件的一系列行动;
图32示出了根据一个或更多个实施例的用于检索事件序列的事件细节的框图;
图33示出了根据一个或更多个实施例的利用验证者节点设备来达成共识的分类账交易系统的框图;
图34示出了根据一个或更多个实施例的对执行结果执行共识的分类账交易系统的框图;
图35示出了根据一个或更多个实施例的利用流水线化(pipelining)来获得共识的分类账交易系统的框图;
图36示出了根据一个或更多个实施例的利用共识状态来在系统重启的情况下提供共识安全的框图;
图37示出了根据一个或更多个实施例的改变验证者节点设备集合的分类账交易系统的图示;
图38示出了根据一个或更多个实施例的利用增量验证来将数据段(segments ofdata)下载到计算机节点的分类账交易系统的框图;
图39示出了根据一个或更多个实施例的并行地下载和验证数据的分类账交易系统的框图;
图40示出了根据一个或更多个实施例的数字分类账的时间线和相关联的路径点;
图41示出了根据一个或更多个实施例的利用与FTVM交易相关联的路径点的分类账交易系统的框图;
图42示出了根据一个或更多个实施例的实现对应于线性数据类型的线性分型规则(linear typing rules)的分类账交易系统的框图;
图43示出了根据一个或更多个实施例的用于执行组合的静态和动态分析以确保引用安全的框图;
图44示出了根据一个或更多个实施例的用于执行账户逐出的一系列行动的流程图;
图45示出了根据一个或更多个实施例的用于生成对交易独特的加密子地址的一系列行动的流程图;
图46示出了根据一个或更多个实施例的用于执行交易的并行执行的一系列行动的流程图;
图47示出了根据一个或更多个实施例的用于生成交易事件的一系列行动的流程图;
图48示出了根据一个或更多个实施例的用于接收交易事件数据的一系列行动的流程图;
图49示出了根据一个或更多个实施例的用于利用受限于线性分型规则的线性数据类型来执行交易的一系列行动的流程图;以及
图50示出了根据一个或更多个实施例的示例性计算设备的框图。
详细描述
本文描述的一个或更多个实施例包括用于实现可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络的分类账交易系统。例如,分类账交易系统可以管理可编程数据库以支持在世界各地可访问的低波动性数字资产(例如数字加密货币)。为了说明,分类账交易系统可以被实现为去中心化网络的一部分,其中验证者节点设备的集合共同维护可编程资源(例如数字资产)的数据库。分类账交易系统可以利用将这些数据库的逻辑数据模型映射到树结构(例如Merkle树)的集合的经认证数据结构。然后,分类账交易系统可以利用验证者节点设备来执行交易,并经由共识进行通信以就经认证数据结构的状态达成一致。特别地,分类账交易系统可以利用独特的拜占庭容错共识协议,其允许网络(甚至在有潜在地恶意的验证者的情况下)通过经由新的编程语言执行交易并使用经认证数据结构就它们的执行达成一致来随着时间的推移维护一致的数据库。
如上面所提到的,相对于传统区块链系统,分类账交易系统可以提供多种改进。例如,在一个或更多个实施例中,分类账交易系统利用提高安全性、效率和灵活性的新编程语言。特别地,分类账交易系统可以利用一种编程语言,该编程语言经由任意交易脚本实现灵活的交易,并经由模块允许用户定义的代码和数据类型(包括“智能合约”)。
具体地,编程语言提供了定义强制执行线性的自定义资源类型的能力。例如,分类账交易系统可以利用线性数据类型来表示与分布式数字分类账交易网络相关联的数字资产。通过将数字资产表示为线性数据类型,分类账交易系统使数字资产受限于线性分型规则。例如,被表示为线性数据类型的数字资产必须在交易内被使用确切地一次,并且不能被复制。通过将数字资产表示为线性数据类型,分类账交易系统提供了数字资产的更灵活和更安全的管理。
在一些实施例中,分类账交易系统使用可验证的字节码语言作为该编程语言的可执行表示。这允许分类账交易系统对分布式数字分类账交易网络上被提交用于执行的交易脚本和模块使用组合的静态-动态引用安全分析。实际上,分类账交易系统可以(在结构化存储器树模型上)使用加载时(load-time)字节码验证来在字节码级别静态地执行大部分引用安全分析,并在运行时(runtime)动态地执行该分析的剩余部分。这种方法提高了安全性,并减少了恶意攻击(例如,试图利用或绕过编译器的攻击)的载体。与更高级别的源语言相比,这种方法还导致更少的指令,减小了总体占用区(footprint),并且使发现和避免实现错误变得更容易。
除了关于实现编程语言的改进之外,分类账交易系统还可以改进跨分布式数字分类账交易网络的各种其他过程。例如,分类账交易系统可以改进存储、寻址和账户管理、交易执行、共识和同步过程。例如,关于存储,分类账交易系统可以实现各种特征以提高跨分布式数字分类账交易网络维护的数据结构的效率、灵活性和安全性。
为了说明,如上面所提到的,分类账交易系统可以维护存储数字分类账的数据的多个经认证数据结构。特别地,经认证数据结构可以包括具有映射到在版本化数据库中的条目的节点的树数据结构(例如稀疏Merkle树或Merkle累加器)。例如,经认证数据结构可以包括状态数据结构(例如,映射到反映用户账户状态的状态数据库的状态树)、事件数据结构(例如,映射到特定交易的事件数据的事件树)和交易数据结构(例如,反映交易连同由交易产生的状态和事件的交易树)。通过利用经认证树数据结构,分类账交易系统可以有效地对在存储可编程资源的数据库中反映的当前和历史状态、事件和/或交易进行编码。例如,分类账交易系统可以利用交易树结构,其中交易状态树的根值提供在对应的数据库中记录的当前和历史状态、事件和交易的唯一表示。此外,分类账交易系统可以参考该根值,跨分布式数字分类账交易网络有效地获得共识。
此外,在一些实施例中,分类账交易系统实现存储删除规则集和/或存储合并规则集以管理分布式数字分类账交易网络的计算机节点的存储。例如,分类账交易系统可以应用可配置的存储删除规则,其允许不同的计算机节点识别要维护数据结构的什么(或什么部分)。此外,分类账交易系统可以自动移除数据结构的部分以降低存储和处理需求。例如,分类账交易系统可以在识别出子树包括全(例如,已填充的)叶节点时删除经认证树结构的子树。类似地,分类账交易系统可以通过重新使用先前版本的未改变部分来存储数据结构的多个不同版本。特别地,分类账交易系统可以生成子树部件(仅反映经修改的节点)连同指示在历史树结构内的未改变节点的指针。因此,分类账交易系统可以有效地且灵活地管理分布式数字分类账交易网络上的存储。
在一些实施例中,分类账交易系统还可以通过执行懒惰账户逐出来改进存储。特别地,分类账交易系统可以在计算机节点处基于用户偏好和/或在该计算机节点处可用的计算资源来删除与过期用户账户相关联的账户数据。例如,分类账交易系统可以在计算机节点处删除过期账户数据而不在分布式数字分类账交易网络上执行交易。此外,通过在经认证数据结构中嵌入逐出日期,分类账交易系统可以跨分布式数字分类账交易网络保持对数据的一致查询响应(甚至同时为每个客户端设备提供在它的空闲时间删除过期数据的灵活性)。此外,在一个或更多个实施例中,分类账交易系统可以基于保留在经认证数据结构中的数据表示来安全地重新缓存被逐出的账户。以这种方式,分类账交易可以安全和灵活地删除在计算机节点处的存储,以实现更高效的存储管理。
此外,分类账交易系统的一个或更多个实施例通过利用便笺式数据结构以在将执行结果提交到存储之前跟踪执行结果来改进存储过程。特别地,分类账交易系统可以利用便笺式数据结构来临时存储冲突的交易区块的执行结果以及这些执行结果如何影响在分布式分类账上维护的用户账户的状态。分类账交易系统然后可以基于共识协议来提交存储在便笺式数据结构中的执行结果。因此,分类账交易系统可以灵活地执行冲突的交易区块以确保计算机节点准确地反映共识数字分类账。
除了在存储方面的改进之外,如上面所提到的,分类账交易系统还可以改进在分布式数字分类账交易网络内的地址和/或账户的管理。例如,在一些实施例中,分类账交易系统生成对特定交易独特的加密子地址,以便安全地保护子地址不被外部实体识别。例如,分类账交易系统可以使用与用户账户相关联的公开加密密钥来加密与用户账户相关联的子地址。在一个或更多个实施例中,分类账交易系统利用公共文档(例如告示牌(billboard))、数字视觉代码、电子邮件地址(和/或DNS记录)、电话号码或用户ID来识别账户寻址信息和/或公开加密密钥。以这种方式,分类账交易系统可以灵活地发起和执行交易,而不会在数字分类账上留下链接到子地址的可追踪信息。
此外,在一个或更多个实施例中,分类账交易系统可以将智能合约代码与在用户账户内的智能合约数据分开(与使用类似单例的(singleton-like)对象来执行智能合约的传统系统相反)。分类账交易系统可以利用模块(智能合约代码)来定义由相应用户账户拥有的资源(智能合约数据/值)的属性,其中该模块定义了可以用于修改、创建、删除资源或以其他方式与资源交互的过程。分类账交易系统可以利用该模块来生成共享相同属性并由同一组过程支配的一个或更多个资源。此外(与通常存储关于账户的单个智能合约的传统系统相反),分类账交易系统可以实现用于在单个用户账户地址下存储多个模块和/或资源的寻址方案。
分类账交易系统可以通过存储和转移各种数字资产来进一步改进账户管理。例如,在一个或更多个实施例中,分类账交易系统可以生成与用户账户的取款许可(withdrawpermission)相对应的资源。然后,分类账交易系统可以通过执行从用户账户发送的转移取款许可(即,作为数字资产)的交易来将取款许可委托给另一个用户账户。因此,分类账交易系统可以根据与用户账户相关联的用户的需要,灵活地将对用户账户的数字资产的访问提供给另一个账户。
此外,分类账交易系统可以通过将与用户账户相关联的认证密钥与用户账户的地址去耦合来改进跨分布式数字分类账交易网络的账户的管理。例如,分类账交易系统可以替换用户账户的认证密钥,而不需要将用户账户的内容移动到新的地址。为了说明,如果与用户账户相关联的加密密钥之一(例如私有加密密钥)泄露,则分类账交易系统可以为该用户账户生成新的认证密钥。因此,分类账交易系统可以修改认证密钥以为用户账户提供灵活的安全性解决方案。
如上面所提到的,除了存储和账户/寻址改进之外,分类账交易系统还可以改进在分布式数字分类账交易网络内的交易执行。例如,在一些实施例中,分类账交易系统利用任意交易脚本,用于在分布式数字分类账交易网络上执行交易。实际上,分类账交易系统可以利用包含任意字节码程序的交易脚本,该字节码程序可以从各种模块调用多个过程,使用条件逻辑,并在单个脚本中执行局部计算。交易脚本可以调用模块过程来修改、创建、销毁对应于该模块的一个或更多个资源或以其他方式与对应于该模块的一个或更多个资源交互。换句话说,分类账交易系统可以利用交易脚本以基于在相应模块中定义的过程来与资源交互。实际上,在一个或更多个实施例中,分类账交易系统将与资源的交互局限于相应模块的过程,以便提供数据抽象。因此,分类账交易系统可以利用交易脚本来在分布式数字分类账交易网络上更灵活地执行交易。
分类账交易系统可以通过利用模块(即,智能合约)作为交易执行过程的一部分来进一步改进交易。例如,分类账交易系统可以利用智能合约来对交易执行检查并且在必要时拒绝交易。此外,分类账交易系统可以利用智能合约来实施执行后任务(post-executiontask),例如使存储在用户账户处的序列号递增并从用户账户扣除交易费用。此外,分类账交易系统可以利用智能合约来向参与分布式数字分类账交易网络的计算机节点分发gas支付款。在一个或更多个实施例中,这些模块是可配置的,使得它们可以根据需要被替换或更新。因此,分类账交易系统利用智能合约来执行交易,并且随着时间的推移通过共识灵活地修改管理交易的规则。
在一个或更多个实施例中,分类账交易系统还通过执行多个交易的推测性并行执行来改进交易的执行。例如,分类账交易系统可以识别分布式数字分类账交易网络的第一状态数据结构(即,数字分类账的第一状态)和与分布式数字分类账交易网络的用户账户相关联的多个交易。分类账交易系统然后可以相对于第一状态数据结构并行地执行交易的先予执行,以确定多个交易结果和在关于用户账户的交易之间的依赖性。分类账交易系统然后可以通过基于交易的依赖性应用多个交易结果来将第一状态数据结构修改为第二状态数据结构。通过并行地执行交易并基于所确定的依赖性将交易提交给存储装置,分类账交易系统比传统系统更灵活和有效地执行交易。
分类账交易系统还可以通过利用访问限制以控制对与用户账户相关联的数字资产的访问来提高交易执行的安全性和灵活性。例如,在一个或更多个实施例中,分类账交易系统可以实现在授予对数字资产的访问之前必须被满足的访问限制。在一些实施例中,分类账交易系统可以在提供对用户账户的访问之前需要来自一组密钥中的阈值数量的访问密钥。此外,在一些实施例中,分类账交易系统106利用速率/价值受限访问密钥和相应的密钥限制来限制在执行交易时所提供的对用户账户的数字资产的访问。例如,分类账交易系统可以限制访问密钥是有效的时间和/或该访问密钥可访问的数字资产的数量(例如,数字货币的价值)。使用这些访问限制,分类账交易系统提供了关于数字资产的更多安全性。特别地,分类账交易系统可以利用访问限制来在访问密钥被泄露或被盗的情况下防止来自恶意行动者的对数字账户的无限制访问。
分类账交易系统还可以通过利用交易事件计数器以跟踪和报告交易事件细节来改进跨分布式数字分类账交易网络的交易。例如,在执行与用户账户相关联的交易时,分类账交易系统可以生成对应于该用户账户的一个或更多个交易事件(在事件数据结构内)。然后,分类账交易系统可以使对应于那些交易事件的交易事件计数器的计数值递增(在状态数据结构内)。实现分类账交易系统的客户端设备可以监控(例如轮询)交易事件计数器以确定事件何时发生,然后利用计数值来请求和验证(来自交易数据结构的)交易细节。因此,分类账交易系统可以更准确地指示交易事件何时发生,并更有效地提供事件数据。分类账交易系统还可以轮询交易事件计数器,以执行证实账户数据没有改变的反面证明。
如上面所提到的,除了改进交易的执行以外,分类账交易系统还可以改进跨分布式数字分类账交易网络获得共识的过程。例如,在一个或更多个实施例中,分类账交易系统利用分布式数字分类账交易网络的验证者节点设备来基于对应于交易区块的执行结果执行共识,而不是仅对交易本身执行共识。换句话说,分类账交易系统可以使验证者共同签署区块的完整结果状态而不是一系列交易。以这种方式,分类账交易系统预期非确定性的执行行为,并确保验证者节点在交易区块达成共识时将数字分类账的准确表示提交给存储装置。
此外,分类账交易系统还可以通过利用使共识协议流水线化的方法来改进共识过程。实际上,在一个或更多个实施例中,在分类账交易系统将交易区块的执行结果提交给存储装置之前,分布式数字分类账交易网络的验证者节点设备在几轮投票中对这些执行结果进行投票。例如,分类账交易系统可以通过在三个连续轮(数字分类账的第一状态和数字分类账的两个后续状态)已经跨分布式数字分类账交易网络获得共识之后将数字分类账的第一状态提交给存储器,来应用连续3链提交规则(contiguous 3-chain commit rule)。以这种方式,分类账交易系统可以确保所提交的数据结构的准确性。
此外,分类账交易系统还可以改进验证者节点设备在系统重启时的共识安全。例如,在验证者节点设备提交对交易区块的投票之前,分类账交易系统可以在每个验证者节点设备处存储该验证者节点设备的共识状态(包括最后投票轮和优选区块轮)。在系统重启时,分类账交易系统可以在验证者节点设备处加载共识状态以继续参与共识而不会出现问题。以这种方式,即使所有验证者节点关闭,分类账交易系统也可以在验证者节点重启时确保共识安全。
如上面所提到的,共识可以包括在多个验证者节点之间对特定分类账状态进行投票。在一个或更多个实施例中,分类账交易系统通过经由智能合约管理验证者节点设备的投票权来改进这个共识过程。例如,分类账交易系统可以实现权益证明(proof-of-stake)协议,以允许分布式数字分类账交易网络的用户账户管理在验证者节点设备集合中的参与。分类账交易系统可以经由智能合约进一步管理对验证者节点设备集合的改变。在一个或更多个实施例中,分类账交易系统利用模块来管理权益证明协议和/或对验证者节点设备集合的改变。实际上,分类账交易系统可以利用模块来在时期的界限处实施对验证者节点设备集合的改变。
除了共识之外,分类账交易系统还可以提供关于分布式数字分类账交易网络的同步过程的技术益处。例如,在一些实施例中,分类账交易系统在同步到分布式数字分类账交易网络时在计算机节点处使用增量验证。实际上,同步的计算机节点可以以段(segment)的形式下载与数字分类账相关联的数据连同数据证明(例如Merkle证明)。分类账交易系统然后可以在下载更多数据之前,在客户端设备处验证接收到的数据是准确的。因此,分类账交易系统可以更有效地使计算机节点同步到分布式数字分类账交易网络。
此外,分类账交易系统可以利用并行同步方法来提高同步效率。实际上,分类账交易系统可以将与数字分类账相关联的不同数据段和对应的证明(例如,数字分类账的状态的不同快照)下载到分离的验证设备上。分类账交易系统然后可以使用每个验证设备来与其他验证设备并行地验证下载到该设备的数据段。因此,分类账交易系统可以更有效地使计算机节点同步到分布式数字分类账交易网络。
在一个或更多个实施例中,分类账交易系统还利用路径点来促进跨分布式数字分类账交易网络的同步。特别地,分类账交易系统可以生成并使用路径点来指示跨分布式数字分类账交易网络利用的数字分类账的正确/优选版本。通过利用路径点,分类账交易系统还可以促进原本可能会被拒绝的某些交易(即,FTVM交易)的接受。例如,分类账交易系统可以利用路径点来促进FTVM交易的接受,这些FTVM交易建立创世区块或在分布式数字分类账交易网络上创建硬分叉。
如前述讨论所说明的,本公开利用各种术语来描述分类账交易系统的特征和益处。现在提供关于这些术语的含义的附加细节。例如,如在本文所使用的,术语“数字分类账”(或“分布式数字分类账”或“公共分类账”)指跨多个计算设备维护的公共数据。特别地,数字分类账可以包括由多个计算设备维护的反映状态、交易、事件和/或账户数据的一个或更多个公共数据结构。为了说明,数字分类账可以包括反映网络的状态(即,网络的用户账户的状态)、与跨网络执行的交易相关联的数据、对应于交易事件的数据和/或与数字分类账的共识相关的数据的一个或更多个数据结构。数字分类账可以包括但不限于下面的属性:公开可得到的(即,由任何人查看的)、防篡改的(即,数据操纵是可检测的)、透明的(即,任何人可以查看数字的历史,包括所执行的交易)和复制的(即,每个计算机节点具有副本)。
另外,如在本文所使用的,术语“分布式数字分类账交易网络”指用于维护数字分类账的计算设备的网络。特别地,分布式数字分类账交易系统可以包括可以实现数字分类账和/或与实现数字分类账的系统(例如分类账交易系统)交互的计算设备、相关联的外围设备、通信协议和通信介质的集合。例如,分布式数字分类账交易网络可以包括经由网络进行通信的一个或更多个客户端设备和计算机节点,以实现分类账交易系统和/或与分类账交易系统进行交互。因为分布式数字分类账交易网络可以实现数字分类账,所以在一个或更多个实施例中,术语“分布式数字分类账交易网络的状态”和“数字分类账的状态”同义地被使用。
此外,如在本文所使用的,术语“计算机节点”指参与分布式数字分类账交易网络的计算设备。特别地,计算机节点可以指存储和维护数字分类账的至少一部分的计算设备。例如,计算机节点可以包括全节点设备(例如“全节点(full node)”)或验证者节点设备(例如“验证者节点”)。
另外,如在本文所使用的,术语“用户账户”指分布式数字分类账交易网络的账户。特别地,用户账户可以指存储在分布式数字分类账交易网络的状态数据结构内的代码和/或数据(即,模块和/或资源)的集合。用户账户可以与分布式数字分类账交易网络的用户相关联,但不限于这样的账户。例如,用户账户还可以包括管理账户或者以其他方式被用于存储与特定用户不相关联的代码或数据的账户。类似地,用户账户可以包括代表其用户起作用的保管钱包(custodial wallet)。
如在本文所使用的,术语“公开密钥”(或“公开加密密钥(public cryptographickey)”或“公开加密密钥(public encryption key)”或“非对称密钥”)指公开可见的加密密钥。特别地,公开密钥可以指与用户账户相关联的加密密钥,该加密密钥旨在被发送到与用户账户不相关联的实体和/或由该实体使用。例如,公开密钥可以与交易一起从用户账户被发送到分布式数字分类账交易网络的验证者节点设备。公开密钥可以具有对应的私有密钥。
如在本文所使用的,术语“私有密钥”(或“私有加密密钥(private cryptographickey)”或“私有加密密钥(private encryption key)”)指被私有地保持的加密密钥。特别地,私有密钥可以指与用户账户相关联(并且对应于用户账户的公开密钥)的加密密钥,其是被秘密地保持的。私有密钥的示例使用包括使用对应于用户账户的私有密钥来签署(例如加密)从用户账户发送的交易。
另外,如在本文所使用的,术语“认证密钥”指认证用户账户的值。特别地,认证密钥可以指用于当用户账户跨分布式数字分类账交易网络(例如,向验证者节点设备)发送数据(例如交易请求)时认证用户账户的存储在用户账户处的值。例如,认证密钥可以包括相应用户账户的账户地址或账户地址的散列(hash)或相应用户账户的公开密钥的散列。如下所述,在一些实施例中,分类账交易系统创建与账户地址脱离的修改后的认证密钥。
此外,如在本文所使用的,术语“主公开地址标识符”(或“主地址标识符”或“公共地址标识符”)指分布式数字分类账交易网络的用户账户的主地址的标识符。特别地,主公开地址标识符可以包括主公开地址本身或者与用户账户相关联的指示用户账户的主地址的值。如在本文所使用的,术语“主公开地址”或“主地址”或“公共地址”或“地址”指在分布式数字分类账交易网络上的用户账户的账户地址。特别地,主公开地址可以指与数字分类账直接相关联并由数字分类账跟踪的账户地址。
相关地,如在本文所使用的,术语“子地址标识符”指与分布式数字分类账交易网络的用户账户相关联的子地址的标识符。特别地,子地址标识符可以指子地址本身或者指示与分布式数字分类账交易网络的用户账户相关联的子账户的值。实际上,在一个或更多个实施例中,分布式数字分类账交易网络的用户账户维护一个或更多个子账户的内部数据库。用户账户可以使用对应的子地址来标识特定的子账户。
此外,如在本文所使用的,术语“共识”指数字分类账的确认(例如,反映状态和/或交易的分类账的确认)。特别地,共识可以指经由共识协议对数字分类账(例如,反映交易或交易区块的状态)的接受。在一些实施例中,共识指与交易或交易区块相对应的执行结果的接受。可以使用各种不同的共识协议(包括拜占庭容错共识协议族的各种成员)来确定共识。为了说明,可以使用HotStuff共识协议、工作量证明(proof-of-work)共识协议、权益证明共识协议和/或权益委托证明(delegated proof-of-stake)共识协议来确定共识。例如,可以基于由验证者节点的集合提供的确认交易区块(或对应于该交易区块的执行结果)是有效的投票的数量来确定共识。
如在本文所使用的,术语“时期”指验证者节点设备集合参与共识的周期。特别地,时期可以指验证者节点设备集合的变化之间的最小延迟。例如,可以通过时间或经历共识的交易区块的数量(例如,投票轮的次数)来度量时期。
此外,如在本文所使用的,术语“请求”指到分布式数字分类账交易网络的计算机节点的传输。特别地,请求可以指到请求执行行动的计算机节点的传输。例如,请求可以包括交易请求或对信息检索的查询。尽管下面的公开将通常讨论如由客户端设备提交的请求,但是请求并不被这样限制。在一些实施例中,请求可以由分布式数字分类账交易网络的管理者设备或另一计算机节点(例如,在计算机节点之间共享请求的处理中)发送。
具体地,如在本文所使用的,术语“交易请求”(或“交易事件请求”或“对交易的请求”)指对应于交易的请求(例如,执行交易或将交易提交给数字分类账的请求)。特别地,交易请求可以指由计算机节点接收的、请求经由分布式数字分类账交易网络执行交易的传输。交易请求可以包括待执行的交易(例如,如在交易脚本内详述的)。在一些实施例中,交易请求包括附加细节,例如对应于所请求的交易的序列号、发送用户账户的账户地址、发送用户账户的公开密钥等。虽然下面的公开将通常讨论如由客户端设备提交的交易请求,但是交易请求并不被这样限制。交易请求可以由分布式数字分类账交易网络的管理者设备或另一计算机节点(例如,在计算机节点之间共享交易请求的处理中)发送。
具体地,如在本文所使用的,术语“账户恢复请求(account reinstatementrequest)”指重新激活用户账户的交易请求。特别地,账户恢复请求可以指在账户状态数据结构内重新缓存与过期用户账户相关联的账户数据的请求。账户恢复请求可以包括针对所请求的重新缓存而提议的账户数据。
此外,如在本文所使用的,术语“交易”指在分布式数字分类账交易网络上执行的程序或行动。特别地,交易可以包括修改分布式数字分类账交易网络的状态数据结构的至少一个操作(例如,通过计算机节点)的执行。例如,交易可以包括一个或更多个数字资产在用户账户之间的转移或账户恢复。
如在本文所使用的,术语“执行”或“交易的执行”指关于交易实施的一个或更多个行动。特别地,术语执行可以指运行以其引数(argument)和当前分类账状态作为输入的交易脚本以产生交易输出。在进行交易的执行时,分类账交易系统可以执行一系列行动,这些行动包括但不限于在接收到交易时执行初始检查、分析交易(例如,验证交易脚本和模块)、发布模块(例如,在受影响的用户账户内发布与交易对应的模型)、运行交易脚本和运行收尾程序(例如,对已使用的gas收费和使用户序列号递增)。
如在本文所使用的,术语“依赖性”或“交易的依赖性”指两个或更多个交易之间的关系。特别地,依赖性可以指在同一交易区块内的与一个或更多个相同的用户账户相关联的两个或更多个交易。更具体地,当一个交易的执行依赖于另一个交易的执行时,两个或更多个交易可以是依赖的。例如,两个交易可以是依赖的,其中一个交易向用户账户写入,而另一个交易从用户账户读取。依赖性可以指与账户数据的各种粒度相对应的各种不同关系。例如,依赖性可以指对存储在用户账户中并被两个或更多个交易识别的任何公共资源的利用。
另外,如在本文所使用的,术语“交易事件”或“事件”指交易的结果。特别地,交易事件可以指通过执行交易而产生的副作用(例如,更新或修改)。交易事件的例子包括但不限于从用户账户提取数字资产或将数字资产存放到用户账户。如在本文所使用的,术语“交易事件细节请求”指对信息的查询,其请求与交易事件对应的事件数据。交易事件细节请求可以包括对与单个交易事件或事件数据对应的事件数据的请求。此外,交易事件细节请求可以包括对与事件序列对应的事件数据的交易事件序列请求。
此外,如在本文所使用的,术语“事件类型”或“事件类别”指交易事件类别。特别地,事件类型可以指适用于具有一个或更多个公共特征的一组交易事件的分类。例如,事件类型可以指对应于由用户账户接收的支付款的交易事件或对应于由用户账户发送的支付款的交易事件。
如在本文所使用的,术语“事件数据”或“交易事件数据”指与交易事件相关联的数字数据。例如,事件数据可以包括交易事件的细节(被称为“交易事件细节”)、对应于与交易事件对应的交易事件计数器的访问路径以及对应于与交易事件相关联的交易事件计数器的计数值的序列号。
如在本文所使用的,术语“交易事件计数器”指跟踪与用户账户相关联的事件的计数器(例如,被存储在用户账户处)。例如,交易事件计数器可以包括存储在用户账户处的、被生成来跟踪与用户账户相关联的事件的资源。交易事件计数器可以存储指示已经生成的与用户账户相关联的事件的数量(或量)的计数值。如在本文所使用的,术语“事件计数请求”指对关于交易事件计数器的计数值的信息的查询。
此外,如在本文所使用的,术语“账户状态”或“用户账户状态”指分布式数字分类账交易网络的用户账户在特定周期、迭代、版本或时间处的状况。特别地,账户状态可以指在数字分类账的特定时间、迭代或版本处与用户账户相关联的值(例如键-值对)。账户状态可以包括与用户账户有关或相关联的任何值。例如,账户状态可以包括与用户账户相关联的资源(例如数字资产)和模块。账户状态也可以包括其他值,例如与用户账户相关联的逐出日期。
另外,如在本文所使用的,术语“数据结构”或“经认证数据结构”指数据的集合。特别地,经认证数据结构可以指允许验证器(verifier)测量数据的准确性的数据的集合。例如,经认证数据结构可以包括一个或更多个树结构,其映射到一个或更多个对应数据库的条目。验证器可以分析树结构的短认证器以验证树结构和/或对应数据库的准确性。如上面所提到的(以及在下面更详细地描述的),数据结构可以包括但不限于状态数据结构、事件数据结构、交易数据结构和签名数据结构。
特别地,经认证数据结构可以允许验证器V持有短认证器a,该短认证器a形成到数据结构D的绑定提交。持有D的不受信任的证明器(prover)P计算并同时返回r(对某个函数F计算的结果)以及π(对验证器的结果的正确计算的证明F(D)→r)。V可以运行Verify(a,F,r,π),其当且仅当F(D)=r时返回真(true)。如所提到的,经认证数据结构可以包括用于存储在整数和串值(string value)之间的映射的树结构。
此外,如在本文所使用的,术语“数据树”、“树结构”或“树数据结构”指被表示为一组被链接的节点(具有根节点以及父节点和子节点的一个或更多个子树)的数据,这些节点映射到数据库的一个或更多个条目(例如,将节点的整数映射到数据库的串值)。数据树可以包括但不限于二叉树。例如,数据树可以包括Merkle树,例如稀疏Merkle树或Merkle累加器。树可以指状态树、事件树或交易树。
例如,在大小为2k的Merkle树中,D将每个整数键i∈[0,2k)映射到串值si。认证器由从串创建的满二叉树(full binary tree)的根形成,将叶标记为H(i||si)以及将内部节点标记为H(left||right),其中H是加密散列函数(或“散列”)。证明器希望认证的函数F涉及键-值对的查找,例如F:(k,v)∈D,其中r=(k,v)。P通过返回由节点i的每个祖先的兄弟的标签组成的证明π来认证在D中对项i的查找。
如在本文所使用的,术语“数据库”或“数据库结构”指数据(例如串值)的集合。例如,数据库可以包括包含账户值、事件细节、交易细节、签名或其他信息的版本化数据库。因此,数据库可以包括但不限于状态数据库、事件数据库、交易数据库或签名数据库。在一些实施例中,分类账交易系统可以将状态数据库、事件数据库、交易数据库和/或签名数据库组合成单个数据库(例如单个数字文件)。
相关地,如在本文所使用的,术语“中间状态数据结构”指未提交的状态数据结构。特别地,中间状态数据结构可以指尚未被写入到存储装置(即,永久存储装置)中的状态数据结构。例如,中间状态数据结构可以包括存储在临时存储装置中的状态数据结构,作为在共识被达成之前预先执行交易区块中的交易的结果。
如在本文所使用的,术语“数据表示”或“账户状态表示”指在数据结构中的表示数据库中的对应条目(例如串)的节点值(例如整数)。例如,账户状态表示可以指存储在状态树的节点(例如叶节点)内的数字数据,其反映状态数据库内与该节点对应的账户数据。例如,数据表示可以包括存储在数据库(例如状态数据库)的条目内的条目的散列(例如账户值)。数据表示还可以包括对应用户账户的认证密钥和/或逐出日期。
如在本文使用的,术语“账户数据”指存储在状态数据库中的数字数据。特别地,账户数据可以指存储在数据库的一个或更多个条目内的数字数据,这些条目与特定用户账户相关联。账户数据可以包括但不限于账户值(例如,用户账户所拥有的数字资产)和账户值的散列,该散列提供在数据库条目和用户账户的账户状态表示之间的映射。
另外,如在本文所使用的,术语“懒惰删除”指在分布式数字分类账交易网络的计算机节点之间的异步删除。特别地,懒惰删除可以包括将元素标记为已删除/已过期(而不删除底层数据,直到在计算设备的空闲时间处选择的稍后时间为止)。例如,删除的行为可以基于在计算机节点处设置的用户偏好或者基于计算节点的计算资源的可用性而发生。删除的行为可以独立于分布式数字分类账交易网络的其他计算机节点何时删除存储在这些计算机节点处的对应数据库条目而发生。
如在本文所使用的,术语“便笺式数据结构”指存储执行结果直到分类账交易系统已经确定关于那些执行结果的共识是失败了还是成功了为止的(临时)数据集合。便笺式数据结构可以存储多个交易区块的执行结果,其中一些交易区块可能发生冲突,表示对数字分类账的可选择的可能添加。
另外,如在本文所使用的,术语“逐出日期”指用户账户的到期时间。特别地,逐出日期可以指用户账户不再被视为活跃的时间。为了说明,逐出日期可以包括与用户账户相关联的时间戳。如果分布式数字分类账交易网络的时间大于在时间戳中包括的时间,则该用户账户已经过期。
此外,如在本文所使用的,术语“租用存放金额(rent deposit amount)”指用于在分布式数字分类账交易网络上进行存储的支付款。特别地,租用存放金额可以指为使用在分布式数字分类账交易网络上的存储装置来存储对应于分布式数字分类账交易网络的用户账户的数字数据而支付的货币。租用存放金额可以指以数字货币(即,在分布式数字分类账交易网络上交换的gas或其他数字货币)支付的价值。
如在本文所使用的,术语“模块”指智能合约代码。特别地,模块可以指代码值。更具体地,模块可以指分布式数字分类账交易网络上的对象,该对象包含定义和声明在实现模块时使用的类型和过程的代码。例如,模块可以定义实现该模块的一类对象。为了说明,模块可以包括声明资源类型和过程的字节码。在一些实施例中,模块由声明该模块的账户的地址定义。
如在本文所使用的,术语“资源”指智能合约数据。特别地,资源可以指数据值。实际上,资源可以指提供模块的特定实例或实现的对象,其受限于在模块中定义的数据类型,并使用在模块中定义的过程来操纵。例如,资源可以包括使数字资产(例如来自在模块内定义的一类数字资产的数字货币)、数据结构和逻辑的实现成为可能的语言特征。在一个或更多个实施例中,资源包括将名称字段(name field)绑定到简单值(即,整数)或复杂值(即,嵌在特定资源内部的其他资源)的记录。
如在本文所使用的,术语“数字资产”指与用户账户相关联(例如,由用户账户拥有或属于用户账户)的数字数据。特别地,数字资产可以指由用户账户拥有并从定义一类数字资产的模块生成的资源。例如,数字资产可以包括表示物理资产或另一数字资产的所有权的标题、或者数字货币的一个或更多个单位或数字货币的单位的一部分。在一个或更多个实施例中,分类账交易系统在相关联的线性分型规则的规限下将数字资产表示为线性数据类型。
另外,如在本文所使用的,术语“线性数据类型”指编程值。特别地,线性数据类型可以指用于对分布式数字分类账交易网络上的资源实施线性的编程值。例如,线性数据类型可以表示在分布式数字分类账交易网络上的数字货币或其他数字资产的单位。相关地,如在本文所使用的,术语“线性分型规则”指与线性数据类型相关联的一个或更多个规则,这些规则实施线性。例如,线性分型规则可以包括线性分型规则,其要求线性数据类型的数字资产在该数字资产被提及的交易期间被使用确切地一次。此外,线性分型规则可以包括禁止数字资产被复制(即,拷贝)的线性分型规则。
如在本文所使用的,术语“并行”(当指过程由一个或更多个计算设备执行时)意味着以关于时间的某种重叠(例如,同时地或接近同时地)执行过程。特别地,术语“并行”可以指多个过程以这样的一种方式被执行,使得至少两个过程以某种方式重叠,以便该至少两个过程的至少一部分同时发生。例如,至少两个过程可以完全重叠,以便它们同时开始和结束。并行可以包括但不限于执行交易、下载数据或验证数据。
此外,如在本文所使用的,术语“访问路径”指数字数据在数据结构内的位置的标识符。特别地,访问路径可以指模块或资源在分布式数字分类账交易网络的用户账户内的位置。例如,访问路径可以包括与用户账户相关联的地址(例如主地址)和对应于资源或模块的标识符。
另外,如在本文所使用的,术语“随机数”(或“加密随机数”)指字符集合。特别地,随机数可以指非确定性的(例如,随机的或伪随机的)数字。例如,随机数可以包括单个字符(例如单个数值)或字符串。
如在本文所使用的,术语“数字视觉代码”指对数字数据编码的图像。特别地,数字视觉代码可以指可以被解码以获得与分布式数字分类账交易网络的用户账户相关联的数字数据的图像(例如图案)。例如,数字视觉代码可以包括快速响应(“QR”)代码,但是也可以包括可以从其确定数字数据的任何其他图像。
此外,如在本文所使用的,术语“DNS记录”指域名系统(“DNS”)中的条目。特别地,DNS记录可以指DNS数据库中的条目,该条目将电子邮件地址映射到在分布式数字分类账交易网络上的用户账户的账户标识信息(例如主公开地址标识符和/或公开加密密钥)。例如,DNS记录可以包括DNS文本记录(“TXT记录”)。相关地,如在本文所使用的,术语DNSSEC(或“域名系统安全扩展”)指对DNS的一组安全扩展,其可以帮助认证或以其他方式验证存储在DNS上的数据。
此外,如在本文所使用的,术语“gas”指用于费用支付的数字资产。特别地,gas可以指与用户账户相关联的数字货币,其用于为在分布式数字分类账交易网络上采取的行动支付费用。例如,gas可以包括用于支付交易费、账户启动费、账户恢复费或租用存放的数字货币。gas可以包括不同的数字资产,或者可以从与用户账户相关联的其他数字资产中提取。
I.系统概述
A.计算环境
现在将参考附图提供关于分类账交易系统的附加细节。例如,图1示出了在其中可以实现分类账交易系统106的分布式数字分类账交易网络100的示意图。如图1所示,分布式数字分类账交易网络100包括通信网络102、计算机节点114(其包括验证者节点设备108a-108b和全节点设备108c-108d)以及客户端设备112a-112n(具有相应的用户116a-116n)。
尽管图1的分布式数字分类账交易网络100被描绘为具有特定数量的部件,但是分布式数字分类账交易网络100可以具有任何数量的附加或替代部件(例如,任何数量的计算机节点、客户端设备或经由通信网络102与分类账交易系统106通信的其他部件)。类似地,尽管图1示出了通信网络102、计算机节点114、客户端设备112a-112n和用户116a-116n的特定布置,但是各种附加布置是可能的。
通信网络102、计算机节点114和客户端设备112a-112n可以直接或间接地(例如,通过下面关于图50更详细讨论的通信网络102)与彼此通信地耦合。此外,计算机节点114和客户端设备112a-112n可以包括计算设备(包括如下面关于图50更详细讨论的一个或更多个计算设备)。
如上面所提到的,分布式数字分类账交易网络100包括计算机节点114。通常,计算机节点114可以生成、存储、接收和/或传输数据(包括对应于数字分类账的数据)。例如,计算机节点114可以接收交易请求并传输交易执行结果。在一个或更多个实施例中,至少一个计算机节点114包括数据服务器。在一些实施例中,至少一个计算机节点114包括通信服务器或web托管服务器。在另外的实施例中,一个或更多个计算机节点114包括由用户操作的个人计算设备。
在一个或更多个实施例中,如图1所示,计算机节点可以互相传输数据。例如,给定的计算机节点可以使用点对点通信向特定的计算机节点(即,一个计算机节点)传输数据。给定的计算机节点也可以使用广播技术向所有其他计算机节点传输数据。例如,在一个或更多个实施例中,计算机节点通过向具有投票权的计算机节点(例如验证者节点设备)的随机或半随机子集传输数据来广播数据。然后,接收方验证者节点设备可以以相同的方式重新共享(即,重新传输)到其他计算机节点,直到每个计算机节点知道的(即,存储在每个计算机节点处的)数据稳定为止。
在一个或更多个实施例中,计算机节点在几个步骤中向其他计算机节点传输数据。例如,在第一步骤,传输计算机节点可以使数据变得可获得(即,被动地发布数据)。然后,传输计算机节点可以向每个潜在的接收方计算机节点发送通知,指示数据现在是可获得的。随后,传输计算机节点可以让潜在的接收方计算机节点连接到传输计算机节点并检索可获得的数据。
如图1所示,计算机节点包括验证者节点设备108a-108b和全节点设备108c-108d。如下面将更详细讨论的,验证者节点设备108a-108b和全节点设备108c-108d可以执行不同的功能;尽管在一些实施例中,验证者节点设备108a-108b和全节点设备108c-108d执行至少一些重叠的功能。例如,在一个或更多个实施例中,验证者节点设备108a-108b和全节点设备108c-108d都可以为对关于用户账户的交易、事件或状态的信息的查询提供服务。
此外,如图1所示,计算机节点114包括分类账交易系统106。特别地,在一个或更多个实施例中,分类账交易系统106利用计算机节点114来执行交易和为对信息的查询提供服务。例如,分类账交易系统106可以使用验证者节点设备108a-108b来执行交易和实现共识协议。此外,分类账交易系统106可以利用全节点设备108c-108d来接收对信息的查询和为这些查询提供服务。
例如,在一个或更多个实施例中,分类账交易系统106实现拜占庭容错共识方法。具体地,在一些实施例中,验证者节点设备108a-108b实现经修改的HotStuff共识协议。特别地,在一个或更多个实施例中,计算机节点114选择先导验证者节点设备(leadvalidator node device)来推动交易区块的共识。在一个或更多个实施例中,先导验证者节点设备被确定性地选择(例如,经由从预定义的列表中的循环选择(round-robinselection))。在一些实施例中,先导验证者节点设备被非确定性地选择(例如,候选验证者节点设备尝试解决加密难题或参与加密抽彩(cryptographic lottery),并且获胜者成为先导验证者节点设备)。当被选择时,先导验证者节点设备可以组装包含从客户端设备112a-112n中的一个或更多个接收的交易的交易区块,并且向其他验证者节点设备提议该交易区块。其他验证者节点设备执行在交易区块内的交易,然后对执行结果进行投票。
例如,假设在当前的验证者节点设备集合内存在固定、未知的恶意验证者节点设备子集(也被称为“拜占庭验证者节点设备”)。进一步假设所有其他验证者节点设备(被称为“诚实的验证者节点设备”)审慎地遵循共识协议。将所有验证者节点设备的总投票权称作N并定义安全性阈值f,分类账交易系统106可以操作,使得N>3f。换句话说,分类账交易系统106可以操作,使得恶意节点设备的组合投票权不超过安全性阈值f。
其组合投票权M验证交易区块(即,M≥N–f)的节点子集可被称为法定决议票数(quorum)。在一些实施例中,分类账交易系统106可以进一步在“BFT假设”下操作,该BFT假设指示对于同一时期中的每两个法定决议票数的节点,存在属于这两个法定决议票数的诚实节点。
在确定已经接收到确认执行结果的阈值数量的投票时,先导验证者节点设备可以确定完成(finalize)交易区块,并将确认传输到其他验证者节点设备。如上面所提到的,通过利用拜占庭故障模型,分类账交易系统106可以适应在没有约束的情况下任意地背离协议的验证者(validator)。此外,分类账交易系统106可以利用拜占庭容错共识方法来减轻由恶意或随意删改(hacked)的验证者导致的错误。具体地,在一个或更多个实施例中,分类账交易系统106利用2f+1个投票作为阈值数量的投票,其中f指共识协议可以适应的拜占庭投票者(例如,恶意的、欺诈的或不可信赖的验证者)的数量。例如,在一些实施例中,f反映在防止攻击或其他不安全行为(例如,双重花费或分叉)时可以被适应的拜占庭投票者的数量。在一些实施例中,2f+1个投票对应于参与共识的验证者节点设备的刚好超过三分之二。
一旦完成交易区块,验证者节点设备就可以将交易结果提交给存储装置。实际上,在一个或更多个实施例中,每个验证者节点设备生成用于存储与数字分类账相关的数据的数据结构(例如交易数据结构、状态数据结构和事件数据结构)。当执行结果达成共识时,验证者节点设备可以基于执行结果来更新这些数据结构。特别地,每个验证者节点设备可以生成并维护数据结构的独立副本,然后基于执行结果来更新存储在该验证者节点设备处的数据结构。
为了提供附加示例,在一个或更多个实施例中,全节点设备可以接收对信息的查询。作为响应,全节点设备可以找出在存储在全节点设备处的数据结构内的相关数据,并将数据传输到请求客户端设备。实际上,在一个或更多个实施例中,每个全节点设备可以生成并维护数据结构的独立副本。全节点设备可以与验证者节点设备108a-108b通信,以识别执行交易的结果并相应地更新存储在全节点设备处的数据结构。在一个或更多个实施例中,全节点设备可以进一步响应于接收到对信息的查询,提交证明(例如Merkle证明)以证实所提供的数据的准确性。
在一个或更多个实施例中,客户端设备112a-112n包括允许设备的用户(例如用户116a-116n)提交交易请求和对信息的查询的计算机设备。例如,客户端设备112a-112n可以包括智能手机、平板电脑、台式计算机、膝上型计算机或其他电子设备(其示例在下面关于图50被描述)。客户端设备112a-112n可以包括允许用户116a-116n提交交易请求和对信息的查询的一个或更多个应用(例如客户端应用110)。例如,客户端应用110可以包括安装在客户端设备112a-112n上的软件应用。此外或替代地,客户端应用110可以包括托管在一个或更多个服务器上的软件应用,其可以由客户端设备112a-112n通过另一应用(例如web浏览器)来访问。
在一些实施例中,客户端设备112a-112n的子集(和/或计算机节点104的子集)可以具有加密密钥以修改或管理分布式数字分类账交易网络的特征(被称为“经授权设备”)。特别地,可以实现智能合约,其向经授权设备(或对应于经授权设备的经授权账户)提供通过共识协议(以及经授权设备之间的集体协定)进行修改的许可。例如,在用于进行修改的智能合约的范围内,经授权设备可以管理对参与共识(即,投票权)的验证者节点设备的集合的改变、对在验证拒绝或在计算机节点114之间分配交易费用(即,gas)时所利用的过程的改变和/或对用于支持在分布式数字分类账交易网络上的数字资产(例如加密货币)的有形货币储备(例如多样化的真实世界资产)的改变。
在一个或更多个实施例中,分布式数字分类账交易网络100还包括一个或更多个报告管理器(未示出)。报告管理器可以跟踪和报告由分布式数字分类账交易网络100的部件(例如验证者节点设备108a-108b中的一个)采取的行动,对于这些行动,应该提供奖励或提取费用。报告管理器可以跟踪和报告的一些行动包括但不限于客户端设备提交交易请求、先导验证者节点设备提议或未能提议交易区块、先导验证者节点设备提议不正确的或格式错误的(malformed)交易区块、验证者节点设备参与共识、验证者节点设备将交易区块提交给存储装置以及一般信息散播(无论是在计算机节点114之间还是到客户端设备112a-112n)。在一个或更多个实施例中,报告管理器向计算机节点114报告这样的行动,以确定并实现相应的奖励或费用。报告管理器可以由图1所示的分布式数字分类账交易网络100的任何设备实现(例如,由计算机节点114实现)或由另一计算设备实现。
分类账交易系统106可以全部或部分地由分布式数字分类账交易网络100的单独元件实现。实际上,尽管图1示出了关于计算机节点114实现的分类账交易系统106,但是分类账交易系统106的不同部件可以在分布式数字分类账交易网络100的任何部件中实现。特别地,分类账交易系统106的一部分或全部可以由客户端设备(例如客户端设备112a-112n中的一个)实现。
举个例子,分类账交易系统106可以利用客户端设备112a-112n来执行各种功能。为了说明,分类账交易系统106可以利用客户端设备,针对交易事件更新来轮询一个或更多个计算机节点114,并请求对应于事件序列的数据。此外,分类账交易系统106可以利用客户端设备来生成交易请求。特别地,分类账交易系统106可以利用客户端设备,识别对应于用户账户的主公开地址标识符和子地址标识符,然后使用加密密钥来加密子地址标识符。分类账交易系统106然后可以利用客户端设备,使用对应于用户账户的主公开地址标识符和加密的子地址来生成并提交与该用户账户相关联的交易请求。
B.验证者部件和交易处理
如上面所提到的,客户端设备可以向计算机节点之一提交对交易的请求。分布式数字分类账交易网络的验证者节点设备然后可以执行交易(作为交易区块的一部分)并实现共识协议。如果共识被达成,验证者节点设备(和全节点设备)可以通过更新存储在其中的数据结构(例如,更新分类账状态)来将执行结果提交给永久存储装置。图2示出了在处理接收到的交易、执行交易以及基于共识是否被达成来将交易提交给存储装置时使用的验证者节点设备的部件的示意图。
关于图2的下面的讨论将提供关于交易的生命周期的细节以及在实现分类账交易系统106的所示验证者节点设备部件的上下文中的附加细节。验证者节点设备部件可以使用任何适当的通信协议来与彼此通信。例如,在一个或更多个实施例中,验证者节点设备部件经由具有protobuf序列化(serialization)的GRPC流进行通信。
如图2所示,客户端设备202可以利用客户端应用204(例如,在客户端设备202处操作的分类账交易系统106、访问分类账交易系统106的应用或第三方钱包应用)来生成交易请求。在一个或更多个实施例中,客户端应用204通过生成具有各种参数的交易脚本来生成交易请求。在一个或更多个实施例中,客户端应用204利用客户端应用204可访问的预定义交易脚本,并将期望的参数插入到该预定义脚本中。所得到的交易脚本可以提供所请求的交易的细节,例如一个或更多个数字资产从第一用户账户(即,与客户端设备202的用户相关联的用户账户)到第二用户账户的转移。
在一个或更多个实施例中,客户端设备202进一步利用客户端应用204来将序列号添加到交易请求。实际上,在一个或更多个实施例中,验证者节点设备拒绝具有不正确的序列号的交易请求。在一些实施例中,分布式数字分类账交易网络的计算机节点可以存储与用户账户相关联的当前序列号。客户端应用204可以查询计算机节点之一以识别与相应用户账户相关联的当前序列号。客户端应用204然后可以使序列号递增并将递增后的序列号添加到交易请求。计算机节点可以基于交易的应用(例如,交易的执行或交易被接受到内存池(mempool)管理器中),更新存储装置中的与用户账户相关联的序列号。然而,在一个或更多个实施例中,客户端应用204跟踪与用户账户相关联的当前序列号以避免查询计算机节点。
此外,客户端设备202可以利用客户端应用204来签署交易请求。例如,客户端应用可以利用与客户端设备202的用户相关联(即,与发送用户账户相关联)的私有密钥,将签名应用于交易请求(例如,通过将交易请求加密)。客户端设备202然后可以将已签署的交易请求传输到验证者节点设备206。
在一个或更多个实施例中,客户端设备202将交易提交到与验证者节点设备206相关联的特定地址。例如,客户端设备202可以将交易提交到与验证者节点设备206的准入控制部件(例如,准入控制器(admission control(s))210)相关联的地址。在一个或更多个实施例中,客户端设备202利用客户端应用204来识别验证者节点设备206的地址。例如,客户端设备202可以利用客户端应用204来联系分布式数字分类账交易网络的计算机节点,然后经由基于地理位置而优化以减少时延的循环DNS(round-robin DNS)实现,识别验证者节点设备206的地址。在一个或更多个实施例中,在接收到交易请求时,验证者节点设备206(例如,使用存储在隐私签名管理器216中的私有密钥)签署交易请求,并将已签署的交易请求返回给客户端设备202。
如图2所示,验证者节点设备206可以在负载平衡器208处接收交易请求。特别地,如图2所示,验证者节点设备206包括准入控制器210,其可以包括多个准入控制单元。负载平衡器208可以将任务转发到准入控制器210以避免压垮准入控制单元,并提高交易请求被处理的效率。
实际上,准入控制器210可以管理多种请求类型。特别地,除了交易请求之外,准入控制器210还可以管理对信息的查询。准入控制器210可以将给定的请求引导到用于为该请求提供服务的验证者节点设备206的适当部件。例如,准入控制器210可以将交易请求引导到内存池管理器212,并将对信息的查询引导到存储管理器220以执行所请求的读取。因此,准入控制器210可以防止对信息的查询干扰用于为交易请求提供服务的部件,反之亦然。
在接收到交易请求时,准入控制器210可以执行一系列初始检查。例如,在一个或更多个实施例中,准入控制器210执行基本的垃圾消息检查(spam check)以限制从给定的IP地址接收的数据量。在这样做时,准入控制器210可以通过执行列入黑名单并过滤掉无效的或高体积的输入来提供DDoS保护,防止这样的输入浪费后续部件的资源。实际上,在一些实施例中,准入控制器210将产生大量流量的IP/用户账户列入黑名单。
准入控制器210然后可以访问虚拟机222以执行一系列附加检查,以便确定交易请求是否被正确地形成。例如,准入控制器210可以检查在交易请求上的输入签名,以确定交易请求是否被正确地签署;检查发送交易请求的用户账户的认证密钥(例如,用户账户的地址或与用户账户相关联的公开密钥的散列)以确认认证密钥对应于其私有密钥被用来签署交易的公开密钥;验证所签署的交易的序列号是否是正确的;验证在交易请求中包括的交易脚本不是格式错误的;以及验证在账户中有足够的余额来支持在执行交易时可能消耗的最大数量的gas。在确定了交易请求满足一系列检查时,准入控制器210可以将交易请求转发到内存池管理器212。
在一个或更多个实施例中,虚拟机222可以为分类账交易系统106所利用的编程语言实现字节码验证器和字节码解释器。实际上,在一个或更多个实施例中,分类账交易系统106利用具有下列三种不同的程序表示的编程语言:源代码、中间表示(IR)和字节码。程序员可以用IR开发模块和交易脚本,IR是足够高级别的以编写人类可读的代码,然而是足够低级别的以具有到字节码的直接翻译。在一些实施例中,源语言和IR都被编译成字节码。
出于各种原因,分类账交易系统106可以使用可验证的字节码语言作为编程语言的可执行表示。例如,在一些实施例中,分类账交易系统106对所有程序应用安全保证。在编译器中实施这些保证通常是不够的,因为对手可能选择通过直接用字节码语言编写恶意代码来绕过编译器(除非运行编译器是交易执行的一部分,但这将使执行变得更慢且更复杂)。因此,分类账交易系统106可以通过经由字节码验证实施安全保证——类型安全、引用安全和资源安全——来避免信任编译器。
此外,虚拟机222可以使用基于栈的字节码语言,该语言与更高级的源语言相比具有更少的指令。此外,每个指令具有可以经由甚至更小数量的原子步骤而表达的语义。这减小了分类账交易系统106的规格占用区(specification footprint),并使发现实现错误变得更容易。
如上面所提到的,虚拟机222可以为字节码语言实现字节码验证器和字节码解释器。字节码语言可以包括具有过程局部操作数栈(procedure-local operand stack)和寄存器的基于栈的虚拟机。非结构化控制流可以经由goto和标签(label)被编码。
开发者可以用IR编写交易脚本或模块,其然后被编译成字节码语言。编译将结构化控制流结构(例如条件、循环(loop))转换为非结构化控制流,并将复杂表达式转换为操纵操作数栈的少量字节码指令。虚拟机222可以通过验证、然后运行该字节码来执行交易。
虚拟机222可以支持各种类型和值:布尔值、无符号64位整数、256位地址、固定大小的字节数组、结构体(struct)(包括资源)和引用。在一些实施例中,结构体字段不可以是引用类型,这防止引用被存储在分类账状态中。在一些实施例中,虚拟机222没有堆(heap)(局部数据在栈上被分配内存(allocated),并且当分配内存过程返回时被释放)。可以在分类账状态中存储持久性数据。
内存池管理器212可以提供交易的存储器内缓冲区。特别地,内存池管理器212可以接收由验证者节点设备206的准入控制器210以及其他节点设备224(例如其他验证者节点设备)的内存池管理器提供的交易。实际上,由内存池管理的交易包括已经提交但尚未执行以及尚未经由共识达成一致的交易。
因为内存池管理器212管理多个交易(可能由同一用户账户提交的多个交易),所以内存池管理器212可以执行一系列附加检查。实际上,内存池管理器212可以执行附加检查以按照其他管理的交易来验证交易请求。
例如,在一个或更多个实施例中,内存池管理器212检查由准入控制器210转发的交易请求是否与已经存储的交易相冲突。为了说明,如果内存池管理器212已经存储了由发送准入控制器210所转发的交易请求的同一用户账户发送的一个或更多个交易,则内存池管理器212确定用户账户是否具有足够的数字资产来给已经存储的交易以及由准入控制器210转发的交易请求提供资金。如果内存池管理器212确定存在这样的可能性——已经存储的交易将消耗用户账户的足够的数字资产,使得无法给由准入控制器210转发的交易请求提供资金——则内存池管理器212可以拒绝由准入控制器210转发的交易请求的输入。
在满足了附加检查时,内存池管理器212可以接受交易请求(其现在将被称为“交易”)。在一个或更多个实施例中,验证者节点设备206可以向客户端设备202传输指示交易已经被添加到内存池管理器212的通知。在一些实施例中,验证者节点设备206还传输数字分类账的当前版本(例如,交易数据库的当前版本,或者更具体地,交易Merkle树)。在另外的实施例中,验证者节点设备206向客户端设备202传输标识符,该标识符与验证者节点设备206唯一地相关联。实际上,在一些实施例中,客户端设备202可以在对交易的状态的查询中包括验证者节点设备206的标识符。
在一个或更多个实施例中,在将交易输入到内存池管理器212中时,验证者节点设备206向其他节点设备224广播(即,传输)该交易。在一个或更多个实施例中,交易一被输入到内存池管理器212中,验证者节点设备206就广播该交易。在一些实施例中,验证者节点设备206广播交易作为周期性广播的一部分。在一个或更多个实施例中,验证者节点设备206确定交易将被包括在下一个交易区块中的可能性,并基于该确定来向其他节点设备224广播该交易。例如,在一些实施例中,验证者节点设备206仅当交易的序列号与对应的用户账户的下一序列号相等或连续时才向其他节点设备224广播交易(例如,当用户账户的当前序列号为2时,广播交易2、交易3和交易4,但不广播具有后续序列号的交易)。在一个或更多个实施例中,内存池管理器212维护有序队列,并基于该有序队列来确定交易将被包括在下一交易区块中的可能性。
在一个或更多个实施例中,在从其他节点设备224之一接收到交易时,验证者节点设备206执行当从客户端设备202接收到交易请求时所执行的相同检查。例如,验证者节点设备206可以使用内存池管理器212和/或准入控制器210来执行相同的初始检查和附加检查。因此,验证者节点设备206可以防止恶意验证者节点设备发送可能干扰验证者节点设备的操作的无效或以其他方式恶意的交易。在一些实施例中,当从其他节点设备224之一接收到交易时,验证者节点设备206将该交易添加到由内存池管理器212维护的有序队列。
在一个或更多个实施例中,内存池管理器212包括用户账户地址与待处理的交易(pending transaction)之间的映射,且在顶部构建各种索引。例如,如所提到的,内存池管理器212可以维护被称为有序队列的索引,该索引包括准备好被包括在下一个交易区块中的交易。在一个或更多个实施例中,内存池管理器212基于gas价格将有序队列内的交易进行排序,向由愿意每交易支付更高费用的用户提交的交易提供优先级。在一些实施例中,尽管有序队列中的交易基于gas价格排序,但是内存池管理器212可以将由同一账户提交的交易按在账户地址与待处理的交易之间的映射内的序列号进行排序。
在一个或更多个实施例中,内存池管理器212包括在被称为停车场(parking lot)的单独索引中的未准备好被包括在下一个区块中的交易。一旦某个事件指示交易准备好被包括在交易区块中(例如,具有紧接在前的序列号的交易被广播到其他节点设备224),内存池管理器212就可以将交易从停车场移动到有序队列。
在一个或更多个实施例中,内存池管理器212限制存储在其中的总交易数。在一些实施例中,内存池管理器212限制从同一用户账户存储的交易的数量。以这种方式,内存池管理器212可以防止用户账户不断攻击分布式数字分类账交易网络。
在一个或更多个实施例中,内存池管理器212将到期应用于存储在其中的交易。例如,内存池管理器212可以将生存时间(TTL)到期应用于交易。内存池管理器212可以周期性地检查交易的TTL到期。在一些实施例中,内存池管理器212将客户端指定的到期应用于交易。实际上,在一些实施例中,提交交易请求的客户端设备可以指定该交易的到期。在一个或更多个实施例中,内存池管理器212在客户端指定的到期上实施最小时间,以防止客户端通过提交具有低到期时间的许多交易而压垮验证者节点设备206。在确定了交易已经到期时(即,或者基于TTL到期,或者基于客户端指定的到期),内存池管理器212可以移除该交易。在一个或更多个实施例中,内存池管理器212利用单独的部件(例如系统TTL部件)来检查到期并相应地移除交易。
如图2所示,验证者节点设备206可以利用共识管理器214来将交易区块排序并就执行的结果达成一致。换句话说,共识管理器214将共识协议应用于或者在验证者节点设备206处组装的交易区块或者从其他节点设备224之一接收的交易区块。例如,当验证者节点设备206被选择为先导验证节点设备时(即,经由共识协议),共识管理器214可以识别包括存储在内存池管理器212中的交易(例如,在有序队列中包括的交易)的交易区块。共识管理器214然后可以将交易区块传输到其他节点设备224。
随后,验证者节点设备206可以利用执行引擎218来执行交易区块内的交易。其他节点设备224类似地执行交易区块内的交易。如下面将关于图12-图14B更详细讨论的,执行引擎218可以维护便笺式数据结构,该便笺式数据结构存储在永久存储装置中保持的与交易区块中的交易相关的数据结构的部分。实际上,执行引擎218可以在将交易区块的执行结果提交给永久存储装置之前,利用便笺式数据结构存储执行结果,直到共识被达成为止。例如,执行引擎218可以利用便笺式数据结构来跟踪分布式数字分类账交易网络在将交易区块添加到数字分类账时可能采取的各种潜在路径(被表示为“并行交易区块”)的执行结果。下面(例如关于图12)提供了关于便笺式数据结构的附加细节。
在一个或更多个实施例中,执行引擎218利用虚拟机222来执行交易区块内的交易。特别地,虚拟机222可以验证交易脚本和模块,(在交易发送者的账户下)发布模块,运行交易脚本,确定执行结果,以及运行收尾过程(例如,向用户收取gas费用并使用户的序列号递增)。在一个或更多个实施例中,如下面将关于图27-图28更详细讨论的,虚拟机222可以通过进行先予执行并随后确定交易之间的依赖性来进行对交易区块内的交易的并行执行。虚拟机222然后可以基于所确定的依赖性,进一步并行地执行交易的子集。
执行引擎218可以利用在暂存数据板(scratch data pad)中的数据结构的部分和对应于交易区块内的交易的执行结果来确定交易树的提议的根值(即,“根散列”)。共识管理器214然后可以使用存储在隐私签名管理器216处的私有密钥来签署所提议的根值,并尝试与其他节点设备224就所提议的根值达成一致。在一个或更多个实施例中,如果验证者节点设备206被选择为先导验证者节点设备,则验证者节点设备206可以关于所提议的根值与其他节点设备224通信。实际上,在一些实施例中,验证者节点设备206(作为先导验证者节点设备)在朝着最终决定收敛的一系列消息中与其他节点设备224通信。在一个或更多个实施例中,先导验证者节点设备参与通信,但不对所提议的根散列进行投票。该决定可以包括接受或拒绝交易区块中包括的交易的最终决定。
如果为相同的根值(例如,由验证者节点设备206确定的所提议的根值)提供了足够的投票(例如,至少2f+1个投票),则共识管理器214可以向执行引擎218提供交易区块(即,先前确定的来自执行交易区块的结果)准备好被提交给存储装置的指示。在一个或更多个实施例中,先导验证者节点设备接收共识投票,并确定区块是否已经完成(即,是否已经接收到足够的投票)。然后,先导验证者节点可以基于完成的这个确定来传输指示。在一个或更多个实施例中,该指示包括来自其他节点设备224的投票确认一致同意的根值的验证者节点设备的签名。响应于接收到该指示,执行引擎218可以将存储在便笺式数据结构处的相应执行结果发送到存储管理器220以被写入到永久存储装置中。此外,执行引擎218可以从便笺式数据结构中清除不再需要的值(例如,将不被提交给存储装置的并行交易区块,如将在下面更详细地讨论的)。
验证者节点设备206利用存储管理器220将执行结果添加到数字分类账。特别地,存储管理器220可以提交交易区块内的交易,包括基于执行结果对数字分类账的改变。在一个或更多个实施例中,存储管理器220还存储投票确认一致同意的根值的验证者节点设备的签名。在提交来自交易区块的交易时,存储管理器220(或执行引擎218)可以向每个交易分配版本,并将交易、根值和版本存储到交易数据库(例如交易树)。存储管理器220然后可以使版本号递增,用于分配给下一个交易。当交易被提交给存储装置时,共识管理器214可以通知内存池管理器212,内存池管理器212然后可以从它的内部存储装置中删除该交易。
在一个或更多个实施例中,当在存储交易区块时失败时,存储管理器220将“恐慌(panic)”(例如,与执行引擎218断开连接)。当重新建立连接时,存储管理器220和/或执行引擎218将确定分布式数字分类账交易网络的当前状态。例如,在一个或更多个实施例中,存储管理器220向执行引擎218发送来自先前提交的交易区块的根值,并且执行引擎218从那里继续。下面(例如关于图36)提供了关于在重启时的共识安全的附加细节。
在一个或更多个实施例中,验证者节点设备206还包括状态同步管理器部件(未示出)。特别地,当验证者节点设备206重启或落后于分布式数字分类账交易网络的当前提议的状态时,状态同步管理器可以执行同步操作。例如,如果共识管理器214识别出基于验证者节点设备206未知的数字分类账的版本(即,交易树的版本)的交易区块,则状态同步管理器可以将验证者节点设备206更新到最新状态以允许参与共识。为了说明,在一个或更多个实施例中,状态同步管理器拉出大量交易(chunks of transactions)并(例如,使用执行引擎218)执行该大量交易以确定分布式数字分类账交易网络的与当前一致同意的分类账状态一致的分类账状态。
在一些实施例中,验证者节点设备206还包括系统状态机管理器。特别地,系统状态机管理器可以执行总体的节点管理操作,例如将节点列入黑名单和处理不良交易。
如上面所提到的,除了为交易请求提供服务以外,分布式数字分类账交易网络的计算机节点还可以为对信息的查询提供服务。例如,在接收到对信息的查询时,验证者节点设备206的准入控制器210可以直接连接到存储管理器220。准入控制器210可以从存储管理器220接收所请求的信息以及对应的证明。验证者节点设备206然后可以将信息转发给提交客户端设备。虽然图2的讨论是在验证者节点设备206的上下文中呈现的,但是在一个或更多个实施例中,分布式数字分类账交易网络的全节点设备为对信息的查询提供服务。
在一个或更多个实施例中,验证者节点设备206(或分布式数字分类账交易系统的其他计算机节点)将在遇到技术问题(例如崩溃(crash))时重启。验证者节点设备206的部件可以响应于技术问题或在预料到技术问题时相应地进行行动。例如,在一个或更多个实施例中,准入控制器210在崩溃时丢失正在对其执行初始检查的(例如,由客户端设备202提交的)交易。因此,验证者节点设备206可能无法如预期的那样响应客户端设备202(例如,无法通知客户端设备202交易已被内存池管理器212接受)。于是,客户端设备202然后可以重新提交交易。
内存池管理器212可以类似地在崩溃时丢弃所有已存储的交易。在一个或更多个实施例中,内存池管理器212实现预写式日志(walk-ahead logging,WAL)以避免与丢弃交易相关联的问题。
在一个或更多个实施例中,共识管理器214在提交对应于交易区块的投票之前,将投票数据存储到WAL。例如,在一些实施例中,共识管理器214在必要时利用存储管理器220存储和删除投票数据。在崩溃之后,共识管理器214可以检索投票数据以识别被投票表决的交易区块。在一些实施例中,共识管理器214避免对与该投票数据冲突的区块进行操作。
在一个或更多个实施例中,在崩溃之后重启时,执行引擎218可以重新建立与共识管理器214的连接,并检索与由共识管理器214存储在WAL中的投票数据相对应的交易区块。执行引擎218然后可以重新执行交易区块,并且如果得到的根值与存储在WAL中的根值不匹配则提供错误。此外,共识管理器214可以从存储管理器220中检索交易树的最新被提交的版本。如果对于提交另一区块有足够的投票,则共识管理器214可以请求经由执行来提交交易区块。
如果在将交易区块添加到永久存储装置之前发生崩溃,则存储管理器220可以重新建立到执行引擎218的连接。执行引擎218然后可以向存储管理器220提供下一个交易区块。特别地,执行引擎218可以重新执行交易区块以得到写集(write-sets)。在一些实施例中,验证者节点设备206在完成提交交易区块或完成从执行引擎218到存储管理器220的同步调用时实现回调,在此之后执行引擎218修剪便笺式数据结构。此外,在将交易区块提交给永久存储装置时,存储管理器220可以删除由共识管理器214存储在WAL中的与交易区块相对应的投票数据。
关于图1-图2描述的计算设备的每个部件可以使用任何合适的通信技术彼此通信。将认识到,尽管这些部件被示出和/或被描述为分开的,但是这些部件中的任何部件可以组合成更少的部件,例如组合成单个设施、划分成更多的部件、或者被配置成如可以服务于特定实施例的不同的部件。
部件可以包括软件、硬件或两者。例如,部件204-222可以包括存储在计算机可读存储介质上并可由一个或更多个计算设备的处理器执行的一个或更多个指令。当由一个或更多个处理器执行时,分类账交易系统106的计算机可执行指令可以使客户端设备和/或服务器设备执行本文描述的方法。替代地,部件204-222及其相应的元件可以包括硬件,例如用于执行特定功能或功能组的专用处理设备。另外,部件204-222可以包括计算机可执行指令和硬件的组合。
此外,分类账交易系统106的部件204-222可以例如被实现为一个或更多个操作系统、一个或更多个独立的应用、应用的一个或更多个模块、一个或更多个插件、一个或更多个库函数或可以由其他应用调用的函数、和/或云计算模型。因此,部件204-222可以被实现为独立的应用,例如桌面或移动应用。此外,部件204-222可以被实现为托管在远程服务器上的一个或更多个基于web的应用。部件204-222也可以在一套移动设备应用或“app”中实现。
II.存储
A.概述
如上面所提到的,关于利用传统区块链系统跨计算设备存储数据存在许多技术问题。实际上,传统区块链系统是僵化和不灵活的(例如,无法向单独的计算设备提供灵活的存储管理选项)并且利用过多的计算机资源。分类账交易系统106可以以提高安全性和灵活性并降低存储和处理要求的方式,实现跨分布式数字分类账交易网络的计算设备的存储过程。实际上,分类账交易系统106可以利用各种数据结构和存储过程,这些数据结构和存储过程降低对篡改的敏感性、允许计算机设备(例如验证者节点或全节点)基于局部特征来灵活地修改数字分类账的存储、以及允许计算机存储和处理开销的减少。
例如,在一个或更多个实施例中,分类账交易系统106生成单个版本化数据库(例如,反映在任何特定迭代处的交易、事件和账户状态的数据库)。版本号可以包括对应于系统已经执行的交易的数量的无符号64位整数时间戳。在每个版本i处,数据库可以保存(交易Ti、交易输出Oi、分类账状态Si)元组。给定执行函数f,元组可以指示针对分类账状态Si-1执行交易Ti会产生输出Oi和新的分类账状态Si;即,f(Si-1,Ti)→(Oi,Si)。为了说明,图3-图6示出了根据一个或更多个实施例的由分类账交易系统106利用的数据结构。特别地,分类账交易系统106可以将交易(Ti)存储在交易数据结构中,将交易输出(Oi)存储为事件数据结构,并将分类账状态(Si)存储为可以用于经由分布式数字分类账交易网络获得共识的状态数据结构。
在一个或更多个实施例中,分类账交易系统106可以在客户端设备处,通过重新执行分类账历史中的对应于特定分类账状态的每个交易Ti并且然后将所得到的分类账状态与在版本化数据库中的特定分类账状态Si和交易输出Oi进行比较,来验证该特定分类账状态是正确的。这允许客户端设备审查分布式数字分类账交易网络的验证者节点设备以确保交易被正确地执行。
例如,图3示出了根据一个或更多个实施例的由分类账交易系统106生成和维护的状态数据结构300。如图3所示,状态数据结构300包括状态数据库302。在一个或更多个实施例中,状态数据库302包括与分布式数字分类账交易网络的每个用户账户相关联的账户数据304。例如,分类账交易系统106可以通过将用户账户的账户值和该账户值的散列存储在状态数据库302内来生成在状态数据库302内的特定用户账户的账户数据。给定的用户账户的账户值可以包括与用户账户相关的任何类型的数据(例如,用户账户所持有的数字资产、对应于用户账户的一个或更多个交易事件计数器以及存储在用户账户中的其他模块和/或资源等)。在一个或更多个实施例中,分类账交易系统106通过将散列函数应用于账户值来生成账户值的散列。如将要讨论的,在一个或更多个实施例中,分类账交易系统106使用与用户账户相关联的账户数据(例如账户值)来生成对应于该用户账户的账户状态表示(例如,在状态Merkle树内的散列)。
例如,如在图3中进一步所示的,状态数据结构300还包括状态树306。在一个或更多个实施例中,状态树306包括状态Merkle树。例如,状态树306可以包括具有2n个叶的状态Merkle树(例如稀疏Merkle树),其中从状态树306的根(即,状态根308)到叶节点(即,叶节点310a-310e之一)的路径表示与用户账户的地址相对应的n位地址键。在一个或更多个实施例中,分类账交易系统106利用n位地址键作为对应的用户账户的地址。
在由地址键表示的地址对应于现有的用户账户的情况下,分类账交易系统106可以将账户状态表示存储在与该地址键相关联的叶节点内(即,作为叶节点的一部分)。在一个或更多个实施例中,分类账交易系统106通过将散列函数应用于与用户账户相关联的账户数据以生成对应于账户数据的散列值来生成用户账户的账户状态表示。具体地,分类账交易系统106可以将散列函数应用于账户数据的一个或更多个分量。例如,在一个或更多个实施例中,分类账交易系统106将散列函数应用于用户账户的账户值以生成账户值的散列(即,作为用户账户的账户数据的一部分被存储的相同散列值)。分类账交易系统106然后可以将账户值的散列存储为账户状态表示。在一些实施例中,分类账交易系统106通过进一步将对应于账户数据的散列值(例如账户值的散列)与附加数据(例如用户账户的逐出日期)组合来生成账户状态表示。
在一个或更多个实施例中,如果地址键对应于不存在的用户账户,则分类账交易系统106在叶节点内存储默认值(例如空串)。如图3所示,如果内部节点的所有子节点对应于不存在的用户账户,则分类账交易系统可以在该内部节点内存储默认值(由图3的默认节点312a-312c表示)。
在一个或更多个实施例中,分类账交易系统106通过将状态树306内的每对节点内存储的节点值进行组合并计算散列,来生成状态树306的根值。特别地,对于状态树306的每个内部节点,分类账交易系统106可以组合(例如,连接(concatenate))存储在各自的子节点内的节点值,然后将散列函数应用于组合的值。在一些实施例中,分类账交易系统106对存储在子节点内的节点值计算散列,然后组合散列值以生成对应的内部节点的节点值。分类账交易系统106可以从状态树306的底部开始并朝着顶部前进迭代地将节点值进行组合并计算散列,最终生成状态树306的根值。分类账交易系统106然后可以将根值存储在状态树306的状态根308中。因此,存储在状态根308中的根值表示在分布式数字分类账交易网络的特定状态下的分布式数字分类账交易网络的每个用户账户的账户状态。如下面将讨论的,分类账交易系统106可以进一步将状态树306的根值存储在分布式数字分类账交易网络的交易树内。
此外,在一个或更多个实施例中,分类账交易系统106为分布式数字分类账交易网络的每个状态生成状态树。特别地,对于跨分布式数字分类账交易网络执行的每个交易(或交易区块),分类账交易系统106可以生成表示由交易(或交易区块)导致的分布式数字分类账交易网络的状态的新状态树。特别地,新状态树可以表示在执行交易区块之后每个用户账户的账户状态(即,反映与那些特定交易相关联的用户账户已经如何改变)。在一些实施例中,分类账交易系统106在每个交易的执行之后更新状态树(例如,通过更新对应于与交易相关联的用户账户的账户状态表示)。
在一些实施例中,分类账交易系统106将分布式数字分类账交易网络的初始状态表示为空状态(例如,空状态数据库)。分类账交易系统106然后可以通过特殊交易T0而不是经历正常的交易过程来生成创世状态,该特殊交易T0定义了待创建的特定模块和资源。分类账交易系统106可以将客户端设备和验证者节点设备配置为仅接受以特定T0开始的分类账历史,该特定T0通过它的加密散列标识。
如上面所提到的,在一些实施例中,分类账交易系统106通过存储已修改的节点的子集来减少存储和处理需要。例如,分类账交易系统106可以生成具有与已改变的用户账户状态相对应的节点值的状态树部件。这些节点值可以指向先前状态树中的与未改变的用户账户状态相对应的节点值。以这种方式,分类账交易系统106可以跟踪在不同状态下改变的节点而不需要复制整个状态树。在一些实施例中,分类账交易系统106利用这种方法来跟踪多个状态,同时等待共识并将共识状态数据结构提交给存储器。下面(例如,关于图8-图9、图14A-图14B)提供了关于存储已修改的节点的子集以跟踪不同状态的附加细节。
因为存储在状态数据库302中的账户数据304和存储在状态树306中的账户状态表示都包括用户账户的账户值的散列,所以状态数据库302可以包括账户状态表示与用户账户的账户值之间的映射。例如,分类账交易系统106可以使用账户值的对应的散列来给账户数据304内的账户值编索引。实际上,分类账交易系统106然后可以利用状态树306来找出给定的用户账户的账户值。具体地,分类账交易系统106可以找出状态树306的状态根308,然后(例如,使用用户账户的地址)遍历状态树306以找到用户账户的叶节点。分类账交易系统106然后可以识别存储在叶节点内的账户状态表示,并使用状态数据库302的映射以基于用户账户的该账户状态表示(即,基于作为账户状态表示的一部分被存储的账户值的散列)来找出用户账户的账户值。
除了生成存储与账户状态相关联的数据的数据结构之外,分类账交易系统106还可以生成存储与在跨分布式数字分类账交易网络执行交易时生成的交易事件相关联的数据的数据结构。图4示出了根据一个或更多个实施例的由分类账交易系统106生成和维护的事件数据结构400。如图4所示,事件数据结构400包括事件树402。在一个或更多个实施例中,事件树402包括事件Merkle树(例如Merkle累加器)。
在一个或更多个实施例中,事件树402对应于跨分布式数字分类账交易网络执行的特定交易,并且叶节点408a-408f对应于通过该交易的执行生成的交易事件。换句话说,在跨分布式数字分类账交易网络执行交易时,分类账交易系统106可以生成任何数量的交易事件(即,零个或更多个)。因此,分类账交易系统106可以生成对应于该交易并表示在它的执行时生成的交易事件的事件树。
特别地,在分类账交易系统106在执行交易时生成一个或更多个交易事件的情况下,分类账交易系统106可以生成对应于每个交易事件的交易事件表示。分类账交易系统然后可以将每个交易事件表示存储在事件树402的叶节点408a-408f之一内。分类账交易系统106可以通过将散列函数应用于与交易事件相关联的事件数据的一个或更多个分量来生成对应于给定交易事件的交易事件表示。
此外,在一个或更多个实施例中,分类账交易系统106如上面参考图3的状态树306的根值所述的(例如,通过迭代地将节点值进行组合并计算散列)生成事件树402的根值。分类账交易系统106可以将根值存储在事件树402的事件根406中。因此,存储在事件根406内的根值可以表示与跨分布式数字分类账交易网络执行的交易相关联的每个交易事件。如下面将讨论的,分类账交易系统106可以进一步将事件树402的根值存储在分布式数字分类账交易网络的交易树内。
另外,如图4所示,事件数据结构400还包括事件数据库404。在一个或更多个实施例中,事件数据库404包括对应于由事件树402表示的交易事件的事件数据410。实际上,在一些实施例中,事件数据410包括对应于与跨分布式数字分类账交易网络执行的交易相关联的交易事件的事件数据(即,由分类账交易系统106所生成的任何事件树表示的每个交易事件)。对应于交易事件的事件数据可以包括对应于交易事件的各种不同类型的数据(例如,在与交易事件相关联的用户账户的状态数据结构内的地址、在生成交易事件之后用户账户的交易事件计数器的计数值、交易事件的细节诸如交易金额,等等)。如上面所提到的,在一个或更多个实施例中,分类账交易系统106使用对应于交易事件的事件数据来生成与该交易事件对应的交易事件表示(例如散列)。在一个或更多个实施例中,事件数据库404包括交易事件表示与其对应的事件数据之间的映射,并且分类账交易系统106利用事件数据库404以基于对应的交易事件表示来找到事件数据,反之亦然。
除了存储与用户账户和交易事件相关联的数据的数据结构之外,分类账交易系统106还可以生成存储与跨分布式数字分类账交易网络执行的交易相关联的数据的数据结构。图5示出了根据一个或更多个实施例的由分类账交易系统106生成和维护的交易数据结构500。
如图5所示,交易数据结构500包括交易树502。在一个或更多个实施例中,交易树502包括交易Merkle树。例如,交易树502可以包括仅附加(append-only)交易Merkle树(例如Merkle累加器),分类账交易系统106针对跨分布式数字分类账交易网络执行的各个交易,将新的叶节点附加到该仅附加交易Merkle树。当分类账交易系统106添加新的叶节点时,交易树502继续增长。在一个或更多个实施例中,具有k个对象的交易树502的结构类似于大小为2n的满二叉树,其中n是使k≤2n的最小数。然而,如图5所示,在一些实施例中,分类账交易系统106用默认节点(如由默认节点504a-504b所表示的)替换任何空的子树。
分类账交易系统106可以在叶节点506a-506e中的每个叶节点内存储对应于与叶节点相关联的交易的交易表示。在一个或更多个实施例中,分类账交易系统106通过组合几个数据分量来生成对应于特定交易的交易表示。例如,如图5所示,分类账交易系统可以组合(例如,连接)已签署的交易508、状态树根值510和事件树根值512。
已签署的交易508包括特定交易的经认证表示。例如,已签署的交易508可以包括(例如,用交易标识符或其他交易细节)标识利用用户账户的私有密钥而签署的交易的数据。为了说明,与用户账户相关联的用户的客户端设备可以通过利用对应于用户账户的私有密钥来验证交易是否被授权,从而生成已签署的交易508。
如所示,分类账交易系统106还可以在生成交易树502内的交易表示的过程中利用状态树根值510。状态树根值510包括在执行交易时生成的存储在状态树的状态根(例如,图3的状态树306的状态根308)内的根值。换句话说,状态树根值510表示在分类账交易系统106已经执行了该特定交易之后分布式数字分类账交易网络的状态。
此外,分类账交易系统106还可以在生成交易树502内的交易表示的过程中利用事件树根值512。事件树根值512包括在执行交易时生成的存储在事件树的事件根(例如,图4的事件树402的事件根406)内的根值。换句话说,事件树根值512表示在执行交易时生成的事件。在一个或更多个实施例中,分类账交易系统106包括更少的数据、不同的数据或附加数据作为组合的数据分量的一部分。例如,分类账交易系统106可以包括特定交易的执行状态或在执行交易中使用的gas。
如图5中进一步示出的,分类账交易系统106可以将散列函数514应用于组合的数据分量,并将所得到的散列值作为交易表示存储在叶节点506a-506e之一内。然而,在一个或更多个实施例中,分类账交易系统106可以将散列函数514单独地应用于每个数据分量,然后组合所得到的散列值以生成交易表示。
此外,分类账交易系统106可以确定在交易树502中的各种节点的值,包括交易根516的根值。特别地,分类账交易系统106可以组合对应于子节点的节点值,然后将散列函数应用于组合的值以确定交易树502内的节点值。分类账交易系统106可以迭代地组合节点值并应用散列函数(从树的底部工作到树的顶部)以生成交易树502的根值。
通过以这种方式构建交易树502,交易树502的交易根516的根值表示事件、交易和状态的组合。实际上,在一个或更多个实施例中,通过利用状态树根值和事件树根值来生成交易树的根值,分类账交易系统106可以生成在数字分类账的整个生命中唯一地标识交易、事件和(历史的和当前的)账户状态的交易树的根值。换句话说,对事件、账户或交易的修改将通过各种Merkle树传播,并导致交易树的不同根值。
尽管在图5中未示出,但是在一个或更多个实施例中,交易数据结构500还包括交易数据库。交易数据库可以包括与存储在交易树502内的交易表示相对应的交易数据。在一个或更多个实施例中,交易数据库还可以包括交易数据与对应的交易表示之间的映射。
在一个或更多个实施例中,分类账交易系统106利用数字分类账内的交易数据结构的根值来跨分布式数字分类账交易网络获得共识。例如,图6示出了根据一个或更多个实施例的用于获得共识的分类账信息的表示。如图6所示,分类账交易系统106可以获得关于分类账信息602的共识,该分类账信息602包括版本信息604、交易树根值606和共识证书散列608。
如图6所示,分类账信息602可以包括版本信息604。特别地,版本信息604可以包括表示跨分布式数字分类账交易网络执行的最新交易(或交易区块)的版本的数据。换句话说,存储在版本信息604内的数据可以表示在执行最新的交易时的交易树的版本。
如图6所示,分类账信息602还可以包括交易树根值606。交易树根值606包括如上所述(即,通过将交易树的节点值进行组合并计算散列)由分类账交易系统106生成的交易树的根值(例如,图5的交易树502的交易根516的根值)。在一个或更多个实施例中,分类账交易系统106利用交易树根值606作为数字分类账的表示。实际上,如刚刚提到的,交易根516的根值可以表示在数字分类账的整个历史中的交易、事件和账户状态。
在一个或更多个实施例中,分类账交易系统106可以在分类账信息602中存储附加数据。例如,分类账交易系统106可以在分类账信息602内存储分布式数字分类账交易网络的当前时间戳。分类账交易系统106可以响应于从客户端设备接收的查询而向客户端设备提供这样的数据(以及上面所述的数据)。
在一个或更多个实施例中,分布式数字分类账交易网络的验证者节点设备利用分类账信息602来生成投票并且就分布式数字分类账交易网络的当前状态达成共识。如图6所示,分类账交易系统106可以从验证者节点设备612a-612c生成验证者签名(由密钥610a-610c表示)。如上面所提到的,在关于分类账信息602达成共识时,分类账交易系统106生成与对分类账信息602进行投票的验证者节点设备(例如验证者节点设备612a-612c)相对应的验证者签名。例如,分类账交易系统106可以通过利用与验证者节点设备612a-612c相关联的私有密钥来加密对应于交易的分类账信息602,从而生成验证者签名。下面(例如,关于图32-图33)提供了关于获得来自验证者节点的共识的附加细节。
在为交易树的版本N生成验证者签名时,分类账交易系统106可以丢弃或盖写(overwrite)交易树的先前版本的验证者签名。然而,在一些实施例中,如果交易的执行标明对验证者节点设备集合的改变,则分类账交易系统106将交易树的先前版本(即,对应于先前的验证者节点设备集合)的验证者签名存档。例如,分类账交易系统106可以在签名数据结构内存储与先前的验证者节点集合相对应的验证者签名。
虽然在图中未示出,但是分类账交易系统106可以利用签名数据结构来存储与分布式数字分类账交易网络相关联的验证者集合历史和签名历史。特别地,验证者集合历史可以包括与能够对交易区块进行投票的每个验证者节点设备集合(例如,与投票时期相关联的每个验证者节点设备集合)相关联的验证者节点设备。在一个或更多个实施例中,分类账交易系统106通过存储与来自该集合的每个验证者节点设备相关联的公开密钥来存储验证者节点设备的完整集合。实际上,验证者集合历史包括对能够对交易区块进行投票的验证者节点设备集合的改变历史。签名历史可以包括与在验证者节点设备集合改变之前(例如,在投票时期结束之前)跨分布式数字分类账交易网络执行的每个交易相关联的验证者签名。
另外,如图6所示,分类账信息602可以包括共识证书散列608。分类账交易系统106可以通过将散列值应用于由先导验证者节点设备在从其他验证者节点设备收集到必要的投票从而就包括最新交易的交易区块达成共识时生成的共识证书,来生成共识证书散列608。共识证书可以包括法定决议票数证书(指投票验证交易区块的验证者节点设备的“法定决议票数”)。下面(例如,关于图31-图32)提供了关于获得共识、验证者节点、投票和投票时期的附加细节。
在一个或更多个实施例中,分类账交易系统106可以将交易区块链接起来。实际上,分类账交易系统106可以通过在交易区块内包括另一交易区块的共识证书散列而将交易区块链接起来。例如,分类账交易系统106可以包括先前的(例如,紧接在前面的)交易区块的共识证书散列。在一些实施例中,分类账交易系统106可以包括固定的共识证书散列值。
在一个或更多个实施例中,每个验证者节点设备维护本地记录树(例如交易树502)。树的初始根可以包括由当前的验证者节点设备集合达成一致的共识证书散列,作为当前时期的设置的一部分。特别地,本地树的每个分支可以包括在交易区块和共识证书之间交替的记录链。在一些实施例中,当被选择时,先导验证者节点设备提议新的交易区块,通常扩展了本地树的最长分支(最长分支中的一个分支)的法定决议票数证书。如果提议被成功地广播,则诚实的验证者节点设备可以验证数据,执行交易区块,并将投票发送回先导验证者节点设备。在接收到同意由交易区块的执行产生的数字分类账的状态的足够投票时,先导验证者节点设备可以为交易区块创建共识证书,并将它广播给其他验证者节点设备,从而将链长度扩展了一个交易区块。随后,分类账交易系统106可以选择将推动另一轮共识的新先导验证者节点设备,进一步扩展链。
因此,分类账交易系统106可以利用数据结构来存储、证实和分发表示由分布式数字分类账交易网络实现和维护的数字分类账的数据。特别地,分类账交易系统106可以在交易数据结构内存储描述跨分布式数字分类账交易网络执行的每个交易、由这些交易产生的交易事件以及这些交易事件如何改变用户账户的数据。对事件、账户或交易的任何未经授权的修改将会修改对应的数据结构,修改分类账信息,并且无法跨分布式数字分类账交易网络获得共识。
B.用于存储删除的策略
如上面所提到的,传统区块链系统生成并存储大量数据。例如,传统系统可以生成关于跨网络已经执行的交易的数据以及与网络的用户账户相关联的数据。这些传统系统中的许多系统将数据存储在网络上(即,存储在参与网络的计算机节点上)。然后,传统系统可以使用存储在网络上的数据来更新网络的状态(即,更新在网络上实现的数字分类账)和/或为对信息的查询提供服务。
然而,如上面所提到的,这些传统区块链系统遭受导致低效和不灵活的操作的技术缺陷。例如,传统区块链系统常常是低效的,因为它们将与数字分类账有关的所有数据(即,数字分类账的整个历史)存储在参与网络的计算机节点上。随着数字分类账的增长,传统系统需要来自计算机节点的更多计算资源(例如计算存储器),以便维护对应于数字分类账的数据。
除了效率顾虑以外,传统区块链系统也是不灵活的。特别地,许多传统区块链系统严格地要求参与网络的计算机节点存储数字分类账的整个历史,而不管该计算设备的角色如何。于是,传统系统可能要求一些计算机节点存储比完成它们各自的角色所必需的更多的数据。因此,传统系统常常无法实现适应计算机节点的需要的灵活的存储要求。
分类账交易系统106的一个或更多个实施例实现灵活的存储删除和合并,以更有效地管理参与分布式数字分类账交易网络的计算机节点的有限存储资源。特别地,分类账交易系统106可以利用可配置的数据存储删除规则来移除存储在跨分布式数字分类账交易网络的各种计算机节点处的各种数据结构(其全部或一部分)。实际上,分类账交易系统106可以根据用户偏好、计算设备角色或功能(例如,验证者节点与全节点)或存储能力(例如剩余存储),跨不同设备实现不同的数据存储删除规则。例如,计算机节点的用户可以定义保持什么数据结构(什么类型、什么部分或者以什么频率保持)或者多长时间(例如多久)。为了说明,分类账交易系统106可以(经由计算机节点的用户界面)接收指示选择在每周的一天中的特定时间识别账户余额的用户交互。分类账交易系统106可以遍历数据结构(例如,状态数据库和/或状态树),为所请求的信息识别相关节点,以及移除剩余数据。因此,分类账交易系统106可以灵活地确定在分布式数字分类账交易网络的各个计算设备处要保持和/或删除什么事件、交易、状态和/或账户数据。
分类账交易系统106可以移除数据,同时仍然保持证实或准确地确定历史数字分类账或所提议的数字分类账的共识的能力。例如,分类账交易系统106可以从数据库中移除底层数据,同时在经认证数据结构内保持数据表示(例如散列)。这种方法允许分类账交易系统106在不保持用于生成结构本身的底层数据的情况下确认历史的数据结构或所提议的数据结构的有效性。
在一些实施例中,分类账交易系统106可以移除数据结构的不同部分以减少在计算机节点处的存储负担。例如,在一个或更多个实施例中,分类账交易系统106在计算机节点处删除在交易树中存储的对应于完整的子树(completed subtree)的数据。在一些实施例中,分类账交易系统106还可以合并数据结构(例如,反映不同状态的结构)以减小大小和存储器要求。为了说明,在更新分布式数字分类账交易网络的状态时,分类账交易系统106可以生成指向先前状态树中的与未改变的用户账户状态对应的节点值的状态树部件(而不是整个状态树)。
在一个或更多个实施例中,分类账交易系统106将不同的存储删除规则应用于不同的计算设备(例如,取决于计算机节点是全节点设备还是验证者节点设备的不同规则)。在一些实施例中,分类账交易系统106基于特定计算机节点的能力或偏好来删除和/或合并数据结构。以这种方式,分类账交易系统106可以灵活地应用不同的存储删除和合并规则以提高存储资源的效率。
例如,图7示出了根据一个或更多个实施例的删除存储在计算机节点处的交易树的一部分的分类账交易系统106。如图7所示,分类账交易系统106分析存储在验证者节点设备730处的交易树702。如上面所提到的,交易树702的叶节点704a-704f对应于跨分布式数字分类账交易网络执行的各个交易。实际上,当新的交易跨分布式数字分类账交易网络被执行时,分类账交易系统106将对应于那些交易的新叶节点附加到交易树702。
然而,在一个或更多个实施例中,分类账交易系统106可以确定验证者节点设备730将不为对信息的查询提供服务。例如,分类账交易系统106可以确定有足够数量的全节点设备参与分布式数字分类账交易网络,以响应对信息的查询。在确定验证者节点设备730将不为查询提供服务的过程中,分类账交易系统106可以确定仅维护交易树702的使验证者节点设备730执行验证角色所必需的那些节点(例如,维护存储在那些节点内的数据)。因此,分类账交易系统106可以应用一组存储删除规则来删除对于验证不是必需的树节点(例如,删除存储在那些节点内的数据),以便减少在存储交易树720中利用的存储量。
例如,在一个或更多个实施例中,分类账交易系统106确定子树是完整的,并且删除在该子树中包括的子节点,同时维护该子树的根节点。在一个或更多个实施例中,当子树中的每个节点(叶节点除外)具有两个子节点时,分类账交易系统106确定该子树是完整的。
例如,如图7所示,分类账交易系统106确定来自内部节点706c的子树是满的(例如,是完整的或已填充的)。作为响应,分类账交易系统106删除对应于子树的叶节点704a-704d和内部节点706a-706b(由虚线表示)。将认识到,删除叶节点704a-704d还可以包括删除在对应于交易树702的数据库中的条目。分类账交易系统106将内部节点706c维护为该子树的根节点。
类似地,分类账交易系统106确定来自内部节点706d的子树是满的。作为响应,分类账交易系统106删除叶节点704e-704f(和/或对应的数据库条目)。分类账交易系统106将内部节点706d维护为该子树的根节点。如在图7中可以看到的,分类账交易系统106维护包括叶节点704g的子树,因为该子树不是完整的,如在该子树内包含默认节点708所指示的。
当分类账交易系统106继续响应于交易执行而将叶节点附加到交易树702时,分类账交易系统106可以继续识别完整的子树,并删除这些子树的子节点,同时维护它们的根节点。在一个或更多个实施例中,分类账交易系统106还识别由确切地一个叶节点构成的子树,并用表示叶节点的单个节点替换这些子树。在一个或更多个实施例中,分类账交易系统106维护子树的根节点,以使验证者节点设备730能够参与验证交易区块。实际上,通过维护子树的根节点,分类账交易系统106可以在附加新的叶节点之后重新评估交易树702的根节点710的根值。通过维护包含反映叶节点的散列值的根节点,分类账交易系统106仍然可以验证交易树的准确性,而无需存储最初用于确定在根处的散列值的叶节点。
如图7进一步示出的,分类账交易系统106示出了存储在全节点设备740处的交易树720的维护。实际上,如图7所示,当与验证者节点设备730相比时,分类账交易系统106为全节点设备740实现不同的存储方法。例如,在一个或更多个实施例中,分类账交易系统106确定全节点设备740将为对信息的查询提供服务。因此,分类账交易系统106确定全节点设备740将整个地存储交易树720(例如,存储数字分类账的全部历史)。因此,分类账交易系统106可以防止删除交易树720或它的节点。更确切地,如图7所示,当交易跨分布式数字分类账交易网络被执行时,分类账交易系统106将对应于这些交易的新叶节点附加到交易树720。因此,存储在全节点设备740处的交易树720随着新近执行的交易而增长。
除了删除或合并交易数据结构的部分之外,分类账交易系统106还可以删除或合并存储在计算机节点处的状态数据结构(或其他数据结构)以减少存储在计算机节点处的数据量。例如,图8示出了根据一个或更多个实施例的删除或合并存储在计算机节点处的状态树的部分的分类账交易系统106。
如图8所示,分类账交易系统106管理存储在验证者节点设备802处的状态树804。如上面所讨论的,状态树804的叶节点806a-806f存储对应于用户账户的账户状态表示,并且存储在状态树804的根节点808内的根值表示跨分布式数字分类账交易网络的账户的状态。如进一步提到的,当交易被执行时,分布式数字分类账交易网络的一个或更多个用户账户被修改。因此,分类账交易系统106可以生成新的状态树以表示由每个交易(或交易区块)产生的分布式数字分类账交易网络的状态。因此,在一些实施例中,分类账交易系统106在分布式数字分类账交易网络的计算机节点处存储状态数据结构内的每个状态树。
然而,分类账交易系统106可以减少在存储状态数据结构中利用的存储量。特别地,在一个或更多个实施例中,分类账交易系统106确定验证者节点设备802将不为对信息的查询提供服务,且因此将不存储表示分布式数字分类账交易网络的先前状态的状态树。实际上,因为验证者节点设备802仅需要分布式数字分类账交易网络的最新状态来确定下一个状态,所以分类账交易系统106可以确定验证者节点设备802将仅存储最新的状态树(或数据结构的某个其他子集,例如前两个状态树)。
因此,如图8所示,在执行交易时,分类账交易系统106盖写状态树804以生成状态树820。尽管图8将状态树804和状态树820示为单独的树结构,但这仅仅是为了说明的目的,以示出对存储在验证者节点设备802处的状态树做出的改变。
特别地,分类账交易系统106通过更新存储在状态树804处的被交易修改的节点值来盖写状态树804(并生成状态树820)。如图8所示,交易的执行修改了对应于存储在叶节点806d处的账户状态表示的用户账户D。作为响应,分类账交易系统106通过更新对应于存储在叶节点806d处的用户账户D(现在被示为在状态树820下的用户账户D’)的账户状态表示来盖写状态树804。分类账交易系统106进一步更新在叶节点806d所源自的节点(即,内部节点810和根节点808)处存储的节点值。因此,分类账交易系统106可以在验证者节点设备802处存储随着每个交易(或交易区块)而更新的一个状态树,以反映分布式数字分类账交易网络的最新状态。
在一些实施例中,分类账交易系统106可以生成反映对状态数据结构的先前版本的改变的状态数据结构部件,而不是盖写状态数据结构。以这种方式,分类账交易系统106可以存储状态数据结构的多个版本而不存储状态数据结构的全部。例如,如图8中进一步所示的,分类账交易系统106管理在全节点设备830处的状态树832。实际上,如图8所示,分类账交易系统106以保留在不同状态下的数据表示的方式合并两个树,而不是存储两个满状态树或用后续的树盖写先前的状态树。
例如,在一个或更多个实施例中,分类账交易系统106确定全节点设备830将为对信息的查询提供服务。因此,分类账交易系统106确定全节点设备830将在状态数据结构内存储对应于分布式数字分类账交易网络的每个状态的数据。
如图8所示,分类账交易系统106生成具有与被交易修改的用户账户状态对应的节点值的状态树部件834。实际上,如图8所示,交易修改了对应于在叶节点836d处存储的账户状态表示的用户账户D。作为响应,分类账交易系统106通过生成用于存储已更新的节点值的节点来生成状态树部件834。
特别地,如图8所示,分类账交易系统106通过生成叶节点836e并在其中存储用户账户D(被示为用户账户D’)的修改后的账户状态表示来生成状态树部件834。如所示,分类账交易系统106进一步生成内部节点838和根节点840。分类账交易系统106将已更新的节点值存储在内部节点838中(从先前的状态中的存储在内部节点842处的节点值进行修改),并将已更新的节点值存储在根节点840中(从先前的状态树中的存储在根节点844处的节点值进行修改)。因此,分类账交易系统106利用状态树部件834来存储作为执行交易的结果而已经改变的状态树832的节点值。
如图8所示,分类账交易系统106进一步使状态树部件834的节点与未被交易修改的状态树832的节点相关联。特别地,状态树部件834的内部节点838指向状态树832的叶节点836c(即,与状态树832的叶节点836c相关联)。因此,分类账交易系统106基于存储在叶节点836c处的未被修改的节点值和存储在叶节点836e处的已修改的节点值来生成状态树部件834的内部节点838的节点值。类似地,状态树部件834的根节点840指向状态树832的内部节点846。因此,分类账交易系统106基于存储在内部节点846处的未被修改的节点值和存储在内部节点838处的已修改的节点值来生成状态树部件834的根节点840的根值。如图8所示,存储在内部节点846处的未被修改的节点值基于存储在叶节点836a-836b处的未被修改的节点值。因此,分类账交易系统106跟踪由交易的执行产生的已修改和未被修改的节点值而不完全复制状态树832。
在一个或更多个实施例中,分类账交易系统106可以利用状态树部件来存储多个状态,然后删除状态树内的节点以减少存储在计算机节点处的数据量。例如,计算机节点可以决定从存储反映多个状态的多个数据结构转变到存储反映更少的状态的状态数据结构。图9示出了根据一个或更多个实施例的在具有反映多个不同的状态树的状态树部件的情况下删除状态树的部分的分类账交易系统106。
如图9所示,分类账交易系统106管理存储在全节点设备902处的状态树904。特别地,如图9所示,分类账交易系统106生成对应于第一状态(被标记为“S0”)的状态树904和对应于第二状态(被标记为“S1”)的状态树部件906。按照上面关于图8的讨论,状态树部件906包括与在第一状态和第二状态之间已经改变的用户账户状态相对应的节点值。此外,状态树部件906指向状态树904的对应于未改变的用户账户状态的节点。
如图9所示,分类账交易系统106跟踪特定节点与它最新的父节点之间的关联。实际上,虽然图9中所示的实线表示父子关系,但是虚线表示特定节点与最近关联的父节点之间的子父关系。例如,分类账交易系统106使对应于未被修改的用户账户A的叶节点908a与状态树部件906的根节点912相关联。分类账交易系统106进一步使对应于过期的用户账户B的叶节点908b与状态树904的根节点910相关联,并使对应于更新后的用户账户B’的叶节点908c与状态树部件906的根节点912相关联。在一个或更多个实施例中,分类账交易系统106通过将父节点的表示(例如标识符或引用指针)附加到存储在子节点处的节点值来跟踪子节点的当前关联的父节点。
如图9所示,分类账交易系统106可以基于在状态树部件906中反映的父子关系来删除状态树904内的节点(或子树)。例如,分类账交易系统106可以确定全节点设备902即将用完存储空间。作为响应,分类账交易系统106可以从全节点设备902中清除较旧的数据,并为较新的数据释放存储器空间(例如,删除先前的状态,使得状态数据结构仅反映当前状态)。
如图9所示,分类账交易系统106删除所有过时的(outdated)节点(即,具有与分布式数字分类账交易网络的当前状态不对应的节点值的节点)。特别地,分类账交易系统106通过识别不具有与分布式数字分类账交易网络的当前状态对应的父节点的节点来识别哪些节点具有过时的节点值。为了说明,为了从全节点设备902中清除对应于第一状态但不对应于第二状态的数据,分类账交易系统106从状态树904的根节点910开始。分类账交易系统106检查根节点910的两个子节点。如图9所示,因为叶节点908a与对应于第二状态的根节点912相关联,所以分类账交易系统维护叶节点908a。然而,因为叶节点908b最近与根节点910相关联,所以分类账交易系统106删除叶节点908b。如图9所示,因为状态树904的根节点910仅对应于第一状态,所以分类账交易系统106删除根节点910。
在一个或更多个实施例中,分类账交易系统106在每个节点处存储相关联的父节点的总数(例如,通过将父节点的总数附加到存储在节点处的节点值)。分类账交易系统106然后可以基于父节点的总数来删除节点。例如,分类账交易系统106可以识别具有指示节点不对应于分布式数字分类账交易网络的当前状态的父节点总数的节点。为了说明,来自对应于第一状态的状态树的节点与仅仅一个父节点(即,该状态树的根节点)相关联。因此,分类账交易系统106可以删除该节点。
如所提到的,在一个或更多个实施例中,分类账交易系统106可以删除具有过时的节点值的所有节点。然而,在一些实施例中,分类账交易系统106删除具有与早于指定状态的状态对应的过时节点值的所有节点。换句话说,分类账交易系统106可以(例如,经由来自全节点设备902的用户的输入或者经由来自经授权设备的输入)识别指定状态,并且删除与在指定状态之前的状态对应的所有节点。以这种方式,全节点设备902可以维护对应于分布式数字分类账交易网络的状态的期望子集的数据。
在一个或更多个实施例中,分类账交易系统106可以删除、合并和存储各种不同的数据结构以有效地管理计算机节点处的存储。例如,在一个或更多个实施例中,分类账交易系统106将对应于最新状态(或某个其他指定状态)的数据上传到另一存储设备,然后将对应于后续状态的所有数据存储到该存储设备。在一些实施例中,分类账交易系统106决定维护分布式数字分类账交易网络的状态的历史的快照。作为说明,分类账交易系统106可以决定维护对应于在每千个状态中的一个状态的数据或者对应于来自每周的一个状态的数据。分类账交易系统106然后可以删除不对应于那些状态的数据。因此,分类账交易系统106可以将实现计算机节点识别为只可以为对关于至少一个所维护的状态的信息的查询提供服务的节点。
尽管图7-图9描述了关于特定分类或角色的计算机节点的特定存储实现,但是分类账交易系统106可以将各种存储配置应用于各种计算机节点(例如验证者节点和/或全节点)。在一些实施例中,分类账交易系统106基于在每个单独的计算设备处的偏好(例如,基于与用于设置存储偏好的用户界面元素的交互)和/或基于该计算机节点可用的资源(例如存储器)来实现特定的存储配置。此外,尽管图7-图9提供了关于交易数据结构和状态数据结构的示例,但是分类账交易系统106可以类似地管理对各种其他数据结构类型(例如事件数据结构)的存储。
如所提到的,在一个或更多个实施例中,存储删除规则集和存储合并规则集是可配置的。特别地,分类账交易系统106可以基于分布式数字分类账交易网络的变化的需要或者基于单独计算机节点的变化的需要或偏好来改变删除规则和合并规则。在一些实施例中,分类账交易系统106基于从节点设备的用户或从经授权设备接收的输入来配置存储删除规则集和/或存储合并规则集。在一些实施例中,分类账交易系统106基于共识(例如,跨分布式数字分类账交易网络执行的智能合约的过程)来改变存储删除规则和/或存储合并规则。
通过实现存储删除规则集和/或存储合并规则集,分类账交易系统106比传统系统更有效地操作。特别地,分类账交易系统106减少了对放置在分布式数字分类账交易网络的计算机节点上的存储装置的需求。实际上,分类账交易系统106减少了由计算机节点利用的计算资源,同时仍然允许计算机节点维护对应于数字分类账的数据。
此外,分类账交易系统106比传统系统更灵活。例如,通过基于计算机节点的分类或角色来管理存储,分类账交易系统106灵活地将存储的使用缩小到特定节点的需要(例如,为查询提供服务或参与共识)。此外,通过允许可配置的存储方法,分类账交易系统106可以灵活地修改或更新存储管理以适应分布式数字分类账交易网络的变化的需要。
C.账户逐出
许多传统区块链系统将用户的账户数据存储在由传统系统管理的存储装置(例如,由参与系统的每个计算机节点管理的单独数据库)内。随着更多的用户创建与传统系统相关联的账户,对存储的需要增加,耗尽了各个计算设备处的存储资源。为了避免这些问题,许多传统系统从它们的存储结构中清除不想要的(例如,旧的)账户数据。例如,传统区块链系统可能限制分配给特定用户的存储账户数据的时间。当所分配的时间到期时,传统系统可以删除或盖写在存储结构内的账户数据,这允许存储资源的重新使用。
然而,如上面所提到的,尽管有这些进步,传统区块链系统仍遭受导致不灵活和低效的操作的技术缺陷。例如,传统区块链系统常常是不灵活的,因为它们严格地要求所有参与的计算机节点同步地删除与过期用户账户相关联的账户数据。为了说明,许多传统区块链系统通过向存储账户数据的所有计算机节点广播(例如,源自计算机节点的)触发删除的交易来删除与过期用户账户相关联的账户数据。于是,给定的计算机节点一般必须在删除账户数据之前等待这样的交易。
除了灵活性顾虑以外,传统区块链系统也是低效的。特别地,因为传统系统常常利用交易来触发与过期用户账户相关联的账户数据的删除,所以存储账户数据的计算机节点可能将数据维护在它的数据库内比所必需的时间长。特别地,如所提到的,即使在具有可用于找出和删除数据的计算资源(例如,处理停机时间)之后,计算机节点也可能在等待触发删除的交易的同时维护账户数据。因此,传统系统常常利用大量计算资源(例如存储器)来适应过期用户账户。此外,为了删除账户,传统系统通常广播单独的交易以触发账户数据的删除,其在执行交易和对交易获得共识的过程中进一步利用跨分布式数字分类账交易网络的计算机资源。
分类账交易系统106的一个或更多个实施例利用灵活的账户逐出来更有效地管理在分布式数字分类账交易网络内的计算机节点的存储资源。特别地,如上面所提到的,分类账交易系统106可以生成存储对应于用户账户的账户数据以及账户数据的账户状态表示的状态数据结构。分类账交易系统106可以允许跨分布式数字分类账交易网络的计算设备的对账户数据的懒惰删除(例如,将项目标明为过期的或准备好删除,而不强加删除数据的要求)。例如,分类账交易系统106可以存储与每个用户账户相关联的逐出日期。基于逐出日期,分类账交易系统可以确定用户账户的到期,并且随后对于每个计算设备,在灵活的时间(例如,当计算资源对于该设备变得可用时)从状态数据结构中删除账户数据。以这种方式,分类账交易系统106使分布式数字分类账交易网络的每个计算机节点能够灵活且高效地删除过期的账户数据。
如上面所提到的,分类账交易系统106可以生成存储对应于分布式数字分类账交易网络的用户账户的账户数据和账户状态表示的状态数据结构。图10示出了根据一个或更多个实施例的由分类账交易系统106生成的用于执行账户逐出的状态数据结构1000。
如上所述以及如图10所示,状态数据结构1000包括状态数据库1002和状态树1004。特别地,分类账交易系统106在状态数据库1002内生成对应于分布式数字分类账交易网络的用户账户的账户数据1006。此外,分类账交易系统106在状态树1004内生成对应于用户账户的账户状态表示1008(即,作为状态树1004的叶节点的一部分)。
如上所述,在一个或更多个实施例中,账户状态表示1008包括对应于账户数据1006的散列值1010(即,账户值1016的散列)。然而,在一些实施例中,账户状态表示1008包括附加数据。例如,如图10所示,账户状态表示1008还包括密钥散列值1012(例如,对应于用户账户的认证密钥)。在一个或更多个实施例中,分类账交易系统106通过生成认证密钥来生成密钥散列值1012(例如,将密钥散列值1012设置为对应于用户账户的n位地址键,或者将散列函数应用于与用户账户相关联的公开密钥)。
如图10所示,账户状态表示1008还可以包括与用户账户相关联的逐出日期1014。分类账交易系统106可以基于决定用户账户应该在分布式数字分类账交易网络内保持活跃多久的一个或更多个因素来生成逐出日期1014。例如,分类账交易系统106可以基于由用户账户支付的一项或更多项费用(例如租金)来生成逐出日期1014,所述费用可以包括创建用户账户的费用和/或为执行由用户账户在分布式数字分类账交易网络上发送的交易而支付的费用。
在一个或更多个实施例中,分类账交易系统106可以更新(即,修改)与用户账户相关联的逐出日期1014。例如,分类账交易系统106可以在检测到对应于用户账户的活动之后(例如,在执行由用户账户在分布式数字分类账交易网络上提交的交易之后)更新逐出日期1014以延长用户账户的活跃状态。另外,如将在下面更详细地解释的,分类账交易系统106可以在重新缓存与用户账户相关联的账户数据1006时更新逐出日期1014。在一个或更多个实施例中,分类账交易系统106基于最后一次用户账户访问的时间(例如,用户账户关于分布式数字分类账交易网络的最后活动的时间)和阈值来设置逐出日期1014,该阈值包括用户账户在到期之前可以保持活跃的预定最小时间长度。类似地,分类账交易系统106可以基于租用存放金额、从用户账户转移数字资产的交易的时间或者将数字资产转移到用户账户的交易的时间,设置或更新逐出日期。
当分类账交易系统106决定删除账户数据1006时(例如,当足够的计算资源变得可用时),分类账交易系统可以访问账户状态表示1008以确定(或确认)逐出日期1014(即,用户账户)的到期。响应于确定逐出日期1014的到期,分类账交易系统106可以从状态数据库1002中删除账户数据1006(例如,账户值1016和对应的散列1018)。然而,如图10所示,分类账交易系统106仍然可以在状态树1004内维护账户状态表示1008,这允许分类账交易系统106重新缓存账户数据1006(例如,如下面所讨论的,在满足适当条件时)。
值得注意地,在一个或更多个实施例中,分类账交易系统106发起与给定用户账户相关联的账户数据的删除,而没有在分布式数字分类账交易网络上提交用于删除账户数据的交易事件请求。更确切地,如所提到的,分类账交易系统106可以在用户账户到期之后的任何时间(例如,基于各个计算设备的偏好、设置或能力)发起账户数据的删除。
分类账交易系统106可以基于各种因素来确定何时清除账户数据。在一个或更多个实施例中,分类账交易系统106执行周期性扫描以识别过期用户账户,然后从状态数据库1002中删除对应的账户数据(和其他相关联的数据)。分类账交易系统106可以优化该周期性扫描的频率,以便更有效地管理在任何给定时间可用的计算资源。在一些实施例中,分类账交易系统106为分布式数字分类账交易网络的每个计算机节点(例如,验证者节点设备或全节点设备)独立地优化周期性扫描。具体地,对于给定的计算机节点,分类账交易系统106可以识别计算机节点的计算资源,确定那些计算资源的可用性,以及然后确定如何优化用于找出过期用户账户的扫描的频率。
在一些实施例中,分类账交易系统106提供可选择的选项,用于设置用于清除账户数据的条件。例如,分类账交易系统106可以提供用于选择用于移除账户数据的时间、频率或触发的用户界面。在其他实施例中,分类账交易系统106基于预定义的时间表或触发(例如,基于由计算设备利用的当前处理能力落在阈值水平之下)来自动清除账户数据。
通过在不需要交易事件请求的情况下删除对应于过期用户账户的账户数据,当与传统系统比较时,分类账交易系统106提供用于管理过期用户账户的更大的灵活性。具体地,分类账交易系统106可以基于单独的用户偏好和/或计算资源的可用性来灵活地删除账户数据。此外,通过为分布式数字分类账交易网络内的每个计算机节点独立地优化账户数据删除,分类账交易系统106可以扩展灵活性以适应每个单独的计算机节点可用的计算资源。
此外,分类账交易系统106比传统系统更有效地操作。首先,分类账交易系统106避免在传输、分析和执行单独的交易以移除过时内容中浪费跨分布式数字分类账交易网络的计算机资源。实际上,每个单独的设备可以移除内容而不必执行附加交易并对附加交易获得共识。此外,通过允许单独的计算设备在它们的空闲时间移除账户数据,分类账交易系统106可以基于在单独的设备上的可用计算机资源来有效地找出和删除账户数据。因此,分类账交易系统106可以避免压垮单独设备的计算机资源。
在一些情况下,允许单独的计算机节点灵活地删除账户数据可能潜在地导致跨计算机节点的不一致性。例如,由客户端设备对来自用户账户的信息的请求可能产生不同的响应,取决于单独节点是否已经清除了特定的账户数据。在一个或更多个实施例中,分类账交易系统106提供灵活性,同时通过限制跨分布式数字分类账交易网络对账户的访问来保持一致性(例如,即使在账户数据尚未被从特定设备中删除时)。
例如,在一个或更多个实施例中,分类账交易系统106拒绝在用户账户到期之后并且在删除账户数据1006之前接收的与用户账户相关联的请求(例如,交易、查询等)。具体地,在一些实施例中,在接收到与过期用户账户相关联的请求时,分类账交易系统106可以访问对应于用户账户的账户状态表示1008,并确定逐出日期1014(即,用户账户)已经到期。分类账交易系统106随后可以继续处理交易,好像账户已经到期一样。例如,分类账交易系统106可以通过(例如,向提交请求的客户端设备)发送用户账户已经到期的指示来响应请求。换句话说,即使在维护状态数据库1002内的账户数据1006时,如果用户账户(即,逐出日期1014)已经到期,分类账交易系统106也可以拒绝对账户数据1006的访问(即,拒绝对用户账户本身的访问)。以这种方式,分类账交易系统106可以给予每个计算机节点删除账户数据的灵活性(无需发起单独的交易),同时仍然确保跨整个分布式数字分类账交易网络的一致的行为(例如,对查询的响应)。
如上面所提到的,在一个或更多个实施例中,分类账交易系统106可以重新缓存先前已经从状态数据库中删除的账户数据。特别地,分类账交易系统106可以利用交易来准确地重新缓存账户数据。图11示出了根据一个或更多个实施例的分类账交易系统106重新缓存对应于用户账户的账户数据的框图。
如图11所示,分类账交易系统106可以在交易1102内识别与过期用户账户相关联的账户恢复请求。账户恢复请求可以包括与过期用户账户相关联的账户地址1104和所提议的账户数据1106。具体地,如图11所示,所提议的账户数据1106可以包括与过期用户账户相关联的所提议的账户值。
随后,分类账交易系统106可以将所提议的账户数据1106与存储在状态树内的用户账户的账户状态表示进行比较。例如,在一个或更多个实施例中,分类账交易系统106执行生成所提议的账户值散列的行动1108。特别地,分类账交易系统106可以通过将散列函数应用于所提议的账户数据1106的所提议的账户值来执行行动1108。
如图11所示,分类账交易系统106然后可以通过根据状态树确定在账户地址处的散列值来执行行动1110。例如,分类账交易系统106可以使用来自账户恢复请求的账户地址1104遍历状态树并找出与用户账户相关联的叶节点。分类账交易系统106然后可以访问存储在叶节点内的账户状态表示,并识别散列值(即,先前通过将散列函数应用于对应于用户账户的账户数据而生成的散列值)。
如所示,分类账交易系统106还可以执行比较所提议的账户值散列和在账户地址处的散列值的行动1112。特别地,在一个或更多个实施例中,分类账交易系统106确定所提议的账户值散列是否等于在账户地址处的散列值。该比较允许分类账交易系统106验证或证实所提议的账户数据1106的准确性。实际上,如果所提议的账户值散列与在账户地址处的散列值匹配,则所提议的账户数据1106与从账户中删除的数据匹配。然而,如果所提议的账户值散列与在账户地址处的散列值不匹配,则所提议的账户数据1106与从账户中删除的数据不匹配(例如,数据已经被修改或以其他方式损坏)。
如图11所示,分类账交易系统106可以执行基于该比较来重新缓存所提议的账户数据的行动1114。例如,在一个或更多个实施例中,如果所提议的账户值散列不等于在账户地址处的散列值,则分类账交易系统106拒绝账户恢复请求(并且可能完全拒绝交易1102)。然而,如果所提议的账户值散列确实等于在账户地址处的散列值,则分类账交易系统106可以在状态数据库内重新缓存所提议的账户数据。特别地,在一个或更多个实施例中,分类账交易系统106在状态数据库内为所提议的账户数据1106生成条目。如所提到的,在一些实施例中,基于重新缓存所提议的账户数据1106,分类账交易系统106可以更新与恢复的用户账户相关联的逐出日期。例如,分类账交易系统106可以在执行包括账户恢复请求的交易1102时更新逐出日期。
通过在状态树的叶节点内维护与用户账户相关联的账户状态表示,即使在删除对应于该用户账户的账户数据之后,分类账交易系统106也比传统系统更灵活和有效地管理存储资源。具体地,分类账交易系统可以灵活地删除和恢复与用户账户相关联的账户数据,同时保持数字分类账的准确性和安全性。
D.跟踪在存储器中的多次写入
如上面所提到的,传统区块链系统可以接收交易区块,并且(经共识后)执行区块内的交易。实际上,通过共识协议,这样的传统系统可以识别哪些交易区块已经由网络中的其他计算机节点达成一致。因此,传统系统可以基于哪些交易区块已经在网络内达成共识来将交易添加到数字分类账。
然而,如上面所提到的,传统区块链系统在确定交易(或交易区块)被添加到数字分类账的顺序时常常是不灵活的和不准确的。例如,许多传统区块链系统常常是不灵活的,因为它们僵化地以交易区块被接收的顺序将那些交易区块添加到数字分类账。然而,这可能引起问题——特别是对于实现基于先导者(leader-based)的共识协议的传统系统——其中多个交易区块在同一时间或在大约同一时间(例如,由于通信延迟)被接收到,或者新的交易区块在先前的区块被提交给存储装置之前已经被接收到。例如,在先前的区块被提交给存储装置之前接收到新的交易区块的情况下,传统系统可能基于先前的交易区块来执行新的交易区块,然后确定先前的交易区块已经被网络拒绝。这可能需要传统系统生成冲突的分类账,并且在校正提交给存储装置的不准确的交易区块方面导致计算资源的浪费。
除了灵活性顾虑以外,传统区块链系统也可能不准确地操作。特别地,由于无法灵活地适应围绕交易被添加到数字分类账的顺序的各种问题,许多传统区块链系统可能不准确地表示数字分类账。例如,参与网络的一个计算机节点可以以与网络中的另一个节点不同的顺序将交易添加到数字分类账。因此,这两个计算机节点关于数字分类账的当前状态可能意见不一致,并且这些计算机节点中的至少一个可能不准确地表示该当前状态。
分类账交易系统106的一个或更多个实施例利用便笺式数据结构来灵活地跟踪数字分类账的多个可能的变化,同时等待对一个或更多个交易区块的共识。特别地,分类账交易系统106可以利用便笺式数据结构作为临时存储器,其中用于存储可能的(例如,推测性的)执行分支。例如,分类账交易系统106可以识别包含不同交易的多个交易区块。在一个或更多个实施例中,多个交易区块包括冲突的交易(例如,交易区块中的至少两个包括从用户账户提取数字资产的交易,并且用户账户没有包含足够的数字资产来满足两个交易)。分类账交易系统106可以对每个交易区块实施执行,并将执行的结果存储在便笺式数据结构中。特别地,分类账交易系统106可以为每个交易区块存储该交易区块的执行如何修改分布式数字分类账交易网络的当前状态(即,经由共识而被提交给永久存储装置的最后状态),而与其他交易区块的执行如何修改该状态无关。分类账交易系统106然后可以基于共识的结果来将交易区块提交给永久存储装置(或者一概拒绝交易区块)。以这种方式,分类账交易系统106可以以导致数字分类账的更准确表示的方式灵活地跟踪可能的共识结果。
如上面所提到的,分类账交易系统106可以利用便笺式数据结构来跟踪交易区块的执行如何修改分布式数字分类账交易网络的最新被提交状态。实际上,分类账交易系统106可以结合便笺式数据结构来利用状态数据结构以跟踪各种执行分支。图12示出了根据一个或更多个实施例的来自状态数据结构的状态树1200,该状态树1200表示分布式数字分类账交易网络的最新被提交状态。
如图12所示,状态树1200包括类似于上面关于图3讨论的状态树306的二叉树(例如状态Merkle树)。特别地,状态树1200包括叶节点1202a-1202p。叶节点1202a-1202p对应于分布式数字分类账交易网络的不同用户账户,并存储对应于这些用户账户的账户状态表示。此外,状态树1200包括具有基于每个相关联的子节点的节点值而确定的节点值的内部节点1204a-1204n。另外,状态树1200包括具有基于在状态树1200内的所有其他节点的节点值的根值的根节点。该根值表示分布式数字分类账交易网络的最新被提交状态(被标记为“S0”)。状态树1200的节点在图12中被编索引以简化下面提供的讨论。
图13示出了根据一个或更多个实施例的由分类账交易系统106识别的交易区块的框图。具体地,交易区块1302表示在分布式数字分类账交易网络上的状态表示和/或交易表示中反映的最近被执行和提交的交易区块。实际上,图12的状态树1200对应于在交易区块1302被提交给存储装置之后的分布式数字分类账交易网络的状态。如图13所示,在提交交易区块1302(在状态树1200内)之后,分类账交易系统106识别用于修改反映在数字分类账中的已提交的交易区块1302的附加交易区块。
具体地,图13示出了识别交易区块1304的分类账交易系统106,交易区块1304包括两个交易。如所示,第一交易1306修改对应于状态树1200的索引为“4”的叶节点(即,图12的叶节点1202c)的账户。第二交易1308修改对应于状态树1200的索引为“18”的叶节点(即,图12的叶节点1202j)的账户。如图13所示,分类账交易系统106在交易区块1302之后将交易区块1304添加到数字分类账。换句话说,分类账交易系统106基于交易区块1304来修改由提交交易区块1302产生的分布式数字分类账交易网络的状态。
如图13所示,分类账交易系统106还识别交易区块1310和交易区块1314。交易区块1310包括第三交易的第一变体1312,其修改对应于状态树1200的索引为“8”的叶节点(即,图12的叶节点1202e)的账户。交易区块1314包括第三交易的第二变体1316,其修改对应于状态树1200的索引为“30”的叶节点(即,图12的叶节点1202p)的账户。因此,如图13所示,分类账交易系统106识别在直接提交交易区块1304之后可以被提交给存储装置的两个可能的交易区块(即,两个可能的执行分支)。
图14A-图14B示出了根据一个或更多个实施例的利用便笺式数据结构来跟踪执行图13的交易区块1304、1310、1314的各种可能结果的分类账交易系统106。特别地,图14A示出了利用便笺式数据结构来跟踪执行图13的交易区块1304的结果的分类账交易系统106。图14B示出了利用便笺式数据结构来跟踪来自执行图13的交易区块1310或交易区块1314的可能结果的分类账交易系统106。
如图14A所示,分类账交易系统106生成状态树部件1402和状态树部件1404。特别地,状态树部件1402表示由图13的交易区块1304中的第一交易1306产生的分布式数字分类账交易网络的状态(被标记为“S1”)。类似地,状态树部件1404表示由图13的交易区块1304中的第二交易1308产生的分布式数字分类账交易网络的状态(被标记为“S2”)。如所示,状态树部件1404的根节点1408指向状态树部件1402的内部节点1410,表明内部节点1410具有在第一交易1306和第二交易1308的执行之间保持不变的节点值(如上面参考图8更详细解释的)。
如图14A所示,状态树部件1402、1404分别仅包括确定根节点1406、1408的根值所需的那些节点。换句话说,分类账交易系统106在便笺式数据结构内没有复制对应于最新被提交状态的状态树(例如,图12的状态树1200)。更确切地,分类账交易系统106仅生成与节点值变化相关联的节点(即,具有变化的节点值的节点、或其节点值被用于确定变化的节点值的节点)。
为了说明,状态树部件1402包括对应于由第一交易1306修改的用户账户的叶节点1412a。状态树部件1402还包括叶节点1412b。尽管对应于叶节点1412b的用户账户从第一交易1306起保持不变,但是分类账交易系统106利用叶节点1412b的节点值来确定内部节点1414的节点值,内部节点1414的节点值进一步用于确定根节点1406的根值。在一个或更多个实施例中,分类账交易系统106在便笺式数据结构内生成对应于由交易产生的状态的整个状态树,而不是生成状态树部件。
在一个或更多个实施例中,因为第一交易1306和第二交易1308指示被那些交易修改的用户账户,所以分类账交易系统106可以在使用虚拟机发起执行之前预加载对应于那些用户账户的账户状态。实际上,在一个或更多个实施例中,分类账交易系统106并行地将账户状态从存储装置预加载到虚拟机,改善了执行时间,因为虚拟机不需要为了执行而等待账户状态。
如图14B所示,分类账交易系统106还生成状态树部件1420和状态树部件1422。特别地,状态树部件1420表示由在图13的交易区块1310中包括的第三交易的第一变体1312产生的分布式数字分类账交易网络的状态(被标记为“S3”)。类似地,状态树部件1422表示由在图13的交易区块1314中包括的第三交易的第二变体1316产生的分布式数字分类账交易网络的状态(被标记为“S3”)。如同图14A一样,在图14B中示出的虚线表示状态树部件指向先前的状态树部件的节点,表明该节点的节点值从对应的交易的执行起保持不变。
实际上,如图14B所示,状态树部件1420、1422提供可以表示分布式数字分类账交易网络的状态的可替代状态,该状态遵循由将交易区块1304提交给存储装置而产生的状态。实际上,分类账交易系统106可以(即,在识别交易区块1304已经达成共识的指示之后)识别交易区块1310、1314之一已经达成共识的指示。因此,分类账交易系统106可以基于在便笺式数据结构内跟踪的执行结果来将该交易区块提交给存储装置。例如,在对交易区块1310、1314中的一个达成共识时,分类账交易系统106可以基于存储在便笺式数据结构中的状态树部件来生成与一致同意的交易区块相对应的交易值的向量。分类账交易系统106然后可以利用交易值的向量,通过相应地修改或更新状态数据结构、事件数据结构和交易数据结构来将执行结果提交给存储装置。
在将交易区块提交给存储装置时,分类账交易系统106可以释放分配(deallocate)对应的状态树(例如,从便笺式数据结构中移除)。分类账交易系统106可以进一步释放分配在便笺式数据结构中没有相关联的父节点的任何剩余节点。在一个或更多个实施例中,如果交易区块1310、1314中的一个或两个无法达成共识,分类账交易系统106可以从便笺式数据结构中移除对应的状态树部件。在一个或更多个实施例中,每当交易区块被提交给存储装置时,分类账交易系统106彻底清除便笺式数据结构。
通过使用便笺式数据结构来跟踪各种可能的执行分支,分类账交易系统106比传统系统更灵活地适应多个交易区块的接收。具体地,分类账交易系统106可以灵活地执行交易区块,然后临时存储执行结果,直到对于至少一个区块,共识失败或者被达成为止。此外,通过临时存储执行结果,分类账交易系统106可以灵活地适应在执行交易区块和获得共识之间的延迟。实际上,通过利用便笺式数据结构,分类账交易系统106可以继续基于等待被提交到存储装置中的给定交易区块的执行结果来执行交易区块。
此外,分类账交易系统106比传统系统更准确地操作。实际上,由于便笺式数据结构所提供的灵活性,分类账交易系统106可以更准确地表示数字分类账。具体地,因为分类账交易系统106可以使用便笺式数据结构来临时存储交易区块的执行结果,所以分类账交易系统106可以推迟将执行结果提交给存储装置,直到对这些结果的共识被达成为止。因此,分类账交易系统106确保分布式数字分类账交易网络的计算机节点以相同的顺序提交交易区块。
E.证明和验证
如上面所提到的,在一个或更多个实施例中,响应对信息的查询的计算机节点(例如全节点设备)可以将证明连同所请求的信息一起传输到请求客户端设备。实际上,在一个或更多个实施例中,分布式数字分类账交易网络代表不可靠的系统,其中客户端设备不信任从其接收数据的计算机节点。因此,分类账交易系统106可以从计算机节点提供证明作为数据的准确性的凭据。
例如,分类账交易系统106可以在交易数据结构的指定版本处提供已签署的交易的证明。此外,分类账交易系统106可以使用状态数据结构在分布式数字分类账交易网络的特定状态下提供用户账户的状态的证明。在另外的实施例中,分类账交易系统106可以使用事件数据结构来提供作为特定交易的执行的一部分而发出的特定交易事件的证明。如上面所讨论的,交易数据结构、状态数据结构和事件数据结构各自可以包括树,例如Merkle树。因此,在一个或更多个实施例中,由分类账交易系统106提供的证明包括Merkle证明。
在一个或更多个实施例中,证明包括三个部分:部分证明、交易信息和公共证明。对于对应于已签署的交易的部分证明,分类账交易系统106可以提供已签署的交易的原始数据(raw data)。对于对应于用户账户状态的部分证明,分类账交易系统106可以提供从对应于用户账户的状态树的叶节点到根节点(包括相关联的中间节点和它们之间的兄弟节点)的证明以及账户数据(例如账户值)。对于对应于交易事件的部分证明,分类账交易系统106可以提供从对应的事件树的叶节点到根节点(包括相关联的中间节点和它们之间的兄弟节点)的证明以及事件数据(例如交易事件细节)。对于证明的交易信息部分,分类账交易系统106可以提供存储在交易树的相应叶节点内的数据。而且对于公共证明,分类账交易系统106可以提供从交易树的叶节点到根节点(包括相关联的中间节点和它们之间的兄弟节点)的证明。
在接收到数据的证明时,客户端设备(即,在客户端设备处操作的分类账交易系统106)可以根据在交易树根节点的根值上签署的≥2f+1个验证者节点设备的签名来证实该根值。例如,分类账交易系统106可以将来自可适用的数据结构的数据反序列化(deserialize)。分类账交易系统106然后可以确定反序列化的数据是否匹配期望的值。对于对应于用户账户状态或交易事件的证明,分类账交易系统106然后可以对作为部分证明的一部分而提供的节点(即,兄弟节点)的列表迭代地计算散列,以获得对应的树的根值。分类账交易系统106然后可以将已签署的交易的原始数据、状态树的根值或事件树的根值(以适用者为准)与存储在交易树的对应的叶节点内的数据进行比较。分类账交易系统106然后可以对作为公共证明的一部分而提供的节点(即,兄弟节点)的列表迭代地计算散列,以获得交易树的根值。如果所确定的交易树的根值至少具有2f+1个使用正确的验证者节点设备集的签名,则分类账交易系统106可以证实数据的准确性。然而,如果在证实的任何步骤处这些比较失败,或者如果交易树的根值没有来自正确的验证者节点设备集的所要求的签名,则分类账交易系统106可以确定证明是无效的。
III.寻址和账户
A.概述
如前面所提到的,分类账交易系统106利用地址来指定和识别分布式数字分类账交易网络上的用户账户。例如,分类账交易系统106可以维护将账户地址键映射到账户值的经认证状态结构。此外,分类账交易系统106可以利用在交易中包括的地址(或键)来识别数字资产将在其间进行转移的用户账户。分类账交易系统106可以进一步使用在对信息的查询内识别的地址,以便检索适当的信息。图15示出了根据一个或更多个实施例的对应于分布式数字分类账交易网络的用户账户的地址的示意图。
如图15所示,分类账交易系统106可以利用状态树1502来确定对应于用户账户的地址。具体地,如上面所提到的,状态树1502的叶节点可以对应于分布式数字分类账交易网络的用户账户。因此,在一个或更多个实施例中,用户账户的地址至少部分地基于在状态树内的对应的叶节点的位置。
在一些实施例中,账户地址是256位的值。为了创建新账户,分类账交易系统106为签名方案生成密钥对(Kp,Ks),并使用公共验证密钥Kp的加密散列作为账户地址a。当从现有账户发送的交易调用create_account(a)指令时,在分类账状态中创建新账户。这一般在交易尝试将数字资产发送到尚未被创建的账户地址a时发生。
一旦在a处创建了新账户,用户就可以使用私有签名密钥Ks签署将从该账户发送的交易。如下面所概述的,用户还可以轮换用于签署来自账户的交易的密钥而不改变账户的地址。
如图15所示,用户账户的地址可以包括主地址1504。特别地,主地址1504可以包括对应于数字分类账(即,公共数字分类账)的主公开地址。实际上,主地址1504标识与状态树1502上的叶节点相对应的用户账户。
如图15进一步所示的,主地址1504可以与一个或更多个子地址1506相关联。特别地,子地址可以标识与主地址1504的用户账户相关联的私有数字分类账的特定用户账户。换句话说,在一个或更多个实施例中,公共数字分类账上的用户账户(即,与状态树1502的叶节点相关联的用户账户)管理私有数字分类账。例如,在一些实施例中,在公共数字分类账上的用户账户可以包括服务的账户,例如为该服务所特有的多个用户账户提供服务的第三方钱包或交换服务。该服务可以维护内部数据库(被称为“私有数字分类账”),该内部数据库跟踪与该服务所特有的用户账户相关联的数字资产和交易。因此,与主地址1504相关联的用户账户可以利用子地址来在对应的内部数据库内标识特定用户账户。
因此,用户账户可以与在分布式数字分类账交易网络的状态树内标识用户账户的主地址相关联。如果用户账户与私有数字分类账相关联,则用户账户可以包括主地址和子地址两者,其中主地址提供在公共数字分类账上的账户(即,私有数字分类账的账户)的地址,以及子地址从由私有数字分类账管理的多个用户账户当中识别用户账户。
B.对交易请求利用加密子地址
传统区块链系统一般在生成和执行交易时利用与用户账户相关联的地址。特别地,许多传统系统生成指定主地址和子地址以分别识别相关联的用户账户的公共分类账账户和私有分类账地址的交易。因此,当执行与特定用户账户相关联的交易时,传统区块链系统确保正确的用户账户被修改(例如,数字资产被转移到正确的用户账户/从正确的用户账户转移)。
然而,传统区块链系统有许多缺点,导致不灵活和/或不安全的操作。例如,传统区块链系统一般基于与网络的用户账户相关联的地址来执行交易。因此,传统系统在要求包括用户账户的地址的输入以便经由网络生成对交易的请求方面常常是严格的。试图使用用户账户进行交易的用户可能无法访问特定的寻址信息。
此外,许多传统区块链系统可能通过发布与网络上的交易相关联的用户账户的地址而引入安全问题,允许外部实体访问网络并识别这些地址。例如,即使这些子地址被加密,传统系统也可能向网络发布相同的地址几次(例如,如果该地址与多个交易相关联),允许外部实体确定同一用户账户已经参与多个交易。传统系统无法结合隐私措施来抵抗对网络上此信息的跟踪和潜在操纵。
分类账交易系统106的一个或更多个实施例在生成交易请求时利用与用户账户相关联的加密密钥以获得灵活且安全的子地址加密。例如,分类账交易系统106可以通过识别与用户账户相关联的主公开地址标识符、子地址标识符和加密密钥来生成对指向用户账户的交易的请求。分类账交易系统106然后可以通过将加密密钥应用于具有添加的随机数值的子地址来生成对交易唯一的非确定性加密子地址。因此,例如分类账交易系统106可以允许接收方账户在同一子地址处经由分布式数字分类账交易网络接收各种不同的数字资产,而不在数字分类账上发布重复的账户标识符。
例如,分类账交易系统106可以执行将数字资产转移到对应于主地址的接收方账户的所有者的交易。接收方账户的所有者可以识别出事件和对应的交易在数字分类账上已经出现。接收方账户的所有者可以(例如,经由存储在事件或交易数据结构上的事件细节或交易细节)访问加密子地址。接收方账户可以使用私有加密密钥来将加密子地址解密以识别对应于交易的子地址。接收方账户的所有者然后可以使资产归属于对应于子地址的用户(或账户)。因此,接收方账户的所有者可以识别对应于子地址的用户,但是数字分类账将不包括对子地址的可追踪(或可重复)的引用。
此外,分类账交易系统106可以从各种不同的公共源中识别主地址、子地址和/或加密密钥,同时仍然执行安全的匿名交易。例如,在一个或更多个实施例中,分类账交易系统106从数字视觉代码中识别主公开地址标识符、子地址标识符和/或加密密钥。此外,在一些实施例中,分类账交易系统106从电子邮件地址中识别主公开地址标识符和子地址标识符。换句话说,分类账交易系统106可以通过接收与用户账户相关联的电子邮件地址来生成对交易的请求。以这种方式,分类账交易系统106可以利用与用户账户相关联的标识符和加密密钥来灵活且安全地在分布式数字分类账交易网络上生成交易请求。
如上面所提到的,在一个或更多个实施例中,分类账交易系统106利用用户账户的主公开地址标识符和子地址标识符来在分布式数字分类账交易网络上生成对交易的请求。图16-图18示出了根据一个或更多个实施例的识别用户账户的主公开地址标识符和子地址标识符以供在交易中使用的分类账交易系统106。尽管图16-图18示出了在客户端设备上操作的分类账交易系统106,但是分类账交易系统106可以在分布式数字分类账交易网络的任何设备上类似地起作用。
图16示出了根据一个或更多个实施例的从数字视觉代码中识别用户账户(即,收款人或接收方账户)的主公开地址标识符和子地址标识符的分类账交易系统106的框图。特别地,图16示出了分类账交易系统106通过扫描动态地生成的数字视觉代码来识别主公开地址标识符和子地址标识符,数字视觉代码对主公开地址标识符和子地址标识符编码。
例如,分类账交易系统106可以在客户端设备1602处扫描由计算设备1604显示的数字视觉代码1606。如图16所示,在一个或更多个实施例中,数字视觉代码1606包括快速响应(“QR”)代码。分类账交易系统106(或第三方系统)可以在数字视觉代码1606内对主公开地址标识符和子地址标识符编码。数字视觉代码1606可以包括能够对数据编码的各种不同类型的视觉表示。此外,计算设备1604可以包括能够(例如,经由分类账交易系统106)生成和/或显示数字视觉代码的各种计算设备。
在扫描数字视觉代码1606时,分类账交易系统106识别(例如,提取或解码)与分布式数字分类账交易网络的用户账户相关联的主公开地址标识符1608和子地址标识符1610。如图16所示,主公开地址标识符1608包括与分布式数字分类账交易网络的用户账户相关联的主地址,以及子地址标识符1610包括与用户账户相关联的加密子地址。在一个或更多个实施例中,子地址标识符1610包括与用户账户相关联的未加密子地址。
通过从数字视觉代码1606中识别主公开地址标识符1608和子地址标识符1610,分类账交易系统106可以生成对与用户账户相关联的交易(例如,用户账户和另一用户账户之间的交易)的请求。分类账交易系统106然后可以利用主公开地址标识符1608和子地址标识符1610经由分布式数字分类账交易网络来提交对交易的请求用于执行。
分类账交易系统106可以动态地生成对特定交易唯一的数字视觉代码(即使当交易涉及同一目的地账户时)。例如,关于如图16所示的,分类账交易系统106可以在客户端设备1612处进一步扫描数字视觉代码1614。特别地,数字视觉代码1614反映同一接收方账户的信息,但是利用不同的数字视觉代码。具体地,分类账交易系统106(或第三方系统)在数字视觉代码1614内对同一账户的主地址和单独的加密子地址的指示符编码。客户端设备1612可以与客户端设备1602相同或不同。
在扫描数字视觉代码1614时,分类账交易系统106可以识别与用户账户相关联的主公开地址标识符1608和子地址标识符1610。如图16所示,虽然主公开地址标识符1608包括通过扫描数字视觉代码1606获得的与用户账户相关联的相同的主地址,但是子地址标识符1616包括不同的加密子地址。实际上,数字视觉代码1606、1614各自可以为与用户账户相关联的子地址提供唯一的加密。因此,通过扫描动态地生成的数字视觉代码,分类账交易系统106可以使用与用户账户相关联的主公开地址标识符和对每个交易请求唯一的加密子地址来生成交易请求。
此外,通过利用这种方法发起交易,数字分类账可以避免可被外部实体跟踪的重复的子地址。实际上,即使数字分类账上的多个交易涉及同一个账户,数字分类账也将反映两个不同的加密子地址,其将不允许在交易外部的各方跟踪和操纵对同一账户的重复支付。特别地,利用子地址标识符1610经由分布式数字分类账交易网络执行的交易将不可追踪到利用子地址标识符1616经由分布式数字分类账交易网络执行的另一交易(即使两个交易都指向同一账户)。
除了使用随着每次扫描而改变的动态地生成的数字视觉代码之外,分类账交易系统106还可以在生成对与用户账户相关联的交易的请求时利用静态数字视觉代码。此外,如上面所提到的,分类账交易系统106可以在生成对与用户账户相关联的交易的请求时利用与该用户账户相关联的加密密钥。图17示出了根据一个或更多个实施例的从数字视觉代码中识别与用户账户相关联的主公开地址标识符、子地址标识符和加密密钥的分类账交易系统106的框图。
如图17所示,分类账交易系统106使用客户端设备1702扫描包括数字视觉代码1706的文档1704。分类账交易系统106通过将对应于用户账户的主公开地址标识符、子地址标识符和加密密钥编码来生成数字视觉代码1706。例如,关于图17,文档1704反映寻求数字资产的公开捐赠的广告牌(bill board)。
尽管图17将文档1704示为包含数字视觉代码1706的表示的印刷或电子广告牌,但是文档1704可以包括包含数字视觉代码1706的可扫描表示的各种不同的物理或电子文档。然而,如上面所提到的,在一个或更多个实施例中,数字视觉代码1706是静态的。换句话说,数字视觉代码1706在文档1704上保持不变(甚至在被扫描多次之后)。
在扫描数字视觉代码1706时,分类账交易系统106可以识别(例如,从数字视觉代码1706中解码或提取)与分布式数字分类账交易网络的用户账户相关联的主公开地址标识符1708、子地址标识符1710和加密密钥1712。如图17所示,主公开地址标识符1708包括与分类账交易系统106的用户账户相关联的主地址,以及子地址标识符1710包括与用户账户相关联的子地址。在一个或更多个实施例中,子地址标识符1710包括针对用户账户进行加密的子地址。在一个或更多个实施例中,加密密钥1712包括与主地址相关联(即,与用户账户相关联)的公开密钥。
如图17所示,在扫描数字视觉代码1706之后,分类账交易系统106可以使用加密密钥1712来将子地址(或加密子地址)加密1714。在一个或更多个实施例中,分类账交易系统106向子地址(或加密子地址)添加随机数值,并将加密密钥1712应用于具有随机数值的子地址(或加密子地址)。通过在应用加密密钥1712之前添加随机数值,分类账交易系统106可以生成对特定交易唯一的加密子地址。实际上,分类账交易系统106可以将不同的随机数值用于数字视觉代码1706的后续扫描(或者在客户端设备1702处或者在另一客户端设备处),以为子地址标识符1710生成不同的加密。
因此,分类账交易系统106可以利用主公开地址标识符1708、子地址标识符1710和加密密钥1712来生成对与用户账户相关联的交易的请求。特别地,对交易的请求可以包括对所请求的交易唯一的加密子地址。分类账交易系统106然后可以经由分布式数字分类账交易网络提交对交易的请求用于执行。此外,通过利用加密密钥1712和随机数值,从数字视觉代码1706发起的交易将不会重复可被在交易外部的实体跟踪的加密子地址。因此,对于可能具有相同加密子地址(并且可识别为去往相同地方)的向同一地址的定期支付(recurring payment),分类账交易系统106可以使用加密密钥(例如重新加密密钥)进行双重加密。
如上面所提到的,分类账交易系统106还可以灵活且安全地识别子地址,以利用(除了文档1704之外的)各种不同的源发起交易。特别地,分类账交易系统106可以识别地址以利用电子邮件地址经由分布式数字分类账交易网络发起交易。例如,图18示出了基于电子邮件地址来识别分布式数字分类账交易网络的用户账户的主公开地址标识符、子地址标识符和加密密钥的分类账交易系统106的框图。如所示,分类账交易系统106可以识别与分布式数字分类账交易网络的用户账户相对应的用户的电子邮件地址1802。电子邮件地址1802可以包括域名1804和个人电子邮件标识符1806。
在一个或更多个实施例中,分类账交易系统106可以基于电子邮件地址1802的域名1804来确定用户账户的主地址。例如,在一个或更多个实施例中,分类账交易系统106(或第三方系统,例如域名管理系统)生成反映分布式数字分类账交易网络的主地址的域名系统文本记录。特别地,分类账交易系统106可以生成将在分布式数字分类账交易网络内的实体的主地址与web上对应于该实体的域地址相关联的DNS记录。分类账交易系统106可以利用DNSSEC来证实域和对应的主地址之间的数据对应关系的起源(provenance)。
如图18所示,在识别电子邮件地址1802时,分类账交易系统106访问存储在远程服务器1808上的对应于域名1804的域名系统(“DNS”)记录1810。对应于域名1804的DNS记录1810存储用户账户的主地址1812。因此,分类账交易系统106可以基于域名1804从DNS记录1810中识别用户账户的主地址1812。
如图18所示,分类账交易系统106可以进一步从DNS记录1810(例如,存储在DNS处的文本记录或另一记录)中识别与用户账户相关联的加密密钥1814。然而,在一些实施例中,分类账交易系统106独立于DNS记录1810而识别加密密钥1814。例如,在一些实施例中,分类账交易系统106向对应于域名1804的远程服务器(例如,远程服务器1808或不同的远程服务器)提供个人电子邮件标识符1806。为了说明,分类账交易系统106可以向远程服务器的API端点(API endpoint)传输REST请求以获得与用户账户相关联的数据。作为响应,分类账交易系统106可以从该远程服务器接收加密密钥1814。
尽管图18示出了在远程服务器1808处的主地址1812和加密密钥1814,但是分类账交易系统106可以从远程服务器1808访问附加信息。例如,分类账交易系统106还可以利用个人电子邮件标识符1816从远程服务器1808获得不同的子地址标识符。
在检索到与用户账户相关联的主地址1812和加密密钥1814时,分类账交易系统106可以将个人电子邮件标识符(或者从远程服务器1808接收的不同的子地址标识符)加密1816。特别地,分类账交易系统106可以将加密密钥1814应用于个人电子邮件标识符1816以生成加密子地址。分类账交易系统106然后可以基于从DNS记录1810中识别的主地址1812和通过将加密密钥1814应用于个人电子邮件标识符1806而生成的加密子地址来提交对与用户账户相关联的交易的请求。
利用这种方法,分类账交易系统106允许基于用户账户的电子邮件地址利用分布式数字分类账交易网络的交易。例如,用户可以通过共享电子邮件地址,利用分布式数字分类账交易网络转移数字资产。此外,分类账交易系统106可以在不共享机密账户信息的情况下执行这些交易。此外,对于涉及同一收款人的重复交易,分类账交易系统106可以避免在数字分类账上发布对应于这些交易的重复/可跟踪的地址信息。
尽管图18示出了基于与用户账户相关联的用户的电子邮件地址来识别用户账户的主地址和子地址的分类账交易系统106,但是分类账交易系统106可以基于其他标识符来识别地址信息。例如,在一个或更多个实施例中,分类账交易系统106可以基于与用户账户相关联的用户的电话号码来识别用户账户的主地址和子地址。在一些实施例中,分类账交易系统106可以基于用户的用户ID(例如,社交网络用户ID)来识别主地址和子地址。例如,分类账交易系统106可以访问将电话号码(或用户ID)与对应的地址和加密密钥相关联的储存库(例如,存储在远程服务器上的储存库)。为了说明,分类账交易系统106可以向远程服务器提供电话号码(或用户ID),接收子地址连同加密密钥,并利用子地址和加密密钥来生成加密子地址。分类账交易系统106可以使用加密子地址来经由分布式数字分类账交易网络发起交易。
通过使用加密密钥来将与用户账户相关联的子地址加密,分类账交易系统106可以比传统系统更灵活地管理与交易相关联的用户账户的可见性。特别地,通过在加密之前向用户账户的子地址添加唯一的随机数值,分类账交易系统106可以为与该用户账户相关联的每个交易灵活地生成唯一的子地址加密。因此,分类账交易系统106可以防止观察分布式数字分类账交易网络上的交易的外部实体识别用户账户。此外,通过从与用户账户相关联的(例如,被包括在电子邮件地址中的)地址标识符中识别地址信息,分类账交易系统106可以比传统系统更灵活地生成交易请求。
C.分离和存储智能合约代码和智能合约数据
传统区块链系统关于智能合约的存储、实现和使用通常是不灵活的和僵化的。例如,许多传统区块链系统利用智能合约来定义和实现利用每个程序所特有的单例对象(singleton object)的程序。于是,由传统系统使用的智能合约是不灵活的,因为它们不能跨网络被使用或重复(即,智能合约是不可重用的)。例如,在传统区块链系统中,实现依赖于先前的智能合约的后续智能合约的设备将无法灵活地交互或引用合约之间的公共依赖关系,因为每个智能合约实现每个合约所特有的代码和单例对象。换句话说,传统系统不能依赖于公共类型类(common type class)来灵活和有效地跨分布式数字分类账交易网络引用数字资产。
此外,传统区块链系统通常不灵活地存储相关联的智能合约。例如,许多传统区块链系统将智能合约存储在一地址下,该地址对应于由将散列函数应用于智能合约代码而产生的散列值。因此,存储智能合约的地址对该智能合约来说一般是唯一的。作为结果,传统系统一般每地址存储一个智能合约。
分类账交易系统106的一个或更多个实施例将智能合约代码和智能合约数据分离,用于智能合约代码的灵活重用。实际上,在一个或更多个实施例中,分类账交易系统106利用智能合约代码(被称为“模块”)来定义由智能合约数据(即,被称为“资源”)实现的属性和过程。因此,分类账交易系统106可以灵活地利用模块来创建具有重复的属性并由相同过程管理的多个资源。
此外,分类账交易系统106的一个或更多个实施例实现用于在单个用户账户下存储多个智能合约的寻址方案。实际上,该寻址方案允许用户账户存储多个模块和资源,同时允许特定模块或资源的明确识别。因此,分类账交易系统106可以更灵活地实现跨分布式数字分类账交易网络的智能合约。
图19示出了根据一个或更多个实施例的存储模块和资源的几个用户账户1902a-1902b的示意图。如上面所提到的,在一个或更多个实施例中,分类账交易系统106将智能合约解构为单独的模块(表示智能合约代码)和资源(表示智能合约数据)。实际上,在一个或更多个实施例中,存储在用户账户处的所有的值都被表示为模块或资源。
在一个或更多个实施例中,分类账交易系统106将模块视为不可变的。换句话说,分类账交易系统106可以保护模块不被修改或删除。然而,在一些实施例中,分类账交易系统106允许这样的行动。分类账交易系统106可以生成调用一个或更多个其他模块中的过程的模块。然而,在一些实施例中,分类账交易系统106将模块限制为调用先前在分布式数字分类账交易网络上生成的其他模块内定义的过程。
在一个或更多个实施例中,分类账交易系统106可以利用同一模块生成多个资源。实际上,分类账交易系统106可以将模块用作模板,根据该模板生成多个资源。例如,如图19所示,分类账交易系统106存储Currency模块1904。使用Currency模块1904,分类账交易系统106生成所示存储在不同的账户地址下的Coin资源1906a-1906c。实际上,由于Coin资源1906a-1906c是根据同一模块(即,Currency模块1904)生成的,因此Coin资源1906a-1906c共享相同的特征(例如,具有相同的数据类型)。类似地,分类账交易系统106可以使用在Currency模块1904内定义的相同过程来转移、操纵Coin资源1906a-1906c或以其他方式与Coin资源1906a-1906c交互。在一个或更多个实施例中,分类账交易系统106可以使用同一模块生成任意数量的资源(受限于模块内所定义的创建限制)。
因此,通过将智能合约实现为单独的模块和资源,分类账交易系统106比传统系统更灵活地实现智能合约。实际上,分类账交易系统106可以灵活地重用单个模块来生成行为类似的多个资源。因此,分类账交易系统106避免创建全新的智能合约来创建具有与先前创建的智能合约相同的属性和行为的对象。
另外,如上面所提到的,分类账交易系统106可以参考模块和资源来实现寻址方案。实际上,在一个或更多个实施例中,分类账交易系统106可以在同一用户账户下存储零个或更多个模块以及一个或更多个资源。在一个或更多个实施例中,分类账交易系统106经由(例如,作为交易请求的一部分提交的)交易脚本利用这些模块和资源。例如,交易脚本可以包括参考特定资源对模块的一个或更多个过程的调用。在执行交易脚本的过程中,分类账交易系统106执行在模块内定义的过程调用,并修改、移动所引用的资源或以其他方式与所引用的资源交互(下面将参考图23更详细地讨论交易脚本)。通过实现寻址方案,分类账交易系统106可以清楚地识别特定模块和/或特定资源。例如,分类账交易系统106可以区分开具有相似名称但被存储在不同地址下的两个模块。
为了提供说明,图19示出了在用户账户1902a-1902c内存储多个模块和/或资源的分类账交易系统106。特别地,分类账交易系统106在用户账户1902a下存储Currency模块1904和Coin资源1906a。此外,分类账交易系统106在用户账户1902b下存储Channel模块1908、Coin资源1906b和Payment资源1910。此外,分类账交易系统106在用户账户1902c下存储Car模块1912、Escrow模块1914和Coin资源1906c。
在一个或更多个实施例中,分类账交易系统106通过定义可用于唯一地识别模块的模块命名空间来实现寻址方案。在一个或更多个实施例中,分类账交易系统106将特定模块的模块命名空间定义为存储该模块的用户账户的地址和该模块本身的标识符的组合。为了说明,分类账交易系统106可以将存储在用户账户1902a处的Currency模块的模块命名空间定义为“0x0.Currency”。因此,当接收到包括命名空间“0x0.Currency”的交易脚本(例如,作为对过程的调用的一部分)时,分类账交易系统106可以识别在具有地址0x0的用户账户1902a处存储的Currency模块。
更具体地,分类账交易系统106可以利用模块命名空间来识别对应于特定资源的模块。实际上,在一个或更多个实施例中,分类账交易系统106通过将资源标识符附加到模块命名空间的末尾来扩展模块命名空间。实际上,扩展的模块命名空间标识资源的类型(即,由模块定义的类型)。因此,当引用特定资源时,分类账交易系统106可以利用扩展的模块命名空间来识别对应于该资源的模块(即,类型)。在一个或更多个实施例中,扩展的模块命名空间表示存储在给定用户账户处的资源的访问路径。
例如,如图19所示,分类账交易系统106可以使用扩展的模块命名空间“0x0.Currency.Coin”来识别对应于存储在用户账户1902a处的Coin资源1906a的Currency模块1904。如在图19中进一步所示的,分类账交易系统106还可以将来自Currency模块1904的Coin资源1906b-1906c分别存储在用户账户1902b-1902c下。实际上,在一个或更多个实施例中,分类账交易系统106可以在与存储对应的模块的用户账户不同的用户账户下存储资源。因此,使用扩展的模块命名空间,分类账交易系统106即使在引用存储在用户账户1902b处的Coin资源1906b或存储在用户账户1902c处的Coin资源1906c时,也可以识别存储在用户账户1902a处的Currency模块1904。实际上,扩展的模块命名空间指示Coin资源1906b和1906c受限于由Currency模块1904定义的类型的属性和过程。
在一个或更多个实施例中,为了识别存储在特定用户账户处的资源,分类账交易系统106可以用期望的用户账户的地址作为扩展的模块命名空间的前缀。例如,为了识别存储在用户账户1902b处的Coin资源1906b,分类账交易系统106可以利用调用“0x1/0x0.Currency.Coin”。因此,分类账交易系统106可以进一步区分开使用相同模块生成的资源。
在一个或更多个实施例中,分类账交易系统106限制存储在同一用户账户下的给定类型的资源的数量。例如,在一些实施例中,分类账交易系统106在特定用户账户内仅存储给定类型的一个资源(例如,来自Currency模块1904的一个Coin资源)。这种方法为顶级的账户值提供了可预测的方案——也就是说,每个账户都应该将它的currency.coin资源存储在同一个地方。这个设计不是限制性的,因为程序员可以定义以自定义方式组织资源的包装器资源(wrapper resource)(例如,资源TwoCoin{coin1:0x181BD55:currency.coin,coin2:0x181BD55:currency.coin})。
此外,在一个或更多个实施例中,分类账交易系统106在地址处仅存储给定名称的一个模块。否则,使用模块命名空间将不会唯一地识别特定模块。然而,分类账交易系统106可以在不同的用户账户下存储具有相同名称的两个模块。例如,分类账交易系统106可以在用户账户1902b处存储附加Currency模块。使用模块命名空间“0x1.Currency”,分类账交易系统106可以唯一地识别该附加Currency模块。
总之,资源值或资源可以包括将所命名的字段绑定到简单值(例如整数)或复杂值(例如嵌入该资源内部的其他资源)的记录。在一些实施例中,每个资源具有由模块声明的类型。此外,在一个或更多个实施例中,资源类型是标称类型(nominal type),其由类型的名称以及资源的声明模块的名称和地址组成。资源既可以被改变(mutated),又可以被删除,并且在一个或更多个实施例中,用于改变、删除和发布资源的规则在创建资源并声明它的类型的模块中被编码。
类似地,模块值或模块可以包括声明资源类型和过程的字节码。像资源类型一样,在一些实施例中,模块由声明模块的账户的地址标识。此外,在一些实施例中,模块在账户内被唯一地命名(例如,每个账户可以声明具有给定名称的至多一个模块)。此外,在一些实施例中,模块是不可变的。
通过实现该地址方案以区分开存储在不同用户账户处的模块和/或资源,分类账交易系统可以比传统系统更灵活地存储和使用智能合约。实际上,如所提到的,分类账交易系统106可以在用户账户处灵活地存储各种不同的模块和资源。分类账交易系统106然后可以使用寻址方案来定义可用于在引用资源时识别正确的模块的模块命名空间。因此,当交易脚本利用模块命名空间(或扩展的模块命名空间)来修改资源或以其他方式与资源交互时,分类账交易系统106可以正确地识别类型的属性和管理该资源的过程。此外,分类账交易系统可以在执行利用资源的各种智能合约的过程中,灵活且高效地引用和利用跨分布式数字分类账交易网络的资源。
D.利用资源来委托账户许可
如上面所提到的,与传统区块链系统不同,分类账交易系统106可以灵活地将账户许可委托给不同的用户账户。实际上,如刚刚讨论的,分类账交易系统106可以在用户账户中存储一个或更多个资源,并且可以执行修改这些资源的交易(例如,通过将数字资产从一个用户账户转移到另一个用户账户)。在一些实施例中,分类账交易系统106生成反映用户账户取款许可的资源,并将该资源移动到另一个账户以跨账户灵活地委托许可。图20示出了根据一个或更多个实施例的利用资源来将第一用户账户的取款许可转移到第二用户账户的分类账交易系统106的框图。
如图20所示,分类账交易系统106执行生成从第一用户账户取款的许可(即,许可资源)的行动2002。取款许可可以包括例如从第一用户账户提取数字资产的许可(例如,以将数字资产从第一用户账户转移到另一用户账户)。实际上,在一个或更多个实施例中,分类账交易系统106通过生成授予从第一用户账户取款的许可的资源来生成取款许可。分类账交易系统106然后可以在第一用户账户处存储授予取款许可的资源(即,提供许可的资源)。
在一个或更多个实施例中,分类账交易系统106基于取款许可来限制从第一用户账户取款的能力。换句话说,在一些实施例中,分类账交易系统106要求尝试从第一用户账户取款的交易与取款许可相关联。例如,当第一用户账户提交将数字资产从第一用户账户转移到另一用户账户的交易请求时,分类账交易系统106可以访问第一用户账户以确定第一用户账户具有授予取款许可的资源。
如图20所示,分类账交易系统106执行将取款许可委托给第二用户账户的行动2004。实际上,在一个或更多个实施例中,分类账交易系统106通过将授予取款许可的资源转移到第二用户账户来委托取款许可。例如,分类账交易系统106可以跨分布式数字分类账交易网络执行由第一用户账户提交的交易,该交易将授予取款许可的资源转移到第二用户账户。
如图20所示,一旦授予取款许可的资源已经被传输到第二用户账户(例如,在状态分类账上资源已经被转移),第一用户账户就不再具有该资源。因此,第一用户账户不再包括许可资源(并且分类账交易系统106将拒绝由第一账户发起的试图从第一账户中提取数字资产的后续交易)。实际上,在一个或更多个实施例中,分类账交易系统106为特定用户账户仅生成一个授予取款许可的资源。然而,在一些实施例中,分类账交易系统106可以生成多个授予许可的资源,允许用户账户根据需要将许可分发给多个接收方。
如在图20中进一步所示的,分类账交易系统106然后执行使用许可来从第一用户账户取款的行动2006。实际上,第二用户账户可以提交例如从第一用户账户中提取数字资产的交易请求。一旦接收到该交易请求,分类账交易系统106就可以访问第二用户账户,确定第二用户账户具有授予从第一用户账户取款的许可的资源,然后相应地将数字资产从第一用户账户转移到第二用户账户。
在一个或更多个实施例中,分类账交易系统106可以将从用户账户取款的许可委托出去,以便使该用户账户受到某些取款限制。例如,分类账交易系统106可以生成冷钱包(cold wallet)(即,从在分布式数字分类账交易网络上公布的冷钱包模块)并将授予从用户账户取款的许可的资源转移到冷钱包。如在本文所使用的,术语“冷钱包”指数字资产的离线储备。具有授予取款许可的资源的冷钱包可以从用户账户中取出数字资产,并将它们存储在冷钱包内。因此,数字资产变得受到冷钱包的约束(和保护)。尽管图20示出了利用资源来委托取款许可,但是分类账交易系统106也可以利用资源来转移与用户账户相关联的其他许可(或资源)。
E.将账户地址与加密密钥去耦合
许多传统区块链系统使用认证密钥来认证向网络发送交易的用户账户。然而,传统区块链系统在管理这些认证密钥方面是不灵活的。例如,传统系统一般将用户账户的认证密钥直接绑到用户账户地址(例如,认证密钥是用户账户的地址)。然而,这提出了安全性问题,传统系统无法针对这些安全性问题提供灵活的解决方案。例如,如果用户账户的认证密钥被泄露,传统系统可能要求用户将用户账户移动到新地址以避免来自恶意方的账户干扰。
分类账交易系统106的一个或更多个实施例将认证密钥与用户账户地址去耦合以允许灵活的认证密钥轮换。特别地,在一个或更多个实施例中,分类账交易系统106为用户账户生成存储用户账户的认证密钥的属性。因此,当需要或必要时,分类账交易系统106可以在用户账户处存储新的认证密钥。以这种方式,分类账交易系统106可以提供更灵活的安全性,其允许用户账户保持安全性,同时避免将用户账户的内容移动到新地址的需要。
图21示出了根据一个或更多个实施例的轮换用户账户的认证密钥的分类账交易系统106的框图。如图21所示,用户账户2102包括账户地址2104和第一认证密钥2106。如上面所提到的,在一个或更多个实施例中,当分类账交易系统106在分布式数字分类账交易网络上创建用户账户2102时,分类账交易系统106将第一认证密钥2106设置为账户地址2104。
在一个或更多个实施例中,用户账户2102的第一认证密钥2106进一步与用户账户2102的公开密钥(未示出)相关。例如,在一个或更多个实施例中,分类账交易系统106通过将散列函数应用于用户账户2102的公开密钥并将第一认证密钥2106设置为所得到的散列值来确定第一认证密钥2106。实际上,在一些实施例中,当在分布式数字分类账交易网络上创建用户账户2102时,分类账交易系统106可以首先为用户账户2102生成公开密钥(和私有密钥),然后通过将散列函数应用于公开密钥来确定第一认证密钥2106(和账户地址2104)。
当交易从用户账户2102被发送时,分类账交易系统106可以利用第一认证密钥2106来将用户账户2102认证为交易的发送者。例如,如上面所提到的,在接收交易时,分类账交易系统106(例如,利用接收验证者节点设备的准入控制器)检查第一认证密钥2106对应于与用于签署交易的私有密钥相关的公开密钥。在一个或更多个实施例中,分类账交易系统106通过对公开密钥计算散列并确定所得到的散列值匹配第一认证密钥2106来检查第一认证密钥2106对应于公开密钥。
如图21所示,分类账交易系统106可以利用第一认证密钥2106从用户账户2102发送交易2108,以轮换第一认证密钥2106(即,获得新的认证密钥)。如所示,分类账交易系统106将(引用第一认证密钥2106的)交易2108传输到验证者节点设备2110用于执行。然后,如上面所提到的,分类账交易系统106利用第一认证密钥2106来证实用户账户2102是交易2108的源。
在执行交易2108时,分类账交易系统106向用户账户2102提供第二认证密钥2112。实际上,在一些实施例中,分类账交易系统106通过为用户账户2102生成新的公开密钥和私有密钥并通过将散列函数应用于新的公开密钥来确定第二认证密钥2112,从而生成第二认证密钥2112。对于由用户账户2102发送的后续交易,分类账交易系统106可以使用第二认证密钥2112来证实用户账户2102发送了交易。
在一个或更多个实施例中,分类账交易系统106可以将用户账户的认证密钥轮换任意次数。例如,每当,分类账交易系统106可以在用户账户每次发送交易时轮换用户账户的认证密钥。然而,在一些实施例中,分类账交易系统106防止用户账户在单个交易中轮换认证密钥多次。
因此,通过利用密钥轮换,分类账交易系统106比传统系统更灵活地管理认证密钥。特别地,分类账交易系统106可以为用户账户生成新的认证密钥而不需要用户账户将它的内容移动到新的地址。因此,分类账交易系统106提供了灵活的安全性解决方案,以在认证密钥已经泄露时防止针对用户账户的恶意攻击,同时允许关于用户账户地址的稳定性。实际上,通过实现密钥轮换,分类账交易系统106实现了用户账户的可配置的密钥。
IV.交易
A.概述
如上面所提到的,分类账交易系统106可以跨分布式数字分类账交易网络执行交易。实际上,用户账户可以提交交易,并且分类账交易系统106可以利用分布式数字分类账交易网络的验证者节点设备来执行交易,经由共识就交易结果达成一致,以及将交易提交给存储装置。实际上,通过该过程,分类账交易系统106利用交易来修改分布式数字分类账交易网络的分类账状态。
图22示出了根据一个或更多个实施例的向分布式数字分类账交易网络提交交易的框图。如在图22中看到的,分类账交易系统106可以执行创建交易对象的行动2202。实际上,分类账交易系统106可以在与提交交易请求的用户账户相关联的客户端设备处创建交易对象。
交易请求可以包括几条信息。例如,交易请求可以包括与提交交易请求的用户账户相对应的账户地址、用于执行所请求的交易的交易脚本、与提交交易的用户账户相关联的公开密钥、与交易请求相关联的序列号、用户账户在执行交易方面愿意花费的gas的最大数量、用户账户为了执行所请求的交易而愿意每单位gas花费的数字资产(例如,数字货币)的数量。在一个或更多个实施例中,交易请求可以包括附加信息,例如针对交易请求的客户端指定的到期。
如在图22中进一步所示的,分类账交易系统106然后可以执行签署交易请求的行动2204。特别地,如上面所讨论的,提交交易请求的用户账户可以使用与用户账户相关联的私有密钥来签署交易请求。分类账交易系统106然后可以执行将已签署的交易请求发送到分布式数字分类账交易网络的验证者节点设备的行动2206。分类账交易系统106然后利用验证者节点设备来执行交易请求,关于执行结果达成共识,并且如果共识被达成,则将执行结果提交给存储装置。
分类账交易系统106可以实现改进跨分布式数字分类账交易网络的交易执行的许多特征。例如,在一个或更多个实施例中,分类账交易系统106可以使用任意交易脚本来实现更灵活的交易。此外,分类账交易系统106可以利用智能合约(即,模块和资源)来配置围绕交易执行的特征的操作(例如拒绝无效交易、在交易执行时扣除和分发gas、或者使序列号递增)。此外,分类账交易系统106可以利用限制经由交易对数字资产的访问的访问密钥。
B.利用交易脚本以及与模块和资源交互
如上面所提到的,分类账交易系统106的一个或更多个实施例利用任意交易脚本来实现跨分布式数字分类账交易网络的灵活的交易。特别地,在一个或更多个实施例中,交易脚本包括使用由分类账交易系统106实现的编程语言编写的任意程序。程序可以调出要修改的资源和将用于实现修改的模块过程。交易脚本可以是任意的,因为它们可以在单个脚本内从各种不同的模块调用多个过程。此外,交易脚本可以包括条件逻辑,并且可以执行本地计算。因此,分类账交易系统106可以比传统区块链系统更灵活地利用交易脚本来实现交易。实际上,传统区块链系统通常限制由交易调用的过程的数量,并且可能只允许实现基本逻辑的简单交易(例如,转移资产)。实际上,通过利用任意交易脚本,分类账交易系统106可以经由分布式数字分类账交易网络实现更复杂和更具表现力的(expressive)一次性行动。
实际上,分类账交易系统106的一个或更多个实施例实现用于允许交易脚本调出资源和模块过程的方案。如上面所提到的,分类账交易系统106可以将智能合约解构为资源和模块。因此,分类账交易系统106可以实现一组规则,通过这些规则,任意交易脚本可以利用模块过程来操纵(例如,修改)资源。图23示出了根据一个或更多个实施例的存储在分布式数字分类账交易网络处的模块和相应资源。
例如,图23示出了定义Currency模块2302的编程语言的代码。如图23所示,Currency模块2302包括类型Coin的资源类型声明2304。此外,Currency模块2302定义了交易脚本可能调用的过程,以便使用、修改基于Currency模块2302生成的资源或以其他方式与基于Currency模块2302生成的资源交互。特别地,Currency模块2302定义了存款过程2306和取款过程2038(描述这些过程的细节的代码未在图中示出)。如图23所示,分类账交易系统106利用Currency模块2302来生成Coin资源2310。
在一个或更多个实施例中,Coin资源2310在Currency模块2302的外部是不透明的。实际上,在一些实施例中,分类账交易系统106将Coin资源2310的使用限制于在Currency模块2302内定义的过程(并且拒绝在由模块定义的过程的外部试图使用或修改资源的交易)。具体地,在一些实施例中,其他模块和交易脚本只能使用在Currency模块2302内定义的公开过程来读取或修改Coin资源2310的值字段。类似地,在一个或更多个实施例中,只有在Currency模块2302内定义的过程可以创建或销毁类型Coin的资源。换句话说,Currency模块2302提供具有对派生资源(the derived resources)的访问、创建和销毁的控制的应用编程接口(API)。然而,在一些实施例中,分类账交易系统106定义一组操作或过程,即使这些操作和过程不是在对应的模块内定义的,它们也可用于与资源交互。
作为说明,为了执行将Coin资源2310从第一用户账户转移到第二用户账户的交易,分类账交易系统106可以生成调用在Currency模块2302中声明的取款过程2308和存款过程2306的交易脚本。例如,交易脚本可以包括对取款过程2308的调用(例如,“let coin=0x0.Currency.withdraw_from_sender(copy(amount))”),以便从Coin资源2310提取指定“amount”的值。此外,交易脚本可以包括对存款过程2306的调用(例如,“0x0.Currency.deposit(copy(payee),move(coin))”)以将所提取的值存到由“payee”指定的用户账户。
C.利用智能合约来拒绝交易、扣除gas支付款、使序列号递增和将gas分发给计算机节点
传统区块链系统结合执行交易来执行各种任务。例如,许多传统系统实现任务,例如交易验证、交易费用提取和gas支出。然而,许多传统系统对这些任务进行硬编码。实际上,许多传统系统在这些任务的源代码内定义这些任务的实现。于是,这在传统系统内造成了不灵活性,因为这些任务的修改需要对源代码本身进行不期望的修改。
如上面所提到的,分类账交易系统106的一个或更多个实施例执行若干交易执行过程(例如,在执行交易时的若干行动)。例如,在接收到交易请求时,分类账交易系统106可以执行一系列检查以确定交易请求是否是有效的。此外,如所提到的,分类账交易系统106可以执行各种收尾过程。然而,如下面将讨论的,分类账交易系统106的一个或更多个实施例利用智能合约(即,模块和资源)来执行这些任务,并随着时间的推移管理对这些任务的修改或改进。
如先前提到的,当分类账交易系统106从客户端设备接收交易请求时,分类账交易系统106在执行交易之前执行一系列检查。具体地,在一个或更多个实施例中,分类账交易系统106利用准入控制器和内存池管理器(每个在上面关于图2被讨论)来对每个接收到的交易执行一系列检查。图24示出了根据一个或更多个实施例的对接收到的交易请求执行一系列检查的分类账交易系统106的框图。
如图24所示,分类账交易系统106执行针对交易请求执行初始检查的行动2402。特别地,在一些实施例中,分类账交易系统106利用准入控制器来执行检查。在上面关于图2提供了关于所执行的检查的更具体的细节。
如图24所示,分类账交易系统106随后执行基于由同一账户提交的其他交易来执行附加检查的行动2404。实际上,在一个或更多个实施例中,分类账交易系统106利用内存池管理器来执行这些附加检查。如上面所提到的,分类账交易系统106可以在准许来自交易请求的交易进入内存池管理器中之前执行这些附加检查。在上面关于图2提供了关于这些附加检查的更多细节。
另外,如图24所示,分类账交易系统106执行存储交易用于以后执行的行动2406。特别地,如果交易请求满足检查,则分类账交易系统106可以将交易存储在内存池管理器中用于以后执行。然而,在一个或更多个实施例中,如果交易请求无法满足所执行的检查中的一个或更多个,则分类账交易系统106拒绝交易请求。在一些实施例中,分类账交易系统106向提交交易请求的客户端设备提供拒绝的通知。
在一个或更多个实施例中,分类账交易系统106可以利用智能合约来管理对接收到的交易请求的上面提到的检查。特别地,在一个或更多个实施例中,分类账交易系统106可以生成用于执行检查和拒绝交易的智能合约(例如模块),该智能合约包括可用于对交易请求执行检查的过程的列表。分类账交易系统106然后可以在接收到交易请求时实现该智能合约。
在一个或更多个实施例中,智能合约是可配置的(受限于定义智能合约和共识协议的公开过程)。实际上,在一些实施例中,分类账交易系统106可以经由跨分布式数字分类账交易网络的交易来修改或以其他方式改变用于执行检查和拒绝交易的智能合约。例如,在一些实施例中,智能合约本身包括用于修改智能合约的规则或过程。为了说明,智能合约可以授权验证者节点的子集(例如,具有加密密钥的经授权设备)来提交修改交易的验证规则的交易。因此,分类账交易系统106可以(例如,经由客户端设备或验证者节点设备)向分布式数字分类账交易网络提交改变智能合约的交易,并且如果共识被达成,则相应地应用改变。
如上面进一步提到的,在交易执行时,分类账交易系统106可以执行一个或更多个收尾任务。图25示出了根据一个或更多个实施例的执行一个或更多个收尾任务的分类账交易系统106的框图。尽管图25示出了以指定顺序执行的行动,但是应当注意,这些行动可以以任何顺序被实现。在一个或更多个实施例中,只要执行进展到超出开场任务(prologuetasks)(例如,认证发送交易的用户账户,确保发送交易的用户账户具有足够的数字货币来支付指定的最大gas,等等)——即使在后续执行步骤(例如,运行交易脚本)中执行失败,分类账交易系统106就执行收尾任务。
如图25所示,分类账交易系统106执行使用户账户的序列号递增的行动2502。特别地,分类账交易系统106使发送交易请求的用户账户的序列号递增。如上面所讨论的,分类账交易系统106将用户账户的序列号用作许多检查中的一个检查以防止第三方发送欺诈的交易请求。
此外,如图25所示,分类账交易系统106执行从用户账户中扣除交易费用的行动2504。实际上,在执行交易时,分类账交易系统106可以确定执行的成本。因此,分类账交易系统106可以在交易被执行之后从发送交易的用户账户中扣除所确定的金额。
在一个或更多个实施例中,分类账交易系统106基于gas价格和gas成本来确定交易费用。特别地,如上面所提到的,每个交易请求可以指定提交交易请求的用户账户愿意每单位gas支付的以数字货币表示的价格(即,gas价格)。此外,分类账交易系统106可以动态地考虑在执行交易中消耗的计算能力,该计算能力被转换成gas成本。在一个或更多个实施例中,验证者节点设备可以优先执行具有较高gas价格的交易,并且可以在分布式数字分类账交易网络拥塞时丢弃具有低价格的交易。
在一些实施例中,分类账交易系统106跟踪在执行期间使用的gas单位的数量。如果在执行完成之前达到了交易请求中所指定的最大gas限制,分类账交易系统106可以立即停止执行。在一些实施例中,分类账交易系统106避免将由所实施的执行(the executionperformed)产生的部分改变提交到分类账状态,但是交易仍然出现在交易历史中,并且分类账交易系统106对于所使用的gas向发送用户账户收费。
类似于上面讨论的交易检查,分类账交易系统106可以利用智能合约来执行一个或更多个前面提到的执行后任务。实际上,在一些实施例中,分类账交易系统106生成用于实施执行后任务的智能合约(例如模块),该智能合约包括用于执行必要任务的一个或更多个过程调用。如上面所讨论的,用于实施执行后任务的智能合约是可配置的,允许对智能合约的实现的改变或更新。
除了使用智能合约来针对交易请求执行检查和实施执行后任务之外,分类账交易系统106还可以利用智能合约来分发从客户端设备收集的用于执行交易的gas支付款。图26示出了根据一个或更多个实施例的利用智能合约来分发gas支付款的分类账交易系统106的框图。
如图26所示,分类账交易系统106执行观察在分布式数字分类账交易网络上的计算机节点行动的行动2602。如上面所提到的,分类账交易系统106的一个或更多个实施例利用报告管理器,该报告管理器观察分布式数字分类账交易网络的计算机节点并报告对其应该提供奖励或抽取费用的任何行为。上面参考图1讨论了可以被报告的这样的行动的示例。实际上,分类账交易系统106可以利用报告管理器来观察由验证者节点设备和由全节点设备做出的行动。
如图26所示,分类账交易系统106可以进一步执行向智能合约发送gas(例如,在应用由模块定义的过程中引用gas数量)的行动2604。实际上,如上面所提到的,分类账交易系统106可以从提交交易请求的用户账户收集gas作为用于执行交易的交易费用。分类账交易系统106可以进一步生成管理在分布式数字分类账交易网络的计算机节点之间分发该gas(例如,作为对参与网络的奖励)的智能合约(例如模块)。分类账交易系统106可以将gas传输到智能合约用于分发。在一个或更多个实施例中,分类账交易系统106可以在为一组交易执行交易脚本之后将gas分发给智能合约。在一些实施例中,分类账交易系统106使用某个其他定期转账将gas发送到智能合约。在一个或更多个实施例中,分类账交易系统106可以如上所述的配置、更新或以其他方式改变用于分发gas的智能合约。
如图26所示,分类账交易系统106可以进一步执行向智能合约报告计算机节点行动(例如,在应用由模块定义的过程中引用报告计算机节点行动)的行动2606。特别地,分类账交易系统106可以利用报告管理器来报告由分布式数字分类账交易网络上的计算机节点采取的行动。实际上,在一个或更多个实施例中,分类账交易系统106将智能合约配置为基于计算机节点的行动(例如,计算机节点是适当地行动,还是不适当地行动)来将gas分发给那些计算机节点。因此,分类账交易系统106使用报告管理器来报告计算机节点行动,以便智能合约可以确定如何分发gas。如图26所示,分类账交易系统106然后可以执行将gas分发给计算机节点(例如,分发给对应于计算机节点的用户账户)的行动2608。实际上,分类账交易系统106可以利用智能合约,基于所报告的计算机节点行动来分发gas。
通过利用智能合约,分类账交易系统106可以比传统系统更灵活地执行围绕交易的执行的任务。特别地,如上面所提到的,使用智能合约允许分类账交易系统106比传统系统更灵活地改变这些任务如何被执行。实际上,分类账交易系统106可以灵活地修改或以其他方式改变执行这些任务的智能合约,而不需要改变源代码。这允许分布式数字分类账交易网络随着时间的推移灵活地修改某些交易特征,以适应社区(community)的需要,在出现新的恶意威胁时解决它们,并且随着数字交易的数量和类型的增长而扩展。
D.推测性并行执行
许多传统区块链系统在一个或更多个计算机节点处将已经被提交用于执行的交易组装成交易区块,然后跨网络共享所组装的交易区块(例如,共享给其他计算机节点)。然后,传统系统可以在每个计算机节点处执行在特定交易区块内的交易,并相应地修改数字分类账。
然而,这些传统系统遭受各种问题。例如,传统区块链系统常常是不灵活的,因为它们僵化地按顺序执行交易区块内的交易。实际上,当执行给定的交易区块时,传统系统一般被配置为从头到尾穿越区块,从第一个交易开始并一次一个地执行每个后续交易。在执行交易时,传统系统生成网络的新状态,并基于该新状态执行下一个交易。
作为这个僵化方法的结果,传统区块链系统也是低效的。特别地,因为传统区块链系统顺序地执行区块内的交易,所以这样的系统需要大量的时间和计算资源(例如处理时间)来执行交易区块。实际上,为了执行交易区块,传统系统通常需要与在区块内单独地执行每个交易所需的时间的总和相等的时间量。
分类账交易系统106的一个或更多个实施例利用并行交易执行以经由分布式数字分类账交易网络高效地执行交易。例如,在一个或更多个实施例中,分类账交易系统106确定分布式数字分类账交易网络的第一状态数据结构(例如最新状态),其表示分布式数字分类账交易网络的用户账户的账户状态。分类账交易系统106然后可以识别包括与一组用户账户相关联的交易的多个交易。随后,分类账交易系统106可以相对于第一状态数据结构并行地实施交易的先予执行。通过该先予并行执行,分类账交易系统106可以识别将每个交易应用于第一状态数据结构的执行结果。分类账交易系统106还可以确定交易对于该组用户账户的依赖性。基于所确定的依赖性,分类账交易系统106可以应用执行结果来生成第二状态数据结构(例如,等效于针对第一状态数据结构串行地执行多个交易的第二状态数据结构)。
为了说明,分类账交易系统106可以识别与其他交易无关的第一组交易。分类账交易系统106可以针对第一状态数据结构应用这些交易的交易结果以生成中间状态数据结构。在应用第一组独立交易的交易结果之后,分类账交易系统106可以识别(现在)独立的第二组交易。分类账交易系统106可以针对中间数据结构执行第二组交易。分类账交易系统106可以迭代地识别独立交易,针对中间状态结构执行这些独立交易,直到生成第二状态数据结构为止(其等效于串行地执行多个交易)。以这种方式,分类账交易系统106可以高效且灵活地并行地执行交易,同时仍然考虑依赖性以跨分布式数字分类账交易网络实现一致且准确的状态数据结构。
如上面所提到的,分类账交易系统106可以并行地实施交易的先予执行以确定交易结果和依赖性,然后基于依赖性来应用交易结果。图27示出了根据一个或更多个实施例的并行地执行交易的分类账交易系统106的框图。特别地,图27提供了根据一个或更多个实施例的使用并行执行来执行多个交易的概况。
如图27所示,分类账交易系统106可以识别多个交易2702。图27示出了包括三个交易的多个交易2702,但是多个交易2702可以包括任意数量的交易。如所提到的,多个交易2702可以包括与分布式数字分类账交易网络的一组用户账户相关联的交易。例如,在一个或更多个实施例中,一个或更多个交易触发与用户账户相关联的写入命令(例如,修改的命令)和/或读取命令(例如,提取数据的命令)。
如图27所示,分类账交易系统106可以执行并行地实施交易的先予执行的行动2704。特别地,分类账交易系统106可以识别分布式数字分类账交易网络的第一状态数据结构(在图27中被标记为“S0”),且关于第一状态数据结构并行地实施交易的先予执行。关于图27,第一状态数据结构包括分布式数字分类账交易网络的最新的状态数据结构,其为用户账户提供最新的账户状态。
如所示,通过实施交易的先予执行,分类账交易系统106可以确定关于状态数据结构的多个交易结果2704a-2704c。多个交易结果2704a-2704c反映在单独地执行每个交易时对状态数据结构的账户的改变。因此,例如,交易结果2704a反映在执行交易“T1”时对一个或更多个用户账户的修改。
通过先予地(即,推测性地)执行交易,分类账交易系统106可以识别交易如何与一组用户账户相关联(例如,与一组用户账户交互)。例如,分类账交易系统106可以识别交易是否从来自一组用户账户中的特定用户账户读取和/或写入到来自一组用户账户中的特定用户账户。另外,通过先予地执行交易,分类账交易系统106可以确定交易是否具有有效的签名、是否可以支付所需的交易费用、以及是否不会以其他方式修改分布式数字分类账交易网络。
如图27所示,基于先予执行,分类账交易系统106可以执行确定来自多个交易2702中的交易之间的依赖性的行动2706。具体地,对于给定的交易,分类账交易系统106可以确定该交易是否依赖于先前的交易。为了说明,分类账交易系统106可以确定当给定的交易从先前的交易所写入的同一用户账户读取(例如,先前的交易从用户账户中提取数字资产,并且给定的交易读取与该用户账户相关联的数字资产的当前值)时,给定的交易依赖于先前的交易。作为另一个示例,分类账交易系统106可以确定当给定的交易和先前的交易两者都从同一用户账户读取时,给定的交易不依赖于先前的交易。
为了说明,考虑下面的三个交易:
T1:将1个代币从A发送到B[读A,B;写A,B]
T2:将1个代币从X发送到Y[读X,Y;写X,Y]
T3:如果A的余额少于50,则将1个代币从C发送到D[读A,C,D;写C,D]
基于实施先予执行,分类账交易系统106可以确定T1读取账户A和B两者以及向账户A和B两者写入(例如,交易访问A以确定数字资产、提取数字资产、访问B以及将数字资产存放到B)。类似地,分类账交易系统106可以确定T2读取账户X和Y两者以及向账户X和Y两者写入。此外,分类账交易系统106可以确定T3从A读取(即,访问A以确定余额是否小于50)、从C和D读取以及向C和D写入。因此,分类账交易系统106确定T3依赖于T1(而T1和T2与其他交易无关)。
在一个或更多个实施例中,分类账交易系统106可以进一步识别多个交易2702内的一个或更多个交易在执行时是否将失败。为了说明,分类账交易系统106可以确定如果交易的执行触发从用户账户中提取数字资产并且在执行时与该用户账户相关联的数字资产的值将是不足的,则交易将失败。在一个或更多个实施例中,分类账交易系统106拒绝在执行时将失败的交易。
如图27所示,分类账交易系统106随后执行基于依赖性来应用交易结果的行动2708。特别地,分类账交易系统106可以基于根据实施先予执行而确定的依赖性来应用交易结果2704a-2704c。具体地,基于确定交易T1和T2不依赖于彼此(例如,是独立的),分类账交易系统106将交易结果2704a和2704b应用于状态数据结构S0,以生成中间状态数据结构SA。因此,中间状态数据结构SA反映由T1和T2导致的对账户的改变。
如图27所示,分类账交易系统106确定交易T3依赖于交易T1。当确定分类账交易系统106已经应用了T1的交易结果时,分类账交易系统106可以确定交易T3不再依赖于待处理的交易。因此,分类账交易系统106关于中间数据结构SA执行交易T3。关于图27,分类账交易系统106不直接应用交易结果2704c,因为交易结果2704c是关于状态数据结构S0的(其不反映来自T3所依赖的T1的修改)。
如所示,在执行来自多个交易2702中的最终交易时,分类账交易系统106可以生成包括反映交易的结果的已修改的账户状态的第二状态数据结构(“S1”)。特别地,第二状态数据结构包括如果分类账交易系统106串行地执行多个交易2702内的每个交易则将会达到的相同状态数据结构。
分类账交易系统106可以以各种顺序将交易结果应用于中间数据结构并执行依赖的交易(dependent transactions)。例如,尽管图27示出了针对第一状态数据结构S0应用T1和T2,但是分类账交易系统106可以利用不同的顺序。为了说明,分类账交易系统106可以针对第一状态数据结构S0应用T1以生成中间状态数据结构SA。分类账交易系统106然后可以针对SA执行T3以生成第二中间数据结构SB。分类账交易系统106然后可以针对SB执行T2以生成第二状态数据结构S1。例如,分类账交易系统106可以在存在执行交易的顺序是重要的某种指示的情况下利用这种方法。例如,验证者节点可以提供以特定顺序执行交易的指示。
在一些实施例中,分类账交易系统106执行基于依赖性指示符来确定依赖性的行动2706。例如,验证者节点可以从另一个验证者节点(例如共识的先导者节点)接收指示多个交易之间的一个或更多个依赖性的依赖性指示符。在一些实施例中,分类账交易系统106可以在执行先予执行和/或应用交易结果时使用该依赖性指示符。
为了说明,在一些实施例中,分类账交易系统106接收T3依赖于T1的依赖性指示符。作为响应,分类账交易系统106可以从行动2704中排除T3。具体地,分类账交易系统106可以并行地对T1和T2实施先予执行(而不对T3实施先予执行)。分类账交易系统106可以应用交易结果2704a、2704b来生成中间状态数据结构SA,然后针对中间状态数据结构SA执行T3。
因此,分类账交易系统106可以利用依赖性指示符来确定交易的第一子集(例如中间交易)和交易的第二子集(例如依赖的交易)。分类账交易系统106可以关于第一状态数据结构实施交易的第一子集的先予并行执行,然后针对中间数据结构执行交易的第二子集。
在一些实施例中,即使在接收到依赖性指示符时,分类账交易系统106仍然可以跨所有交易实施先予执行以确定依赖性指示符是否是准确的。例如,如果计算机节点确定依赖性指示符是不准确的,分类账交易系统106可以忽略依赖性指示符。此外,分类账交易系统106可以惩罚分发不准确的依赖性指示符(或者拒绝为区块投票)的计算机节点。
在一个或更多个实施例中,分类账交易系统106将数据结构第二状态数据结构存储在临时的存储装置中,并延迟修改在存储装置中的第一状态数据结构,直到共识被达成为止。为了说明,尽管未在图中示出,但是分类账交易系统106可以接收在分布式数字分类账交易网络的计算机节点之间的关于第二状态数据结构(“S1”)的共识的指示。在一个或更多个实施例中,接收共识的指示包括在先导验证者节点处接收完成多个交易2702的必要投票。在一些实施例中,接收共识的指示包括在另一(即,非先导的)验证者节点处(例如,从先导验证者节点)接收多个交易2702已经完成的指示。如上面所讨论的,关于第二状态数据结构的共识可以包括关于如被多个交易2702修改的交易树的根值——该根值包括第二状态数据结构的表示——的共识。
响应于接收到共识的指示,分类账交易系统106可以将第二状态数据结构提交给存储装置。例如,分类账交易系统106可以在分布式数字分类账交易网络的每个计算机节点处基于第二状态数据结构来修改存储在相应计算机节点处的数据结构(例如第一状态数据结构)。特别地,分类账交易系统106可以基于如经由共识验证的多个交易2702来修改数据结构。
如上面所提到的,分类账交易系统106可以确定多个交易内的交易之间的依赖性,然后基于这些依赖性来应用交易结果。图28示出了根据一个或更多个实施例的确定依赖性并基于依赖性来应用交易结果的分类账交易系统106的框图。
例如,如图28所示,分类账交易系统106可以执行生成地址依赖性图的行动2802。特别地,分类账交易系统106可以(如上面所讨论的)并行地实施交易的先予执行,然后基于先予执行来确定那些交易的依赖性。分类账交易系统106然后可以生成地址依赖性图。如图28所示,地址依赖性图示出了来自多个交易中的与分布式数字分类账交易网络的特定用户账户相关联的每个交易。
如在图28中进一步所示的,分类账交易系统106在依赖性图内将与每个用户账户相关联的交易进行排序。在一个或更多个实施例中,分类账交易系统106基于提交的时间来将与每个用户账户相关联的交易进行排序。在一些实施例中,分类账交易系统106基于一个或更多个其他因素来将交易进行排序。
如图28所示,分类账交易系统106随后执行生成前向和后向依赖性图的行动2804。特别地,分类账交易系统106利用地址依赖性图来生成前向和后向依赖性图。例如,对于给定交易,前向依赖性图示出了直接依赖于该交易的执行的交易(即,紧接着跟随该交易的交易),如由地址依赖性图所示的。为了说明,图28所示的前向依赖性图示出了tx2和tx3都直接依赖于tx1的执行。换句话说,tx1与也与tx2和tx3相关联的至少一个用户账户相关联,但是如由地址依赖性图所示的,tx1被排序为紧接在tx2和tx3两者之前。
如由地址依赖性图所示的,对于给定交易,后向依赖性图示出了该交易直接依赖于的交易。为了说明,图28所示的后向依赖性图示出了tx2直接依赖于tx1。换句话说,tx2与也与tx1相关联的至少一个用户账户相关联,但是如由地址依赖性图所示的,tx2被排序为紧接着跟随tx1。
如图28所示的,分类账交易系统106然后可以执行在没有后向依赖性的情况下应用交易结果的行动2806。特别地,在一个或更多个实施例中,如果后向依赖性图示出该交易的后向依赖性槽(slot)是空的,则分类账交易系统106应用根据先予并行执行而确定的交易结果。例如,如图28所示,分类账交易系统106可以为tx1应用交易结果,因为在后向依赖性图中,tx1的后向依赖性槽是空的。
如图28所示,分类账交易系统106可以进一步执行将执行广播到前向依赖的交易的行动2808。在一个或更多个实施例中,响应于广播,分类账交易系统106从后向依赖性图中移除交易。分类账交易系统106然后可以确定哪些交易不再具有后向依赖性,并且可以相应地执行那些交易(例如,关于中间状态数据结构执行那些交易)。因此,分类账交易系统106可以迭代地执行交易,广播它们的执行,然后识别新近可用于执行的交易,直到所有的交易都被执行为止。
在一个或更多个实施例中,分类账交易系统106包括一个或更多个执行管理器,每个执行管理器管理一个或更多个交易的执行。与给定交易相关联的执行管理器可以另外管理该交易特有的前向依赖性图和后向依赖性图。执行管理器可以确定交易是否具有后向依赖性,以及如果交易没有后向依赖性,则可以执行该交易。如果后向依赖性存在,执行管理器可以等待执行交易,直到接收到指示给定交易向前依赖于的交易已经被执行的广播之后。一旦广播被接收到,执行管理器就可以从后向依赖性图中移除所执行的交易(如果适用的话)。在确定交易不再具有后向依赖性时,执行管理器可以执行该交易。在执行交易时,相关联的执行管理器可以将执行的指示广播给其他执行管理器。在一个或更多个实施例中,在确定交易将失败时,相关联的执行管理器仍然可以向其他执行管理器发送广播,用于从相关联的后向依赖性图中移除交易。
以这种方式,当与传统系统相比时,分类账交易系统106提供关于交易执行的更大的灵活性。特别地,分类账交易系统106可以灵活地执行和应用交易结果,同时仍然基于交易之间的依赖性来实现相同的所得到的状态数据结构。此外,分类账交易系统106比传统系统更高效地操作。实际上,通过并行地执行交易,分类账交易系统106减少了执行多个交易所需的时间量。
E.保管(custody)/速率受限密钥
传统区块链系统常常将对用户账户的数字资产的访问限制到用户账户的所有者。然而,这样的传统系统通常向用户账户的所有者提供对存储在其中的数字资产的无限制访问。这通常造成安全风险,因为已经获得对用户账户的访问(例如,通过获得与该用户账户相关联的私有密钥)的恶意第三方将具有对该账户和对应的数字资产的无阻碍访问。
分类账交易系统106的一个或更多个实施例利用访问限制(例如,来自一组密钥或访问受限密钥中的阈值数量的密钥)来向存储在用户账户处的数字资产提供安全性保护。例如,在一个或更多个实施例中,分类账交易系统106通过生成一个或更多个阈值访问要求(例如,访问账户所需的阈值数量的访问密钥)来限制对存储在用户账户处的数字资产的访问。当交易被提交以利用用户账户的数字资产时,分类账交易系统106可以确定阈值访问要求是否已经被满足,并基于该确定来提供对数字资产的访问。
在一些实施例中,分类账交易系统106可以利用限制用户账户的数字资产可以如何被使用的访问密钥限制。特别地,分类账交易系统106可以使用具有价值密钥限制(即,对可以经由访问密钥而访问的数字资产的价值的限制)和/或速率密钥限制(即,对数字资产可以经由访问密钥被使用的速率的限制)的访问密钥。以这种方式,分类账交易系统106可以保护用户账户的数字资产免受不想要的访问。此外,如果这样的访问被实现,分类账交易系统106可以最小化由不想要的访问实现的数字资产的损失。
除了提高安全性以外,分类账交易系统106还可以提高灵活性。例如,分类账交易系统106可以为不同的访问密钥生成各种不同的访问密钥限制,使得用户账户可以使用受限于第一访问密钥限制的第一访问密钥和受限于第二访问密钥限制的第二访问密钥。以这种方式,分类账交易系统106可以为每个单独的访问密钥提供保护,同时允许出于不同的目的灵活使用不同的访问密钥(例如,允许不受信任的代理使用具有低价值密钥限制的第一访问密钥,并允许受信任的代理使用具有较高价值密钥限制的第二访问密钥)。
图29示出了根据一个或更多个实施例的实现对存储在用户账户处的数字资产的访问限制的分类账交易系统106。如图29所示,分类账交易系统106可以将访问要求2906与用户账户2902相关联。访问要求2906限制对存储在用户账户2902处的数字资产2904的访问。当尝试访问(例如,转移)数字资产2904的交易请求2912被接收到时,分类账交易系统106可以根据访问要求2906是否已经被满足来允许访问。
例如,访问要求2906可以包括阈值数量(其中阈值“数量”包括数量、百分比或比率)的访问密钥。例如,访问要求2906可以要求来自与用户账户2902相关联的一组用户2908中的最小数量的用户与访问数字资产2904的交易请求2912相关联。例如,每个用户可以利用交易请求2912提供与该用户相关联的数字签名。在一个或更多个实施例中,分类账交易系统106所要求的最小数量的用户包括来自一组用户2908中的所有用户。在一些实施例中,最小数量的用户仅包括来自一组用户2908中的用户的子集。
另外,访问要求2906可以要求来自与用户账户2902相关联的一组访问密钥2910中的阈值数量(即,数量、百分比或比率)的访问密钥与访问数字资产2904的交易请求2912相关联。实际上,分类账交易系统106可以生成一个或更多个访问密钥以在访问数字资产2904时使用。在一个或更多个实施例中,分类账交易系统106所要求的最小数量的访问密钥包括来自与用户账户2902相关联的一组访问密钥2910中的所有访问密钥。在一些实施例中,最小数量的访问密钥仅包括来自一组访问密钥2910中的访问密钥的子集。在一个或更多个实施例中,分类账交易系统106要求来自一组用户2908中的最小数量的用户和来自一组访问密钥2910中的最小数量的访问密钥与访问数字资产2904的交易请求2912相关联。
如所提到的,在接收到访问数字资产2904的交易请求2912时,分类账交易系统106可以确定访问要求2906是否被满足。在一个或更多个实施例中,如果访问要求2906不被满足,分类账交易系统106可以拒绝交易请求2912。然而,如果访问要求2906被满足,分类账交易系统106可以接受交易请求2912(并执行对应的交易)。
如上面所提到的并且如在图29中进一步所示的,分类账交易系统106可以利用访问密钥限制2920(例如,价值密钥限制和/或速率密钥限制)来限制对存储在用户账户2902处的数字资产2904的访问。特别地,访问密钥限制2920可以限制提供给特定访问密钥(例如访问密钥2922)的访问的程度。为了说明,在一个或更多个实施例中,访问密钥限制2920限制可以使用访问密钥2922来访问的数字资产2904的总数量或总价值(例如,提供可以使用访问密钥2922来访问的数字资产2904的最大货币价值的价值密钥限制)。在一些实施例中,访问密钥限制2920提供对访问密钥2922可以成功地访问数字资产2904的时间段的限制(例如,访问密钥2922是仅对一天、一周、一个月等有效的速率受限密钥)。在一些实施例中,访问密钥限制2920限制可在循环的时间段内由访问密钥2922访问的数字资产2904的总数量或总价值的速率(例如,限定每天、每周、每月等可以访问的最大货币价值的速率密钥限制)。在一个或更多个实施例中,分类账交易系统106可以以多种方式组合一个或更多个前面提到的限制(例如,提供可以每周使用访问密钥2922来访问的货币价值,并且进一步将访问密钥2922的有效性限制为一年)。
在一个或更多个实施例中,分类账交易系统106可以基于其他访问密钥来生成访问密钥。例如,分类账交易系统106可以基于访问密钥2922(即,“父访问密钥”)来生成一个或更多个访问密钥(即,“子访问密钥”)。因此,分类账交易系统106可以生成对应于子访问密钥的访问密钥限制。在一个或更多个实施例中,对应于子访问密钥的访问密钥限制比与父访问密钥2922相关联的访问密钥限制2920更具限制性。为了说明,如果访问密钥限制2920限制了父访问密钥2922可用的数字资产2904的总数量或价值,则分类账交易系统可以生成一组子访问密钥,每个子访问密钥具有被限制为父访问密钥2922可访问的总数量或价值的子集的访问。
在接收到使用访问密钥2922来访问数字资产2904的交易请求2924时,分类账交易系统106可以确定与访问密钥2922相关联的访问密钥限制2920是否已经被满足。实际上,分类账交易系统106可以跟踪访问密钥2922的活动以确定访问密钥何时达到它的可访问性的极限。在一些实施例中,在确定访问密钥限制2920已经被满足时,分类账交易系统106可以拒绝交易请求2924。
在一个或更多个实施例中,分类账交易系统利用智能合约(即,模块)来处理受限于访问限制的交易请求。实际上,在一些实施例中,分类账交易系统106可以生成定义与用户账户相关联的访问限制(即,访问要求和/或访问密钥限制)的智能合约。在接收到受限于访问限制的交易请求时,分类账交易系统106可以使用智能合约来确定是接受还是拒绝交易请求。例如,分类账交易系统106可以利用智能合约来跟踪通过特定访问密钥对用户账户的数字资产的访问。当使用访问密钥的交易请求被接收到时,分类账交易系统106然后可以使用智能合约来确定针对该访问密钥的访问密钥限制是否已经被满足。
因此,通过利用访问限制,分类账交易系统106相对于传统系统提供额外的安全性和灵活性。例如,通过实现关于数字资产的访问要求,分类账交易系统106防止对那些数字资产的不想要的访问。此外,通过提供访问密钥限制,在第三方获得一个或更多个访问密钥时,分类账交易系统106减轻数字资产的潜在恶意访问。此外,通过允许用户定义访问限制的各种不同的组合(例如,阈值数量的密钥、速率受限密钥和/或价值受限密钥),分类账交易系统106允许用户账户灵活地允许不同程度的访问(例如,对不同代理来说或为了不同目的)。
F.交易事件
许多传统系统为单独的交易(例如,谁接收到资产、谁传输了资产、被交换的资产的价值等)维护存储交易的一个或更多个数据储存库。在执行交易时,传统系统可以为这些数据储存库中的一个或更多个生成新的条目以存储该交易的细节。传统系统可以进一步使用这些数据储存库来找出和提供交易细节。
然而,传统区块链系统在跟踪和报告交易细节方面常常是低效的和不准确的。例如,传统区块链系统常常采用响应于查询而提供交易细节的低效方法。为了说明,响应于从客户端设备接收到对与特定交易相关联的细节的查询,许多传统系统为已经被执行的每个交易区块提供头部(例如,概要)数据。随后,传统系统可以为在由客户端设备识别为潜在地包含特定交易的区块内的每个交易提供交易收据。然后,传统系统可以为由客户端设备根据交易收据而识别为潜在地包含期望细节的交易提供日志条目的列表。因此,传统系统常常利用大量的计算资源(例如处理时间和能力)来找出和传输不满足查询的数据。
除了效率顾虑以外,传统区块链系统也常常是不准确的。特别地,许多传统系统利用布隆过滤器来存储和提供交易细节。当确定期望的交易细节是否被包括在布隆过滤器中所存储的数据内时,这样的布隆过滤器冒产生误报的风险。因此,传统系统可能通过提供与查询无关的数据而不准确地响应对交易细节的查询。此外,即使传统系统可以搜索历史交易,它们也不会提供反面证明来证实交易的缺乏。例如,传统系统无法决定性地证明不存在触及特定计数的交易。这是重大的缺点,因为分布式数字分类账交易网络内的许多账户持有者常常寻求验证没有发生关于他们账户内的数字资产的事件。
分类账交易系统106的一个或更多个实施例利用交易事件和事件数据结构来准确且高效地提供交易事件细节(包括证实事件没有触及用户账户的反面证明)。如上面所提到的,分类账交易系统106可以生成存储对应于交易事件的事件数据的事件数据结构。在执行与用户账户相关联的交易时,分类账交易系统106可以在事件数据结构内生成一个或更多个交易事件。另外,分类账交易系统106可以修改对应于用户账户的交易事件计数器的计数值。在一个或更多个实施例中,分类账交易系统106维护对应于用户账户的多个交易事件计数器,其中每个交易事件计数器跟踪特定类别的交易事件的计数值。分类账交易系统106可以利用交易事件计数器的计数值来提供对应于在请求中指定的交易事件的交易事件数据。以这种方式,分类账交易系统106可以准确且高效地管理对交易事件数据的查询。
例如,考虑Ei作为在Ti的执行期间发出的事件的列表(如关于图4所述的被存储在事件Merkle树中)。在一些实施例中,该事件Merkle树的叶是(访问路径;数据有效载荷;计数器值)j形式的元组。这些元组可以按照事件被发出的顺序j编索引。Ei的认证器被包括在TransactionInfoi(例如交易数据结构)中。因此,验证者可以构造证明:在第i个交易内,第j个事件在访问路径A上被发出,具有计数器值c,并且具有数据有效载荷p。
客户端可以利用这些证明来访问在给定访问路径上的事件。例如,假设客户端想知道曾经在访问路径A上发出的所有事件。客户端持有在版本i处的最近的法定决议票数证书。使用Si,客户端可以对c——在版本i处A的计数器值——进行经认证的查询。对于j∈0…c,客户端可以使用计数器j对在A上发出的的事件元组进行经认证的查询。客户端可以确定有确切地一个这样的事件,因为交易执行生成具有连续计数器编号的事件。因此,存在使用计数器j在A上发出的某个历史事件的证明足以作为该事件是唯一的这样的事件的证明。
这种方法允许客户端持有对访问路径A上的事件的经认证订阅。客户端可以周期性地轮询以确定订阅是否是最新的。例如,客户端可以使用此来维护对它正在观察的地址上传入的支付交易的订阅。
乍一看,事件可能看起来是多余的。代替查询由交易Ti发出的事件,客户可以询问交易Ti是否被包括在数字分类账中。然而,这种方法容易出错,因为Ti的包含并不暗示成功的执行(例如,它可能已经用完了gas)。在交易可能失败的系统中,事件提供不仅特定交易已经被执行而且它已经以预期效果成功地被完成的证据。
如刚刚提到的,在执行交易时,分类账交易系统106可以生成一个或更多个交易事件。图30A-图30B示出了根据一个或更多个实施例的生成与用户账户相关联的交易事件的分类账交易系统106的框图。特别地,图30A示出了交易3002(将“10个代币从用户X的账户移动到用户A的账户”),以及图30B示出了交易3020(将“20个代币从用户A的账户移动到用户Z的账户”)。尽管图30A-图30B示出了为特定交易类型(例如,接收或发送货币)生成交易事件的分类账交易系统106,但是应当注意,分类账交易系统106可以为任何交易类别(例如,各种智能合约的执行)生成交易事件。
如图30A所示,(例如,在验证者节点设备3004上操作的)分类账交易系统106接收或以其他方式识别(例如,在交易区块内的)交易3002。为了说明的目的,交易3002包括代币到特定用户账户的转移。分类账交易系统106执行交易3002。
响应于交易3002的执行,分类账交易系统106生成交易事件3006。如图30A所示,交易事件3006包括事件数据3008。如上面所提到的,在一个或更多个实施例中,事件数据3008在状态数据结构内包括与交易事件相关联的用户账户的地址。特别地,分类账交易系统106可以包括用户账户的地址,作为用于访问与交易事件对应的交易事件计数器的访问路径的一部分。为了说明,访问路径“/0x12345/events/ReceivedFrom”包括用户账户的地址(即,“0x12345”)和在账户内的待访问的交易事件计数器(即,“events/ReceivedFrom”)。
事件数据3008还可以包括在交易事件之后的用户账户的交易事件计数器的计数值(也被称为“序列号”)和交易事件的细节。交易事件细节的示例可以包括但不限于在特定交易事件中涉及的各方以及由交易事件表示的值(例如,经由交易3002转移的数字资产的价值)。在一个或更多个实施例中,事件数据3008还包括交易3002在交易树内的高度。
在一个或更多个实施例中,分类账交易系统106在事件数据结构内生成交易事件3006(例如,如上面关于图4所述的)。特别地,分类账交易系统106可以将事件数据3008添加到事件数据库3012。此外,分类账交易系统106可以将事件数据3008添加到对应于交易3002的事件树3010(例如事件Merkle树)。特别地,分类账交易系统106可以生成事件树3010以反映对应于交易3002的所有交易事件。具体地,在一个或更多个实施例中,对于对应于交易3002的每个交易事件,分类账交易系统106向事件树3010添加叶节点。
在一个或更多个实施例中,分类账交易系统106通过在对应于交易事件3006的叶节点内存储对应于事件数据3008的散列值来将事件数据3008添加到事件树3010。例如,分类账交易系统106可以将散列函数应用于事件数据3008的交易事件细节,并将所得到的散列值存储在对应于交易事件3006的叶节点内。在一些实施例中,分类账交易系统106将散列函数应用于整个事件数据3008,并将所得到的散列值存储在叶节点内。
在一个或更多个实施例中,在生成对应于交易3020的事件树3010之后,分类账交易系统106确定事件树3010的根值。如上所述,分类账交易系统106可以通过从事件树3010的底部开始并向上移动迭代地将节点值进行组合并计算散列来确定根值。分类账交易系统106然后可以将事件树3010的根值存储在分布式数字分类账交易网络的交易树内(例如,如上面关于图5所述的)。
如图30A所示,分类账交易系统106响应于交易3002的执行(作为交易3002的执行的一部分)而进一步修改用户账户3014的交易事件计数器3016的计数值。特别地,分类账交易系统106可以使用包括用户账户3014的地址的访问路径经由状态数据结构来访问交易事件计数器3016。分类账交易系统106然后可以通过使计数值递增来修改交易事件计数器3016的计数值。
在一个或更多个实施例中,分类账交易系统106可以在请求时提供交易事件计数器3016的计数值。例如,分类账交易系统106(经由验证者节点或全节点)可以(例如,从客户端设备112a-112n之一或从计算机节点108a-108d之一)接收事件计数请求。事件计数请求可以包括访问路径,该访问路径包括用户账户3014的地址和交易事件计数器3016。响应于接收到事件计数请求,分类账交易系统106可以提供交易事件计数器的计数值。
由于不同的数据结构被分类账交易系统106利用,分类账交易系统106可以基于事件计数器的计数值来验证事件的存在(或事件的缺乏)。实际上,如上面(例如,关于图3-图6)所提到的,分类账交易系统106可以在状态数据结构(例如,状态数据库和对应的状态Merkle树)内存储事件计数器和对应的计数值。此外,分类账交易系统106可以确定状态Merkle树的根,在生成交易Merkle树中利用状态Merkle树的根,以及利用交易Merkle树的根来获得对数字分类账的共识。因此,事件计数器的计数值被验证,作为跨分布式数字分类账交易网络的共识的一部分。因此,事件计数器可以为账户提供事件(或事件的缺乏)的准确证明。
在一些实施例中,分类账交易系统106可以在请求时从事件数据结构提供交易事件3006的事件细节。例如,分类账交易系统106可以(例如,从客户端设备112a-112n之一或从计算机节点108a-108d之一)接收交易事件细节请求。交易事件细节请求可以包括交易事件计数器的计数值和用于访问交易事件计数器的访问路径。响应于接收到交易事件细节请求,分类账交易系统106可以从事件数据结构提供交易事件3006的事件数据3008(例如,交易事件的事件细节)。在一个或更多个实施例中,分类账交易系统106进一步提供对应于交易事件3006的Merkle证明以及事件数据3008。
在一个或更多个实施例中,分类账交易系统106可以提供对应于事件序列的交易事件数据集合。例如,分类账交易系统106可以接收对关于与用户账户对应的交易事件序列的细节的交易事件序列请求。交易事件序列请求可以包括交易事件计数器的访问路径以及计数值序列。计数值序列可以对应于与用户账户对应的事件序列。响应于接收到交易事件序列请求,分类账交易系统106可以提供对应于事件序列的交易事件数据集合。
为了提供响应于请求而提供交易事件数据的示例,在一个或更多个实施例中,事件数据结构可以包括交易事件索引数据库。交易事件索引数据库可以包括在由特定交易事件计数器跟踪的每个交易事件和与交易事件对应的交易事件数据在事件数据结构内的位置之间的映射。特别地,交易事件索引数据库可以将每个交易事件映射到触发该交易的特定交易。此外,交易事件索引数据库可以指示由该交易触发的所有交易事件中对应于该交易事件的事件号(event number)。
在一个或更多个实施例中,交易事件细节请求(或交易事件序列请求)可以包括与目标交易事件对应的交易事件计数器的访问路径以及对应于交易事件的序列号。分类账交易系统106可以利用交易事件索引数据,基于交易事件计数器的访问路径和交易事件的序列号来识别交易事件数据的位置。分类账交易系统106可以随后从事件数据结构中检索并提供交易事件数据。
如图30B所示,状态数据结构可以包括用户账户3014的多个交易事件计数器。例如,每个交易事件计数器3016、3018对应于特定的交易事件类型。例如,交易事件计数器3016对应于第一交易事件类型(例如,用户账户3014接收数字资产)。此外,交易事件计数器3018对应于第二交易事件类型(用户账户3014传输数字资产)。响应于执行生成交易事件的交易,分类账交易系统106可以确定交易事件的交易事件类型。然后,分类账交易系统可以修改对应于该交易事件类型的交易事件计数器的计数值。因此,分类账交易系统106可以维护与特定用户账户相关联的每类交易事件的准确计数。
尽管图30A-图30B示出了对应于用户账户3014的两个交易事件计数器,但是状态数据结构可以包括对应于用户账户的任意数量的交易事件计数器。并且交易事件计数器可以对应于各种交易事件类型(例如,不同的计数器用于不同的智能合约)。然而,在一些实施例中,状态数据结构包括对应于用户账户的单个交易事件计数器,并且分类账交易系统106在生成任何交易事件类型时使对应的计数值递增。
随着分类账交易系统106继续执行交易,分类账交易系统106可以生成交易事件并修改对应的交易事件计数器的计数值。例如,如图30B所示,分类账交易系统106(例如,或者在验证者节点设备3004上或者在分布式数字分类账交易网络的另一个计算机节点上操作)接收或以其他方式识别交易3020。交易3020可以被包括在与交易3002相同的交易区块或不同的交易区块中。为了说明的目的,交易3020包括代币从用户账户(即,用户账户3014)的转移。分类账交易系统106执行交易3020。
响应于交易3020的执行,分类账交易系统106生成交易事件3022。如上面所提到的,在一些实施例中,分类账交易系统106在事件数据结构内生成交易事件3022。特别地,分类账交易系统106可以将交易事件3022的事件数据3024添加到事件数据库3012。此外,分类账交易系统106可以将事件数据3024添加到事件树3026(例如事件Merkle树)。因为交易事件3022对应于不同的交易(即,不同于交易事件3006),分类账交易系统106将事件数据3024添加到不同的事件树(即,不同于事件树3010)。分类账交易系统106基于对应于交易3020的交易事件来生成事件树3026,并将数据存储在对应于那些交易事件的叶节点内。如上面所提到的,分类账交易系统106可以通过在对应于交易事件3022的叶节点内存储对应于事件数据3024的散列值来将事件数据3024添加到事件树3026。分类账交易系统106可以将事件树3026的根值存储在分布式数字分类账交易网络的交易树内。
响应于交易3020的执行,分类账交易系统106进一步修改用户账户3014的交易事件计数器3018的计数值。特别地,分类账交易系统106使用对应的访问路径经由状态数据结构来访问交易事件计数器3018。分类账交易系统106然后使交易事件计数器3018的计数值递增。
如上面所提到的,分类账交易系统106可以管理对交易事件数据的查询。如进一步提到的,分类账交易系统106可以全部或部分地由分布式数字分类账交易网络的任何单独元件实现。例如,虽然本公开的许多内容讨论了如在分布式数字分类账交易网络的计算机节点108a-108d之一上实现的分类账交易系统106,但是分类账交易系统106也可以在客户端设备112a-112n中的一个或更多个上实现(例如,作为客户端设备的一部分)。因此,在一个或更多个实施例中,在客户端设备上实现的分类账交易系统106(或其一个或更多个部件)可以检测新交易事件的发生,并生成对与那些交易事件对应的交易事件数据的请求。图31-图32示出了根据一个或更多个实施例的监控交易事件更新和检索交易事件数据的分类账交易系统106。
图31示出了根据一个或更多个实施例的用于确定对应于用户账户的新交易事件的发生的一系列行动3100的示例。尽管图31示出了通过与全节点设备通信来执行来自一系列行动3100中的一个或更多个行动的分类账交易系统106,但是应当注意,分类账交易系统106可以通过与分布式数字分类账交易网络的任何计算机节点通信来执行一个或更多个行动。此外,尽管图31示出了在客户端设备处执行一系列行动3100的分类账交易系统106,但是分类账交易系统106也可以在分布式数字分类账交易网络的另一设备(例如,计算机节点108a-108d之一)处执行一系列行动3100。
如图31所示,分类账交易系统106可以执行在第一时间轮询交易事件计数器以识别第一计数值的行动3102。例如,在一个或更多个实施例中,分类账交易系统106向存储状态数据结构的计算机节点提交对第一计数值的事件计数请求。特别地,分类账交易系统106向存储最新状态数据结构的计算机节点提交事件计数请求,该最新状态数据结构包括对应于用户账户的交易事件计数器的最新计数值。在一个或更多个实施例中,对第一计数值的事件计数请求包括访问路径,该访问路径标识状态数据结构的用户账户的地址和交易事件计数器。响应于轮询交易事件计数器,分类账交易系统106可以确定交易事件计数器在第一时间的计数值。
如图31所示,分类账交易系统106还执行在第二时间轮询交易事件计数器以获得第二计数值的行动3104。例如,在一个或更多个实施例中,分类账交易系统106向存储状态数据结构的计算机节点提交对第二值的附加事件计数请求。计算机节点可以是分类账交易系统106向其提交对第一计数值的事件计数请求的同一计算机节点,或者是分布式数字分类账交易网络的不同计算机节点。响应于轮询交易事件计数器,分类账交易系统106可以确定交易事件计数器在第二时间的计数值。
此外,如图31所示,分类账交易系统106执行比较第一计数值和第二计数值以确定是否已经发生新的交易事件的行动3106。例如,在比较第一计数值和第二计数值时,分类账交易系统106可以确定计数值的差异(例如,第二计数值高于第一计数值)。分类账交易系统106可以基于计数值的差异来确定已经发生至少一个新交易事件。
然而,在一些实施例中,分类账交易系统106可以比较第一计数值和第二计数值,并确定第一计数值和第二计数值是相同的计数值。通过确定这些计数值是相同的,分类账交易系统106可以验证在第一时间和第二时间之间不存在对应于用户账户的交易事件。换句话说,通过周期性地轮询交易事件计数器,分类账交易系统106可以提供关于特定账户没有发生特定类型的交易事件的反面证明。
在一个或更多个实施例中,基于比较交易事件计数器在第一时间的第一计数值和交易事件计数器在第二时间的第二计数值,分类账交易系统106确定或识别计数值序列。特别地,计数值序列可以包括大于1的计数值差。账户值序列指示对应于用户账户的事件序列已经经由分布式数字分类账交易网络发生。
在一些实施例中,分类账交易系统106可以轮询以获得交易事件更新,而不提交多个请求。特别地,分类账交易系统106可以向计算机节点提交请求,或者将状态数据结构的用户账户配置为每当与用户账户相关联的交易事件或事件序列被生成时提供通知。在另外的实施例中,分类账交易系统106可以向计算机节点提交请求,或者将用户账户配置为周期性地提供交易事件更新。
除了轮询以获得交易事件更新之外,分类账交易系统106还可以在客户端设备(或分布式数字分类账交易网络上的其他设备)上操作以检索与用户账户相关联的一个或更多个交易事件的事件细节。图32示出了根据一个或更多个实施例的用于检索交易事件的事件细节的框图。尽管图32示出了检索事件序列的事件细节的分类账交易系统106,但是应当注意,分类账交易系统106可以类似地起作用以检索单个交易事件的事件细节。
如图32所示,(例如,在客户端设备3202上操作的)分类账交易系统106传输对与分布式数字分类账交易网络的用户账户3212相关联的交易事件数据的交易事件细节请求3204。分类账交易系统106向分布式数字分类账交易网络的计算机节点(例如全节点设备3210)提交交易事件细节请求3204。在一个或更多个实施例中,分类账交易系统106响应于轮询交易事件计数器并确定已经发生与用户账户3212相关联的至少一个新交易事件,而传输交易事件细节请求3204。然而,在一些实施例中,分类账交易系统106提交交易事件细节请求3204作为对事件细节的独立请求的一部分(例如,在不轮询交易事件计数器的情况下对事件细节的请求)。
此外,在一些实施例中,分类账交易系统106将交易事件细节请求3204传输到分类账交易系统106向其传输对计数值的事件计数请求的同一计算机节点。特别地,在一个或更多个实施例中,为了轮询交易事件计数器而提交的事件计数请求和交易事件细节请求是到计算机节点的组合请求的一部分。例如,客户端设备可以提交指示如果事件计数的变化被检测到则交易事件细节应该被返回到客户端设备的请求。然而,在一些实施例中,分类账交易系统106将交易事件细节请求3204传输到不同的计算机节点。
交易事件细节请求3204可以包括对应于用户账户3212的交易事件计数器的访问路径3206和交易事件计数器的计数值。然而,如图32所示,除了单个计数值之外或者代替单个计数值,交易事件细节请求3204还可以包括计数值序列3208。实际上,交易事件细节请求3204可以包括对与事件序列对应的事件细节的交易事件序列请求。
如图32所示,全节点设备3210可以访问对应于交易事件细节请求3204的用户账户3212。特别地,在一个或更多个实施例中,计算机节点存储分布式数字分类账交易网络的状态数据结构(即,最新状态数据结构)。此外,计算机节点可以存储储存交易事件数据的事件数据结构以及分布式数字分类账交易网络的任何其他数据结构。
响应于传输交易事件细节请求3204,分类账交易系统106可以经由分布式数字分类账交易网络的计算机节点接收交易事件数据3214。特别地,如图32所示,交易事件数据3214包括对应于多个事件的交易事件数据集合。交易事件数据3214可以包括从事件数据结构中检索的数据。具体地,如图32所示,交易事件数据3214可以包括与每个交易事件对应的交易事件计数器的访问路径。交易事件数据3214还可以包括当对应的交易事件发生时交易事件计数器的计数值(被标记为“事件序列号”)。另外,交易事件数据3214可以包括对应于特定交易事件的交易事件细节。
如图32所示,分类账交易系统106可以进一步生成Merkle证明3216作为交易事件数据3214的一部分(尽管它们被分开显示)。实际上,如所提到的,事件数据结构可以包括事件Merkle树,以及状态数据结构可以包括状态Merkle树。分类账交易系统106可以利用Merkle证明来验证交易事件数据3214是准确的。上面提供了关于生成Merkle证明的附加细节。
在一个或更多个实施例中,分类账交易系统106从全节点设备3210(即,分类账交易系统106向其提交交易事件细节请求3204的同一计算机节点)接收交易事件数据3214。然而,在一些实施例中,分类账交易系统106从分布式数字分类账交易网络的不同计算机节点接收交易事件数据3214。在另外的实施例中,分类账交易系统106从分布式数字分类账交易网络的多个计算机节点接收交易事件数据3214(例如,从不同的计算机节点接收交易事件数据3214的不同分量)。
在一个或更多个实施例中,分类账交易系统106将对应于多个事件的交易事件数据集合与计数值序列3208进行比较。特别地,分类账交易系统可以利用该比较来确定交易事件细节请求3204的满足。例如,基于该比较,分类账交易系统106可以确定交易事件数据3214中所包括的多个事件是包括与交易事件细节请求3204相关联的事件序列的完整集合,还是包括不完整集合。为了说明,如果多个事件缺失具有在交易事件细节请求3204的计数值序列3208中包括的序列号的交易事件的数据,分类账交易系统106可以确定该多个事件是不完整的。
尽管前述示例示出了特定的交易、事件和请求,但是分类账交易系统106可以通过各种不同的请求来识别关于各种不同交易的各种不同的事件。例如,除了重复地轮询交易事件计数器之外(或者代替重复地轮询交易事件计数器),客户端设备还可以通过向计算机节点发送单个调用以在交易事件计数器已经改变时通知客户端设备,来监控交易事件计数器。类似地,不是轮询交易事件计数器并然后传输事件细节请求,客户端设备可以发送单个调用,以既监控交易事件计数器又然后在确定对交易事件计数器的改变时返回交易事件细节。因此,系统可以监控交易事件计数器,并且(作为响应)接收反映对交易事件计数器的改变的交易事件细节。
通过在计算机节点处维护跟踪特定交易事件的发生的交易事件计数器,分类账交易系统106可以比传统系统更高效地提供交易事件数据。特别地,分类账交易系统106可以接收交易事件细节请求,该请求指定应该为其提供事件细节的交易事件。因此,分类账交易系统106可以找出并提供所请求的精确事件细节,减少了响应查询所需要的计算资源(例如处理时间和能力)的量。通过在客户端设备处指定在提交查询时期望事件细节的特定交易事件,分类账交易系统106避免利用大量计算资源,其一般是分析响应于查询而接收的过量数据所需要的。
此外,分类账交易系统106比传统系统更准确。具体地,通过维护交易事件计数器,分类账交易系统106可以更准确地向客户端设备提供对交易事件的发生的更新。实际上,分类账交易系统106避免提供在传统系统下可能出现的误报。此外,通过在客户端设备处轮询与存储在计算机节点处的状态数据结构的用户账户对应的交易事件计数器,分类账交易系统106可以获得反面证明,并且准确地确定是否已经发生新的交易事件。具体地,通过响应于轮询交易事件计数器而确定计数值没有改变,分类账交易系统106可以准确地确定不存在对应于用户账户的新事件。
V.共识
A.概述
如上面所提及的,分类账交易系统106可以利用分布式数字分类账交易网络的验证者节点设备来实现以将交易区块的执行结果提交给存储装置作为结论的共识协议。图33示出了根据一个或更多个实施例的使用验证者节点设备来达成共识的分类账交易系统106的框图。如图33所示,分类账交易系统106执行利用先导验证者节点设备来向其他验证者节点设备提议交易区块的行动3302。分类账交易系统106然后执行利用验证者节点设备来将对交易区块的投票提交到先导验证者节点设备的行动3304。随后,分类账交易系统106执行利用先导验证者节点设备来与其他验证者节点设备共享投票结果的行动3306。如果共识被达成,分类账交易系统106可以将执行结果提交给存储装置。
如前面所讨论的,在一些实施例中,分类账交易系统106利用如由M.Yin、D.Malkhi、M.K.Reiter、G.G.Golan和A.Ittai在“Hotstuff:Bft consensus in the lensof blockchain”(arXiv preprint arXiv:1803.05069(2018))中描述的经修改的HotStuff协议来获得共识,该文章通过引用以其整体被并入本文。分类账交易系统106可以以多种方式改进该协议。例如,分类账交易系统106可以在验证者节点设备处对执行交易区块的结果而不是交易区块本身进行投票。通过使验证者共同签署区块的全结果状态(而不仅仅是交易序列),分类账交易系统106对非确定性故障更具抵抗力。这种方法还允许客户端使用法定决议票数证书来认证从数据库的读取。
此外,分类账交易系统106可以利用发出显式超时的引导器(pacemaker),并且验证者依赖于这些的法定决议票数来移动到下一轮(而不需要同步的时钟)。此外,分类账交易系统106可以实现不可预测的先导者选举机制,其中一轮的先导者由最近提交的区块的提议者使用可验证的随机函数来决定。这种机制限制了对手可以发起对抗先导者的有效DoS攻击的时间窗口。此外,分类账交易系统106使用保留签署法定决议票数证书的身份验证者的聚合签名。这允许分类账交易系统106向对法定决议票数证书做出贡献的验证者提供激励,而不需要复杂的阈值密钥设置。
此外,如所提到的,分类账交易系统106可以提供共识协议的流水线化。此外,分类账交易系统106可以实现使验证者节点设备能够正确地恢复共识协议的安全性措施,允许即使在所有计算机节点都崩溃之后,仍可保持分布式数字分类账交易网络上的稳定性。此外,分类账交易系统106可以利用智能合约来管理验证者节点设备之间的投票权。以这种方式,分类账交易系统106可以提高共识的准确性和效率,如将在下面更详细地讨论的。
B.对执行结果执行共识
许多传统区块链系统执行关于交易区块的共识。在达成共识之后,传统系统利用参与网络的计算设备来执行一致同意的交易,并将执行结果提交给存储装置。然而,这种共识后执行的方法可能在所存储的执行结果中引入不准确性。例如,实现交易区块的共识后执行假设执行将是确定性的。换句话说,传统系统常常假设每个计算机节点将通过执行相同的交易区块来获得相同的结果。然而,执行中的技术故障或错误可能导致在不同的计算机节点之间的执行结果差异。因此,一些计算机节点存储数字分类账的不同版本,提供对跨网络的数字分类账的不准确描绘。
如上面所提到的,分类账交易系统106的一个或更多个实施例执行对执行结果的共识。实际上,图34示出了根据一个或更多个实施例的执行对执行结果的共识的分类账交易系统106的框图。特别地,如图34所示和如上所述的,分类账交易系统106可以在验证者节点设备3042a-3042c处从先导验证者节点设备3404接收交易区块,执行交易区块并对执行结果进行投票。在确定执行结果已经达到共识(例如,来自验证者节点的对执行结果的投票满足共识阈值)时,分类账交易系统106可以将结果提交给在验证者节点设备3402a-3402c中的每个验证者节点设备处的存储装置。
通过对交易的执行结果而不是交易本身达成共识,分类账交易系统106更准确地操作。实际上,分类账交易系统106预测在验证者节点设备处交易的非确定性执行的可能性。因此,验证者节点设备仅将已经被一致同意的执行结果写入到存储装置中,允许跨分布式数字分类账交易网络的数字分类账的更准确的表示。
C.流水线化共识
另外,如上面所提到的,分类账交易系统106的一个或更多个实施例将流水线化的方法集成到共识过程中。特别地,分类账交易系统106可以实现连续3链提交规则作为共识协议的一部分。特别地,利用这种方法,当“连续3链”提交规则被满足时,第n轮的区块(以及区块的完整历史)被提交。也就是说,如果在连续的第n轮以及后续的第n+1、n+2轮存在具有相应法定决议票数证书的三个区块的链,则第n轮的区块和先前的所链接的区块被提交。提交规则最终允许诚实的验证者提交区块。例如,假设恶意验证者隐藏导致B0的提交的法定决议票数证书。B0将最终被提交,但这可能花费一些时间。这种方法(作为拜占庭容错方法的一部分)可以保证所有诚实的验证者将最终接受公共历史一直到那个区块,以避免分叉的任何可能性。
图35示出了根据一个或更多个实施例的利用流水线化来获得共识的分类账交易系统106的框图。如图35所示,分类账交易系统106可以在将交易区块(即,交易区块的执行结果)提交给存储装置之前利用多轮共识。特别地,如所示,分类账交易系统106使第一交易区块3502通过第一轮投票3504、第二轮投票3506和第三轮投票3508。实际上,在从每个投票轮接收到对第一交易区块3502一致同意的2f+1个投票时,分类账交易系统106可以将第一交易区块3502提交给存储装置。在一些实施例中,分类账交易系统106在每一轮投票中生成新的共识证书。然而,在一些实施例中,分类账交易系统106在第三轮投票之后(即,当交易区块准备好被提交时)为交易区块生成共识证书。在一个或更多个实施例中,分类账交易系统106利用更多或更少的投票轮。
如图35所示,随着每次新一轮的投票,分类账交易系统106开始对新交易区块进行投票(即,对反映由新交易区块的执行产生的新状态的新的经认证数据结构进行投票)。例如,如所示,分类账交易系统106在第二轮投票3506期间开始对第二交易区块3510进行投票,并在第三轮投票3508期间开始对第三交易区块3512进行投票。
在一个或更多个实施例中,验证者节点设备在给定的一轮投票期间不会明确地对交易区块进行单独投票。更确切地,如上面所讨论的,验证者节点可以对反映当前和历史交易和/或状态的经认证数据结构进行投票。因此,通过在给定的一轮投票期间对交易区块进行投票,验证者节点设备隐含地对前面的交易区块进行投票。实际上,如上面所提到的,当对交易区块进行投票以达成共识时,验证者节点设备可以对由在交易区块内的交易的执行产生的交易树的根值进行投票。因此,验证者节点设备对数字分类账的整个历史(即,整个交易树)进行投票。数字分类账的这个历史固有地包括从执行在先前交易区块内的交易获得的执行结果。因此,在一个或更多个实施例中,通过在第二轮投票3506期间对第二交易区块3510进行投票,验证者节点设备隐含地对第一交易区块3502进行投票。类似地,通过在第三轮投票3508期间对第三交易区块3512进行投票,验证者节点设备隐含地对第二交易区块3510和第一交易区块3502(以及每个前面的交易区块)进行投票。
如图35所示,分类账交易系统106可以就由每个交易区块的执行产生的状态获得共识。此外,分类账交易系统106可以将所得到的经认证数据结构提交给存储器。例如,在就第一经认证数据结构获得共识(在第一轮投票3504之后)、就第二经认证数据结构获得共识(在第二轮投票3506之后)以及就第三经认证数据结构获得共识(在第三轮投票3608之后)之后,分类账交易系统106可以将第一经认证数据结构提交给存储器。
通过在将反映交易区块的状态提交给存储装置之前利用多轮投票,分类账交易系统106提供抵抗对交易区块的改变的安全性。实际上,随着每一轮投票,一致同意的执行结果(以及这些执行结果如何修改交易树)变得更稳定。具体地,特定交易区块的执行结果接收到关于它们的有效性的更强有力的确认。因此,分类账交易系统106可以(在将状态提交给存储器之前)使用流水线化来提高状态的安全/准确性并防止硬分叉的出现。
D.在系统重启时的安全
在一个或更多个实施例中,分类账交易系统106通过利用共识重启规则来进一步提高数字分类账的安全,该共识重启规则甚至针对系统重启也保持共识安全。实际上,分类账交易系统106甚至在分布式数字分类账交易网络上的所有诚实的验证者节点重启时,也能降低硬分叉的风险。图36示出了根据一个或更多个实施例的操作来提供针对系统重启的安全的分类账交易系统106的框图。
如图36所示,分类账交易系统106执行在提交投票之前将共识状态保存到存储装置的行动3602。具体地,每个验证者节点设备生成并存储该验证者节点设备的共识状态。共识状态可以包括最后投票轮数据和优选区块轮数据。特别地,最后投票轮数据包括关于特定验证者节点设备进行投票的最后投票轮(即,验证者节点设备对交易区块进行投票的最后投票轮)的数据。优选区块轮数据可以包括关于两链连续交易区块中的头交易区块的数据,两链交易区块包括具有对最后提交的交易区块的共识证书的交易区块。在一些实施例中,分类账交易系统106存储最后提交的交易区块(即,由最后提交的交易区块产生的交易树的根值)及其两链(即,将共识证书携带到最后一次提交的交易区块)。在一个或更多个实施例中,当在一轮投票中提交投票时,分类账交易系统106更新存储装置中的共识状态。
如图36所示,分类账交易系统106还可以执行在重启时加载共识状态的行动3604。实际上,分类账交易系统106可以在验证者节点处存储要求在重启时(并且在任何附加投票之前)加载共识状态的共识重启规则。在重启时,验证者节点可以应用共识重启规则,并在重启时加载它们各自的所保存的共识状态。验证者节点设备然后可以基于它们的所加载的共识状态来继续参与共识。
为了提供恢复过程的示例,在一个或更多个实施例中,分类账交易系统106在系统重启时恢复共识状态。在一些实施例中,分类账交易系统106可以进一步恢复上面提到的所存储的交易区块和法定决议票数证书。分类账交易系统106然后可以恢复记录在状态数据结构中的最后的分类账信息。分类账交易系统106可以利用最后的分类账信息作为新近重启的树(例如状态树)的根。分类账交易系统106然后可以从由共识管理器存储的所有交易区块重建树,以预期系统使用给定根进行重启。
因此,验证者节点设备可以在不违反安全的情况下继续参与共识。例如,通过使验证者节点设备存储共识状态并在重启时加载共识状态(根据在每个验证者节点处强加的共识重启规则),分类账交易系统106防止验证者节点设备在该验证者节点设备已经参与的投票轮中投票(即,对交易区块投票两次)。此外,分类账交易系统106防止验证者节点设备对来自先前投票轮的交易区块进行投票。分类账交易系统106还可以避免试图在重启时削弱跨验证者节点的共识的恶意攻击。因此,分类账交易系统106甚至针对在分布式数字分类账交易网络中的所有验证者节点设备的重启,也能提高(或保证)安全。
E.管理投票权的时期
如上面所提到的,分类账交易系统106可以利用验证者节点设备来达成关于交易区块的共识。在一个或更多个实施例中,分类账交易系统106实现基于权益的投票以确定哪些计算机节点作为验证者节点设备来参与。在一个或更多个实施例中,分类账交易系统106基于分布式数字分类账交易网络的用户账户来确定哪些计算机节点作为验证者节点设备来参与。例如,在一些实施例中,分类账交易系统106向拥有数字资产(例如Coin资源)的用户账户提供用于选择验证者节点设备的投票(即,基于权益的投票)。在一些实施例中,分类账交易系统106可以基于每个账户持有的数字资产的价值来提供投票(例如,对于拥有更高价值的数字资产提供更多投票)。分类账交易系统106可以维护投票指数(vote index),该投票指数将潜在验证者节点设备的地址与为那些验证者节点设备提交的投票的数量进行映射。在一个或更多个实施例中,分类账交易系统106根据投票指数基于具有最高投票的地址来选择预定数量的验证者节点设备。
在一个或更多个实施例中,在初始化时,由分类账交易系统106维护的投票指数包括具有与分布式数字分类账交易网络中的数字资产的总价值(例如Coin资源的总价值)对应的投票数量的单个用户账户。在一些实施例中,单个用户账户与一个或更多个经授权设备相关联。具有所有可用的投票,经授权设备可以选择验证者节点设备的初始集合。然而,当数字资产被转移到其他用户账户时,这些用户账户获得用于选择验证者节点设备的投票。
在一个或更多个实施例中,分类账交易系统106利用智能合约(例如模块)来实现和管理基于权益的投票。实际上,在一些实施例中,当用户账户为验证者节点设备投票时,分类账交易系统106锁定(即,禁止访问)与所提交的投票相关联的数字资产(即,“锁定”数字资产)。分类账交易系统106可以利用智能合约来管理已锁定的数字资产(例如,已锁定的数字资产的数量或定时)。分类账交易系统106可以进一步利用智能合约来提供对恶意地表现的用户账户的罚款(例如,通过从与恶意地表现的用户账户相关联的已锁定的数字资产中提取费用)。例如,如果验证者节点设备违反一个或更多个验证者规则,分类账交易系统106可以惩罚恶意地表现的验证者节点设备(例如,通过扣留用户账户的已锁定的数字资产)。
此外,分类账交易系统106可以利用智能合约来实现和/或修改“冷静(cool-off)”期。实际上,在一个或更多个实施例中,分类账交易系统106利用由用户账户投票选出的验证者节点设备在一个时期参与共识。在一些实施例中,分类账交易系统106避免在时期结束时(即,当验证者集合改变时)释放用户账户的已锁定的数字资产,以阻止临近时期结束时的恶意行为。更确切地,分类账交易系统106实现“冷静”期(例如,一个额外的时期),并且在冷静期结束时释放已锁定的数字资产。
在一个或更多个实施例中,分类账交易系统106还可以利用智能合约来实现对基于权益的投票的改变。实际上(基于智能合约的参数和分布式数字分类账交易网络的共识),分类账交易系统106可以实现将智能合约配置为修改基于权益的投票的改变。例如,分类账交易系统106可以利用智能合约来调整冷静期的长度或者调整从恶意地表现的用户账户中提取的罚款。尽管前面的描述提到了分类账交易系统106可以通过智能合约来管理或修改的各种参数,但是分类账交易系统106可以利用智能合约来管理和/或修改各种附加特征,例如所选择的验证者节点、时期的长度、验证者节点的数量、验证者资格(例如,用户账户成为验证者节点的资格)、验证者规则(例如,确定节点是否应该被惩罚的规则)或者已锁定的数字资产的价值。
如上面所提到的,分类账交易系统106可以利用验证者节点设备的选定集合来实现经修改的HotStuff基于先导者的共识协议。然而,在一个或更多个实施例中,验证者节点设备可以实现各种其他共识协议。例如,验证者节点设备可以实现工作量证明协议或其他权益证明协议。
如所提到的,在一个或更多个实施例中,分类账交易系统106可以改变在分布式数字分类账交易网络上作为验证者节点设备参与的计算机节点。图37示出了根据一个或更多个实施例的改变验证者集合的分类账交易系统106的框图。如图37所示,在一个或更多个实施例中,客户端设备3702(例如,上面讨论的经授权设备)可以提交提议新验证者集合3706的交易3704。尽管图37示出了提交交易3704的客户端设备3702,但是在一些实施例中,其他网络参与者可以提交交易以提议新验证者集合。一旦被提交,当前的验证者节点设备集合3708就对交易3704进行投票以达成共识。在一些实施例中,来自当前的验证者节点设备集合3708中的先导验证者节点设备将交易3704放置在它自己的区块中。在一些实施例中,先导验证者节点设备将交易3704放置在待提议的交易区块的末尾。
如上面进一步提到的,在一些实施例中,给定的验证者节点设备集合在整个时期中是固定的。在一个或更多个实施例中,时期在特定交易(例如,“开始时期”交易)的执行时开始,并且在提交就下一时期的验证者集合一致同意的交易的执行结果时结束。在一个或更多个实施例中,在接收到交易3704时,当前的验证者节点设备集合3708检查以确保交易3704是从具有提议新的验证者节点设备集合的权限的用户账户发送的。当前的验证者节点设备集合可以进一步检查出自从对验证者节点设备集合的最后一次改变以来一个时期已经过去。在一些实施例中,分类账交易系统106要求交易3704在验证者节点设备集合可以被改变之前满足这两个检查。
在一些实施例中,分类账交易系统106利用智能合约(例如模块)来在时期的边界处(而不是之后)实施验证者节点设备集合的改变。例如,图37进一步示出了数字分类账的时间线3710。如图37所示,当时期开始时,验证者节点设备集合开始验证(即,参与共识)。在时期期间,智能合约可以为验证者节点设备集合的下一次改变收集信息(例如,为新的验证者节点设备集合收集投票)。如果提议新的验证者节点设备集合的交易已经被一致同意,那么智能合约可以在下一个边界开始的时间实施验证者集合改变。
实际上,在一个或更多个实施例中,分类账交易系统106要求至少一个验证者节点设备(例如先导验证者节点设备)(例如,在预定的区块链时间或对于交易树的预定版本)提交交易,以提议接受来自智能合约的验证者集合改变。在一些实施例中,分类账交易系统106防止其他被提议的交易区块的提交,直到该特定交易已经被提交为止。在一些实施例中,如果提议验证者集合改变的交易被拒绝,则先导验证者节点设备(或下一个先导验证者节点设备)继续做出相同的提议,直到改变被接受为止。
在一个或更多个实施例中,在改变验证者节点设备集合时,分类账交易系统106丢弃(即,将其视为无效)所有尚未提交的被提议的交易区块。实际上,在一些实施例中,分类账交易系统106对待包括所提议的对验证者的改变的交易区块类似于创世区块。换句话说,分类账交易系统106要求所有后续交易区块提议都包括提议验证者集合改变的交易区块作为祖先区块。
在一个或更多个实施例中,分类账交易系统106维护验证者集合数据,其包括在集合中的每个验证者节点设备的数据。例如,分类账交易系统106可以维护与验证者节点设备集合相关联的用户账户的账户信息、用于签署交易区块提议的公开密钥、对验证者节点设备的投票以及对应于验证者节点设备的元数据(例如,验证者节点设备的IP地址、与验证者节点设备相关联的用户账户的投票份额、等等)。分类账交易系统106可以用每个新的验证者集合更新该数据。
以这种方式,分类账交易系统106可以灵活且安全地管理和修改参数,用于跨分布式数字分类账交易网络获得共识。实际上,与传统区块链系统相反,分类账交易系统106可以经由智能合约安全地管理投票权(和其他共识参数),这些智能合约可以更改以满足分布式数字分类账交易网络的需求并解决随着时间的推移而出现的威胁。
VI.同步
A.概述
新的计算机节点可以加入分布式数字分类账交易网络(或在断开连接后重新加入)以或者作为验证者节点设备或者作为全节点设备来参与。在加入分布式数字分类账交易网络时,计算机节点可以与一个或更多个其他计算机节点同步以下载相关数据(例如,分布式数字分类账交易网络的数据结构)。在一个或更多个实施例中,计算机节点不会固有地信任从一个或更多个其他计算机节点下载的数据;因此,计算机节点在下载时验证数据。例如,计算机节点可以识别当前的验证者节点设备集合以及它们的公开密钥。然后,计算机节点可以获得具有经由共识而获得的2f+1个签名的交易树的根值。因此,当从一个或更多个其他计算机节点下载期望的数据时,计算机节点可以进一步下载数据的证明,并且可以对照交易树的根值来验证所下载的数据和证明。
分类账交易系统106的一个或更多个实施例实现改善同步的各种特征。例如,分类账交易系统106可以利用增量验证来提高计算机节点下载数据的效率。分类账交易系统106可以使用并行同步来进一步提高效率。另外,分类账交易系统106可以利用路径点来引导计算机节点同步到数字分类账的正确版本/分支。
B.利用增量验证和并行同步
在许多传统区块链系统下,经由与网络的同步而下载数据的计算机节点可以整个地下载数据,然后验证数据。然而,在验证时,计算机节点可能发现下载的数据是不正确的。因此,计算机节点可能重复下载和验证过程,以从一个或更多个其他计算机节点下载期望的数据。计算机节点可能迭代地重复该过程,直到正确的数据已经被下载为止。因此,传统区块链系统可能在接收计算机节点和传输计算机节点两者处利用大量的计算资源(例如处理能力和时间),以便使计算机节点接收到期望的数据。
此外,许多传统区块链系统在计算机节点处以需要大量计算时间来这些做的方式串行地同步到网络。为了说明,计算机节点可以试图生成分布式数字分类账交易的历史表示(例如,在特定时间段内来自网络的账户状态的表示)。为了实现这个结果,传统系统常常下载交易,然后一次一个地执行这些交易以确定在交易的执行之后网络的状态。因此,传统系统需要大量时间来完全同步到网络。
分类账交易系统106的一个或更多个实施例在同步到分布式数字分类账交易网络的计算机节点处利用增量验证来比传统系统更高效地下载数据。图38示出了根据一个或更多个实施例的利用增量验证来将数据段下载到计算机节点3804的分类账交易系统106的框图。特别地,图38示出了下载与数据树3802相关联的数据的分类账交易系统106。尽管未在图38中示出,但是数据树3802存储在分布式数字分类账交易网络的另一个计算机节点处。
尽管分类账交易系统106可以对本文描述的任何数据结构利用增量验证,但是关于图38,数据树3802是交易树。特别地,数据树3802是存储与跨分布式数字分类账交易网络执行的交易对应的数据的交易树。如进一步所示的,分类账交易系统106将数据从数据树3802以段的形式下载到计算机节点3804。作为示例,图38示出了从数据树3802下载与被标记为“T2”到“T4”的交易对应的数据段的计算机节点3804。另外,如图38所示,计算机节点3804下载与T2到T4的交易对应的数据的证明。特别地,该证明由数据树3802的被包括在由虚线提供的边界处或内的所有节点(即,节点3806a-3806e)组成。
因此,分类账交易系统106可以将数据从数据树3802以段(或部分)的形式下载到计算机节点3804。分类账交易系统106还将与所下载的数据的每个段(或部分)对应的证明下载到计算机节点3804。因此,在下载一段数据和对应的证明之后,分类账交易系统106可以验证下载的数据以确定它的准确性。基于确定下载的数据是准确的,分类账交易系统106可以下载下一段数据以及它的对应的证明。此外,在(使用对应于每个段的不同证明)验证不同的段时,计算机节点3804可以(例如,通过组合不同的段)生成或重新创建经认证数据结构。
在一个或更多个实施例中,基于确定下载的数据是不准确的,分类账交易系统106可以识别附加计算机节点——从其请求期望的数据。因此,分类账交易系统106(从各种设备)增量地下载数据,并在继续下载之前验证数据。
在一个或更多个实施例中,分类账交易系统106进一步利用并行同步来提高同步效率。例如,分类账交易系统106可以将上面关于图38讨论的增量验证并行化,以便改善同步。图39示出了根据一个或更多个实施例的并行地下载和验证数据的分类账交易系统106。
如图39所示,分类账交易系统106将数据上传到服务器3902。具体地,分类账交易系统106可以将数据从分布式数字分类账交易网络的一个或更多个计算机节点上传到服务器3902。如所示,分类账交易系统106将交易数据(例如,来自交易树3904)和状态数据(例如,来自状态树3906a-3906c)上传到服务器3902。在一个或更多个实施例中,分类账交易系统106以预定大小的交易数据批次(transaction data batch)将交易数据上传到服务器3902。例如,分类账交易系统106可以在跨分布式数字分类账交易网络执行了每一万笔交易之后将交易数据批次上传到服务器3902。
如在图39中进一步所示的,分类账交易系统106可以通过上传状态数据快照来将状态数据上传到服务器3902。例如,如所示,状态树3906a存储对应于分布式数字分类账交易网络的“S0”的数据。状态树3906b存储对应于“S1000”的数据,以及状态树3906c存储对应于“S2000”的数据。因此,如图39所示,分类账交易系统106存储表示分布式数字分类账交易网络的每隔一千个状态(every one thousandth state)的状态数据快照。
然而,分类账交易系统106可以以各种其他方式配置快照(即,配置状态数据快照被上传到服务器3902的频率)。在一些实施例中,分类账交易系统106基于时间(例如,每周一次、每天中午、每月的月底等)来上传状态数据快照。在一些实施例中,分类账交易系统106协调交易数据批次以包括在状态数据快照之间的在分布式数字分类账交易网络上执行的所有交易的交易数据。例如,分类账交易系统106可以上传包括在S0和S1000之间的所有交易的第一交易数据批次和包括在S1000和S2000之间的所有交易的第二交易数据批次。总之,状态数据快照(例如状态数据结构)反映分布式数字分类账交易网络的周期状态
如图39所示,分类账交易系统106可以从服务器3902访问并下载数据。如所示,分类账交易系统106可以将数据从服务器3902下载到验证设备3908a-3908c。实际上,分类账交易系统106可以利用验证设备3908a-3908c来下载和验证批量交易数据和状态数据。例如,分类账交易系统106可以利用验证设备3908a来下载对应于S0的状态数据快照以及包含在S0和S1000之间执行的交易的一个或更多个交易数据批次。验证设备3908a然后可以执行在交易数据批次中的每个交易以确定在S0和S1000之间的状态数据。在一些实施例中,验证设备3908进一步下载与所下载的数据对应的证明(例如,如上面参考图38所讨论的),并使用该证明来验证下载的数据。
同时,如图39所示,分类账交易系统106利用验证设备3908b-3908c来并行地下载、执行和验证其他交易数据批次。例如,分类账交易系统106可以利用验证设备3908b来下载对应于S1000的状态数据快照以及包含在S1000和S2000之间执行的交易的一个或更多个交易数据批次。然后,验证设备3908b可以与验证设备3908a的下载、执行和验证并行地,执行在交易数据批次中的交易并且使用与下载的数据对应的证明来进一步验证下载的数据。
尽管未在图39中示出,但是分类账交易系统106然后可以将经验证的数据从验证设备3908a-3908c中的每个验证设备下载到计算机节点。实际上,在一个或更多个实施例中,分类账交易系统106响应于来自计算机节点(例如,试图使它的存储同步并生成分布式数字分类账交易网络的历史表示的全节点)的请求,并行地分析来自服务器3902的数据。计算机节点可以访问存储在服务器3902处的数据结构,利用验证设备3908a-3908c来并行地分析数据结构,以及构建分布式数字分类账交易网络的历史表示。特别地,计算机节点可以组合从验证设备3908a-3908c中的每个验证设备接收的数据,以使在计算机节点处的存储同步。因此,分类账交易系统106使计算机节点能够在串行地下载和验证数据时将所必需的时间的一小部分内同步到分布式数字分类账交易网络。
在一个或更多个实施例中,分类账交易系统106确定仅将与分布式数字分类账交易网络相关联的数据的一部分下载到计算机节点。例如,分类账交易系统106可以确定将与过去十年相关联的交易数据和状态数据下载到计算机节点。因此,分类账交易系统106可以识别对应于该时间帧的状态数据快照以及包括在这些状态数据快照内的交易的交易数据批次。因此,分类账交易系统106可以使计算机节点能够独立于其他存储的段(即,独立于其他状态数据快照或交易数据批次)而下载与分布式数字分类账交易网络相关联的数据的任何段。
通过利用增量验证,分类账交易系统106比传统系统更高效地操作来将计算机节点同步到分布式数字分类账交易网络。实际上,通过以段的形式下载和验证数据,分类账交易系统106可以在同步过程中的较早阶段——在期望的数据的整个集合被下载之前——捕捉不准确性并做出响应。因此,分类账交易系统106减少了将计算机节点同步到分布式数字分类账交易网络所需的计算资源的量。
另外,通过利用并行同步,分类账交易系统106进一步提高了同步的效率。具体地,分类账交易系统106避免串行地下载和验证数据。因此,分类账交易系统106减少了使计算机节点同步到分布式数字分类账交易网络所需的计算时间的量。
C.利用路径点来获得同步
在一个或更多个实施例中,分类账交易系统106利用路径点来便于计算机节点与分布式数字分类账交易网络的同步。分类账交易系统106可以利用路径点来在各种情况下引导同步,例如采用创世区块、帮助计算机节点重新上线和/或解决(例如,生成或防止)硬分叉。例如,分类账交易系统106可以利用路径点来引导已经与分布式数字分类账交易网络断开连接的计算机节点或者加入分布式数字分类账交易网络的新计算机节点。分类账交易系统106可以利用路径点来验证已经经由共识协议一致同意的数字分类账的特定版本(并因此避免同步到数字分类账的不同的、有争议的版本)。因此,利用路径点允许分类账交易系统106避免传统区块链系统中的由数字分类账的有争议的版本(例如,硬分叉或其他有争议的交易)导致的不准确性、低效率和安全性顾虑。路径点还提供了灵活性,允许分布式数字分类账交易网络实现交易并根据需要选择分支,以解决威胁或社区的不断发展的需要。
例如,图40示出了根据一个或更多个实施例的利用路径点。特别地,图40示出了数字分类账的时间线4000。特别地,图40示出了在时间线4000的点4004处的路径点,该路径点被建立以指示将由同步到分布式数字分类账交易网络的计算机节点下载的数字分类账的正确分支(例如,经由共识协议一致同意的分支)。例如,如图40所示,计算机节点在时间线4000的点4002处与分布式数字分类账交易网络断开连接,并在点4006处尝试重新连接或重新加入。在重新连接时,计算机节点可以通过下载与在时间线的点4002和点4006之间生成的数字分类账相关的所有数据(例如数据结构)来同步到分布式数字分类账交易网络。
分类账交易系统106利用在点4004处的路径点来提供计算机节点可以同步到的分布式数字分类账交易网络的状态。特别地,如图40所示,路径点可以包括版本参考和根值参考(例如,对经认证数据结构的参考)。实际上,路径点指示数字分类账的正确分支包含在由根值参考指示的数字分类账的版本(即,交易树的版本)处由根值参考指示的根值。在一个或更多个实施例中,计算机节点识别对应于路径点的数字分类账的分支,然后下载数字分类账的这个版本。在一些实施例中,计算机节点可以利用路径点来验证已经被下载的数字分类账的分支。
具体地,分类账交易系统106可以用路径点分析被提议的数据结构。例如,图40所示的计算机节点可以从分布式数字分类账交易网络的另一个节点下载被提议的数据结构。计算机节点可以使用路径点来验证被提议的数据结构的准确性。特别地,计算机节点可以将来自点4004的被提议的数据结构与在点4004处的路径点进行比较。如果路径点与被提议的数据结构对齐(例如,路径点所对齐的版本和根值与被提议的数据结构的版本和根值匹配),则计算机节点可以验证被提议的数据结构的准确性(并将被提议的数据结构提交给存储器)。如果路径点与被提议的数据结构不对齐,则计算机节点可以确定被提议的结构不是有效的(并且不将被提议的数据结构提交给存储器)。此外,计算机节点可以(例如,从另一个计算机设备)获得替代的被提议的数据结构,以识别与路径点匹配的被提议的数据结构。以这种方式,计算机节点可以同步到分类账交易系统106的当前状态,同时使用路径点来验证被提议的数据结构的准确性。
分类账交易系统106以各种方式向计算机节点提供路径点。例如,分类账交易系统106可以向计算机节点传输具有路径点的指示(例如,推送通知)。分类账交易系统106可以响应于从计算机节点接收的查询而提供路径点。在一些实施例中,分类账交易系统106经由可由计算机节点复制的十六进制代码或可由计算机节点扫描的数字视觉代码来向计算机节点提供路径点。在另外的实施例中,计算机节点可以接收与路径点相关联的手动输入(提供输入的用户可以以各种方式(例如通过口述或印刷的广告)来接收路径点)。总之,分类账交易系统106可以以多种方式发布路径点,以允许分布式数字分类账交易网络的计算机节点准确且高效地同步到数字分类账的特定版本。
尽管图40示出了对离线的计算机节点使用路径点,但是分类账交易系统106可以利用路径点来帮助各种附加情况。例如,分类账交易系统106可以进一步利用路径点来便于FTVM交易(即,可能不会通过虚拟机的交易验证过程的“忘记虚拟机(forget the virtualmachine)”交易)的接受。图41示出了根据一个或更多个实施例的利用与FTVM交易相关联的路径点的分类账交易系统106的框图。特别地,如上面所提到的,分类账交易系统106通常基于由相应交易脚本调用的模块的属性和过程来执行交易。在一个或更多个实施例中,虚拟机拒绝不符合这些属性和过程的交易脚本。FTVM交易包括明确地违反由属性和过程(即,交易过程)建立的规则的交易。特别地,FTVM交易可以描述要在分布式数字分类账交易网络上执行的被交易过程禁止的一组写入操作。因此,分布式数字分类账交易网络的计算机节点可以拒绝这样的交易。
然而,在一个或更多个实施例中,分类账交易系统106利用路径点来向分布式数字分类账交易网络的计算机节点指示FTVM交易应该被接受。实际上,当识别出与FTVM交易相关联的路径点时,计算机节点可以接受FTVM交易并同步到分布式数字分类账交易网络,使得FTVM交易被包括在数据中。具体地,在一个或更多个实施例中,验证者节点设备经由共识协议进行投票以确认FTVM交易。如果FTVM交易在验证者节点设备之间达成共识,分类账交易系统106可以在分布式数字分类账交易网络上实现FTVM交易。在一个或更多个实施例中,当阈值数量的验证者节点设备(例如,2f+1个验证者节点设备)已经接受FTVM交易时,FTVM交易达成共识。
例如,在一个或更多个实施例中,分类账交易系统106可以利用路径点来便于分布式数字分类账交易网络的初始化。例如,如图41所示,分类账交易系统106可以生成与描述创世区块4106(即,发布数字货币模块、生成初始的验证者节点设备集合等的初始区块)的FTVM交易4104相关联的路径点4102。实际上,因为创世区块4106创建数字货币,所以创世区块4106将会违反用于管理分布式数字分类账交易网络上的数字资产的过程。在计算机节点4108处操作的分类账交易系统106可以识别路径点4102,并基于路径点4102而接受(例如,投票以确认)FTVM交易4104。因此,分类账交易系统106可以利用路径点4102来指示创世区块——原本可能会被同步到分布式数字分类账交易网络的计算机节点拒绝的区块——是合法的交易。
如图41所示,分类账交易系统106还可以使用路径点来便于硬分叉的共识。特别地,分类账交易系统106可以利用FTVM交易来生成硬分叉,然后生成与FTVM交易相关联的路径点,使得同步到数字分类账交易网络的计算机节点将接受由FTVM交易建立的数字分类账的分支。
例如,如图41所示,管理者设备4110可以提交描述新验证者集合4114的FTVM交易4112。为了说明,当分布式数字分类账交易网络的阈值数量的验证者节点设备4116丢失或泄露了它们的对应的私有密钥时,管理者设备4110可以提交FTVM交易4112。管理者设备4110可以提交FTVM交易4112以生成数字分类账的分支,该分支与由恶意的计算机节点使用丢失的私有密钥潜在地创建的不期望的分支分开。尽管图41示出了由管理者设备4110提交的FTVM交易4112,但是在一个或更多个实施例中,分布式数字分类账交易网络的至少一个计算机节点(例如验证者节点设备)可以提交提议新验证者集合的FTVM交易。
如图41所示,管理者设备4110(或在分布式数字分类账交易网络上的其他计算机节点)还可以提供与FTVM交易4112相关联的路径点4118。因此,在计算机节点4120处操作的分类账交易系统106可以识别路径点4118,并基于路径点4118而接受(例如,投票以确认)FTVM交易4112。因此,分类账交易系统106可以利用路径点来标记作为硬分叉的结果而生成的数字分类账的期望的分支。实际上,分类账交易系统106可以利用FTVM交易来生成硬分叉,以便避免数字分类账的不期望的发展,然后利用路径点来标记与期望的发展对应的分支。
如上面简要提到的,在一个或更多个实施例中,路径点是可配置的。实际上,在一个或更多个实施例中,分类账交易系统106基于(例如,由如图1所述的经授权设备4110或其他计算机节点提供的)输入来生成路径点。因此,分类账交易系统106灵活地操作以适应路径点提议。如果与被提议的路径点相关联的交易达成共识,分类账交易系统106可以将该交易应用于分布式数字分类账交易网络。
VII.编程语言
A.概述
如上面所提到的,传统系统的低效率、不安全性和僵化中的一些是实现编程语言的结果。实际上,传统系统利用的编程语言可能需要过多的过程来实现、引入操纵的机会以及削弱在区块链上灵活地实现不同的交易和过程的能力。
在一个或更多个实施例中,分类账交易系统106利用提高实现系统的效率、安全性和灵活性的编程语言。例如,如上面参考图23所讨论的,分类账交易系统106可以实现利用交易脚本的编程语言,这些交易脚本包括在单个脚本内执行各种操作(例如过程调用)的任意程序。分类账交易系统106可以利用使用编程语言生成的交易来修改分布式数字分类账网络的状态数据结构。
另外,如所提到的,分类账交易系统106可以利用编程语言来提高数据抽象和可配置性。具体地,分类账交易系统106可以利用编程语言来定义与用户账户相关联的模块和资源。如上面所提到的,分类账交易系统106利用模块作为模板,从该模板创建一个或更多个资源(即,模块的实例)。如上面进一步提到的,对应于特定模块的资源由该模块管理(即,由在该模块内定义的属性和过程管理),并且对于在该模块的外部定义的过程通常是不可访问的。因此,分类账交易系统106可以通过定义模块(包括管理属性和资源)来提高数据抽象,以提供对用于创建、销毁和修改相关联的资源的方法的控制。此外,分类账交易系统106可以利用编程语言通过定义可以被生成、被更新和/或被交换的模块来提高可配置性,以适应分布式数字分类账交易网络上的变化的需要。
此外,分类账交易系统106可以利用编程语言来定义实施线性的自定义资源类型。如下面将关于图42更详细讨论的,分类账交易系统106可以定义对可编程数字资产编码的资源类型,其像程序值那样表现(例如,可以存储在数据结构中,作为引数被传递给过程等)。此外,分类账交易系统106利用编程语言来为这些资源提供安全保证(例如,在交易中必须被确切地使用一次,并且无法复制)。在一个或更多个实施例中,分类账交易系统106利用这样的特征来实现可以在分布式数字分类账交易网络上交换的数字货币。
此外,如下面更详细描述的,分类账交易系统106可以利用在字节码级别检查引用安全的编程语言。此外,分类账交易系统106可以使用经认证数据结构(例如树结构)来实现这个字节码验证。通过利用在字节码级别上编码的编程语言(例如,不具有引入削弱安全保证的机会的编译器)连同树数据结构,分类账交易系统106可以相对于传统系统显著地提高安全性和灵活性。
B.利用线性类型和数据抽象来表示数字资产
许多传统区块链系统利用编程语言来表示网络上的数字资产。然而,这些编程语言常常阻碍实现计算设备的灵活性和安全性。例如,许多传统系统在编程语言内将数字资产严格地表示为整数值。于是,传统系统无法灵活地允许数字资产存储在数据结构中、作为引数被传递给过程或从过程返回。此外,当生成数字资产时,传统系统通常将在管理数字资产时所期望的某些稀缺性保护(scarcity protection)硬编码到定义该数字资产的代码段的语言语义中。因为这些稀缺性保护被硬编码到语言语义中,所以传统系统在生成新的数字资产时需要这些稀缺性保护的手动重新实现。类似地,当生成数字资产时,传统系统一般将对该数字资产的访问控制硬编码到语言语义中,防止灵活的访问控制定制。
除了灵活性顾虑以外,传统区块链系统也是容易出错的且不安全的。如所提到的,传统区块链系统将数字资产表示为整数值,其本质上不像资产那样表现(例如,整数值可以自由地被复制,这对于一些资产是不合乎需要的)。整数值本质上与资产不同地表现;因此,传统系统一般创建处理整数值的特殊方法来模仿处理资产。为了说明,许多传统系统使用所有者到资产的映射集(owner-to-asset map sets)来跟踪数字资产的持有。这些系统可以通过调用对这些映射有副作用(side effect)的过程来转移资产。这样的过程常常需要两个不同的步骤:在发送者侧创建副作用,以及然后检查在接收者侧发生副作用。这些步骤的分离使恶意行为者能插入意外的和不期望的行为(例如,改变接收者检查和接收者反应之间的平衡)。因此,传统系统常常将相关联的网络(以及存储在其上的数字资产)暴露于攻击。
分类账交易系统106的一个或更多个实施例利用线性数据类型来更灵活地表示与分布式数字分类账交易网络相关联的数字资产。特别地,分类账交易系统106可以利用编程语言,使用与线性数据类型相关联的语义来定义数字资产(或各种其他资源)。分类账交易系统106然后可以在管理(例如,转移)数字资产时利用对应于线性数据类型的线性分型规则。例如,线性分型规则可以包括要求数字资产在交易期间被使用单次(即,确切地一次)的第一线性分型规则和防止经由交易复制数字资产的第二线性分型规则。以这种方式,分类账交易系统106可以更灵活且更有效地管理在分布式数字分类账交易网络上的数字资产。
为了提供说明,分类账交易系统106实现线性分型规则以控制分布式数字分类账交易网络的状态数据结构的修改。特别地,分类账交易系统106可以在执行交易中利用线性分型规则。例如,分类账交易系统106可以识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求。分类账交易系统106然后可以在对该交易的请求内确定(例如,识别)数字资产的线性数据类型。随后,分类账交易系统106可以通过在对应于线性数据类型的一组线性分型规则的规限下将数字资产从状态数据结构上的第一用户转移到第二用户账户,来执行利用线性数据类型的该交易。在一个或更多个实施例中,数字资产包括在分布式数字分类账交易网络的状态数据结构内维护的数字货币。
图42示出了根据一个或更多个实施例的实现对应于线性数据类型的线性分型规则的分类账交易系统106的框图。特别地,图42示出了针对对将会违反线性分型规则的交易的请求执行线性分型规则的实施的分类账交易系统106。在一个或更多个实施例中,分类账交易系统106利用加载时字节码验证来检查线性分型规则的满足。
如图42所示,分类账交易系统106识别交易脚本4202(交易脚本在上面参考图23更详细地被讨论)。特别地,交易脚本4202可以被包括在验证者节点设备4204处接收到的交易请求内。如图42所示,交易脚本4202提供要由验证者节点设备4204(或任何其他验证者节点设备)执行的指令,以便实现(例如,执行)交易。具体地,交易脚本4202包括针对从在分布式数字分类账交易网络的状态数据结构上的用户账户转移数字资产的交易的指令。如图42所示,交易脚本4202由表示一段字节码的伪代码组成,该段字节码描述待实现的交易。应当注意,提供伪代码是为了简化说明,并且分类账交易系统106使用相应的字节码段类似地操作。
例如,交易脚本4202包括伪代码行4206,其指示两个输入被包括:与接收方的用户账户相关联的地址和表示待转移给接收方的代币的数量的无符号整数。在一个或更多个实施例中,这些输入由客户端设备在提交对应的交易请求时提供。交易脚本4202还包括行4208,其指示验证者节点设备4204从与交易脚本4202的发送者相关联的用户账户(即,发送者账户4212)提取数字资产4210(在伪代码中被称为“coin”)。行4214指示验证者节点设备4204将数字资产4210存放到与所识别的支付接收方(即,“payee”)相关联的用户账户。
如在图42中进一步所示的,行4216指示验证者节点设备4204类似地将数字资产4210存放到与附加支付接收方(即,“other_payee”)相关联的用户账户。换句话说,交易脚本4202包括将同一个数字资产从发送者账户4212转移到分布式数字分类账交易网络的两个不同的接收方用户账户的指令(即,与交易脚本4202相关联的交易请求尝试花费数字资产4210两次)。尽管图42示出了尝试在同一个请求中花费数字资产4210两次的交易请求,但是应当注意,在两个单独的交易请求中引用同一个数字资产将具有相同的效果。
在运行加载时字节码验证时,分类账交易系统106可以确定与交易脚本4202相关联的交易请求违反了对应于数字资产4210的线性数据类型的线性分型规则。特别地,分类账交易系统106可以确定数字资产4210与编程语言内的线性数据类型相关联,且因此受限于线性分型规则。分类账交易系统106可以通过尝试利用线性数据类型(即,数字资产4210)两次,进一步确定交易请求违反了在交易中利用线性数据类型单次的第一线性分型规则。如图42所示,响应于确定交易请求违反第一线性分型规则,分类账交易系统106生成字节码验证错误4218。在一个或更多个实施例中,分类账交易系统106向发送交易脚本4202的客户端设备传输字节码验证错误4218。
如图42所示,分类账交易系统106还识别交易脚本4220。类似于交易脚本4202且如图42所示,交易脚本4220为从发送者账户4212转移数字资产4210的交易提供指令。特别地,交易脚本4220包括在交易脚本4202中包括的指令的变形。
具体地,如图42所示,交易脚本4220包括行4222,其指示验证者节点设备4204从发送者账户4212提取数字资产4210。然而,交易脚本4220未能包括指示验证者节点设备4204将数字资产4210存放到接收方账户中的行。简而言之,交易脚本4220从发送者账户4212获取数字资产4210,但是没有采取进一步的步骤来使用数字资产4210。实际上,交易脚本4220的执行可能导致数字资产4210的完全丢失(即,对应的交易请求的发送者无法恢复数字资产4210)。
在运行加载时字节码验证时,分类账交易系统106可以确定与交易脚本4220相关联的交易请求违反了对应于与数字资产4210相关联的线性数据类型的线性分型规则。特别地,分类账交易系统106可以确定:通过未能利用线性数据类型,交易请求违反了在交易中利用线性数据类型单次的第一线性分型规则(例如,“coin”被取出但未被使用)。如图42所示,响应于确定交易请求违反第一线性分型规则,分类账交易系统106拒绝交易请求并生成字节码验证错误4224。在一个或更多个实施例中,分类账交易系统106向发送交易请求的客户端设备传输字节码验证错误4224。
另外,如图42所示,分类账交易系统106进一步识别交易脚本4230。特别地,交易脚本4230为生成来自发送者账户4212的数字资产4210的副本的交易提供指令。如图42所示,交易脚本4230包括行4232,其指示验证者节点设备(使用“copy(coin)”命令)拷贝数字资产4210并将数字资产4210的副本存放到接收方用户账户中。实际上,与交易脚本4230相关联的交易请求尝试复制数字资产4210。
在运行加载时字节码验证时,分类账交易系统106可以确定与交易脚本4230相关联的交易请求违反了对应于与数字资产4210相关联的线性数据类型的线性分型规则。特别地,分类账交易系统106可以确定:通过尝试复制线性数据类型,交易请求违反了反对复制线性数据类型的第二线性分型规则。如图42所示,响应于确定交易请求违反第二线性分型规则,分类账交易系统106拒绝交易请求并生成字节码验证错误4234。在一个或更多个实施例中,分类账交易系统106将字节码验证错误4234传输到发送交易请求的客户端设备。
在一个或更多个实施例中,除了实施线性分型规则之外,分类账交易系统106还为数字资产提供可互换性(fungibility)。实际上,如上面所提到的,数字资产可以包括数字货币。因此,分类账交易系统106可以实现分割和合并对应于数字资产的数字货币单位的方法。然而,应当注意,分类账交易系统106可以为各种类型的数字资产提供可互换性。在一个或更多个实施例中,分类账交易系统106根据线性分型规则实现可互换性。
为了提供说明,在一个或更多个实施例中,分类账交易系统106实现利用数据抽象实现可互换性的“Currency”模块。因此,分类账交易系统106管理对从Currency模块创建的资源的访问、创建和销毁。为了简单起见,下文将Currency模块的实例——即与Currency模块相关联的资源(例如数字资产)——称为“代币”。
广义上,分类账交易系统106可以使用Currency模块来限制对代币的“值”字段的访问并限制为新代币分配内存的能力。例如,在一个或更多个实施例中,分类账交易系统106防止使与用户账户相关联的代币的值字段递增,除非由另一个账户拥有的代币已经经由“存款”过程被转移到用户账户。如果存款过程已经被调用,则分类账交易系统106可以使代币的值字段增加所存放的代币的值(即,分类账交易系统106将所拥有的代币的值加到与用户账户相关联的代币的值)。作为另一个示例,在一些实施例中,分类账交易系统106防止创建具有值n的新代币,除非现有代币的值字段经由存款过程而减去了n。因此,分类账交易系统106可以为数字资产提供可互换性,同时防止它们的任意创建。
通过使用编程语言来将数字资产表示为线性数据类型,分类账交易系统106可以比传统系统更灵活地管理数字资产。特别地,数字资产可以像程序值一样表现。例如,通过使用线性数据类型来表示数字资产,分类账交易系统106可以将数字资产存储在数据结构中、将数字资产作为引数传递给过程以及从过程返回数字资产。此外,分类账交易系统106可以利用类型系统来实现传统系统不可用的灵活的稀缺性保护。实际上,分类账交易系统106可以实现用于创建和销毁资产的自定义规则。此外,通过使用线性数据类型,分类账交易系统106可以以与普通程序值相同的方式(例如,使用条件语句等)生成灵活的访问控制。
此外,分类账交易系统106可以比传统系统更安全地管理数字资产。实际上,通过经由编程语言将数字资产表示为线性数据类型,分类账交易系统106避免了由许多传统系统使用的特殊处理方法。例如,如上面所提到的,分类账交易系统106可以(即,经由参数绑定)将数字资产作为引数传递给过程。以这样的方式使用数字资产需要单个步骤。于是,分类账交易系统106缩减了使恶意行为者插入意外行为的机会,并使编写安全代码变得更容易。
C.利用静态和动态分析来确定引用安全
传统区块链系统可以对在网络上操作的编程语言执行检查,以识别代码内的任何错误(例如缺陷)。此外,许多传统系统分析被提交用于在网络上执行的程序,以确定程序是否符合引用安全(即,程序总是引用有效的存储器)。许多传统系统拒绝被确定为不符合引用安全的程序。
然而,如上面所提到的,关于利用传统区块链系统确保引用安全存在许多技术问题。实际上,在许多传统系统下,存储器包括带有地址的扁平数组(flat array),并且具有难以利用的任意图形形状。这个存储器结构导致在针对引用安全而分析程序方面有困难(例如,除非分析在源代码级别完成)。实际上,传统系统存储器包括任意指针,并且验证指针指向有效的存储器可能是低效的(或不可能的)。此外,许多传统区块链系统在运行时执行引用安全检查。因此,这样的传统系统常常等待,直到在确定程序对于执行是否是安全的之前尝试执行程序为止。
尽管许多传统系统在源代码级别针对引用安全而分析程序,但是这样的系统通常在机器代码级别执行程序(即,使用编译器处理用源代码编写的程序以生成对应的机器代码)。然而,使用编译器危及存储器安全,因为恶意行为者可能攻击或绕过在机器代码级别运行的编译器。
分类账交易系统106的一个或更多个实施例利用交易脚本和模块的静态和动态分析的组合来更准确地保持引用安全。特别地,在一个或更多个实施例中,分类账交易系统106在字节码级别接收并执行交易脚本。分类账交易系统106可以执行加载时字节码验证来在字节码级别分析这样的交易脚本,以甚至在交易脚本是直接用字节码编写的情况下识别引用安全问题。在一个或更多个实施例中,分类账交易系统106也对被提交用于存储在分布式数字分类账交易网络上的模块执行字节码验证。另外,在一个或更多个实施例中,分类账交易系统106利用使用树结构存储器模型来引用存储器的编程语言。以这种方式,分类账交易系统106可以在字节码级别针对引用安全而更准确且更有效地进行分析,以提高的准确性识别引用安全问题。
如上面所提到的,在一个或更多个实施例中,分类账交易系统106在字节码级别执行交易脚本。例如,分类账交易系统106可以执行直接用字节码编写的交易脚本。在一些实施例中,分类账交易系统106接收使用源代码或中间表示(IR)编写的交易脚本,将交易脚本编译成字节码,然后执行字节码。实际上,由分类账交易系统106执行的交易脚本——无论该脚本是用字节码编写还是被编译成字节码——包含字节码操作的序列。
如上面所提到的,交易脚本可以从一个或更多个模块调用一个或更多个过程。在一个或更多个实施例中,定义模块的过程的代码也包括字节码操作的序列。因此,分类账交易系统106在执行模块过程时维护字节码的执行。
如上面关于图2进一步描述的,在一个或更多个实施例中,分类账交易系统106使用基于栈的虚拟机来执行交易脚本的字节码操作。例如,分类账交易系统106可以实现利用来自栈的操作数的操作,然后将结果推送回栈上。
此外,分类账交易系统可以利用基于栈的虚拟机来实现过程调用(即,由交易脚本调用的模块过程)。为了说明,在一个或更多个实施例中,分类账交易系统106向每个过程提供类型化局部变量的固定向量,并将输入参数存储在从位置0开始的向量中。分类账交易系统106然后将被调用者推送到栈上的过程调用的输入引数加载到局部变量的向量中。分类账交易系统106然后可以利用字节码解释器来开始执行与零偏移处的过程对应的字节码操作的序列。分类账交易系统106可以通过依次执行字节码操作来继续执行,除非识别出引起到序列中的特定偏移的跳转的分支操作为止。通过过程调用的返回,分类账交易系统106可以将输出值放置在栈上。
在一个或更多个实施例中,分类账交易系统106可以经由编程语言来利用布尔、算术、等式和分支(branching)运算符。在一些实施例中,分类账交易系统106可以利用用于加载常量并将存储在局部变量中的值复制或移动到栈上以及用于将值从栈弹出到局部变量中的字节码操作。在另外的实施例中,分类账交易系统106可以实现用于创建和解散结构体和资源的字节码操作(结构体和资源将在下面更详细地被解释)。实际上,分类账交易系统106可以利用来自栈的值来生成结构体,然后将该结构体推送到栈上。分类账交易系统106可以通过利用在栈顶处的结构体将存储在该结构体中的值推送到栈上来执行反向字节码操作。
在一些实施例中,分类账交易系统106利用编程语言来支持两种类型的值:无限制(unrestricted)和资源。实际上,分类账交易系统可以支持原语类型(primitive type),例如布尔、64位无符号整数、256位账户地址和固定大小的字节数组。分类账交易系统106可以生成结构体类型,并且可以进一步将结构体类型标记(tag)为资源,从而生成资源类型。分类账交易系统106可以将所有其他类型(包括未标记的结构体类型和原语类型)视为无限制类型。在一个或更多个实施例中,分类账交易系统106使用由编程语言提供的线性语义来将资源(例如数字资产)实现为线性数据类型,如上面关于图42更详细讨论的。
在一个或更多个实施例中,资源类型的变量是资源变量,以及无限制类型的变量是无限制变量。如上面所讨论的,在一些实施例中,资源变量无法被复制,并且必须总是被移动(即,使用移动操作)。此外,在一些实施例中,资源种类的变量和字段无法被改变。相反,在一个或更多个实施例中,无限制类型的变量或字段既可以被复制又可以被改变。在一些实施例中,结构体的字段的类型可以是原语或结构体。然而,在一些实施例中,无限制结构体类型可以不包含具有资源类型的字段,确保无限制结构体不会导致嵌套资源的复制。上面参考图19更详细地讨论了资源。
在另外的实施例中,分类账交易系统106还使用编程语言实现引用类型。分类账交易系统106可以将引用类型分类为或者可变的(mutable)或者不可变的(immutable)。分类账交易系统106可以利用对全局和局部变量以及对结构体变量的字段的引用。
如上面所提到的,在一个或更多个实施例中,分类账交易系统106利用组合的静态-动态分析来实施引用安全。特别地,分类账交易系统可以静态和动态地分析被提交用于存储在分布式数字分类账交易网络上的模块以及被提交用于执行的交易脚本。在执行分析中,分类账交易系统确定交易或模块是否总是指向有效的存储器(即,从不指向已被释放的存储器,从不指向在存储器数组的边界之外的存储器,等等)。在一个或更多个实施例中,分类账交易系统106进一步使用组合的静态-动态分析来确保:如果活引用(live reference)是在同一范围内的另一个活引用的扩展(或与在同一范围内的另一个活引用相等),则这些引用驻留在不可变引用类型的变量中。图43示出了根据一个或更多个实施例的利用组合的静态-动态分析来实施引用安全的框图。
如图43所示,分类账交易系统106可以执行在加载时执行静态字节码验证的行动4302。实际上,分类账交易系统106可以利用字节码验证器来分析交易脚本或模块,并在加载时实施一般的安全属性。
为了说明,在一个或更多个实施例中,模块或交易脚本对实体(例如常量、类型签名、结构体定义和过程定义)的表的集合编码。分类账交易系统106可以利用字节码验证器来执行结构化检查以确保这些表是格式良好的。特别地,字节码验证器可以识别包括非法表索引、重复的表条目、非法类型签名(例如,对引用的引用)等的错误。如果结构化检查被满足,分类账交易系统106可以利用字节码验证器来进一步对过程主体执行语义检查。在执行语义检查时,字节码验证器可以识别包括不正确的过程引数、对已释放分配的对象的悬空引用、资源的非法拷贝等的错误。
在一个或更多个实施例中,分类账交易系统106利用字节码验证器来实现语义验证的几个阶段。例如,在CFG构造阶段中,分类账交易系统106可以通过将模块或交易脚本的指令序列分解成指令块的集合来构造控制流图。特别地,每个指令块可以包括指令的连续序列。实际上,被包括在交易脚本或模块中的所有指令的集合可以在指令块之间进行划分。此外,每个指令块可以以分支或返回指令结束。通过将指令序列分解成指令块,分类账交易系统106确保分支目标仅落在指令块的开始处。在一些实施例中,分解还可以确保所生成的块是最大的。
分类账交易系统106可以另外使用字节码验证器来实现栈检查阶段。特别地,字节码验证器分析指令块以确保特定的不变量被保持。在一个或更多个实施例中,不变量要求:当执行落在指令块的开始处时,栈高度为n(当相应函数开始执行时的栈的高度),并且栈高度为n或n+1,分别取决于函数是不返回引数还是返回引数。字节码验证器单独地分析每个指令块,确定指令块中的每个指令对栈高度的影响。实际上,字节码验证器确定栈高度不会低于n(不期望的结果)并且在指令块的末尾处保留在n或n+1(取决于块的最终指令和函数的返回类型)。
分类账交易系统106可以进一步利用字节码验证器来实现类型检查阶段。特别地,字节码验证器可以检查每个操作和函数(包括内置函数和用户定义的过程两者)是否用适当类型的引数来调用。特别地,操作的操作数是位于局部变量中或者位于栈上的值。在一个或更多个实施例中,字节码已经提供了函数的局部变量的类型。然而,在一些实施例中,字节码验证器推断栈值的类型。字节码验证器可以为每个指令块单独地执行这个推断和每个操作的类型检查。在一个或更多个实施例中,因为在每个指令块的开始处的栈高度是n并且在块的执行期间栈高度不会低于n,所以字节码验证器对从n开始的栈的后缀进行建模,以便对指令块内的指令进行类型检查。实际上,字节码验证器可以使用类型的栈来对这个后缀建模,随着块中的指令流被处理,类型被推送到该栈上和从该栈弹出。在一个或更多个实施例中,局部变量的类型栈和静态地已知的类型足以对每个指令进行类型检查。
在一个或更多个实施例中,分类账交易系统106可以利用字节码验证器,针对在资源上执行的操作的附加约束来进一步分析交易脚本或模块。例如,如上面所提到的,资源变量和字段通常无法被拷贝或更新。在一个或更多个实施例中,字节码验证器在类型检查阶段期间执行这些检查。在一个或更多个实施例中,字节码验证器利用在字节码级别的借用跟踪(borrow tracking)来执行静态的加载时验证。
如图43所示,分类账交易系统106另外执行在运行时执行动态检查的行动4304。特别地,分类账交易系统106可以利用字节码解释器来执行动态运行时检查。在一个或更多个实施例中,分类账交易系统106执行一次动态运行时检查。具体地,在一个或更多个实施例中,分类账交易系统106通过对分布式数字分类账交易网络上的资源的未完成引用(outstanding reference)的数量进行计数来执行动态检查。实际上,分类账交易系统106执行动态检查以确保在给定时间只有一个交易或模块具有对资源的检出引用。
在一个或更多个实施例中,当确定模块或交易脚本不是存储器安全的时,分类账交易系统106可以拒绝该模块或交易脚本。实际上,如果分类账交易系统106经由字节码验证确定模块或交易脚本不是存储器安全的,则分类账交易系统106可以甚至在尝试执行代码之前(即,在运行时)拒绝模块或交易脚本。
如上面所提到的,分类账交易系统106可以利用编程语言来实现树结构存储器模型。在上面关于图3-图6提供了关于树结构存储器模型(例如状态树、事件树和交易树)的更多细节。在一个或更多个实施例中,分类账交易系统106禁止将结构体的字段作为引用,确保树结构存储器模型可以被维护(而不是需要有向非循环图(directed acyclic graph))。
当与传统系统比较时,通过利用使用树结构存储器模型引用存储器的编程语言,分类账交易系统106提高了效率和安全性。实际上,分类账交易系统106可以基于从树的根到节点的路径来唯一地命名在树结构存储器模型中的每个节点。于是,分类账交易系统106可以在字节码级别实现引用安全分析,而不限于源代码分析。这提高了在分析引用安全方面的准确性,并减少了恶意攻击的载体。此外,通过在加载时静态地执行大部分引用安全分析,分类账交易系统106可以在尝试执行交易脚本或模块之前识别不是存储器安全的交易脚本和模块。
图1-图43、相应的文本和示例提供了分类账交易系统106的许多不同的方法、系统、设备和非暂时性计算机可读介质。除了前述内容之外,一个或更多个实施例也可以按照包括用于实现特定结果的行动的流程图来被描述,如图44-图49所示。可以用更多或更少的行动来执行图44-图49中的每个。此外,在图44-图49中的每一个中示出的行动可以以不同的顺序被执行。另外,在图44-图49中的每一个中描述的行动可以重复,或者与彼此并行地或者与相同或相似行动的不同实例并行地被执行。
例如,图44示出了根据一个或更多个实施例的用于执行账户逐出的一系列行动4400的流程图。虽然图44示出了根据一个实施例的行动,但是替代实施例可以省略、添加、重新排序和/或修改图44所示的任何行动。图44的行动可以作为方法的一部分来被执行。替代地,非暂时性计算机可读介质可以存储指令,这些指令在由一个或更多个处理器执行时使计算设备执行图44的行动。在一些实施例中,系统可以执行图44的行动。例如,在一个或更多个实施例中,系统包括至少一个处理器和至少一个非暂时性计算机可读介质,在该至少一个非暂时性计算机可读介质上存储有指令,这些指令在由至少一个处理器执行时使系统执行图44的行动。
一系列行动4400包括生成经认证数据结构的行动4402。例如,行动4402涉及生成分布式数字分类账交易网络的经认证数据结构,其中经认证数据结构包括数据树,该数据树包括具有映射到在数据库中的条目的数据表示的节点。在一个或更多个实施例中,数据库包括状态数据库,并且数据树包括状态树。
一系列行动4400还包括确定与节点相关联的逐出日期的到期的行动4404。例如,行动4404涉及通过从数据树的节点访问数据表示以确定与该节点相关联的逐出日期的到期,来执行从经认证数据结构中懒惰删除数据。在一个或更多个实施例中,该节点包括与用户账户的账户数据对应的账户状态表示。分类账交易系统106可以通过下列步骤来生成账户状态表示:将散列函数应用于在状态数据库中的对应于用户账户的账户数据,以生成对应于用户账户的账户数据的散列值;以及将账户数据的散列值与和用户账户相关联的逐出日期组合以生成对应于用户账户的账户状态表示。
在一个或更多个实施例中,分类账交易系统106基于下列项中的至少一项来确定逐出日期的到期:租用存放金额、最后一次用户账户访问的时间、从用户账户转移数字资产的交易的时间或者将数字资产转移到用户账户的交易的时间。
一系列行动4400还包括删除对应于节点的一个或更多个条目的行动4406。例如,行动4406涉及通过响应于确定逐出日期的到期而从数据库中删除对应于节点的一个或更多个条目同时保持数据树内的数据表示,来执行从经认证数据结构中懒惰删除数据。在一个或更多个实施例中,一个或更多个条目包括对应于用户账户的账户数据。
在一个或更多个实施例中,一系列行动4400还包括围绕对应于节点的一个或更多个条目的删除的行动。例如,在一个或更多个实施例中,行动包括从数据库中删除对应于节点的一个或更多个条目而没有在分布式数字分类账交易网络上的用于删除一个或更多个条目的交易事件请求。在一些实施例中,行动包括在从数据库中删除对应于节点的一个或更多个条目之前:从客户端设备接收请求,该请求要求一个或更多个条目的使用;响应于从客户端设备接收到请求,从数据树的节点访问数据表示以确定逐出日期的到期;以及处理该请求,就好像一个或更多个条目已经被删除一样。在另外的实施例中,行动包括:响应于接收到引用用户账户的交易,从状态树访问对应于用户账户的账户状态表示以确定逐出日期的到期,以及处理交易,就好像用户账户已经到期一样。
在一些实施例中,一系列行动4400还包括用于恢复用户账户的行动。例如,在一个或更多个实施例中,行动包括:识别与用户账户相关联的账户恢复请求,其中账户恢复请求包括用户账户的被提议的账户数据;以及基于状态树内的账户状态表示来验证用户账户的被提议的账户数据。在一些实施例中,行动还包括基于验证用户账户的被提议的账户数据,在分布式数字分类账交易网络的状态数据库内重新缓存与用户账户相关联的被提议的账户数据。在一些实施例中,行动还包括基于重新缓存与用户账户相关联的被提议的账户数据,更新与节点相关联的逐出日期。
图45示出了根据一个或更多个实施例的用于生成对交易唯一的加密子地址的一系列行动4500的流程图。虽然图45示出了根据一个实施例的行动,但是替代实施例可以省略、添加、重新排序和/或修改图45所示的任何行动。图45的行动可以作为方法的一部分来被执行。替代地,非暂时性计算机可读介质可以存储指令,这些指令在由一个或更多个处理器执行时使计算设备执行图45的行动。在一些实施例中,系统可以执行图45的行动。例如,在一个或更多个实施例中,系统包括至少一个处理器和至少一个非暂时性计算机可读介质,在该至少一个非暂时性计算机可读介质上存储有指令,这些指令在由至少一个处理器执行时使系统执行图45的行动。
一系列行动4500包括识别对应于用户账户的地址标识符的行动4502。例如,行动4502涉及通过识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥,生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求。在一个或更多个实施例中,识别对应于第二用户账户的主公开地址标识符、对应于第二用户账户的子地址标识符和公开加密密钥包括,扫描对主公开地址标识符、子地址标识符和公开加密密钥编码的数字视觉代码。
在一个或更多个实施例中,分类账交易系统基于下列项中的至少一项来识别主公开地址标识符、子地址标识符和公开加密密钥:对应于第二用户账户的用户的电话号码或该用户的用户ID。
在一些实施例中,分类账交易系统106基于对应于第二用户账户的用户的电子邮件地址来识别主公开地址标识符、子地址标识符和公开加密密钥。例如,在一些实施例中,识别主公开地址标识符、子地址标识符和公开加密密钥包括:从对应于第二用户账户的用户的电子邮件地址识别域名和个人电子邮件标识符;基于来自电子邮件地址的域名确定主公开地址标识符;以及基于来自电子邮件地址的个人电子邮件标识符来确定子地址标识符。实际上,在一些实施例中,识别主公开地址标识符、子地址标识符和公开加密密钥包括,响应于将来自电子邮件地址的个人电子邮件标识符提供给对应于域名的远程服务器,从对应于域名的远程服务器接收公开加密密钥。
在一个或更多个实施例中,基于域名来确定主公开地址标识符包括访问对应于域名的DNS记录以识别下列项中的至少一项:主公开地址标识符或公开加密密钥。在一些实施例中,分类账交易系统106还利用DNSSEC来验证通过访问对应于域名的DNS记录而识别的主公开地址标识符或公开加密密钥。在一个或更多个实施例中,生成加密子地址包括将通过访问DNS记录而确定的公开加密密钥应用于基于个人电子邮件标识符而确定的子地址标识符。
一系列行动4500还包括生成唯一的加密子地址的行动4504。例如,行动4502涉及通过经由将公开加密密钥应用于子地址标识符生成对交易唯一的加密子地址,来生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求。在一个或更多个实施例中,生成对交易唯一的加密子地址包括向子地址标识符添加随机数值;以及将公开加密密钥应用于具有随机数值的子地址标识符。
一系列行动4500还包括提交对交易的请求用于执行的行动4506。例如,行动4506涉及使用主公开地址标识符和对交易唯一的加密子地址经由分布式数字分类账交易网络来提交对在第一用户账户和第二用户账户之间的交易的请求用于执行。
图46示出了根据一个或更多个实施例的用于实施交易的并行执行的一系列行动4600的流程图。虽然图46示出了根据一个实施例的行动,但是替代实施例可以省略、添加、重新排序和/或修改图46所示的任何行动。图46的行动可以作为方法的一部分来被执行。替代地,非暂时性计算机可读介质可以存储指令,这些指令在由至少一个处理器执行时使计算设备执行图46的行动。在一些实施例中,系统可以执行图46的行动。例如,在一个或更多个实施例中,系统包括至少一个处理器和至少一个非暂时性计算机可读介质,在该至少一个非暂时性计算机可读介质上存储有指令,这些指令在由至少一个处理器执行时使系统执行图46的行动。
一系列行动4600包括确定第一状态数据结构的行动4602。例如,行动4602涉及确定分布式数字分类账交易网络的第一状态数据结构,其中第一状态数据结构表示分布式数字分类账交易网络的多个用户账户的账户状态。
一系列行动4600还包括识别多个交易的行动4604。例如,行动4604涉及识别包括与多个用户账户中的用户账户相关联的交易的多个交易。
一系列行动4606还包括并行地执行交易的先予执行的行动4606。例如,行动4606涉及关于第一状态数据结构并行地执行交易的先予执行,以确定多个交易结果和交易对于用户账户的依赖性。
在一个或更多个实施例中,交易包括第一交易和第二交易。实际上,在一些实施例中,执行先予执行包括确定反映第一交易关于第一状态数据结构的应用的第一交易结果;确定反映第二交易关于第一状态数据结构的应用的第二交易结果;以及确定第二交易不依赖于第一交易并且第一交易不依赖于第二交易。在一些实施例中,基于确定第二交易不依赖于第一交易并且第一交易不依赖于第二交易,分类账交易系统106关于第一状态数据结构应用第一交易结果和第二交易结果。
在一个或更多个实施例中,分类账交易系统106通过将第一交易结果应用于第一状态数据结构来生成中间状态数据结构。在一些实施例中,交易还包括第三交易,并且执行先予执行包括:确定反映第三交易关于第一状态数据结构的应用的第三交易结果;以及确定第三交易依赖于第一交易。实际上,在一些实施例中,响应于确定第三交易依赖于第一交易,分类账交易系统106针对中间状态数据结构执行第三交易以生成第二状态数据结构。在一个或更多个实施例中,确定第三交易依赖于第一交易包括确定第三交易和第一交易与来自用户账户的同一用户账户相关联。
另外,一系列行动4600包括通过应用交易结果来修改第一状态数据结构的行动4608。例如,行动4608涉及通过基于交易的依赖性应用多个交易结果,将第一状态数据结构修改为第二状态数据结构。在一个或更多个实施例中,第二状态数据结构等效于针对第一状态数据结构串行地执行多个交易。
在一个或更多个实施例中,分类账交易系统106从验证者节点接收多个交易的依赖性指示符,并基于该依赖性指示符来识别多个交易中的第一子集和多个交易中的第二子集。因此,执行交易的先予执行包括基于依赖性指示符来执行多个交易中的第一子集的先予执行。在一些实施例中,分类账交易系统106基于由执行多个交易中的第一子集的先予执行而产生的交易结果,生成中间状态数据结构;以及通过关于中间状态数据结构执行多个交易中的第二子集来生成第二状态数据结构。
图47示出了根据一个或更多个实施例的用于生成交易事件的一系列行动4700的流程图。虽然图47示出了根据一个实施例的行动,但是替代实施例可以省略、添加、重新排序和/或修改图47所示的任何行动。图47的行动可以作为方法的一部分来被执行。替代地,非暂时性计算机可读介质可以存储指令,这些指令在由至少一个处理器执行时使计算设备执行图47的行动。在一些实施例中,系统可以执行图47的行动。例如,在一个或更多个实施例中,系统包括至少一个处理器和至少一个非暂时性计算机可读介质,在该至少一个非暂时性计算机可读介质上存储有指令,这些指令在由至少一个处理器执行时使系统执行图47的行动。
一系列行动4700包括生成状态数据结构的行动4702。例如,行动4702涉及生成分布式数字分类账交易网络的状态数据结构,其中状态数据结构包括对应于用户账户的账户数据、对应于用户账户的交易事件计数器以及用户账户在状态数据结构内的地址。
一系列行动4700还包括修改交易事件计数器的计数值的行动4704。例如,行动4704涉及响应于包括与分布式数字分类账交易网络的用户账户对应的事件的交易的执行,修改在状态数据结构内的用户账户的交易事件计数器的计数值。
在一个或更多个实施例中,状态数据结构包括对应于用户账户的附加交易事件计数器,交易事件计数器对应于第一交易事件类型,并且附加交易事件计数器对应于第二交易事件类型。因此,在一些实施例中,修改用户账户的交易事件计数器的计数值包括:确定交易事件对应于第一交易事件类型;以及基于确定交易事件对应于第一交易事件类型来修改交易事件计数器的计数值。
此外,一系列行动4700包括在事件数据结构内生成交易事件的行动4706。例如,行动4706涉及响应于包括与分布式数字分类账交易网络的用户账户对应的事件的交易的执行,进一步在事件数据结构内生成交易事件,事件数据结构内的交易事件反映地址、用户账户的交易事件计数器的计数值以及事件的细节。在一个或更多个实施例中,事件数据结构包括反映响应于交易的执行而生成的交易事件的事件树。实际上,在一个或更多个实施例中,分类账交易系统106确定反映对应于交易的交易事件的事件树的根值;以及将事件树的根值存储在分布式数字分类账交易网络的交易树中。
在一个或更多个实施例中,一系列行动4700还包括用于响应于交易的执行而生成多个交易事件的行动。如上面所提到的,在一个或更多个实施例中,状态集合数据结构包括对应于第二交易事件类型的附加交易事件计数器。实际上,在一些实施例中,交易包括第二交易事件类型的附加事件。因此,在一个或更多个实施例中,分类账交易系统106修改在状态数据结构内的用户账户的附加交易事件计数器的附加计数值;以及在事件数据结构内生成附加交易事件,事件数据结构内的附加交易事件反映地址、用户账户的附加交易事件计数器的附加计数值以及附加事件的细节。
在一些实施例中,一系列行动4700还包括用于响应于接收到请求而提供数据的行动。例如,在一个或更多个实施例中,行动包括:从客户端设备接收事件计数请求,该事件计数请求包括对交易事件计数器的引用;以及响应于从客户端设备接收到事件计数请求,将来自状态数据结构的交易事件计数器的已修改的计数值提供给客户端设备。在一个或更多个实施例中,对交易事件计数器的引用包括反映地址和交易事件计数器两者的访问路径。在一些实施例中,行动包括从客户端设备接收交易事件细节请求,该交易事件细节请求包括交易事件计数器的计数值和访问路径,该访问路径包括地址和交易事件计数器;以及响应于接收到交易事件细节请求,将来自事件数据结构的事件的细节连同对应于交易事件的Merkle证明一起提供给客户端设备。
图48示出了根据一个或更多个实施例的用于接收交易事件数据的一系列行动4800的流程图。虽然图48示出了根据一个实施例的行动,但是替代实施例可以省略、添加、重新排序和/或修改图48所示的任何行动。图48的行动可以作为方法的一部分来被执行。替代地,非暂时性计算机可读介质可以存储指令,这些指令在由至少一个处理器执行时使计算设备执行图48的行动。在一些实施例中,系统可以执行图48的行动。例如,在一个或更多个实施例中,系统包括至少一个处理器和至少一个非暂时性计算机可读介质,在该至少一个非暂时性计算机可读介质上存储有指令,这些指令在由至少一个处理器执行时使系统执行图48的行动。
一系列行动4800包括监控交易事件计数器的行动4802。例如,行动4802涉及监控与存储在分布式数字分类账交易网络的计算机节点处的状态数据结构的用户账户对应的交易事件计数器。在一个或更多个实施例中,基于监控交易事件计数器,分类账交易系统106确定交易事件计数器的计数值。
在一些实施例中,监控交易事件计数器包括在计算机节点处轮询交易事件计数器。因此,在一些实施例中,分类账交易系统106确定交易事件计数器在第一时间的计数值;以及确定交易事件计数器在第二时间的附加计数值。实际上,在一些实施例中,分类账交易系统106通过确定交易事件计数器在第一时间的计数值和交易事件计数器在第二时间的附加计数值是相同的计数值,来验证在第一时间和第二时间之间不存在对应于用户账户的事件。
一系列行动4800还包括传输对交易事件数据的交易事件细节请求的行动4804。例如,行动4804涉及传输对来自存储在分布式数字分类账交易网络的一个或更多个计算机节点处的事件数据结构中的交易事件数据的交易事件细节请求。在一些实施例中,交易事件细节请求包括交易事件计数器的计数值和在状态数据结构内的对应于用户账户的交易事件计数器的访问路径。在一个或更多个实施例中,监控交易事件计数器和传输交易事件细节请求是对计算机节点(例如,参考行动4602讨论的计算机节点)的组合请求的一部分。
此外,一系列行动4800包括接收交易事件数据的行动4806。例如,行动4806涉及响应于传输交易事件细节请求,经由一个或更多个计算机节点接收与从交易事件计数器确定的计数值对应的交易事件数据。在一个或更多个实施例中,事件数据结构包括事件Merkle树,并且状态数据结构包括状态Merkle树。因此,在一些实施例中,接收交易事件数据包括响应于传输交易事件细节请求,从分布式数字分类账交易网络的计算机节点接收Merkle证明。
在一个或更多个实施例中,一系列行动4800包括用于接收关于事件序列的交易事件数据的行动。例如,如上面所提到的,监控交易事件计数器可以包括:确定交易事件计数器在第一时间的计数值;以及确定交易事件计数器在第二时间的附加计数值。在一些实施例中,基于比较交易事件计数器在第一时间的计数值和交易事件计数器在第二时间的附加计数值,分类账交易系统106确定指示经由分布式数字分类账交易网络已经发生对应于用户账户的事件序列的计数值序列。因此,传输交易事件细节请求可以包括传输对事件序列的交易事件序列请求;并且接收交易事件数据可以包括接收对应于多个事件的交易事件数据集合。在一些实施例中,行动还包括将对应于多个事件的交易事件数据集合与计数值序列进行比较以确定:该多个事件是事件序列的完整集合;或者该多个事件集合是事件序列的不完整集合。
图49示出了根据一个或更多个实施例的用于利用受限于线性分型规则的线性数据类型来执行交易的一系列行动4900的流程图。虽然图49示出了根据一个实施例的行动,但是替代实施例可以省略、添加、重新排序和/或修改图49所示的任何行动。图49的行动可以作为方法的一部分来被执行。替代地,非暂时性计算机可读介质可以存储指令,这些指令在由至少一个处理器执行时使计算设备执行图49的行动。在一些实施例中,系统可以执行图49的行动。例如,在一个或更多个实施例中,系统包括至少一个处理器和至少一个非暂时性计算机可读介质,在该至少一个非暂时性计算机可读介质上存储有指令,这些指令在由至少一个处理器执行时使系统执行图49的行动。
一系列行动4900包括识别对转移数字资产的交易的请求的行动4902。例如,行动4902涉及识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求。在一个或更多个实施例中,数字资产包括被保持在分布式数字分类账交易网络的状态数据结构内的数字货币。
一系列行动4900还包括确定数字资产的线性数据类型的行动4904。例如,行动4904涉及在对交易的请求内确定数字资产的线性数据类型。
此外,一系列行动4900包括在线性分型规则的规限下执行交易的行动4906。例如,行动4906涉及通过在对应于线性数据类型的线性分型规则的规限下将数字资产从状态数据结构上的第一用户账户转移到第二用户账户,来执行利用线性数据类型的该交易。在一个或更多个实施例中,线性分型规则是编程语言的一部分,用于控制分布式数字分类账交易网络的状态数据结构的修改。在一些实施例中,数字资产的线性数据类型按照编程语言和线性分型规则是可分割和可合并的。
在一些实施例中,线性分型规则包括在交易中使用线性数据类型确切地一次的第一线性分型规则。在另外的实施例中,线性分型规则包括反对复制线性数据类型的第二线性分型规则。
为了说明在对应于线性数据类型的线性分型规则的规限下执行交易,在一个或更多个实施例中,一系列行动4900包括附加行动,例如下列行动:用于识别对经由分布式数字分类账交易网络转移由线性数据类型表示的附加数字资产的附加交易的附加请求;确定对该附加交易的附加请求利用由线性数据类型表示的附加数字资产多于一次;以及基于确定对该附加交易的附加请求的线性数据类型违反来自线性分型规则中的第一线性分型规则,拒绝对该附加交易的附加请求。在一些实施例中,附加行动包括识别对经由分布式数字分类账交易网络从第一用户账户转移附加数字资产的附加交易的附加请求,其中对该附加交易的附加请求未能识别接收方用户账户;以及由于违反来自线性分型规则中的第一线性分型规则,因此拒绝对该附加交易的附加请求。
在一个或更多个实施例中,分类账交易系统106执行用于应用可配置存储删除规则的一系列行动。例如,该一系列行动可以包括下列行动:生成分布式数字分类账交易网络的经认证数据结构,其中经认证数据结构包括数据树,该数据树包括映射到数据库中的条目的节点;确定对应于计算设备的可配置数据结构删除规则;以及基于对应于计算设备的可配置数据结构删除规则来删除经认证数据结构的一部分。该一系列行动还可以包括下列行动:提供修改数据结构删除规则的选项(包括用于删除对应于特定事件、时间、账户或交易的数据的选项);基于确定子树中的节点是满的来删除子节点;生成表示多个状态的经认证数据结构,并删除该经认证数据结构中的表示一个状态的部分;和/或基于计算设备的一个或更多个特性(例如,该设备是验证者节点还是全节点)来删除数据。
在一些实施例中,分类账交易系统106执行用于跟踪存储器中的多次写入的一系列行动。例如,该一系列行动可以包括下列行动:将分布式数字分类账交易网络的经认证状态数据结构提交给存储器,其中状态数据结构包括与分布式数字分类账交易网络的多个用户账户对应的状态树;识别包括与多个用户账户中的用户账户相关联的交易的交易区块;基于交易区块生成便笺式数据结构,该便笺式数据结构包括反映对经认证状态数据结构的修改的状态数据分量;以及在经由分布式数字分类账交易网络获得共识的指示时,基于状态数据分量将已修改的状态数据结构提交给存储器。该一系列行动还可以包括下列行动:澄清状态数据分量仅反映与用户账户的子集对应的节点的子集但是包括指向经认证数据结构的未改变节点的指针;识别附加交易(例如第二交易和第三交易);在提交给存储器之前,生成包括反映附加交易(例如第二交易和第三交易)的附加状态数据分量的便笺式数据结构;就在便笺式数据结构中存储的一些交易但不是全部交易获得共识;和/或仅将达成共识的交易提交给存储器。
在一个或更多个实施例中,分类账交易系统106执行用于分离和存储智能合约代码和智能合约数据的一系列行动。例如,该一系列行动可以包括下列行动:识别用于修改存储在分布式数字分类账交易网络的经认证数据结构的用户账户内的资源的交易脚本,其中:交易脚本包括资源标识符,并且资源标识符反映资源、用于生成资源的模块以及存储该模块的特定用户账户;以及基于资源标识符,通过根据由模块定义的过程修改资源来执行交易脚本。该一系列行动还可以包括下列行动:澄清模块包括声明资源和过程的字节码;澄清资源包括数据值(例如,将所命名的字段绑定到值的记录);将多个模块存储在同一用户账户处;和/或将多种不同的资源类型存储在同一用户账户处。在一些实施例中,模块被存储在与资源相同的用户账户中。在另外的实施例中,模块被存储在与存储资源的用户账户不同的用户账户中。
在一些实施例中,分类账交易系统106执行用于利用资源来授权账户许可的一系列行动。例如,该一系列行动可以包括下列行动:生成存储在分布式数字分类账交易网络的经认证数据结构的第一用户账户内的许可资源,其中许可资源指示修改第一用户账户的一个或更多个许可;执行将许可资源转移到经认证数据结构的第二用户账户的第一交易;以及基于具有许可资源的第二用户账户来执行由第二用户账户发起的修改第一用户账户的第二交易。该一系列行动还可以包括拒绝来自第一用户账户的交易(因为第一用户账户不再具有许可资源)的行动。在一个或更多个实施例中,一个或更多个许可包括从用户账户提取数字资产的许可。在一些实施例中,第二用户账户包括冷钱包。在另外的实施例中,转移许可资源是将许可资源移动到第二用户账户,使得第一用户账户不再包括许可资源。
此外,在一些实施例中,分类账交易系统106执行用于将账户地址与加密密钥去耦合(即,实现密钥轮换特征)的一系列行动。例如,该一系列行动可以包括下列行动:生成与分布式数字分类账交易网络的经认证数据结构的用户账户对应的认证密钥;识别用于修改认证密钥的交易;以及在利用认证密钥认证交易时,通过为用户账户生成新的认证密钥来执行交易。该一系列行动还可以包括下列行动:在针对第一用户账户的第二交易中利用新的认证密钥;澄清系统生成新的认证密钥而不修改用户账户在经认证数据结构内的地址;和/或基于附加交易,将新的认证密钥修改为附加认证密钥。
此外,在一个或更多个实施例中,分类账交易系统106执行用于利用交易脚本并与模块和资源交互的一系列行动。例如,该一系列行动可以包括下列行动:识别包括用于修改存储在分布式数字分类账交易网络的经认证数据结构的用户账户内的资源的交易脚本的交易,其中:资源由模块定义,并且交易脚本包括对由模块定义的用于修改资源的过程的调用;以及通过根据由模块定义的过程修改资源来执行交易脚本。该一系列行动还可以包括下列行动:澄清模块(数据代码)和资源(数据值);提供由模块定义的示例过程,例如取款或存款过程;和/或拒绝试图以未能满足由模块定义的过程的方式修改资源的交易。
在一个或更多个实施例中,分类账交易系统106执行用于利用智能合约来执行围绕交易的执行的任务的一系列行动。例如,该一系列行动可以包括下列行动:经由存储在分布式数字分类账交易网络的经认证数据结构上的智能合约来定义交易执行过程;执行将智能合约的执行过程修改为新的执行过程的交易;以及根据新的执行过程来执行第二交易。该一系列行动还可以包括下列行动:澄清交易执行过程可以包括用于验证交易、扣除gas支付款、使序列号递增或分发gas支付款的过程;识别与被授权修改交易执行过程的设备(例如认证器设备)的子集相关联的加密密钥;和/或基于加密密钥来执行修改智能合约的交易。
在一些实施例中,分类账交易系统106执行用于实现数字资产保管特征的一系列行动。例如,该一系列行动可以包括下列行动:生成对在分布式数字分类账交易网络的经认证数据结构内的用户账户的访问限制,访问限制包括访问密钥限制或用于访问账户的阈值数量的访问密钥;识别包括一个或更多个访问密钥的交易;以及基于确定该一个或更多个访问密钥满足访问密钥限制或阈值数量的访问密钥而执行交易。该一系列行动还可以包括下列行动:澄清阈值数量的访问密钥包括来自一组访问密钥中的一定百分比或数量的访问密钥;澄清访问密钥限制包括反映通过利用相应密钥可访问的数字资产的阈值价值的价值密钥限制;澄清访问密钥限制包括反映在一段时间内可访问的数字资产的阈值价值的速率密钥限制;和/或定义和利用子密钥。
此外,在一些实施例中,分类账交易系统106执行用于对执行结果执行共识的一系列行动。例如,该一系列行动可以包括下列行动:经由分布式数字分类账交易网络识别包括多个交易的交易区块;关于状态数据结构执行交易区块以生成执行结果;以及在确定来自多个验证者节点的对执行结果的多个投票满足共识阈值时,经由已修改的状态数据结构将执行结果提交给存储装置。
此外,在一个或更多个实施例中,分类账交易系统106执行用于实现流水线式共识的一系列行动。例如,该一系列行动可以包括下列行动:在执行第一交易区块时,为分布式数字分类账交易网络的第一状态生成第一经认证数据结构;在执行第二交易区块时,为与第一状态邻接的第二状态生成第二经认证数据结构;在执行第三交易区块时,为与第二状态邻接的第三状态生成第三经认证数据结构;以及响应于经由分布式数字分类账交易网络就第一经认证数据结构、第二经认证数据结构和第三经认证数据结构获得共识,将第一经认证数据结构提交给存储器。
在一些实施例中,分类账交易系统106执行用于在系统重启时提供安全的一系列行动。例如,该一系列行动可以包括下列行动:在分布式数字分类账交易网络的验证者节点处生成共识状态,该共识状态包括最后投票轮数据和优选区块轮数据;在验证者节点处存储共识重启规则;以及响应于在验证者节点处检测到重启,根据共识重启规则来加载共识状态。
此外,在一个或更多个实施例中,分类账交易系统106执行用于管理投票权的时期的一系列行动。例如,该一系列行动可以包括下列行动:基于来自分布式数字分类账交易网络的第一验证者节点集合的投票,获得对应于第一交易的共识;识别引用了模块的用于修改验证者节点的第二交易,该模块定义了参数;以及通过根据由模块定义的参数执行第二交易,将第一验证者节点集合修改为分布式数字分类账交易网络的新验证者节点集合,并且基于来自第一验证者节点集合的附加投票来就第二交易获得共识。该一系列行动还可以包括下列行动:检查以确保在修改第一验证者节点集合之前由模块定义的时期已经过去;在该时期期间保持来自第一验证者节点集合的数字资产;在该时期和附加冷静期期间保持来自第一验证者节点集合的数字资产;基于来自与分布式数字分类账交易网络的用户账户对应的计算设备的投票,识别第二验证者节点集合;基于来自第二验证者节点集合的投票来获得对应于第三(稍后的)交易的共识;和/或经由附加交易修改一个或更多个附加共识参数。在一个或更多个实施例中,冷静期包括附加的时期。在一些实施例中,用于选择第二验证者节点集合的投票的数量基于由每个用户账户维护的数字资产。
在一些实施例中,分类账交易系统106执行用于利用并行同步的一系列行动。例如,该一系列行动可以包括下列行动:访问对应于分布式数字分类账交易网络的多个状态数据结构和多个交易数据结构,其中多个数据结构反映分布式数字分类账交易网络的周期状态,并且交易数据结构反映在周期状态之间的交易;以及通过利用多个计算设备并行地分析多个状态数据结构和多个交易数据结构来构建分布式数字分类账交易网络的历史表示。
在另外的实施例中,分类账交易系统106执行用于利用增量验证的一系列行动。例如,该一系列行动可以包括下列行动:在分布式数字分类账交易网络的计算机节点处下载经认证数据结构的第一部分和对应于该第一部分的第一证明;下载经认证数据结构的第二部分和对应于该第二部分的第二证明;以及在基于第一证明和第二证明验证了第一部分和第二部分时,在计算机节点处基于第一部分和第二部分生成经认证数据结构。
在一个或更多个实施例中,分类账交易系统106执行用于利用路径点来便于同步的一系列行动。例如,该一系列行动可以包括下列行动:识别分布式数字分类账交易网络的被提议的数据结构;确定指示分布式数字分类账交易网络的经认证数据结构的路径点;以及通过比较被提议的数据结构和路径点来验证被提议的数据结构。该一系列行动还可以包括下列行动:确定计算机节点上线到分布式数字分类账交易网络,并且其中,验证被提议的数据结构包括将计算机节点同步到分布式数字分类账交易网络的当前状态;和/或识别第二(例如,无效的)被提议的数据结构,并基于路径点来拒绝第二被提议的数据结构。在一些实施例中,路径点包括版本参考和被提议的数据结构的根值。在另外的实施例中,被提议的数据结构反映违反交易过程的一个或更多个交易,并且还包括基于路径点将被提议的数据结构提交给存储器。在一些实施例中,被提议的数据结构反映交易的创世区块。
此外,在一个或更多个实施例中,分类账交易系统106执行用于利用静态和动态分析来确定引用安全的一系列行动。例如,该一系列行动可以包括下列行动:识别包括用于修改分布式数字分类账交易网络的树数据结构的用户账户的交易脚本的交易;在字节码级别分析交易脚本以验证关于树数据结构的引用安全;以及在字节码级别执行交易脚本以修改树数据结构的用户账户。在一个或更多个实施例中,使用源代码或中间表示来编写交易脚本;以及在分析交易脚本以验证引用安全之前将交易脚本编译成字节码。在一些实施例中,交易脚本调用存储在树数据结构的一个或更多个用户账户处的一个或更多个模块。在另外的实施例中,分析交易脚本包括分析由存储在树数据结构的一个或更多个用户账户处的一个或更多个模块定义的字节码操作的序列。
如下面更详细讨论的,本公开的实施例可以包括或利用包括计算机硬件(例如一个或更多个处理器和系统存储器)的专用或通用计算机。本公开的范围内的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。具体地,本文描述的一个或更多个过程可以至少部分地被实现为体现在非暂时性计算机可读介质中并可由一个或更多个计算设备(例如,本文描述的任何媒体内容访问设备)执行的指令。通常,处理器(例如,微处理器)从非暂时性计算机可读介质(例如,存储器等)接收指令,并执行这些指令,从而执行包括本文描述的一个或更多个过程的一个或更多个过程。
计算机可读介质可以是通用或专用计算机系统可以访问的任何可用介质。存储计算机可执行指令的计算机可读介质是非暂时性计算机可读存储介质(设备)。承载计算机可执行指令的计算机可读介质为传输介质。因此,作为示例而非限制,本公开的实施例可以包括至少两种截然不同的计算机可读介质:非暂时性计算机可读存储介质(设备)和传输介质。
非暂时性计算机可读存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、(例如,基于RAM的)固态驱动器(“SSD”)、闪存、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储器、磁盘存储器或其他磁性存储设备、或者可以用于存储期望的以计算机可执行指令或数据结构的形式的程序代码方法且可以由通用或专用计算机进行访问的任何其他介质。
“网络”被定义为一个或更多个数据链路,其实现计算机系统和/或模块和/或其他电子设备之间的电子数据的传输。当通过网络或另一通信连接(硬接线、无线、或者硬接线或无线的组合)将信息转移或提供到计算机时,计算机适当地将连接视为传输介质。传输介质可以包括网络和/或数据链路,该网络和/或数据链路可以用于承载期望的以计算机可执行指令或数据结构的形式的程序代码方法且可以由通用或专用计算机进行访问。上述的组合也应当被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统部件时,以计算机可执行指令或数据结构的形式的程序代码方法可以从传输介质自动被传输到非暂时性计算机可读存储介质(设备)(或反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,“NIC”)内的RAM中,然后最终被转移到计算机系统RAM和/或计算机系统处的不太易失的计算机存储介质(设备)。因此,应当理解,非暂时性计算机可读存储介质(设备)可以被包括在同样(或者甚至主要)利用了传输介质的计算机系统部件中。
计算机可执行指令包括例如指令和数据,该指令和数据在由处理器执行时使通用计算机、专用计算机或专用处理设备执行某个功能或一组功能。在一些实施例中,在通用计算机上执行计算机可执行指令,以将通用计算机变成实现本公开的元素的专用计算机。例如,计算机可执行指令可以是二进制、中间格式指令(诸如汇编语言)或甚至源代码。尽管已经以特定于结构化特征和/或方法行为的语言描述了主题,但应理解的是,所附权利要求中定义的主题不必需局限于所描述的特征或以上所描述的行为。更确切地,所描述的特征和行为被公开作为实施权利要求的示例形式。
本领域中的技术人员将认识到,可以在具有许多类型的计算机系统配置(包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板电脑、寻呼机、路由器、交换机等)的网络计算环境中实践本公开。还可以在分布式系统环境中实践本公开,在分布式系统环境中,经网络链接(通过硬接线数据链路、无线数据链路或通过硬接线和无线数据链路的组合)的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可位于本地和远程存储器存储设备中。
本公开的实施例还可以在云计算环境中实现。在本说明书中,“云计算”被定义为一种模型,用于实现对可配置计算资源的共享池(shared pool)的按需网络访问。例如,可以在市场中采用云计算,以提供无处不在的且方便的对可配置计算资源的共享池的按需访问。可配置计算资源的共享池可以经由虚拟化来快速调配,并在管理工作量或服务提供商交互少的情况下进行释放,然后进行相应地扩展。
云计算模型可以由例如按需自助服务、广泛的网络访问、资源池化(resourcepooling)、快速的弹性、计费服务等的各种特征组成。云计算模型还可以展示各种服务模型,例如软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础架构即服务(“IaaS”)。云计算模型还可以使用不同的部署模型(例如私有云、社区云、公有云、混合云等等)进行部署。在本说明书中和在权利要求中,“云计算环境”是部署了云计算的环境。
图50示出了可以被配置成执行上面描述的一个或更多个过程的示例计算设备5000的框图。将认识到,一个或更多个计算设备(例如计算设备5000)可以表示上面描述的计算设备(例如客户端设备112a-112n和计算机节点114)。在一个或更多个实施例中,计算设备5000可以是移动设备(例如移动电话、智能手机、PDA、平板电脑、膝上型计算机、相机、跟踪器、手表、可穿戴设备等)。在一些实施例中,计算设备5000可以是非移动设备(例如台式计算机或另一种类型的客户端设备)。此外,计算设备5000可以是包括基于云的处理和存储能力的服务器设备。
如图50所示,计算设备5000可以包括可以通过通信基础设施(例如总线5012)通信地耦合的一个或更多个处理器5002、存储器5004、存储设备5006、输入/输出接口5008(或“I/O接口5008”)和通信接口5010。虽然图50中示出了计算设备5000,但是图50中示出的部件并不旨在进行限制。在其他实施例中可以使用附加的或替代的部件。此外,在某些实施例中,计算设备5000包括比图50所示的那些部件更少的部件。现在将更加详细地描述图50所示的计算设备5000的部件。
在特定实施例中,处理器5002包括用于执行指令(例如构成计算机程序的那些指令)的硬件。作为示例而不是作为限制,为了执行指令,处理器5002可以从内部寄存器、内部高速缓存、存储器5004或存储设备5006检索(或取出)指令,以及将它们解码并执行它们。
计算设备5000包括耦合到处理器5002的存储器5004。存储器5004可以用于存储数据、元数据和由处理器执行的程序。存储器5004可以包括易失性和非易失性存储器(例如随机存取存储器(“RAM”)、只读存储器(“ROM”)、固态盘(“SSD”)、闪存、相变存储器(“PCM”)或其他类型的数据存储装置)中的一个或更多个。存储器5004可以是内部存储器或分布式存储器。
计算设备5000包括存储设备5006,存储设备5006包括用于存储数据或指令的存储装置。作为示例而不是作为限制,存储设备5006可以包括上面所述的非暂时性存储介质。存储设备5006可以包括硬盘驱动器(HDD)、闪存、通用串行总线(USB)驱动器、或这些或其他存储设备的组合。
如所示,计算设备5000包括一个或更多个I/O接口5008,其被提供来允许用户向计算设备5000提供输入(例如用户划动(user strokes))、从计算设备5000接收输出以及以其他方式向计算设备5000和从计算设备5000转移数据。这些I/O接口5008可以包括鼠标、小键盘或键盘、触摸屏、相机、光学扫描仪、网络接口、调制解调器、其他已知的I/O设备或这样的I/O接口5008的组合。可以用触笔(stylus)或手指激活触摸屏。
I/O接口5008可以包括用于向用户呈现输出的一个或更多个设备,包括但不限于图形引擎、显示器(例如显示屏)、一个或更多个输出驱动器(例如显示驱动器)、一个或更多个音频扬声器以及一个或更多个音频驱动器。在某些实施例中,I/O接口5008被配置为向显示器提供图形数据用于呈现给用户。图形数据可以表示一个或更多个图形用户界面和/或可以服务于特定实现的任何其他图形内容。
计算设备5000还可以包括通信接口5010。通信接口5010可以包括硬件、软件或两者。通信接口5010提供用于在计算设备与一个或更多个其他计算设备或一个或更多个网络之间的通信(例如,基于包(packet-based)的通信)的一个或更多个接口。作为示例而不是作为限制,通信接口5010可以包括用于与以太网或其他基于有线的网络进行通信的网络接口控制器(NIC)或网络适配器,或用于与无线网络(例如WI-FI)进行通信的无线NIC(WNIC)或无线适配器。计算设备5000还可以包括总线5012。总线5012可以包括将计算设备5000的部件连接到彼此的硬件、软件或两者。
在前述说明书中,参考本发明的特定示例实施例描述了本发明。参考本文讨论的细节描述了本发明的各种实施例和方面,并且附图说明了各种实施例。上面的描述和附图是对本发明的说明,不应被理解为对本发明进行限制。描述了许多具体细节以提供对本发明的各种实施例的透彻理解。
在不脱离本发明的精神或基本特征的情况下,本发明可以以其他特定形式体现。所描述的实施例在所有方面都应被认为仅仅是说明性的,而不是限制性的。例如,本文描述的方法可以用更少或更多的步骤/行动来执行,或者这些步骤/行动可以以不同的顺序来执行。另外,本文描述的步骤/行动可以重复,或与彼此并行地或与相同或相似步骤/行动的不同实例并行地被执行。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同含义和范围内的所有变化都将被包含在它们的范围内。
Claims (120)
1.一种方法,包括:
生成分布式数字分类账交易网络的经认证数据结构,其中,所述经认证数据结构包括数据树,所述数据树包括具有映射到数据库中的条目的数据表示的节点;
通过下列操作来执行从所述经认证数据结构中懒惰删除数据:
从所述数据树的节点访问数据表示以确定与节点相关联的逐出日期的到期;以及
响应于确定所述逐出日期的到期,从所述数据库中删除对应于所述节点的一个或更多个条目,同时将所述数据表示保持在所述数据树内。
2.根据权利要求1所述的方法,还包括从所述数据库中删除对应于所述节点的所述一个或更多个条目,而没有在所述分布式数字分类账交易网络上的用于删除所述一个或更多个条目的交易事件请求。
3.根据权利要求1所述的方法,还包括在从所述数据库中删除对应于所述节点的所述一个或更多个条目之前:
从客户端设备接收请求,所述请求要求使用所述一个或更多个条目;
响应于从所述客户端设备接收到所述请求,从所述数据树的所述节点访问所述数据表示以确定所述逐出日期的到期;以及
处理所述请求,就好像所述一个或更多个条目已经被删除一样。
4.根据权利要求1所述的方法,其中,所述数据库包括状态数据库,所述一个或更多个条目包括对应于用户账户的账户数据,所述数据树包括状态树,并且所述节点包括与所述用户账户的所述账户数据对应的账户状态表示。
5.根据权利要求4所述的方法,还包括响应于接收到引用所述用户账户的交易:
从所述状态树访问对应于所述用户账户的所述账户状态表示以确定所述逐出日期的到期;以及
处理所述交易,就好像所述用户账户已经到期一样。
6.根据权利要求4所述的方法,还包括:
识别与所述用户账户相关联的账户恢复请求,其中,所述账户恢复请求包括所述用户账户的被提议的账户数据;以及
基于在所述状态树内的所述账户状态表示来验证所述用户账户的所述被提议的账户数据。
7.根据权利要求6所述的方法,还包括基于验证所述用户账户的所述被提议的账户数据,在所述分布式数字分类账交易网络的所述状态数据库内重新缓存与所述用户账户相关联的所述被提议的账户数据。
8.根据权利要求7所述的方法,还包括基于重新缓存与所述用户账户相关联的所述被提议的账户数据,更新与所述节点相关联的所述逐出日期。
9.根据权利要求4所述的方法,还包括通过下列操作来生成所述账户状态表示:
将散列函数应用于所述状态数据库中的对应于所述用户账户的所述账户数据以生成对应于所述用户账户的所述账户数据的散列值;以及
将所述账户数据的所述散列值与和所述用户账户相关联的所述逐出日期组合以生成对应于所述用户账户的所述账户状态表示。
10.根据权利要求4所述的方法,还包括基于下列项中的至少一项来确定所述逐出日期的到期:租用存放金额、最后一次用户账户访问的时间、从所述用户账户转移数字资产的交易的时间或者将数字资产转移到所述用户账户的交易的时间。
11.一种非暂时性计算机可读介质,其上存储有指令,所述指令在由至少一个处理器执行时使计算设备执行根据权利要求1到10中的任一项所述的方法或者使所述计算设备执行:
生成分布式数字分类账交易网络的经认证数据结构,其中,所述经认证数据结构包括数据树,所述数据树包括具有映射到数据库中的条目的数据表示的节点;
通过下列操作来执行从所述经认证数据结构中懒惰删除数据:
从所述数据树的节点访问数据表示以确定与节点相关联的逐出日期的到期;以及
响应于确定所述逐出日期的到期,从所述数据库中删除对应于所述节点的一个或更多个条目,同时将所述数据表示保持在所述数据树内。
12.根据权利要求11所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:从所述数据库中删除对应于所述节点的所述一个或更多个条目,而没有在所述分布式数字分类账交易网络上的用于删除所述一个或更多个条目的交易事件请求。
13.根据权利要求11所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
在从所述数据库中删除对应于所述节点的所述一个或更多个条目之前:
从客户端设备接收请求,所述请求要求使用所述一个或更多个条目;
响应于从所述客户端设备接收到所述请求,从所述数据树的所述节点访问所述数据表示以确定所述逐出日期的到期;以及
处理所述请求,就好像所述一个或更多个条目已经被删除一样。
14.根据权利要求11所述的非暂时性计算机可读介质,其中,所述数据库包括状态数据库,所述一个或更多个条目包括对应于用户账户的账户数据,所述数据树包括状态树,并且所述节点包括与所述用户账户的所述账户数据对应的账户状态表示。
15.根据权利要求14所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
识别与所述用户账户相关联的账户恢复请求,其中,所述账户恢复请求包括所述用户账户的被提议的账户数据;以及
基于在所述状态树内的所述账户状态表示来验证所述用户账户的所述被提议的账户数据;
基于验证所述用户账户的所述被提议的账户数据,在所述分布式数字分类账交易网络的所述状态数据库内重新缓存与所述用户账户相关联的所述被提议的账户数据;以及
基于重新缓存与所述用户账户相关联的所述被提议的账户数据,更新与所述节点相关联的所述逐出日期。
16.根据权利要求14所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备通过下列操作来生成所述账户状态表示:
将散列函数应用于所述状态数据库中的对应于所述用户账户的所述账户数据以生成对应于所述用户账户的所述账户数据的散列值;以及
将所述账户数据的所述散列值与和所述用户账户相关联的所述逐出日期组合以生成对应于所述用户账户的所述账户状态表示。
17.一种系统,包括:
至少一个处理器;以及
至少一个非暂时性计算机可读介质,其上存储有指令,所述指令在由所述至少一个处理器执行时使所述系统执行根据权利要求1到10中的任一项所述的方法或者使所述系统执行:
生成分布式数字分类账交易网络的经认证数据结构,其中,所述经认证数据结构包括数据树,所述数据树包括具有映射到数据库中的条目的数据表示的节点;
通过下列操作来执行从所述经认证数据结构中懒惰删除数据:
从所述数据树的节点访问数据表示以确定与节点相关联的逐出日期的到期;以及
响应于确定所述逐出日期的到期,从所述数据库中删除对应于所述节点的一个或更多个条目,同时将所述数据表示保持在所述数据树内。
18.根据权利要求17所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统:从所述数据库中删除对应于所述节点的所述一个或更多个条目,而没有在所述分布式数字分类账交易网络上的用于删除所述一个或更多个条目的交易事件请求。
19.根据权利要求11所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统:
在从所述数据库中删除对应于所述节点的所述一个或更多个条目之前:
从客户端设备接收请求,所述请求要求使用所述一个或更多个条目;
响应于从所述客户端设备接收到所述请求,从所述数据树的所述节点访问所述数据表示以确定所述逐出日期的到期;以及
处理所述请求,就好像所述一个或更多个条目已经被删除一样。
20.根据权利要求17所述的系统,
其中,所述数据库包括状态数据库,所述一个或更多个条目包括对应于用户账户的账户数据,所述数据树包括状态树,并且所述节点包括与所述用户账户的所述账户数据对应的账户状态表示;以及
所述系统还包括指令,所述指令在由所述至少一个处理器执行时使所述系统:
识别与所述用户账户相关联的账户恢复请求,其中,所述账户恢复请求包括所述用户账户的被提议的账户数据;以及
基于在所述状态树内的所述账户状态表示来验证所述用户账户的所述被提议的账户数据;
基于验证所述用户账户的所述被提议的账户数据,在所述分布式数字分类账交易网络的所述状态数据库内重新缓存与所述用户账户相关联的所述被提议的账户数据;以及
基于重新缓存与所述用户账户相关联的所述被提议的账户数据,更新与所述节点相关联的所述逐出日期。
21.一种方法,包括:
通过下列操作生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求:
识别对应于所述第二用户账户的主公开地址标识符、对应于所述第二用户账户的子地址标识符和公开加密密钥;以及
通过将所述公开加密密钥应用于所述子地址标识符来生成对所述交易唯一的加密子地址;以及
使用所述主公开地址标识符和对所述交易唯一的所述加密子地址来提交对在所述第一用户账户和所述第二用户账户之间的所述交易的所述请求,用于经由所述分布式数字分类账交易网络进行执行。
22.根据权利要求21所述的方法,其中,生成对所述交易唯一的所述加密子地址包括:
将随机数值添加到所述子地址标识符;以及
将所述公开加密密钥应用于具有所述随机数值的所述子地址标识符。
23.根据权利要求21所述的方法,其中,识别对应于所述第二用户账户的所述主公开地址标识符、对应于所述第二用户账户的所述子地址标识符和所述公开加密密钥包括扫描对所述主公开地址标识符、所述子地址标识符和所述公开加密密钥编码的数字视觉代码。
24.根据权利要求21所述的方法,还包括基于对应于所述第二用户账户的用户的电子邮件地址来识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥。
25.根据权利要求24所述的方法,其中,识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥包括:
从对应于所述第二用户账户的所述用户的所述电子邮件地址识别域名和个人电子邮件标识符;
基于来自所述电子邮件地址的所述域名来确定所述主公开地址标识符;以及
基于来自所述电子邮件地址的所述个人电子邮件标识符来确定所述子地址标识符。
26.根据权利要求25所述的方法,其中,基于所述域名来确定所述主公开地址标识符包括访问对应于所述域名的DNS记录以识别以下项中的至少一项:所述主公开地址标识符或所述公开加密密钥。
27.根据权利要求26所述的方法,还包括利用DNSSEC来验证通过访问对应于所述域名的所述DNS记录而识别的所述主公开地址标识符或所述公开加密密钥。
28.根据权利要求26所述的方法,其中,生成所述加密子地址包括将通过访问所述DNS记录而确定的所述公开加密密钥应用于基于所述个人电子邮件标识符而确定的所述子地址标识符。
29.根据权利要求25所述的方法,其中,识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥包括响应于将来自所述电子邮件地址的所述个人电子邮件标识符提供到对应于所述域名的远程服务器,从对应于所述域名的所述远程服务器接收所述公开加密密钥。
30.根据权利要求21所述的方法,还包括基于下列项中的至少一项来识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥:对应于所述第二用户账户的用户的电话号码或所述用户的用户ID。
31.一种非暂时性计算机可读介质,其上存储有指令,所述指令在由至少一个处理器执行时使计算设备执行根据权利要求21到30中的任一项所述的方法或使所述计算设备执行:
通过下列操作生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求:
识别对应于所述第二用户账户的主公开地址标识符、对应于所述第二用户账户的子地址标识符和公开加密密钥;以及
通过将所述公开加密密钥应用于所述子地址标识符来生成对所述交易唯一的加密子地址;以及
使用所述主公开地址标识符和对所述交易唯一的所述加密子地址来提交对在所述第一用户账户和所述第二用户账户之间的所述交易的所述请求,用于经由所述分布式数字分类账交易网络进行执行。
32.根据权利要求31所述的非暂时性计算机可读介质,其中,生成对所述交易唯一的所述加密子地址包括:
将随机数值添加到所述子地址标识符;以及
将所述公开加密密钥应用于具有所述随机数值的所述子地址标识符。
33.根据权利要求31所述的非暂时性计算机可读介质,其中,识别对应于所述第二用户账户的所述主公开地址标识符、对应于所述第二用户账户的所述子地址标识符和所述公开加密密钥包括扫描对所述主公开地址标识符、所述子地址标识符和所述公开加密密钥编码的数字视觉代码。
34.根据权利要求31所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备基于对应于所述第二用户账户的用户的电子邮件地址来识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥;并且
其中,识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥包括:
从对应于所述第二用户账户的所述用户的所述电子邮件地址识别域名和个人电子邮件标识符;
基于来自所述电子邮件地址的所述域名来确定所述主公开地址标识符;以及
基于来自所述电子邮件地址的所述个人电子邮件标识符来确定所述子地址标识符。
35.根据权利要求34所述的非暂时性计算机可读介质,其中:
基于所述域名来确定所述主公开地址标识符包括访问对应于所述域名的DNS记录以识别所述主公开地址标识符或所述公开加密密钥中的至少一个;以及
生成所述加密子地址包括将通过访问所述DNS记录而确定的所述公开加密密钥应用于基于所述个人电子邮件标识符而确定的所述子地址标识符。
36.根据权利要求34所述的非暂时性计算机可读介质,其中,识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥包括响应于将来自所述电子邮件地址的所述个人电子邮件标识符提供到对应于所述域名的远程服务器,从对应于所述域名的所述远程服务器接收所述公开加密密钥。
37.一种系统,包括:
至少一个处理器;以及
至少一个非暂时性计算机可读介质,其上存储有指令,所述指令在由所述至少一个处理器执行时使所述系统执行根据权利要求21到30中的任一项所述的方法或使所述系统执行:
通过下列操作生成对在分布式数字分类账交易网络的第一用户账户和第二用户账户之间的交易的请求:
识别对应于所述第二用户账户的主公开地址标识符、对应于所述第二用户账户的子地址标识符和公开加密密钥;以及
通过将所述公开加密密钥应用于所述子地址标识符来生成对所述交易唯一的加密子地址;以及
使用所述主公开地址标识符和对所述交易唯一的所述加密子地址来提交对在所述第一用户账户和所述第二用户账户之间的所述交易的所述请求,用于经由所述分布式数字分类账交易网络进行执行。
38.根据权利要求37所述的系统,其中,识别对应于所述第二用户账户的所述主公开地址标识符、对应于所述第二用户账户的所述子地址标识符和所述公开加密密钥包括扫描对所述主公开地址标识符、所述子地址标识符和所述公开加密密钥编码的数字视觉代码。
39.根据权利要求37所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统基于对应于所述第二用户账户的用户的电子邮件地址来识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥。
40.根据权利要求37所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统基于对应于所述第二用户账户的用户的电子邮件地址来识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥;并且
其中,识别所述主公开地址标识符、所述子地址标识符和所述公开加密密钥包括:
从对应于所述第二用户账户的所述用户的所述电子邮件地址识别域名和个人电子邮件标识符;
基于来自所述电子邮件地址的所述域名来确定所述主公开地址标识符;以及
基于来自所述电子邮件地址的所述个人电子邮件标识符来确定所述子地址标识符。
41.一种方法,包括:
确定分布式数字分类账交易网络的第一状态数据结构,其中,所述第一状态数据结构表示所述分布式数字分类账交易网络的多个用户账户的账户状态;
识别包括与所述多个用户账户中的用户账户相关联的交易的多个交易;
关于所述第一状态数据结构并行地执行所述交易的先予执行,以确定多个交易结果和所述交易对于所述用户账户的依赖性;以及
通过基于所述交易的所述依赖性应用所述多个交易结果来将所述第一状态数据结构修改为第二状态数据结构。
42.根据权利要求41所述的方法,其中,所述第二状态数据结构等效于针对所述第一状态数据结构串行地执行所述多个交易。
43.根据权利要求41所述的方法,其中,所述交易包括第一交易和第二交易,并且执行所述先予执行包括:
确定反映所述第一交易关于所述第一状态数据结构的应用的第一交易结果;
确定反映所述第二交易关于所述第一状态数据结构的应用的第二交易结果;以及
确定所述第二交易不依赖于所述第一交易并且所述第一交易不依赖于所述第二交易。
44.根据权利要求43所述的方法,还包括基于确定所述第二交易不依赖于所述第一交易并且所述第一交易不依赖于所述第二交易,关于所述第一状态数据结构应用所述第一交易结果和所述第二交易结果。
45.根据权利要求43所述的方法,还包括通过将所述第一交易结果应用于所述第一状态数据结构来生成中间状态数据结构。
46.根据权利要求45所述的方法,其中,所述交易包括第三交易,并且执行所述先予执行包括:
确定反映所述第三交易关于所述第一状态数据结构的应用的第三交易结果;以及
确定所述第三交易依赖于所述第一交易。
47.根据权利要求46所述的方法,还包括响应于确定所述第三交易依赖于所述第一交易,针对所述中间状态数据结构执行所述第三交易以生成所述第二状态数据结构。
48.根据权利要求46所述的方法,其中,确定所述第三交易依赖于所述第一交易包括确定所述第三交易和所述第一交易与来自所述用户账户中的同一用户账户相关联。
49.根据权利要求41所述的方法,还包括:
从验证者节点接收所述多个交易的依赖性指示符;以及
基于所述依赖性指示符识别所述多个交易中的第一子集和所述多个交易中的第二子集,并且
其中,执行所述交易的所述先予执行包括基于所述依赖性指示符执行所述多个交易中的所述第一子集的先予执行。
50.根据权利要求49所述的方法,还包括:
基于从执行所述多个交易中的所述第一子集的所述先予执行获得的交易结果来生成中间状态数据结构;以及
通过关于所述中间状态数据结构执行所述多个交易中的所述第二子集来生成所述第二状态数据结构。
51.一种非暂时性计算机可读介质,其上存储有指令,所述指令在由至少一个处理器执行时使计算设备执行根据权利要求41到50中的任一项所述的方法或使所述计算设备执行:
确定分布式数字分类账交易网络的第一状态数据结构,其中,所述第一状态数据结构表示所述分布式数字分类账交易网络的多个用户账户的账户状态;
识别包括与所述多个用户账户中的用户账户相关联的交易的多个交易;
关于所述第一状态数据结构并行地执行所述交易的先予执行,以确定多个交易结果和所述交易对于所述用户账户的依赖性;以及
通过基于所述交易的所述依赖性应用所述多个交易结果来将所述第一状态数据结构修改为第二状态数据结构。
52.根据权利要求51所述的非暂时性计算机可读介质,其中,所述第二状态数据结构等效于针对所述第一状态数据结构串行地执行所述多个交易。
53.根据权利要求51所述的非暂时性计算机可读介质,其中:
所述交易包括第一交易和第二交易;以及
所述指令在由所述至少一个处理器执行时使所述计算设备通过下列操作来执行所述先予执行:
确定反映所述第一交易关于所述第一状态数据结构的应用的第一交易结果;
确定反映所述第二交易关于所述第一状态数据结构的应用的第二交易结果;以及
确定所述第二交易不依赖于所述第一交易并且所述第一交易不依赖于所述第二交易。
54.根据权利要求53所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备基于确定所述第二交易不依赖于所述第一交易并且所述第一交易不依赖于所述第二交易,关于所述第一状态数据结构应用所述第一交易结果和所述第二交易结果。
55.根据权利要求53所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备通过将所述第一交易结果应用于所述第一状态数据结构来生成中间状态数据结构。
56.根据权利要求55所述的非暂时性计算机可读介质,其中:
所述交易包括第三交易;以及
所述指令在由所述至少一个处理器执行时使所述计算设备通过下列操作来执行所述先予执行:
确定反映所述第三交易关于所述第一状态数据结构的应用的第三交易结果;以及
确定所述第三交易依赖于所述第一交易。
57.一种系统,包括:
至少一个处理器;以及
至少一个非暂时性计算机可读介质,其上存储有指令,所述指令在由所述至少一个处理器执行时使所述系统执行根据权利要求41到50中的任一项所述的方法或使所述系统执行:
确定分布式数字分类账交易网络的第一状态数据结构,其中,所述第一状态数据结构表示所述分布式数字分类账交易网络的多个用户账户的账户状态;
识别包括与所述多个用户账户中的用户账户相关联的交易的多个交易;
关于所述第一状态数据结构并行地执行所述交易的先予执行,以确定多个交易结果和所述交易对于所述用户账户的依赖性;以及
通过基于所述交易的所述依赖性应用所述多个交易结果来将所述第一状态数据结构修改为第二状态数据结构。
58.根据权利要求57所述的系统,其中,所述第二状态数据结构等效于针对所述第一状态数据结构串行地执行所述多个交易。
59.根据权利要求57所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统:
从验证者节点接收所述多个交易的依赖性指示符;以及
基于所述依赖性指示符识别所述多个交易中的第一子集和所述多个交易中的第二子集,并且
其中,所述指令在由所述至少一个处理器执行时使所述计算设备通过基于所述依赖性指示符执行所述多个交易中的所述第一子集的先予执行来执行所述交易的所述先予执行。
60.根据权利要求59所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统:
基于从执行所述多个交易中的所述第一子集的所述先予执行获得的交易结果来生成中间状态数据结构;以及
通过关于所述中间状态数据结构执行所述多个交易中的所述第二子集来生成所述第二状态数据结构。
61.一种方法,包括:
生成分布式数字分类账交易网络的状态数据结构,其中,所述状态数据结构包括对应于用户账户的账户数据、对应于所述用户账户的交易事件计数器以及所述用户账户在所述状态数据结构内的地址;
响应于执行包括与所述分布式数字分类账交易网络的所述用户账户对应的事件的交易:
修改在所述状态数据结构内的所述用户账户的所述交易事件计数器的计数值;以及
在事件数据结构内生成交易事件,所述事件数据结构内的所述交易事件反映所述地址、所述用户账户的所述交易事件计数器的计数值以及所述事件的细节。
62.根据权利要求61所述的方法,其中,所述状态数据结构包括对应于所述用户账户的附加交易事件计数器,所述交易事件计数器对应于第一交易事件类型,并且所述附加交易事件计数器对应于第二交易事件类型。
63.根据权利要求62所述的方法,其中,修改所述用户账户的所述交易事件计数器的计数值包括:
确定所述交易事件对应于所述第一交易事件类型;以及
基于确定所述交易事件对应于所述第一交易事件类型来修改所述交易事件计数器的计数值。
64.根据权利要求62所述的方法,其中,所述交易包括所述第二交易事件类型的附加事件,并且所述方法还包括:
修改在所述状态数据结构内的所述用户账户的所述附加交易事件计数器的附加计数值;以及
在所述事件数据结构内生成附加交易事件,所述事件数据结构内的所述附加交易事件反映所述地址、所述用户账户的所述附加交易事件计数器的附加计数值以及所述附加事件的细节。
65.根据权利要求61所述的方法,其中,所述事件数据结构包括反映响应于所述交易的执行而生成的交易事件的事件树。
66.根据权利要求65所述的方法,还包括:
确定反映对应于所述交易的所述交易事件的所述事件树的根值;以及
将所述事件树的所述根值存储在所述分布式数字分类账交易网络的交易树中。
67.根据权利要求61所述的方法,还包括:
从客户端设备接收事件计数请求,所述事件计数请求包括对所述交易事件计数器的引用;以及
响应于从所述客户端设备接收到所述事件计数请求,将来自所述状态数据结构的所述交易事件计数器的已修改的计数值提供到所述客户端设备。
68.根据权利要求67所述的方法,其中,对所述交易事件计数器的所述引用包括反映所述地址和所述交易事件计数器两者的访问路径。
69.根据权利要求61所述的方法,还包括:
从客户端设备接收交易事件细节请求,所述交易事件细节请求包括所述交易事件计数器的计数值和包括所述地址和所述交易事件计数器的访问路径;以及
响应于接收到所述交易事件细节请求,将来自所述事件数据结构的所述事件的细节连同对应于所述交易事件的Merkle证明一起提供到所述客户端设备。
70.一种非暂时性计算机可读介质,其上存储有指令,所述指令在由至少一个处理器执行时使计算设备执行根据权利要求61到70中的任一项所述的方法或使所述计算设备执行:
生成分布式数字分类账交易网络的状态数据结构,其中,所述状态数据结构包括对应于用户账户的账户数据、对应于所述用户账户的交易事件计数器以及所述用户账户在所述状态数据结构内的地址;
响应于执行包括与所述分布式数字分类账交易网络的所述用户账户对应的事件的交易:
修改在所述状态数据结构内的所述用户账户的所述交易事件计数器的计数值;以及
在事件数据结构内生成交易事件,所述事件数据结构内的所述交易事件反映所述地址、所述用户账户的所述交易事件计数器的计数值以及所述事件的细节。
71.根据权利要求70所述的非暂时性计算机可读介质,其中,所述状态数据结构包括对应于所述用户账户的附加交易事件计数器,所述交易事件计数器对应于第一交易事件类型,并且所述附加交易事件计数器对应于第二交易事件类型。
72.根据权利要求71所述的非暂时性计算机可读介质,其中,所述指令在由所述至少一个处理器执行时使所述计算设备通过下列操作修改所述用户账户的所述交易事件计数器的计数值:
确定所述交易事件对应于所述第一交易事件类型;以及
基于确定所述交易事件对应于所述第一交易事件类型来修改所述交易事件计数器的计数值。
73.根据权利要求71所述的非暂时性计算机可读介质,其中,所述交易包括所述第二交易事件类型的附加事件,并且所述非暂时性计算机可读介质还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
修改在所述状态数据结构内的所述用户账户的所述附加交易事件计数器的附加计数值;以及
在所述事件数据结构内生成附加交易事件,所述事件数据结构内的所述附加交易事件反映所述地址、所述用户账户的所述附加交易事件计数器的附加计数值以及所述附加事件的细节。
74.根据权利要求70所述的非暂时性计算机可读介质,其中,所述事件数据结构包括反映响应于所述交易的所述执行而生成的交易事件的事件树,并且所述非暂时性计算机可读介质还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
确定反映对应于所述交易的所述交易事件的所述事件树的根值;以及
将所述事件树的所述根值存储在所述分布式数字分类账交易网络的交易树中。
75.根据权利要求70所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
从客户端设备接收事件计数请求,所述事件计数请求包括对所述交易事件计数器的引用;以及
响应于从所述客户端设备接收到所述事件计数请求,将来自所述状态数据结构的所述交易事件计数器的已修改的计数值提供到所述客户端设备。
76.根据权利要求70所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
从客户端设备接收交易事件细节请求,所述交易事件细节请求包括所述交易事件计数器的计数值和包括所述地址和所述交易事件计数器的访问路径;以及
响应于接收到所述交易事件细节请求,将来自所述事件数据结构的所述事件的细节连同对应于所述交易事件的Merkle证明一起提供到所述客户端设备。
77.一种系统,包括:
至少一个处理器;以及
至少一个暂时性计算机可读介质,其上存储有指令,所述指令在由所述至少一个处理器执行时使所述系统执行根据权利要求61到70中的任一项所述的方法或使所述系统执行:
生成分布式数字分类账交易网络的状态数据结构,其中,所述状态数据结构包括对应于用户账户的账户数据、对应于所述用户账户的交易事件计数器以及所述用户账户在所述状态数据结构内的地址;
响应于执行包括与所述分布式数字分类账交易网络的所述用户账户对应的事件的交易:
修改在所述状态数据结构内的所述用户账户的所述交易事件计数器的计数值;以及
在事件数据结构内生成交易事件,所述事件数据结构内的所述交易事件反映所述地址、所述用户账户的所述交易事件计数器的计数值以及所述事件的细节。
78.根据权利要求77所述的系统,
其中,所述状态数据结构包括对应于所述用户账户的附加交易事件计数器,所述交易事件计数器对应于第一交易事件类型,并且所述附加交易事件计数器对应于第二交易事件类型;并且
其中,所述指令在由所述至少一个处理器执行时使所述系统通过下列操作修改所述用户账户的所述交易事件计数器的计数值:
确定所述交易事件对应于所述第一交易事件类型;以及
基于确定所述交易事件对应于所述第一交易事件类型来修改所述交易事件计数器的计数值。
79.根据权利要求77所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统:
从客户端设备接收事件计数请求,所述事件计数请求包括对所述交易事件计数器的引用;以及
响应于从所述客户端设备接收到所述事件计数请求,将来自所述状态数据结构的所述交易事件计数器的已修改的计数值提供到所述客户端设备。
80.根据权利要求77所述的系统,还包括指令,所述指令在由所述至少一个处理器执行时使所述系统:
从客户端设备接收交易事件细节请求,所述交易事件细节请求包括所述交易事件计数器的计数值和包括所述地址和所述交易事件计数器的访问路径;以及
响应于接收到所述交易事件细节请求,将来自所述事件数据结构的所述事件的细节连同对应于所述交易事件的Merkle证明一起提供到所述客户端设备。
81.一种方法,包括:
监控与存储在分布式数字分类账交易网络的计算机节点处的状态数据结构的用户账户对应的交易事件计数器;
传输对来自存储在所述分布式数字分类账交易网络的一个或更多个计算机节点处的事件数据结构中的交易事件数据的交易事件细节请求;以及
响应于传输所述交易事件细节请求,经由所述一个或更多个计算机节点接收与从所述交易事件计数器确定的计数值对应的交易事件数据。
82.根据权利要求81所述的方法,
还包括基于监控所述交易事件计数器来确定所述交易事件计数器的计数值,并且
其中,所述交易事件细节请求包括所述交易事件计数器的计数值和与所述状态数据结构内的所述用户账户对应的所述交易事件计数器的访问路径。
83.根据权利要求81所述的方法,其中,监控所述交易事件计数器包括在所述计算机节点处轮询所述交易事件计数器,并且所述方法还包括:
在第一时间确定所述交易事件计数器的计数值;以及
在第二时间确定所述交易事件计数器的附加计数值。
84.根据权利要求83所述的方法,还包括通过确定所述交易事件计数器在所述第一时间的计数值和所述交易事件计数器在所述第二时间的附加计数值是相同的计数值,验证在所述第一时间和所述第二时间之间不存在对应于所述用户账户的事件。
85.根据权利要求83所述的方法,还包括基于比较所述交易事件计数器在所述第一时间的计数值和所述交易事件计数器在所述第二时间的附加计数值来确定指示经由所述分布式数字分类账交易网络已经发生了对应于所述用户账户的事件序列的计数值序列。
86.根据权利要求85所述的方法,其中:
传输所述交易事件细节请求包括传输对所述事件序列的交易事件序列请求;以及
接收所述交易事件数据包括接收对应于多个事件的交易事件数据集合。
87.根据权利要求86所述的方法,还包括将对应于所述多个事件的所述交易事件数据集合与所述计数值序列进行比较以确定:
所述多个事件是所述事件序列的完整集合;或者
所述多个事件集合是所述事件序列的不完整集合。
88.根据权利要求81所述的方法,其中:
所述事件数据结构包括事件Merkle树,并且所述状态数据结构包括状态Merkle树;以及
接收所述交易事件数据包括响应于传输所述交易事件细节请求而从所述分布式数字分类账交易网络的所述计算机节点接收Merkle证明。
89.根据权利要求81所述的方法,其中,监控所述交易事件计数器和传输所述交易事件细节请求是到所述计算机节点的组合请求的一部分。
90.一种非暂时性计算机可读介质,其上存储有指令,所述指令在由至少一个处理器执行时使计算设备执行根据权利要求81到89中的任一项所述的方法或使所述计算设备执行:
监控与存储在分布式数字分类账交易网络的计算机节点处的状态数据结构的用户账户对应的交易事件计数器;
传输对来自存储在所述分布式数字分类账交易网络的一个或更多个计算机节点处的事件数据结构中的交易事件数据的交易事件细节请求;以及
响应于传输所述交易事件细节请求,经由所述一个或更多个计算机节点接收与从所述交易事件计数器确定的计数值对应的交易事件数据。
91.根据权利要求90所述的非暂时性计算机可读介质,
还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备确定所述交易事件计数器的计数值,并且
其中,所述交易事件细节请求包括所述交易事件计数器的计数值和与所述状态数据结构内的所述用户账户对应的所述交易事件计数器的访问路径。
92.根据权利要求90所述的非暂时性计算机可读介质,其中,所述指令在由所述至少一个处理器执行时使所述计算设备通过在所述计算机节点处轮询所述交易事件计数器来监控所述交易事件计数器,并且所述非暂时性计算机可读介质还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
在第一时间确定所述交易事件计数器的计数值;以及
在第二时间确定所述交易事件计数器的附加计数值。
93.根据权利要求92所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备通过确定所述交易事件计数器在所述第一时间的计数值和所述交易事件计数器在所述第二时间的附加计数值是相同的计数值,验证在所述第一时间和所述第二时间之间不存在对应于所述用户账户的事件。
94.根据权利要求92所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备基于比较所述交易事件计数器在所述第一时间的计数值和所述交易事件计数器在所述第二时间的附加计数值来确定指示经由所述分布式数字分类账交易网络已经发生了对应于所述用户账户的事件序列的计数值序列。
95.根据权利要求94所述的非暂时性计算机可读介质,
其中,所述指令在由所述至少一个处理器执行时使所述计算设备:
通过传输对所述事件序列的交易事件序列请求来传输所述交易事件细节请求;以及
通过接收对应于多个事件的交易事件数据集合来接收所述交易事件数据;以及
所述非暂时性计算机可读介质还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备将对应于所述多个事件的所述交易事件数据集合与所述计数值序列进行比较以确定:
所述多个事件是所述事件序列的完整集合;或者
所述多个事件集合是所述事件序列的不完整集合。
96.根据权利要求90所述的非暂时性计算机可读介质,其中,所述指令在由所述至少一个处理器执行时使所述计算设备监控所述交易事件计数器和传输所述交易事件细节请求,作为到所述计算机节点的组合请求的一部分。
97.一种系统,包括:
至少一个处理器;以及
至少一个非暂时性计算机可读介质,其上存储有指令,所述指令在由所述至少一个处理器执行时使所述系统执行根据权利要求81到89中的任一项所述的方法或使所述系统执行:
监控与存储在分布式数字分类账交易网络的计算机节点处的状态数据结构的用户账户对应的交易事件计数器;
传输对来自存储在所述分布式数字分类账交易网络的一个或更多个计算机节点处的事件数据结构中的交易事件数据的交易事件细节请求;以及
响应于传输所述交易事件细节请求,经由所述一个或更多个计算机节点接收与从所述交易事件计数器确定的计数值对应的交易事件数据。
98.根据权利要求97所述的系统,
还包括指令,所述指令在由所述至少一个处理器执行时使所述系统确定所述交易事件计数器的计数值,并且
其中,所述交易事件细节请求包括所述交易事件计数器的计数值和与所述状态数据结构内的所述用户账户对应的所述交易事件计数器的访问路径。
99.根据权利要求97所述的系统,其中,所述指令在由所述至少一个处理器执行时使所述系统通过在所述计算机节点处轮询所述交易事件计数器来监控所述交易事件计数器,并且所述系统还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
在第一时间确定所述交易事件计数器的计数值;以及
在第二时间确定所述交易事件计数器的附加计数值。
100.根据权利要求97所述的系统,其中:
所述事件数据结构包括事件Merkle树,并且所述状态数据结构包括状态Merkle树;以及
所述指令在由所述至少一个处理器执行时使所述系统通过响应于传输所述交易事件细节请求而从所述分布式数字分类账交易网络的所述计算机节点接收Merkle证明来接收所述交易事件数据。
101.一种方法,包括:
识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求;
在对所述交易的所述请求内确定所述数字资产的线性数据类型;以及
通过在对应于所述线性数据类型的线性分型规则的规限下将所述数字资产从所述状态数据结构上的所述第一用户账户转移到所述第二用户账户来执行利用所述线性数据类型的所述交易。
102.根据权利要求101所述的方法,其中,所述线性分型规则是用于控制所述分布式数字分类账交易网络的所述状态数据结构的修改的编程语言的一部分。
103.根据权利要求101所述的方法,其中,所述线性分型规则包括在所述交易中利用所述线性数据类型确切地一次的第一线性分型规则。
104.根据权利要求103所述的方法,其中,所述线性分型规则包括反对复制所述线性数据类型的第二线性分型规则。
105.根据权利要求103所述的方法,还包括:
识别对经由所述分布式数字分类账交易网络转移由所述线性数据类型表示的附加数字资产的附加交易的附加请求;
确定对所述附加交易的所述附加请求利用由所述线性数据类型表示的所述附加数字资产多于一次;以及
基于确定对所述附加交易的所述附加请求的所述线性数据类型违反了来自所述线性分型规则中的所述第一线性分型规则,拒绝对所述附加交易的所述附加请求。
106.根据权利要求103所述的方法,还包括:
识别对经由所述分布式数字分类账交易网络从所述第一用户账户转移附加数字资产的附加交易的附加请求,其中,对所述附加交易的所述附加请求未能识别接收方用户账户;以及
由于违反了来自所述线性分型规则中的所述第一线性分型规则而拒绝对所述附加交易的所述附加请求。
107.根据权利要求102所述的方法,其中,所述数字资产的所述线性数据类型按照所述编程语言和所述线性分型规则是可分割和可合并的。
108.根据权利要求101所述的方法,其中,所述数字资产包括保持在所述分布式数字分类账交易网络的所述状态数据结构内的数字货币。
109.一种非暂时性计算机可读介质,其上存储有指令,所述指令在由至少一个处理器执行时使计算设备执行根据权利要求101到108中的任一项所述的方法或使所述计算设备执行:
识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求;
在对所述交易的所述请求内确定所述数字资产的线性数据类型;以及
通过在对应于所述线性数据类型的线性分型规则的规限下将所述数字资产从所述状态数据结构上的所述第一用户账户转移到所述第二用户账户来执行利用所述线性数据类型的所述交易。
110.根据权利要求109所述的非暂时性计算机可读介质,其中,所述线性分型规则是用于控制所述分布式数字分类账交易网络的所述状态数据结构的修改的编程语言的一部分。
111.根据权利要求109所述的非暂时性计算机可读介质,其中,所述线性分型规则包括在所述交易中利用所述线性数据类型确切地一次的第一线性分型规则。
112.根据权利要求111所述的非暂时性计算机可读介质,其中,所述线性分型规则包括反对复制所述线性数据类型的第二线性分型规则。
113.根据权利要求111所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
识别对经由所述分布式数字分类账交易网络转移由所述线性数据类型表示的附加数字资产的附加交易的附加请求;
确定对所述附加交易的所述附加请求利用由所述线性数据类型表示的所述附加数字资产多于一次;以及
基于确定对所述附加交易的所述附加请求的所述线性数据类型违反了来自所述线性分型规则中的所述第一线性分型规则,拒绝对所述附加交易的所述附加请求。
114.根据权利要求111所述的非暂时性计算机可读介质,还包括指令,所述指令在由所述至少一个处理器执行时使所述计算设备:
识别对经由所述分布式数字分类账交易网络从所述第一用户账户转移附加数字资产的附加交易的附加请求,其中,对所述附加交易的所述附加请求未能识别接收方用户账户;以及
由于违反了来自所述线性分型规则中的所述第一线性分型规则而拒绝对所述附加交易的所述附加请求。
115.根据权利要求110所述的非暂时性计算机可读介质,其中,所述数字资产的所述线性数据类型按照所述编程语言和所述线性分型规则是可分割和可合并的。
116.根据权利要求109所述的非暂时性计算机可读介质,其中,所述数字资产包括保持在所述分布式数字分类账交易网络的所述状态数据结构内的数字货币。
117.一种系统,包括:
至少一个处理器;以及
至少一个非暂时性计算机可读介质,其上存储有指令,所述指令在由所述至少一个处理器执行时使所述系统执行根据权利要求101到108中的任一项所述的方法或使所述系统执行:
识别对经由分布式数字分类账交易网络将数字资产从状态数据结构上的第一用户账户转移到第二用户账户的交易的请求;
在对所述交易的所述请求内确定所述数字资产的线性数据类型;以及
通过在对应于所述线性数据类型的线性分型规则的规限下将所述数字资产从所述状态数据结构上的所述第一用户账户转移到所述第二用户账户来执行利用所述线性数据类型的所述交易。
118.根据权利要求117所述的系统,其中:
所述线性分型规则是用于控制所述分布式数字分类账交易网络的所述状态数据结构的修改的编程语言的一部分;并且
所述数字资产的所述线性数据类型按照所述编程语言和所述线性分型规则是可分割和可合并的。
119.根据权利要求117所述的系统,其中,所述线性分型规则包括:
在所述交易中利用所述线性数据类型确切地一次的第一线性分型规则;以及
反对复制所述线性数据类型的第二线性分型规则。
120.根据权利要求117所述的系统,其中,所述数字资产包括保持在所述分布式数字分类账交易网络的所述状态数据结构内的数字货币。
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/442,473 US11249985B2 (en) | 2019-06-15 | 2019-06-15 | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network |
US16/442,476 US20200394648A1 (en) | 2019-06-15 | 2019-06-15 | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network |
US16/442,475 US11126593B2 (en) | 2019-06-15 | 2019-06-15 | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network |
US16/442,470 | 2019-06-15 | ||
US16/442,474 | 2019-06-15 | ||
US16/442,470 US11249947B2 (en) | 2019-06-15 | 2019-06-15 | Distributed digital ledger transaction network for flexible, lazy deletion of data stored within an authenticated data structure |
US16/442,473 | 2019-06-15 | ||
US16/442,472 US11405204B2 (en) | 2019-06-15 | 2019-06-15 | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network |
US16/442,476 | 2019-06-15 | ||
US16/442,472 | 2019-06-15 | ||
US16/442,474 US20200394177A1 (en) | 2019-06-15 | 2019-06-15 | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network |
US16/442,475 | 2019-06-15 | ||
PCT/US2020/036769 WO2020256998A1 (en) | 2019-06-15 | 2020-06-09 | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114096966A true CN114096966A (zh) | 2022-02-25 |
Family
ID=71944213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080044037.8A Pending CN114096966A (zh) | 2019-06-15 | 2020-06-09 | 可扩展的、安全的、高效的和适应性强的分布式数字分类账交易网络 |
Country Status (3)
Country | Link |
---|---|
EP (5) | EP3983923A1 (zh) |
CN (1) | CN114096966A (zh) |
WO (1) | WO2020256998A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11588620B2 (en) | 2020-12-30 | 2023-02-21 | Itron, Inc. | Forming a blockchain in low-bandwidth, resource-constrained network |
US11720540B2 (en) | 2020-12-30 | 2023-08-08 | Itron, Inc. | Secure blockchain data recovery |
US11762844B2 (en) * | 2020-12-30 | 2023-09-19 | Itron, Inc. | Secure trimming of blockchain in a resource-constrained network |
GB202101589D0 (en) * | 2021-02-05 | 2021-03-24 | Nchain Holdings Ltd | Blockchain tree structure |
CN116346500B (zh) * | 2023-05-10 | 2023-08-08 | 飞天诚信科技股份有限公司 | 一种通过智能合约管理帐户控制权限的实现方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10255108B2 (en) * | 2016-01-26 | 2019-04-09 | International Business Machines Corporation | Parallel execution of blockchain transactions |
US20180158034A1 (en) * | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Dynamic reordering of blockchain transactions to optimize performance and scalability |
CN106980649B (zh) * | 2017-02-28 | 2020-07-10 | 创新先进技术有限公司 | 写入区块链业务数据的方法和装置及业务子集合确定方法 |
CA3065319A1 (en) * | 2017-06-01 | 2018-12-06 | Schvey, Inc. d/b/a/ Axoni | Distributed privately subspaced blockchain data structures with secure access restriction management |
CN111899103B (zh) * | 2018-10-25 | 2024-05-03 | 创新先进技术有限公司 | 基于区块链的交易处理方法及装置、电子设备 |
BR112019016064A2 (pt) * | 2018-12-28 | 2020-03-31 | Alibaba Group Holding Limited | Método implementado por computador, meio de armazenamento legível e sistema |
EP3559819B1 (en) * | 2018-12-29 | 2022-03-09 | Advanced New Technologies Co., Ltd. | Visual blockchain browser |
-
2020
- 2020-06-09 EP EP20750811.0A patent/EP3983923A1/en active Pending
- 2020-06-09 EP EP22176472.3A patent/EP4071649A1/en active Pending
- 2020-06-09 EP EP22176361.8A patent/EP4071646A1/en active Pending
- 2020-06-09 WO PCT/US2020/036769 patent/WO2020256998A1/en unknown
- 2020-06-09 EP EP22176382.4A patent/EP4071648A1/en active Pending
- 2020-06-09 EP EP22176367.5A patent/EP4071647A1/en active Pending
- 2020-06-09 CN CN202080044037.8A patent/CN114096966A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2020256998A1 (en) | 2020-12-24 |
EP4071646A1 (en) | 2022-10-12 |
EP3983923A1 (en) | 2022-04-20 |
EP4071647A1 (en) | 2022-10-12 |
EP4071649A1 (en) | 2022-10-12 |
EP4071648A1 (en) | 2022-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11615055B2 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
US11249947B2 (en) | Distributed digital ledger transaction network for flexible, lazy deletion of data stored within an authenticated data structure | |
US11249985B2 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
US11405204B2 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
US20200394648A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
JP2022521915A (ja) | 分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成 | |
US20190392118A1 (en) | Blockchain Version Control | |
EP4071646A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
CN114365133A (zh) | 利用秘密共享和对读取的共识在元数据驱动的区块链上实现被遗忘的权利的系统或方法 | |
JP2021525931A (ja) | ブロックチェーンのための効率的な検証 | |
CN111919417A (zh) | 在基于云的计算环境中用共识管理为分布式分类账技术实现超级社区和社区侧链的系统、方法和装置 | |
US20200394177A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
KR20220088956A (ko) | 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들 | |
Dinh et al. | A blueprint for interoperable blockchains | |
CN116569517A (zh) | 用于发布操作系统的基于区块链的系统和方法 | |
CA3168111A1 (en) | System and method for secure peer-to-peer transmission of content in distributed ledger neworks | |
US20220311595A1 (en) | Reducing transaction aborts in execute-order-validate blockchain models | |
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 | |
Mast | Protocols for Building Secure and Scalable Decentralized Applications | |
Shamis | Auditable and Performant Byzantine Consensus for Permissioned Ledgers | |
Ye et al. | Specular: Towards Secure, Trust-minimized Optimistic Blockchain Execution | |
Martins | Recoverable Token | |
TW202341044A (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 |