目录

以太坊的组成部分

P2P网络

交易(Transaction)

以太坊虚拟机(EVM)

数据库(Blockchain)- 以太坊账本

客户端

以太坊中的重要概念

账户(Account)

普通账户(EOA)

合约账户(Contract)

地址(Address)

交易(Transaction)

gas

以太坊货币

以太币单位

以太发行规则

挖矿前(Pre-mine, Genesis)

挖矿产出(Mining)

以太币产量未来的变化

以太坊的挖矿产出

区块奖励(Block rewards)

叔块奖励(Uncle rewards)

叔块引用奖励(Uncle referencing rewards)

以太坊区块收入

普通区块收入

叔块收入

“幽灵”协议(GHOST)

以太坊和图灵完备

以太坊钱包

私钥、公钥和地址

私钥

公钥

地址


以太坊的组成部分

P2P网络

以太坊在以太坊主网络上运行,该网络可在TCP端囗30303上寻址,并运行一个名为 ÐΞVp2p 的协议。

Ð :DApp

Ξ :以太坊标志

交易(Transaction)

以太坊交易是网络消息,其中包括发送者(send),接收者(receiver),值(value)和数据的有效载荷(payload)。

以太坊虚拟机(EVM)

以太坊状态转换由以太坊虚拟机(EVM)处理,这是一个执行字节码(机器语言指令)的基于堆栈的虚拟机。

数据库(Blockchain)- 以太坊账本

以太坊的区块链作为数据库(通常是Google的LevelDB)存储在每个节点上,包含序列化后的交易 和系统状态。

LevelDB是非关系型数据库。

客户端

以太坊有几种可供操作的客户软件实现,其中最突出的是Go-Ethereum(Geth)。

以太坊中的重要概念

账户(Account)

包含地址,余额和随机数,以及可选的存储和代码对象。

普通账户(EOA)

普通账户的存储和代码均为空

合约账户(Contract)

合约账户包含存储和代码

地址(Address)

一般来说,这代表一个EOA或合约,它可以在区块链上接收或发送交易。更具体地说,它是ECDSA公钥的keccak散列的最右边的160位。

以太坊地址生成与比特币地址生成一样:私钥生成公钥,公钥生成地址

交易(Transaction)

可以发送以太币和信息

向合约发送的交易可以调用合约代码,并以信息数据为函数参数

向空用户发送信息,可以自动生成以信息为代码块的合约账户

gas

以太坊用于执行智能合约的虚拟燃料。以太坊虚拟机使用核算机制来衡量gas的消耗量并限制计算资源的消耗。

以太坊货币

以太币单位

以太坊的货币单位称为以太(ether),也可以表示为ETH或符号 Ξ 。

ether被最小单位为wei,1ether = 10^{\18}wei

以太的值总是在以太坊内部表示为以wei表示的无符号整数值。

以太的各种单位都有一个使用国际单位制(SI)的科学名称和一个通用名称。 

值(wei)指数通用名称国际单位(SI)名称
11weiwei
1,00010^{\3}babbagekilowei or femtoether
1,000,00010^{\6}lovelacemegawei or picoether
1,000,000,00010^{\9}shannongigawei or nanoether
1,000,000,000,00010^{\12}szabomicroether or micro
1,000,000,000,000,00010^{\15}finneymilliether or milli
1,000,000,000,000,000,00010^{\18}etherether
1,000,000,000,000,000,000,00010^{\21}grandkiloether
1,000,000,000,000,000,000,000,00010^{\24}megaether

以太发行规则

挖矿前(Pre-mine, Genesis)

2014年7月到8月之间,为了众筹大约发行了7200万以太币。这些币有的时候被称为“矿前”。众筹阶段之后,以太币每年的产量基本稳定,被限制不超过7200万的25%,即不超过1800万。

挖矿产出(Mining)

区块奖励(block reward)

叔块奖励(uncle reward)

叔块引用奖励(uncle referencing reward)

以太币产量未来的变化

以太坊出块机制从工作量证明(PoW)转换为权益证明(PoS)后,以太币的发行会有什么变化尚未有定论。权益证明机制将使用一个称为Casper的协议。在Casper协议下,以太币的发行率将大大低于目前的幽灵协议(GHOST)下的发行率。 

