Distributed transaction processing

A simple banking application that stores client balances across sharded clusters and allows both intra-shard and cross-shard transactions through the implementation of two-phase commit and Paxos protocols.