引言
比特幣、以太坊的擴(kuò)容爭(zhēng)議長(zhǎng)期以來(lái)一直都受到廣泛關(guān)注,社區(qū)內(nèi)也不斷提出各種解決方案來(lái)解決這一問(wèn)題。主流方案有區(qū)塊擴(kuò)容、隔離見(jiàn)證+閃電網(wǎng)絡(luò)、分片等,除此之外,多鏈架構(gòu)的Cosmos,提出一種新的擴(kuò)容思路。本文簡(jiǎn)單介紹了Cosmos,并和主流的幾種的擴(kuò)容方案做了對(duì)比分析。
Cosmos簡(jiǎn)介
官網(wǎng)的定義是分布式賬本的網(wǎng)絡(luò)。
A Network of Distributed Ledgers
白皮書(shū)一開(kāi)始提到了比特幣、以太坊、DApp、閃電網(wǎng)絡(luò)等等,巴拉巴拉一通它們的成績(jī),然后總結(jié)這些技術(shù)不行(白皮書(shū)指出的問(wèn)題主要是可擴(kuò)展性方面,Cosmos開(kāi)發(fā)者不看好現(xiàn)有的垂直分片技術(shù)),Cosmos能解決所有問(wèn)題。
Here we present Cosmos, a novel blockchain network architecture that addresses all of these problems.
核心概念有Hub、Zone及IBC:
Hub
Cosmos網(wǎng)絡(luò)里第一條鏈?zhǔn)荋ub,從名字和功能上都可以把它理解為Cosmos的中心鏈或者管理員鏈,所有其它區(qū)塊鏈的交易都會(huì)在Hub記錄,一條區(qū)塊鏈上的token可以通過(guò)Hub轉(zhuǎn)移到另一條區(qū)塊鏈。Hub是Cosmos網(wǎng)絡(luò)的核心,和其余的Zone是不平等的,從嚴(yán)格意義上講Cosmos網(wǎng)絡(luò)不是真正的分布式系統(tǒng),如果Hub發(fā)生了單點(diǎn)故障(當(dāng)然Hub本身是分布式的,發(fā)生問(wèn)題的機(jī)率很小),Cosmos網(wǎng)絡(luò)的很多特性會(huì)不可用。
關(guān)于這點(diǎn),白皮書(shū)中語(yǔ)焉不詳,大致就是Hub必須得到嚴(yán)格保護(hù)。
While each zone may be a Tendermint blockchain that is secured by as few as 4 (or even less if BFT consensus is not needed), the Hub must be secured by a globally decentralized set of validators that can withstand the most severe attack scenarios, such as a continental network partition or a nation-state sponsored attack.
Zone
Cosmos網(wǎng)絡(luò)里其余的鏈稱(chēng)為Zone,你有什么想法,自己做條鏈(Zone),你的地盤(pán)你做主。Cosmos為Zone提供了一個(gè)參考實(shí)現(xiàn)?;旧螩osmos開(kāi)發(fā)者的想法是他們來(lái)維護(hù)Hub,開(kāi)發(fā)者去做Zone,建立一個(gè)生態(tài)系統(tǒng)。
Zone 的設(shè)計(jì)思路是隔離應(yīng)用,推薦一Zone一應(yīng)用,一個(gè)Zone多個(gè)應(yīng)用當(dāng)然也是可以的。各個(gè)Zone自己玩,玩崩了也是自己崩,不會(huì)像以太坊一個(gè)爆款應(yīng)用就能拖垮整個(gè)網(wǎng)絡(luò)。只有Zone和Hub交互才會(huì)對(duì)網(wǎng)絡(luò)的中心節(jié)點(diǎn)造成壓力,跨Zone交換token正常情況下頻率較低,退一步說(shuō),即便Hub堵塞了,也不會(huì)影響各個(gè)Zone內(nèi)部的正常運(yùn)行,可以認(rèn)為Cosmos網(wǎng)絡(luò)是高可用的。
IBC
IBC是Zone和Hub間交互的協(xié)議,Hub不限制Zone的實(shí)現(xiàn),只要是通過(guò)IBC協(xié)議和Hub交互就是一個(gè)合法的Zone。因?yàn)橛蠭BC這個(gè)機(jī)制,除了按照Cosmos的規(guī)范實(shí)現(xiàn)一個(gè)Zone,現(xiàn)有的區(qū)塊鏈也可以通過(guò)適配器的方式接入Hub,只要背后的技術(shù)團(tuán)隊(duì)愿意,比特幣、以太坊等等都可以接進(jìn)來(lái)。
性能
性能方面,Cosmos宣稱(chēng)能在64個(gè)驗(yàn)證人(分布在五大洲的七個(gè)數(shù)據(jù)中心)的情況下達(dá)到每秒數(shù)千筆的交易。

