身份(Identity)管理是區(qū)塊鏈應(yīng)用的核心元素。在一個(gè)不可信、匿名的分布計(jì)算生態(tài)中,要實(shí)現(xiàn)去中心化身份管理并不是一件容易的事情。Sidetree是一個(gè)基于現(xiàn)有區(qū)塊鏈平臺(tái)的第二層(L2s)協(xié)議,專門用于去中心化身份管理。微軟最新開源的ION項(xiàng)目,就是Sidetree協(xié)議基于比特幣區(qū)塊鏈的一個(gè)實(shí)現(xiàn)。本文將分6個(gè)部分介紹Sidetree去中心化身份管理協(xié)議:DID的核心要素、Sidetree協(xié)議的起源、概述、工作原理、設(shè)計(jì)約束與實(shí)現(xiàn)進(jìn)展。
1、去中心化身份管理的核心要素
去中心化身份管理的挑戰(zhàn)并不是單一模塊的問(wèn)題。在去中心化應(yīng)用(DApp)中,一個(gè)身份的生命周期中,有一些需要考慮的關(guān)鍵因素:

- 表示:用來(lái)描述主體身份的可遷移表示
- 持久化:用來(lái)存儲(chǔ)、提取主體身份的機(jī)制,同時(shí)還需要保持其隱私
- 隱私:在去中心化賬本中保護(hù)主體身份的模型
- 斷言: 確定主體身份的特定語(yǔ)句
- 解析:解析、驗(yàn)證特定主體身份的機(jī)制
2、Sidetree協(xié)議的起源
2017年,去中心化身份組織(DIF)的一些成員開始討論如何在全球級(jí)別實(shí)現(xiàn)去中心化身份系統(tǒng)。對(duì)于大多數(shù)去中心化身份系統(tǒng)而言,最下面的一層是區(qū)塊鏈/賬本,被稱為第一層或L1,用來(lái)以某種形式支持去中心化的公鑰體系(Decentralized Public Key Infrastructure)以及W3C去中心化身份(DIDs:Decentralized Identifiers)。
區(qū)塊鏈的的可伸縮性不是小問(wèn)題,但是目前已經(jīng)存在一個(gè)有前途的思路來(lái)解決基于
區(qū)塊鏈的系統(tǒng)的伸縮性問(wèn)題:第二層協(xié)議或L2s,例如:狀態(tài)通道、側(cè)鏈和比特幣
閃電網(wǎng)絡(luò)。L2s通過(guò)確定性(Deterministic)處理與交易方案來(lái)實(shí)現(xiàn)可伸縮性,這些交易是在區(qū)塊鏈之外完成的,只需要在與所依托的底層區(qū)塊鏈交互時(shí)進(jìn)行極少的共識(shí)處理。
要實(shí)現(xiàn)去中心化身份管理,就需要一個(gè)大規(guī)模運(yùn)行的系統(tǒng),同時(shí)具備一些核心特性,例如確定性狀態(tài)解析以及差分持久化。在過(guò)去的18個(gè)月中,IDF成員間的思想交流最終形成了一個(gè)完整的第二層協(xié)議:Sidetree。
3、Sidetree協(xié)議概述
Sidetree協(xié)議本身并不是去中心化身份(DID)方法,它由一組代碼層級(jí)的組件構(gòu)成,包括確定性處理邏輯、內(nèi)容尋址存儲(chǔ)抽象以及可以部署到第一層的去中心化賬本(例如:公有鏈)上的狀態(tài)驗(yàn)證過(guò)程,從而實(shí)現(xiàn)無(wú)需許可的、第二層DID網(wǎng)絡(luò)。通過(guò)使用特定鏈相關(guān)的適配器,Sidetree協(xié)議可以用來(lái)在不同的鏈上創(chuàng)建不同的第二層去中心化身份網(wǎng)絡(luò),這些特定鏈的適配器負(fù)責(zé)實(shí)現(xiàn)與底層區(qū)塊鏈的讀寫交互。
無(wú)論底層采用哪種區(qū)塊鏈,Sidetree協(xié)議的幾乎所有實(shí)現(xiàn)代碼都保持一致,這使得
它可以適用于多種區(qū)塊鏈平臺(tái)。下面是Sidetree系統(tǒng)的總體結(jié)構(gòu),以比特幣作為目標(biāo)區(qū)塊鏈,不過(guò)如前所述,這也適用于其他區(qū)塊鏈:

