Rika’s Crypto Reading: Blockchain Infrastructure – MyCrypto
The infrastructure of all blockchains is comprised of nodes (also known as clients). Nodes are the thousands of computers that comprise the blockchain network and help preserve decentralization (I’ll get into this more later). Whenever you make a transaction on the blockchain — for example sending ETH to your friend — the application you use (i.e, wallet) must connect to a node to process the transaction. The application can either run its own nodes or it can use a service like Infura. The dilemma however that plagues the blockchain space, today, is that running your own nodes is very challenging, and using a service like Infura is problematic. I’ll dig into this dilemma in more detail later, but let’s cover the basics first.
There are two types of nodes: full nodes and light nodes. Full nodes download the entire blockchain (~220GB for the bitcoin blockchain as of July 2019, and growing!) and have the ability to validate every transaction from the Genesis Block. Light nodes, on the other hand, only download block headers, and they can only validate more recent transactions. Full nodes require a lot of bandwidth, specifically upload power and memory to run. Light nodes do not. The most important thing to remember is that light nodes are not as secure as full nodes, so if you’re running a dApp you really should consider running a full node.
Note: people often confuse full nodes with miners. The two are not the same. Miners create blocks by solving cryptographic puzzles in given time frames, whereas full nodes neither solve puzzles nor create blocks. The role of full nodes is to simply maintain a record of all of the blocks and the transactions that miners add to the blockchain.
Running a full node, however, is quite challenging. It’s complex, expensive, and generally a pain in the ass. There are significant capital and operating expenditures. And you are responsible for node maintenance and security. Just imagine the ramifications if the nodes of a wallet or exchange go down; or worse yet, are compromised!
And now, back to the dilemma. As a dApp, you have two options: either run your own full nodes or you use an infrastructure provider like Infura. Infura is an early ConsenSys project and it is a respectable company with a great team. They stepped up early on and solved a major pain point for the ecosystem. The issue with Infura, however, is, as Vitalik puts it, “political centralization.” Meaning, we are trusting one provider to do the right thing, and we are creating a single point of failure.
Fortunately, the blockchain community is well-aware of this dilemma and is already making strides to resolve it.
For starters, we are starting to see new market entrants in the infrastructure space: companies like Cloudflare, Bison Trails, Alchemy, Blockdaemon, Quiknode, and Daapnode. These companies are stepping up, and they are creating choice in the ecosystem. Choice, of course, is essential in free markets.
Additionally, the crypto ecosystem has been diligently working on layer two scaling solutions, the goal of which is to increase transaction throughput and make the blockchain “lighter.” Scaling solutions, such as Ethereum’s Plasma, for example, will play a major role in helping to decentralize full nodes. A lighter blockchain will, in theory, make it easier for people to run full nodes.
Scaling solutions are an important (and confusing) topic in crypto, so I’ll save the details for a future post 🙂