全部说明

2026-05-26

什么是屏蔽池?

屏蔽池是 SolMask 中保管资金的部分。每一笔存款都进入同一个链上账户,每一笔提款也从同一个账户流出。池子本身是完全公开的 —— 您可以读取它的余额,看到每一笔存款交易,看到每一笔提款交易。您唯一读不出的,是哪笔存款对应哪笔提款。

这唯一缺失的一片,就是整个产品。

没有操作员的混币器类比

这个想法的旧世界版本是混币器。您把一沓钞票交给操作员,他把您的钞票和其他人的混在一起,然后从混合堆中归还您等值的金额。只要操作员诚实,外部观察者就无法分辨哪些钞票曾经属于您。

显然,问题在于操作员。他清楚地知道谁存了什么、谁取了什么。如果他留有记录 —— 或者被传唤交出记录 —— 隐私就会被追溯性地击穿。

屏蔽池是一个没有人在运营的混币器。"操作员"是 Solana 上的一份智能合约。它没有人为介入,没有"谁存了什么"的链下数据库,也没有审查或没收资金的能力。它的规则是公开的,它的代码是公开的,它能做的只是规则允许它做的事。

当您在 SolMask 的 SOL 池存款时,您的 SOL 会和其他存款人的 SOL 一同进入同一个保险库。当您提款时,保险库把 SOL 发送到您的目标地址。保险库的账本不追踪"谁拥有哪些 SOL";它只追踪"这里一共有多少 SOL,以及多少可以被合法提取"。您的提款权利通过加密方式(参见ZK 证明如何工作)证明,而非通过身份。

两端都在链上。只有中间是隐藏的。

一个让新用户困惑的微妙点:SolMask 并不隐藏您的存款。您的存款交易是一笔完全普通的 Solana 交易。它显示了您的钱包、金额,以及它进入的池子地址。任何读取链上数据的人都能看到钱包 A 在 slot 312,488,712 向 SolMask 池发送了 5 SOL。

同样,SolMask 也不隐藏您的提款。提款也是一笔完全普通的 Solana 交易。它显示池子地址向接收钱包 B 支付了一些 SOL。

被隐藏的是关联。两笔交易中都没有一个共同字段、共享标识、签名模式或时间指纹(如果您等得足够久)能把 A 的存款和 B 的提款绑在一起。在观察者眼中,您看到的是一份公开的存款列表、一份公开的提款列表,以及中间一道由数学强制执行的洗牌。

这正是为什么屏蔽池中的隐私取决于人群。如果您是唯一一个存入恰好 5.000 SOL 的人,一小时后有人提取 5.000 SOL,那么您已经通过排除法暴露了自己。池子的工作是保持足够多的活动流量,使得任意一次提款都可以合理地对应到最近几十甚至几百笔存款中的任何一笔。

合约实际存储了什么

具体来说,当您存款时,SolMask 将一个 32 字节的哈希 —— 承诺 —— 写入链上的一棵 Merkle 树。承诺是您的浏览器从钱包派生出的四个秘密的单向函数:一个 spend secret、一个 nullifier secret、存款金额和解锁 slot。您既不需要选择也不需要存储它们 —— 每次重新连接时,同一个钱包都会确定性地重现它们。仅凭承诺什么都还原不出来。

提款时,您的浏览器生成一份证明,意思是"我知道树中的某一个承诺,并且我正在授权向地址 Y 提取 X 个代币"。证明揭示 X 和 Y,但不揭示它对应的是哪个承诺。链上保存一个被称为 nullifier 的小标记,用于防止同一笔存款被提取两次,然后这笔交易就结束了。

这给您带来什么,又不能给您什么

屏蔽池为您提供发送钱包与接收钱包之间的链上不可关联性。它不为您提供链下匿名性。如果您在 Twitter 上告诉全世界"我刚刚把钱存进了 SolMask",加密学帮不了您。如果您提款的地址早已公开属于您,加密学帮不了您。而如果您提取的金额恰好等于您三十秒前存入的那个不寻常的数字,数学说您是隐藏的,但时间说您不是。

屏蔽池是数学引擎。用好它本身是一项独立技能,我们在 Learn 板块的其他文章里会展开讲述。

什么是屏蔽池? · SolMask