[NKP0022] Minimum Staking Requirement for NKN mining

Proposal:

  • Each mining node need to hold certain amount of NKN tokens in order to participate in the mining reward
  • Definition of staking in this particular proposal: the miner has full control of the staking wallet which is the same as the mining wallet. When a particular node is chosen as the block proposer per NKN’s consensus algorithm, it will take into account whether the node wallet has sufficient NKN tokens balance. If yes, a block of mining reward is deposited, otherwise the system will look for the next block proposer, and so forth.

Reasons support staking:

  • Increase security: increase cost and difficulty for adversaries to launch large scale attacks.
  • This will also mitigate security risks with IPv6 address, since IPv6 address is not scarce and attackers can launch much larger amounts of attack nodes.
  • Potentially improve token price by significantly reducing circulation supply. From intuition, the stakes tokens need to be at least 10% of circulation supply to make material impact. [TBD: add simulation results here]
  • Better fairness: effective mining cost will be increased by the opportunity cost of the staked token, which is the same for everyone (unlike node and traffic cost), making mining cost more fair for different miners.
  • Better decentralization: with increased cost fairness, large miners will likely to reduce their node count, and miners who left due to higher mining cost might join the network again, leading to a more decentralized network (measured by the number of miners).

Reasons against staking:

  • With increased effective mining cost, network size will be reduced. Higher staking requirements will lead to a smaller network.
  • Significantly increase barrier for new miners: not only they need technical know-how, but also how to acquire NKN Mainnet token (complicated 3 steps: own ETH/BTC/USDT, purchase NKN ERC-20 tokens, swap to NKN mainnet tokens)
  • Will token holders, via staking, earn some reward? E.g. similar to interest payment?
  • It might not solve the centralization problem if the current cloud node owners are willing to purchase tokens (or use their existing tokens) and put them in node wallets. On the contrary, massive cloud node owners might be even more willing to do it than regular users because their profit is more stable and they do it for business.

Details for discussion:

  • How much NKN per mining node?
    • 250
    • 1,000
    • 10,000
  • How long NKN needs to be staked?
    • While mining
    • Fixed term: e.g. 3 months, 6 months, 12 months
  • How to manage all the wallets for each mining node, esp for larger miners?
    • Local wallet is not important in current implementation
    • With Beneficiary address, one wallet can manage any number of nodes
  • Do Miners and Staker have to be the same person or entity?
    • If separate, how to divide mining rewards?
  • What about other income like nCDN and nConnect?

Feasibility and implementation costs

  • The technical complexity depends on the mechanism we decide to use.
    • For the simplest mechanism where staking has no lock period (i.e. just need to hold at the time of mining) and mining reward does not depend on staking amount, the implementation should be relatively simple and should take no more than a few weeks to implement and thoroughly test.
    • Staking lock period might require a significant amount of work in the ledger module as the current ledger model does not support such a feature.
    • If mining reward depends on staking amount, the token economics model might need rework to ensure the total mining output is stable and predictable.

Advanced considerations for future

  • Instead of a binary relationship, e.g. proportional yield to NKN tokens staked. The more you stake, the more you mine.
1 Like

This one is great proposal. In case if you plan to implement this i have few suggestions sir.

How much NKN per mining node?
We can’t do like this ? 1st month 250, 2nd month 350, 3rd month 450 etc upto 10,000 per node. If it’s not possible 1000 is best choice i think.

How long NKN needs to be staked?
while mining is good. Because holding term is not good for miners.

How to manage all the wallets for each mining node, esp for larger miners?
Ofcourse one wallet with one beneficiary address. Easy to remember and save keys and sure it.

Do Miners and Staker have to be the same person or entity?
I think staker + miner = Rewards. Must be same person both. Complete responsible on one person.

  • What about other income like nCDN and nConnect?
    This is very important. Let’s talk about medium scale and big scale miners. If a big miner purchase enough amount of nkn and deploy their 1000 nodes at (eg. USA) region. This will lead most of miners force to put at big miner region because of good rewards. (my experience says where is more nodes that region is high profitable). So what about nConnect commercial guys who are using services other than USA and China.

Thanking you :slight_smile:
Any way i respect team and community decisions. Plan to stick with this project what ever happens.

Also we need strong security for erc20 to mainnet swap. Because every miner must need nkn mainnet, without this mainnet tokens unable to start node if above proposal implemented. Every time swap open some bot guys drying all swap. Kindly take care about that.

