以太坊综述

2022.2.16

主要内容

以太坊整体介绍

主要参考资料

涉及工具

• MetaMask - 浏览器插件钱包 • Remix - 基于浏览器的 Solidity 在线编辑器 • Geth -以太坊客户端(go语言) • web3.js – 以太坊 javascipt API库 • Ganache – 以太坊客户端(测试环境私链) • Truffle – 以太坊开发框架

环境准备

• Chrome浏览器(最新版本 70.0.3538.67) • Linux 系统或虚拟机(ubuntu 16.04.3) 需要安装:go(1.9), git(2.7.4), node(9.0.0), npm(5.7.1) • 文本编辑器(VisualCode) • 科学上网工具

区块链(公链)发展简史

以太坊的出现

• 2014年1月,Vitalik Buterin在自己任 编辑的比特币杂志(Bitcoin Magazine) 上发表了《以太坊:一个下一代智能合约和去中心化应用平台》(Ethereum: A Next-Generation Smart Contract and Decentralized Application Platform)

• Vitalik Buterin

• 2014年的迈阿密比特币会议中,布特林宣布了以太坊项目,并且提出了多项创新性区块链技术,该年7月,启动以太坊众筹募资,募得3.1 万枚比特币(当时约合1840万美元)

• 2015年7月30日,当时作为以太坊项目CCO的成员StephanTual在官方博客上正式宣布了以太坊系统的诞生,以太坊主网上线

发展阶段

重大分叉

https://solidity.readthedocs.io/en/latest/

以太坊特点

 

以太坊的组成部分

P2P网络

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

交易(Transaction)

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

以太坊虚拟机(EVM)

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

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

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

以太坊中的重要概念

以太坊货币

以太币的发行规则:

 

以太坊区块收入

• 普通区块收入 — 固定奖励(挖矿奖励),每个普通区块都有 — 区块内包含的所有程序的 gas 花费的总和 — 如果普通区块引用了叔块,每引用一个叔块可以得到固定奖励的 1/32

• 叔块收入 叔块收入只有一项,就是叔块奖励,计算公式为: 叔块奖励 = ( 叔块高度 + 8 – 引用叔块的区块高度 ) * 普通区块奖励 / 8

“幽灵”(GHOST)协议

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

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

• “幽灵”协议:Greedy Heaviest Observed SubTree, ”GHOST”

——计算工作量证明时,不仅包括当前区块的祖区块,父区块,还要包括 祖先块的作废的后代区块(“叔块”),将他们进行综合考虑。 ——目前的协议要求下探到第七层(最早的简版设计是五层),也就是说, 废区块只能以叔区块的身份被其父母的第二代至第七代后辈区块引用,而 不能是更远关系的后辈区块。 ——以太坊付给以“叔区块”身份为新块确认作出贡献的废区块7/8的奖励, 把它们纳入计算的“侄子区块”将获得区块奖励的1/32,不过,交易费用不 会奖励给叔区块。

 

以太坊和图灵完备

去中心化应用

• 基于以太坊可以创建智能合约(Smart Contract)来构建去中心化应用(Decentralized Application,简称为 DApp)

• 以太坊的构想是成为 DApps 编程开发的平台

• DApp至少由以下组成: 1 区块链上的智能合约 2 Web前端用户界面

以太坊应用

代币(Token)

• 代币(token)也称作通证,本意为“令牌”,代表有所有权的资产、 货币、权限等在区块链上的抽象

• 可替代性通证(fungible token):指的是基于区块链技术发行的,互相可以替代的,可以接近无限拆分的token

• 非同质通证(non-fungible token): 指的是基于区块链技术发行的, 唯一的,不可替代的,大多数情况下不可拆分的token,如加密猫 (CryptoKitties)

名词解释