[Ethereum] Storing private data on the ethereum blockchain

dapp-designdapp-developmentdappsethereum-wallet-dappSecurity

I plan to make an app utilising Ethereum that will store private data about a user. Eventually, I want this data to be accessible by selected users.

I have seen conflicting answers & discussions on various threads on SE, reddit, and, other articles about the best way to approach this. Though here are some options I have been considering:

  1. I could encrypt with a key, and add to the blockchain, but, isn't this the equivalent of a database being hacked? The data is, of course, encrypted but it is available to the public (Vitalik suggests it is low-tech Could someone suggest why this is not a good method?). In addition, this could get expensive with a lot of transactions.

  2. Use Quorum, not 100% sure if it's suitable for my use case.

  3. Zcash may offer a private data solution (haven't fully looked into it), though I would rather keep to Ethereum if possible, may have a longer life.

  4. I could Take a similar route as lemon email: message transaction data on ethereum, encrypted data on IPFS, frontend on IPFS.

I feel that 4 (lemon email) is the best option, though, kind of feels like cheating because the data isn't then on the blockchain.

Are there any other options I should consider? Is there a better way to implement this?

Best Answer

I don't think solution number 4 is cheating. The blockchain is more of a consensus engine and not exactly a database, if you store all your data on the public blockchain it'll be pretty expensive too. Storing the bulk of the data on ipfs or swarm then just the hash in the blockchain is becoming a standard solution for Dapps to avoid high costs

Related Topic