以太坊暗網? 這群北大才子做到了...

買賣虛擬貨幣

記者 | 喬治

出品 | 區塊鏈大本營(blockchain_camp)

說到比特幣暗網,你能想到什麼?絲綢之路、華爾街市場、販毒、殺人、情色交易,一直以來這些都是經常被人詬病的一面。但事物都有兩面性,“暗”的另一面,是對現實世界的真實解決方案,是利用“暗”的特性解決當前存在的某個痛點。

你知道比特幣暗網,但你瞭解以太坊暗網嗎?

為解決主流數字貨幣過於透明、隱私洩露等問題,一群北大高材生建立了這個“以太坊暗網”。“以太坊暗網”是什麼?具有哪些特性?能幫你解決什麼問題?

近期,營長對這個北大背景的技術團隊進行了專訪。讓我們從他們的想法與實踐中得到啟發,瞭解區塊鏈開發者正在做的事情。

來自北大的師兄弟團隊

營長:簡單介紹一下你的個人背景和建立 PGC 之前的工作經歷。

PGC:我2011年北大博士畢業,一直唸的計算機,做的是資訊保安和網路安全。畢業後曾在中國電子科學研究院做綜合電子資訊系統的頂層設計,之後在一個做資訊保安的上市公司待了一陣,然後就開始創業了。從 2016 年到現在,一直在區塊鏈領域創業,既做過聯盟鏈,也做過公鏈,既做過智慧合約開發,也做過 DApp 開發。

營長:PGC 團隊有很多北大背景的成員,這個團隊是如何組建的?

PGC:以北大的師兄師弟為主,他們是最核心的一些人,此外,我們也比較國際化,在英國倫敦、美國西雅圖和德國斯圖加特,也有一些遠端協同辦公的同事。

最初創業時,包括我在內團隊只有兩位主要成員,隨著業務的開展,技術上需要的人才越來越多,我們優先從北大實驗室和其他合作高校尋找技術人才,已經畢業的、沒有畢業的、已經工作的、沒有參加工作的師兄師弟,我們都聯絡了,好在他們對數字貨幣也比較認可,最後就加入到我們這個團隊當中了。

因為數字貨幣、區塊鏈不僅是密碼學層面的事,還涉及到很多金融相關、市場推廣、業務拓展的事,所以團隊也需要一些業務層面的人才。我們在普華永道以及英國、澳大利亞、香港也有金融業、商業方面的同事,他們都遠端加入了這個團隊。所以我們算是一個以技術為主、業務上相對全球化的一個團隊。

你根本不需要洩露金鑰

營長:目前主流加密貨幣和現有隱私加密貨幣存在哪些問題?PGC 的解決方案是什麼?

PGC:主流加密貨幣的歷史相對比較早了,它可能只解決了轉賬和記賬的問題,從實際功能來看,就是把賬算清楚,我給你轉了多少幣,你收到了多少幣,只要算清楚就 OK 了,並沒有考慮智慧合約之類的其他功能。

一個新事物的誕生,肯定要先解決它的可用性,等它跑起來再去考慮它的安全性和隱私性。所以,最初幾年大家主要關注這個幣如何用起來、如何產生金融效應以及如何讓更多使用者使用等等。此後,隨著使用者越來越多、生態越來越成熟,就會出現安全和隱私問題

目前來看,比較主流的幾個幣都不包含隱私屬性,而最近比較火的 Grin 和 Beam 隱私幣以及很早就有的門羅幣、達世幣、大零幣 (Zcash) 等比較常見,門羅幣和大零幣已經存在一段時間了,也有相應比較大的市值,其價值也已經過一些驗證,但仍存在一些問題

比如,它需要一個可信的初始設定,最開始建立網路時,就需要進行這樣一個操作,這個操作通常是很難做到,這是一個問題。此外,因為它不是無狀態的,每一筆交易都需要記錄一些相應的隨機值和加密值,這樣就導致它在錢包設計和賬本設計裡顯得非常複雜。

雖然門羅幣、達世幣、大零幣、Grin、Beam 等隱私幣可以透過混幣、環簽名、零知識證明、MimbleWimble 協議等改進隱私性,但ETCETH 和 USTD 相比,它們畢竟是一個小眾幣,用的人不多,為享受隱私功能,把主流幣換成這些隱私幣,還是不太方便。

所以,PGC 的做法是將隱私功能賦予主流幣,而不是再弄一個其它的幣種,說這個幣比其它都好,大家來用這個幣。因為推廣這個幣確實需要很長時間和很大精力,與其這樣,還不如在主流幣上增加一個隱私層,即插即用,想用就用,不想用就不用。

另外,現有隱私幣所追求的隱私性太強了,隱私性太強就會產生一些問題,比如,如果 A 給 B 轉帳,只有 A 和 B 知道,其他人不知道,就可能存在這樣一個問題:如果 A 和 B 對交易有爭議,A 說轉給 B 了,B 說沒收到,或者 A 說轉了 10 個,B 說轉了 5 個,這該怎麼辦?

