NKN MainNet v1.0-beta Release: Feature Highlights and Upgrade Guide

We released the first public version of our mainnet v1.0-beta at https://github.com/nknorg/nkn/releases. This will be the initial version running on NKN MainNet 1.0 Narwhal. See launch overview at Narwhal: NKN Mainnet Launches with a Big Splash.

Feature Highlights

There are tons of new features and improvements introduced in our mainnet version 1.0, as you can see from the change stats (compared to most recent testnet version v0.8.4):


Here is a short list of highlighted features:

  • Change account model from UTXO model to balance model
  • Change signature scheme from ECDSA to Ed25519
  • Implement a secure and verifiable public key infrastructure
  • Use VRF to provide a secure random beacon per block
  • Introduce NanoPay: a simple light-weighted off-chain nano payment channel
  • Signature chain data structure redesigned: reduce 97+% bandwidth overhead
  • Highly optimized block, transaction, sigchain propagation: reduce 80+% overall bandwidth usage
  • Support client-side end to end encryption by default
  • Support node side hop to hop encryption by default
  • Implement connection multiplexing to avoid congestion
  • Store account and other state in verifiable world state
  • Migrate core data structure (e.g. block, transaction) to protobuf
  • Transaction pool redesigned
  • Support multiple native assets
  • Add mining bonus address (MBA) for extra earning reward from donation
  • NKN node image is now hosted on Docker Hub: you can now run full node in one line

Upgrade Guide from TestNet to MainNet

If you are running a node in testnet and are planning to upgrade to mainnet, there are a few things you need to do:

  • Mainnet wallet is incompatible with testnet wallet, you need to create a new wallet for mainnet (as you did in testnet). The default wallet file name is now wallet.json instead of wallet.dat.
  • Mainnet config.json is also different from testnet config.json, so you need to change the config file. You can use config.mainnet.json as a minimal working template to start with.
  • In Mainnet, each node MUST have a unique wallet and cannot share the same wallet with other nodes, otherwise the node will not be able to join. It is recommended to use BeneficiaryAddr (in config.json) for both better security and convenience (if you run multiple nodes).
  • When a node with a new wallet joins the network for the first time, it takes a few minutes to generate a node ID (automatically). After the first time, it will be as fast as before.

For more detailed information about how to build, configure, and run a node, please see the latest github readme at https://github.com/nknorg/nkn

If you are running one-click miner on DigitalOcean, AWS or Google Cloud, you just need to grab a drink and restart your one-click miner machine, and the rest will be automatic.

For more information on how to setup a one-click on your favorite cloud platform, follow the links below: