Later, when the user decides to make a withdrawal, they provide proof via the same secret via an unspent commitment from the smart contract’s list of deposits. zkSNARKs technology allows this to happen without revealing which exact deposit corresponds to this secret. The smart contract checks the proof, and transfers the originally deposited funds to the address specified for withdrawal. An external observer will be unable to determine which deposit this withdrawal came from.