单centos虚拟机搭建geth多节点

环境
  1. go环境
  2. gcc、gcc-c++
yum install gcc gcc-c++ -y

安装geth单节点(第一个节点)

  1. 下载geth
    在这里插入图片描述
  2. 解压&重命名
tar zxvf go-ethereum-1.9.6.tar.gz
mv go-ethereum-1.9.6 go-ethereum
  1. 编译&配置环境变量
cd go-ethereum/
make all
echo "export PATH=$PATH:/root/go-ethereum/build/bin" >> /etc/profile
source /etc/profile
  1. 编写创世区块
cd ~
mkdir eth
cd eth/
vim genesis.json

创世区块信息

{  
  "nonce": "0x0000000000000042",  
  "timestamp": "0x00",  
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",  
  "extraData": "0x00",  
  "gasLimit": "0x80000000",  
  "difficulty": "0x1",  
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",  
  "coinbase": "0x2D356ee3F5b8718d8690AFCD31Fe2CB5E602677e",  
  "alloc": {},  
  "config": {  
    "chainId": 15,  \\
    "homesteadBlock": 0,  
    "eip155Block": 0,  
    "eip158Block": 0  
  }  
}  
  1. 创建区块文件夹
mkdir data1  \\第一个区块的文件夹命名为data1
  1. 初始化geth
geth --datadir data1 init genesis.json
  1. 启动geth控制台并创建日志文件:

–networkid需要与chainId相同

geth --networkid 15 --nodiscover --datadir data1 --rpc --rpccorsdomain "*" --rpcapi "db,eth,net,web3,miner,personal" --rpcaddr "0.0.0.0"  --allow-insecure-unlock console 2>>data1/geth.log

–networkid value 网络ID(value与创世区块中的chainId value相同)
–nodiscover 禁用节点发现机制(手动添加节点)
–datadir “xxx” 数据库和keystore密钥的数据目录(刚才创建的data1)
–rpc 启用HTTP-RPC服务器
–rpccorsdomain “*” 设置请求ip白名单 * 为所有
–rpcapi value 基于HTTP-RPC接口提供的API
–rpcaddr value HTTP-RPC服务器接口地址(默认值:“localhost”)
–rpcport value HTTP-RPC服务器监听端口(默认值:8545)
–port value 网卡监听端口(默认值:30303)

  1. geth控制台操作
    i. 创建geth账户密码为123456
    personal.newAccount("123456")
    ii. 启动以太坊开始挖矿(第一次创建可能需要较长时间)
    miner.start(1)

第二个geth节点

  1. 按照前面安装geth单节点(第一个节点)方法一样从7步开始的data1文件替换为data2文件,

–networkid与第一个节点–networkid相同

geth --networkid 15 --nodiscover --datadir data2 --port 30302 --rpcapi net,eth,web3,personal --rpc --rpcport 8542 console 2>> data2/geth.log

(因为需要通过remix部署合约所以data1跟data2的启动代码不太一样,data2的启动代码外部通过remix不知为何无法连接,部署data3的时候可以参照删除先的内容对照data2进行修改)
因为在同一台主机下安装所以–port(默认30303)和–rpcport(默认8545)需要修改一下防止端口冲突。
连接两个节点
在data1 geth控制台中输入 admin.nodeInfo.enode 查询一下endode
data1  endode
复制enode://8f1343cf1f36b837dc84ead5526e9576daeda51ea87af99f5c60e1b64f5488c3ca9218c979ca4e34024eefcf3ffee4489803d2858146f2e1f45680ccad90c2bc@192.168.1.3:30301
打开data2的geth 控制台输入

admin.addPeer("enode://8f1343cf1f36b837dc84ead5526e9576daeda51ea87af99f5c60e1b64f5488c3ca9218c979ca4e34024eefcf3ffee4489803d2858146f2e1f45680ccad90c2bc@localhost:30301")

因为在同一台电脑上所以将IP:192.168.1.3换为localhost 否则可能需要开启相应的端口
在data2中添加data1的endode
输入net.peerCount 查看geth链接节点个数
已连接一个节点
admin.peers 查看通信节点详细信息
在这里插入图片描述

结束!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值