Why im asking this is because im wondering about the best way to go with global optimisation policy.
Is it best to focus on udp asynchronous io, keep the code simple, because anyway as you said blockchain is mostly sequential and there is no real room for core scaling and parallelisation.
Or is it best to focus on something that can have true robust handling of parallele processing , even if it doesn't seem all that useful in general use case.
Ive been watching the code for a few month already, im more on blackcoin than bitcoin, but the two are still similar, and I dont see that much place where parallelisation can make huge diff.
Outside of the ibd, which still not a minor issue imo because it's a big road block toward centralisation of big blockchain, because it take too much resources and time to keep running a full node at home. Specially for casual users.
And beyond this, there is the question of "blockchain processing speed" in general.
Also when dealing with many nodes, maybe there can be room for core scaling, but from my experience the best to handle message based io is asynchronous interrupt based io, it's much better than threading a blocking io or using non blocking sockets. And I dont see a very good way to scale the processing that much.
Well clearly checking block headers hashes from get header request could be scaled, computing tx hashes from a block too.
Tx processing it make sense if many tx has to be processed by batch, which involve increased latency in the processing, even with higher throughput, which im not sure is better vs lower latency in the processing to have tx processed as it come with lowest latency even if processing 100 tx one/one will take more time than waiting to have the 100 tx to process them in a batch.
For ibd clearly it make sense, because it doesn't matter if 2 year old blocks are processed with zero latency, so synching by batch to me anyway seem to give only benefit.
Cause the question to me is for eg I have 10M/s downlink, there is virtually infinite number of node that have the data, it should take 1h to synch. Why it takes 3 day ??
And even going in more advanced thinking of batch processing from multiple node instead of logic of syncing one block / one block im pretty sure there are things to do.