In fairness, he said "torrent like".
My understanding is that the default client downloads everything from 1 other client.
A better (torrent-like) process would be something like
Download header chain
Get 100 header hashes from each other node you are connected to
- You need to do this in order
-- ask first node for 100 hashes starting at block 0
-- ask second node for 100 nodes starting at 100 (you need to send the hash for 99)
-- ask next for 100 more etc
When you have a set of 100 header hashes from a node, you can then ask the node to send you the block headers in full.
When downloading the 100, you can verify that they make up a chain.
The result is that you get lots of 100 length sub-chains.
You then have to merge them and make sure they form a chain too.
When a node has sent you the 100 block headers, you can ask it for another 100.
This gets you all the block headers
Download blocks
Next you need to download the blocks. Again, ask each other node for blocks in groups of 100.
When a block is received, you can check that it matches the header for that block.
Verify blocks
Once you have all blocks that occur before a given set of 100 blocks, you can then add them to the verified set. This requires checking all the encryption.
This is apparently, the big processing bottleneck.
This.
I didn't know that it downloads it from 1 other client. :S
it's not that surprising to have 1+ days download time now.
What is the status of the fix? has it been considered to make it better?