NEM is built from scratch as a powerful and streamlined platform for application developers of all kinds, not just as a digital currency. Using NEM in your application is as simple as making RESTful JSON API calls allowing you to configure your own "Smart Assets" and make use of NEM’s powerful blockchain platform as your fast, secure and scalable solution.
Configured for your use, NEM is suitable for an amazing variety of solution classes, such as direct public transactions via streamlined smartphone app, efficient cloud services that connect client or web applications, or a high-performance permissioned enterprise back-end for business-critical record keeping.
NEM is built around a powerful system for customizing your use of the blockchain. We call it the “Smart Asset System”, and it gives you the power to use NEM as if it were a custom blockchain built for your application and your assets. Rather than force you to write your own “smart contract” code from scratch or use off-blockchain methods of defining custom assets for your business, NEM gives you direct API access to a specialized set of tested and secure on-blockchain features.
NEM Addresses are container assets on the blockchain that can represent a single object that must be unique and updatable. Addresses contain Mosaics (defined below). An Address could be as simple as a user’s account full of coins, like most blockchains. But it could also represent things like: a package to be shipped, a deed to a house, or a document to be notarized.
Address assets become truly smart when configured with special rules – directly on the NEM blockchain – that define how they relate and control each other, as well as how their contents can be can be updated and transferred. One crucial rule type is multi-signatory control (often called "Multisig") that allows ownership of Address assets to be shared in a variety of ways between multiple parties, all on the blockchain.
Mosaics are part of what make the Smart Asset System unique and flexible. Mosaics are fixed assets on the NEM blockchain that can represent a set of multiple identical things that do not change. A Mosaic could be as simple as a token, but it could also represent a set of more specialized assets like: reward points, shares of stock, signatures, status flags, votes or even other currencies. Each Mosaic is defined by a variety of attributes such as name, description, quantity, divisibility, transferability and more.
Mosaics are held within Addresses (defined above), and can be passed between them using the NEM API to represent a surprising variety of transactions such as: registering a signature, updating the status of an item, casting a vote, or simply passing coins or points between accounts.
Namespaces let you create a unique place for your business and your assets on the NEM blockchain. A Namespace starts with a unique name that you choose, similar to an internet domain name. You then have the ability to define your own subdomains, as well as names for your assets. This makes your assets unique, easy to use, and trustable.
Transactions are how your Smart Assets are put into action. Transactions let you transfer Mosaics between Addresses, transfer or configure ownership of Addresses (including use of Multisig rules), send messages and more. NEMs blockchain includes a built-in consensus-driven time keeping facility, so transactions are automatically and accurately time stamped.
The NEM blockchain platform is built from a network of nodes, all running NEM’s core node server software. In summary, these nodes provide a powerful, easy-to-use, stable, and secure platform where Smart Assets transactions are conducted, searched, and immutably logged to the blockchain ledger. To do this, nodes on this network serve two essential functions:
First, each node provides the API gateway that applications may use to access the blockchain and its features. This means that your application does not need to run any complex node software; all usage functionality is available through the API interface on each node in the network itself. This means that the blockchain can be used to create a variety of solution architectures with light-weight code in any language.
Some examples of possible solution architectures:
A lightweight app directly interfaces to blockchain features
A gateway server manages blockchain usage for a client app or web service
A gateway server links existing business contract logic, systems, or databases to the blockchain ledger
Second, each NEM node works with other nodes to build the peer-to-peer blockchain network. In sum, this network creates and supports the blockchain itself. The NEM node software verifies transactions, maintains a database, synchronizes with other nodes, and maintains stability and trustworthiness to create a network that is fast, secure, and scalable.
Some of its distinguishing features include:
NEM’s consensus is built on a unique Proof of Importance algorithm, using a technique similar to Google’s PageRank to prevent a variety of attacks on the trustworthiness of blockchain transactions. It serves the same purpose as typical Proof of Work (PoW) mechanisms used by Bitcoin and others, but is much more scalable and energy efficient. This allows nodes to run on almost any hardware while still providing an absolutely secure network that can scale without limit.
NEM implements a modified version of the Eigentrust++ algorithm that allows nodes to intelligently judge the “reputation” of other nodes and reject bad actors, as well as optimally balance loading across the network.
NEM nodes implement a built-in spam filter that prevents the network from being swamped by a flood of transactions, automatically ensuring throughput while not rejecting good transactions.
In order to be independent from any outside entity ( like NTP ) for time synchronization, NEM makes use of a custom time synchronisation protocol. This protocol ensures nodes are continuously synchronizing and thus achieve network time consensus. This warrants reliable timestamps, which is vital in blockchain technology. Read more.
Scaling of the public blockchain is self-incentivized by “harvesting”. Anyone may create a public node, adding capacity to the network. That added capacity is rewarded by the node’s ability to harvest the fees associated with any transaction they happen to process. Any given node’s likelihood of harvesting is scaled by its accounts PoI “importance” score, not the amount of processing horsepower it has.
User accounts can also participate in harvesting without setting up a node using "delegated harvesting". To learn more, see our Harvesting Tutorial.
NEM solutions can take one of two forms: NEM provides both a decentralized, open and self-sustaining public blockchain that can be used by anyone – as well as a permissioned private blockchain solution that can be provisioned specifically for your use on your own servers when speed and privacy are the priority. Both use the same underlying code and are 100% API compatible, providing additional flexibility and future-proofing.
Anyone can provision a version of core NEM blockchain that’s for use on a network of private, “trusted” nodes. In this configuration, elements of the design that prevent bad actors on the public network can be eliminated, allowing speeds to rise into thousands of transactions per second. Nodes are extremely light-weight and do not need specialized hardware or database back-ends. A simple network can be built for redundancy sufficient to prevent a problematic node from creating bad transactions or ruining network throughput. The network can then be accessed by any client or server software desired through NEM’s API interface.
NEM has created an extremely robust, decentralized and self-sustaining public blockchain that can be used by anyone for a variety of applications. To develop on the public blockchain, simply make use of the API interface on any of its nodes.
In order to make use of the public blockchain network, users must pay for transactions with small fees paid in NEM’s native currency: XEM. The size of these fees scale with the size and complexity of transactions and are passed to providers of network capacity through fee “harvesting” on nodes. This means that increasing demand for scale and diversity of the network is intrinsically incentivized and keeps the NEM public blockchain quick and robust.
XEM can be purchased on a variety of open exchanges. Because XEM fees are used to pay for real commercial transactions on the public blockchain, XEM gathers inherent value. This means that with time XEM becomes an excellent digital currency, usable by anyone on the NEM network for storing or transferring value.
A public test network is provided where developers can test NEM blockchain applications without risk or incurring real XEM fees.