以太坊-搭建远程bootnode节点

以太坊提供了搭建bootnode的命令,改工具只执行节点发现相关协议,这几天也在本地做了一下测试是ok的,但是放到公网服务器上就无法链接。网上没有太多将远程搭建bootnode比较好的资料,所以把自己的实现方法分享给大家。
我的是ubuntu系统,服务器是CentOS
步骤一
下载源码:
使用git:git clone https://github.com/ethereum/go-ethereum.git或者直接进入github下载等等。
进入源码执行:make all
编译成功后会生成很多执行文件
在这里插入图片描述步骤二
生成用户命令
执行:sudo cp -f bootnode /usr/local/bin/
chmod +x /usr/local/bin/bootnode
步骤三
执行bootnode
执行:bootnode --help
以太坊-搭建远程bootnode节点_第1张图片可以看到
-addr 制定监听地址,默认端口是30301
-genkey 生成节点key
-nodekey 生成私钥文件
这里只用到这三个命令,其他命令大家可以自行查找或者实验。
执行:
boonode -genkey boot_test(boot_test为密钥文件名)
bootnode -nodekey boot_test -addr 192.168.10.172:30305
在这里插入图片描述
注意:这里必须指定ip,否则默认启动ipv6远程链接会失败
以太坊-搭建远程bootnode节点_第2张图片
所以在链接bootnode时添加ipv4地址就会无效,指定ip后
以太坊-搭建远程bootnode节点_第3张图片步骤四
将启动后的生成的enode信息复制:
在本地机器按如下操作 enode://2a4557a874b9c9c6c186e9d32e15c3058aaa98e869c3957dcf99d46c1364fe0edf49438f70eb5e92ca6c93648cc6f085d9d4f29bdf2e5a0c81489a152b8d1254@192.168.10.194:30305
执行:
geth inti genesis.json
geth --bootnodes"enode://2a4557a874b9c9c6c186e9d32e15c3058aaa98e869c3957dcf99d46c1364fe0edf49438f70eb5e92ca6c93648cc6f085d9d4f29bdf2e5a0c81489a152b8d1254@192.168.10.194:30305"
在另外一台电脑执行上述同样操作,进入控制台执行net可以看到peercount数为1,节点通过bootnode添加成功。
以太坊-搭建远程bootnode节点_第4张图片如果失败peercount为0,这一步大家可以多进行调试。

上述步骤中都是以在服务器搭建bootnode做发现节点,本地链接测试的步骤,其中步骤三若在本地搭建则可以省略-addr参数,或者更改port不需要显示指定ip。即:
bootnode -nodekey boo_test -addr :xxxx

你可能感兴趣的:(以太坊)