MASQ-Project / MASQ-Node-issues

This repo contains the issues that are used for planning MASQ Node product work. It has no code in it, only GitHub issue tickets
https://masq.ai/
31 stars 12 forks source link

Improve Node Delinquency Banning Process #393

Open anonmate opened 3 years ago

anonmate commented 3 years ago

Apologies for the vagueness of the title with no solution, but it needs more explaining in depth here. Excuse my ignorance if there are pieces of technical knowledge missing, as I'm new to the project.

If I'm a delinquent node that has not paid my debt to nodes I have used, I will be banned from these nodes.

However, the rest of the network will not ban me – so, in theory, I am free to use all other nodes on the network until they ban me too, by connecting to a new initial node and making sure I don't connect to any of my previous initial nodes (I assume, by deleting the db).

Another route I could go down to avoid paying: The nodes that banned me know me by my consuming wallet address... Ok simple, let me just run a script every hour that deletes the db, and creates a new consuming wallet so I can never be tracked.

Out of these 2 ways of avoiding paying on the network, 1 of them can be infinitely used. For the first method of changing initial node/neighbourhood, you will eventually be banned from all nodes and the network would become pointless to use or unusable. For the second method of creating new consuming wallets, you could in effect, do this infinitely and never spend a MASQ token in your life.

In short, seems like the problems are with:

1) Using the consuming wallet as a node identifier 2) Nodes not having a global-knowledge of banned addresses. 3) No immediate wallet balance checks

Perhaps one line of thinking is having a decentralised ledger of banned addresses that all nodes can access, and, if one node is added x amount of times, all nodes know to ban it. This, however, does still not stop people address-swapping to get past it. For that, I'm not sure I have a solution unless the network also knows to ban a node by it's public IP.. Which I believe is not possible.

Possible best solution? Another solution posed in Telegram was that the neighbours upon connecting, immediately check the balance and kick them straight away if they have 0 MASQ. This seems like a plausible solution, though if I were to only hold 1 MASQ, I would not be kicked but still perhaps accrue debt. The solution may be in the frequency of wallet balance checks though this would rack up API calls. It's possible that if a user has less than X MASQ tokens as defined by market price of data, check frequency increases. The more MASQ, the less wallet check frequency.

I'm not sure if it exists, but to execute that solution we would have to have a difference between kicking users, and banning users. If a user can never accrue debt then there may be no need for banning, just kicking on a MASQ balance of 0, or better yet less than 10 MASQ or some number greater than 0 based on market price.

mcxgr commented 3 years ago

I should probably +1 this and note it’s only important on release of full node in prod when people expect to earn :)

anonmate commented 3 years ago

I should probably +1 this and note it’s only important on release of full node in prod when people expect to earn :)

Agreed! Not sure what @kauri-hero's idea of the roadmap is – but in terms of getting to a public beta it should definitely be in there. Hopefully it's not too time consuming to at the least implement an immediate wallet balance check + kick/stay. That may well be enough on its own for now.

mcxgr commented 3 years ago

Agreed! Not sure what @kauri-hero's idea of the roadmap is – but in terms of getting to a public beta it should definitely be in there. Hopefully it's not too time consuming to at the least implement an immediate wallet balance check + kick/stay. That may well be enough on its own for now.

IMHO not applicable on public beta or if there are other priorities.

anonmate commented 3 years ago

Update:

1) A grace period will be needed for some who cannot buy cryptocurrency without MASQ. Possibly an optional grace period could be set on node start of 1hr, then wallet balance checked – booted off if 0. If no grace period needed then booted off immediately if wallet balance is 0.

2) Delinquency bans are different from malefactor bans. It's possible the criteria for malefactor bans cover this issue but I've not seen anything yet... Malefactor bans haven't been developed yet anyway