以太坊学习:第一天

2023-10-29

目录

区块链目前可以分为四类:公链,私链,联盟链以及侧链。

公链

私链——权利掌握在少数人手里

联盟链——部分去中心化

侧链——拓展协议

参考资料

以太坊的组成部分

以太坊中的重要概念

以太坊的货币

以太坊的挖矿产出

以太坊区块收入

区块链相关网站

“幽灵”(GHOST)协议

以太坊与“图灵完备”

去中心化应用

以太坊应用

代币

名词解释


介绍:以太坊Ethereum。

区块链目前可以分为四类:公链,私链,联盟链以及侧链。

公链

  • 公链是指任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。

    公链采取了采取工作量证明机制(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)等方式,并将经济奖励和加密数字验证结合了起来,并建立一个原则就是每个人从中可获得的经济奖励与工作量成正比。这些区块链通常被认为是完全去中心化的。

  • 特性

    1. 开源

    由于整个系统的运作规则公开透明,这个系统是开源系统;

    2. 保护用户免受开发者的影响

    在公有链中程序开发者无权干涉用户,所以区块链可以保护使用他们开发的程序的用户;

    3.访问门槛低

    任何拥有足够技术能力的人都可以访问,也就是说,只要有一台能够联网的计算机就能够满足访问的条件;

    4.所有数据默认公开

    尽管所有关联的参与者都隐藏自己的真实身份,这种现象十分的普遍。他们通过他们的公共性来产生自己的安全性,在这里每个参与者可以看到所有的账户余额和其所有的交易活动。

    案例:公有链中有许多我们熟悉的身影:BTC, ETH, EOS, AE, ADA等

私链——权利掌握在少数人手里

  • 私链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。
  • 特性:

        1. 交易速度快:

        一个私链的交易速度可以比任何其他的区块链都快,甚至接近了并不是一个区块链的常规数据库的速度。这是因为就算少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易。

        2. 隐私性好: 

        给隐私更好的保障私有链使得在那个区块链上的数据隐私政策像在另一个数据库中似的完全一致;不用处理访问权限和使用所有的老办法,但至少说,这个数据不会公开地被拥有网络连接的任何人获得。

        3.交易成本低:

        交易成本大幅降低甚至为零私有链上可以进行完全免费或者至少说是非常廉价的交易。如果一个实体机构控制和处理所有的交易,那么他们就不再需要为工作而收取费用。

        案例:Linux基金会、R3CEV Corda平台以及Gem Health网络的超级账本项目(Hyperledger project)或在开发或在使用私链。

联盟链——部分去中心化

  • 联盟链开放程度和去中心化程度是有所限制的。其参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。
  • 特性:

        1. 交易成本低

        交易只需被几个受信的高算力节点验证就可以了,而无需全网确认;

        2. 节点容易连接

        若是出了问题,联盟链可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成交易;

        3.灵活

        如果需要的话,运行私有区块链的共同体或公司可以很容易地修改该区块链的规则,还原交易,修改余额等。

        案例:瑞波用于日韩国际汇款及日本本国银行间汇款建立了联盟链,同时之前火过一阵子的迅雷链克也是一种半开放的联盟链。

侧链——拓展协议

  • 侧链”从严格上来说,其本身并不是区块链,可以理解为区块链的一种扩展协议。早期“侧链”是为了解决比特币区块链技术的限制问题。侧链就像是一条条通路,将不同的区块链互相连接在一起,以实现区块链的扩展。侧链完全独立于比特币区块链,但是这两个账本之间能够“互相操作”,实现交互。
  • 特性:

        1. 独立性

        侧链架构的好处是代码和数据独立,不增加主链的负担,避免数据过度膨胀。 侧链有独立的区块链,有独立的受托人或者说见证人,同时也有独立的节点网络,就是说一个侧链产生的区块只会在所有安装了该侧链的节点之间进行广播。

        2.灵活性

        侧链所有的区块链参数是可以定制的,简单的比如区块间隔、区块奖励、交易费的去向等,高级用户还可以修改共识算法。

        案例:LSK, RDN, ARDR等币种是利用的侧链技术。

