利用VMware组建两个节点的比特币网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yzpbright/article/details/81982409

1、VMware上安装两个Ubuntu系统,安装Bitcin Core

两个系统的ip分别是:
172.16.247.145
172.16.247.139

2、启动Bitcin Core

方法一
刚开始时想着使用bitcoind的-connect选项来组建网络。
在172.16.247.145这台机子上打开命令行,执行:

 bitcoind -daemon -connect=172.16.247.139

在172.16.247.139这台机子上打开命令行,执行:

 bitcoind -daemon -connect=172.16.247.145

本想着这样可以组建成两个节点的比特币网络,但实际运行后发现行不通,会提示Connection refused (111),连接被拒绝,debug.log中记录的日志如下所示:

.........
2018-08-24 01:37:06 addcon thread start
2018-08-24 01:37:06 msghand thread start
2018-08-24 01:37:06 opencon thread start
2018-08-24 01:37:06 connect() to 172.16.247.139:8333 failed after select(): Connection refused (111)
2018-08-24 01:37:06 connect() to 172.16.247.139:8333 failed after select(): Connection refused (111)

找了好久没发现原因,后来根据debug.log中的日志记录,看到使用了-connect选项就会将-listen对应的参数设置为0,也就是本节点就不会再监听其他节点的连接了,因此这种方法是行不通的。

后来想了方法二。
方法二:

注意: 如果只想组成这两个节点的比特币网络,而不连接到主网上的比特币节点,可以采用下述3种方法:
方法一:bitcoind命令加上-dnsseed=0选项
方法二:断了物理主机的网络
方法三:组建虚拟机之间的局域网,与外界网络不连通,参考 VMware10组件虚拟局域网方法

在172.16.247.139这台虚拟机上执行:bitcoind -daemon -dnsseed=0 -addnode=172.16.247.145

y@ubuntu:~$ bitcoind -daemon -dnsseed=0 -addnode=172.16.247.145
Bitcoin server starting

这样子这台机子还是会监听外部的连接请求的。

然后在172.16.247.145这台虚拟机上执行:bitcoind -daemon -connect=172.16.247.139(执行bitcoind -daemon -addnode=172.16.247.139也可以)

y@ubuntu:~$ bitcoind -daemon -connect=172.16.247.139
Bitcoin server starting

稍等一会儿等初始化完成后查看.bitcoin/debug.log中的日志记录,发现没有连接失败之类的log了,都是些正常的日志记录,说明应该是成功连接上172.16.247.139这台比特币节点了。执行bitcoin-cli getpeerinfo验证下:

y@ubuntu:~$ bitcoin-cli getpeerinfo
[
  {
    "id": 0,
    "addr": "172.16.247.139",
    "addrbind": "172.16.247.145:40240",
    "services": "000000000000040d",
    "relaytxes": true,
    "lastsend": 1535076676,
    "lastrecv": 1535076676,
    "bytessent": 616,
    "bytesrecv": 8712,
    "conntime": 1535076193,
    "timeoffset": -1,
    "pingtime": 0.0005910000000000001,
    "minping": 0.000515,
    "version": 70015,
    "subver": "/Satoshi:0.16.1/",
    "inbound": false,
    "addnode": true,
    "startingheight": 0,
    "banscore": 0,
    "synced_headers": -1,
    "synced_blocks": -1,
    "inflight": [
    ],
    "whitelisted": false,
    "bytessent_per_msg": {
      "feefilter": 32,
      "getaddr": 24,
      "ping": 160,
      "pong": 160,
      "sendcmpct": 66,
      "sendheaders": 24,
      "verack": 24,
      "version": 126
    },
    "bytesrecv_per_msg": {
      "addr": 7195,
      "feefilter": 32,
      "getheaders": 925,
      "ping": 160,
      "pong": 160,
      "sendcmpct": 66,
      "sendheaders": 24,
      "verack": 24,
      "version": 126
    }
  }
]

可以看到显示对等节点的地址是172.16.247.139,对等节点绑定到的地址是172.16.247.145:40240,这正是本机。
然后在172.16.247.139这台机子上执行bitcoin-cli getpeerinfo验证下:

y@ubuntu:~$ bitcoin-cli getpeerinfo
[
  {
    "id": 0,
    "addr": "172.16.247.145:40240",
    "addrbind": "172.16.247.139:8333",
    "services": "000000000000040d",
    "relaytxes": true,
    "lastsend": 1535076796,
    "lastrecv": 1535076796,
    "bytessent": 8776,
    "bytesrecv": 680,
    "conntime": 1535076194,
    "timeoffset": 0,
    "pingtime": 0.000648,
    "minping": 0.000648,
    "version": 70015,
    "subver": "/Satoshi:0.16.1/",
    "inbound": true,
    "addnode": false,
    "startingheight": 226781,
    "banscore": 0,
    "synced_headers": -1,
    "synced_blocks": -1,
    "inflight": [
    ],
    "whitelisted": false,
    "bytessent_per_msg": {
      "addr": 7195,
      "feefilter": 32,
      "getheaders": 925,
      "ping": 192,
      "pong": 192,
      "sendcmpct": 66,
      "sendheaders": 24,
      "verack": 24,
      "version": 126
    },
    "bytesrecv_per_msg": {
      "feefilter": 32,
      "getaddr": 24,
      "ping": 192,
      "pong": 192,
      "sendcmpct": 66,
      "sendheaders": 24,
      "verack": 24,
      "version": 126
    }
  }
]

可以看到在172.16.247.139这台机子上,显示对等节点的地址是172.16.247.145:40240,对等节点绑定到的地址是172.16.247.139:8333。
说明这两台机子已经连接成功了,组成了2个节点的比特币网络!
172.16.247.139这台机子是刚启动的比特币节点,之前没有同步过任何区块数据,而172.16.247.145这台机子之前是连接到比特币主网同步过区块数据的,已经有了很多区块数据。现在进入172.16.247.139这台机子的 .bitcoin/blocks 目录,可以看到区块数据不断在新生成,说明这是从172.16.247.145这台机子上同步过来的,这更进一步说明了这两个节点组成的比特币网络已经正常工作了。
接下去会利用这个比特币网络测试创建/发送交易,挖矿等功能。

猜你喜欢

转载自blog.csdn.net/yzpbright/article/details/81982409