Since Superblocks creates blockchain agnostic tooling, we are constantly and actively looking into new technology. Following, we share a short overview about what NEM is and how it works, primarily intended for all those that are interested in learning more.
First, we can say NEM is a blockchain created in 2015 based on the proof-of-importance (POI) and a reputation system. The work is supported by the Nem.io Foundation Ltd, based in Singapore.
It is important to mention that proof-of-importance refers to a system which ranks accounts based on how much balance they have (vested assets in XEM, the public crypto-currency) and the number of transactions sent and received. In comparison with proof-of-stake, this system also takes into consideration the account activity, which tends to reward transaction volume, instead of “hoarding”, to build up a presumably healthier economy. That is all while still achieving probabilistic Byzantine consensus.
Vesting happens automatically, by taking 10% of the unvested balance each day and turning it to vested balance. That is one of the pillars to build up trust on the system (also referred to as the importance). When using balance, both vested and unvested are taken into account.
Looking into NEM’s architecture, we can say it is defined by two main components, similar to how other well-known blockchain technology works: servers (nodes) and clients. The nodes build a peer-to-peer (p2p) network and they are also known as NIS: NEM Infrastructure Server. Nodes are monitored based on their (past) behavior (metrics), meaning that the amount of work being done is not as important as the quality of service. Theoretically, nodes trying to actively manipulate data will get caught and removed from the p2p network. All nodes provide an Application Programming Interface (API) gateway, in which external applications may connect to, ensured by time synchronization defined with a custom protocol (time consensus).
The official wallet application is called NanoWallet.
We assert the main idea behind NEM is to have a blockchain with freedom and community in mind. Multisignature accounts (multisig wallets), messaging and domain names are “first class citizens”, in a way that they are implemented as part of the base technology. Various forms of multisig configurations are supported by default.
NEM supports messages as part of the transactions, in a way similar to other well-known blockchains. The difference is that it is not required to send value with each message transaction and the only requirement being the variable fee that has to be paid, depending on the message length.
The domain naming system is called Namespaces and implements an alias system similar to the one implemented by the Internet Corporation for Assigned Names and Numbers (ICANN). Domain names are not only useful for representing accounts, projects and organizations, but also to cooperate with the reputation system.
Inside Namespaces, there can be Mosaics. Mosaics refer to customizable assets, in the form of a description template. In practice, they are very similar to a file hosted on a domain (name). The combination of Namespace name and Mosaic name will always render an unique global address, much like a website hosted on a domain. Example: superblocks(.com)/NEMOverview.txt, superblocks being the Namespace and NEMOverview being the Mosaic name. Mosaics can be used to implement the equivalent of ERC20 tokens. They are, however, an asset that contains a set of properties. All assets belong to a particular Namespace.
The concept of mining is referred to as Harvesting in NEM. In order to create new blocks by harvesting, the creator must have a minimum amount of vested assets (XEM). The reward system is similar to other well-known blockchains, in which the block creator collects the fees for actions that has happened in the block. The block time is currently around 60 seconds.
The network communication is based on HTTP protocol. Consequently, it is presented in a language-agnostic, API-based way (REST). There exists node.js API (nem-api) and the JavaScript SDK (nem-sdk).
The network available are testnet and mainnet, which are the test and main networks respectively. There is also the Mijin network, which is a private NEM network.
With Mosaics being a general asset specification and the communication protocol being easily accessible, NEM employs the notion of off-chain contracts as software running written in any technology or language, outside of the blockchain scope. The idea of smart contracts for NEM is that they are an external resource. The blockchain then focuses on recording only the output (transactions data), leaving the code part to be handled outside the main block structure.
Its approach results into more easily, pluggable interactions that could take into account existing solutions. The choice of this approach is likely considering the existing usage of “smart contracts” that have been applied and in use in financial institutions for decades (legacy code base, infrastructure, rules, certification and business logic).
The new NEM core implementation, named Catapult, is mentioned to be a highly customizable blockchain solution written in C++ language and it is yet to be released to the public blockchain. Considering that and the potential of integrating well with existing solutions, in particular in the area of financial institutions, NEM is an interesting distributed ledger technology to keep an eye on and learn more about.