Skip to main content
  1. 存款将代币从用户的公共 Solana 余额转移到他们自己或其他人的私人余额。
  2. 通过单个 Solana 交易将存款发送到 Solana 钱包地址。

存款:什么是私人

无需许可的 Ring 是通过加密数量和资产来保密的。 可以将自定义 Ring 配置为保密或匿名(加密发件人、接收者、资产和数量)。

存款如何运作

存款是一个公开 Solana 转账,结果为私人余额。
  1. 用户的 SOL 或 SPL 余额在链上是公开的。
  2. 钱包设置金额和接收者,构建存款,所有者签名。存款不要求 ZK 证明。
  3. Solana 运行时验证签名并调用 Solana 隐私计划。
  4. 应用程序通过 Solana 交易哈希跟踪状态。
  1. 用户的 SOL 或 SPL 余额在链上是公开的。
  2. 钱包读取公共状态,构建转账,所有者签名。
  3. Solana 运行时验证签名并调用系统程序或代币程序,更新公共余额。
  4. 应用程序通过 Solana 交易哈希跟踪状态。
这是无需许可的保密 Ring 的高级交易流程。 与 概念 中的自定义 Ring 进行比较。

开始使用

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 交易,提交它,并返回签名加上着陆的槽位。
  • senderAddress 是接收方的 。此示例向发送方存款。接收方可以是发送方,也可以是第三方钱包。
  • senderViewTag 是 senderAddress.confidentialViewTag(),即发送方在机密环中的 Solana 公钥。索引器使用它返回匹配的加密输出。
  • client.tree 是接收新输出承诺的状态 Merkle 树。
  • depositor / senderSigner 为公有到私有的存款提供资金并签名。
  • DepositAsset.sol() 选择 SOL。对于 SPL 和 Token 2022 资产,DepositAsset.spl 接受铸币地址、源代币账户和代币程序。
  • recipientOwnerHash 是 senderAddress.ownerHash()。接收方签名公钥和作废标识公钥的此哈希值,是提交到新私有代币账户中的所有者字段。
  • DEPOSIT_AMOUNT 对 SOL 使用 lamports,对 SPL 和 Token 2022 资产则使用代币的基本单位。
  • sendAndConfirm 签名并提交 depositIx 作为 Solana 交易。
  • 确认产生的着陆槽用于获取索引器。

完整代码示例

克隆并运行该示例:
这些示例使用此处本地/devnet 上的机密 Ring。
deposit_transfer_withdraw.ts

相关指南

Create a Private Wallet

Transfer

Withdraw

Read a Private Balance

Read Private History

没找到您要找的?

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