什么是保密余额?
保密余额是一种 Token-2022 扩展,允许您在 token account 之间转移代币而不泄露转账金额。这对于隐私保护交易非常有用。只有转账金额和代币余额是私密的,token account 地址仍然是公开的。
它是如何工作的?
保密余额扩展向 Token Extension 程序添加了 指令 ,使您能够在账户之间转移代币而不泄露转账金额。
机密代币转账的基本流程如下:
- 创建一个启用了保密余额的 mint account。
- 为发送方和接收方创建启用了保密余额的 token account。
- 向发送方账户铸造代币。
- 将发送方的公开余额存入**机密待处理余额**。
- 将发送方的待处理余额应用至机密可用余额。
- 以机密方式将代币从发送方 token account 转账至接收方 token account。
- 将接收方的待处理余额应用至机密可用余额。
- 将接收方的机密可用余额提取至公开余额。
审计员密钥
保密余额 mint 可以存储一个可选的全局审计员 ElGamal 公钥。配置后,每笔保密转账都会包含分别为发送方、接收方和审计员加密的金额。转账证明会验证这三个密文包含相同的金额。公众仍然无法读取该金额,但持有审计员私钥的人可以解密该 mint 的转账金额。
保密余额授权方在初始化扩展时设置审计员密钥,或稍后通过 UpdateMint 进行更改。授权方可以轮换或清除该密钥。轮换仅适用于未来的转账,因此在需要历史审计访问时请保留之前的私钥。审计员密钥提供读取权限,不授权代币转账,也不会泄露账户的完整保密余额。
有关设置和轮换示例,请参阅 配置审计员。 钱包、区块浏览器、交易所和合规服务提供商还应查阅 审计员集成指南。
有关机密转账流程各步骤的详细说明,请参阅对应页面:
创建 Mint Account
如何创建启用了保密余额的 mint account
创建 Token Account
如何配置启用了保密余额的 token account
存入代币
如何将代币存入机密待处理余额
应用待处理余额
如何将待处理余额应用至机密可用余额
提取代币
如何从机密可用余额中提取代币
转账代币
如何在 token account 之间进行机密代币转账
集成指南
钱包、区块浏览器和交易所如何支持保密余额代币
发行方指南
如何发行和运营保密余额代币(审批策略、审计员、费用、铸造和销毁)
下图展示了机密代币转账基本流程的详细序列:
保密余额指令
保密余额扩展 指令 的完整列表如下:
| 指令 | 说明 |
|---|---|
InitializeMint | 在 mint account 上启用保密余额。此指令必须与 TokenInstruction::InitializeMint 指令包含在同一笔交易中。 |
UpdateMint | 更新 mint 账户的审批策略及可选的全局审计员 ElGamal 公钥。 |
ConfigureAccount | 在 token account 上启用保密余额。 |
ApproveAccount | 如果 mint 要求对新 token account 进行审批,则批准该 token account 使用保密余额。 |
EmptyAccount | 清空待处理和可用的机密余额,以便关闭 token account。 |
Deposit | 将公开代币余额转换为待处理的机密余额。 |
Withdraw | 将可用的机密余额转换回公开余额。 |
Transfer | 在 token account 之间以机密方式转移代币。 |
ApplyPendingBalance | 在存款或转账后,将待处理余额转换为可用余额。 |
EnableConfidentialCredits | 允许 token account 接收机密代币转账。 |
DisableConfidentialCredits | 屏蔽传入的机密转账,同时仍允许公开转账。 |
EnableNonConfidentialCredits | 允许 token account 接收公开代币转账。 |
DisableNonConfidentialCredits | 屏蔽常规转账,使账户仅接收机密转账。 |
TransferWithFee | 以机密方式在 token account 之间转移代币并收取手续费。 |
ConfigureAccountWithRegistry | 使用 ElGamalRegistry 账户代替 VerifyPubkeyValidity 证明来配置 token account 保密余额的替代方式。 |
Is this page helpful?