ZAMA DEVELOPER PROGRAM S2 · SKILLS + DAPP TRACK

SEALTENDER

FHE-Encrypted Sealed-Bid Procurement.
Sealed envelopes for public procurement, on the world computer.
RUNTIME · STACK · STATUS:
Sepolia · live
Zama fhEVM
Built on ERC-7984
Solidity 0.8.27
329 / 329 tests
11 contracts
THE STAKES

Public procurement is where your tax money meets contractors.

15–30%
GDP · PUBLIC SPENDING
₺1T+
TENDER VOLUME / YR (KIK 2023)
3–5%
LOST TO BID LEAKAGE · ~$400–600B / YR
TÜRKIYE
KIK 4734 sayılı Kanun Madde 36 says bidder names are "only known by the procurement commission." Commission staff are human. Leaks recur in audit reports. The legal property has never been enforced cryptographically.
GLOBAL
World Bank and OECD anti-bribery surveys repeatedly cite bid-rigging in 15–20% of audited public-procurement files across developing economies, with cartels typically inflating winning prices 15–30%.
IMPACT
When over-charging is structural, what gets cut is concrete, rebar, oversight. Bid-rigging is not abstract — it shows up in the physical world long after the tender closes.
This is not a software bug. It is a 200-year structural assumption that humans in the middle won't peek. They do.
THE PARADOX

Open tenders leak prices. Sealed tenders trust the operator.

OPEN BID ₺ 1,240,000 ₺ 1,180,000 ₺ 1,310,000 ₺ 1,205,000 ₺ 1,275,000 CARTEL EVERYONE SEES MAX PRICE · CARTELS COORDINATE OR SEALED BID seal OPERATOR OPERATOR CAN STALL · LEAK · SELECTIVELY REVEAL
Cryptography has tried to fix this. Commit-reveal needs a reveal phase that can stall. MPC needs every bidder online for the ceremony. TEE needs hardware vendors you have to trust. Each solution adds a new trust point.
FHE is the first PRACTICAL primitive that gives privacy AND transparency together.
THE TRANSLATION

Sealed envelopes are 200 years of fair procurement.

SealTender puts them on the world computer.
TENDER OFFER · PHYSICAL · 1820–2025 MIGRATE ETHEREUM · WORLD COMPUTER SEAL WITH FHE ON CHAIN · ENCRYPTED · EVALUATED · PUBLIC FHE CIPHERTEXT
Bids never leave their envelopes. Bonds settle in confidential USDC (ERC-7984). The chain compares blind; losing bids stay sealed by default.
OZ CONFIDENTIAL CONTRACTS 0.4.0
THE BOND RAIL · ERC-7984 cUSDC ENVELOPE
PLAIN ERC-20
USDC
balance public
→ wrap() →
ERC-7984 · CIPHERTEXT
cUSDC · euint64
balance encrypted · ACL-gated
→ setOperator →
BIDESCROW
euint64 bond
held confidentially
Bond amount stays encrypted on-chain. Only owner + escrow hold ACL.
For the first time, a sealed bid and a publicly verifiable bid are the same thing — on Ethereum.
THE FHE PRIMITIVE · TWO ENCRYPTED RAILS, ONE TENDER

Compute on ciphertext. Decrypt only the result. With a quorum.

BID CIPHERTEXT · FHE euint64
Price, years, projects encrypted client-side; compared blind on-chain.
FHE.fromExternal(handle, proof) → euint64
BOND ENVELOPE · ERC-7984 cUSDC
operator → confidentialTransferFrom → escrow holds euint64
ACL: FHE.allowThis + FHE.allow(bidder)
BIDDER ENCRYPT FHE CLIENT-SIDE 1,240,000 CIPHERTEXT ON-CHAIN EVALUATE 1.24M 1.18M 1.31M FHE.lt + FHE.select → min(ciphertext) ~700K GAS / SUBMITBID KMS QUORUM 9-of-13 SIGN RESULT 1,180,000 WINNER (CLEAR) 1.24M 1.31M LOSERS SEALED BY DEFAULT
ENCRYPT CLIENT-SIDE
FHE ciphertext for price/years/projects/bond. Bound to (contract, user) by an input ZK proof — Zama's input verification gates ciphertext authenticity before FHE compute begins.
EVALUATE ON-CHAIN
FHE.lt + FHE.select find the minimum without ever seeing plaintext. ~700K gas per submitBid.
DECRYPT WITH QUORUM
9-of-13 KMS threshold (Zama TKMS, mainnet live since Dec 30, 2025). FHE.checkSignatures binds cleartext on-chain.
// ANTI-PATTERN
SealTender does NOT use commit-reveal, MPC, or TEE. Full-FHE end to end.
HOW IT WORKS · LIFECYCLE

