以太坊智能合约设计(一)

第一节 智能合约介绍

1.1 什么是智能合约

  1. 运行在区块链系统上的脚本程序就是智能合约

  2. 智能合约能实现的功能取决于脚本指令集的完整度


    以太坊智能合约设计(一)_第1张图片
    image.png
  3. 相当于关系型数据库中的存储过程

  4. 部署在区块链账本并同步到其他节点

  5. 在每一个完全节点上都可以独立执行

  6. 合约程序本身是静态的,执行才是动态的

  7. 合约中的功能调用,更改账本或只读




1.2 以太坊中智能合约的结构组成

以太坊智能合约设计(一)_第2张图片
image.png

  1. 指定版本信息,不同版本字节码不一样
  2. 使用contract关键字表示一份合约定义
  3. 合约中可以定义变量、方法等
  4. 合约中可以调用内置对象




1.3 智能合约的存储

  1. 程序编译后部署在区块链账本

  2. 部署过程就是发起一个事务


    image.png
  3. 智能合约会同步到所有的节点

  4. 部署合约的过程需要消耗Gas




1.4 智能合约执行

  1. 执行就是对合约中的方法调用
  2. 执行过程也是发起一个交易事务


    以太坊智能合约设计(一)_第3张图片
    image.png
  3. 执行会消耗Gas



第二节 EVM介绍

2.1 什么是EVM

  1. Ethereum Virtual Machine以太坊虚拟机
  2. 虚拟机用于执行以太坊中的交易事物
  3. 虚拟机用于执行以太坊中的智能合约
  4. 每个以太坊节点都有自己独立的EVM
  5. 每一个交易或合约执行都在节点中同样执行

2.2 EVM与字节码

  1. EVM执行的是智能合约编译后的字节码
  2. 字节码对应着 EVM能执行的指令集
  3. 与Java虚拟机类似,EVM有自己的内存以及堆栈结构
  4. 很多语言都可开发智能程序,结果编译为字节码

2.3 EVM在哪里

  1. 是属于以太坊节点的架构组成部分
  2. 每个以太坊节点都有自己的独立EVM


    以太坊智能合约设计(一)_第4张图片
    image.png

2.4 合约的存储、主存及调用栈

  1. 合约拥有自己的存储并只能读写自己的存储
  2. 合约的调用会使用一块内存主存
  3. EVM是基于栈的虚拟机,所有的计算都在栈中

你可能感兴趣的:(以太坊智能合约设计(一))