1. 首页 > 自媒体

Aptos:安全、可扩展和可升级的 Web3 基础设施

随着全新的互联网基础设施区块链的崛起,开发者正以飞快的速度部署着数以万计的去中心化应用程序。遗憾的是,由于稳定性差、成本高、低吞吐量及一些安全问题,区块链尚未被广泛应用。为了能够在 Web3 时代被广泛使用,区块链基础设施应该效仿云基础设施的特点,即为众多的去中心化应用提供可信、可扩展、经济高效且持续优化的平台。

为应对这些挑战,我们以可扩展、安全、可靠和可升级为核心设计原则推出 Aptos 区块链。Aptos 区块链在过去三年中由全球 350 多名开发人员共同开发 [1]。它在共识、智能合约设计、系统安全、性能和去中心化方面提供了新的创新。这些技术的结合将为把 Web3 带向更广泛的人群提供一个坚实的基础:

1、Aptos 区块链原生集成并使用 Move 语言 来实现快速安全的交易执行 [2]。Move prover,一个用 Move 语言开发的智能合约形式化验证工具,为合约常量和运行提供额外保障。这种注重安全的做法,可以让开发人员能够更好地保护软件,以免受恶意实体的攻击。

2、Aptos 数据模型允许灵活的密钥管理和混合托管选项。这与签名前的交易透明性和实用的轻客户端协议一起,共同提供了更安全、更值得信赖的用户体验。

3、为了实现高吞吐量和低延迟,Aptos 区块链在交易处理的关键阶段使用了流水线和模块化方法。具体而言,事务分发、区块元数据排序、并行事务执行、批量存储和账本认证等操作会同时运行。这种做法充分利用了所有可用的硬件资源,提升了硬件效率,并实现了高度并行处理。

4、与需要读写前获取被读写数据而破坏交易原子性的并行执行引擎不同,Aptos 区块链没有对开发者设置这种限制。它通过保证复杂的交易的原子性,为应用程序提供更高的吞吐量和更低的延迟,并简化了开发。

5、Aptos 模块化架构保证了客户端的灵活性,并针对频繁的升级进行优化。此外,为了迅速部署新的技术创新和支持新的Web3使用案例,Aptos 区块链提供了嵌入式的链上变化管理协议。

6、Aptos 区块链正在试验未来超越单个验证器性能的举措:其模块化设计和并行执行引擎支持验证者的内部分片,而同质状态分片(homogeneous state sharding)提供了水平吞吐量可扩展的潜力,而不会给节点运营商带来额外的复杂性。

[1] 法律免责声明:本白皮书及其内容不是出售任何代币的要约,也不是诱导购买任何代币的要约。我们发布这份白皮书只是为了接受公众的反馈和意见。 本文件中的任何内容都不应被理解为对 Aptos 区块链或其代币(若有)将如何发展、利用或累积价值的保证或承诺。Aptos 仅概述了其目前的计划,这些计划可能会酌情改变,其成功与否将取决于其控制之外的许多因素。这种未来的陈述必然涉及已知和未知的风险,这可能导致未来时期的实际表现和结果与我们在本白皮书中描述或暗示的有重大差异。Aptos 不承担更新其计划的义务。不能保证白皮书中的任何陈述将被证明是准确的,因为实际结果和未来事件可能有很大的不同。请不要过分依赖未来的声明。

1. 序言

在 Web2 时代,诸如通讯、社交媒体、金融、游戏、购物以及音视频流媒体等服务, 是由掌握了用户数据权限的中心化公司来提供(例如 Google、Amazon、Apple 和 Meta)。针对目标用例,这些公司利用具备特定应用的软件,来优化开发基础设施,并利用云端基础设施向用户部署这些应用程序。云端基础设施可提供虚拟或物理基础设施服务的访问,例如虚拟机(VM)租用和在世界各地数据中心内运行的裸机硬件(例如 AWS,Azure,和 Google Cloud)。因此,建立能够扩大到数十亿用户的 Web2 互联网服务从来没有像今天这样容易。然而,Web2 要求用户明确信任中心化实体,这一要求愈发引起社会的担忧。

为了消除这种担忧,新的互联网时代已经开始:Web3。在 Web 3 版本的互联网中, 出现了区块链来提供去中心化、不可篡改的账本,让用户能够安全可靠地相互交流,而不需要信任控制中间人或中心化实体。与 Web2 互联网服务和应用程序依赖云基础设施类似,去中心化的应用程序可以使用区块链作为去中心化的基础设施层,从而触达全世界数十亿用户。

