iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0

Ethereum Virtual Machine (EVM) 像是一台電腦

使用者執行交易,EVM 就執行這筆交易。實際上的意思是,交易被全節點重新執行。EVM 把整個以太坊 p2p 網路抽象起來,當成一種電腦。可以想像是整個網路上有很多台小電腦,整個集體起來的力量,相當於有一台特別厲害的大電腦。有幾台小的電腦下線的話,其他電腦也都還在。

運算資料的規則是 EVM 定義的規則。例如 hydai 海帶學長這週才正忙著介紹給大家的 EVM opcode 的指令們(教學影片「淺入淺出 EVM Object Format」)。EVM 運算規則算出來的結果都要是一樣的。最後的 world state 要結果一致。同樣一筆交易(交易是一個運算),不能說一個節點算完那筆交易,和另一個節點算出來的 world state 不一樣。

執行 EVM 的三個時機

  1. 使用者送出交易之前。
    • 使用者的錢包會私下執行這筆交易,以確保交易能成功,並計算要支出的 gas cost。
  2. 驗證者(validator)將交易打包到區塊時,重新執行交易。
    • 驗證者確保交易符合共識規則。
    • 得到欲發布區塊之 post state。經過交易後的狀態(post state)。
  3. 一般全節點驗證新發布的區塊時。
    • 交易都符合共識規則。得到所有交易執行後的 post state 交易後的狀態。檢查交易是否都有符合共識規則的意思是,例如,檢查使用者的數位簽章有沒有驗證成功、nonce 計數器是否正確。

Web2 的開發,資料的讀寫 read/write 和同一台主機溝通。而 Web3 的開發,資料的讀寫 read/write,坦白說也是和 Infura 的同一台主機溝通。當然 Web3 開發理想上是要直接和以太坊 p2p network 溝通沒錯,但目前沒有,絕大多數仍然用 Infura。這邊只是描述現況。是否認同或有其他想法又另一件事。

查詢一些 Solidity 或 EVM 等等的關鍵詞,很快就會發現好多文章都是 NIC Lin 老師寫的,經常發在 Taipei Ethereum Meetup 的 medium 平台專欄。(https://medium.com/@twedusuck)


上一篇
合約部署是部署到哪裡?
下一篇
學到目前為止的感想
系列文
合約開發特訓班17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言