2

I've completed an empirical analysis of blockchain forks from block #300000 thru #400000. I found the following: (a) blockchain forks of length 1: observed every 380 blocks on average; (b) blockchain forks of length 2: none observed.

I recognize there is variation inherent in any such analysis, as different full nodes may produce different results.

Does the above data "ring true"? I am keen to hear from anyone with good data (or even good intuition) and especially eager to hear from anyone with different numbers.

2

Blockchain forks are an artifact from the network propagation and appear at random intervals (and far more often than what you observed). It is important to note that since nodes do not forward information that contradicts their view of the network, i.e., they have accepted one of the forks, you will not be able to observe all forks in the network, but only those that are propagated to you through the network.

For details on what causes blockchain forks and their impact on the security/performance of the network see Information Propagation in the Bitcoin Network (disclaimer: I am one of the authors).

  • 1
    Kudos on the excellent paper! My own analysis of time-between-blocks jibes with your data ... good to have such verification. – Pressed250 Apr 10 '16 at 16:11
1

Christian--

Thank you for the answer AND the link to your paper. This is exactly the type of information I was hoping for, but was unable to find myself.

To confirm I understand, allow me to use a recent blockchain branch at block height 406197. Here is the output from getchaintips from my full node: "height": 406197, "hash": "0000000000000000033f1b617ad5c03cec10a6bcc19ce0778e8d75fdbf1ed152", "branchlen": 1, "status": "valid-fork"

And is my representation of the blockchain branch: Blockchain Branch

The main chain resolved in favor of what I will call block #406197-b5ab. With that data, I have a few clarifying questions:

[a] If full nodes only propagate blocks that agree with their "worldview" of the blockchain, does that mean there were sufficient full nodes that accepted block #406197-d152 (eventually orphaned) to relay that block to my full node?

[b] Does the information imply that my full node INITIALLY accepted block #406196-d152 and THEN received block #306197-b5ab? Or vice versa?

My networking knowledge is sound, my queuing theory knowledge is only modest. I am hoping to develop an accurate mental model of a blockchain branch using this particular branch as an example.

Thank you for the time & help! Pressed250.

  • 1
    Hi Pressed250, please consider editing your original question with these additions :-) a) you seeing both blocks means that you are on a node-cut between the partitions that accepted the d152 and the b5ab blocks, we cannot really make any estimate on the size of the partitions (you might have received d152 from the miner itself). b) it depends on your node impementation, just seeing both blocks does not infer anything about the order you accepted them. If I'm not mistaken Bitcoin Core would have discarded d152 if you saw b5ab first so I think you are correct in assuming that you saw d152 first – cdecker Apr 10 '16 at 16:32
  • Christian: great suggestions, thank you. An observation: your paper analyzes a period when there were more "solo" miners. Today the landscape is dominated by a modest number of mining pools. In my vernacular, there are fewer "unique mining entities" today. A thesis: fewer unique mining entities result in fewer blockchain branches, other factors being equal. QUESTION: does this thesis ring true? I am NOT suggesting that my original number is accurate, I recognize that 1-in-380 blocks is definitely underestimating the actual likelihood. – Pressed250 Apr 10 '16 at 20:08

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.