Skip to content
🎉 Welcome to the new Aptos Docs! Click here to submit an issue.
构建APIsFullnode REST API Guide

Aptos 全节点 REST API

该 API 内置于全节点中,提供了一种简单、低延迟但底层的方式来读取状态和向 Aptos 区块链提交交易。它还支持交易模拟功能。 如需进行更高级的查询,我们推荐使用 索引器 GraphQL API

全节点 REST API 浏览器

理解速率限制

Aptos 索引器 类似,Aptos REST API 也基于计算单元设有速率限制。您可以通过阅读 Aptos Build 文档 了解更多关于速率限制的工作原理。

查看当前和历史状态

大多数与 Aptos 区块链的集成都需要全面了解区块链当前和历史状态。Aptos 提供了历史交易、状态和事件,这些都是交易执行的结果。

  • 历史交易包含执行状态、输出以及与相关事件的关联。每笔交易都有一个唯一的版本号,用于确定其在区块链账本历史中的全局顺序。
  • 状态表示截至特定版本的所有交易输出。换句话说,状态版本是包含该交易版本之前所有交易的累积结果。
  • 交易执行时可能会触发事件。事件 是关于链上数据变更的提示信息。

请确保您通信的 全节点 是最新版本。全节点必须达到包含您交易的版本才能从中检索相关数据。全节点从 验证器全节点 获取状态可能存在延迟,而验证器全节点又以 验证器节点 作为真实数据源。

节点上的存储服务采用两种数据修剪机制来清除数据:

  • 状态数据
  • 事件、交易等其他所有数据虽然可以禁用其中任一功能,但存储状态版本并不是特别可持续的做法。

可以通过在 storage_config.rs 中将 enable_ledger_pruner 设置为 false 来禁用事件和交易剪枝功能。这在 Mainnet 中是默认行为。在不久的将来,Aptos 将提供索引器来减少直接从节点查询的需求。

REST API 提供以下方式查询交易和事件:

使用 View 函数读取状态

通过 API 调用时,View 函数不会修改区块链状态。View 函数 及其 输入参数 可用于通过 Move 读取潜在的复杂链上状态。例如,您可以评估拍卖合约中的最高出价者。以下是相关文件:

View 函数的运行方式类似于 Aptos 模拟 API,但没有副作用且具有可访问的输出路径。可以通过 /view 端点调用 View 函数。调用 View 函数需要提供模块名、函数名以及输入类型参数和值。

函数不必是不可变的才能标记为 #[view],但如果函数是可变的,通过 API 调用时不会导致状态变更。如果要标记可变函数为 #[view],建议将其设为私有,以防止在运行时被恶意调用。

要使用 View 函数,需要通过 Aptos CLI 发布模块

在 Aptos CLI 中,View 函数请求示例如下:

终端
aptos move view --function-id devnet::message::get_message --profile devnet --args address:devnet
{
  "Result": [
    "View functions rock!"
  ]
}

在 TypeScript SDK 中,View 函数请求示例如下:

index.ts
import { Aptos } from "@aptos-labs/ts-sdk";
 
const aptos = new Aptos();
const [balance] = aptos.view<[string]>({
  function: "0x1::coin::balance",
  typeArguments: ["0x1::aptos_coin::AptosCoin"],
  functionArguments: [alice.accountAddress]
});
 
expect(balance).toBe("100000000");

视图函数返回一个值列表作为向量。默认情况下,结果以 JSON 格式返回;不过,也可以选择以 Binary Canonical Serialization (BCS) 编码格式返回。