去中心化應用·區塊鏈技術概述,一文搞懂Dapp生態

買賣虛擬貨幣

來源 | 《去中心化應用·區塊鏈技術概述》

作者 | Siraj Raval

譯者 | 吳海星

編輯 | 喬治

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

區塊鏈這個領域很容易把人搞糊塗。似乎有數不清的創業公司、新幣種、意識形態和流行語層出不窮,很難把它們全都弄清楚。

根據 Melanie Swan 的《區塊鏈:新經濟藍圖及導讀》一書和其他人的觀點,可以把這個領域細分成三類:區塊鏈 1.0 是“貨幣”;區塊鏈 2.0 加上了合約(股票、債券、金融資產);區塊鏈 3.0 超出了純粹的金融領域,涵蓋了治理和健康之類的應用(Dapp)。

本文將探討這三類區塊鏈靠什麼來推進。

作為一名 Dapp 開發者,你只需要知道一點:那些能讓你的 Dapp 變得安全、健壯、可盈利的工具。本文將會描述蓬勃發展的 Dapp 生態系統,也就是非常容易製作 Dapp 的生態系統。我還會討論製作 Dapp 所需的技術,以及目前最可行的方式是什麼。

一直以來,Web 應用中有四個概念是處在集中控制領域中的:身份標識、財富、資料和計算。其中每一個都要對服務提供商有充分的信任,然而這種信任卻有可能遭到背叛。最近,在分散式系統中出現了一些新技術,讓使用者可以控制這些事情。接下來就讓我們研究一下這些創新。

去中心化資料

對我來說,這是最重要的概念。現在,我們放心大膽地把自己的資料交給“服務棧”,心甘情願地用自己的資料換取他們提供的免費服務,甚至會因為委託他們儲存資料而支付費用。但是實際上,只要使用者免費把資料給他們,他們就能靠這些資料把儲存資料的錢賺出來。我們相信提供商不會濫用我們的資料,也不會把資料賣給那些我們不願意向其暴露這些資料的人。

然而現實是,我們知道,只要把資料委託給一個集中式實體,這份信任就可能會被辜負。Amazon 的 Web 服務、Google 雲端硬碟、Dropbox 以及其他任何一家“雲”服務提供商,儘管有著分散式的計算後臺,但所有權都是集中的。

另外,隨著機器人和自動化技術的急速擴張,全球經濟正從以勞動力為基礎快速邁向以資訊化為基礎,資料將變成價值的主要形態。儘管人類的勞動力跟機器人沒法比,但在資料上卻可以一較高下——這是利用對世界的獨特看法而分析出來的資料,是透過五種感官處理過的輸出。我們不僅要擁有資料,還要在日新月異的世界中掌握其所有權。

那該怎麼解決這個問題呢?怎麼把資料以一種去中心化的方式儲存,讓你獨自擁有自己的資料?這個問題至少已經得到了 10 年的深入研究,並且已經由幾方提出了一個解決方案。理想的方案應該是提供一種去中心化的資料儲存方式,它要足夠健壯,並且儘可能不需要依靠信任保護資料。

1、方案1:把資料直接存放在比特幣的區塊鏈中

這種方法比較幼稚。它確實把資料去中心化了,因為每個人都有一份儲存資料的區塊鏈副本,但誰也不能修改資料。資料當然會用 SHA-256 加密,每個有錢包的人都會儲存一份資料副本,但只有掌握了私鑰的你能夠訪問。不過比特幣的區塊鏈不適合用來處理大量資料!區塊鏈的設計目標是儲存簡單的交易日誌,這個任務它完成得很好。但即便是隻儲存交易日誌,區塊鏈的規模在過去這幾年就已經超過了 38 GB,下載一次可能要花上幾天時間。

核心開發人員一直密切關注著擴充套件性和區塊鏈膨脹問題。在你把資料上傳到區塊鏈之後,比特幣礦工只能免費儲存你的資料,他們得到的報酬根本不足以負擔支出的成本,所以也就沒有了繼續維護比特幣網路的動機。

專門用一個放寬大小限制的區塊鏈來單獨存放額外的資料怎麼樣?即便用另一種“加密貨幣”作為報酬支付給為你儲存資料的礦工,這種辦法還是不行。因為區塊鏈會瘋狂增長,任何想要使用這種“貨幣”的人都要下載超級大的錢包。僅僅幾個使用者儲存一些圖片就會使其臃腫不堪,更何況我們即將步入 PB 級資料都很平常的時代。要獲得健壯的去中心化資料儲存,不管從短期還是長期來看,都不能把資料存在區塊鏈中。

2、方案2:把資料存放在分散式雜湊表中

分散式雜湊表(DHT)在過去 10 年裡得到了廣泛採用。它們不僅分發資料副本,還包含查詢資料的索引函式,可以確保彈性。像 KaZaA、Napster 和 Gnutella 這些早期的 P2P 檔案共享程式用的都是自己的 DHT,去中心化程度各不相同。一些用中心追蹤器來監測所有資料的移動,一些(比如 Napster)有所有資料都要透過的中心源,它們都有單一失效點(出於法律原因)。

真正把 DHT 發揚光大的是 BitTorrent,它現在仍然有 3 億多使用者。儘管有去中心化的資料儲存(BitTorrent 主幹 DHT),BitTorrent 仍然要靠中心追蹤器(比如海盜灣)來監測網路。海盜灣這樣的網站會由於法律原因被定期關閉,所以即便 BitTorrent 有資料彈性,還是會有一些失效點。

如果我們用 BitTorrent 的 DHT 存放 Dapp 的資料,是不是很好? BitTorrent 不僅提供了去中心化資料儲存,還提供了一種資料分發協議,透過在種子使用者和吸血使用者之間設定對抗性策略使頻寬的利用率達到最大化。

BitTorrent 的資料傳輸協議甚至比 Web 的還要快,因此它成了透過 Web 傳輸大型資料集(如高畫質電影)的主流方法。但用 BitTorrent 儲存資料也有問題,各個節點沒有長期為你儲存資料的動力。在 BitTorrent 網路中,需求越旺盛的檔案優先順序越高,所以只有在獲得人們的需要時,你的資料才會一直被複制並留在網路中。

然而在聲譽良好的中心伺服器上,比如 Amazon 的 Web 服務之中,即便只有你一個人用,資料也會一直放在那裡。為了保護自己的聲譽,他們只能依照合約儲存好資料,不會因為沒有其他人使用而不再儲存。

首先,我們要的不僅僅是 DHT 的去中心化儲存能力和 BitTorrent 的檔案傳輸速度——我們還想要持久儲存資料。因此,必須以某種方式激勵節點儲存資料。另外,我們需要保證指向資料的連結不會掛掉。網際網路最初的提案中就有一條是連結的永久性。

這個想法源自上都(今內蒙古錫林郭勒盟正藍旗境內)專案(Project Xanadu),在其所描繪的 Web 中,每個連結都有兩個方向:一端指向目標,一端指向它的源頭。也就是說,內容的建立者總能獲得建立資料的認定,因為所有連結都會鏈回到他們。然而這樣的 Web 始終沒能出現,所以我們現在用的是基於 HTTP 的 Web,伴隨我們長大、讓我們因熟悉而喜歡的也是單向連結。

有沒有哪個系統實現了這些功能呢?有,它叫星際檔案系統。這個開源專案目前仍處於 Alpha 階段。我非常喜歡 IPFS,並且是其協議的早期貢獻者之一。它的建立者 Juan Benet 曾經花了 5 年時間思考資料儲存問題,並最終付諸行動,釋出了 IPFS 科學論文來闡述所有的想法。我用了幾個月的時間來了解這個系統和他的思想框架,思考為什麼 IPFS 比其他方案好。目前,我覺得它最有可能成為最有價值的資料儲存方案。

IPFS 致力於幫我們發展出一個永久的、去中心化的 Web,一個永遠不會有死鏈的 Web,一個資料不再由單一實體控制的 Web。下載好 IPFS 客戶端後,使用者能用它向網路上新增任何資料,然後會得到一個雜湊值。之後,使用者就可以用這個雜湊值訪問對應的資料了。

跟基於 IP 定址的 Web 不同,IPFS 是一個內容定址系統。在 IP 定址系統中,如果命名伺服器失效,它的所有資料也會失效。內容定址的定址資料則高效得多,因為用它訪問資料不需要依賴單個伺服器的執行。從一個內容地址請求資料時,得到資料的速度要比從 IP 地址請求資料更快,因為它會根據內容地址路由到離你最近的資料副本。

從後端來看它是什麼樣的?

IPFS 用 DHT 儲存資料。它基於流行的 Kademlia DHT,還借鑑了 Chord 和 BitTorrent 的 DHT。使用者上傳到 IPFS 的資料會被複制到幾個節點上,所以即便某個節點失效了,資料依然可以訪問得到。除此之外,就像 BitTorrent 一樣,需要某份資料的節點越多,資料的彈性就越大,因為所有下載那份資料的節點都會分享它們持有的副本。

Chord 的頂級功能是它的 DHT 圈,它會建立和絃(chord),並將相互靠近的和絃擴充套件為更大的和絃,從而使 DHT 查詢在全域性節點內最大化。這樣,網路全域性看起來就像一系列不斷增大的和絃,而查詢將會得益於其效率,在必要的地方進行和絃之間的跳躍。

和絃

現在,像 Amazon 和 Google 這樣的集中式服務提供商都有遍佈全球的資料中心,使用者可以自行選擇用哪個資料中心來接收和路由自己的資料,但服務一般都會自動幫你選好。即便跟遍佈全球的資料中心比,類似 Chord DHT 這樣的系統還是有優勢的:它們可以提供一種特有的辦法,用多個節點來提升資料的傳輸效率。

IPFS 用 merkleDAG 作為 DHT 的結構,讓使用者在需要時找到資料,merkleDAG 是一種簡單靈活的資料結構,你可以把它理解成一系列相互連線的節點。說得具體一點,就是一個有向無環圖(DAG)。merkleDAG 看起來可能像一個連結串列或一棵樹。往 DHT 上新增資料時,系統會生成一個 SHA-256 多重公鑰-私鑰對,然後把它們兩個都交給使用者。開發人員可以透過程式設計將雜湊值鏈在一起,形成他們自己的微 merkleDAG。

一定要注意,IPFS 中的所有資料會形成同一個包含所有節點的泛 merkleDAG。IPFS 上的所有資料都是公開的,所以使用者要自己負責資料的加密。私鑰除了可以用來訪問資料,還能證明所有權。

