智能合约介绍

区块链基础概念

  区块链可以当作一个数据库,只是保存数据的原理和mysql,Oracle 等传统web2 数据库不同。

 

交易

  区块链是个任意地方共享的数据库,所有人用户都可以通过网络从这个数据库读取数据。

  如果用户需要改变这个数据库里的数据,需要通过发起交易

  举个例子,如果发起了一个转账,这笔转账确保了相同的数量从发起方被减少,而这笔转账的数量被加到了收取方。

 

区块

  基于区块链的交易有一个问题就是 "双花攻击“ , 如果同时发起两笔交易,只能有一笔是有效的,也就是首先被接受的那笔。

 

以太坊虚拟机(Ethereum Virtual Machine)

概述

  以太坊虚拟机是以太坊合约的运行环境。不仅是沙河,而且还是完全隔离的,意味着EVM无法访问网络,文件系统或者其他途径。智能合约甚至可以限制其他智能合约。

 

账号

  以太坊有两种账号,外部账号和合约账号。外部账号-通过公私钥控制(比如用户),合约账号由代码控制。

  1、外部账号的地址由公钥在合约创建的时候就决定了。

  2、每个账号都有一个永久键值对,将256字节映射256个字节,称之为 storage

  3、每个账号都有 以太坊余额,可以通过发送交易修改包括以太坊的数量。

 

交易

  交易是一种从一个账号发送到另外一个账号的信息。这个信息包括 二进制数据以太坊

 

汽油费 (gas)

  每笔交易都会被收取一笔汽油费(gas), 该笔汽油费由交易发起方支付。

  这笔 gas 补偿了 EVM 执行者,即矿工,用来激励EVM 执行者的工作。

  汽油价格 由发起方设定。预先支付给EVM执行者,如果没用完,则退还。

 

存储,内存和栈

  EVM 有三个可以存储数据的区域 ---- 存储,内存和堆栈。

 

  存储---每个账号都有一个 storage 的数据区域,在函数调用和事务之间是持久的。storage 是 256 字节映射 256 字节的键值对。

 

  内存--合约为每个消息调用获取一个新清除的实例。内存是线性的,可以实现字节级别寻址。读的宽度是256字节,写的宽度是 8 和 256字节。访问未读过的地址就要gas费用。

  

  EVM 是堆栈机,所有计算都在堆栈上运行。  

 

指令集

  EVM 指令集 有算术、位、逻辑和比较操作。

  对基本数据类型、256 位字或内存片(或其他字节数组)进行操作。

 

 

--------------------------------------------------------------------------------------------

引用:https://docs.soliditylang.org/en/v0.8.13/introduction-to-smart-contracts.html#blockchain-basics

 

  

  

 

posted @ 2022-04-13 16:52  apeNote  阅读(458)  评论(0编辑  收藏  举报