连接不同机器上的以太坊节点

Connecting Ethereum nodes that are on different machines

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

我在另一个线程上阅读 (here) that the private testnet is only local, but I am seeing plenty of documentation that suggests otherwise (here and here。)我已经尝试了第二个教程,为自定义 networkid 和创世块添加了命令行标志。

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

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

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

我想有几种方法可以做到这一点,但我在本地 PC 上有 1 个节点 运行ning,在远程服务器上有一个节点 运行ning。这在测试合约时为我节省了以太币,并防止我用垃圾污染以太坊区块链。 运行 设置 admin.addPeer() 的关键是为每个音符找到 "enode",这样您将 运行 函数在其中一个节点上看起来像这样: admin.addPeer(enode@ipaddress:端口)。如果您 运行 admin.peers 看到的不是空列表,那么您可能已经成功了。要检查的主要内容是来自 admin.peers 的 enode ID 和 IP 地址是否与您期望的相符。

geth 配置设置也有点棘手。您必须将其用于您的特定用途,但这里是我使用的一些参数:

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

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

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

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

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

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

connecting to the network