一、前言

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

1、虚拟机配置问题

博主最开始用的是虚拟机,但是在下载安装geth的时候,就出现了一些问题,那就是虚拟机的配置不够。这里建议大家有自己服务器的就用自己的服务器。用虚拟机的话,内存什么的调大一些,毕竟区块数据文件有20G那么大

2、同步区块链数据的速度很慢。
大家做好等待一天的准备。。用8G内存的服务器,同步了大概6个小时。

3、需要提前准备的工具

//这个的  gcc  g++ ntp都是编译geth时候需要的
apt install git wget vim gcc g++ ntp

二、下载安装geth

此处大家百度一下的话会发现,网上一共有三种安装方式:

1、下载可执行文件

下载地址:https://geth.ethereum.org/downloads/
(这里下载之后,是没有geth命令行的。博主下载之后不太会用,就删掉了采用了其他的方式)

2、采用源码安装

(1)下载源码

1、mkdir -p /data/ethereum/   //新建文件夹用于存放下载的geth文件
2、cd /data/ethereum
3、git clone https://github.com/ethereum/go-ethereum.git  //此处是开始克隆

此处需要注意,因为此项目较大,所以下载的时候可能会报错,一般常见的解决手段:

    1、查看配置    git config -l2、增大缓存  git config --global http.postBuffer 524288000  //这是520M,可以考虑再大点3、只克隆最近一次的   depth -1  4、修改ssl git config --global http.sslVerify false  //这是防止ssl认证的

(2)编译安装

1、git checkout v1.8.12   //切换到目前的稳定版本
2、cd go-ethereum  make all   //编译

此处,下载完成之后,一般都是master分支,这个分支不是很稳定,所以建议切换到稳定分支。

git  tag   //列出当前仓库的所有标签
git checkout v1.8.12  //切换到1.8.12标签上去

这里编译报错的话,可能会是go语言的版本问题。建议使用1.9.3版本以上的go语言编译。要保证此处go的环境变量是没问题的。
(PS:此处不知道为什么,我的geth一直编译不了,go的版本也来来回回换了好多次,最后放弃此方式,选择第三中,ubuntu系统安装。)

(3)配置环境变量

echo "export PATH=$PATH:/data/ethereum/go-ethereum/build/bin" >> /etc/profile
source /etc/profile

此处找到go-ethereum文件下的bin目录,添加到环境变量中,然后同步下环境变量即可。

3、ubuntu 在线安装

$ sudo add-apt-repository -y ppa:ethereum/ethereum   //先添加源文件
$ sudo apt-get update   //更新源
$ sudo apt-get install ethereum   //安装源

这种安装方式是默认安装在 ~/.ethereum 目录下,只能通过root用户访问。安装无误之后即可开始下面的同步区块。此处同步区块默认是在~/.ethereum/geth/chaindata文件夹中。

三、同步区块

1、如果是采用源码安装的话

(1)新建同步区块的文件夹

mkdir -p /data/ethereum/block_data

(2)同步测试网络(推荐)

geth --testnet --fast --cache=512 --datadir "/data/ethereum/block_data" --rpc --rpcapi db,net,eth,web3,personal --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" console

(3)同步正式网络

geth --fast --cache=512 --datadir "/data/ethereum/block_data" --rpc --rpcapi db,net,eth,web3,personal --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" console

初次同步区块默认开启fast模式,本地已经存在区块时,强制使用full模式继续同步。

上述命令中,–fast指定使用fast模式同步数据,即只同步区块的header和body,在同步到当前区块前不会验证区块,同步到当前区块后开始使用full模式同步新的区块。–full指定使用full模式同步完整区块信息,并从创世块开始验证每一个区块的信息;

--cache指定缓存大小,单位为M;--datadir指定区块存放目录;--rpc相关命令指定了其他程序可以通过rpc的方式和geth节点交互;--maxpeers指定最多可以连接的节点数,默认25;console指定打开geth控制台;也可以在命令末尾追加 2>>sync.log 将同步日志输出到文件中。

注意:此处一定要加上rpc的相关参数。 –rpcport 8545 是指定geth的端口号。 127.0.0.1是我们自己的地址。这些都是后续部署智能合约需要用到的参数,谨记。

2、采用ubuntu 在线安装同步区块

mkdir -p /data/ethereum/block_datageth --testnet --fast --cache=512 --datadir "/data/ethereum/block_data" --rpc --rpcapi db,net,eth,web3,personal --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" console

注意:此处一定要加上rpc的相关参数。 –rpcport 8545 是指定geth的端口号。 127.0.0.1是我们自己的地址。这些都是后续部署智能合约需要用到的参数,谨记。

3、如果同步失败的话

同步失败,可以尝试使用 https://ethfans.org/wikis/星火节点计划介绍

在上述页面上下载static-nodes.json;

把static-nodes.json放到chaindata同一目录下(就是我们创建的/data/ethereum/block_data)即可;

星火节点计划针对国内节点。

四、打开geth客户端

1、打开geth客户端

在geth正在同步区块时,通过attach命令可以连接到正在运行的geth的控制台

geth attach ipc:/data/ethereum/block_data/geth.ipc --datadir "/data/ethereum/block_data"

ipc指定ipc文件位置;
–datadir指定区块文件夹。

在控制台中:

