目的

  • 直观理解以太坊运作规律理念。
  • 便于下一步对技术更深入的理解。

以太坊特点

  • 以太坊是“世界计算机”,这代表它是一个开源,全球分布的计算机设施。

    • 每个节点都需要参与计算,其中一个矿工成功记账,其他的节点认可之后打包上链,则历史就无法篡改。
    • 然而历史上有重大的以太坊安全事件,这样就会产生硬分叉,例如说要求删除某些不正常的节点并要求其他节点回退到以前的版本类似的。
  • 执行称为智能合约(Smart Conrtact)的程序。
  • 使用区块链来同步和存储系统状态以及名为以太币(Ether)的加密货币,以计算和约束执行资源成本。
  • 本质是一个机遇交易的状态机(transaction-based state machine)。
    • 由于交易(活动)产生新的状态,这其实就是一个状态机。
    • 比特币只跟踪交易数据,而以太币跟踪所有的数据,所有的数据都是它状态的一部分。
    • 以太坊的平台可以使开发人员能够构建具有内置经济功能的去中心化程序(DAPP)

以太坊的组成部分

P2P网络

  • 以太坊在以太坊主网络运行,该网络刻在TCP端口30303寻址,并运行一个DEVp2p的协议。

交易(Transcation)

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

以太坊虚拟机(EVM)

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

    • 这个类似于JVM,它会把Java直接编译成字节码,这东西就可以跨平台了。
    • EVM可以把智能合约编译成字节码,然后就可以跨平台【还提供堆栈】。

数据库

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

客户端

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

以太坊中的重要概念

账户

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

  • 普通账户(EOA),存储和代码均为空。
  • 合约账户(Contract),包含存储和代码

地址(Address)

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

交易(Transaction)

  • 可以发送以太币和信息。
  • 向合约发送的交易可以调用合约代码,并以信息数据为函数参数。
  • 向空用户发送信息,可以自动生成信息为代码块的合约账户。

gas

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

以太坊的货币

挖矿前(Pre-mine, Genesis)

  • 2014年7月,为众筹大概发行了7200万以太币。这些币有的时候称为“矿前”。众筹阶段之后,以太币每年的产量基本稳定,被限制不超过7200万的25%。
  • 挖矿产出(Mining)
    • 区块奖励(block reward)

      • 这笔钱是固定的,决定这笔钱也有一个相关的算法。
    • 叔块奖励(uncle reward)
    • 叔块引用奖励(uncle referencing reward)
  • 以太币产量未来的变化
    • 以太坊出块机制从工作量证明(PoW)转换为股权证明(PoS)后,以太币的发型会有什么变化尚未有定论。股权证明机制将使用一个称为Casper的协议。在Casper协议下,以太币的发型率将大大低于目前(GHOST)协议下的发行率。[这个GHOST是当前发币的协议]

以太坊的挖矿产出

区块奖励

  • 没产生一个新区块就会有一笔固定的奖励给矿工,初始是5个以太币,现在是3个(2019年)。

    • 感觉比比特币少很多,为什么?因为以太坊本身出块速度比比特币快多了。[自己去调查]
    • 感兴趣可以去翻原来的交易记录.

叔块奖励(Uncle rewards)

  • 有些区块挖得比较晚,因此不能作为主区块链的组成部分。比特币称这些块为“孤块”,并且完全舍弃它。但是,比特币称他们为“叔块(uncles)”[因为实际上他们和主链的节点的父亲是一样的。],并且在之后的区块中,可以引用它们。如果叔块在之后的区块链中作为叔块被引用,每个叔块会为挖矿者产出区块奖励的7/8 [3*7/8]。这称为叔块奖励。

叔块引用奖励(Uncle referencing rewards)

  • 以太坊不仅可以指定父节点是谁,还可以指定叔节点是谁;相当于指认一个并非首先得到大家确认的,同时也成功挖矿的节点作为叔节点。
  • 矿工每引用一个叔块,可以获得区块奖励的1/32 [3*1/32](最多引用两个叔块)。
  • 这一套基于POW的奖励机制,被称为以太坊的“幽灵协议”。

以太币供应量

  • 中间大概是17年8月,这个曲线稍稍放缓了。
  • 这是因为出币数量由五个变成了三个。
  • 这个其实就是由大都会(metropolis)转移到拜占庭(byzantine)时期做的一个调整。

以太坊区块收入

普通区块收入

  • 固定奖励(挖矿奖励),每个普通区块都有。
  • 区块内包含的所有程序gas花费的总和。
  • 如果普通区块引用了叔块,每个叔块可以得到固定奖励的1/32。[只要被人引用,就能够获得固定奖励的1/32]

