比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

兩萬字全解 Polkadot 架構及下一代 DApp 開發技術_DAP

Author:

Time:1900/1/1 0:00:00

劉毅老師深入探討了DApp開發的現狀、公鏈的三種擴容思路、以太坊向Serenity的進程、GavinWood的新征程Polkadot、殊途同歸Cosmos、DApp開發比較、網絡拓撲比較、辨析「跨鏈」、下一代DApp開發技術選擇等9個方面的內容。

原文標題:《萬字長文說透Polkadot架構》

分享:劉毅,RandomCapital合伙人、清華大學碩士、區塊鏈和大數據技術專家。20年多種資本市場投資經驗,比特幣早期投資者。

本次分享的主標題是Polkadot架構解析,副標題是下一代DApp開發技術評述。其實副標題更能概括本次分享,因為我們不只討論Polkadot,而是要相對全面地評述平臺型公鏈,包括以太坊2.0、Cosmos等,當然Polkadot是重點。

我希望講清楚DApp開發技術的走向。這是區塊鏈行業發展的核心問題之一,它不僅對開發者重要,而且會影響到其他行業參與者。因此我盡量講得直白淺顯,爭取讓非技術背景的聽眾也能大體聽懂。

一、DApp為何重要?

我先從DApp本身說起,因為來龍去脈很長。最后還是決定簡要地談談,否則邏輯上不完整。

DApp是DecentralizedApplication去中心化的互聯網應用。例如比特幣就是一個DApp,它是去中心化的價值存儲型加密貨幣。去中心化的概念比較復雜,V神有篇文章說明了去中心化有架構、治理和邏輯三個維度,大家可以找來看看。

從使用者的角度看,去中心化可以簡單理解成,不能被個別或者少數參與者所控制,因此值得信任的應用屬性。區塊鏈是實現DApp的主流技術手段,或者說區塊鏈是DApp的基礎設施。

本次分享所說的區塊鏈,如果加不特殊說明,都是指公鏈。DApp和普通的互聯網應用的差別就在于D去中心化。那么去中心化為什么重要?為什么值得眾多IT互聯網從業者參與其中?它是不是個偽需求偽概念?

回答這個問題最清楚的,是a16z的合伙人ChirsDixon,他在2018年2月發表文章題為《WhyDecentralizationMatters》,就是去中心化為什么重要。

要理解他的觀點,首先要了解什么是網絡效應。網絡效應是指產品或服務的效用隨著用戶增長而增加的機制。

例如微信,用得人越多,它的功能就越強大,越不可或缺。互聯網應用的核心就是建立并維持網絡效應,谷歌、亞馬遜、BAT等巨頭的業務,都是建立起了強大的網絡效應,使得后來者難以逾越。

Chirs認為互聯網平臺要建立網絡效應,都是要千方百計的吸引用戶、吸引開發者和商家等等。但是在突破了關鍵規模之后,平臺的吸引力越來越強,它的控制力也越來越強。

比如現在做電商,如果不依托于天貓、京東或者微信,幾乎不可能成功。因為他們已經形成了巨大的網絡效應,用戶和商戶都被鎖定了。互聯網平臺的運營方都是企業,企業的使命就是利潤最大化。

當用戶和商戶離不開平臺的時候,平臺跟用戶商戶之間的關系就就發生變化。我們看上面這張圖,平臺最開始是吸引用戶,形成網絡效應之后,就開始盡量從用戶頭上賺錢。

平臺跟開發者、內容創造者和商戶之間,也從合作逐步走向競爭。例如大家都知道百度搜索結果不是按信息的真實性和重要性排序,而是誰給的錢多就排在前面。

最早百度廣泛聯系各家公司,讓大家把信息提交給他,方便用戶搜索。現在如果不交錢,公司的官網在百度上就搜不到。百度為了賺錢,把病患導流給莆田系醫院。但國內的用戶明知如此,還是離不開百度,因為百度的數據最多,對用戶也最了解,想想是不是很可怕。

DApp可以改變互聯網平臺壟斷的局面。因為DApp是去中心化的,靠公開透明的共識維持的經濟體。網絡的參與者貢獻越大,相應的權利也就越大,但是沒有個體能控制全局。

任何參與方要損害其他人的利益,要么是行不通,要么就會引發分叉。DApp可以長期保持開放、公平,所以大家不用擔心過河拆橋,所有人都盡自己最大努力參與建設,并獲得回報。有點類似于各盡所能、按勞分配的社會理想。

這才是真正的開放網絡,是互聯網不應忘記的初心。所以眾多互聯網大咖都對DApp以及實現DApp的區塊鏈技術情有獨鐘,并寄予厚望。

二、DApp發展困境

去中心化應用承載著重塑互聯網的偉大理想,但是其發展現狀非常窘迫,這個也大家都清楚,我簡單提一下。

首先是用戶極少,例如預測市場Auger,DApp領域的明星項目,融資數千萬美元,開發歷時三年多,上線之后日活用戶幾十人,而且Auger不是個案。

我們看上方的圖,來自DAppReview,是以太坊DApp日活用戶的前5名,最高的也只有千用戶級,而互聯網的頂級應用日活用戶可以達到數億,差距是5個數量級。

為什么DApp情況如此可憐?主要是因為區塊鏈基礎設施不給力,使得DApp使用門檻高、用戶體驗差。就好比以太坊是一條村級公路,收費高而且擁堵,當然就沒人愿意走。

下方的圖展示的是以太坊的利用率,可以看到從2017年底到現在,以太坊一直是接近滿負荷運轉。也就是說DApp又慢又貴,但基礎設施已經全力以赴了,沒有再提升的空間。

在這樣的困境下,DApp要突破關鍵規模、創造出網絡效應、跟中心化互聯網應用競爭,是不可能的,所以必須升級區塊鏈基礎設施。

三、又慢又貴的原因——區塊鏈極度冗余結構

DApp又慢又貴的根源是區塊鏈平臺的架構限制。這個架構限制可以簡單概括為:區塊鏈是極度冗余的計算架構。

冗余就是重復,讓多臺計算機重復執行相同的計算、重復存儲相同的數據。冗余是有意為之的,不是浪費。適當的冗余在企業計算和互聯網都普遍存在。

最典型的是主從結構,兩臺差不多的計算機一主一備,執行相同的計算、存儲相同的數據。主機出現故障,備機迅速頂上。雖然兩臺機器干了一臺的工作,但是提高了系統的可用性。

但為什么說區塊鏈是極度冗余呢?因為區塊鏈把冗余推到了極限,網絡中所有的計算機,不論是幾百臺還是上萬臺。都執行相同的計算,存儲相同的數據。冗余的程度無以復加。極度冗余意味著極度高昂的成本,成本高到什么程度?

V神給出過估算,就是在以太坊上執行計算或者存儲數據,比在商業云平臺上完成相同計算或者存儲同樣的數據,成本高100萬倍。也就是在普通云服務上花費100錢能完成的計算,放到以太坊上去做,需要1個億的成本。所以在考慮什么業務可以做成DApp,一定要考慮到成本。

不要僅僅為了講故事圈錢,就把什么阿貓阿狗都放到區塊鏈上來,那是資源的巨大浪費。那么花100萬倍的成本,能得到什么好處?高可用性當然不在話下。比特幣或者以太坊網絡,隨時都有計算機加入或者退出,對業務毫無影響。

但是高可用性顯然是不夠的,因為它只需要適度冗余就能實現,不需要極度冗余。極度冗余帶給我們的新屬性就是去中心化。具體地說,去中心化對用戶意味著trustless、permissionless和censorshipressistancy,就是去信任、無許可和抗審查。

無許可很好理解,任何人想要使用比特幣、以太坊,都不需要向別人申請。抗審查也很清楚,沒人能阻止你使用區塊鏈。比如維基解密,世界上最強大的國家恨它入骨,欲除之而后快,但是維基解密仍然能獲得比特幣捐款。

含義比較模糊的是去信任,英文是trustless、trustfree或者trustminimal。我認為最準確的說法是trustminimal信任最小化。使用去中心化應用,其實隱含了對區塊鏈網絡整體的信任。

