今天聊一聊以太坊虚拟机的原理。
以太坊虚拟机,简称EVM,是用来执行以太坊上的交易的。业务流程参见下图:
输入一笔交易,内部会转换成一个Message对象,传入EVM执行。
如果是一笔普通转账交易,那么直接修改StateDB中对应的账户余额即可。
如果是智能合约的创建或者调用,则通过EVM中的解释器加载和执行字节码,执行过程中可能会查询或者修改StateDB。
1.固定油费(Intrinsic Gas)
每笔交易过来,不管三七二十一先需要收取一笔固定油费,计算方法如下:
如果你的交易不带额外数据(Payload),比如普通转账,那么需要收取21000的油费。
如果你的交易携带额外数据,那么这部分数据也是需要收费的,具体来说是按字节收费:字节为0的收4块,字节不为0收68块,所以你会看到很多做合约优化的,目的就是减少数据中不为0的字节数量,从而降低油费消耗。
2.生成Contract对象
交易会被转换成一个Message对象传入EVM,而EVM则会根据Message生成一个Contract对象以便后续执行ÿ