Mnet (peer-to-peer network)
Evil Geniuses for a Better Tomorrow
Evil Geniuses for a Better Tomorrow was a startup company founded by Jim McCoy et al. to create MojoNation. After several years, the company ran out of money and laid off most of its employees; Bram Cohen went on to create BitTorrent and Zooko Wilcox-O'Hearn created Mnet out of MojoNation's source code and contributed later to the Tahoe-LAFS. The company's name comes from the game Illuminati by Steve Jackson Games.
At the time it was first publicly released, MojoNation included several notable features:
Evil Geniuses Transport Protocol (EGTP)
EGTP is a general-purpose P2P messaging protocol, comparable in scope to JXTA, but it was released in a working state before Jxta was even announced. EGTP provides persistent identities (based on public-key cryptography) for nodes, end-to-end encryption, message relaying to get through NATs and firewalls, pluggable transports (called "communication strategies" or "commstrats" for short), and an efficient marshaling format (mencoding, similar to the bencoding later used in BitTorrent). EGTP allows arbitrary protocols to be built on top of it; the MojoNation application was composed of several request-response services (described below) that ran on EGTP.
Mojo was a digital cash currency that aimed to provide attack resistance and load balancing in a fully distributed and incentive-compatible way (see Agoric computing). Every pair of MojoNation nodes maintained a relative credit balance, with every EGTP request transferring some Mojo credit from the sender to the receiver. Once the absolute value of the debt between two nodes exceeded the size of a Mojo token, the side with the negative balance would transfer a token to the other, clearing out the debt. Because transferring a token was a relatively heavyweight event, tokens were worth 20,000 (?) Mojo. A MojoNation component called the token server acted as the mint, allowing MojoNation nodes to securely transfer Mojo.
In early versions of MojoNation, users were required to set prices for any services their node provided. Most users had no idea how to choose prices, so the Mojo layer was rewritten to use a second-price rolling auction. Each node maintained a queue of incoming requests that had not yet been processed, sorted by a bid field contained in each request. Requests were serviced in order, from highest to lowest bids. This shifted the burden of pricing decisions from servers to clients: each user could set a price he was willing to pay for services, and his node would offer that bid in outgoing requests. This scheme was intended to create a simple feedback loop: if the system is responding slowly, increase your bid and if the system is responding quickly, decrease it.
File Publishing System
The only application built on the EGTP/Mojo framework was a distributed file publishing system. Users could publish files, which would be stored on other MojoNation nodes. During the publishing process, the file was encrypted and redundantly encoded into many small blocks using an information dispersal algorithm. These blocks were then uploaded to any nodes that were running the "block server" service. Publishing a file generated a unique identifier (similar to a Freenet SSK) that was required to download and decrypt the file. If the user wished a file to be publicly available, he could send the identifier to a "content tracker" service.
Downloading files is the reverse of the publishing process: a user either sends a query to a content tracker and gets a list of identifiers in response or obtains a file identifier out of band, then asks block servers for the appropriate blocks, and then inverts the IDA and encryption algorithms to recover the original file.
Unlike file sharing systems (which never send any data over the network unless it has been requested), most file publishing systems (with the exception of BitTorrent) have not attracted large numbers of users.
- Cave, Damien (October 2000). "The Mojo solution". Salon. Retrieved 9 June 2012.