2

Can Blockchain miners see confidential transaction information? Since they have the public key, they decrypt the transaction for the purpose of verification. So if I am mining in Ethereum, I can tweak the node code to log the transaction details on my hard disk. Is Blockchain not suitable where confidentiality is important?

  • What do you mean by "Since they have the public key, they decrypt the transaction" ? Normally, by public key we can encrypt and not decrypt. – Questioner Aug 29 '18 at 11:29
2

Ethereum transactions are not encrypted, so no decryption is necessary. Logging all transactions to disk is part of being a node (miner or any full node), so no tweaking is necessary. You can see every historic transaction in the clear at sites like Etherscan.

So, as it stands, there is no transaction confidentiality on the public Ethereum blockchain.

This may change in future if/when ZK Snark technology gets implemented. Variants of Ethereum exist (such as Quorum) with mechanisms for private transactions, but these don't transfer over to the public Ethereum blockchain.

  • If the Information is not encrypted, then why does the system/framework have private and public keys? Do they have a different purpose than hiding the Information? – Ashish Sinha Aug 28 '17 at 17:22
  • Yes, the keys are used for signing the transactions and then verifying the signatures, which is a different process from encrypting the transactions (signing is basically the encryption of the hash of the transaction). – benjaminion Aug 28 '17 at 17:43
2

Anything that is broadcast onto the network, which includes all transactions, is public to all nodes. The only question is whether that information is in cleartext or not. You haven't defined "confidential transaction information". If you mean that a transaction has taken place at all (which some people might consider to be confidential), then no. If you mean things like the recipient or amount, the introduction of zkSNARKs in Metropolis are the beginning of adding privacy for those. If using a custom token (not a currently ERC-compliant one), then zkSNARKs should enable that kind of privacy to be added to the token.

If you mean some other data you want in your transaction, specific to a contract you are writing, you could employ standard encryption techniques (with enough gas) or even homomorphic encryption if necessary. This can be done at present.

Obfuscation techniques like tumbling may also satisfy your needs.

  • Hi, thanks. I wanted to know whether the data assigned to the variables of the Smart Contract can be read by other nodes/miners of the Ethereum public network. – Ashish Sinha Aug 28 '17 at 5:55
  • Yes. Everything is public (otherwise, nodes can't reach a consensus!) Your only ways of keeping information private from nodes (AFAIK) is to not put it in the blockchain or to encrypt it (using "normal" encryption or homomorphic encryption so the nodes can still process the data). But these are both "hiding in plain sight" (to abuse the normal meaning of the phrase). – lungj Aug 28 '17 at 7:23
  • If the Information is not encrypted, then why does the system/framework have private and public keys? Do they have a different purpose than hiding the Information? – Ashish Sinha Aug 28 '17 at 17:22
  • They are primarily used for signing transactions. You can encrypt a message using another account's public key, but that message is only readable to people who know that account's private key. – lungj Aug 28 '17 at 18:52
0

Just like the others explained on this thread, there's no way to hide transactions on Ethereum using the primitive tools available out there.

However, two years after this question has been posted, the AZTEC protocol has been launched and I published How to Code Your Own Confidential Token on Ethereum - an article that describes how to link a normal ERC20 token to a confidential version.

Disclaimer: I work at AZTEC as a full-time blockchain engineer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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