What really happened back when
@Thomas Bakketun and I published our
IBS (Incremental Block Synchronization) paper?
It's a funny little story, and I will tell it now.
If you don't know it yet, IBS basically removes block propagation time between connected nodes. It doesn't replace block relay and the time related to that.
(Note to self: A similar tier 2/block relay service could be made for connecting to newbie miners that are not well connected and BSP's (Blockchain Service Provders). The incentives are there for all parties.)
Thomas and I sort of discovered this idea together. After talking about it for a few minutes, we agreed to drop what we had in our hands (
the KaChing protocol and implementation) and worked on IBS exclusively for 3 days. Big whiteboards are your friend.
After publishing it, we got some feedback. The two most remarkable feedbacks were these: (Paraphrasing from memory, Slack and Twitter are horrible as historic sources.)
Peter Rizun @Peter R: This is a very interesting form of pre-consensus!
Craig Wright: This is not BitCoin. It's pre-consensus!
Me: It's not fucking pre-consensus!
I got so mad at CSW, I tweeted "Bye bye, troll" and blocked him on Twitter!
Time passed, and last week
@Thomas Bakketun and I went to the Toronto conference. On developer's day (wednesday last week), we hear that the Bitcoin SV node is going to implement a refined version of IBS! We were giggling like little girls and nodding to eachother during the presentation!
As far as I know,
@shadders & co discovered the same solution as we did to smoothify the whole process and remove the network and CPU spikes independently of our paper.
Because it was an obvious solution waiting to be seen by anyone wanting to scale bitcoin.
@shadders did not implement our silly drip feed fee priority system (thank god, it's stupid when blocks are never full), but added methods to delete pre-commited transactions and change their order (simple but brilliant.)
It was very cool to see that our idea is getting used in the real world!
Finally, in case
@shadders read this, I'd like to highlight the last chapter of our paper. It may or may not make economic sense to do it (
@shilch demonstrated how fast this can be done with cheap GPU hardware), but it's an option:
Incremental validation
For each peer a node can decide if it will just store the incoming candidate block transaction set or do incremental validation. Incremental validation allows for extremely fast block propagation. When an end of block message is received, all that is left to do is to validate the provided block header and coinbase transaction and compute a few missing nodes in the merkle tree. There is no need to make a final decision on this. Each node operator can continuously assess what is the best policy. It’s also possible to use a different policy for each peer.
EDIT: The last chapter explained: Build merkle trees for only the largest miners if there are many miners and the process is costly.