Nullifiers
The nullifier is a unique value calculated on the transaction input account. It is included in the public transaction portion. The nullifier depends on the input account and the intermediate key :
where and is a hash functions
There is an archive on the contract side which holds nullifiers. In the case of account double-spending the nullifiers for the same accounts will equal one another. In this case the contract will reject a second transaction with the repeated nullifier value.