Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handling user profiles in Ethereum DApps

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.)

like image 403
Dondrey Taylor Avatar asked Feb 28 '17 22:02

Dondrey Taylor


People also ask

Do dApps need backend?

A dapp has its backend code running on a decentralized peer-to-peer network. Contrast this with an app where the backend code is running on centralized servers. A dapp can have frontend code and user interfaces written in any language (just like an app) to make calls to its backend.

What can you use to interact with dApp?

MetaMask is a chrome extension that enables you to easily interact with decentralized applications (dApps). It serves as both a cryptocurrency wallet and an access point for dApp interaction.

Does dApps need database?

All Ethereum-based decentralized applications (DApps) need to store non-financial data and search through their documents. Ties. DB is the first public database for decentralized structured data storage and allows advanced search and documents modification.


1 Answers

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
like image 168
Samuel Hawksby-Robinson Avatar answered Oct 16 '22 16:10

Samuel Hawksby-Robinson