叔块收入

  • 只有一项,计算公式为

    • 区块奖励 = (叔块高度+8-引用叔块的区块高度)*普通区块奖励/8
  • 所以说和叔块7辈以内亲缘的都有奖励。

可以查询以太坊所有的交易

  • https://etherscan.io/

解读一些参数

  • HASH RATE代表着全网算力,DIFFICULTY代表着难度,TRANSACTION是交易数量。

区块信息

  • Hash: 区块的哈希。
  • Sha3Uncle: 叔块哈希。[叔块用的是Sha3算法,用的算法是不同的]
  • Transactions: 打包的交易数量和合约数量。
  • Mined By: 被谁挖了。
  • Size: 区块大小(没有限制区块大小)
    • 其实以太坊有特别的机制限制Size,就是Gas Limit。
  • Gas是能源,是交易者提供的类似于手续费的东西,如果提供的gas不够,交易还有可能会失败。
    • 为什么Gas利用率会高,因为我希望包括越多的GAS越好。
  • Nounce相当于随机数。
  • Block Reward: 它是由两个部分构成的,2是固定的,后面那串是手续费。
  • 为什么没有叔区块奖励呢?很有可能的原因是叔区块更新得太快了,它引用的时候已经排在别人后面很多,所以没有成功引用到。

叔块参数

  • 到时候还可以看看。

“幽灵”(GHOST)协议

  • 以太坊出块时间:设计为12秒,实际14~15秒左右。
  • 快速确认会带来区块的高作废率,由此链的安全性会降低。
  • “幽灵”协议:Greedy Heaviest Observed SubTree, “GHOST”
    • 计算工作量证明时,不仅包括当前区块的祖区块,父区块,还要包括祖先块的作废的后代区块(“叔块”),将他们进行综合考虑。
    • 目前的协议要求下探到第七层(最早的简版设计是五层),也就是说,废区块只能以叔区块的身份被其父母的第二代至第七代后辈区块引用,而不能是更远关系的后辈区块。
    • 以太坊付给以“叔区块”身份为新块确认作出贡献的废区块7/8的奖励,把它们纳入计算的“侄子区块”将获得区块奖励的1/31,不过,交易费用不会奖励给叔区块。
  • 直观的理解:
    • 以太坊出块速度非常快,这样分叉就会非常多,大家挖到的快,那么如果采取比特币只有一个人记账的方式,其他所有人的分叉都会作废。
    • 举一个例子,A挖一个区块大概20秒,B挖一个要30秒。那么如果说A挖到了之后,打包好了,就要给广播给全网了,广播的时间里A又可以继续挖,例如广播的时间是8秒,那么B这个时候还没挖到,B在28秒的时候就又要重新开始挖,那么B就亏掉了那再广播的8秒钟。
    • 所以以太坊就会导致优势算力的“抢跑”(而比特币由于它的区块的时间长,就不会有抢跑的问题)。
    • GHOST协议就是为了防止“利用记账广播抢跑”的问题。

问题:这个“幽灵”协议为什么叫Greedy Heaviest Obseverved SubTree

  • 其实有叔块,那其实就并不是一条链,而是应该叫一棵树,只是有主干而已。
  • 以太坊你可以认为是一个区块树!
  • 那么你如果算力差,你也能够获得一定的优势,你可以通过叔块赚取符合你算力的币。

以太坊和图灵完备

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

去中心化应用

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

以太坊应用

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

代币(Token)

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

我们这边直接点开来看看有哪些Token

  • 目前网站有这些个代币。

    • BNB(币安)
    • Tether(泰达)

我们点开币安

  • 这边先有一个面板作为汇总:
  • 一些关于发行量,价格的内容,然后这里也包括了合约的地址。
  • 下面的就是就是BNB的智能合约,也就约100行的代码,但是市值已经超过了20亿美元。

看一下当时历史非同质型代币的排名

  • 大名鼎鼎的以太猫排名第十,当时售价到80美元,我们也可以看到它的源代码。
  • 这个代码有上千行,就复杂的多:
  • 它是继承了ERC721的标准。

名词解释

  • 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用于指代只能使用一次的值。一台方使用两种类型的随机数,账户随机数和POW随机数。

主要参考:

https://www.bilibili.com/video/BV1NJ411D7rf?p=8&spm_id_from=pageDriver

