Solana 开发 - 什么是 Token扩展?

  • Helius
  • 发布于 2024-06-03 19:33
  • 阅读 31

文章介绍了Solana生态系统中的新标准Token Extensions,该标准旨在增强Solana的token功能,包括转账费用、转账钩子、利息承载token等新特性。文章详细解释了这些扩展的作用及其对Solana生态的潜在影响。

13分钟阅读

2024年6月1日

在过去一年中,Solana 生态系统的发展迅速,许多新的激动人心的技术相继推出。Solana 以超快的处理速度和较低的交易费用而闻名,但即使拥有这些令人印象深刻的优势,仍然有改进的空间。让我们来看看 Token Extensions,这是一种旨在增强 Solana 当前 token 功能的新 token 程序。让我们探索一下 Token Extensions 标准为 Solana 生态系统带来了什么。

当前的 Solana Token 程序

在 Solana 上,所有不是本地 $SOL token 的 token 被视为 spl-tokens。这包括可替代 token(如 $BONK)和不可替代 token(NFT)。token 程序是一个定义创建和处理可替代与不可替代 token 的通用功能的程序。token 程序提供了一些开发人员和最终用户已经习惯的功能。这些操作包括 token 的铸造、转移和销毁。此外,它还提供了更新 token 和冻结 token 的功能,这使得能够冻结 token 账户,防止在解冻之前对账户状态的任何更改。

什么是 Token Extensions,为什么需要它?

可以将 Token Extensions 看作是 Solana 上 token 程序的新版本和改进版本。它可以处理可替代和不可替代 token。这一新程序仍然保留旧 token 程序的所有功能,但现在配备了一组有用的新功能,旨在改善 Solana 上的 token 功能。这些新的功能是真正的 Token2022 的魔力,以扩展的形式呈现。

但是,为什么需要 Token Extensions?随着 Solana 的发展,对更复杂和灵活的 token 功能的需求不断增加。虽然当前的 Token Program 满足了可替代和不可替代 token 的基本需求,功能集合的简单性却带来了限制,可能会阻碍创新。开发人员运用新想法,常常需要修改 Token Program 以增加所需的功能,这给广泛采用带来了挑战。Solana 的编程模型要求在交易中包括程序和账户,这使得涉及多个 token 程序的交易创建变得复杂。此外,钱包和链上程序必须信任他们选择支持的任何 token 程序,这可能存在风险。为了应对这一演变的局面,Solana 推出了 Token2022——一套附加功能和增强功能,旨在拓宽生态系统中 token 的能力。

介绍扩展:一项进化的步骤

这一新标准的变革能力在于可用的扩展,一组满足各种需求的新字段。从简单的角度来看,Token Extensions 中的扩展是可以添加到 token 上以增强其能力和实用性的额外特性或功能。扩展允许运营者根据特定的需求或目标自定义其 token 的行为和特性。在创建一个 token 时,可以选择使用这些扩展中的任意数量。让我们详细了解一些主要的扩展及其对 Solana 生态系统的潜在影响。需要注意的是,并非所有这些扩展目前已上线。

铸造扩展

以下是每个铸造扩展的解释:

1. 转移费用

虽然现有的 Token 程序不允许对转移收取费用,但 Token Extensions 标准通过允许在协议级别配置转移费用来改变这种现状。该机制为交易引入了一种新的财务控制层次。

2. 转移钩子

Transfer Hook 扩展赋予 token 创建者额外的控制权,对其 token 的转移进行管理。这对于管理与 NFT 版权相关的挑战尤为重要。Transfer Hook 扩展通过允许 token 创建者创建自定义程序来工作,token 将使用该程序在进行转移时沟通。每当发起 token 转移时,token 将与该自定义程序进行通信,以允许进行任何后续操作。

3. 关闭铸造

Token Extensions 填补了 Token 程序的一个重大空白,允许通过选择的地址关闭铸造账户,这是以前不可能的。这是通过在初始化铸造之前初始化 MintCloseAuthority 扩展来完成的。这使得除了权威钱包之外的其他人能够关闭 token 的铸造。

4. 赚取利息的 Token

Token Extensions 引入了一种 InterestBearingMint 扩展,允许不同的用户界面表示 token 的数量,包含它们所累积的利息。这个特性本质上允许 token 获得“利息”,使得持有时间越长,它们的价值越高。

5. 非可转让 Token(Soulbound tokens)

NonTransferable 铸造扩展允许创建无法从钱包中转移的“灵魂绑定” token。这对于独特的成就或奖励是完美的,这些 token 也非常适合活动门票,因为你无法将那张票发送给其他人。

6. 机密转账

Token Extensions 引入了一种新的机密 token 扩展,被称为机密转账——一个利用零知识证明加密 SPL token 的余额和转账金额的隐私功能。

