DOC# RELAYE SLUG relayerless_privacy_intro PRINTED 2026-05-06 03:47 UTC

Relayerless privacy on a Turing-complete L1: an intro to F_RP

A series-opening map of the relayerless full-privacy framework I've been writing up. Five cryptographic games, four constructions (SPST, PPST, TAB, UPEE), one main theorem — and why it matters that the target chain is Solana.

FROM
Dax the Dev <[email protected]>
SOURCE
https://blog.skill-issue.dev/blog/relayerless_privacy_intro/
FILED
2026-04-26 15:00 UTC
REVISED
2026-04-26 15:00 UTC
TIME
7 min read
SERIES
relayerless-privacy
TAGS
#zk #cryptography #privacy #solana #vanta #research #phd

I’ve been writing a paper. Working title: Relayerless Full-Privacy Framework for Turing-Complete Blockchain Systems. I keep calling it FRP\mathcal{F}_{\text{RP}} in my notebook, and I’ll keep doing that here. The shape of it is a quintuple of protocols — Setup\mathsf{Setup}, Shield\mathsf{Shield}, Transfer\mathsf{Transfer}, Unshield\mathsf{Unshield}, Execute\mathsf{Execute} — that together aim to do something every existing privacy system on a smart-contract chain refuses to do: let the user finish a private transaction without paying anyone but a validator.

This post is the orientation. Subsequent posts in the series step through each construction in detail with proofs, circuit costs, and Solana instantiation numbers. Here I want to set the table — what problem FRP\mathcal{F}_{\text{RP}} targets, what games formalise it, and how the four pieces compose.

The relayer problem, in one paragraph

Submit a private withdrawal on Tornado Cash from a fresh address. The contract runs the proof, accepts it, and tries to send 1 ETH to your fresh address. Except the fresh address has zero ETH and cannot pay gas. So you can’t be the submitter — somebody else has to broadcast the transaction with their own ETH and bill you for it. That somebody is the relayer. The relayer breaks the on-chain link between your deposit and your withdrawal address, but in exchange they observe everything: your IP, your timing, the recipient address, the fee you accept, and which proof maps to which deposit. They are also a single regulatory point of failure, as everyone in the West learned in August 2022 when OFAC sanctioned Tornado Cash and the registered relayers stopped operating. The user funds were not seized — they were merely unspendable because the relayer infrastructure went dark.

Zcash, Penumbra, and Aleo don’t need relayers because they are their own chains. Aztec doesn’t need relayers because it is its own L2 with its own sequencer. Tornado Cash, RAILGUN, and Light Protocol’s older privacy phase need relayers because they are smart-contract layers on a host chain whose fees must be paid in the host chain’s native asset by an address that already has it.

What I want — and what FRP\mathcal{F}_{\text{RP}} delivers — is a privacy protocol that runs as a smart-contract layer on a Turing-complete L1, where the only thing the protocol needs from the outside world is liveness: the chain keeps making blocks, and any valid transaction eventually gets included.

Five games that pin down “relayer dependence”

Section 1 of the paper formalises five distinct failure modes that emerge from relayer dependence. Every one of them is an active threat against currently deployed protocols. I’ll quote them tersely; the full game definitions are in the paper.

AspectProsCons
Liveness Failure Adversary forces relayer set offline → user cannot withdraw within $T_{\max}$ blocks. Wins with overwhelming probability when $\mathcal{A}$ controls all relayers; e.g. OFAC TC 2022.
Information Leakage Relayer observes withdrawal metadata: timing, recipient, fee, IP. Distinguishing advantage non-negligible for any logging relayer.
Trust & Censorship Relayer selectively refuses to submit based on $P(\mathsf{addr}_{\mathsf{recv}})$. Censorship probability = 1 when $\mathcal{A}$ controls $\mathcal{R}$. Funds binding does not save liveness.
Regulatory Surface Government adversary identifies relayer operators as legally liable entities. Sanctions / criminal charges → all relayers offline → withdrawal mechanism disabled.
Economic Extraction Relayer charges supracompetitive fees, frontruns correlated trades, sells ordering info to MEV searchers. Rational adversary extracts non-negligible profit; PPE binding does not bound timing/metadata leaks.

The point of formalising these as games is the same point Goldwasser, Micali, and Rackoff made about zero-knowledge proofs in 1985: until you’ve written down what an adversary can do and how it wins, you have no theorem to prove. The five games above are what every honest analysis of a privacy protocol owes the reader.

What we want, formally

FRP=(Setup,Shield,Transfer,Unshield,Execute)\mathcal{F}_{\text{RP}} = (\mathsf{Setup}, \mathsf{Shield}, \mathsf{Transfer}, \mathsf{Unshield}, \mathsf{Execute}) — five protocols, each a PPT algorithm, with the following five desiderata:

D1 (Full Privacy). For any PPT adversary with full view of chain state σ\sigma and any two valid transactions tx0,tx1\mathsf{tx}_0, \mathsf{tx}_1 (different senders / recipients / amounts / programs):

