我正试着建立一个完整的节点。作为一个DeGoogler,我本能地避免去,所以我默认为OpenEthereum。在我的机器编译后,我得到了“非法指令”,这似乎是因为我的旧处理器和它缺少AESNI,而AESNI被编译为“on”。WIP..。
同时,我想‘Etherum区块链就是Etherum区块链’,所以我创建了一个geth vm来让同步开始。在阅读高级配置时,我偶然发现了这个文章,它指出块链在geth和奇偶校验节点之间是不同的大小。见鬼?!区块链不应该是一样的吗?
经过思考,同样的数据可以在磁盘上以多种方式表示是有意义的.我从来没有想到,在类似geth/parity这样的区块链项目的并行开发过程中,格式将是不同的。
有人有这方面的经验吗?是否有人将节点从geth迁移到奇偶/openetherum?如果是这样的话,它是否像我所希望的那样简单地复制链接状态目录和重新同步?
发布于 2020-09-22 01:11:32
您绝对不能将数据从Geth迁移到奇偶(或从任何其他Ethereum客户端迁移到另一个)。内部的工作方式是不同的(而且必须是)不同的。不同的团队做事的方式不同。
另一方面,“外部”的工作必须是相同的。所谓“外部”工作(我刚才编造的一个短语),我指的是网络协议--节点用来相互交谈的语言。
这样想吧。如果一个团队将进入块哈希的字节存储为由三个空格分隔的一系列字节(我不知道为什么会这样,但它们可以),而另一个团队存储由两个点分隔的相同字节,那么它们都可以通过删除分隔符重新创建创建块哈希所需的原始字节,但是每个节点在磁盘上有不同的数据。
发布于 2020-04-10 18:08:02
我不确定你能否将数据从Geth迁移到奇偶。如前所述,块链数据部分是相同的,但是它们也存储了其他数据结构,这些数据结构是不同的。理论上,您可以尝试将区块链数据复制到新客户端,但我怀疑这是否有效。
起初,不同的客户端有不同的磁盘需求,这听起来可能很奇怪--为什么我们甚至需要多个客户机?但这是权力下放的好处之一:区块链保持不变,但任何人都可以在此基础上自由地编写自己的客户。如果其中一个客户因为某种原因而停止工作(或任何发生的事情),人们就可以切换到另一个客户。一个客户可能擅长A(使用更少的带宽?)需要更少的磁盘空间?同步更快?)而另一个客户则擅长于B。
发布于 2022-04-07 12:42:52
要有一个共同的表示形式,您需要创建第三个表示,并创建一个同步服务来重播两个系统中任何到达的事务.最后,唯一常见的是事务序列和merkle树状态,但是存储它们的方式完全不同。就像如果你想从mysql迁移到cassandra..。不能复制db文件,但可以转储和重放。
https://ethereum.stackexchange.com/questions/82344
复制相似问题