以太坊的挖矿产出

区块奖励(Block rewards)

每产生一个新区块就会有一笔固定的奖给矿工,初始是5个以太币,现在是2个以太币(拜占庭阶段由5ETH降至3ETH,君士坦丁阶段由3ETH降至2ETH)。

叔块奖励(Uncle rewards)

有些区块被挖得稍晚一些,因此不能作为主区块链的组成部分。比特币称这类区块为“孤块”,并且完全舍弃它们。但是以太坊称它们为“叔块”,并且在之后的区块中可以引用它们。如果叔块在之后的区块链中作为叔块被引用,每个叔块会为挖矿者产出区块奖励的7/8,这被称为叔块奖励。

叔块引用奖励(Uncle referencing rewards)

矿工每引用一个叔块,可以得到区块奖励的1/32作为奖励(最多引用2个叔块)。

这样的一套基于POW的奖励机制,被称为以太坊的“幽灵协议”。

以太坊区块收入

普通区块收入

固定奖励(挖矿奖励),每个普通区块都有

区块内包含所有程序的gas花费的总和

如果普通区块引用了叔块,每引用一个叔块可以得到固定奖励的1/32

叔块收入

叔块收入只有一项,就是叔块奖励,计算公式为:

叔块奖励 = (叔块高度 + 8 - 引用叔块的区块高度) * 普通区块奖励 / 8

“幽灵”协议(GHOST)

以太坊出块时间:设计为12秒,实际在14~15秒左右

快速确认会带来区块的高作废率,由此链的安全性也会降低

“幽灵”协议:Greedy Heaviest Observed SubTree

计算工作量证明时,不仅包括当前区块的祖区块、父区块,还包含祖先区块的作废的后代区块(叔块),将他们进行综合考虑。

目前的协议要求下探到第七层(最早的简版设计是五层),也就是说,废区块只能以叔区块的身份被其父母的第二代至第七代后辈区块引用,而不是更远关系的后辈区块。

以太坊给以“叔区块”身份为新区块确认作出贡献的废区块7/8的奖励,把它们纳入计算的“侄子区块”将获得区块奖励的1/32,不过,交易费用不会奖励给叔区块。

 P2P网络把信息广播给全网覆盖99%的节点大约需要2s

 引用叔块为了鼓励大家挖矿,解决分叉问题

以太坊和图灵完备

1936年,英国数学家艾伦.图灵(Alan Turing)创建了一个计算机的数学模型,它由一个控制器、一个读写头和一根无限长的工作纸带组成。纸带起着存储的作用,被分成一个个的小方格(可以看成磁带);读写头能够读取纸带上的信息,以及将运算结果写进纸带;控制器则负责根据程序对搜集到的信息进行处理。在每个时刻,机器头都在从当前纸带上读入一个方格的信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动纸带。

如果一个系统可以模拟任何图灵机,它就被定义为“图灵完备”(Turing Complete)的。这种系统称为通用图灵机(UTM)。

以太坊能够在以太坊虚拟机的状态机中执行存储程序,同时向内存读取和写入数据,使其成为图灵完备的系统,因此成为通用图灵机。考虑到有限存储器的限制,以太坊可以计算任何由任何图灵机计算的算法。

简单来说,以太坊中支持循环语句,理论上可以运行“无限循环”程序。

以太坊钱包

以太坊钱包是进入以太系统的门户。它包含了私钥,可以创建和广播交易。

MetaMask:一个浏览器扩展钱包,可在浏览器中运行。

Jaxx:一款多平台、多币种的钱包,可在各种操作系统上运行,包括Android、IOS、Windows、Mac和Linux。

MyEtherWallet(MEW):一个基于web的钱包,可以在任何浏览器中运行。

Emerald Wallet:旨在与ETC配合使用,但与其他基于以太坊的区块链兼容。

私钥、公钥和地址

私钥

以太坊的私钥实际上是一个256位的随机数,用于发送以太的交易中创建签名来证明自己对资金的所有权。

公钥

公钥是私钥通过椭圆曲线加密secp256k1算法单向生成的512位数。

地址

地址是由公钥的Keccak-256单向哈希,取最后20个字节(160位)派生出来的标识符。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