Cosmos上線(xiàn)的第一年,驗(yàn)證人數(shù)量最多將設(shè)置為100,之后十年的增長(zhǎng)率將在13%,最終達(dá)到300位驗(yàn)證人。驗(yàn)證人數(shù)量增加,通信會(huì)更復(fù)雜,性能相應(yīng)地會(huì)降低,白皮書(shū)的應(yīng)對(duì)措施是通過(guò)增加內(nèi)存、帶寬、處理能力保證性能。
擴(kuò)容方案對(duì)比
區(qū)塊擴(kuò)容
區(qū)塊擴(kuò)容要從比特幣的區(qū)塊設(shè)計(jì)講起,大家都知道比特幣的交易上限大約為每秒7筆,這個(gè)每秒7筆是怎么算出來(lái)的呢。
首先,比特幣區(qū)塊結(jié)構(gòu)如下圖所示,可以看出其中大部分容量用于存儲(chǔ)交易信息。

所有的交易信息都存儲(chǔ)在區(qū)塊中且必須存儲(chǔ)在區(qū)塊中,否則不會(huì)被承認(rèn)。目前比特幣系統(tǒng)內(nèi)定義每一個(gè)區(qū)塊的大小是1M,每10分鐘產(chǎn)生一個(gè)這樣的區(qū)塊,一個(gè)基本的比特幣交易大小約為250Byte,通過(guò)計(jì)算即可得出平均每秒大約可以處理7筆交易(實(shí)際交易平均大小約為500Byte,每秒可以處理2-3筆交易)。
好比一列火車(chē),只有四千兩百個(gè)座位,火車(chē)的運(yùn)力大約是每秒運(yùn)送7個(gè)人。當(dāng)前的火車(chē)坐滿(mǎn)了,只能等10分鐘后的下一趟車(chē)。想提高運(yùn)力,火車(chē)頭后面多掛車(chē)廂唄。從技術(shù)人員的角度出發(fā),如果將比特幣類(lèi)比為業(yè)務(wù)系統(tǒng)中的數(shù)據(jù)庫(kù),隨著系統(tǒng)流量不斷增長(zhǎng),數(shù)據(jù)庫(kù)成為系統(tǒng)的瓶頸,這時(shí)怎么辦呢,最簡(jiǎn)單的做法就是升級(jí)數(shù)據(jù)庫(kù)主機(jī)。
對(duì)應(yīng)的擴(kuò)容方案就是增大比特幣區(qū)塊的容量,但就像火車(chē)頭不可能無(wú)限制加掛車(chē)廂、數(shù)據(jù)庫(kù)主機(jī)不可能無(wú)限制提升性能一樣,區(qū)塊容量也不可能無(wú)限制增大。
做一個(gè)估算,按照VISA在2015年的記錄,全年平均每秒2920筆交易,峰值每秒1.4萬(wàn)筆交易,按平均值去設(shè)計(jì)區(qū)塊容量,單個(gè)區(qū)塊為900M,一年數(shù)據(jù)量是47TB,無(wú)論是單個(gè)塊的處理能力、區(qū)塊的傳輸帶寬、還是全區(qū)塊的存儲(chǔ)容量,都不是普通人的電腦可以支撐的,違背了比特幣去中心化的初衷。
比特現(xiàn)金(BCH)是現(xiàn)實(shí)中的區(qū)塊擴(kuò)容的例子,它Fork了比特幣的代碼,去掉了對(duì)隔離見(jiàn)證的支持,將區(qū)塊的最大體積提升到了8M,可以簡(jiǎn)單理解為比特現(xiàn)金的系統(tǒng)容量相對(duì)比特幣提升了8倍。
區(qū)塊擴(kuò)容的優(yōu)點(diǎn)
- 方案簡(jiǎn)單,技術(shù)風(fēng)險(xiǎn)小
- 實(shí)施周期短(目前技術(shù)方案中唯一在生產(chǎn)環(huán)境中上線(xiàn))
區(qū)塊擴(kuò)容的缺點(diǎn)
- 擴(kuò)容效果不明顯
- 未來(lái)系統(tǒng)容量上升空間較低,幾乎不可能達(dá)到商用支付系統(tǒng)的規(guī)模
- 無(wú)限制的區(qū)塊擴(kuò)容會(huì)損害比特幣的去中心性
隔離見(jiàn)證+閃電網(wǎng)絡(luò)
比特幣另外一個(gè)擴(kuò)容方案是隔離見(jiàn)證+閃電網(wǎng)絡(luò)。所謂隔離見(jiàn)證,讓我們回到之前的比特幣區(qū)塊結(jié)構(gòu),比特幣區(qū)塊里含有兩種重要信息,一個(gè)是交易信息,另一個(gè)是見(jiàn)證信息或者叫簽名。交易信息和見(jiàn)證信息放在一起會(huì)有安全隱患,所以就有研究人員提出把腳本簽名信息從基本結(jié)構(gòu)里拿出來(lái),放在一個(gè)新的數(shù)據(jù)結(jié)構(gòu)當(dāng)中。做驗(yàn)證工作的節(jié)點(diǎn)和礦工也會(huì)驗(yàn)證這個(gè)新的數(shù)據(jù)結(jié)構(gòu)里的腳本簽名,以確保交易是有效的。隔離見(jiàn)證也要求增大比特幣的區(qū)塊容量,相應(yīng)地增加了比特幣的處理能力,雖然其出發(fā)點(diǎn)是為了安全性而不是擴(kuò)容,擴(kuò)容只是附加效果。
這個(gè)改動(dòng)可以比作給火車(chē)加掛行李車(chē)廂,原來(lái)車(chē)廂里的行李全部放到行李車(chē)廂里,行李架空出來(lái)也可以躺人,一趟列車(chē)可以運(yùn)送多一些的人。
隔離見(jiàn)證雖然沒(méi)有顯著提升比特幣的處理能力,但它所做的工作簡(jiǎn)化了閃電網(wǎng)絡(luò)的設(shè)計(jì),閃電網(wǎng)絡(luò)對(duì)比特幣交易性能的提升是顛覆性的。之前我們所提到比特幣每秒最多處理7筆交易,并不是說(shuō)假設(shè)全網(wǎng)只有你一個(gè)人發(fā)起比特幣交易,這筆交易會(huì)在一秒內(nèi)處理,理論上最快也要等待10分鐘才能處理完成(6 個(gè)塊的可信更會(huì)導(dǎo)致確認(rèn)1個(gè)小時(shí)的最終確認(rèn)時(shí)間)。就像平均來(lái)看火車(chē)的運(yùn)力是一秒運(yùn)送了7個(gè)人到達(dá)目的地,但實(shí)際上是一列火車(chē)上的4200人中的每一個(gè)人都要花費(fèi)10分鐘才能到達(dá)目的地。而閃電網(wǎng)絡(luò)可以將處理延遲縮短到幾分之一秒,每秒處理數(shù)萬(wàn)筆,更有研究結(jié)果宣稱(chēng)能達(dá)到毫秒級(jí)延遲,每秒處理能力上億筆,這種用戶(hù)體驗(yàn)完全可以秒殺現(xiàn)有的任何金融支付系統(tǒng)。
閃電網(wǎng)絡(luò)的設(shè)計(jì)思路就是把交易放到鏈外處理,避開(kāi)耗時(shí)耗力的交易確認(rèn)過(guò)程,簡(jiǎn)單來(lái)說(shuō)其實(shí)現(xiàn)要求參與交易的雙方之間存在一個(gè)支付通道(資金池)。雙方都預(yù)存一部分比特幣到支付通道里,之后每次交易,就對(duì)交易后的資金分配方案共同進(jìn)行確認(rèn),同時(shí)簽字作廢舊的版本。當(dāng)需要提現(xiàn)時(shí),將最終交易結(jié)果寫(xiě)到區(qū)塊鏈網(wǎng)絡(luò)中,最終確認(rèn)??梢钥吹?,只有在預(yù)存和提現(xiàn)時(shí)候才需要通過(guò)區(qū)塊鏈,交易時(shí)不會(huì)發(fā)生擁堵。預(yù)存的比特幣在n方間的流動(dòng)通過(guò)一種限時(shí)哈希密鑰的方式,就像大家互相能傳遞限定有效時(shí)間的鑰匙,這把鑰匙可以拿走自己在支付通道里的比特幣,現(xiàn)有計(jì)算機(jī)的處理能力對(duì)哈希密鑰的驗(yàn)證完全可以做到毫秒級(jí)。
拿業(yè)務(wù)系統(tǒng)中的數(shù)據(jù)庫(kù)做類(lèi)比,就像把數(shù)據(jù)庫(kù)中一部分高頻讀寫(xiě)的數(shù)據(jù),放到內(nèi)存數(shù)據(jù)庫(kù)或者CPU二級(jí)緩存里運(yùn)算,直到有必要時(shí)才真正寫(xiě)入數(shù)據(jù)庫(kù),業(yè)務(wù)處理能力得到指數(shù)級(jí)提升,同時(shí)數(shù)據(jù)庫(kù)的壓力大大降低。
另外閃電網(wǎng)絡(luò)還解決了小額比特幣交易手續(xù)費(fèi)的問(wèn)題,比特幣交易的手續(xù)費(fèi)是固定金額制,隨著全網(wǎng)比特幣算力的提升和比特幣價(jià)值的提高,交易的手續(xù)費(fèi)越來(lái)越高,買(mǎi)一杯咖啡需要的比特幣遠(yuǎn)遠(yuǎn)小于這筆交易所需的手續(xù)費(fèi)。閃電網(wǎng)絡(luò)僅在預(yù)存和提現(xiàn)時(shí)才需要繳納固定手續(xù)費(fèi),交易時(shí)按百分比收費(fèi)。
當(dāng)然閃電網(wǎng)絡(luò)也不是全是優(yōu)點(diǎn),閃電網(wǎng)絡(luò)需要部署智能合約到中介節(jié)點(diǎn),這些中介節(jié)點(diǎn)可能會(huì)失效或者下線(xiàn),這時(shí)交易的確認(rèn)可能需要幾小時(shí)、幾天甚至更久,所以閃電網(wǎng)絡(luò)對(duì)交易的金額上限有限制,首個(gè)版本的閃電網(wǎng)絡(luò)協(xié)議將支付上限設(shè)到了0.04294967296 BTC。
隔離見(jiàn)證+閃電網(wǎng)絡(luò)的優(yōu)點(diǎn)
- 降低了小額交易的手續(xù)費(fèi)
- 閃電網(wǎng)絡(luò)交易處理能力可以達(dá)到商用支付系統(tǒng)級(jí)別
- 閃電網(wǎng)絡(luò)內(nèi)的交易速度極快,甚至超過(guò)商用系統(tǒng)
隔離見(jiàn)證+閃電網(wǎng)絡(luò)的缺點(diǎn)
- 只適用于小額交易
- 沒(méi)有真正解決比特幣自身的容量問(wèn)題,比特幣鏈上交易容量仍然受限
- 閃電交易的交易不上鏈,有丟失資產(chǎn)的風(fēng)險(xiǎn)
- 閃電網(wǎng)絡(luò)的可靠性有待驗(yàn)證
分片
分片(Sharding)方案由以太坊創(chuàng)始人Vitalik提出,用以解決以太坊擁堵的現(xiàn)狀。
首先,與比特幣不同,因?yàn)橹悄芎霞s的運(yùn)行需要消耗算力資源亦即gas,限制以太坊鏈上處理能力的不是區(qū)塊大小,而是 gas 值上限。目前以太坊每個(gè)區(qū)塊 gas 值的限制約為 670 萬(wàn),根據(jù)每區(qū)塊大約容納 200 筆交易、平均出塊時(shí)間為 15 秒來(lái)計(jì)算,以太坊的理論交易處理速度可達(dá) 13 筆/秒。單純的提高gas值上限,會(huì)增加以太坊網(wǎng)絡(luò)被DoS攻擊的風(fēng)險(xiǎn),曾經(jīng)為了提高攻擊者作惡的成本,gas值上限一度降低到150萬(wàn)。
分片的思路是以太坊網(wǎng)絡(luò)以后會(huì)有主鏈和分片鏈,分片鏈上的交易處于自己獨(dú)立的空間中,分片驗(yàn)證人只需要驗(yàn)證他們所關(guān)注的分片,各分片鏈的交易彼此獨(dú)立,不會(huì)相互影響。為了將分片鏈加入到主鏈中,在主鏈上需要有一個(gè)叫做驗(yàn)證人管理員合約(VMC)的特殊合約。VMC將分片鏈的當(dāng)前塊的哈希作為種子,采樣出合格的校驗(yàn)塊 (Collation),若干個(gè)分片鏈上的校驗(yàn)塊最終組成一個(gè)在主鏈上的區(qū)塊,本質(zhì)上和現(xiàn)有協(xié)議中的區(qū)塊沒(méi)有區(qū)別,不需要主鏈做硬分叉;分片鏈并行運(yùn)行,提升了整個(gè)系統(tǒng)的處理能力;分片鏈的共識(shí)結(jié)果仍然需要在主鏈獲得更高層的公識(shí),確保了安全性。
這種設(shè)計(jì)還有利于未來(lái)的繼續(xù)擴(kuò)展,整個(gè)擴(kuò)展分為4個(gè)階段,目前處于第一階段,計(jì)劃劃分100個(gè)分片鏈,相應(yīng)的交易容量就大約擴(kuò)大了100倍,分片的數(shù)據(jù)在這個(gè)階段不能跨分片傳輸。Vitalik預(yù)計(jì)需要用2-5年的時(shí)間實(shí)施以太坊分片方案。
還是用火車(chē)來(lái)理解,現(xiàn)在一列火車(chē)不夠用了,我們就修100條完全并行的軌道,100列火車(chē)同時(shí)發(fā)車(chē)、同時(shí)達(dá)到,運(yùn)力增加至100倍。但是目前有點(diǎn)限制,不管這100列火車(chē)是空的、坐了一半人、坐滿(mǎn)了人,都必須同時(shí)發(fā)車(chē),而且不同火車(chē)上的人現(xiàn)在不允許串門(mén)。
從數(shù)據(jù)庫(kù)調(diào)優(yōu)的角度看,分片類(lèi)似于對(duì)數(shù)據(jù)庫(kù)進(jìn)行垂直分庫(kù),將業(yè)務(wù)彼此無(wú)關(guān)的表放在單獨(dú)的數(shù)據(jù)庫(kù)中,分庫(kù)后不同庫(kù)中的表無(wú)法進(jìn)行聯(lián)合查詢(xún)等操作,但是可以平攤壓力。
分片的優(yōu)點(diǎn)
- 無(wú)需提高gas值上限
- 能逐步擴(kuò)展到商用支付系統(tǒng)的處理能力
- 安全性高,所有交易都會(huì)記錄在主鏈上
分片的缺點(diǎn)
- 系統(tǒng)復(fù)雜度高,技術(shù)風(fēng)險(xiǎn)大
- 跨分片的通信暫時(shí)還未實(shí)現(xiàn)
- 實(shí)施周期長(zhǎng),2-5年的部署時(shí)間可能會(huì)讓以太坊錯(cuò)失發(fā)展良機(jī)
多鏈并行的Cosmos
Cosmos認(rèn)為未來(lái)的世界不可能由一個(gè)區(qū)塊鏈主導(dǎo),一定是多鏈并存,多幣并行的世界。把多鏈和多幣整合成一個(gè)生態(tài)系統(tǒng),就是Cosmos的理想。Cosmos的理念還有個(gè)獨(dú)特的地方,它認(rèn)為幣和鏈應(yīng)該是分離的,在Cosmos的實(shí)現(xiàn)里有個(gè)技術(shù)使得代幣可以跨區(qū)塊鏈進(jìn)行轉(zhuǎn)移。
與以太坊的分片不同,Cosmos里的Zone(區(qū)塊鏈)是完全獨(dú)立的,它們不需要采樣自己的交易提交給主鏈以完成更高層的共識(shí)(Cosmos里也不存在主鏈的概念),共識(shí)在Zone內(nèi)完成即可。每個(gè)Zone就像一個(gè)獨(dú)立的世界,所有的規(guī)則由Zone創(chuàng)建者制定。Hub僅負(fù)責(zé)記錄每個(gè)Zone的代幣總數(shù);完成代幣從一個(gè)Zone到另一個(gè)Zone的流動(dòng)。Hub更像一個(gè)中介者而不是管理員,它下放了共識(shí)的權(quán)力,換來(lái)了更好的擴(kuò)展性。

