Jonas Nick

Liam Eagen

Robin Linus

Shielded CSV  

Private and Efficient

Client-Side Validation

Summary

Shielded CSV is a transaction protocol on top of Bitcoin.

Bitcoin Shielded CSV
Privacy 🥴
Blockspace per tx ~600B, on average 64B, always
  • SAME double-spending security as Bitcoin
  • NO online requirement
  • NO inbound capacity problem
  • NO softfork required (*)

     data is ignored by ordinary Bitcoin nodes, only interpreted "client-side" by       nodes.

 Alice: 3 

 Bob:  7 

Client-Side Validation (CSV)

A 2-input, 2-output Bitcoin transaction

Shielded CSV        transaction data is embedded in Bitcoin transactions.

Blockchain (PoW, ...)

      Transaction Validation

"Layer 0.5"

"Layer 1"

Bridge examples:

  • t-of-n federated bridge
  • one-way peg
  • BitVM
  • validity bridge
  • ...

Bridge

    can be understood as an alternative L1

    doesn't need a softfork, but it inherits the security of the bridge (which may be improved by softforks).

BitVM and new Script opcodes only benefit shitcoiners and JPEG degens!!

Liar! Shielded CSV proves that BitVM and better Script opcodes can add full privacy and 64 byte transactions to Bitcoin.

Full privacy with only 64 bytes on-chain sounds impossible?

Shielded CSV Approach

  • Only post the minimal data necessary to prevent double-spending to the blockchain.
  • Send "the rest of the transaction" to the receiver directly.

Basic Shielded CSV     recipe

Sally the Sender

 Ivy:   3

 Roy: 7

  1. Create CSV Transaction. Consist of inputs and outputs, similar to Bitcoin transactions.
  2. Derive 64-byte "nullifier" from transaction
  3. Post nullifier to the blockchain
  4. Send "coin proof" to the receiver

Roy the Receiver

coin proof

Blockchain

nullifier

CSV transaction

Simplified Coin Proof

Sally the Sender

 Ivy:   3

 Roy: 7

Roy the Receiver

coin proof

Coin Proof: History of (CSV) transactions connecting to issuance transactions.

 Harry: 10

Issuance: 6

Issuance: 4

Verify:
All txs in the coin proof

are valid.

(The exact details of issuance depend on the type of bridge)

Simplified Nullifier

The nullifier consists of:

  • CoinID: Identifier of the output being spent. This is the hash of the CSV transaction creating the output & index in the transaction.
  • TxHash: Hash of the CSV transaction being created.

The nullifier nullifies the coin, thereby preventing double spending

Preventing Double Spending

Blockchain

CoinID TxHash
<some CoinID> <...>
<other CoinID> <...>

nullifier key-value store

Embed nullifier

Process nullifiers

Process nullifiers:

Ignore nullifiers whose CoinID is already in the KV store.

(<some CoinID>, <some TxHash>)

IGNORED by Roy

nullifier = (CoinID, TxHash)

Preventing Double Spending

Sally the Sender

Roy the Receiver

Coin, Coin Proof

Verify Coin Proof:

  1. All txs in the coin proof are valid.
  2. Every coin spent in the coin proof must be present in the KV-store and the tx hashes must match.

CoinID TxHash
<some CoinID> <...>
<other CoinID> <...>

nullifier key-value store

Preventing Double Spending

This design does prevent double spending with only a small nullifier!

(what we've seen is not the actual Shielded CSV nullifier, because it has a number of problems)

Publishing Nullifiers

  • Publisher is a permissionless role, open to anyone able to make a Bitcoin transaction.
  • If the nullifier ends up in the blockchain, the publisher reponsible is paid a fee within Shielded CSV.

Pete the Publisher

nullifier

aggregate nullifier

Blockchain

nullifier

nullifier

Problem: Sender shouldn't have to make a Bitcoin tx for every nullifier (overhead, requires having bitcoin).

Coin Proof

👷

Nullifier

AggNullifier

...

Block i + 1

Block i

Block i + 2

aggregates & publishes

processes

AggNullifier

<...> <...>
<...> <...>

nullifier key-value store

CSV Tx

Succinct & Private Coin Proofs

Solution: Replace new coin proof with a cryptographic proof that the incoming coin proofs and Sally's CSV tx is correct.

  • Makes coin proof size and verification time independent of transaction graph size.
  • Instantiated with recursive SNARKs or folding schemes.

CSV tx

new coin proof

coin proof

coin proof

zero-knowledge

succinct

Problem: Coin proof includes all ancestor transactions involved in creating the coin (size?, privacy?).

High-level rust spec

Whitepaper

Post-quantum

non-interactive publishing

prunable wallet state

PCD

Payment Channels

MEVil

TS-Accumulator

Instantiation

Light clients

Timelocks

Sign-to-Contract Schnorr Half-Aggregation

64-byte nullifier

Private and Efficient CSV

Communication Channels

Client-Side Validation Model

Accounts

"mempool"

Reorgs

Atomic Swaps

t-of-n Shared Accounts

Wallet State

🐙

🦑

🦈

Scriptable spending policies

  • Shielded CSV is a transaction protocol to create an L1 on top of a blockchain that allows embedding arbitrary data  (e.g., Bitcoin).
  • It inherits double-spend security from the underlying blockchain.
  • The amount of data embedded into the blockchain is 64 bytes per transaction.
  • Coin proofs are sent directly to the receiver through a private one-way communication channel.
  • Coin proofs are succinct.
  • Shielded CSV is fully private.
  • No softfork required. But security is inherited from the bridge.

Blockchain (PoW, ...)

Transaction Validation

"Layer 0.5"

"Layer 1"

🛡️

You've unlocked the backup slides

What is CSV really?

Insight: Transaction validation does not need to be part of the consensus rules.

... then transactions are only validated "client-side" and simply ignored if they are invalid.

Comparing CSV

Shielded CSV (Bitcoin2025)

By iamjon

Shielded CSV (Bitcoin2025)

  • 92