Staking puts a cap on the number of nodes. If there is a required 10,000 NKN per node then if every single NKN is used in staking, the maximum number of nodes possible would be 100,000. This is because the maximum supply is 1 billion NKN and 1,000,000,000/10,000 = 100,000. This is barely more than the current number of nodes. You’d need to remove the “millions of nodes” text from the home page.

If NKN is to become the “new internet” as it describes itself, then it needs to be able to run on every device connected to the internet (that means node count in at least the billions), and make space for the internet to greatly expand in size in the future too. This isn’t possible with a cap on the number of nodes.

Success has a pareto distribution, not a normal distribution. If NKN is a big success then the node count wont be 3, 4 or 5 times its current size: it will be 10^3, 10^4 or 10^5 times its current size. This is because the number of nodes is proportional to its price (due to the economics of mining the proportionality remains stable). If NKN were to gain the market cap of Cardano, it would have somewhere around 50 million nodes… and I expect it to become much more successful than that. Make preparations for success.

That would be an artificial reason for the price to rise. The utility of the NKN network isn’t improved yet the price increases. I think this will greatly decrease the price because it massively hurts NKN’s capabilities once it becomes very popular. But I don’t like speculating about price, I would rather this remain a discussion about techinicals.

I think that the only legitimate reason to support this is to protect against attacks once ipv6 comes around. But I suspect there are better solutions that we have not yet thought of. I’m also uncertain of how effective such attacks may be if the network becomes large in size. If there are 100 million nodes then how much damage could an attacker do with an unlimited supply of ipv6 addresses?

Could it ever be implemented that only VPS based nodes require staking to receive rewards? While this has issues of it’s own, the idea that home miners can do so for free while VPS require a staked node keeps the barrier low for home users, and hopefully still gains the benefits of staking elsewhere.

I’m all for this implementation, ideally I think the amount of stake should be dynamic per epoch for example so that the network can keep on growing perhaps for example a 10% total supply stake allocation / number of nodes.

Also I think the team should consider integrating a deploy workflow akin to NKNx with built in fiat payment terminal, to have a much easier way of setting up a node, without relying on 3rd party NKNx, which would also include the stake, additionally a fee could be charged for the service, which could be a nice revenue stream for the team as well.

Additionally I suggest going for the most straightforward implementation:

  • How much NKN per mining node?
    Ideally, dynamic per epoch to make growing multiple orders of magnitude feasible.

  • How long NKN needs to be staked?
    Irrelevant

  • How to manage all the wallets for each mining node, esp for larger miners?
    Existing mining node wallet should have the NKN at time of block proposal.

I don’t think that this proposal will help to evenly divide the rewards, I have more than 1000 nodes in the network and I’m ready to top up each of them by at least 1000 nkn, besides, if the rewards grow tenfold. The fact that this can help against attacks on the network - yes, but is it worth risking the size of the network for this? I don’t think you can think of much better outputs.

I think an argument can be made that currently the network is extremely under utilized, I would imagine if the number of nodes get slashed to 10% of the current size, there is still under utilization

Adoption which drives demand which drives price which in turn drives more miners is the preferred scaling route, currently NKN is just method to convert cheap VPS credits to USD for most.

The current network size makes no sense in terms of utilization, hence I conclude the current economics are failing.

Dynamic staking requirements would be a logistical nightmare. Instead of being able to leave your node mining indefinitely, it would require you to constantly monitor if you had enough tokens staked and get involved with trading NKN each time the requirement changed. I couldn’t think of a more efficient way to disuade people from setting up a node.

NKN can’t conquer the world if it adds any requirement to own NKN to become a node. NKN’s biggest edge is how easy it is to setup a node. It won’t be long before the NKN network has more nodes than all other cryptocurrencies combined.

Proof of stake is a considerable upgrade to cryptocurrencies like Ethereum as it massively lowers its power consumption - no more needing to waste massive amounts of power solving meaningless power hungry Proof of Work algorithms. But NKN is so advanced that proof of stake would be a downgrade from where it currently is. NKN’s goal is to maximize the number of nodes in the network in order to make as much bandwidth available as possible, and this greatly hinders that approach.

Dynamic staking requirements would be a logistical nightmare. Instead of being able to leave your node mining indefinitely, it would require you to constantly monitor if you had enough tokens staked and get involved with trading NKN each time the requirement changed. I couldn’t think of a more efficient way to disuade people from setting up a node.

