如何在 @aptos-labs/ts-sdk 中读取链上数据:view()、getBalance()、getAccountInfo()、getAccountResources()、getAccountModules()、getResource() 等方法的使用。触发...
TypeScript SDK: View and Query. uspose. 指南只读访问在 @aptos-labs/ts-sdk中的链条数据:视图函数,平衡
功能概述
TypeScript SDK: View and Query. uspose. 指南只读访问在 @aptos-labs/ts-sdk中的链条数据:视图函数,平衡是一项面向实际任务的技能,主要用于AlWAYS.;Use aptos.getBalance({ ac>).。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
TypeScript SDK:查看与查询
目的
指导如何在 @aptos-labs/ts-sdk 中进行只读链上数据访问:调用 Move 视图函数、查询 APT 余额、账户信息、资源(resources)和模块(modules)。
务必遵守
- 使用
aptos.getBalance({ accountAddress })查询 APT 余额 —— 不要使用已弃用的getAccountCoinAmount/getAccountAPTAmount。 - 使用
aptos.view()调用 Move 视图函数 —— 传入function、functionArguments,以及可选的typeArguments。 - 对返回 u128/u256 的视图函数,使用
bigint类型接收结果 —— 当 Move 函数返回 u128/u256 时,请将result[0]显式转换为BigInt(...)。 - 地址参数支持字符串或
AccountAddress实例 —— SDK 接受AccountAddressInput类型(即字符串或AccountAddress对象)。
严禁操作
- 禁止使用已弃用的
getAccountCoinAmount或getAccountAPTAmount—— 请统一使用getBalance()。 - 禁止对 u128/u256 使用
number类型 —— 将导致精度丢失;必须使用bigint。 - 不要假设视图函数返回值总是字符串 —— 返回类型多样(
number、bigint、string、boolean、array等)。
getBalance(APT 余额)
const balance = await aptos.getBalance({
accountAddress: account.accountAddress
});
// balance 是以 octas 为单位的 bigint(1 APT = 100_000_000 octas)
const apt = balance / 100_000_000n;
const remainder = balance % 100_000_000n;
console.log(`${apt}.${remainder.toString().padStart(8, "0")} APT`);
getAccountInfo(账户信息)
const accountInfo = await aptos.getAccountInfo({
accountAddress: "0x1"
});
// accountInfo: { sequence_number, authentication_key, ... }
view() —— 调用 Move 视图函数
// 无类型参数(type arguments)
const result = await aptos.view({
payload: {
function: `${MODULE_ADDRESS}::counter::get_count`,
functionArguments: [accountAddress]
}
});
const count = Number(result[0]);
// 带类型参数(例如代币类型)
const balanceResult = await aptos.view({
payload: {
function: "0x1::coin::balance",
typeArguments: ["0x1::aptos_coin::AptosCoin"],
functionArguments: [accountAddress]
}
});
const coinBalance = BigInt(balanceResult[0] as string);
// 多返回值示例
// Move 函数定义:public fun get_listing(addr): (address, u64, bool)
const [seller, price, isActive] = await aptos.view({
payload: {
function: `${MODULE_ADDRESS}::marketplace::get_listing`,
functionArguments: [listingAddress]
}
});
const listing = {
seller: seller as string,
price: BigInt(price as string),
isActive: isActive as boolean
};
getAccountResources(获取全部资源)
const resources = await aptos.getAccountResources({
accountAddress: account.accountAddress
});
// resources: Array
const counterResource = resources.find((r) => r.type === `${MODULE_ADDRESS}::counter::Counter`);
getAccountResource(按类型获取单个资源)
const resource = await aptos.getAccountResource({
accountAddress: account.accountAddress,
resourceType: `${MODULE_ADDRESS}::counter::Counter`
});
// resource.data 包含结构体字段
const value = (resource?.data as { value: number })?.value;
getAccountModules(获取全部模块)
const modules = await aptos.getAccountModules({
accountAddress: modulePublisherAddress
});
// modules: MoveModuleBytecode[](含 ABI 和字节码)
getModule(按名称获取单个模块)
const module = await aptos.getModule({
accountAddress: modulePublisherAddress,
moduleName: "counter"
});
分页(资源 / 模块)
当接口支持时,请使用基于游标的分页选项:
const { resources, cursor } = await aptos.getAccountResourcesPage({
accountAddress: account.accountAddress,
options: { limit: 10, cursor: nextCursor }
});
视图函数返回值的类型处理
| Move 返回类型 | TypeScript 类型 | 示例 |
|---|---|---|
| u8..u64 | number 或 bigint |
Number(result[0]) 或 BigInt(result[0]) |
| u128、u256 | bigint |
BigInt(result[0] as string) |
| address | string |
result[0] as string |
| bool | boolean |
result[0] as boolean |
| vector |
array |
result[0] as T[] |
常见错误
| 错误做法 | 正确做法 |
|---|---|
使用 getAccountCoinAmount |
使用 aptos.getBalance({ accountAddress }) |
对 u128 使用 number |
使用 BigInt(result[0] as string) |
调用泛型视图函数时遗漏 typeArguments |
当 Move 函数为泛型时,需显式传入 typeArguments: [coinType] |
参考资料
- SDK 源码:
src/internal/view.ts、src/api/account.ts,以及内部实现中的 balance/getBalance - 规范文档:
TYPESCRIPT_SDK.md - 相关项目:
ts-sdk-client、ts-sdk-types、use-ts-sdk
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习