This was saved from G o o g l e's cache of

Mojo Nation :: Docs :: Technical Overview
Mojo Nation

About Mojo Nation
 > Introduction
 > What's new
 > News & reviews
Download (free!)
 > Get Mojo Nation now
 > Supported platforms
 > FAQ
 > How it works
 > Technical overview
 > Getting help
 > Mailing lists
 > Troubleshooting
 > Overview
 > Get the source
 > Documentation
 > Terms of Service
 > Privacy Policy
 > DMCA Reporting
About us
 > Contact us
 > Who we are
 > Licensing

M O J O    N A T I O N    ::    D O C S    ::    T E C H N I C A L    O V E R V I E W
A geek's-eye view of the concepts and technology behind Mojo Nation

Technology Overview
February 14, 2000

What is Mojo Nation?

Mojo Nation is a peer-driven content distribution technology built around three core technologies: swarm distribution, decentralized services, and market-based distributed load balancing. The Mojo Nation 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 Mojo Nation software is the public prototype to demonstrate some of the features of this technology platform.

Swarm Distribution: Mojo Nation 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 Mojo Nation network contributes disk space, bandwidth, or processing time to the system. Communication within the Mojo Nation 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. Mojo Nation 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 Mojo Nation marketplace provides a stable, reliable, and scalable way to publish and download digital content. Mojo Nation 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 Mojo Nation 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 Mojo Nation, 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 Mojo Nation 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 Mojo Nation: 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 Mojo Nation barter system combines a "digital token" micropayment system with peer-to-peer microcredit. Each interaction between agents across Mojo Nation 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 Mojo Nation 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 Mojo Nation token server to the creditor account. By limiting the number of times a transfer of currency is actually made, the Mojo Nation system gains in fault tolerance and speed, in the following ways:

* Uninterrupted service. The Mojo Nation 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 Mojo Nation technology enables a content distributor to realize a significant cost savings. By breaking a distributed file into fragments for storage and retrieval Mojo Nation 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 Mojo Nation technology to delivery rich-media content to the customer.


Information is published to Mojo Nation 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).


File retrieval on Mojo Nation 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 Mojo Nation 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...


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 Mojo Nation 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 Mojo Nation 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. Mojo Nation 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. Mojo Nation 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 Mojo Nation, 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 Mojo Nation 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 Mojo Nation 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.


One of the cornerstones of Mojo Nation 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 Mojo Nation 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, Mojo Nation 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 Mojo Nation 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 Mojo Nation 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: Mojo Nation 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 Mojo Nation technology is an efficient, massively scalable and secure toolkit for distributors and consumers of digital content. The Mojo Nation 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.

© AZI, 2000