第一节 智能合约介绍
1.1 什么是智能合约
-
运行在区块链系统上的脚本程序就是智能合约
-
智能合约能实现的功能取决于脚本指令集的完整度
image.png -
相当于关系型数据库中的存储过程
-
部署在区块链账本并同步到其他节点
-
在每一个
完全节点
上都可以独立执行 -
合约程序本身是静态的,执行才是动态的
-
合约中的功能调用,更改账本或只读
1.2 以太坊中智能合约的结构组成
- 指定版本信息,不同版本字节码不一样
- 使用contract关键字表示一份合约定义
- 合约中可以定义变量、方法等
- 合约中可以调用内置对象
1.3 智能合约的存储
-
程序编译后部署在区块链账本
-
部署过程就是发起一个事务
image.png -
智能合约会同步到所有的节点
-
部署合约的过程需要消耗Gas
1.4 智能合约执行
- 执行就是对合约中的方法调用
-
执行过程也是发起一个交易事务
image.png - 执行会消耗Gas
第二节 EVM介绍
2.1 什么是EVM
- Ethereum Virtual Machine以太坊虚拟机
- 虚拟机用于执行以太坊中的交易事物
- 虚拟机用于执行以太坊中的智能合约
- 每个以太坊节点都有自己独立的EVM
- 每一个交易或合约执行都在节点中同样执行
2.2 EVM与字节码
- EVM执行的是智能合约编译后的字节码
- 字节码对应着 EVM能执行的指令集
- 与Java虚拟机类似,EVM有自己的内存以及堆栈结构
- 很多语言都可开发智能程序,结果编译为字节码
2.3 EVM在哪里
- 是属于以太坊节点的架构组成部分
-
每个以太坊节点都有自己的独立EVM
image.png
2.4 合约的存储、主存及调用栈
- 合约拥有自己的存储并只能读写自己的存储
- 合约的调用会使用一块内存主存
- EVM是基于栈的虚拟机,所有的计算都在栈中
网友评论