Solana 聯創新文:Solana 的並發領導者機制,解決 MEV 並構建全球價格發現引擎

深潮TechFlow
2024-07-09 18:19:38
收藏
Solana 的更大願景是建立一個全球無許可的價格發現引擎,能夠與任何中心化交易所(CEX)的最佳表現競爭。

作者:Anatoly Yakovenko

編譯:深潮TechFlow

概述

MEV 是無許可區塊鏈中的一個基本問題。與大多數無許可區塊鏈一樣,Solana 的目標是儘量減少鏈運營者從用戶那裡提取的 MEV。

Solana 採取的方法是通過最大化領導者(即區塊生產者)之間的競爭來減少 MEV。這意味著要縮短插槽時間,減少單個領導者連續安排的插槽數量,並增加每個插槽的並發領導者數量。

一般來說,每秒更多的領導者意味著用戶在等待 T 秒後有更多選擇,可以從即將上任的領導者中選擇最優惠的報價。更多的領導者還意味著優秀領導者提供區塊空間的成本更低,用戶更容易只與優秀領導者進行交易,並排除不良領導者的交易。市場應該決定什麼是好的,什麼是壞的。

Solana 的更大願景是建立一個全球無許可的價格發現引擎,能夠與任何集中化交易所(CEX)的最佳表現競爭。

如果新加坡發生了對市場有影響的事件,消息仍然需要通過光纖以光速傳輸到紐約的 CEX。在消息到達紐約之前,Solana 網絡中的領導者應該已經在區塊中廣播了這條消息。除非同時發生物理互聯網分區,否則在消息到達紐約時,Solana 的狀態已經反映了該消息。因此,不應該在紐約的 CEX 和 Solana 之間存在套利機會。

要全面實現這一目標,Solana 需要許多並發領導者,並且具有高度樂觀的確認保證。

配置多個領導者

就像當前的領導者時間表一樣,系統將每個插槽配置為 2 個領導者,而不是 1 個領導者。為了區分這兩個領導者,一個通道標記為 A,一個通道標記為 B。A 和 B 可以獨立輪換。實現這一計劃需要回答的問題是:

  • 如果區塊 A 和 B 到達不同的時間或失敗怎麼辦?

  • 如何合併區塊 A 和 B 中的交易順序?

  • 如何在 A 和 B 之間分配區塊容量?

傳輸並發區塊

要了解具體的過程,我們需要快速了解 Turbine。

領導者在構建區塊時將其拆分為碎片。32 個碎片的批次是 32 個碼碎片的糾刪碼。64 個碎片批次被默克化並簽署根,這些與前一個批次鏈接在一起。

每個碎片通過獨立的確定性隨機路徑發送。每個最後一個批次的重傳者簽署根。

從接收者的角度來看,每個接收者需要從經過驗證的重傳者那裡接收 32 個碎片。任何缺失的碎片都會隨機修復。

這個數字可以增加或減少,對延遲的影響很小。

假設重傳者的碎片路徑採樣足夠隨機且按股份加權,協同分區網絡所需的股份將遠遠超過 ε 股份,無論是到達時間還是數據。如果接收者檢測到每個批次的 32/64(可配置)碎片在 T 時間內到達,那麼很可能每個節點也是如此。這是因為 32 個隨機節點足夠大,不太可能隨機全部在同一個分區中。

如果發生分區,共識需要解決它。這不影響安全性,但速度相對較慢。

多區塊生產

如果傳輸單個區塊,每個接收者(包括下一個領導者)將看到每個區塊的碎片批次到達。如果區塊在 T 毫秒內不完整,當前領導者將跳過該區塊並構建一個沒有它的分叉。如果領導者錯誤,所有其他節點將對區塊進行投票,領導者的區塊將被跳過。非故障領導者將立即切換到由投票指示的最重分叉。

在多區塊傳輸的情況下,每個節點將需要等待最多 T 毫秒,然後對觀察到的區塊分區進行投票。對於兩個並發領導者,可能的情況是:A、B 或 A 和 B。只有在區塊延遲的情況下才會增加額外的延遲。在正常操作下,所有區塊應該同時到達,每個驗證者可以在兩者都到達後立即投票。因此,T 在實踐中可能接近於零。

這個攻擊需要重點防禦的是,一個質押了極少量代幣的領導者能否在時隙邊界上稍晚傳輸一個區塊,從而可靠地導致網絡分裂,並迫使網絡花費大量時間通過共識機制來解決問題。網絡的一部分會投票給 A,一部分會投票給 B,還有一部分會同時投票給 A 和 B。這三種分裂情況都需要通過共識機制來解決。

