TON Jetton 终极指南 | 标准、存取、通知与最佳实践

Posted by KDY 加密行情与 Web3 指南 on September 5, 2025

Jetton 是 The Open Network(TON)区块链上的标准化可替代代币,类似以太坊的 ERC-20。本文手把手拆解 Jetton 架构、主合约、钱包合约、存取款、链上与链下处理、通知与最佳实践,助你在 TON 生态中游刃有余。

1 Jetton 简介与核心概念

1.1 什么是 Jetton

Jetton 是 TON 区块链上的同质化代币协议(TEP-74)。它使用 Master 合约 + 钱包合约双合约架构,支持零手续费接收、拆分转账及批量提币。
关键词:TON Jetton、TON 代币、可替代代币。

1.2 交易确认规则

TON 的交易只需 1 次确认即不可逆。为了流畅的用户体验,应用侧无需再做额外等待。

1.3 常见定义

  • Master:存储全局元数据与唯一标识(总供应量、Metadata URI、铸造开关)。
  • Wallet:每个 (用户, 代币类型) 对部署的独立钱包合约,负责转账、销毁、接收。

👉 快速了解 Master 与钱包如何协同工作

2 Jetton 实践指南

2.1 铸造与部署

场景 要点
首次铸造 部署 Jetton 主合约(minter),调用 mint 方法。
追加铸造 只有当 mintable=-1 时才可操作。管理员调用中间消息 op=21 即可增发;若需永远锁铸,可将管理员设为 0x0 地址。
元数据配置 根据 TEP-64 在 jetton_content Store 下列字段:name / symbol / decimals / image 。

2.2 链下存币与提币

存款两种模式

  1. 中央钱包 + Memo:
    把多个用户转账指向同一地址,Memo 作为用户唯一标识。整合成本低,却易忘填。
  2. 独立子地址:
    为每位用户分配专属子钱包(使用子 ID 创建 v3R2 钱包)。无需 Memo,用户体验好,但需监控大量地址。

提币最佳实践

  • 高负载钱包 v3 支持批量。一次交易可携带多条 transfer 消息,降低手续费达 90 %。
  • Gas 预算公式
    Toncoin > to_nano(TRANSFER_CONSUMPTION) + forward_ton_amount + 尘埃量
    一般预留 0.05 TON 以上即可。

小程序:用 pytonlib 查余额

from pytonlib import TonlibClient
client = TonlibClient()
await client.get_jetton_wallet_balance(wallet_address='EQYourJettonWallet...')

3 消息布局与“三跳转账”模型

转账 Jetton 默认触发 3 条内部消息(三跳):

  1. Message 0 发送方钱包 → 接收方钱包(附带金额、Memo 等)。
  2. Message 2’ 接收方钱包 → 用户通知(仅 forward_ton_amount>0)。
  3. Message 2’‘ 接收方钱包 → 发送方返还多余 TON。

想要附带短信?将 forward_payload 前 32 bit 置 0x0,后接 UTF-8 文本即可。推荐设置 1 nanoton 即可发送通知。

普通转账的低级错误:出现 709 或 cskip_no_gas,基本都是转发金额不足以支付费 gas。

4 常见疑问速解(FAQ)

  1. Q:如何验证 Jetton 真伪?
    A:比对官网公布的 Master 地址与链上合约地址;同时检查 symbolname 是否有细微差异。

  2. Q:批量提币上限是多少?
    A:高负载 v3 钱包单笔最多 254 条消息,实际受 payload 长度限制建议 ≤100 条。

  3. Q:Memo 存款模式如何减少漏填?
    A:前端强制在转账备注中写入 6–8 位固定随机字符串,匹配失败直接拒绝入账。

  4. Q:我想一次性发 1000+ 地址的 Jetton 怎么办?
    A:把分片钱包分批触发,可在数分钟内完成上万地址的投放,点击👉立即体验完整流程

  5. Q:Jetton 可以升级 Master 吗?
    A:可以。只要保留 calc_jetton_wallet_address 方法签名不变,更新代码即可,但旧的 Mint 权限须谨慎处理。

5 完整操作流程(伪代码)

// 1. 部署 Jetton 主合约
const minter = new JettonMinter(provider, {admin: ADMIN, ...meta});
await minter.deploy();

// 2. 提币时用高负载钱包
const highload = new WalletV3(provider, {publicKey,...});
await highload.sendTransfer({seqno, messages: batch});

// 3. 存款监听
client.getTransactions(POOL_WALLET, {lt, hash})
  .filter(tx => tx.in_msg?.opcode === 0x7362d09c)
  .map(tx => db.insertDeposit(tx.memo, tx.amount));

6 开发工具箱

  • SDK:tonweb(JS)、ton4j(Java)、tonutils-go(Go)。
  • API:/jetton/masters、/runGetMethod、/getTransactions。
  • 开源示例:bicycle(无 Memo 支付处理器)。

7 防骗要点

  • 警惕高仿币:官方 TON 无 Jetton symbol 为 TON 的版本。
  • 界面标注:将 Jetton 资产标识为 “代币”,以免用户误认为是原生 TON。
  • 定期审计:使用 Tonkeeper 的官方 ton-assets 白名单核查代币合法性。

8 结语与下一步

至此,你已掌握 Jetton 的铸/储/提全链路逻辑、通知机制与最佳实践。
你可立刻动手:

用 tonweb 尝试发送带评论的 Jetton
或查看👉高级 Jetton 生态示例合集开启下一程。