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

看板DigiCurrency (數位貨幣)作者 (生於安樂 死於憂患)時間4年前 (2022/02/25 12:41), 編輯推噓9(9015)
留言24則, 6人參與, 最新討論串1/1
各位前輩 韭菜 大家好 小弟我又來發問了 在研究過比特幣一陣子後 現在想把重心轉移到乙太坊上 乙太坊最吸引人的點 就是可以跑智慧合約 而智慧合約是靠EVM(乙太坊虛擬機)所執行 我感到不解的是 這個乙太坊虛擬機 到底是怎麼運作的? 按照去中心化的思想 這個虛擬機絕對不可能是只跑在某幾台特定機器上 而是整個ETH網路的每一台礦機都是這個虛擬機的一部分 對吧? 那麼智慧合約的程式碼是在所有機器上都跑完一遍 然後把輸出的結果互相比較 以多數的為準 這樣嗎? 因為以前在學校學到的分散式運算 都是把一個很大的工作拆分成好幾個子任務 在不同cpu或thread上執行 最後合併 但區塊鏈的智能合約 完全不是這樣 所以實在難以理解 懇請前輩給予指點 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.128.97.223 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1645764071.A.34F.html

02/25 12:46, 4年前 , 1F
簡單講:一台算,其他台驗算。
02/25 12:46, 1F

02/25 12:46, 4年前 , 2F
你是算的還是驗算的,看你有沒有挖到礦決定。
02/25 12:46, 2F

02/25 12:51, 4年前 , 3F
喔喔 好像有點懂了 感謝ayu大
02/25 12:51, 3F

02/25 15:04, 4年前 , 4F
你連的RPC主機負責算,打包節點負責驗算。
02/25 15:04, 4F

02/25 16:03, 4年前 , 5F
後面的問題怎麼感覺跟是不是EVM沒什麼關係,EVM不就是
02/25 16:03, 5F

02/25 16:03, 4年前 , 6F
跟docker類似的東西嗎
02/25 16:03, 6F

02/25 18:17, 4年前 , 7F
所有機器看到的合約程式碼以及交易順序都是一致的(都來自
02/25 18:17, 7F

02/25 18:17, 4年前 , 8F
鏈上)
02/25 18:17, 8F

02/25 18:17, 4年前 , 9F
所以所有機器的計算結果會完全一樣
02/25 18:17, 9F

02/25 18:17, 4年前 , 10F
算不一樣的就是亂搞的 就會被排擠
02/25 18:17, 10F

02/25 18:23, 4年前 , 11F
簡單說 合約程式碼和交易序列就決定了運算結果 算出不是這
02/25 18:23, 11F

02/25 18:23, 4年前 , 12F
種結果的就是有問題
02/25 18:23, 12F

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

02/25 18:35, 4年前 , 14F
02/25 18:35, 14F

02/25 18:35, 4年前 , 15F
反過來說 這也是為什麼EVM沒辦法支援那種每個機器會算出不
02/25 18:35, 15F

02/25 18:35, 4年前 , 16F
同結果的operation
02/25 18:35, 16F

02/25 18:35, 4年前 , 17F
例如「獲取機器本地時間」
02/25 18:35, 17F

02/25 18:35, 4年前 , 18F
EVM裡面要抓時間只能抓區塊的timestamp才能大家看到一樣
02/25 18:35, 18F

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

02/25 19:59, 4年前 , 20F
原本是直接跑在真實機器上 只是現在被放進隔離的環境
02/25 19:59, 20F

02/25 20:01, 4年前 , 21F
但其實EVM的VM跟JVM的VM含意比較像 就是一套自定義的程式語
02/25 20:01, 21F

02/25 20:03, 4年前 , 22F
言 & bytecode & run-time執行環境
02/25 20:03, 22F

02/25 20:05, 4年前 , 23F
感謝苦瓜大詳解 Orz
02/25 20:05, 23F

03/01 02:36, , 24F
感謝推文講解
03/01 02:36, 24F
文章代碼(AID): #1Y65tdDF (DigiCurrency)
文章代碼(AID): #1Y65tdDF (DigiCurrency)