A long-standing tenet of distributed systems is that the strength of a distributed system can grow as more hosts partic- ipate in it. Each participant may contribute data and computing resources (such as unused CPU cycles and storage) to the overall system, and the wealth of the community can scale with the number of participants. A peer-to-peer (P2P) distributed system is one in which participants rely on one another for service, rather than solely relying on dedicated and often centralized infrastructure. Instead of strictly decomposing the system into clients (which consume services) and servers (which provide them), peers in the system can elect to provide.