從2008年11月中本聰發表論文「Bitcoin:APeer-to-PeerElectronicCashSystem」算起,比特幣即將迎來第一個十周年。這十年中,比特幣與其背后的區塊鏈技術蓬勃發展,以去中心化技術之名,大有變革整個在線數字世界的氣勢和雄心。
不過,雄心歸雄心,正蓬勃發展的區塊鏈技術,尤其是公鏈領域,有一個瓶頸卻一直有待突破:以當今數字世界的規模和體量,任何一個在線系統,如果沒有一個大容量、高吞吐的基礎設施,就無法承載哪怕僅僅一個互聯網級別的應用。
很可惜,中本聰的論文中完全沒有考慮到這個問題,也許是走出這第一步實屬不易,他也沒想太多之后的事情,也許是這樣的一個高性能的設計,在徹底去中心化的系統中難度太大。總之,近10年過去了,為了提高區塊鏈系統的性能,前赴后繼出現了大把項目,但到今天為止,并沒有出現能夠承載互聯網級別應用的解決方案。
這是一個世界性的難題,全世界最聰明的學者、開發者都在嘗試解決這個問題。我曾在微軟工作多年,擔任微軟研究院主管研究員,很長一段時間專注于分布式系統方面的研究;離開微軟之后,我又在創新工場擔任負責區塊鏈和人工智能投資方向的執行董事。多年在分布式系統方面的研究心得,以及在區塊鏈投資領域評估多個公鏈項目的經驗,讓我深深明白,在徹底去中心化的系統中實現高性能設計,是一項難度極高、極具挑戰的工作。
我看到行業內存在大量對于區塊鏈公鏈性能瓶頸及解決方法的討論,有些充滿洞見,令人受益匪淺,但也有不少謬誤,更有很多為了自身項目宣傳而編造的似是而非的見解,頗有把討論引入歧途的風險。在和多位該行業頂尖的學者、開發人員、投資人多次深入交流之后,他們都鼓勵我把自己的看法分享出來。再三思索之后,我決定把自己對該話題的一些拙見記錄下來,這樣既可以讓自己的一些思考能夠沉淀,同時,也希望能和對該話題感興趣的更多同仁進行一些探討。
1不要只關注性能瓶頸,而忽略了容量瓶頸
先說一下我的一個結論:在當前以類金融為主流應用場景的情形下,區塊鏈系統最首要的性能瓶頸是區塊數據的廣播延遲造成的,本質上受限于互聯網的帶寬和通訊延遲,這一點直接制約了吞吐量(TPS)。只要是「ChainofBlocks」的系統,無論具體采用了什么共識算法,無論是工作量證明、權益證明、拜占庭容錯,還是委托權益證明,在出下一個區塊之前,都需要保證前一個區塊在全網有一定的同步率,從而約束了每個區塊不能太大,出塊頻率也不能太高,然后,這個問題無解。
谷燕西:區塊鏈技術使得數字資產開始進行全球流動:9月9日,區塊鏈和加密數字資產研究者谷燕西發表專欄文章《數字資產的全球流動已經開始》稱,區塊鏈技術的出現讓我們可以把各種類型的資產通證化,在二級市場中進行交易流通。基于區塊鏈技術的金融服務可以在全球范圍內獲得。在其之上可以采用數字貨幣進行直接的數字資產交易。它支持點對點之間的直接交易,也支持中心化的撮合交易。由于這些基本特點,目前的更多的資產種類可以通過通證化的方式在全球范圍內交易流通。資產的跨境交易流通機制遠優于現有的機制。而且這樣的流通方式現在全球范圍內已經開始。[2020/9/9]
請注意,這里說的區塊鏈系統特指「ChainofBlocks」的系統,其特征是要保證系統能最終收斂到一條單一的鏈表結構,并只有這條鏈上面的區塊才是被確認的,反例是「GraphofBlocks」系統,例如所采用的DAG結構IOTA。
假設物理網絡的帶寬和延遲可以被忽略,例如基于數據中心高速鏈路的EOS,系統第二個瓶頸是受限的賬簿容量,本質上受限于單臺全節點的內存容量,這一點直接制約了鏈上可以承載多少個用戶以及多少個DApp。無論具體采用了什么共識算法,只要交易驗證/執行過程隨時可能涉及到任何一個用戶,那么單臺全節點就必須隨時保持全網每一個用戶、每一個DApp相關的狀態在內存里面,以供交易驗證實時訪問。當前所有主流的「ChainofBlocks」的系統,包括比特幣區塊鏈、以太坊、EOS等,都有這個問題,并且同樣的,這個問題也是無解的。多級緩存的數據庫技術(例如RocksDB)可以稍微改善一下這個限制,使得只有活躍用戶受到內存限制,而總用戶基數受限于硬盤的容量。但是這并不從根本上解決問題。
「容量」這個問題的關注度遠遠少于吞吐量,原因很簡單:因為吞吐量這個短板還沒解決,所以容量問題被掩蓋住了。請記住,一旦吞吐量實現了大幅提升,容量問題馬上就會出現:在一個高吞吐的系統上,如果用戶量上不去,很可能高性能根本跑不滿。
一個典型的例子是EOS。當EOS以喪失去中心化特性為代價而解決了吞吐量問題之后,容量的問題馬上就凸顯出來了。然后,EOS把賬簿容量瓶頸這個問題包裝成了一個稀缺資源,并將其代幣化,成了EOSRAM虛擬幣。當然除了內存,單臺全節點CPU也會成為容量的瓶頸,所以也被代幣化,成了EOSCPU虛擬幣。不過,在類金融應用場景中,通常計算復雜度非常低,所以,內存會是主要瓶頸。
中國科學院計算所開設區塊鏈實驗室保研項目:金色財經報道,中科院計算所宣布將于今年7月13至18日開設區塊鏈實驗室暑期班活動進行報考,報名截止日期為7月11日。根據官方介紹,中國科學院計算技術研究所區塊鏈實驗室先后承擔了科技部重點研發計劃、國家自然科學基金、國家電網科技項目、北京市科委科技計劃定向課題、中科院計算所創新課題等一系列區塊鏈相關項目。[2020/6/28]
另外,我的另外一個觀點是:共識算法其實幫不了解決性能和容量的瓶頸,試圖從標新立異的共識算法出發,提升「ChainofBlocks」系統性能的努力,基本上不會讓系統性能有實質上的大幅提升。總之,解決上面所提及的兩個瓶頸問題,需要的是分布式系統設計上的巧思妙想,這和共識算法相關,也和密碼學相關,但是本質的出發點不是共識算法和密碼學。
2性能瓶頸:一個出塊節點在做什么
首先出塊節點也是全節點,接受全網的已確認區塊以及未確認交易,并構造成鏈,不斷維護賬簿的最新狀態,然后抓緊機會試圖在鏈尾追加新的區塊。無論采用哪種共識算法,都會歷經以下幾個步驟:
-第一個步驟,根據賬簿的最新狀態,在未確認交易集合中選出若干驗證合法的交易,然后構造一個新的區塊;
-第二個步驟,為這個新的區塊,參與出塊的權力的競爭或者候選,在這個階段,大概率會因為賬簿狀態更新了(其他節點成功出塊了)而中斷,回到第一步;
-第三個步驟,獲得出塊的權力之后,向全網廣播這個新的區塊,更新賬簿狀態,回到第一步。
不同的共識算法,其核心差異在于如何完成其中的第二個步驟的出塊權的競爭或者候選。但是無論哪種共識算法,都有一個不可調和的性能矛盾,本質上由區塊數據的廣播延遲導致。這個矛盾使得如果每次出塊比較大(可以包含更多的交易),就必須有比較長的出塊間隔,以保障該區塊在下一次出塊之前,在全網被充分傳播。
如果傳播不充分,在PoW和PoS系統中,將表現為較高的分叉率,而在BFT系統中則表現為較高的失敗率。
2.1Proof-of-Work和Proof-of-Stake
陳雷鳴:區塊鏈未來會在生產生活整個過程越來越重要:中國金屬材料流通協會副會長兼秘書長陳雷鳴最近接受采訪時表示,實際上區塊鏈未來會在生產、生活整個過程會越來越重要,包括就是我們是個人的征信建設根本都離不開的。區塊鏈的本質是一種分布式記賬,具有不可篡改和可追溯性。
比如說,中國經濟未來高質量發展也好,包括鋼鐵行業好,包括物流,它每走一步都會有個痕跡記錄,這個痕跡是誰都改變不了的。這才有利于這個打造鏈條,或者高質量發展,改變過去的隨意化。一個社會也好,一個行業也好,一個企業也好,包括個人,誠信是第一位,過去很多時候因為假冒偽劣,亂七八糟,導致整個市場環境不好,未來整體要營造好的環境,區塊鏈就是必須要用的技術。(現代物流報)[2020/6/3]
PoW通過設定一個HashTarget,要求Hash值必須小于一個特定的值。而Hash值必須根據新區塊數據拼合一個Nonce數據計算而得。找到滿足HashTarget對應Nonce的任何一個節點,便獲得了出塊的權力。由于只能通過隨機窮舉的方式找Nonce,所以這個競爭就轉換成了計算Hash的算力的競爭。PoS是PoW的一個變種,引入了消耗CoinAge來增大HashTarget的機制,使得出塊權力的競爭可以部分地被數字貨幣持有的時間和數量所代替。
可以看到,PoW機制最大的好處是用一個簡潔的算法,實現了完全非許可的出塊權隨機指定,競爭節點之間完全不需要協同和通訊,可以輕松支持任意數量的出塊節點共同競爭,具有極佳的去中心特性。也正是由于這一點,這個算法導致了區塊廣播延遲和出塊間隔之間的矛盾。當出塊間隔較短時,一個新的區塊尚未充分全網廣播之前,就有另一個礦工在同樣的高度出了另一個新的區塊,即發生了所謂的分叉(Fork)。這種情況下,最終其中一個區塊會被拋棄掉(ophaned)。發生這種情況的概率不能太高,否則會顯著降低原為51%的算力攻擊基準(SelfishMining),極端情況甚至會導致分叉始終無法到達穩定收斂。
區塊廣播延遲主要由區塊大小和全網各個節點間的帶寬決定。當前的互聯網環境,大致需要10秒可以廣播到90%以上的節點。所以在比特幣網絡中,10分鐘左右的出塊間隔使得區塊分叉的概率極其低。2018年整個上半年,僅出現兩次分叉。而在以太坊網絡中,15秒左右的出塊間隔使得區塊分叉的概率始終保持在10%左右,即使其區塊遠小于比特幣的區塊。要注意一點,PoW的出塊間隔是統計意義上的,實際情況是出塊間隔時大時小,而統計期望是10分鐘。這個并不是全網算力波動造成的,而是因為搜索Nonce的過程是個隨機刺探過程(撞大運),所以很多礦池都給出了自身的運氣值曲線,(笑...)。
信通院文章:區塊鏈基礎設施面臨復雜局面 需對其進行全面安全評估:《信息通信技術與政策》2020年第2期刊登文章《區塊鏈基礎設施安全風險及評估探索》。文中指出,基于區塊鏈基礎設施所面臨的傳統和新技術安全風險相融合的復雜安全局面,對其進行針對性的全面安全評估可助力應對和識別區塊鏈基礎設施系統存在的安全風險,提升區塊鏈基礎設施安全水平,保障其上承載的區塊鏈應用乃至整個區塊鏈生態安全,對推動區塊鏈健康高質量發展具有重大意義。[2020/4/2]
對于比特幣網絡來說,10分鐘的出塊間隔其實在現今的互聯網環境中是有很大保留的,要知道,畢竟這是在10年前提出的方案,這使得擴大區塊大小就可以實現簡單的擴容方案,但是由于區塊廣播延遲這一根本矛盾的存在,這種提升只在一定程度上有效。
另外,值得提一下GHOST協議。該協議給出了一個新的準則來判定分叉的時候,哪個叉是被接受的。其將中本聰最初提出的最長鏈原則,改成了包含算力最多的子樹。兩個準則在分叉概率很低的時候是完全等價的,但是當概率比較高的時候(比如ETH的10%分叉率),GHOST協議可以規避SelfishMining,提高安全性。但是無論采用GHOST協議與否,對公鏈的性能無實質幫助。
PoW帶來算力競爭,即所謂的挖礦,確實消耗了大量能源。不過這也為PoW系統發行的每一個幣奠定了一個基礎成本,使之價值有個底線。需要指出的是,PoW的算力和區塊鏈系統的性能沒有任何聯系,任何加速hash算法的軟件或者硬件都不會提高區塊鏈系統單位時間的吞吐量。這就是為什么比特幣區塊鏈的全網hash算力提高了萬億倍,但是其吞吐量一直是7TPS左右。
另外,任何宣稱節省挖礦能源的公開技術,都是不可能在實際上減少能源消耗的。因為投入挖礦的能源總量在一個個礦場建立的時候已經確定,當有更高能效的挖礦技術或者設備出現時,算力競爭將導致所有礦工都應用新的技術,最終哄抬了全網的挖礦難度罷了。所以實際的總能源消耗,在宏觀上,只和幣價、電價以及數字貨幣的投資信心相關,和挖礦效率無關。
2.2拜占庭容錯
拜占庭容錯類共識算法采用隨機算法確定每一次出塊的節點,根據賬簿上的數字貨幣地址,而不是IP地址。所有參與出塊候選的節點無須競爭。新的區塊將被委員會(一組驗證者)所有成員驗證并簽名(投票),然后廣播全網,繼而開始下一個出塊的流程。
聲音 | OK區塊鏈工程院Shine JIANG:OK公鏈“出塊”實現高效無分叉:OK區塊鏈工程院技術負責人Shine JIANG在北大演講時,介紹了OK公鏈(OKChain)實現其高性能和可擴展性的解決方案。Shine JIANG表示,OKChain在滿足安全的前提下,創新性提出了雙鏈結構的狀態分片和基于BLS多簽的改進版PBFT共識,可以實現高效無分叉的出塊,極大提升了公鏈的性能和可擴展性。他進一步指出,當前業界在擴展性方面提出的很多方案,實際并未改善主鏈性能,比如二層擴容,一旦出現需要大量鏈上確認的場景,就會出現堵塞。另外DAG(有向無環圖)雖提升了交易性能,但存在一定的安全性和可實現性問[2018/11/30]
與PoW不同的是,BFT出塊候選是一個協作的過程,期間至少涉及O(n^2)的通訊復雜度,而PoW在出塊競爭過程中無須任何通訊代價。基于BFT的協作過程將不會導致分叉,也不需要消耗稀缺資源(算力或者CoinAge),但是由于這個協作的過程涉及到相當多的數據通訊,所以這個過程無法在全網候選,驗證并簽名的過程無法在全網展開。這就是為什么BFT類算法一定會涉及到一個委員會的構建過程,并且驗證簽名只在一個小范圍里面發生,剩下的人相信他們就好了。最近出現的很多基于BFT的公鏈項目,比如Algorand,在如何安全公平的選出這個委員會方面做了很多工作,雖然這些工作對系統性能的提升沒有直接關系。
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意味著什么?
譯文出自:登鏈翻譯計劃 譯者:Tiny熊 序言:先閱讀一下以太坊虛擬機,可能會有所幫助,在本文中,我會跳過基礎知識直接研究。在傳統編程中,應用程序經常使用日志來捕獲和描述特定時刻的情況.
1900/1/1 0:00:00DOGE3L為DOGE多倍做多ETF產品,DOGE3S為DOGE多倍做空ETF產品,漲跌幅為DOGE市場的多倍.
1900/1/1 0:00:00目前100000人已關注加入我們掃一掃下載全網最新數據報告 查看完整報告請閱讀全文 “我的社區有一個神秘的鄰居,哪里有需要哪里就有他,而且他知道小區所有的秘密.
1900/1/1 0:00:00加密貨幣行業是一個資產選擇過剩、波動過剩、交易平臺過剩、信息過剩等多重「過剩陷阱」疊加的行業,所以行業周期被快速壓縮.
1900/1/1 0:00:00區塊鏈本質論 區塊鏈被大家關注件好事情,但非常不希望看到各種區塊鏈項目盲目上馬,造成各種社會資源的浪費.
1900/1/1 0:00:00Althea是Cosmos生態系統中為數不多將物理層去中心化的項目。 撰文:小毛哥 互聯網是現代最重要的工具之一,對生活在城市里的大部分人來說,互聯網觸手可及,但是獲得高質量以及能夠負擔得起的寬.
1900/1/1 0:00:00