這篇文章總結了最近一次 Robust Incentives Group 會議上的討論,其中包含了所有 RIG 成員和 Francesco 的意見。
記憶體池垂直分片可以釋放驗證者用於執行層記憶體池的頻寬,因為驗證者只需下載記憶體池中的 blob 樣本,而無需下載整個 blob。降低 blob 記憶體池的頻寬佔用尤其重要,因為隨著PeerDAS的推出,blob 的數量將增加約 8 倍。 PeerDAS 是以太坊計劃於 2025 年底左右推出的下一個重大升級。
光是下載資料樣本就會引發 DoS 攻擊,需要加以解決。 Dankrad建議使用某種形式的預付款來保證付款,並限制可能淹沒記憶體池的 Sybil 攻擊數量。 Francesco 後來提出了一種名為「記憶體池票證」的特定 Sybil 保護形式。
目前記憶體池票證提案主要存在兩個問題:
Gas :分配記憶體池票的機制要求使用者發送交易(不同於 Blob 交易)來購買記憶體池票。這些交易會消耗 Gas。此機制不應消耗過多的 Gas,因為這樣會將剩餘的 Gas 留給一般使用者。
使用者體驗:分配記憶體池票證的機制要求使用者提前購買票證。這會改變使用者體驗,因為使用者需要提前規劃他們預期的需求量。在某些設計中(例如下面的簡單記憶體池票證提案),這種使用者體驗的改變可能很小,但在其他設計中(例如後進先出記憶體池租賃)則更為明顯。在特殊情況下,如果 rollup 必須立即發布 blob 而用戶沒有預料到這種情況,那麼 rollup 始終可以透過 calldata 進行發布。
由於目前的 blob 吞吐量幾乎比我們預期透過 PeerDAS 和網路改進在短期內實現的吞吐量要小一個數量級,因此很難預測良好的用戶體驗是什麼樣的。吞吐量的提升和記憶體池票據都會改變使用者體驗,而且很難預測它們相互作用的效果。
然而,記憶體池的改進非常必要。因此,在本文中,我們:
提出 3 項關於如何實施記憶體池票證的建議並探討其權衡。
需要強調的是,實現內存池票據無需硬分叉,因為垂直分片內存池本身就是網路升級,無需硬分叉,並且內存池票據本身可以通過智能合約實現。未來,智慧合約可以相對輕鬆地進行修改,以適應 Blob 提交者行為的變化。
批發門票
批次發票務機制允許 Blob 提交者一次購買相當數量的票務。每個時段的票務出售數量是 Blob 供應量的k倍,例如,即使每個時段最多只能包含 9 個 Blob( k = 10),我們也可能售出 90 張 Blob 票務。票務供應過剩允許 Blob 提交者一次購買多個時段的票務,這在操作上可能更簡便。在每個時段都售票可以確保需要下一個時段票務的 rollup 成員仍然可以購買,並避免僅在一個時段售票時可能出現的審查。
機制的工作原理如下:
購買:每個時段內,以
(sender_ID, number_of_tickets)形式提交的訂單都會提交給智能合約。分配:智能合約將訂單作為輸入,並輸出一個包含
sender_ID、其對應的allocated_tickets和ticket_expiry_slot(代表票證到期時間)的清單。對於與智能合約互動的每個訂單,它會分配\\max(\\text{number\\\_of\\\_tickets}, \\text{tickets\\\_left})個票證。最大限度(文字號碼 _的_門票,簡訊票 _ left ) ,其中tickets_lefttickets_left一個變量,等於票總數與已分配票數之間的差值。分配發生在每個至少有一個訂單的時段。Blob 傳播:持票人可以在任意 slot 中傳播其持有的每個票證的一個 Blob。每個參與垂直分片記憶體池的節點都會維護一個本地列表,其中包含每個
sender_ID剩餘的票證數量。在看到唯一 Blob 的樣本後,該節點會將number_of_tickets減 1,從而更新其本地列表。
票務會過期,否則可能會有大量票務儲備,導致過多的區塊同時在記憶體池中傳播,從而可能造成 DoS 攻擊。此處設定的參數需要經過測試,然而,過剩供應因子k和影響ticket_expiry_slot的有效期限之間存在明顯的權衡。如果票務有效期較長,那麼我們應該在每個 slot 中減少售出數量,以保持未售出的有效票務最大數量不變。
如同先前所提議的,我們在此不建議退票,因為退票需要更昂貴的汽油系統。
記憶體池租賃
這種內存池租賃機制允許部分持票人將他們的票保留更長時間,同時允許任何人在每個時段購買一張票。它透過維護一個所謂的租賃持有人清單來實現這一點。新的租賃持有人可以透過設定高於集合中目前最低押金的押金來加入集合,或設定最低押金並驅逐在集合中時間最短的租賃持有人。
機制的工作原理如下:
購買:形式為
(sender_ID, number_of_leases, deposit_per_lease)的訂單將提交給任意時段的智能合約。分配:我們列出了兩種分配方案。第一種方案是基於權益的系統,類似於某些區塊鏈中使用的上限驗證者集。第二種方案是後進先出系統,旨在將最有可能很快再次提交 blob 的租賃持有者保留在集合中,以最大程度地減少人員流失。
質押選項:智能合約維護一個長度為
N的列表,其中包含每個租約持有者的(sender_ID, deposit)。對於與智能合約互動的每個訂單以及每個租約需求(在number_of_leases範圍內),合約都會檢查訂單中的deposit_per_lease是否大於租約持有者目前存入的最低deposit。後進先出 (LIFO) 選項:智慧合約維護一個長度為
N的列表,其中包含每個租約持有者的(sender_ID, slot_entered)。對於與智能合約互動的每個訂單以及每個租約請求,如果deposit_per_lease大於min_deposit,則slot_entered最高的租約持有者將從集合中移除,並將新的租約持有者的sender_ID新增至集合中,並將目前 slot 編號作為slot_entered。
Blob 傳播:每個租約持有者可以針對他們在垂直分片的記憶體池中持有的每個租約傳播一個 Blob。
如果記憶體池租約機制今天就實施,我們可能會看到Base鏈在連續幾個slot內保留租約。其他鏈提交blob的頻率並不高(請參閱hildobby儀錶板中「過去24小時~🕰️ Blob提交者」表格)。當每個slot的blob吞吐量遠高於現在時,記憶體池租約機制可能會更好地發揮作用,例如,在PeerDAS將blob吞吐量提高8倍之後,到2025年底左右可能會實現這一目標。
此機制可能會顯著影響 Blob 提交者的行為。目前,Blob 提交者傾向於同時提交大量 Blob(例如,在吞吐量限制為 9 個 Blob 的情況下,每個 slot 提交 3 個或 6 個 Blob)。內存池租約機制可能會要求 Blob 提交者提交他們仍持有租約的 Blob。如果他們持有 2 個租約,他們可能會在 3 個 slot 內提交 2 個 Blob,而不是在一個 slot 內提交 6 個 Blob。
此外,租賃機制可能對大型鏈比小型鏈更有利。小型鏈可能缺乏足夠的流動性來存入大量權益以獲得基於權益的系統中的內存池租賃,這將阻止它們使用垂直分片的內存池。後進先出 (LIFO) 系統可能對大型鏈更有利,因為它們將保留租賃而不發送新的訂單交易。大型鏈從中獲得的優勢應該很小,因為它只是節省了一些 gas 費用,不太可能從更大角度影響二級節點之間的競爭。
簡單記憶體池票證
此提案是最簡單的記憶體池票提案,它使用公佈價格出售與區塊可容納的最大區塊數相等數量的記憶體池票。此機制在每個 slot 中出售票。
機制的工作原理如下:
購買:形式為
(sender_ID, number_of_tickets)的訂單在任何時段提交給智能合約。分配(與批發機制相同) :智慧合約將訂單作為輸入,並輸出
sender_ID及其各自分配的allocated_tickets的清單。對於與智慧合約互動的每個訂單,它會分配\\max(\\text{票證數量}, \\text{剩餘票證})最大限度(文字號碼 _的_門票,簡訊票 _ left ) ,其中tickets_lefttickets_left一個變量,等於票總數與已分配票數之間的差值。Blob 傳播:票證持有者每持有一張票證就可以傳播一個 Blob。
該提案的優勢在於,由於每個 slot 都會購買選票,因此可能不需要過度供應( k = 1)。因此,每個 slot 中節點所需的 Blob 記憶體池頻寬量可以設定硬性上限,從而增加節點可用於其他任務的頻寬。
這項提案與 Mike 和 Julian先前提出的採用最高價格拍賣的提案極為相似。我們在此採用了公佈價格機制,因為它消耗的 Gas 更少。
忠誠票
該提案將票證分配給近期提交過 Blob 的用戶。目標是將記憶體池票證提供給最有可能在下一個 slot 提交 Blob 的使用者。圖 1(取自Hildobby 的 Blob 儀表板)顯示了 Base 消耗了 43% 的 Blob,World Chain 消耗了 24%,Arbitrum One 消耗了 9%,而其他 rollup 消耗了剩餘的 24%。
圖 1:blob 使用狀況餅圖,顯示冪律分佈。
此機制可以如下運作:
監控:在每個 slot 中,智慧合約將哪些 Blob 提交者(儲存為
sender_ID)在上一個 slot 中提交了 Blob 作為輸入。智能合約維護一組sender_ID的權重。它為每個sender_ID分配如下權重:更新\_{i} = \\alpha \\frac{Blobs\_{i}}{總\\text{ }Blobs} + (1 - \\alpha) 舊\\text{ } 權重\_{i} U p d a t e _ i =阿爾法分式B l o b s _ i 總計文字 B l o b s + ( 1 −字母表)舊文字 重量t _ i
新的 \\text{ } Weight\_{i} = \\frac{Update\_{i}}{\\sum\_{i \\in N} Update\_{i}} N e w文字 重量t _ i = f r a c更新_ i s um _ i 更新
我們可以考慮一個最小權重,使得分配的 blob 提交者至少收到例如 3 張票,因為 blob 提交者似乎每個區塊至少提交 3 個 blob 來攤提成本。
分配:在每個插槽中,將
n張票分配給sender_IDs N N集合,其權重成比例,四捨五入為最接近的整數,上限為max_blobsn可能是每個插槽中可以提交的最大 blob 數量的倍數。Blob 傳播:票證持有者每持有一張票就可以傳播一個 Blob。
此機制與上文描述的後進先出租賃機制類似。兩者都嘗試將票分配給最有可能在下一個時段需要票的用戶。我認為有必要使用當前的 Blob 提交者行為進行模擬,以充分理解兩者之間的差異。
此外,Francesco 建議將此機制與 Simple Mempool Tickets 機制混合使用,以允許免費進入,同時最大限度地提高需要票證的 rollup 已經擁有票證的機率。
最後,需要對參數進行微調,以最大程度地減輕 Rollup 的使用者體驗負擔。我們需要進行模擬才能實現這一點。由於隨著 Blob 吞吐量的增加,Blob 提交者的行為可能會發生顯著變化,因此可能需要更改參數,這可能意味著對智慧合約進行更改。
非常規拍賣和免費門票
為了降低系統的 Gas 成本,我們從以拍賣為基礎的系統轉變為以公告價格為基礎的系統。在擁擠的情況下,我們假設 Blob 提交者可以為其購票訂單附加優先費用,並且建構者會優先處理優先費用較高的交易,而不是優先費用較低的交易。
由於我們假設支付較高優先費用的交易會被納入,因此我們無需對選票收取費用。攻擊者若想阻止 rollup 發布 blob,只需出價高於那些希望透過垂直分片內存池傳播 blob 的 rollup,無論選票價格如何。壅塞極為罕見,而且很可能是由攻擊者造成的,因為選票的供應量已超過 blob 的最大供應量k倍,而目標 blob 數量僅為最大供應量的三分之二。換句話說,自然需求量必須達到預期的 15 倍( k = 10)才會造成壅塞。
請注意,最壞情況下的攻擊會導致 Rollup 在一段時間內無法使用垂直分片記憶體池。 Rollup 仍然可以使用私有建構器記憶體池或呼叫資料來發布其資料。最壞情況下的攻擊代價高昂,因為攻擊者要么需要承擔成本來超越 Rollup,要么必須放棄 Rollup 願意支付的優先費用。
免費票降低了系統的複雜性,從而降低了汽油成本,因為不需要設定最低價格,也不需要退款。
智能合約實施
上述所有內存池票據/租賃方案均可透過智慧合約實現,無需硬分叉。智能合約會選擇一種分配規則(例如,後進先出內存池租賃或簡單內存池票據)。它接收訂單作為輸入,並輸出一個sender_ID列表,這些列表可能會在垂直分片記憶體池中傳播 blob。節點隨後會取得此列表,並將其應用於其執行層垂直分片記憶體池。
最後,記憶體池的垂直分片也不需要硬分叉,因為它只是網路層面的改變。垂直分片的記憶體池確實需要社交協調,因為 blob 提交者必須將其 blob 分片才能在垂直分片的記憶體池中傳播。
重要的是,由於記憶體池票證分配將透過智慧合約進行,因此修改起來相對容易。假設 Blob 提交者的行為發生變化,可以將包含記憶體池票證分配規則的智慧合約替換為更適合新行為的合約。
與稀疏 Blobpool 和水平分片的比較
在本節中,我們將垂直分片記憶體池與稀疏 blobpool 和水平分片提案進行比較。本節假設您熟悉垂直分片記憶體池、稀疏 blobpool 和水平分片提案。
稀疏 Blobpool
在稀疏 blobpool 中,節點以一定的機率(建議:p=0.15)下載完整的 blob,否則進行取樣(p=0.85)。這表示每個 blob 必須下載的預期資料量為0.15 + \\frac{0.85}{8} \\approx 25% 0.15 +分母0.85 8大約25 % 。在垂直分片記憶體池提案中,該比例僅為 1/8 = 12.5% f r a c 1 8 = 12.5 。因此,垂直分片的記憶體池減少了節點在記憶體池中需要使用的頻寬量。如果分片因子(上文為 8)進一步增加,這一點尤其重要,這在未來將會實現。
稀疏 blobpool 提案的優點在於,與現狀相比,它不會改變 blob 提交者的使用者體驗。內存池票證確實會改變使用者體驗。記憶體池票證概念的潛在迭代可能會將使用者體驗改為 rollups想要的效果,例如提前固定 blob 價格。
水平分片
在水平分片記憶體池中,驗證者使用規則來決定是否完整下載 blob。其優點是水平分片記憶體池易於實現,因為無需票務系統來防止 DoS 攻擊。缺點是每個節點每個 slot 使用的頻寬差異很大,因為在某些 slot 中,驗證者可能需要下載許多 blob,而在某些 slot 中則不需要。
重要的是,垂直分片的記憶體池可以防止驗證者重複工作,因為他們可以下載執行層記憶體池中看到的 blob 的樣本,而不必在區塊到達時(假設是單元級訊息傳遞)在共識層再次下載它們。在水平分片的記憶體池中,驗證者將執行額外的工作,因為他們會在執行層記憶體池中下載不需要的部分 blob,然後在區塊到達時需要在共識層下載樣本。雖然在FullDAS中,驗證者可能需要保管完整的 blob,而不是像 PeerDAS 中那樣只保管樣本,但 PeerDAS 是目前正在發行的版本,FullDAS 何時發行尚不清楚。
結論
改進 Blob 內存池是當務之急,因為目前的內存池無法承受以太坊可能很快會迎來的 Blob 數量的大幅增長。對記憶體池進行垂直分片是一個頗具吸引力的解決方案,因為它可以大幅降低記憶體池所需的頻寬,並避免在共識層重複進行共識關鍵資料可用性取樣。
實現垂直分片記憶體池的主要問題是需要某種 DoS 預防機制。在本文中,我們提出了三種記憶體池票據機制,它們可以在啟用垂直分片記憶體池的同時預防 DoS 攻擊。主要的權衡點在於對使用者體驗的影響和運行該機制所需的 Gas 成本。表 1 總結了本文所提出的各項提案的屬性。
| 批發門票 | 內存池租賃(權益) | 內存池租賃(後進先出法) | 簡單記憶體池票證 | |
|---|---|---|---|---|
| 氣體 | 低。交易次數少,但購買的票數多。 | 高。理想情況下,租賃持有人流動率較低。此機制需要更複雜的智能合約。 | 高。理想情況下,租賃持有人流動率較低。此機制需要更複雜的智能合約。 | 中等。簡單的智能合約,但每個時段都購買門票。 |
| 使用者體驗專家 | 有很多票可用。 | 大型聚會可能不需要每個時段都買票。 | 大型聚會可能不需要每個時段都買票。 | 幾乎不需要估價。 |
| 使用者體驗 | ||||
| 反對者 | Rollups 有被審查的風險。 | 小額總和需要足夠的流動性。 | 小型匯總可能會在租賃費用上花費更多。 | 每個時段都需要買票。 |
| 其他 | 不適用 | 不適用 | 不適用 | 頻寬使用量有嚴格上限。 |
表 1:批發證、內存池租賃(權益和後進先出)和簡單內存池票證提案的 gas 和用戶體驗屬性摘要。
重要的是,由於票證機制是透過智慧合約實現的,無需修改協議,因此如果需要,可以相對輕鬆地進行切換。這一點尤其重要,因為記憶體池票證不僅會改變 Blob 提交者的使用者體驗,而且我們即將看到的吞吐量大幅提升也會帶來改變。吞吐量提升與記憶體池票證之間的相互作用對使用者體驗的影響難以預測,因此記憶體池票證機制的靈活性至關重要。





