I'm using the go-ethereum code (mainly discover (discv4) and rlpx) to write a node discovery tool.

The Programm is using discv4 to discover nodes on the internet and putting the discovered nodes into a que.

A different subroutine then pulls a node from the que and does the hole handshake thing to pass the "HELLO (0x00)" Message. So I get the Capabilities, Name of the Software that the Node is running, OS, ... .

Now I would like distinguish if node is actually a ETH or ETC node. How can I do that?

1 Answer 1


Unfortunately there is no way to differentiate between ETH & ETC peers at the P2P layer due to the fact that most client implement eth/63, which would defines STATUS 0x00 as

[protocolVersion: P, networkId: P, td: P, bestHash: B_32, genesisHash: B_32]

As ETC / ETH have identical genesis hashes and network IDs, it would be impossible to tell them apart from the ENR / Handshakes

EIP-2124 attempts to resolve this by introducing "ForkID" into the STATUS 0x00. This is only implemented in Geth (see HERE, and most ETC nodes would not be sending this packet.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.