What ways are there to increase the speed of synchronisation of the network, assuming the use of the main Bitcoin client?
One way is to pre-calculate a subset of the data - this would be up to the author of the bitcoin client.
For example, the author of a particular client could say (to the program): "The first block is 286,427, it's hash is 0000000000000000f85c21f45015dcd2a89df40b03071234e1b3211aecaea1a4, and at that time, the COMPLETE list of balances is as follows: (include the full list here).
So long as the information is correct (and verified), and it is not on the wrong side of a fork, processing could continue from there. You would lose transactions before then.
Next to installing an SSD, and using
-dbcache=N to allow Bitcoin Core to take more memory, each release of Bitcoin Core has sped up the synchronization.
Bitcoin Core 0.14.0 release will introduce the option
-assumevalid=<block> which will cause Bitcoin Core to not check signatures up to the given block. This is by default enabled and set to a block shortly before the release. It has been reported that synchronization only took about 2/3 of the time with 0.14.0 than with 0.13.2.
So, if you're still on an older version because you're reindexing or hadn't turned on Bitcoin in ages, you'll probably see huge benefits by upgrading to a newer version.