Sidetree協(xié)議基于一組模塊化組件實(shí)現(xiàn),最重要的包括:
Sidetree內(nèi)核 / Sidetree Core :
Sidetree內(nèi)核是主要的邏輯模塊,它監(jiān)聽來(lái)自底層區(qū)塊鏈的交易輸入,并使用CAS模塊(下面介紹)提取其中的DID操作,然后組合/驗(yàn)證每個(gè)DID的狀態(tài)。內(nèi)容尋址存儲(chǔ) / Content Address Storage :
CAS(Content Address Storage)模塊是一個(gè)基于哈希的存儲(chǔ)接口,網(wǎng)絡(luò)中的第二層節(jié)點(diǎn)使用該接口來(lái)交換彼此識(shí)別的DID操作批次,以便進(jìn)行本地持久化和網(wǎng)絡(luò)傳播。該接口抽象自所使用的特定CAS協(xié)議,但是值得指出的是,DIF成員已經(jīng)為此功能選擇了IPFS。區(qū)塊鏈/賬本適配器 / Blockchain/Ledger Adapter :
適配器中包含了任何需要讀寫特定區(qū)塊鏈的代碼,以便解除Sidetree主體對(duì)特定區(qū)塊鏈的依賴。不同的底層鏈需要分別實(shí)現(xiàn)不同的適配器。
4、Sidetree協(xié)議工作原理
基于Sidetree的L2節(jié)點(diǎn)按如下步驟來(lái)創(chuàng)建、讀取和處理DID操作:
要將批操作寫入基于Sidetree的L2網(wǎng)絡(luò)的節(jié)點(diǎn)首先匯集盡可能多的DID/DPKI操作(基于確定性協(xié)議規(guī)則確定的上限),然后創(chuàng)建一個(gè)L1鏈上交易并在交易中嵌入該操作批次的哈希。
DID操作的源數(shù)據(jù)由發(fā)起節(jié)點(diǎn)本地存儲(chǔ),并推送到IPFS網(wǎng)絡(luò)。當(dāng)其他節(jié)點(diǎn)獲知嵌入Sidetree操作的底層鏈交易后,這些節(jié)點(diǎn)將向原始節(jié)點(diǎn)或其他IPFS節(jié)點(diǎn)請(qǐng)求該批次數(shù)據(jù)。
當(dāng)一個(gè)節(jié)點(diǎn)收到某個(gè)批次后,它會(huì)將元數(shù)據(jù)固定到本地,然后Sidetree核心邏輯模塊解壓批次數(shù)據(jù)來(lái)解析并驗(yàn)證其中的每個(gè)操作。目標(biāo)鏈的區(qū)塊/交易體系是Sidetree協(xié)議唯一需要的共識(shí)機(jī)制,不需要額外的區(qū)塊鏈、側(cè)鏈或咨詢權(quán)威單元來(lái)讓網(wǎng)絡(luò)中的DID達(dá)成正確的PKI狀態(tài)。
下面是關(guān)于批次與操作嵌入目標(biāo)區(qū)塊鏈的更詳細(xì)的示意圖:

5、Sidetree協(xié)議的設(shè)計(jì)約束
Sidetree協(xié)議在設(shè)計(jì)時(shí)做出了一些關(guān)鍵的假設(shè):
DIDs不可轉(zhuǎn)讓,協(xié)議沒(méi)有提供一個(gè)邏輯實(shí)體轉(zhuǎn)讓、購(gòu)買或獲取其他邏輯實(shí)體的DID的途徑。這對(duì)于DID/DPKI用例是可行的,但是不適用于資金的雙花(double spend -- 討厭這個(gè)名詞的翻譯,一種輕佻的感覺)。
可以延遲揭示嵌入的批次數(shù)據(jù),基于確定性規(guī)則集進(jìn)行處理。
DID狀態(tài)彼此獨(dú)立,依次一個(gè)DID的持有者智能影響它自己的DID的狀態(tài)。
6、Sidetree協(xié)議的實(shí)現(xiàn)進(jìn)展
目前在DIF成員中,有兩個(gè)團(tuán)隊(duì)分別使用Sidetree協(xié)議為比特幣和以太坊開發(fā)L2層的去中心化身份網(wǎng)絡(luò)。微軟主要聚焦于比特幣網(wǎng)絡(luò),而Transmute Industries則與ConsenSys合作在開發(fā)以太坊版本。你可以在這里
查看微軟ION項(xiàng)目的實(shí)現(xiàn)代碼。
原文: The Sidetree Protocol: Scalable DPKI for Decentralized Identity
匯智網(wǎng) / Hubwiz.com 翻譯整理,轉(zhuǎn)載請(qǐng)標(biāo)明出處。
