引介 | 什么是 uPort 身份?

少平   |     |   471 次阅读

在这篇文章,我将尝试性的写入你作为一个开发者需要知道关于uPort身份的知识。

TLDR;uPort身份是一个以太坊地址,这是对它最基本的认知。所以,如果你们需要与一个拥有他们自己的以太坊地址的终端客户交易的时候,uPort就提供这个服务。但是,以太坊区块链的安全性支持的前提下,uPort也允许软件程序和他们的用户私下互相交换信息。

更细节来说,一个uPort身份是指当一个人无论这个在区块链上或者不在区块链上都能够去产生与智能合约和其他uPort身份交易时的交易声明的全部数字表示(或者说是,软件应用,组织,设备,机器人)。这个功能就是去让uPort成为一个以自己为中心身份的平台,从而让用户他们自己在不依赖中心化的第三方身份提供者的情况下,自己去产生这些交易声明。

对于你终端客户来说uPort真正的能力在于它能让你的以太坊去中心化程序变得更容易被使用。当其他有些人不在区块链上操作的时候,如与其他uPort用户或者去中心化程序产生私有的交易声明时,uPort授权的操作就是一些简单区块链交易,例如在Gnosis 预言市场中购买股份。在你的终端客户不去理会复杂的钥匙管理下,这全部功能都是可行的。

一个永久的身份

在传统的公共钥匙密码学的系统中,公钥就表示了身份。身份的所有权是被一个密钥的拥有权去控制公钥而决定。这个公/密钥模型众多有益的优势已经在密码学身份系统中被使用很多年。几乎不需要其他的结构去证明一个签名—— 你仅仅需要的是公钥的许可。

尽管这个传统的模型有一些严重地问题存在。假设你丢了你的密钥(丢失,被偷,或者其他的意思),你就丢失了你的身份。此外,在没有额外的中心化结构下这没有办法直接去撤销一个钥匙,也不能由其他人的身份来安全的转换控制。这些技术的限制已经妨碍到在之前密码学身份系统的尝试采用。

以太坊智能合约就提供给我们第一个密码学钥匙管理问题的通用解决方案,而且还给永久身份建立了一个大本营(“groundwork”)。智能合约的地址或者传统的公钥都能代表一个一以太坊身份。因为智能合约能被其他智能合约控制,因此这些合约能被编程去支持多个重新获得钥匙的方法。以太坊授权这个灵活性的控制方法对于用户来说是为了密码学的身份变得友好和意味深长。

一个uPort身份是很简单地由一个可替换的控制者合约控制的智能合约,它包含重新获取钥匙和进入控制方法。这个控制者的合约是依次被安全存储在你智能手机上的钥匙去控制。

再下一篇文章,我们将解释这个结构如何工作的和我们对它的设计选择的细节。

uPort注册:一个诚信的共享资源

uPort注册是由提供脱链数据共享和身份验证结构的全体uPort身份共享的单个智能合约。最重要的就是,它允许身份去产生它们是谁的简单交易声明。

如果你用uPort手机应用去创建了一个uPort身份,你就能建立你自己的信息到一个公共的用户资料文件。默认把你的名字,相片,旗帜图片,和说明书放置到这个公共用户资料文件中。在未来的uPort版本,你将有权限去设置你自己公共用户资料文件的信息是什么,但是现在你就当它是你以太坊的用户资料像你公共脸书(“Facebook”)的用户资料一样。这个就是你对世界公布你是谁的声明。

用这种方式通过uPort它本身的软件注册是非常简单的:
 它创建了一个JSON文档去反对跟随http://schema.org的协定。
 JSON文档被分布式文件系统(IPFS)上传。
 最后在注册时它创建一个setAttributes交易,这个交易放置你公共声明分布式文件系统(IPFS)的哈希值结果。

虽然uPort注册是一个共享的合约,但是在单个诚信资源中被每一个身份存储的数据仅仅只能被uPort身份本身控制,同时不会让它去变为检察员或者区块。这个简单的控制观点就是uPort身份自中心化概念的重点。

这点是一定要记住的,uPort注册合约是一个脱链数据在实时在线的参考点。数据仅仅是分布式文件系统(IPFS)的哈希值,而且这个数据是被上传到分布式文件系统(IPFS)而不是存储在链上。

当前版本的uport注册已经部署到地址为0xb9C1598e24650437a3055F7f66AC1820c419a679的Ropsten测试网络上。请有空去看看我们简单的solidity源代码。

例子,我uPort身份(my uPort identity):

我uPort身份是0xceaaac60d36d2cb52ac727a93ad5ea301afc89dc。随时都可以在你的uPort手机应用作为一个合约添加我。你也能在一个区块浏览器中看到我的身份。

在写作的时候,我uPort当前公共用户资料有这个分布式文件系统(IPFS)哈希值
QmWBAr1QBWaAGaRJMcggbPiFYTBZhoHc4jBoWtKzLyZfSN

{"@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手机应用,你能通过点击Identity Page > Settings > Developer Tools图标,就能轻松地看到你自己所有的公共用户资料。

实时在线vs脱链使用

在一个单纯以太坊的世界中所有的应用和数据都完全的存放在区块链上,我们不需要uPort作为一个共享诚信的资源。相反的,诚信能从以太坊的公链上简单的读取到。但是,现实中就连最简单的去中心化应用UX也有大量的脱链数据需求因为区块链数据隐私的约束。如果一个UX应用需要去显示一个用户除了他们以太坊地址和余额的任何信息,开发者就都需要依赖像uPort注册(uPort Registry),脸书链接(Facebook Connect)或者它自己中心化的用户数据库的工具。

这有很多更高端在用户和应用中需要去互相交换隐私信息的用户例子,例如年收入或者公民ID号。更多人不太愿意将这种重要的信息放置在一个公链上,因此我们需要一个脱链的方法安全地共享它。

一个脱链世界的去中心化,实时在线结构

就想我们之前提及到的,以太坊区块链上的一个智能合约身份能做基于钥匙身份几乎相同的事,甚至更多。但是不幸的是,像密钥能任意签署脱链数据这样的功能就是它所不能做的。因此我们需要一个方法使uPort注册去代表一对钥匙(公/密钥)任意签署脱链数据。
在uPort注册条目的下公钥区域服务这个目的。公钥允许我的永久身份去给另外一个设备去代表签署许可,就像这个例子中我的uPort手机应用。如果我丢失或者跟换我的设备,它也允许我去改变这个钥匙。

显然可见 uPort 连接javascript库使用uPort注册去验证uPort去中心化公钥注册功能去安全地使用JWT(JSON Web Tokens - JSON网页令牌)在你的应用和我们的手机应用交流和分享信息。

下一篇文章我们将讨论你能如何使用uPort连接去给你用户们开发附加的脱链特性。

Uport赋予你的以太坊应用人性化

当你创建你的以太坊应用时去支持uPort最重要的原因可能就是uPort赋予区块链用户经验人性化。用户们不仅仅再用抽象的16位进制编码的地址于其他的16位进制编码的地址交易,然而现在能完全表达他们自己现实中的人就能和其他现实中的人,应用,设备和业务交易。

另外,uPort手机应用和库的结合是非常容易给你的应用带来更多的非技术人员用户。在我们期望这个将成为一个以太坊去中心化应用规模化主流的推动力。

如果你还没有注册,请在alpha登录去更简单地获取我们的应用的入口。然后,看看我们uPort开发者网站和键入uPort Gitter聊天组。


原文链接:https://medium.com/uport/what-is-a-uport-identity-b790b065809c
原文作者:Pelle Braendgaard
翻译作者:Jorden Ga

 
0 人喜欢