以太坊学习总结——(一)以太坊简介

以太坊学习总结

第一章. 以太坊简介

目录

    • 以太坊学习总结
      • 第一章. 以太坊简介
        • 1.为什么要学习以太坊
        • 2.学习目标
        • 3.主要参考资料
        • 4.涉及工具
        • 5.环境准备
        • 6.发展阶段:
        • 7.以太坊特点
        • 8.以太坊的组成部分
        • 9.以太坊中的重要概念
        • 10.以太坊的货币
        • 11.以太坊的挖矿产出
        • 12.以太坊区块收入
        • 13.“幽灵”( GHOST)协议
        • 14.以太坊和图灵完备
        • 15.去中心化应用
        • 16.以太坊应用
        • 17.代币(Token)
        • 18.名词解释

1.为什么要学习以太坊

  • 庞大的开发者社区,目前最大的区块链开发平台
  • 相对较成熟,有代表性,资料众多
  • 以应用入手,学习曲线不那么陡峭
  • 与JavaScript结合紧密,方便开发人员上手

2.学习目标

  • 掌握以太坊的基础概念和工作原理
  • 理解以太坊与比特币的联系和区别
  • 掌握以太坊客户端的使用
  • 深入理解智能合约
  • 掌握Solidity语法,并能够写出复杂的合约
  • 掌握web3.js的调用,并能够实现具体的DApp
  • 综合运用各种工具,完成较为复杂的项目

3.主要参考资料

  • 《精通以太坊》( Mastering ethereum)
    https:/github.com/ethereumbook/ethereumbook

  • 《以太坊白皮书》( A Next-Generation Smart contract and
    Decentralized Application Platform)
    https:/github.com/ethereum/wiki/wiki/white-panpermubconiethersmwirvitiwie

  • 《以太坊黄皮书》(《以太坊:一种安全去中元化的通用父易
    账本拜占庭版本》

  • 以太坊官方文档( Ethereum homestead documentation)
    http://www.ethdocs.org/en/latest/index.html

  • Solidity官方文档
    https://solidity.readthedocs.io/en/latest

4.涉及工具

MetaMask-浏览器插件钱包

Remix-基于浏览器的Solidity在线编辑器

Geth-以太坊客户端(go语言)

web3.js-以太坊JavaScript API库

Ganache-以太坊客户端(测试环境私链)

Truffle-以太坊开发框架

5.环境准备

  • Chrome浏览器

  • Linux系统或虚拟机(ubuntu 16.04.3)

    需要安装:go(1.9),git(2.7.4),node(9.0.0),npm(5.7.1)

  • 文本编辑器

  • 科学上网工具

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gtQUMCat-1584461949707)(D:\work\区块链\以太坊重学\img\3.png)]

6.发展阶段:

  • "前沿"(Frontier)-Block #0

以太坊的初始阶段,持续时间为2015年7月30日至2016年3月

  • "家园"(Homestead)-Block #1150000

以太坊的第二个阶段,与2016年3月推出

  • "大都会"(Metropolis)Block #4370000

以太坊的第三个阶段,与2017年10月推出"拜占庭"(Byzantium)是Metropolis的两个硬分叉中的第一个,也是我们现在所处的阶段。

​ “君士坦丁堡”(Constantinople)

Metropolis阶段的第二个部分,计划于2018年推出。预计将包括切换到回合POW/POS共识算法,以及其他的变更。

  • “宁静”(Serenity)

以太坊的第四个也是最后一个阶段。Serenity尚未有计划地发布日期。

重大分叉

Block #1,192,000

“The DAO”-扭转了被攻击的DAO合约并导致以太坊和以太坊经典分裂成两个竞争系统的硬分叉。

7.以太坊特点

  • 以太坊是“世界计算机”,这代表它是一个开源的、全球分布的计算基础设施
  • 执行称为智能合约( smart contract)的程序
  • 使用区块链来同步和存储系统状态以及名为以太币( ether)的加密货币,以计量和约束执行资源成本
  • 本质是一个基于交易的状态机( transaction- based state machine)
  • 以太坊平台使开发人员能够构建具有内置经济功能的强大去中心化应用程序(DApp);在持续自我正常运行的同时,它还减少或消除了审查,第三方界面和交易对手风险

8.以太坊的组成部分

  • P2P网络
    以太坊在以太坊主网络上运行,该网络可在TCP端口30303上寻址,并运行一个名为vp2p的协议。
  • 交易( Transaction)
    以太坊交易是网络消息,其中包括发送者( sender),接收者( reelⅳer),值( value)和数据的有效载荷( payload)。
  • 以太坊虚拟机(EVM)
    以太坊状态转换由以太坊虚拟机(EVM)处理,这是一个执行字节码(机器语言指令)的基于堆栈的虚拟机。
  • 数据库( Blockchain)
    以太坊的区块链作为数据库(通常是 Google的 LeveldB)本地存储在每个节点上,包含序列化后的交易和系统状态
  • 客户端
    以太坊有几种可互操作的客户端软件实现,其中最突出的是Go- Ethereum(Geth)和 Parity