然而,尽管现已存在许多条区块链,但是 Web3 尚未得到广泛采纳[3]。虽然技术不断地推动着行业发展,但现有的区块链仍是不可靠的。昂贵的交易费用,低吞吐量,因安全问题资产经常遭受损失,并且无法支持实时响应。与云端基础设施赋能 Web2 服务,成功触达数十亿人群相比,区块链还并没有使得 Web3 应用达到同样的高度。

2. Aptos 愿景

Aptos 的愿景是提供一个能够为 Web3 带来主流应用的区块链,并授权一个去中心化应用的生态系统来解决现实世界的用户痛点。我们的使命是通过提供灵活和模块化的区块链架构,推动区块链可靠性、安全性和性能方面的新高度。该架构应支持频繁升级,快速采用最新的技术,并能对新兴的用例提供一流支持。

我们设想建立社区管理运营的去中心化、安全和可扩展的网络。当世界各地对基础设施的需求增长时,区块链的计算资源就会横向和纵向扩展以满足这些需求。随着新的用例和技术进步的出现,网络应该在不干扰用户的情况下频繁地、无缝地升级。让用户不再关注基础设施相关问题。开发人员和用户将可以访问许多不同的密钥恢复、数据建模、智能合约标准、资源使用权衡、隐私和可组合性选项。用户确信他们的资产是安全,可用,并且几乎可以成本费访问。任何人都能够安全、容易地与全世界不受信任的各方进行不可篡改的交易。区块链将像云基础设施一样无所不在。

为了实现这一愿景,必须在技术方面取得重大进展。过去三年里,我们开发,升级和部署 Diem 区块链(Aptos 区块链的前身)的经验已经证明,网络可以在不中断客户端的情况下持续升级协议[4]。2020 年初,Diem 主网被部署到拥有多个钱包供应商的十几个节点上。在之后一年,我们团队进行了共识协议和核心框架两次重大的升级。两次升级都在用户不停机的情况下顺利完成。在 Aptos 区块链中,我们对技术栈进行了一系列彻底的改进,同时还受 Diem 区块链启发将安全、透明、以及可频繁的升级作为核心功能。我们特别强调新的交易处理方法(如第 7 节所述)以及去中心化和网络治理的新方法。

随着 Aptos 区块链的不断改善和发展,, 我们将不断更新协议和设计,届时发布最新版的白皮书。在下文中,我们描述了 Aptos 区块链的现状以及今后的计划。

3. 概述

如图 1 所示,Aptos 区块链由 1 组验证者(Validator)组成,他们使用拜占庭容错(BFT),权益证明(POS)的共识机制来接收与处理用户的交易。代币持有人在他们选定的验证者(Validator)中锁定或者质押他们手上的代币。每个验证者的共识投票权重与所质押代币量成正比。一个验证者可以是活跃的状态,并参与到共识决策中。同样,一个验证节点如果没有足够的质押代币,或被从验证者集合中轮换出来,亦或在同步区块链状态时离线,再或共识协议因历史表现不佳而拒绝其参与共识,那么该验证节点也可能处于不活跃的状态。

客户端是系统中需要提交交易或查询区块链状态和历史的任何部分。客户端可以选择下载并验证那些被验证节点签署验证过的数据。*全节点(Full Node)*是从验证节点或网络中其他全节点复制交易和区块链状态的客户端。他们可能会根据需要裁剪掉一些交易历史和区块链状态记录,以重新获得充足的存储空间。轻客户端 只维护当前验证节点的集合,并且可以从全节点中安全地查询部分区块链状态。钱包是轻客户端的常见例子。

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

通过新的智能合约编程语言 Move [5],快速且安全地执行链上逻辑,以及保证简单的可审计性和程序上的可分析性。Aptos 区块链从 Diem 区块链中继承使用并不断发展 Move。

通过分批、流水线和并行化的交易处理方法实现了极高的吞吐量和低延迟。

与预先识别要读取/写入的数据且破坏交易原子性的现有并行执行引擎不同,Aptos 区块链创新性的使用 Block-STM 技术作为并行执行引擎,有效地支持了任意复杂交易的原子性。

通过快速的、权益质押验证节点的轮换以及对验证节点的信誉跟踪,实现对性能和去中心化治理的优化。

可升级性和可配置性是最重要的设计原则,从而使基础设施可以拥抱新的使用用例和最新的技术。

通过了诸如威胁建模在内的严格的组件级测试和无缝部署的模块化设计,保证了操作的高度安全性和可靠性。

