以太坊的出现
2014年1月,Vitalik Buterin(V神)在自己任编辑的比特币杂志上发布了《以太坊:一个下一代智能合约和去中心化应用平台》,7月,启动以太坊众筹募资。2015年7月30日,以太坊主网上线,以太坊系统诞生。
发展阶段:2015年7月30日-前言(Frontier) -> 2016年3月家园(Homestead) -> 大都会(Metropolis)
以太坊基本概念
组成部分
- P2P网络:以太坊在以太坊主网络上运行,该网络可在TCP端口30303上寻址,并运行一个名为DEVp2p的协议。
- 交易(Transaction):以太坊交易是网络消息,其中包括发送者、接受者、值和数据的有效载荷(payload)。
- 以太坊虚拟机(EVM):以太坊状态转换由以太坊虚拟机(EVM)处理,这是一个执行字节码(机器语言指令)的基于堆栈的虚拟机。
- 数据库(Blockchain):以太坊的区块链作为数据库(通常是Google的LevelDB)本地存储在每个节点上,包含序列化的交易和系统状态。
- 客户端:以太坊有几种可互操作的客户端软件实现,其中最突出的是Go-Ethereum(Geth)和Parity。实现以太坊规范并通过p2p网络与其它以太坊客户端进行通信。
重要概念
- 账户(Account):包含地址,余额和随机数,以及可选的存储和代码的对象。
- 普通账户(EOA),存储和代码均为空
- 合约账户(Contract),包含存储和代码
- 地址(Address):一般来说,这代表一个EOA或合约,它可以在区块链上接收或发生交易。更具体地说,它是ECDSA公钥的keccak散列的最右边的160位。
- 交易(Transaction)
- 可以发送以太币和信息
- 向合约发送的交易可以调用合约代码,并以信息数据为函数参数
- 向空用户发送信息,可以自动生成以信息为代码块的合约账户
-
gas:以太坊用于执行智能合约的虚拟燃料。以太坊虚拟机使用核算机制来衡量gas的消耗量并限制计算资源的消耗。
- 以太坊全节点:整个主链的一个副本,存储并维护链上的所有数据,并随时验证新区块的合法性。
- 远程客户端:不存储区块链的本地副本或验证块和交易,一般只提供钱包的功能,MetaMask就是这样的客户端。
- 轻节点:不保存链上的区块历史数据,只保存区块链当前的状态。可以对块和交易进行验证。
运行全节点的要求
- 最低要求
- 双核以上CPU
- 硬盘存储可硬空间至少80GB
- 如果是SSD,需要4GB以上RAM,如果是HDD,至少8GB RAM
- 8 MB/s下载带宽
- 推荐配置
- 四核以上CPU
- 15GB RAM
- 500GB SSD
- 25+ MB/s下载带宽
以太坊的货币
以太坊的货币单位称为以太(ether),也可以表示为ETH。ether更小的单位wei,1 ether = 10^18 wei
以太币的发行规则:
- 挖矿前:众筹大约发行了7200万以太币,每年被限制不超过7200万的25%
- 挖矿产出
- 区块奖励:和比特币类似。每产生一个新区块就会有一笔固定的奖励给矿工,初始是5个以太币,现在是2个。
- 叔块奖励:每个叔块会为挖矿者产出区块奖励的7/8。
- 叔块引用奖励:矿工每引用一个叔块,可以得到区块奖励的1/32作为奖励(最多引用两个叔块)
这样的一套基于POW的奖励机制,被称为以太坊的“幽灵(GHOST)协议”。以太坊出块时间:设计为12秒,实际14~15秒左右
代币(Token)
代币也称作通证,代表有所有权的资产、货币、权限等在区块链上的抽象
私钥、公钥和地址
- 私钥(Private Key):一个256位的随机数,用于发送以太的交易中创建签名来证明自己对资金的所有权。
- 公钥(Public Key):公钥是由私钥通过椭圆曲线加密secp256k1算法单向生成的512位数。
- 地址(Address):是由公钥的Keccak-256单向哈希,取最后20个字节(160位)派生出来的标识符,40个字符。
以太坊应用
- 基于以太坊创建新的加密货币
- 基于以太坊创建域名注册系统、博彩系统
- 基于以太坊开发去中心化的游戏,比如:CryptoKitties
工具:remix
MetaMask钱包
通过Chrome浏览器安装MetaMask钱包扩展,创建账号,需要输入MetaMask密码和记住助记词。
获取测试以太
切换到Ropsten测试网络,点击“购买”,然后点击“测试水管”,MetaMask将打开一个新的网页:https://faucet.metamask.io/
按绿色“request 1 ether from faucet”按钮即可。点击交易地址可在区块浏览器中查看详情。
比特币和以太坊的对比
BitCoin | Ethereum | |
---|---|---|
设计定位 | 现金系统 | 去中心化应用平台 |
数据组成 | 交易列表(账本) | 交易和账户状态 |
交易对象 | UTXO | Accounts |
代码控制 | 脚本 | 智能合约 |