V 神:如何實現 ETH 跨分片快速轉賬

我們可以創建一個執行環境 (executive environment),稱其為「費用環境」,其主要作用是存儲其他執行環境持有的 ETH 餘額。該執行環境包含一個最小的餘額記錄和跨分片收據系統,從而允許 ETH 在分片之間快速轉賬。

前提

我們假設一個區塊包含了(i)數據和(ii)訪問該數據的執行環境列表。列表中的執行環境被依次調用,並且所有執行環境都可以訪問整個數據(之後每個執行環境將只能訪問部分數據,但允許每個執行環境訪問整個區塊數據並不需要付出額外的代價)。執行環境還可以訪問已處理完畢的「auxiliary outputs」(輔助輸出)。

我們假設區塊生產者都「瞭解」該費用環境,從某種意義上說,就是他們知道何時在該費用環境中接受資金。

預期的區塊結構

V 神:如何實現 ETH 跨分片快速轉賬

點擊添加圖片描述(最多60個字)

每個區塊將包含一個或多個分段 (segments),每個分段專屬於某個執行環境,其中包含了在該執行環境中進行的交易。執行環境本身會生成一個輔助輸出,表示這些執行環境想要進行的跨分片轉賬的概要。多筆去往同一目的地(分片/執行環境)的交易進入批量處理。

在區塊的末尾,有一個費用環境的專用分段,其中存儲了在該區塊中存在分段的所有執行環境的 Merkle 多證明(請注意,那些先前的執行環境會檢查這個部分並驗證其餘額的正確性和充分性 [充分性檢查將要求執行環境也檢查之前執行環境的輔助輸出])。

該費用環境將發佈一個狀態根 (state root),該狀態根包含了此分片內具有更新餘額的 Merkle 樹,以及一個包含了所有跨分片轉賬的收據根 (receipt root)。收據根的設計要求路徑基於分片和執行環境的組合進行編碼,而葉子節點的編碼還包含轉賬的金額。

例如,如果分片 A 上的一個區塊包含單個交易 [Alice --- {50 ETH} ---> Bob],而接收方 Bob 在另一個分片 B 上,如此則會產生兩個收據:(i) 特定於執行環境的允許 Bob 提取 ETH 的收據,以及 (ii) 該執行環境將生成一個輔助輸出 {B, EE_id, 50},然後費用環境將 {A,EE_id} 的餘額減少 50,發佈更新的狀態根,並使用單個元素 {key = (B,EE_id), value = 50} 創建一個收據樹。如果同一執行環境中有 N 個交易,則只會產生 N + 1 個分支;開銷是恆定的。

接收收據

現在,讓我們擴展上述方案以允許接收收據。現在,費用環境的狀態包含第三個根,一個為字段的 Merkle 根,為每個分片和每個 slot 標記該 slot 的收據是否已經處理。為了提高效率,我們希望對應於同一 slot 的比特位並排存放,因此在「理想情況」下,我們只需要一個 Merkle 分支即可立即處理收據。

區塊中用於費用環境的部分還將聲明位字段對應的分支。對於每個分支,比特位默認為 0,預平衡的 Merkle 證明也需要顯示相應的執行環境餘額,費用環境還需要提供相應收據的 Merkle 證明。更新後的預平衡根將根據收據增加執行環境餘額,同時將比特位設置為 1。

V 神:如何實現 ETH 跨分片快速轉賬

點擊添加圖片描述(最多60個字)

同時,執行環境本身將執行一個規則,即只有當表示執行環境級別的 ETH 轉賬已完成的相應 Merkle 分支位於費用環境的分段中時,才認為 Alice 到 Bob 的收據有效。這樣可以防止 Bob 在沒有執行環境的情況下接收 ETH。請注意,有時在同一時隙中創建的具有相同起始和目標分片的收據將在不同的時隙中接收。在這種情況下,必須再次包含對費用執行環境位域的證明,表明收據包含在時隙 n 中,並且在所有包含項中,該位域已被設置為 1,因此執行環境級別的餘額增加不會發生多次。

費用和兌現

執行環境還可以在其輔助輸出中指定他們為交易費支付的 ETH 數量。驗證者還可以在收費環境中擁有帳戶可以接收此 ETH。收費環境還允許驗證者提取 ETH。

開銷分析

假設區塊鏈相對完整且活躍,每個塊運行約 3 個執行環境,並且每個分片向其他分片發送事務,則可以計算開銷如下:

平衡證明:3 個分支,假設 2^16 個執行環境佔用約 15 * 3 = 45 個 hash 即 1440 字節

位域:假設平均而言,所有收據均在 5 個時隙內聲明。這要求最後 5 個時隙包含所有分片的證明;這些位是連續的,因此對於位域分段來說,佔用 320 個字節+一個 1024 字節的分支= 1356 字節。N 個時隙後的單個收據將增加 log(N)* 32 個字節。

轉移價值證明:假設有 216 個執行環境和 64 個分片,則一個長度為 22 的 Merkle 分支代表一個(分片,執行環境)密鑰。總共有 64 個,因此我們得到 22 * 64 個 hash 即 22528 字節。請注意,我們可以使用更聰明的辦法,將常用的執行環境放在樹上更末端的位置,將減少一半以上的存儲空間。

因此,總的來說,每個分片塊使用約 10-25 kB 的空間存儲與費用環境相關的證明。

鏈信是夸克生態中一個區塊鏈落地項目。鏈信區塊鏈是一個可開放的公共區塊鏈,類似互聯網基礎設施,有底層協議核心區塊鏈技術,使用與比特幣安全強度一致加密算法,支持第三方應用開發,與其他類似激勵機制項目,有本質區別。鏈信目前已有上千萬的用戶,鏈信在2020這個非凡的一年必將會崛起,


分享到:


相關文章: