处理 TON Jetton
Jetton实践最佳做法
Jettons 是 TON 区块链上的代币--可以将其视为类似于以太坊上的 ERC-20 代币。
TON 交易只需确认一次就不可逆转。为获得最佳用户体验/用户界面,请避免额外等待。
提款
Highload Wallet v3 - 这是 TON 区块链的最新解决方案,是 jetton 提款的黄金标准。它允许您利用分批提款的优势。
分批提款 - 指分批发送多笔提款,从而实现快速、廉价的提款。
存款
建议设置多个 MEMO 存款钱包,以提高性能。
Memo Deposits - 这可以让你保留一个存款钱包,用户添加 memo 以便被你的系统识别。这意味着您不需要扫描整个区块链,但对用户来说稍显不便。
Memo-less deposits - 这种解决方案也存在,但整合起来比较困难。不过,如果您希望采用这种方法,我们可以提供协助。请在决定采用这种方法之前通知我们。
其他信息
在进行 jetton 提取时,生态系统中的每项服务都应将 forward_ton_amount
设置为 0.000000001 TON (1 nanotons ),以便在成 功转账 时发送 Jetton 通知,否则转账将不符合标准,其他 CEX 和服务将无法处理。
-
请参见 JS 库示例 - tonweb - 这是 TON 基金会的官方 JS 库。
-
如果您想使用 Java,可以参考 ton4j。
-
对于 Go,应考虑 tonutils-go。目前,我们推荐使用 JS lib.
内容列表
以下文档详细介绍了 Jettons 架构的总体情况,以及 TON 的核心概念,这些概念可能与 EVM 类区块链和其他区块链不同。要想很好地理解 TON,阅读这些文档至关重要,会对你有很大帮助。
本文件依次介绍了以下内容:
- 概述
- 架构
- Jetton 主合约 (Token Minter)
- Jetton 钱包合约 (User Wallet)
- 信息布局
- Jetton 处理(链下)
- Jetton 处理(链上)
- 钱包处理
- 最佳做法
概述
为获得最佳用户体验,建议在 TON 区块链上完成交易后避免等待其他区块。更多信息请参阅 Catchain.pdf。
快速跳转到 jetton 处理的核心描述:
集中处理
链上处理
TON 区块链及其底层生态系统将可替代代币(FT)归类为 jetton 。由于分片应用于 TON 区块链,与类似的区块链模型相比,我们对可替代代币的实现是独一无二的。
在本分析中,我们将深入探讨详细说明 jetton 行为 和 元数据 的正式标准。 关于 jetton 架构不那么正式的分片概述,请参阅我们的 anatomy of jettons 博客文章。
我们还提供了讨论我们的第三方开源 TON 支付处理器(bicycle)的具体细节,该处理器允许用户使用单独的存款地址存取 Toncoin 和 Jettons,而无需使用文本 memo 。
Jetton 架构
TON 上的标准化代币是通过一套智能合约实现的,其中包括
- Jetton master 智能合约
- Jetton wallet 智能合约
Jetton 主智能合约
jetton 主智能合约存储有关 jetton 的一般信息(包括总供应量、元数据链接或元数据本身)。
具有 symbol
等于 TON
的 Jetton,或者包含系统通知消息(如 ERROR
、SYSTEM
等)的 Jetton,务必确保这些 Jetton 在界面中以明确的方式显示,以避免它们与 TON 转账、系统通知等混淆。有时,甚至 symbol
、name
和 image
都会被设计得与原版极为相似,试图误导用户。
为了消除 TON 用户被骗的可能性,请查询特定 Jetton 类型的原始 Jetton 地址(Jetton 主合约地址),或者关注项目的官方社交媒体渠道或网站以获取正确信息。您还可以通过 Tonkeeper ton-assets 列表 检查资产,进一步降低被骗的风险。
检索 Jetton 数据
要检索更具体的 Jetton 数据,请使用合约的 get 方法 get_jetton_data()
。
该方法返回以下数据:
名称 | 类型 | 说明 |
---|---|---|
total_supply | int | 以不可分割单位计量的已发行净 TON 总数。 |
mintable | int | 详细说明是否可以铸造新 jetton。该值为-1(可以铸造)或 0(不能铸造)。 |
admin_address | slice | |
jetton_content | cell | 根据 TEP-64,您可以查看 jetton 元数据解析页面 获取更多信息。 |
jetton_wallet_code | cell |
还可以使用 Toncenter API 中的 /jetton/masters
方法来检索已解码的 Jetton 数据和元数据。我们还为 (js) tonweb 和 (js) ton-core/ton, (go) tongo 还有 (go) tonutils-go, (python) pytonlib 以及许多其他 SDKs 开发了方法。
使用 Tonweb 运行获取方法和获取链外元数据的 URL 的示例:
import TonWeb from "tonweb";
const tonweb = new TonWeb();
const jettonMinter = new TonWeb.token.jetton.JettonMinter(tonweb.provider, {address: "<JETTON_MASTER_ADDRESS>"});
const data = await jettonMinter.getJettonData();
console.log('Total supply:', data.totalSupply.toString());
console.log('URI to off-chain metadata:', data.jettonContentUri);