ETH + VM ➠ EVM
👉以太坊(Ethereum):不同于比特币(分布式账本),为了实现更复杂的智能合约功能,以太坊不仅要保存所有帐户和余额,而且还要维护一个机器状态。
以太坊协议必须让机器状态保持连续、不间断和不可变的运行,因此以太坊是“分布式状态机器”。
BTC|分布式账本 ➠ ETH|分布式状态机器
👉VM(Virtual Machine):创建于一套硬件(例如:一台计算机)之上的虚拟环境,用于模拟完整的计算机功能。
1️⃣一套硬件上可以模拟出多套虚拟环境,提高了资源利用率
2️⃣虚拟环境与硬件系统相互隔离,无论虚拟机内部运行什么,都不会干扰硬件系统中运行的其他虚拟环境
👉EVM(Ethereum Virtual Machine):创建于以太坊之上的虚拟环境。EVM是所有以太坊帐户和智能合约依存的环境。
以太坊为了现实智能合约功能,可以根据预定义的一组规则在不同的区块之间进行更改,并且可以执行任意的机器代码。在区块中更改状态的具体规则由 EVM 定义。
以太坊处理智能合约部署和调用,需用用到EVM机制。
👉EVM模型
- 字节码:存储在ROM不会被改变,一次写入,永久读取
- 世界状态:持久的,不可变,包括账户状态、余额
- 机器状态:临时的,可变的
- program counter:类似指针,指向下一条指令
- 当前可用gas:gas用于避免死循环,gas耗尽则停机
- Stack:1024个32字节的栈
- memory:存放临时数据
👉以太坊处理两种交易
👉 EVM提供一系列指令:
- 算术操作(加、减、乘、除、计算哈希等)
- 操作栈、内存、存储(push、pup等)
- 控制流(stop、jump等)
- 系统操作(日志、合约调用合约、结束运行等)
- 查询账户信息
- 查询区块信息
- 查询gas
转自推特@100Sheng