保证去中心化的水平吞吐量可扩展性。源自程序与数据模型的分片(sharding)是水平扩展中的一个重要概念。

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

4. Move 编程语言

Move 是一种注重安全和灵活性的新型智能合约编程语言。Aptos 区块链使用 Move 的对象模型来表示其账本状态(见第 5.5 节),并使用 Move 代码(模块)来编码状态转换的规则。用户提交的交易中,可以包括发布新模块、升级现有的模块、执行模块内定义的接口功能,以及可以直接与模块的公共接口互动的脚本。

Move生态系统包含一个编译器、一个虚拟机和许多其他的开发工具。Move 受到 Rust 编程语言的启发,该语言通过线性类型等概念来明确数据的所有权 Move 强调了资源的稀缺性、保存和访问控制。Move 模块定义了每个资源的生命周期、存储和访问模式。这确保了像 Coin 这样的资源不会在没有适当凭证的情况下产生,且不能被重复消费,也不会消失。

即使存在不受信的代码,Move 仍然可以利用字节码验证工具来保证类型和内存安全。为有助于编写更可信的代码,Move 包括了一个类型验证器,Move Prover [6],能够根据给定的规范,验证 Move 程序的功能正确性,该类型验证功能已经集成到了 Move 语言中。

除了用户帐户和相应的帐户内容,分布式账本的状态还包含 Aptos 区块链的链上配置。这个网络配置包括当前活跃状态的验证节点的集合,质押的属性,以及 Aptos 区块链内各种服务的配置。Move对模块可升级性和全面可编程性的支持实现了无缝的配置变化,并支持对 Aptos 区块链本身的升级(这两类升级已经在非公开的主网上执行了多次,并且没有宕机记录)。

Aptos 团队已经进一步增加了 Move 的特性,支持更广泛的 Web3 用例。如下文第 5.5 节所述,Aptos 区块链实现了细粒度的资源控制。这个特性不仅有效支持了并行执行,而且几乎固定了访问与更改数据的成本。此外,Aptos 区块链提供了建立在细粒度存储之上的表支持,这使得大规模的数据集(例如,大量的 NFT 集合)可以在一个账户中实现。同时,Aptos 支持完全在链上体现的共享或自动化账户。这使得复杂的去中心化自治组织(DAO)能够共享账户,以及将这些账户作为异质资源集合的容器。

5. 逻辑模型

Aptos 区块链的 账本状态 代表了链上所有帐户的状态。账本状态使用一个无符号的 64 位整数进行版本划分,对应与当前系统所执行的交易数量。任何人都可以向 Aptos 区块链提交交易以修改账本状态。交易执行后,会生成一个交易输出 。一个交易的输出包含零个或多个操作来操纵账本状态(称为 write sets),一个由此产生的事件集合(见第 5.1.1 节),消耗的 gas,以及已执行的交易状态。

5.1 交易

一个经过签名的交易包含以下信息:

交易身份验证器: 发送者使用包括一个或多个数字签名的交易身份验证器来验证交易是否已被验证。

发送方地址: 发送方的帐户地址。

Payload:Payload 要么是指链上现有的接口函数,要么是指包含要作为内联字节码执行的函数(称为脚本)。此外,一组输入参数用字节数组编码。对于点对点交易,输入参数包含接收方的信息和转入金额。

Gas 价格(以指定货币/Gas 单位):这是发送方愿意为执行交易而支付的每单位 Gas 的金额。Gas 费指的是支付计算、联网和存储的费用。Gas 是一种抽象的计算单位,没有固有的实际价值。

最大 Gas 单位数(Maximum gas amount): 最大 Gas 是在交易中止前允许消耗的最大 Gas 单位数。帐户内必须至少有 Gas 单价乘以最大 Gas 单位数的余额,否则交易将在验证过程中被终止执行。

序列号: 交易的序列号。交易中的序列号必须与交易执行时发送方帐户中存储的序列号相匹配。交易成功执行后,将递增账户序列号,以防止重放攻击。

到期时间: 一个时间戳,过了这个时间戳,交易将不再有效。

区块链 ID: 识别区块链中的交易有效性,为用户提供进一步的保护,防止签署错误。

在每个版本 i,状态变化由元组(Ti, Oi, Si)表示,分别包含交易、交易输出和交易结束后的账本状态。给定一个确定性的函数 Apply,执行交易 Ti,账本状态 Si-1,产生交易输出 Oi 和新账本状态 Si。也就是说,Apply(Si-1*,Ti*) → ?Oi,Si?。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/zmt/13336.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456