Anonymous Zether solidity contracts developed by J.P. Morgan and implemented in pure Javascript.
Whisper the balance b
on chain by encrypting b
using the shared secret.
Idea suggestion by Zhou Zhiyao @zzy96
Given:
- balance of transaction
- index of the receiver
- public key of the receiver
- secret of the receiver
- public view key
Computing the proof hiding the balance for receiver
Retrieving the secret balance from the sender
- index of the sender
- secret of the sender\
Computing the proof hiding the balance for receiver
Retrieving the secret balance from the sender
Proving to someone that the transaction sent amount b
to the receiver i
without revealing who the sender was.
Idea suggestion by @benediamond
A proof (c,s)
is computed as follows:
- balance of transaction
- index of the receiver
- public view key
- cipher text
Prover - generating proof (c, s)
- Claim
Given r
such
Choosing a random element k
in F_q
and
- computing c
- computing s
Verifier - verify proof (c, s)
- computing K_r
- computing Y_r
- equation verification
It enables Zether to be used as a native currency to pay the gas in Zether to the miners accepting it as gas.
- miner fee
- amount
- cipher text
- Homomorphically subtract b
and gas
from the sender
- Homomorphically add b
to the receiver
- Homomorphically add 0
to the decoys
- Add gas
to the miner. Homomorphically add can be performed as well
- J.P. Morgan codebase of Zether https://github.com/jpmorganchase/anonymous-zether
- J.P. Morgan - Anonymous Zether Proposal and Tehnical Report https://github.com/jpmorganchase/anonymous-zether/blob/master/docs/AnonZether.pdf
- J.P. Morgan Additional features on Zether https://github.com/jpmorganchase/anonymous-zether/blob/master/docs/AnonZether.pdf
- Zether: Towards Privacy in a Smart Contract World https://crypto.stanford.edu/~buenz/papers/zether.pdf
We want to express our gratitude for the implementation and the help offered us over slack and github.
Main contributors
Benjamin Diamond @benediamond
J.P. Morgan @jpmorganchase
Zhou Zhiyao @zzy96 for the Whisper Protocol