大橙子:看好此輪上漲行情,兩萬三不會成為BTC的終點:據官方消息,Gate.io直播專訪節目《酒局幣赴》20201217期已結束,本期直播邀請KOL為大橙子,與Gate.io合伙人酒兒和觀眾分享了當下牛市行情各種投資方式以及收益的見解。大橙子認為,目前市場投資效應明顯,處在牛市里現貨、期權都是很好的獲利交易手段,看好此輪上漲行情,更看好明年行情,23000美元不會成為BTC上行趨勢的終點,山寨幣與DeFi類代幣后市都會大概率跟漲,DeFi挖礦與保險項目未來大有利好空間,仍適合長期關注,而NFT或是下個爆點,平臺幣譬如GT有投票分紅,鎖倉收益高,適合長期持有,加密貨幣市場機會良多,投資方式不要過于設限,找到適合自己的才是關鍵。詳情點擊原文鏈接。[2020/12/17 15:35:07]

例如使用比特幣和以太坊,就要信任比特幣和以太坊不會被51%攻擊。使用Cosmos和Polkadot就要相信惡意驗證人少于1/3。所以去信任的準確含義是,在信任整個區塊鏈網絡的前提下,可以不必信任個別礦工或者驗證者,也無需信任交易對手。

對于某個應用,如果用戶從去信任、無許可和抗審查這三個方面獲得的好處,值得花費100萬倍的成本,那么這個應用放在區塊鏈上就是合理的。有這樣的應用嗎?就我自己來看,目前能值這個成本的,只有價值存儲一項需求。

著名的比特幣最大化主義者JimmySong說,比特幣會成功,而法幣和所有的競爭幣都會失敗。原因是中心化的貨幣干永遠不過去中心化的貨幣,而去中心化的產品永遠干不過中心化的產品。

隱含的邏輯就是,相同的互聯網服務產品,成本差100萬倍,當然干不過。他這個說法是有道理的,但是過于僵化。因為100萬倍的成本差距不是必然的,是可以改變,可以拉近的。

能不能把DApp和中心化互聯網應用的成本差距,從100萬倍拉近到10萬倍,1萬倍,甚至1千倍。同時仍然保持去信任、無許可和抗審查這三大好處。回答是完全可能,只要降低冗余的程度,就能降低成本。方法有三類,也就是區塊鏈擴容的三個思路——代議制、分層和分片。

四、第一種擴容思路——代議制

第一個擴容思路——代議制,源于人類的古老智慧。即民主是好的,但是全民直接民主效率太低。英國脫歐采用了全民公投的方式來決定,但是顯然不能所有的議題都搞全民公投。

代議制是人民選出代表,再由代表來議定法律或者重大決議。代議制提升決策效率有兩個原因,第一是參與共識的人數大為減少,第二是代表通常是專職家,他們有更多的資源和知識來議定國家大事。

用代議制的方式來做區塊鏈擴容,最典型的是采用DPoS共識的EOS。EOS通證的持有者選出超級節點,21個超級節點輪流出塊。跟以太坊相比,參與共識的計算機數量下降了3個數量級。

而且以太坊的節點計算能力高低不齊,協議參數設定要兼顧低端計算機。而EOS超級節點主機硬件配置和網絡帶寬有同一的高要求。所以毫不奇怪,EOS能達到數千tps,遠高于以太坊。

EOS從誕生之日起,就一直處于風口浪尖。加密社區的一部分人嚴厲地批評EOS,說它中心化的,甚至認為它根本不算區塊鏈。而支持者認為EOS的去中心化程度是足夠的。用戶仍然能夠享有去信任、無需許可和抗審查等好處。

那么EOS的去中心化程度是否足夠呢?我的看法是:有些情況下夠,有些情況下不夠。取決于是什么應用,誰在使用。

用戶和用戶差別巨大,只從國籍分,就有美國人、中國人、伊朗人、朝鮮人等等。還有性別、年齡、種族、地域、職業、宗教等等差別。

另外就是一個特定用戶,他的需求也是多樣化的,例如社交、娛樂、金融、協作等等。大類又分成很多小類,金融里僅僅對貨幣就有價值存儲需求、大額轉賬需求、小額支付需求等等。

如果把是大部分身家都用加密貨幣來做長期價值存儲,我首選比特幣。如果是小額支付,或者打麻將、擲骰子,用EOS當然也沒問題。在區塊鏈世界,從去中心化程度最高的比特幣和以太坊,到中心化程度最低的EOS和波場。

可以看成是去中心化譜decenralizationspectrum。每條公鏈,包括后面重點介紹的Polkadot和Cosmos,都在譜中占據特定位置,都有機會適用于特定需求。不存在onechainfitall一鏈打遍天下的可能性。

做架構設計就是做折中,有所選擇必然就有所放棄。本次分享的核心理念,就是未來的區塊鏈世界是異構的、多鏈共存的。當然,我也不認為需要幾百上千條公鏈,因為合理的可選位置沒那么多。在定位大體相似的情況下,網絡效應會消滅弱者。

五、第二種擴容思路——分層

分層也稱為二層擴容或者鏈下擴容,就是把一部分交易放到在區塊鏈以外執行,同時仍然保障交易安全。分層有狀態通道和側鏈兩類技術。還有一類二層技術,是把計算密集型任務轉移到鏈下執行,這塊與分享主題無關,不再提及。

狀態通道和側鏈是不同的技術隱喻,但是到了實現層面,其實非常相似。由于Cosmos和側鏈有很深的內在聯系,所以我在這里花點時間,講講側鏈的原理。

要理解側鏈,首先要明白SPV證明,SPV是SimplifiedPaymentVerification簡單支付驗證的縮寫。為了讓計算和存儲能力有限的設備能夠使用比特幣的問題,才有了SPV,或者叫輕客戶端或者輕節點。

手機錢包就是輕客戶端,它不必同步全部區塊,只需要同步區塊頭,傳輸和存儲的數據量縮小了1000倍。左側圖是SPV證明的原理,利用了梅克爾樹。看不懂沒關系,只要記住梅克爾樹是區塊鏈最重要的數據結構。

利用它可以只需存儲極少的數據,就可以證明大量的事實曾經發生過,而且屬于特定集合。就區塊鏈來說,就是只存儲區塊頭,未來就可以驗證交易是否存在于某個區塊。

側鏈方案就是把主鏈資產通證鎖定,在側鏈上對應地創造出通證承兌匯票,匯票交易在側鏈執行,在側鏈上得到匯票的人可以兌換主鏈通證。具體來看右圖的以太坊PlasmaMVP側鏈方案。

首先要在以太坊主鏈上部署Plasma智能合約,假定有Alice和Bob兩個側鏈用戶。Alice發起主鏈交易把通證存入Plasma合約,通證被合約鎖定。

側鏈的Operator發現Alice存入了通證,就會在側鏈里創建出側鏈通證,也就是主鏈通證的承兌匯票。請注意側鏈本也是區塊鏈,它有自己的共識協議和礦工。

在PlasmaMVP方案中側鏈采用的共識是PoA權威證明,就是一個Operator說了算,由它記賬出塊。PoA當然不是唯一選擇,Loom的Plasma側鏈采用的DPoS共識。

存入之后,Alice就可以在PlasmaMVP鏈使用通證,進行支付或者轉賬。例如她可以跟Bob玩游戲,輸贏通證,可能很快就玩了很多局,產生了大量轉賬交易。側鏈交易只需要側鏈的節點達成共識。而側鏈的規模通常比主鏈小得多,因此交易執行更快,成本也低。

側鏈區塊的區塊頭,都會由Operator提交給主鏈的Plasma合約。不論側鏈一個區塊含有多少筆交易,是1千筆還是1萬筆,主鏈只發生了記錄區塊頭一筆交易。所以主鏈上的Plasma合約,相當于是側鏈的SPV輕節點,它存儲了區塊頭,從而可以驗證側鏈交易是否存在。

例如Alice在側鏈上把通證轉給了Bob,Bob就可以向Plasma合約發請求,包含側鏈交易的SPV證明,表示Alice已經把這些通證給我了。

Plasma合約可以驗證轉賬交易在側鏈確實存在,從而滿足Bob的取款要求。這個例子說明了分層方案如何把大量交易轉移到鏈下執行,或者說轉移到二層網絡執行。

數據:過去1個月比特幣Hodler持倉數量減少超兩萬枚BTC:據Glassnode數據顯示,近一個月,跟蹤比特幣長期投資者每月頭寸變化的指標“比特幣Hodler凈頭寸變化值”由正轉負,為今年3月份以來首次出現負值,長期投資者的比特幣持倉數量減少超兩萬個比特幣,創2019年8月以來最大跌幅。

注:該指標旨在追蹤比特幣Hodler的每月頭寸變化,負值代表Hodler在拋售比特幣,正值代表在積累比特幣。[2020/11/4 11:38:10]

