Cosmos究竟可以做什么,還被譽為了區(qū)塊鏈的互聯(lián)網(wǎng)
掃描二維碼
隨時隨地手機看文章
Cosmos被譽為“區(qū)塊鏈的互聯(lián)網(wǎng)”,也被認為是區(qū)塊鏈的3.0版本。Cosmos旨在解決區(qū)塊鏈交互操作和可擴展性問題,其區(qū)塊鏈間通訊協(xié)議可以實現(xiàn)區(qū)塊鏈的互聯(lián),支持不同區(qū)塊鏈之間的資產(chǎn)轉移。以下為Cosmos項目詳細解讀。
Cosmos核心技術:Tendermint
Cosmos有一個很獨特的宇宙觀:這個世界不可能由一個區(qū)塊鏈主導,一定是多鏈并存,多幣并行的世界。如何把多鏈和多幣整合成一個生態(tài)系統(tǒng),就是Cosmos的終極理想。它的理想還有個獨特的地方,它認為幣和鏈應該是分離的。在Cosmos里有個核心技術,使得代幣可以跨區(qū)塊鏈進行轉移,這個核心技術就是Tendermint。Tendermint是區(qū)塊鏈領域較早的基于拜占廷容錯協(xié)議的PoS共識引擎。
Cosmos認為以比特幣為代表的區(qū)塊鏈1.0,是網(wǎng)絡層、共識層和應用層混合成一體的產(chǎn)品。以以太坊為代表的區(qū)塊鏈2.0,簡化了這一構架,用戶不需要直接處理共識和網(wǎng)絡層相關細節(jié),只需基于以太坊提供的虛擬機的高級語言寫分布式應用就可以了。
Tendermint架構的創(chuàng)新之處在于將區(qū)塊鏈應用(狀態(tài))與底層進行了分離,它的核心代碼Tendermint Core涵蓋了可重用可配置的共識和網(wǎng)絡層功能,同時它還定義了一組ABCI回調接口與應用層進行交互,應用邏輯可以用你熟悉的任何語言來寫??蛻舳税l(fā)給Tendermint的交易,通過ABCI接口到達應用,比如檢查交易的有效性。有效交易進入Tendermint內存池,提議節(jié)點從內存池選擇交易進入候選新塊,經(jīng)過PoS達成共識的新塊向全網(wǎng)廣播。收到新塊的全節(jié)點都會通過ABCI接口把交易播放給應用,應用邏輯在執(zhí)行交易的過程中相應地改變自身內部狀態(tài),最后把狀態(tài)哈希以AppHash的形式返回給Tendermint,計入新塊頭部。
當新一輪的區(qū)塊開始選擇的時候,會有一個驗證人以輪詢等方式選出來,作為提議節(jié)點提交一個候選新塊。這個新塊里包含一些已經(jīng)跟應用確認過是有效的交易。把這個塊廣播到網(wǎng)絡里以后,所有的驗證人進行Prevote預投票。這里因為有超時機制,所以Tendermint協(xié)議是一個弱同步協(xié)議。Prevote投票超過三分之二后,系統(tǒng)達成所謂的“Polka”狀態(tài),接著對這個塊進行Precommit投票,一旦Precommit超過三分之二,新塊就被提交(Commit)生成新區(qū)塊高度,進入下一輪提議。
Tendermint共識算法的特色是拜占廷容錯。它最多可以容納整個網(wǎng)絡里面三分之一的驗證人犯錯,包括無意的犯錯或者有意的作惡。投票的時候三分二不是指三分之二的驗證人數(shù),而是三分之二的權益。
另外它有即時最終性,這是跟PoW的最大區(qū)別;當它生成新區(qū)塊高度,這個塊就是最終的,它將來不會被推翻,所以它會帶來比以太坊、比特幣高的性能。
它通過應用邏輯和共識邏輯進行整合,通過ABCI接口進行通訊,可以用任何語言編寫應用。這個應用做的事情實際上就是狀態(tài)機控制。它把共識引擎這部分抽象出來,可以用它做公有鏈,也可做私有鏈。
Tendermint強調一致性的算法,必須三分之二的投票才能生成新的塊。如果網(wǎng)絡達不到三分之二的人投票,這個協(xié)議就被停了。所以它強調的是一致性而不是可用性,它不允許短暫的分叉。
如何利用Tendermint機制開發(fā)應用
一是基于ABCI協(xié)議直接開發(fā)應用。只需確保應用邏輯所用到的開發(fā)語言特性是確定的。也就是說這個邏輯在任何一個節(jié)點的語言執(zhí)行環(huán)境上執(zhí)行的時候,都會返回相同的AppHash。這種開發(fā)模式的好處是你有最大的控制權,你在應用里想寫什么樣的邏輯就寫什么樣的邏輯。聯(lián)盟鏈可以采用這種模式開發(fā)。但這套協(xié)議的缺點是技術難度大,要求開發(fā)人員非常熟悉ABCI回調接口,而且應用的所有邏輯都要自己開發(fā)。
二是基于Ethermint開發(fā)。Ethermint是Tendermint團隊開發(fā)的另外一個項目,它把以太坊的Go語言庫拿過來,通過ABCI接口和Tendermint Core進行了融合,實現(xiàn)了在PoS協(xié)議上運行以太坊虛擬機。它的性能很強大,比如在以太坊寫的分布式應用,可以直接部署在Ethermint上面,以太坊現(xiàn)有的客戶端工具和開發(fā)工具都可以直接使用。基于Ethermint開發(fā)應用的好處顯而易見,開發(fā)者可以用熟悉的開發(fā)工具和理念;缺點是面臨以太坊同樣的安全風險。
三是基于Cosmos SDK開發(fā)。Cosmos SDK是一個提供了基本區(qū)塊鏈邏輯的ABCI應用。它是多代幣的區(qū)塊鏈,賬號可以管理多種代幣,同時它還提供一些常見的功能,如比鏈上治理。它的強大之處在于可以在Cosmos SDK所包含的已有功能、最佳實踐和插件架構上快速開發(fā)區(qū)塊鏈應用。Cosmos Hub就是基于Cosmos SDK開發(fā)的,這種方式適合開發(fā)公有鏈項目,速度很快。
Cosmos生態(tài)系統(tǒng)
Cosmos的生態(tài)系統(tǒng)總結起來就是:Cosmos Hub作為支持多幣種的一個樞紐將多個同樣基于Tendermint開發(fā)的區(qū)塊鏈分區(qū)(Zone)連接成一體。Cosmos將在今年底或明年第一季度上線“主網(wǎng)”,即Cosmos Hub。伴隨主網(wǎng)上線,將會同時上線幾個分區(qū),其中一個就是作為公有鏈的Ethermint,另外一個是OmiseGO,接下來是跟以太坊的橋接分區(qū)(Peg Zone)。Hub和Zone之間的通信,通過IBC協(xié)議實現(xiàn)。
IBC協(xié)議
互聯(lián)鏈通信(IBC)協(xié)議是個非阻塞的異步協(xié)議,能保證不同鏈之間不會在交易處理上產(chǎn)生耦合。它通過Merkle樹實現(xiàn)可靠的消息隊列,并將隊列保存在各個分區(qū)里面,實現(xiàn)有序存儲,然后通過把消息的Merkle證明作為IBC數(shù)據(jù)包的一部分發(fā)出去。
在兩個通訊鏈上建立雙向信任時如何操作呢?這是一種特殊的,需要有權限管理的消息,而且需要人為干涉。相當于一個分區(qū)要將所有驗證人的公鑰告訴它想與之建立聯(lián)系的另外一條鏈。當需要驗證來自另一條鏈的消息時,只需拿對方的驗證人公鑰集合來驗證其Merkle證明的有效性就可以了。
IBC協(xié)議還會通過一些高級消息類型超時、狀態(tài)清理、跨鏈路由和網(wǎng)關以及多種模式中繼等復雜情況進行處理。
鏈幣分離
通過IBC可以幫助代幣實現(xiàn)跨鏈使用。以STORJ.IO為例,它在鏈上原生的代幣就是自己的代幣,如果STORJ區(qū)塊鏈連到Cosmos Hub上,理論上通過IBC協(xié)議就可以把以太幣或者其他幣轉移到STORJ.IO的區(qū)塊鏈上使用。這不是幣種交換的概念,而是完全可以把一個幣轉移到另一個區(qū)塊鏈上。假設一個以太幣通過Cosmos Hub轉到另外一個鏈上,比如STORJ.IO,那么以太幣在以太坊就會被鎖定或銷毀,在STORJ平臺上會生成對應數(shù)量的以太幣,只不過這個以太幣嚴格意義上來說不是原生的以太幣,但是它是用STORJ區(qū)塊鏈的多幣系統(tǒng)生成的一個代表對應的以太幣價值和功用的代幣符號。當你需要把這個代幣再轉回來時,就會銷毀STORJ上的代幣,然后在以太坊對應的賬號上生成代幣。所以Cosmos在現(xiàn)階段主要是通過IBC協(xié)議實現(xiàn)代幣在不同區(qū)塊鏈之間的轉移和跨鏈使用。
由此,許可鏈也可以與公有鏈進行交互。許可鏈沒有原生代幣,如果許可鏈因為業(yè)務需求,需要引入激勵機制,那么可以和公有鏈進行交互,通過Cosmos把代幣轉到自己鏈上進行使用。
Cosmos——區(qū)塊鏈互聯(lián)網(wǎng)
Cosmos被稱為“區(qū)塊鏈互聯(lián)網(wǎng)”,基于剛剛介紹的技術特性,“區(qū)塊鏈互聯(lián)網(wǎng)”呈現(xiàn)出以下幾種特點:多樣性、互操作性、性能擴展、安全性和自主性。
它的性能擴展包括垂直擴展和水平擴展。水平擴展,因為它是按照應用的邊界來劃分的一種分片,在減少性能瓶頸上是最符合邏輯的。每一個分區(qū)或者Hub上是按照不同的應用來劃分的,所以應用的并行處理非常自然。另外從邏輯方面來說,你只需要成為你關心的應用里區(qū)塊鏈的全節(jié)點,提高工作效率。
多樣性和安全性。大部分的生產(chǎn)級應用不需要跑在圖靈完備的區(qū)塊鏈上,這也是Cosmos的“宇宙觀”和以太坊的根本性差異之一。這樣做的好處是可以減少攻擊界面,因為用Tendermint寫的針對某個特定場景的ABCI應用,只需要幾個定制交易類型就可以,不像以太坊的整個EVM和智能合約代碼都暴露給潛在黑客攻擊。分區(qū)還可以降低成本,提升效率,并通過微調來優(yōu)化,這些都是這種的架構帶來的好處。
互操作性就是不同鏈上的應用和智能合約可以通過IBC協(xié)議進行交互。可以使得不同的代幣經(jīng)濟得以深度整合,不同的代幣在一條區(qū)塊鏈上可以混合使用,未來可能會實現(xiàn)跨鏈的智能合約調用。
自主性。舉個例子,通過硬分叉分裂出來的以太坊和以太坊經(jīng)典,它們不可能擁有同樣的驗證節(jié)點集合。按照Cosmos的架構,這兩條鏈各自跑在自己的分區(qū)里,它們有不同的驗證人,可以實現(xiàn)不同的鏈上治理和經(jīng)濟激勵、經(jīng)濟治理。
合并安全性。對于很小的公有鏈,要找100個見證人是很麻煩的事。這時可以與Cosmos Hub共享100個驗證人,實現(xiàn)公有鏈的快速自舉。