- 以太坊虚拟机:以太坊中智能合约的运行环境。
账户
- 外部账户
- 被公钥-私钥对控制
- 合约账户
- 合约账户被存储在账户中的代码控制
外部账户与合约账户区别
内部结构
- 外部账户
消息:类似于比特币上的交易
- 与比特币交易的不同点
- 以太坊的消息可以由外部实体或者合约创建,比特币的交易只能外部创建
- 以太坊的消息可以包含数据
- 如果以太坊消息的接收者是合约账户,可以选择进行回应,这意味着以太坊消息包含着函数概念
- 交易
- 以太坊的”交易“指存储从外部账户发出的消息的签名数据包。
- 交易包含消息的接收者,用于确认发送者的签名、以太坊账户余额、要发送的数据和被称为STARTGAS和GASPRICE的两个数值。
- 交易吞吐量(TPS):
- 交易吞吐量指的是以太坊每秒能够处理的交易数量
- 计算方式:TPS=(gasLimit/gas)/出块速度,目前以太坊上gasLimit大小为6771518。在以太坊上消耗gas最少的是发送支付交易,支付交易消耗21000wei,而如果以以太坊出块的平均速度为15s(可能已经不止15s)算,可以算出TPS=6771518/21000/15=21(当前的TPS已经小于这个值)
- Gas
- Gas就是我们说的燃料、以太坊每一笔交易都会被收取一定数量的燃料gas,设置Gas的目的是限制交易执行所需的工作量,同时为交易的执行支付费用。
- 无论执行到什么位置,一旦Gas被耗尽就会触发一个out-of-gas的异常。同时,当前调用所做的所有状态修改都将被回滚
- GasPrice其实就是一个Gas单位的价格,以gwei为单位表示
- gasPrice是由发起交易的人规定的
- gasLimit代表了这个交易在执行过程中最多被允许消耗的gas数量
- 计算方法:付款金额=Gas数量*GasPrice
- 注意 在交易完成后 如果实际支付的gas小于gasLimit,剩余的gas会以ether的方式返回给交易发起者 实际交易费=gasUsed*gasPrice;
- 如果在执行交易的过程中,实际消耗的gas大于gasLimit,会返回余额不足的错误,同时,已消耗的gas不会退还
- 存储、主存和栈
- 存储:每个账户都有一块永久的内存区域,被称为存储。形式为key-value,key和value的长度均为256位
- 主存:合约执行每次消息调用时都有一块新的被清除过的主存。
- 栈:EVM是基于栈的虚拟机。栈最大有1024个元素,每个元素有256位。
- 指令集
- EVM的指令集被刻意保存在最小规模,以尽可能的避免可能导致的共识问题的错误。所有指令集都是针对256位这个基本的数据单位进行操作,具备常用的算术、位、逻辑和比较操作,也可以进行条件跳转和无条件跳转
- 消息调用
- 合约可以通过消息调用的方式来调用其它合约,或者发送以太币到非合约账户。
- 代码调用和库
- 以太坊中存在一种特殊类型的消息调用,被称为callcode。它和消息调用几乎完全一样,只是加载来自目标地址的代码,将会在发起调用合约上下文中运行。这意味着一个合约可以在运行时从另外一个地址动态加载代码
- 库-Library:为了实现合约代码的复用
- 以太坊的状态转换
- 状态转换是指在一个交易发生时,以太坊从一个正确的状态转换到下一个正确的状态的过程
- 以太坊客户端
- 主要包含geth,mist,wallet
3.3 以太坊核心词汇详解
猜你喜欢
转载自blog.csdn.net/u014396366/article/details/82319312
今日推荐
周排行