Many come into the crypto space looking for hard money! Real money! the money, or at least a similar money, to that of our ancestors. Money from the era before Nixon took the world out of the gold standard! That's what many in the crypto space see in Bitcoin...
Bitcoin can't be inflated to infinity, it has a max supply of 21 Million BTCs! And the priority of the devs is to maintain that supply at whatever costs necessary... It's a scarce, divisible, portable asset, all the characteristics that hard money and a store of value should have. Scarcity and knowing the supply is one of the most important things in Bitcoin! But how can one check this? How can one be sure that Bitcoin is scarce?! By running full nodes!
Many in the crypto space don't understand that a full Bitcoin node enforces the rules of the consensus by only storing the blocks that are following the consensus rules that, that specific node, accepts... It is in the best interest of the miners to follow the majority of the full nodes, if they don't, they might be in for a fork of the chain and loss of a significant user base... especially if the nodes that are not accepting the blocks are some of the large players in crypto, like exchanges and merchants... This is what is called a UASF(User Activated Soft Fork), it is what happened during the SegWit era, where miners didn't want to implement SegWit, and UASF ended up being a critical component for the acceptance of SegWit.
Now, imagine this case in a scenario where miners decide to mine more Bitcoin. A miner suddenly decides to create a block with more block rewards than normal... Let's say 1 Million BTC created in a block! As soon as that miner finished creating that block, it would send the block to the network, the nodes would see the block, compare it with the consensus rules that currently only allow the creation of 6 BTC per block, and the nodes would reject that block, they would reach the consensus that, that specific block, was not created right... This is the mechanism that makes sure the supply is scarce, because full nodes only store blocks that are created according to the consensus rules, and the consensus rule is that only close to 6 BTC are created in each block.
But what if this mechanism fails?
This is highly unlikely to happen, there is a nearly 0% chance that this mechanism fails, the tech has advanced far enough that an inflation bug is very highly unlikely to happen... but how can we check the supply? How can we be 100% sure about what the supply is? Especially since knowing the current supply makes Bitcoin even better as money! Again...we know this by running a bitcoin full node!
Running a Bitcoin full node is really easy. And when I mean really easy, I do mean really easy, it takes 5 minutes to start running one... after it starts running it will take a few hours, depending on the computer, to go through the whole blockchain and validate every single transaction that happened in the past, this is done automatically, the user doesn't need to do anything... But this still doesn't answer how we can be 100% sure of what the current supply is?!
After the node finishes fully syncing, the user just needs to do an RPC call to the node to check how many UTXO it has!
UTXO (Unspent transaction output) are basically one of the main ways Satoshi Nakamoto found to solve the double-spend problem. Very very simply, all Bitcoins that can be transacted are kept in UTXO until they are transacted. Using this, the nodes just need to check for all UTXO on the blockchain at any point in time to know the current supply! And that's easy to do because bitcoin core clients already come with this command!
"bitcoin-cl gettxoutsetinfo" is the command to do to an RPC(Remote Procedure Calls), this gets a little information about the UTXOs
"height" : 225494,
"bestblock" : "00000000eb0443fd7dc4a1ed5c686a8e995057805f9a161d9a5a77a95e72b7b6",
"transactions" : 335344,
"txouts" : 2221582,
"bytes_serialized" : 72130407,
"hash_serialized" : "3d14832b1b468f52ce942d4b9dc0c76a54fa6865207ff64540105403e3109f43",
"total_amount" : 10886823.50380013
(can't do it on my node because it's not with me at the moment)
As the above shows, at the time that that specific RPC call was done, there were 10886823.50380013 Bitcoins in circulation! This is a really good quality for hard money to have, knowing the supply...
But what about other blockchains?
Now, this is where it gets more complicated! Ethereum, at the moment, doesn't have this function in the clients, there is no way to do an RPC call and know the total supply of ETH... but is this bad?
Let's first look at what Ethereum is!
Ethereum is a blockchain that devs can program really complex Turing Complete smart contracts, these Smart Contracts can do automated tasks such as transferring tokens or calculating things and infinite loops... what this allows is for really complex automated programs to be built on top of Ethereum, programs that if done correctly, can one day become 100% permissionless and trustless without any devs having the keys to change them or influence them, and these programs will be alive for as long as Ethereum is alive!
This already happens with tornado.cash and Uniswap! They are truly permissionless and trustless, the devs can't influence them, no government can shut them down, no government can force the devs to change them because they literally don't have the keys anymore...
ETH is the gas token used in Ethereum, it's the token that people need to use to pay for gas and to use these complex programs, or to mint new tokens, and, in the near future, to stake.
Some programs do use ETH for more things than for gas. Like MakerDAO uses to mint the stablecoin DAI! Or Compound uses as collateral for loans... but ETH isn't really supposed to be money, it's supposed to be used as gas to run the financial system.
Ethereum is complex, and the number of transactions, experimentation, dapps, etc... make it bloated! Hard money isn't supposed to be complex, it's supposed to be stable and easy at the base layer! This is what Bitcoin does by restricting the block size thus increasing the decentralization, and by making the system very simple with some more complex features here and there, but nothing like the Turing Complete smart contracts of Ethereum. So, we can say that ETH is not hard money at the moment, even though some Etherians try to make it and say it's hard money, it isn't, and, it's about to become even more difficult with the move to PoS that is going to happen, mainly because PoS makes the blockchain less decentralized and less permissionless and trustless...
So, with all of this in mind, do we really need to know the total amount of Ether in existence? Especially since it isn't supposed to be hard money?! I say no, it isn't... the nodes are already validating the blockchain and enforcing the right issuance, so no need to actually know the total amount of Ether in existence because the nodes are enforcing the right amount via consensus.
But why not do it anyway? Why not create a script that runs through the whole blockchain to calculate the amount of ether in existence?!
Ethereum works very differently from Bitcoin, while on BTC all the BTCs that are usable, thus the entire current supply, is "stored" in UTXO; on Ethereum because it's more complex it doesn't need UTXO, it uses a system similar to account balances, where you basically deduct from one wallet and increase it in another wallet... and what keeps the double-spend away is the fact that Ethereum uses a system with nuances.
Because of this, it gets harder to count all the Ether in existence, but there is more...
On Ethereum there are also many things that complicate the calculation of the right amount of Ether in existence, some even depend if a user wants to count certain ether as ETH that exists or not! Let me describe two of them:
On Ethereum, the whole ETH that is issued doesn't go directly to the winning block, a large portion of the ETH issued is distributed between uncle, nephews and parent blocks. These blocks are basically stale blocks that still get rewarded with ETH. This allows for the reward of stale blocks, it allows for miners that have a lower hash rate to get rewarded and allows for the incentivization of miners to not create empty blocks.
The ETH issued in these blocks is hard to calculate on Ethereum and sometimes are only incorporated a few blocks after. This makes it difficult to calculate the right supply.
Do they count? Now, this is a tough question... Does the ETH in the burn address count as ETH? It's burned, meaning, no one has the keys for that address and no one can move it, there is even a specific address for that, the 0X00... but does it count as ETH?
These are two of many different features that might change the ETH supply, not increasing it, but diminishing it.
Now, there exists currently a pretty good script that counts the current max circulating supply, basically what it does is that it gets the number of blocks, it assumes certain issuance rates that the nodes enforced, it counts the uncle blocks, and calculates the supply. But this shouldn't be how it's done... mainly because the script assumes issuance rates instead of asking the blockchain, this is not how we do things in crypto! Our main point is "Verify, don't trust!" Thus, we shouldn't be trusting the issuance rate by putting it on the script, we should get this directly from the blockchain!
This is a feature that the Ethereum devs are going to put in one of the next clients. After Ethereans were bashed by Bitcoiners that there is no way of knowing the ETH supply and that because of that, ETH couldn't be money, devs are developing it to put it into one of the next... Their bashing only made Ethereum grow better and become closer to being hard money... can it ever be hard money? I don't think so... but who knows what the future HODLs for us HODLers!
Question of the day: Do you run a node? Have you tried doing these RPC calls to see the current Supply of Bitcoin?
Posted Using LeoFinance