Polkadot 官方發(fā)文:如何幫助平行鏈提升 10 倍吞吐量?
共 5611字,需瀏覽 12分鐘
·
2024-05-21 18:40
加入 PolkaWorld 社區(qū),共建 Web 3.0!
Parity 工程師 Dmitry Sinyavin 解釋了 Polkadot 平行鏈可以將吞吐量提高 10 倍的計(jì)算過(guò)程。
概述
交易吞吐量不僅在不同區(qū)塊鏈之間難以比較,即使在同一條鏈內(nèi)也很難比較。在 Web3 世界中比較各個(gè)鏈的 TPS 是一件喜聞樂(lè)見的事,但其實(shí)它不代表任何價(jià)值,而且容易被濫用。然而,在開發(fā)過(guò)程中,我們需要以某種方式評(píng)估我們的進(jìn)展,這就是我們的方法。
本文提供了一個(gè)概覽的介紹和解釋,說(shuō)明異步支持如何在 Polkadot 平行鏈上實(shí)現(xiàn) 10 倍交易吞吐量增加。
當(dāng)我們?cè)跍y(cè)量 TPS 的時(shí)候,我們?cè)跍y(cè)量什么?
我們使用的是“標(biāo)準(zhǔn) TPS”(sTPS)概念,這一點(diǎn) Shawn Tabrizi 在他的 sub0 2024 演講中很清楚的解釋了這一點(diǎn)。https://www.youtube.com/watch?v=MTzeE0fNSZ0
簡(jiǎn)而言之,我們測(cè)量的是 transfer_keep_alive 交易,這類交易指的是從一個(gè)已經(jīng)有資金的賬戶向另一個(gè)已存在的賬戶進(jìn)行的余額轉(zhuǎn)移,而這種轉(zhuǎn)賬不會(huì)導(dǎo)致發(fā)送賬戶被終止使用。測(cè)量的標(biāo)準(zhǔn)是每個(gè)發(fā)送者進(jìn)行這樣一筆交易的吞吐量,即這種類型的交易能在一定時(shí)間內(nèi)達(dá)到多少筆。
這個(gè)指標(biāo)作為絕對(duì)數(shù)字仍然沒(méi)有意義,但它允許我們?cè)诟逆溸壿嫊r(shí)評(píng)估吞吐量的變化。
在這次測(cè)試中,我們運(yùn)行了一個(gè)接入到 rococo-local 中繼鏈的 rococo 平行鏈,并測(cè)量了平行鏈交易的吞吐量。
交易及其權(quán)重
每筆交易都有一個(gè)權(quán)重。在 Polkadot SDK 中使用的權(quán)重是二維的,第一維是計(jì)算量,表現(xiàn)為執(zhí)行時(shí)間;第二維是 PoV(證明有效性)的大小。
計(jì)算權(quán)重取決于硬件。每個(gè)硬件執(zhí)行相同代碼所需的時(shí)間不同,因此這些權(quán)重需要使用參考硬件提前進(jìn)行基準(zhǔn)測(cè)試。
但重要的是要理解,這些權(quán)重是最壞情況下的場(chǎng)景。交易可能會(huì)采取不同的執(zhí)行路徑。例如,如果接收賬戶不存在,則必須創(chuàng)建新賬戶,這比轉(zhuǎn)賬到已存在的賬戶需要更多的時(shí)間和更大的證明大小。然而,在提前進(jìn)行基準(zhǔn)測(cè)試時(shí),我們不知道具體交易將采取什么樣的執(zhí)行路徑,因此我們總是使用“最重”的一個(gè)。
構(gòu)建區(qū)塊
現(xiàn)在,我們來(lái)談?wù)剠^(qū)塊的構(gòu)建。每個(gè)區(qū)塊能夠容納一定量的權(quán)重。因此,在編寫區(qū)塊時(shí),如果交易池中充滿了準(zhǔn)備包含的交易,我們可能會(huì)碰到三個(gè)限制之一:
計(jì)算權(quán)重限制。達(dá)到此限制意味著區(qū)塊中的交易消耗了允許的最大計(jì)算資源。
區(qū)塊大小限制。達(dá)到此限制意味著我們已達(dá)到 PoV 大小限制,即使還有一些計(jì)算資源剩余,也不能再向區(qū)塊中添加更多交易。
編寫/創(chuàng)建區(qū)塊的時(shí)間限制。達(dá)到此限制意味著,雖然從權(quán)重上看還有可用的計(jì)算資源,但實(shí)際上我們的計(jì)算時(shí)間消耗比預(yù)期的要多。實(shí)際上,這意味著我們的硬件性能不如用于基準(zhǔn)測(cè)試的參考硬件。
很難給出一些確切的數(shù)字,因?yàn)闄?quán)重的設(shè)定非常復(fù)雜(在區(qū)塊構(gòu)建的不同階段,部分權(quán)重被保留用于各種目的),所以我們只能進(jìn)行測(cè)量。
使用傳統(tǒng)的同步支持,我們每個(gè)區(qū)塊能處理 1094 筆交易。我們達(dá)到了區(qū)塊大小限制,即使創(chuàng)建區(qū)塊的時(shí)間為 0.5 秒,也還有大量的計(jì)算權(quán)重未被使用。
那么,如果我們引入異步支持會(huì)發(fā)生什么變化呢?遺憾的是,變化不大。我們的計(jì)算資源增加了四倍,但區(qū)塊大小限制沒(méi)有變化,當(dāng)推送 1094 筆交易后我們?nèi)匀贿_(dá)到了這一限制。然而,使用異步支持我們能夠更快地生產(chǎn)區(qū)塊,因此我們的吞吐量將翻倍。
這沒(méi)關(guān)系,但我們希望從如此復(fù)雜的技術(shù)如異步支持中獲得更多,這種技術(shù)本身就能帶來(lái) 8 倍的吞吐量增加!此外,一些技術(shù)限制不允許我們?cè)黾訁^(qū)塊大小以容納更多交易。那么,我們?nèi)绾瓮黄七@一限制呢?
POV 回收來(lái)“救援”
在這里,我們回到了“最壞情況執(zhí)行路徑”的部分。在進(jìn)行基準(zhǔn)測(cè)試時(shí),我們并不確切知道一筆交易將消耗多少證明大小,并且我們總是必須按最大可能值減少區(qū)塊容量。但在執(zhí)行一個(gè)區(qū)塊時(shí),我們已經(jīng)知道了實(shí)際情況。我們能否將未使用的證明大小報(bào)告回運(yùn)行時(shí),以便將更多交易納入?yún)^(qū)塊呢?
答案是可以的 —— 事實(shí)上,這正是 PoV 回收機(jī)制的作用。每筆交易都需要向存儲(chǔ)寫入數(shù)據(jù),因此需要存儲(chǔ)證明,我們?cè)诨鶞?zhǔn)測(cè)試中使用的最壞情況場(chǎng)景迫使我們使用完整的證明大小,包括從賬戶的葉節(jié)點(diǎn)一直到根的每個(gè) Merkle 樹節(jié)點(diǎn)。
實(shí)際上,大多數(shù)交易共享了 Merkle 樹的很大一部分,使得個(gè)別證明的大小要小得多。例如,基準(zhǔn)測(cè)試的證明大小是 3,593 字節(jié),這與推入?yún)^(qū)塊的第一筆交易的實(shí)際證明大小非常接近。但隨后的交易可能只有 250 字節(jié),而如果沒(méi)有 PoV 回收,我們?nèi)詴?huì)為每筆交易計(jì)算滿 3.5 千字節(jié)的證明。因此,使用 PoV 回收后,我們?cè)?sTPS 測(cè)試中將在更晚時(shí)候觸及證明大小限制。
因此,有了 PoV 回收,我們可以將更多交易納入?yún)^(qū)塊,但計(jì)算資源限制阻止了我們。處理這么多交易需要超過(guò)半秒的時(shí)間。在這里,異步支持再次發(fā)揮作用,其創(chuàng)建區(qū)塊的時(shí)間為兩秒。將這兩項(xiàng)技術(shù)結(jié)合使用,我們可以將 3,764 筆交易納入?yún)^(qū)塊,這大約是每個(gè)區(qū)塊的 3.5 倍增加,而將區(qū)塊時(shí)間減半,我們將得到 7 倍吞吐量的增加!但這還沒(méi)有結(jié)束。
玩轉(zhuǎn)常數(shù)
為了進(jìn)一步突破極限,我們需要做一些調(diào)整。我曾建議說(shuō),通過(guò)異步支持我們可以“自動(dòng)”獲得兩秒的區(qū)塊創(chuàng)建時(shí)間。我承認(rèn),我撒了謊。由于所有網(wǎng)絡(luò)上驗(yàn)證者的備份超時(shí)時(shí)間(backing timeout)為兩秒,我們需要將區(qū)塊創(chuàng)建時(shí)間設(shè)置得低于此值,以在這兩個(gè)超時(shí)之間創(chuàng)建一個(gè)“保護(hù)區(qū)”,因此最初將區(qū)塊創(chuàng)建時(shí)間設(shè)置為 1.5 秒。但沒(méi)有什么能阻止我們將備份超時(shí)時(shí)間增加到 2.5 秒,然后我們就可以使用整整兩秒來(lái)進(jìn)行區(qū)塊編寫和創(chuàng)建。
其次,我概述了區(qū)塊權(quán)重的兩個(gè)維度中一些神秘的“預(yù)留”。這些是保守的估計(jì),考慮到我們不知道確切的證明大小。但現(xiàn)在,多虧了 PoV 回收,我們可以肯定,一些這樣的預(yù)留可以被取消,為 PoV 釋放出更多的區(qū)塊大小。
在這些調(diào)整之后,我們每個(gè)區(qū)塊可以容納 5,573 筆交易,這是每個(gè)區(qū)塊的 5.09 倍增加,最終觸及計(jì)算限制而不是區(qū)塊大小限制。在計(jì)算區(qū)塊時(shí)間減半后,我們獲得了 10.18 倍的吞吐量增加。
結(jié)論
兩種幾乎獨(dú)立開發(fā)的技術(shù)使得這一結(jié)果成為可能。不過(guò),很明顯 sTPS 測(cè)試并沒(méi)有涵蓋所有使用場(chǎng)景。那些大部分交易在計(jì)算上很重但產(chǎn)生小證明的網(wǎng)絡(luò)可能單獨(dú)從異步支持中受益。其他交易輕但證明大的網(wǎng)絡(luò)可能即使沒(méi)有異步支持,也能從 PoV 回收中受益。但正是這兩種技術(shù)的綜合,使得平行鏈的吞吐量增高 10 倍成為現(xiàn)實(shí)!
直播預(yù)告:
5 月 22 日(本周三)晚 7 點(diǎn),PolkaWorld 生態(tài)研究負(fù)責(zé)人 Kristen 將在 PolkaWorld 推特(X)上直播,帶來(lái)波卡生態(tài)項(xiàng)目的最新福利。
直播地址:Twitter 視頻直播 @polkaworld_pro(提前關(guān)注,以便在直播開始時(shí)收到提醒)
PolkaWorld Telegram 群:
https://t.me/+z7BUktDraU1mNWE1
PolkaWorld Youtube 頻道:
https://www.youtube.com/c/PolkaWorld
PolkaWorld Twitter:
@polkaworld_org
更多內(nèi)容
W3F 發(fā)放第 21 批 Grant:增強(qiáng) Coretime 和 XCM 創(chuàng)新功能,提升用戶體驗(yàn)
提議縮短 ACA 質(zhì)押解鎖期:增強(qiáng)流動(dòng)性與社區(qū)吸引力
波卡周報(bào) | 平行鏈 Frequency 或?qū)⒅貥?gòu) Tiktok!全球知名加速器Founder與波卡推出首個(gè)Web3創(chuàng)始人學(xué)院
關(guān)注 PolkaWorld
發(fā)現(xiàn) Web 3.0 時(shí)代新機(jī)遇
點(diǎn)個(gè) “在看” 再走吧!
