I am playing around with a system to implement private asset transfers (inspired by zCash, etc.). Such a system inevitably requires the contract to store a list of 256-bit hashes in order to prevent double spending -- each settled transaction adds a unique hash to the list, and checking against double spending requires checking that the new hash does not already exist.
Is there a recommendation for an appropriate storage type? Is there a sample contract that does anything like this?
For reference, a Solidity smart contract on Ethereum makes use of the construct mapping(bytes32 => bool) public nullifierHashes; .
Thanks in advance for any tips.