2022.2.16
以太坊整体介绍
《精通以太坊》( Mastering Ethereum ) https://github.com/ethereumbook/ethereumbook
《以太坊白皮书》 ( A Next-Generation Smart Contract and Decentralized Application Platform )
《以太坊黄皮书》(《以太坊:一种安全去中心化的通用交易账本 拜占庭 版本》)
以太坊官方文档 ( Ethereum Homestead Documentation ) http://www.ethdocs.org/en/latest/index.html
Solidity官方文档 https://solidity.readthedocs.io/en/latest/
• 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/
Block #200,000 "Ice Age" - 引入指数难度增加的硬分叉,促使向Proof-of-Stake过渡。
Block #1,192,000 “The DAO" - 扭转了被攻击的DAO合约并导致以太坊和以太坊经典分裂成两个竞争系统的硬分叉。
Block #2,463,000 “Tangerine Whistle” - 改变某些IO运算的 gas 计算,并从拒绝服务攻击中清除累积状态,该攻击利用了这些操作的低gas成本。
Block #2,675,000
“Spurious Dragon” - 一个解决更多拒绝服务攻击媒介的硬分叉,以及另一种状态清除。此外,还有重放攻击保护制。
• P2P网络
在以太坊在以太坊主网络上运行,该网络可在TCP端口30303上寻址,并运行一个名为ÐΞVp2p的协议。
• 交易(Transaction)
以太坊交易是网络消息,其中包括发送者(sender),接收者(receiver),值(value) 和数据的有效载荷(payload)。
• 以太坊虚拟机(EVM)
以太坊状态转换由以太坊虚拟机(EVM)处理,这是一个执行字节码(机器语言指令)的基于堆栈的虚拟机。
• 数据库(Blockchain) 以太坊的区块链作为数据库(通常是 Google的LevelDB)本地存储在每个节点上,包含序列化后的交易和系统状态。
• 客户端 以太坊有几种可互操作的客户端软件实现,其中最突出的是 Go-Ethereum(Geth)和Parit
账户(Account)
包含地址,余额和随机数,以及可选的存储和代码的对象。
地址(Address)
一般来说,这代表一个EOA或合约,它可以在区块链上接收或发送交易。
更具体地说,它是 ECDSA公钥的 keccak 散列的最右边的160位。
交易(Transaction)
可以发送以太币和信息
向合约发送的交易可以调用合约代码,并以信息数据为函数参数
向空用户发送信息,可以自动生成以信息为代码块的合约账户
gas
以太坊用于执行智能合约的虚拟燃料。以太坊虚拟机使用核算机制来衡量gas的消耗量并限制计算资源的消耗。
以太币的发行规则:
挖矿前(Pre-mine,Genesis)
2014年7月/8月间,为众筹大约发行了7200万以太币。这些币有的时候被称之为“矿前”。众筹阶段之后,以太币每年的产量基本稳定,被限制不超过7200万的25%
挖矿产出(Mining)
区块奖励(block reward)
每产生一个新区块就会有一笔固定的奖励给矿工,初始是5个以太币,现在是3个(大都会阶段)。
叔块奖励(uncle reward)
有些区块被挖得稍晚一些,因此不能作为主区块链的组成部分。比特币称这类区块为“孤块”,并且完全舍弃它们。但是,以太币称它们为“叔块”(uncles),并且在之后的区块中,可以引用它们。如果叔块在之后的区块链中作为叔块被引用,每个叔块会为挖矿者产出区块奖励的7/8。这被称之为叔块奖励。
叔块引用奖励(uncle referencing reward)
矿工每引用一个叔块,可以得到区块奖励的1/32作为奖励(最多引用两个叔块)
以太币产量未来的变化
以太坊出块机制从工作量证明(PoW)转换为股权证明(PoS)后,以太币的发行会有什么变化尚未有定论。股权证明机制将使用一个称为Casper的协议。在Casper协议下,以太币的发行率将大大低于目前幽灵(GHOST)协议下的发行率
• 普通区块收入 — 固定奖励(挖矿奖励),每个普通区块都有 — 区块内包含的所有程序的 gas 花费的总和 — 如果普通区块引用了叔块,每引用一个叔块可以得到固定奖励的 1/32
• 叔块收入 叔块收入只有一项,就是叔块奖励,计算公式为: 叔块奖励 = ( 叔块高度 + 8 – 引用叔块的区块高度 ) * 普通区块奖励 / 8
• 以太坊出块时间:设计为12秒,实际14~15秒左右
• 快速确认会带来区块的高作废率,由此链的安全性也会降低
• “幽灵”协议:Greedy Heaviest Observed SubTree, ”GHOST”
——计算工作量证明时,不仅包括当前区块的祖区块,父区块,还要包括 祖先块的作废的后代区块(“叔块”),将他们进行综合考虑。 ——目前的协议要求下探到第七层(最早的简版设计是五层),也就是说, 废区块只能以叔区块的身份被其父母的第二代至第七代后辈区块引用,而 不能是更远关系的后辈区块。 ——以太坊付给以“叔区块”身份为新块确认作出贡献的废区块7/8的奖励, 把它们纳入计算的“侄子区块”将获得区块奖励的1/32,不过,交易费用不 会奖励给叔区块。
• 基于以太坊可以创建智能合约(Smart Contract)来构建去中心化应用(Decentralized Application,简称为 DApp)
• 以太坊的构想是成为 DApps 编程开发的平台
• DApp至少由以下组成: 1 区块链上的智能合约 2 Web前端用户界面
• 代币(token)也称作通证,本意为“令牌”,代表有所有权的资产、 货币、权限等在区块链上的抽象
• 可替代性通证(fungible token):指的是基于区块链技术发行的,互相可以替代的,可以接近无限拆分的token
• 非同质通证(non-fungible token): 指的是基于区块链技术发行的, 唯一的,不可替代的,大多数情况下不可拆分的token,如加密猫 (CryptoKitties)