1

I suddenly found there is an reorg happened today whose depth is 3 on Etherscan.io here. The uncle blocks is at height 9919331 and the hash is 0x3b1161a8bdf5107f1dc2092781798d143b5ae66b6604823630b57f5d9450e1cb. However I further checked the structure of the blockchain history and found the structure is like this:

0xa0f0 => 0xc535 => 0x7ea3
        \
          0x3b11

0xa0f0,0xc535,0x7ea3 represent the blocks (first 16 bits of their hashes) in canonical chain, while 0x3b11 is the uncle block reported by Etherscan with reorg-depth 3. The hash of 0x3b11 is included as uncles in the block 0x7ea3.

I am very confused why Etherscan reports this uncle blocks as reorg-depth 3. It seem this reorg only discard one block (i.e. 0x3b11). Is this a problem in Etherscan? or are there some uncle blocks overlooked by me?

1

Let's suppose a node has this state

A -> B -> C -> D

New blocks arrive and the situation becomes:

A -> B' -> C' -> D' -> E -> F
           |
           B

(Where B is included as an uncle block in C'.)

Since 3 blocks were replaced the reorg has depth 3

The inclusion of B as an uncle in C' doesn't reflect the depth of the reorg.

For example it might have been included further down the chain in D', E or F.

To be included as uncle the block's parent has to be in the main chain. Since B is no longer part of the main chain its children C and D cannot be included as uncle blocks.

| improve this answer | |
  • Thanks for answer. Why uncle C and D are not included in any blocks? – Aaron Apr 23 at 13:24
  • @Aaron To be an uncle block its parent should be part of the main chain. Since B is not part of the main chain its children C and D cannot be uncles. – Ismael Apr 23 at 14:06
  • @lsmael. I see. Is it possible to get block C and block D (the hash and transactions in them)? – Aaron Apr 23 at 14:18
  • @Aaron It might be possible that some nodes still have them when the fork happened. But after sometime they will be lost because they are not part of the main chain. – Ismael Apr 23 at 14:31
  • @lsmael, in case when they are still stored on some nodes, where can I get the hash of block C and D to query them on the node? – Aaron Apr 23 at 14:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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