swarm测试极简指南矿机启动后,bootnode报错的解决方案

Posted weixin_46596227

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swarm测试极简指南矿机启动后,bootnode报错的解决方案相关的知识,希望对你有一定的参考价值。

问题简述

可能是因为找不到了bootnode的默认链接,或者会出现类似:discover fail /dnsaddr/bootnode.ethswarm.org 这样的错误,所以我们要修改相关属性。

如果卡在类似下面这个错误的提示的话。说明这个bootnode需要更新。

time="2021-05-26T15:03:01+08:00" level=debug msg="discover fail /dnsaddr/bootnode.ethswarm.org: discover /dnsaddr/swarm-3.bootnode.ethswarm.org: discover /dnsaddr/bee-10.bootnode.ethswarm.org: discover /ip4/x.x.x.x/tcp/31400/p2p/16Uiu2HAmGwAEGJSb3XBNDLwGPbbcLL8LceDhMZeki8aciphcfdXr: connect new stream: incompatible stream: protocol not supported"
time="2021-05-26T15:03:01+08:00" level=warning msg="discover to bootnode /dnsaddr/bootnode.ethswarm.org"

解决方法

描述

由于bee蜂群是靠点对点之间进行通讯的,所以bee矿机都需要获得其他矿机的地址信息,才可以与其他矿机或者蜂后节点进行通讯,通讯的前提是,节点之间的版本必须相同。

假设网络两个节点之间需要互相通讯,分别是A和B。

现在 bootnode.ethswarm.org 这个引导地址坏了,那就需要手动引导节点之间进行组网通讯。假设A节点想主动链接B节点。

解决方法

先获得B节点的基础信息,那么就要在B节点上运行如下指令:

curl http://localhost:1635/addresses | jq

你会得到类似如下的信息:

{
  "overlay": "4b41314f2f21e010937593e5eadf99f3f6ab9a0e257851bd6de995522ea030b6",
  "underlay": [
    "/ip4/x.x.x.x/tcp/1634/p2p/16Uiu2HAm1v9WbjiKyrDTMcbePCbs8bstCE6SiFDhDZrEoZgA1ksj",   
    "/ip4/127.0.0.1/tcp/1634/p2p/16Uiu2HAm1v9WbjiKyrDTMcbePCbs8bstCE6SiFDhDZrEoZgA1ksj",
    "/ip6/::1/tcp/1634/p2p/16Uiu2HAm1v9WbjiKyrDTMcbePCbs8bstCE6SiFDhDZrEoZgA1ksj"
  ],
  "ethereum": "0x3cc6ca97238d267d31d4b6d788cd41d899eb2993",
  "public_key": "0296861d8b2aee004f36584a38fd2019f6e5ee62e4ed3126f7a348db24f17827e7",
  "pss_public_key": "02c7588f882c7100007791924b4fe1e0892f7b39d4bd0d2774b8c96bd52aee44b6"
}

这样的信息中,其中有一行:

/ip4/x.x.x.x/tcp/1634/p2p/16Uiu2HAm1v9WbjiKyrDTMcbePCbs8bstCE6SiFDhDZrEoZgA1ksj

它是公网的节点通讯地址。可以把这串信息发给B节点的机主。

改造并运行命令

B节点机主把它改成如下命令,在B节点的矿机上运行即可。

curl -X POST localhost:1635/connect/ip4/x.x.x.x/tcp/1634/p2p/16Uiu2HAm1v9WbjiKyrDTMcbePCbs8bstCE6SiFDhDZrEoZgA1ksj

Docker用户注意事项

如果A节点是在容器中运行的话,那么A节点只会得到一串类似这样的信息:

/ip4/127.0.0.1/tcp/1634/p2p/16Uiu2HAm1v9WbjiKyrDTMcbePCbs8bstCE6SiFDhDZrEoZgA1ksj

假设,容器映射1634的端口为8888

那么,B节点的主机只要
127.0.0.1 改为 A节点的公网ip地址
1634改为 容器实际的端口 8888即可

运行实际指令

curl -X POST localhost:1635/connect/ip4/x.x.x.x/tcp/8888/p2p/16Uiu2HAm1v9WbjiKyrDTMcbePCbs8bstCE6SiFDhDZrEoZgA1ksj

以上是关于swarm测试极简指南矿机启动后,bootnode报错的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

swarm测试极简指南bee 矿机节点如何快速迁移?

swarm测试极简指南矿机的关键目录都在哪里?

swarm测试极简指南bee矿机的网络特点与惩罚机制

swarm测试极简指南如何备份保管好你的Bee矿机数据

swarm测试极简指南如何管理你的Bee节点状态数据 ?

swarm测试极简指南bzz节点部署 - 挖矿单机单节点,版本:0.5.3