A (Brief) Web3 and Blockchain Tutorial

We’re reading all the time about how Web3 or the metaverse or blockchain are going to revolutionize the Internet. What the heck is a blockchain, as it’s applied to either Web3 or metaverse? I’m sure that you’ve already seen stories that assert a given vendor or service provider is at the forefront of one or both those hot new areas just because they have “blockchain”. I’ve noticed that there’s no real attempt to validate these claims, either proactively by the claimant or reactively by the media/analyst community. Part of the reason is likely that there’s not much understanding of how the whole process works.

I can’t possibly do a blog that explains all of blockchain, or even all about its relationship to Web3. Hopefully I can address the most important points, and issues. There are a number of blockchain technology options out there, and the one best-known is the Bitcoin cryptocurrency example. Crypto’s use of blockchain is a bit minimalist, so if we want to understand how blockchains would apply to Web3/metaverse, we need to look at something a bit broader, so I’ll pick Ethereum.

Relating things to Web3 as our general topic, practical blockchains like Ethereum have four basic pieces. First, they have a “blockchain”, which is an encrypted/protected ledger that represents a “smart contract”, the unit of journaling in Ethereum. Second, they have a community of “miners” who compete with each other to create the blockchains for transactions. Third (and related), they have “nodes” that perform the mining functions and validate blockchains to create a process of distributed consensus and trust. Finally, they have an Ethereum Virtual Machine (EVM) that executes actual code as called for directly or indirectly in a contract. In a real-world Ethereum network, “nodes” would perform mining and blockchain validation functions and also host instances of the EVM. This all interworks to create a framework on which something like Web3 and the metaverse can be (at least in part) based.

While it’s common to think of a blockchain representing an asset (cryptocurrency), Ethereum is more broadly focused on its representation of a contract. The concept, broadly, is an “If you do this then I do that” reciprocity relationship, which obviously works for asset transfers and other commercial stuff. However, there are core principles to blockchains that Ethereum, Bitcoin, and most all others will follow. Encryption is one, and full journaling (the “blocks” in blockchain) of changes is another. Ethereum adds another concept, which is the ability to execute code on EVMs, for many purposes, including the determination that a contract’s terms have been met, and so the compensatory action/transfer can be completed.

The blockchain is an ordered list of all the changes that have ever occurred on a “contract” from its inception to the current moment. Full knowledge of the past history is a big part of the provenance of a contract. The presumption in blockchains is that creating/encrypting a block is computational intensive, while reading one is far easier. The nodes in a blockchain network will read/validate the blocks, exchanging contracts to ensure that all the nodes have a copy and can validate it. In Ethereum, they also run “programs” in the EVMs. For their role in a contract, nodes are “paid” (in Ethers, the Ethereum currency). That’s an issue in itself, but one that you can review in other material.

Authenticity in Web3 “decentralized” environments is backed not by a big player (“big tech”) but by consensus. All nodes inspect blockchains, with each assessing its validity and with one of three mechanisms used to determine what passes the test. The first two are based on “voting” in an abstract sense, and the third on a specific property of the blockchain. One voting strategy is based on proof of identity, where validated nodes all get an equal vote. Another depends on proof of stake, where the votes one has depends on the contribution of resources made. The third concept is a bit different; proof of work. This presumes that the valid, most recent, blockchain is the one with the most work done on it, meaning the most blocks. Ethereum uses proof of work for validation because the other models could be broken if over half the nodes had been turned bad—by infiltration, contamination, or breaking the node network into segments to isolate parts.

All the players in an Ethereum network, the “smart contractees”, have both a public and a private key. The public key lets them exchange information with parties, and the private key lets them create and sign blocks. A smart contract is created by a creator/owner, who enlists a “miner” node to create the blockchain (for a fee). This would normally be transferred to another party, which would be done by having the creator/owner reference that party’s public key, and sign the transaction (the transfer block) with their own private key. This process is computationally intense since it requires doing the computation/encryption to protect the block. Unless the originator of the contract is itself a miner node, the transfer is “bid out”, with the node that responds fastest being the winner.

Let’s get to the heart of potential Web3 issues, which is the decentralization through the elimination of central “trust authorities” who are essential because they hold credentials and information that permits secure commercial exchanges. The theory is that blockchains like Ethereum would provide what might be called “collective” or “consensus” security. This means that nodes cooperate, sending each other copies of a blockchain, and that what’s a form of consensus prevents bad actors from contaminating things. The nodes are the guardians of consensus, the source of trust.

This is one fundamental area where I’m not comfortable, frankly. There’s a “proof of work” theorem in blockchain, which says that each block represents work done on a contract. Since work requires blocks, blocks require considerable computational resources, the longest blockchain represents the most work and is therefore the most up-to-date and likely the most authentic, because the nodes have collectively validated it or they’d discard it. However, it’s possible to have the nodes broken into separate areas by a network problem or attack, and it’s also possible that a bad-actor node might represent a computational collective of enormous power, enough power to work faster to create bad blocks than the rest of the nodes would be able to work to validate good ones.

I remember the early days of the Internet, the days before the web and widespread public access. The great majority of the real players were known to each other and trusted, and when things like malware and DDoS came along, the technology wasn’t really equipped to deal with them because they never had to do so before. My concern with Web3 is that we’ll find that the scale of nodes needed to make true decentralization work will create an opportunity to inject bad stuff in ways we’ve just not adequately assessed and dealt with…because we’re thinking like most of the world is good. Maybe so, but a few bad people can do a lot of damage nevertheless.

Another issue I have is another “proof”, proof-at-scale. Web3 is either an enormous, pervasive, enveloping movement or it fails. You can’t partially decentralize. Cryptocurrency is an application that, for all the value of the assets, doesn’t generate a huge number of transactions. Web3, if it’s to replace centralized authority and trust, would have to generate thousands, millions, of times more activity. The computational effort associated with mining is significant; it has to be for the concept of “proof of work” to be effective in keeping bad actors at bay. How long would it take to validate a transaction? We’re used to having purchases or other online fulfillment happen in seconds; blockchain mining might increase that to minutes or even hours depending on how long the chain is and how fundamental the changes being made are. If an early block is changed, all later blocks have to be re-processed.

Then there’s power/environmental. Crypto activity already consumes enough electricity to power a city, so what would Web3 do? There is already pressure to reduce the computational effort involved in blockchain mining and validation, but the problem is that things that make those tasks easier may also contaminate the basis of the proof-of-work means of keeping bad actors out. A blockchain easily processed is one easily forged, hacked, etc. Will pressure to reduce the environmental impact, or to speed the approval of transactions, lead to a weakening of the security?

It’s really hard to say whether the issues related to blockchain can be resolved, for two reasons. First, we’re so forgiving of bold statements, presented in an interesting way but totally without proof, that there’s really not much incentive for the early Web3 and blockchain players to pay much attention to reality. Arguably, the current climate encourages sweeping a lot of technology and issues under the rug in the name of promotion. Second, we really don’t have a solid example of what our blockchain goals are. Even Web3, the most “active” area in the blockchain startup ecosystem, is known mostly by its hazy “decentralization” goal. At best, you don’t know whether you’ve met a hazy goal or not. At worst, everything can be claimed to meet it. Either way, we can’t be sure that decentralization is a worthwhile goal, given that we’ve done pretty well with the current model, or even whether it’s possible. Given all of this, it’s hard to make real progress.

We have made real progress in networking and IT over the 70 years or so that the two have existed. The progress that’s created the most economic and social value was largely made prior to the year 2000. Is the reason for that the fact that over the last couple decades, we’ve spent more human capital creating hype than advancing the industry? Worth thinking about.