焦臻楨
近年來唱衰區(qū)塊鏈(尤其是公鏈)的聲音中,提得最多的是它的交易處理效率太差、TPS(每秒交易次數(shù))太低的問題,比如:“比特幣每秒只能處理個位數(shù)的交易,以太坊也不過20多筆每秒,甚至不具備支持一個普通規(guī)模應(yīng)用的能力,還想C位出道成為下一代分布式社會的底層平臺?”這類問題不僅區(qū)塊鏈唱衰者常掛嘴邊,也常常是國內(nèi)外區(qū)塊鏈團(tuán)隊在講述自己的工作的聚焦所在。然而,很多團(tuán)隊常在“研發(fā)”短短數(shù)月內(nèi)就號稱已經(jīng)研發(fā)出TPS高達(dá)十萬甚至百萬的區(qū)塊鏈底層系統(tǒng),噱頭十足,然而真真假假,頗難分辨。
為了更好理解這個有著持續(xù)熱度的問題,今天我們從技術(shù)視角出發(fā),講講目前能夠帶來TPS提升的“靠譜”方法和技術(shù)路線。希望在閱讀這篇文章后,大家再看到類似“百萬TPS”之類宣傳時,就能夠理解他們到底在講什么:
首先,區(qū)塊鏈有一個著名的“三難問題”,也常稱為“不可能三角”,即區(qū)塊鏈系統(tǒng)無法同時在可擴(kuò)展性(Scalability,國內(nèi)也常譯為高效性)、安全性(Security)和去中心化程度(Decentralization)這三項指標(biāo)上做到最優(yōu)。從另一個角度來說,那就是區(qū)塊鏈必須得在這三者之間做出一個優(yōu)化的權(quán)衡?!安豢赡苋恰睂^(qū)塊鏈的重要意義在于:完全拋開“三角”中的其他兩者而孤立地去談其中一者,那就根本不是區(qū)塊鏈。例如,支付寶TPS很高,但它是中心化的,而非區(qū)塊鏈所面對的“多方參與、共同記賬”的開放環(huán)境。再比如聯(lián)盟鏈(一種面向企業(yè)服務(wù)領(lǐng)域的區(qū)塊鏈方案),它就是一種TPS很高的區(qū)塊鏈,但它在安全和去中心化程度上都有一定的妥協(xié),僅能用于成員已知且可信的環(huán)境,而非區(qū)塊鏈公鏈所面對的開放成員(Open Membership)環(huán)境。因此,當(dāng)我們聽到別人提起高TPS的時候,首先要想一想,這個高TPS背后隱藏了什么,它究竟是否真的具有價值。
近年來,很多研究工作都圍繞如何在“不可能三角”上取得一個優(yōu)美權(quán)衡而努力,而這些努力大致可分為三個大類:第一類是從共識機(jī)制出發(fā),第二類是從區(qū)塊結(jié)構(gòu)出發(fā),第三類是從系統(tǒng)實現(xiàn)出發(fā)。
從共識機(jī)制出發(fā)是近年來最火熱的話題和路線
除了我們耳熟能詳?shù)墓ぷ髁孔C明(PoW)和權(quán)益證明(POS)之外,還出現(xiàn)了DPoS、Algorand、zk-SNARK、Stellar等,大概能列出數(shù)百種。雖然花樣繁多,但是我們可以把它們再細(xì)分為三個子類:
1. 中本聰原教旨主義者:這部分人以中本聰?shù)谋忍貛虐灼鵀槭ソ?jīng),最多也就是圍繞BIP的工作方向?qū)σ訮oW為核心的中本聰共識進(jìn)行小修小補,在這一派中,嘗試提升TPS的舉措包括調(diào)整區(qū)塊大?。ㄉ踔吝@樣的行為都會引發(fā)巨大爭議)等。這條戰(zhàn)線上往往以傳統(tǒng)的比特幣礦機(jī)礦場為主,雖然增加區(qū)塊大小會在互聯(lián)網(wǎng)上造成更多的傳輸延遲繼而增加分叉風(fēng)險,但由于礦場網(wǎng)絡(luò)的特殊性等原因,在實際中還是能夠獲得數(shù)倍的TPS提升(這一倍數(shù)與區(qū)塊增大倍數(shù)直接相關(guān))。
2. 在中本聰共識基礎(chǔ)上進(jìn)行較大創(chuàng)新的改良派:這部分人又可以分為兩類,一類堅信“計算即正義”,認(rèn)為只有PoW中的計算才是數(shù)字世界的真諦;另一類則務(wù)實地認(rèn)為唯有PoW經(jīng)歷過多年的考驗且?guī)缀鯖]有出現(xiàn)過大的問題,所以它仍然應(yīng)該是首選。不過在改良派中,普通認(rèn)為基于PoW的共識協(xié)議需要有大的創(chuàng)新才能與時俱進(jìn)。早期從網(wǎng)絡(luò)和分布式系統(tǒng)等角度對區(qū)塊鏈進(jìn)行改良的學(xué)術(shù)派多在這個方向上有所建樹,代表性工作包括Bitcoin-NG、Byzcoin和Bicomp等。這些方法一般對傳統(tǒng)中本聰共識過程有較大的改變,包括改變PoW的作用、改變區(qū)塊結(jié)構(gòu)、解耦區(qū)塊產(chǎn)生和交易打包過程等。然而,它們往往也會帶來新的問題,比如,Bitcoin-NG可以在PoW共識下達(dá)到很高的TPS,但卻會造成網(wǎng)絡(luò)中出現(xiàn)個別節(jié)點權(quán)力過大的問題。基于此,Bicomp提出一種雙層區(qū)塊結(jié)構(gòu),讓不同節(jié)點打包不同功能的區(qū)塊,各司其職,不能越權(quán),制約了網(wǎng)絡(luò)中霸權(quán)者的產(chǎn)生。除了以上代表性工作,在改良派中還有一部分工作顯得更為激進(jìn),體現(xiàn)在對區(qū)塊鏈的“鏈”式結(jié)構(gòu)都進(jìn)行了重構(gòu),提出諸如有向無環(huán)圖(DAG)等結(jié)構(gòu),代表工作有IOTA和Conflux等,詳細(xì)介紹參見本文的另一個大類“區(qū)塊結(jié)構(gòu)”中的內(nèi)容。該類型工作的TPS參差不齊、相差較大,從數(shù)百到數(shù)萬都有,TPS越高者在PoW安全性和去中心化程度上犧牲越大,這就或多或少違背了選擇PoW的初衷。此外,該類方法總體還會受限于PoW的計算耗時、區(qū)塊銜接設(shè)計與傳播時間、交易傳播時間等。
3. 完全拋棄中本聰共識的顛覆派:主要代表為舊派網(wǎng)紅PoS、DPoS,或新貴如zk-SNARK、Algorand等。最著名、也是最飽受爭議的代表性人物之一可能是EOS的提出人BM。PoS等共識完全拋棄了傳統(tǒng)“挖礦”的概念,在PoS的支持者看來:“礦工聽起來太土了,埋頭計算又辛苦又浪費資源,都商業(yè)社會了,金錢才是最大的正義”。PoS的理論依據(jù)是“掌握了系統(tǒng)中最多錢的人不會去做傷害系統(tǒng)的事情”。妥妥的資本主義!PoS共識無須挖礦且沒有繁重的哈希計算過程,可以非??焖俚禺a(chǎn)生區(qū)塊,因此其TPS方面的表現(xiàn)自然能夠高出PoW一大截。然而,實踐才是檢驗真理的唯一標(biāo)準(zhǔn),EOS等公鏈上線后曾爆出使用成本過高等問題,各種非議也是接連不斷。PoS體系尚未經(jīng)受過長時間且大范圍的考驗,不像PoW一樣已經(jīng)扛過了大批黑客一輪又一輪的攻擊。因此,很難下斷言說PoS是解決“不可能三角”的完美之道。而且,PoS的理論基礎(chǔ)必然會帶來資源分配的不均,并會隨著時間的推移不斷放大,產(chǎn)生更大的不公,這恰恰是犧牲了去中心化的一個表現(xiàn)。一些新的工作采用隨機(jī)選擇出塊者或驗證者的方式來代替“有錢說了算”,例如Algorand,但Algorand飽受爭議之處又在于它放棄了經(jīng)濟(jì)激勵,這又降低了網(wǎng)絡(luò)節(jié)點參與的熱情度。干活了不給錢,那還繼續(xù)留下來干活的很可能就會有越來越多的不良動機(jī)者。但不管怎樣,越來越多的新工作誕生在這一領(lǐng)域,連以太坊也在嚴(yán)肅思考向PoS遷移,并已基本確定了Casper協(xié)議。這一大類的方法往往計算耗時較少,且由于打包過程中沒有傳統(tǒng)中本聰共識的不確定性,區(qū)塊尺寸可以更大以容納更多交易。這個類型的工作以高TPS著稱,部分宣稱可達(dá)百萬。但考慮到打包節(jié)點的處理能力、其周圍網(wǎng)絡(luò)潛在的擁塞和延遲、打包節(jié)點遴選耗時等,真實的TPS很難達(dá)到對外宣稱的量級。此外,該類工作所經(jīng)歷的現(xiàn)實環(huán)境下的考驗仍不足以證明其安全性和可靠性,還需我們拭目以待。
從區(qū)塊結(jié)構(gòu)出發(fā),也是當(dāng)前的研究和實踐的熱點
區(qū)塊鏈,顧名思義,以鏈的形式串連區(qū)塊,這就是區(qū)塊鏈的基本結(jié)構(gòu)。然而,有些做法顛覆了這個結(jié)構(gòu),就是我們上文提到的DAG。DAG不是鏈,更像一個網(wǎng)。最著名的DAG結(jié)構(gòu)如IOTA,甚至連區(qū)塊都沒有,直接把海量的交易通過單向引用連結(jié)成了一張網(wǎng),如下圖所示。
DAG的出現(xiàn)來源于以下兩點思考:
一是在有限TPS的條件下,如何記錄盡可能多的數(shù)據(jù)?
二是如何解決傳統(tǒng)鏈?zhǔn)浇Y(jié)構(gòu)下PoW共識易分叉所帶來的隱患?
分叉問題是因為網(wǎng)絡(luò)規(guī)模過大時,不同節(jié)點可能同時產(chǎn)生不同的區(qū)塊并在周圍延續(xù)、形成不同的分支鏈。當(dāng)不同分支鏈相遇時,就必須面臨僅可選擇其一的窘境,而另一條會被直接丟棄,上面所有的交易也隨之消失。PoW區(qū)塊鏈的易分叉問題會帶來很多不良影響,包括潛在的自私挖礦攻擊、算力浪費,以及眾所周知的51%攻擊等。由此可見,鏈?zhǔn)浇Y(jié)構(gòu)存在一定頑疾,這也給了DAG一派立足的基礎(chǔ)。
采用DAG的方案在近段時間里大量涌現(xiàn),并常以區(qū)塊鏈3.0自詡,儼然已穩(wěn)居區(qū)塊鏈新一代接班人地位。然而,DAG也有其頑疾。首先是交易確認(rèn)時間:DAG的非鏈?zhǔn)浇Y(jié)構(gòu)犧牲了穩(wěn)定性和交易的固定時間序,交易或區(qū)塊的提交相對鏈?zhǔn)蕉愿鼮殡S意,因此更難被最終確認(rèn),會帶來很大的不穩(wěn)定性,而不能被最終確認(rèn)的交易,也就談不上有什么高的TPS。為解決這個問題,IOTA引入了協(xié)調(diào)器的角色,被協(xié)調(diào)器確認(rèn)的交易即是被確認(rèn)的交易。然而,協(xié)調(diào)器的出現(xiàn)背離了IOTA最初的理論基礎(chǔ),這個類中心化形態(tài)的存在,也讓IOTA團(tuán)隊在解釋“是否去中心”這個問題上動更多腦筋自圓其說了。與之相比,Conflux引入了一種類似于基準(zhǔn)鏈的設(shè)計來解決DAG的高動態(tài)問題,可以看成Conflux在鏈和DAG結(jié)構(gòu)之間進(jìn)行了融合,用鏈結(jié)構(gòu)來錨定DAG的時序。
然而,DAG還存在另一個大的問題:缺乏可行的激勵機(jī)制。雖然采用PoW,卻無法激勵礦工挖礦,甚至無法結(jié)算交易的手續(xù)費,這還是因為DAG結(jié)構(gòu)中寫入?yún)^(qū)塊過于隨意而導(dǎo)致的。
需要說明的是,正如我們上文提到的,嚴(yán)謹(jǐn)?shù)卣f,DAG類型的工作應(yīng)該歸入我們上文提到的中本聰共識改良派中進(jìn)行介紹。然而,對區(qū)塊結(jié)構(gòu)變化的探討并不僅限于DAG,一些團(tuán)隊也開始在這個方向上有了新的思考和嘗試。尤其是隨著區(qū)塊鏈在物聯(lián)網(wǎng)等場景的繼續(xù)深入,在鏈?zhǔn)浇Y(jié)構(gòu)或DAG結(jié)構(gòu)之外,還會有新的高效結(jié)構(gòu)來滿足更多的業(yè)務(wù)場景。因此,我們將其作為一個獨立的大類,并會在后續(xù)進(jìn)行更多介紹。
從系統(tǒng)實現(xiàn)的工程角度提升區(qū)塊鏈TPS
系統(tǒng)實現(xiàn)流派奉行“少談理論,多講算法,務(wù)求快速且實用”的理念。系統(tǒng)實現(xiàn)派可以在不改動現(xiàn)有共識機(jī)制的基礎(chǔ)上提高TPS,其做法也可細(xì)分三個子類。
1. 多鏈并行
古語有云,“三個臭皮匠頂個諸葛亮”。多鏈并行的做法顯然受到了這一思想的影響。一條鏈TPS低,同時運行多條鏈一起記賬總能提升TPS吧?然而,多鏈會帶來跨鏈的問題,隨著交易量的增加,跨鏈數(shù)據(jù)的互通可能十分頻繁,資金可能在多個鏈上流轉(zhuǎn),一個賬戶可能同時在多個鏈上產(chǎn)生交易,這些會帶來管理和效率的問題。多鏈并行的實現(xiàn)中,計算TPS往往是簡單累加,于是,商業(yè)宣傳想要多高的TPS,就并行多少條鏈。這樣做宣傳可行,實際實施和管理卻不現(xiàn)實。
2. 側(cè)鏈技術(shù)
側(cè)鏈技術(shù)是在用戶間臨時搭建交易鏈路,解決同一對用戶的多次頻繁交易給系統(tǒng)帶來的TPS壓力,其代表項目是閃電網(wǎng)絡(luò)。比如有兩個商戶一天內(nèi)多次互相交易,但是當(dāng)一天結(jié)束時,卻發(fā)現(xiàn)雙方你來我往了2000多次交易,但來往金額卻剛好相抵歸零,正是側(cè)鏈技術(shù)最適合運用的場景。側(cè)鏈讓雙方先在鏈下交易,一段時間后,將最終結(jié)算金額記錄在鏈上,減少直接作用在鏈上的交易數(shù)量。但是,側(cè)鏈的實現(xiàn)借助了中心化的方法,它的TPS數(shù)量不應(yīng)該計入?yún)^(qū)塊鏈的TPS。因此,側(cè)鏈技術(shù)也常被稱為鏈下擴(kuò)展。不過,很多項目在宣傳中故意無視這之間的差異,混淆大眾視聽。側(cè)鏈技術(shù)除了無法提升區(qū)塊鏈本身的TPS之外,另一個大問題是,中心化的管理方式不論安全還是效率都存在瓶頸。
3. 分片技術(shù)
分片技術(shù)是將數(shù)據(jù)處理分散在不同的系統(tǒng)分片內(nèi),也是目前較為熱門的技術(shù)之一。分片技術(shù)源于分布式數(shù)據(jù)存儲,與多鏈技術(shù)類似,屬于并行化解決方案。它與多鏈技術(shù)最大的區(qū)別在于,所有分片仍然基于一條鏈,因此,在不同的分片間高效協(xié)同以保持共識的有序性和正確性極具挑戰(zhàn)。分片條件下的TPS計算,應(yīng)以交易的終局狀態(tài)達(dá)成為準(zhǔn)。將各分片瞬時TPS累加進(jìn)行宣傳是常見做法,但缺乏實際意義。分片是目前的熱點方向,在前述工作如Bicomp中也采用了分片的架構(gòu)。未來我們也會對這一技術(shù)進(jìn)行更為詳細(xì)的介紹。
可以看到,提高TPS的技術(shù)路線各有利弊與挑戰(zhàn)。希望讀完本文后,當(dāng)我們再聽到諸如百萬TPS的宣傳時,能夠理性判斷個中虛實。
我們身邊常充斥著虛假的技術(shù)進(jìn)步和宣傳,總以為技術(shù)已一日千里。但吹噓出來的泡沫,就像沙灘上蓋不起高樓,不可能在實踐中展現(xiàn)出真正的進(jìn)步。于是,每當(dāng)現(xiàn)實不能滿足期待,大眾的信心就被消磨,大眾也會迅速從期待轉(zhuǎn)化為失望,繼而轉(zhuǎn)變?yōu)橥倭R。
但技術(shù)的發(fā)展一定需要嚴(yán)謹(jǐn)?shù)奶接?,更需要長時間、科學(xué)有序地實踐、演進(jìn)和完善。我們往往因為缺乏對技術(shù)本身的理解和對技術(shù)發(fā)展規(guī)律的必要尊重,對包括區(qū)塊鏈在內(nèi)的技術(shù)操之過急,對現(xiàn)狀有過高期待,這樣的心態(tài)無益于新興技術(shù)的發(fā)展。而從業(yè)者則更應(yīng)該在這樣的環(huán)境壓力下苦練內(nèi)功,務(wù)實創(chuàng)新,用實際行動為行業(yè)營造良性的環(huán)境和發(fā)展動能。