IPFS 受到了 BitTorrent 的啟發——資料傳輸速度,為了尋找用於分享資料的同伴而採用的對抗機制。IPFS 團隊相信 Web 也應該採用這種工作方式。舉個例子,如果一所大學裡整個班的學生都跟 Facebook 的中心伺服器上請求同一個影片,就會佔用很多不必要的頻寬,還會產生很多不必要的資料冗餘。如果圖片就在附近,他們沒必要向那麼遠的伺服器發起請求。

在內容定址系統中,如果知道所需資料的內容地址,就可以從最近的地方獲取。節點間的資料分享不需要中心來協調。它跟 BitTorrent 一樣,採用了 HTTP Web 所用的伺服器 - 客戶端架構,並且也做成了分散式的。

IPFS

IPFS是如何在BitTorrent上進行改進的

IPFS 有個姊妹協議,叫作“檔案幣”“檔案幣”用於支付給礦工(儲存資料的節點),它採用了一種稱為 BitSwap 的新型“價值換資料”機制。“加密貨幣”在這裡發揮了作用:它的價值轉移很快,並且允許根據每個相關位元組的儲存進行微支付。“檔案幣”目前仍在開發當中,但 IPFS 已經可以使用了。

IPFS 命令現在是免費的,礦工儲存資料完全出於他們對網路的熱愛。最終,所有的上傳和下載都會需要“檔案幣”。“檔案幣”很有可能成為直接建立在比特幣區塊鏈上的“資產”,因此使用者可以用比特幣“購買”儲存空間。

除了上面這些,IPFS 還借鑑了 Git 管理所有資料版本的版本控制模型。Git 用 DAG 為資料版本建模,IPFS 用其作為整個系統的結構。使用者能看到資料的版本歷史(或者任何已經獲得解密訪問許可權的資料)。

因此,IPFS 是 Git、DHT、SFS、BitTorrent 和比特幣的集大成者,用這些系統最優秀的思想建立了一個去中心化資料儲存網路。IPFS 希望有朝一日能將 Web 的 HTTP:// 協議換成 IPFS://,但它們也能協同工作。在談到具體實現時,我會詳細介紹幾種方法。

IPFS 是經過深思熟慮的去中心化儲存解決方案。儘管這一領域還有其他表現不錯的競爭對手,但它是最健壯的,優於所有的“加密貨幣”專案。下面來看一下其他方案。

  • 以太坊:以太坊致力於構建一個通用(圖靈完備)的區塊鏈計算語言,包括去中心化儲存。他們的工作重心是確保 DAO(他們指的是“民主自治組織”)的安全,儲存則放在了次要位置(寫本書時)。

  • StorJ:它已經預先開採了很多 StorJ 幣,並做了一些漂亮的設計。它的設計很整潔,在奧斯汀駭客馬拉松上贏得了勝利,而且看起來開發小組的人也知道自己在講什麼。然而不管怎樣,在駭客馬拉松結束了一年多之後,它還是個霧件。

  • Maidsafe:與跟以太坊一樣,想做的事情有很多。他們沒有使用工作證明,目標是為計算、儲存和“貨幣”建立一個去中心化平臺。他們已經在這個平臺上工作了 6 年,但看起來還沒得到足夠多的關注。

去中心化財富

比特幣是第一個成功的去中心化財富儲存。在比特幣之前,透過 Web 傳輸價值時需要一個可信的第三方提供商(銀行)。比特幣實現了去中心化價值傳輸,滿足了 Dapp 內部對去中心化支付的需求。

那些“山寨幣”怎麼樣?萊特幣、狗狗幣、點點幣、暗黑幣和肯伊幣怎麼樣?山寨幣一般是從比特幣的原始碼中分化出來的,新增了一些由於種種原因被比特幣的核心開發人員拒絕採納的功能。比如說,萊特幣建立者想要提高支付速度,於是複製了比特幣的程式碼,新增了一些加速程式碼。萊特幣就由此誕生了。

萊特幣的市值相當大,至少已經在“加密貨幣”前五名的位置上待了一年。萊特幣是極少數出於好意(更快的支付速度)的幣種之一。大多數山寨幣就不一樣了:如果不是讓搞笑成為其支撐資金的模因(比如狗狗幣),就是玩了“吸引散戶接盤”的套路。

山寨幣的思想是,人們可以建立一種新幣,給它貼上標籤,然後透過媒體曝光來哄抬它的價格(肯伊幣)。他們鼓吹說這個“加密貨幣”將來會非常值錢,早期買入的投資者都會大賺一筆。

這個新幣的價格一旦高到一定程度,建立人就會把它全部賣掉,換成更穩定、更長久的貨幣,比如法定貨幣。這是山寨鏈報裡的常見套路,明顯會對“加密貨幣”的生態系統造成極其惡劣的影響。

首先,這些山寨幣會玷汙“加密貨幣”的名聲,讓潛在的投資者變得越來越謹慎。其次,它們在毫無必要地與比特幣區塊鏈爭搶市場份額,卻不能帶來絲毫真正的價值。這反過來又會損害比特幣的價值,而且所有將比特幣作為最常用“加密貨幣”的系統也都會深受其害。

當然,比特幣使用的是工作量證明方案。也就是說,網路中的每臺挖礦機都必須生成一個反映其計算力的計算證明,並負責處理事務。作為回報,挖礦機會得到比特幣,作為它們維護網路的報酬。“加密貨幣”界的一些人覺得工作量證明消耗的能源太多了,並且只是防範女巫攻擊的短期方案,所以在共識機制上展開了大量的研究。

工作量證明用了大量計算力,並且挖礦機維護網路所消耗的電力成本高達 1500 多萬美元。如果能找到更好的網路維護方法,就不用這麼浪費了。有兩種工作量證明的替代方案比較受歡迎,分別是權益證明和代理式權益證明。

儘管在比特幣之後進行了大量的共識機制研究,比如權益證明,但目前還沒有什麼能像工作量證明那樣抵抗得住女巫攻擊。雖然計算昂貴,但目前來看沒有比它更好的選擇了。比特幣網路上的投資已經超過 30 億美元,有難以計數的創業公司、投資人、媒體和零售商接受了比特幣。它有先發優勢,並且已經透過 5 年多的奮鬥在一些國家或機構中贏得了認可。

我們不需要重新開始。即便發現了優於工作量證明的共識機制,也應該讓比特幣的核心開發人員實現它,而不是交給某個山寨幣。這樣整個社羣才能更快前進。

有些人可能會說這是“比特幣最高主義”。反對者認為比特幣最高主義者一直在鼓吹比特幣的先發優勢,並且認為他們為了保護自己在比特幣網路上的投資,堅決反對任何競爭者出現。比特幣最高主義的負面影響就是,不管多麼有價值,任何不在比特幣協議範圍內的想法都會被迅速淘汰,得不到社羣應有的認可,相關工作也會停滯不前。

這個問題有個兩全其美的解決辦法:側鏈提案。

該提案基於 Adam Back 與人合作的一篇論文 。

https://blockstream.com/wp-content/uploads/2014/10/sidechains.pdf

Adam Back 是工作量證明的發明者,中本聰曾在其關於比特幣的論文中提到過他。

https://bitcoin.org/bitcoin.pdf

這個提案源於一個想法:要測試共識機制以及任何關於“加密貨幣”的新想法,開發人員必須建立比特幣區塊鏈的分支,做一個全新的山寨幣來驗證其假設。

這對比特幣沒什麼好處,並且對開發人員而言,要發起一個新的區塊鏈是很困難的。巴克團隊提出的解決方案是透過程式碼讓比特幣在主鏈(比特幣區塊鏈)和側鏈之間自由切換。也就是說可以建立一個全新的區塊鏈,並很容易地將它作為比特幣區塊鏈的側鏈。你無須發起自己的挖礦網路,就能得到比特幣工作量證明的安全保障。

那些已經有“加密貨幣”投資經驗(擁有比特幣)的人會成為你的潛在客戶群,因為他們可以直接使用自己手裡的比特幣。最後,在兩個鏈之間傳送比特幣不需要任何轉換。雙向側鏈現在正在開發,很快就會發布。

比特幣區塊鏈是相對安全的區塊鏈,因為世界上所有超級計算機的計算力加在一起也不如它多,所以它對女巫攻擊的防禦能力也是最強的。從頭開始發起一個工作量證明區塊鏈非常困難,因為早期的計算資源太少了,攻擊者很容易湊夠 51% 的計算力從而接管整個網路。

除此之外,開發人員應該專心構建使用者需要的去中心化應用程式——這已經是個很有挑戰性的任務了,不應該再分散精力去從頭開始發起一個區塊鏈。如果你想試驗共識機制或者實現一些新的“加密貨幣”技術,側鏈可以幫你。

如果你並不想實現新的“加密貨幣”技術,而是隻想為自己的去中心化應用程式發行一個“內部貨幣”,該怎麼辦呢?如果要讓這種“貨幣”可以跟隨網路一起增值,允許使用者訪問稀缺資源,並且激勵他們一起擴大網路,該怎麼辦呢?這樣的話,你無須建立新的(側)鏈,只要直接在比特幣上建立一種資產就可以了。儘管在這種情況下也有好幾種選擇,但我會選擇彩幣。

Counterparty

Counterparty 是比特幣 2.0 的協議,讓使用者建立和管理資產、制定拍賣、出價,甚至在比特幣上建立圖靈完備的合約。聽起來是不是很棒?但問題是 Counterparty 把這些有趣的特性全都放到了協議中。它不是模組化的,沒有分層按順序排好。

在比特幣區塊鏈上發行資產並允許使用者用比特幣輕鬆傳輸是個很好的想法,但它們卻跟股息功能合併到了一起。分配股息是個挺好的小特性,但卻是 Counterparty 內部的操作,不是用本地比特幣追蹤資產。所有的事情都被迫揉進了一個過度雕飾的協議中。

舉個例子,投注就是在資產上新增了一個具有實驗性、挑戰性的特性。更好的做法是,構建簡單的幾層,每層都完成一件事情。模組化是優秀軟體的標誌。雖然 Counterparty 的野心很大,卻根本沒有做到模組化。

假設有一個協議類庫市場,所有協議類庫都會相互競爭,無疑是最優秀的最終勝出。可以想象一下,如果所有類庫都令人絕望地交織在一個包裡,你要麼把它們都裝上,要麼一個也不裝。這簡直就是一場噩夢,而這恰恰就是 Counterparty 要迫使你做的事情。

