I love reading, as do many of us in the crypto space. So when a few friends suggested that I publicly share my (virtual) crypto bookshelf, I jumped on the idea!
For some time now, I’ve been following a daily self-created crypto reading routine. I start by perusing the inter-webs for (quality!) crypto resources, and then I synthesize the information in Notion. This daily exercise helps me to differentiate fact from fiction and also formulate my own educated viewpoints, which can sometimes be a struggle in this space.
The exciting part is that we are building products that have never been built before. Which also means that there are no training manuals, guidebooks, or best practices. It’s up to the companies building in this space to develop the material. But the reality is, there’s simply no time.
So if you’re one of those people who doesn’t have the time for aggregating crypto learning materials, then this series of Medium posts is for you! Or, if you’re just looking for a crash course on a particular topic or need a refresher, I got you!
I hope you enjoy, and happy reading!
The topic I’ll be covering in this post is infrastructure: the friendly giant that carries the weight of the blockchain network on its shoulders!
I’ll start with a summary and synthesis of the topic and then down below, you’ll find links to some quality documentation and articles so you can dive deeper if you’d like.
Without further ado, let’s jump in.
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 DAppNode. 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 :)
Challenges of Running Blockchain Infrastructure by Viktor Bunin
Degrees of Architectural Decentralization — to Infura and Beyond by Ria Bhutoria
Ethereum 101 — Part 2 — Understanding Nodes by Kauri Community
Geth Documentation by Go-Ethereum
Parity Documentation by Parity Ethereum
What is a Light Client? by Thibaut Sardan
I’m currently reading, “Life After Google: The Fall of Big Data and the Rise of the Blockchain Economy” by George Gilder.
Funny story, my friend in Philly received this book in the mail by complete mistake. She is in no way involved with crypto (except through my rants!) and asked if I’d like her to ship me the book. Turns out, it’s quite good!
George Gilder is a prolific author who has written books on many topics. His style reminds me of Michael Lewis. The book is very much a “story” about the history of the industry and the characters in the space. For the more technical audience, it discusses a lot of the mathematical theories behind early computing. For those less technically inclined, you’ll love the storytelling. Gilder really covers the full gamut and although it can feel like information overload at times, the book is enjoyable and a good read!