处理以太坊 DApp 中的用户资料

Posted

技术标签:

【中文标题】处理以太坊 DApp 中的用户资料【英文标题】:Handling user profiles in Ethereum DApps 【发布时间】:2017-07-20 02:12:40 【问题描述】:

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

例如,用户 A 对使用 DApp 感兴趣,因此提供了他或她的电子邮件、姓名和头像。然后与 DApp 的任何后续交互,例如评论或帖子,都会将此用户链接到 IPFS 中的相应用户数据。

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

(P.S. 我来自传统的网络/移动应用程序世界,所以我刚刚习惯于使用智能合约进行建模。所以如果这是一个简单或结构不正确的问题,我提前道歉。)

【问题讨论】:

【参考方案1】:

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

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

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

用户注册

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

用户验证

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

【讨论】:

感谢您的好评!你澄清了我相当多的困惑。我将通过您的方法使用 IPFS 对此进行建模。我想我不能完全理解的是用户被绑定到一个可以通过一个特殊的 DApp 浏览器访问的以太坊帐户的想法。因此,本质上,为了让用户与任何 DApp 交互,他们需要在本地安装雾,这需要 DApp 成为客户端应用程序。或者,如果它是一个网站,他们需要安装 MetaMask,以便可以使用 web3 来检索他们的帐户。 一流的响应我不知道这是如何工作的谢谢!! 是否有可能恶意用户注入他自己的假对象 web3(使用浏览器中的 javascript 控制台)并将帐户 [0] 地址设置为其他人的地址,并欺骗“零点击登录”系统来访问这样的 DApp?明明他不能交易,但说不定还能看到平时看不到的东西?

以上是关于处理以太坊 DApp 中的用户资料的主要内容,如果未能解决你的问题,请参考以下文章

以太坊DApp开发实战基础

以太坊DApp开发实战基础

零知识证明DApp开发实践身份证明/以太坊

以太坊连载(25):Dapp及相关开发工具介绍

区块链 Hello World -- 基于以太坊的投票Dapp

以太坊dapp智能合约ERC20的生态教程