Counterparty 中有一個 XCP“貨幣”。這是一個令人迷惑不解的元素,沒有人想要它。如果你想用 Counterparty 的 API 構建一個應用幣,就要應對 XCP 以及所有轉換操作。如果要建立資產,不管它是什麼型別的,都需要銷燬 0.5 個 XCP(按當前價格計算要超過 1 美元)。XCP“貨幣”的供應是固定的,並且因為只要有人發行新的資產就要銷燬“貨幣”,所以它的“貨幣”總量一直在減少。

在使用 Counterparty 的某些特性時需要用到 XCP 讓開發人員覺得很煩。這意味著你得一直盯著牌價(XCP/BTC)。雖然有平臺在追蹤這一價格,並且能跟所有市場一樣提供實時報價及流動性需求,但說真的,這有什麼意義?你只不過要給你的應用建立一個“內部貨幣”,為什麼要應付這麼多麻煩事?這基本上就是一個沒必要去跨越的巨大障礙。因此,這是個糟糕的主意。

Counterparty 一直在更新其客戶端,那些依賴它的 API 的人,比如 Gems 應用,因此得到了一個混合的結果。因為沒有模組化,所以如果出現 bug,一切都會馬上崩潰。總而言之,Counterparty 過於集中式管理了。好在我們還有更好的選擇(彩幣),它們提供了必要的模組化和去中心化,也無須使用額外的“貨幣”。

Hyperledger

Hyperledger 相信自己是“代幣無關”的,即允許發行者不用基於底層貨幣來發行新幣種:既不需要比特幣,也不需要法定貨幣,更不需要其他任何山寨幣。它在理論上是健全的,但在實踐中卻不是,因為它靠的是一個籍籍無名的共識機制。在這一領域有很多研究,然而還沒有哪個能夠證明自己足以跟工作量證明相抗衡。

有種辦法可以輕易切斷任何一個區塊鏈 2.0 專案發出的噪聲,那就是深入探究它們的共識機制。如果沒有使用工作量證明,或者不是基於比特幣的,就看看它們的市場份額有多大,再看看出現過多少次安全漏洞。我每次這麼做都會發現安全漏洞。下表彙總了這一領域的各種信仰,其製作者是 Meher Roy。

“加密貨幣”的政治信仰

代幣不可知論是一套強有力的觀點,但我相信比特幣可以跟現有的金融系統合作。我們已經度過了比特幣的蜜月期,同時也意識到,不管銀行系統多麼老舊,它在世界上確實有一席之地。

圖靈完備的智慧合約怎麼樣?這是在 Dapp 中建立去中心化支付系統時不可缺少的金融工具中的第二部分。以太坊團隊在這方面取得了最大的成功,但他們還有更大的野心。以太坊要建立一個圖靈完備的區塊鏈、一個去中心化儲存網路、一個去中心化通訊協議、一個執行以太坊 Dapp 的新型瀏覽器,以及一種編寫以太坊 Dapp 的新型指令碼語言。

我們稍微退一步來看。一個團隊不能、也不應該想要單獨完成所有這些想法,畢竟每個想法都是公司量級的。以太坊籌集了很多資金,也獲得了很多關注,但是就算有創始人 Vitalik Buterin 的聰明才智,也不能指望其創造出下一代比特幣。就像比特幣協議的首席開發者 Gavin Andresen 所說,他們將來要麼被安全問題搞得焦頭爛額、疲於應付,要麼會大規模縮減其區塊鏈。

圖靈完備的指令碼語言是個好主意,你可以用它做任何想做的事。比特幣的指令碼語言特意做了限制,以防止無限迴圈這種惡意指令碼出現(無論是出於惡意還是無能)。Gavin Andresen 說以太坊的大部分目標都可以用比特幣實現,而且核心開發人員已經開始動手實現其中一些特性了。

從務實的角度來講,要想讓人們使用你的 Dapp,最簡單的辦法就是確保這個 Dapp 能用他們已有的“貨幣”,而目前份額最大的就是比特幣。所以,你應該在比特幣或者側鏈上發行一種彩幣,因為側鏈基本上就是帶有額外特性的比特幣,比如更快的交易速度。

去中心化身份標識

身份標識的概念已經被人們爭論了幾個世紀。到了網際網路時代,這個詞有了全新的意義。什麼是身份標識?誰擁有身份標識?在網際網路上應該如何看待身份標識?

由於密碼學最近的發展,很多解決方案都已經“假定有了一個公鑰基礎設施”。基本上,如果人們願意安全地儲存一個私鑰,身份標識就變成去中心化的了。只有那些有金鑰的人才能訪問它。BitAuth 是一個現成的好例子。

BitAuth 用比特幣現有的技術建立一個使用 secp256k1 的公-私鑰對。不需密碼就可以進行跨 Web 服務的認證。它會給你一個系統識別碼(SIN),也就是公鑰的雜湊值。它用簽名防止中間人(MITM)攻擊,用隨機數防止重放攻擊。你的私鑰永遠不會暴露給伺服器,你可以安全可靠地保管好它。身份標識是去中心化的,所以不需要把它交給一個可信的第三方,而是可以自己保管。

