Cosmos 在今年3月正式上線,為備受矚目的跨鏈協議,本文用淺顯的語言介紹了什麼是 Cosmos 協議,同時也解釋了很多區塊鏈的基本知識,包括拜占庭將軍問題、權益證明(PoS)等,適合初學者閱讀。本文轉自《Cosmos / Tendermint explained for real idiots》,作者為 Patrick Wieth,由藍狐筆記翻譯。
我是Cosmos 的超級粉絲,到目前為止都很輕鬆。
很多人問我:「 什麼是Cosmos ,為什麼你會一本正經地聊這個呢?」,我經常給他們解釋或者試圖給他們解釋。在這裡,我試圖再解釋一次,希望寫成一個文檔,這樣以後我就可以發給我的朋友們了。
我不是開發者、團隊或基金會的成員,我不會用精準的技術用語來解釋它,因為已經有很多文件檔案這麼做了。讀白皮書、讀Cosmos 的部落格、看 Sunny Aggarwal 拍的影片,所有這些都很棒,技術上也是正確的。
不幸的是,我發現所有這些對很多人來說太複雜了。這就是為什麼我試圖給真正的初學者們解釋。
不要以此為辱,我也是個初學者,但有一次我坐下來試圖理解這些東西,因為我自己也是個初學者,所以可以用初學者的語言來解釋它。
Cosmos 做了很多事情,所以把事情搞得很複雜。一個原因是因為「Tendermint 」。
Tendermint 是軟體而Cosmos 是區塊鏈。或者更確切地說是由Tendermint 的創建者創建的區塊鏈互聯網的主要樞紐。
Tendermint
所以,讓我們開始了解什麼是 Tendermint 。
它將自己描述為「用任何編程語言的拜占庭容錯複製狀態機」 ,讓我們來解釋這個東西。拜占庭容錯意味著我們不需要單一的可信實體。就像發行貨幣的中央銀行,我們相信它會以合理的方式發行貨幣。它被稱為拜占庭容錯,是因為有一些人騎著駱駝,想要征服拜占庭帝國。
因此,他們需要同時攻擊君士坦丁堡城,到目前為止都很容易。他們所要做的就是從四面八方同時發起攻擊,因為他們帶來了軍刀和前面提到的駱駝,這聽起來像是一個可行的計劃。但是他們沒有手機,所以不能給其他人打電話或者發快照。更糟糕的是,有些將軍可能是叛徒,而且駱駝的糞便也很難聞。
因此,叛徒們想通過提供虛假信息,把其他忠誠的將軍送上斷頭台。相反,所有的部隊領導人不想輸,所以需要防止叛徒傳播誤導信息。不幸的是,沒有人知道誰是叛徒,在某種程度上,不可能知道信息是否可信。整個困境被稱為拜占庭將軍問題,這也是區塊鏈正在解決的典範問題。
該問題的一個解決方案是允許去中心化的組織系統。將軍們是一個去中心化系統的好例子,因為技術上不可能把所有的將軍都連接到一個中央權威機構。因此,只有通過網狀網絡才能進行足夠快的通信,但這將導致拜占庭錯誤。
一種解決方案是領導者在他們的消息中添加簽名,但是如果你得到 6 條帶有2 種不同類型簽名的消息,3 條是假的,3 條是真的,會發生什麼?在這種情況下,甚至拜占庭容錯協議也無法起作用。但如果只有少數叛徒,就有辦法確定誰是忠誠的,誰是叛徒。
接下來是「複製狀態」 ,這就是區塊鏈網絡實際所做的事情。它們在所有節點之間複製狀態。無論你是在澳大利亞、中國還是北極運行你的節點,最終都會得到相同的區塊鏈。我們不想在這裡討論你用比特幣複製了什麼,有些人會說這不是一種狀態,而是一種未花費的交易。
這對開發人員來說很重要,但我們是初學者,不需要過分拘泥於細節。既然我們提到了比特幣,也會注意到比特幣有一種實現拜占庭容錯的特殊解決方案。這個解決方案叫做工作量證明。我們稍後再聊。
– 君士坦丁堡的陷落表明拜占庭將軍問題在當時得到了解決。Jean-Joseph Benjamin-Constant [ 公共版權] 的作品,來自維基共享資源 –
所以現在我們知道了什麼是Tendermint 。它是一種在沒有任何中央權威機構的情況下,在全球範圍內分發某個狀態的軟體。這裡的「某個」可以是任何東西。它可以是一個帳本,一個圖片數據庫,也可以是一個未成交的交易訂單列表。都沒有關係。這實在太棒了。
這意味著,使用 Tendermint ,你可以創建所需的任何區塊鏈系統,並且除了應用邏輯之外,所有事情都幫你做完了。節點之間如何連接,如何達成共識,如何編寫區塊鏈,所有這些問題都已經解決,如果你想創建一個token ,只需要編寫所需的token 經濟模型。你還可以創建不使用token 的去中心化應用程式(dApp )。
這裡有一些限制,最重要的是你的應用程式必須是確定性的。這意味著無論你提供什麼輸入,都可以精確地預測輸出,換句話說,所有節點都會根據給定的交易集合和初始狀態計算出完全相同的下一個狀態。顯然這是很有必要的,否則就會一直出現分叉。
所有這些都意味著Tendermint 將區塊鏈方案中的「共識和網絡層」與「應用層」分離了開來。這意味著任何人都可以在不編寫加密和網絡相關代碼的情況下編寫區塊鏈程式。這使得開發人員很容易構建解決方案。大公司呢,也許他們想要自己的私有區塊鏈?沒問題,Tendermint 把決定權交給了你,誰可以成為一個節點,以及如何激勵貢獻者。
現在,我們意識到Tendermint 每天都能創造新的代幣,甚至比以前更快,所有這些代幣都是建立在相同的基礎之上的。也許把它們關聯起來也是很有意義的。這就是Cosmos 開始發揮作用的地方。
Cosmos 是用 Tendermint 構建的,它有權益證明代幣,利用委託來允許任何人,甚至非驗證者參與質押。我們把這個稱為Cosmos 權益證明。這又是一個我們初學者無法理解的瘋狂的名詞。
工作量證明
我們先來了解一下工作量證明(PoW )。這是確保比特幣安全性的方法。還記得,在文章的開頭,我們需要一種方法來確定誰是叛徒、誰是忠誠的。在加密貨幣的世界裡,這意味著誰在用有效的交易創建新區塊,誰可能為了個人利益偽造假交易。
PoW 是基於這樣一個概念:做一項困難的工作,誰完成這項工作就相信誰。因此,網絡同意解決這項困難的任務,同時結果也很容易驗證,而且一旦問題解決,就會產生出一個新的任務。此外,任務的難度是可以調整的。無論誰先解決了這個難題,就找到了一個新的區塊,然後開始尋找下一個區塊。
不過,這些東西是去中心化的。那麼我們怎麼知道該信任誰呢?在這種情況下,你可以信任最長的鏈。因為最長的鏈解決了最困難的工作,所以最值得信賴。但這不是會造成出塊速度的螺旋式上升,以及出塊時間的降低嗎?是的,但是正如我們所提到的,工作的難度是可以調整的。
因此,網絡會增加問題的難度,因此平均需要10 分鐘才能找到一個新的區塊。現在我們可能會問自己,這玩意兒是怎麼保證網絡安全的?只是做一些隨機的任意的工作?好吧,問題是你必須購買硬體才能做到這一點。你得耗費電力才能做到這一點。
如果你決定作惡,購買大量的算力,完成所有的PoW(工作量證明)工作並控制網絡,那麼你就能竊取所有的比特幣。一種反應可能是比特幣貶值,這對你來說不算太壞,因為不管怎麼說你都竊取了比特幣,但你的挖礦硬體現在也變得一文不值,你還花了很多錢買硬體。
因此,那些擁有大量算力的人投入了大量的資金,他們也希望比特幣能夠繁榮發展。此外,還希望挖礦硬體的價值與比特幣的市值相稱。這是通過手續費和區塊獎勵來實現的,這意味著當比特幣的估值更高時,礦工的收入會更高。
因此,這將激勵更多的礦工,從而增加硬體資本。
有了這個聰明的機制,比特幣透過這個載體被銷毀的成本高達數十億美金。不幸的是,PoW 有兩個非常關鍵的缺陷。一個關鍵的缺陷是浪費電力。比特幣浪費了大量的電力。這些計算是隨意的,只對保護網絡安全有意義,但它們計算的數字並不是為了達成某種目的。浪費總是不好的,並且在全球變暖的背景下,浪費能源更是雪上加霜。
PoW 的第二個關鍵問題是礦工的力量。礦工們不需要保留比特幣。對他們來說,比特幣多有用並不重要,他們在意的是挖礦帶來的收益。如果礦工們想讓比特幣變得更有用當然更好,但在這裡我不想討論這對比特幣有什麼好處。
我想要說的是,礦工可能會遵循某種策略,提高手續費從而使其無法作為貨幣使用,淪為價值儲存,甚至更糟糕到只是收藏品。例如,對於日常支付,你不會使用交易成本高於10 美元的貨幣。如果你在路邊小販買一塊口香糖,但是交易成本遠高於商品本身的話,那我們就不僅僅是初學者,而且是絕對的傻子。我們可以是初學者,但我們不想成為傻子。
權益證明
然而,多年前人們就已經下定決心要解決PoW 的問題,最流行的解決方案是權益證明(PoS )。網絡不再通過工作量難度,而是依靠高持股獲得安全性保障。因此,為了達成共識並找到新區塊,你不再需要硬體,而是需要持有大量的代幣。
在PoW 中,每個人都有機會找到一個與投入的工作量成比例的新區塊。在PoS 的模擬中,每個人都有機會找到一個與投入的股份數量成比例的新區塊。這意味著你可以質押你的代幣,使它們被凍結從而參與到共識的回合中來。
還記得那些保障網絡安全的昂貴的硬體嗎?在這裡,同樣的情況也發生在質押的代幣上。如果你偽造假交易,那麼你質押的加密貨幣就變得一文不值,因此你不會這麼做。乍一看,PoS 聽起來比PoW 更簡單、更明智,但它也有一些缺陷。
一個突出的例子是「無利害關係(nothing-at-stake)」問題。
它適用於分叉,所以當網絡分裂成兩個獨立的部分時,單一的PoS 會鼓勵持股人跟隨所有的分叉鏈。在PoW 中,你不能這麼做,因為你的礦機受限於其可以完成的工作量。但是如果你質押的代幣以同樣的方式存在於所有的分叉上,你在分叉上不會失去什麼,為了獲取更多盈利,會鼓勵分叉。
不幸的是,分叉對於網絡來說是不健康的,它們會停止增長、讓用戶感到困惑,並減緩發展過程。另一個問題是,所有這些權益質押者必須交流並同步他們對鏈的演進的看法。對PoW 來說,這沒什麼關係。有人會找到下一個區塊,其他所有人都可以驗證這個解是否正確。
對於PoS ,必須確定誰將提議下一個區塊,然後所有人都必須同意該塊是有效的。如果我們像比特幣一樣堅持10 分鐘的區塊時間,這也不算個問題,但我們知道可擴展性問題是一方面,另一方面我們也不想等待交易確認。事實上,沒有必要像比特幣那樣等待6 個區塊確認(約等於 1 小時),以確保交易有效。這只是PoW 的結果。
很抱歉,這段文字已經太長了。也許這也是喝杯咖啡的好時間。我會盡量縮短時間,但我不知道該怎麼做,因為很多人不知道所有這些內在的問題,但好消息是:現在我可以來談談Cosmos本身。
Cosmos
所以Cosmos 通過導入「消減懲罰」的概念來解決這個「無利害關係」問題。
據我所知,這個想法是由Tendermint 的負責人Jae Kwon 提出的。他們的想法是,行為不正的權益抵押者會被扣除代幣。當你行為不正時,就會失去代幣。當你偽造假交易時,會損失很多代幣。
因此,如果你跟著分叉#2 走,你的代幣就會在分叉#1 處被扣除。同樣,權益質押者也可能被迫參與監管過程。這也解決了DAO 災難中出現的一些問題。下一件事情是,如果你偷懶,不參與生產新區塊的過程,那麼你也會被扣除代幣。讓權益質押者參與新區塊的創建對網絡安全很重要。
此外,要鼓勵人們質押他們的代幣,而不是讓他們什麼都不做或者天天交易。因此,Cosomos 中存在一種動態通脹。質押你的代幣會在通貨膨脹中佔有相應的比例,從而使你不會因為通貨膨脹而損失任何東西。這對於保持低手續費,並仍然鼓勵代幣質押是很有必要的。
下一件事情是(委託)Cosmos 權益證明(CPoS ),它解決了前面提到的另一個問題。例如,當有10000 個權益質押者時,每個人都必須檢驗每個新的區塊,如果沒有問題的話,必須通知每一個人。
有兩個限制,一個是延遲,另一個是頻寬。對於延遲,信號傳輸的物理限制是光速,傳輸到地球的另一側大約需要66 毫秒的時間。在媒介中,光的速度會降低,在光纖中的傳播速度和在銅纜中不同,但我們就說100 毫秒吧。
現在它取決於網絡拓撲結構,舉個簡單的例子,讓我們假設共識中的一個參與者將他的知識發送給其他兩個參與者。然後需要14 次迭代(階段)來通知所有參與者(因為2¹⁴>10000 ),這14 個階段需要1.4秒,在所有的參與者都被通知之後,他們必鬚髮送回复,總共2.8 秒。這個計算的問題是,它是錯的。因為在這種情況下,不能有一個叛徒。例如,如果在第一階段有一個叛徒,那麼一半的網絡會得到錯誤的信息。
此外,我們沒有考慮到計算機也必須進行計算。假設一次計算需要50 毫秒,例如實際檢查一個區塊是否有效。但也有優化空間,不必將新區塊只發送給其他2 個網絡成員。我們可以發送給所有的10000 個參與者。因此生產新區塊的人,發送給所有的10000 個參與者,他們進行計算看是否正確,已經過去了150 毫秒。然後所有的10000 個參與者都發送給所有其他的10000 個參與者,他們計算誰可能是叛徒,又過了150 毫秒。然後所有的10000 個參與者都同意新的區塊,提出他們對叛徒的擔憂,並建議下一個區塊的生產者。再加上150 毫秒,總共450 毫秒。
太好了,我們可以得到小於1 秒的區塊時間,和比特幣的10 分鐘相比相當不錯。此外,區塊是最終確認的。使用這種方法,無需等待6 個或32 個區塊以確保所有內容有效。這是因為我們不再信任最長的鏈,而是根據我們的利害關係來達成一致。好,那麼讓我們檢查一下另一個限制,也就是頻寬。
對於第一種計算,我們假設跟原始比特幣的區塊一樣的大小,1MB 。假設我們必須每150 毫秒向所有10000 個參與者發送整個區塊,則需要一個67 GB/s 頻寬的網路連接。通常這是以bit/s 而不是byte/s表示的,所以這將是532 Gbit/s ,這是相當好的連接。有些人有100 Mbit/s 的頻寬,有些幸運兒在學生宿舍有1 Gbit/s 的頻寬,但目前沒人會有 532 Gbit/s 的頻寬。
不過,在每個階段只有2 個接收者的初始示例中是可行的,如果我們以150 毫秒的時間間隔計算,那麼只需要大約100 Mbit/s 的頻寬。實際上,我們需要得更少,因為我們不需要在所有回合中都傳輸整個區塊。
在最後一輪中,我們只需要發送確認。但是,第一輪不能延遲太多。我們已經回退到每輪2 名接收者,但又出現了另外一個問題。用這個值我們算出的結果是2.8 秒。不幸的是,我們犯了一個錯誤,沒有考慮拜占庭容錯能力。為了達到這一點,必須有更多的階段,從而沒法把區塊時間限製到1 秒範圍內。
因此這裡我們遇到了一個真正的困境。對於10000 個網絡參與者,我們要么沒有足夠的頻寬同時向所有參與者廣播,要馬延遲太高,無法進行多個階段的信息分發,並且沒法把區塊時間限制在幾秒鐘的範圍內。
請記住,這裡提到的網絡參與者指的是參與共識的人。剛剛讀取和發送交易的區塊鏈用戶不需要參與此過程。最終確認的區塊可以廣播給數百萬用戶,因為不需要雙向同步。
解決這個問題的辦法是委託。所以叫委託 Cosmos 權益證明。權益質押者分為兩組,委託人和驗證人。驗證人是共識機制的參與者,而委託人不直接參與網絡通信。在這種情況下,我們可以將驗證人的數量限製到一個固定的數目,例如100 。
現在,即使有10000 人甚至100000 人想要質押,同步所有這些節點的問題也不復存在。同步100 個參與者不是什麼大問題,我們的初始示例是2 的冪次,如果有10 個接收者需要獲取新區塊的話需要7 個階段,對於簡單的信息傳遞,2 個階段就足夠了。
對於拜占庭容錯,我們需要一些額外的回合,但在正常的網路連接下,可以在幾秒鐘內創建新的區塊。那麼,委託人需要做什麼呢?他們投票給驗證人。他們仍然用自己的代幣保護網絡安全。選擇質押了很多代幣的的驗證人是很有意義的,這樣他們就不會作惡,但是委託人也可以決定要支持哪個驗證人。
因此,你可以參與獲取抵押代幣獎勵,但不需要設置一個強節點。這是驗證人的工作,他們的工作會得到更多的回報。但正如Cosmos 中每年的通貨膨脹是動態的一樣,驗證人委員會也是動態的。
對前者進行調整是為了保證超過66% 的代幣質押(在工作量證明中,50% 的算力必須是誠實的,在實用拜占庭容錯中則需要66% ),對後者進行調整是為了使委員會保持在合理的低數量水平,但驗證人仍有運行節點的動機。這是通過驗證人之間競爭委託權來實現的。
這裡還有一句話很重要,如果你的驗證人遭到消減懲罰,你質押的代幣也會丟失。這就是為什麼將你的委託代幣分開分批,以及密切關注驗證人是很重要的,這是一種監控發生了什麼的激勵,從而保持網絡安全。1 MB 區塊大小只是這裡的一個例子,當然這也是動態的。但這裡選它的目的是為了證明Cosmos 能夠處理比比特幣多600 倍的信息,而不會浪費電力。
– Cosmos 是很多區(zone )的樞紐,這些區代表特定的區塊鏈。 –
好,所以Cosmos 在技術上考慮得很好,並且在某種程度上提高了垂直擴展性。這很棒,但是很多代幣都在這麼做,對吧?完全正確。有很多代幣在做這個。老實說,這並不是Cosmos 種了不起的東西。所以請係好安全帶,我們現在正在接近美味的正餐,準備舔手指吧。
Cosmos 也是一個多token 平台。Cosmos 中不僅有Atom(原子),這是Cosmos 的質押 token ,也有photon (光子),這是Cosmos 的手續費 token 。因此,一種代幣用於整個共識機制,另一種代幣用於支付交易。這些 Photon 沒有被質押,因此在交易所裡有很強的流動性。
此外,Photon 也是 Ethermint 網絡的原生token ,而 Ethermint 是在Tendermint 上託管的以太坊。和以太坊的功能相同,但使用如上所述的共識。這解決了可擴展性問題的垂直部分。由於Cosmos 並不打算成為其他生態系統的競爭對手,因此 Ethermint 的創建被稱為「hard spoon」 。這意味著所有ETH 持有者都能獲得Photon ,並能像使用以太坊一樣使用 Ethermint ,但手續費要少得多,而且它和Cosmos 網絡是相連的。
Cosmos 網絡?
實際上,Cosmos 把自己描述為區塊鏈的互聯網。這是因為在這個宇宙(Cosmos)中,每一區是通過中樞相連的。這些區可以是任何用Tendermint 創建的東西。Ethermint 顯然只是其中一個區。另一個區也可以是和比特幣掛鉤的區。這意味著你可以把真正的比特幣存進來換取Cosmos 中的比特幣token 。(藍狐筆記註:這就實現了去中心化的跨鏈代幣流通。)
一旦你有了這些token ,就可以把它們轉移到Cosmos 中樞,並通過交易換成其他的token ,比如Photon 或者任何其他可用的token 。另一個區也可能是一個錨定歐元的區,在這裡你可以將歐元存入銀行賬戶,換取一些Cosmos 中的歐元token 。現在你可以用這些歐元token 和比特幣token 進行交易,交易完成後,在比特幣掛鉤區中贖回真正的比特幣。然後,你的對手方會在歐元掛鉤區贖回歐元。你們兩個進行的是一次去中心化交易。
這在Cosmos 中是直接可行的嗎? 不,但是很容易建立一個與Cosmos 相連的區,允許去中心化交易。事實上,創建區並將它們通過中樞相連是Cosmos 的突出特徵。想像一下以太坊上有一個應用程式透過創建超過10% 的流量堵塞了網絡,這一切都是關於可愛的小貓(CryptoKitty)。
在Cosmos 中,開發者可以決定為這些可愛的小貓創建一個特定的區。如果小貓熱潮完全爆發了,即使那個區處理交易的速度不夠快,開發者也可以生成另一個小貓區,和第一個區並行運行。通過Cosmos 中樞,區之間的小貓可以以去中心化的方式交易。
我們在這篇文章裡聽到過垂直擴展;還有另一種方法,被稱為水平擴展。水平擴展是異步的,會使事情變得更加複雜,但它沒有垂直擴展的那些限制(頻寬和延遲… )。所有這些都意味著有可能建立中樞和區的樹形結構,為區塊鏈技術的極大擴展打開了大門。
許多人可能聽說過以太坊開發者正在開發的分片,這是不同的,分片會自動作業。對於Cosmos 的中樞和區,開發者必須坐下來手工構建。但分區的一大優勢是每個區都可以獨立構建。一個區可以有自己的經濟模型,私有區塊鏈也可以被連接起來。這已經表明了Cosmos 項目的精神。它不是像許多其他項目聲稱的那樣接管整個加密空間。
它只是把一切聯繫在一起。依靠單一區塊鏈以最好的方式解決所有問題是沒有未來的。未來將會有許多應用專屬的區塊鏈,以滿足其用戶和開發者的需求。Cosmos 希望將這些區塊鏈連接到現有的區塊鏈。Tendermint 希望給這些應用專屬的區塊鏈一個基底。
這就是為什麼Tendermint 和Cosmos 不能單獨分開看的原因。兩者都使另外一方更有價值。
– 可以有多個中樞—— 全部互聯 –
?相關報導?
這是一條「連接所有區塊鏈之鏈」的起點:Cosmos 主網上線
「三個村莊的比喻告訴你」:Polkadot 的對手真的是 Cosmos? 不,是以太坊
《BlockTempo動區動趨》LINE官方號開通囉~立即加入獲得第一手區塊鏈、加密貨幣新聞報導!