Polkadot類似於區塊鏈世界的中國電信
本文譯者:萬鏈互聯—嶽利鵬,本文係經作者同意發表,任何經營性媒體(報刊、網站或個人)未經授權,不得轉載、複製或以其它方式發表;獲權轉載者需注明出處。否則將依法追究其責任。
互聯鏈或跨鏈(Interchain) 是公有鏈領域的下一個通用性技術,Polkadot 和 Cosmos 是這個領域的兩個前瞻性項目,值得關注。
——奚海峰推薦
譯者嶽利鵬:我之前翻譯了Polkadot的白皮書,關注微信公眾號“鏈互聯”,點擊菜單就可查看,但白皮書過於專業,大部分非技術的同學都表示看不懂,這篇文章隻是鬥膽發表達一下我的個人理解。
在介紹Polkadot之前,不得不先說下論文作者:大名鼎鼎的Gavin Wood。大部分人會說:我隻聽說過中本聰和Vitalik神童。
Gavin行事過於低調和高冷,不是中本聰這樣的比特幣創世紀人物,也不是Vitalik這樣的以太坊象征性人物。深入研究過以太坊技術和曆史的人,都知道Gavin Wood做為以太坊創始人的重要性。Vitalik發起了以太坊項目,他個人書寫了最初的白皮書,然後發起眾籌,組織開發,Gavin Wood作為CTO加入以太坊,之後撰寫了寶典級別的黃皮書 YellowPaper,專業術語叫形式化證明,其實也不是數學公式證明,而是對以太坊最細節的邏輯和架構進行了描述,如果你是最大牛級別的程序員,不用照抄Go或Python的客戶端,是可以直接對照黃皮書把以太坊重新實現一遍的。
以太坊相對比特幣複雜了一個數量級,黃皮書全世界能直接看懂的人估計也不超過一百個。之後他幾乎是一個人寫完了最早C++版本的以太坊客戶端cpp-ethereum。另外以太坊還有個Python的原型展示客戶端py-ethereum,和真正在用的Go語言的官方客戶端Geth。
之後由於種種原因,Gavin Wood離開了以太坊,成立了Ethcore,按照cpp-ethereum重新開發Rust語言版的以太坊客戶端:Parity。Rust語言號稱超高性能、超高安全、超高開發難度,代表著最新的編程語言技術,但還遠未流行起來。
Gavin Wood敢首先吃螃蟹,用它搞定了以太坊,性能上是Geth和C++客戶端的近3倍。僅是平常速度快倒沒什麼,去年9月以太坊DevCon2開發大會的前夜,黑客利用Geth的一個內存泄露漏洞專門組裝了一個交易,讓Geth客戶端全部崩潰,留下Parity撐下了當天的開幕,好是尷尬。此後的兩個月,以太坊遭遇重重攻擊,由於部分opcode定價過低等,又被黑客發送大量IO相關的交易使節點運行緩慢,Geth內存爆滿,隻有Parity由於本身架構的優勢硬頂了下來。那段時間Geth天天升級客戶端,才能勉強維持同步。Parity幾乎一戰成名,礦池節點紛紛從官方的Geth換成了Parity。
之後在以太坊關於狀態樹清理的第四次硬分叉中,Geth又由於代碼編寫錯誤引發意外,與Parity走在了不同的叉路上,幾十分鍾後V神宣布Geth那條叉作廢,全網一臉懵逼,你讓那些還在用Geth的交易所、礦池、用戶怎麼搞,趕緊停止充值提現,停止挖礦,隻能卸了Geth去裝Parity。後來Parity的用戶界麵又甩了Geth上的官方錢包Mist幾條街。
以太坊動蕩的2016下半年終於平靜了,Ethcore也更名為ParityTech,正式從以太坊獨立,並在去年10月份宣布了Polkadot項目,“史稱”第三代區塊鏈技術,主攻跨鏈任意消息通信。現在的區塊鏈技術,包括比特幣和以太坊,雖說是全世界上萬個節點,但本質上隻有一台普通PC的運算能力,否則一般用戶的電腦就不能作為一個全節點同步全網數據,然後可以不信任任何人地在本機上做運算做決策。如果沒有全節點,用戶就要到某一個全節點那裏去讀取數據,那萬一他給你的數據是假的呢,誘導你做出錯誤決定怎麼辦。普通電腦的cpu、帶寬、內存、硬盤都有限,所以現在的比特幣10分鍾隻有1M數據量,以太坊17秒470萬Gas,一般複雜度的交易估計隻能支持40筆,一個爆款ICO能堵上一天。如果區塊鏈將來需要承載更多的事務,需要解決擴容的根本問題,大家也都意識到了這點,也有各種嚐試。
另一方麵目前的鏈沒有互通的功能,以太幣和比特幣的兌換隻能通過中心化的交易所進行。你充值BTC給交易所,等半小時到賬,掛單買成ETH,再提現到自己的以太坊地址。這個中心化的轉接場所是完全違背區塊鏈去信任的自由精神的,你充值到交易所的幣,其實已經完全不是你的了,交易所可以賴皮說根本沒收到,或者直接跑路,黑客還可以偷走,然後大家也經常被交易所的各種不作為問題搞得神煩。這種跨鏈代幣兌換的問題還是比較基本的,另一個跨鏈項目Cosmos主攻這個方向。
Polkadot的誌向更加遠大,比如以太坊目前無法直接讀取現實世界的數據,需要一個用Oracle的概念由某個人輸進去,單條以太坊也承受不了過多的邏輯。以太坊的未來方向是分片,好多條相同技術的以太坊可以相互任意通信,執行合約等。分片是同構跨鏈,這是個很好的方向,問題是以太坊是否能壟斷區塊鏈世界。它的技術滿足不了一些關於隱私、性能、商業運行等方麵的需求,必然會有各種區塊鏈技術出現,包括公有鏈的Zcash、Ripple、IOTA、IPFS等,還包括各種聯盟鏈產品等,當今目前又有各種山寨鏈出現,不論靠譜程度高低,他們必然共存於世。
其實單條區塊鏈不管多少個節點,都類似於一家網站的服務器,為用戶提供了一種特殊的服務,例如比特幣就是阿裏巴巴,以太坊就是騰訊,Zcash就是百度,而跨鏈就是他們之間的那個互聯網協議的,隻有都連起來,才能為用戶提供全部的服務。而這種連接不能是目前交易所之類的中心化權力機構進行轉發,必須也是一條去中心化民主共治的鏈。所以說Polkadot類似中國電信這樣的基礎設施服務商,提供網站之間的通信帶寬服務。中國電信不提供什麼電商和社交服務,Polkadot也一樣,它沒有任何的應用,隻是單純地消息路由。我們雖然不大感受得到中國電信的存在,但誰不是每個月要交有線無線的月租費。為什麼隻是比喻成中國電信呢,因為也可能有中國網通,有線通之類的服務商,跨鏈這個領域Polkadot也不會全部壟斷,但它的網絡效應會比單條鏈要高更多。
Polkadot的論文開頭提到,目前區塊鏈係統無法伸縮的原因是:把共識係統中的一致性和有效性綁定的太死了,Polkadot是個異構的多鏈框架,可以從根本上解決這個問題。
有效性的概念是比如我有10個比特幣,我轉給A5個是有效的,或者我轉給B10個也可以是有效的,我轉給C20個就是無效的。但一致性的概念就是我隻能轉給A或B其中某一個人,即使我發出了兩筆有效的交易,最終網絡會共識出一條最長鏈來達成一致,另一個交易會被丟棄。
更加概括性地講就是有效性負責運算,一致性負責投票,一個是強CPU依賴的,一個是強出塊權依賴的。運算隻要有CPU就行,POW投票需要買礦機,POS投票需要買權益。那麼Polkadot如何分離這兩者呢,它是一條中繼鏈連接多條平行鏈的係統,中繼鏈負責一致性,平行鏈負責有效性。這個平行鏈不一定是條鏈,也可以是其他類型的係統,由收集人管理。中繼鏈是Polkadot的主權益代幣鏈。某條中繼鏈還可以是另一條中繼鏈的平行鏈,這樣就可以形成多級嵌套關係,達到真正的可伸縮性。比如1條中繼鏈管10條平行鏈,那麼10套這樣的中繼鏈再配一條上層中繼鏈,就可以連接100條平行鏈。
中繼鏈采用POS共識算法,將主要借鑒Honeybadger,還有Tendermint。假設中繼鏈有144個驗證人,會每隔一個塊或更長一點時間,隨機將驗證人分組,然後分配給各個平行鏈。每組驗證人負責這條平行鏈的數據驗證,然後再整體完成中繼鏈區塊的共識。大體結構使中繼鏈區塊中包含所有平行鏈區塊的塊頭和類似SPV的樹形證明數據,包含跨鏈交易執行所需的必要數據。然後每條鏈都有一個入口隊列和出口隊列,想外發的交易填進出口隊列,等待被中繼鏈路由;接收到的其他鏈的消息會被填入自己的入口隊列,然後自己去執行。
平行鏈由很多固定身份的收集人管理,以收集交易手續費為激勵,為中繼鏈提供自己的塊頭和跨鏈交易相關的證明數據,這部分數據在Polkadot裏稱為平行鏈的候選塊,將來由中繼鏈的驗證人隨機挑選。由於平行鏈也不一定真有一條鏈,所以這裏的塊也是泛指。【特別聲明,以下是我的理解,並未在論文中詳細說明】:平行鏈會分成兩類,第一類是類似以太坊和比特幣這樣有自身共識係統的區塊鏈,他們有自身的POW礦工來維持鏈的運轉,他們不能直接作為平行鏈參與到Polkadot網絡中來,而是需要新成立一些收集人組建轉接橋係統,將以太坊區塊的數據整理為中繼鏈所需的格式,這個轉接橋係統才是Polkadot的平行鏈。第二類是還沒有出現的過的區塊鏈係統,他們將來的出塊人就是收集人,他們鏈區塊的決定權是由中繼鏈的驗證人決定的,這類係統可能才真正是Polkadot所設想的未來平行鏈。
今年一個很奇怪的事情是,ParityTech用Rust重寫了比特幣的客戶端,我一開始不理解比特幣客戶端已經是曆史悠久了,為什麼要重寫一個,那些礦池也不會為了快一點去換吧,你們怎麼不趕緊去做Polkadot的中繼鏈開發呢。後來想了想知道,這個客戶端就是Polkadot的前奏,開發出來也根本不是為比特幣現有的礦池做的,而是為了比特幣的收集人係統做的,並不參與比特幣的出塊權爭奪,而是為了能更方便地整合將來的上層比特幣收集人係統。他們需要維護一個比特幣的全同步隻讀節點,還要參與數據上報,還要在中繼鏈上有權益記賬,還要維持中繼鏈的全節點,所以Gavin Wood幹脆就用Rust重新寫一個比特幣,而不是比如用c++的比特幣再套上收集人的邏輯。
以太坊的Parity客戶端最近也不更新了,也在緊鑼密鼓地為Polkadot進行改造,需要先為這兩大係統做出觸手,才能對接中繼鏈。所以中繼鏈是一步步根據現有區塊鏈的規則去設計的,而不是無中生有的,每新出現一種區塊鏈技術,中繼鏈的驗證規則和路由規則都會重新設計,需要硬分叉級別的改造。不過論文中還提到,以後可能會做出一條純淨的中繼鏈,本身不包含任何平行鏈的協議,而是用WebAssembly等將區塊鏈的協議做成運行時部署的,再加上中繼鏈的參眾兩院治理機製,管理中繼鏈的升級。不過這種過於高級,Gavin Wood說還是以後再弄吧。
一旦中繼鏈這種係統成熟了,平行鏈其實不用再自己管理共識了,上麵所說的第二種平行鏈就會誕生了。由中繼鏈直接管理共識,平行鏈收集人隻是處理交易,也就不再有轉接橋係統了。其實這兩種也沒有本質區別,隻是這一致性和有效性的分界線到底在哪裏,Polkadot隻是提供了一種選擇性。中繼鏈也不是沒有有效性,而是其有效性不是為了處理用戶的交易需求,而是為了中繼鏈的數據存證計算,中繼鏈上的待路由的交易含義對其是沒有意義的,它隻是要檢查塊頭、梅克爾樹、零知識證明等。所以我們所說的有效性是指大部分的用戶交易內容在平行鏈進行計算,中繼鏈隻拿計算結果的哈希存證。
所以Polkadot論文中專門總結了它隻做兩件事情:合並安全性(Pooled security)、 去信任的跨鏈交易性(trust-free interchain transactability)。合並安全性的意思就是大家不用都去各自建立一套昂貴的POW挖礦體係,或者新建一個代幣沒什麼價值的POS機製,而是將共識一定程度上讓渡給中繼鏈,你就能獲得全網安全性的累積。去信任的跨鏈交易性的意思是所有鏈的塊頭都被整合在一起,平行鏈中要參與跨鏈的用戶和收集人都在中繼鏈開戶,中繼鏈管理著跨鏈交易手續費和跨鏈數據的懲罰。
ParityTech是低調做事的人,不像目前行業裏一紙白皮書就出來圈錢了,Polkadot的共識研究部分去年被英國政府資助,如果他們需要資金肯定也會有很多VC一擁而上,但我猜為了網絡初始的去中心化特性,他們會有一次眾籌,而且會同時支持BTC、ETH、ZEC三種貨幣,具體什麼時候,他們也不著急,我也不知道。
Polkadot論文裏寫的預計上線時間是兩年,現在才剛過去8個月。技術過於高深,看不懂沒關係,跟對人就好了。Polkadot和Cosmos也與今年初低調成立了Interchain Foundtion,鏈互聯社區(chainx.org)首先看到了這個方向,準備早期潛伏,致力於這個領域的宣傳和推廣工作。
最後更新:2017-08-13 22:19:39