Six phases. Each one role-gated or permissionless.

PROCUREMENT ENTITY
BIDDER
ANY CALLER
ANY CALLER
KMS QUORUM
ANY CALLER
DEADLINE + 60s
1
CREATE
Procurement entity (İdare) creates tender.
TenderConfig (deadline, weights, minRep) + TenderSpecification (BoQ, ISO/TS EN refs, value range).
2
SUBMIT
Bidder submits.
Encrypted (price, years, projects, bond) + escrow deposit. ZK input proof binds ciphertext to bidder.
3
EVALUATE
Permissionless evaluateBatch.
Any caller cranks FHE.lt comparisons after deadline. v4 governance hardening.
4
REVEAL REQ
Permissionless requestReveal.
After deadline + REVEAL_TIMELOCK (60s demo / 7d production). Promotes ciphertexts to publicly decryptable.
5
REVEAL
revealWinner.
KMS-attested 3-handle tuple (idx + price + eaddress). Plaintext stored in pending slot, NOT public yet.
6
ANNOUNCE
announceWinner.
Permissionless after ANNOUNCE_TIMELOCK (60s demo / 48h production). Mirrors 4734 Madde 41.
DISPUTES
ArbitrationSafe (3-of-5 multi-sig) handles disputes — replaces unilateral owner slash authority. Wired as DisputeManager.courtAuthority.
v7 · CONFIDENTIAL RAIL
Bond escrow is cUSDC (ERC-7984) — every deposit is an encrypted euint64; refund + slash move ciphertexts via confidentialTransfer. No bond amounts leak via on-chain events.
OPTIONAL · v6
publishAllBids — procurement entity opts into 4734 Madde 36 transparency: each loser bid landed plaintext via per-bidder KMS roundtrip. Default mode keeps loser bids sealed.
DEMO · FRONTEND SHOWCASE
sealtender.vercel.app

Four routes. Self-sovereign decryption. Live on Sepolia.

▸ sealtender.vercel.app/tenders Tenders Register PUBLIC · ENCRYPTED BID COUNTERS Tender #1 · Hospital Renovation · Ankara BoQ-2026-A14 · ISO/TS EN 14001 · 240 days · Value range ₺1.0M–₺1.5M 5 ENCRYPTED BIDS · Deadline 14d Tender #2 · Road Resurfacing · Izmir BoQ-2026-B07 · ISO 9001 · 90 days · Value range ₺2.5M–₺3.2M 3 ENCRYPTED BIDS · Deadline 7d Tender #3 · School Construction · Bursa BoQ-2026-C22 · ISO/TS EN 19650 · 365 days · Value range ₺4.0M–₺5.5M 7 ENCRYPTED BIDS · Deadline 21d Tender #4 · Bridge Inspection · Istanbul · DEMO BoQ-2026-D04 · ISO/TS EN 17640 · 60 days · Value range ₺0.6M–₺0.9M ▸ READY FOR LIVE PERMISSIONLESS-REVEAL DEMO 1 2 3 4
1
/tenders
Public register.
Encrypted bid counters · real BoQ references.
2
/tenders/[id]
Government-document tender page.
Escrow amount · oracle pricing · multi-bidder list.
3
/bids/[tenderId]
Self-sovereign user-decryption.
EIP-712 sign → KMS quorum re-encrypt → only their wallet decrypts.
4
/disputes
Citizen complaint mechanism.
3-of-5 ArbitrationSafe multi-sig review.
HOW IT'S MADE · STACK + NUMBERS

Eleven contracts. Three audit passes. Sourcify-verified.

