# Aptos:安全、可扩展、可升级的Web3基础设施 **Published by:** [Aptos Hub](https://paragraph.com/@aptos-hub/) **Published on:** 2022-08-26 **URL:** https://paragraph.com/@aptos-hub/aptos-web3 ## Content 2022年8月11日 v1.0 白皮书中文翻译:Aptos Hub 在此鸣谢BeepCrypto团队对内容的贡献 感谢TigerVC DAO,Mars DAO,MPace DAO对内容的校对 摘要 区块链作为一种新的互联网基础设施的兴起,导致开发人员以快速增长的速度部署了数以万计的去中心化应用程序。不幸的是,由于频繁的中断、高成本、低吞吐量限制和众多的安全问题,区块链的使用还没有普及。为了在web3时代实现大规模应用,区块链基础设施需要遵循云计算基础设施的路径,作为一个可信赖的、可扩展的、具有成本效益的、不断改进的平台来构建广泛使用的应用程序。 我们提出了Aptos区块链,其设计以可扩展性、安全性、可靠性和可升级性为主要原则,以应对这些挑战。Aptos区块链在过去的三年里由全球超过350名开发者开发[1]。它在共识、智能合约设计、系统安全、性能和去中心化方面提供了新的和新颖的创新。这些技术的结合将为web3带给大众提供一个基本的构建模块: -首先,Aptos区块链原生集成并在内部使用Move语言来实现快速安全的交易执行[2]。Move验证器,一个用Move语言编写的智能合约的正式验证器,为合约的不变性和行为提供额外的保障。这种对安全的关注使开发者能够更好地保护他们的软件免受恶意实体的侵害。 -其次,Aptos数据模型实现了灵活的密钥管理和混合保管选项。这一点,加上签署前的交易透明度和实用的轻型客户端协议,提供了一个更安全和更值得信赖的用户体验。 -第三,为了实现高吞吐量和低延迟,Aptos区块链对交易处理的关键阶段采用了流水线和模块化方法。具体来说,交易传播、区块元数据排序、并行交易执行、批量存储和账本认证都是同时进行的。这种方法充分利用了所有可用的物理资源,提高了硬件效率,并实现了高度并行执行。 -第四,与其他并行执行引擎不同的是,Aptos区块链要求预先了解要读写的数据,从而破坏了交易的原子性,但Aptos区块链并没有给开发者带来这种限制。它可以有效地支持任意复杂交易的原子性,为现实世界的应用实现更高的吞吐量和更低的延迟,并简化了开发。 -第五,Aptos的模块化架构设计支持客户端的灵活性,并为频繁的即时升级进行了优化。 此外,为了快速部署新的技术创新并支持新的web3用例,Aptos区块链提供了嵌入式链上变更管理协议。 -最后,Aptos区块链正在尝试未来的举措,以超越单个验证器性能的扩展:其模块化设计和并行执行引擎支持验证器的内部分片,同质状态分片提供了水平吞吐量扩展的潜力,而不会为节点操作员增加额外的复杂性。 1简介 在web2互联网中,消息、社交媒体、金融、游戏、购物和音频/视频流等服务,由控制直接访问用户数据的中心化公司提供(例如,谷歌、亚马逊、苹果和Meta)。这些公司使用针对特定用途的软件开发基础设施,并利用云基础设施向用户提供这些应用。云基础设施提供对虚拟化和/或物理基础设施服务的访问,如租用的虚拟机(VM)和在全球数据中心内运行的裸机硬件(如AWS、Azure和谷歌云)。因此,建立可以扩展到数十亿用户的web2互联网服务从未像今天这样容易。然而,web2要求用户对中心化的实体给予明确的信任,这一要求已经越来越受到社会的关注。 为了消除这种担忧,一个新的互联网时代已经开始:web3。在web3版本的互联网中,区块链的出现提供了去中心化的、不可改变的账本,使用户能够安全可靠地相互交流,所有这些都不需要信任控制性的中介或中心化实体。与web2互联网服务和应用程序依赖云基础设施作为构建模块的方式类似,去中心化的应用程序可以使用区块链作为去中心化的基础设施层,以达到世界各地的数十亿用户。 然而,尽管今天有许多区块链存在,但web3的广泛采用还没有发生[3]。虽然技术不断推动行业发展,但现有的区块链是不可靠的,对用户征收高额的交易费用,有低吞吐量的限制,由于安全问题经常遭受资产损失,并且不能支持实时响应性。与云计算基础设施如何使web2服务达到数十亿的规模相比,区块链还没有使web3应用做到这一点。 2Aptos的愿景 Aptos的愿景是提供一个能够为web3带来主流应用的区块链,并授权一个去中心化应用的生态系统来解决现实世界的用户问题。我们的使命是通过提供一个灵活的、模块化的区块链架构来推动区块链可靠性、安全性和性能方面的最先进技术。这种架构应支持频繁的升级,快速采用最新的技术进步,并为新的和新兴的用例提供一流的支持。 我们设想的是一个去中心化的、安全的、可扩展的网络,由使用它的社区管理和运营。当世界各地的基础设施需求增长时,区块链的计算资源会横向和纵向扩展,以满足这些需求。随着新的用例和技术进步的出现,网络应该在不干扰用户的情况下频繁地、无缝地升级。基础设施的问题应该逐渐消失在背景中。开发人员和用户将有机会获得许多不同的选择,如密钥恢复、数据建模、智能合约标准、资源使用权衡、隐私和可组合性。用户知道他们的资产是安全的,总是可用的,并且可以用接近成本的费用来访问。任何人都可以安全、轻松、不可逆转地与全世界不受信任的各方进行交易。区块链就像云基础设施一样无处不在。 为了实现这一愿景,必须在技术上取得重大进展。我们在过去三年中构建、开发、推进和部署Diem区块链(Aptos区块链的前身)的经验证明,一个网络可以在不影响客户的情况下不断升级其协议[4]。2020年初,Diem主网被部署到十几个节点运营商与多个钱包供应商。在接下来的一年里,我们的团队发布了两次重大升级,改变了共识协议和核心框架。这两次升级都是在没有给用户带来停工的情况下完成的。在Diem区块链的启发下,我们对技术栈进行了一系列彻底的改进,同时还将安全、透明和频繁的升级作为核心功能。特别是,我们强调了交易处理的新方法(如第7节所述)和去中心化和网络治理的新方法。 图1: Aptos 生态组件 随着Aptos区块链的不断完善和发展,我们将发布本白皮书的最新版本,包括我们协议和设计选择的最新迭代。在本文件的其余部分,我们描述了Aptos区块链的当前状态以及未来的计划。** ** 3概述 Aptos区块链,如图1所示,是由一组验证器组成的,这些验证器使用拜占庭容错(BFT),股权证明共识机制,共同接收和处理用户的交易。代币持有者将代币锁定在他们所选择的验证器中,或将代币押在验证器中。每个验证器的共识投票权重与押在它身上的金额成正比。一个验证者可以是积极的,并参与共识。同样,如果一个验证者没有足够的股份参与,从验证者集合中轮换出来,在同步区块链状态时选择脱机,或者由于历史表现不佳而被共识协议视为不参与,那么它也可能不活跃。 客户端是系统中需要提交交易或查询区块链的状态和历史的任何部分。客户端可以选择下载并验证所查询数据的验证人签名证明。完整节点是指从验证者或网络中其他完整节点复制交易和区块链状态的客户。他们可以根据需要选择修剪交易历史和区块链状态,以重新获得存储。轻客户端只维护当前的验证者集合,并可以安全地查询部分区块链状态,通常是来自全节点。钱包是轻客户端的一个常见例子。 为了满足安全、快速、可靠和可升级的web3基础设施的广泛采用,Aptos区块链建立在以下核心设计原则之上。 -快速安全的执行,同时通过新的智能合约编程语言Move[5],实现简单的可审计性和机械分析性。Move起源于Aptos区块链的前身,并随着这个项目的发展继续进步。 -通过分批、流水线和并行化的交易处理方法,实现了极高的吞吐量和低延时。 -新的并行交易处理,通过Block-STM有效地支持任意复杂交易的原子性,与现有的并行执行引擎不同,它需要预先了解要读和写的数据位置。 -通过快速的权重验证器组轮换和信誉跟踪来优化性能和分散性。 -将可升级性和可配置性作为一流的设计原则,以接受新的用例和最新的技术。 -模块化设计,使严格的组件级测试与适当的威胁建模和无缝部署相结合,所有这些都确保高度安全和可靠的操作。 -横向吞吐量的可扩展性,同时保留分散性,其中分片是一个暴露给用户的一流概念,并且是编程和数据模型的原生概念。 第4节解释了开发者如何与Aptos区块链中的Move互动。第5节描述了逻辑数据模型。第6节详细介绍了Aptos区块链如何通过强大的验证方法实现安全的用户体验。第7节描述了围绕管道化、批处理和并行化的关键性能创新。第8节详细介绍了不同客户与其他节点同步状态的各种选择。第9节描述了我们对社区所有权和治理的计划。最后,第10节讨论了在保持去中心化的同时,未来的性能方向。** ** 4Move语言 Move是一种新的智能合约编程语言,强调安全性和灵活性。Aptos区块链使用Move的对象模型来表示其账本状态(见第5.5节),并使用Move代码(模块)来编码状态转换的规则。用户提交的交易可以发布新的模块,升级现有的模块,执行模块内定义的入口函数,或者包含可以直接与模块的公共接口互动的脚本。 Move生态系统包含一个编译器、一个虚拟机和许多其他的开发者工具。Move受到Rust编程语言的启发,它通过线性类型等概念使数据的所有权在语言中显性化。Move强调了资源的稀缺性、保存和访问控制。Move模块定义了每个资源的生命周期、存储和访问模式。这确保了像Coin这样的资源在没有适当的凭证的情况下不会被生产,不能被重复使用,也不会消失。 Move利用字节码验证器来保证类型和内存安全,即使是在不受信任的代码面前。为了帮助编写更可信的代码,Move包括了一个形式化的验证器,即Move Prover[6],能够根据一个给定的规范来验证Move程序的功能正确性,该规范是由Move集成的规范语言制定的。 除了用户账户和相应的账户内容,账本状态还包含万通区块链的链上配置。这种网络配置包括活跃的验证器集合,押注属性,以及Aptos区块链内各种服务的配置。Move对模块可升级性和全面可编程性的支持实现了无缝的配置变化,并支持对Aptos区块链本身的升级(这两套升级已经在私有主网上执行了多次,且零停机)。 Aptos团队已经进一步加强了Move,支持更广泛的web3用例。正如后面第5.5节所提到的,Aptos区块链能够实现细粒度的资源控制。这不仅支持执行的并行化,而且还实现了与访问和变异数据相关的近乎固定的成本。此外,Aptos区块链提供了建立在细粒度存储之上的表支持,这使得大规模的数据集(例如NFT的大量集合)可以在一个账户中进行。此外,Aptos支持完全在链上表示的共享或自治账户。这允许复杂的去中心化自治组织(DAO)合作共享账户,以及使用这些账户作为异质资源集合的容器。** ** 5逻辑数据模型 Aptos区块链的账本状态代表了所有账户的状态。账本状态使用一个无符号的64位整数,对应于系统执行的交易数量。任何人都可以向Aptos区块链提交交易以修改账本状态。在执行一个交易时,会产生一个交易输出。一个交易输出包含零个或多个操作来操作账本状态(称为写集),一个由此产生的事件的向量(见第5.1.1节),消耗的气体量,以及执行的交易状态。 **5.1交易 ** 一个经过签名的交易包含以下信息。 -交易认证器。 发件人使用包括一个或多个数字签名的交易认证器来验证交易是否经过认证。 -发送方地址。发送人的账户地址。 -有效载荷。有效载荷要么是指链上现有的入口函数,要么包含要作为内联字节码(称为脚本)执行的函数。 此外,一组输入参数被编码为字节数组。对于点对点的交易,输入参数包含接收者的信息和转给他们的金额。 -天然气价格(以指定货币/天然气单位)。这是发送方愿意为执行交易而支付的每单位气体的金额。气体是一种支付计算、网络和存储的方式。气体单位是一种抽象的计算测量,没有内在的现实世界价值。 -最大气体量。最大气体量是交易在中止前允许消耗的最大气体单位。帐户必须至少有气体价格乘以最大气体量,否则交易将在验证期间被丢弃。 -序列号。交易的序列号。这必须与交易执行时存储在发送者账户中的序列号相匹配。在交易执行成功后,账户序列号会被增加,以防止重放攻击。 -过期时间。一个时间戳,过了这个时间戳交易就不再有效。 -链ID:识别该交易有效的区块链,为用户提供进一步的保护,防止签署错误。 在每个版本i,状态变化由元组(Ti, Oi, Si)表示,分别包含交易、交易输出和由此产生的分类账状态。给定一个确定性的函数Apply,交易Ti与分类账状态Si-1的执行会产生交易输出Oi和新的分类账状态Si。也就是说,Apply(Si-1, Ti) → ⟨Oi, Si⟩。** ** 5.1.1 事件 在一个事务的执行过程中,会发出一些事件。每个移动模块可以定义自己的事件,并选择在执行时发出这些事件。例如,在硬币转移过程中,发送方和接收方的账户都将分别发出SentEvent和ReceivedEvent。这些数据存储在账本内,可以通过Aptos节点进行查询。 每个注册的事件都有一个唯一的密钥,该密钥可用于查询事件细节。 向同一事件键发出的多个事件会产生事件流,这是一个事件列表,每个条目都包含一个从0开始依次增加的数字,一个类型和数据。每个事件必须由某种类型来定义。可能有多个事件由相同或相似的类型定义,特别是在使用泛型时。事件有相关的数据。 对于Move模块的开发者来说,一般的原则是包括所有必要的数据,以了解在执行改变数据和发出事件的事务之前和之后对底层资源的改变。 事务只能生成事件,不能读取事件。这种设计允许交易的执行只成为当前状态和交易输入的函数,而不是历史信息(例如,以前产生的事件)。 5.2账户 每个账户都由一个独特的256位值来识别,称为账户地址。当一个从现有账户发送的交易调用create_account(addr)移动函数时,一个新的账户会在分类账状态下被创建(见第5.5节)。这通常发生在一个交易试图向一个尚未创建的账户地址发送Aptos代币时。为了方便起见,Aptos还支持一个transfer(from, to, amount)函数,如果在转移之前不存在一个账户的话,该函数会隐式地创建一个账户。 为了创建一个新账户,用户首先生成一个签名密钥对:(vk,sk)。接下来,一个给定的签名方案的新账户地址是使用公共验证密钥vk的加密哈希值得出的,该哈希值与签名方案标识符(sid)相连接:其中addr = H(vk,sid)。 图2:链上移动模块的例子 在地址addr处创建新账户后,用户可以使用私人签名密钥sk,签署将从addr处的账户发送的交易。用户也可以轮换sk,要么主动改变sk,要么对可能的妥协做出反应。这不会改变账户地址,因为账户地址在其创建过程中只从公共验证密钥中得出一次。 Aptos区块链不将账户与现实世界的身份联系起来。一个用户可以通过生成多个密钥对创建多个账户。由同一用户控制的账户之间没有内在的联系。 然而,一个用户仍然可以在一个钱包中管理多个账户,进行简单的资产管理。这种灵活性为用户提供了假名,同时我们为未来的版本试验了保护隐私的基元。一个用户或一组用户拥有的多个账户也提供了增加执行并发性的渠道,如7.4节所述。 5.3 移动模块 一个Move模块包含声明数据类型(结构)和程序的Move字节码。它是由声明模块的账户地址和模块名称一起标识的。例如,图2中第一个货币模块的标识符是0x1::coin。一个模块可以依赖其他链上的模块,如图2中的钱包模块所示,从而实现代码重用。 一个模块必须在一个账户内唯一命名,也就是说,每个账户最多可以声明一个具有任何特定名称的模块。例如,图2中地址为0x1的账户不能声明另一个名为coin的模块。另一方面,地址为0x3的账户可以声明一个名为coin的模块,这个模块的标识符为0x3::coin。注意,0x1::coin::Coin和0x3::coin::Coin是不同的类型,不能互换使用,也不能共享共同的模块代码。相反,0x1::coin::Coin<0x2::wallet::USD>和0x1::coin::Coin<0x2::wallet::JPY>是同一通用类型的不同实例,不能互换使用,但可以共享公共模块代码。 模块被分组为位于同一地址的包。这个地址的所有者将包作为一个整体在链上发布,包括字节码和包元数据。包的元数据决定了一个包是否可以升级或者是不可改变的。对于一个可升级的包,在允许升级之前会进行兼容性检查:不能改变现有的入口点函数,也不能在内存中存储任何资源。然而,新的函数和资源可以被添加。 Aptos框架,由Aptos区块链的核心库和配置组成,被定义为一个常规的可升级模块包(见第9.2节)。 图3: 链上数据实例 5.4资源 与模块类似,账户地址也可以有与之相关的数据值。在每个账户地址中,数值是由其类型决定的,每种类型最多只有一个数值属于该账户。图3提供了一个这方面的例子。地址0x50持有一个值,其中0x3::coin::Coin是完全限定的类型。0x3是存储硬币模块的地址,coin是模块的名称,Coin是数据类型的名称。通用类型的值也被允许,不同的实例被视为不同的类型。这对可扩展性至关重要,允许不同的实例共享相同的功能代码。 变更、删除和发布一个值的规则被编码在定义数据类型的模块中。Move的安全和验证规则防止其他代码或实体直接创建、修改或删除其他模块中定义的数据类型的实例。 在一个地址下,每个类型最多只有一个顶层值,这听起来可能是一种限制。然而,这在实践中并不是一个问题,因为程序员可以用其他数据作为内部字段来定义包装类型,从而避免了任何限制。图3中的Wallet结构就是一个如何使用包装器类型的例子。 还应该注意的是,并非所有的数据类型都可以存储在链上。要使数据实例有资格成为顶层值,数据类型必须具有键的能力。同样地,对于嵌套的值来说,也需要存储能力。具有这两种能力的数据类型也被称为资源。** ** 5.5账本状态 从Move虚拟机(Move VM)的角度来看,每个账户由一组值和键值数据结构组成。 这些数据结构被称为表项,并以二进制Canonical Serialization格式(BCS)存储。这种数据布局使开发者能够编写智能合约,可以在大量账户中复制的少量数据上高效运行,也可以在少量账户中存储的大量数据上高效运行。移动模块的存储方式与账户数据类似,但在一个独立的命名空间下。创世账本状态定义了区块链初始化时的初始账户集和它们的相关状态。 在启动时,Aptos区块链将由一个单一的账本状态表示。然而,随着采用率的增加和技术的发展,Aptos将扩大分片的数量,以增加吞吐量(即启用多个分类账状态),并支持跨分片移动或访问资产的交易。每个账本状态将维护特定分片的所有链上资产,并提供相同的账户模型,以及一个细粒度的键值数据存储,为存储访问提供近乎固定的成本。** ** 6安全的用户体验 为了达到数十亿的互联网用户,web3的用户体验必须是安全和可访问的。在下面的章节中,我们描述了Aptos区块链提供的几项创新,致力于实现这一目标。** ** 6.1交易可行性保护 签署交易意味着签署者授权该交易被区块链承诺和执行。偶尔,用户可能会无意地签署交易,或者没有充分考虑到他们的交易可能被操纵的所有方式。为了减少这种风险,Aptos区块链限制了每笔交易的可行性,并保护签署者免受无限制的有效性。目前Aptos区块链提供了三种不同的保护--发件人的序列号、交易过期时间和指定的链上标识符。 -一笔交易的序列号对每个发送者的账户只能准确地承诺一次。因此,发送者可以观察到,如果当前账户的序列号是交易t的序列号,那么要么t已经被承诺,要么t永远不会被承诺(因为t使用的序列号已经被另一个交易消耗)。 -如第7.3.1节所述,区块链时间以高精度和高频率(通常为亚秒级)推进。如果区块链时间超过了交易t的到期时间,那么同样地,要么t已经被提交,要么t永远不会被提交。 -每个交易都有一个指定的链上标识符,以防止恶意实体在不同的区块链环境(例如,跨测试网和主网)之间重放交易。 6.2基于移动的密钥管理 如第5.2节所述,Aptos账户支持密钥轮换,这一重要功能可以帮助减少与私钥泄露、远程攻击以及可能破坏现有加密算法的未来进展有关的风险。此外,Aptos账户也足够灵活,可以实现新的混合保管模式。在一个这样的模式中,用户可以将轮换账户私钥的能力委托给一个或多个保管人和其他受信任的实体。然后,一个移动模块可以定义一个政策,授权这些受信任的实体在特定情况下旋转钥匙。例如,这些实体可能由许多受信任方持有的 k-out-of-n 多签名密钥来代表,并提供密钥恢复服务以防止用户的密钥丢失(例如,目前有20%的比特币被锁在无法恢复的账户中[7])。 此外,虽然许多钱包支持各种密钥恢复方案,如将私钥备份到云基础设施、多方计算和社会恢复,但它们通常在没有区块链支持的情况下实现(即离链)。因此,每个钱包需要实现自己的密钥管理基础设施,相关操作对用户来说是不透明的。相比之下,在Aptos区块链层支持密钥管理功能,使所有与密钥相关的操作完全透明,并使实施具有丰富密钥管理的钱包变得更加简单。** ** 6.3签署前的交易透明度 如今,钱包对其签署的交易提供的透明度非常低。因此,用户往往很容易被骗去签署恶意交易,这些交易可能会窃取资金并产生破坏性的后果。即使对于需要列举每笔交易所访问的所有链上数据的区块链来说也是如此。因此,目前几乎没有用户保障措施,使用户容易受到各种各样的攻击。 为了解决这个问题,Aptos生态系统提供了交易预执行的服务:一种预防措施,在签署前向用户描述(以人类可读的形式)他们的交易结果。将此与之前的攻击和恶意智能合约的已知历史配对,将有助于减少欺诈。此外,Aptos还使钱包能够在执行期间对交易进行约束。违反这些约束将导致交易被中止,以进一步保护用户免受恶意应用或社会工程攻击。 6.4实用的轻型客户协议 仅仅依靠API供应商的TLS/SSL证书来建立区块链客户和服务器之间的信任并不能充分保护客户。即使存在有效的证书,钱包和客户也不能保证提交给他们的数据的真实性和完整性。因此,API供应商可能会返回不正确或恶意的区块链数据,欺骗第三方并进行双重消费攻击。 图4: 交易处理的生命周期。所有的阶段都是完全独立的,并且是可独立并行的。 为了防止这种情况,Aptos提供了状态证明和轻客户端验证协议,可由钱包和客户端用来验证由不受信任的第三方服务器呈现的数据的有效性。此外,通过利用第7.6.2节中基于时间戳的状态证明,轻客户端可以始终确保账户状态的新鲜度的严格界限(例如,在几秒钟内),并且只需要跟踪网络配置的变化(epoch changes)或使用当前可信的检查点(waypoints)来保持最新的状态[8]。通过结合高频率的时间戳和廉价的状态证明,Aptos区块链为客户提供了更多的安全保障。 此外,Aptos节点还暴露了丰富、高性能的存储接口,可以进一步微调,以允许订阅针对链上特定数据和账户的证明。这可以被轻型客户利用来保留最小的可验证数据,而不需要运行一个完整的节点或处理大量的交易。** ** **7流水线、批处理和并行事务处理 ** 为了最大限度地提高吞吐量,增加并发性,并减少工程的复杂性,Aptos区块链上的交易处理被划分为不同阶段。每个阶段都是完全独立的,并且可以单独并行,类似于现代的超标量处理器架构。这不仅提供了显着的性能优势,而且使Aptos区块链能够提供验证者与客户互动的新模式。比如说: -当特定的事务被包含在一批持久化的事务中时,客户可以得到通知。持久有效的交易极有可能立即被提交。 -当一批持久化的交易被订购时,可以通知客户。 因此,为了减少确定已执行事务输出的延迟,客户可以选择在本地执行事务,而不是等待验证者远程完成执行。 -客户可以选择等待验证者的认证交易执行,并对认证的结果执行状态同步(例如,见第8节)。 Aptos的模块化设计有助于提高开发速度,支持更快的发布周期,因为变化可以针对单个模块,而不是单一的单体架构。同样,模块化设计也提供了一个结构化的路径,可以将验证器扩展到单台机器之外,提供额外的计算、网络和存储资源。图4显示了交易生命周期的各个处理阶段。** ** 7.1批量处理 批量处理是一个重要的效率优化,是Aptos区块链中每个操作阶段的一部分。在交易传播过程中,交易被每个验证者分组为批次,而在共识过程中,批次被合并为区块。执行、存储和账本认证阶段也是分批进行的,为重新排序、减少操作(如重复计算或签名验证)和平行执行提供机会。 图5: 区块元数据排序独立于交易传播 将交易分组成批可能会引起少量的延迟,例如,在执行传播之前等待200毫秒来积累一批交易。然而,批处理在最大等待时间和最大批处理量方面是很容易配置的,使分散的网络能够自动优化延迟和效率。分批还允许有效的收费市场优先处理交易,避免来自过度热心的客户的意外拒绝服务(DoS)攻击。** ** 7.2持续的交易传播 根据Narwhal & Tusk[9]的主要观点,Aptos区块链的交易传播与共识脱钩。验证者不断地将成批的交易流向对方,同时利用所有可用的网络资源。根据第7.3节中定义的共识要求,任何2f + 1股权加权的批量摘要签名构成了一个可用性证明(PoAv)。这样的证明保证了至少有f+1个股权加权的诚实验证者存储了该批次,因此所有诚实验证者都能在执行前检索到它。 无限持续的交易批次可以通过导致验证者耗尽存储并崩溃来打开DoS攻击的载体。为了防止这种情况,每批交易都有一个相关的时间戳。该批交易的时间戳允许在每个验证器上进行有效的垃圾收集。此外,一个单独的每个验证器配额机制被设计用来保护验证器即使在最极端的情况下也不会耗尽空间,例如在潜在的拜占庭攻击下。批次也有大小限制,在同意坚持到稳定的存储之前进行验证。 最后,通过一些优化来消除重复和缓存交易,减少存储成本,并确保与并行执行引擎的高性能集成。** ** 7.3区块元数据排序 一个常见的误解是,共识很慢,因此是区块链吞吐量和延迟的主要瓶颈。Aptos区块链的关键创新之一是将非协议相关的任务从共识阶段解耦出来,如交易传播、交易执行/存储和分类账认证。通过将交易传播与共识阶段解耦,可以用很低的带宽进行排序(仅有区块元数据和证明),从而获得高交易吞吐量和最小的延迟。 今天,Aptos区块链利用DiemBFTv4[10]的最新迭代,这是一个乐观的响应式BFT共识协议。普通情况下的共识只需要两次网络往返(全球往返时间通常小于300毫秒),并通过领导者信誉机制[11]对有缺陷的验证者进行动态调整。链上领导者信誉机制促进了在一个窗口中成功提交区块的验证者,并将没有参与的验证者降级。这种新颖的机制极大地提高了去中心化环境下的性能,相应地提供了适当激励的基础设施,并迅速将失败的验证者对吞吐量和延迟的影响降到最低。 DiemBFTv4保证了部分同步下的有效性,并确保了异步下的安全性,其中验证人的总赌注为3f + 1,最多有f个赌注加权的错误验证人。 自2019年以来,DiemBFTv4已经在几个迭代中进行了广泛的测试,有几十个节点运营商和一个多钱包生态系统。我们还在试验我们最近的研究(如Bullshark[12])和其他依靠区块历史和相关通信来确定区块元数据排序和最终性的协议。 如图5所示,一个共识区块和一个提议的时间戳由一个领导者提出,并由其他验证者同意。请注意,每个共识区块只包含批次元数据和证明。实际的交易在区块中是不需要的,因为PoAV确保交易批次在排序后的执行阶段可以使用(见7.2节)。验证者在验证了证明和区块元数据标准得到满足(例如,提案时间戳≤区块到期时间)后,可以对领导者的提案进行投票。** ** 7.3.1区块链时间 Aptos区块链为每个提议的区块以及相应的该区块内的所有交易采用了一个近似的、商定的物理时间戳。这个时间戳使许多重要的用例成为可能。例如。 -智能合约中与时间有关的逻辑。例如,一个开发者希望编码所有拍卖的出价必须在周四中午之前收到。 -由于口令发布的是链上数据,因此需要准确和可信的链上时间戳来关联事件和处理现实世界数据的延迟。 -客户可以辨别他们在区块链上的最新情况。对于安全问题,为了避免陈旧的数据和远程攻击,客户应该能够获得关于账户状态更新时间的高精度时间戳。 -用一个可靠的时间戳来审计区块链,为链外事件提供了强大的关联性,例如确保法律强制的支付符合预期要求。 -交易过期是基于最新的承诺时间戳。作为对客户交易的额外安全保护,客户可以为交易选择一个过期时间,如第6.1节中所述。 Aptos区块链对一个区块内所有交易的时间戳提供了以下保证。 -时间在区块链中是单调增长的。 也就是说,如果区块B1<区块B2,那么B1时间 < B2时间。 -如果一个区块交易的时间戳T被同意,那么至少有f+1个诚实的验证者决定T是在过去。一个诚实的验证者只有在自己的时钟≥时间戳T时才会对一个区块投票。见第7.2节。 -如果一个交易区块在时间戳T的情况下有法定的签名共识,一个诚实的验证者不会将这样的区块提供给其他验证者,直到它自己的时钟≥时间戳T。 最新的时间戳在每个提交的区块上被更新,并作为该区块中所有交易的时间戳。当网络是同步的,一个交易块每一次网络往返都会被提交,并提供一个快速更新和高度可靠的时钟。如果需要的话,可以确定交易块内更精细的排序。 图6: 块状STM(纯组件)基准比较了不同程度的竞争的物理核心数量 **7.4平行交易执行 ** 一旦共识区块元数据被订购,交易可以由任何验证者、全节点或客户端执行。至少有2f + 1个股权加权验证人对提议的批次进行了可核查的持续交易。由于交易传播是连续的,额外的诚实验证者将随着时间的推移收到交易批次。如果一个诚实的验证者在到达执行阶段时还没有收到所订批次的交易,它可以从2f+1个股权加权验证者那里下载,因为它知道至少f+1个股权加权验证者(一半的股权加权PoAV签名者)是诚实的。 任何区块链的一个重要目标是尽可能多地实现并行执行。 Aptos区块链从数据模型和执行引擎两方面推进了这个方向。** ** 7.4.1平行数据模型 Move数据模型原生支持数据和模块的全局寻址。在数据和账户方面没有重叠冲突的交易可以并行执行。鉴于Aptos区块链使用的流水线设计,对一组交易重新排序可以减少冲突的数量,从而提高并发性。 即使交易修改了同一组链上值,大部分的交易执行过程仍然可以被并行化。Aptos区块链引入了一个新的概念,delta writes,它描述了对账户状态的修改,而不是修改后的账户状态(例如,增加一个整数,而不是简单地确定最终值)。所有的交易处理都可以并行完成,然后以正确的顺序对冲突的值进行delta写入,以确保确定性的结果。 随着时间的推移,Aptos区块链将继续以改善并发性的方式增强数据模型(例如,利用读/写提示),同时改善人机工程学,使开发人员更自然地创建、修改和编排链上值。Move提供了灵活性,可以在语言层面以及通过平台特定的功能来进行这些改进。** ** 7.4.2平行执行引擎 Block-STM并行执行引擎检测并管理有序的事务集的冲突,同时进行乐观的并发控制,以允许在特定的排序下实现最大的并行性[13]。 一批批的事务被优化地并行执行,并在执行后进行验证。不成功的验证会导致重新执行。Block-STM使用一个多版本的数据结构来避免写-写冲突。所有对同一位置的写入都与它们的版本一起存储,其中包含它们的事务ID和写入事务被优化重新执行的次数。当事务tx读取一个内存位置时,它从多版本数据结构中获得由预设顺序中出现在tx之前的最高事务写到这个位置的值,以及相关的版本。 Block-STM已经被整合到Aptos区块链中。为了了解Block-STM性能的全部潜力,我们用非琐碎的点对点移动交易(即每笔交易有8个读和5个写)进行了实验,作为一个孤立的、只执行的(不是端到端)基准,与一个内存数据库。在图6中,我们展示了我们的Block-STM执行结果。每个区块包含10k个交易,账户的数量决定了冲突和争夺的程度。 在低竞争条件下,Block-STM比32个线程的顺序执行速度提高了16倍,而在高竞争条件下,Block-STM的速度提高了8倍以上。与区块链领域的其他并行执行引擎相比,Block-STM能够动态、透明地(不需要用户的任何提示)从任何工作负载中提取固有的并行性。与需要预先了解要读取或写入的数据位置的并行执行环境相比,Block-STM可以同时支持更复杂的交易。这一特性导致了更少但更有效的事务,降低了成本,并为用户提供了更低的延迟。也许最重要的是,将一个原子交易分割成多个较小的交易,打破了一个具有复杂状态结果的单一交易的全有或全无的语义。在Block-STM中,将富有表现力的事务语义与并行执行结合起来,使开发者能够拥有两个世界中最好的东西。 注意,块元数据排序步骤并不排除在并行执行阶段对事务进行重新排序。交易可以在一个或多个块上重新排序,以优化并行执行的并发性。唯一的要求是,重新排序必须在所有的诚实验证者中是确定的。优化并行执行以及在重新排序中添加随机性可以提高性能,并有可能阻止最大可提取值(MEV)技术用于有利可图的验证人交易重新排序。也可以在这个流水线设计中加入 "顺序-显示 "的抗MEV策略。 Block-STM和事务重排是提高执行准度的补充技术。它们可以与事务的读/写访问提示相结合,以增加并发性。 7.5批量存储 并行执行阶段的结果是一组中所有事务的写集。这些写集可以存储在内存中以获得最大的执行速度,然后作为下一个要执行的块或块集的缓存。任何重叠的写入只需要写到稳定的存储中一次。如果验证器在存储内存中的写集之前失败,它可以简单地从块元数据排序阶段恢复并行执行。将写集的批量存储与并行执行步骤解耦,确保了并行执行可以有效地运行。总之,批处理写集减少了存储操作的数量,并利用了更有效、更大的I/O操作的优势。 为写集缓存保留的内存量可以在每台机器上手动配置,并提供一个自然的背压机制。如果需要的话,批处理的颗粒度可以与并行执行块的颗粒度不同,以便为特定的I/O和内存环境进行调整。** ** 7.6账本认证 这个时候,在管道上,每个单独的验证器都计算了已承诺交易块的新状态。 然而,为了有效地支持验证的轻客户端和状态同步,Aptos区块链为账本历史和账本状态实施了账本认证。Aptos区块链的一个关键区别是,账本认证不在交易处理的关键路径上,如果需要,甚至可以完全在带外运行。 7.6.1账本历史证明 一个验证器将交易和它们的执行输出一起附加到一个全局验证的分类账数据结构中。交易输出的一部分是状态写入集,由对Move可访问的全局状态的改变组成。这个数据结构的简短认证器是对分类账历史的绑定承诺,其中包括新执行的一批交易。与交易执行类似,这个数据结构的生成是确定性的。 每个验证者都对产生的数据库的新版本签署短认证器。验证者相互分享他们最近的签名短认证器集,集体汇总法定人数签名的短认证器,还相互分享最近的法定人数签名的短认证器。 使用这种集体签名,客户可以相信,根据协议的BFT属性,数据库版本代表了完整、有效和不可逆的分类账历史。客户端可以查询任何验证器(或数据库的任何第三方副本,如完整节点)来读取数据库值,并使用验证器和所需数据的证明来验证结果。** ** 7.6.2定期的国家认证 由Move访问的全部全局状态可以在历史上的任何一点被总结为一个简短的认证器,类似于分类账历史的总结。由于全局状态的随机访问性质(不像账本历史是只需追加的),维护这种认证的成本是很高的。尽管如此,在大批量更新数据结构时,我们可以并行计算更新,也可以利用每个单独状态值变化时必须更新的部分之间的任何重叠。Aptos区块链故意只定期认证全局状态以减少重复的共享更新。 在确定的和配置的时间间隔内,网络发出的状态检查点交易,包括全球状态认证器作为其输出的一部分。这样的版本被表示为状态检查点。 两个检查点之间的差距越大,每个事务更新状态认证数据结构的摊销成本就越低。 有了状态检查点,人们可以以一种无信任的方式从它们那里读取任何状态值,而不需要存储所有的全局状态。这种能力对于增量状态同步、跨验证器的分片存储、无状态验证器节点和存储受限的轻客户端等应用非常有用。 然而,由于状态检查点是周期性的,要想获得一个特定版本的分类账状态的证明,要么需要额外的交易执行,以获得缺失的状态交替,要么需要从认证的分类账历史中获得包含这些状态的证明。 状态检查点与分类账历史中的具体交易版本相联系,因此与第7节中提到的交易批次相关的时间戳相联系。有了时间戳,轻客户可以理解被证明的状态值的时间。如果没有时间戳,轻客户机证明只能确保以前的状态的有效性,而这个状态可能已经过去很久了,这对相关性没有什么保证。另外,状态证明的时间戳对于跟踪历史访问和审计目的是必要的,例如计算代币储备中代币的平均每小时余额。 状态检查点可以根据之前的状态检查点和之后的交易输出中的状态交替得出。因此,将状态检查点持久化到稳定的存储,不需要在交易处理的关键路径上。 另外,在持久化状态检查点时也存在有益的批处理效果。在内存中缓存最近的状态检查点(或者说是它们之间的delta),只将周期性的状态检查点转储到稳定存储中,可以大大减少对存储带宽的消耗。 检查点的选择方式并不影响认证数据结构的计算。因此,这是每一个节点的选择:节点操作者可以配置内存容量和存储带宽之间的适当权衡。 8状态的同步化 Aptos区块链旨在为生态系统的所有参与者提供一个高吞吐量、低延迟的系统。因此,区块链必须提供一个高效的状态同步协议,以传播、验证和持久化区块链数据到轻客户、全节点和验证者[14]。此外,同步协议还必须容忍资源限制和网络内的异质性,考虑到不同的用户和用例。 例如,它必须允许归档的全节点验证和持久化整个区块链历史和状态,同时也使轻型客户能够有效地跟踪Aptos区块链状态的一小部分子集。 为了实现这一特性,Aptos区块链利用验证者、全节点和其他复制者提供的认证账本历史和认证状态证明(见第7.6.1节)来提供一个灵活和可配置的同步协议。具体来说,网络中的参与者可以选择不同的同步策略来优化他们的用例和要求。 例如,在全节点的情况下,Aptos允许多种同步策略,包括处理自时间开始以来的所有交易或完全跳过区块链历史,只使用航点同步最新的区块链状态。在轻型客户端的情况下,策略包括同步部分区块链状态,例如特定的账户或数据值,以及启用 核实状态的读取,例如,核实账户余额的获取。在所有情况下,Aptos允许参与者配置获取、处理和保留数据的数量和年龄。 通过采用灵活和可配置的状态同步方法,Aptos可以适应各种客户需求,并在未来继续提供新的和更有效的同步策略。 9社区所有权 Aptos区块链将由一个广泛和多样化的社区拥有、运营和管理。原生的Aptos代币将用于交易和网络费用,对协议升级和链上/链下流程进行管理投票,并通过股权证明模式确保区块链的安全。关于Aptos代币经济学的完整描述将在未来的出版物中进行。 9.1交易和网络费用 所有Aptos交易都有一个气体单位价格(以Aptos代币指定),允许验证者优先考虑网络中价值最高的交易。此外,在管道模型的每个阶段,都有多种机会抛弃低价值的交易(允许区块链在系统容量时有效运行)。 随着时间的推移,网络费用将被部署,以确保使用Aptos区块链的成本与现实世界的硬件部署、维护和节点运行成本相称。此外,开发者将有机会设计出在计算、存储和网络之间进行不同成本权衡的应用程序。 9.2网络治理 Aptos区块链的每一个重大功能变化和改进都会经历几个阶段,包括建议、实施、测试和部署。这种结构为相关各方和利益相关者提供了反馈、分享关切和提供建议的机会。最后一个阶段,部署,通常分两步实现。首先,带有新功能的软件版本将被部署到每个节点,其次,该功能将被启用,例如,通过一个功能标志或链上配置变量。 节点运营商的每个软件部署必须是向后兼容的,以确保新的软件与支持的版本是可互操作的。部署一个新的软件版本的过程可能会跨越多天,以考虑到不同时区的运营商和任何外部问题。一旦有足够数量的节点被升级,新功能的启用可由一个同步点触发,如商定的块高度或纪元变化。在紧急情况下(例如,当停机不可避免时),启用可以通过节点运营商的手动和强制更改,在最坏的情况下,可以在网络中进行硬分叉。 与其他区块链相比,Aptos区块链将其配置编码在链上。每个验证者都有能力与区块链的当前状态同步,并根据当前的链上值自动选择正确的配置(例如,共识协议和Aptos框架版本)。由于这一功能,Aptos区块链中的升级是无缝的、即时的。为了给赋能过程提供灵活性和可配置性,Aptos区块链将支持链上治理,代币持有者可以就其持有的代币权重进行投票。链上投票协议是公开的,可验证的,并且可以是即时的。链上治理也可以支持启用非二进制的结果,而无需软件部署。例如,链上领导者选举协议参数可以通过链上治理进行修改,而预先知道的同步点将无法处理动态修改,因为所有的变化都必须提前知道。随着时间的推移,链上治理可以部署在整个升级管理过程中。举个例子: 1.代币持有者对过渡到新的抗量子签名方案进行链上投票。 2.开发者实施和验证新的签名方案,并创建一个新的软件版本。 3.验证者将他们的软件升级到新版本。 4.代币持有者在链上投票以启用新的签名方案,链上配置被更新,该变化生效。 作为一个开源项目,Aptos区块链将依赖于强大的社区反馈,并使用链上治理来管理适当的流程。在某些情况下,可能仍然需要链外升级启用,但随着时间的推移,将被最小化。 9.3股权证明共识 为了参与Aptos区块链上的交易验证,验证者必须拥有最低要求的Aptos代币的押注量。在交易传播过程中,押注金额会按比例影响2f+1押注加权的PoAv,以及在区块元数据排序过程中的投票权重和领导者选择。验证者决定他们自己和他们各自的投保人之间的奖励分配。签约者可以选择任何数量的验证者,将他们的代币押在其中,以获得预先商定的奖励分配。在每个纪元结束时,验证者和他们各自的施主将通过相关的链上移动模块收到他们的奖励。 任何拥有足够股权的验证者经营者都可以自由加入Aptos区块链。所有参数,包括所需的最低赌注,都可以由第9.2节中描述的链上启用程序来设置。 10性能表现 如第7节所述,Aptos区块链能够通过其并行、批量优化和模块化交易处理管道实现最佳吞吐量和硬件效率。额外的性能举措,如共识升级、delta写入、交易提示和关键路径缓存,将继续增加吞吐量并随着时间的推移提高效率。 今天,区块链的吞吐量通常以每秒交易量来衡量。 然而,鉴于交易和基础设施的成本和复杂性范围很广,这是一个不精确的方法来比较系统。交易延迟也同样存在缺陷,因为在不同的实验中,提交到最后的起点和终点是不同的. 此外,一些系统需要预先了解交易的输入和输出,并迫使逻辑交易被分割成较小的、不太复杂的交易。拆分交易会导致糟糕的用户体验,并人为地影响延迟和吞吐量,而不考虑开发者想要完成的任务。相比之下,Aptos的方法是让开发者能够自由构建,不受限制,并针对真实世界的用例而不是合成交易来衡量吞吐量和延迟。 Aptos区块链将继续优化单个验证器的性能,以及试验将更多验证器添加到网络的扩展技术。这两个方向都有明显的权衡。任何具有并行执行能力的区块链都可以通过要求更强大的硬件或什至将每个验证器构建为单个机器的集群来支持额外的并发性。然而,与验证器操作者的成本和复杂性相称的全局验证器的数量有实际限制。无服务器数据库在云服务中的兴起和流行,说明很少有实体能够有效地部署和维护这些类型的复杂分布式系统。 10.1同质化的状态分片 最初,Aptos区块链将以一个单一的账本状态推出。随着时间的推移,Aptos网络将采取一种独特的方法来实现横向可扩展性,同时仍然保持去中心化。这将通过多个分片账本状态来实现,每个分片账本状态都提供同质化的API,并将分片作为一个一流的概念。 Aptos代币将用于所有分片上的交易费、押金和治理。 数据可以通过一个同质化的桥梁在分片之间传输。用户和开发者可以根据自己的需要选择自己的分片方案。例如,开发者可以提出一个新的分片,或者在现有的分片内对用户进行集群,以实现分片内的高连接。 此外,分片可能有不同的系统特性。一个分片可能是计算优化的固态硬盘,而另一个分片可能是优化的大型硬盘,计算特性较低。通过在不同的分片之间提供硬件灵活性,开发者可以为他们的应用利用适当的系统特性。 总之,同质状态分片提供了水平吞吐量扩展的潜力,允许开发人员在分片中使用单一的通用状态进行编程,并使钱包能够为其用户轻松纳入分片数据。这提供了显着的性能优势,以及单一统一的Move智能合约平台的简单性。 参考资料 [1] “Aptos-core”,2022 年。[在线]。可用:https ://github.com/aptos-labs/aptos-core [2]“移动”,2022 年。[在线]。可用:https ://github.com/move-language/move [3] D. Matsuoka、C. Dixon、E. Lazzarin 和 R. Hackett。(2022) 介绍 2022 年加密状态报告。[在线的]。可用:https ://a16z.com/tag/state-of-crypto-2022/ [4] Amsden Z、Arora R、Bano S、Baudet M、Blackshear S、Bothra、A、Cabrera、G、Catalini、C、Chalkias、K、Cheng、E、Ching、A、Chursin、Danezis、G、Giacomo。 GD, Dill, DL, Ding, H, et al, Doudchenko N, Gao V, Gao Z, Garillot F, Gorven M, Hayes P, Hou JM, Hu YY, Hurley K, K Lewi, C Li, Z.Li, Malkhi, S Margulis, B Maurer, P Mohassel, L de Naurois, V Nikolaenko, T Nowacki, O Orlov, D Perelman, A Pott, B Proctor, S Qadeer, Rain Russi, B Schwab, S, Sezer, A, Sonnino, H,Wenter,L,Wei,N,Wernerfeldt B,Williams,Q,Wu,X [PubMed] AK,T。 [5] S. Blackshear、E. Cheng、D. L. Dill、V. Gao、B. Maurer、T. Nowacki、A. Pott、S. Qadeer、D. R. Rain、S. Sezer、T. Zakian 和 R. Zhou, “移动:一种具有可编程资源的语言”,2019 年。[在线]。可用:https : //developers.diem.com/papers/diem-move-a-language-with-programmable-resources/2019-06-18.pdf [6] D. Dill、W. Grieskamp、J. Park、S. Qadeer、M. Xu 和 E. Zhong,“使用移动证明者对智能合约进行快速可靠的形式验证”,建筑工具和算法和系统分析,D. Fisman 和 G. Rosu,Eds。Cham:施普林格国际出版社,2022 年,第 183-200 页。 [7] N.波普尔。(2021) 丢失的密码将百万富翁锁定在他们的比特币财富之外。[在线的]。可用:https ://www.nytimes.com/2021/01/12/technology/bitcoin-passwords-wallets-fortunes.html [8] Diem 团队,“具有重新配置的系统中提交信息的状态同步和验证”,2020 年。[在线]。可用:https : //github.com/aptos-labs/aptos-core/blob/main/documentation/tech-papers/lbft-verification/lbft-verification.pdf [9] G. Danezis、L. Kokoris-Kogias、A. Sonnino 和 A. Spiegelman,“Narwhal 和 tusk:基于 dag 的内存池和有效的 bft 共识”,第十七届欧洲计算机系统会议论文集,ser . EuroSys '22。美国纽约州纽约市:计算机协会,2022 年,p。34-50。[在线的]。可用:https ://doi.org/10.1145/3492321.3519594 [10] Diem 团队,“Diembft v4:Diem 区块链中的状态机复制”,2021 年。[在线]。可用:https : //developers.diem.com/papers/diem-consensus-state-machine-replication-in-the-diem-blockchain/2021-08-17.pdf [11] S. Cohen、R. Gelashvili、L. Kokoris-Kogias、Z. Li、D. Malkhi、A. Sonnino 和 A. Spiegelman,“注意你的领导者”,CoRR,卷。abs/2110.00960, 2021. [在线]。可用:https ://arxiv.org/abs/2110.00960 [12] A. Spiegelman、N. Giridharan、A. Sonnino 和 L. Kokoris-Kogias,“Bullshark:Dag bft 协议变得实用” *,第 20 届计算机和通信安全 (CCS) 会议论文集,*序列号。CCS '22。美国加利福尼亚州洛杉矶:计算机协会,2022 年。 [13] R. Gelashvili、A. Spiegelman、Z. Xiang、G. Danezis、Z. Li、Y. Xia、R. Zhou 和 D. Malkhi,“Block-stm:通过将排序诅咒转变为绩效祝福”,2022 年。[在线]。可用:https ://arxiv.org/abs/2203.06871 [14] J. Lind,“状态同步的演变:在 aptos 上实现亚秒级延迟的每秒 100k+ 事务的路径”,2022 年。[在线]。可用:https ://medium.com/aptoslabs/52e25a2c6f10 ## Publication Information - [Aptos Hub](https://paragraph.com/@aptos-hub/): Publication homepage - [All Posts](https://paragraph.com/@aptos-hub/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@aptos-hub): Subscribe to updates