Aptos 全节点 REST API
该 API 随每个全节点一起提供,是读取状态、提交交易和模拟交易的简单、低延迟、底层方式。如需查询 NFT、对象、历史活动或聚合表,请改用 Indexer GraphQL API。
Aptos Labs 基址:https://api.{network}.aptoslabs.com/v1,例如 https://api.mainnet.aptoslabs.com/v1。fullnode.{network}.aptoslabs.com 是同一服务的别名。
规范与浏览器
Section titled “规范与浏览器”节点 API 使用 OpenAPI 3.0(Aptos Node API 1.2.0)。本站发布规范及生成的参考文档;每个网络还托管实时 Swagger UI。
节点上的规范 YAML 为 GET /v1/spec.yaml。健康检查为 GET /v1/-/healthy。账本信息(chain ID、版本、epoch、角色)为 GET /v1。节点身份为 GET /v1/info。
curl "https://api.mainnet.aptoslabs.com/v1"身份验证与速率限制
Section titled “身份验证与速率限制”匿名访问按 IP 限额。附加 Geomi API 密钥可获得更高限额:
curl "https://api.mainnet.aptoslabs.com/v1/accounts/0x1" \ -H "Authorization: Bearer YOUR_API_KEY"Labs 托管的节点和 Indexer API 以计算单元计费,并同时执行 HTTP 速率限制。详见 Geomi 计费文档。
| 操作 | 方法与路径 | 参考 |
|---|---|---|
| 账本信息 | GET /v1 | get_ledger_info |
| 健康检查 | GET /v1/-/healthy | healthy |
| 账户 | GET /v1/accounts/{address} | get_account |
| Coin 或 FA 余额 | GET /v1/accounts/{address}/balance/{asset_type} | get_account_balance |
| View 函数 | POST /v1/view | view |
| 提交交易 | POST /v1/transactions | submit_transaction |
| 模拟交易 | POST /v1/transactions/simulate | simulate_transaction |
| 按版本查询交易 | GET /v1/transactions/by_version/{txn_version} | get_transaction_by_version |
| 账户交易 | GET /v1/accounts/{address}/transactions | get_account_transactions |
| 按事件句柄查询事件 | GET /v1/accounts/{address}/events/{event_handle}/{field_name} | get_events_by_event_handle |
get_account_balance 的 asset_type 可以是 Coin 类型(例如 0x1::aptos_coin::AptosCoin),也可以是同质化资产元数据地址(例如 APT 的 0xa)。在 同质化资产迁移 之后,请优先使用该端点(或 SDK 辅助方法如 getAccountAPTAmount),而不是读取 CoinStore 资源。
查看当前和历史状态
Section titled “查看当前和历史状态”大多数集成需要同时了解当前和历史状态。Aptos 提供历史交易、状态和事件,这些都是交易执行的结果。
- 历史交易包含执行状态、输出以及相关事件。每笔交易都有唯一的版本号,表示它在账本中的全局顺序。
- 某一版本的状态是截至并包含该版本的所有交易输出的累积。
- 执行交易时可能会发出事件,提示链上数据发生了变化。
节点会裁剪旧的账本历史(也可以裁剪状态)以限制磁盘占用。默认窗口保留最近 1.5 亿笔交易;几乎所有主网和测试网节点都使用该默认值。只有在运行自己的节点时才应禁用或调整裁剪——见数据裁剪。超出裁剪窗口的历史数据请使用 Indexer。
按账户查询交易只返回该账户的序列号交易,不会返回该账户发送的无序交易。
使用 View 函数读取状态
Section titled “使用 View 函数读取状态”通过 API 调用时,View 函数不会修改区块链状态。View 函数及其参数可以用 Move 计算复杂的链上状态,例如拍卖中的最高出价。REST 操作为 POST /view。
该调用类似模拟,但没有副作用,并返回函数输出。你需要提供模块、函数名、类型参数和值。函数不必是不可变的才能使用 #[view];即使函数可变,API 也不会提交状态。建议将此类函数设为私有,以免在运行时被当作入口函数调用。
框架模块已经暴露 View 函数,因此无需发布模块即可试用该端点:
curl -X POST "https://api.mainnet.aptoslabs.com/v1/view" \ -H "Content-Type: application/json" \ -d '{"function":"0x1::chain_id::get","type_arguments":[],"arguments":[]}'aptos move view --function-id 0x1::chain_id::getimport { Aptos, AptosConfig, Network, type InputViewFunctionData } from "@aptos-labs/ts-sdk";
const aptos = new Aptos(new AptosConfig({ network: Network.MAINNET }));const payload: InputViewFunctionData = { function: "0x1::chain_id::get",};const [chainId] = await aptos.view<[number]>({ payload });对于你自己的模块,请使用 Aptos CLI 发布模块,然后调用 aptos move view --function-id <address>::<module>::<function>。
响应是返回值的 JSON 数组。也可以通过设置相应的 Accept / Content-Type 请求 Binary Canonical Serialization(BCS)编码结果。