Withdrawal public input order
The current withdrawal proof uses this public input order:Bound fields
The public input order binds:- accepted Merkle root
- withdrawal nullifier
- output commitment
- public destination
- gross withdrawal amount
- fee
- MegaETH chain ID
- verifying contract context
- proof context hash
- encrypted output note hash
Private proof material
Never publish:- raw witnesses
- note secrets
- recovery secrets
- private inputs
- decrypted note payloads
- proof-generation traces
- unredacted calldata dumps tied to a user
Artifact changes
Circuit changes require new artifact bindings:- circuit source hash
- public input order
- verification key hash
- Solidity verifier bytecode hash
- deployed verifier address
- WASM and zkey hashes
- trusted setup provenance
- negative tests for public input mutation