Mainnet Release Candidate

Security, Features, Release Plan

After months of further development and hardening, the release candidate for the Nimiq Mainnet is ready to go live. Below are the technical details:

Security

Accounts Tree Pruning

Since its early versions, our protocol has used Merkle-Patricia Tree to store accounts. This data structure will grow in size according to use of the network and thus might become impractical implemented naively. To avoid an oversized accounts tree, we have added an accounts tree pruning system that removes accounts without balance. Instead of using a nonce to define validity of transactions, Nimiq’s accounts tree pruning uses a transaction validity window.

Transaction Validity Window

It prevents any replay attempts produced by Nodes using old transactions, which could appear valid after a certain amount of time. Although this may seem like a security measure easy to put in place, implementing it while maintaining the minimalistic approach of our Blockchain was not trivial given that it required changes on almost every level of our architecture.

Replay Protection between networks

Usage of transaction validity windows provides replay protection from valid transactions in the same network, however we also considered another type of replay attack: Following Mainnet launch, Nimiq Testnet will remain available for testing by developers. Same with the dev-net for our Bug Bounty Program. With more than one “valid” Nimiq Blockchain functioning simultaneously, we added protection against transactions originated in a different Blockchain network to avoid cross-chain replay attacks.

New Features

JSON RPC API

The Nimiq Blockchain powers a JSON RPC architecture which provides a lightweight communication channel to talk with Nodes that are part of the Nimiq Network. We implemented Nimiq’s APIs based on Ethereum’s which allows fast and easy integration for applications that already communicate with Ethereum Nodes. In particular exchanges and other existing third-party applications will benefit from this compatibility.

Metrics Server

Based on the prometheus monitoring system’s protocol, it enables developers and miners to visualize metrics from the host directly in the Developer Dashboard. The Metrics Server allows monitoring of variables such as: transaction processing rate, hashrate, block height, bandwidth usage and network traffic. This is currently one of our most essential tools to complete the final high-traffic tests.

Highly detailed Nimiq Network Metrics

Failed attempt to break our network by running at maximum load for hours

Dynamic Block Reward

Bitcoin uses a halving scheme that is known to cause instability. Inspired by Monero & Cryptonote, we have designed Nimiq to use a dynamic block reward which ensures a smooth decay in the emission rate. It is based on the following formula:

blockReward = (totalSupply — circulatingSupply) >>> k

We have taken a similar approach but selected a value of k=22 and, at a certain height (Block 48692960), switching to constant block reward of 4,000 satoshis (tail emission) until the total supply of 21e14 satoshis is reached. This has the following beneficial side effects:

At block 48692959 the block reward will be 4,001 satoshis, causing a fluid transition to tail emission reward of 4,000 satoshis.

Circulating supply at block 48692959 will be divisible by 4,000.

The last block governed by dynamic block reward will be reached in approximately 92 years.

Block 48692960 will mark the beginning of tail emission. Remaining supply at this point will be 16,784,100,000 satoshis which results in ~7 years of a constant 4,000 satoshis reward.

Total supply of 21e14 will be reached at block 52888984 (~100 years).

Full Node Application for Linux and Mac

We have factored the software required to run a Nimiq full node into an easy to install (and maintain) application.The application is supported by the latest versions of RedHat-based (Fedora) and Debian-based (Ubuntu) Linux distros.

Potential Support for Ledger Nano S and Blue

We know a big part of our community is interested in using hardware wallets with their Nimiq Accounts so we wanted to provide potential support for the popular Ledger hardware wallets. The implementation of our Ledger app is completed and tested. We are still fine-tuning details and plan on pursuing official Ledger integration as soon as possible.

Mainnet Launch

Thank you @PomP0m for this Nimiq Fan Art

We want to thank our community for being so patient with us. Recently our community manager Richy noticed a few people might have become “slightly” concerned, if we are still on track. :)

So when Mainnet Richy?

Launching a Blockchain is a task that requires an incredible amount of attention to the details. It is insanely difficult to decide at which point you’ve prepared enough for unknown unknowns. Unlike any other form of software development, many decisions are immutable and have to be perfect from the first go. We love this challenge and we are working around the clock to deliver a result we are proud of. We know you are excited and so are we. If you want to stay up to date to our hourly progress please follow our GitHub and YouTube.

…So really, when Mainnet Richy?

We know it is time to set this straight. So here is our plan:

Complete the high-load testing phase of our private deployment of the Nimiq Testnet

Genesis Cut-Off Date on March 31

Launch of public Testnet and Ecosystem by April 2

Complete a public max-load testing phase

Launch the Mainnet

Genesis Block Cut-Off Date

As announced in our last blog post, we are now in Activation Phase. More than half of the total supply of NET has already been used for NIM activation. We encourage all NET Holders to activate their NIM from remaining NET until March 31 as last chance to become part of the Genesis Block.

Exact Ethereum block number: 5360536

Targeted time: Midnight American Samoa, March 31

(2018–04–01T11:00:00.000Z)

In preparation we have requested Coinmarketcap to change the name of NET from the general ‘Nimiq’ to ‘Nimiq Exchange Token’.

Launch of Mainnet Release Candidate

We plan on releasing our Mainnet release candidate for final public testing of rare corner cases within the next three days. Please get your mining equipment ready to support our Final Testing Phase.

Final Testing Phase

We will publicly try to break our network as hard as possible for one last time. To quote Marvin:

“I don’t expect anything unexpected.”

Which I’d translate as: We have tested and prepared so intensively for anything that possibly could go wrong, that we feel confident to be very close to the quality standards we promised to deliver. We are certainly at the stage where it makes sense to discuss if further testing would be just premature optimization.

Okay Richy, so when is Mainnet Launch?

Let me put it like this:

As always, thank you for your support. We are psyched to finally deliver what we’ve been working on so passionately!

Team Nimiq