I'm a product manager not a Blockchain coder, looking for a 2nd opinion and some general good practice advice. I have one question in bold, the rest is background.
Background:
- We have an app in development that will write user's information into a Smart Contract on the ETH blockchain.
- The SC's we deploy contain information only, no Ether.
- Each user has their own SC which stores only that users specific information.
- Our App allows the user to edit and update this information and then upload the changes, encrypted, into their own SC.
- The user's SC address is 'tied' (sorry for lack of correct terminology) to their own Ether wallet.
- I see on Etherscan (Ropsten) there is a Contract Creator address which is a constant for all the SC's our App creates.
- I'm assuming that the contract creator address is unique to us, it is code we've created and as such it deploys only our Smart Contracts on behalf of our Application.
- I was hoping that each SC address would be known only to its owner and us only. Now I see that anyone can access this information.
My Concerns:
Should there be an exploitable flaw in our code then a bad actor has a list of contract addresses to attack.
The worst-case risk to us is that a bad-actor could access each users data in an unencrypted state if a flaw exists in our publicly accessible code.
The Bad-Actor then uses that flaw and the list of smart contract addresses they can get from Etherscan to download multiple users data.
My Question
Are these realistic concerns?
- If so what general directions can we look at to mitigate these risks
- If so is there a way I can obscure the Creator address in Etherscan without other negative consequences
The developers are outsourced 3rd parties and excellent people to work with. But Im looking for an alternate opinion than just theirs at this time as a double check.
Apologies if the information Ive provided is confusing or incomplete.
Thanks in advance for your time.