Skip to content

Latest commit

 

History

History
113 lines (62 loc) · 9.44 KB

what-is.asciidoc

File metadata and controls

113 lines (62 loc) · 9.44 KB

What is Ethereum?

Ethereum is a deterministic but practically unbounded state-machine with two basic functions; the first being a globally accessible singleton state, and the second being a virtual machine that applies changes to that state.

In simpler terms, Ethereum is an open-source, globally decentralized computing infrastructure that executes programs called smart contracts. It uses a blockchain to synchronize and store the system state along with a cryptocurrency called ether to meter and constrain execution resource cost.

The Ethereum platform enables developers to build powerful decentralized applications with built-in economic functions. Additionally, it provides continuous uptime and reduces or eliminates censorship, third-party interference, and counterparty risk.

Compared to bitcoin

Many people will come to Ethereum with some prior experience of cryptocurrencies, specifically bitcoin. Ethereum shares many common elements with other open blockchains: a peer-to-peer network connecting participants, a consensus algorithm for synchronization of state, a digital currency (ether) and a global ledger (the blockchain).

In many ways however, both the purpose and construction of Ethereum are strikingly different from bitcoin and other open blockchains that preceded Ethereum.

Ethereum’s purpose is not primarily a payments network for a digital currency. While the digital currency ether is both integral and necessary for the operation of Ethereum, ether is intended as a utility currency to pay for use of the Ethereum platform. Unlike bitcoin which has a very limited scripting language, Ethereum is designed to be a general purpose programmable blockchain that runs a virtual machine capable of executing code of arbitrary and unbounded complexity. Where bitcoin’s Script language is constrained to simple TRUE/FALSE evaluation of spending conditions, Ethereum’s language is Turing Complete, meaning that it is equivalent to a general purpose computer that can run any computation a theoretical Turing Machine can run.

During the initial development of Ethereum, the cryptocurrency space was rapidly expanding beyond the scope of digital currency, with several projects building secondary layers on top of bitcoin, or separate blockchains for various purposes. Most of these projects had a single purpose and were attempting to bootstrap all the infrastructure of a blockchain for that single purpose. This fragmentation prompted Vitalik Buterin, Ethereum’s inventor, to start thinking about a blockchain that didn’t aim for a specific purpose, but instead could support a broad variety of applications by being programmed. The idea is that with a general purpose blockchain like Ethereum, a developer can program their particular application without having to worry about the underlying mechanism of peer-to-peer networks, blockchains, consensus algorithms e.t.c. Instead, the Ethereum platform abstracts these details and provides a deterministic and secure programming environment for decentralized blockchain applications.

The connundrum that most developers faced in 2013 and 2014 was "build on top of bitcoin, or start a new blockchain". Each choice had its pros and cons. Building on top of bitcoin necessarily limited the funtionality of a project. But starting a new blockchain came with a very big burden of security and infrastructure, and a high risk of failure. Ethereum resolved this conundrum by offering a general purpose blockchain platform.

How Ethereum delivers a general purpose blockchain

High level, expressive flexible language that abstracts the details of the security model, the blockchain mechanism, the consensus algorithm.

History of Ethereum

Towards the end of 2013, Vitalik Buterin, a young programmer and bitcoin enthusiast, started thinking about further extending the capabilities of Bitcoin and Mastercoin (an overlay protocol that extended Bitcoin to offer rudimentary smart contracts). In October of 2013, Vitalik proposed a more generalized approach to the Mastercoin team, one that allowed flexible and scriptable (but not Turing-complete) contracts to replace the specialized contract language of Mastercoin. While the Mastercoin team was impressed, this proposal was too radical a change to fit into their development roadmap.

In December 2013, Vitalik started sharing a "white paper", which outlined the idea behind Ethereum: a Turing-complete programmable and general purpose blockchain. A few dozen people saw this early draft and started offering feedback to Vitalik, helping him gradually evolve the proposal.

Both of the authors of this book commented on this early draft. Andreas M. Antonopoulos, received a copy in his role as a host of the "Let’s Talk Bitcoin" podcast. Andreas was intrigued by the idea and asked Vitalik many questions about the use of a separate blockchain to enforce consensus rules on smart contract execution and the implications of a Turing-complete language. Andreas continued to follow Ethereum’s progress with great interest but was in the early stages of writing his book "Mastering Bitcoin" and did not participate directly in Ethereum until much later.

The other author of this book however, Dr. Gavin Wood, was one of the first people to reach out to Vitalik and offer to help with his C++ programming skills and became Ethereum’s co-founder, co-designer and CTO.

As Vitalik recounts in his "Ethereum Prehistory" post:

This was the time when the Ethereum protocol was entirely my own creation. From here on, however, new participants started to join the fold. By far the most prominent on the protocol side was Gavin Wood.

…​

Gavin can also be largely credited for the subtle change in vision from viewing Ethereum as a platform for building programmable money, with blockchain-based contracts that can hold digital assets and transfer them according to pre-set rules, to a general-purpose computing platform. This started with subtle changes in emphasis and terminology, and later this influence became stronger with the increasing emphasis on the “Web 3” ensemble, which saw Ethereum as being one piece of a suite of decentralized technologies, the other two being Whisper and Swarm.

Starting in December 2013, Vitalik and Gavin refined and evolved the idea, together building the protocol layer that became Ethereum.

Much like Satoshi, Vitalik and Gavin didn’t just invent a new technology, they combined new inventions with existing technologies in a novel way and delivered the prototype code to prove their ideas to the world.

Ethereum was born.

Vitalik Buterin’s article "A Prehistory of Ethereum" was published in September 2017 and provides a fascinating first-person view of Ethereum’s earliest moments.

Smart contracts

What are smart contracts? Neither contracts nor smart. They are PROGRAMS.

Those programs allow automated execution, upon certain actions, of different operations that can move funds (Ether) or change the state of the network in custom defined structures. By leveraging those capabilities a conjunction of collaborating smart contracts can allow the creation of new tokens with different issuing policies, enforce certain conditions on agreements between parties, and even function as a platform for distributed games, among other things.

Programmers perspective - what is diferent about Ethereum compared to other platforms

Ethereum offers programing languages, development frameworks and execution platforms that are very familiar. Solidity is the main language being used and the most popular, but there are other alternatives in existence and being developed.

Double edged sword - language appears simple and aims to abstract the platforms security consideration. In practice, writing secure code in this language is very difficult and requires awareness of security design patterns involving concurrency, re-entrancy and distributed systems. Moves quickly and is not well understood. False sense of security leads to losses.

Warning

"Attack surface" is a concept that means the different attack vectors a software can suffer. Given the turing completeness and flexibility of the Ethereum programming capabilities, in constrast with the very specific smart contracts of Bitcoin, the attack surface is expanded and need to be considered when developing on the platform.

Solidity

Solidity is a programming language for smart contracts and it was influenced by C++, Python and JavaScript and is designed to target the Ethereum Virtual Machine (EVM).

Other high-level languages

EVM bytecode.

Relationship to high level languages

Dev culture

Culture is innovate quickly, break things.

Why learn Ethereum

Learning about blockchains more generally

Cross discipline skills: Crypto, Distrib Systems, Blockchains, Compilers, security

Fit into a broader team of developers

UX, Devops, Systems, Network, Security and.. you!

What this book will teach you

What does this book contain:

How Ethereum works How to program using Ethereum as a platform.

From a simple contract, all the way down to how it runs in the EVM, and then back up again.

What you need to know

Not necessary to understand JavaScript. Programming experience will be very helpful, but is not necessarily required to understand some of these concepts