Aptos 全节点 REST API
该 API 内置于全节点中,提供了一种简单,低延迟但底层的方式来读取状态和向 Aptos 区块链提交交易.它还支持交易模拟功能. 如需进行更高级的查询,我们推荐使用 索引器 GraphQL API.
全节点 REST API 浏览器
Section titled “全节点 REST API 浏览器”理解速率限制
Section titled “理解速率限制”与 Aptos 索引器 类似,Aptos REST API 也基于计算单元设有速率限制.您可以通过阅读 Aptos Build 文档 了解更多关于速率限制的工作原理.
查看当前和历史状态
Section titled “查看当前和历史状态”大多数与 Aptos 区块链的集成都需要全面了解区块链当前和历史状态.Aptos 提供了历史交易,状态和事件,这些都是交易执行的结果.
- 历史交易包含执行状态,输出以及与相关事件的关联.每笔交易都有一个唯一的版本号,用于确定其在区块链账本历史中的全局顺序.
- 状态表示截至特定版本的所有交易输出.换句话说,状态版本是包含该交易版本之前所有交易的累积结果.
- 交易执行时可能会触发事件.事件 是关于链上数据变更的提示信息.
节点上的存储服务采用两种数据修剪机制来清除数据:
- 状态数据
- 事件,交易等其他所有数据虽然可以禁用其中任一功能,但存储状态版本并不是特别可持续的做法.
可以通过在 storage_config.rs
中将 enable_ledger_pruner
设置为 false
来禁用事件和交易剪枝功能.这在 Mainnet 中是默认行为.在不久的将来,Aptos 将提供索引器来减少直接从节点查询的需求.
REST API 提供以下方式查询交易和事件:
使用 View 函数读取状态
Section titled “使用 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) 编码格式返回.