另外還有一些合併網際網路身份標識的嘗試,都取得了不同程度的成功。其中最值得注意的就是 OpenID 協議。OpenID 是一個利用 HTTP、SSL 和 URI 等已有 Web 協議的去中心化身份標識協議。它的核心思想是,身份標識已經像碎片一樣分散在 Web 上了,透過使用 OpenID 協議,使用者可以將現有的 URI 傳輸到一個賬號中,而這個賬號在所有 OpenID 支援的網站上都可以用。

OpenID 將服務提供商需要儲存身份標識的需求進行了抽象,讓你可以只用可信的儲存源,然後將身份標識帶到多個提供商那裡。在身份標識合併的嘗試中,OpenID 是目前來看最成功的一個:Google、Yahoo! 和 Twitter 都已經是 OpenID 的提供商了。

這種方式很好:我們無須重複註冊就可以將自己的身份標識帶到各個網站上,也就不需要一次次地重複輸入身份資訊了。這樣不僅更方便,我們也不會因為要把身份標識資料儲存在新的服務上而提心吊膽。不過 OpenID 仍然有潛在的安全隱患,因為你還是要把自己的資料託付給這些服務提供商中的一個。

這個問題又被稱為 Zooko 三角,名稱幣旨在幫我們解決這個問題。

Zooko 三角

Zooko 三角是一種猜想。它指出,在一個按某種協議給出名稱的系統中,只能實現其希望達成的三個特性(對人類有意義、去中心化、安全)中的兩個。OpenID 實現了安全性和對人類有意義。名稱幣做了補充,新增了去中心化。名稱幣基本上是一個第三方身份標識提供商,由區塊鏈作為你和請求身份標識的服務之間的中介。名稱幣的區塊鏈是比特幣區塊鏈的早期分支之一,它的價值已經經過了時間的檢驗。

大多數山寨幣都已經煙消雲散了,名稱幣能留下來是因為只有它補足了 Zooko 三角。使用者可以向名稱幣的區塊鏈傳送一條交易來註冊自己的名稱——他的名稱會嵌在交易中,放在名稱空間 /id 下。當使用者傳送交易時,如果是唯一的(之前沒有人發過),名稱幣就把它存下來,否則不存。

也就是說,只要人們能想到名稱,名稱空間就可以存。儘管這樣使用者可以建立和選擇自己(人類易讀)的標識,但由於人類易讀的短語是有限的,這也是個問題。標識的分段確實有用,因為在新服務中,使用者可以從新的名稱空間中選擇身份標識。

換句話說,這是個折中方案:讓一個通用的身份標識提供商補足 Zooko 三角是一項重要創新,但名稱空間是有限的。不過域名註冊也是這樣的。現在是 ICANN 控制著域名註冊,這是一個得到美國商務部支援的集中式組織。名稱幣由於提供 .bit 域名的註冊而大受歡迎,變成了相對於 ICANN 的去中心化選擇。Chrome 或 Firefox 之類的常規瀏覽器無法訪問這些 .bit 域名。要進行訪問,目前只能透過 .bit web 代理,或者下載外掛。隨著 .bit 越來越受歡迎,瀏覽器可能會對該協議提供原生支援。

大多數人不需要建立 .bit 域名,因為那會增加不必要的麻煩,讓使用者需要安裝額外的軟體或透過代理才能訪問你的網站。在名稱幣區塊鏈中註冊一個使用者名稱相當容易。只需要將一些比特幣換成名稱幣,下載錢包,然後就可以註冊你的使用者名稱了。

但如何登入到名稱幣區塊鏈中呢?認證和授權的工作機制是怎樣的?最近建立的 NameID 是個兩全其美的方案:使用者可以用自己的名稱幣 /id 登入到 OpenID 支援的所有網站中。這樣,名稱幣終於可以無障礙地進入主流 app 市場了。

不過,將身份標識去中心化的代價是什麼?好吧,其代價跟把資料用 IPFS 去中心化,把財富用比特幣去中心化一樣:使用者必須保管好自己的私鑰。對於駭客來說這沒什麼,他們喜歡去中心化和保護隱私。當涉及在網際網路上使用正確的工具這一話題時,他們是最理想的人群。在追求所用工具的高效和完美上,駭客們會為自己天生的驅動力而自豪。他們用 GPG 加密通訊,用 Tor 客戶端來防禦自己的瀏覽歷史。

對他們來說,為了去中心化額外儲存些私鑰完全沒問題。但主流人群呢?他們真的關心這些嗎?我覺得他們並不是特別關心隱私和去中心化。再考慮到電腦保安知識的平均水準,公平地說,我覺得大多數人都不能或者不願意安全地保管加密金鑰。迄今為止最大的比特幣應用 Coinbase 在市場上的成功就是明證。Coinbase 跟去中心化是對立的:它是比特幣銀行。它提供了保管私鑰的服務。

很多比特幣社羣反對任何形式的集中,一些人甚至連 BitTorrent 追蹤器這種輕微的集中都不想碰。真正的問題是:你願意在多大程度上去中心化你的軟體?想去中心化域名並讓使用者保管三組不同的金鑰嗎?這個問題的答案取決於你的受眾群,以及去中心化帶來的收益是否值得你這麼做。

比如提到“去中心化的 Dropbox”這個 Dropbox 的競爭對手時,答案可能是肯定的。如果有競爭對手能承諾在保證安全的前提下將資料去中心化,我敢打賭,肯定有足夠多的人認為有充足的理由來安全地保管好一個私鑰,以便讓這樣的系統工作。