六、第三種擴容思路——分片

第三個擴容思路是分片,原理很簡單,就是別讓所有的節點都執行所有的交易。把節點分成很多組,或者說分成很多片。多個分片可以并行處理交易,總體的處理能力就提高了。

當然還需要一條特殊的鏈來看管所有的分片,這條一般稱之為主鏈,它要做很多工作,后面再詳細介紹。粗略的解釋是,如果沒有主鏈,多個分片之間沒有聯系,那就是完全獨立的多條區塊鏈,跟擴容無關了。

分片擴容的基本思路非常簡單,但實際做起來則面臨很多復雜難題。為了理解后面要對比分析的幾個公鏈架構,你首先要大概了解這些難題。另外因為這個公鏈都采用PoS共識,所以我們討論分片難題和解決方法基于PoS來討論。

七、分片的難題——驗證人選擇

首先就是分片之后,每個分片都需要一組驗證人。大家看一下這張示意圖。

如果在單鏈上,惡意驗證人超過一半,可以攻擊系統。分片之后,只要在一個分片內占據多數,就可以攻擊這個分片。所以片分得越多,攻擊成本越低,也就是安全性降低。

解決的方法是,分片的驗證人分組不是固定的,而是隨機選取,而且每隔一段時間就重新分組。這樣惡意的驗證人不能事先知道自己被分到哪個組,而貿然發送攻擊會受到懲罰,因此系統的安全性就不會隨著分片數量上升線性的下降。

驗證者隨機動態分組的關鍵,是要有可靠的隨機數,隨機數一直是計算機科學中復雜而有趣的問題。去中心化地拜占庭容錯地產生可靠隨機數難度非常大,也是區塊鏈研究的熱點問題。

八、分片的難題——跨片交易完整性

在分片的方案中,每個分片上可以運行一到多個DApp,不論DApp在不在同一分片,都要能互操作。首先要明確什么是跨片互操作?因為分片也都是區塊鏈,所以跨片等同于跨鏈。

大家知道區塊鏈可以看成是分布式共識維護的狀態機,狀態機通過交易執行完成狀態轉移。跨鏈的互操作應該引發雙方的狀態轉移,也就是兩個互操作的鏈都執行了交易,而且執行交易之后的狀態具有一致性。

或者說一個跨鏈交易要引起兩條鏈乃至多條鏈的狀態改變,而且這些改變要么都成功,要么都不成功,不存在中間狀態。這跟企業計算里分布式交易的概念上非常類似。

只不過傳統分布式交易的參與者通常是多個數據庫,而跨鏈交易的參與者是多條區塊鏈。非技術背景的同學可能不熟悉狀態機和分布式交易的概念。因為跨鏈交易的概念對理解本次分享的結論很重要,我再用非技術語言解釋一下。

假設你要從工行賬戶轉1萬塊錢到建行賬戶,這筆轉賬交易其實就是從工行賬戶上減掉1萬,在建行賬戶增加一萬。工行和建行各自都有數據庫存儲賬戶余額,那么就要有一個機制,保證兩個數據庫的操作,一加一減,在任何情況下要么都成功,要么都失敗。

如果沒有這樣的保證,工行賬戶減掉了,建行賬戶沒加上,你少了1萬塊錢,你肯定不干。如果工行賬戶沒減掉,建行賬戶加上了,你多了1萬塊,銀行肯定不干。

這就叫分布式交易的完整性或者原子性。簡單吧?其實做起挺難的,因為不論是工行建行哪家的服務器停電、斷網、軟件崩潰等等,各種極端條件,都要保證交易完整。在區塊鏈上,轉賬變成了轉通證。

某通證發行在A鏈上,通過跨鏈轉10個通證到B鏈,跨鏈交易完成后,A鏈上的10個通證被凍結了,B鏈上多了10個通證。這兩個狀態改變在任何條件下,要么都成功,要么都失敗。

由于區塊鏈可能分叉,跨片交易要比傳統的分布式交易更復雜。我們看圖,如果跨片交易在分片1上的部分是在A塊里被打包,在分片2上被X’塊打包。兩個分片都可能出現分叉,A塊和X’塊也就可能成為被廢棄的孤塊。也就是跨片交易可能部分成功部分失敗,完整性被破壞

怎么解決這個問題呢?我們來分析一下,造成跨鏈交易完整性被破壞的根本原因是,交易的多個部分被打包進區塊,但是鏈可以重組,塊可以變成孤塊。

說白了就是交易進了區塊,但是靠不住,有可能反悔,正式說法是沒有明確最終性。最終性finality就是區塊必然被包含進區塊鏈。

在比特幣區塊鏈上,某個區塊后面連的區塊越多,它被逆轉或者說放棄掉的可能性就越低,但是永遠不能100%確定,所以稱為概率最終性或者漸進一致性。解決這個問題的辦法就是,要有機制讓區塊具有明確的最終性,不能含糊。

九、分片的難題——最終性VS活性

finalize就是使區塊具有最終性,我翻譯成敲定。要使區塊具有最終性。簡潔的方法就是出塊即敲定。Cosmos的Tentermint共識就是這樣。但是這個做法在特殊情況會出問題。

我們看圖,某條Tendermint共識的區塊鏈原本正常出口。突然海底光纜斷了,互聯網被分成了兩部分。兩部分各自包含一般驗證人節點。Tentermint共識要求收集到2/3以上的驗證人簽名才能出塊。

被斷開后,兩部分網絡都最多收集到一半驗證人簽名,所以出塊停止了,或者說區塊鏈喪失了活性liveness。有人認為這可以容忍,本來就是特殊情況嘛,那就先停下來,等網絡恢復正常再繼續工作。

海底光纜斷了,上網、打電話、視頻會議都受影響,憑什么區塊鏈就不能暫停呢?還有人認為停止出塊不可接受,要始終保持區塊鏈的活性。那怎么辦呢?辦法就是把出塊和敲定分開,也稱為混合共識。

在剛才說的網絡中斷情況,在兩個分開的網絡,節點可以繼續出塊,但是沒有足夠的驗證人參與進來,所以不能敲定。等網絡恢復了,再決定哪些塊被敲定,從而活性和最終性兼得。

而且混合共識可以讓個別節點輪番快速出塊,于此同時,敲定過程可以慢一些,讓大量節點參與進來,確保去中心化,提高攻擊和共謀的難度,也就是保障了安全。所以混合共識也兼顧了性能和安全。以太坊2.0和Polkadot都采用混合共識。

十、分片的難題——交易有效性

還有個分片難題是交易有效性。交易有效性問題就是防止無效交易進入區塊,成為區塊鏈維護的歷史真相的一部分。

舉比特幣的例子,假如我是超級大礦工,掌握了大部分算力。我想偽造一筆交易,把別人地址上的比特幣轉給我,能不能做到呢?答案是做不到。

因為這筆交易沒有地址對應的私鑰簽名,是無效的,包含這筆交易的區塊也是無效的,不會被其他節點所接受。即便我掌握了大部分算力,可以挖出最長的鏈,但也只是構建了一個很長的分叉。

眾多的比特幣錢包、交易所都不會認可我這個分叉。所以51%攻擊,并不能把誰的btc偷走,或者憑空創造出比特幣。最多是雙花攻擊,雙化不展開談了。總而言之,比特幣網絡不存在交易有效性問題。

那么這樣一個十年前就被完美解決的問題,怎么又會出現呢?原因是btc等公鏈的節點都擁有全部數據,因此能完全獨立地驗證交易有效性。現在變成了多個分片,節點只存儲部分數據,也就無法獨立驗證交易有效性。

我們看左側的圖,有兩個分片,分片1已經被惡意的驗證人所控制,在B區塊里打包了無效交易,例如給自己的地址上憑空創造了很多通證。在下一個區塊C,攻擊者發起跨片交易,要把通證轉到分片2上的DApp,可能是去中心化交易所。分片2看到的C區塊里面的交易都沒有問題,而且分片2也沒有C區塊之前的數據,所以無法驗證交易有效性。

道指跌穿兩萬點關口,跌1%,創2017年2月以來新低:道指跌穿兩萬點關口,跌1%,創2017年2月以來新低。(金十)[2020/3/17]

下面我們介紹一個在分片環境下解決交易有效性的方案,叫舉報獎勵。其實還有別的方案,但跟主題無關,就略去不提。