That’s why I said per epoch not constantly changing, this could be similar to bitcoin havlings over long periods, I suggest this to remove any kind of upper bound to the number of nodes that can be run without going through the entire supply. An argument you made, this is a potential solution.

A logistical nightmare is an exeggeration its trivial to maintain even for a large set of nodes, even more so when this could be integrated in managed platforms such as NKNx, an even more completely hands off approach would be to mine towards a beneficiary address which is also the address checked for your nodes staked amount.

Proof of stake is a considerable upgrade to cryptocurrencies like Ethereum as it massively lowers its power consumption - no more needing to waste massive amounts of power solving meaningless power hungry Proof of Work algorithms. But NKN is so advanced that proof of stake would be a downgrade from where it currently is. NKN’s goal is to maximize the number of nodes in the network in order to make as much bandwidth available as possible, and this greatly hinders that approach.

This is not at all being discussed here, the consensus algorithm here is MOCA and changing that for PoW or PoS is not being considered.

Let me ask you this, how many nodes have you been operating, and for how long? I feel like you are arguing from a purely theoretical standpoint without any long running handson experience with the actual mechanics.

Having a dynamic stake requirement will amplify the volatility of NKN’s price. Bitcoin’s price doesn’t change massively when there is a halving event because the bitcoins themselves have the same utility before and after the halving - the only thing that changes is the rate at which those Bitcoins and produced. However, changing the required number of NKN to mine would change the utility of each NKN so if the stake required was lowered then NKN’s price would drop, and vice versa. There would be massive amounts of time and energy wasted by people speculating about price and what’s going to happen next epoch. It would make the number of nodes less stable as a result of a less stable price. The less stable the network is the less reliable and useful it is.

I made those comments because of the final line of zbruceli’s post about future considerations “The more you stake, the more you mine.” which is similar to a Proof of Stake system where you are given mining rewards based on how much you have at stake. Please make more effort to follow the dialogue before jumping in and claiming someone is making irrelevant points.

I’m not going to dignify that question with an answer. This proposal, if followed through, will have a huge impact on NKN for many years. The decision to implement this proposal should be based solely on the technical details of the pros and cons of the changes, not of the personal history of those making the comments.

Thanks for your insights as always Sangellos, let us not descend this constructive debate into some kind of personal squabble.

I merely meant that your theoretical assumptions do not align with my practical experience over a long period of working directly with the technology.

I agree that if this proposal is accepted this will have a long lasting impact on the project. I also think that it is vital that this is indeed executed upon in one form or another.

Please make more effort to follow the dialogue before jumping in and claiming someone is making irrelevant points.

I would rather not entertain such ad hominem remarks, however I feel like it is important to address this because I believe you are perpetuating false information here; your assumption of what is being proposed in the latter part of Bruce’s post here is simply incorrect.This is merely an extension on this NKP and in no way will this alter the consensus algorithm.

Do you really think the nkn team would entertain this proposal if they deemed it detrimental to the future of NKN? We are discussing the details here and whether or not this should be implemented and in which form. I think the team has done their due diligence and no one has a better understanding of the network than them. You are not helping to shape this NKP by just shooting down every shape and form of the proposal.

Do you really think the nkn team would entertain this proposal if they deemed it detrimental to the future of NKN? We are discussing the details here and whether or not this should be implemented and in which form. I think the team has done their due diligence and no one has a better understanding of the network than them. You are not helping to shape this NKP by just shooting down every shape and form of the proposal.

They have made this very topic so that they can get feedback from the community and giving feedback is exactly what I’m doing. I agree that no one has a better understanding of the network than the team but that doesn’t mean they can’t learn new things about NKN from other people.

NKN loses a lot of its charm if it requires you to pay to become a node that can mine tokens. It moves from “everyone can run a node” to “everyone who is rich enough can run a node”.

Facebook would’ve been a complete failure if users were required to pay up front before using the site. The utility of Facebook is proportional not to the number of users, but to the number of pairs of users: the value comes from interacting with others (ie communication). The number of pairs grows in proportion to the square of the number of users, meaning that it extremely important for them to amass as many users as possible. They did this and now their lead over competitors is gargantuan and now taking them down is nigh impossible.

NKN is in a similar position. Unlike Filecoin, where the utility of storing data on the chain doesn’t change with how many users there is (either your data is stored or it isn’t - it doesn’t really change as more users join), NKN’s utility grows with the square of the number of nodes. Our mission should be to have as many nodes as possible. This proposal greatly raises the barrier to entry to becoming a node. I see this as ultimately not only lowering the number of nodes but the decentralization of those nodes too.

