The Background
Bitcoin tracks chain work by counting the (expected) minimum number of hashes it would take to create a chain of the same number of blocks and same difficulty steps[1]. Naturally, accumulated work measured in this fashion (e.g. expected number of hashes) increases with each new block that is added to the chain.
For a given target t
, the minimum expected number of hash attempts necessary to find a block which meets the proof of work criteria (hash less than or equal to t) is geometrically distributed[2] with parameter p = t / 2^256
.
We can calculate the entropy, w
, of such a geometrically distributed random variable[3] by the equation w(p) = (-(1-p)log2(1-p) - plog2(p)) / p, and using p = t / 2^256
we can trivially rewrite this into a function of the target instead, w(t)
.
Using this method we can calculate the minimum work (e.g. entropy) w(t)
, denominated in bits, necessary to describe the proof of work signal. Other components of the blockchain (such as what data is in the blocks besides the proof of work signal) are not included in this analysis so that is why it is an estimate of the minimum encoding.
Plugging in some numbers:
- for block zero (and any block with the lowest possible difficulty, hence
p = 1 / 2^32
), we getapproximately 33.44 bits
of work per block. - for a more recent block, say block
#602784
we getapproximately 76.97 bits
of work per block.
The Question
Can we complete the above analysis for every difficulty period and sum the entropies to obtain a lower bound on the minimum complexity, in bits, of the (proof of work aspects of the) Bitcoin blockchain? Or is there some assumption (such as being able to sum the entropies in this context?) that is unsafe/wrong?
An Attempted Answer & Some Motivation
Performing such an analysis[4] seems to give a result, as of block 602784, of approximately 36.9 million bits or 4.6 megabytes and growing.
However, one reason why the method seems interesting is that, if it is reasonable, then it seems that all the math which the bitcoin protocol currently does with "time" (in the unix timestamp sense, such as difficulty adjustments, and block timestamp must advance median of last n block's timestamps) could instead be done in "bits." As such, this could be helpful for when/if the protocol is extended into operate across vast distances of spacetime?
Then again, there is probably something terribly wrong with this analysis which is why the question is being asked here.
References
[1] Strongest vs Longest chain and orphaned blocks
[2] How is it that concurrent miners do not subvert each other's work?
[3] https://math.stackexchange.com/questions/490559/entropy-of-geometric-random-variable
[4] https://github.com/philbertw4/mathematicalbitcoin/blob/master/scala/SatsPerBit.sc