看右側圖,分片1雖然被惡意驗證人控制了,但是還有至少一個誠實的驗證人。分片2不能驗證跨鏈交易的有效性,就選擇相信分片1,打包了跨鏈交易。這時候分片1里的誠實節點可以要跳出來舉報,說區塊B是非法的,我有證據。

系統接受了舉報,就會懲罰分片1里的惡意驗證人,沒收他們質押的通證,并向舉報者提供獎勵。所以為什么有的區塊鏈,驗證人要收回質押的通證,都需要等幾個月。主要的原因就是給舉報和證實舉報留出足夠的時間。

以上我們介紹了四個分片的難題,和相應的解決方案。其實分片擴容的難題不止這些,限于時間,就不再列舉了。

十一、以太坊正朔——Serenity

下一代以太坊的lay1擴容思路就是分片。關于下一代以太坊,信息很混亂,連名稱都不統一,有以太坊2.0、Serenity、Shasper、Casper以太坊等,我們統一稱為Serenity。

大家看Serenity架構圖,是臺灣資深以太坊研究員王韶為女士制作的。從上往下看,最上面是PoW主鏈,也就是目前運行的以太坊。Serenity不會取代掉PoW鏈,而是以側鏈的方式上線部署。

但是長期而言,Serenity并不依賴Pow鏈,PoW下面的三層都屬于Serenity,而且恰好對應Serenity演進的三個階段。

首先是BeaconChain信標鏈,主要功能是管理驗證人。信標鏈上線后,如果希望成為Serenity的驗證人,就把eth從Pow鏈轉入信標鏈。還是用側鏈的方式,信標鏈在PoW主鏈上部署智能合約。

eth轉入信標鏈是單向的,不能再從信標鏈轉回PoW鏈。在信標鏈上擁有eth,進行質押并運行節點,就可以成為驗證人。為了達到充分的去中心化,做Serenity驗證人的門檻很低,只需要質押32個ETH,驗證人集合會很大,可以達到幾萬到幾十萬這個數量級。

信標鏈還負責產生隨機數,用于驗證人分組和出塊人選擇。信標鏈執行PoS共識協議,包括它自己的共識和所有分片鏈的共識,對驗證人進行獎勵和懲罰。還有就是作為跨片交易的中轉站。信標鏈預計在今年年底或明年年初上線。

目前有多個團隊在進行信標鏈節點軟件開發,有幾個團隊已經部署了測試網。下一階段會部署公共的、長期運行的測試網,把各團隊開發的節點放在一起進行測試。

信標鏈往下是多條分片鏈,圖上畫的是100個分片。分片鏈被看成Serenity的數據層,負責存儲交易數據,維護數據的一致性、可用性還有活性,也就是確保總是能出塊,不會被鎖住。分片鏈的上線時間還不確定。

分片鏈的下方是虛擬機,虛擬機負責執行智能合約和轉賬交易,改變狀態,也就是對分片鏈數據進行讀寫。Serenity很重要的設計決策是把數據層分片鏈和邏輯執行引擎虛擬機解耦。

解耦帶來了很多好處,例如可以分頭開發,單獨上線或升級等等。Serenty虛擬機將用wasm,可以提高性能,并支持多種編程語言。

Serenity如何前面所說的四個分片難題呢?首先是在信標鏈上管理驗證人池,為每個分片鏈隨機指定一組驗證人。采用混合共識,驗證人輪流出塊,采CasperFFG敲定最終性。用舉報獎勵方法保障交易有效性。

十二、GavinWood的新征程——Polkadot

分享已到中途,終于輪到主角Polkadot出場。GavinWood是Polkadot的靈魂人物,大部分同學對他已經很了解,不了解的上網搜一搜,我就不介紹了。

GavinWood是web3基金會的創始人,也是現任總裁,Polkadot是Web3基金會的核心項目。類似于以太坊和以太坊基金會的關系。

關于web3,有必要介紹一下。在web3基金會和Polkadot等項目文檔中,對web3愿景的文字表述不太一樣。但是都包含兩層意思。

第一層:web3是無服務器的、去中心化的互聯網。serverless無服務器也是去中心化的意思,因為在web3憧憬的網絡計算架構里,參與者或者說節點是平等的,沒有服務器和客戶端的區別,所有節點都或多或少參與網絡共識的形成和記錄。去中心化的互聯網有什么用呢?

就是web3的第二層含義:每個人都能掌握自己的身份、資產和數據。

掌握自己的身份,意味著不需要其他人或者組織賦予身份,其他人或者組織也無法冒用或者凍結身份。掌握自己的資產,意味著不會被剝奪資產,可以自由處置資產。掌握自己的數據,意味著每個人可以按自身的意愿生成、保存、隱匿、銷毀個人數據,未經他的允許,任何人任何組織都不能使用其個人數據。

web3愿景并非web3基金會或者Polkadot項目所獨有。很多區塊鏈項目,包括比特幣、以太坊,都有類似的愿景。名稱五花八門,包括開放網絡,下一代互聯網等等。叫什么名字不重要,你應該思考web3愿景的內涵,那是不是你想要的互聯網?

甘地說過:Bethechangeyouwanttoseeintheworld.我翻譯成:邁向你想要的世界。如果web3也是你認同的愿景,那么就參與進來,為之努力。

Polkadot是web3的骨干網,是web3的基礎設施,是GavinWood和web3基金會指出的,通向web3愿景的道路。

Substrate是Polkadot項目開發過程中形成的開源區塊鏈開發框架,可以用來搭建Polkadot生態,也可以用于構建其他目的的區塊鏈。

十三、Polkadot架構

接下來我們介紹Polkadot架構,這兩張圖片都來自于岳利鵬翻譯的Polkadot白皮書中文版。

先看右邊的大圖,Polkadot的基本網絡結構是星型的,或者稱為輪輻型。星型的中心是PolkadotRelay中繼鏈,外圍是眾多的Parachain平行鏈。

再看左側的小圖,Polkadot網絡的參與者有四種角色:Validator驗證人、Nominator提名人、Collator收集人或者核對人,Fisherman釣魚人或者漁夫。

DApp可以是部署在平行鏈上的智能合約,或者整個平行鏈就一個DApp。用戶在平行鏈發起交易,交易被收集人收集,打包成區塊,交給一組驗證人去驗證。

這組驗證人并不是來自平行鏈,而是來自中間鏈統一管理的驗證人池,通過隨機分組指定給平行鏈。每條平行鏈都有一個出口隊列和一個入口隊列。如果用戶發起的是跨鏈交易,交易就會被放進出口隊列。再被目標平行鏈的收集人放入其入口隊列。

目標平行鏈的收集人執行交易,生成區塊,由驗證人組敲定。Polkadot采用混合共識協議,出塊協議的英文縮寫是BABE,小孩子;敲定協議的縮寫是GRANDPA,老爺爺。

剛才講混合共識,有同學可能會問:出塊快、敲定慢,那等待敲定的區塊會不會越來越多?不會的,GRANDPA每個輪次可以敲定多個區塊,從而追上進度。所以小孩子是活潑好動、步履輕盈;老爺爺是大步流星、一言九鼎。一老一小相得益彰。

除了平行鏈,還有兩類外圍區塊鏈接入中繼鏈。一類是轉接橋,它把現存的、不能直聯的區塊鏈接入中繼鏈,例如以太坊和比特幣等。從中繼鏈的角度看,轉接橋是一條平行鏈。

動態 | 加拿大土著聯盟支付超過兩萬加元比特幣贖金:據加拿大廣播公司(CBC)消息,加拿大土著民主聯盟(FSIN)最近向一名入侵該組織計算機系統的匿名黑客支付了價值超過2萬加元的比特幣。據報道,五個月前,黑客通過電子郵件向一名工作人員要求支付超過10萬加元的比特幣,以允許員工訪問加密文件。黑客不僅設法控制了電子郵件系統和內部文件,還竊取了一些數據,包括與內部土地索賠,青年運動員以及教練有關的文件。此外,黑客還訪問了條約卡號,社會保險號以及聯合會員工和管理人員的健康聲明。[2018/10/26]

從以太坊或者比特幣的角度看,轉接橋是一條側鏈。此外,為了讓系統具有無限的可擴展性,還可以有二級中繼鏈。不過二級中繼目前還只是設想,沒有具體的設計。

我們已經介紹了收集人和驗證人在系統中的作用,那么提名人和漁夫是做什么的呢?提名人是Polkadot基礎通證DOT的持有者,他希望質押DOT獲得收益。但是要么是因為DOT數量少,要么是缺少運行維護驗證人節點的專業技能。

