如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

多鏈現在已成為現實。以太坊缺乏可擴展性導致大規模遷移到新一代 L1。這些 L1 中的大多數使用 EVM(以太坊虛擬機),這使得它們與以太坊錢包和開發工具兼容。但是 Solana 已經從頭開始完全重建了它的堆棧。 Solana 聲稱是現有最快的區塊鏈。所以它引出了一個問題:Solana 比 EVM 鏈快多少?

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

L1 區塊鏈的 TVL 增長,圖片來源:The Block

首先,我們需要就如何衡量性能達成一致。自古以來,新的區塊鏈就一直在宣稱它們的性能比以太坊高出多少。這是一種老調常談。你會看到大量的數字和匆忙組合的圖表,比較自我報告的 TPS(每秒交易量)。不幸的是,這些 TPS 數字通常來自他們自己的營銷材料,而這些材料幾乎都是廢話。

L1 本身發布的大多數基準測試都測量簡單價值轉移的 TPS——即,將幣從一個賬戶轉移到另一個賬戶。簡單的轉賬非常便宜,因此會產生龐大的數字,每個人都喜歡龐大的數字。但實際上沒有區塊鏈在這樣的傳輸上遇到瓶頸,而且這種活動並不能反映現實世界的使用模式。此外,其中許多數字是在開發網絡或測試網絡上生成的,而不是在主網上生成的。我們不關心某人的軟件抽象地可以做什麼:我們關心當前主網上的可能性。

實際上,沒有一種統一的方法來對 TPS 進行基準測試。基準測試中經常出現這種情況。這是一個混亂而令人擔憂的領域,充滿了誤導性營銷、過度擬合/“應試教學”和作弊。

好的。那麼我們應該如何實際測量 L1 性能呢?

這是一個棘手的問題,因為性能有多個維度。

首先,性能始終是針對去中心化的一個妥協。與主網環境相比,高度中心化的測試網和開發網可以產生難以置信的數字。許多主網在去中心化方面偷工減料,這擠壓了額外的性能。

但是,假設我們想忽略去中心化,只關注性能。好吧,眾所周知,對區塊鏈性能進行基準測試非常困難,因為大多數新鏈的數據可見性都很差。

7 年來,以太坊的性能得到了高度的研究和很好的理解。但是當你開始探索更新的鏈時,它們中的大多數工具都少得多,可觀察性差,而且還在不斷發展。當您閱讀本文時,這些基準可能已經過時了。

此外,基準測試總是隨意的,並且充滿了陷阱。你能做的最好的就是選擇一個衡量有價值的東西的基準,然後儘可能仔細地確定你的結果。這就是我們將在這裡嘗試做的事情。

但是我們所說的性能是什麼意思呢? 性能有兩個方面:吞吐量和延遲。

您可以將區塊鏈性能可視化,例如流過管道的水。 交易就是水——你希望大量交易同時流過管道。 但是管道的長度決定了它的延遲——如果一個交易需要很長時間才能得到確認,即使很多交易可以一次得到確認,那也是不理想的。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

延遲可以細分為區塊時間(區塊間隔的時間)和最終確定時間(區塊肯定不會被回滾的時間)。 出塊時間和完成時間很容易衡量。

但是要實際測量吞吐量,您需要一個標準的測量單位。 什麼的吞吐量?

我們沒有使用代幣轉移,而是查看了以太坊上最耗gas的產品之一:Uniswap V2,並將其變成了一個非常簡單的基準。 如果你用 Uniswap V2 風格的交易填滿了整個區塊,每秒有多少筆交易可以清算?

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

我們選擇這個基準是因為 1)它簡單且易於測量,2)每個區塊鏈都有一個 Uniswap V2 風格的 AMM 在生產中,3)它是常見的智能合約使用模式的典型。

對於大多數具有gas模型的區塊鏈,這種粗略的練習應該很簡單。首先,找到區塊gas限制和出塊時間,推導出鏈的gas/sec吞吐量;接下來,找到一個 Uniswap v2 風格的 AMM 並選擇一筆 SwapETHforTokens 等效交易;最後,將第一個數字除以第二個數字,得出如果它的區塊充滿相同的 AMM 交易,它將達到多少 tx/sec。

注意:這不是一個完美的基準!它是特殊的,它不考慮可并行交易(因為 Uniswap 在同一個池上的交易必須是線性化的),並且它不能代表每種使用模式。但智能合約的使用始終是冪律分佈的,並且最常用的 Dapps 往往是 AMM,因此在一組基準測試中,我們認為這有助於全面了解性能。

因此,事不宜遲,讓我們順着列表往下看。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

Uniswap v2 每秒交易數量:平均 9.19,最大 18.38(由於 EIP-1559)

平均出塊時間:13.2 秒(PoW,因此區塊是在Poisson過程中隨機挖掘的)

最終確定時間:66 秒(大約,ETH 區塊不是真正的最終確定)

