Skip to main content
  1. 私有转账在私有钱包之间以环的形式移动代币。
  2. 私有转账是在单个Solana交易中发送到Solana钱包地址的。

转账:什么是私有

无许可环是机密的,具有加密的金额和资产。 可以将自定义环配置为机密或匿名(加密发送者、接收者、资产和金额)。

转账如何工作

私有转账的行为类似于公共Solana转账:
  1. 用户的SOL或SPL余额是在链上加密的。
  2. 用户解密私有状态,钱包构建转账,所有者签名。
    • 使用专用RPC方法获取加密状态。只有用户可以在本地解密余额。
    • 钱包设置金额和接收者,然后请求ZK证明。RPC提供者默认生成ZK证明并返回。
  3. Solana运行时验证签名并调用Solana Privacy Program,该程序在不泄露加密状态的情况下验证ZK证明。
  4. 应用程序通过Solana交易哈希跟踪状态。
  1. 用户的SOL或SPL余额是链上公开的。
  2. 钱包读取公共状态,构建转账,所有者签名。
  3. Solana运行时验证签名并调用系统程序或代币程序,更新公共余额。
  4. 应用程序通过Solana交易哈希跟踪状态。
这是无许可机密环的高层次交易流程。 与概念中的自定义环相比。

入门

1

前提条件

TypeScript 示例需要 Node.js 24 或更高版本,pnpm 11.18.0,以及 Solana CLI。
来源:sdk-libs/ts
添加一个Helius API 密钥:
.env
示例默认使用 Solana CLI 钱包作为支付方。支付方必须持有 devnet SOL。请参阅如何获取 Devnet SOL。
2

转账至私有余额

  • SDK返回指令。应用程序签名并发送它们。
  • sendAndConfirmFactory构建Kit交易,提交并返回签名及落地槽位。
  • 示例花费了由先前存款创建的私有Solana代币账户。转账可以花费多个UTXO。
  • transferUtxo从该余额中选择一个私有Solana代币账户。
  • ProofInputUtxo.fromKeypair使用发送方的私有钱包密钥对准备选定的UTXO作为证明输入。
  • 密钥对派生出无效器,标记输入UTXO为已用,而资产和金额保持加密。
  • senderAddress 是发送方的 。转账会从此钱包支出。
  • [transferInput] 列出发送方选择的 UTXO。一次转账可以花费多个 UTXO。
  • senderSigner.address 是费用支付方的 Solana 地址。gas 赞助方可以支付费用。
  • recipient.shieldedAddress() 是接收方的隐蔽地址。转账输出使用接收方的查看密钥加密。
  • SOL_MINT 选择 SOL。SPL 或 Token 2022 转账会传入代币铸币地址。
  • TRANSFER_AMOUNT 以资产的基本单位计量。SOL 使用 lamport。SPL 和 Token 2022 资产使用代币的基本单位。
  • transfer.sign 授权状态转换、加密资产和金额,并为零知识证明器生成输入。
  • assets 是用于解析受支持私密资产的资产注册表。
  • senderKeys 使用 LocalKeys.fromKeypair(sender, client.proofService),通过发送方的密钥授权生成证明。
  • client.proveTransact 根据已签名的转账生成零知识证明,并返回序列化的指令数据。
  • 该证明可证实发送方拥有并可花费这些输入,同时不会泄露加密的资产或金额。
  • payer 签署 Solana 交易并支付交易费用。gas 赞助方可以支付费用。
  • inputTree 和 outputTree 均为 client.tree,即包含已花费 UTXO,并接收接收方输出和发送方找零的状态 Merkle 树。
  • await transactInstruction 在本地派生 nullifier 账户地址并返回指令。nullifier 账户将输入 UTXO 标记为已花费,防止私密余额被重复花费。
  • data 包含上一步生成的零知识证明和加密输出。
  • 私密转账仅在私密余额之间移动资产。它不会传入公开的 Solana 账户或代币账户。
  • sendAndConfirm签名并提交transferInstruction作为Solana交易。
  • 确认生成用于控制索引器获取的落地槽。

完整代码示例

克隆并运行示例:
这些示例使用了此处位于 local/devnet 上的隐私 Ring。
deposit_transfer_withdraw.ts

相关指南

存款

取款

读取私有余额

读取私有历史

没找到您要找的?

联系我们!Telegram | 电子邮件 | 联系