返回顶部
t

ts-sdk-view-and-query

How to read on-chain data in @aptos-labs/ts-sdk: view(), getBalance(), getAccountInfo(), getAccountResources(),

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
108
下载量
0
收藏
概述
安装方式
版本历史

ts-sdk-view-and-query

# TypeScript SDK: View and Query ## Purpose Guide **read-only** access to chain data in `@aptos-labs/ts-sdk`: view functions, balance, account info, resources, and modules. ## ALWAYS 1. **Use `aptos.getBalance({ accountAddress })` for APT balance** – not deprecated `getAccountCoinAmount` / `getAccountAPTAmount`. 2. **Use `aptos.view()` for Move view functions** – pass `function`, `functionArguments`, and optional `typeArguments`. 3. **Use `bigint` for u128/u256 view return values** – cast `result[0]` to `BigInt(...)` when the Move function returns u128/u256. 4. **Pass address as string or AccountAddress** – SDK accepts `AccountAddressInput` (string or `AccountAddress`). ## NEVER 1. **Do not use deprecated `getAccountCoinAmount` or `getAccountAPTAmount`** – use `getBalance()`. 2. **Do not use `number` for u128/u256** – precision loss; use `bigint`. 3. **Do not assume view returns are always strings** – types vary (number, bigint, string, boolean, array). --- ## getBalance (APT) ```typescript const balance = await aptos.getBalance({ accountAddress: account.accountAddress }); // balance is bigint in octas (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 ```typescript const accountInfo = await aptos.getAccountInfo({ accountAddress: "0x1" }); // accountInfo: { sequence_number, authentication_key, ... } ``` --- ## view() – Move view functions ```typescript // No type arguments const result = await aptos.view({ payload: { function: `${MODULE_ADDRESS}::counter::get_count`, functionArguments: [accountAddress] } }); const count = Number(result[0]); // With type arguments (e.g. coin type) const balanceResult = await aptos.view({ payload: { function: "0x1::coin::balance", typeArguments: ["0x1::aptos_coin::AptosCoin"], functionArguments: [accountAddress] } }); const coinBalance = BigInt(balanceResult[0] as string); // Multiple return values // 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 ```typescript const resources = await aptos.getAccountResources({ accountAddress: account.accountAddress }); // resources: Array<MoveResource> const counterResource = resources.find((r) => r.type === `${MODULE_ADDRESS}::counter::Counter`); ``` --- ## getAccountResource (single type) ```typescript const resource = await aptos.getAccountResource({ accountAddress: account.accountAddress, resourceType: `${MODULE_ADDRESS}::counter::Counter` }); // resource.data has the struct fields const value = (resource?.data as { value: number })?.value; ``` --- ## getAccountModules ```typescript const modules = await aptos.getAccountModules({ accountAddress: modulePublisherAddress }); // modules: MoveModuleBytecode[] (ABI, bytecode) ``` --- ## getModule (single module by name) ```typescript const module = await aptos.getModule({ accountAddress: modulePublisherAddress, moduleName: "counter" }); ``` --- ## Pagination (resources / modules) Use cursor-based options when available: ```typescript const { resources, cursor } = await aptos.getAccountResourcesPage({ accountAddress: account.accountAddress, options: { limit: 10, cursor: nextCursor } }); ``` --- ## Type handling for view results | Move return type | TypeScript | Example | | ---------------- | ---------------- | ------------------------------------------ | | u8..u64 | number or bigint | `Number(result[0])` or `BigInt(result[0])` | | u128, u256 | bigint | `BigInt(result[0] as string)` | | address | string | `result[0] as string` | | bool | boolean | `result[0] as boolean` | | vector<T> | array | `result[0] as T[]` | --- ## Common mistakes | Mistake | Correct approach | | ----------------------------------------- | ------------------------------------------------------------- | | Using getAccountCoinAmount | Use `aptos.getBalance({ accountAddress })` | | Using number for u128 | Use `BigInt(result[0] as string)` | | Forgetting typeArguments for generic view | Add `typeArguments: [coinType]` when Move function is generic | --- ## References - SDK: `src/internal/view.ts`, `src/api/account.ts`, balance/getBalance in internal - Pattern: [TYPESCRIPT_SDK.md](../../../../patterns/fullstack/TYPESCRIPT_SDK.md) - Related: [ts-sdk-client](../ts-sdk-client/SKILL.md), [ts-sdk-types](../ts-sdk-types/SKILL.md), [use-ts-sdk](../use-ts-sdk/SKILL.md)

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 ts-sdk-view-and-query-1776168181 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 ts-sdk-view-and-query-1776168181 技能

通过命令行安装

skillhub install ts-sdk-view-and-query-1776168181

下载 Zip 包

⬇ 下载 ts-sdk-view-and-query v1.0.0

文件大小: 2.58 KB | 发布时间: 2026-4-17 16:24

v1.0.0 最新 2026-4-17 16:24
Initial release providing best practices and usage examples for reading on-chain data with @aptos-labs/ts-sdk:

- Documents usage of view(), getBalance(), getAccountInfo(), getAccountResources(), getAccountModules(), and getResource().
- Explains correct type handling for Move view return values in TypeScript (e.g., bigint for u128/u256).
- Highlights recommended and deprecated methods for balance and data queries.
- Includes code samples for each supported function.
- Lists common mistakes and proper approaches.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部