[Coin] EVM到底是怎么运作的?

楼主: adamcha (生于安乐 死于忧患)   2022-02-25 12:41:08
各位前辈 韭菜 大家好
小弟我又来发问了
在研究过比特币一阵子后
现在想把重心转移到乙太坊上
乙太坊最吸引人的点 就是可以跑智慧合约
而智慧合约是靠EVM(乙太坊虚拟机)所执行
我感到不解的是
这个乙太坊虚拟机 到底是怎么运作的?
按照去中心化的思想 这个虚拟机绝对不可能是只跑在某几台特定机器上
而是整个ETH网络的每一台矿机都是这个虚拟机的一部分 对吧?
那么智慧合约的程式码是在所有机器上都跑完一遍
然后把输出的结果互相比较 以多数的为准 这样吗?
因为以前在学校学到的分布式运算
都是把一个很大的工作拆分成好几个子任务 在不同cpu或thread上执行 最后合并
但区块链的智能合约 完全不是这样 所以实在难以理解
恳请前辈给予指点
作者: Ayukawayen (亚布里艾尔发芽>//<)   2022-02-25 12:46:00
简单讲:一台算,其他台验算。你是算的还是验算的,看你有没有挖到矿决定。
楼主: adamcha (生于安乐 死于忧患)   2022-02-25 12:51:00
喔喔 好像有点懂了 感谢ayu大
作者: MACD (MACD)   2022-02-25 15:04:00
你连的RPC主机负责算,打包节点负责验算。
作者: ripple0129 (perry tsai)   2022-02-25 16:03:00
后面的问题怎么感觉跟是不是EVM没什么关系,EVM不就是跟docker类似的东西吗
作者: kugwa (kugwa)   2022-02-25 18:17:00
所有机器看到的合约程式码以及交易顺序都是一致的(都来自链上)所以所有机器的计算结果会完全一样算不一样的就是乱搞的 就会被排挤简单说 合约程式码和交易序列就决定了运算结果 算出不是这种结果的就是有问题为了在去中心的前提下形成共识 这种执行结果的确定性是必要的反过来说 这也是为什么EVM没办法支援那种每个机器会算出不同结果的operation例如“获取机器本地时间”EVM里面要抓时间只能抓区块的timestamp才能大家看到一样VM这个字其实有点泛用 做系统的人会觉得VM里面跑的程式码原本是直接跑在真实机器上 只是现在被放进隔离的环境但其实EVM的VM跟JVM的VM含意比较像 就是一套自定义的程式语言 & bytecode & run-time执行环境
楼主: adamcha (生于安乐 死于忧患)   2022-02-25 20:05:00
感谢苦瓜大详解 Orz
作者: viudo (viudo)   2022-03-01 02:36:00
感谢推文讲解

Links booklink

Contact Us: admin [ a t ] ucptt.com