Shielded pool(屏蔽池)

由 Merkle 树和 nullifier 唯一性共同支撑的存款池,池内参与者之间互相匿名。

Shielded pool 是托管存款、验证取款的链上对象。SolMask 的池由一个 Solana 程序拥有四个 PDA 构成:vault(保管资产的 token 账户)、merkle_frontier(Merkle 树的追加端)、root_history(最近若干个有效 root 的滚动列表),以及 nullifier_set(已花费票据的注册表)。

一个池所能提供的隐私强度,就是它的匿名集合大小:那一组任何一笔取款都"有可能"对应到的存款。池里只有一笔存款时,匿名度为零;池里有一万笔时,观察者若想把某次取款对上某笔存款,就要面对一万分之一的猜中概率,而这还没把隐私延迟带来的混入效应算进去。

SolMask 为每种资产单独运行一个 shielded pool(SOL 一个、USDC 一个、USDT 一个),因为跨 mint 混合存款将不得不在取款时披露金额,这会破坏整个构造。跨资产的隐私则通过在同一笔取款交易内由 Jupiter 完成 swap 来实现,而不是把不同的池混在一起。

相关术语

Shielded pool(屏蔽池) · Glossary · SolMask