This is largely a summary of a series of insights and ideas around parallel validation that were discussed at the 2140 Bitcoin Consensus Code Week. This involved participants who work on Bitcoin Core, Libbitcoin, Floresta, BTCD, and various others.
It's well-known that in order to maximize your hardware resources, software generally should try to minimize ordering constraints. The more you can do in parallel, the better you can utilize your hardware without waiting on prior things to finish. This write-up maps out the areas where we can apply this to Bitcoin and what tradeoffs it entails. Most of this is not new and summarizes community knowledge, though one small novel component is how you can parallelize double spend validation with a single spend check.
First, let's describe the ordered components of validation.