因此系統提供了另一個參與途徑,就是持幣者選擇他信任的驗證人,把自己的DOT通過驗證人來質押,分享驗證人收益。這樣做的好處是,提高整體質押比例,提升系統安全性,同時也使收益分配更加公平。關于Polkadot的經濟模型,是個很復雜很有趣的話題,我們就不多說了。

剛剛介紹過分片架構的交易有效性問題,以及舉報獎勵的解決方案,所以漁夫的作用不難理解。他就是監控和舉報非法交易,賺取獎金的角色。聽起來挺簡單,但是做起來極其復雜。

可能有些同學想象中的舉報是這樣的:給web3基金會發郵件:我發現有人打包了非法交易,證據見附件,盼復。過些天web3基金會回信:您的舉報已被證實,作惡者已伏法,獎金將發到你的地址,非常感謝您對我們工作的支持。

但區塊鏈上的舉報完全不是這個樣子。漁夫是個軟件進程,它監控網絡上的非法行為,一旦發現就會向區塊鏈提交舉報交易。舉報交易也要經過共識過程,通過2/3以上驗證人驗證,打包進區塊,懲罰和獎勵也都是區塊鏈交易。

整個過程是自動地、去中心化地執行。這里就有很多復雜問題,例如如何對漁夫提供激勵。漁夫就像警察,你可能會認為那很簡單,抓住一個壞人就發一筆獎金。

那么有一堆警察天天盯著網絡,沒人敢作惡,警察就一直拿不到獎金。警察有運營成本,要驗證并存儲大量的數據,沒有收入就干不下去了。警察全改行了,壞人就會出現。那你可能會想,給警察發工資吧,底薪加提成。

好,那我可以聲明自己做警察,領一份底薪。但是我根本不驗證和存儲交易數據,成本就是0,底薪就是我的利潤。等壞人出現的時候,我說抱歉哈,我沒看到,或者說我硬盤恰好壞了,那么系統應該怎么懲罰我呢?

還有就是不能隨便舉報,系統處理舉報需要成本,隨便舉報就成了可以粉塵攻擊的漏洞。另外能否對舉報交易進行舉報,應該怎么處理等等。所以在去中心化環境中,舉報機制很復雜。Polkadot的漁夫工作機制,目前我還沒看到具體的說明。

在Polkadot網絡中,平行鏈各自承擔交易執行、數據存儲,同時平行鏈之間能夠互操作,也就實現了分片的目標。因此我把Polkadot看成是分片擴容方案。可以跟Serenity初步比較一下。你會發現Polkadot比Serenity在技術上更復雜。

Serenity的分片是同構,采用相同的共識協議,容量也整齊劃一。就像是提供給DApp使用的標準集裝箱,規格都一樣,開發者選一個分片,把自己的DApp放進去就好了。

Polkadot是web3骨干網,它不能也不應該要求平行鏈是整齊劃一的。平行鏈可以自行決定使用什么共識協議、什么樣的經濟模型和治理模型,自己決定硬件和網絡配置等等。簡而言之平行鏈是自治的,Polkadot可以看成是平行鏈的聯盟或者聯邦。

Polkadot中繼鏈要支持異構的平行鏈接入,進而實現互聯互通,復雜度超過Serenity的信標鏈。這一技術復雜度帶來的好處是,平行鏈開發的靈活性,無需千鏈一面,可以根據具體的需求和約束,設計開發最優的平行鏈。

十四、殊途同歸——Cosmos

下面我們來介紹Cosmos,從側鏈開始談起。看左上方的圖,A和B是兩條鏈互為側鏈。也就是說,A鏈包含B鏈的SPV輕客戶端,從而A鏈能驗證B鏈的交易。反過來B鏈也包含A鏈的SPV輕客戶端,從而B鏈能驗證A鏈的交易。

互為側鏈的結果是,發行在A鏈和B鏈上的通證可以互轉。如果從兩條鏈擴展到多條鏈,A和B變成A/B/C/D/E/F,一種外推的想法是仍然沿用兩兩互為側鏈的做法,就形成了左下方的結構。

但是這樣做會到來很多問題,每條鏈都要內置其他所有鏈的輕客戶端,同步其他所有鏈的區塊頭,這當然是很大的負擔。而且每增加一條鏈,都需要在其他所有鏈上做修改。隨著區塊鏈數量的增加,復雜度以n*(n-1)/2,指數型增長,這顯然是不可行的。

解決的辦法就是改成右上方圖片顯示的結構,中間放一個Hub,Hub本是也是區塊鏈,它跟其他所有鏈都互為側鏈。就是說,每條鏈上的通證都可以轉到Hub上,然后通過Hub轉到其他鏈上,網絡互聯的復雜度跟區塊鏈數量是線性關系。

這就是Cosmos的做法,在Cosmos的定義里,接入Hub的鏈稱為Zone分區。分區要接入Hub需要兩個條件,第一是符合Cosmos標準協議,即IBC鏈間通信協議。第二是要求Zone具有即時最終性,以確保跨鏈的一致性。

而且Cosmos可以支持多個Hub的互聯。對于現存的公鏈,可以通過協議適配接入CosmosHub,Cosmos把協議適配網關稱為PegZone錨定分區。最終形成的結構就是右下方圖片展示的樣子。

我們從側鏈出發推演Cosmos架構。但是回過頭來看,Cosmos分區各自承擔交易執行、數據存儲,同時分區之間還能夠互操作,也實現了分片的目標。因此我也把Cosmos看成是分片擴容方案。

可能有人對會對這樣分類不贊同。但是沒有關系,Cosmos就是Cosmos,分類是為了更好地理解它。從不同角度理解和闡釋,可以用不同的分類方法,沒有絕對的對和錯。

CosmosHub以及其他用CosmosSDK開發的分區都采用Tentermint共識協議,出塊和敲定過程是合一的,只要出塊,就是得到了2/3以上驗證人的簽名驗證。這樣做的好處是簡潔快速,出塊時間可以達到秒級甚至亞秒級,而且具有即時最終性。

但是在網絡發生分區的情況下,Tentermint共識有可能暫停出塊。CosmosHub和分區都有各自的驗證人組,不需要驗證人動態隨機分組。那么Cosmos如何保障跨鏈交易有效性呢?根據我的理解,Cosmos回避了這個問題。

Hub并不能驗證交易有效性,只能驗證存在性。如果某個分區被惡意驗證人控制,那么用戶在這個分區上的資產是不安全的,可能被盜取。但是這不應該看做是Cosmos的漏洞,而是它的設計選擇。

Cosmos經常被拿來跟Polkadot比較,但其實Polkadot與Serenity在架構上更為相似。前幾天橙皮書的文章做了三個村莊的比喻,非常貼切。但是從DApp開發的角度,尤其是今年和明年的重量級DApp開發,主要會從Polkadot和Cosmos二選一。

從技術上說,Cosmos要比Polkadot或者Serenity簡單得多。我這里說的簡單并非貶義,在滿足需求的前提下,技術方案應該是越簡單越好。那么Cosmos用相對簡單的方案也實現了分片擴容的目的,不是很好嗎?

比特幣價格突破兩萬美元大關:根據倫敦COE.IO比特幣平臺顯示,比特幣美元報價剛剛沖上兩萬美元大關,再創新高,境外多家比特幣主要交易平臺報價亦同步逼近兩萬關口。[2017/12/17]

確實很好,因此我也很看好Cosmos,它會非常適合某些類型的DApp。但是正如我們反復強調的,有所得,必有所失。Cosmos選擇了簡潔,但在安全性上有所犧牲。PoS區塊鏈的安全等級是由總市值和質押比例決定。

Polkadot上線之后,假設Dot總市值是10億美元,其中一半質押在網絡上,那么要對Polkadot主網進行雙化攻擊,理論上最少需要1.67億美元,實際需要的會多得多。顯然是一筆巨款,因此Polkadot網絡非常安全,跨鏈交易有很高的安全保障。

Cosmos主網上線之后,Atom通證也會很高的市值,但是網絡質押的Atom,只保證CosmosHub的安全。分區和其他Hub會發行自己的通證來建立經濟模型,獲得安全保障。

但是分區通常是特定的去中心化應用,其應用規模和市值達不到Cosmos/Polkadot這樣的大平臺的等級。因此可以預期,Cosmos分區的安全等級會低于CosmosHub。

你在Cosmos上執行跨鏈交易。需要信任交易的發起分區,目標分區和Hub,如果跨鏈交易中間經過多個Hub,那么經過的每個Hub都要值得信任。

