什么是 TON 地址转换器?
TON 地址转换器在 The Open Network 上同一账户的 raw 形式(workchain:hash,例如 0:83df…31a8)与 TON 地址文档定义的用户友好形式之间进行转换:后者是由标志位、工作链、哈希和 CRC16 校验和组成的 36 字节结构,经 base64 编码后成为常见的 48 字符 EQ…(可弹回)和 UQ…(不可弹回)字符串。所有形式指向的都是同一个智能合约账户,区别仅在于告诉发送方如何对待它。
用户友好地址的结构
| 字节 | 字段 | 含义 |
|---|---|---|
| 0 | 标签 | 0x11 可弹回,0x51 不可弹回;仅限测试网则加 0x80(0x91、0xD1) |
| 1 | 工作链 | 0x00 基础链,0xFF 主链(有符号字节 -1) |
| 2–33 | 账户哈希 | 合约初始状态(代码 + 数据)的 SHA-256 |
| 34–35 | CRC16 | 对第 0–33 字节计算的 CRC-16/XMODEM,大端序 |
36 字节的 base64 恰好是 48 个字符且无填充,这就是为什么所有用户友好的 TON 地址长度都相同。前两个字符来自标签和工作链字节的高位:主网工作链 0 为 EQ 和 UQ,主链为 Ef 和 Uf,测试网为 kQ 和 0Q。
示例
以 raw 地址 0:83dfd552e63729b472fcbcc8c45ebcc6691702558b68ec7527e1ba403a0f31a8 为例。在前面加上标签 0x11 和工作链 0x00,追加这 34 字节的 CRC-16/XMODEM,再做 base64url 编码,就得到可弹回形式 EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N。把标签改为 0x51 会改变首字符和校验和,得到 UQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqEBI。中间的 43 个字符完全相同,因为哈希相同。把任一字符串粘贴到上方,工具就会还原 raw 形式并显示全部四种变体。
可弹回还是不可弹回:该用哪个
- 向个人转账。使用不可弹回的
UQ…形式。如果对方的钱包合约尚未部署(全新钱包),可弹回转账会被退回,对方什么也收不到。 - 调用智能合约。使用可弹回的
EQ…形式。如果调用失败,合约会弹回消息,TON 扣除手续费后退回给你,而不会被卡住。 - 交易所充值。按交易所的说明操作,包括 memo 或 comment。地址形式不会改变目的地,但标志位决定失败时会发生什么。
为什么 CRC 检查很重要
TON 地址是 base64,一个字符错了就会悄无声息地改变哈希,而改变后的哈希就是另一个(很可能不存在的)账户。CRC16 能捕获所有单字符错误和大多数多字符错误。本工具拒绝转换任何校验和不匹配的用户友好地址,也绝不会猜测你的本意。raw 地址根本没有校验和,因此转换 raw 地址时,输出的正确性完全取决于你粘贴的十六进制;请把首尾字符与来源比对。
典型用途
- 把节点、区块浏览器 API 或 TON Connect manifest 输出的 raw 地址转换成钱包接受的形式。
- 在向新钱包转账前,把合约列表里的可弹回地址切换为不可弹回形式。
- 检查别人发给你的地址是否为仅限测试网的形式。
本站的其他地址工具:加密货币地址验证器和 Tron 地址转换器。