在其它隱私幣方案中,只能是雙方找到第三方,透過提供私鑰去檢視歷史交易,一旦這樣操作,就意味著你的錢包以後不能再用了,因為有第三方知道了你的歷史交易,你洩漏了自己的隱私,這個很不好。所以,隱私性很強的貨幣不具有可審計性,假如普華永道把數字貨幣作為財務去審計,又怎麼做?鏈上根本看不到,也不可能冒險提供私鑰,所以強隱私性和可審計性是衝突的。

PGC 追求的不是強隱私性,儘管隱私性弱化了,但機密性增強了。何為機密性?就是交易內容被隱藏,你轉了多少幣?你的賬戶餘額和交易金額是多少?都被隱藏了。

但也存在一個問題,這是一把雙刃劍。就比如說駭客盜了幣安交易所的比特幣,如果駭客將被盜的幣放到了 PGC 錢包,雖然我們可以看到這個地址,但我們不知道這個地址內還有多少比特幣,駭客可以將比特幣轉到其他地址,我們不知道其他地址收到多少比特幣,只能透過一系列黑名單把這些地址封鎖掉,這樣就增加了被盜比特幣的追蹤難度。

詳述 PGC 密碼學解決方案

營長:請詳細介紹 PGC 的密碼學方案。

PGC:目前來看,有兩種方法可以隱藏賬戶餘額和交易金額。

其中一個是承諾。就像最早 Maxwell 提出的 CT,它使用 Pedersen commitments 的方式,但有一些不好的方面,比如在密碼學層面,當你需要做這個承諾時,你需要離線給非鏈上發東西,這個東西要怎麼發?如何保證它的安全?這又涉及到另外一套工程。所以,如果選用這個技術路線,除了要把鏈弄好,還得把另外一套東西弄好,這是比較複雜的事情。

我們選擇了另外一條,即利用帶有加法同態特性的公鑰密碼學將使用者餘額、交易金額加密什麼是同態?舉個例子,比如我把 1 加密成了一堆看不懂的字母,把 2 也加密成了一堆看不懂的字母,現在把 1 和 2 加起來,就等於 3 了。加法同態是指,可以把 1 加密出來的密文和 2 加密出來的密文做一個類似加法的操作,生成另外一個密文,也是一堆看不懂的亂碼,被解碼後就是 3,這就是加法同態。

加法同態相對比較複雜,特別是當你還要做乘法時,它的效率就非常低了。加法同態裡有一個非常經典的 ElGamal 演算法,是一個有幾十年歷史的公鑰加密演算法,它的一個變種在上世紀90年代就被美國的數字簽名標準用作數字簽名演算法。

假如你要做機密交易,因為這是一筆交易,你就要把這個交易寫在一個小紙條上交給礦工,讓他記到鏈上,礦工不能看到你有多少錢,也不能看到你要轉多少錢,PGC 會把交易金額加密,比如你原來有 100 塊錢,轉了 90 塊,還剩 10 塊,我原來有 10 塊錢,收到 90 塊,現在就是 100 塊了。

我們各自有一對公私鑰,我有 100 塊錢,我把它加密了,我給你轉 10 塊錢,這 10 塊錢我知道,你也知道,但不能讓別人知道,所以這 10 塊錢的交易被我的公鑰加密了,你用你的公鑰加密放到這個交易裡,我們就相當於有 3 個數字了,再加上 1 個隨機值,防止重放攻擊等等,這就是交易的結構。

當其他人說你到底是不是轉了 10 個幣,該如何驗證?此時就用到了零知識證明,就是他雖然不知道咱們的私鑰,但他能夠驗證我倆說的是真的,他怎麼驗證?有幾個最基本的假設

假設 1,我加密了 90 塊錢,你也加密了 90 塊錢,這就需要構造一個零知識證明去證明我們轉的錢是一樣的,不然就有問題了。可能是我說給你轉 90,你也加密了一個 90,但其實我只加密了 10,如果礦工沒有驗證這筆交易就打包,你就損失了 80 塊錢。

假設 2,礦工需要驗證我們轉出來的錢不是負數,我不能轉一個負 10 塊錢給你,我每轉一次,我自己增加錢了。

針對第 1 個假設,我們使用了 Sigma協議,它可以去做一個高效的零知識證明,證明咱倆加密的東西是同一個數。

針對第 2 個假設,我發出的必須是一個大於 0 的數,而且不能超過一個上限。以比特幣為例,比特幣一共才 2100 萬個,我不能給你轉 1 億個比特幣,所以礦工要判斷這個數在不在一個範圍內,就需要一個範圍證明 (Range Proof),它也要用零知識證明來做,目前最有效的 Range proof 叫做防彈協議 (Bulletproof),門羅幣就在用這個協議,這是 2018 年的最新成果。Bulletproof 也是目前學界公認的最有效的一個加密辦法,我們也會用 Bulletproof

