基于windows 10 的以太坊多节点构建和并联

前言

这篇文章可能是最简单的内容,基于前一篇我们讲到的节点互联,我们在这一章将其运用起来。为什么选择win10系统,因为geth实际上并不很调系统,都可以运行,然后很多教程都是linux下的我就写一篇关于windows下的节点构建和并联吧。

环境准备

  • windows 10 (非必须)
  • geth 1.7.3
  • 创世文件 init.json

geth下载地址:

节点构建

本次构建使用到的创世文件:

{
"nonce": "0x0000000000000075",
    "config": {
        "chainId": 4567,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x00",
  "gasLimit": "0xffffffff",
  "difficulty": "0x400",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {     }
}
复制代码

和之前文章一样我们需要使用初始化文件夹命令来初始化datadir不过这次我们初始化两个目录

geth init init.json --datadir ./demo1

geth init init.json --datadir ./demo

之所以初始化两次是因为前面文章提到,为了让私链的多个节点互联,前提就是保证每一个节点的创世文件相同,否则无法互联。

节点启动

我们先启动主要节点,并开启json RPC服务

geth --identity "prcService" --rpc --rpccorsdomain "*" --datadir ./demo --port "30301" --nodiscover --rpcport 8101 --rpcapi "personal,db,eth,net,web3" --networkid 1998 console 2>> ./geth.log

这里标记的--networkid一定要保证和另一个启动的节点一致。

在启动第二个矿工节点前,我们先复习一下上一章讲到的通过命令行创建账户的命令:

geth account new --datadir ./demo1

输入两次账户密码,就会在刚刚创建的demo1中新建一个账户,之所以创建一个账户是为了挖矿需要,启动挖矿必须指定一个账户否则无法启动挖矿。

然后我们再启动挖矿节点:

geth --datadir ./demo1 --nodiscover --ipcdisable --mine --networkid 1998 --minerthreads=4 console 2>> ./geth1.log

解释下几个不同的参数:

--ipcdisable 表示启动节点时关闭文件rpc服务,因为windows下的prc是默认放在同一个文件下,导致多节点启动时无法启动并报错:Fatal: Error starting protocol stack: Access is denied. 解决办法就是添加这个参数关闭这个节点的rpc服务。

--mine 表示启动节点就开始挖矿工作,所以之前我们需要创建一个账户,没有账户然后又添加了这个参数会报错然后无法启动。

--minerthreads=4 表示启动挖矿的线程数。

再次提醒一定要保证networkid一致。

节点互联

在保证networkid一致,创世文件一致的情况下,我们可以使用多种方法来互联节点,这里我们就演示最简单的通过控制台互联节点。

在demo中输入

admin.nodeInfo 得到节点的链接地址:

{
  enode: "enode://000b59e137591a1a4c4b361df824d3f1ce4b872c0b4499d790913dfc8dfb57d97a311a26881cb45a0267d8c0b2a58565cb9bb02aa6a9ca31b7eab64aa3bf4e50@[::]:3031?discport=0",
  id: "000b59e137591a1a4c4b361df824d3f1ce4b872c0b4499d790913dfc8dfb57d97a311a26881cb45a0267d8c0b2a58565cb9bb02aa6a9ca31b7eab64aa3bf4e50",
  ip: "::",
  listenAddr: "[::]:3031",
  name: "Geth/v1.7.2-stable-1db4ecdc/windows-amd64/go1.9",
  ports: {
    discovery: 0,
    listener: 3031
  },
  protocols: {
    eth: {
      difficulty: 88872041,
      genesis: "0xc9400712dce394e4bb9019f317751286cdf4f594ebad0a5acf83162a373461d3",
      head: "0x62b39a9a3d9d2b3a79ea2d6648b63b0b63baa9f51f8b34987a52da9e8222bcef",
      network: 11
    }
  }
}
复制代码

然后将enode内容复制,在demo1中输入admin.addPeer(内容)添加节点,添加之后可以通过admin.peers命令查看到添加的节点

可以试试在两个节点输入admin.peers都可以查看到连接信息

来自本人: 以太坊极客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值