eCash for Beginners 1: The Nodes

독서 시간 4

To really understand eCash, you must first understand Bitcoin. So over the next several articles, I will try to explain from a layman’s perspective how Bitcoin works with the hope that more of you can gain a better understanding of how eCash works.

(If you haven’t read Satoshi Nakamoto’s whitepaper, I suggest you do so now. It’s only 9 pages long, and even if you don’t grasp it fully, I believe it gives even non-technical folks at least a sense of what Bitcoin is and how it functions.)

I want to start by saying that the main thing you need to know about Bitcoin–the peer-to-peer electronic cash system, not the coin itself–is that it’s a network made up of a set of rules that participants must abide by. The participants in this case being the computers that comprise the Bitcoin network, otherwise known as nodes.

Nodes serve multiple roles in making sure the network functions properly. First, each node maintains a copy of the entire blockchain, which contains all the transaction data from the inception of the network. This is what they mean by Bitcoin being a distributed ledger. Instead of having a trusted central authority that lets you know how much money is sitting in any specific account, that information is stored by countless computers around the world. This way there is no central point of failure, because even if you could take down some nodes, good luck trying to take down all of them.

The fact that Bitcoin is decentralized in this way is what gives it one of its most important properties. Unlike traditional financial institutions that can be forced by the state to freeze a specific user’s funds, Bitcoin’s lack of a central point of attack makes this virtually impossible. In other words, Bitcoin is censorship resistant. So long as you hold your private keys, no one can stop you from transacting on the network and sending and receiving money.

In addition to storing the blockchain data and contributing to Bitcoin’s censorship resistance, the second function of a node is to transmit (or propagate) transaction data to other nodes in the system. This is necessary so that the entire network is constantly updated with the latest information. That way no one can use the same Bitcoins to make two different payments, otherwise known as a double-spend. The idea is that because every node in the network is aware when the coins sitting in any given address have been spent, they would reject transactions trying to spend those same coins for a different transaction.

But there’s a problem. Situations can arise where not all the nodes have the latest information. Because even though Bitcoin is magic internet money, it must still follow the laws of physics. Let’s say I make a transaction in Sydney, Australia. The news of that transaction will quickly spread to the nodes that are nearest, but it might take a couple seconds before reaching the computers connected to the network all the way in San Francisco, California. Therefore, it is indeed possible to make two separate payments using the same coins. Imagine two brothers share the same Bitcoin wallet and one is in Sydney while the other is in San Francisco. If they simultaneously use the same wallet address to pay for a coffee, the merchants in both locations would see the transaction being broadcast and assume they properly received payment. But because only one of those payments can end up in a block, only one of the merchants will ultimately get paid. The transaction that doesn’t get confirmed will be dropped from the mempool (sort of like a waiting room for transactions), and one brother will have gotten away with a free coffee.

A way to solve this of course is to wait for every transaction to get confirmed in a block, but because blocks are only confirmed every 10 minutes on average, this is not ideal. After all, no one wants to wait 10 minutes or more to get their coffee. Some argue that since the chances of being double-spent is small, it’s okay to accept what are known as 0-confirmation payments as long as the amount being accepted is fairly low. In essence, they are suggesting trading off security for usability, but to me that isn’t the right answer. (eCash offers the solution, but I won’t get into that just yet.)

Which brings us to perhaps the third and final function of a node: network security. One thing I’ve yet to mention is that not all nodes are the same. There are basically two types of nodes: mining nodes and non-mining nodes. The main difference being that in addition to storing the blockchain and propagating transaction data, mining nodes also produce the blocks that get added to the blockchain. What exactly is a block? Think of it like a worksheet in an excel file. The file itself would be the entire blockchain, and each tab (i.e. Sheet1, Sheet2, Shee3, etc.) would make up the individual blocks. Contained in each sheet would be the set of transactions included by the miner who “found” the block and added it to the blockchain. In return, the winning miner is rewarded with what’s known as the coinbase reward, which is currently 6.25 Bitcoins per block plus any transaction fees. Because non-mining nodes do not participate in this work, they aren’t eligible for the associated rewards.

One last thing of note is that the coinbase reward is cut in half every four years (the halving cycle), and is the mechanism by which Bitcoins are initially distributed. As of today, a total of 18.8 million Bitcoins have been mined out of a total supply of 21 million. This means that the coinbase reward will essentially go away by the year 2140 because the reward itself will be worth less than 1 satoshi, which is 100 millionth of a Bitcoin, also known as the smallest unit of Bitcoin (1 Bitcoin is the equivalent of 100,000,000 satoshis).

Unlike these so-called meme tokens that have gained in popularity recently, Bitcoin and its associated forks were not minted out of thin air. Nor were they pre-mined by a select few before being made available to the public. Each one was earned through proof of work and it is why many believe Bitcoin has the fairest distribution out of all the cryptocurrencies out there.

To summarize, this is how the Bitcoin network functions in a nutshell. Interconnected computers (nodes) enable users to send and receive transactions without having to rely on a trusted third-party. The decentralized nature of the system protects users from having their transactions censored so long as they hold their own private keys. And the proof of work mechanism by which coins are distributed ensures a fair and reliable emission schedule that can’t easily be tampered with or manipulated.

In Part 2, I will discuss some of the current limitations of the system, its checks and balances, and how things have evolved since Bitcoin’s genesis in January 2009.