Ein Relayer nimmt deinen Groth16-Beweis und die Empfängeradresse per HTTP entgegen, signiert und broadcastet die Withdraw-Transaktion mit seinem eigenen Keypair und bezahlt das SOL-Gas. Im Gegenzug überweist ihm das On-Chain-Programm eine kleine feste Gebühr (0,003 SOL pro Empfänger) aus dem Withdraw-Betrag.
Damit löst er das Bootstrap-Problem. Eine wirklich frische Empfänger-Wallet startet mit null SOL. Ohne Relayer müsste der Nutzer ein Trinkgeld in SOL von der Ursprungs-Wallet schicken, um das Gas für den Withdraw zu finanzieren — und damit beide Adressen on-chain wieder verknüpfen und den ganzen Sinn von SolMask aufheben. Der Relayer durchtrennt diese Verbindung, indem er der Zahlende ist.
Dem Relayer wird nur Liveness anvertraut, keine Privatsphäre. Er sieht deinen Beweis und deine Empfängeradresse (anders kann er die Transaktion nicht einreichen), erfährt aber nie, welchen Deposit dein Beweis ausgibt, und er kann eine bestimmte Note nicht zensieren, ohne jeden Withdraw zu zensieren, den er sieht. Wer dem gehosteten Relayer nicht vertrauen will, betreibt einen eigenen — der self-relay-Flow verwendet dieselbe Instruktion mit der eigenen Wallet des Nutzers als Gebührenempfänger.