一、以太坊客户端
1、什么是以太坊客户端

  • 以太坊客户端是一个软件应用程序,它实现以太坊规范并通过p2p网络与其他以太坊客户端进行通信。如果不同的以太坊客户端符合参考规范和标准化通信协议,则可以进行相互操作。
  • 以太坊是一个开源项目,由“黄皮书”正式规范定义。除了各种以太坊改进提案之外,此正式规范还定义了以太坊客户端的标准行为。
  • 因为以太坊有明确的正式规范,以太网客户端有了许多独立开发的软件实现,它们之间又可以彼此交互。

2、基于以太坊规范的网络

  • 存在各种基于以太坊规范的网络,这些网络基本符合以太坊“黄皮书”中定义的形式规范,但它们之间可能相互也可能不相互操作。
  • 这些基于以太坊的网络中有:以太坊,以太坊经典,Ella,Expanse,Ubiq,Musicoin等等。
  • 虽然大多数在协议级别兼容,但这些网络通常具有特殊要求,以太坊客户端软件的维护人员、需要进行微小更改、以支持每个网络的功能或属性。

3、以太坊的多种客户端

  • go-ethereum ( Go ) 官方推荐,开发使用最多
    地址:https://github.com/ethereum/go-ethereum
  • parity ( Rust )最轻便客户端,在历次以太坊网络攻击中表现卓越
    地址:https://github.com/ethcore/parity/releases
  • cpp-ethereum (C++) 地址:https://github.com/ethereum/cpp-ethereum
  • pyethapp (python) 地址:https://github.com/heikoheiko/pyethapp
  • ethereumjs-lib ( javascript )
    地址:https://github.com/ethereumjs/ethereumjs-lib
  • EthereumJ / Harmony ( Java )
    地址:https://github.com/ethereum/ethereumj

3、以太坊全节点

  • 全节点是整个主链的一个副本,存储并维护链上的所有数据,并随时验证新区块的合法性。
  • 区块链的健康和扩展弹性,取决于具有许多独立操作和地理上分散的全节点。每个全节点都可以帮助其他新节点获取区块数据,并提供所有交易和合约的独立验证。
  • 运行全节点将耗费巨大的成本,包括硬件资源和带宽。
  • 以太坊开发不需要在实时网络(主网)上运行的全节点。我们可以使用测试网络的节点来代替,也可以用本地私链,或者使用服务商提供的基于云的以太坊客户端;这些几乎都可以执行所有操作。

4、远程客户端和轻节点

  • 远程客户端
    不存储区块链的本地副本或验证块和交易。这些客户端一般只提供钱包的功能,可以创建和广播交易。远程客户端可用于连接到现有网络,MetaMask 就是一个这样的客户端。
  • 轻节点
    不保存链上的区块历史数据,只保存区块链当前的状态。轻节点可以对块和交易进行验证。

5、全节点的优缺点

  • 优点
    为以太坊网络的灵活性和抗审查性提供有力支持。
    权威地验证所有交易。
    可以直接与公共区块链上的任何合约交互。
    可以离线查询区块链状态(帐户,合约等)。
    可以直接把自己的合约部署到公共区块链中。
  • 缺点
    需要巨大的硬件和带宽资源,而且会不断增长。
    第一次下载往往需要几天才能完全同步。
    必须及时维护、升级并保持在线状态以同步区块。

6、公共测试网络节点的优缺点

  • 优点
    一个 testnet 节点需要同步和存储更少的数据,大约10GB(数据可能变了,这个数据是2018.10月的统计),具体取决于不同的网络。
    一个 testnet 节点一般可以在几个小时内完全同步。
    部署合约或进行交易只需要发送测试以太,可以从“水龙头”免费获得。
    测试网络是公共区块链,有许多其他用户和合约运行(区别于私链)。
  • 缺点
    测试网络上使用测试以太,它没有价值。因此,无法测试交易对手的安全性,因为没有任何利害关系。
    测试网络上的测试无法涵盖所有的真实主网特性。例如,交易费用虽然是发送交易所必需的,但由于gas免费,因此 testnet 上往往不会考虑。而且一般来说,测试网络不会像主网那样经常拥堵。

7、本地私链的优缺点

  • 优点
    磁盘上几乎没有数据,也不同步别的数据,是一个完全“干净”的环境。
    无需获取测试以太,你可以任意分配以太,也可以随时自己挖矿获得。
    没有其他用户,也没有其他合约,没有任何外部干扰。
  • 缺点
    没有其他用户意味与公链的行为不同。发送的交易并不存在空间或交易顺序的竞争。
    除自己之外没有矿工意味着挖矿更容易预测,因此无法测试公链上发生的某些情况。
    没有其他合约,意味着你必须部署要测试的所有内容,包括所有的依赖项和合约库。

