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

  • There is either will be thousands of nodes or zero. No need to invent vulnerable schemes. If people wanna use Monero they will run nodes. – Alex Sep 6 '16 at 12:34
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.

  • 1
    How about staking on mainnet as a requirement to participate in testnet, and access to other not-production features, staking requirements which get lower over time to be replaced by the handshake completely or split node-miner reward schedule. At the beginning, only the devs will have enough for the stake, but over time others will have begun to accumulate too for access to different features, by the time the network actually has a mainnet use for staked nodes, the distribution will already be so high that sybil and abuse wouldn't be the problem. – CQM Aug 26 '16 at 18:45
  • @CQM I'd have to give it some thought and bounce that idea around in my head a little. I guess the question is: do we require so many nodes, so badly, that adding this complexity is necessary - even vital? – fluffyponyza Aug 26 '16 at 18:58
  • 3
    @CQM Satoshi's vision was nodes in data centres, per his post on Bitcointalk: "The current system where every user is a network node is not the intended configuration for large scale. That would be like every Usenet user runs their own NNTP server. The design supports letting users just be users. The more burden it is to run a node, the fewer nodes there will be. Those few nodes will be big server farms. The rest will be client nodes that only do transactions and don't generate." – fluffyponyza Aug 26 '16 at 20:51
  • 1
    The only thing that matters is that there are sufficient nodes running in all manner of jurisdictions, following the same rules. We'd most likely be pretty substantially decentralised with <100 nodes, as long as they were run by people with reasonable opsec and in well-connected environments. – fluffyponyza Aug 26 '16 at 20:53
  • 2
    @PyRulez sure, I think a full node could definitely charge, and if we implemented micropayment channels we could do something like Justus Ranvier's idea of nodes charging other nodes for services (there are some gotchas, and it's not immune to Sybil attacks, but there's that). Full nodes don't necessarily compromise light client privacy, although there's still work to be done on closing those holes. – fluffyponyza Aug 27 '16 at 6:41
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.

  • 1
    thats an interesting economic theory which like most economic theories has no basing in reality. What we have seen are distributed networks that release an incentive directly from the network helps secure the network by attracting much more computational power, compared to distributed networks based on other abstract concepts like altruism (folding@home, etc). Full nodes have been neglected from this concept so far, yet we have seen the utility from the mere attempt at directly incentivizing full nodes. – CQM Aug 26 '16 at 18:30
  • (by reality, I mean proof that the described outcome has ever occurred anywhere in history or an accurate predictor of human behavior) – CQM Aug 26 '16 at 18:40
  • 3
    It's not an interesting economic theory, it is reality. ASICs did not pop up on shelves like magic, Bitcoin POW as a service became intrinsic to their revenue model and so the invested in infrastructure. Merchants that use Bitcoin transactions as a service that becomes intrinsic to their revenue model will invest infrastructure. Services with high transaction input have an incentive to run a node especially when time and proof against fraud is high. Exchanges, gambling services, DNMs, normal shops. Full nodes will increase as Monero becomes a larger and more critical element of their revenue. – ferretinjapan Aug 26 '16 at 19:02
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.

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.

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.