I agree with the proposal.
Having some skin in the game is always a good commitment indicator.
@Sangellos you don’t need to be rich to achieve a staking minimum. I am literally paying more to run the node than what I receive from mining.

My use of rich was somewhat of an exaggeration but I think we mustn’t forget that in the developing world where they are economically struggling, it’s going to be hard to get the money to pay for tokens.

Moving to a staking system virtually enforces the use of exchanges in order to buy/sell NKN tokens in order to mine. Exchanges are a centralized system that require ID, your address, government approval and so on. How are people under the age of 18 going to be able to setup a node if they aren’t allowed on exchanges? They can’t. It makes it much harder for the youth to get involved with the NKN network.

Exchanges naturally control massive amounts of NKN too. As a result, they would have a massive amount of the mining potential. They would have an immense amount of control over the network itself.

Adding a staking requirement to NKN makes it more complicated than necessary. Everything should be made as simple as possible but not simpler.

It is evident that the node does not produce more than it consumes. That being addressed, if someone does not have “money” to add tokens then why even have a node given that it is more costly?

As an underage person, you might consume resources that someone else pays for, ex: If the node is running on the cloud you need a credit card. If the node is local then you need power that someone is paying for. The node is pegged to someone else. Pretty sure the same person can get the resources to fund the node stake.

Crypto is not regulated yet, so I do not know what you mean by “government approvals”.

Here is the reason why I am suggesting that this is a good idea.

  1. Security: I can spin up 50 to 100 nodes on digital ocean without staking (Low budget). With staking probably 5 rather than 50. Someone with more funds can spin up thousands making the network susceptible to attacks. This is definitely a security loophole.

  2. I had some NKN tokens which I sold because there was no utility in holding them. I was not receiving staking rewards so I exchanged them for another token that was returning staking rewards. I had no incentive in just holding them.

I was talking about how cryptocurrency exchanges are regulated by government. But that isn’t very relevant to be fair. All I wanted to do is point out that the exchanges will control many tokens and hence a large amount of the network, and I don’t think that’s desirable.

Requiring an attacker to purchase NKN doesn’t prevent the attacker from selling those NKN afterwards to recoup the cost of the attack. In proof of work blockchains once you’ve spent the money on electricity conducting the attack it’s gone forever. However, it is unlikely the attacker will be able to sell the NKN at the same price as he bought them (especially if the attack is successful) so there would probably be some loss most of the time. And it would still require the attacker to have the capital to begin with.

I have thought about various alternatives instead of requiring nodes to have a minimum amount of NKN, such as they would need to have a minimum age or a minimum amount of bandwidth contributed but I’m not sure if that would be effective or viable. I would be interested to know if this would be possible if anyone knows.

In my mind, the best defence against attackers is to make the network as big as possible. Attackers can try all they want to DDoS Google’s servers but it’s hopeless because their network is gigantic. Staking makes it harder to setup nodes and I think it’s fair to expect that there would be fewer nodes. I could be wrong about all this and staking is the best option but that’s not how I see things at the moment.

if we approach the issue from the point of view of network security, and at the same time do not complicate the entry threshold for new miners, you can make stakes of a certain number of coins only for ipv6 addresses, and leave everything unchanged for ipv4.

Thanks to everyone who have commented, we are reading with great interest.

Like the bitcoin halving, these decisions have significant consequences for years to come. And to make it worse, nobody can actually predict the exact consequences no matter how smart they are or how much simulation they can run.

At the end of the day, we need a combination of fact/number based prediction as well as gut feeling of the overall direction.

1 Like

I am not referring to a DDoS attack only, there is not a high incentive for a DDoS unless it is combined with another attack. @zbruceli, has the yellow paper mentioned on the white paper releases? The yellow paper should address the different kinds of attacks. For a fact, I know that a higher cost to reward ratio should prevent most of them. If it cost $250,000 to control the network for an hour and receive <= $250,000 in NKN tokens should deter most attackers. As the price of the NKN tokens increase the incentive to a low cost attack also increases. If token staking is required then the cost of an attack also increases Eg. 10,000 NKN @ $.04. = $400 if controlling 10,000 nodes the cost is $4,000,000.
The defence right now against attacks is the native to ERC20 NKN swap. There’s only ERC20 liquidity providers. Not native NKN.
I know it is a lot and I might have misinterpreted something since this is Proof of Relay and not PoW. The yellow paper if available would help.

1 Like