以太坊虚拟机(Ethereum Virtual Machine,EVM)是以太坊智能合约字节码(byte-code)的执行环境。网络中的每个节点都运行EVM。所有节点执行使用EVM指向智能合约 的全部交易,因此它们进行同样的计算,并存储同样的数值。只进行以太币转账(查询该地址是否有余额并相应地扣款)的交易也需要进行一些计算。
出于各种原因,每个节点执行并存储最终状态。例如,如果有一个智能合约存储参加派对的每个人的姓名和细节,只要增加新的人,就向网络广播新的交易。网络中的任何节点想要展示参加派对的每个人的细节,只需读取合约的最终状态即可。
每个交易需要在网络中进行一些计算和存储。因此需要有交易费,否则整个网络里将充斥着垃圾交易,而且没有交易费用矿工就没有理由在区块中接纳交易,它们将开始挖空区块。每个交易需要的计算和存储量有所不同,因此每一个交易的交易成本不同。
有两种EVM实现,即字节码VM和JIT-VM。在写本书时,JIT-VM已交付使用,但其开发仍未结束。在两种情况下,Solidity代码都被编译成字节码。在JIT-VM中,字节码编译更充分。JIT-VM比字节码VM更高效。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=594