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:
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.
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.
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.
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.
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
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!
DISCLAIMER: None of the statements must be viewed as an endorsement or recommendation for Nimiq, any cryptocurrency, or investment product. Neither the information, nor any opinion contained herein constitutes a solicitation or offer by the creators or participants to buy or sell any securities or other financial instruments or provide any investment advice or service.