編者注:本文對Cosmos網絡中區塊鏈和比特幣、以太坊進行了巨細靡遺的比較。作者先從區塊鏈系統的棧層出發,分析了比特幣、以太坊在不同棧層上的技術要點,最后回歸到Cosmos網絡中的區塊鏈,概念解釋尤為清晰,是不可多得的解釋文。
鑒于文章實在太長,我們在文首附上了目錄。
目錄
Cosmos是什么?
區塊鏈結構簡介
比特幣棧層結構
以太坊棧層結構
基于比特幣與以太坊構建應用程序
Cosmos區塊鏈結構
Cosmos共識層
Cosmos網絡層
Cosmos應用層
結論
密碼學貨幣產業從未停下腳步。
一切都始于2010年比特幣的問世。比特幣剛問世時,所有人都認為它是數字貨幣的圣杯。曾經被認為不可能的事情現在變成了現實:第一個點對點支付網絡出現了。
即便在今天,對事物的信任仍然是最難以琢磨并且最珍貴的資產。比特幣通過創建第一個“免信任型”系統,繞過了這一問題。但這僅僅是一個開始。
從那之后,比特幣就成為了催生更廣泛密碼學創新的催化劑,這些創新也導致了一系列新型去中心化系統與金融基礎設施的出現:以太坊、閃電網絡、EOS、Tezos、Maker……這個名單還在不斷延長。
但是有一個項目與眾不同:Cosmos。
在區塊鏈領域,Cosmos是一個“新生兒”。雖然它的理念已經出現有一段時間了,但其開發團隊一直在背后慢慢地開發以確保Cosmos設計及實現的正確性。這也使得Cosmos最近才公開推出。
因此,有很多人看過Cosmos項目之后卻不理解它也就不足為奇了。簡單瀏覽Cosmos相關資料并不會讓他們能夠直觀地了解Cosmos,反而會讓他們有更多疑問:
什么是Cosmos?
Cosmos的工作原理是什么?
與比特幣、以太坊相比Cosmos有什么不同?
Cosmos的特點是什么?
我已經知道Cosmos團隊快兩年了。老實說,當我第一次聽說他們在做什么的時候,我和其他人一樣對它的概念一無所知。
但當我更深入地了解Cosmos之后,我開始非常欣賞它。我這么說不僅是為了引人注目,是真正地發自內心。
我對Cosmos非常著迷,所以我們決定將TruStory應用構建為一個Cosmos區塊鏈應用。
盡管如此,關于Cosmos仍然有很多困惑。所以我決定專門為此寫一篇文章。我想讓讀者對Cosmos是什么以及它在區塊鏈世界中的定位有一個更深層次的理解。
你準備好開始了么?理清思緒,帶上你的思考帽,系好安全帶。我們要開車啦!
Cosmos是什么?
Cosmos是這樣定義自己的:
“一個由多條獨立平行區塊鏈組成的去中心化網絡,每條平行區塊鏈均采用BFT共識算法。”
哇,好拗口啊!讓我們把這個定義拆分成幾個容易理解的部分。
“獨立平行區塊鏈的去中心化網絡”
我在這里假設讀者已經對區塊鏈非常了解了!不過,我還是快速回顧一下:
簡單來說,區塊鏈是一個分布在許多計算機上的數據庫,每臺計算機上的數據庫都保持相同的狀態。換句話說,每臺計算機上的數據庫所包含的數據都完全相同。這些計算機共同組成了所謂的“區塊鏈網絡”。
歐科云鏈集團正式啟動區塊鏈科普行動“星途計劃”:歐科云鏈集團于4月26日,正式宣布啟動了區塊鏈科普行動——“星途計劃”,行動包括將在全國范圍展開系列沙龍,加大力度推進區塊鏈科普進機關、進國企、進校園等,聯合政府部門、行業協會等共同構建起更加完善和有效的區塊鏈科普教育生態,與此同時,直擊區塊鏈科普現存痛點,推出簡單易懂的“秒懂區塊鏈”公益短視頻課。
該計劃旨在全維度推動社會建立對產業更清晰的認知,與“鯤鵬計劃”一道助力數字經濟及區塊鏈產業本身健康發展夯實“人才”和“產業認知”兩大基礎。[2021/4/26 20:59:37]
比特幣和以太坊都是區塊鏈,而Cosmos是由許多這樣并行運行的區塊鏈組成的區塊鏈網絡。
如果你不能完全理解剛才說的,那么在進一步了解Cosmos工作原理之前,你最好再多讀一些關于區塊鏈的基礎知識。
“每條區塊鏈都采用BFT共識算法”
BFT是“ByzantineFault-Tolerant”的縮寫。一條拜占庭容錯的區塊鏈能夠在網絡中部分節點宕機以及/或者作惡的情況下,保證網絡依舊具備“安全性”與“活性”等性質。安全性與活性能夠確保區塊鏈網絡中每個節點維護相同的狀態。
插播:如果你想要更深入地了解什么是安全性與活性,請閱讀我的這篇有關分布式共識的文章。
因此,一種“BFT共識算法”乃是定義了計算機間通信與協調、使得區塊鏈具有拜占庭容錯能力的算法。Cosmos網絡中的所有區塊鏈都采用某種BFT共識算法。
比特幣和以太坊的共識算法不是典型的BFT算法。所以它們不符合Cosmos網絡中區塊鏈的定義。
插播:如果你還是不清楚什么是BFT,我在這篇文章中寫得蠻清楚了。
“Tendermint共識算法”
Tendermint是由Cosmos開發者提出并構建的一種BFT共識算法。Cosmos網絡中的區塊鏈可以使用Tendermint共識或任何其他BFT共識算法。稍后我們將在本文了解更多關于Tendermint的內容。
簡單來說,Cosmos網絡是一個由多條并行運行的獨立拜占庭容錯區塊鏈組成的生態系統。這些區塊鏈是獨立運行的,并且能夠與其他區塊鏈進行互操作。
現在你可能會想,“為什么區塊鏈之間要進行互操作呢?”
好問題!我們很快就會講到。但首先我們要回顧一下區塊鏈的結構。
區塊鏈結構簡介
在深入研究Cosmos生態系統中區塊鏈是如何工作和互操作的之前,讓我們先回顧一下區塊鏈結構的基礎知識。
正如我們前面所討論的,區塊鏈是一個多機復制數據庫,并且在每臺計算機上維護相同的數據。這種類型的分布式系統也被稱為“復制狀態機”。
復制狀態機是一種多機復制的確定性狀態機,但因為網絡中每臺計算機都維護著相同的狀態,因此在功能上看起來就像一臺單機。
聽起來很熟悉,對吧?回顧上文區塊鏈的定義,這里的定義僅僅是將“數據庫”替換為“狀態機”、“數據”替換為“狀態”,相信你能明白我的意思。
“確定性”可以簡單地理解為,給定一個確定的輸入,狀態機將始終產生相同的輸出。在區塊鏈系統中,“確定性”意味著如果你從一個給定狀態開始執行相同的事務序列,你總是會得到相同的最終狀態。
復制狀態機從某個狀態啟動。每筆有效事務都將導致系統狀態轉變到下一個狀態。
IMF今日發布的加密貨幣科普視頻實為兩年前舊聞,且存在諸多疏漏:國際貨幣基金組織IMF今日在推特上發布了一條關于加密貨幣的科普視頻,這段時長兩分鐘的視頻最初發布于2018年6月。該視頻稱加密貨幣是“貨幣進化的下一步”,但沒有特別提到DLT、區塊鏈,甚至是代幣名稱等術語。BTC、XRP和ETH只出現在說明加密交易的圖形中。盡管這段視頻到目前為止已經獲得了超過13.7萬的點擊量和2900個贊,但來自加密社區的許多反應都是批評的,他們指出了信息中的漏洞和似乎具有誤導性的措辭。
Reddit用戶nanooverbtc稱:“他們犯了很多錯誤,比如把私鑰稱為密碼。”該視頻也沒有討論挖礦或加密貨幣供應。Kraken策略師Pierre Rochard等知名人士表示:“可證明的稀缺性是比特幣有趣的原因,你忘了提這一點。”(Cointelegraph)[2020/8/24]
復制狀態機在概念上有三個棧層:
1)應用層
應用層負責定義狀態變遷,并在事務發生后更新狀態機狀態。
2)網絡層
網絡層負責將在某一個狀態機上執行的事務傳播到網絡中其他所有狀態機上。
3)共識層
共識層由算法組成,負責確保在事務執行后每一臺狀態機都存儲相同的狀態。
3a)抗女巫攻擊層
試圖在去中心化公網運行的復制狀態機還需要第四層,確保任何一臺狀態機都不能破壞網絡。如果沒有這一層,狀態機可以通過創建許多假身份來篡改狀態,從而獲得與其投入不成比例的影響或收益。
總之,應用層負責定義狀態與管理狀態遷移。網絡與共識層負責保持每臺機器上狀態一致。抗女巫攻擊層負責避免女巫攻擊。
現在,讓我們看看在比特幣區塊鏈和以太坊區塊鏈中是如何定義與實現這些棧層的。
比特幣棧層結構
1)應用層
比特幣的主要應用是P2P交易。比特幣使用Script來定義與執行交易。當發送方通過交易發送比特幣時,發送方將使用腳本來編碼指定誰才能掌控這筆資金。Script包含一組操作碼或者說命令,發送方可以使用這些操作碼來指定要花費一筆比特幣所需滿足的條件。
2)網絡層
當發送方向接收方發送比特幣時,該轉賬交易必須被廣播到網絡中,才能使礦工將其打包進區塊中。比特幣使用一種“Gossip協議”來確保每個節點都會將其接收的所有新區塊或交易發送至鄰居節點。Gossip協議是確保消息在全部節點間傳播的P2P協議。比特幣網絡中所有節點都會將其新接收的有效交易立即發送給其鄰居節點,從而使得待打包交易能夠在幾秒鐘內通過點對點網絡傳播到大多數節點。
3)共識層
在交易被轉播到網絡中后,還需要將其添加到區塊鏈中才能完成轉賬。驗證交易并將其打包到區塊中的過程稱為“中本聰共識”。中本聰共識的運行原理可以在其他論壇或文章找到。如果你想深入了解,這篇文章是一個很好的入門文章。
3a)抗女巫攻擊層
中本聰共識依賴于“工作量證明”來防止女巫攻擊。基本上,產生一個新區塊所需的算力使得比特幣共識協議自身能夠抵抗女巫攻擊。由于礦工需要大量的算力來產生下一個區塊,使得他們無法在不增加大量算力投入的情況下“偽造”多個身份。
以太坊棧層結構
1)應用層
與比特幣不同,以太坊的設計初衷是構建一個能夠運行去中心化應用的平臺。以太坊包含一種高級語言,使得開發者能夠通過編寫智能合約定義去中心化應用的具體功能。EVM是以太坊應用層的核心。EVM使用EVM編譯器將智能合約代碼編譯成字節碼,用戶可以通過交易的形式,將該字節碼上傳到區塊鏈之后,EVM就可以執行這些字節碼,從而改變去中心化應用的狀態。由于以太坊網絡中所有節點均運行EVM,這也保證所有節點的狀態一致。
動態 | 浙江衛視節目科普支付寶區塊鏈防偽溯源產品:昨日,在浙江衛視播出的科普綜藝欄目《智造將來》現場,支付寶首次展示了支付寶區塊鏈防偽溯源產品,以接地氣的方式公開向大眾展示區塊鏈在生活中的應用。[2019/3/4]
2)網絡層
與比特幣相似,以太坊也使用Gossip協議,使得節點能夠與其鄰居節點通信。
3)共識層
為了達成共識,以太坊使用了與中本聰共識相似的“Ethash”,但Ethash與中本聰共識有一些關鍵區別。如果你需要了解以太坊共識算法的工作原理,請閱讀我之前的一篇文章。(編者注:中譯本見文末超鏈接《以太坊的工作原理》)
3a)抗女巫攻擊層
與比特幣一樣,Ethash依賴于工作量證明來抵御女巫攻擊。
基于比特幣與以太坊構建應用程序
我希望以上內容讓你對區塊鏈結構有了一定了解。當我們討論“比特幣”或“以太坊”時,這些名字指的是相關的所有棧層。因為比特幣和以太坊是由這些棧層組成的整體。
你無法將以太坊智能合約與其底層Ethhash共識層分開,也因此單獨討論這兩個主題都沒有意義。比特幣也是如此,不使用中本聰共識與工作量證明你就無法進行比特幣交易。
另一方面,Cosmos采用了一種稍微不同的模式:它將應用層與共識層和網絡層分開。
因為Cosmos的目標是建立一個區塊鏈網絡,所以這樣設計是有意義的。在這個區塊鏈網絡中,每條區塊鏈是獨立的,并且有它自己的需要和要求。在這種情況下,想要提出一種一刀切的、適合所有區塊鏈的應用層,是行不通的。讓我們用幾個例子來研究一下原因。
比特幣局限性的一個例子
假設我們準備構建一個貨幣應用程序。在這種情況下,像BitcoinScrypt這種簡單的基于堆棧的腳本語言是最佳選擇。比特幣腳本語言不僅可以很好地實現從一個地址到另一個地址的價值轉移,并且非常簡單、不是圖靈完備的。
因此,它不太容易受到各種類型安全漏洞的影響,而這些安全漏洞可能會嚴重影響圖靈完備的編程語言。這正是我們在處理貨幣與價值存儲時想要的。但是這種簡單也有其局限性。
使用Scrypt做任何更復雜的事情都非常困難。比特幣腳本語言不僅受其可執行代碼復雜性限制,對于開發者來說也十分不友好。更糟糕的是,比特幣區塊鏈交易的處理速度很慢。因此,直接在比特幣區塊鏈上構建需要高交易吞吐量的應用是不現實的。
以太坊局限性的一個例子
與比特幣相反,以太坊的EVM與智能合約語言是為了支持更靈活的應用程序而設計的。Solidity是一種圖靈完備的編程語言,因此理論上它可以執行任意算法復雜度的代碼。
在實際應用中,由于Solidity易出錯并易受到安全攻擊,所以使用Solidity開發任意復雜度的程序是相當困難的。這種特性與處理價值轉移的應用程序背道而馳,在后者這個場景種,安全性是最重要的。
此外,智能合約也非常難以升級,從而使得迭代開發非常困難。合約一旦部署上鏈,你所能做的就只有祈禱它能夠平穩運行!與比特幣一樣,以太坊交易處理速率也非常低,因此在以太坊區塊鏈上構建需要高交易吞吐量的應用也是不現實的。
Cosmos的提出就是為了滿足這種實際業務需要,盡管它為此做了一些較大的犧牲。接下來我們將深入研究具體的細節。但在那之前,我們還必須理解Cosmos中區塊鏈的三個棧層是什么樣的。
動態 | 美國演說家Anthony Robbins開始科普什么是比特幣:美國演說家安東尼·羅賓(Anthony Robbins)在自己的網站上發布了一篇比特幣的科普文章,并在推特上向自己的粉絲介紹什么是比特幣,目前他的推特賬戶共有粉絲304萬人。[2019/1/1]
Cosmos區塊鏈結構
首先,我們將從共識層開始了解Cosmos,以便更好地理解在Cosmos上開發應用程序與使用比特幣或以太坊有何不同。
Cosmos共識層
Cosmos網絡中區塊鏈使用Tendermint共識算法。Tendermint是一個2014年誕生的開源項目,“旨在解決比特幣工作量證明共識算法的速度、可擴展性與環境問題”。
Tendermint共識算法是一個“無視應用層的共識引擎”。從本質上講,這意味著任何區塊鏈都可以使用Tendermint共識算法,它是拜占庭容錯的,并且使用PoS算法來抵御女巫攻擊。
又是一大堆術語!我們好好說道說道。
Tendermint共識是如何運作的?
回顧一下,共識算法的存在是為了保證事務執行后,狀態機中保存的狀態一致;而Tendermint共識算法定義了一種“能讓所有節點對下個區塊達成共識”的規則。
讓我們看看相關因素及規則是如何運作的吧!
驗證者
負責達成狀態一致的節點稱為“驗證者”。任何愿意協助整個網絡達成共識的參與節點都能成為驗證者;作為回報,驗證者會獲得交易手續費和區塊獎勵。Tendermint整合這些驗證者的投票結果,確定下一個區塊的正確狀態。
通過質押對抗女巫攻擊
每個驗證者的票都有自己的投票權重,投票權重通常是在創世塊產生時確定,或是在開始運行后根據應用層開發者所設計的某些邏輯來決定。一般來說,由驗證者鎖在系統中的代幣量決定投票權重的大小,這種質押物也被稱為“保證金”。
Consensus共識
按照規則,驗證者要按輪次對每一個區塊達成共識。每一輪都包含三個基本步驟:提議階段、預投票階段、預提交階段,以及兩個后續步驟:提交階段、新高度階段。從抽象角度來看,驗證者按照以下協議規則共同決定下一高度要使用什么區塊:
首先是提議階段,由指定的驗證者提出一個區塊——每一輪中的提議者都是從有序的列表中按照投票權重的比例,確定性地選擇出來的。
接著進入預投票階段——每一位驗證者廣播他們各自的預投票。
當該輪次中某一區塊收到超過2/3的預投票,我們就稱其為“polka”。一旦出現“polka”,就進入下一個階段。
進入預提交階段,由每一個驗證者廣播他們的預提交的投票。
如果某一特定區塊收到超過2/3的預投票,就進入提交階段,這個階段會將區塊加入區塊鏈,并增加區塊高度。每當有新的區塊加入區塊鏈,所在區塊鏈的區塊高度就1。如果失敗,則要么返回預投票階段,要么回到預提交階段。
要注意的是,在任何高度上,都有可能需要一輪以上的投票才能提交一個區塊。因為可能出現以下情況:
被指定的“提議者”在應該提出區塊時掉線
提議者所提出的區塊違反一些預先定義的規則
Tendermint依靠超時機制確保區塊鏈出塊不會遇到延宕。如果在超時前,提議區塊沒有收到超過2/3的預投票,則由新的提議者再次進行提出區塊流程。
聲音 | 中科院姚建銓:要加快推進區塊鏈與物聯網融合的科普 培訓:據新華網消息,日前,在區塊鏈與物聯網融合發展峰會上,中國科學院院士姚建銓說,關注區塊鏈技術里面的大數據,跟區塊鏈技術結合起來進行測量和檢測,能更好地提升激光清洗技術。姚建銓建議,無錫今后要加快推進區塊鏈與物聯網融合的科普、培訓,正確引導廣大人民群眾對技術的認知;同時,建立專業、權威,但又普適、成套的理論體系和標準,以此切入區塊鏈的實際應用。[2018/9/18]
協議細節詳見此處。
總的來說,Tendermint選擇了與比特幣的中本聰共識、以太坊Ethash不同的路線,讓我們做一些重點對比:
確定性與概率性
與中本聰共識和Ethash這類概率性共識不同,Tendermint是確定共識——這意味著Tendermint每個區塊都是最終確定的,而不像比特幣的區塊只是處于“很可能”被確定的狀態。
我們回顧一下中本聰共識,區塊總是處于“未確定”狀態——只有確定某個區塊在“最長鏈”上,才能有把握認為該塊正在被最終確定,這也是為什么比特幣交易需要等“6個區塊確認”。
而在Tendermint中,驗證者成功投票及提交后,區塊就立即被確認了。
固定驗證者vs.可變驗證者
中本聰共識及Ethash允許礦工隨時選擇加入或退出,并不需要其他礦工提前知曉。相反地,Tendermint共識要求維護一個事先知曉且固定的驗證者集合,驗證者身份是靠他們的公鑰來辨認的。
領導vs.無領導
中本聰共識及Ethash沒有指定領導者來提議下一個區塊。另一方面,Tendermint選擇領導者,或稱為提議者,負責提出下一個區塊。
明確的vs.模糊的超時機制
中本聰共識和Ethash沒有使用超時機制來確保礦工一定能出塊,而Tendermint有明確的超時機制保證區塊鏈的出塊過程不會遭遇延宕。
100個驗證者vs.1000個驗證者
Tendermint遵循傳統的一致性共識算法,每個驗證者之間都要進行通信。考慮到通信開銷,Tendermint無法像比特幣或以太坊那樣可以無限增加驗證者。Tendermint共識安排了100個驗證者。
因此Tendermint的缺點之一就是,它要求事先知曉所有驗證者,而且不允許驗證者隨時加入或退出;這與比特幣或以太坊不同。
除此之外,Tendermint還要求整個系統維持統一時鐘;雖然在實踐中Tendermint已經證明通過整合每個節點的時間戳就能維護統一時鐘,但大家都知道同步時間是個非常復雜的理論問題。
Tendermint的驗證者少于比特幣,而且要求事先知道驗證者集合,因此可能會有人提出Tendermint共識協議“不夠去中心化”的質疑。
但是,去中心化是見仁見智的。Okay,先不抖機靈,我想說的是去中心化是為了達到某種目標的手段,而不是目標本身;我不喜歡在了解去中心化的目標前就妄下評論。
我認為在許多案例下,只要破壞系統的代價夠大,并且有針對攻擊者的防御及懲罰機制,則Tendermint要求固定且事先知曉驗證者集合的保守方法是可行的。
如果我們回顧預測市場的例子,我會說去中心化預測市場應用,根本不需要像健全貨幣或是價值存儲應用一樣具備這么高級別的去中心化程度,有10、20或100個驗證者足矣。
以TruStory為例,我們使用CosmosSDK構建后端應用邏輯,將應用的狀態和邏輯存在區塊鏈上,而前端某種程度上是私有的——CosmosSDK允許我們建立用來賞善罰惡的激勵系統、透明化展示數據層、允許用戶分享網絡的所有權及治理權,還可以共同決議未來的事務、踢出惡意使用者,并按照個人喜好針對用戶層或基礎層設計網絡。對于開發者來說,他們也能基于后端區塊鏈邏輯構建自己的開發工具及服務。因此有10個或100個執行并驗證交易的驗證者,就能夠保障使用者和開發者對于透明性、所有權、責任歸屬的需求。
如果你能明白Tendermint以“選擇固定且事先知曉的驗證者集合”作為犧牲,所帶來的利益,你會對這些原本不可能實現的神奇特性充滿贊嘆:
安全性及活躍度
Tendermint的協議保證安全性及活躍度。假設超過2/3的驗證者投票權重沒有掌握在拜占庭驗證者手中,換句話說少于1/3的投票是惡意的,則協議就能保證網絡的安全性及活躍度。
高性能
Tendermint共識的出塊時間可以低至1秒,達到每秒處理數千筆交易的速度,讓Tendermint更適合需要頻繁交易的應用。
即時確認
在區塊鏈世界中,最終確定性意味著一旦區塊被提交上鏈,我們就能確定直至該區塊之前的整個區塊鏈的狀態。
如我們前面提到的,中本聰共識有其概率性,所以沒有辦法保證最終確定性。你只能基于大多數礦工可能還在該分叉中挖礦的概率,保證你的交易所在的分叉鏈是共識鏈。
但是,Tendermint要求驗證者對每個區塊進行投票及最終確認。所以我們可以說,在少于1/3惡意驗證者的情況下,交易能夠被“即時確認”——當區塊被創建出來,使用者就知道他們的交易已經被確認了。
責任制
Tendermint使用PoS作為抗女巫攻擊機制——要求驗證者質押代幣,以確保節點不會通過創建多個虛假賬戶來欺騙系統。
PoS比PoW更節能,但是它固有的“無利害關系”缺陷導致驗證者能輕易作弊。
Tendermint通過罰沒保證金來處罰違反協議規則的驗證者,避免發生無利害關系問題。說得更具體點,協議存在“鎖定規則”,規范了每個驗證者在投票給特定區塊時能做的行為。舉例來說,一旦驗證者預提交投票后,它就被“鎖定”在該區塊;只有在下一輪中要讓一個不同的區塊成為polka時,該驗證者才能解鎖并預提交另一個區塊。如果違反鎖定規則,驗證者會被罰沒保證金。
更簡單的輕客戶端
輕客戶端比全節點“更輕巧”,因為它們不存儲區塊鏈的所有狀態,只存儲區塊頭。除非是負責驗證和出塊的挖礦節點,或驗證者節點,不然大部分節點其實不需要存儲區塊鏈全狀態。
輕客戶端下載從創世區塊開始到當前區塊的區塊頭,而不去下載和存儲整條鏈。相比于全節點,輕客戶端只需要存儲少量數據,因為區塊頭就足以驗證某些特定交易的有效性。
最酷的事情在于,基于Tendermint的區塊鏈的輕客戶端甚至無需同步所有區塊頭,只要周期性的下載區塊頭就行。
就像我們前面討論的,Tendermint與比特幣、以太坊不同,其所有區塊都要經過投票及最終確認;因為每個區塊都經過最終確認,所以輕客戶端只要注意驗證者集合的變化——只要知道最新的驗證者集合,輕客戶端就能下載最新的區塊頭,并驗證這些區塊都有大于2/3的驗證者投票。
Cosmos網絡層
如我們上面所說的,Tendermint的共識依靠驗證者在每一輪進行投票來完成。因此,節點間必須能溝通及傳遞訊息,確保網絡中所有參與者都能看到相同數據。
與比特幣和以太坊一樣,Tendermint使用gossip協議快速傳播最新的區塊鏈狀態。
網路中的節點不一定要成為驗證者才能在網絡共識過程中發揮作用。舉例來說,節點可以是輕節點或是全節點,而不是驗證者;這類節點也被稱為“非驗證者節點”。
驗證者及非驗證者節點都要肩負傳遞數據的責任,以確保所有節點都能收到系統正在產生的信息和交易。
Cosmos應用層
目前,我們已經了解Tendermint網絡層及共識層的核心組成部分;網絡層負責網絡中所有計算機之間交易的傳遞,Tendermint共識算法確保狀態機的一致性。
但我們傳遞和驗證的到底是什么交易?這里就引出了應用層。
Cosmos應用層負責:
定義和提交需要被記錄進區塊鏈的交易
在交易通過共識層提交后,持續更新區塊鏈狀態
使用CosmosSDK構建應用程序
CosmosSDK提供一套構建應用層的框架,就像是區塊鏈界的Ruby-on-Rails,CosmosSDK也為開發者提供了一種基于Tendermint內核構建安全的區塊鏈應用的框架。
要記住,區塊鏈就是一個在所有節點將狀態做相同備份的狀態機,而CosmosSDK讓你可以構建能在多個節點間進行復制的實際狀態機。SDK讓你自定義應用的狀態、事務類型,及狀態-轉變函數所需的功能和工具。
Cosmos應用如何運行(抽象視角)
CosmosSDK提供一種“multistore”機制來定義及維護應用層狀態機的狀態。Multistore將應用層的狀態劃分到不同組件,通過各自的“模塊”進行管理。
CosmosSDK的強大之處就是它獨特的模塊化設計,每個模塊定義及維護一個狀態子集,這些狀態子集構成完整的區塊鏈。舉例來說:
銀行模塊:允許你在應用中持有代幣,及進行代幣轉賬
權限模塊:允許你創建及管理賬戶和簽名
質押與罰沒模塊:允許你通過編碼構建PoS共識機制
每個模塊都是個小狀態機,可以相互聚合生成總體狀態機。
應用開發者按照每個模塊和修改狀態的慣用邏輯來定義子集,除了CosmosSDK提供的模塊,開發者還能調用第三方模塊。
這種用于構建區塊鏈應用的插件模塊非常強大,因為它賦予開發者使用SDK或外部模塊的靈活性。
應用層如何與共識層交互?
發生在應用層的交易通過區塊鏈應用交互界面與Tendermint共識及網絡層通信。
ABCI是Socket通信協議,連接Tendermint核心與應用。它可以兼容任何編程語言,也就是說使用CosmosSDK構建的區塊鏈應用理論上能以任何語言編寫,而不僅僅是Tendermint底層共識和網路層所用的編程語言。
注意:當前版本的Cosmos主要支持Golang,后續會加入更多語言。
總而言之,CosmosSDK允許開發者基于Tendermint內核構建去中心化應用,這個應用理論上能用任何語言開發,并通過ABCI連接Tendermint共識引擎。
將應用層與網路層、共識層剝離,能讓開發者在開發各種類型應用的時候有更大的靈活性,再加上CosmosSDK允許這些應用以任何語言開發,讓區塊鏈App開發過程更像平常的應用開發的樣子。
這與在以太坊上開發應用形成鮮明對比,因為后者要求開發者學習新語言Solidity,還要克服Solidity的諸多限制和缺陷,而且Golang比Solidity具備更多的開發工具,開發體驗好上10倍。
除此之外,全部的以太坊App都基于單一網絡進行操作,這么做的優勢是這些App能夠共享以太坊的標準,以及相應而生的規模效應;缺點是所有這些App都共享以太坊共識層,會受到新加入的應用體量大小的影響。此外,整個網絡必須作為一個巨大的單元來管理,會被治理理念和意識形態分歧所束縛,使得擴展難以進行。
Cosmos區塊鏈應用不會受到這些限制,每個應用都有獨立的網絡、自己的共識層及治理層。
開發者有很大的自主性來決定它們的共識層權限,還能選擇基于代幣質押數量推舉公開的驗證者集合,或是通過預授權設置私密驗證者集合。這種自由選擇驗證者集合的規則,意味著區塊鏈對于自己的鏈有更大的自主性。
當然,這樣的好處伴隨某些犧牲:Cosmos網路中的每個區塊鏈應用都必須導入自己的驗證者、社群,及經濟體系;無法像以太坊一般,直接蹭用所有驗證者、強大的社群,及已有的經濟體系。
結論
在這第一篇文章里,我們對比了Cosmos網絡中的區塊鏈架構與比特幣、以太坊的不同。這種架構賦予區塊鏈應用對于自己的鏈更大的自主性。
在第二部分,我們要深入討論Cosmos中相互獨立的區塊鏈如何進行交互;更重要的是回答“為什么區塊鏈需要互相進行交互”。
關于“Startup非首發打折優惠上線通道”Gate.io正式上線“Startup非首發打折優惠上線通道”,針對已經在主流交易平臺上線的發展穩定有潛力的區塊鏈項目,提供更為快捷的上幣通道.
1900/1/1 0:00:00尊敬的用戶: 由于HEYCHAIN準備主網,更換合約地址,BiKi.com將于今日11:30暫時關閉HEY的充值提現,待更換完成后,我們將于2019年7月4日11:30恢復HEY的充值提現.
1900/1/1 0:00:00據Coindesk7月8日報道,Mt.Gox的債權人現在可以選擇將自己的債權賣給堡壘投資集團,從而結束從這家關閉已久的比特幣交易所取回比特幣的長期等待,獲得實實在在的美元.
1900/1/1 0:00:002019年7月2日19:30分,由全球知名交易所ZB與BW.com聯合主辦的BW數字無國界-全球行第二站在臺北成功落下帷幕.
1900/1/1 0:00:002019年上半年,是區塊鏈發展歷史上重要的時間節點,發生了許多重要的事情,有:1)比特幣價格觸底反彈,加密貨幣市場行情轉暖;2)比特幣算力創新高達到7450萬TH/s.
1900/1/1 0:00:00HubiMax首期打新計劃,80萬枚CMMC提前被搶購一空!錯過搶購,請不要錯過開盤!7月8日14:00CMMC/USDT開啟交易!未開充幣.
1900/1/1 0:00:00