1
本文作者: 張利 | 2017-03-26 14:18 |
雷鋒網(wǎng)AI金融評論按:3月25日,由開源社、TopGeek、匯智Tek聯(lián)合主辦的中國區(qū)塊鏈和金融創(chuàng)新科技峰會(FTCon2017)在上海舉行,微軟亞洲研究院主管研究員閆鶯,就基于以太坊的隱私保護(hù)技術(shù),發(fā)表了她的觀點(diǎn)。據(jù)雷鋒網(wǎng)AI金融評論了解,閆鶯曾獲得微軟學(xué)者、IBM全球英才稱號,發(fā)表國內(nèi)外頂級會議期刊論文30余篇,專利10余項。
“我們要分清楚匿名與別名”,閆鶯說道,“目前的比特幣和以太坊區(qū)塊鏈做不到匿名,只能算別名”。于是,隱私保護(hù)就成了一個問題。我們既要掩蓋交易細(xì)節(jié),又要驗證交易的正確性,那么,業(yè)界已落地的通用做法是什么呢?如何兼顧隱私保護(hù)與性能呢?對此,閆鶯做了詳細(xì)解答。
以下是雷鋒網(wǎng)AI金融評論整理的演講全文,并對其進(jìn)行了不改變文章原意的編輯。
大家好,我今天很高興在這里跟大家一起來聊聊:區(qū)塊鏈的隱私保護(hù)技術(shù)。我今天主要從三方面來講。
第一為什么會有隱私保護(hù)這樣的問題?我們先說一下區(qū)塊鏈的情況,以及為什么會有隱私的問題。
第二個是現(xiàn)有的、實實在在的已經(jīng)落地的隱私保護(hù)的技術(shù),以及以太坊現(xiàn)在比較活躍的基于企業(yè)的架構(gòu)。
如何兼顧隱私保護(hù)與性能?我將會分享一下微軟的做法。
我們先從區(qū)塊鏈的歷史講起,2008年,第一次提出了比特幣,2009年初系統(tǒng)上線。但當(dāng)時,比特幣還沒有價值。直到2010年中,比特幣有了它的價值,1萬個比特幣換了2個披薩。在之后一個月,其價格漲了10倍,大家才意識到它的價值。到了2011年,比特幣等于一美元。2013年,出現(xiàn)了一個少年Vitalik,他是比特幣的愛好者,想開發(fā)一個新的幣種。那他就必須重新實現(xiàn)一下類似比特幣的系統(tǒng)。他想,是否可以有一個更通用的系統(tǒng)架構(gòu)支持各種不同的數(shù)字資產(chǎn)的定義,就這樣,他提出了“以太坊”。
與比特幣相比,以太坊最主要的不同就是引入了智能合約。實際上智能合約就是一段代碼,這段代碼可以定義數(shù)字資產(chǎn),可以定義數(shù)字資產(chǎn)轉(zhuǎn)移的規(guī)則。
有了這個想法之后,他就退學(xué)了,然后公布了他的白皮書,之后又和合作伙伴寫了一個比較詳細(xì)的黃皮書。之后就開始ICO,以太坊是迄今最成功的ICO。2014年底,以太坊正式上線了,第一個版本就已經(jīng)非常穩(wěn)定了。并且如果你發(fā)現(xiàn)了以太坊的bug,提出來,并且被接受了,你就會得到比特幣的獎勵。以太坊一上線就支持七種語言,可以避免一種語言帶來的局限。
在下面這個圖上,大家可以看到,以太坊現(xiàn)在的發(fā)展?fàn)顩r有點(diǎn)像三年前比特幣的發(fā)展情況。我們有理由相信,以太坊還有發(fā)展空間。
可能大家也看到過區(qū)塊鏈的各種定義和介紹,為了理解隱私問題,我今天再把區(qū)塊鏈的基本定義回顧一下。區(qū)塊鏈包括幾個部分,當(dāng)有人跟你談起他在做區(qū)塊鏈項目時,你可以問一下他在做哪一塊?因為它包括存儲、智能合約、上層應(yīng)用等5層。
數(shù)據(jù)結(jié)構(gòu)
首先,數(shù)據(jù)結(jié)構(gòu)是比較基礎(chǔ)的部分,正如它的名字一樣,區(qū)塊鏈?zhǔn)且粔K一塊的交易連在一起。這種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)是:如果你改了其中一塊數(shù)據(jù)的內(nèi)容,很容易會被發(fā)現(xiàn)。
那以太坊怎么實現(xiàn)的呢?大家看到這個架構(gòu)圖覺得特別復(fù)雜。是的,它就是這么復(fù)雜,以太坊到現(xiàn)在已經(jīng)有七千多個結(jié)點(diǎn),來自不同國家,不同目的的人。節(jié)點(diǎn)和節(jié)點(diǎn)之間彼此完全是不信任的。這些復(fù)雜的設(shè)計就是考慮到安全性和性能。存儲層面上,是每個結(jié)點(diǎn)高冗余的存儲數(shù)據(jù)。
如果存在不同的結(jié)點(diǎn),那如何保證數(shù)據(jù)的一致性呢?這就是我們經(jīng)常談的一致性協(xié)議,每時每刻我們都需要選一個節(jié)點(diǎn)負(fù)責(zé)決定哪些交易屬于下一塊,然后廣播給大家記錄下來。這個lead節(jié)點(diǎn)的選取和激勵機(jī)制是一致性協(xié)議研究的重點(diǎn)。
我再談?wù)勚悄芎霞s,什么是智能合約呢?就是一段代碼。解決什么問題呢?剛才講到用比特幣轉(zhuǎn)錢。那我們能不能把這個做的更靈活?我們舉一個例子。
假設(shè)即將舉辦一場球賽,我和Edwin打賭,如果A贏了,他給我100元,如果B贏了,我給他100元。這種場景在線下怎么做呢?我們每個人先把錢給一個第三方,等結(jié)果出來之后,誰贏了把錢發(fā)給誰,第三方在其中收取一些手續(xù)費(fèi)。智能合約就可以取代這個第三方,它是一段代碼定義了上面描述的邏輯。它有自己的賬戶,可以把錢轉(zhuǎn)給它,足球比賽結(jié)果出來之后,結(jié)果注入到區(qū)塊鏈,我們可以觸發(fā)這個合約,它就自動把錢轉(zhuǎn)到贏的人手里。智能合約自己的存儲空間,智能合約在區(qū)塊鏈上的運(yùn)行時,輸入是區(qū)塊鏈上的數(shù)據(jù),經(jīng)過處理之后,結(jié)果再寫回區(qū)塊鏈。
有人可能有這樣的疑問,如果有的人寫的代碼運(yùn)行時間特別長,區(qū)塊鏈系統(tǒng)會擁堵住嗎?
以太坊也有解決方案,它的運(yùn)行不是免費(fèi)的,要收燃料費(fèi),具體怎么收呢?按照你所消耗的資源,比如CPU資源、存儲資源來收,如果你想不停的運(yùn)行的話,沒有巨額資金也運(yùn)行不起來,用這樣的方式,可以降低黑客攻擊的成功率。
講完區(qū)塊鏈的幾要素之后,我們再深入一點(diǎn),在以太坊中,我轉(zhuǎn)了一筆錢,交易過程到底是怎樣的?
假設(shè)我要給一個人轉(zhuǎn)50元,我在客戶端提示轉(zhuǎn)50塊錢給他,就會生成一個交易,網(wǎng)絡(luò)上所有人都可以看到,從誰到誰轉(zhuǎn)多少錢。這個交易就存在整個網(wǎng)絡(luò)當(dāng)中,其它結(jié)點(diǎn)收到了我的轉(zhuǎn)賬,這個帳本就更改了。于是我就有了兩個狀態(tài),我現(xiàn)在的余額再生成一個新的結(jié)點(diǎn)。所有的交易組織成一個Merkel樹,根結(jié)點(diǎn)也計算出來,我們就把整個值都放到塊的頭部,最后把這個塊跟前面的塊連在一起。
實際上我的交易被存成什么樣的結(jié)構(gòu)呢?上面所有的信息都是以KV對的形式存儲在LevelDB中,key hash值,Value是內(nèi)容。Merkel樹中間結(jié)點(diǎn)的內(nèi)容就是它的孩子節(jié)點(diǎn)。如同下面表顯示,我們都可以通過它們的信息可以找到對應(yīng)數(shù)值。
顯而易見,這種方式查詢起來效率不高,使用leveldb主要是為了“寫”優(yōu)化。智能合約也是類似的,也是一段交易的內(nèi)容,存儲內(nèi)容也是以Merkel樹的形式存儲上去的。
現(xiàn)在,我們有了一個稍微具體一點(diǎn)的認(rèn)識,我們發(fā)現(xiàn)比特幣或者以太坊的區(qū)塊鏈基本上都是明文,除了地址和本身不是那么對應(yīng)之外,所有的信息都是對應(yīng)的。
這時問題就產(chǎn)生了,不是說匿名嗎?我們要區(qū)分匿名和別名,如果你的名字和線下的人沒有關(guān)聯(lián),就是匿名。實際上區(qū)塊鏈根本做不到,為什么呢?
比如說我買了一個比特幣,我總要通過一些支付途徑來支付,在美國交易2000美元以上都是需要實名的,這個地址總是通過某種形式與實際的人有聯(lián)系。所以區(qū)塊鏈并不是匿名的,只能說是別名,既然不匿名了,我們怎么解決隱私問題呢?
首先交易的內(nèi)容要隱藏好,不要讓人看到;但同時別人還要驗證這個交易是不是錯了,不能都加密。這兩者存在矛盾,實際上這是隱私保護(hù)技術(shù)上的挑戰(zhàn)。
現(xiàn)在實際上已經(jīng)落地應(yīng)用主要有兩種解決辦法,分別是:
一種是密碼學(xué)的原理,先加密,在加密域上進(jìn)行驗證。
另一種是引入側(cè)鏈,私有狀態(tài)下,不需要看見的人看不到,需要驗證的人通過驗證能見到。
形象一點(diǎn)來形容,這兩種方法可以稱為拼車與煙霧彈。
我覺得,加密的解決方法類似拼車的概念,我轉(zhuǎn)給某個人錢容易暴露,那我就聯(lián)合一堆人一起轉(zhuǎn),你不知道具體誰轉(zhuǎn)給了誰。拼車的生意誰做呢?我們需要在網(wǎng)絡(luò)中建立幾個主結(jié)點(diǎn),主結(jié)點(diǎn)是將轉(zhuǎn)賬的兄弟姐妹連在一起,但是一個主結(jié)點(diǎn)容易被攻擊。這時,我們可以不用一個主結(jié)點(diǎn),用多個主結(jié)點(diǎn)去拼,這樣的話,增加被攻擊的難度。
另外一種技術(shù)有點(diǎn)像煙霧彈的模式,之前拼車是幾個人都有轉(zhuǎn)賬意愿的人拼在一起。但這種技術(shù)是找一些“無辜群眾”拼在一起。
這個技術(shù)具體就是,當(dāng)我想發(fā)起交易的時候,我就用我的私鑰和一群人的公鑰一起發(fā)起,這樣就不知道是誰發(fā)起的。但其中存在一個問題:如果他們知道你選擇的地址,你就暴露了。所以這不是完全的隱私保護(hù),只能說是一部分隱私保護(hù),至少你是在發(fā)起人里面的。
這個技術(shù)本身不是什么新技術(shù),80年代已經(jīng)出現(xiàn)了,我們也看到這個技術(shù)的復(fù)雜度,還有它理論上的重要性。目的是讓驗證者不知道事實本身的時候,還能判斷事情的真假。
南北分支是連著的,有一個鑰匙可以連上。老王自稱有這扇門的鑰匙,但是不愿意直接展示出來。他不愿意把鑰匙交出來,我們怎么知道有這把鑰匙呢?我們找了一個測試者,同時要防止測試者和老王聯(lián)合作弊,具體怎么做呢?測試者把眼睛蒙上,然后老王隨意走到一個分支,測試者隨機(jī)要求老王從某一個分支出來,老王都能出來。那能不能說老王有鑰匙呢?不能。如果老王進(jìn)去的分支和測試者是一邊的話,也可以出來。所以這種測試要多做,如果老王每一次都能出來,我們就猜測老王是有鑰匙的。但是這個驗證效率很低。
還有一種是非交互性的,即做一次測試就能判斷真假。判錯的概率低,但也不能百分之百的保證。ZCash鑄幣過程,給出序列號,同時用zk-SNARK證明我是這個幣的擁有者。這樣就把詳細(xì)的信息隱掉了,同時可以驗證。
另外有一種側(cè)鏈的方式,如Quorum,它現(xiàn)在很受歡迎,原因是基于以太坊并且開源,Quorum目前架構(gòu),基本上可以滿足所有的金融需求。它是怎么做的呢?它引入一個私有狀態(tài),只有私有狀態(tài)允許的人可以看到。私有狀態(tài)的哈希值和公共狀態(tài)一起被鏈接到區(qū)塊鏈上,保證數(shù)據(jù)的完整性。
我們要做隱私保護(hù),勢必會影響系統(tǒng)性能。一方面要注意隱私,一方面要兼顧性能。我們的研究就是如何兼顧兩方面,我在這里分享一下微軟研究院關(guān)于這方面的兩個工作:
一個是結(jié)合硬件技術(shù),比如說SGX,聯(lián)盟鏈中有了它之后,我們就能很好解決隱私的問題,同時保障性能。這個項目還在開發(fā)測試中,計劃5月份有一個發(fā)布。
另外,我們在和客戶交流過程中,發(fā)現(xiàn)他們有一些需求是可以用區(qū)塊鏈來解決,但用傳統(tǒng)的區(qū)塊鏈系統(tǒng)并不是唯一最好方法解決方案??蛻舾枰氖且粋€大家共同擁有、可編程的,共同管理的云數(shù)據(jù)庫?,F(xiàn)在,基本上所有的云供應(yīng)商都有相應(yīng)的云數(shù)據(jù)庫。比如微軟Azure SQL Database 擁有每天上千萬客戶機(jī)時。目前的云數(shù)據(jù)庫確實有局限,就是它只有一個owner,擁有admin權(quán)限。在多機(jī)構(gòu)合作中問題來了,誰來做這個共有數(shù)據(jù)庫的owner?
區(qū)塊鏈應(yīng)用過程中,我們經(jīng)常說,解決了找不到可信找的第三方的問題。那這個可信的定義是什么呢?
如何定義可信任呢?
可信任包括兩個方面:
一、可驗證可追蹤。如果我的數(shù)據(jù)和更改都可以驗證和追蹤,等于說無需信任。
二、系統(tǒng)需要穩(wěn)定性、可靠性和可用性。
區(qū)塊鏈解決方案用它的數(shù)據(jù)結(jié)構(gòu)解決,一的問題可以用分布式存儲和一致性協(xié)議保障,在云數(shù)據(jù)庫中,二的問題自然被解決。那么,我們?nèi)绾谓o云數(shù)據(jù)庫加入可驗證追蹤的屬性呢?于是我們研發(fā)了聯(lián)盟數(shù)據(jù)庫(ConsortiumDB)系統(tǒng)。該系統(tǒng)以傳統(tǒng)云數(shù)據(jù)庫為存儲,有完善的機(jī)制管理membership和rule。
例如,用戶可以定義誰能訪問哪個表、誰能更改數(shù)據(jù)、誰可以加入等,都能得到較好的管理。所有規(guī)則的管理和執(zhí)行已經(jīng)日志的組織利用了區(qū)塊鏈的技術(shù),進(jìn)而實現(xiàn)其他機(jī)構(gòu)對數(shù)據(jù)庫的操作可驗證可追蹤。
最后,想說的是,區(qū)塊鏈技術(shù)是基礎(chǔ),是敲門磚,更重要的是思考實際中如何在應(yīng)用中利用這個技術(shù)的優(yōu)勢。隱私保護(hù)技術(shù)和系統(tǒng)的性能優(yōu)化只有在明確的應(yīng)用需求下才能更好的設(shè)計。
相關(guān)文章:
人大教授宋華:供應(yīng)鏈的發(fā)展不要為了區(qū)塊鏈而區(qū)塊鏈
博鰲直擊 | 區(qū)塊鏈在互聯(lián)網(wǎng)金融中扮演怎樣的角色?
博鰲直擊 | 基于區(qū)塊鏈、分布式賬本的數(shù)字貨幣是否代表了貨幣的未來?
博鰲直擊 | 銀聯(lián)總裁時文朝:實現(xiàn)數(shù)字貨幣并非只能靠區(qū)塊鏈
博鰲直擊 | “區(qū)塊鏈最大障礙還在于底層技術(shù)”
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。