我們相信針對特定應用進行優化才是L1 的未來,考慮到三難問題,沒有哪條鏈能達到一個萬能設計就符合所有應用場景的狀態,這個時候平衡取捨便是關鍵所在。
譯文:《以太坊 -> Solana -> Aptos:高性能競爭開始了》by The Anti-Ape
本文譯者:0xshush
主要結論:
我們提出了一個L1 設計權衡的第一性原理框架:高性能的三難困境。 (如上圖)
與以太坊相比,Solana 的激進的低冗餘設計既解釋了它的高性能,也解釋了它的低可靠性。
Aptos,一個擁有2 億美元全明星種子輪融資的新L1,準備挑戰Solana 在高性能L1 領域的壟斷地位。與Solana 相比,Aptos 增加了更多的可靠性,其代價是更高的節點硬件要求。
我們相信針對特定應用進行優化才是L1 的未來。考慮到三難問題,沒有哪條鏈能達到一個萬能設計就符合所有應用場景的狀態。在我們之前的跨鏈文章的基礎上,我們提出了一個“三個問題” 的問答手冊,供區塊鏈應用的開發者們考慮他們的技術選擇。
文章中會提及的項目包括:
Solana、Aptos、以太坊、StarkWare、zkSync、血清、Meteplex
第一部分:Solana 高性能的秘訣
這部分包括:
直到目前,Solana 作為唯一的一條高性能區塊鏈仍處於壟斷地位
Solana 的設計基因是激進地優化最理想情況下的網絡性能:並行運算、減少冗餘度和更高的出塊率。
是什麼讓Solana 與眾不同?
作為唯一接近Visa 65,000 TPS 容量的區塊鏈,Solana獲得了華爾街和矽谷的支持,以嘗試應用大規模的區塊鏈服務。
Solana 並沒有通過一些圖靈獎的魔法來實現TPS(與零知識證明不同,這是我們即將討論的另一個重要話題)。相反,Solana 在性能和可靠性之間做了一系列的設計權衡。我們將在第一部分討論Solana 的性能,在第二部分討論可靠性的成本。
設計選擇1:並行計算。
以太坊虛擬機(EVM)是單線程的——EVM 只能利用一個CPU 核心來按順序處理交易。由於單核產生的熱量隨著速度的提高而呈指數級增長,物理學限制了單核性能的上限是很低的。
解決方案是什麼?更多的核心! 八個2GHz 的核心比一個8GHz 的核心溫度要低很多,但也更強大。 2007 年,英特爾推出了雙核的奔騰處理器,從而結束了單核時代。今天的計算機消費者擁有的GPU 和CPU 有4 到4096 個核心。讓更多的核心合作得更好,而不是擁有更強大的單核,已經成為了十多年來半導體行業的研究重心。
為了實現原生多線程,Solana 必須放棄EVM 的兼容性。 Solana 的智能合約可以利用Nvidia GPU 的4096 個核心來並行地運行計算。
我們的觀點:在這個[EVM v.s Multi-thread]的二元選擇中,我們傾向於多線程而不是EVM 的兼容性。我們認為2027 年的DApp 卻只能使用2007 年的半導體技術是非常荒謬的。
有些人可能會指出EVM/Solidity 相關的開發者的護城河問題。但是開發者其實很容易轉換編程語言。今天的大多數Web 2 應用和開發人員使用的編程語言都是原生的多線程。我們認為未來的開發者會像當前高GAS 一樣對EVM 的神秘的單線程架構感到沮喪。 (另外,我們也不是EVM 兼容的rollups 方案的粉絲)。
設計選擇2:通過確定的領導節點輪換減少冗餘度
去中心化需要冗餘性。在谷歌這樣的中心化雲服務中,計算只發生一次——因為用戶相信谷歌是正確的。
在區塊鏈中,由於我們不能信任任何人,所有數據都需要由不同的節點進行計算和驗證。一個相同的計算所做的額外次數就是所謂的間接費用/ 冗餘度。為了量化冗餘,我們使用[Big-O 符号](https://en.wikipedia.org/wiki/Big_O_notation#:~:text=Big Onotation is a,a particular value or infinity.)(大O 符號,漸進符號),如[O(n^2), O(n), O(log n)],裡面的函數表示當他們擴展到更多節點時,網絡計算將變得多麼複雜。例如,隨著網絡的增長,O(n^3) 可能意味著比O(n^2) 大幾個數量級的冗餘度。
在比特幣、以太坊和其他許多簡單的PoS 鏈中,共識的冗餘度至少是O(n^2),與節點數量的平方成正比:每個區塊都必須傳輸、檢查和比較其他每個區塊的工作。
對於Solana,只有被指定的那個領導節點來生產下一個區塊。 (SeeGulf Stream, Leader Rotation。在此基礎上,Solana將區塊分割成很多小塊,然後只有一小部分節點驗證者來驗證每個小塊(See Turbine),而不是所有的節點都要發送和驗證所有的區塊。
Solana 的協議將Solana 的最佳情況下的冗餘度從O(n^2) 減少到O(log n),這是計算複雜性理論中最有效的可能。這個結果確實很了不起。考慮一個(過於簡化的)說明。
網絡A 和B 在其他方面是相同的,100 個節點有100k TPS。一個O(n^2) 網絡每增長10 倍的節點性能就會衰減100 倍。一個O(log n) 網絡每增長10 倍節點性能才會衰減~ 3 倍。在10 萬個節點時,兩個網絡的性能將相差30000 倍。
這種複雜性的降低也有意識形態上的意義。在這方面,我們認為Vitalik 對Solana 的批評有些誤導——Vitalik 認為Solana 因為硬件要求高而不夠去中心化。 Solana 4000 美元的硬件成本阻止了“每個用戶在自己的機器上運行Solana 節點”。這個成本是沒錯的。但從長遠來看,計算成本會越來越便宜,而且Solana 的複雜度降低的設計使它有可能擁有100 倍的節點,而不會使網絡變得難以忍受的緩慢。
其他的設計選擇:
支持者和批評者還就Solana 的其他一些技術特點進行了辯論。我們認為這些特點不那麼核心,所以我們概括性地討論:
3.1 投票交易算入了TPS
一些批評者指出Solana 通過將驗證者投票也算入了交易,從而人為的增加了TPS。投票確實被算入了交易,但這只是一個表面問題。也許Solana 應該重申一下它的TPS 是60,000(剔除投票交易),而不是65,000。
3.2 吞吐量—更快的出塊時間和更大的區塊
Vitalik和StarkWare都批評Solana 的性能改進有些懶惰,因為Solana 只是讓每個區塊更大,區塊時間更短,以更高的硬件要求為代價來容納更多的交易。簡單的數學會告訴你這並不是全部。
Solana 的最大區塊大小為10MB,是ETH 目標大小1MB.)的10 倍。
Solana 的出塊時間是0.4 秒,是以太坊12 秒的30 倍。
相比以太坊,以上兩者的組合給了Solana 大概300 倍的懶惰性能改進。
但實際上Solana 的TPS 比以太坊通常的TPS 要高3000 倍。這另外90% 的性能提升可以由我們討論過的Solana 的並行運算和降低冗餘性的設計來更好的解釋。
3.3 歷史證明(POH)
Solana 將POH 宣傳為其最大的創新。從長遠來看,歷史證明允許Solana 將區塊時間減少到極端的400ms / 區塊,儘管事實上物理網絡延遲往往大於400ms。這個功能的花哨名字是異步共識,更多細節見Multicoin 的文章。
設計選擇總結:Solana 的高性能秘訣
三個關鍵指標共同決定了區塊鏈的最大吞吐量:出塊率、並行計算和冗餘性。
冗餘度決定了總共需要多少數據和計算量,也就是說,總計算量= 有效計算+ 冗餘度;
並行計算允許節點計算的速度更快;
出塊率決定了一定時期內區塊鏈數據庫中可保存的數據量。
Solana 在這三個方面都做出了大膽的設計選擇:從O(n^2) 到O(log n) 冗餘;從1 核到4096 核並行,以及從5MB/min 到1500MB/min 的出塊速率。這些是Solana 的65,000TPS 背後的主要秘訣。在下一章中,我們將討論Solana 這些選擇的成本。
第二部分:Solana 選擇的成本:優先性能而非彈性
這部分包括:
Solana 激進的性能優化的DNA 使它比其他區塊鏈更容易發生故障。
我們提出了冗餘困境:鑑於有限的計算能力,L1 必須在性能和可靠性之間做出權衡。
冗餘困境是第3 部分中高性能三難問題的一個子集。
頻繁的網絡事故
在過去的一年裡,Solana 至少經歷了4 次重大網絡事故。 2021 年9 月停運事故,2021 年12 月降級事故,2022 年1 月降級事故,2022 年4 月停運事故。任何有興趣的利益相關者一定有很多問題:
是什麼導致了事故?
本質的原因是是什麼?一次性的系統BUG ?意外的攻擊?還是區塊鏈設計DNA 中的某些問題,我們只能緩解?
選擇最佳性能而不是可靠性
在第一部分中,我們討論了Solana 如何積極地優化其最佳情況下的性能。 “最佳情況” 是這裡的一個關鍵詞。當事情沒有完全按照理想模式發生時,Solana 就會失控。
設計成本1:當交易在邏輯上有順序時,激進的的並行計算就會退化。
NFT mint 和IEO 交易常常導致Solana 網絡中斷。原因是:這些交易無法在4096 個核心上同時進行。 Minting NFTs 時,不知道哪些已經被mint 了,這會導致重複和BUG。所有在同一個collection 的mint 交易必須按順序處理。一個直接含義就是,Solana 的65,000 TPS 並不意味著用戶可以在一秒鐘內鑄造6 個BAYC 集合:由於只依賴一個GPU 核心,Solana 的按順序處理能力可能更接近甚至低於以太坊,大約在10 到100 TPS 之間。
這就解釋了性能下跌的原因:NFT mint 時失控的交易量會使Metaplex 無法使用,但其他不依賴Metaplex 的應用(如Serum 訂單簿)仍然可以在其他4095 個核心之一上處理交易。
但更多的時候,性能降低變成了網絡中斷:等待Metaplex 的未處理的交易致使節點內存溢出——當內存溢出時,節點崩盤並完全離線。
核心權衡:通過使用4096 核心的GPU 而不是16 核CPU,Solana 犧牲了單核性能而支持激進的並行運算。通常情況下,當交易不相關時,網絡運行得很好,但一旦交易表現出不理想的模式,Solana 比高冗餘度的以太坊更容易崩盤。
設計成本2:當領導者崩盤時,決定性的領導者選擇會變得很難看
當Solana 接近崩盤時,負責當前的區塊領導節點往往是第一個崩盤的。 Solana 的低冗餘設計嚴重依賴領導結點是否在線– 其他節點都沒有與當前領導節點相同的交易數據或網絡角色。這意味著一旦領導節點離線,網絡的其他部分需要做大量的應急工作:同意跳過一個區塊,重新組織交易數據,並將丟失的交易數據轉發給下一個領導節點……
考慮以太坊網絡,它沒有領導節點,每個節點都有一份精確和重複的副本,這份副本中包含有將被放入一個區塊(mempool)的交易數據。如果任何以太坊節點離線,所有其他節點手頭仍有他們需要產生一個新區塊的所有內容。這就是冗餘的雙刃劍:在理想的情況下,冗餘導致了網絡的緩慢;但在壞的情況下,它可以防止重大事故。
讓我們用數字來說明。根據這篇論文,在領導者節點崩盤的情況下(正式稱為“級聯領導者故障cascading leader failure”),Solana 的緊急計算量開銷可以達到O(n^4)。一個O(n^2) 的網絡很慢,但可以使用,然而一個一下子需要O(n^4) 計算量的網絡就好比死了。這就是為什麼Solana 一旦進入O(n^4) 級聯領導故障模式,就難以自行恢復的主要原因。
這是一種特性,不是BUG
Solana 的基因是激進的以最佳性能為優先。這個原則在架構中無處不在,所以很難只改變一個地方而不改變其他一切。 (我們沒有討論這個問題,但為了說明相互依賴性,如果在CPU 而不是GPU 上運行,核心的PoH 算法將是不切實際的,而Solana 的PoH—最理想情況下進行性能優化的數據管理系統使其難以實現類似ETH 的mempool)。再次說明,這是一個權衡,不能兩全其美——要從根本上使Solana 更加穩定,需要創造更多的冗餘度,從而犧牲最理想情況下的性能。
即使是Solana 的支持者,也需要做好心理準備,網絡中斷和性能降低還會發生很多次,因為今天的Solana 網絡還遠遠沒有嘗試過所有可能的緩解措施。緩解措施是一個需要迭代的捉迷藏遊戲。有一天,Solana 實驗室的努力工作可能使99.99% 的網絡正常運行時間成為可能。但是,它從來都不意味著要達到100% 的網絡正常運行,今天的主網beta 版離99.99% 也還很遠。
第三部分:Aptos 加入了競爭和高性能的三難問題
這部分包括:
Aptos的設計選擇是在可靠性和性能之間的折衷,位於Solana 和Ethereum 之間
我們提出了高性能、可靠性和效率之間的高性能三難問題
對開發者來說,未來的趨勢是根據具體使用場景進行優化。我們提出了一個3 個問題的問答手冊來幫助開發者選擇基礎設施
在過往整整一年多的時間裡,Solana 仍然是高性能L1 細分市場裡唯一的名字。現在我們有了Aptos,由Facebook 的前Libra 團隊開發,並由a16z、Tiger、Multicoin 和FTX 投資。 Multicoin和FTX 明顯也是Solana 的重註投資者。 Aptos 最近成為頭條新聞,因為他們聲稱有16 萬的TPS,顯然將自己定位為Solana 的競爭對手。
這也是時我們為什麼花這麼多時間來剖析Solana 的原因:這是一個最好的角度來結合實際理解Aptos:
回顧第二部分,以太坊對網絡能夠正常運行的時間進行了優化:以太坊花費了大量的數據冗餘來為最壞的情況做準備,所以幾乎不可能用攻擊來使以太坊網絡中斷。而Solana 是為最理想情況下的性能進行了優化,在冗餘上花費較少,從而使網絡在極端情況下的可靠性降低。
在解決冗餘度困境時,Aptos 試圖從Solana 退一步。下面是它的一些關鍵設計選擇:
Aptos 設計選擇1:16 核服務器級CPU
這是Solana 的4096 個GPU 核心和以太坊的1 個CPU核心之間的一個中間地帶。在處理高度可並行的任務時,Aptos 可能不如Solana 快。 Aptos 的每個CPU 核心都比Solana 的GPU 核心性能高得多,所以在NFT mint 等邏輯上按順序交易的情況下,Aptos 可能比Solana 處理得更好。
Aptos 設計選擇2:最理想情況冗餘為O(n),最差情況冗餘為O(n^2)
相對於Solana,Aptos 試圖通過增加冗餘使其網絡更具彈性。 Aptos 沒有試圖達到Solana 的極端O(log n) 次線性冗餘度,而是設置為O(n) 的冗餘度。在每一輪共識中,Aptos 要求所有非領導者的節點同步額外的數據,以備當前領導者節點失敗時其他節點需要超越。 Aptos 也沒有嘗試對區塊進行分割和驗證,因為分割會在出錯的情況產生額外的工作量。這麼設計的結果是:當領導者節點確實失敗時,Aptos 的應急處理並沒有Solana 那麼混亂。
比較一下:Aptos 的最佳性能不如Solana,但Aptos 在最差情況下的表現更容易接受——O(n^2),而Solana 為O(n^4)。如果我們把這五個性能表現放在一起,它們剛好是一個漂亮的三明治,把Aptos(紫色)夾在Ethereum(藍色)和Solana(綠色)之間。
Aptos 設計選擇3:瘋狂的硬件要求
你們可能已經看到Aptos 聲稱有16 萬的TPS,並想知道為什麼我說其最理想情況下的性能不如Solana 好。
注意Aptos 的硬件要求:他們所有的測試都是在AWS EC2 實例上運行的,有16 核服務器級別的CPU。 Aptos還公開建議在谷歌云平台上運行他們的節點,而不是個人電腦。
16 萬這個數字是在大約100 個有權限的節點上進行的實驗室測試的結果——在更複雜的實際生產環境中,如果節點更多,TPS 肯定會更低。 Aptos 的內部測試也表明,隨著網絡擴展到更多節點,其性能將接近甚至低於Solana目前的65,000 TPS。
下面是對Aptos、Solana 和以太坊關鍵技術規格的快速總結,供參考:
把所有東西放在一起總結一下:高性能的三難問題
把問題擴展到冗餘困境,同時把Aptos 變態的硬件要求也考慮在內,我們提出了一個Vitalik 的區塊鏈可擴展性三難問題的翻版:高性能三難問題。
在這個三難問題中,三個不能同時滿足的符合第一性原則的特質如下:
可靠性:通過在冗餘度上花費更多的計算來保證網絡正常運行時間
性能:通過在冗餘上花費更少的計算來加強網絡的吞吐量
效率:提升可靠性和性能的唯一方法是獲取更多的計算資源來用於這兩方面
在以太坊、Solana、Aptos 三者中:
以太坊選擇了網絡正常運行時間和效率,所以它在冗餘度上花費了的一定的計算量,導致性能緩慢。
Solana選擇了性能和(相對)效率,所以它把有限的計算量都花在了最佳情況的性能上,較低的冗餘度導致可靠性受到了負面影響。
Aptos選擇了網絡正常運行時間和高性能,所以為了有足夠的計算來覆蓋這兩個方面,Aptos 不得不選擇基於服務器的節點,放棄了效率。
Aptos 的設計理念相當Web 2:強調對用戶的友好,而不是去中心化。早期的描述表明,Aptos 可能會整合一個帶有加密貨幣恢復功能的高級用戶賬戶系統。從任何角度看,Aptos 肯定不是最去中心化的區塊鏈。它並不以意識形態的純粹性為目標。來自a16z 和Tiger 的2 億種子輪投資者將一些真正的資金和資源放在這個有點逆向的願景背後。
這一切對投資者和開發者意味著什麼?使用場景優化。
No Maxis.(非最大主義者)
No Maxis.(非最大主義者)
No Maxis.(非最大主義者)
根據你的使用場景進行優化。
甚至AWS(亞馬遜雲服務)也為不同的使用場景提供了幾十種數據庫配置,因為沒有一個萬能的解決方案。區塊鍊是數據庫。
成為一個最大主義者可能有助於在快速增長的投機市場中通過承擔短期風險而獲利,但部落主義不利於真正的價值發現和建設。一個好的投資者和建設者應該對各方面的權衡持現實的態度,並真正理解你的用例,而不是沉溺於推銷、泡沫和公關話術中。
現在我們對未來會發展成什麼樣只有一個廣泛的輪廓。 Solana 和Aptos 都將經歷更多的錯誤,中斷,微調和補丁。 Solana 會再次癱瘓,Aptos 也會。但這並不改變它們作為解決有利潤的高性能L1 問題的頂級競爭者的地位。
對於開發者:至少需要知道三件事:
你的使用場景:什麼是至關重要的,什麼只是錦上添花。
你想使用的基礎設施的利弊權衡和基因是什麼樣的?
混合和匹配的成本和效益。跨鏈解決方案和風險,The Anti Ape 之前的文章。偉大的DApp 利用區塊鏈,糟糕的DApp 被他們使用的區塊鏈所消耗。
對於投資者來說:Aptos 將在2022 年發佈公共測試網和代幣。這意味著Solana 在高性能區塊鏈領域的壟斷很快就會結束。我們預計Solana 的代幣價格將經歷一些賣壓,因為投資者在高性能區塊鏈這個垂直領域有更多的選擇了。但現在說贏家還為時過早。
無論如何,Aptos 看起來是一個Solana 的有力挑戰者,因為它試圖平衡Solana 的長期可靠性和其他的一些權衡點。但我們還需要觀察,Aptos 團隊是否能很好地執行落地,以及他們是否能挑戰Solana 兩年的生態系統的領先優勢。