What Masternodes DON’T do!

Common misconceptions in the MN space

XeZZ
XeZZ
Jul 21, 2018 · 12 min read

Introduction

A word beforehand: I’m not a blockchain developer myself, so there may be some blind spots. If you find any, let me know and I’ll correct them!

Terminologies

A wallet is a piece of software that connects to other wallets and runs a blockchain. All wallets in the same network are connected to each other (not necessarily directly) along a graph like this (and yes it’s MS Paint, I’m a software engineer not an artist sorry):

The black box represents an arbitrary number of nodes. Each of the circles represents a wallet (node) and each line (edge) represents a connection.

So, each wallet is represented as a node, and here we are with the first terminological misconception! Before masternodes ever existed, each blockchain still had nodes. It’s just the wallet that’s connected inside the network. A connected wallet (No matter if it’s a QT wallet, Daemon, or whatever) is a node. In this case, it also doesn’t matter if the wallet holds any coins. It still participates in the blockchain just the same.

Masternode

Hot, Cold and Controller Wallets

In the masternode space, running a hot wallet means that the wallet with coins also acts as a masternode itself. If this is not the case (i.e. you split masternode wallets and the wallet that controls your masternode), then the masternode wallets are called cold wallets. They hold no coins, so even if they’re compromised, no one can steal anything from you. The wallet that holds your coins — no matter if it’s behind a firewall on your own computer or a VPS — is NOT a cold wallet. It is the controller wallet. The controller wallet is a special kind of hot wallet.

QT-Wallet

The network

So how does proof of stake work

So, the above has a lot of terminology again. Unconfirmed transactions will first be validated, and the block they’re encoded in will subsequently be confirmed by the network.

I wrote that each wallet with mature coins can make a new block and get the blockreward in the introduction of this section. This is actually overly simplified. There are a lot of constraints to that in the network. In general, the more coins you have — and the older your coins are — the more likely it is for you to stake. “Older” resets every time coins are used to create a new block. So if 100 coins are used for staking after maturing for 5 days, then the 101 coins (assuming you get 1 coin as stake) are 0 days old afterwards, and they have to mature again. For the purposes of the following explanations, we’ll ignore the very complicated processes of how a node is selected to stake. It isn’t too important right now.

A stake is born

The green node has just created a new block and validated all previous transactions that were not confirmed already. It will now broadcast it to all its neighbors.
The neighbors are yellow now. They confirm the calculations that green has done already. When they finish they turn green and boradcast it to their neighbors.
The confirmation process continues
The newly created block is now confirmed in the whole network! Now the network can generate the next block. One of the constraints touched on earlier is blockspacing. Two consecutive blocks should have a predetermined time between them on average. For Bitcoin, this is 10 minutes (this is why you have to wait at least 50 minutes for your transaction to be confirmed 6 times)

Conflicted!

This is the current status. Some nodes already confirmed a new block. (We skip yellow from here on for easier painting)
The orange node does not know that another node already staked. So it broadcasts its stake now.
The majority of the network accepted the green block already and now the network comes into a conflict. Whats next?

A conflict like this is not easy to solve. One of the blocks needs to be rejected. But which? To be honest, I don’t exactly know how blocks are rejected in this case, so I won’t give you any half-wrong information on this.

Update thanks to Martin:
There’s actually a consensus on how those conflicts are resolved. Blocks are created with a hash like this: 0000000000000000000c95… this string represents a hex number. The lower the number is, the higher the difficulty to calculate that block (To go into detail on this is far beyond scope here). The block with the lower hash number will take precedence.

The blockchain will invalidate the higher block and the wallets on that block will roll back:

The three nodes roll back their rejected transactions
Conflict resolved and the green block made it. All nodes happy again. And the orange block is marked as conflicted/orphan.

Chainsplit

Two blocks race for victory now. Orange and green nodes can now stake again (For example a block moves to fast)
The purple node staked again and wil now broadcast wehile the middle already conflicts
The red nodes roll back and rejected the orange block. The purple ones in the upper right already confirmed the orange block once!
So now the green nodes try to tell the purple ones about their new green block. But purple already accepted orange before, and the three purple nodes think that they’re correct and tell the green ones about the new purple one. The green ones will reject purple because purple depends on orange. So what do they do?

We get a divorce now. There is no consensus between the two parts of the network, so they split.

Two networks each run their own blockchain now.

The nodes individually don’t really know who the majority is because they’re only connected to a small part of the network directly. This is a simplified explanation for why your wallet goes off-chain and you get an unnaturally high amount of PoS rewards, for example. The three nodes in the upper left will confirm each other’s transactions in their very own chain, and only those three can stake on that chain.

Now time for the magic orphan: If the nodes resync to the correct chain, the transactions mined there will still be visible in the wallet. But the blocks have no father in the real chain, and so they’re called “orphans,” and the transactions are not counted to anyone’s balance.

Proof of Work

So what have Masternodes to do with all that?

All that we’ve talked about so far is what nodes do. But not each node is a masternode. It doesn’t matter whatsoever in the above examples whether one of the nodes is a masternode or not. In the confirmation and validation process of transactions, masternodes serve exactly the same function as normal nodes. Nothing more. After all, they are nodes. Masternodes perform special services on top of their normal node duties. So let’s finally come to the stuff masternodes don’t do.

Masternodes do not stake!

Dash is not PoS!

Masternodes are not mandatory for the blockchain

This is actually a half-truth. There are Sporks, which can require a payout to at least one masternode or else the chain will become stuck. But this spork can be deactivated, and then the chain will run normally. Sporks are complicated shit. In essence: They allow you to break the rules of the blockchain by activating and deactivating them. It enables features that would normally require a hardfork. They also work without masternodes and it’s a little off topic here, so watch this later if you’re interested: https://www.youtube.com/watch?v=rp-ebgbgK-M&feature=youtu.be

Masternodes do not secure the network

So what are they good for?

So this services doesn’t seem too important to you right now. But they are, and they will be. The Governance/Budgeting stuff is an especially cool mechanism to involve communities with spending of developer funds where each MN has a vote, and the more you are invested the more votes you get. Without being public because you just vote on the blockchain.

From the documentation:
Instant Transactions: SwiftTX transactions are confirmed and spendable within seconds, guaranteed by the network of masternodes, with no need to wait for multiple confirmations in order to be confident in the validity of the transaction.
This is actually the only way masternodes really confirm transactions outside of their normal node duties. The masternode acts as a kind of escrow in this case.

There is also a hell of a lot in development like validation of smart contracts off chain, crosschain transactions (MN as “escrow”) and more to come. The technology is very young and we will see lots of developments in the future!

Wallet best practice

That’s it… But it has something good

Something good to find in all this terminological mess? Yeah, I’m often asked questions by coin developers and I do my research. If I’m in contact with the salesman or community guy I just try to educate them about their misconceptions. If I get a chain dev and he tells me the chain is shitty because there are not enough masternodes: Take your money and run! It’s amazing how little “Developers” (Synonym for scriptkiddies that fork a shitcoin and presale it) know about the chains and what their own masternodes actually do, but it helps me evaluate if I want to invest or not ;).

So happy masternoding. If anything is incorrect, please let me know so I can correct this!

At the very last some shameless promo

Bitcoin Green (BITG)

ZestCoin (ZEST)

APR (APR)

Blocknode (BND)

OryxCoin and OryxCash

PolisPay (Polis)

GoByte (GBX)

GIN Coin (GIN)

MONK

BitGreen

We empower changemakers