Why does a missing constraint in my ZK circuit survive five separate audits?
κΈ°ν
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.
μ μ€μνκ°
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.
κΈ°ν νκ° λ°©μ
κΈ°ν μ μλ μΈ‘μ κ°μ΄ μλ μ μ£Όκ΄μ νκ°μ λλ€. μΌλ§λ λΆνΈνμ§, μΌλ§λ μμ£Ό λ°μνλμ§, νμ¬ ν΄κ²°μ± μ΄ μΌλ§λ λΆμ‘±νμ§λ₯Ό λ°μν©λλ€. μ μκ° λμμλ‘ λ§λ€ κ°μΉκ° λ λλ€κ³ μκ°ν©λλ€.
λ°μνμ λ μΌλ§λ ν° λΆνΈμ μ΄λνλμ§.
μ€μ λ‘ μΌλ§λ μμ£Ό μ νκ² λλμ§.
νμ¬ μ΄λ₯Ό ν΄κ²°ν λ§ν λκ΅¬κ° μΌλ§λ λΆμ‘±νμ§.
ν΄κ²°ν κ°μΉ μλ λ λ§μ λ¬Έμ λ€
μμ‘μ 곡κ°νμ§ μκ³ μ§κΈ λ₯λ ₯μ μ¦λͺ ν μ μλ μ΄μ λ 무μμΌκΉ?
Blockchainμ²΄μΈ κ° μκΈ μ΄λμ΄ μ΄κΈ° μΈν°λ·λ³΄λ€ μμ§λ λ 무μμ΄ μ΄μ λ 무μμΌκΉ?
Blockchainκ·μ μ€μκ° μμ§λ PDF ν μ₯κ³Ό κΈ°λμ μμ‘΄νλ μ΄μ λ 무μμΌκΉ?
Blockchainμ μ ν 컀μ€ν°λλ μ¬μ ν ν€λ₯Ό μμ΄λ²λ¦¬κ±°λ νμ¬λ₯Ό μ λ’°νλ κ² μ¬μ΄μ μ νμΈκ°?
Blockchainμ€λ¬Ό μμ°μ ν ν°ννλ λ° μ μμ§λ μ€κ°μΈμ΄ μ΄ λͺ μ©μ΄λ νμν κΉμ?
Blockchainμ€ν μ΄λΈμ½μΈμ μ μΈν°λ· μμ΄ κ²°μ ν μ μμκΉμ?