二、以太坊geth客户端安装
1、运行全节点的要求(2018.10)

  • 最低要求
    双核以上CPU
    硬盘存储可用空间至少80GB
    如果是SSD,需要4GB 以上 RAM,如果是HDD,至少8GB RAM
    8 MB/s下载带宽
  • 推荐配置
    四核以上的快速CPU
    16GB 以上 RAM
    500GB 以上可用空间的快速SSD
    25+ MB/s下载带宽

2、Geth ( Go-Ethereum )
Geth是由以太坊基金会积极开发的 Go 语言实现,因此被认为是以太坊客户端的“官方”实现。
通常,每个基于以太坊的区块链都有自己的Geth实现。
以太坊的 Geth github 仓库链接:
https://github.com/ethereum/go-ethereum

3、用Geth搭建以太坊私链
安装Geth
安装Geth有很多种方式,这里主要就Linux环境给出两种:系统包管理器(apt-get)安装和源码安装。比较推荐大家用源码安装,在整个过程中可以看到Geth各组件的构建步骤。
(1)apt-get

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum

(2)源码安装
克隆github仓库
我们的第一步是克隆git仓库,以获取源代码的副本。

$ git clone https://github.com/ethereum/go-ethereum.git

从源码构建Geth
要构建Geth,切换到下载源代码的目录并使用make命令:

$ cd go-ethereum
$ make geth

如果一切顺利,我们将看到Go编译器构建每个组件,直到它生成geth可执行文件:

build/env.sh go run build/ci.go install ./cmd/geth
>>> /usr/local/go/bin/go install -ldflags -X main.gitCommit=58a1e13e6dd7f52a1d5e67bee47d23fd6cfdee5c -v ./cmd/geth github.com/ethereum/go-ethereum/common/hexutil github.com/ethereum/go-ethereum/common/math github.com/ethereum/go-ethereum/crypto/sha3 github.com/ethereum/go-ethereum/rlp github.com/ethereum/go-ethereum/crypto/secp256k1 github.com/ethereum/go-ethereum/common [...] github.com/ethereum/go-ethereum/cmd/utils github.com/ethereum/go-ethereum/cmd/geth Done building. Run "build/bin/geth" to launch geth.

查看geth version,确保在真正运行之前安装正常:

(3)启动节点同步
安装好了Geth,现在我们可以尝试运行一下它。执行下面的命令,geth就会开始同步区块,并存储在当前目录下。这里的 --syncmode fast 参数表示我们会以“快速”模式同步区块。在这种模式下,我们只会下载每个区块头和区块体,但不会执行验证所有的交易,直到所有区块同步完毕再去获取一个系统当前的状态。这样就节省了很多交易验证的时间。

$ geth –datadir . --syncmode fast

通常,在同步以太坊区块链时,客户端会一开始就下载并验证每个块和每个交易,也就是说从创世区块开始。 毫无疑问,如果我们不加 --syncmode fast参数,同步将花费很长时间并且具有很高的资源要求(它将需要更多的RAM,如果你没有快速存储,则需要很长时间)。
有些文章会把这个参数写成 --fast,这是以前快速同步模式的参数写法,现在已经被 –syncmode fast取代。
如果我们想同步测试网络的区块,可以用下面的命令:

$ geth --testnet --datadir . --syncmode fast

–testnet 这个参数会告诉 geth 启动并连接到最新的测试网络,也就是 Ropsten。测试网络的区块和交易数量会明显少于主网,所以会更快一点。但即使是用快速模式同步测试网络,也会需要几个小时的时间。

(4)使用源码安装,可使用的简单命令

//查看状态
git status
//查看GitHub中的提交历史
git log
//查看版本
git tag
//改变插件版本
git checkout v1.8.17

三、用geth搭建以太坊私链
1、搭建自己的私有链
因为公共网络的区块数量太多,同步耗时太长,我们为了方便快速了解Geth,可以试着用它来搭一个只属于自己的私链。
具体安装可查看:
06ubuntu中安装geth-linux-amd64-1.8.13(因为用PPA直接安装最新版会出现很多问题)
07在Ubuntu下使用Geth搭建以太坊私有链(PPA)

四、总结
可以跟着教程下载一样的版本,因为默认下载最新的版本可能会遇到一些问题。

