- UTXO 不是 Solana 账户,因此无需免租。
- 它的余额在链上加密。
- 所有者 – Solana 密钥对、PDA 或 P-256 密钥。
- 资产 – 铸币(SOL、SPL 或 Token-2022)。
- 数量 –
asset的单位数量,以其最小单位计。 - 数据 – UTXO 可以存储任意数据,例如托管代币的所有者。
- 程序和策略数据 – 可选的已配置 Ring 合规信息。
- Diagram
- Code
View Solana token account
View Solana token account
- Diagram
- Code
私有余额
私有余额是私有钱包所拥有的某项资产的所有 UTXO 之和。 无论私有余额由一个还是多个 UTXO 组成, 钱包都只显示一个余额。 一次私有转账可以同时花费多个 UTXO。私有转账
使用 UTXO 的私有转账与使用 SPL 代币账户的公开转账工作方式不同:- 从 SPL 代币账户转账时,会更新
amount。 - 使用 UTXO 进行私有转账时,不会更新 UTXO 的
amount。 相反,私有转账会花费现有 UTXO, 并为接收方以及发送方的剩余余额创建新的 UTXO。
- 使用 SPL 代币账户时,Alice 的
amount从 50 减少到 15,而 Bob 的增加 35。 - 使用 UTXO 时,Alice 持有一个包含 50 USDC 的 UTXO。交易会花费现有 UTXO,并创建两个新 UTXO:一个为 Bob 持有 35 USDC,另一个为 Alice 持有 15 USDC。
- Transfer with one UTXO
- Transfer with multiple UTXOs
UTXO 选择
对于私有转账,SDK 会选择足以覆盖你要转账金额的未花费 UTXO。 UTXO 选择算法会在每次转账中尽可能少地花费 UTXO:- SDK 按待发送的资产筛选你的 UTXO,并按数量对其排序。
- SDK 会选择足够覆盖转账金额的 UTXO。 它会优先选择最大的 UTXO,直到覆盖转账金额。
交易变体
每次私有转账都会使用一种交易变体,其中包含固定数量的槽位,分别用于待花费的 UTXO 和待创建的新 UTXO。 各变体支持花费 1 至 36 个 UTXO,并且每种变体都有自己的 ZK 电路。 该电路会证明被花费的 UTXO 有效,并且新 UTXO 持有的总金额相同。 如果一次转账需要超过 36 个 UTXO,请先合并它们。 SDK 会选择适合该转账的变体,并使用虚拟 UTXO 填充未使用的槽位。 虚拟 UTXO 不包含任何价值,在链上看起来与真实 UTXO 相同。- 1 spent, 2 new
- 2 spent, 2 new
- 3 spent, 3 new
- 4 spent, 3 new
Alice 向 Bob 发送 30 USDC。她最大的 UTXO 足以覆盖这笔转账。
合并 UTXO
在只接收大量转账而不花费的情况下,私有余额可能会分散到许多 UTXO 中。 如果一次转账需要超过 36 个 UTXO,请先合并它们,以便用户可以在一次转账中花费全部余额。 由于一次转账最多可以花费 36 个 UTXO,因此大多数用户很少会遇到余额碎片化的情况。- 合并会将所有者和资产相同的 UTXO 合并成一个总价值相同的 UTXO。
- 合并操作不能花费资金或更改所有者。
- 合并可以在底层自动完成,不会影响最终用户的体验。
每次合并都是一笔带有 ZK 证明的 Solana 交易,最多可将 36 个 UTXO 合并为一个。
由于合并结果是确定性的,因此可以并行生成合并证明和转账证明。
合并指令用法示例
你的应用可以在两个时机执行合并:- **同步私有余额时:**解锁钱包、打开私有钱包、恢复应用、重新连接网络、出现流缺口或恢复钱包时。
- **转账前:**转账需要超过 36 个 UTXO 时。
合并操作无需用户签名即可运行。自定义 Ring 可以设置自己的合并权限。
使用嵌入式私有钱包时,合并操作会在底层自动为你完成。
Example for Merge
Example for Merge
例如,一个私有钱包在收到 1,296 笔各为 1 USDC 的私有转账后,在 1,296 个 UTXO 中持有 1,296 USDC。
一次转账最多可以花费 36 个 UTXO,因此钱包分两个阶段花费余额:
- 并行运行 36 笔合并交易,并创建 36 个各含 36 USDC 的 UTXO。
- 一笔包含 36 个输入的转账会花费全部 1,296 USDC 余额。
UTXO 并发
交易最终确认后,用户即可花费私有余额。 当私有余额分散在多个 UTXO 中时,可以并发花费。每个 UTXO 可以同时在不同的交易中花费。例如,由三个各含 100 USDC 的 UTXO 构成的余额,可以同时为三笔最高 100 USDC 的转账提供资金。钱包会选择要花费的 UTXO。了解更多
Overview
Ring、隐私保证和交易流程。
Architecture
钱包、RPC 服务和 Solana 程序如何交互。
Encryption and Privacy Guarantees
资产的加密方式以及隐私密钥对的作用。
Custom Enterprise Rings
了解如何配置自定义 Ring。