一方面是需要信任的區塊鏈變多了,而且其中有些鏈的安全等級可能不高。所以說Cosmos沒有做到信任最小化。安全水平降低了,但是降低之后夠不夠用?也許夠也許不夠,還是因人而異、因應用而異。

Cosmos當然了解自身的短板,據說會在未來版本為分區提供安全保障。但是實現難度會很大。要為分區提供安全保障,需要大量的驗證人,只能修改共識協議,把出塊和敲定分開,當然還要處理驗證人隨機動態分組、交易有效性等問題。這一番改動下來,Cosmos和Polkadot的復雜度也就差不多了。

十五、對DApp的支持對比

那么Serenity、Polkadot和Cosmos哪個更適合做DApp開發呢?我們來比較一下。

首先DApp開發方式,三個鏈都可以用智能合約。Polkadot和Cosmos帶來了新的DApp開發方式,就是開發特定應用的區塊鏈。Cosmos為應用鏈提供的工具是CosmosSDK,目前支持Go語言開發。Polkadot為應用鏈提供的工具是Substrate,目前支持Rust語言開發。

Substrate是完整的應用鏈開發工具,具備完整的應用鏈框架,GavinWood演示了在一臺全新的電腦上,15分鐘發布出一條應用鏈。另外,Substrate所有模塊都可以定制或者替換,功能強大而且非常靈活。

相比較而言,CosmosSDK要單薄一些,它主要提供Tendermint共識引擎、IBC鏈接通信協議和通證等核心模塊,大部分上層建筑需要自行開發。

關于性能,Serenity每個分片大約是100tps,仍然是優先處理gasprice高的交易。PolkadotHub應該能達到上千tps,平行鏈可以自己決定共識算法、硬件和網絡,理論上說沒有性能限制。CosmosHub和絕大多數分區都采用Tendermint,能夠達到數千tps。

關于互操作。Serenity跟以太坊1.0是一樣的,智能合約可以相互調用。Polkadot平行鏈通過Relay與其他平行鏈互操作,通過Bridge與其他鏈互操作。

Cosmos分區通過Hub可以互轉通證,通過錨定分區與其他鏈互轉通證。IBC消息也數據字段,就像電子郵件的附件,通過擴展數據字段,分區之間也可以傳遞通證以外的數據。

接入方式Serenity跟以太坊1.0相同,開發者自行部署智能合約。PolkadotRelay接入要拍賣插槽,質押數量不菲的DOT。Cosmos與Polkadot類似,是質押Atom拍賣接入資格。

然后是安全性,前面說過Serenity的分片就像是標準集裝箱,DApp放進就行了,安全性由系統保障。與之相對的是Cosmos,應用鏈不論是否接入Hub,都是自己保障安全。Substrate開發的應用鏈是兩個選項,要么接入Relay成為平行鏈,由Polkadot保障安全;要么獨立運行,自己保障安全。

最后是DApp升級,Serenity和以太坊1.0一樣,不支持智能合約升級。可能很多人對此已經習慣了,但我認為不支持升級是很大的缺陷,而且可能帶來嚴重的安全問題。首先是代碼不可能沒有bug。

Solidity等智能合約開發語言對形式化驗證并不友好,即便做形式化驗證,達到100%的邏輯路徑覆蓋也不現實。其次DApp是互聯網應用,互聯網應用應該隨需應變、迭代進化。

有人會認為智能合約是約定,所以不能改。其實真實世界的合同,都有經雙方同意可以取消或者修改的條款。想想兩個公司簽了合同,現在雙方都同意修改合同,結果合同本身限制了不可更改,是多么荒謬的情形。

更不要扯什么代碼即法律,法律也不是一成不變,可以廢止可以修訂,代碼反而不行,不是很奇怪嗎?結果就是很荒謬,一方面DApp有強烈的升級需求;另一方面平臺不支持升級。于是開發者自己想辦法,用delegateCall等rudimentary的方法,別別扭扭地實現了可升級,還美其名曰可升級設計模式。

有了這個辦法,開發者可以不經過用戶同意,甚至在用戶不知情的情況下修改智能合約。那么代碼即法律還有什么意義?用戶怎么才能知道智能合約可升級還是不可升級,哪些邏輯會變哪些不會變?只能自己看代碼。所以難怪以太坊只有這么少的用戶。反正我自己不夠格使用以太坊DApp。fomo3d的合約我研究過,就沒看出來有隨機數漏洞。

Parity的多重簽名錢包合約的一個小bug,鎖住了上億美元資金,坑了自己和好多人。如果要透徹研究代碼才能信賴并使用DApp,那全世界的DApp目標用戶,大概也就是數以千計吧。

要開發能夠跟中心化互聯網應用競爭的DApp,可升級是必須的。而且必須是平臺支持的規范的升級,不能DApp各顯神通。類比Android平臺,手機App就經常升級,但是用戶必須知情并同意,新版本App增加了權限需求,要顯示給用戶。

這些都是平臺控制的,手機App只能遵循不能饒過。DApp的升級應該更加規范也更加嚴格,因為DApp管理的是加密資產,而且沒有可信任的中心。Polkadot和Cosmos都允許應用鏈升級,Cosmos的分區是自己處理升級,Polkadot的平行鏈可以安全升級。

Polkadot如何實現平行鏈安全升級,我還沒搞明白。幾周前Gavinwood中國行,講了TrustWormhole可信蟲洞,我也沒太聽懂。誰了解這部分內容希望能指點一下我。

總而言之,在去中心化的區塊鏈上,實現規范的安全的應用升級非常困難,但是沒有別的選擇,必須支持升級,而且是平臺保障的規范的安全的升級。我認為在可升級性方面,只有Polkadot的方向選擇是正確的。

十六、網絡拓撲比較

下面來談談,Serenity、Polkadot和Cosmos這三個區塊鏈生態在充分發展之后,會形成什么樣的網絡拓撲。注意邏輯網絡,不是物理網絡。另外網絡充分發展需要時間,這里討論的是大概5年后的圖景,有些內容是根據架構設計所做的推測。

首先看左側,Serenity網絡像是一個儀仗隊方陣。信標鏈是旗手或者領隊,方隊的每列是一個標準分片。每個分片都可以承載一些DApp。中間的圖是Polkadot。Polkadot網絡是一顆樹,樹根是中繼鏈,可連接多個平行鏈。平行鏈可能是特別業務的應用鏈,也可以是支持智能合約的DApp平臺。

另外其他類型的區塊鏈可通過橋接入中繼。分析Polkadot架構可知,由于驗證人數量等限制,單個中繼能支持的平行鏈數量有限。大概是幾十到一百這個量級,很難達到幾百個。

當然即便達到幾百,也不能充分實現Web3愿景。所以Polkadot未來會支持中繼級聯。也就是一級中繼接入根中繼,二級中繼接入一級中繼,從而具有無限擴展能力。

右側圖是Cosmos。Cosmos的多個Hub可以互聯,每個Hub連接多個分區。還有錨定分區對接其他類型的區塊鏈。Cosmos網絡拓撲與Polkadot粗看上去很像,都是樹形結構。但是Cosmos的Hub和Hub之間,沒有誰向誰提供安全保障的問題,所以沒有層級高低。

如果把層級關系看作是連接的方向,那么Polkadot是有向無環圖,Cosmos是則是無向無環圖。其實Cosmos網絡拓撲是可以成環的,應該是為了避免出現跨鏈消息路由選擇問題,選擇了無環的設計。

相比較而言,我認為Serenity的增長方式和資源分配有點僵化。系統是自上而下式的增長,通過迭代支持更多的分片。DApp選擇哪個分片上,面臨一些不確定性。例如某個DApp非常成功,它需要的處理能力超出了單一分片的容量上限怎么辦?

目前看是沒有辦法。另外,DApp上線的時候你選擇了一個相對空閑的分片。結果同一分片土壤出現特別受歡迎的DApp,那么你的用戶就只能忍受高成本和擁堵。

簡單概括就是區塊鏈計算資源做不到對DApp按需分配。Cosmos和Polkadot的增長是自下而上的,不斷有新應用鏈加入,也會有應用鏈退出,資源分配也更加靈活。

Cosmos跟另外兩個平臺的最大區別是不共享安全性,一定程度上犧牲了信任最小化,這個在前面已經講過了。這么說Polkadot兼具了共享安全和自下而上式地有機增長,是不是就是最好的?Polkadot確實有這些優點,但是它也有自己的劣勢。