9.以太坊中的重要概念

  • 账户( Account)
    包含地址,余额和随机数,以及可选的存储和代码的对象。
    –普通账户(EOA),存储和代码均为空
    –合约账户( Contract),包含存储和代码
  • 地址( Address)
    一般来说,这代表一个EOA或合约,它可以在区块链上接收或发送交易。更具体地说,它是 ECDSA公钥的 keccak散列的最右边的160位。
  • 交易( Transaction)
    –可以发送以太币和信息
    –向合约发送的交易可以调用合约代码,并以信息数据为函数参数
    –向空用户发送信息,可以自动生成以信息为代码块的合约账户
  • gas
    以太坊用于执行智能合约的虚拟燃料。以太坊虚拟杋使用核算机制来衡量gas的消耗量并限制计算资源的消耗。

10.以太坊的货币

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

以太币的发行规则

  • 挖矿前(Pre-mine, Genesis)
    2014年7月/8月间,为众筹大约发行了7200万以太币。这些币有的时候被称之为“矿前”。众筹阶段之后,以太币每年的产量基本稳定,被限制不超过7200万的25%
  • 挖矿产出( Mining)
    –区块奖励( block reward)
    –叔块奖励( uncle reward)
    –叔块引用奖励( uncle referencing reward)
  • 以太币产量未来的变化
    以太坊出块机制从工作量证明(PoW)转换为股权证明(PoS)后,以太币的发行会有什么变化尚未有定论。股权证明机制将使用一个称为 Casper的协议。在 Casper协议下,以太币的发行率将大大低于目前幽灵( GHOST)协议下的发行率。

11.以太坊的挖矿产出

  • 区块奖励( Block rewards)=-
    每产生一个新区块就会有一笔固定的奖励给矿工,初始是5个以太币,现在是3个。
  • 叔块奖励( Uncle rewards)
    有些区块被挖得稍晚一些,因此不能作为主区块链的组成部分。比特币称这类区块为
    “孤块”,并且完全舍弃它们。但是,以太币称它们为“叔块〃( uncles),并且在之
    后的区块中,可以引用它们。如果叔块在之后的区块链中作为叔块被引用,每个叔块
    会为挖矿者产出区块奖励的78。这被称之为叔块奖励。
  • 叔块引用奖励( Uncle referencing rewards)
    矿工每引用一个叔块,可以得到区块奖励的1/32作为奖励(最多引用两个叔块)

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

12.以太坊区块收入

  • 普通区块收入

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

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

13.“幽灵”( GHOST)协议

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

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

“幽灵”协议: Greedy Heaviest observed SubTree," GHOST

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

14.以太坊和图灵完备

  • 1936年,英国数学家艾伦•图灵(Alan Turing)创建了一个计算机的数学模型,它由一个控制器、一个读写头和一根无限长的工作带组成。纸带起着存储的作用,被分成一个个的小方格(可以看成磁带读写头能够读取纸带上的信息,以及将运算结果写进纸带;控制器则负责根据程序对搜集到的信息进行处理。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动纸带。
  • 如果一个系统可以模拟任何图灵机,它就被定义为“图灵完备”(Turing Complete)的。这种系统称为通用图灵机(UTM) 。
  • 以太坊能够在称为以太坊虚拟机的状态机中执行存储程序,同时向内存读取和写入数据,使其成为图灵完备系统,因此成为通用图灵机。考虑到有限存储器的限制,以太坊可以计算任何可由任何图灵机计算的算法。
  • 简单来说,以太坊中支持循环语句,理论上可以运行“无限循环”的程序。

15.去中心化应用

  • 基于以太坊可以创建智能合约(SmartContract)来构建去中心化应用(Decentralized Application,简称为 DApp)
  • 以太坊的构想是成为DApps编程开发的平台
  • DApp至少由以下组成:
    ——区块链上的智能合约
    ——Web前端用户界面

16.以太坊应用

  • 基于以太坊创建新的加密货币(CryptoCurrency,这种能力是2017年各种ICO泛滥的技术动因)
  • 基于以太坊创建域名注册系统、博彩系统
  • 基于以太坊开发去中心化的游戏,比如2017年底红极一时的以太猫(CryptoKitties,最高单只猫售价高达80W美元)

17.代币(Token)

  • 代币(token)也称作通证,本意为“令牌”,代表有所有权的资产、货币、权限等在区块链上的抽象
  • 可 替 代 性 通 证(fungible token):指的是基于区块链技术发行的,互相可以替代的,可以接近无限拆分的token
  • 非通证(non-fungible token):指的是基于区块链技术发行的,唯一的,不可替代的,大多数情况下不可拆分的token,如加密猫(CryptoKitties)

18.名词解释

EIP: Ethereum Improvement Proposals,以太坊改进建议

ERC: Ethereum Request for Comments的缩写,以太坊征求意见。一些EIP被标记为ERC,表示试图定义以太坊使用的特定标准的提议

EOA: External Owned Account,外部账户。由以太坊网络的人类用户创建的账户

Ethash:以太坊1.0的工作量证明算法。

HD钱包:使用分层确定性(HD protocol)密钥创建和转账协议(BIP32)的钱包。

Keccak256:以太坊中使用的密码哈希函数。Keccak256被标准化为SHA-3

Nonce:在密码学中,术语nonce用于指代只能使用一次的值。以太坊使用两种类型的随机数,账户随机数和P0W随机数

你可能感兴趣的:(区块链,以太坊,数字货币)