> eth.blockNumber //当前已同步的区块高度。如果结果是0,说明还没有通过fast模式同步完成,还没有追赶上最新的区块并验证通过。
> net.peerCount //已连接的节点数
> eth.syncing //fast模式同步中时,会返回最高区块和当前区块高度。返回false有两种情况:(1)未开始同步(2)已完成同步并验证,正在同步最新区块中。
> admin.peers //显示连接到的节点信息

2、根据文档进行相关操作

https://learnblockchain.cn/2017/12/01/geth_cmd_short/

这里我们就算是完成geth的安装以及同步区块了。同步区块是比较慢的,如果大家需要在同步区块的同时区进行其他操作,可以试试终端管理工具tmux:

终端复用工具

end

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

  1. 【以太坊】搭建测试网络之ubuntu系统安装node.js

    一.前言 在确认了要在本地搭建测试网络之后,那就不管什么私有链方面的东西了.俗话说万事开头难,博主这边了解到,搭建测试网络必须的环境主要是:node,golang,还有以太坊的geth客户端.OK,方 ...

  2. 【以太坊】搭建测试网络之ubuntu系统安装golang环境以及helloworld

    一.前言 我们在上一篇已经明确了要安装的环境.上一篇刚安装完node,这篇文章主要安装golang的环境. 环境:本地VM虚拟机+ubuntu 14.04 二.网上的几种安装方式 1.直接通过wget ...

  3. 以太坊Ropsten测试网合并意味着什么?

    本文来自 Twitter,原文作者:pastry & korpi. 6 月 8 日,以太坊 Ropsten 测试网完成合并.截至目前,以太坊主网权益证明(PoS)的过渡日期仍未确定,目前仅是基 ...

  4. 以太坊Sepolia测试网完成“合并” 进入收尾阶段?向Pos机制过渡迈出关键一步

    以太坊Sepolia测试网已于昨日完成合并,是主网合并前的主要测试工作之一,意味着以太坊区块链向Pos机制过渡目标迈出关键一步. 自2014年以来,以太坊联合创始人Vitalik Buterin一直在 ...

  5. 使用Ethereum C++ Aleth客户端创建具有两个同步节点的以太坊Ethereum私有网络

    Creating A Private Network With Two Syncing Nodes 本文是前面两篇文章的延续,链接分别为:Windows10安装Aleth和使用Ethereum C++ ...

  6. 以太坊搭建,不能使用puppeth 创建初始块,报错Fatal: Failed to write genesis block: unsupported fork ordering: eip15

    以太坊搭建,不能使用puppeth 创建初始块,报错Fatal: Failed to write genesis block: unsupported fork ordering: eip15 新建 ...

  7. 以太坊NFT二层网络之Immutable X(IMX)

    文章目录 以太坊NFT二层网络之Immutable X(IMX) 背景 什么是Immutable X(IMX) 为什么是 Ethereum,而不是一个不同的区块链(例如: Flow,Tron,EOS) ...

  8. 建立基于以太坊的私有网络和智能合约 1

    建立基于以太坊的私有网络和智能合约 本文欢迎转载,转载请标明出处 freewolf 资深IT从业者,关注微服务.区块链.敏捷开发.前端技术等,不是大神,只是出于热爱.有问题可以到 https://gi ...

  9. 本地搭建以太坊私有节点网络

    背景介绍 以太坊开发必须需要节点,虽然已经拥有了测试网的节点,但是我们还是最好搭建一个我们自己的本地节点,对于底层开发就更需要节点了,所以我们最好还是搭建本地节点. 环境需求 VMWare软件 ubu ...

最新文章

  1. Linux系统端口聚合技术bonding
  2. Scala的继承和多态
  3. retinajs 使用方法
  4. Angularjs调用公共方法与共享数据
  5. as和强制类型转换的区别
  6. C#.NET通用权限管理系统组件中数据集权限设置功能增加内部组织机构选项功能...
  7. python 调用海康sdk_Qt调用海康SDK实现摄像头视频播放
  8. 如何使用计算机求和公式,excel求和公式怎么用
  9. 如何使用esp32从零制作一个ROS2的teleop遥控器(cmd_vel)
  10. PyCharm4注册码--软件安装
  11. Redis的使用【Redis】
  12. 升级safari 12版本,easyconnectplugin插件等不能使用解决办法
  13. samba xp linux共享文件
  14. 使用工具【ZipCenOp.jar】自动修复zip伪加密文件
  15. 2.3-非平稳时间序列分析
  16. 让我们并肩作战—机房合作
  17. 《西瓜书》吃瓜笔记1、2章
  18. 常见报错——Uncaught TypeError: document.getElementsByClassName(...).addEventListener is not a function
  19. 公开的语音文本情感数据集(附下载链接)
  20. 获取用户ip和设备信息

热门文章

  1. 应用宝上架审核要求_【建议收藏】安卓应用商店上架经验,含流程,方法
  2. 设计模式之简介及其分类
  3. pytorch 入门基础
  4. 自定义dropout
  5. pip Can't connect to HTTPS URL because the SSL module is not available
  6. python 列表转字典
  7. ubuntu14.04下出现libmysqlclient.so.20找不到问题
  8. c++ socket 结构体
  9. C++矩阵运算库推荐
  10. 青龙面板跑滴滴果园,5天种水果。