4.1 Role of Zero-Knowledge in Abyss
Zero-knowledge proofs are the core enforcement mechanism of Abyss. They allow users to demonstrate that a withdrawal or state transition is valid without revealing the underlying secrets that establish ownership or linkage to prior deposits. In Abyss, zero-knowledge does not sit at the periphery as an optimization. It is the protocol’s primary authorization system. Formally, every withdrawal from the anonymity pool must be accompanied by a proof that asserts the existence of a prior valid deposit, the possession of the corresponding secret, and the non-use of that deposit’s nullifier. The verifier contract checks this proof deterministically, without learning which deposit is being spent or how many withdrawals have previously occurred.4.2 Proof System Choice
Abyss uses succinct non-interactive arguments of knowledge (ZK-SNARKs) due to their compact proof size and constant-time verification characteristics. These properties are critical for EVM compatibility, where gas costs impose strict constraints on computation. Proof generation occurs off-chain, while verification is enforced on-chain. The protocol assumes standard cryptographic hardness assumptions, including:- Knowledge of exponent assumptions
- Collision resistance of hash functions
- Soundness and completeness of the underlying SNARK construction
4.3 Statement, Witness, and Public Inputs
Each proof in Abyss asserts a statement of the following form:- The secret key
- Internal accounting data for remaining balance
- Merkle path data proving inclusion in the pool
- The Merkle root of the anonymity pool
- The nullifier hash
- The withdrawal amount
- The recipient address
4.4 Merkle Tree Commitments
Deposits are represented as leaves in a Merkle tree. The tree root represents the canonical state of the anonymity pool at a given time. Users include Merkle proofs inside their ZK circuit to show membership without revealing position. Merkle roots are periodically updated on-chain:4.5 Soundness and Finality
Once a proof verifies:- The withdrawal is final
- The nullifier is permanently marked as spent
- No further linkage is possible on-chain