参考资料

  • 《精通白皮书》:https://github.com/ethereumbook/ethereumbook
  • 《以太坊白皮书》:https://github.com/ethereum/wiki/wiki/White-Paper
  • 以太坊官方文档:http:/www.ethdocs.org/en/latest/index.html
  • Solidity官方文档:https://solidity.readthedocs.io/en/lastest/
  • 《以太坊黄皮书》

以太坊的组成部分

  • P2P网络:在以太坊网络运行,在TCP端口30303上寻址
  • 交易
  • 以太坊虚拟机(EVM):以太坊的状态转换,由虚拟机来处理。可以参考Java的虚拟机模式
  • 数据库:Blockchain作为数据库存储每一个节点,包含序列化后的交易和系统状态
  • 客户端:以太坊有几种可互操作的客户端软件实现。比如Geth

以太坊中的重要概念

  • 账户(account):包含地址、余额、随机数,以及可选的存储和代码的对象。普通账户(EOA):存储和代码均为空;合约账户(Contract):包含存储和代码
  • 地址(address):一般来说,这代表一个EOA或合约,它可以在区块链上接收或者发送交易。具体来说,他是ECDSA(椭圆曲线算法)公钥的keccak散列的最右边的160位(就是作为地址)。
  • 交易:可以发送以太币和信息;向合约发送的交易可以调用合约代码,并以信息数据作为函数参数;向空用户发送信息,可以自动生成以信息为代码块的合约用户
  • Gas:以太坊用于执行智能合约的虚拟燃料(简单理解为手续费)。以太坊虚拟机使用核酸机制来衡量gas的消耗量并且限制计算资源的消耗

以太坊的货币

以太坊的货币单位是以太(ether),也可以表示为ETH。以太币的发型规则如下:

  • 挖矿前(Pre-mine,Genesis):以太坊一开始是一个众筹项目,最初发行了7200万以太币。每年产量基本稳定,被限制不超过7200万的25%。以太币是不断发行的,不像比特币那样总数量有限制,我认为可能是因为:消耗gas,所以不断需要以太币。
  • 挖矿产出(Mining):区块奖励(block reward),叔块奖励(uncle reward),叔块引用奖励(uncle referencing reward)。所以以太坊所有的货币来源:挖矿前7200万+挖矿产出
  • 以太坊出块机制从PoW转化为PoS后,以太币的发行会有什么变化尚未知道。PoS将使用一个称为Casper的协议,在这个协议下,以太币的发行率将会大大低于幽灵协议(GHOST)写一下的发行率。    如果真的转为PoS,那肯定会有人存币,然后该用户的话语权会越来越大,导致中心化的结果

以太坊的挖矿产出

  • 区块奖励(Block rewards):每产生一个新区块就会有一笔固定的奖励给矿工,一个是5个以太币,现在是3个。以太币大约是十几秒就出一个块。
  • 叔块奖励(Uncle rewards):有些区块被挖的稍晚一些,没有被确认上链,因此不能作为主区块链的组成部分。比特币这类区块称为“孤块”,并且完全舍弃他们。但是,以太币称他们为“叔块”,并且在之后的区块中,可以引用他们。如果叔块在之后的区块链中作为叔块被引用,每个叔块回味挖矿者产出区块奖励的7/8。一个区块可以指定多个叔块,也可以不指定,叔块奖励3*0.825。
  • 叔块引用奖励(Uncle referencing rewards):矿工每引用一个叔块,可以得到区块奖励的1/32作为奖励,最多引用两个叔块。
  • 这样的一套基于PoW的奖励机制,被称为以太坊的“幽灵协议”。

以太坊区块收入

普通区块收入:

  1. 固定奖励(挖矿奖励),每个普通区块都有
  2. 区块内包含的所有程序的gas花费的总和
  3. 如果普通区块引用叔块,每引用一个就可以获得固定奖励的1/32

叔块奖励:(叔块高度 + 8 - 引用叔块的区块高度) * 普通区块奖励 / 8。(可以理解为离区块越近,亲缘关系越近,收益越高)

区块链相关网站

https://etherscan.io

“幽灵”(GHOST)协议

