Obsidian: Pre-confirmations of trades with ZKP and execution certainty
This project introduces Obsidian, a solution that provides pre-confirmations for trading through a zero-knowledge proof framework and a network of solvers.
Obsidian addresses two fundamental challenges in on-chain trading: transaction transparency and uncertain execution outcomes. When trading on-chain, transactions are visible in the mempool, exposing traders to front-running, sandwich attacks, price impact, high gas fees, execution delays, and reverted transactions.
Key components:
Critically, price sources remain private, and execution prices are locked at the reference block, protecting users even when market prices move during the process.
Obsidian also enables recursive proofs, similar to traditional finance dark pools, allowing multiple trades to be batched into a single settlement. This approach allows moving large volumes without significant market impact while maintaining privacy and execution certainty.
This makes MEV attacks impossible while ensuring price certainty through zkp - addressing key challenges faced by both institutional and retail traders moving significant capital through DeFi.
Our system comprises three core modules running inside the SP1 zkVM:
State Verifier Module: A lightweight component that verifies blockchain state and roots against block hashes for given inputs. Price Computation Module: Parses verified state data to determine trade prices. Currently uses Uniswap reserves, but designed to be swappable with:
Chainlink oracle readers Average rate modules that blend prices across oracles and DEXes Other custom price sources
Transfer Computation Module: Calculates the final token transfers based on the computed prices.
Once processing completes, the prover submits to the Succinct Prover Network and returns proof to be executed on the Obsidian Router. The router performs two critical functions:
Verifies the block hash calculation matches the user-agreed reference block (current limitation: can only look back 256 blocks) and hence the price was computed correctly and then Executes simple token transfers between parties
This modular architecture allows us to keep the core verification logic consistent while enabling different price sources and transfer mechanisms through component swapping.