本Topic旨在汇集TON Dev Chat (中文)频道的常见问题。
已收录问题列表:
欢迎查漏补缺持续更新。
如何获取指定 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 合约的此方法
basechain=Q;masterchain=f
例子:kQ开头为测试网、basechain、可弹回的地址
关于TON地址种类及地址类型。UQ EQ 0Q 之间的差异。
总括文档及结构可以参阅这里
简而言之:
标准的 TON 地址可以大致区分为 3 种模式及形态,这一点我们可以参阅 Tonweb 库 更清晰的了解这三种模式形态的差异 :
Hex 格式。这是最为通用但是并不用户友好型的地址类型及内容。但是由于其的唯一性。在实战开发中可以将其作为地址存储、验证的标准。
EQ ,也就是我们常说的 isBounceable , 可退还格式。向在该格式下的地址发起交易,交易遇到问题时会自动退款。这也是部分场景下在尝试自生成地址转账失败的原因。
3.UQ,也就是对应unBounceable ,不可退还格式。目前似乎在大多数场景建议使用并适用。
同一个HEX格式的地址在testnet环境下则可对应 0Q地址。
关于地址格式相关的问题,直观点可以参见 Tonweb 的address 类:
address.toString(isUserFriendly?: boolean, isUrlSafe?: boolean, isBounceable?: boolean, isTestOnly?: boolean): string