以太坊基本概念理解(组成,设计理念,应用)相关推荐

  1. 区块链学堂(4):以太坊基本概念及工具Geth、Browser-solidity、Mist

    在我研究以太坊技术的过程中,由于相关资料较少,因此走了较多的弯路.所以这里我们不会先介绍Solidity的语法结构,而会在接下来的第一阶段,从实战出发,陆续向大家介绍Geth.Browser-soli ...

  2. 以太坊核心概念(二)

    上一篇文章介绍了以太坊5个核心概念:以太坊虚拟机(EVM).账户(Accounts).交易(Transactions).Gas.存储,主存和栈(Storage, Memory and the Stac ...

  3. 以太坊源码解读(1)以太坊核心概念

    一.定义 以太坊是一个开源的带有智能合约功能的公共区块链平台. 特点: 1.支持智能合约,以太坊不是给用户一系列预先设定好的操作,而是充分允许用户按照自己的意愿创建复杂的逻辑操作: 2.以太坊同时还构 ...

  4. 【以太坊】深入理解智能合约(合约调合约)

    一.前言 关于智能合约的描述,大家在网上百度能查到一大堆.看来看去也能看个似懂非懂,但是稍微具体点呢,智能合约到底都能干什么,可以转账提现吗?可以合约调用合约吗?可以发布多个合约吗? 关于智能合约的疑 ...

  5. 以太坊区块链原理以及概念

    以太坊概述 以太坊设计目的构建一个支持智能合约[54]的平台,该平台支持图灵完备的应用,可以根据既定的智能合约代码逻辑自动执行.如果智能合约代码没有漏洞,则不存在暂停服务.欺骗.第三者篡改和干预的问题 ...

  6. V神已抵京,倒计时4天!6大理由告诉你为什么要参加“2019以太坊技术及应用大会”...

    出品 | CSDN.灵钛科技 最近,链圈被「V神要来中国」的消息给刷屏了. 根据营长的暗中观察,V神今天已经抵达中国,参加了「2019以太坊技术及应用大会」的6月25-27日的黑客马拉松.同时,也为4 ...

  7. V神已抵京, 倒计时4天! 6大理由告诉你为什么要参加2019以太坊技术及应用大会...

    出品 | CSDN.灵钛科技 最近,链圈被「V神要来中国」的消息给刷屏了. 根据营长的暗中观察,V神今天已经抵达中国,参加了「2019以太坊技术及应用大会」的6月25-27日的黑客马拉松.同时,也为4 ...

  8. 以太坊私链搭建、truffle项目开发

    本文实现以下目标: 搭建一条以太坊私链 用企业级开发方式开发.部署一个项目 分析truffle执行过程 solidity.web3等的一些说明 Token ERC20标准 contract ERC20 ...

  9. 以太坊源码linux下如何编译,以太坊教程:搭建环境、编写编译一个智能合约

    本以太坊教程主要是介绍:搭建一个开发环境.编写编译一个智能合约. 以太坊是什么 以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台.通过其专用加密货币以太币(Ether)提供去中心化 ...

最新文章

  1. 利用三层交换机实现VLAN间路由(VLANIF)
  2. Netflix是这样炼成的:谁构建,谁运维
  3. 三种插入排序算法:直接插入排序、折半插入排序、希尔插入排序
  4. 洛谷 | P1219 八皇后(DFS)C++
  5. 2017-3-01 test
  6. python前景如何调用带有event参数的方法_13、第七 - 网络编程基础 - Python中协程EVENT()函数-事件函数...
  7. js触发click事件
  8. 苹果系统安装服务器打印机,如何在MAC系统下安装打印机驱动
  9. linux可以使用usb无线网卡驱动,详解USB无线网卡的Linux驱动移植
  10. Ubuntu下载安装CUDA
  11. 产品规划三板斧:商业画布/精益画布/SWOT分析
  12. MICCAI 2022 | ASA:用于预训练脑核磁分割的注意力对称自动编码器
  13. canal同步mysql从库_canal.adapter 实现mysql数据库同步
  14. 【IDEA】单独运行一个类的方法
  15. 我的瞎搞开发工具集以及对一些工具的比较
  16. tp5.1 EasyTask Windows本地测试和centos系统服务器安装
  17. 北风:关于搜索引擎、关键词、流量的一些思考
  18. 用Java实现ATM机功能(附带源码)
  19. linux mint安装搜狗输入法
  20. 阿松嘚嘚嘚-数据库篇1-数据库市场有学问

热门文章

  1. 江科大linux作业1
  2. 写给2020:做一个有计划、有担当的人
  3. Glog剖析之DLOG
  4. 885n虚拟服务器,TP-Link TL-WR885N V1-V3路由器桥接设置教程
  5. linux修改宽带拨号密码,linux配置上网 linux adsl拨号上网设置
  6. 家政APP开发解决方案
  7. bzoj3436小K的农场
  8. ShaderJoy —— “爽到飞起的 2233娘” 效果 【GLSL】
  9. GNAT中使用DLL
  10. 电脑插入U盘听到提示音,但是不显示U盘