A withdrawal exits to a public MegaETH recipient. The recipient, amount, fee, timing, nullifier, and relayer request metadata can be observed.

Before withdrawing

Check:
  • the destination address is correct
  • the destination is not a reused or identifying address unless that is intentional
  • the chain ID is 4326
  • the pool and withdrawal verifier match public-artifacts/current.json
  • the withdrawal selector is 0x678d8506
  • the fee is within the documented public policy
  • the proof uses the current artifact hashes
Withdrawing to a known wallet can link the private balance to that wallet. Relayer submission does not hide the recipient.

Relayer-only submission

The current public UI uses the pinned relayer endpoint for withdrawal submission. It does not expose a direct wallet transaction submission fallback in the production withdrawal flow. Relayer submission still produces a public withdrawal to the selected recipient. Treat the relayer request as value-moving: verify the chain, pool, selector, verifier, fee, destination, artifact hashes, and deadline before retrying.

Failure cases

Common failure causes:
  • stale Merkle root
  • already-spent nullifier
  • wrong chain ID
  • wrong pool
  • wrong verifier or public input order
  • mismatched artifact hashes
  • unsupported selector
  • stale relayer request deadline
If any value is unclear, stop and verify rather than retrying blindly.