I want to create a vault program to store spl token which transferred by A to B. What is the best way to achieve anonymity of B when the token remains in the vault? If B's key is encrypted, how can B verifies the balance he/she has in the vault. And, upon B transfers the balance to his/her wallet I don't want anyone to be able to trace the link between B and the transfer transactions made by A to B such as date and time. Can all these be possible with Zero-Knowledge Proof?

1 Answer 1


Take a read through here it might be what you’re looking for.

Note that while the token22 program is deployed on mainnet, the confidential extension is not usable until QUIC is rolled out on all validators. The current transaction size limits are too small.

You can play around with it locally though (more info).

  • My understanding is token22 only supports confidential rather than anonymity. It only hide the amount of balance. But what I want to hide recipient. Jul 30, 2022 at 2:35
  • In that case take a look here: github.com/Lightprotocol/light-protocol-program
    – zfedoran
    Jul 30, 2022 at 3:21
  • 1
    while quic is required to allow larger transactions, which are required for zktoken, large transactions will not be enabled when quic first goes live
    – trent.sol
    Jul 30, 2022 at 3:52
  • Thanks for those info. I have an existing wallet app and want to allow A to mint their own token. Hence, SDK for Zero-Knowledge Proof is what I am looking for. Jul 30, 2022 at 6:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.