个人理解:以太坊出币十几秒,如果A用2秒就算出来,B用4秒算出来。A算出来后就继续算下一块,而B在比如过了6秒后才从广播接收到A算的结果,那么B在第10秒才开始算下一个块。由此这里,A和B在一个块中就相差了8秒,如果不断累加起来,B可能就永远追不上A,出现一家独大的风险。而在比特币中就不存在这个问题:比特币至少用十分钟才出一个块,而确认只需要十几秒,大可忽略不计,所以下一个块各个节点是同一个起跑线,保证了公平性和稳定性。这就是以太坊存在的风险,以下是用“幽灵协议”来解决这个风险:

  • 以太坊出块时间:时间为12秒,实际14~15秒左右。比特币的出块时间是10分钟左右,但是比特币只需要12.6秒的时间就可以把信息广播到全网节点95%。
  • 快速确认会带来区块的高作废率,由此链的安全性也会降低
  • “幽灵”协议:Greedy Heaviest Observed SubTree, "GHOST"
    • 计算时间工作量证明时,不仅包括当前区块的祖区块,父区块,还要包括祖先块的作废的后代区块(“叔块”),将他们进行综合考虑。
    • 目前的协议要求下探到第七层(最早的简版设计是五层),也就是说,废区块只能是以叔区块的身份被其父母的第二代至第七代后辈区块引用,而不能是更远关系的后辈区块。
    • 以太坊给以“叔区块”身份为新块确认作出贡献的废区块7/8的奖励,把它们纳入计算的“侄子区块”将会的区块奖励的1/32,不过,交易费用不会奖励给叔区块。

比特币一条主链,而以太坊主链+分叉,看重量。“幽灵协议”定义如何来选链,不仅要主干,分支也要算进去(叔块,分支也要算进去)

以太坊与“图灵完备”

        以太坊能够在虚拟机中执行存储程序,同时向内存读取和写入数据,使其称为图灵完备系统,因此称为通用图灵机。简单来说,以太坊中支持循环语句,就可能出现死循环的风险!会消耗掉全部资源!

        为了解决上面的问题,以太坊引入gas。执行程序会消耗gas,当gas不足的时候,程序会被强制停止,就解决了死循环的问题。

去中心化应用

Dapp:基于以太坊可以创建智能合约来构建去中心化应用。

以太坊的构想是成为DApps变成开发的平台。

DApp至少有以下组成:区块链上的智能合约,Web前端用户界面。

以太坊应用

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

代币

  • 代币(token)也称作通证,本意为“令牌”,代表有所有权的资产、货币、权限等在区块链上的抽象。可以想象成Q币。
  • 可替代性通证(fungible token):指的是基于区块链技术发行的、可以互相代替的、可以季节无限拆分的token。每一个都是一样的,不管怎么细分都相同,比如将两个一块钱细分成若干个一分钱,每个一分钱都是一样的。
  • 非同质通证(non-fungible token):指的是基于区块链技术发行的、唯一的、不可代替的、大多数情况下不可拆分的token。如:加密猫CryptoKitties。每一个token都是唯一的不可替代的,比如加密僵尸游戏中用的。

