# 以太坊EVM与智能合约执行 **Published by:** [Chris Gao](https://paragraph.com/@sec-dao/) **Published on:** 2022-05-12 **URL:** https://paragraph.com/@sec-dao/evm ## Content Ethereum Virtual Machine EVM用来执行以太坊上的交易;每笔交易在传入EVM前,都被转换为一个message对象。 一个message对象其实就是一次交易数据:from,to,amount,data四个主要信息。 例如:程序中的 {msg.sender} 就是指调用者的地址;{msg.data} 就是打包到交易中的data数据,针对智能合约的调用,它主要包含了函数和参数值; 如果是普通转账:EVM直接修改statedb中的数据即可; 如果是智能合约创建/调用:EVM则会执行合约中的代码,期间会查询或修改statedb的数据。 EVM解释器 四大组件:PC, stack, memory, gas池 智能合约在EVM中调用原理和过程 1、当调用一个智能合约函数时:首先,虚拟机通过智能合约地址,从statedb中load出该智能合约的代码,然后再做相应的字节码执行操作。 2、将智能合约代码和输入信息(input:from,to,data)放入EVM解释器执行。 3、通过交易传入的data信息(函数和参数值)和合约代码,即可执行相应的函数;每个函数都有一个hex值,这个值在交易信息中包括。 ## Publication Information - [Chris Gao](https://paragraph.com/@sec-dao/): Publication homepage - [All Posts](https://paragraph.com/@sec-dao/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@sec-dao): Subscribe to updates