【乾貨】被認爲是區塊鏈3.0版本的Cosmos到底是什麼?

Cosmos被譽爲「區塊鏈的互聯網」,也被認爲是區塊鏈的3.0版本。Cosmos旨在解決區塊鏈交互操做和可擴展性問題,其區塊鏈間通信協議能夠實現區塊鏈的互聯,支持不一樣區塊鏈之間的資產轉移。如下爲Cosmos項目詳細解讀。算法

看點一  Cosmos核心技術:Tendermint安全

Cosmos有一個很獨特的宇宙觀:這個世界不可能由一個區塊鏈主導,必定是多鏈並存,多幣並行的世界。如何把多鏈和多幣整合成一個生態系統,就是Cosmos的終極理想。它的理想還有個獨特的地方,它認爲幣和鏈應該是分離的。在Cosmos裏有個核心技術,使得代幣能夠跨區塊鏈進行轉移,這個核心技術就是Tendermint。Tendermint是區塊鏈領域較早的基於拜佔廷容錯協議的PoS共識引擎。網絡

Cosmos認爲以比特幣爲表明的區塊鏈1.0,是網絡層、共識層和應用層混合成一體的產品。以以太坊爲表明的區塊鏈2.0,簡化了這一構架,用戶不須要直接處理共識和網絡層相關細節,只需基於以太坊提供的虛擬機的高級語言寫分佈式應用就能夠了。架構

Tendermint架構的創新之處在於將區塊鏈應用(狀態)與底層進行了分離,它的核心代碼Tendermint Core涵蓋了可重用可配置的共識和網絡層功能,同時它還定義了一組ABCI回調接口與應用層進行交互,應用邏輯能夠用你熟悉的任何語言來寫。客戶端發給Tendermint的交易,經過ABCI接口到達應用,好比檢查交易的有效性。有效交易進入Tendermint內存池,提議節點從內存池選擇交易進入候選新塊,通過PoS達成共識的新塊向全網廣播。收到新塊的全節點都會經過ABCI接口把交易播放給應用,應用邏輯在執行交易的過程當中相應地改變自身內部狀態,最後把狀態哈希以AppHash的形式返回給Tendermint,計入新塊頭部。異步

當新一輪的區塊開始選擇的時候,會有一個驗證人以輪詢等方式選出來,做爲提議節點提交一個候選新塊。這個新塊裏包含一些已經跟應用確認過是有效的交易。把這個塊廣播到網絡裏之後,全部的驗證人進行Prevote預投票。這裏由於有超時機制,因此Tendermint協議是一個弱同步協議。Prevote投票超過三分之二後,系統達成所謂的「Polka」狀態,接着對這個塊進行Precommit投票,一旦Precommit超過三分之二,新塊就被提交(Commit)生成新區塊高度,進入下一輪提議。分佈式

Tendermint共識算法的特點是拜佔廷容錯。它最多能夠容納整個網絡裏面三分之一的驗證人犯錯,包括無心的犯錯或者有意的做惡。投票的時候三分二不是指三分之二的驗證人數,而是三分之二的權益。工具

另外它有即時最終性,這是跟PoW的最大區別;當它生成新區塊高度,這個塊就是最終的,它未來不會被推翻,因此它會帶來比以太坊、比特幣高的性能。性能

它經過應用邏輯和共識邏輯進行整合,經過ABCI接口進行通信,能夠用任何語言編寫應用。這個應用作的事情實際上就是狀態機控制。它把共識引擎這部分抽象出來,能夠用它作公有鏈,也可作私有鏈。區塊鏈

Tendermint強調一致性的算法,必須三分之二的投票才能生成新的塊。若是網絡達不到三分之二的人投票,這個協議就被停了。因此它強調的是一致性而不是可用性,它不容許短暫的分叉。開發工具

 

看點二  如何利用Tendermint機制開發應用

一是基於ABCI協議直接開發應用。只需確保應用邏輯所用到的開發語言特性是肯定的。也就是說這個邏輯在任何一個節點的語言執行環境上執行的時候,都會返回相同的AppHash。這種開發模式的好處是你有最大的控制權,你在應用裏想寫什麼樣的邏輯就寫什麼樣的邏輯。聯盟鏈能夠採用這種模式開發。但這套協議的缺點是技術難度大,要求開發人員很是熟悉ABCI回調接口,並且應用的全部邏輯都要本身開發。

二是基於Ethermint開發。Ethermint是Tendermint團隊開發的另一個項目,它把以太坊的Go語言庫拿過來,經過ABCI接口和Tendermint Core進行了融合,實現了在PoS協議上運行以太坊虛擬機。它的性能很強大,好比在以太坊寫的分佈式應用,能夠直接部署在Ethermint上面,以太坊現有的客戶端工具和開發工具均可以直接使用。基於Ethermint開發應用的好處顯而易見,開發者能夠用熟悉的開發工具和理念;缺點是面臨以太坊一樣的安全風險。

三是基於Cosmos SDK開發。Cosmos SDK是一個提供了基本區塊鏈邏輯的ABCI應用。它是多代幣的區塊鏈,帳號能夠管理多種代幣,同時它還提供一些常見的功能,如比鏈上治理。它的強大之處在於能夠在Cosmos SDK所包含的已有功能、最佳實踐和插件架構上快速開發區塊鏈應用。Cosmos Hub就是基於Cosmos  SDK開發的,這種方式適合開發公有鏈項目,速度很快。

 

看點三  Cosmos生態系統

Cosmos的生態系統總結起來就是:Cosmos Hub做爲支持多幣種的一個樞紐將多個一樣基於Tendermint開發的區塊鏈分區(Zone)鏈接成一體。Cosmos將在今年末或明年第一季度上線「主網」,即Cosmos Hub。伴隨主網上線,將會同時上線幾個分區,其中一個就是做爲公有鏈的Ethermint,另一個是OmiseGO,接下來是跟以太坊的橋接分區(Peg Zone)。Hub和Zone之間的通訊,經過IBC協議實現。

 

看點四  IBC協議

互聯鏈通訊(IBC)協議是個非阻塞的異步協議,能保證不一樣鏈之間不會在交易處理上產生耦合。它經過Merkle樹實現可靠的消息隊列,並將隊列保存在各個分區裏面,實現有序存儲,而後經過把消息的Merkle證實做爲IBC數據包的一部分發出去。

在兩個通信鏈上創建雙向信任時如何操做呢?這是一種特殊的,須要有權限管理的消息,並且須要人爲干涉。至關於一個分區要將全部驗證人的公鑰告訴它想與之創建聯繫的另一條鏈。當須要驗證來自另外一條鏈的消息時,只需拿對方的驗證人公鑰集合來驗證其Merkle證實的有效性就能夠了。

IBC協議還會經過一些高級消息類型超時、狀態清理、跨鏈路由和網關以及多種模式中繼等複雜狀況進行處理。

鏈幣分離

經過IBC能夠幫助代幣實現跨鏈使用。以STORJ.IO爲例,它在鏈上原生的代幣就是本身的代幣,若是STORJ區塊鏈連到Cosmos  Hub上,理論上經過IBC協議就能夠把以太幣或者其餘幣轉移到STORJ.IO的區塊鏈上使用。這不是幣種交換的概念,而是徹底能夠把一個幣轉移到另外一個區塊鏈上。假設一個以太幣經過Cosmos Hub轉到另一個鏈上,好比STORJ.IO,那麼以太幣在以太坊就會被鎖定或銷燬,在STORJ平臺上會生成對應數量的以太幣,只不過這個以太幣嚴格意義上來講不是原生的以太幣,可是它是用STORJ區塊鏈的多幣系統生成的一個表明對應的以太幣價值和功用的代幣符號。當你須要把這個代幣再轉回來時,就會銷燬STORJ上的代幣,而後在以太坊對應的帳號上生成代幣。因此Cosmos在現階段主要是經過IBC協議實現代幣在不一樣區塊鏈之間的轉移和跨鏈使用。

由此,許可鏈也能夠與公有鏈進行交互。許可鏈沒有原生代幣,若是許可鏈由於業務需求,須要引入激勵機制,那麼能夠和公有鏈進行交互,經過Cosmos把代幣轉到本身鏈上進行使用。

 

看點五  Cosmos——區塊鏈互聯網

Cosmos被稱爲「區塊鏈互聯網」,基於剛剛介紹的技術特性,「區塊鏈互聯網」呈現出如下幾種特色:多樣性、互操做性、性能擴展、安全性和自主性。

它的性能擴展包括垂直擴展和水平擴展。水平擴展,由於它是按照應用的邊界來劃分的一種分片,在減小性能瓶頸上是最符合邏輯的。每個分區或者Hub上是按照不一樣的應用來劃分的,因此應用的並行處理很是天然。另外從邏輯方面來講,你只須要成爲你關心的應用裏區塊鏈的全節點,提升工做效率。

多樣性和安全性。大部分的生產級應用不須要跑在圖靈完備的區塊鏈上,這也是Cosmos的「宇宙觀」和以太坊的根本性差別之一。這樣作的好處是能夠減小攻擊界面,由於用Tendermint寫的針對某個特定場景的ABCI應用,只須要幾個定製交易類型就能夠,不像以太坊的整個EVM和智能合約代碼都暴露給潛在黑客攻擊。分區還能夠下降成本,提高效率,並經過微調來優化,這些都是這種的架構帶來的好處。

互操做性就是不一樣鏈上的應用和智能合約能夠經過IBC協議進行交互。可使得不一樣的代幣經濟得以深度整合,不一樣的代幣在一條區塊鏈上能夠混合使用,將來可能會實現跨鏈的智能合約調用。

自主性。舉個例子,經過硬分叉分裂出來的以太坊和以太坊經典,它們不可能擁有一樣的驗證節點集合。按照Cosmos的架構,這兩條鏈各自跑在本身的分區裏,它們有不一樣的驗證人,能夠實現不一樣的鏈上治理和經濟激勵、經濟治理。

合併安全性。對於很小的公有鏈,要找100個見證人是很麻煩的事。這時能夠與Cosmos Hub共享100個驗證人,實現公有鏈的快速自舉。

相關文章
相關標籤/搜索