上一节分析了同步一个新的区块准备插入本地BlockChain之前需要重放并执行新区块的所有交易,并产生交易收据和日志。以太坊是如何执行这些交易呢?这就要请出大名鼎鼎的以太坊虚拟机。
目录
二、EVM 的虚拟机解析器通过运行合约指令,执行智能合约代码
以太坊虚拟机在执行交易分为两个部分,第一部分是创建EVM,计算交易金额,设置交易对象,计算交易gas花销;第二部分是EVM 的虚拟机解析器通过合约指令,执行智能合约代码,具体来看看源码。
一、创建EVM,通过EVM执行交易流程
上一节分析BlockChain调用processor.Process()(core/state_processor.go:59)遍历block的所有交易
首先调用tx.Message()方法产生交易Message。这个方法通过txdata数据来拼接Message对象,并通过签名方法signer.Sender(tx),对txdata 的V、R 、S三个数进行解密得到这个交易的签名公钥(也是就是发送方的地址)。发送方的地址在交易数据中是没有的,这主要是为了防止交易数据被篡改&#x