PTT評價

[Coin] EVM到底是怎麼運作的?

看板DigiCurrency標題[Coin] EVM到底是怎麼運作的?作者
adamcha
(生於安樂 死於憂患)
時間推噓 9 推:9 噓:0 →:15

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

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

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

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

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

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

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.128.97.223 (臺灣)
PTT 網址

Ayukawayen02/25 12:46簡單講:一台算,其他台驗算。

Ayukawayen02/25 12:46你是算的還是驗算的,看你有沒有挖到礦決定。

adamcha02/25 12:51喔喔 好像有點懂了 感謝ayu大

MACD02/25 15:04你連的RPC主機負責算,打包節點負責驗算。

ripple012902/25 16:03後面的問題怎麼感覺跟是不是EVM沒什麼關係,EVM不就是

ripple012902/25 16:03跟docker類似的東西嗎

kugwa02/25 18:17所有機器看到的合約程式碼以及交易順序都是一致的(都來自

kugwa02/25 18:17鏈上)

kugwa02/25 18:17所以所有機器的計算結果會完全一樣

kugwa02/25 18:17算不一樣的就是亂搞的 就會被排擠

kugwa02/25 18:23簡單說 合約程式碼和交易序列就決定了運算結果 算出不是這

kugwa02/25 18:23種結果的就是有問題

kugwa02/25 18:35為了在去中心的前提下形成共識 這種執行結果的確定性是必要

kugwa02/25 18:35

kugwa02/25 18:35反過來說 這也是為什麼EVM沒辦法支援那種每個機器會算出不

kugwa02/25 18:35同結果的operation

kugwa02/25 18:35例如「獲取機器本地時間」

kugwa02/25 18:35EVM裡面要抓時間只能抓區塊的timestamp才能大家看到一樣

kugwa02/25 19:56VM這個字其實有點泛用 做系統的人會覺得VM裡面跑的程式碼

kugwa02/25 19:59原本是直接跑在真實機器上 只是現在被放進隔離的環境

kugwa02/25 20:01但其實EVM的VM跟JVM的VM含意比較像 就是一套自定義的程式語

kugwa02/25 20:03言 & bytecode & run-time執行環境

adamcha02/25 20:05感謝苦瓜大詳解 Orz

viudo03/01 02:36感謝推文講解