这一扩展的总体目标是通过关注机密性,而非匿名性,提高用户隐私。由于余额可以被加或减,Token Extensions 标准要求引入一种加密方案,允许这些隐藏的数学运算;该加密必须是同态的。同态加密是一种特殊的加密方案,允许对加密数据执行特定类型的计算,而无需实际解密数据。因此,这些隐藏的计算将产生一个加密结果,该结果在解密后等同于对明文应用相同数学运算的结果。机密转账使用“Twisted ElGamal Encryption”来实现对密文的隐藏数学操作。

对于更感兴趣的读者, Twisted ElGamal Encryption 是标准 ElGamal 加密方案的简单变体,其中密文被分为 Pedersen 承诺 的加密消息和解密控件,以便在密文上执行隐藏的数学操作。

机密转账使用 Sigma 协议进行验证,这是一类特定的零知识证明,其中一方(证明者)可以向另一方(验证者)证明他们知道一个秘密,而不泄露该秘密。这些 Sigma 协议是与扩展提供的一些指令所需的。让我们分解每个证明:

(公钥)有效性证明

  • 验证 Twisted ElGamal 公钥的格式是否正确
  • 将其视为在开始安全聊天之前验证其他人的“数字身份证”
  • 这是 ConfigureAccount 指令所需的

(密文)有效性证明

  • 确保加密消息是格式良好的
  • 将其视为接收到一个密封的箱子——你知道这个箱子没有被篡改,因为它仍然是密封的
  • 这是 WithdrawTransferTransferWithFee 指令所需的

零余额证明

  • 证明 Twisted ElGamal 密文加密数字零
  • 将其视为一种检查你的银行账户余额是否为零而无需打开银行应用程序检查
  • 这是 EmptyAccount 指令所需的

相等性证明

  • 确认两种类型的相等性——在两个 ElGamal 密文之间或 ElGamal 密文与 Pedersen 承诺之间
  • 将其视为拥有两个锁着的工具棚,并证明两个工具棚里面拥有所有相同的工具,而不实际打开两座工具棚
  • 这是 TransferTransferWithFeeWithdrawWithheldTokensFromMintWithdrawWithheldTokensFromAccounts 指令所需的

费用 Sigma 证明

  • 证明已提交的转移费用是正确的
  • 将其视为向 FedEx 确认你已支付包裹的关税费用,但不显示你所支付的确切费用
  • 这是 TransferWithFee 指令所需的

范围证明

  • 确认加密数字在某个范围内
  • 将其视为猜测一个人的身高,并证明你的猜测在一个特定的、正确的范围内,而不透露此人的实际身高
  • Solana 使用 Bulletproofs 进行这些证明,你可以从这篇 学术论文 和他们的 dalek 实现中了解更多信息

TL;DR; 这些零知识证明用于验证一方知道另一方可以验证的秘密,而无需公开说出来。这些不同类型的证明帮助确保 token 余额和转移在数学上按预期的方式工作,并且完全通过加密保持私密。

在这个机密系统中,只有拥有解密密钥的账户持有者可以查看他们的余额。然而,在某些情况下,外部第三方可能需要审核余额,无论是出于审计还是合规的目的。机密 token 扩展允许通过他们的 全球审计系统 实现这一点。在此系统中,每个账户可以拥有单独的解密密钥,因此一位持有者可以选择性地提供对特定账户的读取权限。铸造或发行资产的实体拥有一种特殊的数据结构,可以选择性地包括一个全球“审计员加密密钥”。代码如下:

代码

Transfer {
  amount_sender: PKE::encrypt(pke_pubkey_sender, 10),
  amount_receiver: PKE::encrypt(pke_pubkey_receiver, 10),
  amount_auditor: PKE::encrypt(pke_pubkey_auditor, 10),
  range_proof: RangeProof,
  equality_proof: EqualityProof,
  ...
}

amount_auditor 参数是使用审计员的公钥加密的转移金额。任何拥有审计员秘密密钥的人都可以解密 amount_auditor,从而能够审核特定铸造的交易金额。

如果你是一个安全爱好者,你可能注意到了这个设计中的潜在缺陷。假设 Alice 生成了关于其加密余额的证明。但是,同时 Bob 向 Alice 发送 token,他的交易首先被处理。那么,Alice 的交易将被拒绝,因为生成的证明不会反映最新的账户状态。这种攻击被称为前置运行,可能会使 Alice 的账户无法使用,如果 Bob 不断向 Alice 的账户发送转移。为了防止这类攻击,账户的加密余额被分为其 pending 余额和 available 余额:

代码

let ct_pending = PKE::encrypt(pke_pubkey, 10);
let ct_available = PKE::encryption(pke_pubkey, 50);

Account {
    mint: Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,
    owner: 5vBrLAPeMjJr9UfssGbjUaBmWtrXTg2vZuMN6L4c8HE6,
    encryption_key: mpbpvs1LksLmdMhCEzyu5UEWEb3dsRPbB5,
    pending_balance: ct_pending,
    account_balance: ct_available,
    ...
}

