首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不工作的局部节点引导节点

不工作的局部节点引导节点
EN

Ethereum用户
提问于 2018-03-13 22:26:51
回答 1查看 3.3K关注 0票数 1

在我的台式电脑和笔记本电脑上,我下载了geth&tools 1.8.2。在桌面上,我使用以下方法创建了一个本地节点:

代码语言:javascript
复制
geth --datadir "D:\EthereumLocalNode" init "D:\EthereumLocalNode\genesis.json"

在genesis.json文件中:

代码语言:javascript
复制
{
   "config": {
      "chainId": 1114,
      "homesteadBlock": 0,
      "eip155Block": 0,
      "eip158Block": 0
   },
   "difficulty": "400",
   "gasLimit": "2100000",
   "alloc": {
      "1f8b3201b54d73daac3c9437289102c7f11f9ff0": { 
          "balance": "100000000000000000000000" 
      },
      "968859556c516ccf00269a69795d08b5e899e2d2": { 
          "balance": "120000000000000000000000" 
      }
   }
}

然后,通过使用引导节点工具,我创建了nodekey,以便稍后用于引导节点命令:

代码语言:javascript
复制
bootnode -genkey boot.key

然后使用以下标志启动第一个节点:

代码语言:javascript
复制
geth --datadir  "D:\EthereumLocalNode" --networkid 1114 console 2>>  "D:\EthereumLocalNode\myLog.log" --rpc --rpccorsdomain "*" --nodiscover --nodekey boot.key

我的意图是:

代码语言:javascript
复制
--networkid 1114    // random id (same as chainId in genesis.json, I'm not sure if this equivalance is required, please comment if not)
--rpc
--rpccorsdomain "*" // To be able to reach this local node using remix and deploy contracts through there
--nodiscover        // To manually add the nodes I want, no other random nodes allowed.
--nodekey boot.key  // To use same constant key I created previously in the boot.key file  

当我跑的时候

代码语言:javascript
复制
admin.nodeInfo.enode

我得到:

代码语言:javascript
复制
"enode://1998f24ae4cb9f685633e679286d613a3752ed03d460308c21e3c5efc28d080c608f351c379bdc4f77f4f036e3ce86e1786ec7256c8e467c1dee8c99aafc0629@[::]:30303?discport=0"

请注意结尾处的?discport=0部件(由于- note选项)

我的桌面ip被指定为192.168.1.20用于本地wifi网络。

然后,我在笔记本中创建了一个空文件夹,名为“E:\EthereumLocalNode2 2”,稍后我将使用该文件夹创建一个将连接到我桌面上的节点的节点。

现在,我故意将其保留为空,而不对该节点使用geth init,因为我希望我的网络有一个将起源于我桌面中的节点的单一块链。如果我在这个节点中运行geth,那么成因节点和块链就会有所不同。(请警告我,如果这个假设是错误的)

我在膝上型计算机中运行以下命令:

代码语言:javascript
复制
geth --datadir "E:\EthereumLocalNode2" console 2>> "E:\EthereumLocalNode2\myLog2.log" --bootnodes "enode://1998f24ae4cb9f685633e679286d613a3752ed03d460308c21e3c5efc28d080c608f351c379bdc4f77f4f036e3ce86e1786ec7256c8e467c1dee8c99aafc0629@192.168.1.20:30303" --nodiscover

注意,enode地址与我以前创建的boot.key相同。接下来发生的情况是,生成一些默认的块链,admin.peers为两个节点返回空。

我也尝试使用以下geth调用,每个不同之处如下:

没有"enode://“字符串:

代码语言:javascript
复制
geth --datadir "E:\EthereumLocalNode2" console 2>> E:\EthereumLocalNode2\myLog2.log" --bootnodes "1998f24ae4cb9f685633e679286d613a3752ed03d460308c21e3c5efc28d080c608f351c379bdc4f77f4f036e3ce86e1786ec7256c8e467c1dee8c99aafc0629@192.168.1.20:30303" --nodiscover

在enode地址周围没有引号:

代码语言:javascript
复制
geth --datadir "E:\EthereumLocalNode2" console 2>> E:\EthereumLocalNode2\myLog2.log" --bootnodes 1998f24ae4cb9f685633e679286d613a3752ed03d460308c21e3c5efc28d080c608f351c379bdc4f77f4f036e3ce86e1786ec7256c8e467c1dee8c99aafc0629@192.168.1.20:30303 --nodiscover

在ip地址周围有手镯

代码语言:javascript
复制
geth --datadir "E:\EthereumLocalNode2" console 2>> "E:\EthereumLocalNode2\myLog2.log" --bootnodes "1998f24ae4cb9f685633e679286d613a3752ed03d460308c21e3c5efc28d080c608f351c379bdc4f77f4f036e3ce86e1786ec7256c8e467c1dee8c99aafc0629@[192.168.1.20]:30303" --nodiscover

所有这些都无法成功连接到我桌面上的节点。

我也尝试过使用admin.addPeer,但没有成功。

然后,我对防火墙是否妨碍了我的工作感到犹豫不决,所以在我的桌面上,我启动了另一个cmd实例,并在一个再次为空的文件夹中创建了另一个节点,该文件夹使用--引导节点指向我的第一个节点,但这次使用

代码语言:javascript
复制
--ipcdisable // To be able to connect from the same computer.
--port 30304 // Not to have conflicting ports

全员指挥是:

代码语言:javascript
复制
geth --datadir "D:\EthereumLocalNode2" console 2>> "D:\EthereumLocalNode2\myLog2.log" --bootnodes 1998f24ae4cb9f685633e679286d613a3752ed03d460308c21e3c5efc28d080c608f351c379bdc4f77f4f036e3ce86e1786ec7256c8e467c1dee8c99aafc0629@127.0.0.1:30303 --port 30304 --networkid 1114 --ipcdisable --nodiscover

同样,这和admin.addPeer都不起作用。我无法通过本地家庭wifi网络或通过同一台计算机连接到我的第一个节点。

请帮帮忙,我已经失去了两个晚上,没有希望找到解决办法。我使用旗子的方式可能有问题。

抱歉解释得太长了。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-03-15 00:50:45

我假设您的私有测试网上的geth实例是从同一台机器上运行的?(相对于使用自己的VLAN独立的机器)

添加--nodiscover标志可以防止节点窥视,除非手动执行,那么您对admin.addPeer的命令是什么?它需要后面跟着enode地址、ip和端口,如下所示:

代码语言:javascript
复制
admin.addPeer("enode://insertenodeaddresshere@insert Node 1 IP here:insertportnumber")

一个替代引导节点的方法是创建一个static-nodes.json文件并将其放入您的数据中心。此文件将包含要在启动geth实例时自动连接到的enode地址列表。不需要旗子。这是一个参考的一个例子

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/42674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档