uPort的学习记录
Posted anapodoton
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uPort的学习记录相关的知识,希望对你有一定的参考价值。
目录
前言
在最基本的层面上,uPort标识是以太坊地址。因此,如果与最终用户交互时所需的全部是他们的以太坊地址,则由uPort提供。但是,uPort还允许应用程序及其用户私下交换信息,同时仍受以太坊区块链安全性的支持。
更多的,uPort身份是一个人(或应用程序,组织,设备或机器人)的完整数字表示,能够on-chain或者off-chain时与智能合同和其他uPort身份进行交互。 这种在不依赖中心化身份提供者的情况下对自己(用户或app等)进行标识的能力使得uPort成为自主权身份的平台。
uPort真正的威力在于它让你的以太坊app更加接近你的终端用户。uPort允许的交互是一些简单的像在Gnosis预测市场中购买股票的区块链交易,还有包括off-chain交互像与其他的uPort用户或者app进行私人身份证明。如果你的用户不使用(uPort),要完成这些可能的事情将需要复杂的密码管理。
1.一个持久的身份
在传统的公共密钥加密系统中,公钥代表身份。身份所有权由拥有控制公钥的私钥决定。这种公共/私人密钥模型在加密身份系统中已经使用了许多多年并拥有许多优点。 验证签名不需要很多基础架构 - 你只需访问公钥。
这种传统模式有一些核心问题。如果你丢失私钥(丢失,盗窃或其他方式),你将失去身份。此外,如果没有额外的中心化基础设施,也不能直接撤销密钥,也不能将身份的控制安全地转移给其他人。这些技术上的限制阻碍了人们在加密身份系统上的尝试。
以太坊智能合约为我们提供了一个加密密钥管理问题的通用解决方案,为设置永久身份提供了基础。可以通过智能合约或传统公共密钥的地址来表示以太坊身份。 由于智能合约可以由其他智能合约来控制,因此可以对其进行编程,以支持各种私钥找回方法。由以太坊提供的灵活控制逻辑使加密身份变得既友好又有意义。
uPort身份是一个非常简单的智能合约,由可替换的控制器合约控制,其中包含密钥恢复和访问控制逻辑。 控制器合约又由安全地存储在智能手机上的密钥控制。
在未来的文章中,我们将详细解释这个架构的工作原理以及我们所做出的设计选择。
2.uPort注册表:共享的事实来源
uPort注册表是由所有uPort身份共享的一个智能合同,提供脱机数据共享和身份验证所需的基础架构。 最基础的,它允许身份做出关于他们是谁的简单陈述。
如果你 在uPort移动应用程序中创建uPort身份,你可以将有关自己的信息设置为公开的个人资料。默认情况下,你的名称,图像,横幅图像和描述都设置为public。 在应用程序将来的版本中,你将能够控制公开的个人资料中的信息,但现在你可以将其视为基于Ethereum版的公开Facebook个人资料。这是你对世界的公开声明:你是谁?
uPort应用程序与uPort注册表工作的方式非常简单:
- 它根据http://schema.org约定创建一个JSON配置文件对象
- 配置文件JSON已上传到IPFS
- 最后,它在注册表中创建一个setAttributes交易,它将生成的IPFS哈希值设置为您的公共声明
虽然uPort注册表是一个共享合约,但是每个身份在这个单一的真实来源中存储的数据只能由其uPort身份本身控制,这使得它不可能检查或屏蔽。这个简单的控制方式是uPort身份自主权概念的关键。
需要注意的是uPort注册表合约是on-chain对off-chain数据的引用。数据会被上传到IPFS而不是存储在区块链上,只有IPFS哈希值会被存储在链上。
3.在链上和脱链使用
在一个纯粹的Ethereum世界里,所有的应用程序和数据都完全在整个blockchain上,我们不需要uPort注册表作为一个共享事实(真实数据)来源。相反,事实只会从公开的块中读出来。然而,实际上即使是最简单的dApp UX,由于需要满足数据隐私约束,也具有很大的off-chain数据需求(隐私数据不存储在链上)。如果应用程序UX需要获取关于用户地址和余额的任何有关用户的信息,开发人员需要依赖于uPort注册表,Facebook Connect或其自己的集中式用户数据库。
有更多的复杂场景需要在用户和应用之间交换私人信息,如年收入或身份证号码。大多数人不会很乐意将这些信息存储在一个公开的区块上,因此我们需要一种安全分享它的方法。
4.一个去中心的,链上到链下的世界
正如我们前面提到的,在以太坊集群中一个智能合约身份几乎可以做任何基于密钥的身份可以做的事情,甚至更多。但不幸的是,它不能做的一件事是像私钥一样签名任意的脱链数据。因此,我们需要一种方式让uPort注册表将任意的脱链数据签名委托给一个关键字。
uPort注册表项中的publicKey字段用于此目的。publicKey允许我的个人身份将签名权限委托给另一个设备,在也就是我的uPort移动应用程序。如果我丢失或升级我的设备,还可以更改此密钥(publicKey )。
uPort Connect javascript库透明地使用uPort的这种
分散公共密钥注册表功能,以便通过uPort注册表验证过的JWT(JSON Web Token)安全地在你的应用程序和
uPort之间进行通信和共享信息。
在未来的文章中,我们将讨论如何使用uPort Connect为你的用户开发其他的off-chain功能。
5. Uport使你的Ethereum应用程序人性化
在构建你的Ethereum应用程序时支持uPort最重要的原因应该是uPort可以人性化区块链用户的体验。 用户不再只是使用抽象的十六进制编码地址与其他十六进制地址进行交互,而是真正的人,他们现在能够充分表达自己,与其他真正的人,应用程序,设备和业务进行交互。
另外,uPort移动应用和库的组合使将新的非技术用户带入你的应用程序变得非常简单。我们觉得这将是Ethereum应用程序扩展到大众使用的驱动力。
结束语
uPort借助于IPFS,为我们生成分布式的身份证明。
以上是关于uPort的学习记录的主要内容,如果未能解决你的问题,请参考以下文章