本指南旨在帮助交易所开发者将 Aptos 及其生态资产集成至交易平台。内容涵盖基础设施配置、地址与资产标准解析、余额查询方法、资产转移操作及系统测试方案,为集成过程提供通用框架。
集成流程概览
Aptos 集成需完成以下核心任务:
- 搭建区块链交互基础设施
- 理解地址标准与账户规范
- 掌握 Coin 与 Fungible Asset 两种代币标准
- 实现余额查询功能
- 配置余额变动监听机制
- 执行资产转移操作
- 完成集成测试验证
基础设施配置建议
为保障数据查询与交易提交的稳定性,建议部署自有 Aptos 全节点。全节点支持实时查询链上状态并提交交易。此外,可使用 Indexer 高效获取链上数据,提升余额监听效率。
地址标准详解
地址格式规范
单个 Aptos 地址存在三种表示形式,推荐完整显示前导零的格式:
- 0x1: 32 字节完整十六进制格式(带 0x 前缀),为推荐格式
- 0x1: 短地址格式(带 0x 前缀),保留用于兼容性
- 1: 32 字节完整十六进制格式(无 0x 前缀),保留用于兼容性
开发时建议直接使用 Aptos SDK 自动处理地址解析,避免手动转换错误。
Aptos 名称服务(ANS)支持友好格式的 .apt 域名,进一步简化地址管理。更多详情参考 Aptos 官方账户文档。
账户创建标准
向区块链发送交易前,目标账户必须已存在。可通过向该账户发送零金额交易自动创建账户资源,或调用专用账户初始化函数完成创建。
资产标准解析
Aptos 支持两种同质化代币标准:
- Coin 标准: 早期代币标准,类似以太坊 ERC-20
- Fungible Asset 标准: 功能更丰富的新代币标准
目前存在从 Coin 向 Fungible Asset 迁移的过渡期资产(称为 迁移代币)。查询余额时需注意:迁移代币仍需使用 Coin 标准函数,Fungible Asset 标准函数仅处理纯 FA 格式资产。
Coin 标准要点
每种 Coin 都有对应的链上结构体表示(如 AptosCoin 代表 APT)。所有 Coin 存储在账户的 CoinStore 资源中,使用前需注册代币。通过标准转账函数(如 coin_transfer 或 aptos_coin_transfer)可自动完成注册。
迁移至 Fungible Asset 的代币仍应调用 Coin 标准函数处理。
Fungible Asset 标准要点
Fungible Asset 通过元数据地址(fa metadata address)标识。资产存储在称为 FungibleStore 的独立资源中,交易所集成最关注与所有者直接关联的 PrimaryFungibleStore。
余额查询方法
两种标准的余额查询方式不同,完整集成需同时支持两者。余额始终以最小单位返回(例:APT 返回 octa 单位,1 APT = 100,000,000 octa)。
查询 Coin 余额(含迁移代币)
使用视图函数 get_balance 可查询 Coin 及迁移代币的合并余额。可指定账本版本查询历史余额:
# 示例:查询账本版本 1000 的余额
balance = get_balance(account, "0x1::aptos_coin::AptosCoin", 1000)查询 Fungible Asset 余额
使用视图函数 get_fungible_asset_balance 查询纯 Fungible Asset 余额(不包含迁移代币)。同样支持指定账本版本:
# 示例:查询账本版本 1000 的 FA 余额
balance = get_fungible_asset_balance(account, metadata_address, 1000)除 SDK 外,也可直接调用全节点的 余额 API 接口 获取余额数据。
余额变动追踪方案
追踪余额变化有两种方式:
- 监听每笔交易中的余额变动事件
- 通过 Indexer 查询已索引的余额变更事件
旧版 API 的 get_account_transactions 端点即将弃用,不建议新集成使用。
Coin 余额变动追踪
Coin 余额通过写集变更(Write Set)和事件(Event)共同追踪。写集显示余额最终状态,事件记录资金流动细节。
典型 Coin 转账包含:
- 交易详情: 交易版本号(类似区块高度)提供全局顺序
- 写集变更: 显示
CoinStore的最终状态 - 事件记录: 关注
WithdrawEvent(余额减少)和DepositEvent(余额增加) - Gas 扣除: 通过
gas_used和gas_unit_price字段计算 Gas 费用(以 octa 为单位)
需同时分析事件和写集变更才能准确计算转账金额。
Fungible Asset 余额变动追踪
Fungible Asset 余额变动通过 PrimaryFungibleStore 追踪。主要步骤:
- 监听
WithdrawEvent和DepositEvent事件,记录金额变动 - 通过写集变更中的
balance字段验证最终余额 - 根据
store字段匹配资产存储地址,通过owner字段确定资产所有者
若写集中找不到对应资源,需通过删除事件(DeleteResourceEvent)进行关联。
迁移代币余额变动处理
迁移代币同时产生 Coin 和 Fungible Asset 两种变更记录,需聚合处理并统一按 Coin 标准处理。FA 元数据地址为 Coin 类型哈希值与 0xA 的拼接。
资产转移操作指南
Coin 转账(含迁移代币)
推荐使用 coin_transfer 函数进行转账,该函数会自动注册未登记的代币并创建不存在的账户,完全兼容包括 APT 在内的所有迁移代币。
支持三种转账方式:
coin_transfer:普通代币转账coin_transfer_batch:批量代币转账aptos_coin_transfer:APT 专用转账
Fungible Asset 转账
推荐使用 fungible_asset_transfer 函数转账,会自动为接收方创建资产存储库(若不存在)。
集成测试方案
余额查询测试
测试账户对指定资产的余额查询功能。正确结果应同时显示 Coin 格式和迁移代币格式的余额(如 0.001 APT 与 0.001 APT 迁移代币)。若余额异常,请检查 Coin 与迁移代币的余额查询逻辑。
余额变动/转账测试
Coin 转账测试
向其他账户转账 0.001 APT,验证交易是否成功、余额是否准确减少(扣除 Gas 费用后)。
Fungible Asset 转账测试
通过测试代币水龙头获取测试资产后,进行 FA 转账测试。余额应按变动金额更新,且能在浏览器上追踪铸造记录。
稳定币地址参考
(此部分内容需根据最新链上信息更新)
常见问题
交易最终性如何确认?
Aptos 采用 BFT 共识算法,交易在提交到区块链后立即实现最终确认。
交易费用如何计算?
交易费用动态变化但通常较为稳定。可通过 交易模拟功能 预估 Gas 消耗。
如何处理密钥轮换?
Aptos 支持账户密钥轮换功能,具体操作参考密钥管理指南。
余额查询为何返回最小单位?
返回最小单位可避免浮点数精度问题,确保计算准确性。需在前端显示时进行单位转换。
迁移代币查询有哪些注意事项?
查询迁移代币余额时必须使用 Coin 标准函数,使用 Fungible Asset 函数将返回不完整结果。
如何选择全节点与 Indexer?
全节点适合实时交易提交和状态查询,Indexer 适合高效获取历史数据和批量查询。