Slide 01 // Title

SOTTO Sotto Logo

The bid stays sealed. The winner is provable.

Sealed-bid procurement auctions where the winner proves they had the lowest valid bid in zero knowledge — no reveal phase, no leaked bids, no griefing.

Soroban · BN254 Pairing Check

settle(proof, winnerIndex, ax, ay)
→ valid → payout + rebate ✓
→ tampered → reject ✗

Stellar Hacks: Real-World ZK · DoraHacks

Slide 02 // The Problem

Sealed bids aren't actually sealed.

Bid leaking & collusion

Sealed bids run over email get leaked — a favored contractor underbids competitors by exactly $1.

Reveal-phase griefing

Commit-and-reveal needs everyone to reveal after the deadline. A losing bidder refuses — and freezes the escrow indefinitely.

Procurement is a multi-trillion-dollar flow. A 1% manipulation on a $10M contract = $100K skimmed, per deal.

Slide 03 // The Solution

A sealed-bid engine with no reveal phase.

Bids stay on-chain as Poseidon commitments. After close, only the winner proves: valid bid, lowest of all commitments, matches their commitment, signed by their key.

Private

losing bids never revealed

No griefing

losers do nothing

Winner-bound

in-circuit EdDSA

Vickrey

auto payout + rebate

Slide 04 // Live Demo & Flow

What the judges see

$ npm run prove:demo

1. create_auction(budget, reserve, deadline) → escrow

2. submit_bid(Poseidon(bid, salt)) × N (sealed)

3. ledger sequence passes deadline time-lock

4. winner proof: lowest valid bid + EdDSA sig

5. settle(...) → BN254 pairing on-chain

valid → payout to winner + rebate ✓

tampered → rejected ✗

The auction settles and pays out without any loser ever revealing their bid. Hosted app = UX sandbox; load-bearing ZK = prove:demo + deployed verifier.

Slide 05 // Architecture & Tech

Poseidon commitments. One pairing. Winner bound.

ZK Circuit

Circom 2.1.6 / Groth16 bn128 · LowestBidVerifier(N) · Poseidon + comparators + EdDSA over C_w · nPublic = 8

Verifier

env.crypto().bn254().pairing_check() — Groth16 at host speed (Protocol 25/26)

Auction logic

ledger-sequence time-lock · instance storage for commitments/nullifiers · token escrow

App

Next.js 16 / Supabase · ECIES-encrypted bid storage

Poseidon ~110× cheaper in-circuit than SHA-256 → on-chain verification is one pairing. EdDSA binds the settler to the winning bidder.

Slide 06 // Market & Impact

A multi-trillion-dollar trust problem.

$T+

global B2B procurement spend flowing through reverse auctions every year.

$B

e-procurement & e-sourcing software market — all exposed to bid leakage today.

Gov

tenders legally require auditable integrity — Sotto's exact wedge.

Slide 07 // Business Model

How Sotto survives the hackathon

01

Per-auction settlement fee — basis points on contract value, or flat per sourcing event.

02

Enterprise SaaS — white-label sealed-bid module for ERP / e-sourcing suites.

03

Audit exports — verifiable settlement receipts for government / regulated tenders.

04

Cost moat — sub-cent settlement undercuts every legacy e-sourcing platform.

Slide 08 // Competitive Edge

Why Sotto wins

Email/PDF Commit-reveal Sotto
Private after close
Griefing-proof ✅ winner-only
Trustless settlement ⚠️
Winner authenticity manual ✅ EdDSA
Cost / auction staff hrs gas sub-cent
Slide 09 // Traction & Validation

Built & verified, not vaporware

✅ Verifies on testnet

Real Groth16 winner proof accepted on-chain — npm run prove:demo.

✅ Negative control

Tampered inputs rejected on-chain.

✅ Soundness hardened

Winner bound via in-circuit EdDSA (nPublic 6 → 8); settle rewired to real signals.

✅ Cheap settlement

ZK verify + Vickrey payout ≈ 74,454 CPU (~0.07% budget). 101 unit tests green.

Slide 10 // Roadmap

30 / 60 / 90 days

30 DAYS

Redeploy BN254 + EdDSA verifier; stellar.expert verified; public testnet auction.

60 DAYS

Variable bidder count, in-browser proving, bind winnerBid to public payout.

90 DAYS

Combinatorial auctions, ERP connector, first live pilot tender.

Slide 11 // Team

Engineering leverage

Edy Cu

full-stack + applied-ZK engineer

Solo-built the Circom auction circuit (lowest-bid + Poseidon + EdDSA), the Rust/Soroban auction & verifier contracts with Vickrey economics, and the Next.js procurement console. One of five real on-chain ZK products shipped for this hackathon.

Slide 12 // The Ask

The bid stays sealed.
The winner is provable.

Sotto turns procurement integrity from a procedure you trust into a proof you verify — settled natively on Stellar.

npm run prove:demo  # try to forge a winner — you can't