假設 3,假設礦工認可了,那把我的錢減掉 90,把你的錢加 90,這個加和減的操作也需要隱秘地完成,礦工卻完全不知道,他只能知道拿了兩個密文一減一加,這個就要用到 ElGamal 協議,帶有加法同態特性的公鑰密碼學。

但又有一個問題,如果你把原版 ElGamal 協議直接拿來用,就不能使用 Range proof,不能使用 Bulletproof,因為呼叫時會不安全、會有漏洞於是,我們把 ElGamal 協議進行了非常巧妙的修改,將它扭轉一下,讓它保留加法同態特性,又能滿足 Range proof 和 Bulletproof 的條件,這也是我們論文裡非常有特色的一點。

此外,假如你給我轉了錢,我說沒收到,或者你給我轉了 100塊錢,我說我只收到 1 塊錢,其他人看不到、也不能幫你證明怎麼辦?這時你可以生成一個零知識 statement,你把這個資料交給任何人,他使用零知識證明驗證一下就 OK 了。比如你給我轉的是 100,你只需要把數字 100 加上生成的資料一起發給驗證者,然後驗證者就能知道你是不是轉了 100,這也是一個很強的特性,並不是所有密碼學方案都可以針對單條交易做驗證。

如果不使用這種方法,我只能把私鑰給他,但他看到了我的交易記錄,看到了我的餘額,我為了去驗證一條交易,也把其它交易的隱私性喪失了。所以,總結下來,我們用了數字簽名技術加法同態公鑰密碼學非互動式零知識證明,這三者構成了 PGC 的密碼學方案。

營長:PGC 目前還有哪些不足之處?如何解決這些問題?

PGC:不足之處肯定有,就像大家總嫌區塊鏈太慢,所以做了分片,之前比特幣不支援智慧合約,所以以太坊有了智慧合約,鏈太多了要跨鏈,所以大家做跨鏈,這是一樣的。我們這個技術肯定也有自己的不足。

首先是效能問題,在智慧合約層面上,無論是剛才我說的加法同態、非互動零知識證明、還是 ElGamal 協議和 Bulletproof,都需要耗費 gas經過很多密碼學最佳化後,如今最大的 gas 大概是 600 萬左右,一個塊裡大概是 800 萬 gas。我們需要用 600 萬 gas 做一次轉帳,金額大概是 0.01 個以太幣,花費有點高,所以我們還要繼續最佳化演算法、降低 gas,這是一方面。

另一方面,EVM 也在升級和最佳化,下一版本 EIP 1108 也會做相應的最佳化,按照它最佳化的程度來看,我們可以再最佳化 6-10倍,這樣一筆轉帳大概要花 100 萬 gas,就不貴了,一點都不貴。其實主要是效能問題和 gas 費的問題。

營長:PGC 目前主要有哪些應用場景?

PGC:目前來看,主要有以下 5 個應用場景。

  • 在錢包內實現機密交易功能,比如 Token fund 投專案,投了多少以太幣?這應該是隱私的,不應該被別人看見;

  • 我給員工發工資或者發 token,員工彼此之間也是看不見的;

  • 慈善捐款、拍賣;

  • 交易所大額提幣或充幣,USDT 大額轉帳,避免引發市場恐慌;

  • 以及機構間的隱私轉帳。

以太坊暗網,來了!

營長:請從技術和生態兩方面介紹 PGC 的整體路線

PGC:技術上,PGC 密碼學方案已經設計完成了,相關論文近期會在國際會議上發表。

接下來要完善我們的 App,從表面上看它就是一個 imToken,是一個錢包,但你可以認為這是以太坊的暗網,你轉什麼?轉給誰了?是什麼情況?都可以在這個“暗網”看到,但你在 Etherscan 上查不到。當有人想查這筆錢,比如你轉了多少個,你可以生成一個證明,告訴他轉了10個,隨便找一臺手機就能驗證了。

還要做跨鏈,我們要服務現有的比特幣使用者,透過跨鏈的方式把比特幣接到一個支援智慧合約的鏈上,之後再把它換過去,這是技術上要做的。

生態上,我們要努力擴充套件 PGC 應用,除了個人錢包外,我們還要接入諸如 Facebook 等企業的穩定幣,和他們一起合作推出企業級錢包,這樣企業與企業間的轉賬金額也是隱秘的,可以拓展各種各樣的應用,也要和公鏈合作,幫助公鏈實現機密交易的功能。

儘管我們有自己的錢包,但也會和像 imToken 這樣已有龐大使用者群體的錢包合作,透過智慧合約、介面實現機密交易的功能,即接入以太坊暗網網路。

營長:對中國的區塊鏈開發者說幾句寄語吧!

PGC:以太坊是未來的主流,如果你想深入瞭解區塊鏈,學習以太坊就好了,此外,如果你把比特幣看明白了,其它的也就都差不多了。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;