昨天去参加 ArcBlock 的区块链漫游指南讲座,仍是比较有收获。比较引发我兴趣的主要有两个内容,一个是讲座中提到的 Decentralized Identifiers(DIDS),即去中心化身份,另外一个则是基于 Forge 的 DApp 开发。讲真,在这以前对 DApp 只有一点粗浅的认识,了解完 Forge 以后才勾起了个人兴趣 —— Dapp 开发竟然能够如此简单!不过本篇就先主要介绍 DIDs 吧,Forge 的部分留到下一篇讲。算法
DIDs 是 W3C 小组提出的一份关于去中心化身份的草案。咱们在物理世界中会用身份证、驾驶证、护照等等标识本身的身份,而在虚拟的网络世界中,咱们则须要注册各类各样的帐号,不一样的应用会分配给咱们一个 id 来标识咱们是这个应用中的谁。安全
在网络世界中,咱们还常常会使用一些第三方来登陆某个应用。好比经常使用的微信受权登陆,Google 受权登陆、Facebook 受权登陆等等。咱们使用这些第三方登陆的诉求是减小帐号的产生,我只要有不多的几个帐号就能够访问任意的应用了,不须要记住过多的帐号和密码。但同时,这些第三方登陆在给咱们打开方便之门时,隐私也已经在处处流窜了 —— 当你拿着同一个帐号在不一样的应用之间切换的时候,你的数据也在这些应用之间流动了,数据是你的吗?不是,你的数据属于那些应用背后的公司。你今天想买一起手表,明天你就能在别的地方看到手表的广告。细思极恐,你可能已是赤裸裸的了,只是取决于别人想不想挖掘你。微信
DID 是为了保护你的隐私而生的。首先 DID 必定是基于区块链的,你的凭证不该该属于某个集中式的服务,他不该该属于任何人,只属于你,区块链技术为这个目标的实现提供了很好的基础,你的凭证分散在全球的任意节点上,并且只有你可以管理你的凭证。网络
DID 不须要向任何人申请,不会有任何第三方持有你的 DID,你的 DID 只有你能持有,你持有的 DID 可以经过一些算法证实你是你。数据结构
首先 DIDs 是以区块链技术为基石的,区块链为 DIDs 提供了安全可靠的身份注册表。你拿着你的 DID 可以找到他对应的 DID 文档,DID 文档是一组特殊的数据结构,多是个 JSON 也多是别的,里面会包含一些与该 DID 有关的信息,好比加密材料,身份验证套件,具体的服务端点等。app
好比小 A 经过某个 DApp 发送给我一个文件叫我签署,我以前没用过这个 DApp,而这个 DApp 若是支持某种 DIDs 的实现,那我就能够按照这种 DIDs 的生成算法,生成一个 DID,并把个人一些认证信息填入进去(好比身份证号,手机号,邮箱等等)。而后我使用这个 DID 做为我对这个 DApp 的受权 ID,这个 DApp 能够拿着个人 ID 去校验我是否是我,校验的具体方式都在 DID 文档中定义好了,校验的时候可能会调用 DApp 提供的某个接口(提供了具体的校验方法),可是 DApp 是拿不到个人我的信息的,他只能拿到校验的结果是 true 仍是 false。区块链
我经过了 DApp 的校验,看到了这份文件,而后使用个人 DID 对这份文件进行签署,同时区块链上产生了 ”我签署了小 A 的文件“ 这条信息。加密
能够看下 w3c 官方提供的一个 DIDs 示例:code
## 协议识别符(did,相似于 http,标识属于什么协议):协议提供者(不一样的协议提供者在协议实现上会有差别):根据协议提供者提供的算法,用户本身生成的惟一标识 did:example:123456789abcdefghi ## DID Document { // 上下文,目前规定必须是这个值,用来表示使用的协议是 did v1 版本 "@context": "https://w3id.org/did/v1", "id": "did:example:123456789abcdefghi", "authentication": [{ // 嵌入了另外一种验证方法的公钥 "id": "did:example:123456789abcdefghi#keys-1", "type": "RsaVerificationKey2018", "controller": "did:example:123456789abcdefghi", "publicKeyPem": "-----BEGIN PUBLIC KEY...END PUBLIC KEY-----\r\n" }], "service": [{ // 用于检索与 DID 相关的可验证凭据 "type": "VerifiableCredentialService", // 具体的服务端点 "serviceEndpoint": "https://example.com/vc/" }] }
理解可能有不对的地方,还但愿能有高人指点一二。接口
一直以来咱们对隐私的管理都是缺失的,近些年愈来愈多的隐私泄露事件被曝光,咱们也应该开始注意本身的隐私了。我以为 DIDs 是个很棒的方向,若是可能我但愿为我负责的产品也加入这一支持。
陈老师他们团队作的事情,仍是颇有意义的,也颠覆了一些我对区块链的见解。ABT Wallet 实现了对 DIDs 的管理,我以为他们的目光仍是很长远的,至少这是一件正确的事,几年以后咱们再看,说不定会有不同的体会。另外,Forge 也能够体验一下,从 demo 上看上手仍是很快的,没准真能成 DApp 领域的 ROR。咱们拭目以待!