Skip to content
Blockchain

Why does a missing constraint in my ZK circuit survive five separate audits?

84

Szansa

ZK circuits can contain constraints that are syntactically valid but logically incomplete, leaving the witness underconstrained so an attacker can construct a fake proof the verifier accepts. The Zcash Orchard circuit had exactly this bug, disclosed in June 2026 after sitting undetected for four years through multiple professional audits. Existing static analysis tools catch simple cases but cannot prove completeness over a full production circuit. Fuzzing finds individual bugs but generates no soundness guarantee. No workflow in standard use today can tell you, before deployment, that your circuit has no underconstrained witness.

Dlaczego to ważne

A single missing constraint is enough to let an attacker mint value from nothing, and no standard pre-deployment workflow gives a completeness guarantee over a full production circuit.

Jak oceniam szansę

Wskaźnik Szansy to mój własny odczyt, a nie pomiar: jak bardzo boli, jak często daje się we znaki i jak niewiele istnieje dziś, by to rozwiązać. Wyższy wynik oznacza, że uważam problem za bardziej warty zbudowania.

Dotkliwość9/10

Ile bólu sprawia, gdy się pojawia.

Częstotliwość6/10

Jak często ludzie faktycznie na to trafiają.

Białe znaki8/10

Jak mało dobrych narzędzi istnieje dla tego dziś.

Więcej problemów wartych rozwiązania

Blockchain

Dlaczego nie mogę udowodnić swojej wypłacalności bez ujawniania salda?

Blockchain

Dlaczego przenoszenie pieniędzy między łańcuchami wciąż budzi więcej obaw niż wczesny internet?

Blockchain

Dlaczego zgodność z przepisami wciąż oznacza PDF i modlitwę?

Blockchain

Dlaczego samodzielne przechowywanie aktywów wciąż sprowadza się do wyboru między utratą kluczy a zaufaniem do firmy?

Blockchain

Dlaczego tokenizacja realnego aktywa nadal wymaga dziesięciu pośredników?

Blockchain

Stablecoins run on blockchains, and blockchains have three hard requirements that all need internet: **1. Broadcasting the transaction** A payment is just a signed message. To actually move funds, that message must be submitted to the network so nodes can receive it. **2. Consensus and finality** Validators/miners must include the transaction in a block and reach agreement that it happened. Without connectivity, no block, no settlement. **3. Verifying the sender's balance** The current state of who owns what lives on the network. Without querying it, you can't confirm the sender hasn't already spent those funds elsewhere -- the classic double-spend problem. --- **Why this is harder than it looks** Cash works offline because a physical note is self-proving and self-transferring. A stablecoin balance isn't held in a device -- it's an entry in a global ledger. "Paying" offline would mean handing over a signed promise, but the recipient has no way to know that promise isn't already spent until they reconnect. --- **Partial workarounds being explored** - **Hardware security chips** (used in some CBDC pilots, e.g. the ECB's digital euro research) -- a tamper-resistant chip holds a balance offline; the chip enforces spend limits and prevents double-spend locally, then settles when reconnected - **Lightning Network** -- payment channels allow off-chain transfers, but channel setup/teardown still needs the base layer - **Signed IOUs** -- parties can exchange cryptographic promises offline and settle later, but this reintroduces counterparty trust None of these are production stablecoin rails today. For now, no internet means no confirmed stablecoin payment.