即便那些人真的不想保管,也會有商家跟進,提供儲存即服務的業務。必須承認,即便用了這麼長時間的比特幣,我也還是在用 Coinbase 的服務保管我的比特幣。我只是不想因為持有比特幣而提心吊膽地害怕自己的電腦被黑!我之所以更相信 Coinbase,是因為他們持有很多使用者的資產,CEO 看起來也值得信任(至少比 Mt.Gox 的 Mark Karpelès 可信),並且其背後的兩個投資商(安德森·霍洛維茨和聯合廣場風險投資公司)也很可靠。

我認為,我們不需要建立完全沒有信任關係的系統,而是應該建立更可信的系統。我喜歡一個關於火車的例子。假設有一列從舊金山開往洛杉磯的火車突然撞車了。如果火車的控制權集中在排程員手裡,我們就知道誰應當承擔責任(排程員)。如果火車的控制權分散到了每個乘客手裡,則無法追究每個人的責任,也很難找到那個壞人。

去中心化本身沒什麼好的,必須在明確的目的下和真實的用例中才能體現其優勢。Dapp 可以有不同的去中心化程度,這要取決於它們各自的用例。毫無疑問,如果要建立一個組織秘密活動的應用,那就應該是去中心化的 Dapp。如果要建立一個想得到廣泛認可的社交網路,用 .bit 做域名很可能並不是什麼好主意。

如果你用了一個把資料儲存在 IPFS 上的 Dapp,並且它還用比特幣區塊鏈上的彩幣發行了自有“貨幣”,那麼你很可能也會用 NameID 儲存使用者的身份標識。這裡可能會有三組金鑰合併到某種本地或者第三方的金鑰庫中,讓使用者可以訪問並使用你的軟體。

去中心化計算

我們已經介紹了資料、財富和身份標識的去中心化儲存,那麼計算呢?我們能把 Web 應用程式直接存放在 IPFS 上並執行它嗎?好吧,既可以也不可以。IPFS 只是一個檔案系統,跟其他所有的檔案系統一樣,在它上面執行和顯示靜態網站完全沒問題。

但對於我們現在稱為後臺系統的動態應用程式而言,則需要一個編譯和執行環境,比如 Node.js 和 Ruby on Rails —— IPFS 不行。因此,雖然可以把應用程式的資料存放在 IPFS 上,也還要考慮要把原始碼放在什麼地方。

為此,我們有兩個選擇。

第一是把資料儲存在 IPFS 上,把原始碼託管在傳統的虛擬機器(VM)提供商那裡,比如 Heroku。VM 模擬了特定的計算機系統,其操作是基於(假想或真實的)計算機功能和架構的。VM 的實現可能涉及特殊的軟體、硬體及兩者的組合。Heroku 是非常流行的平臺即服務(PaaS)提供商,讓使用者非常輕鬆就能用上 VM。虛擬機器上可以執行 Go 和 Node.js 等程式碼寫成的動態後臺系統,還可以用 MongoDB 這樣的內部託管的資料庫來儲存資料。

如果把原始碼放在 Heroku 上,資料放在 IPFS 上,那麼使用者仍然會相信資料是屬於他們的,你沒有把資料賣出去賺錢。但他們不能保證在伺服器上執行的程式碼就是你開源的程式碼。除了無法驗證,這還意味著有中心失效點(Heroku)。

第二種辦法是把資料儲存在 IPFS 上,把原始碼部署到構建於 IPFS 之上的去中心化 VM 上。有這樣的東西嗎?最接近的專案是 astralboot這基本上是一個 golang 伺服器,只是它直接從 IPFS 上拉取檔案,並且允許你執行基於 IPFS 的 Debian 環境。也就是說如果你在 astralboot 上部署了一個動態應用程式,它是搭建在 IPFS 上的,你只需要在 astralboot 上的 Linux 環境中配置出特定的環境。

另一個選擇是以太坊自己的 EVM(以太坊虛擬機器)。以太坊的區塊鏈跟比特幣區塊鏈有很多不同:有不同的塊時間,圖靈完備的合約,並且它是一個去中心化狀態機。我認為它雖然是 VM,但並不完整,最起碼肯定不是大多數開發人員想要的那種 VM。

在今天的軟體市場上,幾乎一定要從第三方那裡請求資料。在這一領域有很多競爭者,他們專注於資料利基市場,為你提供指向其他服務的 API。與其每次都做重複性的工作來為你的應用建立可信的資料來源,還不如直接用第三方的 API。以太坊 EVM 的問題是無法獲取區塊鏈之外的資料,除非資料提供者已經在自己的伺服器裡設定好了智慧合約,能夠跟以太坊協作。

這對於作為 Oracle(可信的聯合資料來源)的新 API 來說是好事,但對於已有服務來說卻不太妙。以太坊區塊鏈和比特幣區塊鏈都不能從外部請求資料。這種不便是故意實行的安全限制。如果能從區塊鏈裡呼叫 API,駭客有可能用各種資料請求逃脫區塊鏈,最終結果就是造成網路膨脹。所以單獨將區塊鏈當作完整的 VM 來用不是個好主意。

