乙太坊大概並不太擔心 「向下相容」 的問題。 幾年前波卡生態也都是一路升級走過來的,重要的幾個 DeFi 應用從 V1、V2 到 V3、V4 的反覆運算,用戶幾乎沒有太多感知,何況沒什麼不能被改變的...
V 的這篇新博客裡提到了 Apple 的 Rosetta 系統,精準地反應了出 Ethereum 主網若想把 EVM 換成其他 VM 將遭遇的技術挑戰,本質上就像當年 Apple 捨棄 Intel、轉向基於 Arm 架構的自研 M 系列晶片。
這到底難在哪兒?
我們之前說過,任何高級語言寫出的代碼,最終都得落到 某條指令集 上運行:
- 如果你的電腦的CPU是 Intel/AMD 的,那麼程式就按照 x86 指令集執行
- 如果是 Apple M 系列 晶片,程式最終會按 Arm 指令集在 CPU 上跑
然後Recall一下程式究竟是怎麼來的?
程式師通過高級語言寫完代碼后,需要通過編譯器,把它編譯成“針對某操作系統、某指令集”的可執行檔。 下載應用時你常見的 “Linux-x86”“macOS-x86”“macOS-Arm” 就在說明這一點,檔名後綴代表了目標指令集(為啥還有操作系統的事,下次可以說)
那Tim,代價是什麼呢? 😡
Apple 決定換芯那一刻,海量應用並沒有現成的 編譯好的Arm 版本,結果就是macOS-x86的程式根本無法原生跑在M晶元上。
怎麼辦? 找個翻譯:這便是 Rosetta 的由來。
Rosetta ,來自羅塞塔石碑。 牛逼在於使用了三種古語言記錄了同一內容,其中的古希臘語成為破解埃及象形文字的鑰匙。 同理,Rosetta主要在兩套指令集之間充當「翻譯層」,把 A 指令集 編譯出的程式 動態或一次性轉譯成 B 指令集。 這樣之前的程式也能在使用了新的指令集的硬體上無縫運行。 得益於「計算等價性」,轉譯後的程序輸出完全一致,但是會消耗一部分的性能。
為什麼現在很少再提 Rosetta? 隨著 M 晶片系列生態成熟,開發者在更新應用時通常,會再編譯一份 Arm 版本的程式。 只有那些年代久遠、無人維護的老軟體,還得靠 Rosetta 托底。
所以,如果乙太坊真要替換 EVM,基本得重走 Apple 的遷移之路:
- 先造自己的 “Rosetta”,讓舊合約位元元組碼能在新 VM 上繼續執行
- 再循序漸進地讓新合約直接面向原生新 VM 編譯
從鋪設相容層到最終覆蓋全部舊合約,這條路依舊很長很長很長很長。
7,344
8
本頁面內容由第三方提供。除非另有說明,OKX 不是所引用文章的作者,也不對此類材料主張任何版權。該內容僅供參考,並不代表 OKX 觀點,不作為任何形式的認可,也不應被視為投資建議或購買或出售數字資產的招攬。在使用生成式人工智能提供摘要或其他信息的情況下,此類人工智能生成的內容可能不準確或不一致。請閱讀鏈接文章,瞭解更多詳情和信息。OKX 不對第三方網站上的內容負責。包含穩定幣、NFTs 等在內的數字資產涉及較高程度的風險,其價值可能會產生較大波動。請根據自身財務狀況,仔細考慮交易或持有數字資產是否適合您。