最大的問題我認為就是平行鏈的接入門檻會很高。按照目前公布的拍賣計劃,到2020年底,只有24個接入插槽。你如果開發平行鏈,希望明年上線,就要跟全球眾多團隊競爭這24個名額。

當然,未來edgeware等智能合約平臺上線后,能夠一定程度上降低DApp門檻。相比之下,在Serenity上部署DApp沒有門檻。Cosmos也會好很多,因為CosmosHub可以支持更多插槽,另外生態系統中會有多個Hub,形成賣方市場競爭。

從更大的圖景上看,Serenity、Polkadot和Cosmos互聯是可行的,也一定會發生。EOS等采用DPoS的區塊鏈也都可以連接進來,再加上側鏈等二層網絡,異構區塊鏈的互聯網絡將會形成。

十七、辨析「跨鏈」

本次分享已經接近尾聲了,我們才開始討論跨鏈概念。原因是我認為「跨鏈」概念有歧義,容易產生誤導。至少我自己被誤導了很長時間。以前看關于Cosmos和Polkadot的材料,都是把它們當作跨鏈方案來介紹。

我就想為什么要跨鏈?跨鏈能干什?雖然現在有幾百上千公鏈,但是有幾個有用的?比特幣算一個,有人會加上以太坊/EOS,有人會加上ZCash/Monero,反正也就是三五條吧。

就這么幾條有用的鏈,有什么可跨的?感覺就是脫了褲子放屁——多此一舉。所以以前我看到介紹Cosmos和Polkadot的文章,掃一眼標題就過去了,不點進去看。

直到去年GavinWood在慕尼黑演示Substrate,我才弄明白Polkadot是分而治之的新一代公鏈架構,是DApp的新形式。從那以后,我才開始關注這個領域。

Polkadot和Cosmos設想的區塊鏈未來圖景,不是onechainfitall一鏈打遍天下,也不是onechainrulethemall一鏈君臨天下,而是由眾多異構區塊鏈互鏈形成的網絡。互聯就是區塊鏈之間能夠跨鏈交易,所以跨鏈是異構區塊鏈互聯網的基礎能力。

比特幣、以太坊等公鏈加入到區塊鏈互聯網,是成果之一,而不是跨鏈的全部內涵。所以我的看法是,跨鏈概念沒有錯,但是如果理解成為跨而跨,就沒有抓住重點。

把異構區塊鏈實現跨鏈交易定義為跨鏈。那么我們來說說什么不是跨鏈,或者說市面上有哪些所謂的跨鏈是在掛羊頭賣狗肉。首先跨鏈必須是參與的兩條或者多條區塊鏈的狀態發生了一致性的改變,都是寫操作。

如果一邊是讀,另一邊是寫,或者說是根據一個區塊鏈的數據去修改另一個區塊鏈的狀態,這不叫跨鏈。當然從多個鏈讀數據,更加不是跨鏈。

還有一個要求,不但要實現跨鏈交易,而且跨鏈交易應該是去信任的。還是拿Cosmos通證跨鏈轉帳舉例,從A分區經過Hub轉10個通證到B分區,你需要相信A分區、Hub和B分區三個區塊鏈網絡。

這三個網絡到底值不值信任呢?你需要自己判斷,如果去中心化程度高,PoS質押通證的總價高,被攻擊的難度大,就值得信任。有些所謂的跨鏈方案,Hub本身不是區塊鏈,而是個網關,那么網關值得信任嗎?

答案是不知道,網關是單一實體運營的計算設備。信任網關的前提是信任運營實體。例如我們把錢存在工商銀行,通過支付寶來花錢,也沒什么不妥。阿里和工商銀行都值得信任,所以他們運營的網關也值得信任。

但是無論網關是否值得信任,都不屬于我這里所談的跨鏈。我們說的跨鏈,Hub要采用分布式賬本技術,而且是去中心化的運營,從而實現信任最小化。

以后再看到所謂的跨鏈項目,可以自行分辨,是不是支持異構區塊鏈的去中心化跨鏈交易。如果不能支持,那么它所說跨鏈跟Cosmos和Polkadot不是同一類概念。

十八、下一代DApp開發技術

我個人認為目前已經落地的DApp只有一個,就是比特幣。比特幣是去中心化的價值存儲型貨幣,或者叫數字黃金。因為是價值存儲型的,所以它對性能的要求很低。

在未來幾年,去中心化的支付結算型貨幣和交易所很有可能落地。支付結算型貨幣的幣值,應該跟直接或者間接地跟購買力掛鉤。那么現在usdt、tusd、摩根大通幣,以及未來的facebook幣、央行加密法幣,都是中心化的。做不到去信任、無許可和抗審查。

閃電網絡和MakerDAO是重要的嘗試,有可能帶來突破。貨幣、借貸、資產發行、資產交易、保險、衍生品…我們離顛覆傳統金融、改變世界也只隔著幾個真正落地的DApp。隨著區塊鏈擴容,基礎設施給力了,DApp就可能迎來真正的爆發。

程序員要怎樣才能成為DApp弄潮兒,我們梳理下一代DApp開發技術。注意DApp是互聯網應用。互聯網開發的后端、前端、移動端、瀏覽器、桌面端技術仍然有效,但不在討論范圍之內,我們只談實現去中心化的技術。

三個擴容思路,每個都有多種實現,我只列出代表性項目。代議制擴容的代表是EOS和波場。分層擴容分為狀態通道和側鏈兩個分支,狀態通道的方案有CelerNetwork、Counterfactual等,側鏈有Loom、OmiseGo等。分片的三個典型方案,Serenity、Polkadot和Cosmos已經逐一介紹過了。

這么看來,下一代DApp開發技術似乎有很多中。其實不是,DApp開發目前只有種,就是智能合約。智能合約有兩個主流的方案,EVM和Wasm。我們列出的項目,基本都支持EVM,現在或者未來會支持Wasm。

EVM的主力開發語言是Solidity,圍繞Solidity已經形成生態,包括Truffle/Remix/OpenZepplin等工具、大量的技術資料、實例、社區討論答疑等等,而且也有相當一批程序員會Solidity語言。所以掌握了Solidity,可以確保在大多數公鏈上開發DApp。

目前唯一的例外是EOS,EOS不支持EVM,而是一步到位使用wasm。wasm會是未來智能合約開發的標準,可以支持用多種編程語言開發智能合約,包括java\c++\go\rust等等。

Cosmos和Polkadot提供了開發DApp的第二種方式,就是開發應用區塊鏈。與智能合約相比,應用鏈的優勢是具有極大的靈活性。開發者可以自行選擇或者定制共識算法、治理模型、經濟模型等等,并根據實際需求配置硬件和網絡。

但是另一方面,應用鏈開發、運營的成本會顯著高于智能合約。例如要部署Cosmos的分區鏈,至少需要4臺以上的主機,而且要質押相當數量的Atom通證,才能接入Hub。可以預計,達到一定規模的團隊,才有足夠的資源開發并運營Cosmos或者Polkadot的應用鏈。

簡單總結就是:下一代DApp有兩類開發技術,輕量級的智能合約,和重量級的應用鏈。個人或者小型創業團隊會主要使用智能合約。大型企業或者有充裕資源支持的創業項目,會使用應用鏈。

還有一種合理的做法是,先用智能合約實現DApp,在獲得驗證和反饋之后,再開發功能更完善、使用體驗更好的應用鏈。

十九、開發者如何選擇?

后端或者全棧工程師如何選擇DApp開發技術呢?我認為未來的區塊鏈世界會是異構區塊鏈互聯的網絡,多個平臺都有會各自的生存空間,不必輕言誰將取代誰。

所以我的建議是:主要考慮當下的條件來選擇技術路線,例如當前可用平臺的能力,團隊成員的技能等等。而不必過于糾結未來的不確定性。

如果項目已經啟動,那就沿既定路線繼續走下去。如果還未開始,首先明確是開發公鏈DApp還是開發企業解決方案。如果是開發公鏈DApp,那么是否需要跟現存DApp互操作。如果是,那么應該選擇在現存DApp相同的公鏈上開發。

就是說你需要互操作的DApp在以太坊上,你就在以太坊上開發。在EOS上,你就在EOS上開發。有人可能會問,不是可以跨鏈嗎?跨鏈是非常復雜的技術,而且肯定不是免費的。在滿足需求的前提下,實現方案應該盡量簡單。所以能避免跨鏈,當然應該避免。

那如果不需要與現有的DApp互操作呢?這里隱含了一個問題是,你的DApp會不會跟未來的DApp互操作?或者別人的DApp會不會要跟你的DApp互操作。

舉個例子,你開發一個通證合約,作為公司業務積分系統。如果你們公司的積分使用范圍很大,是不是可以在去中心化交易所進行交易,是不是可以作為資產抵押給貸款DApp?成功的DApp應該盡量融入價值互聯網的大生態。所以DApp互操作不是一個選項,而是DApp的基本需求,只是不一定要跟現存的DApp互操作。

下一個問題是:DApp是不是只需要管理加密通證?如果回答是肯定的,應該優先選擇Cosmos,如果回答是否定的,則應該選擇Substrate。為什么呢?我們前面講過,Cosmos能夠實現跨鏈通證轉移,而Polkadot能實現任意形式的DApp互操作。

有人可能會說,Polkadot多強大靈活啊。這個我同意,但是大家應該理解,世界是公平的,沒有免費的午餐。強大靈活的代價就是復雜和高成本。

Cosmos在架構上比Polkadot要簡單很多。因此我可以有把握地推斷,至少在前期Cosmos會比Polkadot更可靠,而且使用成本更低。所以如果Cosmos滿足需求,就應該選它。

如果業務需求超出了加密通證的范疇,可以選擇Substrate。另外前面有個分支,就是開發企業區塊鏈應用,或者說開發聯盟鏈應該選什么?我認為也應該選擇Substrate。

為什么不選HyperlegderFabric或者以太坊呢?因為商業公司推動的技術平臺,注定競爭不過主流的開放平臺。至于說用以太坊開發聯盟鏈,我認為靈活性不夠。

企業業務通常很復雜,對性能、可管理性等有很高的要求,而且常常需要快速迭代。Substrate是完整的區塊鏈框架,高度模塊化和可定制化。Rust語言側重安全和性能,也非常適合開發關鍵業務系統。

二十、Rust語言

做Polkadot/Substrate開發,繞不開的問題是Rust語言。在我二十多年的開發生涯中,遇到過極少數能快速掌握新語言的程序員。但是絕大多數程序員,包括我自己,掌握一門開發語言,熟悉標準庫和開發框架,都需要很長時間。

所以學習一門新語言,對我來說,是個艱難的決定。近些年涌現出了很多開發語言,其中Rust語言以學習曲線陡峭而著稱。到底值不值得花大量的時間來學習掌握Rust語言呢?作為一名Rust語言的初學者,我談談自己的看法。

首先是Rust語言很棒,但是尚未流行。這不是我個人的看法。2019年StackOverflow的調查顯示,按流行程度排名,Rust只能排在第21名,左邊這張圖只顯示了前16名,所以看不到Rust。

另外Tiobe編程語言指數排名,Rust目前排在第34名。再看右邊的圖,在StackOverflow調查最受程序員喜愛的開發語言排行榜上,Rust高居第一。而且這是Rust第連續四年排名第一,考慮到Rust1.0版是2015才發布,可以說Rust正式面世以來,一直是最受程序員喜愛的語言。

而且大家知道,一門編程語言,追求高性能,和讓開發者輕松愜意,通常不可兼得。比如Java和Python程序員不需要考慮內存管理,當然降低了學習和開發的負擔,但是系統就要處理垃圾回收,帶來性能上問題。

反之,c/c++需要程序員自己管理內存,性能可以達到最優,但是前提是要把程序寫對,增大了開發的難度。但是Rust似乎魚和熊掌兼得,即達到了跟c/c++相同等級的性能,還能受到程序員的喜愛。

第二個看法是,Rust語言適合高級程序員開發平臺型的項目。Rust語言非常重視性能和安全,它試圖通過語言規范,或者說編譯器,來引導程序員寫出高效安全的代碼。熟悉了Rust的用法,能自然而然地開發出高性能和高度可靠的系統,不妨稱為Rust之道。

Rust之道認為實現某個目的通常有一種最好的方式,Rust試圖在語言級別引導或者強制你采用最好的方式。如果不按照Rust之道來編碼,它就讓你連編譯都通不過。不像Javascript等語言,總是有很多種選擇,可以按自己的習慣,怎么寫都可以。

當然代碼質量可能良莠不齊,而且可維護性很差。學習并掌握Rust之道,需要理解一些重要的編程概念,比如對象的所有權等等。沒有堅實的開發經驗,很難掌握。這也就是大家認為Rust語言學習曲線陡峭的原因。

如果不是開發對性能和安全要求很高的平臺級項目,用Rust有點殺雞用牛刀。因為項目在性能和安全上的收益,不一定能抵消采用新開發語言導致的成本。

如果要開發平臺級系統或者關鍵業務系統,Rust就值得考慮。另外學習Rust語言可以帶動自己加深對內存、線程、異步、閉包、函數式等高級開發概念的理解,對開發能力的提升有莫大好處。

所以簡單總結一下,就是如果你有一定的開發經驗,未來可能或者有志于開發平臺型的系統,當然就包括區塊鏈開發,那么Rust語言就值得你投入時間去學習掌握。

我用羅素的名言作為本次分享的結束語——須知參差多態,乃幸福本源。真正理解并欣賞Polkadot和Cosmos設計理念的人,都不會是最大化主義者,也不會認為Polkadot的目標是替代以太坊。

至少以太坊基金會和Parity公司都不這么認為。Parity公司一直是以太坊生態的重要支柱之一,他們也在積極參與Serenity開發。

前些時候,以太坊基金會向Parity公司支付了500萬美元,即是對Parity多年支持以太坊的感謝,也是資助他們繼續開發維護以太坊節點軟件。我對比特神教已經見怪不怪了,至少我能理解他們為什么那么想那么說。

但是現在以太坊生態里,也開始出現以太神教的趨向,就有點不可理喻。開放是以太坊愿景的基礎,以太坊也帶領我們看到了去中心化價值互聯網的可能性。所以我認為支持以太坊,但是反對其他區塊鏈,是一種自相矛盾。

前面也談過,人們對去中心化應用的需求是多樣化的。Serenity、Polkadot、Cosmos和EOS,還有其他DApp平臺公鏈,都做了不一樣的設計選擇,或者說是不同的折中。因此他們會非常適用于某些需求,而不太適用于其他需求。

互聯互通是大勢所趨,任何一個生態如果選擇孤立發展,就會被區塊鏈互聯網產生巨大的網絡效應所擠壓,最終被淘汰。因此我們可以期待,區塊鏈的未來會百花齊放,更加參差多態,希望區塊鏈和去中心化應用成為人類的幸福之源。

來源鏈接:mp.weixin.qq.com

Tags:APPDAPPDAPDOTimtoken官網APP下載DAppLinksYFIDappDOTA幣

以太坊交易
ZG.TOP關于CIF 開盤延遲的公告_EDA

尊敬的ZG.TOP用戶:應項目方申請,ZG.TOP原定于2019年05月08日15:00開盤的CIF/USDT交易將延遲。具體開盤時間將以公告形式另行通知。對此造成的不便,敬請諒解.

1900/1/1 0:00:00
互鏈獨家|4月區塊鏈融資月報:金額環比下降69.7% 中美降溫_SEN

作者:互鏈脈搏研究院 2019年4月,全球區塊鏈投融資市場急劇降溫。根據互鏈脈搏研究院不完全統計,2019年4月,全球區塊鏈領域共斬獲37筆融資,項目數量接近3月份,但融資總額僅為13.39億元.

1900/1/1 0:00:00
5.8午間行情:BTC多頭并未認輸 希望還在_BTC

文章系金色財經專欄作者供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.

1900/1/1 0:00:00
類 DApp為何需要發幣,為何又不需要發幣?_APP

2017年11月,以太坊上的「加密貓」成為了區塊鏈上的第一個DApp,一只只能看卻摸不到的卡通貓足足可以賣到17萬美元的高價,不讓吸引了全世界所有投資者的目光,也引領了DApp的潮流.

1900/1/1 0:00:00
SBI 加密資產交易所首年實現盈利 考慮推出證券化通證_STO

據外媒4月26日報道,日本新推出的加密資產交易所SBIVirtualCurrencies在推出第一年就實現了盈利.

1900/1/1 0:00:00
礦業回暖致二手礦機價格翻倍 新礦機回報期更長_加密貨幣

從四月份開始,比特幣牛市似乎又回來了,隨之而來的是國內二手礦機價格幾乎翻了一倍。因為,比特幣挖礦又開始賺錢了.

1900/1/1 0:00:00
ads