網(wǎng)上有很多關(guān)于pos機(jī)秒到原理,詳解 Cosmos 運(yùn)行原理的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)秒到原理的問(wèn)題,今天pos機(jī)之家(www.nxzs9ef.cn)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!
本文目錄一覽:
pos機(jī)秒到原理
免責(zé)聲明:本文旨在傳遞更多市場(chǎng)信息,不構(gòu)成任何投資建議。文章僅代表作者觀點(diǎn),不代表火星財(cái)經(jīng)官方立場(chǎng)。
小編:記得關(guān)注哦
投資區(qū)塊鏈,猛戳:火星財(cái)經(jīng)App下載
文章來(lái)源:以太坊愛(ài)好者
本文對(duì) Cosmos 網(wǎng)絡(luò)中區(qū)塊鏈和比特幣、以太坊進(jìn)行了巨細(xì)靡遺的比較。作者先從區(qū)塊鏈系統(tǒng)的棧層出發(fā),分析了比特幣、以太坊在不同棧層上的技術(shù)要點(diǎn),Cosmos 網(wǎng)絡(luò)中的區(qū)塊鏈架構(gòu)賦予區(qū)塊鏈應(yīng)用對(duì)于自己的鏈更大的自主性。最后回歸到 Cosmos 網(wǎng)絡(luò)中的區(qū)塊鏈,深入討論 Cosmos 中相互獨(dú)立的區(qū)塊鏈如何進(jìn)行交互,更重要的是回答「為什么區(qū)塊鏈需要互相進(jìn)行交互」。概念解釋尤為清晰,是不可多得的解釋文。原文標(biāo)題:《科普 | Cosmos 區(qū)塊鏈的工作原理,Part-1:比較 Cosmos 與比特幣、以太坊》、《科普 | Cosmos 區(qū)塊鏈的工作原理,Part-2:如何跨鏈,為何要跨鏈 ?》
作者:Preethi Kasireddy,區(qū)塊鏈真?zhèn)悟?yàn)證平臺(tái) TruStory 創(chuàng)始人兼首席執(zhí)行官,曾供職于高盛、a16z、Coinbase
翻譯及校對(duì):stormpang、IAN LIU、阿劍、安仔、Clint
目錄
Cosmos 是什么?區(qū)塊鏈結(jié)構(gòu)簡(jiǎn)介比特幣棧層結(jié)構(gòu)以太坊棧層結(jié)構(gòu)基于比特幣與以太坊構(gòu)建應(yīng)用程序Cosmos 區(qū)塊鏈結(jié)構(gòu)Cosmos 共識(shí)層Cosmos 網(wǎng)絡(luò)層Cosmos 應(yīng)用層Hub 和 ZoneIBC 是如何工作的為什么互操作性如此重要?密碼學(xué)貨幣產(chǎn)業(yè)從未停下腳步。
一切都始于 2010 年比特幣的問(wèn)世。比特幣剛問(wèn)世時(shí),所有人都認(rèn)為它是數(shù)字貨幣的圣杯。曾經(jīng)被認(rèn)為不可能的事情現(xiàn)在變成了現(xiàn)實(shí):第一個(gè)點(diǎn)對(duì)點(diǎn)(peer-to-peer,P2P)支付網(wǎng)絡(luò)出現(xiàn)了。
即便在今天,對(duì)事物的信任仍然是最難以琢磨并且最珍貴的資產(chǎn)。比特幣通過(guò)創(chuàng)建第一個(gè)「免信任型」系統(tǒng),繞過(guò)了這一問(wèn)題。但這僅僅是一個(gè)開(kāi)始。
從那之后,比特幣就成為了催生更廣泛密碼學(xué)創(chuàng)新的催化劑,這些創(chuàng)新也導(dǎo)致了一系列新型去中心化系統(tǒng)與金融基礎(chǔ)設(shè)施的出現(xiàn):以太坊(Ethereum)、閃電網(wǎng)絡(luò)(Lighting Network)、EOS、Tezos、Maker…… 這個(gè)名單還在不斷延長(zhǎng)。
但是有一個(gè)項(xiàng)目與眾不同:Cosmos。
在區(qū)塊鏈領(lǐng)域,Cosmos 是一個(gè)「新生兒」。雖然它的理念已經(jīng)出現(xiàn)有一段時(shí)間了,但其開(kāi)發(fā)團(tuán)隊(duì)一直在背后慢慢地開(kāi)發(fā)以確保 Cosmos 設(shè)計(jì)及實(shí)現(xiàn)的正確性。這也使得 Cosmos 最近才公開(kāi)推出。
因此,有很多人看過(guò) Cosmos 項(xiàng)目之后卻不理解它也就不足為奇了。簡(jiǎn)單瀏覽 Cosmos 相關(guān)資料并不會(huì)讓他們能夠直觀地了解 Cosmos,反而會(huì)讓他們有更多疑問(wèn):
什么是 Cosmos?
Cosmos 的工作原理是什么?
與比特幣、以太坊相比 Cosmos 有什么不同?
Cosmos 的特點(diǎn)是什么?
我已經(jīng)知道 Cosmos 團(tuán)隊(duì)快兩年了。老實(shí)說(shuō),當(dāng)我第一次聽(tīng)說(shuō)他們?cè)谧鍪裁吹臅r(shí)候,我和其他人一樣對(duì)它的概念一無(wú)所知。
但當(dāng)我更深入地了解 Cosmos 之后,我開(kāi)始非常欣賞它。我這么說(shuō)不僅是為了引人注目,是真正地發(fā)自內(nèi)心。
我對(duì) Cosmos 非常著迷,所以我們決定將 TruStory 應(yīng)用構(gòu)建為一個(gè) Cosmos 區(qū)塊鏈應(yīng)用。(插播:我將在之后的文章中更詳細(xì)地闡述我們?yōu)槭裁磿?huì)做出這個(gè)決定)
盡管如此,關(guān)于 Cosmos 仍然有很多困惑。所以我決定專門(mén)為此寫(xiě)一篇文章。我想讓讀者對(duì) Cosmos 是什么以及它在區(qū)塊鏈?zhǔn)澜缰械亩ㄎ挥幸粋€(gè)更深層次的理解。
你準(zhǔn)備好開(kāi)始了么?理清思緒,帶上你的思考帽,系好安全帶。我們要開(kāi)車?yán)玻?/p>
Cosmos 是什么?
Cosmos 是這樣定義自己的:
「一個(gè)由多條獨(dú)立平行區(qū)塊鏈組成的去中心化網(wǎng)絡(luò),每條平行區(qū)塊鏈均采用 BFT 共識(shí)算法(例如:Tendermint 共識(shí))。」
哇,好拗口??!讓我們把這個(gè)定義拆分成幾個(gè)容易理解的部分。
獨(dú)立平行區(qū)塊鏈的去中心化網(wǎng)絡(luò)
我在這里假設(shè)讀者已經(jīng)對(duì)區(qū)塊鏈非常了解了!不過(guò),我還是快速回顧一下:
簡(jiǎn)單來(lái)說(shuō),區(qū)塊鏈?zhǔn)且粋€(gè)分布在許多計(jì)算機(jī)上的數(shù)據(jù)庫(kù),每臺(tái)計(jì)算機(jī)上的數(shù)據(jù)庫(kù)都保持相同的狀態(tài)。換句話說(shuō),每臺(tái)計(jì)算機(jī)上的數(shù)據(jù)庫(kù)所包含的數(shù)據(jù)都完全相同。這些計(jì)算機(jī)共同組成了所謂的「區(qū)塊鏈網(wǎng)絡(luò)」。
比特幣和以太坊都是區(qū)塊鏈,而 Cosmos 是由許多這樣并行運(yùn)行的區(qū)塊鏈組成的區(qū)塊鏈網(wǎng)絡(luò)。
如果你不能完全理解剛才說(shuō)的,那么在進(jìn)一步了解 Cosmos 工作原理之前,你最好再多讀一些關(guān)于區(qū)塊鏈的基礎(chǔ)知識(shí)。(編者注:中譯本見(jiàn)文末超鏈接《區(qū)塊鏈?zhǔn)鞘裁垂怼罚?/p>
「每條區(qū)塊鏈都采用 BFT 共識(shí)算法」
BFT 是 「Byzantine Fault-Tolerant (拜占庭容錯(cuò))」的縮寫(xiě)。一條拜占庭容錯(cuò)的區(qū)塊鏈能夠在網(wǎng)絡(luò)中部分節(jié)點(diǎn)宕機(jī) 以及 / 或者 作惡(即所謂「拜占庭式節(jié)點(diǎn)」)的情況下,保證網(wǎng)絡(luò)依舊具備「安全性」與「活性」等性質(zhì)。安全性與活性能夠確保區(qū)塊鏈網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)維護(hù)相同的狀態(tài)。
插播:如果你想要更深入地了解什么是安全性(Safety)與活性(Liveness),請(qǐng)閱讀我的這篇有關(guān)分布式共識(shí)的文章。(編者注:中譯本見(jiàn)文末超鏈接《分布式共識(shí)的工作原理,Part-2》)
因此,一種 「BFT 共識(shí)算法」 乃是定義了計(jì)算機(jī)間通信與協(xié)調(diào)、使得區(qū)塊鏈具有拜占庭容錯(cuò)能力的算法。Cosmos 網(wǎng)絡(luò)中的所有區(qū)塊鏈都采用某種 BFT 共識(shí)算法。
比特幣和以太坊的共識(shí)算法不是典型的 BFT 算法。所以它們不符合 Cosmos 網(wǎng)絡(luò)中區(qū)塊鏈的定義。(值得注意的是,雖然它們不是拜占庭容錯(cuò)的,但仍然可以讓比特幣和以太坊等區(qū)塊鏈加入 Cosmos 網(wǎng)絡(luò),僅僅需要一些額外的步驟。如果你覺(jué)得費(fèi)解,不用擔(dān)心——我們將稍后對(duì)此進(jìn)行更深入的研究。)
插播:如果你還是不清楚什么是 BFT,我在這篇文章中寫(xiě)得蠻清楚了。(編者注:中譯本見(jiàn)文末超鏈接《分布式共識(shí)的工作原理,Part-3》)
「Tendermint 共識(shí)算法」
Tendermint 是由 Cosmos 開(kāi)發(fā)者提出并構(gòu)建的一種 BFT 共識(shí)算法。Cosmos 網(wǎng)絡(luò)中的區(qū)塊鏈可以使用 Tendermint 共識(shí)或任何其他 BFT 共識(shí)算法。稍后我們將在本文了解更多關(guān)于 Tendermint 的內(nèi)容。
簡(jiǎn)單來(lái)說(shuō),Cosmos 網(wǎng)絡(luò)是一個(gè)由多條并行運(yùn)行的獨(dú)立拜占庭容錯(cuò)區(qū)塊鏈組成的生態(tài)系統(tǒng)。這些區(qū)塊鏈?zhǔn)?獨(dú)立運(yùn)行的,并且能夠與其他區(qū)塊鏈進(jìn)行 互操作。
現(xiàn)在你可能會(huì)想,「為什么區(qū)塊鏈之間要進(jìn)行互操作呢?」
好問(wèn)題!我們很快就會(huì)講到。但首先我們要回顧一下區(qū)塊鏈的結(jié)構(gòu)。
區(qū)塊鏈結(jié)構(gòu)簡(jiǎn)介
在深入研究 Cosmos 生態(tài)系統(tǒng)中區(qū)塊鏈?zhǔn)侨绾喂ぷ骱突ゲ僮鞯闹?,讓我們先回顧一下區(qū)塊鏈結(jié)構(gòu)的基礎(chǔ)知識(shí)。
正如我們前面所討論的,區(qū)塊鏈?zhǔn)且粋€(gè)多機(jī)復(fù)制數(shù)據(jù)庫(kù),并且在每臺(tái)計(jì)算機(jī)上維護(hù)相同的數(shù)據(jù)。這種類型的分布式系統(tǒng)也被稱為「復(fù)制狀態(tài)機(jī)」。
復(fù)制狀態(tài)機(jī)是一種多機(jī)復(fù)制的確定性狀態(tài)機(jī),但因?yàn)榫W(wǎng)絡(luò)中每臺(tái)計(jì)算機(jī)都維護(hù)著相同的狀態(tài),因此在功能上看起來(lái)就像一臺(tái)單機(jī)。
聽(tīng)起來(lái)很熟悉,對(duì)吧?回顧上文區(qū)塊鏈的定義,這里的定義僅僅是將「數(shù)據(jù)庫(kù)」替換為「狀態(tài)機(jī)」、「數(shù)據(jù)」替換為「狀態(tài)」,相信你能明白我的意思。
「確定性」 可以簡(jiǎn)單地理解為,給定一個(gè)確定的輸入,狀態(tài)機(jī)將始終產(chǎn)生相同的輸出。在區(qū)塊鏈系統(tǒng)中,「確定性」意味著如果你從一個(gè)給定狀態(tài)開(kāi)始執(zhí)行相同的事務(wù)序列,你總是會(huì)得到相同的最終狀態(tài)。
復(fù)制狀態(tài)機(jī)從某個(gè)狀態(tài)啟動(dòng)。每筆有效事務(wù)都將導(dǎo)致系統(tǒng)狀態(tài)轉(zhuǎn)變到下一個(gè)狀態(tài)(這與數(shù)據(jù)庫(kù)中條目更新相同:如果你更新某個(gè)條目,數(shù)據(jù)庫(kù)將遷移到包含該更新后數(shù)據(jù)條目的新?tīng)顟B(tài))。
復(fù)制狀態(tài)機(jī)在概念上有三個(gè)棧層:
1)應(yīng)用層
應(yīng)用層負(fù)責(zé)定義狀態(tài)變遷,并在事務(wù)發(fā)生后更新?tīng)顟B(tài)機(jī)狀態(tài)。
2)網(wǎng)絡(luò)層
網(wǎng)絡(luò)層負(fù)責(zé)將在某一個(gè)狀態(tài)機(jī)上執(zhí)行的事務(wù)傳播到網(wǎng)絡(luò)中其他所有狀態(tài)機(jī)上。
3)共識(shí)層
共識(shí)層由算法組成,負(fù)責(zé)確保在事務(wù)執(zhí)行后每一臺(tái)狀態(tài)機(jī)都存儲(chǔ)相同的狀態(tài)(即,某一狀態(tài)機(jī)無(wú)法偽造不存在的事務(wù))。
3a)抗女巫攻擊層
試圖在去中心化公網(wǎng)運(yùn)行的復(fù)制狀態(tài)機(jī)還需要第四層(「抗女巫攻擊層」),確保任何一臺(tái)狀態(tài)機(jī)都不能破壞網(wǎng)絡(luò)。如果沒(méi)有這一層,狀態(tài)機(jī)可以通過(guò)創(chuàng)建許多假身份來(lái)篡改狀態(tài),從而獲得與其投入不成比例的影響或收益(即,發(fā)起女巫攻擊)。
總之,應(yīng)用層負(fù)責(zé)定義狀態(tài)與管理狀態(tài)遷移。網(wǎng)絡(luò)與共識(shí)層負(fù)責(zé)保持每臺(tái)機(jī)器上狀態(tài)一致(即,確保網(wǎng)絡(luò)中每個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)一致)??古坠魧樱@然)負(fù)責(zé)避免女巫攻擊。
現(xiàn)在,讓我們看看在比特幣區(qū)塊鏈和以太坊區(qū)塊鏈中是如何定義與實(shí)現(xiàn)這些棧層的。
比特幣棧層結(jié)構(gòu)
1)應(yīng)用層
比特幣的主要應(yīng)用是 P2P 交易。比特幣使用 Script (一種堆棧式非圖靈完備的語(yǔ)言)來(lái)定義與執(zhí)行交易。當(dāng)發(fā)送方通過(guò)交易發(fā)送比特幣時(shí),發(fā)送方將使用腳本來(lái)編碼指定誰(shuí)才能掌控這筆資金。Script 包含一組操作碼或者說(shuō)命令,發(fā)送方可以使用這些操作碼來(lái)指定要花費(fèi)一筆比特幣所需滿足的條件。
2)網(wǎng)絡(luò)層
當(dāng)發(fā)送方向接收方發(fā)送比特幣時(shí),該轉(zhuǎn)賬交易必須被廣播到網(wǎng)絡(luò)中,才能使礦工將其打包進(jìn)區(qū)塊中。比特幣使用一種「Gossip 協(xié)議」來(lái)確保每個(gè)節(jié)點(diǎn)都會(huì)將其接收的所有新區(qū)塊或交易發(fā)送至鄰居節(jié)點(diǎn)(peer)。Gossip 協(xié)議是確保消息在全部節(jié)點(diǎn)間傳播的 P2P 協(xié)議。比特幣網(wǎng)絡(luò)中所有節(jié)點(diǎn)都會(huì)將其新接收的有效交易立即發(fā)送給其鄰居節(jié)點(diǎn),從而使得待打包交易能夠在幾秒鐘內(nèi)通過(guò)點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)傳播到大多數(shù)節(jié)點(diǎn)。
3)共識(shí)層
在交易被轉(zhuǎn)播到網(wǎng)絡(luò)中后,還需要將其添加到區(qū)塊鏈中才能完成轉(zhuǎn)賬(即讓網(wǎng)絡(luò)中的計(jì)算機(jī)都來(lái)執(zhí)行這個(gè)事務(wù))。驗(yàn)證交易并將其打包到區(qū)塊中的過(guò)程稱為「中本聰共識(shí)(Nakamoto Consensus)」。中本聰共識(shí)的運(yùn)行原理可以在其他論壇或文章找到。如果你想深入了解,這篇文章是一個(gè)很好的入門(mén)文章。
3a)抗女巫攻擊層
中本聰共識(shí)依賴于「工作量證明(Proof-of-Work)」來(lái)防止女巫攻擊?;旧?,產(chǎn)生一個(gè)新區(qū)塊所需的算力使得比特幣共識(shí)協(xié)議自身能夠抵抗女巫攻擊。由于礦工需要大量的算力來(lái)產(chǎn)生下一個(gè)區(qū)塊,使得他們無(wú)法在不增加大量算力(與資金)投入的情況下「?jìng)卧臁苟鄠€(gè)身份。
以太坊棧層結(jié)構(gòu)
1)應(yīng)用層
與比特幣不同,以太坊的設(shè)計(jì)初衷是構(gòu)建一個(gè)能夠運(yùn)行去中心化應(yīng)用的平臺(tái)。以太坊包含一種高級(jí)語(yǔ)言(即,Solidity),使得開(kāi)發(fā)者能夠通過(guò)編寫(xiě)智能合約定義去中心化應(yīng)用的具體功能。EVM (以太坊虛擬機(jī),Ethereum Virtual Machine)是以太坊應(yīng)用層的核心。EVM 使用 EVM 編譯器將智能合約代碼編譯成字節(jié)碼,用戶可以通過(guò)交易的形式,將該字節(jié)碼上傳到區(qū)塊鏈之后,EVM 就可以執(zhí)行這些字節(jié)碼,從而改變?nèi)ブ行幕瘧?yīng)用的狀態(tài)(即,更新以太坊節(jié)點(diǎn)存儲(chǔ)的該智能合約相關(guān)狀態(tài))。由于以太坊網(wǎng)絡(luò)中所有節(jié)點(diǎn)均運(yùn)行 EVM,這也保證所有節(jié)點(diǎn)的狀態(tài)一致。
2)網(wǎng)絡(luò)層
與比特幣相似,以太坊也使用 Gossip 協(xié)議,使得節(jié)點(diǎn)能夠與其鄰居節(jié)點(diǎn)通信。
3)共識(shí)層
為了達(dá)成共識(shí),以太坊使用了與中本聰共識(shí)相似的「Ethash」,但 Ethash 與中本聰共識(shí)有一些關(guān)鍵區(qū)別。如果你需要了解以太坊共識(shí)算法的工作原理,請(qǐng)閱讀我之前的一篇文章。(編者注:中譯本見(jiàn)文末超鏈接《以太坊的工作原理》)
3a)抗女巫攻擊層
與比特幣一樣,Ethash 依賴于工作量證明(目前為止,譯者注:未來(lái)以太坊 2.0 將切換到 PoS 共識(shí)機(jī)制)來(lái)抵御女巫攻擊。
基于比特幣與以太坊構(gòu)建應(yīng)用程序
我希望以上內(nèi)容讓你對(duì)區(qū)塊鏈結(jié)構(gòu)有了一定了解。當(dāng)我們討論 「比特幣」 或 「以太坊」時(shí),這些名字指的是相關(guān)的所有棧層。因?yàn)楸忍貛藕鸵蕴皇怯蛇@些棧層組成的整體。
你無(wú)法將以太坊智能合約與其底層 Ethhash 共識(shí)層分開(kāi),也因此單獨(dú)討論這兩個(gè)主題都沒(méi)有意義。比特幣也是如此,不使用中本聰共識(shí)與工作量證明你就無(wú)法進(jìn)行比特幣交易。
另一方面,Cosmos 采用了一種稍微不同的模式:它將應(yīng)用層與共識(shí)層和網(wǎng)絡(luò)層分開(kāi)。
因?yàn)?Cosmos 的目標(biāo)是建立一個(gè)區(qū)塊鏈網(wǎng)絡(luò),所以這樣設(shè)計(jì)是有意義的。在這個(gè)區(qū)塊鏈網(wǎng)絡(luò)中,每條區(qū)塊鏈?zhǔn)仟?dú)立的,并且有它自己的需要和要求(即,它自己的應(yīng)用)。在這種情況下,想要提出一種一刀切的、適合所有區(qū)塊鏈的應(yīng)用層,是行不通的。讓我們用幾個(gè)例子來(lái)研究一下原因。
比特幣局限性的一個(gè)例子
假設(shè)我們準(zhǔn)備構(gòu)建一個(gè)貨幣應(yīng)用程序。在這種情況下,像 Bitcoin Scrypt 這種簡(jiǎn)單的基于堆棧的腳本語(yǔ)言是最佳選擇。比特幣腳本語(yǔ)言不僅可以很好地實(shí)現(xiàn)從一個(gè)地址到另一個(gè)地址的價(jià)值轉(zhuǎn)移,并且非常簡(jiǎn)單、不是圖靈完備的。
因此,它不太容易受到各種類型安全漏洞的影響,而這些安全漏洞可能會(huì)嚴(yán)重影響圖靈完備的編程語(yǔ)言。這正是我們?cè)谔幚碡泿排c價(jià)值存儲(chǔ)時(shí)想要的。但是這種簡(jiǎn)單也有其局限性。
使用 Scrypt 做任何更復(fù)雜的事情(例如:去中心化預(yù)測(cè)市場(chǎng))都非常困難。比特幣腳本語(yǔ)言不僅受其可執(zhí)行代碼復(fù)雜性限制,對(duì)于開(kāi)發(fā)者來(lái)說(shuō)也十分不友好。更糟糕的是,比特幣區(qū)塊鏈交易的處理速度很慢(大約每秒 7 筆交易)。因此,直接在比特幣區(qū)塊鏈上構(gòu)建需要高交易吞吐量的應(yīng)用是不現(xiàn)實(shí)的。
以太坊局限性的一個(gè)例子
與比特幣相反,以太坊的 EVM 與智能合約語(yǔ)言(Solidity)是為了支持更靈活的應(yīng)用程序而設(shè)計(jì)的。Solidity 是一種圖靈完備的編程語(yǔ)言,因此理論上它可以執(zhí)行任意算法復(fù)雜度的代碼。
在實(shí)際應(yīng)用中,由于 Solidity 易出錯(cuò)并易受到安全攻擊,所以使用 Solidity 開(kāi)發(fā)任意復(fù)雜度的程序是相當(dāng)困難的。這種特性與處理價(jià)值轉(zhuǎn)移的應(yīng)用程序背道而馳,在后者這個(gè)場(chǎng)景種,安全性是最重要的。
此外,智能合約也非常難以升級(jí),從而使得迭代開(kāi)發(fā)非常困難。合約一旦部署上鏈,你所能做的就只有祈禱它能夠平穩(wěn)運(yùn)行!與比特幣一樣,以太坊交易處理速率也非常低(大約每秒能夠處理 15 筆交易),因此在以太坊區(qū)塊鏈上構(gòu)建需要高交易吞吐量的應(yīng)用也是不現(xiàn)實(shí)的。
Cosmos 的提出就是為了滿足這種實(shí)際業(yè)務(wù)需要,盡管它為此做了一些較大的犧牲。接下來(lái)我們將深入研究具體的細(xì)節(jié)。但在那之前,我們還必須理解 Cosmos 中區(qū)塊鏈的三個(gè)棧層是什么樣的。
Cosmos 區(qū)塊鏈結(jié)構(gòu)
首先,我們將從共識(shí)層開(kāi)始了解 Cosmos,以便更好地理解在 Cosmos 上開(kāi)發(fā)應(yīng)用程序與使用比特幣或以太坊有何不同。
Cosmos 共識(shí)層
Cosmos 網(wǎng)絡(luò)中區(qū)塊鏈?zhǔn)褂?Tendermint 共識(shí)算法。Tendermint 是一個(gè) 2014 年誕生的開(kāi)源項(xiàng)目,「旨在解決比特幣工作量證明(Proof-of-Work, PoW)共識(shí)算法的速度、可擴(kuò)展性與環(huán)境問(wèn)題」。
Tendermint 共識(shí)算法是一個(gè) 「無(wú)視應(yīng)用層(application-agnostic)的共識(shí)引擎」。從本質(zhì)上講,這意味著任何區(qū)塊鏈都可以使用 Tendermint 共識(shí)算法,它是拜占庭容錯(cuò)的,并且使用 PoS 算法來(lái)抵御女巫攻擊。
又是一大堆術(shù)語(yǔ)!我們好好說(shuō)道說(shuō)道。
Tendermint 共識(shí)是如何運(yùn)作的?
回顧一下,共識(shí)算法的存在是為了保證事務(wù)執(zhí)行后,狀態(tài)機(jī)中保存的狀態(tài)一致;而 Tendermint 共識(shí)算法定義了一種「能讓所有節(jié)點(diǎn)對(duì)下個(gè)區(qū)塊達(dá)成共識(shí)」的規(guī)則。
讓我們看看相關(guān)因素及規(guī)則是如何運(yùn)作的吧!
驗(yàn)證者
負(fù)責(zé)達(dá)成狀態(tài)一致的節(jié)點(diǎn)稱為「驗(yàn)證者」。任何愿意協(xié)助整個(gè)網(wǎng)絡(luò)達(dá)成共識(shí)的參與節(jié)點(diǎn)都能成為驗(yàn)證者;作為回報(bào),驗(yàn)證者會(huì)獲得交易手續(xù)費(fèi)和區(qū)塊獎(jiǎng)勵(lì)。Tendermint 整合這些驗(yàn)證者的投票結(jié)果,確定下一個(gè)區(qū)塊的正確狀態(tài)。
通過(guò)質(zhì)押對(duì)抗女巫攻擊
每個(gè)驗(yàn)證者的票都有自己的投票權(quán)重,投票權(quán)重通常是在創(chuàng)世塊產(chǎn)生時(shí)確定,或是在開(kāi)始運(yùn)行后根據(jù)應(yīng)用層開(kāi)發(fā)者所設(shè)計(jì)的某些邏輯來(lái)決定。一般來(lái)說(shuō),由驗(yàn)證者鎖在系統(tǒng)中的代幣量(作為質(zhì)押品)決定投票權(quán)重的大小,這種質(zhì)押物也被稱為「保證金」。
Consensus 共識(shí)
按照規(guī)則,驗(yàn)證者要按輪次(round)對(duì)每一個(gè)區(qū)塊達(dá)成共識(shí)。每一輪都包含三個(gè)基本步驟:提議階段(Propose)、預(yù)投票階段(Prevote)、預(yù)提交階段(Precommit),以及兩個(gè)后續(xù)步驟:提交階段(Commit)、新高度階段(NewHeight)。從抽象角度來(lái)看,驗(yàn)證者按照以下協(xié)議規(guī)則共同決定下一高度要使用什么區(qū)塊:
首先是提議階段,由指定的驗(yàn)證者提出一個(gè)區(qū)塊——每一輪中的提議者都是從有序的列表中按照投票權(quán)重的比例,確定性地選擇出來(lái)的。接著進(jìn)入預(yù)投票階段——每一位驗(yàn)證者廣播他們各自的預(yù)投票。當(dāng)該輪次中某一區(qū)塊收到超過(guò) 2/3 的預(yù)投票,我們就稱其為 「polka」。一旦出現(xiàn) 「polka」,就進(jìn)入下一個(gè)階段。進(jìn)入預(yù)提交階段,由每一個(gè)驗(yàn)證者廣播他們的預(yù)提交的投票。如果某一特定區(qū)塊收到超過(guò) 2/3 的預(yù)投票,就進(jìn)入提交階段,這個(gè)階段會(huì)將區(qū)塊加入?yún)^(qū)塊鏈,并增加區(qū)塊高度。每當(dāng)有新的區(qū)塊加入?yún)^(qū)塊鏈,所在區(qū)塊鏈的區(qū)塊高度就 +1。如果失敗,則要么返回預(yù)投票階段,要么回到預(yù)提交階段。要注意的是,在任何高度上,都有可能需要一輪以上的投票才能提交一個(gè)區(qū)塊。因?yàn)榭赡艹霈F(xiàn)以下情況:
被指定的「提議者」在應(yīng)該提出區(qū)塊時(shí)掉線提議者所提出的區(qū)塊違反一些預(yù)先定義的規(guī)則Tendermint 依靠超時(shí)機(jī)制確保區(qū)塊鏈出塊不會(huì)遇到延宕。如果在超時(shí)前,提議區(qū)塊沒(méi)有收到超過(guò) 2/3 的預(yù)投票,則由新的提議者再次進(jìn)行提出區(qū)塊流程。協(xié)議細(xì)節(jié)詳見(jiàn) 此處。
總的來(lái)說(shuō),Tendermint 選擇了與比特幣的中本聰共識(shí)、以太坊 Ethash 不同的路線, 讓我們做一些重點(diǎn)對(duì)比:
確定性與概率性
與中本聰共識(shí)和 Ethash 這類概率性共識(shí)不同, Tendermint 是確定共識(shí)——這意味著 Tendermint 每個(gè)區(qū)塊都是最終確定的,而不像比特幣的區(qū)塊只是處于「很可能」被確定的狀態(tài)。
我們回顧一下中本聰共識(shí),區(qū)塊總是處于「未確定」?fàn)顟B(tài)——只有確定某個(gè)區(qū)塊在「最長(zhǎng)鏈」上,才能有把握認(rèn)為該塊正在被最終確定,這也是為什么比特幣交易需要等「6 個(gè)區(qū)塊確認(rèn)」。
而在 Tendermint 中,驗(yàn)證者成功投票及提交后,區(qū)塊就立即被確認(rèn)了。
固定驗(yàn)證者 vs. 可變驗(yàn)證者
中本聰共識(shí)及 Ethash 允許礦工隨時(shí)選擇加入或退出,并不需要其他礦工提前知曉。相反地,Tendermint 共識(shí)要求維護(hù)一個(gè)事先知曉且固定的驗(yàn)證者集合,驗(yàn)證者身份是靠他們的公鑰來(lái)辨認(rèn)的。
領(lǐng)導(dǎo) vs. 無(wú)領(lǐng)導(dǎo)
中本聰共識(shí)及 Ethash 沒(méi)有指定領(lǐng)導(dǎo)者來(lái)提議下一個(gè)區(qū)塊(i.e. 任何礦工都有可能挖到下一個(gè)區(qū)塊)。另一方面,Tendermint 選擇領(lǐng)導(dǎo)者,或稱為提議者,負(fù)責(zé)提出下一個(gè)區(qū)塊。
明確的 vs. 模糊的超時(shí)機(jī)制
中本聰共識(shí)和 Ethash 沒(méi)有使用超時(shí)機(jī)制來(lái)確保礦工一定能出塊,而 Tendermint 有明確的超時(shí)機(jī)制保證區(qū)塊鏈的出塊過(guò)程不會(huì)遭遇延宕。
100 個(gè)驗(yàn)證者 vs. 1000 個(gè)驗(yàn)證者
Tendermint 遵循傳統(tǒng)的一致性共識(shí)算法,每個(gè)驗(yàn)證者之間都要進(jìn)行通信。考慮到通信開(kāi)銷,Tendermint 無(wú)法像比特幣或以太坊那樣可以無(wú)限增加驗(yàn)證者。Tendermint 共識(shí)安排了 100 個(gè)驗(yàn)證者。
因此 Tendermint 的缺點(diǎn)之一就是,它要求事先知曉所有驗(yàn)證者,而且不允許驗(yàn)證者隨時(shí)加入或退出;這與比特幣或以太坊不同。
除此之外,Tendermint 還要求整個(gè)系統(tǒng)維持統(tǒng)一時(shí)鐘;雖然在實(shí)踐中 Tendermint 已經(jīng)證明通過(guò)整合每個(gè)節(jié)點(diǎn)的時(shí)間戳就能維護(hù)統(tǒng)一時(shí)鐘,但大家都知道同步時(shí)間是個(gè)非常復(fù)雜的理論問(wèn)題。
Tendermint 的驗(yàn)證者少于比特幣,而且要求事先知道驗(yàn)證者集合,因此可能會(huì)有人提出 Tendermint 共識(shí)協(xié)議「不夠去中心化」的質(zhì)疑。
但是,去中心化是見(jiàn)仁見(jiàn)智的。Okay,先不抖機(jī)靈,我想說(shuō)的是去中心化是為了達(dá)到某種目標(biāo)的手段,而不是目標(biāo)本身;我不喜歡在了解去中心化的目標(biāo)前就妄下評(píng)論。
我認(rèn)為在許多案例(甚至是大部分情況)下,只要破壞系統(tǒng)的代價(jià)夠大,并且有針對(duì)攻擊者的防御及懲罰機(jī)制,則 Tendermint 要求固定且事先知曉驗(yàn)證者集合的保守方法是可行的。
如果我們回顧預(yù)測(cè)市場(chǎng)的例子,我會(huì)說(shuō)去中心化預(yù)測(cè)市場(chǎng)應(yīng)用,根本不需要像健全貨幣或是價(jià)值存儲(chǔ)應(yīng)用一樣具備這么高級(jí)別的去中心化程度,有 10 、20 或 100 個(gè)驗(yàn)證者足矣。
以 TruStory 為例,我們使用 Cosmos SDK 構(gòu)建后端應(yīng)用邏輯,將應(yīng)用的狀態(tài)和邏輯存在區(qū)塊鏈上,而前端某種程度上是私有的——Cosmos SDK 允許我們建立用來(lái)賞善罰惡的激勵(lì)系統(tǒng)、透明化展示數(shù)據(jù)層、允許用戶分享網(wǎng)絡(luò)的所有權(quán)及治理權(quán),還可以共同決議未來(lái)的事務(wù)、踢出惡意使用者,并按照個(gè)人喜好針對(duì)用戶層或基礎(chǔ)層設(shè)計(jì)網(wǎng)絡(luò)。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),他們也能基于后端區(qū)塊鏈邏輯構(gòu)建自己的開(kāi)發(fā)工具及服務(wù)。因此有 10 個(gè)或 100 個(gè)執(zhí)行并驗(yàn)證交易的驗(yàn)證者,就能夠保障使用者和開(kāi)發(fā)者對(duì)于透明性、所有權(quán)、責(zé)任歸屬的需求。
如果你能明白 Tendermint 以「選擇固定且事先知曉的驗(yàn)證者集合」作為犧牲,所帶來(lái)的利益,你會(huì)對(duì)這些原本不可能實(shí)現(xiàn)的神奇特性充滿贊嘆:
安全性及活躍度
Tendermint 的協(xié)議保證安全性及活躍度。假設(shè)超過(guò) 2/3 的驗(yàn)證者投票權(quán)重沒(méi)有掌握在拜占庭驗(yàn)證者手中(也就超過(guò) 2/3 驗(yàn)證者是遵守協(xié)議的),換句話說(shuō)少于 1/3 的投票是惡意的 ,則協(xié)議就能保證網(wǎng)絡(luò)的安全性及活躍度(i.e. 驗(yàn)證者永遠(yuǎn)不會(huì)在相同的塊高度提出沖突區(qū)塊,區(qū)塊鏈永遠(yuǎn)會(huì)正常出塊)。
高性能
Tendermint 共識(shí)的出塊時(shí)間可以低至 1 秒,達(dá)到每秒處理數(shù)千筆交易的速度,讓 Tendermint 更適合需要頻繁交易的應(yīng)用。
即時(shí)確認(rèn)
在區(qū)塊鏈?zhǔn)澜缰?,最終確定性(Finality)意味著一旦區(qū)塊被提交上鏈,我們就能確定直至該區(qū)塊之前的整個(gè)區(qū)塊鏈的狀態(tài)。
如我們前面提到的,中本聰共識(shí)有其概率性,所以沒(méi)有辦法保證最終確定性。你只能基于大多數(shù)礦工可能還在該分叉中挖礦的概率,保證你的交易所在的分叉鏈?zhǔn)枪沧R(shí)鏈。
但是,Tendermint 要求驗(yàn)證者對(duì)每個(gè)區(qū)塊進(jìn)行投票及最終確認(rèn)。所以我們可以說(shuō),在少于 1/3 惡意驗(yàn)證者的情況下,交易能夠被「即時(shí)確認(rèn)」——當(dāng)區(qū)塊被創(chuàng)建出來(lái),使用者就知道他們的交易已經(jīng)被確認(rèn)了。
責(zé)任制
Tendermint 使用 PoS 作為抗女巫攻擊機(jī)制——要求驗(yàn)證者質(zhì)押代幣(i.e. 他們的「保證金」),以確保節(jié)點(diǎn)不會(huì)通過(guò)創(chuàng)建多個(gè)虛假賬戶來(lái)欺騙系統(tǒng)。
PoS 比 PoW (PoW 的證明來(lái)自礦工解出下個(gè)區(qū)塊哈希所耗費(fèi)的算力)更節(jié)能,但是它固有的「無(wú)利害關(guān)系」缺陷導(dǎo)致驗(yàn)證者能輕易作弊。
Tendermint 通過(guò)罰沒(méi)保證金來(lái)處罰違反協(xié)議規(guī)則(e.g. 替沖突區(qū)塊投票,及廣播未驗(yàn)明的投票)的驗(yàn)證者,避免發(fā)生無(wú)利害關(guān)系問(wèn)題。說(shuō)得更具體點(diǎn),協(xié)議存在「鎖定規(guī)則」,規(guī)范了每個(gè)驗(yàn)證者在投票給特定區(qū)塊時(shí)能做的行為。舉例來(lái)說(shuō),一旦驗(yàn)證者預(yù)提交投票后,它就被「鎖定」在該區(qū)塊;只有在下一輪中要讓一個(gè)不同的區(qū)塊成為 polka 時(shí),該驗(yàn)證者才能解鎖并預(yù)提交另一個(gè)區(qū)塊。如果違反鎖定規(guī)則,驗(yàn)證者會(huì)被罰沒(méi)保證金。
更簡(jiǎn)單的輕客戶端
輕客戶端比全節(jié)點(diǎn)「更輕巧」,因?yàn)樗鼈儾淮鎯?chǔ)區(qū)塊鏈的所有狀態(tài),只存儲(chǔ)區(qū)塊頭。除非是負(fù)責(zé)驗(yàn)證和出塊的挖礦節(jié)點(diǎn),或驗(yàn)證者節(jié)點(diǎn),不然大部分節(jié)點(diǎn)其實(shí)不需要存儲(chǔ)區(qū)塊鏈全狀態(tài)。
輕客戶端下載從創(chuàng)世區(qū)塊開(kāi)始到當(dāng)前區(qū)塊的區(qū)塊頭,而不去下載和存儲(chǔ)整條鏈。相比于全節(jié)點(diǎn),輕客戶端只需要存儲(chǔ)少量數(shù)據(jù),因?yàn)閰^(qū)塊頭就足以驗(yàn)證某些特定交易的有效性。
最酷的事情在于,基于 Tendermint 的區(qū)塊鏈的輕客戶端甚至無(wú)需同步所有區(qū)塊頭,只要周期性的下載區(qū)塊頭就行。
就像我們前面討論的,Tendermint 與比特幣、以太坊不同,其所有區(qū)塊都要經(jīng)過(guò)投票及最終確認(rèn);因?yàn)槊總€(gè)區(qū)塊都經(jīng)過(guò)最終確認(rèn),所以輕客戶端只要注意驗(yàn)證者集合的變化——只要知道最新的驗(yàn)證者集合,輕客戶端就能下載最新的區(qū)塊頭,并驗(yàn)證這些區(qū)塊都有大于 2/3 的驗(yàn)證者投票。
Cosmos 網(wǎng)絡(luò)層
如我們上面所說(shuō)的,Tendermint 的共識(shí)依靠驗(yàn)證者在每一輪進(jìn)行投票來(lái)完成。因此,節(jié)點(diǎn)間必須能溝通及傳遞訊息,確保網(wǎng)絡(luò)中所有參與者都能看到相同數(shù)據(jù)。
與比特幣和以太坊一樣,Tendermint 使用 gossip 協(xié)議快速傳播最新的區(qū)塊鏈狀態(tài)。
網(wǎng)路中的節(jié)點(diǎn)不一定要成為驗(yàn)證者才能在網(wǎng)絡(luò)共識(shí)過(guò)程中發(fā)揮作用。舉例來(lái)說(shuō),節(jié)點(diǎn)可以是輕節(jié)點(diǎn)或是全節(jié)點(diǎn),而不是驗(yàn)證者;這類節(jié)點(diǎn)也被稱為 「非驗(yàn)證者節(jié)點(diǎn)」。
驗(yàn)證者及非驗(yàn)證者節(jié)點(diǎn)都要肩負(fù)傳遞數(shù)據(jù)的責(zé)任(例如提案數(shù)據(jù)、區(qū)塊數(shù)據(jù)和投票數(shù)據(jù)),以確保所有節(jié)點(diǎn)都能收到系統(tǒng)正在產(chǎn)生的信息和交易。
Cosmos 應(yīng)用層
目前,我們已經(jīng)了解 Tendermint 網(wǎng)絡(luò)層及共識(shí)層的核心組成部分;網(wǎng)絡(luò)層負(fù)責(zé)網(wǎng)絡(luò)中所有計(jì)算機(jī)之間交易的傳遞,Tendermint 共識(shí)算法確保狀態(tài)機(jī)的一致性(即所有節(jié)點(diǎn)中的區(qū)塊鏈都是一致的)。
但我們傳遞和驗(yàn)證的到底是什么交易?這里就引出了應(yīng)用層。
Cosmos 應(yīng)用層負(fù)責(zé):
定義和提交需要被記錄進(jìn)區(qū)塊鏈的交易在交易通過(guò)共識(shí)層提交后,持續(xù)更新區(qū)塊鏈狀態(tài)使用 Cosmos SDK 構(gòu)建應(yīng)用程序
Cosmos SDK 提供一套構(gòu)建應(yīng)用層的框架,就像是區(qū)塊鏈界的 Ruby-on-Rails (Ruby-on-Rails 是一種讓開(kāi)發(fā)者輕松通過(guò)默認(rèn)設(shè)置構(gòu)建網(wǎng)頁(yè)端應(yīng)用的框架),Cosmos SDK 也為開(kāi)發(fā)者提供了一種基于 Tendermint 內(nèi)核構(gòu)建安全的區(qū)塊鏈應(yīng)用的框架。
要記住,區(qū)塊鏈就是一個(gè)在所有節(jié)點(diǎn)將狀態(tài)做相同備份的狀態(tài)機(jī),而 Cosmos SDK 讓你可以構(gòu)建能在多個(gè)節(jié)點(diǎn)間進(jìn)行復(fù)制的實(shí)際狀態(tài)機(jī)。SDK 讓你自定義應(yīng)用的狀態(tài)、事務(wù)類型,及狀態(tài)-轉(zhuǎn)變函數(shù)所需的功能和工具。
Cosmos 應(yīng)用如何運(yùn)行(抽象視角)
Cosmos SDK 提供一種「multistore」機(jī)制來(lái)定義及維護(hù)應(yīng)用層狀態(tài)機(jī)的狀態(tài)。Multistore 將應(yīng)用層的狀態(tài)劃分到不同組件,通過(guò)各自的「模塊」進(jìn)行管理。
Cosmos SDK 的強(qiáng)大之處就是它獨(dú)特的模塊化設(shè)計(jì),每個(gè)模塊定義及維護(hù)一個(gè)狀態(tài)子集,這些狀態(tài)子集構(gòu)成完整的區(qū)塊鏈。舉例來(lái)說(shuō):
銀行模塊:允許你在應(yīng)用中持有代幣,及進(jìn)行代幣轉(zhuǎn)賬權(quán)限模塊:允許你創(chuàng)建及管理賬戶和簽名質(zhì)押與罰沒(méi)模塊:允許你通過(guò)編碼構(gòu)建 PoS 共識(shí)機(jī)制每個(gè)模塊都是個(gè)小狀態(tài)機(jī),可以相互聚合生成總體狀態(tài)機(jī)。
應(yīng)用開(kāi)發(fā)者按照每個(gè)模塊和修改狀態(tài)的慣用邏輯來(lái)定義子集,除了 Cosmos SDK 提供的模塊,開(kāi)發(fā)者還能調(diào)用第三方模塊。
這種用于構(gòu)建區(qū)塊鏈應(yīng)用的插件模塊非常強(qiáng)大,因?yàn)樗x予開(kāi)發(fā)者使用 SDK 或外部模塊的靈活性。
應(yīng)用層如何與共識(shí)層交互?
發(fā)生在應(yīng)用層的交易通過(guò)區(qū)塊鏈應(yīng)用交互界面(ABCI, Application Blockchain Interface)與 Tendermint 共識(shí)及網(wǎng)絡(luò)層通信。
ABCI 是 Socket 通信協(xié)議,連接 Tendermint 核心(共識(shí) + 網(wǎng)絡(luò))與應(yīng)用。它可以兼容任何編程語(yǔ)言,也就是說(shuō)使用 Cosmos SDK 構(gòu)建的區(qū)塊鏈應(yīng)用理論上能以任何語(yǔ)言編寫(xiě),而不僅僅是 Tendermint 底層共識(shí)和網(wǎng)路層所用的編程語(yǔ)言。
注意:當(dāng)前版本的 Cosmos 主要支持 Golang,后續(xù)會(huì)加入更多語(yǔ)言。
總而言之,Cosmos SDK 允許開(kāi)發(fā)者基于 Tendermint 內(nèi)核構(gòu)建去中心化應(yīng)用,這個(gè)應(yīng)用理論上能用任何語(yǔ)言開(kāi)發(fā),并通過(guò) ABCI 連接 Tendermint 共識(shí)引擎。
將應(yīng)用層(Cosnos SDK、ABCI)與網(wǎng)路層、共識(shí)層(Tendermint 內(nèi)核)剝離,能讓開(kāi)發(fā)者在開(kāi)發(fā)各種類型應(yīng)用的時(shí)候有更大的靈活性,再加上 Cosmos SDK 允許這些應(yīng)用以任何語(yǔ)言開(kāi)發(fā)(e.g. Golang),讓區(qū)塊鏈 App 開(kāi)發(fā)過(guò)程更像平常的應(yīng)用開(kāi)發(fā)的樣子。
這與在以太坊上開(kāi)發(fā)應(yīng)用形成鮮明對(duì)比,因?yàn)楹笳咭箝_(kāi)發(fā)者學(xué)習(xí)新語(yǔ)言 Solidity ,還要克服 Solidity 的諸多限制和缺陷,而且 Golang 比 Solidity 具備更多的開(kāi)發(fā)工具,開(kāi)發(fā)體驗(yàn)好上 10 倍。
除此之外,全部的以太坊 App 都基于單一網(wǎng)絡(luò)進(jìn)行操作,這么做的優(yōu)勢(shì)是這些 App 能夠共享以太坊的標(biāo)準(zhǔn),以及相應(yīng)而生的規(guī)模效應(yīng);缺點(diǎn)是所有這些 App 都共享以太坊共識(shí)層,會(huì)受到新加入的應(yīng)用體量大小的影響。 此外,整個(gè)網(wǎng)絡(luò)必須作為一個(gè)巨大的單元來(lái)管理,會(huì)被治理理念和意識(shí)形態(tài)分歧所束縛,使得擴(kuò)展難以進(jìn)行。
Cosmos 區(qū)塊鏈應(yīng)用不會(huì)受到這些限制,每個(gè)應(yīng)用都有獨(dú)立的網(wǎng)絡(luò)、自己的共識(shí)層及治理層。
開(kāi)發(fā)者有很大的自主性來(lái)決定它們的共識(shí)層權(quán)限,還能選擇基于代幣質(zhì)押數(shù)量推舉公開(kāi)的驗(yàn)證者集合,或是通過(guò)預(yù)授權(quán)設(shè)置私密驗(yàn)證者集合。這種自由選擇驗(yàn)證者集合的規(guī)則,意味著區(qū)塊鏈對(duì)于自己的鏈有更大的自主性。
當(dāng)然,這樣的好處伴隨某些犧牲:Cosmos 網(wǎng)路中的每個(gè)區(qū)塊鏈應(yīng)用都必須導(dǎo)入自己的驗(yàn)證者、社群,及經(jīng)濟(jì)體系;無(wú)法像以太坊一般,直接蹭用所有驗(yàn)證者、強(qiáng)大的社群,及已有的經(jīng)濟(jì)體系。
在這第一篇文章里,我們對(duì)比了 Cosmos 網(wǎng)絡(luò)中的區(qū)塊鏈架構(gòu)與比特幣、以太坊的不同。這種架構(gòu)賦予區(qū)塊鏈應(yīng)用對(duì)于自己的鏈更大的自主性。
在第二部分,我們要深入討論 Cosmos 中相互獨(dú)立的區(qū)塊鏈如何進(jìn)行交互;更重要的是回答「為什么區(qū)塊鏈需要互相進(jìn)行交互」。Cosmos 最關(guān)建的特性之一是互操作性,即賦能多種區(qū)塊鏈之間的交互。為了更好地理解這一特性的運(yùn)作原理,我們首先需要了解 Cosmos 中用于支撐其互操作性的基礎(chǔ)架構(gòu):「 Hub 以及 Zone 」。
Hub 和 Zone
Cosmos 網(wǎng)絡(luò)中的區(qū)塊鏈應(yīng)用了一種中心輻射模型:
位于中心的是 Hub (「中心樞紐」)。Hub 管理著許多被稱為 「Zone」 的獨(dú)立區(qū)塊鏈(下文 「 Zone 」 指代區(qū)塊鏈),由 Hub 來(lái)追蹤記錄各個(gè) Zone 的狀態(tài),而每一個(gè) Zone 有義務(wù)不停地把自身產(chǎn)出的新區(qū)塊反向匯報(bào)給 Hub 。類似地,每一個(gè) Zone 也需要同步 Hub 的狀態(tài)。
但這里有個(gè)棘手的問(wèn)題—— Zone 之間并不直接同步各自的狀態(tài),而是通過(guò)發(fā)向 Hub 的數(shù)據(jù)包間接通信。要想弄清楚這一流程,我們首先需要調(diào)研其背后的支撐機(jī)制:跨鏈通信(IBC)。
IBC 是如何工作的
Hub 與 Zone 直接通信,而 Zone 與 Zone 之間通過(guò) IBC 間接通信。當(dāng) Zone 對(duì) Hub 建立起一個(gè) IBC 連接,它可以自動(dòng)訪問(wèn)其他連接到該 Hub 上的 Zone ,這意味著 Zone 無(wú)需與其他 Zone 連接,而僅僅連接到 Hub 上即可。
通過(guò)保持各種跨 Zone 代幣的固定總額,Hub 可以預(yù)防雙重支付問(wèn)題(Double Spend)。這些代幣可以通過(guò)一種被稱為「幣包」 的特殊 IBC 數(shù)據(jù)包而實(shí)現(xiàn) Zone 之間的跨鏈轉(zhuǎn)移。
當(dāng)一個(gè) Zone 通過(guò) Hub 收到來(lái)自其他 Zone 的代幣時(shí),它只需要信任 Hub 以及代幣來(lái)源的 Zone,而不需要信任網(wǎng)絡(luò)中所有其它的 Zone 。
讓我們看個(gè)例子:
假設(shè)當(dāng)前由兩條區(qū)塊鏈:Zone 1 以及 Zone 2 ?,F(xiàn)在如果我們想要從 Zone 1 上發(fā)送代幣到 Zone 2 ,會(huì)發(fā)生什么呢?
要讓數(shù)據(jù)包從 Zone 1 發(fā)送到 Zone 2 ,Zone 1 首先要向 Hub 發(fā)送一個(gè)指向 Zone 2 的數(shù)據(jù)包。
緊接著 Hub 向 Zone 2 發(fā)送一則證明,表示 Zone 1 向其發(fā)布了一個(gè)數(shù)據(jù)包。
在此之后,Zone 2 必須驗(yàn)證關(guān)于 Zone 1 的證明是否真實(shí)。為此,Zone 2 要利用 Zone 1 存儲(chǔ)在 Hub 中的區(qū)塊頭。我們前面提到過(guò) Hub 幫助 Zone 同步記錄其它每一個(gè) Zone 的狀態(tài),而 Hub 是通過(guò)記錄其它 Zone 的區(qū)塊頭實(shí)現(xiàn)這一功能的。
現(xiàn)在你可能會(huì)疑問(wèn):為什么 Cosmos 不直接利用 IBC 建立 Zone 與 Zone 之間的連接?為什么需要進(jìn)行 Hub 和 Zone 的設(shè)計(jì)?事實(shí)上,隨著接入到網(wǎng)絡(luò)中 Zone 的數(shù)量上升,以直連方式實(shí)現(xiàn)通信會(huì)導(dǎo)致鏈路數(shù)量呈平方級(jí)上升。以 100 個(gè) Zone 接入到網(wǎng)絡(luò)中為例,如果各個(gè) Zone 直接都要建立起 IBC 連接,則網(wǎng)絡(luò)中需要有 4950 條通信鏈路!如此快速的增長(zhǎng)顯然會(huì)令網(wǎng)絡(luò)不堪重負(fù)。
采用「 Hub 與 Zone 」模型令 Cosmos 能夠無(wú)視 Zone 的數(shù)量而實(shí)現(xiàn)跨鏈通信,并支持網(wǎng)絡(luò)的不斷拓展。
Cosmos 網(wǎng)絡(luò)的正常運(yùn)轉(zhuǎn)離不開(kāi) IBC ,正是因?yàn)樗拍茏尪鄺l承載著不同應(yīng)用和驗(yàn)證者集的獨(dú)立區(qū)塊鏈(即 Zone )實(shí)現(xiàn)互操作。
創(chuàng)世 「Hub」: Cosmos Hub
如前所述,Hub 是連接不同 Zone 的組件,而 Cosmos Hub 正是 Cosmos 網(wǎng)絡(luò)中第一個(gè) Hub ,它通過(guò) IBC 連接其它的 Zone 。Cosmos 網(wǎng)絡(luò)上構(gòu)建的第一個(gè)區(qū)塊鏈(或者說(shuō) Zone )會(huì)應(yīng)用該主 Hub 來(lái)與網(wǎng)絡(luò)中其他的 Zone 進(jìn)行交互。這就意味著 Cosmos Hub 必須具備足夠高的安全性(即許多驗(yàn)證者)來(lái)保證使用它的 Zone 能安全地進(jìn)行互操作。
橋接非 Tendermint 共識(shí)的區(qū)塊鏈
目前為止,我們探討了基于 Tendermint 共識(shí)的區(qū)塊鏈(即 Zone )是如何利用 IBC 和 Hub 進(jìn)行交互的。然而 Cosmos 并不局限于 Tendermint 共識(shí)鏈的跨鏈操作。
我將在下文粗略解釋 Cosmos 如何兼容其它不同共識(shí)算法的區(qū)塊鏈。
一般來(lái)說(shuō),區(qū)塊鏈可以分成兩種類型:不可逆鏈和概率鏈。
不可逆鏈(Determinmistic chain)指的是每個(gè)區(qū)塊的狀態(tài)都是確定的(finalized),在未來(lái)的任意時(shí)刻你都可以從創(chuàng)始?jí)K開(kāi)始復(fù)現(xiàn)推演每個(gè)區(qū)塊的狀態(tài)(例如基于 Tendermint 共識(shí)的區(qū)塊鏈);概率鏈(Probabilistic chain)是指你只能根據(jù)區(qū)塊鏈網(wǎng)絡(luò)參與者在不同分叉鏈上的比例,而以一定概率認(rèn)為某條鏈?zhǔn)侵麈湥ɡ绫忍貛牛?。Cosmos 中的 Hub 理論上可以接入上述兩者,只不過(guò)對(duì)于概率鏈的支持在實(shí)踐中要相對(duì)麻煩一些。
這是因?yàn)閺牡讓釉O(shè)計(jì)來(lái)講,IBC 發(fā)揮作用的前提在于區(qū)塊鏈的不可逆。如果區(qū)塊鏈?zhǔn)歉怕舒?,Hub 就不能保證跨 Zone 的代幣總額固定。如前所述,Hub 如果想要實(shí)現(xiàn)無(wú)雙重支付的跨 Zone 代幣轉(zhuǎn)移,就必須保證在 Zone 與 Zone 之間某一代幣的總額是固定的。
Cosoms 試圖通過(guò) 「Peg Zone」 來(lái)實(shí)現(xiàn)概率鏈的互操作性。
Peg Zone 是追蹤記錄另一條區(qū)塊鏈狀態(tài)的區(qū)塊鏈,它要將自己橋接的某條概率鏈上的狀態(tài)確定為不可逆的,使得這些狀態(tài)得以與 IBC 兼容。
還跟得上嗎,少年?現(xiàn)在我只剩下最后一個(gè)(同時(shí)也是最重要的)問(wèn)題要跟你探討:區(qū)塊鏈究竟為什么需要要互操作性?
為什么互操作性如此重要?
眾所周知,區(qū)塊鏈?zhǔn)遣豢赡尜~本。然而和其他軟件一樣,隨著時(shí)間推移,用于構(gòu)建區(qū)塊鏈的軟件也需要進(jìn)行迭代和升級(jí)。一蹴而就、無(wú)懈可擊的軟件簡(jiǎn)直是天方夜譚,所以軟件的改動(dòng)不可避免?!钢卫怼箚?wèn)題就是討論如何對(duì)區(qū)塊鏈底層軟件的改動(dòng)進(jìn)行提案、決議以及應(yīng)用。
以比特幣為例,由比特幣基金會(huì)、比特幣核心開(kāi)發(fā)者、礦工以及用戶來(lái)發(fā)起底層改動(dòng)的提案,并以協(xié)作的方式實(shí)現(xiàn)升級(jí)。而以太坊則依靠開(kāi)發(fā)者和用戶社區(qū)的群策群力來(lái)做出此類決議。
Cosmos 的做法與上述兩者大相徑庭。不同于常見(jiàn)的、統(tǒng)攝全網(wǎng)的治理機(jī)制,Cosmos 允許每個(gè) Hub 構(gòu)建自己的治理策略。
任何持幣人都可以發(fā)起變更提案,由該 Zone 或 Hub 的驗(yàn)證者和持幣委托人對(duì)提案進(jìn)行投票。提案的內(nèi)容包括但不限于對(duì)系統(tǒng)預(yù)置參數(shù)的變更(例如區(qū)塊 gas 上限)、軟件更新,甚至是 hub 在處理竊幣、入侵或漏洞時(shí)所采取的政策性升級(jí)。
同樣每個(gè) Zone 也具備各自的治理機(jī)制。
舉例而言,Cosmos 支持在 Hub 端強(qiáng)制應(yīng)用不可逆性的同時(shí),每一個(gè) Zone 都可以根據(jù)自身需要設(shè)置是否不可逆。想要了解更多,可以閱讀這篇文章 《 Cosmos 中的 Hub 治理機(jī)制流程》。
在我看來(lái)這種設(shè)計(jì)十分強(qiáng)大,同時(shí)也被大大低估了。如果非要從本篇博文中提取出什么核心論點(diǎn)的話,也就是下面這一段話了:
Cosmos 在底層設(shè)計(jì)上不認(rèn)為能通過(guò)有限的規(guī)則治理大千世界中形形色色的經(jīng)濟(jì)網(wǎng)絡(luò),不認(rèn)為存在特定的一個(gè)規(guī)則集合讓大家都稱心如意。這一道理不言自明,看看比特幣自運(yùn)行以來(lái)由于哲學(xué)和政治分歧引起的眾多分叉。另一方面,從以太坊的治理中我們可以看出,持幣人無(wú)法以規(guī)范的形式實(shí)現(xiàn)治理或是形成合力拒絕不規(guī)范的治理,這對(duì)生態(tài)的發(fā)展起到了副作用,阻礙了以太坊的更新升級(jí)。
Cosmos 試圖通過(guò)獨(dú)立區(qū)塊鏈之間的互操作性解決這一問(wèn)題,即使并且尤其這些區(qū)塊鏈擁有不同的治理政策。因此 Cosmos 最核心的價(jià)值屬性就是在社會(huì)和經(jīng)濟(jì)領(lǐng)域的可拓展性。它為其生態(tài)之上的用戶和開(kāi)發(fā)者提供了無(wú)限的自由,以及不加約束的實(shí)驗(yàn)潛能。
感謝你陪我討論了一路 Cosmos (網(wǎng)絡(luò))!
難以置信你聽(tīng)我叨叨了這么多,佩服!本文就到此為止了,期待在下一篇文章與你相遇!
聲明:本文為入駐“火星號(hào)”作者作品,不代表火星財(cái)經(jīng)官方立場(chǎng)。轉(zhuǎn)載請(qǐng)注明出處、作者和本文鏈接
提示:投資有風(fēng)險(xiǎn),入市須謹(jǐn)慎。本資訊不作為投資理財(cái)建議。
以上就是關(guān)于pos機(jī)秒到原理,詳解 Cosmos 運(yùn)行原理的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)秒到原理的知識(shí),希望能夠幫助到大家!









