While I love it discusses about linearizability/serializability tradeoffs with different architecture, I'm a bit puzzled how come they chose 2PC for scalability. In my opinion, 2PC has been a bad idea for scalable distributed systems, and generally speaking the design decision that has turned to be good (whether or not this was intentional) by bitcoin was that optimistic locking with cryptographical validation was way better. Am I missing something?