unlock_slot 是 SolMask 用来实现隐私延迟的、绑定在每张票据上的时间锁。存款时,前端会把你选定的延迟(1 小时、6 小时、1 天,最长一周)换算成一个 Solana slot 号码——大约是 current_slot + delay_seconds / 0.4——并把这个值连同秘密、金额一起写入 commitment。
取款时,Groth16 电路会检查 unlock_slot <= current_slot,链上验证器则会检查传入的 slot 是否与 Clock::get()?.slot 一致。在 unlock slot 之前生成的证明在数学上仍然有效,但程序会拒绝这笔交易。
之所以要有延迟,是因为即时取款极易被关联:如果一笔存款与一笔金额相同的取款落在相邻的 slot 里,观察者几乎一猜一个准。强制每张票据必须等待你所选的时长,可以让新存款在你这笔旁边继续堆积,使匿名集合在你取款上链之前进一步扩大。