Many examples of P2P systems have emerged recently, most of which are wide-area, large-scale systems that provide content sharing [12], storage services [10], or distributed “grid” computation [4, 11]. Smaller-scale P2P systems also exist, such as federated, serverless file systems [2, 1] and collaborative workgroup tools [7]. The success of these systems has been mixed; some, such as Napster, have enjoyed enormous popularity and perform well at scale. Others, including Gnutella, have failed to attract a large community, possibly due to a combination of weak application semantics and technical flaws that limit its scaling. Perhaps the most exciting possibility of peer-to-peer computing is that the desirable.