Evm
基於 64 位的 EVM 在乙太坊生態系統上不是更高效嗎?
正如乙太坊基本原理設計所說:
32 字節字長 - 替代方案是 4 或 8 字節字,如在大多數其他架構中,或無限制,如在比特幣中。4 或 8 字節的字對於儲存地址和用於加密計算的大值來說太嚴格了,而且無限的值太難於建立一個安全的氣體模型。32 字節是理想的,因為它剛好足以儲存許多加密實現中常見的 32 字節值以及地址(並提供將地址和值打包到單個儲存索引中作為優化的能力),但不是那麼大因為效率極低。
但問題是:
- 256 位 EVM 實現有助於處理地址,這是真的。但是由於乙太坊沒有被定義為加密貨幣系統,所以數據中最重要的部分不是地址,而是智能合約上使用的數據。
- 如果市場上的大多數 CPU 實際上是用 64 位架構製造的,並且我們在乙太坊生態系統上使用的大部分數據大致相同(64 位、32 位、16 位、8 位。 .)。您認為基於 64 位架構或類似架構的 EVM 不會提高所有系統的性能嗎?
想想看,如果你必須迭代一個 32 位或 64 位數據的數組並且 EVM 記憶體塊是 256 位的,那麼 CPU 進行計算是額外的工作,並且會浪費很多時間。
如果您認為這可能是一種改進,是否有任何倡議或 EIP 開放?我什麼都沒看到。
謝謝。
你會遇到幾個問題
- 如果您將儲存空間保持在 256 位,則訪問起來會更加複雜。您需要 4 x 64 位字來定址儲存槽。所有操作都必須將 256 位轉換為 64 位。您的 EVM 實施和審計將非常複雜。
- 如果您將儲存切換為使用 64 位,那麼您的 EVM 會更簡單,但儲存會更小,並且更容易發生衝突。
- 您不能以本機方式表示地址。地址為 20 個字節,您將需要 3 個 64 位寄存器。
- 您需要向後兼容舊契約,並且必須實現某種翻譯器。
CPU不是瓶頸。當然有更好的 VM(並且有關於用 WASM 替換它的研究),但是目前的實現可以正確地完成它的工作。
更重要的問題是 IO,每筆交易都有一些乙太坊世界狀態的修改。一個區塊大約有一百個交易,每 15 秒生成一個區塊。