Cosmos的區(qū)塊鏈網(wǎng)絡(luò)就像一個(gè)火車(chē)網(wǎng)絡(luò),大家自己修軌道,只要能通往Hub火車(chē)站就加入了Cosmos聯(lián)運(yùn)網(wǎng)絡(luò),其中有高鐵、磁懸浮列車(chē),也有普通火車(chē)。各種火車(chē)在自己的軌道里自由運(yùn)行,不受其他火車(chē)影響,有的運(yùn)力高,有的運(yùn)力低,一條軌道堵塞了完全不影響其他軌道,通過(guò)Hub這個(gè)中心火車(chē)站乘客就能自由換乘其他列車(chē),稍微遺憾的是現(xiàn)在只有Hub這一個(gè)火車(chē)站。
從技術(shù)角度看,這種設(shè)計(jì)思路好比數(shù)據(jù)庫(kù)的水平分片(也叫水平分庫(kù)),將整體存儲(chǔ)在單個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù),分?jǐn)偟蕉鄠€(gè)表結(jié)構(gòu)與其相同的數(shù)據(jù)庫(kù)中,這樣每個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)量就會(huì)相對(duì)減少很多,并且可以部署在不同物理服務(wù)器上,理論上能夠?qū)崿F(xiàn)數(shù)據(jù)庫(kù)的無(wú)限橫向拓展。然后Cosmos還提供了一個(gè)中間件供數(shù)據(jù)庫(kù)間交換數(shù)據(jù)。
多鏈并行的優(yōu)點(diǎn)
- 設(shè)計(jì)優(yōu)雅,架構(gòu)簡(jiǎn)單
- 理論上可擴(kuò)展性最強(qiáng)
- 較好地平衡了區(qū)塊鏈的安全性、可擴(kuò)展性及性能
多鏈并行的缺點(diǎn)
- 極度依賴(lài)中心Hub,跨鏈交互有中心化的趨勢(shì)
- 尚未上線(xiàn),實(shí)際性能能否達(dá)到白皮書(shū)水平尚是未知數(shù)
后記
本文寫(xiě)作期間,Telegram的創(chuàng)始人Nikolai Durov發(fā)布了Telegram Open Network(TON)的白皮書(shū)。TON也采用了多鏈架構(gòu),一鏈一應(yīng)用,聲稱(chēng)最多支持 2 的 32 次方 種的區(qū)塊鏈,也支持區(qū)塊鏈上代幣的流動(dòng),考慮到Telegram背后的技術(shù)團(tuán)隊(duì)及1.6億既存用戶(hù),多鏈并行架構(gòu)未來(lái)可期。