Knowledge Gathering: SPV Proof Applications In the Wild and Proposed

114 views
Skip to first unread message

jeremy

unread,
May 14, 2026, 10:47:59 AM (2 days ago) May 14
to Bitcoin Development Mailing List
Dear Bitcoin Developers,

SPV proofs are an important part of Bitcoin's Design, after all Satoshi thought they were worth including in the whitepaper!

As far as I'm aware, they have somewhat limited usage in the wild, mainly in Electrum and in Layer 2 Bridges, but it is important that they work correctly.

I'd like to gather a bit more detailed information on where and how SPV proofs are currently used, as well as any other proposed uses of SPV proofs.

In this Knowledge Gathering, I'd also like to glean a better understanding of what types of commitment structures might work "better" than others for SPV -- e.g., ability to cheaply verify if a block pays a particular address, spends a particular coin, and the exclusion forms (does not pay an address, does not spend a coin) etc, especially in the context of Layer 2 Bridging.

Happy International Chihuahua Appreciation Day,

Jeremy

Ekrem BAL

unread,
May 14, 2026, 3:32:59 PM (2 days ago) May 14
to Bitcoin Development Mailing List
Hi Jeremy,

For Citrea/Clementine, we currently use SPV-style proofs in two main places.

First, on the Citrea side, the Bridge system contract uses Bitcoin transaction inclusion proofs to accept peg-ins/deposits. See:

<https://github.com/chainwayxyz/citrea/blob/487daa67fc54feb789b618a0ca2be1cc2f09b198/crates/evm/src/evm/system_contracts/src/Bridge.sol#L196>

The contract checks inclusion through Citrea's Bitcoin light client contract. More details here:

<https://docs.citrea.xyz/developer-documentation/system-contracts/bitcoin-light-client>

Second, in the Clementine Bridge proof, we use SPV proofs for verifying operator payout transactions. If an operator is challenged, the operator proves that there exists a payout transaction paying the withdrawal. See:

<https://github.com/chainwayxyz/clementine/blob/b711e92ef2725e8b3cdaacc2683583f11b5aec28/circuits-lib/src/bridge_circuit/spv.rs>

On your question about commitment structures, I think being able to verify that a particular coin was not spent in a block might be helpful, as it could make creating SNARK proofs for operator honesty easier in some bridge designs.

Best,
Ekrem BAL
Reply all
Reply to author
Forward
0 new messages