AdvApriv(λ)  =  Pr[A(σ,tx0)=1]Pr[A(σ,tx1)=1]    negl(λ).\mathsf{Adv}^{\mathsf{priv}}_{\mathcal{A}}(\lambda) \;=\; \bigl|\,\Pr[\mathcal{A}(\sigma, \mathsf{tx}_0) = 1] - \Pr[\mathcal{A}(\sigma, \mathsf{tx}_1) = 1]\,\bigr| \;\leq\; \mathsf{negl}(\lambda).

D2 (Self-Sovereignty). For every protocol operation Op\mathsf{Op} and any adversary controlling all network participants except the user U\mathcal{U}, U\mathcal{U} still completes Op\mathsf{Op} with overwhelming probability — assuming only that the underlying chain B\mathcal{B} provides liveness.

D3 (Composability). Private state transitions can invoke arbitrary smart contract logic. For any arithmetic circuit C:FnFmC: \mathbb{F}^n \to \mathbb{F}^m with C|C| gates, the framework supports Execute(pp,C,,)\mathsf{Execute}(\mathsf{pp}, C, \cdot, \cdot) with proof generation cost polynomial in C|C|.

D4 (Succinctness). On-chain verification cost O(1)O(1) pairings or O(logn)O(\log n) hash evaluations. Proof size O(1)O(1) or O(log2n)O(\log^2 n).

D5 (No / Universal Trusted Setup). Either no setup (transparent) or a universal SRS that is updatable by any party.

If you’ve read the post on Halo2 you’ll recognise D5 as the “no per-circuit ceremony” requirement. D1, D2, D3, D4 are the standard four for a privacy SNARK; D2 is the one the existing relayer-dependent protocols silently violate.

Four constructions

The framework decomposes into four primitives, each addressing one piece of the problem:

  1. SPST — Self-Paying Shielded Transaction. A note/commitment/nullifier scheme where the fee ff is extracted inside the ZK proof itself via a Pedersen-commitment balance equation. The fee paradox dies here. (Post 3.)

  2. PPST — Private Programmable State Transitions. SPST generalised so that the proof attests to correct execution of an arbitrary arithmetic circuit CC over committed pre-state and post-state. This is what makes the framework Turing-complete. (Post 4.)

  3. TAB — Threshold-Anonymous Broadcast. Network-layer anonymity, using ring signatures (Approach A) or FROST-style threshold Schnorr (Approach B) to hide which of nn participants actually submitted the transaction. (Post 5.)

  4. UPEE — Universal Private Execution Environment. The composition: (Setup,Deploy,Invoke,Verify,Finalize)(\mathsf{Setup}, \mathsf{Deploy}, \mathsf{Invoke}, \mathsf{Verify}, \mathsf{Finalize}). UPEE is what gets deployed to a chain. (Post 7.)

The two main theorems sit on top of the stack:

The first theorem is the “this is private” theorem; the second is the “you don’t need a relayer” theorem. The series will derive both.

Why Solana, specifically

I keep being asked why I’m building this on Solana instead of writing yet another L1. The honest answer:

  1. The chain already exists, has 65k+ TPS theoretical throughput, and sub-second finality.
  2. Native alt_bn128 syscalls (added in v1.16) make Groth16 verification cost < 200,000 CU on-chain — that’s roughly $0.02 per private transaction.
  3. The 1,232-byte transaction limit is tight but not impossible: SPST fits in 656 bytes. SIMD-0296 (approved late 2025) raises this to 4,096 bytes.
  4. Light Protocol’s ZK Compression infrastructure already provides Poseidon Merkle trees and Groth16 verification — most of the substrate I need.

The chain doesn’t get to lie about what it ran. So make the chain run something that doesn’t tell anyone anything.

Solana is also the only general-purpose Turing-complete L1 that has shipped pairing-friendly elliptic-curve precompiles to the validator runtime. Ethereum has had EIP-197 since the Byzantium fork (2017), but the gas costs make Groth16 verification on Ethereum L1 cost ~$5 per proof at typical gas prices. Solana’s per-CU pricing brings that down by ~400×.

What’s coming in the series

#SlugWhat it covers
2the_fee_paradoxWhy every smart-contract privacy protocol needs a relayer (or doesn’t)
3spst_self_paying_shielded_transactionsSPST construction, balance theorem, double-spend resistance, unlinkability proof
4ppst_private_programmable_stateGeneralising SPST to arbitrary computation; PPST relation; PPST-SPST composition
5tab_threshold_anonymous_broadcastRing signatures over Ed25519 + FROST threshold Schnorr
6verifiable_shuffles_for_privacyBayer-Groth shuffles for network-layer mixing
7upee_universal_private_executionUPEE deploy / invoke / verify; the simulation-based privacy theorem
8solana_instantiation_656_bytesConcrete Solana instantiation with CU + transaction-byte budgets
9f_rp_vs_existing_privacy_systemsF_RP vs Zcash, Tornado, Railgun, Aztec, Penumbra, Aleo, Namada, Monero
10mev_resistance_in_private_executionSandwich-proofness; bounding MEV by public-bit leakage
11post_quantum_relayerless_pathLattice commitments, STARK wrapping, isogeny credentials

Bibliography for this post

Next post: The fee paradox →

← Back to article