blockchain - 如何在不知道创世文件的情况下将以太坊节点添加到现有区块链?
问题描述
我是新的区块链目标:我想将新节点添加到已经运行的区块链。
正确,如果我错误地将节点添加到网络。两个节点应该有相同的创世块。如果创世块具有不同的值,那么新设置的节点将无法从已经运行的区块链中挖掘交易。
问题:我没有 gensis.json 用于在新节点上创建相同的 gensis 块。
尝试过:我尝试设置 gensis 块,但实时区块链 gensis 块值与本地系统上的新设置不同。通过连接到 geth 控制台并在控制台中运行以下命令进行检查。
admin.nodeInfo
因此,当我使用以下命令添加对等方时,它返回 true。
admin.addPeer("endoevaluefromec2instance")
当我在 ec2 实例上列出对等方时,它显示计数 0。
0
注意:我可以使用 web3 模块连接到区块链,所以我认为没有连接问题问题:
- 如何从已经运行的以太坊实例创建 gensis.json 文件?
- 有没有其他方法可以将节点添加到已经运行的实例或挖掘事务?
- 我如何备份已经运行的区块链并在系统上恢复?
解决方案
由于您可以访问现有节点并假设它们正在运行类似的客户端,因此您实际上可以将chaindata
文件夹复制到新节点,然后指定datadir
新节点的。
前任:
如果您的 geth datadir 文件夹位于/root/.ethereum
,请将整个chaindata
从现有节点复制到新节点。如果您的新节点没有geth
文件目录,您可以复制该../geth
目录而不是../geth/chaindata
.
然后使用这样的参数运行geth
客户端--datadir
$ geth --datadir /root/.ethereum/
然后你可以admin.addPeer
并且应该正确同步。
推荐阅读
- c# - 窗口处于最大化状态时用户控件未调整大小 - Windows 窗体 C#
- android - 无法使用 Android 中的工具栏返回导航返回父活动
- raku - 从字符串解析并转换为浮点数、整数 (Raku)
- javascript - 鼠标右键单击 p5.js 显示浏览器上下文菜单而不是绘图功能
- haskell - Haskell mutliline 守卫内部不工作
- vb.net - 部署的 WebApi 2 返回旧值
- qt - 屏幕尺寸值错误
- git - 如何动态更改以 Git 存储库结尾的行
- javascript - NextJs在调整大小时传递动态宽度而不是重新渲染
- snowflake-cloud-data-platform - 为什么从 Snowflake Web 控制台新创建的数据库没有在 snowsql 客户端中列出?