How ZAK Chain stops double spending

Every wallet has a nonce that starts at zero. Each transfer must carry the next nonce and be signed by the sender's private key. When a node replays the whole chain, it checks three things for every transfer: the signature is valid, the sender has enough ZAK, and the nonce is exactly the next one expected.

Send the same transfer twice and the second one has a stale nonce, so it is rejected. Try to spend more than you have and the balance check fails. Change an old block to rewrite history and its hash no longer matches, breaking the link to every block after it.

You can try all three attacks on a toy ledger on the How it works page.