以太坊字節碼和代碼塊分析

本文為機器翻譯
展示原文

以太坊位元組碼和程式碼塊分析

程式碼分塊是將位元組碼拆分成更小塊的策略,有助於減小見證大小。但只有在執行期間訪問的位元組碼相對較少時,這種方法才有效。本分析探索位元組和塊的訪問模式,以評估程式碼分塊的實用性。

方法論

包含資料收集和分析程式碼的完整倉庫可以在此處找到。

分析

[後續內容保持不變,只翻譯文字部分]




平均位元組訪問比率

  • 原始:22.8%
  • 包含程式碼大小:54.0%(+31.2%)
  • 包含程式碼複製:31.5%(+8.7%)

平均程式碼塊訪問比率

  • 原始:29.6%
  • 包含程式碼大小:57.8%(+28.2%)
  • 包含程式碼複製:37.6%(+8.0%)

在包含程式碼訪問指令後,我們確實看到訪問比率有適度增加。然而,這主要是由於程式碼大小操作碼。如前所述,在賬戶欄位中新增程式碼大小將使程式碼複製操作碼成為訪問整個位元組碼的唯一指令。由於程式碼複製指令的數量明顯較少,整體訪問比率較低。


程式碼分塊是否是可行的解決方案?

參考EIP-2926,程式碼分塊的主要目的是減少見證大小,因為當前的現狀要求在程式碼證明中使用整個位元組碼。

我們的分析表明,並非合約位元組碼中的所有位元組都被使用。事實上,只有相對較小的位元組和程式碼塊被使用。基於當前的訪問模式,如果我們實施程式碼分塊,將顯著減少程式碼見證中實際使用的位元組數。

在EIP2926中,在賬戶欄位中新增程式碼大小將有效地使程式碼複製操作碼成為唯一需要訪問整個位元組碼的指令。此外,根據我們的發現,程式碼複製操作碼的數量明顯少於程式碼大小。因此,基於當前的訪問模式,我們將進一步減少平均程式碼見證大小。

我們可以進行的另一項探索是確定最佳程式碼塊大小。在EIP-2926中,使用31位元組的程式碼塊。我們可能需要探索更小的程式碼塊大小,如16位元組,以最大化每個程式碼塊利用的位元組數。然而,這會帶來額外的雜湊開銷。因此,我們需要透過實驗不同的程式碼塊大小來找到最佳平衡。


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