To support the user privacy, is it possible to hide the sender address or receiver address of transactions by "zk-SNARK" or "Bulletproofs" ? Or we’ll be able only to hide the value that is mapped to an address ?
Assume the following mapping:
mapping (address => bytes32) userData;
Normally, using non-interactive zero-knowledge proofs (like "zk-SNARK" or "Bulletproofs"), we are able to hide the value that is mapped to an address (i.e.
userData) as follows:
mapping (address => bytes32) userDataHash;
And then by zero-knowledge proofs, we can prove that if
userDataHash meets a condition? For example, prove that an encrypted number is in a given range, without revealing anything else about the number.
However, assume that instead of
Data, we want to hide sender of transaction (i.e.
address). We want to keep confidentiality of the user/sender himself, instead of their data.
Is it possible ? And if yes, How ?