Blockchain Compatibility Between Geth and OpenEthereum (Parity) Explained

go-ethereummigrationnodesparity

I'm trying to set up a full node. Being a DeGoogler I instinctively avoid Go, so I defaulted to OpenEthereum. After compiling on my maching I get 'Illegal Instruction', which seems to be because of my old processor and its lack of AESNI which is compiled as 'on'. WIP…

Meanwhile, I figured that 'the Etherum blockchain IS the Etherum blockchain' so I created a geth vm to let the syncing begin. While doing some reading on advanced configuration I stumbled upon this article which states that the blockchain is a DIFFERENT SIZE between geth and parity nodes. WTF?! Shouldn't the blockchain be identical?

Upon reflection it makes sense that the same data can be represented on disk in multiple ways… It just never occurred to me that during the parallel development of blockchain projects like geth/parity that the format would be divergent.

Does anyone have any experience with this? Has anyone migrated their node from geth to parity/openetherum? If so, is it as simple as copying the chainstate directory and resyncing as I had hoped?

Best Answer

You definitely cannot migrate the data from Geth to Parity (or from any other Ethereum client to another). The internal workings are (and necessarily have to be) different. Different teams do things differently.

The 'external' workings on the other hand MUST be the same. By 'external' workings (a phrase I made up just now), I mean the network protocol--the language the nodes use to speak to each other.

Think of it this way. If one team stored the bytes that go into the block hash as a series of bytes delimited by three spaces (I have no idea why they would, but they could) and another team stored the same bytes separated by two dots, they could both recreate the original bytes needed to create the block hash by simply removing the delimiters, but each node would have different data on disc.

Related Topic