具體來說,零鄰域的目標應該是確保節點同時恢復區塊。如果攻擊者在零鄰域有一個協同節點,他們可以正常傳輸 31/64 碎片,並讓攻擊者選擇性地傳輸最後一個碎片,試圖創建分區。誠實的節點可以檢測到哪些重傳者延遲,並在任何單個誠實節點恢復區塊後立即將缺失的碎片推送給他們。重傳者可以繼續,如果他們從任何地方接收到碎片或恢復它。因此,區塊應該在一個誠實節點恢復後不久由所有節點恢復。需要通過測試來確定等待的時間,以及它是絕對的,還是按每個碎片的到達時間加權,是否應該使用股份節點聲譽。

每個區塊中協同領導者和重傳者的概率大約是 P 領導者股份 (64P 重傳者股份)。1% 的股份可以在攻擊者作為領導者安排的 ½ 碎片批次中嘗試攻擊。因此,檢測和緩解需要足夠強大。

這種攻擊對下一個領導者的影響很小,因為異步執行允許未使用的容量結轉。因此,如果當前領導者迫使下一個領導者跳過一個插槽,而下一個領導者有 4 個連續插槽,跳過插槽的未使用容量可以結轉,允許領導者重新包含跳過插槽的交易。

合併並發區塊

如果用戶為了增加被包含的機會或在區塊中排在第一位,而將相同的交易同時發送給領導者 A 和 B,這將導致資源浪費。如果出現這種情況,增加並發領導者的數量對性能提升的效果將非常有限,因為他們只是在處理兩倍的垃圾交易。

為了避免重複交易,費用支付者的前 N 位將決定交易在哪個領導者通道中有效。在這個例子中,最高位將選擇 A 或 B。費用支付者必須被分配到一個獨占的通道,這樣領導者才能確定費用支付者是有效的,並且沒有在其他領導者那裡花光所有的 lamports(Solana 區塊鏈中的最小貨幣單位)。

這將迫使垃圾郵件發送者至少為邏輯上相同的交易支付兩次費用,但為了增加成為首個交易的概率,垃圾郵件發送者可能仍然會發送邏輯上相同的交易。

為了阻止這種行為,用戶可以選擇在領導者的優先費用之外,額外包含一個 100% 銷毀訂單費用。最高的訂單費用首先執行。否則,使用先進先出 (FIFO) 排序。在平局的情況下,使用確定性的隨機排列來解決順序。因此,對於垃圾郵件發送者來說,提高他們的訂單費用並首先執行,比支付兩次包含費用更具成本效益。

為了處理捆綁和重新排序的交易序列,系統需要支持捆綁交易,這些交易可以添加一個訂單費用來覆蓋整個交易序列的排序成本。手續費支付者只在其預定的通道中有效,因此捆綁只能在其自己的通道中操縱序列。

或者,訂單費用可能不是必要的。如果使用 FIFO 排序,並且垃圾郵件發送者在所有通道中始終被收取優先費用,可能只需允許市場決定支付給 N 個領導者以提高包含機會的成本與支付給最有可能首先包含交易的最近領導者的成本。

管理區塊資源

在區塊鏈網絡中,當有兩個並發的領導者時,每個系統範圍內的區塊容量限制需要被平均分配。具體來說,不僅是總容量,還包括每個具體限制,比如寫鎖限制------任何賬戶都不能寫入超過 600 萬計算單元 (CUs),而每個領導者最多只能安排 2400 萬 CUs 的交易。這樣,即使在最壞情況下,合併後的區塊也不會超過系統的總容量限制。

這種機制可能會導致費用的波動和資源未充分利用,因為調度優先級的費用將由每個領導者的容量決定,而每個領導者對其他並發領導者的調度狀態知之甚少。

為了緩解資源利用不足和由此導致的費用飆升,任何未使用的區塊容量應滾動到未來的區塊。也就是說,如果當前合併區塊在寫鎖、總字節數或總計算單元 (CUs) 上使用不足 X,則應將 K*X 添加到下一個區塊,其中 0 \< K \< 1,直到某個最大值。異步執行可以滯後於鏈頂端多達一個 epoch,因此容量滾動可以相當激進。

根據最近的區塊數據,大多數區塊通常填充了 80%,而寫鎖限制遠低於 50%。一般來說,未來的區塊應該總是有一些備用容量。由於區塊可能暫時超過容量限制,執行必須與共識過程異步進行。有關異步執行提案的詳細信息,請參閱 APE 文章

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
banner
ChainCatcher 與創新者共建Web3世界