17 geth客户端了解和安装相关推荐

  1. [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(一) 以太坊Geth客户端安装...

    以太坊Geth客户端安装 geth是以太坊的官方客户端,它是一个命令行工具,提供很多命令和选项,可以运行以太坊节点.创建和管理账户.发送交易.挖矿.部署智能合约等. 下面介绍geth的三种安装方法: ...

  2. 【以太坊】搭建测试网络之ubuntu系统安装geth客户端以及同步区块数据

    一.前言 在前两天就开始研究这个geth客户端,奈何中间一直遇到各种各样的问题,最后总算是成功在服务器上安装geth并开始同步区块了.这里记录一下过程. 1.虚拟机配置问题 博主最开始用的是虚拟机,但 ...

  3. Git客户端下载和安装

    2 Git客户端下载 1.2.1下载地址 Git客户端官网下载链接:https://git-scm.com/downloads 1.2.2 选择操作系统 根据自己要安装的目标操作系统,选择对应的下载源 ...

  4. SCCM2012之客户端发现与安装

    通过前面两次实验,我们已经完成了SCCM 2012的安装,下面就开始进入SCCM 2012的管理与使用.进入管理控制台,我们可以发现SCCM 2012管理控制台与前作发生了很大的变化,整个界面添加了如 ...

  5. Fedora 15 16 17 18 20无线网卡驱动安装

    Fedora 15 16 17 18 20无线网卡驱动安装 一直不想在虚拟机中安装使用系统,然后就打算给自己的电脑安装一个双系统,因对Fedora有比较好的印象,也就还是选用了它作为我的第二系统.废话 ...

  6. 以太坊节点布置(3) 启动geth客户端

    1. 初始化genesis配置文件 geth --datadir chain init genesis.json 2. 启动 geth客户端,进入console模式 geth --datadir da ...

  7. VS 中配置使用Visual SVN系列 三:TortoiseSVN Client(客户端)下载和安装

    VS 中配置使用Visual SVN系列 三:TortoiseSVN Client(客户端)下载和安装 1.TortoiseSVN Client(客户端)下载 https://www.visualsv ...

  8. ubuntu 环境下调试mysql源码_【转】Ubuntu 16.04下 Mysql 5.7.17源码编译与安装

    Ubuntu 16.04下 Mysql5.7.17源码编译与安装 系统环境 一. 系统安装条件 1.cmake MySQL使用cmake跨平台工具预编译源码,用于设置mysql的编译参数. sudo ...

  9. geth rpc无法开启_三分了解以太坊 Geth 客户端快照加速机制

    免责声明:本文旨在传递更多市场信息,不构成任何投资建议.文章仅代表作者观点,不代表火星财经官方立场. 小编:记得关注哦 来源:以太坊爱好者 原文标题:三分了解以太坊 Geth 客户端快照加速机制 原文 ...

最新文章

  1. C6000系列DSP的内联函数
  2. 大总结-深度学习全五课-Stanford吴恩达教授
  3. 小波降噪与重构例子 python
  4. Linux下SVN搭建
  5. sqlite3用python家外键_Django/Sqlite3为带有外键的模型添加一行
  6. python怎么创建类的例题_Python_面向对象练习题
  7. 【Big Data - Hadoop - MapReduce】初学Hadoop之图解MapReduce与WordCount示例分析
  8. python 建筑计算_写给潘石屹的 Python 自学指南
  9. STC官网首页资源整理
  10. JAVA对接大汉三通短信http接口
  11. sublime在wamp下配置php文件,配置WAMP环境下的sublime和PHPdesigner
  12. Android开发笔记(一百八十一)使用CameraX拍照
  13. webview无法播放视频
  14. 优秀站长工具推荐之百度统计热力图用户体验要素
  15. C# WPF MVVM 实战 – 5- 用绑定,通过 VM 设置 View 的控件焦点
  16. windows四种编码方式
  17. 意语口语学习:意大利语的发音
  18. Stata:时变Granger因果检验
  19. 图解线性相关与线性无关(引出可逆矩阵、奇异矩阵)
  20. 关于“分节符(下一页)”和“分节符(奇数页)”的问题

热门文章

  1. 服务器禁用账号登录,服务器如何防止被爆破账号密码
  2. Excel发货单计算器,实现新增行后,新增行自动求和和列自动汇总求和
  3. RocketMQ学习笔记(持续更新)
  4. 通过C编程实现病毒的文件感染功能…
  5. 什么是ASEMI二极管SFF3006反向恢复
  6. 如何构建营销活动平台(一):前言概述
  7. android 三屏手机游戏,大象侠攻略三屏操作手速必须要快
  8. 计算机提示无法识别优盘,win7电脑无法识别u盘的四种解决方法
  9. 前端开发:npm install报错npm ERR! enoent ENOENT:no such file or directory, open…的解决方法
  10. [TextMatch框架] 简介