Mojonation was an alternative to bittorent, which ran out of money and was forked to mnet.
https://web.archive.org/web/20120204081148/http://mnetproject.org/faq
What is Mnet?
Mnet is a distributed file store. It is formed by an emergent network of
autonomous nodes which self-organize to make the network robust and efficient.
The source code is still available on sourceforge. Within that source is overview.txt which describes a network extremely similar to safe network. I tried to pull out relevant quotes but the whole thing is eerily relevant so I’ll just post the complete file content here
Technology Overview
(
14feb2001
What is Mnet?
Mnet is a peer-driven content distribution technology built around three core technologies:
swarm distribution, decentralized services, and market-based distributed load balancing. The
Mnet technology enables licensees to distribute content using customer resources and bandwidth,
realizing a significant savings in server, bandwidth, and administration costs. Strong
cryptography provides security and trust management for enterprise applications of the technology
and basic DRM tools for commercial content distribution. The Mnet software is the public
prototype to demonstrate some of the features of this technology platform.
Swarm Distribution: Mnet breaks up the task of delivering content among many agents across
the network, each of which contributes as much as it can to the collaborative effort -- even
low-bandwidth, dial-up users can deliver a small portion of a requested resource. Speed and
reliability are enhanced because several peers work together rather than one peer working alone.
Decentralized Services: Distributed (so called "peer to peer") system consists of a group of
unalike computers connected by a network and equipped with corresponding software so that the
computers can coordinate their activities in a common scheme -- each computer on the Mnet
network contributes disk space, bandwidth, or processing time to the system. Communication within
the Mnet is a peer-to-peer network, enabling any computer on its network to talk to any
other without having to go through a centralized server.
Distributed Load Balancing and Decentralized Accounting: When demand for a certain resource on a
peer-driven network is high, the peer that supplies that resource may bog down or grind entirely to
a stop. Mnet technology gives users who have contributed resources to the system and
established "credit" a choice of moving to the head of the line for that resource, and the clients
automatically migrate to less-occupied servers.
Disk space, bandwidth, and processing cycles contributed to the system are counted in "Mojo," a
digital currency denominated in these same resources. Each peer-to-peer interaction across the
network involves some exchange of this credit -- peers perform bookkeeping using a background
payment system and a trusted third party within the network ensures honest transfers between
agents. These tools can also track content usage and facilitate artist/owner royalty accounting or
even allow peers to exchange "tips" for content.
The demand-driven Mnet marketplace provides a stable, reliable, and scalable way to publish
and download digital content. Mnet users contribute resources to the community -- thus
acquiring Mojo -- by performing one or more services (for instance, storing data blocks or hosting
a tracking service), and can use their Mojo to browse the content available within Mnet or
redeem the credit in some other fashion.
Core Technology
In a "client-server" distributed system, software is split between server tasks and client tasks --
that is, the client sends a request to the server, and the server responds. Any part of the system
that prepares or exchanges information on behalf of a server or client is known as an "agent", and
in a peer-to-peer network like Mnet, each agent performs both client and server roles. Mojo
Nation consists of a distributed pool of agents performing various functions: e.g., relaying
messages, tracking, publishing, or storage. Each agent works on behalf of the user, trying to
maximize value for the user and responding to a standard set of messages depending on the part it
plays in the system -- these roles will evolve to fit the needs of Mnet customers and
licensees.
The "Broker" is the user's middleman between the user and the network, handling the user's Mojo
transactions and overseeing the activities of its tracker agents. There are three types of tracker
agents working in Mnet: metatrackers, content trackers, and publication trackers. The
metatracker notes the network location of the Brokers which are online, along with their public ID
keys and a list of the services they provide. The content tracker stores dinodes, maps which enable
the retrieval agent to find the data blocks that make up a published file, and acts as Mojo
Nation's search engine. The publication tracker distributes published blocks and injects new data
into the system.
Micropayment and Distributed Accounting Technology
The Mnet barter system combines a "digital token" micropayment system with peer-to-peer
microcredit. Each interaction between agents across Mnet involves some offer of Mojo. Every
request, response, or action performed by one agent for another has a cost -- since each
transaction requires an exchange of Mojo, the system is resistant to "denial of service" vandalism,
or other types of online mischief. By keeping score of what resources are contributed by peers
within the network the Mnet technology allows licensees to establish an incentive structure
to lock-in customer resources. The market-based mechanisms this distributed accounting system
enables also provides for distributed load balancing among the peers, easing network bottlenecks
and directing peers away from overloaded servers.
In any conversation between two agents -- sending a hello message to the network or requesting
information or service from another -- an offer of Mojo is made, but the digital currency is not
transferred at that time. Instead, an IOU for Mojo is sent from the initiating agent to the
responding agent -- one agent extends the other a bit of credit in order to complete the
transaction, and the creditor agent doesn't call in its marker until the debtor agent has reached
its credit limit or the IOUs can be covered by a single coin. At that time, the debtor pays up by
transferring a digital coin from his account on the Mnet token server to the creditor
account. By limiting the number of times a transfer of currency is actually made, the Mnet
system gains in fault tolerance and speed, in the following ways:
* Uninterrupted service. The Mnet economy continues to operate even if the token server is
temporarily unavailable.
* Faster transactions. Each token payment requires communication with the token server, but the
microcredit IOUs have almost no overhead, since those messages are integrated with the requests and
responses that are already passing among peers.
The Broker keeps track of how much Mojo one user owes another, while tokens are transferred without
user input or involvement. The debtor's Broker starts the token transfer by first sending the
creditor's Broker a token. The creditor's Broker temporarily extends to the debtor an increase in
credit equal to the token -- this increase enables the Brokers to continue doing business while the
creditor is dealing with the token server and also if the creditor's connection with the token
server is interrupted. The creditor's Broker deposits the copy of the token with the token server
and completes the transfer. Each token is digitally signed to prevent forgery, while each token is
used just once to protect against double-spending of a token. After the token transfer is complete,
the creditor removes the temporary increase in credit and the recipient withdraws a fresh token
from the token server. The token server keeps a list of current accounts and their balances, but
each account is not directly linked to a single user identity.
File Publishing and Retrieval
Content distribution and online backup services are expensive operations. By harnessing the latent
storage and bandwidth available on the client-side, the Mnet technology enables a content
distributor to realize a significant cost savings. By breaking a distributed file into fragments
for storage and retrieval Mnet is able to engage many agents working in parallel on each
data transfer. Each agent contributes effort to each task based upon available bandwidth, allowing
a single download to engage a combination of broadband and dial-up users to accomplish the file
transfer. The resulting throughput improvement allows the Mnet technology to delivery
rich-media content to the customer.
Publication
Information is published to Mnet through the Broker, which first breaks the original file
into several pieces (the larger the file, the greater the number of pieces), then each piece into
eight blocks -- any four of which are sufficient to reconstruct the original piece. These data
blocks are run through a cryptographic hash function that scrambles the blocks and generates a
unique identity tag -- known as a block ID -- for each block.
After a bitmask has been assigned to each data block, the Broker learns from the metatracker which
block servers are running. These block servers present a list of their prices for storage and the
range of block IDs (or "bitmask") they will accept, and the Broker pays the right block servers for
their service. When each block has been stored, the Broker tells the publication tracker that new
blocks are available at their respective addresses. These blocks are then shared between peers,
with more popular content being replicated more widely among the customer block servers.
The Broker also draws a "sharemap", which explains how to reassemble the pieces of the file from
the data blocks and then the file from the pieces, and continues by breaking up and encrypting the
sharemap. A list of the blocks which makes up the sharemap is a "dinode", and the primary job of a
content tracker is the storage of these dinodes and maintenance of everything else the system knows
about the file (content description, publisher's signature and content rating, and so on).
Downloading
File retrieval on Mnet begins with a content search. At the search page, the user can select
from a growing number of content types, and each of the content types presents its own array of
type fields to delineate the user's search (that is, the user could search for a certain "bitrate"
among the "audio" content types, but not others). After the user provides his search criteria and
clicks "search," the Broker goes back to work.
First the Broker locates every content tracker available on the system, then sorts them -- first by
the price each asks to perform a lookup, and further by the tracker's reputations. Then the Broker
pays one or more content trackers to hunt their respective databases for the user's search string.
If the content tracker can match a filename or description to that string, the tracker returns all
the human-readable information it has about that file to the user -- most crucial is the dinode
(without which the file could not be reassembled), while content description, publisher pseudonym
and other user-readable information might also be returned. The user can then attempt to retrieve
the file.
When the user clicks "download," his Broker first examines the list of the block servers from which
the user has purchased blocks before, and tries to use those block servers. Otherwise, the broker
asks the metatracker to find block servers whose range of carried block IDs includes those which
make up chunks of the requested file (as the amount of data in the system grows, a block server
will have to narrow the range of blocks it carries, depending on the local disk space). If every
chunk of the file -- any four of the eight blocks into which a chunk is broken are necessary for
rebuilding the chunk -- can be reassembled, the file can be rebuilt according to the sharemap, and
passed to the user.
By engaging multiple agents in a single download tasks the Mnet technology is able to
deliver a high-throughput file transfer. This aggregation of low-bandwidth agents together into a
single swarm is one of the key features of our content distribution system. Many hands make for
light work...
Protocol
A protocol is a set of rules that enables different machines or pieces of software (like the Mojo
Nation agents) to coordinate with each other. The Mnet protocol is message-based and
asynchronous. In a message-based protocol, two parties in a conversation exchange messages by
carrier pigeon (but in a connection-based protocol, the parties trade messages using two cans
connected by a string). In an asynchronous conversation, one side need not wait for the other
side's carrier pigeon to return with a response before sending another message.
The Mnet protocol exists in four layers:
The transport layer: The transport layer moves secure data from one party to another through
TCP/IP, the standard, connection-based protocol. Mnet does not fully depend on the transport
layer, however, and ensures more reliable data transfers by taking advantage of the
connection-based protocol when it is available but having other options for data transfer when it
is not.
The encryption and authentication layer: This layer provides secure and private communication
between two parties by encrypting and decrypting each message, converting plain text (which anyone
can read) to cipher text (which can only be read by the intended recipient) with public-key
cryptography. Mnet guarantees the authenticity of each message by validating the message's
digital signature, which can only be generated by the holder of the sender's private key, while the
signature itself is also encrypted by the RSA algorithm.
The conversation layer: In Mnet, there are two types of messages, initiating and responding.
The conversation layer matches an initiating message to its responsive counterpart by first
assigning a random number -- a "nonce" -- to the initiating message, then waiting for that number
(in an encrypted hash) to return with the response. When the first party receives the right hash in
response, it knows that the correct recipient got the initiating message, because it is impossible
to create the hash without seeing the nonce in the initiating message. The initiator also knows not
to repeat the initiating message, which adds to system efficiency. Further, the initiator will
ignore any recurrent use of the hashed response, which protects the system from "replay" vandalism
(where the intruder will intercept a message, and then "replay" it for the sake of mischief).
Finally, because the initiating messager ignores more than one response containing the correct
hash, the initiator can repeat a message safely and indefinitely because the responding message
contains built-in idempotence -- that is, a response replicated many times is effective only once.
The Mojo transaction layer: Every conversation between two agents in Mnet involves an offer
of Mojo -- the initiating message includes a request for service and a Mojo IOU, while the
responding message includes acceptance or rejection of that offer. When an initiating message and
Mojo offer arrives, the respondent checks his price list for services (which is user-configurable)
at the Mojo transaction layer to see if the offer is acceptable. Then the respondent refers to the
initiator's credit limit -- based on the initiator's reputation for good dealings -- and if the
initiator's Mojo offer is acceptable, and leaves him under his credit limit, the respondent accepts
the IOU and provides the service.
Outgoing messages filter through the Mnet protocol layer from the top layer down. That is,
at the Mojo transaction layer, an offer of Mojo is made or evaluated. Then the message is passed
down to the conversation layer, where the message is matched to its counterpart by its nonce. From
there, the message is encrypted at the encryption/authentication layer, and is dropped down to the
transport layer, where the message is tied to a carrier pigeon, and sent on its way.
Incoming messages go from the bottom to the top. The transport layer takes the message from the
carrier pigeon, and passes it up to the encryption layer. Further, the transport layer prepends a
32-bit number that represents the length of each message to each message, so the encryption layer
knows how much data to read before it stops decrypting. The encryption layer also validates the
message's digital signature, and then moves the message to the conversation layer. If the Broker
happens to be conducting 20 conversations at once, the conversation layer knows which the new
message belongs to by following the trail of nonces and hashes. The message works its way up to the
Mojo transaction, where the Mojo offers are tendered, then accepted or declined.
Reputations
One of the cornerstones of Mnet is a flexible reputation system that is used for a variety
of functions. Each Broker maintains its own local database of reputations for other Brokers,
including a list of others with which it has done business and information about those
transactions. This history is comprised of their response times to queries as well as their
dependability for being online when queried, reliability for content and information delivery, and
the credit limit extended to them. Then, for example, if one Broker tries to cheat another by not
delivering information, the requesting party should neither run a fraud detection protocol nor
consult a third party for resolution. Instead, the requesting Broker will lessen the local
reputation of the other, and complete the desired transaction with a different agent.
One example of a reputation in the Mnet system is credit rating. Every Broker is associated
with a credit rating that will determine how much trust another agent will grant at the start of
their first conversation. By combining the reputation system with the payment system, Mnet
provides alternatives for users regarding quality of service. One's Broker might pay more Mojo to
retrieve data from block servers with reputations for low latency (which therefore charge more for
the good reputation) or put background tasks into a low-priority queue to run during times of low
demand within the network.
Relay Services - Firewall and NAT Traversal
Many potential Mnet users cannot link to the system because they are located behind a
firewall, using network address translation (NAT) services, or connect to the Internet in a way
that does not allow the user to accept random incoming connections -- in those cases, the messages
intended for their Brokers cannot get through. A relay server enables these customers to use the
Mnet technology platform by holding their system messages outside the firewall until the
user's Broker makes an outgoing connection to retrieve them. By providing store and forward message
passing the relay services enable users who would otherwise not be able to participate in the
network.
A Broker that wants to use a relay service first asks a metatracker for the other Brokers online
that are providing relay service. After the Broker shops for the least-expensive relay service and
makes a connection with that server, messages sent to that relay server on the Broker's behalf are
held there until the Broker picks up the messages. The relay server acts as an answering service,
collecting messages for Brokers that are registered there, and then delivering them as requested.
Summary: Mnet combines the flexibility of a demand-driven marketplace with a secure "swarm
distribution" mechanism that goes far beyond any current file-sharing system by providing
high-speed downloads that run from multiple peers in parallel. The Mnet technology is an
efficient, massively scalable and secure toolkit for distributors and consumers of digital content.
The Mnet infrastructure is a distributed society of independent agents that maintains a
higher degree of reliability and fault tolerance than a centralized system because users can look
across the entire system for information and services rather than request them from one central
server.
Also an excellent read is “Experiences Deploying A Large-Scale Emergent Network”, although important to keep in mind the historical context considering it was written in 2002.
Over 100,000 people have downloaded and used the Mojo Nation software.
Observed Behavior
- Frequent Join / Leave
- Varying Space Allocation
- Varying Connection Quality
Which Parts Fail? (Open Problems)
- Original Introduction
- Data Availability
Other Open Problems
- Bypassing Firewalls and NAT
- Attack Resistance / Malicious Nodes / Mutual Distrust / Motivation to Cooperate