名词解释

  1. EIP:以太坊改进建议
  2. ERC:以太坊征求意见。一些EIP被标记为ERC,表示试图定义以太坊使用的特定标准的提议
  3. EOA:外部账户。由以太坊网络的人类用户创建的账户
  4. Ethash:以太坊1.0的工作量证明算法
  5. HD钱包:使用分层确定性密钥创建和转账协议的钱包
  6. Keccak256:以太坊中使用的密码哈希函数。Keccak256被标准化为SHA-3
  7. Nonce:在密码学中,属于nonce用于指代只能使用一次的值。以太坊使用两种类型的随机数,账户随机数和PoW随机数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以太坊学习:第一天 的相关文章

  • 例说qt的QLineF::angle() 函数

    QlineF angle 函数在官方文档中如下定义 The angles are measured counter clockwise from a point on the x axis to the right of the origi
  • Apollo 源码解析 —— 客户端 API 配置(二)之 Config

    1 概述 老艿艿 本系列假定胖友已经阅读过 Apollo 官方 wiki 文档 特别是 Java 客户端使用指南 本文接 Apollo 源码解析 客户端 API 配置 一 之一览 一文 分享 Config 接口 及其子类 如下图 2 Con
  • go语言基础23实例

    go语言基础 文章目录 go语言基础 实例1 你好 世界 实例2 变量 实例3 循环 实例4 条件 实例5 条件分支 实例6 数组 实例7 切片 实例8 map映射 实例9 range语法 实例10 函数 实例11 指针 实例12 结构体
  • unbalanced parenthesis

    usr env python coding utf 8 import urllib import urllib2 import random import requests import os sys import MySQLdb from
  • java 自定义注解

    java 自定义注解 一 注解 二 示例 1 interface定义注解 2 getAnnotation获取注解 自定义功能 三 总结 一 注解 java注解可以理解为一种的程序特性的标注 该标注代表某一种功能 可在运行时反射来动态实现功能
  • 高频考察的七大排序算法(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 总览 名称 最坏时间复杂度 平均时间复杂度 空间复杂度 冒泡 O N
  • 神经网络学习笔记(六) 广义回归神经网络

    广义回归神经网络 GRNN General Regression Neural Network 广义回归神经网络是基于径向基函数神经网络的一种改进 结构分析 可以看出 这个结构与之前我们所讲过的径向基神经网络非常相似 区别就在于多了一层加和
  • 免费虚拟服务器怎么用,免费虚拟服务器试用一年

    免费虚拟服务器试用一年 内容精选 换一换 共享带宽可以实现多个弹性公网IP共同使用一条带宽 提供区域级别的带宽共享及复用能力 同一区域下的所有已绑定弹性公网IP的弹性云服务器 裸金属服务器 弹性负载均衡等实例共用一条带宽资源 客户有大量业务
  • 【计算机毕业设计】基于微信小程序的付费自习室系统

    毕设帮助 源码交流 技术解答 见文末 一 前言 忙碌的快节奏生活让很多人只能依靠碎片化时间进行充电 无法拿出大块的时间让自己能系统地进行学习 而 氛围感 和 仪式感 是我们独自学习的时候所体会不到的 每年的考试季 各大高校图书馆和公共图书馆

随机推荐

  • FreeRTOS例程4-串口DMA收发不定长数据

    FreeRTOS例程4 串口DMA收发不定长数据 知乎 zhihu com
  • Parameter ‘id‘ not found. Available parameters are [id , param1]

    Parameter id not found Available parameters are id param1 解决办法 1 删除Mapper接口中的 Param param 2 xml中写成 param xxx MyBatis传入参数
  • How to Write Doc Comments for the Javadoc Tool

    How to Write Doc Comments for the Javadoc Tool Javadoc Home Page This document describes the style guide tag and image c
  • data fastboot 擦除_fastboot命令大全

    刷机之家 fastboot命令能够帮助我们进行很多刷机相关操作 高通处理器手机在fastboot模式下使用fastboot exe文件配合fastboot命令就能够进行刷机 通过system img data img等各个分区的刷入从而完成
  • MIPI简介(一)——基础概念介绍

    MIPI全称Mobile Industry Processor Interface 即移动产业处理器接口 MIPI联盟在2003年由ARM Nokia ST TI等公司成立 成员包括手机设备制造商 半导体厂商 软件厂商 系统供应商 外围设备
  • 【记录】Git pull(拉取),push(上传)命令整理(详细)

    前言 博主最近在学习git命令 因为git是一个非常好用的分布式版本管理工具 功能比svn强大 与SVN不同点是Git去中心化 每一个分支都是一个中心 并且支持本地仓库存储 像如今很多大公司都用git做版本控制 话不多说 具体命令整理如下
  • 分享一个漂亮的ASP.NET MVC界面框架

    本文分享一个插件化的界面框架 该框架提供了用户 角色 权限管理功能 也提供了插件的管理和插件中心 下图是该界面框架的样式 全部源码和原理介绍下一篇分享 推荐越多 源码放的越早 呵呵 要使用该界面框架 你可以通过以下地址来下载到界面框架的Vi
  • Figma 笔记 常用快捷键

    画布 画框 gt 图层 gt 形状 快捷键 可在软件中查看快捷键信息 编辑快捷键 功能 L 切换到画线 Shift L 画箭头 O 切换到画圆 R 切换到画矩形 Shift X 填充 与 描边 切换 Ctrl Shift K 导入图片 支持
  • 删除排序数组中的重复项

    文章目录 删除排序数组中的重复项 一 暴力 时间复杂度O n 2 空间复杂度 O 1 二 优化 时间复杂度O n 空间复杂度O 1 删除排序数组中的重复项 给你一个 升序排列 的数组 nums 请你 原地 删除重复出现的元素 使每个元素 只
  • 软件工程中如何设计测试用例

    黑盒测试用例 将程序看做一个黑盒子 只知道输入输出 不知道内部代码 由此设计出测试用例 分为下面几类 等价类划分 把所有的数据按照某种特性进行归类 而后在每类的数据里选取一个即可 等价类测试用例的设计原则 设计一个新的测试用例 使其尽可能多
  • @Linux搭建LDAP认证服务

    文章目录 1 Ldap概述 2 Ldap的用途 3 Ldap的数据模型 1 数据模型叙述 2 目录树简述 3 Ldap目录树说明 2 搭建LDAP服务器 1 环境准备 2 Ldap服务搭建 3 Ldap Web UI安装 1 安装PHPLD
  • Git 推送本地分支至远程分支

    总结一 本地创建本地分支并切换 针对当前cas thymeleaf 创建一个cas 分支 Administrator PC 20180603XCNG MINGW64 d git workspace cas thymeleaf main gi
  • CSDN的常用技巧(字体、颜色、大小、类型、背景标记、删除、居中)

    CSDN的常用文本设置 字体 颜色 大小 类型等 一 字体设置 二 绘制表格 三 下划线 四 首行缩进 五 设置插入图片的大小 六 空格 七 黑点 八 背景标记 删除文本 九 文字居中 一 字体设置 CSDN Markdown编辑器对字体设
  • 前端 注册界面开发

    1 div的使用 我所理解的div标签类似于ps中的图层一样 当我需要在页面展示内容时候 只需要在图层中添加相关的信息 下面通过此界面的创建过程讲解有关div的使用 添加总体的div div style width 200px height
  • 【PythonWeb】Flask(微框架) + jinja2(模板)

    Hello world conda create n flaskvir python 3 8 conda activate flaskvir flaskvir PS C Users hp gt conda env list conda en
  • 【unity】VS没有代码补全问题

    1 运行Visual Studio Installer 安装插件 2 打开unity项目 进入Package Manager 安装插件 3 打开Preferences窗口 修改External Scripts Editor为你的vs编辑器
  • 非华为电脑与华为平板、手机(鸿蒙系统)之间实现多屏协同功能

    前言 电脑型号 联想拯救者r7000p 2020 平板 huawei matepad11 手机 荣耀v20 安装软件 华为电脑管家11 1 1 95 参考 文章教程 https www coolapk com feed 27435645 s
  • 有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的 药物,最少需要多少只小白鼠?

    天堂之鼠 文章目录 天堂之鼠 原题题目 某个面试题 有 1000 个一模一样的瓶子 其中有 999 瓶是普通的水 有一瓶是毒药 任何喝下毒药的生物都会在一星期之后死亡 现在 你只有 10 只小白鼠和一星期的时间 如何检验出哪个瓶子里有毒药
  • linux中;、&和&&、

    Linux 特殊字符用法 特殊字符 注意 shell 在执行某个命令的时候 会返回一个返回值 该返回值保存到 shell 变量 如果 0时 表示命令执行成功 如果 1时 有时可以认为非0的数 返回值在0 255 之间 表示命令执行失败 分号
  • 以太坊学习:第一天

    目录 区块链目前可以分为四类 公链 私链 联盟链以及侧链 公链 私链 权利掌握在少数人手里 联盟链 部分去中心化 侧链 拓展协议 参考资料 以太坊的组成部分 以太坊中的重要概念 以太坊的货币 以太坊的挖矿产出 以太坊区块收入 区块链相关网站