We have a nice looking, decentralized beauty of a money network going on. Now, getting serious and in legalese: how are we covering the costs of maintaining such infrastructure?
We have basically two different participants on our network: the miners and the nodes. We can allow the nodes to make no money, so there we cut some costs. We can do that because on one side running a node is not energy intensive, and pretty easy to maintain, so basically cheap. And the incentive of having your own copy of the list to verify your transactions yourself is a pretty good trade for a couple of gigabytes of your hard drive. Ideally every user would be a node, but the world isn’t ideal.
Miners are another thing altogether. In order to secure the network they need to compete with each other and spend as much computing power (hardware plus electricity) as they can. The better the computer and the more they run it, the more they receive. But remember that this system has to work without anyone in charge telling nobody what to do. It’s decentralized. So we have to come up with another incentive for the miners to write as many transactions in the new blocks and not just mine empty ones. That incentive are the fees.
Every time a miner is asked to write down a transaction in our shared list, the sender must pay an extra amount, like a tip for the miner’s services. And that fee cannot be just flat. The bigger the transaction, the bigger the tip needs to be, because since the blocks are not infinite in size, if a transaction uses more space it would never be written. Why is that? Think about it. As a miner, if every transaction pays the same fee, I rather write a lot of small ones than a few big ones. So that’s why the size of the transaction to be written is proportional to the price of the fee.
But wait a minute. If the amounts in our transactions are hidden, why are some bigger or smaller than others? Because we’re using those virtual bills. If our transaction requires to write several small chunks of money to add up to the amount we need, all those pieces need to be written down in the details of the transaction, even if they’re hidden. Therefore, the transaction uses more space in the block.
This way, everybody can have their money sent back and forth, and miners get two revenue streams to rely on, making the whole thing more predictable and sustainable. And since we’re talking about predictable, what can we do to ensure the new blocks at a regular pace?