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
I’ve been writing a paper. Working title: Relayerless Full-Privacy Framework for Turing-Complete Blockchain Systems. I keep calling it in my notebook, and I’ll keep doing that here. The shape of it is a quintuple of protocols — , , , , — 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 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 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.
| Aspect | Pros | Cons |
|---|---|---|
| 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
— five protocols, each a PPT algorithm, with the following five desiderata:
D1 (Full Privacy). For any PPT adversary with full view of chain state and any two valid transactions (different senders / recipients / amounts / programs):
D2 (Self-Sovereignty). For every protocol operation and any adversary controlling all network participants except the user , still completes with overwhelming probability — assuming only that the underlying chain provides liveness.
D3 (Composability). Private state transitions can invoke arbitrary smart contract logic. For any arithmetic circuit with gates, the framework supports with proof generation cost polynomial in .
D4 (Succinctness). On-chain verification cost pairings or hash evaluations. Proof size or .
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:
-
SPST — Self-Paying Shielded Transaction. A note/commitment/nullifier scheme where the fee is extracted inside the ZK proof itself via a Pedersen-commitment balance equation. The fee paradox dies here. (Post 3.)
-
PPST — Private Programmable State Transitions. SPST generalised so that the proof attests to correct execution of an arbitrary arithmetic circuit over committed pre-state and post-state. This is what makes the framework Turing-complete. (Post 4.)
-
TAB — Threshold-Anonymous Broadcast. Network-layer anonymity, using ring signatures (Approach A) or FROST-style threshold Schnorr (Approach B) to hide which of participants actually submitted the transaction. (Post 5.)
-
UPEE — Universal Private Execution Environment. The composition: . UPEE is what gets deployed to a chain. (Post 7.)
The two main theorems sit on top of the stack:
- Theorem 3.12 (Simulation-Based Privacy). For any PPT adversary controlling the blockchain there exists a PPT simulator such that , where learns only that some valid transaction occurred and some fee was paid.
- Theorem 3.13 (Self-Sovereignty). for any adversary controlling all network participants except the user.
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:
- The chain already exists, has 65k+ TPS theoretical throughput, and sub-second finality.
- Native
alt_bn128syscalls (added in v1.16) make Groth16 verification cost < 200,000 CU on-chain — that’s roughly $0.02 per private transaction. - 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.
- 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
| # | Slug | What it covers |
|---|---|---|
| 2 | the_fee_paradox | Why every smart-contract privacy protocol needs a relayer (or doesn’t) |
| 3 | spst_self_paying_shielded_transactions | SPST construction, balance theorem, double-spend resistance, unlinkability proof |
| 4 | ppst_private_programmable_state | Generalising SPST to arbitrary computation; PPST relation; PPST-SPST composition |
| 5 | tab_threshold_anonymous_broadcast | Ring signatures over Ed25519 + FROST threshold Schnorr |
| 6 | verifiable_shuffles_for_privacy | Bayer-Groth shuffles for network-layer mixing |
| 7 | upee_universal_private_execution | UPEE deploy / invoke / verify; the simulation-based privacy theorem |
| 8 | solana_instantiation_656_bytes | Concrete Solana instantiation with CU + transaction-byte budgets |
| 9 | f_rp_vs_existing_privacy_systems | F_RP vs Zcash, Tornado, Railgun, Aztec, Penumbra, Aleo, Namada, Monero |
| 10 | mev_resistance_in_private_execution | Sandwich-proofness; bounding MEV by public-bit leakage |
| 11 | post_quantum_relayerless_path | Lattice commitments, STARK wrapping, isogeny credentials |
Bibliography for this post
- Aylor, H. (2026). Relayerless Full-Privacy Framework for Turing-Complete Blockchain Systems. Preprint, Zera Labs. (The paper this series is derived from. Final PDF will land at
/papers/relayerless-privacy/once typeset.) - Ben-Sasson, E. et al. (2014). Zerocash: Decentralized Anonymous Payments from Bitcoin. IEEE S&P 2014.
- Hopwood, D. et al. (2016–2026). Zcash Protocol Specification. https://zips.z.cash/protocol/protocol.pdf
- Pertsev, A., Semenov, R., Storm, R. (2019). Tornado Cash Privacy Solution v1.4.
- Mayer Brown (2024). Federal Appeals Court Tosses OFAC Sanctions on Tornado Cash.
Next post: The fee paradox →