Evm
乙太坊字節碼
為什麼乙太坊在區塊鏈上儲存字節碼而不是原始碼,權衡取捨是什麼?
據我所知,原始碼不需要太多的儲存空間。
原始碼是供人類閱讀和編寫的。字節碼適用於機器。
來自維基百科:
在計算中,原始碼是任何電腦指令的集合,可能帶有註釋,使用人類可讀的程式語言編寫,通常是純文字。…原始碼通常由彙程式序或編譯器轉換為電腦可以理解的二進制機器程式碼。然後可以儲存機器程式碼以供以後執行。
這正是這裡發生的事情。
還要考慮不同版本的 Solidity 編譯器輸出不同的字節碼。準確地指定每段字節碼應該做什麼很容易,但是將人類可讀的語言整合到 EVM 中會非常困難。
你可以用多種語言編寫智能合約,Solidity、Vyper、Yul、Mutan、Serpent 等。它們都有不同的語法。這就是為什麼原始碼被解釋為與 EVM 相同的標準字節碼的原因。