新消息:Helius 收购 Light Protocol
什么是代币扩展?
博客/研究

什么是代币扩展?

开发者体验工程师X 上的 Owen VenterLinkedIn 上的 Owen Venter
阅读需 13 分钟

过去一年,Solana 生态系统发展迅速,涌现出大量令人振奋的新技术。Solana 以超快的处理速度和较低的交易费用闻名,但即使具备这些突出优势,仍有改进空间。代币扩展应运而生:这是一个旨在增强 Solana 现有代币功能的新代币程序。接下来,我们将探索代币扩展标准会为 Solana 生态系统带来什么。

Solana 当前的代币程序

Solana 上除原生 $SOL 代币以外的所有代币都被视为 SPL 代币,其中包括同质化代币(如 $BONK)和非同质化代币(NFT)。代币程序定义了创建及使用同质化与非同质化代币的通用功能。它提供了一些开发者和最终用户已经熟悉的功能,包括铸造、转账和销毁代币。此外,它还提供更新和冻结代币等功能,可冻结代币账户,并在解冻之前阻止账户状态发生任何变化。

什么是代币扩展?为什么需要它?

你可以把代币扩展视为 Solana 代币程序的全新增强版。它既能处理同质化代币,也能处理非同质化代币。这个新程序保留了旧代币程序的全部功能,同时加入了一组实用的新功能,以增强 Solana 上的代币能力。Token2022 真正的亮点正是这些以扩展形式提供的新功能。

但为什么需要代币扩展?随着 Solana 不断发展,市场对更复杂、更灵活的代币功能需求也日益增长。虽然 Solana 当前的代币程序通过一组简单功能满足了同质化和非同质化代币的基本需求,但这种简单性也带来了限制,可能阻碍创新。拥有新想法的开发者往往需要分叉代币程序,才能添加所需功能,而这会给广泛采用带来挑战。Solana 的编程模型要求交易同时包含程序和账户,这让涉及多个代币程序的交易更难创建。此外,钱包和链上程序必须信任它们选择支持的任何代币程序,这可能带来风险。为应对这一不断变化的局面,Solana 推出了 Token2022——一套额外功能与增强特性,旨在拓展生态系统内代币的能力。

扩展登场:演进的一步

这一新标准颠覆性的能力来自可用的扩展,也就是为满足各种需求而引入的一组新字段。简单来说,在代币扩展的语境中,扩展是可以添加到代币上的额外特性或功能,用来增强其能力与实用性。扩展让代币创建者能够根据具体需求或目标,自定义代币的行为和特征。创建代币时,可以选择使用任意数量的扩展。下面我们将解析一些关键扩展,以及它们可能对 Solana 生态系统产生的影响。需要注意的是,目前并非所有扩展都已上线。

铸造扩展

以下是各项铸造扩展的说明:

1. 转账费

现有代币程序不支持对转账收取费用,而代币扩展标准改变了这一点,允许在协议层配置转账费。这一机制为交易引入了更高层级的财务控制。

2. 转账钩子

转账钩子扩展让代币创建者可以进一步控制代币转账。这对于处理与 NFT 版税相关的挑战尤为重要。转账钩子扩展允许代币创建者开发自定义程序,让代币在每次转账时调用该程序。每当发起代币转账,代币都会与这个自定义程序通信,从而执行后续操作。

3. 关闭铸造账户

代币扩展填补了代币程序中的一个重要缺口:它允许由自行选择的地址关闭铸造账户,而这在过去是不可能的。具体做法是在初始化铸造账户之前,先初始化 MintCloseAuthority 扩展。这样一来,授权钱包以外的其他人也可以关闭代币的铸造账户。

4. 生息代币

代币扩展引入了 InterestBearingMint 扩展,它可以用不同方式显示代币的 UI 数量,并计入代币累积的利息。该功能实际上让代币能够“赚取利息”,持有时间越长,价值就越高。

5. 不可转让代币(灵魂绑定代币)

NonTransferable 铸造扩展支持创建无法从钱包中转出的“灵魂绑定”代币。它非常适合代表独特成就或奖励,也很适合用作活动门票,因为你无法将门票发送给其他人。

6. 机密转账

代币扩展引入了一项新的机密代币扩展,即机密转账。这项隐私功能利用零知识证明,对 SPL 代币的余额和转账金额进行加密。

该扩展的总体目标是以保密性而非匿名性为重点,增强用户隐私。由于余额可能增加或减少,代币扩展标准需要一种支持这些隐藏数学运算的加密方案;这种加密必须具备同态性。同态加密是一类特殊的加密方案,允许在不实际解密数据的情况下,对加密数据执行特定类型的计算。因此,这些隐藏计算会生成加密结果,解密后与对明文执行相同数学运算所得的结果一致。机密转账使用“扭曲 ElGamal 加密”,以便对密文执行隐藏的数学运算。

顺便一提,如果你对此更感兴趣,扭曲 ElGamal 加密是标准 ElGamal 加密方案的简单变体,其中密文被分为加密消息的佩德森承诺和一个解密句柄,从而支持对密文执行隐藏的数学运算。

机密转账通过 Sigma 协议验证。Sigma 协议是一类特定的零知识证明,其中一方(证明者)可以向另一方(验证者)证明自己知道某个秘密,而无需披露秘密本身。该扩展提供的多项指令都需要这些 Sigma 协议。下面逐一解析这些证明:

(公钥)有效性证明

  • 验证扭曲 ElGamal 公钥的格式是否正确
  • 可以把它理解为:在开始安全聊天之前,先验证对方的“数字身份证”
  • ConfigureAccount 指令需要此证明

(密文)有效性证明

  • 确保加密消息的格式正确
  • 可以把它理解为收到一个密封的盒子——因为封条依然完好,所以你知道盒子没有被动过
  • Withdraw、Transfer 和 TransferWithFee 指令需要此证明

零余额证明

  • 证明扭曲 ElGamal 密文加密的是数字零
  • 可以把它理解为:无需打开银行应用查看,就能确认你的银行账户余额为零
  • EmptyAccount 指令需要此证明

等值证明

  • 确认两类相等关系:两个 ElGamal 密文之间相等,或一个 ElGamal 密文与一个佩德森承诺相等
  • 可以把它理解为:有两个装满工具并上锁的棚屋,在不实际打开棚屋的情况下,证明两个棚屋里的工具完全相同
  • Transfer、TransferWithFee、WithdrawWithheldTokensFromMint 和 WithdrawWithheldTokensFromAccounts 指令需要此证明

费用 Sigma 证明

  • 证明已承诺的转账费正确无误
  • 可以把它理解为:向 FedEx 证明你已经为包裹支付关税,但无需透露具体支付金额
  • TransferWithFee 指令需要此证明

范围证明

  • 确认加密数字处于特定范围内
  • 可以把它理解为:猜测某人的身高,并在不透露其实际身高的情况下,证明你的猜测落在某个正确范围内
  • Solana 使用 Bulletproofs 完成这些证明。你可以通过这篇学术论文及其 dalek 实现了解更多信息

简而言之:这些零知识证明用于验证一方知道某个秘密,另一方可以验证这一点,而无需把秘密说出来。这些不同类型的证明有助于确保代币余额和转账在数学上按预期运行,同时通过加密实现完全私密。

在这个机密系统中,只有拥有解密密钥的账户持有人才能查看余额。但在某些情况下,外部第三方可能需要审查余额,例如出于审计或合规目的。机密代币扩展通过其全局审计员系统支持这种需求。在该系统中,每个账户都可以拥有独立的解密密钥,因此持有人可以有选择地向特定账户授予读取权限。铸造方,也就是发行资产的实体,拥有一种特殊的数据结构,其中可以选择包含全局“审计员加密密钥”。代码如下:

代码
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 发送代币,并且他的交易先被处理。那么 Alice 的交易就会被拒绝,因为生成的证明没有反映刚刚更新的账户状态。这类攻击称为抢跑。如果 Bob 持续向网络大量发送转入 Alice 账户的交易,就可能导致 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 文档中的“简介”和“快速入门指南”小节仍在编写中。不过,你可以通过 solana-program-library 仓库中的这个 GitHub issue跟踪机密转账的剩余任务。文档中已经提供了协议深度解析,但需要特别注意,使用该扩展并不要求你理解深度解析中讨论的内容。等到所有功能上线后,上文对机密转账的通俗总结应该足以帮助你开始使用。

