在以太坊 DApps 中处理用户配置文件

Handling user profiles in Ethereum DApps

我正在创建以太坊 DApp。 DApp 由具有关联数据(如电子邮件、姓名和个人资料图片)的用户组成。我想将用户的内容作为 JSON 对象存储在 IPFS 中,并使用 IPFS 哈希在链上引用它。我怎样才能将此数据与特定用户相关联?从某种意义上说,与 DApp 的后续交互将用户与存储在 IPFS 中的数据联系起来。这是使用用户帐户哈希和某种密码完成的吗?

例如,用户 A 对使用 DApp 感兴趣,因此提供了他或她的电子邮件、姓名和个人资料图片。然后与 DApp 的任何后续交互,如评论或 post 都会 link 该用户到 IPFS 中的相应用户数据。

如果您对这种用户建模方式提出任何建议或调整,我们将不胜感激。谢谢!

(P.S。我来自传统的 web/mobile 应用程序世界,所以我只是习惯了使用智能合约对事物进行建模。所以如果这是一个简单的或错误的,我提前道歉-结构化问题。)

使用像以太坊这样的平台的好处之一是您可以构建一个零点击登录。如果我们确定用户的 web3.eth.accounts[0] 是用户控制该帐户地址的私钥的证据,那么您将始终知道该用户是有效的。

如果你想像使用数据库一样使用 IPFS,我建议的方法是:

请注意,对于大多数去中心化系统,很多操作都发生在客户端。

用户注册

  • 用户有以太坊账户。
  • 注册时,用户数据被收集到一个 JSON 对象中
  • 文件已创建,将JSON对象写入文件。
  • 将文件传递到 IPFS
  • 获取文件哈希(基本上就是它的 IPFS 位置)
  • 将 IPFS 哈希存储在以太坊合约中,该合约将用户的以太坊帐户与 IPFS 文件哈希相关联。

用户验证

  • 用户访问网站
  • web3js 获取活跃的以太坊账户
  • 从用户合约中读取以查找关联的 IPFS 哈希
  • 从 IPFS 获取文件
  • 读取JSON对象
  • 从 JSON
  • 中提取数据
  • 向用户显示数据