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_function.rs
示例- 相关 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 函数请求示例如下:
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) 编码格式返回。