ERC-7984
OPENZEPPELIN CONFIDENTIAL CONTRACTS · v0.4.0 · AUDITED PRIMITIVE
Bond amounts are ciphertexts on-chain. Only the depositor and the escrow hold the ACL to decrypt — even the procurement entity sees only handles.
SMART CONTRACTS
Solidity 0.8.27
cancun · viaIR
@fhevm/solidity 0.11.1 — FHE bindings, encrypted types, FHE.lt / FHE.select
@openzeppelin/confidential-contracts 0.4.0 — confidential ERC primitives
@zama-fhe/relayer-sdk 0.4.3 — KMS quorum re-encryption, attestations
FRONTEND
Next.js 16
gov-document theme
wagmi · ethers v6 — wallet + RPC layer
@zama-fhe/relayer-sdk/bundle — browser flavor for client-side encryption
Tailwind · EIP-712 user-decryption flow
INFRA
Sepolia testnet
Sourcify-verified
Chainlink + Pyth oracle fallback for material-price escalation
ERC-7984 confidential USDC wrapper for bond escrow rail
Zama TKMS — 9-of-13 threshold KMS, mainnet live since Dec 30, 2025
ARCHITECTURE
TenderFactory Tender BidEscrow DisputeManager KMS Quorum Frontend
11
CONTRACTS
329 / 329
TESTS PASSING
v7
CUSDC NATIVE · 4 AUDIT ITERATIONS
70+
ON-CHAIN DEMO TXS · SEPOLIA
SOURCIFY-VERIFIED
TRUST MODEL · 5 PILLARS

Each property is enforced cryptographically — and we're explicit about residual trust.

9-of-13 KMS THRESHOLD FHE.checkSignatures PERMISSIONLESS REVEAL + ESCAPE HATCH 3-of-5 ARBITRATIONSAFE PERMISSIONLESS claimRefund 01 PRIVACY 02 INTEGRITY 03 LIVENESS 04 DISPUTES 05 LIQUIDITY S
1
PRIVACY · BID VALUES STAY SEALED
Enforced by 9-of-13 KMS threshold · Residual trust: 5 colluding operators not enough.
2
INTEGRITY · NO FABRICATED CLEARTEXT
Enforced by FHE.checkSignatures binds plaintext to KMS attestation · Residual trust: we don't believe a fabricated cleartext.
3
LIVENESS · NO SINGLE OPERATOR CAN STALL
Enforced by permissionless reveal pipeline + forceCancelStuckReveal · Residual trust: none.
4
DISPUTES · COMMISSION, NOT OWNER
Enforced by 3-of-5 ArbitrationSafe (KIK + Idari Mahkeme + 2 sector reps + 1 NGO) · Residual trust: 4734 Madde 12 commission rule on chain.
5
LIQUIDITY · DEPOSITS NEVER FROZEN
Enforced by BidEscrow.claimRefund permissionless after Cancelled · Residual trust: none.
+
BOND AMOUNT CONFIDENTIALITY · ERC-7984 ACL CHAIN
Enforced by FHE.allowThis on deposit, recipient ACL via OZ ERC7984._update · Residual trust: none.
FUTURE WORK · ROADMAP

The path from Sepolia to production.

ETHEREUM MAINNET
v8 · DEPLOY TARGET
Sepolia → Ethereum mainnet (Zama TKMS live since Dec 30, 2025) Multi-sig tender owner (Ownable2Step) ANNOUNCE_TIMELOCK 48h · REVEAL_TIMELOCK 7d FHE.ge gate on encrypted bond ≥ requiredDeposit
AUDIT + ADOPTION
EXTERNAL DEPENDENCIES
Trail of Bits / Halborn formal audit EKAP / Vergi / SGK bridge (Türkiye adoption)
THANKS FOR WATCHING.

SealTender.

FHE-Encrypted Sealed-Bid Procurement.
Public procurement, on Ethereum.
CODE
github.com/Himess/sealtender
LIVE
sealtender.vercel.app
PERMISSIONLESS REVEAL · TX
sepolia.etherscan.io/
address/0xb01B…d5AA
ZAMA DEVELOPER PROGRAM S2 · SKILLS + DAPP TRACK · MAY 10, 2026
GitHub · @Himess
License · MIT
1 / 11
F = Present · ←/→ = Slide · Esc = Exit