1 of 4

07-如何將智慧合約編譯成以太坊虛擬機位元組碼

@hydai

深入淺出 EOF

2 of 4

編譯器=翻譯官

  • 智慧合約是給人閱讀的
  • 以太坊虛擬機位元組碼是給 EVM 閱讀的
  • 跟外交場合一樣,我們需要一位翻譯官,協助將合約翻譯成 EVM 讀得懂的模樣
  • 他就是編譯器

3 of 4

編譯器到底幹了啥?

  • 讀取智慧合約
  • 解析合約並檢查是否有語法問題
  • 轉換成內部的表示方式(IR, Solidity 使用 YUL)
  • 分析 IR 來嘗試最佳化合約,包含但不限於:
    • 移除無用的程式碼
    • 以更低消耗的程式碼替換本來的程式碼
    • 調整順序或者結構來提升效率
  • 輸出成 EVM 位元組碼(Bytecode)、應用二進位介面(Application Binary Interface, ABI)、詮釋資料(Metadata)

4 of 4

怎麼編譯合約?

  • Solidity,請用 solc
    • solc contract.sol
  • 各種 IDE 都有整合,請查詢你自己常用的 IDE