首页 > 解决方案 > 如何在不知道创世文件的情况下将以太坊节点添加到现有区块链?

问题描述

我是新的区块链目标:我想将新节点添加到已经运行的区块链。

正确,如果我错误地将节点添加到网络。两个节点应该有相同的创世块。如果创世块具有不同的值,那么新设置的节点将无法从已经运行的区块链中挖掘交易。

问题:我没有 gensis.json 用于在新节点上创建相同的 gensis 块。

尝试过:我尝试设置 gensis 块,但实时区块链 gensis 块值与本地系统上的新设置不同。通过连接到 geth 控制台并在控制台中运行以下命令进行检查。

admin.nodeInfo

因此,当我使用以下命令添加对等方时,它返回 true。

admin.addPeer("endoevaluefromec2instance")

当我在 ec2 实例上列出对等方时,它显示计数 0。

0

注意:我可以使用 web3 模块连接到区块链,所以我认为没有连接问题问题:

  1. 如何从已经运行的以太坊实例创建 gensis.json 文件?
  2. 有没有其他方法可以将节点添加到已经运行的实例或挖掘事务?
  3. 我如何备份已经运行的区块链并在系统上恢复?

标签: blockchainethereumgeth

解决方案


由于您可以访问现有节点并假设它们正在运行类似的客户端,因此您实际上可以将chaindata文件夹复制到新节点,然后指定datadir新节点的。

前任:

如果您的 geth datadir 文件夹位于/root/.ethereum,请将整个chaindata从现有节点复制到新节点。如果您的新节点没有geth文件目录,您可以复制该../geth目录而不是../geth/chaindata.

然后使用这样的参数运行geth客户端--datadir

$ geth --datadir /root/.ethereum/

然后你可以admin.addPeer并且应该正确同步。


推荐阅读