uPort身份是什么

少平   |     |   548 次阅读

在这篇文章中我会尝试全面讲诉作为一个开发者需要了解的关于uPort身份相关内容。

在最基本的层面上,uPort身份是一个Ethereum地址。 所以如果您在与终端用户交互时所需要的只是他们的由uPort提供的Ethereum地址。 然而,uPort还允许应用程序及其用户独自交换信息,当然以以太坊区块链的安全性为依托。

更多的,uPort身份是一个人(或应用程序,组织,设备或机器人)的完整数字表示,能够on-chain或者off-chain时与智能合同和其他uPort身份进行交互。 这种在不依赖中心化身份提供者的情况下对自己(用户或app等)进行标识的能力使得uPort成为自主权身份的平台。

uPort真正的威力在于它让你的以太坊app更加接近你的终端用户。uPort允许的交互是一些简单的像在Gnosisprediction 市场中购买股票的区块链事物,还有包括off-chain交互像与其他的uPort用户或者app进行私人身份证明。如果你的用户不使用(uPort),要完成这些可能的事情将需要复杂的密码管理。

持久的身份

在传统的公共密钥加密系统中,公钥代表身份。 身份所有权由拥有控制公钥的私钥决定。 这种公共/私人密钥模型在加密身份系统中已经使用了许多多年并拥有许多优点。 验证签名不需要很多基础架构 - 你只需访问公钥。

这种传统模式有一些核心问题。 如果你丢失私钥(丢失,盗窃或其他方式),你将失去身份。 此外,如果没有额外的中心化基础设施,也不能直接撤销密钥,也不能将身份的控制安全地转移给其他人。 这些技术上的限制阻碍了人们在加密身份系统上的尝试。

以太坊智能合约为我们提供了一个加密密钥管理问题的通用解决方案,为设置永久身份提供了基础。 可以通过智能合同或传统公共密钥的地址来表示以太坊身份。 由于智能合同可以由其他智能合同来控制,因此可以对其进行编程,以支持各种私钥找回方法。 由以太坊提供的灵活控制逻辑使加密身份变得既友好又有意义。

uPort身份是一个非常简单的智能合同,由可替换的控制器合同控制,其中包含密钥恢复和访问控制逻辑。 控制器合同又由安全地存储在智能手机上的密钥控制。

在未来的文章中,我们将详细解释这个架构的工作原理以及我们所做出的设计选择。

uPort注册表:共享的事实来源

uPort注册表是由所有uPort身份共享的一个智能合同,提供脱机数据共享和身份验证所需的基础架构。 最基础的,它允许身份做出关于他们是谁的简单陈述。

如果你 在uPort移动应用程序中创建uPort身份,你可以将有关自己的信息设置为公开的个人资料。 默认情况下,你 的名称,图像,横幅图像和描述都设置为public。 在应用程序 将来的版本中,你将能够控制公开的个人资料中的信息,但现在你可以将其视为基于Ethereum版的公开Facebook个人资料。 这是你对世界的公开声明:你是谁?

uPort应用程序与uPort注册表工作的方式非常简单:

  • 它根据http://schema.orgJSON配置文件对象约定创建一个
  • 配置文件JSON已上传到IPFS
  • 最后,它在注册表中创建一个setAttributes事务,它将生成的IPFS哈希值设置为您的公共声明

虽然uPort注册表是一个共享合同,但是每个身份在这个单一的真实来源中存储的数据只能由其uPort身份本身控制,这使得它不可能检查或屏蔽。 这个简单的控制方式是uPort身份自主权概念的关键。

需要注意的是uPort注册表合约是on-chain对off-chain数据的引用。数据会被上传到IPFS而不是存储在区块链上,只有IPFS哈希值会被存储在链上。

当前版本的uPort注册表部署在Ropsten 网络的0xb9C1598e24650437a3055F7f66AC1820c419a679上。可以查看其使用的简单solidity源代码

例如,我的uPort身份

我的uPort身份是0xceaaac60d36d2cb52ac727a93ad5ea301afc89dc。可以使用你的uPort 应用把我添加为联系人。你也可以在区块链浏览器中查看我的地址

{"@context":"http://schema.org","@type":"Person","name":"Pelle Brændgaard","banner":{"@type":"ImageObject","name":"banner","contentUrl":"/ipfs/QmNXQGZ2kwAqM24pqiibHqrg2JRSUdpnfZohhKjFpM5CNe"},"description":"Lead Engineer on Uport","publicKey":"0x04613bb3a4874d27032618f020614c21cbe4c4e4781687525f6674089f9bd3d6c7f6eb13569053d31715a3ba32e0b791b97922af6387f087d6b5548c06944ab062","image":{"@type":"ImageObject","name":"avatar","contentUrl":"/ipfs/QmZ2F9z9A3cCKe9AREu5XnFE9otKbo4Ptc46A4m3AgY1i9"}}

如果你有uPort app,你可以轻松的在Identity Page > Settings > Developer Tools中查看你拥有的公开信息

在链上和脱链使用

在一个纯粹的Ethereum世界里,所有的应用程序和数据都完全在整个blockchain上,我们不需要uPort注册表作为一个共享事实(真实数据)来源。 相反,事实只会从公开的块中读出来。 然而,实际上即使是最简单的dApp UX,由于需要满足数据隐私约束,也具有很大的off-chain数据需求(译者注:隐私数据不存储在链上)。 如果应用程序UX需要获取关于用户地址和余额的任何有关用户的信息,开发人员需要依赖于uPort注册表,Facebook Connect或其自己的集中式用户数据库。

有更多的复杂场景需要在用户和应用之间交换私人信息,如年收入或国家ID号码。 大多数人不会很乐意将这些信息存储在一个公开的区块上,因此我们需要一种安全分享它的方法。

一个去中心的,链上到连下的世界

正如我们前面提到的,在以太坊集群中一个聪明的合同身份几乎可以做任何基于密钥的身份可以做的事情,甚至更多。但不幸的是,它不能做的一件事是像私钥 一样签名任意的脱链数据。因此,我们需要一种方式让uPort注册表将任意的脱链数据签名委托给一个关键字。

uPort注册表项中的publicKey字段用于此目的。 publicKey允许我的个人身份将签名权限委托给另一个设备,在也就是我的uPort移动应用程序。如果我丢失或升级我的设备,还可以更改此密钥(publicKey )。

uPort Connect javascript库透明地使用uPort的这种分散公共密钥注册表功能,以便通过uPort注册表验证过的JWT(JSON Web令牌)安全地在你的应用程序和uPort之间进行通信和共享信息。

在未来的文章中,我们将讨论如何使用uPort Connect为你的用户开发其他的off-chain功能。

Uport使你的Ethereum应用程序人性化

在构建你的Ethereum应用程序时支持uPort最重要的原因应该是uPort可以人性化区块链用户的体验。 用户不再只是使用抽象的十六进制编码地址与其他十六进制地址进行交互,而是真正的人,他们现在能够充分表达自己,与其他真正的人,应用程序,设备和业务进行交互。

另外,uPort移动应用和库的组合使将新的非技术用户带入你的应用程序变得非常简单。 我们觉得这将是Ethereum应用程序扩展到大众使用的驱动力。

如果你还没有这样做,请注册uPort封闭的Alpha,以便早日使用我们的应用程序。 接下来,看看我们的uPort开发人员网站,并加入uPort Gitter通道。


原文:https://medium.com/uport/what-is-a-uport-identity-b790b065809c

译文转载自:http://www.adblockchain.cn/index.php/archives/221/ , 获得译者许可。

 
0 人喜欢