BAFs:利用區塊級存取過濾器擴展以太坊 L1

本文為機器翻譯
展示原文

BAF的想法是受到Tony在BAL研究的啟發,事實上我最初是在他的帖子的回覆中提出這個想法。下面我嘗試更好地解釋這個想法。

請將本文視為一個頭腦風暴,而非最終設計。

時隙時間顯然受到網路中狀態變化擴散時間的限制,因為下一個區塊構建者需要獲取關於變化的資訊。無論是以區塊(待執行交易列表)的形式,還是以BAL(狀態變化集)的形式,這意味著需要在全球範圍內傳輸大量資料。

這種依賴性通常透過網路延遲的假設上限Δ來優雅地建模。然而,現實中,網路延遲取決於需要擴散的資訊大小。

如果我們能夠加快傳輸少量資訊開始準備下一個區塊,會怎麼樣?

BAF正是旨在做這件事。BAF是一個小型布隆過濾器,用於識別狀態S中未被區塊i訪問的部分S'。因此,對S'的任何操作在區塊i+1中都是安全的,即使不知道區塊i的情況。

但布隆過濾器是"鬆散"的,這怎麼可能有效?

我們使用BAL(關於使用哪種BAL型別的更多細節將在後續說明)並使用布隆過濾器壓縮它以獲得BAF。然後,我們使用e來表示狀態中"未觸及"(未訪問)的部分。

我們可以將布隆過濾器視為有失真壓縮。它具有固定的小尺寸,並且:

  • 存在誤判(FP):我們認為某些e被訪問,但實際上並未被訪問
  • 不存在漏判(FN):我們認為某些狀態e未被訪問,但實際上已被訪問。

因此,儘管布隆過濾器不精確,但在我們以否定方式使用時,這不是問題。我們可能會排除過多的元素(由於誤判),但永遠不會包含被區塊i修改的內容(因為那將是漏判)。

這個過濾器可以很小嗎?

目前,未壓縮的BAL平均大小為55 KB,每個條目長度為32 + 20 = 52位元組。大約有1000個條目。

假設我們使用1 KB的布隆過濾器,它很容易放入IP資料包。這是8196位,為布隆過濾器提供了相當大的空間。布隆過濾器由k個雜湊函式定義,每個函式將一個元素對映到8196個位置中的一個。新增元素時,這些位會被開啟(如果尚未開啟)。檢查元素時,如果至少有一個位為0,我們可以確定該元素未被新增。

理想的雜湊函式數量由以下公式定義

k = 1000/8192 * ln(2)≈5.678
k=1000/8192ln(2)5.678

然後可以估算誤判機率為:

p = \left(1 - e^{-\frac{5.678 \times 1000}{8192}}\right)^{5.678} \approx 0.0195 \ \text{(1.95%)}
p=(1e5.678×10008192)5.6780.0195 (1.95%)

使用此BAF的人可以檢查給定交易是否可能干擾另一個區塊,即使沒有區塊或BAL,也能確定它是否不會干擾。

BAF的內容和粒度應該是什麼?

這裡有多種設計選項:

  • 賬戶級粒度與插槽級粒度
  • 狀態訪問與狀態修改

賬戶與插槽粒度

對於狀態訪問,賬戶級和插槽級粒度都可能有意義。賬戶級意味著過濾器更空,但結構性排除更多;插槽級意味著排除更少,但過濾器更飽和,這意味著誤判率更高。上述2%的估算是基於後者。

對於交易傳送者,還需要賬戶級排除以避免隨機數衝突。

有趣的是,如果需要,我們可以透過使用二進位制OR輕鬆地在同一個點陣圖中組合兩種不同的粒度,同時新增賬戶級交易傳送者和插槽級狀態訪問資訊。

狀態訪問與狀態修改

請注意,根據定義,狀態訪問級別的BAF比狀態修改級別的過濾器(我們現在稱之為BMF)更飽和(具有更多的1)。

BMF

我們可以使用BMF幫助構建者開始準備他們的區塊。假設BMF可以在時隙時間的很小一部分(比如300毫秒)內到達下一個區塊構建者,它可用於開始準備不依賴於前一個區塊的部分。

BMF可能有助於加快時隙時間,確保區塊序列無衝突。通過了解區塊i的BMF,區塊i+1的構建者可以開始構建區塊i-1和區塊i之間不可變的狀態。事實上,這使其能夠在最後時刻決定是基於區塊i還是區塊i-1。

BAF

相反,BAF最終可能對並行區塊構建有用。如果構建者遵守另一個區塊的BAF,那麼這兩個區塊在最終排序到鏈中時就變得可並行化,或者換句話說,順序無關。

保護BAF(或BMF)

簽名:BAF可以由區塊生產者簽名並強制執行

嚴格:如果簽名並強制執行,我們可以要求BAF是精確的,不超過重新執行期間生成的過濾器

BAF定價

有些交易簡單地訪問大量狀態,導致大型BAL和飽和的BAF。這顯然會減少基於BMF的預構建和基於BAF的並行化的可能性。

使完整的BAF變得昂貴是否有意義?我不確定這是個好主意,但它可以成為設計空間的一部分。

不幸的組合

作為機率性過濾器,可能會發生某些組合即使訪問(或修改)的狀態並不大也會建立飽和的BAF。這是形成布隆過濾器位的雜湊函式的不幸組合。

我們可以透過使用"旋轉"布隆過濾器結構來緩解這種影響,方法是使雜湊函式依賴於時隙號(或鏈高度)。我們甚至可以使這種變化逐漸進行,隨著區塊高度的增長,一次性地移入/移出雜湊函式。


來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論