Simple question but I couldn’t find the answer anywhere…

How to use the zksnarks capability of Ethereum in order to perform fully Anonymous sending of Eter from one wallet to an other one ?

1 Answer 1


A full answer would take a lot of time and space, and the general situation right now is that there's no easy way to use the zkSNARK precompiles.

The general outline are as follows:

  1. Construct a circuit using the libsnark gadget library
  2. Generate a proving and verifying key, and export the verifying key to a contract like Christian Reitwiessner's example
  3. Generate proofs using libsnark
  4. Send proofs to contract

This leaves out a lot of detail, but it's difficult to find a good example that walks through all of the steps.

Alternatively, you can try using ZoKrates which provides a high level language that compiles down to zkSNARKs for Ethereum. This makes it pretty easy to use, but the big issue is that the language is not nearly as expressive as the C++ used in libsnark, so building things like SHA3 or EC operations is impractical.

I would recommend trying ZoKrates first, then moving on to libsnark if you need more advanced features.

  • Isn’t ZoKrates only for smart contracts ? I don’t care about smart contract exeuction. I need to send Ether from A to B in way B cannot know the Ether comes from A. Jul 11, 2018 at 15:37
  • 2
    Pretty much everything in Ethereum is a smart contract. The motto is "Ethereum has no features", if you want a feature then build a smart contract. Jul 11, 2018 at 15:41
  • Yes, but actually, Ether is the native cryptocurrency of Ethereum. You can send Ether without getting a smart contract executed. As far I understand ZoKrates is only about anonymous smart contract execution : it cannot be used for sending Ether anonymously. Jul 11, 2018 at 15:49
  • 2
    My point is that there is no feature where you can send ether anonymously. If you want to send ETH anonymously you need to build a smart contract that acts as a proxy and handles all of the EC pairing operations Jul 11, 2018 at 15:55
  • Then you should explain in your answer that zksnarks is only for smart contracts and can be used to send Ether anonymously only through smart contracts… Not directly. Jul 12, 2018 at 2:37

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.