NEM Infrastructure Server

From NEM Wiki
Jump to: navigation, search

The NEM Infrastructure Server (NIS) is the backbone of the NEM network. It is installed on decentralized nodes throughout the internet making it stable and secure. It is used to relay and process transactions. It has been designed to be scalable, safe, and very stable and since NEM's launch; it has not ever forked and therefore needed an emergency rollback.

he NEM network is comprised of NIS nodes. Each node is associated with a single primary account, which is used to authenticate responses by that node. This prevents an attacker from impersonating a node without having its private key even if he can spoof the node’s IP address.

Configuration

• nis.nodeLimit - the number of other nodes to which the local node should broadcast information

• nis.timeSyncNodeLimit - the number of other nodes the local node uses to synchronize its clock section 8: Time synchronization

Typically, nis.timeSyncNodeLimit should be larger than nis.nodeLimit in order to allow better time smoothing. This isn’t too expensive because the data transferred as part of time synchronization is relatively small.

Download

NIS can be downloaded with the regular client at nem.io.

Communication

NIS nodes communicate amongst themselves using a proprietary binary format by default. This format minimizes network bandwidth by compacting requests and processing by reducing the cost of serialization and deserialization. In fact, all NIS APIs support requests encoded in either the NEM proprietary binary format or JSON. In order to prevent impersonation-based attacks, NIS nodes engage in a two part handshake when communicating:

1. The local node sends the request data and a random 64-byte payload to the remote node.

2. The remote node signs the random payload and sends the signature along with the requested response data back to the local node.

3. The local node checks the signature and only processes the response data if it can verify that the remote node signed the random payload.