Although Bitcoin is a pioneer in technology that kick started the blockchain boom, it’s really a first-generation blockchain technology. In the sense that the type of data that you can put on is quite limited, mostly just simple transaction records. As a result, it’s more about payment ledger than a general-purpose database like SQL, and as we have seen in this module, several technical limitations have posed significant capacity and scaling issues that prevented it from being widely used as a payment system. As a result, these first-time blockchains are often treated as digital gold as speculative asset. In the next couple of videos, we’ll introduce what I call the second generation blockchain technology, which was first spear-headed by Ethereum.
To get a basic idea of what Ethereum is, one can simply compare the title and the introduction of Bitcoins and Ethereum’s white papers. Well, Bitcoin is designed to house simple payment data from the get-go, Ethereum significantly expands the type of data that’s allowed on the chain. Instead of a purely payment ledger, the key feature of the Ethereum blockchain is that, it’s designed to be a general purpose decentralized computer. That is as a user, instead of generate, send, and receive transactions, you can write programs just like you would on your computer, and broadcasts the program to the Ethereum blockchain like a ‘‘cloud computer’’, and the network nodes, will execute the program just like a computer would.
Consequently, the focus is completely different. Instead of payment as its main function, Ethereum really focus out ‘‘cloud computing’’ or programmability as it’s main function. It has a programming language called Solidity, which is very similar to Python that you can write programs with, and the programs you write is also given the nice password of smart contracts or decentralized apps. You broadcasts these programs or smart contracts to the network, the nodes execute these programs and they get paid with ‘‘gas’’ in the form of the cryptocurrency ether. So unlike Bitcoin, the primary purpose of ether is not peer-to-peer payment. You generally won’t use ether to buy groceries. Instead, ether exist primarily as a utility coin.
You buy ether to pay the Ethereum nodes to execute your programs. The speculation activities on ether in secondary market are secondary consequences that we’ll explore more fully in the next module. Other than that, the blockchain itself is not that different from Bitcoins. The block time is much shorter at between 10 and 20 seconds to facilitate execution and it uses a mining puzzle in its implementation of proof of work that is quite memory intensive. As a result, ether can’t be mined using ASIC chips and has to be mined using traditional graphic cards. So the Ethereum consensus is even more inefficient than Bitcoins, because graphic cards use much more energy and waste much of that in generating heat.
Ethereum has a goal of transitioning to proof-of-stake at some point, but this keeps getting pushed back because of design issues associated with these new consensus protocols that we discussed in a previous video. Finally, unlike Bitcoin where we have no idea who Satoshi Nakamoto is, Ethereum is structured much more like a business. It’s developed by Vitalik Buterin and now managed by the Ethereum Foundation. The business has one of the first successful initial coin offerings or ICOs where like an IPO, new ethers were sold publicly in exchange for Bitcoins. If you’re interested in how the business is structured, we’ll expore the ICO mechanism in our credit tech course.
But for now, let’s have a high level overview of the Ethereum blockchain using our familiar blockchain as a database framework. The user application that generate the data has a wallet, that as usual stores the address and sends and receives either. But much more importantly, the user side also has a developer tool where you write your programs in the Solidity language. You can use your simple text editor, Ethereum’s own editor, remix or use any of the third party co-editors out there. You can write simple programs like if then statements in a ‘‘smart contract’’, or you can write fully flesh apps which is given the password of decentralized app or Dapp.
Next, you broadcast your code or Dapp to the network in a gossip protocol, the node receives them as usual, verified the crypto signatures like in Bitcoin, and as part of their block building, execute the program if the conditions specified in the code are met. The nodes do so using a virtual machine installed as part of a Ethereum’s core code and they reach consensus in the usual way using proof-of-work, on both the program code and if it’s executed, the input and output stays as well. Finally, the data now consists of both the code and if executed, the inputs and the results are stored on the blockchain in a usual format using hash pointers and linked lists.