[NKP0022] Minimum Staking Requirement for NKN mining

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

waiting for team decision :slight_smile: team did great job. All the best for NKN team for awesome tech.

We are implementing a NKN mining pool/farm with staking model, without changing the NKN POW consensus.

Here is what we trying to implement, each miner when joining the pool (after run docker swarm join …), will have a wallet on their server they fully control, the pool will pay NKN shares (PoS PPS) base on the amount of NKN in miner’s wallet address, 32NKN minimum for a miner node to get paid.

this model solve the fake traffic problem when mining pool pay it’s workers, because the more fake traffic generated, the more NKN need to be locked in the worker’s wallet.

I am a big believer in PoW, and changing the consensus is like the End of believe for me, so please let us try the NKN mining pool model experimentation, and save PoW.

All the Best, Long live NKN, Long live PoW!

2 Likes

Our NKN mining pool implementation, tested using docker swarm & portainer

version: "3.7"
services:
  nknc:
    image: nknorg/nkn-commercial:latest-arm64v8
    restart: always
    networks:
      hostnet: {}
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]
    command: "-b <beneficiary-addr> -d /data"
    volumes:
      - /root/nkn/data:/data
networks:
  hostnet:
    external: true
    name: host

How to use?

Go to your Portainer, Endpoint -> Stacks -> add Stack

copy & paste the stack code above, and replace the beneficiary-addr to be your mining pool address.

wait for the stack to be deployed.

Congras, Now you can publish your docker join command for other miner to join your pool.

# login to swarm manager endpoint.
# use following cmd to get join token for worker
docker swarm join-token worker

Enjoy, and I hope NKN can be mining friendly to all small contributors!

2 Likes

Awesome work! Do you have a separated post just for your mining pool? I have a couple questions and it’s better to discuss about it in another dedicated post.

Thank you yilun for the support, here is the post