# 愿景

来源：[The Aptos Vision](https://medium.com/aptoslabs/the-aptos-vision-1028ac56676e)

作者：[Avery Ching](https://www.linkedin.com/in/averyching/)

正如 [Aptos 的起源](/gai-lan/qi-yuan.md) 中所述，我们的使命是为数十亿人创造对去中心化资产的普遍和公平的访问。 web3 堆栈庞大而丰富，从智能合约平台到开发人员基础设施和工具、钱包和去中心化应用程序。在未来几年，我们希望与生态系统参与者建立并合作，以改善整个空间。 Aptos 之旅始于与去中心化社区合作<mark style="color:orange;">部署一个安全、可扩展和可升级的智能合约平台</mark>。

今天有许多智能合约平台部署在生产环境中——每个平台都有自己独特的优势和权衡。我们相信，需要一个快速创新和适应性强的区块链来满足当今和未来数十亿人的需求。我们的信念是，用户体验需要在安全性和可扩展性方面得到显着改善，才能接触到大众（尤其是非加密原生用户）。在过去三年中，我们的团队已经能够研究和开发创新理念（请参阅下面的链接以及我们的众多出版物）并将它们安全地部署到生产环境中。下面，我们将简要概述我们的计划以及我们将如何支持对网络进行频繁和快速的升级。在接下来的几个月里，我们将分享一系列关于实现我们目标的当前和新举措的深入探讨和随附的技术论文。

## 安全和可靠 <a href="#f7e2" id="f7e2"></a>

数十亿互联网用户已经熟悉购买商品和服务以及交换或存储价值。为了加快互联网用户对 web3 的采用，我们需要在区块链层面取得一些进步，以进一步增强 web3 堆栈的其余部分。以下是我们团队当前关注的一些领域，这些领域推动了安全性和可靠性。

### **Move** 语言：安全灵活的区块链语言

[Move 语言](https://github.com/aptos-labs/aptos-core/blob/main/developer-docs-site/static/papers/aptos-move-a-language-with-programmable-resources/2020-05-26.pdf) 专为在区块链上进行安全资源管理和可验证执行而设计。事务执行是确定性的、封闭的和计量的。确定性和封闭性意味着交易执行的输出是完全可预测的，并且仅基于交易中包含的信息和当前分类帐状态。计量是针对事务执行级别的拒绝服务攻击的重要防御措施。 [Move 证明者](https://arxiv.org/pdf/2110.08362.pdf) 可以通过表达性规范语言正式验证 Move 模块的属性，并且速度足够快，可以作为持续集成测试的一部分运行。Move 资源，受线性类型启发，静态确保资源得到保存，不会被复制或意外破坏——完全避免了一整类潜在的攻击。我们的区块链和 Move 语言是在三年多前同时共同开发的。账户、交易费用、标准库、验证节点管理和配置都通过 Move 实现。我们喜欢 Move 的安全性，并且很高兴能帮助围绕它建立一个广泛的生态系统。

### 生产级、高保证 BFT 共识协议

我们的团队开发了生产级、低延迟拜占庭容错 (BFT) 引擎。在过去三年中，我们已经实施了该[协议的第四次迭代](https://github.com/diem/diem/blob/main/developers.diem.com/static/papers/diem-consensus-state-machine-replication-in-the-diem-blockchain/2021-08-17.pdf)（最先进的 [HotStuff](https://arxiv.org/abs/1803.05069) 衍生产品）。在此期间，我们在私有主网环境中升级了共识协议，该环境具有多样化的运营商和零停机时间。我们对 [BFT 协议的第一个实现](https://github.com/aptos-labs/aptos-core/blob/main/developer-docs-site/static/papers/aptos-consensus-state-machine-replication-in-the-aptos-blockchain/2019-06-28.pdf) 添加了一个主动起搏器，它使用超时来同步验证器，这比等待增加的超时要快得多。随着我们对协议的最新改进，区块只需两次网络往返即可提交，从而使亚秒级的最终确定性成为常见情况。我们[新颖的信誉系统](https://arxiv.org/abs/2110.00960)分析链上状态并自动更新领导者轮换以适应无响应的验证者，而无需任何人为干预，使其非常适合去中心化环境。此外，我们的协议清楚地将活性与安全区分开来。无论网络不可达或非安全核心以某种方式受到损害，只要 BFT 诚实保证得到维护，链就不会分叉。我们的共识协议的安全性已经过审计和[正式验证](https://www.garillot.net/talks/2020-05-27-mechanized-proof-libra)。

[我们的研究](https://arxiv.org/pdf/2101.03715.pdf)表明，可以通过利用超过 2f+1 个节点对一个块进行投票的时间段来增加我们当前 BFT 协议的阻力的简单扩展。这些更强有力的承诺提供了更高的信心，即网络不会在未来分叉，并进一步提高用户对超越标准 BFT 属性的最终确定性的信心。

### **Aptos Core 的实现和测试**

在不同环境中运行的大量验证器对于去中心化和安全性都很重要。此外，验证器软件必须安全地设计以防止攻击——这是我们选择 Rust 和 Move 作为实现协议和智能合约逻辑的首选语言的主要原因之一。

Aptos 区块链的核心安全属性依赖于验证器、Move 模块和 Move VM 的正确实现。我们已经将代码模块化并确定了一个最小[可信计算库](https://en.wikipedia.org/wiki/Trusted_computing_base)（TCB），它隔离了关键的安全属性（例如共识协议的安全性和执行正确性）。模块化和 TCB 的使用使我们能够利用高保证开发技术。此外，对于安全关键组件，我们可以对代码审查、依赖关系、测试和执行环境安全实施更严格的要求。

我们将数十年的互联网规模开发、测试和部署软件的集体经验与在去中心化环境中可靠运行的新想法结合起来。在每次代码提交之前，我们都会运行一系列分布式网络测试，例如负载测试和拜占庭攻击，然后评估正确性和性能结果。在主网部署之前，我们还分阶段向多个测试网络推出，每一步都进行了大量的负载和寿命测试。我们即将在第二季度推出的激励性测试网将重点关注构建关于节点操作的社区学习。我们已经在与世界领先的节点运营商合作准备和测试各种灾难恢复场景方面拥有丰富的经验，并期待构建最可靠的去中心化网络。

### 更安全的帐户密钥恢复和轮换协议

为了防止密钥被盗，Aptos 支持任何帐户轮换其私钥的能力。验证者还可以定期轮换他们的共识密钥，以提高安全性。为了避免数十亿美元的价值因密钥丢失而被锁定的问题，我们还致力于开发可直接集成到区块链账户模型中的密钥恢复新技术。

### 多代理交易

[多代理交易](https://github.com/diem/dip/blob/main/dips/dip-169.md) 利用 Move 的签名者类型，允许在单个交易中跨多个链上账户进行任意数量的原子操作。这可以在单个交易中完成两个或多个链上实体之间的原子交换、K-of-N 批准以及任何任意原子操作。使这些复杂的交互不可分割可以提高安全性和性能。当在单个账户中结合多代理交易和多签名支持时，可以实现更广泛的可组合模式和用例。

## 可扩展性和性能 <a href="#id-6062" id="id-6062"></a>

众所周知，高交易费用、低吞吐量和高最终率限制了区块链用例，并推动了对性能优化的 L1 和 L2 区块链的需求。可扩展性的一个不太受欢迎的方面是链上存储非常昂贵，并且在扩展到数十亿个账户和数万亿个链上和链下资产时面临性能挑战。我们的目标是全面关注用户体验的性能。我们认为 L1 区块链应该承担更多的可扩展性责任，以简化和主流化用户体验。

### 端到端指标和测量

多年来，围绕区块链性能指标存在巨大的混乱。让我们从最简单的定义开始。

* Throughput（吞吐量） — 每秒处理的事务数 (tps)
* Finality（最终性） — 从客户端创建并提交交易到另一方确认交易已提交的时间

吞吐量和最终性受许多因素影响。首先是交易的复杂性。将代币从 Bob 的账户转移到 Alice 的账户的简单点对点交易比预先生成 1,000 个 NFT 的交易便宜得多。验证者和账户的大小和分布也会对性能产生很大影响。有多少个验证器，它们的硬件规格是什么？有多少个账户（例如 10,000 对 10 亿个账户）？帐户大小分布是多少（例如 1k 与 10 MB）？什么是访问模式分布（例如零事务冲突到完全顺序依赖）？交易之间的排序保证（部分排序或全排序）是什么？它们是否非常适合智能合约？这些因素使得很难客观地比较不同网络之间的性能。在考虑衡量绩效的不同方法时，比较会更加令人困惑。例如，我们对一系列基于 DAG 的共识协议（即  [All You Need Is DAG](https://dl.acm.org/doi/abs/10.1145/3465084.3467905), [Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus](https://arxiv.org/abs/2105.11827) 和 [Bullshark: DAG BFT Protocols Made Practical](https://arxiv.org/pdf/2201.05677.pdf)）的研究表明，这类协议可以范围从 125,000 到 160,000 tps 甚至更高。然而，这些吞吐量数字并不代表端到端的区块链吞吐量，因为它们只考虑了共识、网络和部分存储方面的考虑。它们没有考虑其他重要因素，例如生产区块链中的交易执行时间、帐户访问模式或经过身份验证的数据结构（例如 Merkle 树）。在最终性方面，区块时间经常被误认为是最终性，而实际上，区块时间是最终性的一个输入因素。

我们相信基准测试的透明度和开放性，解释测试方法之间的差异，并清楚地说明组件与端到端结果。在接下来的几个月中，我们将分享详细的端到端性能发现和测试方法。随着时间的推移，我们打算分享基准测试框架并比较不同区块链上各种用例的性能特征。

### 通往高吞吐量和快速终结的旅程

这一旅程的一个重要步骤是将共识协议与交易执行完全分离。共识协议就提议的交易顺序达成一致。在单独的协议中和关键路径之外，验证者执行交易并就最终交易排序和执行结果达成一致。集成共识和执行的协议更简单，但由于它们的相互依赖关系，在吞吐量和延迟方面付出了更高的成本。

如前所述，我们拥有经过多年测试的最低延迟、最先进的 HotStuff 变体。在最常见的情况下，该协议承诺在两个完整的网络往返中达成一致——即使全球网络往返需要多达 250 毫秒，也很容易达到亚秒级。当受到攻击或网络中断期间，链上信誉系统会自动将关闭验证者的负面影响降至最低。我们已经开始研究和开发下一个共识协议迭代，以推进交易传播，并期待在今年晚些时候使用这项技术升级测试网。

在 [将共识协议与执行管道解耦](https://github.com/diem/dip/pull/214) 后，下一个瓶颈是交易执行时间。使用[受软件事务内存启发的新技术](https://arxiv.org/abs/2203.06871)，我们在仅执行基准测试中仅使用 32 个内核实现了每秒超过 130k 的事务。开发人员可以免费获得这种好处，因为我们的执行框架会自动利用任何工作负载中固有的并行性。无需提供来自开发人员的额外信息。也许最重要的是，高吞吐量的区块链意味着用户的低交易费用。

性能的最后一个瓶颈——也是最被忽视的——是经过身份验证的数据结构和相关的状态存储。一个挑战是，在验证账本状态（例如账户余额、智能合约等）时，内存中的 Merkle 树在小规模上是有效的，但是，将大型 Merkle 树写入持久存储是一个瓶颈。我们正在通过探索更高的分支因子、访问模式优化的缓存和仔细的版本控制来设计我们经过身份验证的数据结构，使其对数据库友好。我们目前还在开发对大型帐户的支持——能够访问每个帐户的单个 Move 资源，而不是作为单个 blob 低效地访问，并通过将 Move 资源拆分为访问模式优化的块来研究未来在 Move 资源中进行更精细访问的路径。分层存储和状态租金是支持所有类型的新用例的重要优先事项。

### 并行账户交易，同时保留对交易排序的控制

以太坊普及的序列号方法为用户提供了对交易排序、高效内存池过滤和有限内存使用的完全控制。我们已经尝试使用[抗冲突的序列号](https://github.com/diem/dip/blob/main/dips/dip-168.md)来增强序列号方法，以允许帐户在序列号窗口上并行，同时仍然允许用户在必要时控制交易排序。我们未来的工作是考虑更灵活和可组合的并行性的替代实现。

### 对轻量级、完整、归档和验证节点的快速灵活的状态管理支持

对于高吞吐量区块链，节点之间的状态同步可能是 CPU 密集型的。我们支持一系列不同的状态同步协议，这些协议可以权衡 CPU 和网络带宽。为了支持廉价的全节点，我们有一个协议，可以同步交易及其执行结果，由法定人数的验证者签名，允许节点以更高的网络吞吐量为代价跳过计算，并直接从已执行的账本状态更新账本状态结果。

客户端无需像大多数区块链那样下载区块链来获取最新的账本，而是可以使用顶级 [交易累加器](https://github.com/aptos-labs/aptos-core/blob/main/developer-docs-site/docs/reference/glossary.md#merkle-accumulator) 来获取最新提交的交易。如果需要，这还允许对以前的交易和分类帐历史进行廉价的修剪。[受信任的航路点](https://github.com/diem/diem/issues/1384) 还允许节点快速同步以快速赶上。

## 可升级性 <a href="#ba77" id="ba77"></a>

网络必须快速适应支持不断变化的 web3 需求。区块链用例和技术改进不断增长和跨越式发展。例如，在 2021 年，NFT 成为一个 [400 亿美元的市场](https://www.ft.com/content/e95f5ac2-0476-41f4-abd4-8a99faa7737d)。许多人预测 2022 年将是 DAO 获得采用的一年。正在开发新的共识协议和智能合约语言。隐私保护交易变得越来越实用。不幸的是，今天的许多网络在启动后都难以做出重大的协议改进。一些尝试进行重大升级的网络经历了数小时的停机时间，有时还经历了意外的硬分叉。我们认为这是推出如此多新网络的关键原因之一。不幸的是，网络的爆炸式增长带来了围绕用户体验的挑战，因为它需要熟悉不同的环境并找出最适合特定用例的网络。我们设计和构建的 Aptos 区块链可作为关键资产进行升级，并在过去几年中成功执行了几次重大升级而没有停机。为了实现这一目标，验证者的管理和配置通过链上状态进行管理——方便社区投票和快速执行升级。强大的测试和部署实践确保安全可靠的部署。

## Aptos 区块链历史 <a href="#id-121c" id="id-121c"></a>

Aptos 技术栈由 30 多人的加密平台研究和工程团队研究、设计和开发，他们具有共识、密码学、分布式系统、形式验证、安全等领域的专业知识和博士学位。代码库已大幅增长超过 3+年拥有 292 位独特的开发人员和数十个社区驱动的改进建议。它通过许多不同的用例在生产环境中进行了实战测试，并由众多企业运营商运营了一年多，有十几种可能的灾难场景。我们在零停机时间的私有主网上进行了多次成功的重大升级。该代码库是开源和社区管理的，其长期目标是构建可用于许多网络的基础设施。社区已经准备好并且很高兴看到这项技术的发布并解锁许多新的应用程序。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.aptos.movemove.org/gai-lan/yuan-jing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
