Groth16 ist ein pairing-basiertes zk-SNARK mit den kürzesten Proofs und der schnellsten Verifikation, die heute produktiv im Einsatz sind: drei Elemente einer elliptischen Kurve (~192 Byte) und eine Verifikation, die auf Solana etwa 1,5 Millionen Compute Units kostet. SolMasks Withdraw-Circuit wird zu Groth16 über BN254 kompiliert — derselben Kurve, die auch EVM-Rollups verwenden — sodass der On-Chain-Verifier gut erprobter Code ist.
Jeder SolMask-Withdraw trägt genau einen Groth16-Beweis. Dieser Beweis bestätigt vier Aussagen gleichzeitig: Der Prover kennt ein nullifier_secret, dessen Poseidon-Hash dem offengelegten Nullifier entspricht; das zugehörige Commitment ist ein Blatt des Merkle-Baums, dessen Wurzel mit einer kürzlich veröffentlichten Root übereinstimmt; der aktuelle Solana-Slot liegt hinter dem unlock_slot des Commitments; Empfänger, Betrag und Relayer-Gebühr in der Transaktion entsprechen dem, was der Prover autorisiert hat.
Groth16 benötigt pro Circuit ein Trusted Setup. SolMasks Setup war eine Multi-Party-Zeremonie mit öffentlichem Transcript, damit kein einzelner Teilnehmer Beweise fälschen kann.