账户扩展

以下是各项账户扩展的说明:

1. 转入时必须附带备注

代币扩展包含一项功能,可强制要求所有转入交易附带备注。备注本质上是一条简短的链上消息。这个功能有点像收到礼物时附带一张便条,让你知道礼物是谁送的,以及为什么送给你。

2. 不可变所有权

ImmutableOwner 扩展让账户所有权无法重新分配,从而增加一层安全保障。该机制提高了代币交易的安全性。要更好地理解这一点,需要先了解标准代币程序如何存储代币。通常,在向某个钱包发送代币时,第一步是在收款人的钱包内创建一个用于存放该代币的代币账户。该账户由代币铸造地址和收款人的钱包地址组合生成。这样做本身没有问题,但账户创建后,其所有权仍可转让给其他人。使用 Token2022 中的不可变所有者扩展后,这种情况将不再可能发生。

3. 默认账户状态

DefaultAccountState 扩展允许铸造创建者将所有新代币账户默认设为冻结状态,从而限制代币的使用。它为代币分发与使用提供了额外的控制层。这意味着你可以接收代币,但在代币创建者允许之前,无法对其执行任何操作。

4. 永久委托人

通过代币扩展,可以为代币指定永久账户委托人。这实际上允许你指定某人(委托人),让其始终有权管理来自某个铸造账户的代币。他们可以执行转账或销毁代币等操作。如果使用此扩展,该权限方将对该铸造账户下的任何账户拥有不受限制的委托权限。这可能非常危险,因为该委托人能够转移或销毁任何人钱包中的代币。

代币扩展与 Ethereum、Binance Smart Chain (BSC) 对比

Ethereum 和 Binance Smart Chain (BSC) 已经在 DeFi 领域取得显著进展,我们也在这些链的代币上见过代币扩展提供的部分功能。

一个例子是 BSC 上的 SafeMoon,它对每笔交易收取 10% 的费用,其中 5% 会重新分配给其他 SafeMoon 持有人,以鼓励持有人长期持币。使用零知识证明实现机密转账也并非新概念。在 Ethereum 上,Aztec Protocol 等项目已经探索过隐私交易。

尽管 Solana 推出这些功能的速度稍慢,但其出色的速度和更低的交易成本为代币扩展的发展提供了有利环境,从而形成相对于 Ethereum 和 BSC 的竞争优势。

代币扩展的早期采用者

开发者、dApp 和钱包需要适配这些新功能,才能充分利用代币扩展的能力。以下是新程序的一些早期采用案例:

$BERN / BonkEarn

由 $BONK 社区创建的 $BERN,是最早基于代币扩展程序构建的代币之一。目前,$BERN 使用转账费扩展,对所有转账收取 6.9% 的费用。$BERN 团队使用这笔费用奖励 $BERN 和 $BONK 的持有人。

完整明细:

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

去中心化交易所

FluxBeam 是 Solana 上的 DEX,目前支持使用代币扩展程序创建的代币。

钱包

热门钱包扩展 Backpack 已经支持代币扩展 ,而且 Phantom 也将很快提供相关功能。

工具

使用代币扩展程序铸造自有代币的工具现已在 FluxBeam 上线。

RugCheck 是一款用于分析 Solana 代币市场和不同代币的工具,目前已支持检查使用 Token 2022 构建的代币。

拥抱未来

代币扩展的推出是 Solana web3 发展历程中的巨大飞跃。它不仅带来了一系列全新功能,也增强了现有功能的能力。这些突破性的扩展不仅赋予代币创建者更多控制权和灵活性,还为 DeFi 领域开辟了新的可能。尽管其他区块链已经提供类似功能,但 Solana 在速度和成本方面的优势,加上 Token2022 的功能,使其成为加密世界中的强劲竞争者。随着早期用户和广大社区的支持不断扩大,Token2022 已准备好进一步增强和提升 Solana 生态系统。

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新