A method for private and auditable transaction protocol using smart contracts on blockchains. The method includes receiving a deposit of tokenized currency from a participant, maintaining a state for each participant, and receiving a transaction for a
payment comprising a commitment to a value, an audit-token, a proof of balance, and a proof of assets. The
smart contract verifies the proof of assets and balance, and executes the transaction upon successful
verification. The method also includes receiving a cash-out transaction, verifying the zero-knowledge proof, updating the state, and transferring the balance to the participant's account. Additionally, the method involves receiving a commitment to a value of a
payment transaction, an audit-token, a consistency proof, and an issuer-token, verifying the commitment, and transferring the value from the payor to the payee by updating their states.