任何流出的资金都会从其可用余额中扣除,而所有流入的资金则会被加到待处理余额中。

机密转账尚未上线,Solana 的文档中关于介绍和快速入门指南的部分仍在开发中。你可以,然而,通过 这个 GitHub 问题solana-program-library 仓库 中跟踪机密转账的剩余任务。文档确实有 协议深入分析,但需要注意的是,了解深入分析中讨论的内容并不是使用该扩展所需的。上面段落中提供的机密转账的通俗总结应该足够让你开始使用机密转账,一旦一切上线。

账户扩展

以下是每个账户扩展的解释:

1. 收入转账必须带备注

Token Extensions 包含一个功能,强制所有收入转账附带备注。备注基本上是一个简短的链上消息。此功能有点像收到礼物时附带的便条,以便你知道它来自谁以及为什么送给你。

2. 不可变所有权

ImmutableOwner 扩展通过使重新分配账户所有权不可能,增加了一层安全性。此条款增强了 token 交易的安全性。要更好了解这一点,我们需要查看标准 token 程序中 token 的存储方式。通常,当需要向钱包发送 token 时,第一步是创建一个 token 账户来容纳接收者钱包中的 token,该账户是由 token 铸造地址和接收者钱包地址的组合生成的。虽然这很好,但是一旦创建该账户,其所有权可以转移给其他人。在 Token2022 中,Immutable Owner 扩展将不再可能。

3. 默认账户状态

DefaultAccountState 扩展使铸造者能够通过将所有新 token 账户默认设置为冻结来限制 token 的使用。它为 token 的分发和使用提供了额外的控制层。这将意味着你可以接收到一个 token,但在 token 创建者允许之前,无法对其进行任何操作。

4. 永久委托

使用 Token Extensions,可以为 token 指定一个永久账户委托。这基本上允许你委派某人(委托人)始终有权管理该铸造的 token。他们可以执行诸如转移或销毁 token 的操作。如果使用了这个扩展,权限将完全赋予该铸造的任意账户的委托,这可能非常危险,因为该委托/个人将能够在任何人的钱包中转移或销毁 token。

Token Extensions 与以太坊和币安智能链 (BSC)

以太坊和币安智能链 (BSC) 在 DeFi 领域已经取得了显著进展,我们已经在那些链上看到了一些 Token Extensions 的特性。

一个例子是 BSC 上的 SafeMoon,引入了针对每笔交易收取 10% 的费用,其中 5% 会重新分配给其他 SafeMoon 持有者。这鼓励持有人持有。利用零知识证明进行机密转账的概念也并不新鲜。在以太坊上,像 Aztec Protocol 这样的项目探索了私人交易。

虽然 Solana 提供这些功能的速度略慢,但其卓越的速度和较低的交易成本为 Token Extensions 的繁荣提供了良好的环境,从而在以太坊和 BSC 中提供了竞争优势。

Token Extensions 的早期采用者

开发者、dApps 和钱包需要适应这些新功能,以充分利用 Token Extensions 提供的优势。以下是新程序的一些早期采用者:

$BERN / BonkEarn

$BERN 由 $BONK 社区创建,是建立在 Token Extensions 程序之上的首批 token 之一。目前 $BERN 正在使用转移费用扩展,对所有转移收取 6.9% 的费用。$BERN 团队正在利用这笔费用奖励 $BERN 和 $BONK 的持有者。

完整分解:

  • 5% 用于“Bernzy 奖励费用”,用于奖励 $BERN 的持有者
  • 1% 用于购买并销毁 $BONK
  • 0.5% 用于销毁 $BERN
  • 0.3% 用于开发者基金,用于支付更多费用和增加 token 的流动性池。
  • 0.1% 用于 $BONK DAO

去中心化交易所

FluxBeam 是一个支持使用 Token Extensions 程序构建的 token 的 Solana 去中心化交易所。

钱包

流行的钱包扩展 Backpack 已经增添了对 Token Extensions 的支持,而 Phantom 将很快具备功能

工具

使用 Token Extensions 程序自己的 token 挖矿工具现已在 FluxBeam 上上线。

RugCheck 是一个查看 Solana token 市场和不同 token 的工具,已经建立了可以检查使用 Token 2022 创建的 token。

拥抱未来

Token Extensions 的推出是 Solana web3 旅程中的一次重大飞跃。它带来了丰富的新功能,同时增强了现有功能的能力。其开创性的扩展不仅赋予了 token 创建者更多的控制权和灵活性,还在 DeFi 领域开辟了新的可能性。尽管其他区块链已经提供了类似的功能,但 Solana 在速度和成本上的优势,加上 Token2022 的功能,使其在加密世界中成为一个强大的竞争者。随着早期用户的支持和广泛社区的持续扩展,Token2022 准备好提升和增强 Solana 生态系统。

  • 原文链接: helius.dev/blog/what-is-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/