Vitalik:實施跨分片交易的一種新方式

買賣虛擬貨幣
10月29日,以太坊聯合創始人Vitalik Buterin釋出了一份關於跨分片交易的新提案,所謂跨分片交易,是以太坊2.0平臺需要實現的一種功能。以下是提案譯文:以太坊2.0 階段2 (phase 2)的要求之一,是能夠快速地將ETH從一個分片移動到另一個分片。儘管透過常用接收機制的跨分片交易是可能的,因為協議本身只需提供對彼此分片的每個分片的狀態根的訪問,但跨分片ETH需要在協議活動中實現更安全的目的。原因是我們需要跟蹤每個分片中有多少ETH,並且我們需要一個重要的機制來防止跨分片傳輸的重放(replay)問題。一般來說,基於收據(receipt)的機制確實解決了這一問題,但它是透過具有“已消耗收據ID”的狀態樹來實現的,這將相當複雜地新增到當前名義上的無狀態系統中。之所以需要此收據ID樹,是因為我們允許收據(receipt)無序使用。也就是說,如果愛麗絲(Alice)從分片A向分片B傳送一筆交易,然後Applebaum也從分片A向分片B傳送一筆交易,那麼有可能會出現Appelbaum的交易更早在分片B中被接受的情況。這是必要的,因為系統使用的是gas方法來處理收據消耗交易,愛麗絲(Alice)可能會決定不為這筆傳輸交易支付費用。因此,這裡就出現了一個問題:我們是否可用一個按順序處理收據的機制,來代替處理收據的機制,這樣對於“上次從分片A收到的分片B的收據ID” ,我們只需一個變數可遞增?也就是說,每個分片A保持其狀態,對於每個其他分片B而言,則是兩個值:(i)將從分片A傳送到分片B的下一個收據的nonce,以及(ii)將從分片B接收到分片A的下一個收據的nonce。

至於“誰來買單”問題的答案很簡單:區塊生產者需處理每個區塊來自其他分片一定數量的收據,透過對收據的源分片收費來限制費率。然而,這裡有一個主要問題:如果一個人透過從所有分片向特定分片傳送收據(可能是意外的,也可能是故意的),對其進行了拒絕服務攻擊時,會發生什麼呢?

N個分片分別傳送N個收據,會對目標分片產生o(N2)的負載。

為了解決這個問題,我們可以採用以下機制:每個分片都需在一個區塊中處理最高N個收據(例如N = 64);如果其他分片處理的收據少於N,它可使用其它分片的Merkle證明來證明這一點。每個分片不斷地向信標鏈(beacon chain)轉發它已處理的收據總數,這用於提供更新的“gas價格”,以便將收據傳送到該分片。例如,每一區塊分片的收據處理佇列是滿的,gas價格可增加10%,最多可達到N。

這確保了在極端情況下,DoS攻擊最終無法增加接受分片佇列的長度,因此,每則訊息都會得到處理,但這始終可傳送一筆執行最小數量跨分片活動的交易。或者,分片需要將其EIP 1559 gasprice釋出到信標鏈來處理區塊費用;該費用也可用於此項功能。

如果我們有這種傳送ETH跨分片的機制,我們還可以將其用於通用收據傳送功能,從而建立一個有強大保證的跨分片交易系統。

這裡存在的主要挑戰是,為了計算收據的效果,我們需要有人自願提供狀態的Merkle驗證內容。如果未寫入完整狀態,則無法在協議級別強制執行此操作;但可以做的是新增表單要求:“為了包含你自己的一筆交易,你還必須為佇列中的跨分片收據提供驗證內容。”

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;