hth华体会体育全站app:Aptos 中文版白皮书:致力构建最安全、最具扩展性公链

发布日期:2022-08-16 | 来源:华体会登陆入口 作者:华体会官方登录

  区块链作为一种新的互联网基础设施的崛起,导致开发者以快速增长的速度部署了数万个去中心化的应用程序。不幸的是,由于频繁的中断、高成本、低吞吐量限制和许多安全问题,区块链的使用还不普遍。为了在web3时代实现大规模采用,区块链基础设施需要遵循云基础设施的路径,作为一个可信的、可扩展的、经济高效的、不断改进的平台来构建广泛使用的应用程序。

  我们提出了Aptos区块链,设计以可伸缩性、安全性、可靠性和可升级性作为关键原则,以解决这些挑战。Aptos区块链是在过去三年中由全球[1]的350多名+开发人员开发的。它在共识、智能合同设计、系统安全、性能和分散化等方面提供了新的创新。这些技术的结合将为web3面向大众提供一个基本的基础模块:

  首先,Aptos区块链本地集成并在内部使用Move语言,用于快速和安全的事务执行[2]。移动证明器是用移动语言编写的智能契约的正式验证器,它为契约不变量和行为提供了额外的保护措施。这种安全的关注允许开发人员更好地保护他们的软件免受恶意实体的侵害。

  其次,Aptos数据模型可以实现灵活的密钥管理和混合托管选项。这一点,以及签名之前的事务透明度和实际的轻客户端协议,提供了更安全、更值得信赖的用户体验。

  第三,为了实现高吞吐量和低延迟,Aptos区块链利用了一种流水线和模块化的方法来处理事务处理的

  关键阶段。具体来说,事务传播、块元数据排序、并行事务执行、批存储和分类帐认证都并行操作。这种方法充分利用了所有可用的物理资源,提高了硬件效率,并实现了高度并行的执行。

  第四,与其他并行执行引擎不同,Aptos区块链打破了事务的原子性,Aptos区块链没有对开发人员施加这样的限制。它可以有效地支持任意复杂事务的原子性,为实际应用程序提供更高的吞吐量和更低的延迟,并简化开发。

  第五,Aptos模块化架构设计支持客户的灵活性,并优化频繁和即时升级。此外,为了快速部署新的技术创新和支持新的web3用例,Aptos区块链提供了嵌入式的链上变更管理协议。

  1 法律免责声明:本白皮书及其内容不是任何代币的出售要约或购买要约的招揽。我们发布这份白皮书只是为了接受公众的反馈和评论。本文档中的任何内容都不应被解读或解释为对Aptos区块链或其代币(如果有)将如何开发、利用或积累价值的保证或承诺。

  Aptos只概述了其目前的计划,这些计划可能会自行改变,其成功将取决于其控制之外的许多因素。这些未来的陈述必然涉及已知和未知的风险,这可能导致实际业绩和结果在未来期间与我们在白皮书中描述或暗示有重大差异。Aptos不承担更新其计划的义务。不能保证白皮书中的任何陈述都将被证明是准确的,因为实际的结果和未来的事件可能会有重大差异。请不要过分依赖未来的陈述。

  最后,Aptos区块链正在试验未来的举措,以扩展到单个验证器的性能:其模块化设计和并行执行引擎支持验证器的内部分片,同构状态分片提供了水平吞吐量可扩展性的潜力,而不增加节点操作符额外的复杂性。

  在web2版本的互联网中,信息、社交媒体、金融、游戏、购物和音频/视频流等服务由控制用户数据直接访问的集中公司提供(e。g., 谷歌、亚马逊、苹果和Meta)。这些公司使用针对目标用例优化的特定于应用程序的软件开发基础设施,并利用云基础设施将这些应用程序部署给用户。云基础设施提供了对虚拟化和/或物理基础设施服务的访问,如租用的虚拟机(vm)和在全球数据中心内运行的裸金属硬件(e。g., AWS、Azure和谷歌云)。因此,构建能够扩展到数十亿用户的web2互联网服务从来没有像今天这样容易过。然而,web2要求用户明确地信任集中式实体,这一要求已经越来越引起社会的关注。

  为了解决这种担忧,一个新的互联网时代已经开始:web3。在web3版本的互联网中,区块链已经出现,提供了去中心化的、不可变的账本,使用户能够安全可靠地相互交互,所有这些都不需要对控制中介或集中式实体的信任。类似于web2互联网服务和应用程序如何依赖云基础设施作为构建块,去中心化的应用程序可以使用区块链作为去中心化的基础设施层,以覆盖世界各地的数十亿用户。

  然而,尽管目前存在许多区块链,但web3的广泛采用尚未出现[3]。虽然技术继续推动行业发展,但现有的区块链不可靠,对用户收取较高的交易费用,具有低吞吐量限制,由于安全问题而遭受定期资产损失,不能支持实时响应。与云基础设施使web2服务达到数十亿美元相比,区块链尚未使web3应用程序实现同样的功能。

  Aptos的愿景是提供一个区块链,可以让web3引入主流,并授权一个去中心化应用程序的生态系统来解决现实世界的用户问题。我们的使命是通过提供一个灵活和模块化的区块链架构,来推进区块链在可靠性、安全性和性能方面的最先进水平。该体系结构应该支持频繁的升级、快速采用最新的技术进步,以及对新的和新兴的用例的一流支持。

  我们设想了一个分散的、安全的、可扩展的网络,由使用它的社区管理和运营。当全球的基础设施需求增长时,区块链的计算资源将水平和垂直扩展,以满足这些需求。随着新的用例和技术进步的出现,网络应该频繁地、无缝地升级,而不中断用户。对基础设施的担忧应该会逐渐消失。开发人员和用户将可以访问许多不同的选项,包括关键恢复、数据建模、智能合同标准、资源使用权衡、隐私性和可组合性。用户知道他们的资产是安全的,总是可用的,并且可以以几乎有成本的费用进行访问。任何人都可以安全、轻松、不可避免地与世界各地不可信任的政党进行交易。区块链和云基础设施一样无处不在。

  为了实现这一愿景,必须取得重大的技术进步。我们在过去三年中构建、开发、推进和部署Diem区块链(Aptos区块链的前身)的经验证明,一个网络可以在不干扰其客户[4]的情况下不断升级其协议。在2020年初,每日新闻主网被部署到十多个节点运营商和多个钱包提供商。在接下来的一年里,我们的团队发布了两个主要的升级,改变了共识协议和核心框架。两个升级完成,用户没有停机。通过Aptos区块链,我们对技术堆栈进行了一系列彻底的改进,同时也将安全、透明和频繁的升级作为核心功能,受到Diem区块链的启发。特别地,我们强调了事务处理的新方法(如第7节所述)以及分散化和网络治理的新方法。

  如图1所示,Aptos区块链由一组验证器组成,这些验证器使用拜占庭容错(BFT)、股权证明共识机制共同接收和处理来自用户的事务。令牌持有者在其选定的验证器中锁定或持有令牌。每个验证者的共识投票权重与其中所投入的金额成比例。验证者可以积极参与并参与共识。同样地,如果验证器没有足够的股份参与,旋转出验证器集,在同步区块链状态时选择脱机,或者由于历史性能不佳而被共识协议认为不参与,那么它也可能处于不活动状态。

  客户端是系统中需要提交事务或查询区块链的状态和历史记录的任何部分。客户端可以选择下载并验证查询数据的验证器签名证明。完整节点是从验证器或从网络中的其他完整节点复制事务和区块链状态的客户机。他们可以选择根据需要删除事务历史记录和区块链状态,以回收存储。轻客户端只维护当前的验证器集,并且可以安全地查询部分区块链状态,通常是从完整的节点上查询的。钱包是轻客户端的一个常见例子。

  为了满足安全、快速、可靠、可升级的web3基础设施被广泛采用的需求,Aptos区块链建立在以下核心设计原则之上:

  通过一种新的智能合同编程语言,Move[5],快速和安全的执行,以及简单的可审核性和机械可分析性。Move起源于Aptos区块链的前身,并随着这个项目的发展继续发展。

  通过批处理、流水线和并行的事务处理方法实现极高的吞吐量和低延迟。新颖的并行事务处理,通过block-stm有效地支持任意复杂事务的原子性,不同于现有的并行执行引擎,它需要读写数据位置的预先知识。通过快速、桩重验证器集旋转和声誉跟踪来优化性能和分散化。

  可升级性和可配置性作为一流的设计原则,以接受新的用例和最新的技术。模块化设计,支持严格的组件级别测试,以及适当的威胁建模和无缝部署,所有这些都确保了高度安全和可靠的操作。

  在保持去中心性的同时,水平吞吐量的可伸缩性,其中分片是向用户公开的一流概念,也是编程和数据模型的原生概念。

  第4节解释了开发者如何与Aptos区块链中的Move交互。第5节描述了逻辑数据模型。第6节详细介绍了Aptos区块链如何通过强大的验证方法来实现安全的用户体验。第7节描述了关于流水线、批处理和并行化的关键性能创新。第8节详细介绍了不同客户端与其他节点同步状态的各种选项。第9节描述了我们的社区所有权和治理计划。最后,第10节讨论了在保持分散化的同时,未来的性能方向。

  Move是一种新的智能合同编程语言,它强调了安全性和灵活性。Aptos区块链使用Move的对象模型来表示其分类帐状态(参见第5.5节),并使用Move代码(模块)来编码状态转换的规则。用户提交的事务可以发布新模块、升级现有模块、执行模块中定义的入口函数,或者包含可以直接与模块的公共接互的脚本。

  Move生态系统包含一个编译器、一个虚拟机和许多其他开发人员工具。Move的灵感来自于Rust编程语言,它通过线性类型等概念在语言中明确了数据的所有权。Move强调了资源的稀缺性、保存和访问控制。

  移动模块定义了每个资源的生命周期、存储和访问模式。这确保了像硬币这样的资源在没有适当的凭证的情况下就不会产生,不能重复使用,也不会消失。

  Move利用字节码验证器来保证类型和内存的安全,即使存在不受信任的代码。为了帮助编写更可信的代码,Move包括一个正式的验证器,即移动验证器[6],能够根据给定的规范验证移动程序的功能正确性,该规范用集成到Move中的规范语言制定。

  除了用户帐户和相应的帐户内容外,分类帐状态还包含了Aptos区块链的链上配置。此网络配置包括一组活动验证器、标记属性以及Aptos区块链中的各种服务的配置。Move对模块可升级性和全面可编程性的支持支持无缝配置更改,并支持对Aptos区块链本身的升级(这两组升级都在私有主网上执行了多次,没有停机时间)。

  Aptos团队进一步增强了Move,支持更广泛的web3用例。正如后面在第5.5节中提到的,Aptos区块链支持细粒度的资源控制。这不仅支持执行的并行化,而且还实现了与访问和修改数据相关的接近固定的成本。此外,Aptos区块链提供了建立在细粒度存储之上的表支持,这允许大规模数据集(e。g., 大量的nft集合)在一个帐户。此外,Aptos支持完全在链上表示的共享或自治帐户。这允许复杂的分散式自治组织(DAOs)协作地共享帐户,并将这些帐户用作异构资源集合的容器。

  Aptos区块链的分类帐状态表示所有帐户的状态。账本状态使用与系统已执行的事务数量相对应的无符号64位整数进行版本控制。任何人都可以向Aptos区块链提交一个事务处理,以修改分类帐状态。在执行事务时,将生成事务输出。事务输出包含零个或多个操作来操作分类帐状态(称为写集)、结果事件的向量(参见第5节)、消耗的气体量和执行的事务状态。.1.14.15交易已签名的事务处理包含以下信息:

  事务身份验证器:发件人使用包含一个或多个数字签名的事务身份验证器来验证事务是否经过身份验证。

  有效负载:有效负载要么引用链上现有的输入函数,要么包含要作为内联字节码(称为脚本)执行的函数。此外,一组输入参数被编码在字节数组中。对于点对点交易,输入包含收件人的信息和转移给它们的金额。

  天然气价格(以指定货币/天然气单位表示):这是发送方为执行交易而按每单位天然气愿意支付的金额。天然气是一种支付计算、网络和存储费用的方式。气体单元是一种抽象的计算测量,没有固有的真实价值。

  最大气体量:最大气体量是交易在中止前允许消耗的最大气体单位。该账户必须至少有天然气价格乘以最大天然气数量,否则该交易将在验证期间被丢弃。

  序号:交易记录的序号。这必须与事务执行时存储在发件人帐户中的序列号相匹配。在事务执行成功后,将增加帐户序列号,以防止重播攻击。

  链id:标识此事务有效的区块链,为用户提供进一步的保护,以防止签名错误。

  在每个版本i中,状态变化由元组(T表示i,Oi,Si),分别包含事务处理、事务处理输出和生成的分类帐状态。给定一个确定性函数应用,事务T的执行i与分类帐状态Si − 1生成事务输出Oi和一个新的分类帐状态Si.也就是说,应用i − 1,Ti) → ⟨ Oi,Si⟩

  事件将在事务的执行期间发出。每个移动模块都可以定义自己的事件,并在执行时选择何时发出这些事件。例如,在硬币转移过程中,发送方和接收方的帐户将分别发出发送事件和接收事件。这些数据存储在分类帐中,并且可以通过一个Aptos节点进行查询。每个已注册的事件都有一个唯一的键,该键可以用于查询事件的详细信息。

  发射到同一事件键的多个事件产生事件流,一个事件列表,每个条目包含一个从0开始的顺序递增的数字、一个类型和数据。每个事件都必须由某种类型来定义。可能会有多个由相同或相似的类型定义的事件,特别是在使用泛型时。事件具有相关数据。对于Move模块开发人员,一般原则是包括在执行更改数据和发出事件的事务之前和之后理解底层资源更改所需的所有数据。事务处理只能生成事件,而不能读取事件。这种设计允许事务执行仅是当前状态和事务输入的函数,而不是历史信息(e。g., 以前生成的事件)。

  每个帐户由一个唯一的256位值标识。当从现有帐户发送的事务处理调用creat_帐户(addr)Move功能时,将在分类帐状态下创建新帐户(参见第5.5节)。当事务尝试将Aptos令牌发送到尚未创建的帐户地址时,通常会发生这种情况。为方便起见,Aptos还支持一个转移(从,到金额)函数,如果在转移之前不存在,该函数隐式地创建一个帐户。

  要创建一个新帐户,用户首先生成一个签名密钥对:(vk、sk)。接下来,使用与签名方案标识符(ssid)连接的公共验证密钥vk的密码哈希H推导出给定签名方案的新帐户地址:其中addr=H(vk,ssid)。

  在地址addr创建新帐户后,用户可以使用私人签名密钥sk签名从addr发送的事务。用户还可以旋转sk,以主动更改sk或响应可能的妥协。这不会更改帐户地址,因为帐户地址在创建期间只从公共验证密钥派生出一次。

  Aptos区块链不会将账户与现实世界的身份联系起来。用户可以通过生成多个密钥对来创建多个帐户。

  由同一用户控制的帐户彼此之间没有内在的链接。但是,一个用户仍然可以在一个钱包中管理多个帐户,以便进行简单的资产管理。这种灵活性为用户提供了假名,而我们为未来的版本提供了隐私保护原语。如第7.4节所述,还提供多个帐户以增加执行并发性。

  移动模块包含可声明数据类型(结构)和过程的移动字节码。它由声明模块的帐户的地址以及模块名称来标识。例如,图2中第一个货币模块的标识符是0x1::coin。一个模块可以依赖于其他链上的模块,如图2中的wallet模块所示,从而实现了代码重用。

  一个模块必须在一个帐户中唯一命名。e., 每个帐户最多可以声明一个具有任何定名的模块。例如,图2中地址为0x1处的帐户无法声明另一个名为coin的模块。另一方面,地址为0x3的帐户可以声明一个名为coin的模块,该模块的标识符为0x3::coin。请注意,0x1::coin::硬币和0x3::coin::硬币是不同的类型,不能互换使用,也不能共享公共模块代码。相比之下,0x1::硬币::硬币和0x1:::硬币::硬币是相同泛型类型的不同实例,不能互换使用,但可以

  模块被分组为位于同一地址的软件包。此地址的所有者将包作为一个整体在链上发布,包括字节码和包元数据。这个包的元数据决定了一个包是可以升级的还是不可变的。对于可升级的包,在允许升级之前执行兼容性检查:不必须更改现有的入口点函数,也不能存储内存中的资源。但是,可以添加新的功能和资源。

  Aptos框架由Aptos区块链的核心库和配置组成,被定义为一个常规的可升级的模块包(见第9.2节)

  与模块类似,帐户地址也可以具有与之关联的数据值。在每个帐户地址中,值由其类型键控,每个类型的最多一个值属于该帐户。图3提供了一个示例。地址0x50包含一个值,0x3::coin::硬币是完全限定的类型。0x3是硬币模块存储的地址,硬币是模块的名称,硬币是数据类型的名称。还允许使用泛型类型的值,而不同的实例化将被视为不同的类型。这对于可扩展性至关重要,因为它允许不同的实例化共享相同的功能代码。修改、删除和发布值的规则被编码在定义数据类型的模块中。Move的安全性和验证规则可以阻止其他代码或实体直接创建、修改或删除在其他模块中定义的数据类型的实例。在一个地址下最多有一个每种类型的顶级值,可以首先进行声音限制。然而,这在实践中不是问题,因为程序员可以将其他数据定义为内部字段,从而避免了任何限制。图3中的Wallet结构体是如何使用包装器类型的一个示例。还应该注意的是,并非所有的数据类型都可以存储在链上。要使数据实例符合顶级值,数据类型必须具有关键能力。同样,对于嵌套值也需要具有存储能力。具有这两种能力的数据类型也被称为资源。

  从Move虚拟机(MoveVM)的角度来看,每个帐户都由一组值和键值数据结构组成。这些数据结构被称为表条目,并以二进制规范序列化格式(BCS)存储。这种数据布局使开发人员能够编写智能合约,它可以有效地操作跨大量账户复制的少量数据,以及存储在少量账户中的大量数据。移动模块存储与帐户数据类似,但在独立的名称空间下。起源账本状态定义了初始帐户集及其在区块链初始化时的关联状态。在发布时,Aptos区块链将由一个单一的分类帐状态来表示。然而,随着采用程度的增加和技术的发展,Aptos将扩大碎片的数量,以增加吞吐量(i。e., 启用多个分类帐状态),并支持跨碎片移动或访问资产的事务处理。每个分类帐状态将维护特定碎片的所有链上资产,并提供相同的帐户模型和细粒度的键值数据存储,为存储提供接近固定的存储访问成本。

  为了接触到数十亿的互联网用户,web3的用户体验必须是安全的和可访问的。在下面的章节中,我们将描述由Aptos区块链提供的旨在实现这一目标的几个创新。0x600x2::wallet::Wallet {硬币:0x1硬币:钱包:美元{价值:0,}硬币::硬币{值:10,}}模块我的硬币{结构体MyCoin{}}

  签署交易意味着签名者授权区块链提交和执行该交易。偶尔,用户可能会在无意中签署事务,或者没有充分考虑他们的事务可能纵的所有方式。为了降低这种风险,Aptos区块链限制了每笔交易的可行性,并保护签名者不受无限的有效性。目前,Aptos区块链提供了三种不同的保护措施——发送者的序列号、一个事务过期时间和一个指定的链标识符。一个事务的序列号对于每个发送者的帐户只能恰好提交一次。因此,发件人可以观察到,如果当前帐户序列号是≥的事务t的序列号,那么t已经提交或t将永远不会提交(因为t使用的序列号已经被另一个事务消耗)。

  区块链时间具有高精度和频率(通常亚秒),详见7.3.1节。如果区块链时间超过了事务t的到期时间,那么同样地,t要么已经提交,或者t将永远不会提交。每个事务都有一个指定的链标识符,以防止恶意实体在不同的区块链环境之间重播事务(e。g., 通过一个测试网和一个主网)。

  如第5.2节中所讨论的,Aptos帐户支持密钥旋转,这是一个重要的特性,可以帮助减少与私钥泄露、远程攻击和可能破坏现有密码算法的未来进展相关的风险。此外,Aptos的账户也足够灵活,可以支持新的混合托管模式。在一个这样的模型中,用户可以委托给将帐户的私钥旋转给一个或多个保管人和其他受信任的实体的能力。然后,移动模块可以定义一个策略,授权这些受信任的实体在特定情况下旋转密钥。例如,实体可能由许多可信方持有的k-out-n多站点密钥表示,并提供密钥恢复服务以防止用户密钥丢失(e。g.,20%的比特币目前被锁定在不可恢复的账户[7])。

  此外,虽然许多钱包支持各种关键恢复方案,如备份私钥到云基础设施、多方计算和社会恢复,但它们通常不需要区块链支持(i。e., 链外)。因此,每个钱包都需要实现自己的密钥管理基础设施,相关操作对用户来说变得不透明。相比之下,在Aptos区块链层支持密钥管理功能提供了所有与密钥相关的操作的完全透明度,并使实现具有富密钥管理的钱包变得更简单。

  如今,钱包对他们所签署的交易几乎没有提供任何透明度。因此,用户往往很容易被骗去签署恶意交易,这可能会窃取资金,并产生毁灭性的后果。即使对于需要枚举每个事务访问的所有链上数据的区块链也是如此。因此,目前现有的用户保护措施很少,使用户容易受到各种各样的攻击。为了解决这个问题,Aptos生态系统为事务预执行提供了服务:一种预防措施,向用户(以人类可读的形式)描述他们在签名之前的事务结果。将其与已知的先前攻击历史和恶意智能合同相结合,将有助于减少欺诈。此外,Aptos还允许钱包在执行过程中规定对交易的限制。违反这些约束将导致事务被中止,以进一步保护用户免受恶意应用程序或社会工程攻击。

  仅仅依靠API提供者的TLS/SSL证书来建立区块链客户端和服务器之间的信任,并不能充分保护客户端。即使有有效的证书,钱包和客户也不能保证所呈现的数据的真实性和完整性。

  [事务处理的生命周期。所有的阶段都是完全独立的,并且都是可单独并行化的](

  因此,API提供商可能会返回不正确或恶意的区块链数据,欺骗第三方并执行重复攻击。 为了防止这种情况发生,Aptos提供了状态证明和轻客户端验证协议,钱包和客户端可以使用这些协议 来验证由不可信的第三方服务器提供的数据的有效性。

  此外,通过利用第7.6.2节中的基于时间戳的状态证 明,轻客户机总是可以确保对帐户状态的新鲜度(e。g., 在几秒钟内),并且只需要跟踪网络配置中的变化 (历元变化)或使用当前的可信检查点(路径点)来保持最新的[8]。通过结合高频时间戳和廉价的状态证 明,Aptos区块链为客户提供了更多的安全保证。

  Aptos模块化设计有助于开发速度并支持更快的发布周期,因为更改可以针对单个模块,而不是单个单一 架构。类似地,模块化设计还提供了一个结构化的路径,可以将验证器扩展到单台机器之外,从而提供了 对额外的计算、网络和存储资源的访问。图4显示了跨各个处理阶段的事务生命周期。

  根据独角鲸和Tusk[9]的主要见解,Aptos区块链中的交易传播与共识脱钩。验证器不断地流传输可用的事 务,同时利用所有可用的网络资源。由验证器v分发的每个批都被持久化,批摘要上的签名被发送回v。

  根 据第7.3节中定义的共识要求,批处理摘要上的任何2f+1股份加权签名都将形成可用性证明(PoAv)。这样的 证明保证至少f+1股份加权诚实验证器存储了批,因此所有诚实验证者将能够在执行之前检索它。 无限持久化的事务批可以通过导致验证器耗尽存储空间和崩溃来打开DoS攻击向量。为了防止这种情况 发生,每批事务都有一个关联的时间戳。批处理上的时间戳允许在每个验证器上进行有效的垃圾收集。

  此 外,还设计了一个单独的每个验证者配额机制,以保护验证者即使在最极端的情况下,比如在潜在的拜占 庭攻击下。批还有大小限制,在协议持续到稳定存储之前进行验证。最后,对消除重复事务和缓存事务的 几种优化降低了存储成本,并确保了与并行执行引擎的性能集成。

  一个常见的误解是,共识是缓慢的,因此是区块链吞吐量和延迟的主要瓶颈。Aptos区块链的关键创新之一 是将与非协议相关的任务从共识阶段中分离出来,如交易传播、交易执行/存储和分类账认证。通过将事务 传播与共识阶段解耦,排序可以发生在非常低的带宽下(仅限块元数据和证明),从而导致较高的事务吞 吐量和最小化的延迟。

  今天,Aptos区块链利用了DiemBFTv4[10]的最新版本,这是一款响应良好的BFT共识协议。在常见情况 下,共识只需要两次网络往返(在全球范围内,往返时间通常小于300毫秒),并通过领导者声誉机制[11] 动态调整到错误的验证器。连锁领导者的声誉 交易交易交易交易交易交易 机制促进已在窗口中成功提交块的验证器,并降级未参与的验证器。这种新的机制显著地提高了分散环境 中的性能,相应地为适当的激励提供了基础设施,并快速地将失败的验证器对吞吐量和延迟的影响最小化 。

  验证者可以在验证证明和满足块元数据标准后,对领导者的提案进行投票。g., 提案 时间戳≤块过期时间)。

  Aptos区块链对每个提议的区块块采用一个近似的、商定的物理时间戳,以及相应的,该区块块内的所有 事务。这个时间戳启用了许多重要的用例。例如: 智能合约中的时间依赖性逻辑。例如,开发商希望编码,所有拍卖的投标必须在周四中午之前收到。 当神谕发布链上数据时,需要一个准确和可信的链上时间戳来关联事件和处理来自真实世界数据的延 迟。

  客户可以辨别出他们对区块链的最新情况。出于安全原因,为了避免陈旧的数据和远程攻击,客户端 应该可以访问更新帐户状态时的高精度时间戳。 使用一个非常可信的时间戳来审计区块链可以提供与链外事件的强相关性,例如确保法律强制执行的 支付满足预期的要求。 事务过期是基于最近提交的时间戳。

  作为客户端事务的额外保护保障,客户端可以为事务的过期时间 ,如第6.1节所述。 Aptos区块链为一个区块内的所有交易的时间戳提供了以下保证: 时间在区块链中是单调递增的。也就是说,如果块B1

  如果一个事务块具有与时间戳T一致的法定签名数,那么一个诚实的验证器将在其自己的时钟≥时戳T 之前不会将该块提供给其他验证器。 每个提交块的时间戳更新,并用作该块中所有事务的时间戳。当网络同步时,每个网络往返都会提交一个 事务块,并提供一个快速更新和高度可靠的时钟。如果需要,可以确定事务块中更细粒度的排序。 11 图6:Block-STM(仅限组件的)基准测试,比较具有不同竞争级别的物理内核的数量。

  一旦对一致块元数据进行排序,事务就可以由任何验证器、全节点或客户端执行。至少有2个+1股份加权 验证器确实持续了提议批次的交易。由于交易传播是连续的,额外的诚实验证者将随着时间的推移接收交 易批次。如果一个诚实的验证器没有收到订单批次的事务达到执行阶段,它可以从2f+1股份加权验证器, 知道至少f+1股份加权验证器(≥一半的股份加权PoAV签名者)是诚实的。 任何区块链的一个重要目标都是实现尽可能多的并行执行。Aptos区块链从数据模型和执行引擎都向前 推进了这个方向。

  移动数据模型本机支持数据和模块的全局寻址。在数据和帐户中没有重叠冲突的事务可以并行执行。考虑 到Aptos区块链所使用的流水线设计,重新排序一组事务可以减少冲突的数量,从而提高并发性。 即使事务修改了同一组链上的值,大部分事务执行过程仍然可以并行化。Aptos区块链引入了一个新的 概念,delta写道,它描述了对帐户状态的修改,而不是修改后的帐户状态(e。g., 增加一个整数,而不是 简单地确定最终值)。所有的事务处理都可以并行完成,然后对冲突的值以正确的顺序应用增量写入,以确 保确定性的结果。

  随着时间的推移,Aptos区块链将继续以改善并发性的方式增强数据模型(e。g., 利用读/写提示),并 改进人体工程学,使开发人员更自然地创建、修改和组合链上的值。Move提供了在语言级别和通过平台特 定的功能进行这些改进的灵活性。

  Block-STM并行执行引擎检测和管理一组有序事务的冲突,以及乐观的并发控制,以允许给定特定有序[13] 的最大并行性。 批事务并行乐观地执行,并在执行后进行验证。验证失败会导致重新执行。Block-STM使用多版本的数 据结构来避免写-写冲突。所有到相同位置的写入都与它们的版本一起存储,这些版本包含它们的事务id 和写入事务被乐观地重新执行的次数。当事务tx读取内存位置时,它从多版本数据结构中获得在tx之前出 现的最高事务写入该位置的值,以及关联的版本。

  12 Block-STM已经集成到Aptos区块链中。为了充分了解Block-STM性能的潜力,我们使用非平凡的点对点 移动事务(i。e.,每个事务8读和5写)作为一个孤立的、只执行的(不是端到端)基准测试。在图6中,我们 展示了我们的块-stm执行结果。每个区块包含10k个事务处理,帐户的数量决定了冲突和争用的级别。

  在低争用下,Block-STM通过32个线倍的加速,而在高争用下,Block-STM实现 了超过8倍的加速。与区块链空间中的其他并行执行引擎不同,Block-STM能够动态和透明地(没有来自用 户的任何提示)从任何工作负载中提取固有的并行性。与需要预先读取或写入数据位置知识的并行执行环 境相比,BlockSTM可以同时支持更复杂的事务。

  此属性将导致更少但更有效的事务,降低成本,并为用户 提供更低的延迟。也许最重要的是,将原子事务分割为多个较小的事务,打破了具有复杂状态结果的单个 事务的全或无的语义。将Block-STM中的表达性事务语义与并行执行相结合,使开发人员拥有最好的两个 世界。请注意,块元数据排序步骤并不排除在并行执行阶段中对事务进行重新排序。事务可以跨一个或多个 块进行重新排序,以优化并行执行的并发性。唯一的要求是,重新排序必须在所有诚实的验证器上都是确 定性的。对并行执行进行优化以及在重新排序中添加随机化可以提高性能,并潜在地阻止可盈利的验证器 事务重新排序的最大可提取值(MEV)技术。“顺序然后揭示”MEV抗策略也可以纳入这个流水线设计中。

  块-stm和事务重新排序是增加执行并行性的互补技术。它们可以与事务读/写访问提示相结合,以获得 其他并发性。 .57批量存储 并行执行阶段会为组中的所有事务生成写集。这些写集可以存储在内存中以获得最大的执行速度,然后用 作要执行的下一个块或一组块的缓存。任何重叠的写入操作都只需要写入稳定的存储器一次。如果验证器 在存储内存中的写集之前失败,它可以简单地从块元数据排序阶段恢复并行执行。将并行执行步骤中写集 的批存储解耦,确保并行执行能够有效地运行。

  总之,批处理写集减少了存储操作的数量,并利用了更高 效、更大的I/O操作。 为写集缓存保留的内存量可以为每台机器手动配置,并提供了一个自然的背压机制。如果需要针对特 定的I/O和内存环境进行调优,那么批处理的粒度可能与并行执行块的粒度不同。 .67分类帐认证 在管道中,每个验证器都计算了已提交的事务块的新状态。然而,为了有效地支持已验证的轻客户端和状 态同步,Aptos区块链为分类帐历史记录和分类帐状态实现了分类帐认证。Aptos区块链的一个关键区别是 ,分类账认证并不在交易处理的关键路径上,如果需要,甚至可以完全在带外运行。

  验证器将事务及其执行输出附加到全局经过身份验证的分类帐数据结构中。事务输出的一部分是状态写集 ,包括对移动可访问的全局状态所做的更改。此数据结构的简短身份验证器是对分类帐历史记录的绑定承 诺,其中包括新执行的一批事务处理。与事务执行类似,此数据结构的生成也是确定性的。 每个验证器将短身份验证器签名到结果数据库的新版本。验证器彼此共享它们最近的签名短身份验证 器集,集体聚合定量签名短身份验证器,并彼此共享最近的仲裁签名短身份验证器。

  使用这个集体签名,客户机可以相信一个数据库版本根据协议的BFT属性代表了完整、有效的和不可逆 的分类帐历史记录。客户端可以查询任何验证器(或数据库的任何第三方副本,如完整节点),以读取数 据库值,并使用身份验证器和所需数据的证明来验证结果。

  Move可访问的整个全局状态可以在历史记录上的任何时刻总结为一个简短的身份验证器,类似于分类帐历 史记录的摘要。由于全局状态的随机访问特性(不像仅附加的分类帐历史记录),维护此身份验证的成本 非常高。然而,当大批量更新数据结构时,我们可以并行计算更新,也可以利用当每个单独的状态值发生 变化时必须更新的部分之间的任何重叠。

  Aptos区块链故意只定期认证全局状态,以减少重复的共享更新 。 在确定性和配置的时间间隔期间,网络会发出状态检查点事务,其中包括将全局状态身份验证器作为 其输出的一部分。这些版本被表示为状态检查点。两个检查点之间的差距越大,更新每个事务的状态身份 验证数据结构的摊余成本就越低。 使用状态检查点,可以以不信任的方式从其中读取任何状态值,而不存储所有全局状态。此功能对于 增量状态同步、跨验证器的分片存储、无状态验证器节点和存储受到限制的轻客户端等应用程序非常有用 。

  但是,由于状态检查点是周期性的,因此获得分类帐状态的特定版本的证明需要对缺失状态变更执行 额外的交易,或者从经过验证的分类帐历史中获得它们的包含证明。 状态检查点与分类帐历史记录中的特定事务处理版本绑定,因此绑定到与第7节中提到的事务处理批相 关联的时间戳。

  使用时间戳,轻客户端可以理解已验证的状态值的近因性。如果没有时间戳,一个轻的客户证明只能确保以前的状态的有效性,这几乎不能提供相关性的保证。此外,状态证明的时间戳对于跟踪 历史访问和审计目的是必要的,例如计算令牌储备中的令牌的平均每小时余额。 状态检查点可以根据以前的状态检查点和之后事务输出中的状态变化派生。因此,对稳定存储的持久 化状态检查点不需要在事务处理的关键路径上。此外,在持续使用状态检查点时,也存在有益的批处理效应。在内存中缓存最近的状态检查点(或者更确切地说是它们之间的增量),并且只将周期性的状态检查 点转储到稳定的存储中,可以大大减少存储带宽的消耗。选择要持久化的检查点的方式不会影响对经过身 份验证的数据结构的计算。因此,这是每个节点的选择:节点操作员可以在内存容量和存储带宽之间配置 适当的权衡。

  Aptos区块链旨在为生态系统中的所有参与者提供一个高吞吐量、低延迟的系统。因此,区块链必须提供 一个有效的状态同步协议,以传播、验证和持久化区块链数据到轻客户端、全节点和验证器[14]。此外, 同步协议还必须容忍网络内的资源约束和异构性,并考虑到不同的用户和用例。例如,它必须允许归档完 整节点来验证和持久化整个区块链历史和状态,同时也允许轻客户端只有效地跟踪Aptos区块链状态的一 小部分集。 为了实现这个属性,Aptos区块链利用验证器、全节点和其他复制器提供的经过验证的分类账历史和认 证的状态证明(见7.6.1节),以提供灵活和可配置的同步协议。具体来说,网络中的参与者可以根据不 同的同步策略来优化他们的用例和需求。

  例如,在全节点的情况下,Aptos允许多种同步策略,包括能够处理自时间开始以来的所有事务,或者 完全跳过区块链历史记录,并使用路径点只同步最新的区块链状态。在轻客户端的情况下,策略包括同步 部分区块链状态,e。g., 特定的帐户或数据值,并启用14 验证状态读取,e。g., 已验证的帐户余额正在抓取。在所有情况下,Aptos都允许参与者配置数据的数量 和年龄,以获取、处理和保留数据。 通过采用一种灵活和可配置的状态同步方法,Aptos可以适应各种客户端需求,并在未来继续提供新的 、更有效的同步策略。

  Aptos区块链将由一个广泛和多样化的社区拥有、运营和管理。原生Aptos令牌将用于交易和网络费用、协 议升级和链上/链外流程的治理投票,以及通过股权证明模型保护区块链。对Aptos标记经济学的完整描述 将在未来的出版物中发表。

  所有的Aptos交易都有一个天然气单价(在Aptos令牌中指定),允许验证者对网络中价值最高的交易进行优 先排序。此外,在流水线模型的每个阶段,都有多种机会丢弃低价值事务(允许区块链在系统容量下有效 运行)。随着时间的推移,将部署网络费用,以确保使用Aptos区块链的成本与硬件部署、维护和节点操 作的实际成本成比例。此外,开发人员将有机会在计算、存储和网络之间设计具有不同成本权衡的应用程 序。

  Aptos区块链上的每一个重要的特性更改和改进都将经过几个阶段,包括提议、实现、测试和部署。这种 结构为相关方和利益相关者提供反馈、分享关注和提供建议的机会。最后一个阶段,即部署,通常可以通 过两个步骤来实现。首先,一个带有新功能的软件版本将被部署到每个节点上,其次,将启用该功能,e 。g., 通过一个特性标志或链上的配置变量。 节点操作员的每个软件部署必须向后兼容,以确保新软件能够与支持的版本互操作。部署新软件版本 的过程可能会跨越多日,以考虑到在不同时区的操作人员和任何外部问题。

  一旦升级了足够数量的节点, 新功能的启用就可以由一个同步点触发,例如商定的块高度或历元更改。在紧急情况下(e。g., 当停机时 间不可避免时),启用可以通过节点操作员的手动和强制更改,在最坏的情况下,通过网络中的硬分叉。 与其他区块链相比,Aptos区块链对其在链上的配置进行了编码。

  每个验证器都能够同步区块链的当前状态,并自动选择正确的配置(e。g., 共识协议和Aptos框架版本)基于当前的链上值。由于这个功能, Aptos区块链的升级是无缝的和即时的。 为了为支持过程提供灵活性和可配置性,Aptos区块链将支持链上治理,即令牌持有者可以根据他们所 持有的令牌权重进行投票。链上的投票协议是公开的,可验证的,并且可以是即时的。链上治理还可以支持在不部署软件的情况下实现非二进制结果。例如,链上的领导者选举协议参数可以通过链上的治理进行 修改,而一个预先已知的同步点将无法处理动态修改,因为所有的更改都必须提前知道。 随着时间的推移,链上的治理可以部署在整个升级管理过程中。

  令牌持有者在链上投票以启用新的签名方案,链上的配置将被更新,并且更改将生效。 作为一个开源项目,Aptos区块链将依赖于强大的社区反馈,并使用链上治理来管理适当的流程。在某些条件下,可能仍然需要链外升级支持,但随着时间的推移将被最小化。

  要参与Aptos区块链上的交易验证,验证者必须拥有最低数量的Aptos代牌。在交易传播过程中,持股金额成比例地影响2f+1股份加权PoAv,以及在块元数据排序期间的投票权重和领导选择。验证者决定在他们自己和他们各自的支架之间的奖励分配。声明者可以选择任意数量的验证者,将他们的令牌进行预先商定的 奖励分割。在每一个时代结束时,验证者和他们各自的支架将通过相关的链上移动模块获得他们的奖励。 任何拥有足够股份的验证器运营商都可以自由加入Aptos区块链。所有参数,包括所需的最小桩率,都可以通过第9.2节中所述的链上启用过程来设置。

  如第7节所述,Aptos区块链能够通过其并行、批处理优化和模块化的事务处理管道来实现最佳的吞吐量和 硬件效率。其他的性能计划,如一致升级、增量写入、事务提示和关键路径缓存,将随着时间的推移继续 提高吞吐量和提高效率。

  今天,区块链吞吐量通常是以每秒的事务来衡量的。然而,考虑到事务和基础设施之间的广泛成本和 复杂性,这是比较系统的一种不精确的方法。事务延迟也同样存在缺陷,因为提交到最终性的起点和终点 在不同的实验中是不同的。 此外,一些系统需要对事务输入和输出的先验知识,并迫使逻辑事务被分成更小、更不复杂的事务。 拆分事务会导致糟糕的用户体验,并人为地影响延迟和吞吐量,而不考虑开发人员正试图完成什么。相比 之下,Aptos方法是让开发人员能够无限制地构建,并根据真实用例而不是合成事务测量吞吐量和延迟, 从而衡量吞吐量和延迟。

  Aptos区块链将继续优化单个验证器的性能,并试验扩展技术,添加更多的验证器的网络。这两个方向 都有明显的权衡。任何具有并行执行功能的区块链都可以通过需要更强大的硬件,甚至将每个验证器构建 为单独机器的集群来支持额外的并发性。然而,与验证器操作符的成本和复杂性相称的全局验证器的数量 存在实际的限制。云服务中无服务器数据库的兴起和流行表明,很少有实体能够有效地部署和维护这些类 型的复杂分布式系统。

  最初,Aptos区块链将以单一的账本状态启动。随着时间的推移,Aptos网络将采取一种独特的方法来实现 水平可扩展性,同时仍然保持分散化。这将通过多个分片分类帐状态发生,每个状态提供一个同质的API 和分片作为一个一流的概念。

  Aptos令牌将用于所有碎片上的交易费用、打桩和治理。 数据可以通过均质桥在碎片之间传输。用户和开发者可以根据自己的需要选择自己的分片方案。例如 ,开发人员可以在现有的碎片中提出一个新的碎片或集群用户,以实现高的碎片内连接。此外,碎片可能具有不同的系统特征。一个碎片可以通过计算进行优化16 17 ssd和另一个可以针对具有低计算特性的大型硬盘驱动器进行优化。通过在不同的碎片之间提供硬件的灵 活性,开发人员可以为他们的应用程序利用适当的系统特性。

  总之,齐构状态分片提供了横向吞吐量可伸缩性的潜力,允许开发人员跨碎片使用单一的通用状态进 行编程,并允许钱包轻松地为其用户合并分片数据。这提供了显著的性能优势,以及单一统一的移动智能合约平台的简单性。

  [3] D . 松冈,C。迪克森,E。拉扎林和R。哈克特(2022)介绍2022年加密状态报告。 在线可用:。com/标签/crypto状态2022/

  [6] D.迪尔,W。Grieskamp, J.公园,S。卡迪尔,M。Xu和E。钟先生,“快速、可靠的正式验证” 在系统的构建和分析的工具和算法中,D。FismandG。Rosu, Eds.图章:施普林格国际出版社,2022年,页。183 –200.

  [7] N.发出砰的响声的人(2021年)丢失的密码锁定了百万富翁的比特币财富。在线可用:

  [12] A. Spiegelman, N.吉里达兰。索尼诺和L。《霸鲨:Dagbft协议制作》 在第20届计算机和通信安全会议(中国化学会)中。中国化学会 22.美国加州洛杉矶:计算机机械协会,2022 年。