2

我正在尝试以太坊。我已经通过网站上的说明成功设置了一个私人测试网。但是,我在添加来自不同机器的对等点时遇到了麻烦。在我创建的任何节点上,admin.nodeInfo.NodeUrl 参数未定义。我通过调用 admin.nodeInfo 获得了 enode 地址,当我尝试 admin.addPeer("enode://address") 命令(使用公共 IP)时,它返回 true,但调用 admin.peers 时未列出对等方.

我在另一个线程(here)上读到私有测试网只是本地的,但是我看到很多文档表明其他情况(herehere。)我已经尝试了第二个教程,添加了自定义networkid和创世块的命令行标志.

任何建议将不胜感激。如果我可以提供更多详细信息,请告诉我。

4

1 回答 1

2

在可用的文档中很难找到,但一个关键函数是 admin.addPeer()。

https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console

我想有几种方法可以做到这一点,但我有 1 个节点在我的本地 PC 上运行,一个节点在远程服务器上运行。这在测试合约时为我节省了以太币,并防止我用垃圾污染以太坊区块链。运行时的关键admin.addPeer()是为每个注释找到“enode”,这样您就可以在其中一个节点上运行该函数,使其看起来像这样:admin.addPeer(enode@ipaddress:port)。如果您运行admin.peers并看到除空列表之外的其他内容,那么您可能成功了。要检查的主要内容是 enode ID 和 ip 地址admin.peers与您期望的匹配。

geth 配置设置也有点棘手。您将不得不为您的特定用途采用它,但这里有一些我使用的参数:

geth --port XYZ --networkid XYZ --maxpeers X

将 XYZ 和 X 替换为您要使用的数字,并确保在启动两个音符时运行相同的参数。可能涉及更多参数,但这应该会让你走得很远。

免责声明:我自己是 Geth 的新手,并且除了 facebook 之外,我还使用计算机做任何事情,所以我的回答持保留态度。另外,我还没有给你完整的启动 Geth 的命令行,因为我不能 100% 确定某些参数是否与私有测试网相关,哪些不是。我只给了你我确定与运行私有测试网有关的那些。

此外,您可能会发现无法执行任何运行私人测试网的事务。那是因为你需要其中一个来开始挖矿。所以运行:miner.start(X)当你准备好开始部署合约时。

我很抱歉这还没有完全完成,只是在花了 1-2 周试图弄清楚自己之后传递了我的经验,因为文档没有完全清楚地说明如何做到这一点。我认为应该本着 Ethereuem 的精神积极劝阻它,但就我而言,我运行主要不是为了污染区块链。

PS。当我正准备点击提交时,我发现这也提供了更多信息。

连接到网络

于 2016-01-17T14:46:08.480 回答