從2008年11月中本聰發表論文「Bitcoin:APeer-to-PeerElectronicCashSystem」算起,比特幣即將迎來第一個十周年。這十年中,比特幣與其背后的區塊鏈技術蓬勃發展,以去中心化技術之名,大有變革整個在線數字世界的氣勢和雄心。
不過,雄心歸雄心,正蓬勃發展的區塊鏈技術,尤其是公鏈領域,有一個瓶頸卻一直有待突破:以當今數字世界的規模和體量,任何一個在線系統,如果沒有一個大容量、高吞吐的基礎設施,就無法承載哪怕僅僅一個互聯網級別的應用。
很可惜,中本聰的論文中完全沒有考慮到這個問題,也許是走出這第一步實屬不易,他也沒想太多之后的事情,也許是這樣的一個高性能的設計,在徹底去中心化的系統中難度太大。總之,近10年過去了,為了提高區塊鏈系統的性能,前赴后繼出現了大把項目,但到今天為止,并沒有出現能夠承載互聯網級別應用的解決方案。
這是一個世界性的難題,全世界最聰明的學者、開發者都在嘗試解決這個問題。我曾在微軟工作多年,擔任微軟研究院主管研究員,很長一段時間專注于分布式系統方面的研究;離開微軟之后,我又在創新工場擔任負責區塊鏈和人工智能投資方向的執行董事。多年在分布式系統方面的研究心得,以及在區塊鏈投資領域評估多個公鏈項目的經驗,讓我深深明白,在徹底去中心化的系統中實現高性能設計,是一項難度極高、極具挑戰的工作。
我看到行業內存在大量對于區塊鏈公鏈性能瓶頸及解決方法的討論,有些充滿洞見,令人受益匪淺,但也有不少謬誤,更有很多為了自身項目宣傳而編造的似是而非的見解,頗有把討論引入歧途的風險。在和多位該行業頂尖的學者、開發人員、投資人多次深入交流之后,他們都鼓勵我把自己的看法分享出來。再三思索之后,我決定把自己對該話題的一些拙見記錄下來,這樣既可以讓自己的一些思考能夠沉淀,同時,也希望能和對該話題感興趣的更多同仁進行一些探討。
1不要只關注性能瓶頸,而忽略了容量瓶頸
先說一下我的一個結論:在當前以類金融為主流應用場景的情形下,區塊鏈系統最首要的性能瓶頸是區塊數據的廣播延遲造成的,本質上受限于互聯網的帶寬和通訊延遲,這一點直接制約了吞吐量(TPS)。只要是「ChainofBlocks」的系統,無論具體采用了什么共識算法,無論是工作量證明、權益證明、拜占庭容錯,還是委托權益證明,在出下一個區塊之前,都需要保證前一個區塊在全網有一定的同步率,從而約束了每個區塊不能太大,出塊頻率也不能太高,然后,這個問題無解。
使用虛幻 5 引擎開發 NEOWIZ 子公司公開區塊鏈游戲新作:金色財經報道,日前,NEOWIZ 表示,旗下子公司 Metarama 開啟了區塊鏈平臺 \"Metarama\" 的預告頁面。\"Metarama\" 平臺的核心藍圖,是構筑 NFT2.0 為基礎的管理方式,和高品質游戲相結合的區塊鏈生態系。公司表示,NFT2.0 比目前的 NFT 具備更廣闊的適用范圍和擴展能力。
\"Metarama\" 平臺將于今年上半年正式上線。屆時,會先推出兩款游戲。分別是,由 Metarama 開發中的 P&E(邊玩游戲邊賺錢)游戲《SIEGE ROYALE》和《ANI-FI LAND》。[2022/2/26 10:16:50]
請注意,這里說的區塊鏈系統特指「ChainofBlocks」的系統,其特征是要保證系統能最終收斂到一條單一的鏈表結構,并只有這條鏈上面的區塊才是被確認的,反例是「GraphofBlocks」系統,例如所采用的DAG結構IOTA。
假設物理網絡的帶寬和延遲可以被忽略,例如基于數據中心高速鏈路的EOS,系統第二個瓶頸是受限的賬簿容量,本質上受限于單臺全節點的內存容量,這一點直接制約了鏈上可以承載多少個用戶以及多少個DApp。無論具體采用了什么共識算法,只要交易驗證/執行過程隨時可能涉及到任何一個用戶,那么單臺全節點就必須隨時保持全網每一個用戶、每一個DApp相關的狀態在內存里面,以供交易驗證實時訪問。當前所有主流的「ChainofBlocks」的系統,包括比特幣區塊鏈、以太坊、EOS等,都有這個問題,并且同樣的,這個問題也是無解的。多級緩存的數據庫技術(例如RocksDB)可以稍微改善一下這個限制,使得只有活躍用戶受到內存限制,而總用戶基數受限于硬盤的容量。但是這并不從根本上解決問題。
「容量」這個問題的關注度遠遠少于吞吐量,原因很簡單:因為吞吐量這個短板還沒解決,所以容量問題被掩蓋住了。請記住,一旦吞吐量實現了大幅提升,容量問題馬上就會出現:在一個高吞吐的系統上,如果用戶量上不去,很可能高性能根本跑不滿。
一個典型的例子是EOS。當EOS以喪失去中心化特性為代價而解決了吞吐量問題之后,容量的問題馬上就凸顯出來了。然后,EOS把賬簿容量瓶頸這個問題包裝成了一個稀缺資源,并將其代幣化,成了EOSRAM虛擬幣。當然除了內存,單臺全節點CPU也會成為容量的瓶頸,所以也被代幣化,成了EOSCPU虛擬幣。不過,在類金融應用場景中,通常計算復雜度非常低,所以,內存會是主要瓶頸。
聲音 | HashCash:建立基于區塊鏈的石油供應鏈:美國區塊鏈公司HashCash Consultants宣布與一家大型石油公司合作,建立基于區塊鏈的石油供應鏈。他們將把其區塊鏈網絡HC Net供應給位于阿聯酋的合作伙伴公司,以通過DLT平臺幫助他們。(prweb)[2020/2/21]
另外,我的另外一個觀點是:共識算法其實幫不了解決性能和容量的瓶頸,試圖從標新立異的共識算法出發,提升「ChainofBlocks」系統性能的努力,基本上不會讓系統性能有實質上的大幅提升。總之,解決上面所提及的兩個瓶頸問題,需要的是分布式系統設計上的巧思妙想,這和共識算法相關,也和密碼學相關,但是本質的出發點不是共識算法和密碼學。
2性能瓶頸:一個出塊節點在做什么
首先出塊節點也是全節點,接受全網的已確認區塊以及未確認交易,并構造成鏈,不斷維護賬簿的最新狀態,然后抓緊機會試圖在鏈尾追加新的區塊。無論采用哪種共識算法,都會歷經以下幾個步驟:
-第一個步驟,根據賬簿的最新狀態,在未確認交易集合中選出若干驗證合法的交易,然后構造一個新的區塊;
-第二個步驟,為這個新的區塊,參與出塊的權力的競爭或者候選,在這個階段,大概率會因為賬簿狀態更新了(其他節點成功出塊了)而中斷,回到第一步;
-第三個步驟,獲得出塊的權力之后,向全網廣播這個新的區塊,更新賬簿狀態,回到第一步。
不同的共識算法,其核心差異在于如何完成其中的第二個步驟的出塊權的競爭或者候選。但是無論哪種共識算法,都有一個不可調和的性能矛盾,本質上由區塊數據的廣播延遲導致。這個矛盾使得如果每次出塊比較大(可以包含更多的交易),就必須有比較長的出塊間隔,以保障該區塊在下一次出塊之前,在全網被充分傳播。
如果傳播不充分,在PoW和PoS系統中,將表現為較高的分叉率,而在BFT系統中則表現為較高的失敗率。
2.1Proof-of-Work和Proof-of-Stake
PoW通過設定一個HashTarget,要求Hash值必須小于一個特定的值。而Hash值必須根據新區塊數據拼合一個Nonce數據計算而得。找到滿足HashTarget對應Nonce的任何一個節點,便獲得了出塊的權力。由于只能通過隨機窮舉的方式找Nonce,所以這個競爭就轉換成了計算Hash的算力的競爭。PoS是PoW的一個變種,引入了消耗CoinAge來增大HashTarget的機制,使得出塊權力的競爭可以部分地被數字貨幣持有的時間和數量所代替。
動態 | 上海證券報:商業銀行可利用區塊鏈技術平臺建立風險屏蔽機制:今日,上海證券報刊文《既要削平“融資高山”更要構建“制度平地”》,面對民企融資難、融資貴的問題,文中提到,在金融科技創新的同時,打通銀行與保險的連接渠道,進而構建常態化風險識別與共擔機制,能開拓出金融機構最大限度釋放資源配給量能的安全航道。既然民企信用風險程度及相應的抵押資產真偽程度判識難鑒別難,商業銀行完全可搭建或借用區塊鏈技術平臺,依托區塊鏈技術不可更改、可追蹤的獨特優勢建立具有去風險化與去信任化的KYC(認識你的客戶)風險屏蔽機制。[2018/12/12]
可以看到,PoW機制最大的好處是用一個簡潔的算法,實現了完全非許可的出塊權隨機指定,競爭節點之間完全不需要協同和通訊,可以輕松支持任意數量的出塊節點共同競爭,具有極佳的去中心特性。也正是由于這一點,這個算法導致了區塊廣播延遲和出塊間隔之間的矛盾。當出塊間隔較短時,一個新的區塊尚未充分全網廣播之前,就有另一個礦工在同樣的高度出了另一個新的區塊,即發生了所謂的分叉(Fork)。這種情況下,最終其中一個區塊會被拋棄掉(ophaned)。發生這種情況的概率不能太高,否則會顯著降低原為51%的算力攻擊基準(SelfishMining),極端情況甚至會導致分叉始終無法到達穩定收斂。
區塊廣播延遲主要由區塊大小和全網各個節點間的帶寬決定。當前的互聯網環境,大致需要10秒可以廣播到90%以上的節點。所以在比特幣網絡中,10分鐘左右的出塊間隔使得區塊分叉的概率極其低。2018年整個上半年,僅出現兩次分叉。而在以太坊網絡中,15秒左右的出塊間隔使得區塊分叉的概率始終保持在10%左右,即使其區塊遠小于比特幣的區塊。要注意一點,PoW的出塊間隔是統計意義上的,實際情況是出塊間隔時大時小,而統計期望是10分鐘。這個并不是全網算力波動造成的,而是因為搜索Nonce的過程是個隨機刺探過程(撞大運),所以很多礦池都給出了自身的運氣值曲線,(笑...)。
對于比特幣網絡來說,10分鐘的出塊間隔其實在現今的互聯網環境中是有很大保留的,要知道,畢竟這是在10年前提出的方案,這使得擴大區塊大小就可以實現簡單的擴容方案,但是由于區塊廣播延遲這一根本矛盾的存在,這種提升只在一定程度上有效。
動態 | 聯合國與塞拉利昂將合作開發基于區塊鏈的身份識別系統:據coindesk消息,聯合國資本發展基金(資發基金)、聯合國開發計劃署(UNDP)、塞拉利昂總統朱利葉斯·馬達·比奧(Julius Maada Bio)和非營利組織Kiva周四在聯合國大會第73屆會議上宣布,將共同啟動一個基于區塊鏈的身份識別系統。[2018/9/28]
另外,值得提一下GHOST協議。該協議給出了一個新的準則來判定分叉的時候,哪個叉是被接受的。其將中本聰最初提出的最長鏈原則,改成了包含算力最多的子樹。兩個準則在分叉概率很低的時候是完全等價的,但是當概率比較高的時候(比如ETH的10%分叉率),GHOST協議可以規避SelfishMining,提高安全性。但是無論采用GHOST協議與否,對公鏈的性能無實質幫助。
PoW帶來算力競爭,即所謂的挖礦,確實消耗了大量能源。不過這也為PoW系統發行的每一個幣奠定了一個基礎成本,使之價值有個底線。需要指出的是,PoW的算力和區塊鏈系統的性能沒有任何聯系,任何加速hash算法的軟件或者硬件都不會提高區塊鏈系統單位時間的吞吐量。這就是為什么比特幣區塊鏈的全網hash算力提高了萬億倍,但是其吞吐量一直是7TPS左右。
另外,任何宣稱節省挖礦能源的公開技術,都是不可能在實際上減少能源消耗的。因為投入挖礦的能源總量在一個個礦場建立的時候已經確定,當有更高能效的挖礦技術或者設備出現時,算力競爭將導致所有礦工都應用新的技術,最終哄抬了全網的挖礦難度罷了。所以實際的總能源消耗,在宏觀上,只和幣價、電價以及數字貨幣的投資信心相關,和挖礦效率無關。
2.2拜占庭容錯
拜占庭容錯類共識算法采用隨機算法確定每一次出塊的節點,根據賬簿上的數字貨幣地址,而不是IP地址。所有參與出塊候選的節點無須競爭。新的區塊將被委員會(一組驗證者)所有成員驗證并簽名(投票),然后廣播全網,繼而開始下一個出塊的流程。
與PoW不同的是,BFT出塊候選是一個協作的過程,期間至少涉及O(n^2)的通訊復雜度,而PoW在出塊競爭過程中無須任何通訊代價。基于BFT的協作過程將不會導致分叉,也不需要消耗稀缺資源(算力或者CoinAge),但是由于這個協作的過程涉及到相當多的數據通訊,所以這個過程無法在全網候選,驗證并簽名的過程無法在全網展開。這就是為什么BFT類算法一定會涉及到一個委員會的構建過程,并且驗證簽名只在一個小范圍里面發生,剩下的人相信他們就好了。最近出現的很多基于BFT的公鏈項目,比如Algorand,在如何安全公平的選出這個委員會方面做了很多工作,雖然這些工作對系統性能的提升沒有直接關系。
《區塊鏈金融應用白皮書》在京發布,列舉10個金融場景:4月2日,由京東金融研究院和工信部下屬中國信通院云計算和大數據所共同撰寫的《區塊鏈金融應用白皮書》(以下簡稱白皮書)在京正式發布。“區塊鏈不等于幣圈。技術是中性的,關鍵看應用的領域和場景。”京東金融研究院院長孟昭莉認為,“如果沒有真實的應用場景,區塊鏈技術將失去生命力。”而在金融場景中,區塊鏈技術不僅有廣泛的應用空間,而且已經有不少探索實踐。在白皮書所列舉的10個金融場景中,大都存在參與節點多、驗真成本高、交易流程長三類共同特性,并因此造成業務的效率低、信用風險較高等問題。區塊鏈的分布式記賬、不可篡改、內置合約等特性可以為金融業務中的痛點提供解決方案。[2018/4/2]
BFT類算法的投票通常是有權重的,以規避女巫攻擊(SybilAttack)。而這個權重多與參與者的權益相關,和PoS的精神類似,進而現在很多人將BFT的這類投票算法稱為了PoS算法。而事實上,BFT類共識算法和一開始提出的PoS算法(例如Peercoin)是本質不同的機制。
上面我們提到,不同的BFT類算法其具體選定出塊節點以及委員會成員的過程和系統的性能關系不大。和PoW/PoS類似,其吞吐性能同樣決定于每次出塊的大小,以及出塊的周期。在BFT系統中,如果想要允許每次出塊比較大,就需要出塊的周期也比較大,從而大概率保證新出的塊及其委員會的簽名數據在委員會內部完全傳播。如果這個傳播不充分,將可能導致委員會成員無法達成2/3以上的投票,進而使得委員會內部驗證并簽名過程超時,最終在本出塊的周期內出塊失敗。
理論上說,委員會的規模遠小于全網,BFT類算法中的廣播延遲會比同等規模的PoW/PoS網絡小。事實上也確實如此,但是基于Gossip協議的廣播延遲和網絡規模的對數成正比而不是線性,所以廣播延遲并沒有小很多。加之BFT類算法依賴一些額外的周期性全局同步等安全措施,使得實際效果中,BFT類算法并沒有比PoW/PoS系統有太多性能優勢。
2.3小結
PoW/PoS系統每個出塊周期需要充分傳播一個區塊(例如1MB),BFT類系統每個出塊周期也需要充分傳播一個區塊,加上所有委員會成員的簽名(例如128個成員節點,至少每人84*128B,總共1.3MB的樣子)。但是PoW/PoS系統的廣播范圍是全網(例如幾萬個節點),而BFT系統的范圍限于委員會成員,這一點使得后者充分傳播的時間較短一些。
不過,基于Gossip協議實現充分傳播的時間,和傳播的數據量呈線性關系,和傳播的節點數量呈對數關系,所以BFT在傳播時延上也沒有太大的優勢。結果就是,無論哪種算法,都有不可調和的區塊大小和出塊間隔之間的矛盾,從而無法大幅提升性能。
3.容量瓶頸:一個不出塊全節點在做什么
單鏈的「ChainofBlocks」的系統中,大致有三種角色的節點:出塊的全節點,不出塊的全節點和輕量節點。全節點無論出塊與否,都會驗證并接力廣播新的區塊和未確認交易,這里的廣播工作占據了主要的通訊量以及磁盤I/O的負荷,對于TPS只有十幾的以太坊(geth)來說,這個通訊量約為1.5Mbps。
為了可以實時完成對新區塊和未確認交易的驗證,所有用戶的賬簿以及所有智能合約狀態都需要駐留在內存中,這個占據了主要的內存開銷,當前規模的以太坊會占用將近4GB的內存。每一個全節點都會需要承擔這樣的一個負荷,如果要出塊(PoW的挖礦節點或者PoS的驗證節點)還需要做額外的事情。這些負荷的代價,換來的是安全的徹底去中心化,任何一個全節點不需要預先信任任何其他節點,任何全節點也沒有能力去欺騙其他全節點。
普通全節點的價值體現在兩個方面:接力廣播合法的數據和維護全網賬簿的最新狀態以供用戶或者輕量節點查詢。例如手機錢包這樣的輕量節點不驗證也不接力廣播區塊數據或者未確認交易,它依賴并信任預先設定好的一個或者多個全節點,通過這些全節點來獲取特定用戶的狀態,例如賬戶余額,以及發起轉賬交易。輕量節點自身完全沒有驗證信息真偽的能力,更像是區塊鏈世界里的一個終端而已。
對于單鏈的「ChainofBlocks」的系統,如果系統的吞吐量(TPS)提升100倍,需要150Mbps的通訊量;或者用戶規模都擴大100倍,需要400GB的內存,那么基本上大部分互聯網上的普通服務器都無法順利部署一個全節點了。全節點的參與門檻,是影響區塊鏈系統去中心化程度重要因素。如果全節點只能由專業礦場操作,普通人無法獨立部署一個全節點的話,那么整個系統就會退化成一個多地部署的中心化云服務了,而變得容易被攻擊,也容易被封禁。所以,這兩個瓶頸不僅僅對于出塊節點需要解決,對于普通全節點也需要解決。
4.出路
前面已經說到性能瓶頸和容量瓶頸,在現在單鏈的「ChainofBlocks」的系統中,很難有大的提升,尤其是容量瓶頸。這就是所謂的區塊鏈不可能三角的由來。縱觀計算機技術發展史,大容量高吞吐的設計范式,屢獲大規模成功的只有一個,橫向擴展(Scale-Out)。
舉個例子,GPU用了幾千個性能普通的Core一起并行工作,實現超越CPU計算性能幾個數量級的性能提升,而GPU所依賴的半導體技術并沒有和CPU芯片有什么本質的不同。再如,現今的在線云服務系統,是用幾千甚至上萬臺性能普通的服務器一起并行工作,來支持大容量高吞吐的在線服務。
我在這里不妨大膽設想:也許一個大容量高吞吐的區塊鏈系統會是類似的方案,即,讓成千上萬個同質的單鏈實例一起并行工作,切分全網的工作量,以實現整體上的大容量和高吞吐。
這樣的一個系統,可以在大幅提高TPS的同時,支持10億以上級別的用戶量,并且保持每一個參與到這個網絡的中的全節點僅有一個合理的負荷,讓大部分互聯網上的普通服務器都可以輕松部署一個全節點,共同參與網絡的維護和治理。
不過,在這樣一個徹底去中心化的設定下,如何一起并行工作,如何切分工作量,又如何保證每個單鏈實例的安全,都是極具挑戰的問題。這樣的系統似乎并不容易實現,但也絕非不可能實現。我先拋出這個想法,也歡迎所有有興趣的同仁共同思考,或批判,或貢獻聰明的設想。就這個想法,我也會繼續梳理,并繼續通過文字分享我的一些思考。歡迎大家通過我的公眾號「王嘉平」和知乎專欄「去中心化數字世界隨想」就這個話題展開更多討論。
免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。
本文來源于非小號媒體平臺:
王嘉平
現已在非小號資訊平臺發布10篇作品,
非小號開放平臺歡迎幣圈作者入駐
入駐指南:
/apply_guide/
本文網址:
/news/9558562.html
免責聲明:
1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
上一篇:
幣安為何推出第三條鏈?這對BNB意味著什么?
「暴走恭親王」龔鳴以現代計算機、密碼學與區塊鏈歷史上十幾位重要傳奇人物為線索,介紹了區塊鏈技術的演進之路.
1900/1/1 0:00:00加密貨幣的世界里,自動化做市DEX是DeFi樂高的有趣一環,但卻無法成為主流。原文標題:《自動化做市商DEX經濟學》撰文:潘超,MakerDAO中國區負責人來源:Moneyness研究院「如果說.
1900/1/1 0:00:00目前100000人已關注加入我們掃一掃下載全網最新數據報告 查看完整報告請閱讀全文 查看完整報告請閱讀全文 以上資料均從網絡公開資料收集整理而成.
1900/1/1 0:00:00CreamFinance雖然是Compound的分叉項目,但他們選擇與CompoundLabs團隊合作并提供CREAM代幣,且選擇兼容幣安智能鏈,以掙脫以太坊高手續費桎梏,提供較低的交易手續費.
1900/1/1 0:00:00今天的封面是《盛開的果園和白楊》,文森特·梵高這個位置,雨神提示還不急著出。看得出來,昨天大餅新高后很多人都挺開心的,當然也有不少人在迫切的問我,能不能加滿倉位,盡管部分人都已經7-8成倉位了.
1900/1/1 0:00:00近期Y3D社區用戶發現有人使用同名的Y3D代幣在uniswap上掛單交易,截止目前已獲利20余枚eth。Y3D社區提醒大家注意假幣攻擊,交易前一定確認Y3D合約地址和代幣總量.
1900/1/1 0:00:00