昨天去參加 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。咱們拭目以待!