免铸造 jetton 处理
简介
TON区块链生态系统推出了对Jetton标准的创新扩展,名为 Mintless Jettons。
该扩展可实现去中心化的 Merkle-proof 空投,而无需传统的铸币过程。
概览
免铸造 jetton - 是 TON 区块链上标准 jetton 实现(TEP-74)的扩展(TEP-177 和 TEP-176)。
这种实现方式可以向数百万用户进行大规模、去中心化的空投,而不会产生大量成本或给区块链增加过多负载。
基本功能
- 可扩展性:在向大量用户分发代币时,传统的铸币过程可能会耗费大量资源和成本。
- 效率:通过利用默克尔树,免铸造 jetton 只存储代表所有空投数量的单一哈希值,从而降低了存储需求。
- 方便用户的空投:用户无需任何准备步骤(如提款或索赔),即可立即使用他们的空投--发送、交换等。 它就是这么好用!
在链上协议中支持 免铸造 jetton
由于免铸造 jetton是标准套币的延伸,因此不需要额外的步骤。只需像使用 USDT、NOT、Scale 或 STON 一样与它们互动即可。
在钱包应用中支持无 免铸造 jetton
钱包应用程序在增强用户对免铸造 jetton的体验方面发挥着重要作用:
- 显示未领取的Jettons: 钱包应该向用户展示他们根据Merkle树数据有资格领取的jettons。
- 自动领取过程:在发起向外转账时,钱包应自动在
transfer
信息的自定义有效载荷中包含必要的 Merkle 证明。
这可以通过以下两种方式实现
-
与 自定义有效载荷 API 中指定的链外 API 集成:
- 检查每个 jetton 是否是免铸造的。
- 如果是免铸造的,请检查钱包的主人是否已经认领。
- 如果还未认领,则从自定义负载 API 获取数据,并将链下余额添加到链上余额中。
- 在向外转账时,如果用户尚未领取空投,则从自定义有效载荷 API 获取自定义有效载荷和初始状态,并将其包含在发送至 jetton 钱包的
transfer
信息中。
-
自定义 API:
- 从 jetton 元数据中的
mintless_merkle_dump_uri
下载空投的树。 - 对其进行解析(见下文第 6 节),并通过应用程序接口提供解析结果。
- 从 jetton 元数据中的
信息
支持免铸造领取(特别是空投树索引)并非钱包的强制性要求。预计钱包应用程序可能会向 jetton 发行商收取此项服务费用。
支持 dApp(DEX/借贷平台)中的免铸造 jetton
由于认领是在钱包应用程序中自动进行的,因此 dApp 不需要任何特定的逻辑。它们可以使用应用程序接口(如 Tonapi 或 Toncenter)显示还未领取的余额。
为提升用户体验,dApp 可检查用户用于连接 dApp 的钱包应用程序是否支持特定的免铸造 jetton。如果不支持,dApp 可从 jetton 应用程序接口获取空投证明和初始化数据,并将其添加到 dApp 端的 transfer
消息中。
部署 免铸造 jetton
部署 免铸造 jetton 涉及几个步骤:
- 准备默克尔树
- 生成一棵 Merkle 树,其中包含所有空投接收者及其各自的金额。
- 计算根
merkle_hash
.
- 部署 Jetton 主合约:
- 将
merkle_hash
包含在合约存储中。 - 确保合约符合扩展的 Jetton 标准;您可以使用 免铸造 Jetton 标准实施 作为范例。
- 提供默克尔证明:
- 在链外托管默克尔树数据。
- 实施自定义有效载荷 API,允许钱包获取必要的证明。
- 更新元数据:
- 根据元数据标准,在令牌的元数据中添加
mintless_merkle_dump_uri
和custom_payload_api_uri
。
- 请求钱包支持:
- 要求所需的钱包应用程序支持(索引)您的免铸造 Jetton。
按照这些步骤,您就可以部署一个用户可以在日常操作中无缝领取的免铸造 Jetton。
检索空投信息
审核空投和核实总供应量包括几个步骤。