首页 > 热点新闻 > 白话白皮书丨以太坊EHT,代币经济V神
转载  

白话白皮书丨以太坊EHT,代币经济V神

摘要:以太坊被称为是区块链2.0,主要是它提供了一个去中心化应用DAPP平台,让用户自定义智能合约。那这个框架解决了什么问题?如何运转? 1.以太坊(Ethereum)的框架结构 简单说,以太坊=区块链+智能合约,开发者在以太坊上可以开发任意的应用,实现任意的智能合

以太坊被称为是区块链2.0,主要是它提供了一个去中心化应用DAPP平台,让用户自定义智能合约。那这个框架解决了什么问题?如何运转?
1.以太坊(Ethereum)的框架结构

简单说,以太坊=区块链+智能合约,开发者在以太坊上可以开发任意的应用,实现任意的智能合约。

 


 

以上结构中的创新点是以太坊虚拟机(Ethereum Virtual Machine),合约存储在以太坊的区块上,并被编译为以太坊虚拟机字节码,通过虚拟机来运行智能合约。由于这个中间层存在,以太坊可实现多种语言的合约代码编译,网络中的每个以太坊节点运行EVM实现并执行相同的指令。
其他相关的应用工具有:钱包、浏览器、控制台、社区。

 


 

2.以太坊的区块结构
简单说,以太坊区块=基于交易的状态机,根据以太坊的状态机,我们从创世纪状态(genesis state)开始。这差不多类似于一片空白板,在网络中还没有任何交易的产生状态。当交易被执行后,这个创世纪状态就会转变成最终状态。在任何时刻,这个最终状态都代表着以太坊当前的状态。

以太坊的状态有百万个交易。这些交易都被“组团”到一个区块中。一个区块包含了一系列的交易,每个区块都与它的前一个区块链接起来。

在此创新点在于叔区块,以太坊15秒出块,这大大增加孤块(亦是叔块)的产生,为了鼓励旷工引用叔块,使主链获得更多安全保障,以太坊设计了一套规则发放奖励。同时,以太坊使用了一个“ghost协议”的数学机制,保证必须选择一个在其上完成计算最多的路径,成为主链。

 


 

从上图区块内容看,创新点有:费用Gas、Ommers、默克尔-帕夏尔树(Merkle Patricia Tree)。
费用Gas:是用来衡量在一个具体计算中要求的费用单位。gas price就是你愿意在每个gas上花费Ether的数量,以“gwei”进行衡量。“Wei”是Ether的最小单位,1Ether=10^18Wei. 1gwei=10^9 Wei。

对每个交易,发送者设置gas limit和gas price。gas limit和gas price就代表着发送者愿意为执行交易支付的Wei的最大值。这个可防止出现无限循环程序,让系统瘫痪。Ommers:是一个区块的父区块与当前区块父区块的父区块是相同的。目的就是为了帮助奖励矿工纳入这些孤区块。矿工包含的ommers必须是有效的,也就是ommers必须在父区块的第6个子区块之内或更小范围内。在第6个子区块之后,陈旧的孤区块将不会再被引用。
默克尔-帕夏尔树:状态树——代表访问区块后的整个状态,如账户余额、合约存储、合约代码以及账户随机数等。交易树——代表区块中发生的所有交易历史,这类交易也被认为是一个消息,包含签名的数据包等。在以太坊,交易分为3类:转账交易、合约创建交易、合约执行交易。收据树——代表每笔交易对应的收据,是一个数据的统计记录,记录了交易执行后的特征数据。目的是为了方便各种数据查询。
同时,区块链就是一群节点来维持的,有两种节点类型:全节点和轻节点。全节点通过下载整条链来进行同步,从创世纪块到当前块,执行其中包含的所有交易。通常,矿工会存储全节点,因为他们在挖矿过程中需要全节点。也有可能下载一个全节点而不用执行所有的交易。无论如何,一个全节点包含了整个链。不过除非一个节点需要执行所有的交易或轻松访问历史数据,不然没必要保存整条链。这就是轻节点概念的来源。由于轻节点可以访问块的头,而头中包含了3个tries的Hash,所有轻节点依然可以很容易生成和接收关于交易、事件、余额等可验证的答案。

3.以太坊的交易过程
以太坊协议最复杂的部分:交易的执行。假设你发送了一笔交易给以太坊网络处理,将以太坊状态转换成包含你的交易这个过程到底发生了什么?

 


 

Account Nonce:表示交易的发送者已发送过的交易数,与账户结构中定义的随机数对应。
GasLimit与GasPrice:Limit表示交易执行所需的计算量,Price是单价,两者相乘是所需的手续费。

To:接收方的地址。在合约创建交易中,合约账户的地址还没有存在,所以值先空着。

Value:从发送者转移到接收者的Wei数量。在合约创建交易中,value作为新建合约账户的开始余额。

v,r,s:用于产生标识交易发生着的签名。

init(只有在合约创建交易中存在):用来初始化新合约账户的EVM代码片段。init值会执行一次,然后就会被丢弃。当init第一次执行的时候,它返回一个账户代码体,也就是永久与合约账户关联的一段代码。

data(可选域,只有在消息通信中存在):消息通话中的输入数据(也就是参数)。例如,如果智能合约就是一个域名注册服务,那么调用合约可能就会期待输入域例如域名和IP地址。

什么是账户?每个账户都有一个与之关联的状态(state)和一个20字节的地址(address)。在以太坊中一个地址是160位的标识符,用来识别账户的。这两种类型的账户:①外部拥有的账户,被私钥控制且没有任何代码与之关联。②合约账户,被它们的合约代码控制且有代码与之关联。


 

账户状态有四个组成部分,不论账户类型是什么,都存在这四个组成部分:
nonce:如果账户是一个外部拥有账户,nonce代表从此账户地址发送的交易序号。如果账户是一个合约账户,nonce代表此账户创建的合约序号。

balance:此地址拥有Wei的数量。

storageRoot: Merkle Patricia树的根节点Hash值(我们后面在解释Merkle树)。Merkle树会将此账户存储内容的Hash值进行编码,默认是空值。

codeHash:此账户EVM(以太坊虚拟机,后面细说)代码的hash值。对于合约账户,就是被Hash的代码并作为codeHash保存。对于外部拥有账户,codeHash域是一个空字符串的Hash值。

现在进入正题,交易的三种类型:

  1. 转账交易:一个账户往另外一个账户转账发送以太币。
  2. 合约创建交易:合约在创建时是需要消耗以太币。
  3. 合约执行交易:在执行过程中,发送者没有提供足够的gas来执行交易,那么交易执行就会出现“gas不足”然后被认为是无效的。在这种情况下,交易处理就会被终止以及所有已改变的状态将会被恢复,最后我们就又回到了交易之前的状态—完完全全的之前状态就像这笔交易从来没有发生。因为机器在耗尽gas之前还是为计算做出了努力,所以理论上,将不会有任何的gas被返回给发送者。
Tags:
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。