I guess it is helpful to give a tad more understanding of the scope of fastsync.
The actual concept itself isn’t too big, some people have already done various test implementations and tried out the idea of a full download of the utxo set.
There are various approaches that makes sense and they can be tried in the basic idea of utxo sync.
But there are various parts of infrastructure that are needed to actually create any benefit to the bigger whole of bitcoin cash. And these are not small since they are so core to the full node design.
- The storage of the utxo set itself will have to be changed in order to allow something other than a full backup and share of the database. The incremental nature of the sync ID is to be taken into account here, probably some copy on write structure to allow to have multiple snapshots that can be shared via the p2p network.
- The block pruning concept as it is today is incompatible with full node duties of a fastsync node. The full node would need to follow something like the design from the whitepaper to avoid losing information on pruning.
- Other nodes should be able to get recent blocks that are partly pruned from any fastsync node, to allow the bitcoin cash p2p system to continue to run. This means a new historical block transfer method that can transfer pruned blocks with an intact merkle-proof.
My suggested approach to get fast sync coded is as a first phase to play with the (merkle) proof concepts of the utxo set itself, on a live full node. The ability for a normally synched full node to reach a utxo proof which is hardcoded in the full node at build time would be a powerful first step to allow the operational basic concepts to actually be tested in the real world.
A big release later of the full node this can be expanded.
The full node shipping a utxo set hash means the full node can be kick started from a downloaded utxo set. The caveat is that that full node would be similar to a pruned node today, it can’t be used for SPV servers (either bloom or fulcrum). So this again is a good step to get wider testing but production deployments will be waiting.
The fact that the actual utxo hash is hardcoded at the time of the full node release is a feature, not a bug. It means that every single release major changes are possible without disrupting existing installations. No need to be super specialized in your knowledge and art, a much wider group of people will be able to work on this. Mistakes in the actual utxo proof code won’t have a disrupting effect.
This alone is a LOT of work, as a result it gets more hazy after that as it is predicting an unwritten future. But the ability to have some actual p2p protocol for fast sync is well after these steps, some hash in a block is even harder to predict how we get to that.
ps. I’m not working on this as I did the math and I don’t expect this feature to ever be in need by the network, the growth of hardware and bandwidth, and improvements in software are enough to avoid IBD to become a real problem for bitcoin cash.