Ts Sdk Address

Polar Sponsor
爱发电 赞助
.NET 9.0

介绍如何在 @aptos-labs/ts-sdk 中创建和使用 AccountAddress。包括地址格式(AIP-40)、from/fromString/fromStrict 方法、特殊地址、LONG 与 SHORT 形式的区别。

TypeScript SDK: Account Address.Purpose. 指南正确创建,解析,并格式化了以 @aptos-labs/ts-sdk 的账户

功能概述

TypeScript SDK: Account Address.Purpose. 指南正确创建,解析,并格式化了以 @aptos-labs/ts-sdk 的账户是一项面向实际任务的技能,主要用于Addresses是32字节的1值;字符串格式遵循 AIP-40.。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

TypeScript SDK:AccountAddress

目的

指导在 @aptos-labs/ts-sdk 中正确创建、解析和格式化 账户地址(account addresses)。地址为 32 字节值;字符串格式遵循 AIP-40。

务必遵守

  1. 使用 AccountAddress.from() 处理灵活输入 —— 支持字符串(含或不含 0x 前缀)、Uint8Array 或已存在的 AccountAddress 实例。
  2. 在 API 中将地址作为 AccountAddress 或字符串使用 —— SDK 大多数 API 接受 AccountAddressInput 类型(即字符串或 AccountAddress)。
  3. 当需要严格遵循 AIP-40 规范时,使用 AccountAddress.fromStringStrict() 或 AccountAddress.fromStrict() —— 仅允许 LONG 格式(0x + 64 位十六进制字符)或特殊地址(0x0–0xf)的 SHORT 格式。
  4. 使用 SDK 提供的派生地址辅助函数 生成对象/资源/代币地址 —— 切勿手动实现哈希逻辑。

严禁行为

  1. 禁止直接用原始字符串进行地址比较 —— 应使用 addr.equals(other),或先通过 AccountAddress.from() 归一化后再比较。
  2. 禁止对非特殊地址假设 SHORT 格式 —— 在严格模式下,非特殊地址必须采用 LONG 格式(64 位十六进制字符)。
  3. 禁止对账户地址使用 Hex 类 —— 仅应使用 AccountAddress(依据 SDK 文档要求)。

地址格式(AIP-40)

  • 长度:32 字节(LONG 格式下为 64 位十六进制字符)。
  • 字符串表示:必须以 0x 开头;LONG 格式为 0x + 64 位十六进制字符;SHORT 格式为最短合法形式(例如 0x1、0xf)。
  • 特殊地址:0x0–0xf(仅最后 1 字节小于 16,其余字节全为零)。此类地址可采用 SHORT 格式书写(如 0x1、0xa)。
  • 参考规范:AIP-40。

创建 AccountAddress

从字符串创建(推荐:宽松模式)

import { AccountAddress } from "@aptos-labs/ts-sdk";

// 宽松模式:支持带或不带 0x 前缀、SHORT 或 LONG 格式
const addr1 = AccountAddress.from("0x1");
const addr2 = AccountAddress.from("0xaa86fe99004361f747f91342ca13c426ca0cccb0c1217677180c9493bad6ef0c");
const addr3 = AccountAddress.from("1"); // 不带 0x 前缀亦可

从字符串创建(严格遵循 AIP-40)

// 严格模式:仅接受 LONG 格式(0x + 64 字符)或特殊地址(0x0–0xf)的 SHORT 格式
const addrStrict = AccountAddress.fromStringStrict(
  "0x0000000000000000000000000000000000000000000000000000000000000001"
);
// 或使用 fromStrict 处理任意 AccountAddressInput
const a = AccountAddress.fromStrict("0x1"); // 合法:特殊地址以 SHORT 格式传入

从字节数组创建

const bytes = new Uint8Array(32);
bytes[31] = 1;
const addr = new AccountAddress(bytes);
// 或
const addrFrom = AccountAddress.from(bytes);

内置常量

AccountAddress.ZERO; // 0x0
AccountAddress.ONE; // 0x1
AccountAddress.TWO; // 0x2
AccountAddress.THREE; // 0x3
AccountAddress.FOUR; // 0x4
AccountAddress.A; // 0xa

字符串输出

方法 适用场景
addr.toString() AIP-40 默认行为:特殊地址输出 SHORT 格式,其余输出 LONG 格式
addr.toStringLong() 始终输出 0x + 64 位十六进制字符
addr.toStringShort() 最短合法形式(无前导零)
addr.toStringLongWithoutPrefix() 64 位十六进制字符,不含 0x 前缀
const addr = AccountAddress.from("0x1");
addr.toString(); // "0x1"
addr.toStringLong(); // "0x0000...0001"(0x 后共 64 位十六进制字符)

校验

const result = AccountAddress.isValid({
  input: "0x1",
  strict: false
});
if (result.valid) {
  // 使用该地址
} else {
  console.log(result.invalidReason, result.invalidReasonMessage);
}

派生地址(对象 / 资源 / 代币 / 用户派生)

从 @aptos-labs/ts-sdk(通过 core 模块)导入:

import {
  AccountAddress,
  createObjectAddress,
  createResourceAddress,
  createTokenAddress,
  createUserDerivedObjectAddress
} from "@aptos-labs/ts-sdk";

对象地址(例如命名对象)

const creator = AccountAddress.from("0x120e79e45d21ef439963580c77a023e2729db799e96e61f878fac98fde5b9cc9");
const seed = "migration::migration_contract"; // 或 Uint8Array
const objectAddr = createObjectAddress(creator, seed);
// objectAddr.toString() => 确定性的 0x... 地址

资源账户地址

const creator = AccountAddress.from("0x41e724e1d4fce6472ffcb5c9886770893eb49489e3f531d0aa97bf951e66d70c");
const seed = "create_resource::create_resource";
const resourceAddr = createResourceAddress(creator, seed);

代币(NFT)对象地址

const creator = AccountAddress.from("0x9d518b9b84f327eafc5f6632200ea224a818a935ffd6be5d78ada250bbc44a6");
const collectionName = "SuperV Villains";
const tokenName = "Nami #5962";
const tokenAddr = createTokenAddress(creator, collectionName, tokenName);
// 内部实现:seed = `${collectionName}::${tokenName}` -> createObjectAddress(creator, seed)

用户派生对象地址

const sourceAddress = AccountAddress.from("0x653a60dab27fe8f3859414973d218e1b7551c778a8650a7055a85c0f8041b2a4");
const deriveFromAddress = AccountAddress.from("0xa");
const userDerivedAddr = createUserDerivedObjectAddress(sourceAddress, deriveFromAddress);

相等性判断与序列化

const a = AccountAddress.from("0x1");
const b = AccountAddress.from("0x0000000000000000000000000000000000000000000000000000000000000001");
a.equals(b); // true

// BCS 序列化:在构造交易时使用序列化器或 SDK 提供的 entry/script 辅助函数

常见错误

错误做法 正确做法
对账户地址使用 Hex 类 仅使用 AccountAddress
用 === 直接比较字符串 使用 addr1.equals(addr2),或先调用 AccountAddress.from() 归一化再比较
在严格模式下对非特殊地址使用 SHORT 格式 使用 LONG 格式(0x + 64 位十六进制字符),或改用 AccountAddress.from()(宽松模式)
手动实现对象地址哈希逻辑 使用 createObjectAddress / createTokenAddress / createResourceAddress / createUserDerivedObjectAddress

参考资料

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习