另外一個專案是 Go-circuit,會建立在機器叢集上執行例項的小型服務程序。它們形成了一個流暢的高效彈性網路,來自任何一臺機器的分散式程序都可以協調同步。這是一個為 Go 程式準備的分散式執行時,還整合了 Docker。如果你的專案用的是 Go 語言,那它很棒,否則的話它對你來說就沒什麼用。

所有這些關於去中心化計算的討論都提出了一個問題:如果計算是個市場會怎麼樣?想象在一個網路中,真正有用的工作量證明計算是在側鏈中,像網格幣和素數幣之類的一些幣種已經在這麼做了。但它們對使用者決定的新計算來說是不可用的(以可驗證的方式),它們是基於造幣者需要的現有計算的。我們需要的是 Dapp 開發者能夠透過易於訪問的介面部署程式碼的 P2P 去中心化計算。

我們想要的網路有自己的計算幣,Dapp 開發人員會為了計算他們的程式碼而向挖礦機、計算引擎支付費用。隨著使用者量的增長,網路的價值會不斷增長,從而帶動計算幣的價值跟著增長。這是加密研究的一個領域,所以我相信,肯定有像 astralboot 這樣的產品在加緊研發中,它們是以最快方式做原型的希望。

如果你覺得 astralboot 太難配置,也還有 Heroku 可以用。如果 Heroku 失效了,而你的程式碼是開源的,那麼任何人都可以把它重新上傳到新的伺服器上,訪問那些放在 IPFS 上永久的、使用者擁有的、可公開驗證的資料。如果計算市場成為現實,你就可以直接從瀏覽器上執行動態應用程式了,就像現在執行在 Web 的域主機上一樣。

去中心化頻寬

之前已經討論過 Dapp 中能去中心化的 4 個重點了:資料、財富、身份標識和計算我們還談到了域名註冊,不過在大多數情況下都沒有這個必要。接下來我們要討論去中心化頻寬。

對於大多數使用者而言,ISP 在你和網際網路之間充當閘道器的角色。有些 ISP 跨越國家,作為中央中樞把人們連線起來。此外,ISP 還解決了“最後一公里”問題,把終端使用者連線到更快、容量更大的網際網路“主幹網”上。“最後一公里”只是電信行業用來指代電信網路最後一層分支的詞語,它將通訊連線送到散客那裡。真正直達客戶的是網際網路網線。

網際網路

AT&T 和 Comcast 之類的 ISP 靠為我們提供網際網路接入來獲利,因為現在除了 ISP,我們沒有別的選擇。其缺點是,這些集中式閘道器也是中心失效點。政府可以根據需要關掉它們。ISP 還必須遵守當地的法律,建立不允許使用者訪問的 IP 黑名單。

這全都管用,因為現在還沒有什麼能取代它,不過有其他選擇已經開始出現了。最新的例子是 iOS 上的 FireChat,這款應用是由一個叫作開放花園的公司建立的。FireChat 利用 iOS 的多端連線特性,實現手機之間點對點的直接對話。它不需要 ISP。FireChat 是網狀網路應用程式的範例。網狀網路是標準的集中式網際網路的去中心化版。在網狀網路中,使用者不需要透過中心閘道器來訪問站點。他們可以直接連線到最近的路由器上,一般就是附近的電腦。

現在有很多已經投入使用的網狀網路。西班牙有世界上最大的網狀網路之一,那裡有超過 50 000 人需要訪問網際網路,卻沒有 ISP 為他們提供網路接入。在紐約遭遇颶風期間,網線斷掉的情況下,網狀網路被用於傳遞寶貴的救援資訊。

在舊金山也有大量的“暗”網,只對其所建立的秘密社團內部的訪客開放。網狀網路一般無法訪問常規網際網路及其中的資料。如果環中沒有隧道,就無法訪問到正常的網狀網路。只有透過隧道到網狀網路的來回切換才能建立起隧道。現在還沒有主流硬體廠商能夠支援這兩項工作同時進行,但你可以藉助開放花園和 CJDNS 這樣的專案來使用混合網路。

這要稍微難一點,因為除了軟體,還涉及硬體的變更。路由器應該有能力同時訪問兩個網路,這樣就能從常規網際網路中拉取資料並用在網狀網路中,從而讓它不能被關掉。

儘管去中心化頻寬值得擁有,但只有在網際網路審查和 Web 訪問被阻斷的情況下才有這個必要。我覺得如果大範圍出現這種情況,現實需求將會把去中心化頻寬變成主流選擇。使用區塊鏈,我們能讓其他計算裝置取代 ISP 成為閘道器。他們能透過用“加密貨幣”路由資料和頻寬證明來獲取報酬。

就像“加密貨幣”能將計算和資料儲存的 P2P 市場變成現實一樣,“加密貨幣”也能促成頻寬分享。“加密貨幣”能在集中式力量存在的地方培育出市場。這些市場可能是計算、儲存、頻寬,以及任何能想象到的“真實”和“人造”的稀缺資源。我們將會看到,經濟變得越來越依賴於資訊。隨著所有基於勞動力的事情慢慢被自動化吞噬,資料市場極有可能慢慢變成最大的市場。

以上,分別討論了去中心化資料、去中心化財富、去中心化身份標識、去中心化計算、去中心化頻寬,當然,還有很多其他應用場景沒有涉及。

對於以上作者描述的場景,你贊同嗎?

免責聲明:

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

推荐阅读

;