Aptos全节点REST API
该API嵌入到全节点中,提供了一种简单、低延迟、但低级别的方式来读取状态和提交交易到Aptos区块链。它还支持交易模拟。 对于更高级的查询,我们建议使用 Indexer GraphQL API。
Aptos全节点REST API浏览器
理解速率限制
与 Aptos Indexer 一样,Aptos REST API对每个IP地址的请求有一个每五分钟 5000 个的速率限制,无论是提交交易还是查询Aptos提供的节点上的API。(作为节点运营商,您可以在自己的节点上提高这些限制。)请注意,此限制可能会在有或没有事先通知的情况下更改。
查看当前和历史状态
大多数对接到 Aptos 区块链的集成都需要全面了解当前和历史状态。Aptos 提供了历史交易、状态和事件,这些都是交易执行的结果。
- 历史交易指定了执行状态、输出和与相关事件的关联。每个交易都有一个唯一的版本号,它决定了它在区块链账本历史中的全局顺序。
- 状态是特定版本之前所有交易输出的表示。换句话说,状态版本是包括该交易版本在内的所有交易的累积。
- 当交易执行时,它们可能会发出事件。事件是关于链上数据变化的提示。
节点上的存储服务采用两种修剪方式来擦除数据:
- 状态
- 事件、交易和其他所有内容
虽然这两者都可以禁用,但存储状态版本并不是特别可持续的。
可以通过在 storage_config.rs
中将 enable_ledger_pruner
设置为 false
来禁用事件和交易修剪。
这是主网的默认行为。
在不久的将来,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格式返回;但是,可以选择以二进制规范序列化(BCS)编码格式返回。