We do not maintain a redundant store of unspent outputs. We just store the chain, which includes everything necessary to validate. We split the process into 4 major loosely-coupled phases: (1) headers, (2) blocks, (3) validate, (4) confirm. Headers and Confirm organize blocks into a "chain" and are thus totally ordered. Blocks are downloaded fully in parallel given a stronger candidate chain. Validation is performed fully in parallel given a contiguous set of downloaded blocks. Confirmation is sequential for validated blocks. Milestone bypasses unnecessary checks in the validation/confirmation phases given the presumption of a previously-validated header chain. Eric Voskuil on Libbitcoin design