Lifecycle
What becomes public
Observers can see the nullifier, pool, transaction, destination, gross amount, fee, sender, and timing. The nullifier reveals no child secret; the surrounding transaction remains public.Double-spend rule
The client checks spent state before proving to avoid wasted work, then checks again after proving. The contract performs the final check and records the nullifier atomically with payment. The sibling child has a different nullifier and remains available until that nullifier is spent.When submission is unclear
Do not assume a timeout means the child is still available. Check the original transaction, its receipt, the pool’s nullifier mapping, and the matchingWithdrawal event. Retry only after a definite failure and an unspent pool result.
See Choose a submission path for the user flow.