问题
I'm in the process of creating an Ethereum DApp. The DApp consists of users who have associated data like email, name, and a profile picture. I would like to store the contents of the user within IPFS as a JSON object and reference this on chain using the IPFS hash. How could I go about associating this data with a particular user? In the sense, that subsequent interactions with the DApp connect the user with the data stored in IPFS. Is this done using the users account hash with a password of some sort?
For example, user A is interested in using the DApp and so, provides his or her email, name, and profile picture. Then any subsequent interaction with the DApp, like a comment or post would link this user to the respective user data in IPFS.
Any suggestions or adjustments to this way of modeling users would be greatly appreciated. Thanks!
(P.S. I come from the traditional web/mobile app world so I'm just getting accustomed to modeling things using smart contracts. So I apologize in advance if this is a simple or ill-structured question.)
回答1:
One of the beauties of using a platform like Ethereum is that you can build a ZERO click login. If we establish that the user's web3.eth.accounts[0]
is proof that the user controls the private key of that account's address, then you will always know that the user is valid.
If you want to use IPFS like a database, my suggested approach would be this:
Note that with most decentralised systems a lot of the action happens on the client side.
User Signup
- Users have Ethereum accounts.
- On sign up user data is collected into a JSON object
- A file is created, write JSON object to file.
- Pass file to IPFS
- Get file hash (which is basically its IPFS location)
- Store the IPFS hash in an Ethereum contract that associates the user's Ethereum account with the IPFS file hash.
User Validation
- User visits the website
- web3js gets the active Ethereum account
- Read from the user contract to find the associated IPFS hash
- Get file from IPFS
- Read the JSON object
- Extract the data from the JSON
- Display data to user
来源:https://stackoverflow.com/questions/42520069/handling-user-profiles-in-ethereum-dapps