TON Dev Chat (中文) 常见问题汇总

本Topic旨在汇集TON Dev Chat (中文)频道的常见问题。

已收录问题列表:

  • UQ EQ 0Q 地址类型。及其差异。帖1 帖2
  • 如何获取指定 Jetton的 Jetton Wallet Address。帖1

欢迎查漏补缺持续更新。

2 Likes

如何获取指定 Jetton的 Jetton Wallet Address

先说说 Contract Address
Ton 的 contract address, 是根据 stateInit + workchian 来计算的, 链上和链下都可以。
stateInit 是包含合约code+合约构造函数的一个结构
链下计算以 TypeScript 举例是 @ton/core 包下的 Address.contractAddress 的方法, 传入对应的stateInit 既可.

链上是
token-contract/ft/jetton-utils.fc at main · ton-blockchain/token-contract · GitHub

由于JettonMaster 合约一般都提供了 get_wallet_address 的get 方法, 方便链外获取,所以可以直接请求Jetton 合约的此方法

地址开头包含的信息

首位

  • 主网:可弹回=E;不可弹回=U
  • 测试网:可弹回=k;不可弹回=0

次位

basechain=Q;masterchain=f

例子:kQ开头为测试网、basechain、可弹回的地址

关于TON地址种类及地址类型。UQ EQ 0Q 之间的差异。

总括文档及结构可以参阅这里

简而言之:

标准的 TON 地址可以大致区分为 3 种模式及形态,这一点我们可以参阅 Tonweb 库 更清晰的了解这三种模式形态的差异 :

  1. Hex 格式。这是最为通用但是并不用户友好型的地址类型及内容。但是由于其的唯一性。在实战开发中可以将其作为地址存储、验证的标准。

  2. EQ ,也就是我们常说的 isBounceable , 可退还格式。向在该格式下的地址发起交易,交易遇到问题时会自动退款。这也是部分场景下在尝试自生成地址转账失败的原因。

3.UQ,也就是对应unBounceable ,不可退还格式。目前似乎在大多数场景建议使用并适用。

同一个HEX格式的地址在testnet环境下则可对应 0Q地址。

关于地址格式相关的问题,直观点可以参见 Tonweb 的address 类:

address.toString(isUserFriendly?: boolean, isUrlSafe?: boolean, isBounceable?: boolean, isTestOnly?: boolean): string
1 Like