CentOS7 安装以太坊 geth 客户端、创建私有区块链及挖矿

CentOS7 安装以太坊 geth 客户端、创建私有区块链及挖矿安装以太坊源码,即安装GoEthereum(安装Geth)1、安装Golang可以直接使用yum这个包管理器安装Golangyuminstallgolang2、下载以太坊源码(GoEthereum)首先下载geth源码go-ethereum,这里以go-ethereum-1.9.7.tar.gz,直接在GitHub下载3、安装以太坊源码(安装Geth)接下来解压源码:tar-xzfgo-ethereum-1.9.7.tar.gz用下…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

安装以太坊源码,即安装Go Ethereum(安装Geth)

1、安装Golang

可以直接使用 yum 这个包管理器安装Golang

yum install golang

2、下载以太坊源码(Go Ethereum)

首先下载geth源码 go-ethereum,这里以 go-ethereum-1.9.7.tar.gz,直接在GitHub下载

3、安装以太坊源码(安装Geth)

接下来解压源码:

tar -xzf go-ethereum-1.9.7.tar.gz 

用下面的命令编译:

cd go-ethereum-1.9.7
make geth    

make geth 也可以用make all 进行替代,make all 还会编译一些其他的程序套件

编译完成后,此时会在 go-ethereum-1.9.7/build/bin 中生成geth可执行文件。

输入 geth help 命令,会显示geth所有的命令和选项:

cd build/bin
./geth help

4、配置geth

直接使用geth命令可能出现:

-bash: geth: command not found

为其的安装路径建立软连接(要写对你解压的所在目录路径)

ln -s /root/geth/go-ethereum-1.9.7/build/bin/geth  /usr/local/bin/geth

用 geth version 测试一下:

geth version

 CentOS7 安装以太坊 geth 客户端、创建私有区块链及挖矿

区块链是由若干个区块组成的。

因此我们首先需要为私有链创建第一个区块(即创世区块),类似于数据结构中链表的头节点。

5、创建创世区块

首先,你需要创建一个创世区块,这个区块的创建应该让所有节点都知道,并且都同意。

创建创世区块的配置主要存储于一个JSON文件中,这里我们存在一个叫genesis.json的文件中。

为了使结构更加清晰,先创建一个文件夹,专门存放私有链相关数据。

mkdir private_eth
cd private_eth
touch genesis.json

新建文件,命名:genesis.json,内容如下:

