11

Is it practical to compensate full nodes in the Monero network? The nodes that aren't mining

The primary issue with non-Proof of Stake methods is the sybil attack, but requiring full nodes to already have a minimum amount of XMR mitigates this via attrition.

As for what these staked nodes do can be anyone's guess. Perhaps only staked nodes are eligible to issue assets once MoneroAssets are possible, but getting them compensated from the block reward or other issuance schedule would promote both scarcity and network security.

Despite the dubious utility of masternodes in the dashpay network, it has achieved scarcity and demand for the token, and I think the core concept can be replicated before being outright dismissed

sgp
  • 8,836
  • 7
  • 43
  • 113
CQM
  • 603
  • 3
  • 11

5 Answers5

21

The short answer is no, at least not safely.

Something we've discussed before is for full nodes to (completely optionally) include a donation address in their handshake, with separate addresses on clearnet and i2p (to prevent fingerprinting). Then when a wallet is building a transaction it can ask the daemon for a random donation address from the list of outbound nodes it is connected to, and include a tiny fee (say 1/2 or 1/4 of the transaction fee) paid to that address.

Because this is opt-in approach where not everyone lists an address and not every wallet participates in donating, such a scheme doesn't run the risk of over-incentivisation. The reason that over-incentivisation is bad is that it will lead to abuse of the system - an attacker will run thousands of pseudo-nodes on a VPS just for profit. This donation-driven, opt-in system, on the other hand, should allow full node users to cover their electricity and bandwidth costs as the cost in running a full node scales to Bitcoin levels.

The other nice thing about this is that we can always just nuke the functionality on the wallet side if it starts getting abused.

fluffyponyza
  • 5,089
  • 21
  • 35
10

Make Monero useful and people will run nodes. You don't need to compensate nodes to give people an incentive to run one, you just need to make Monero intrinsic or a large part of their business. This is why Bitcoin nodes have been going down over the years, no business sees it as critical to their revenue model, so they outsource it.

DNMs are a perfect example of businesses where it could become a large part, or whole part of their revenue stream, and if that happens, there's no chance they'll leave validation to third parties. If Monero became integral to their business (which it could), they are going to run a node to protect themselves against double spends and other shennanigans. Increased usage, and increased utility will not make people outsource validation, they'll do it in-house because that is the best way to protect/verify their payments.

The way we compensate node hosts is by making Monero provide vital services for their business.

ferretinjapan
  • 6,494
  • 2
  • 20
  • 47
3

An old idea that came back recently is to have nodes offer their services for a fee. A price + integrated address would be included in the handshake, and a client could be setup to accept prices up to a certain threshold.

Then, a wallet could pay that price, and the node would allow services for a connection which includes that same payment id in its handshake.

Thought might need to be expanded on the game theory of this to see if it might cause a decrease in the number of actually useful nodes.

user36303
  • 34,928
  • 2
  • 58
  • 123
3

I do not believe that nodes need to be compensated. With Monero, "mixing" is done on the blockchain, not by nodes. Monero nodes provide the same service that Bitcoin nodes do; they keep a copy of the blockchain and share it with the network.

Some people have theorized that without a block reward, people will not run full nodes. When looking at Bitcoin, we can see that there is no downward trend of full nodes over the past year. At the time I am writing this, the number of nodes is actually up 0.39% over the past year.

Users already have the incentive to run a full node since they get the highest levels of privacy. Monero is removing the burden of revealing one's IP address with the planned implementation of Kovri. I do not think a mandatory node fee is in the best interest at this time.

sgp
  • 8,836
  • 7
  • 43
  • 113
3

As pointed in other answers, it's important that there's enough nodes. But that doesn't mean that everyone must run one, or that there needs to be a direct incentive. I believe there will always be enough nodes. To understand why, we must first understand what nodes are for.

Nodes are what guarantees certainty of a cryptocurrency's properties. They check that each transaction and each block is built according to commonly aggreed upon rules. These rules could be translated into natural language, for example:

  • A transaction is valid only if it is correctly signed by a ring of minimum 3 public keys
  • A transaction is valid only if the key image is unique
  • A transaction is valid only if the sum of inputs is equal to the sum of outputs
  • A block is valid only if it's chained to the previous one
  • A block gives out a block reward according to [this] formula and it's the only way new money can be created
  • A block is valid only if a valid PoW is submitted
  • In case there are multiple different valid blocks [or chains of blocks] competing for the same slot, the one with the most cumulative PoW will be considered valid

Nodes are able to independently enforce all properties other than chronological ordering of transactions. This job is delegated to miners, and for it they are rewarded.

Similarly, rules of physics define properties of gold. Miners extract it and sell it, but they can't change the rules. They can only choose whether to mine gold or something else.

The importance of nodes is that they define the currency. A set of nodes recognizing a same set of rules makes a cryptocurrency.

The only way to know that you're receiving a real monero and not some forged one (forgero?) is to check whether the rules were followed from the beginning until now. You can only do this if you're a node. Otherwise, you have to delegate this task to some node you trust.

So, being able to check whether or not a given monero is real or not is the main benefit of running a node. Anyone dealing with any non-trivial amount is highly incentivized to run a node, otherwise he risks being cheated for that same amount, as he could unknowingly be accepting something else while thinking he's dealing with monero.

Anyone running a service, like an exhcange, wallet provider, pool, or a cryptocurrency bank (if we ever see those) must also run a node because the stake is bigger then just your own money.

  • Imagine an exhange trusting an external node and foolishly accepting some forgero, while crediting it to user's accounts as monero and letting them sell it as if it was, in fact, monero.
  • Imagine a wallet provider making people believe they're holding monero, while they're actually holding something else which they can't transfer to an exchange
  • Imagine a pool making all miners mine something else and waste their power mining something fake, which they have no place to sell at
  • Imagine a bank holding lead painted with gold instead of actual gold

The only way to be absolutely sure what you're dealing with is to run a node. As it is in the nature of free economy to allow for competing services, any one of those will need to run a node if they want to survive. This alone should ensure more than enough of those.

JollyMort
  • 20,004
  • 3
  • 49
  • 105