NKN MainNet v2.1.1 Release

We released a new mainnet version v2.1.1 at https://github.com/nknorg/nkn/releases. This version contains several significant security updates that greatly enhance the network security. The most noticeable change is adjusting Generate ID fee while invalidating all existing node ID. There are two transition block height:

  • After block height 2570000, old ID is still valid, but cannot be generated. New ID can be generated after block 2570000.
  • After block height 2600000, old ID is no longer valid. Node without new ID will need to generate new ID before joining the network.

To minimize impact on existing network, the NKN Foundation will pay for this new Generate ID fee for all qualified existing nodes, see Security Enhancement: Adjusting Fees for Generate ID for more info.

In addition, there are a few other updates:

  • Enhanced signature chain verification that will be enabled at block height 2570000.
  • Add subscriberHashPrefix parameter in get subscribers and get subscribers count RPC.

The new version is not compatible with previous versions starting from block height 2570000. Please make sure all nodes upgrade before this height.

How to Upgrade

  • If you are using nkn-commercial or nknx fast deploy, you don’t need to do anything.
  • If you are using one-click on DO/AWS/Google Cloud, you just need to stop and restart and miner and it will upgrade automatically.
  • If you downloaded the release version, you just need to download it again at https://github.com/nknorg/nkn/releases , replace files and start nknd again
  • If you build from scratch, you just need to do the build again.
  • If you are using some scripts or tutorials that has auto-updater, then it should be automatic if the auto-updater is working properly.

We don’t recommend anyone to download the ChainDB snapshot manually, but if you really want or need, you can use https://nkn.org/ChainDB_pruned_latest.zip or https://nkn.org/ChainDB_pruned_latest.tar.gz for pruned ChainDB.

Miners will now have to pay around 10 NKN per node to have new nodes in the network, this fee is equivalent to 1 month of a server monthly fee.

Now miners will have 3 concerns:

1- Currency fluctuation

2- The monthly fee of the server

3- The rate equivalent to 1 month of mining to have new nodes.

I didn’t welcome this new update, this new charge to have new nodes will dramatically decrease the new nodes implemented,

1 Like

The 10 nkn fee is mainnet right? How will people that cannot use Upbit (American citizens) be able to pay that?

I will re-post my reply under another post here:

Thanks for detailed thoughts!

We know it’s controversial, that’s why we have been discussing it for a long time. The feature was implemented two years ago before mainnet was launched, but we have never enabled it until absolute necessary for network security.

Although the generate ID fee is called fee, it’s essential not a fee. All the “fee” will be deposited into MBA address and increase long term block reward. Let’s see some examples:

  • Let’s assume there are 100k nodes in the network, each paid 10 NKN generate ID fee. So the MBA address pool has 1M NKN. If all nodes stay in the network forever, and no new node joins, then each node will eventually get back 10 NKN more mining reward on average.
  • In a more realistic case, let’s say some nodes left, some more come, but the network size is still 100k nodes, and the MBA address pool has 2M NKN. Then nodes who stay in the network will eventually get about 20 NKN on average. This encourages long term miners which is exactly what we want.

You have thought a lot about miner’s convenience, but probably not from network security’s perspective. It a blockchain is not secure enough (i.e. attackers can gain unfair mining advantage by ID sybil attack), mining is meaningless for honest miners. As we have seen recent attempt to attack the network, this mechanism needs to be enabled ASAP before some attacker can successfully perform the attack and get most (if not all) mining rewards.

IMO this is an inevitable trend in public blockchain. PoW and PoS are the only two batte-tested category that can make a public blockchain safe, and many PoW chain are moving towards PoS (Ethereum for example) for better security, better performance and less resource consumption. Although NKN is using PoW-like relay for reward, such relay is not intended to saturate all your network or any other kind of resources, so it’s not enough for security alone. That’s why some kind of staking, fee, etc is necessary for network security. After all, security is the top priority for any blockchain.

Among all the similar proposals, the current generate ID mechanism has the lowest entrance barrier. Staking (NKP-0022), for example, requires a significant higher amount of NKN (usually 10x or 100x) in order to reach the same security level.

I know currently it’s not very convenient to purchase mainnet NKN for most people, but for the long terms things will be better:

  • Many Ethereum scaling solution are working hard to lower Ethereum txn cost
  • The ERC20->NKN swap system will basically be open almost all the time
  • More exchange might support NKN mainnet token in the future

Eventually generate ID it will become as simple as nknx fast deploy, and it pays back in mining reward over the long term.

You can use the swap system to swap from ERC20 to mainnet token

Do I have any way of saving this ID? Let’s say I find a better provider for my node and decide to move 20 nodes, do I have to regenerate their IDs? And thus at a later date pay for relocating them? Or there’s a safe way for me to move it.
I’m not talking about duplicating it ofcourse, let’s say I shut it down from Digital Ocean, and move it to AWS, is it possible?

Yes, you just need to back up wallet.json and password. For nkn-commercial and one click, password is stored in file wallet.pswd

how do i know when my node gets a new id?

If your node continue to run (without changing into no id state) after block 2600000 then it has a new ID. Or you can also get the current id from node state (like from nstatus) and see when it changes.

How long can I start backing up the wallet?
How do I know if the wallet has been paid?
Where to check whether the address is paid?

We are waiting for the execution of the phases. Further it will be clear how this will affect the economic path.

Can I still deploying nodes between 2570000 and 2600000 or do I have to pay the 10 NKN fee?

I want to remove or migrate some nodes with low performance to other zones or servers, they are currently running version 2.1.1.

  • Do I have to close them and implement them again or can I migrate them?
  • If that were the case, how would I have to migrate them without losing the ID?
  • The ID does not depend on the IP?

You can back up your wallet now. If your node continue to run (without changing into no id state) after block 2600000 then it has a new ID. Or you can also get the current ID from node state (like from nstatus) and see when it changes to see whether it has a new ID.

Nodes deployed between 2570000 and 2600000 will not be paid by foundation, and you will need to pay yourself. Node ID only depends on wallet.json, so you can do the following:

  • Wait until block 2600000 to make sure your nodes have new ID
  • Back up the wallet.json and wallet.pswd of your nodes and shut down the current ones
  • Deploy new node, move the wallet.json and wallet.pswd backed up from old nodes to the new ones and restart node

Then your new nodes will have the ID of your old nodes.

1 Like

Can backup my node now,when 2600000 arrived, use this backup to my new node,will it get a new ID automatic? or I need backup my ID until 2600000 arrived?

If I’m sorry but I’m not entirely clear, should I backup my current nodes before block 2570000 or after my ID has been changed?

Edit: btw, we are close 2570000, the ID change will be automatic?

You can back up at any time. ID is only tied to your wallet (wallet.json and your password, which might be stored in wallet.pswd if you use nkn-commercial).

You can back up at any time. ID is only tied to your wallet (wallet.json and your password, which might be stored in wallet.pswd if you use nkn-commercial).

The ID change will be automatic as long as your node is qualified and the foundation pay the fee for you.

How can I know my ID is already changed to NEW?
Can you give me one NEW ID NO. for example?

All my nodes are on “WAIT_FOR_SYNCING” with version: [v2.1.1-2-g3f0b]