假設和方法:在 1500 萬 gas 目標下,即以太坊與 EIP-1559 達到平衡時,以太坊每秒可以進行 9.19 次交易;在 3000萬的 gas 限制下,它可以實現每秒 18.38 次交易(但如果保持在這裡,費用會成倍增加)。我們將此swapExactETHForTokens 交易用作具有代表性的鏈上一跳交易。假設區塊生產者可以用 Uniswap 交易完美地填充 1500 萬gas 限制區塊,每筆交易花費 123,658 gas,這意味着我們可以將 15M/123,658 = ~121.3 個交換放入一個區塊中。如果我們假設區塊每 13.2 秒到達一次,這意味着以太坊每秒處理 121.3/13.2s = ~9.19 Uniswap v2 swap。

我們將對列表中的其他 EVM 鏈使用類似的計算。

(注意:我們忽略了這種方法的Rollup,因為所有智能合約 L1 都能夠添加Rollup。)

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

Ubeswap 每秒交易次數:平均 24.93,最大 49.86(由於 EIP-1559)

平均區塊時間:5 秒

最終確定時間:5 秒(Celo 使用 PBFT 風格的協議,可立即完成區塊)

假設:本次swap交易是代表交易、1000 萬 gas 目標和 2000 萬 gas 限制。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

Quickswap每秒交易次數:平均 47.67,最大 95.33(由於 EIP-1559)

平均出塊時間:2.5 秒

最終確定時間:Polygon 上有兩種最終性概念

1.概率:這類似於大多數以太坊風格的區塊鏈,其中規範鏈取決於完成的最多工作(最重鏈)。在 Polygon 的案例中,Bor 層(即區塊生產者層)的最終確定性取決於難度較高的分叉。

2. 可證明:這類似於 Tendermint/IBFT,在規範鏈上的絕對多數簽名。這通過檢查點發生在 Heimdall 層(Polygon 的驗證器管理和狀態同步層)。這些檢查點被提交給以太坊。

重組和分叉可以發生在 Bor 層,但不能發生在 Heimdall。檢查點是 Bor 鏈狀態的快照。一旦一個區塊被包含在一個提交的檢查點中,它就不能被重新組織(除非 >=1/3 的驗證器集是不誠實的)。檢查點大約每 25 分鐘提交一次。

假設:此swap交易代表交易、1500 萬 gas 目標和 3000 萬 gas 限制。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

Trader Joe 每秒交易:平均 31.65 次,但由於其彈性出塊時間,在最大吞吐量下,Avalanche C 鏈可以處理足夠的gas以達到每秒 175.68 次交易。但是,將吞吐量維持在該水平會導致費用成倍增加。

平均出塊時間:平均 2 秒(Avalanche 是一種具有彈性出塊時間的無領導者協議:只要支付足夠的最低費用,就可以隨時產生區塊。Avalanche C 鏈曾有過在 1 秒內產生 >10 個區塊的時期.)

最終確定時間:出塊后約 1.75 秒

假設:此swap交易是代表交易,當前 800 萬gas限制。

Avalanche 相對難以比較,因為它的區塊生產機制與以太坊和 PoS 鏈如此不同。對於 Avalanche,它以最大吞吐量執行的操作與以平均吞吐量執行的操作之間存在很大差異。 (像以太坊這樣已經實現 EIP-1559 的鏈的平均吞吐量是其平均吞吐量的 2 倍。)

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

PancakeSwap 每秒交易次數:194.60(幣安智能鏈不使用 EIP-1559,所以這是一個固定數字)

平均區塊時間:3 秒

最終確定時間:75 秒

假設:這個swap交易是代表交易,8000萬 gas限制。

這結束了 EVM 區塊鏈的基準測試——其虛擬機以以太坊為模型的區塊鏈。 由於所有 EVM 鏈都使用相同的 gas 模型,我們可以將 gas/sec 視為吞吐量的基準。 實心條表示目標吞吐量,空心條表示限制。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

EVM鏈的Gas/sec

您可以想象您以絕對極限運行 EVM,這種情況就是幣安智能鏈(BSC)(現已更名為BNB Chain)發生的。 如果你想從智能合約中獲得更高的性能,你將不得不完全遠離 EVM。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

Orca 每秒交易次數:273.34

區塊時間:590 毫秒

最終確定時間:13 秒(Solana 也發出更快的“樂觀確認”,但這些只能抵抗約 4.7% 的損壞。大多數 Dapp 都接受這個閾值。)

這是我們計算這個數字的方法。 這是一個笨的方法。

我們首先想為 Solana 找到一個等效的“gas limit”。 你在區塊瀏覽器上找不到任何這樣的數字。 我們首先詢問了一些我們認識的 Solana 開發人員,但似乎沒有人確切知道是否存在這樣的限制。 於是我們捲起袖子踏上旅途,一探究竟。

我們首先了解到 Solana 確實有類似gas的東西,稱為計算單位 (CU)。 從我們與驗證者的對話來看,大多數人似乎認為 Solana 驗證是“爭分奪秒地在區塊時間內打包儘可能多的交易”,但實際的限制是每個區塊只能包含 4800 萬個 CU。

其次,只有有限數量的 CU 可在單個區塊中寫入單個帳戶。這個限制是為了防止過多的交易寫入同一個賬戶,從而減少一個區塊的并行性——儘管這正是在大規模擁塞期間發生的事情,例如在流行的 IDO 期間,當所有交易都在競爭使用單個合約時。

每個帳戶的限制為 1200萬。如果您遵循這個 1200萬帳戶 CU 限制、主網上 590 毫秒的區塊時間以及每次 Orca swap的 74,408 CU 成本,我們得出的理論限制為 273.34 swap/秒。

這個數字似乎低於預期!為了讓我們相信這個數字,我們希望通過經驗驗證這種方法。

為了確認我們正確地測量了它的性能,我們決定直接對 Solana 進行垃圾郵件攻擊測試。出於顯而易見的原因,我們不想向主網發送垃圾郵件,因此我們針對 Solana 開發網。請注意,Solana 的開發網運行在較小的集群上,因此比主網具有更快的出塊時間(380 毫秒與主網的 590 毫秒),與主網相比,這將提高其性能。給定 380 毫秒的區塊時間,我們應該期望開發網每秒清算 424.40 次swap。

我們在開發網上向 Orca SOL-ORCA 交易對發送垃圾郵件,以查看我們可以在單個區塊中進行多少 Orca swap,然後推斷為最大吞吐量。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

在開發網區塊高度106784857 中,我們設法實現了 184 次Orca swap

我們設法達到的最高數字是單個區塊中的 184 次swap。假設區塊時間為 380 毫秒,這給我們在開發網上實現 484.21 swap/秒。 (請注意,區塊時間並不准確,因此這些數字存在一些偏差。如果您在我們獲得最多交易的 3 個區塊中取平均值,它看起來更像是每秒 381 次swap,這似乎更合理)。這似乎證實了我們的分析方法是正確的(約 10-15% 的增量),因此這意味着 Solana 的主網可能在 AMM 上執行大約 273 次swap/秒。

當然這只是一次測試運行,所以這是我們的代碼 – 我們鼓勵您使用它並與我們分享您的結果。

我們在這裡掩蓋了大量細節,如果沒有我們在 Blockdaemon 的朋友的幫助,這一切都是不可能的。如果您想了解執行此操作所需的詳細信息(以及更深入地了解 Solana 內部結構),請查看第 2 部分,我們將在其中介紹技術細節。

您可能會看到這一切並想知道:但我認為 Solana 通常能夠執行 3000 TPS?

區塊瀏覽器衡量 Solana 的 TPS 的方式可能會產生誤導——它將內部共識消息視為交易,這是其他區塊鏈所沒有的。 Solana 大約 80% 的吞吐量是共識消息。減去這些,你剩下大約 600 TPS,其中大部分是非常便宜的 Serum 交易。只要接觸到足夠多的其他合約,Solana 也可以在生產中實現更高的性能。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

AMM 測試:Uniswap v2 風格的 swaps/秒 性能

那麼這一切的結果是什麼?

首先,不要把這當成福音。自己算算。

其次,請記住,所有這些區塊鏈都是移動目標。它們不斷被優化,技術也在迅速發展,而任何基準都是即時快照。我們希望看到更多獨立組織創建標準化基準,但這是我們最好的嘗試。

第三,請注意,這些區塊鏈之間的性能差異並不像宣傳的那麼大。以太坊和最好的鏈之間的性能差異大約是 10-25 倍,而不是 100 倍或 1000 倍。沒有人能從線性化的 VM 事務​​中獲得如此出色的性能。這將需要更多的工作和優化。

第四,如果你想要真正的高性能,你必須放棄 EVM。我們在這裡只對 Solana 進行了基準測試,但還有其他非 EVM L1,例如 NEAR 和 Terra,它們也實現了更高的性能。但像 Solana 一樣,他們無法從圍繞 EVM 的工具和生態系統中受益。 (儘管 NEAR 擁有與 EVM 兼容的 Aurora 分片,並且其他 L1 正在嘗試開發類似的虛擬化 EVM 實例。)

第五,用戶現在對非以太坊 L1 的性能考慮並不那麼敏感。 他們更關心生態系統的整體實力、良好的用戶體驗和低費用。 這些區塊鏈目前沒有在性能上進行競爭,因為它們實際上都沒有被用於容量,除非在罕見的峰值期間,例如在 IDO 或市場崩潰期間。

我們預計所有主要 L1 的性能都會隨着時間的推移而提高,因為開發團隊會花費越來越多的時間來調整典型使用模式的性能。 毫不奇怪,在早期,這些區塊鏈中的每一個都沒有得到很好的優化!

但總的來說,我的印象是:以太坊是智能合約操作系統的 MS-DOS。 但是當前的區塊鏈時代將我們帶入了 Windows 95 時代。

如何衡量一條區塊鏈的性能?Solana等區塊鏈的“高TPS”口號已經無用了?

MS-DOS(左)到 Windows 95(右)

下一代區塊鏈代表了顯着的進步,但要達到主流採用還有很長的路要走。

本文鏈接:https://www.8btc.com/article/6732914

轉載請註明文章出處

(0)
上一篇 2022-03-03 09:32
下一篇 2022-03-03 09:55

相关推荐