{
  "config": {
    "chainId": 10001,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x20000",
  "extraData": "",
  "gasLimit": "0x2fefd8",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

CentOS7 安装以太坊 geth 客户端、创建私有区块链及挖矿

如果你想为一些账户预先分配一些资金便于测试,那么可以在配置中创建账户并分配一些资金。

这时候,你只需要用下面的配置替换掉上面的”alloc”:{ }即可:

"alloc": {
  "0x0000000000000000000000000000000000000001": {
    "balance": "111111111"
  },
  "0x0000000000000000000000000000000000000002": {
    "balance": "222222222"
  }
}

6、初始化区块链

(1)初始化

启动之前,先进行初始化:

geth init genesis.json --datadir test 

test目录表示保存区块链相关数据的目录,这里的test 与 genesis.json 文件在同一个目录下。

test目录是之前不存在的,执行后会自动生成。

test目录下有两个子目录:

    geth:存储同步区块链以及相关的数据;
    keystore:保存了账户文件。由于私链刚创建,此时keystore目录为空。

注意:如果直接执行

geth init genesis.json

可能会出现如下错误:

Fatal: Failed to write genesis block: database contains incompatible genesis (have d4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3, new a3c5c170988f516e00ea3078b2461a149bcd4d0422c8c894923c6cfa22d6926b)

因此记得通过–datadir 设置相应的存储区块链相关数据的目录。

(2)启动以太坊客户端

geth --rpc --rpccorsdomain="*"  --nodiscover --allow-insecure-unlock  --datadir './test' console

执行成功之后,如下图所示:

CentOS7 安装以太坊 geth 客户端、创建私有区块链及挖矿

以太坊一些常用相关参数总结:

// Ethereum参数
--config value:表示TOML配置文件的目录;
--datadir value:存储区块链相关数据的文件目录,包含geth和keystore两个文件夹(默认为 "/home/ligi/.ethereum"),geth目录存储同步区块链以及相关的数据,keystore存储账户相关数据;
--datadir.ancient value             Data directory for ancient chain segments (default = inside chaindata)
--keystore value                    账户秘钥的存储目录 (默认在datadir里面)
--networkid value                   网络标识符 (integer, 1=Frontier, 2=Morden (disused), 3=Ropsten, 4=Rinkeby) (default: 1)
--testnet                           Ropsten network: pre-configured proof-of-work test network
--rinkeby                           Rinkeby network: pre-configured proof-of-authority test network
--syncmode value                    区块链同步模式 ("fast", "full", or "light") (default: fast)
--exitwhensynced                    块同步完成后退出
--identity value                    自定义节点名称
 
 
//DEVELOPER CHAIN OPTIONS:
--dev                               拥有一些预先设置了资金的开发者账户的临时权威证明网络,并且可以直接挖矿
--dev.period value                  在开发者模式中使用块(出块)的时间,0表示只有在交易挂起的时候才会挖矿,1表示不用等有了交易才挖矿 (default: 0)
 
 
//ACCOUNT OPTIONS:
  --unlock value                      要解锁的账户列表(多个账户用逗号分隔)
  --password value                    用于非交互式密码输入的密码文件
 
 
//API AND CONSOLE OPTIONS:
  --ipcdisable                        禁用(关闭)IPC-RPC服务器
  --ipcpath value                     Filename for IPC socket/pipe within the datadir (explicit paths escape it)
  --rpc                               启用HTTP-RPC服务器
  --rpcaddr value                     HTTP-RPC服务器监听的IP地址 (default: "localhost")
  --rpcport value                     HTTP-RPC 服务器监听端口(default: 8545)
  --port:指定和其他节点连接所用的端口号(默认为 30303);
  --rpcapi value                      通过HTTP-RPC接口提供的API
  --rpc.gascap value                  设置可以在eth_call/estimateGas中使用的gas上限(默认值:0) (default: 0)
  --rpccorsdomain value               哪些域名允许访问跨域请求(多个域名用逗号分隔)(浏览器执行),"*"表示允许通过任意域名进行访问
  --rpcvhosts value                   允许哪些虚拟主机名接受请求(多个的时候用逗号分开)(服务器执行). 接受 '*' 通配符. (default: "localhost")
  --ws                                启用WS-RPC服务器
  --wsaddr value                      WS-RPC服务器监听的地址 (default: "localhost")
  --wsport value                      WS-RPC服务器监听的端口号 (default: 8546)
  --wsapi value                       WS-RPC接口提供的API
  --wsorigins value                   接受websockets请求的源
 
 
//NETWORKING OPTIONS:
  --nodiscover                        禁用节点发现机制,防止加入有同样初始配置的的陌生节点
 
 
--verbosity: 表示设置日志等级,0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 

7、开始挖矿

使用之前genesis.json中配置的账户进行挖矿:

挖矿之前,先将账户和矿工进行绑定。

miner是JavaScript控制台中内置的矿工对象,在控制台中可以使用如下命令,将genesis.json文件中的“alloc”中的某个地址与miner对象进行绑定,绑定的目的之一就是为了明确挖矿得到的奖励存到哪个账户去。
 

miner.setEtherbase("0x0000000000000000000000000000000000000001")

CentOS7 安装以太坊 geth 客户端、创建私有区块链及挖矿

 开始挖矿之前,我们可以查看一下两个临时账户的余额:

eth.getBalance("0x0000000000000000000000000000000000000001")
eth.getBalance("0x0000000000000000000000000000000000000002")

开始挖矿

miner.start()

CentOS7 安装以太坊 geth 客户端、创建私有区块链及挖矿

查看当前区块链中的区块数

eth.blockNumber

再次查询两个临时账户的余额

eth.getBalance("0x0000000000000000000000000000000000000001")
eth.getBalance("0x0000000000000000000000000000000000000002")

由于矿工挖矿得到了一些挖矿的奖励(以太币),所以我们可以发现与矿工绑定的账户的余额变多了。

停止挖矿

miner.stop()

参考:(一)下以太坊私有链搭建及挖矿转账_Toufahaizai的博客-CSDN博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183890.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js数组添加删除数据_如何删除数组中的元素

    js数组添加删除数据_如何删除数组中的元素文章目录添加删除数组元素的方法添加删除数组元素的方法<script>//添加删除数组元素的方法//1.push()在我们数组的末尾添加一个或者多个数组元素vararr=[1,2,3];//arr.push(4,’Argonaut’)console.log(arr);console.log(arr.push(4,’Argonaut’));//

    2022年9月27日
    3
  • oracle 用户赋权_oracle数据库创建只读用户

    oracle 用户赋权_oracle数据库创建只读用户ORACLE创建用户赋予权限删除用户oracle数据库的权限系统分为系统权限与对象权限。一.ORACLE默认管理员密码二.创建用户及密码。三.赋予权限。oracle数据库的权限系统分为系统权限与对象权限。系统权限(databasesystemprivilege)可以让用户执行特定的命令集。例如,createtable权限允许用户创建表,grantanyprivilege权限允许用户授予任何系统权限。对象权限(databaseobjectprivilege)可以让用户能

    2025年7月1日
    1
  • TCP与udp区别_个人总结和工作总结的区别

    TCP与udp区别_个人总结和工作总结的区别TCP与UDP区别总结:1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)4、每一条TCP连接只能是点到点的;UDP

    2025年9月19日
    4
  • pandas中关于DataFrame行,列显示不完全(省略)的解决办法[通俗易懂]

    pandas中关于DataFrame行,列显示不完全(省略)的解决办法[通俗易懂]有时候DataFrame中的行列数量太多,print打印出来会显示不完全。就像下图这样:列显示不全:行显示不全:添加如下代码,即可解决。#显示所有列pd.set_option(‘display.max_columns’,None)#显示所有行pd.set_option(‘display.max_rows’,None)#设置value的显示长度为100,默…

    2022年7月15日
    17
  • android在eclipse环境下开发需要什么支持_eclipse配置android开发环境

    android在eclipse环境下开发需要什么支持_eclipse配置android开发环境手把手教程,安装配置环境

    2022年10月5日
    2
  • 双绞线制作实验报告心得体会_制作网络双绞线实验心得

    双绞线制作实验报告心得体会_制作网络双绞线实验心得参考各路资料。不一一指出。一、实验目的:(1)学会两种双绞线制作方法;(2)掌握剥线/压线钳和普通网线测试仪的使用方法;(3)了解双绞线和水晶头的组成结构;(4)了解各网络设备之间网线连接的特点。二、实验项目:(1)直通线的制作(2)交叉线制作三、实验准备1、相关知识的准备(1)RJ-45水晶头结构(2)做线工具 剥线/压线钳

    2025年8月2日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号