自己搭建的以太坊私链中,轻节点(syncmode “light“)和全节点(syncmode “full“)无法连接的问题

以太坊私链轻节点与全节点无法连接的问题

声明

此问题该文章没能解决。我对我的测试过程和一些发现做了描述,欢迎对该问题有见解的朋友积极留言讨论。

前提

所有geth的初始化都是采用的同一个genesis.json文件,各个节点的–port和–rpcport都不相同,–nodiscover参数已添加。

问题描述:

首先,我搭建了自己的以太坊私链,在之前的使用中我是直接启动私链,不考虑轻节点与全节点的问题,即不设置–syncmode参数。
最近,我注意到轻节点与全节点,因此,我希望搭建一个同时包含全节点和轻节点的以太坊私链,实现节点间的交互。对之前的一篇文章进行补充完善,但是我遇到了麻烦。

我在这篇文章的admin和bootnode方法中加入 --syncmode "light"参数,进行了多次尝试都以失败告终。

测试结果:

在尝试中得到了相同的结果:
全节点之间可以很好的连接,无论是admin还是bootnode方法。
轻节点与全节点之间没能实现连接,添加轻节点后peercount保持不变,连接失败。
轻节点之间也没有连接起来(这个我只做了一次测试,我通过admin.addPeer()在轻节点的console中添加轻节点,peercount=0,连接失败。)

测试中发现的问题:

首先我们对比下启动轻节点和全节点时,启动后自动输出的语句:
轻节点:
自己搭建的以太坊私链中,轻节点(syncmode “light“)和全节点(syncmode “full“)无法连接的问题_第1张图片
全节点:
自己搭建的以太坊私链中,轻节点(syncmode “light“)和全节点(syncmode “full“)无法连接的问题_第2张图片将目光聚焦于
Maximum peer count

可以看到轻节点ETH=0 LES=20
全节点ETH=50 LES=0

ETH和LES分别表示可连接的全节点和轻节点数量,也就是说这里本来就是不可以连接的,轻节点无法连接全节点,全节点无法连接轻节点。

进一步,我尝试去更改轻节点和全节点中的ETH 和 LES

我的更改命令如下:

在这里插入图片描述
在geth启动命令中添加了中的参数

--maxpeers value      最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25)
--lightpeers value                    最大LES client peers数量(默认值:100)

得到的结果

在轻节点的控制台中,我很容易的更改了LES,即轻节点的最大连接数量;但是ETH无法更改,即全节点的最大连接数量依旧是0,没能更改。

目前到此。

此问题我没能很好的解决,希望对此问题有见解的朋友积极留言,共同解决该问题,在此提前表示感谢!

你可能感兴趣的:(以太坊搭建,以太坊,区块链)