EVM到底是怎麼運作的? - 數位貨幣

Table of Contents

各位前輩 韭菜 大家好
小弟我又來發問了

在研究過比特幣一陣子後
現在想把重心轉移到乙太坊上

乙太坊最吸引人的點 就是可以跑智慧合約
而智慧合約是靠EVM(乙太坊虛擬機)所執行

我感到不解的是
這個乙太坊虛擬機 到底是怎麼運作的?
按照去中心化的思想 這個虛擬機絕對不可能是只跑在某幾台特定機器上
而是整個ETH網路的每一台礦機都是這個虛擬機的一部分 對吧?

那麼智慧合約的程式碼是在所有機器上都跑完一遍
然後把輸出的結果互相比較 以多數的為準 這樣嗎?

因為以前在學校學到的分散式運算
都是把一個很大的工作拆分成好幾個子任務 在不同cpu或thread上執行 最後合併
但區塊鏈的智能合約 完全不是這樣 所以實在難以理解
懇請前輩給予指點

--

All Comments

Poppy avatarPoppy2022-02-25
簡單講:一台算,其他台驗算。
你是算的還是驗算的,看你有沒有挖到礦決定。
Ingrid avatarIngrid2022-02-26
喔喔 好像有點懂了 感謝ayu大
Vanessa avatarVanessa2022-02-26
你連的RPC主機負責算,打包節點負責驗算。
Enid avatarEnid2022-02-26
後面的問題怎麼感覺跟是不是EVM沒什麼關係,EVM不就是
跟docker類似的東西嗎
Delia avatarDelia2022-02-27
所有機器看到的合約程式碼以及交易順序都是一致的(都來自
鏈上)
所以所有機器的計算結果會完全一樣
算不一樣的就是亂搞的 就會被排擠
Yuri avatarYuri2022-02-27
簡單說 合約程式碼和交易序列就決定了運算結果 算出不是這
種結果的就是有問題
Megan avatarMegan2022-02-27
為了在去中心的前提下形成共識 這種執行結果的確定性是必要

反過來說 這也是為什麼EVM沒辦法支援那種每個機器會算出不
同結果的operation
例如「獲取機器本地時間」
EVM裡面要抓時間只能抓區塊的timestamp才能大家看到一樣
Zenobia avatarZenobia2022-02-28
VM這個字其實有點泛用 做系統的人會覺得VM裡面跑的程式碼
Aaliyah avatarAaliyah2022-02-28
原本是直接跑在真實機器上 只是現在被放進隔離的環境
Queena avatarQueena2022-02-28
但其實EVM的VM跟JVM的VM含意比較像 就是一套自定義的程式語
Hedy avatarHedy2022-02-28
言 & bytecode & run-time執行環境
Daniel avatarDaniel2022-02-28
感謝苦瓜大詳解 Orz
Elvira avatarElvira2022-02-28
感謝推文講解