# 高性能公链竞赛中，Aptos 的独特优势是什么？

By [AptosGlobal](https://paragraph.com/@0xaptosworld) · 2023-11-08

---

原文：Luganodes

编译：Aptos Global

Aptos 是一个 L1 权益证明 (PoS) 区块链，高度关注可扩展性、安全性、可靠性和可升级性。Aptos 链使用具有拜占庭容错（BFT）的 PoS 共识机制运行，该网络分为全节点和轻客户端，允许不同级别的参与度。

为了最大限度地提高交易吞吐量，Aptos 采用了带有 BlockSTM 的并行交易引擎，可以同时处理多个交易。该平台利用 Move 语言，为创建自定义智能合约提供灵活性和简单性，同时确保安全性和可审计性。通过模块化设计，可以在节点级别实施更改，从而实现更快的开发和更新，Aptos 采用的逻辑数据模型确保资源不会被丢弃，从而提高数据完整性。交易处理的所有关键阶段，从传播到执行和认证，都是同时发生的，进一步提高了效率。通过结构化方法促进验证者的扩展，使网络能够访问额外的计算、网络和存储资源。

**Aptos链还强调统一的状态共享，通过促进高效的数据同步来增强验证节点的性能。本文，我们将一起深入了解Aptos 链上，交易是如何处理的？以及并行交易引擎如何提高网络的吞吐量。**

首先，我们需要了解几个Aptos 链上的关键概念。

**Aptos 的数据模型**

Aptos区块链的分类账状态捕获了所有账户的集体状态。版本控制是通过反映已执行交易数量的64位整数来完成的。任何人都可以通过提交交易来修改账本状态，每个交易都会生成相应的输出，包括用于操作账本状态、事件向量、gas 消耗详细信息和交易执行状态的写入集。签名的交易包含交易验证节点、发送者地址、Gas 价格、最大 Gas 量、序列号、过期时间和链 ID。

交易验证节点包括用于验证的数字签名，发送者地址代表交易发送者的账户， Gas价格表示执行交易时每单位Gas所支付的费用，最大 Gas 量指定交易可以消耗的最大 Gas 单位，序列号确保交易顺序并防止重放攻击，到期时间定义了交易的有效期，链 ID 识别交易所针对的区块链，从而增强安全性。

**Move 模块**

Aptos 区块链中的 Move 模块由 Move 字节码组成，并声明数据类型（结构）和过程。它由帐户地址和模块名称来标识。模块可以依赖于其他链上模块，从而实现代码重用, 每个帐户最多可以声明一个给定名称的模块，模块标识符对于其各自的帐户是唯一的。模块被组织到位于相同地址的包中。该包（包括字节码和元数据）由包所有者在链上发布。包元数据决定它是否可以升级或不可变，可升级包经过兼容性检查，以确保现有入口点功能保持不变，并且内存中不存储任何资源，同时允许添加新功能和资源。

**交易、帐户和资源**

在 Aptos 区块链上执行交易期间，Move 模块会发出交易，每个模块都可以定义其事件并确定何时发出它们。事件具有唯一的键，可以查询以检索事件详细信息，Aptos 中的帐户地址是 256 位唯一标识符。可以使用“create\_account” 函数创建新账户，交易可以根据需要自动创建账户。交易生成事件但无法读取它们，确保执行基于当前状态和输入。账户地址源自公共验证密钥，用户可以使用关联的私钥签署交易。可以在一个钱包中管理多个帐户，提供假名并提高并发性。Aptos 专为未来的隐私增强功能而设计。

Aptos 区块链中的账户地址可以具有关联的数据值，每个值对应于特定类型。每个帐户只允许每种类型有一个值。还可以使用通用类型，将不同的实例化视为不同的类型。定义数据类型的模块决定了值的突变、删除和发布的规则。Move 的安全和验证规则限制对其他模块中定义的数据类型的直接操作。每种类型只有一个顶级值的限制可以通过使用具有内部字段的包装类型来克服。需要注意的是，并非所有数据类型都可以存储在链上，因为顶级值需要键功能，嵌套值需要存储功能。拥有这两种能力的数据类型称为资源。

在 Move VM 中，每个帐户都由值和键值数据结构（称为表条目）组成。这种数据布局可以对多个帐户中的少量数据和少数帐户中的大量数据进行高效操作。Move 模块单独存储在其命名空间下，创世账本状态定义了区块链初始化期间的初始账户集及其关联状态。随着采用和技术的进步，Aptos 计划通过引入多个分片来提高吞吐量并支持跨分片资产交易来进行扩展。每个账本状态都将维护各自分片的链上资产，提供细粒度的键值数据存储，并具有一致的存储访问成本。

**Aptos 中的并行交易处理**

为了优化吞吐量和并发性，同时降低复杂性，Aptos 区块链上的交易处理被分为不同的阶段。这些阶段独立运行并且可以并行执行，类似于现代超标量处理器架构。这种方法不仅提高了性能，而且还支持新形式的验证者-客户端交互。

当特定交易包含在一批持久化交易中时，客户端可以收到通知，表明即将提交。当一批交易被订购时，他们还可以收到通知，从而允许他们在本地执行交易以获得更快的结果。此外，客户端可以选择等待验证节点执行经过验证的交易，并根据经过验证的结果同步其状态。Aptos 的模块化设计有助于更快地开发和对各个模块进行有针对性的更改，通过利用额外的计算、网络和存储资源来提高可扩展性。

![](https://storage.googleapis.com/papyrus_images/a30822e9897893428598c79ddadb601e7e3996d6785021c70b52bbc136e37872.png)

**批量处理**

批量处理是 Aptos 区块链各个操作阶段使用的关键优化技术，交易在传播过程中被验证节点分组为批次，并且这些批次在共识过程中进一步组合成块。执行、存储和账本认证阶段也可以批量操作，从而可以重新排序，减少重复计算或签名验证，并促进并行执行。

尽管批处理可能会引入一些延迟，例如在传播之前等待一定时间或累积特定数量的交易，但它是可配置的以平衡延迟和效率。这种灵活性允许去中心化网络根据最大等待时间和批量大小等参数自动优化批量。批量处理还支持高效的费用市场，实现交易优先级并防止因过多的客户端请求而导致意外的拒绝服务攻击。

**持续的交易传播**

在Aptos区块链中，交易传播与共识过程是分离的。验证节点利用可用的网络资源，不断地同时向彼此发送批量交易。每个验证节点都会保留接收到的批次，并将批次摘要上的签名发送回原始验证节点。

为了防止无限持久批次和耗尽存储资源导致的拒绝服务 (DoS) 攻击，每个批次都与一个时间戳相关联，该时间戳允许每个验证节点进行有效的垃圾收集。此外，还实施了每个验证者配额机制，以防止存储空间耗尽，即使在潜在的拜占庭攻击等极端情况下也是如此。在就持久性稳定存储达成一致之前，批次还要经过大小限制验证。此外，交易重复数据删除和缓存等优化可降低存储成本并确保与并行执行引擎的高效集成。

**区块元数据排序**

Aptos 区块链引入了创新，以解决共识缓慢以及区块链吞吐量和延迟的主要瓶颈的误解。通过将非协议相关任务（例如交易传播、执行/存储和账本认证）与共识阶段解耦，Aptos 实现了高交易吞吐量和最小化延迟。

**并行交易执行**

一旦共识区块元数据被排序，交易就可以由任何验证者、全节点或客户端执行。诚实的验证者随着时间的推移不断接收交易批次，确保即使他们在执行阶段没有收到批次，他们也可以从具有更高权重的验证节点下载它们。并行执行是 Aptos 区块链的一个重要目标，它促进数据模型和执行引擎的并行执行，从而实现高效、同步的交易处理。

Move数据模型支持数据和模块的全局寻址，从而能够并行执行不存在数据和账户冲突的交易。重新排序交易可以减少 Aptos 区块链管道设计中的冲突并提高并发性，即使交易修改相同的数据，Aptos 区块链也会引入增量写入，这是一个描述对账户状态而不是最终状态的修改的新概念。这允许并行处理交易，并通过以正确的顺序应用增量写入来解决冲突，以确保确定性结果。Aptos 区块链将继续增强数据模型，以改善并发性和开发人员体验，利用语言和平台级别的读/写提示和平台特定功能等功能。

Aptos 区块链中的 BlockSTM 并行执行引擎通过检测和管理有序交易中的冲突来实现最大并行度。它使用乐观并发控制和多版本数据结构来处理冲突并避免写入冲突，批量交易乐观地并行执行，并在执行后进行验证，验证不成功会导致重新执行。BlockSTM 实现了显着的执行加速，在低争用情况下高达 16 倍，在高争用情况下高达 8 倍以上。

它动态地从工作负载中提取并行性，无需预先了解数据位置，从而能够同时执行更复杂的事务。事务重新排序可以进一步优化并发性，只要它在验证节点之间是确定的。BlockSTM 和交易重新排序共同提高执行并行性，并且交易读/写访问提示可用于额外的并发性。

**批量存储**

在 Aptos 区块链的并行执行阶段，会生成组中所有交易的写入集，这些写入集可以存储在内存中，作为后续区块或要执行的区块集的缓存。通过将写入集缓存在内存中，重复写入只需写入稳定存储一次，减少了存储操作的次数。如果验证节点在存储内存中写入集之前失败，它可以简单地从区块元数据排序阶段恢复并行执行。

这种写集批处理与并行执行的解耦确保了高效操作，并允许在发生故障时恢复。批量写入集不仅可以减少存储操作，还可以实现更高效、更大的输入/输出 (I/O) 操作。分配给写集缓存的内存量可以在每台机器上手动配置，从而提供自然的背压机制，此配置允许根据特定的 I/O 和内存环境调整系统，写入集批次的粒度也可以独立于并行执行块的粒度进行调整，从而为优化系统性能和资源利用率提供了灵活性。

**分类账本认证**

在管道的这个阶段，每个验证节点都计算了已提交交易块的更新状态，然而，为了有效地支持经过验证的轻客户端和状态同步，Aptos区块链结合了分类账本历史和分类账本认证。值得注意的是，分类帐认证不是交易处理中的关键步骤，可以单独执行，即使希望它完全独立于主流程。

随着 Aptos 网络中 BlockSTM 的出现，跨节点通信有望实现高达 160K TPS 的激增，与 Solana 或 Sui 不同，无需指定交易中要访问哪些数据，这种新颖的交易处理方法帮助 Aptos 在开发者社区中产生了巨大的吸引力！

---

*Originally published on [AptosGlobal](https://paragraph.com/@0xaptosworld/aptos-9)*
