Skip to content

Latest commit

 

History

History
108 lines (60 loc) · 7.26 KB

what-is.asciidoc

File metadata and controls

108 lines (60 loc) · 7.26 KB

What is Ethereum?

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 applications with built-in economic functions. Additionally, it provides continuous uptime and eliminates issues of censorship, third-party interference, and counterparty risk.

Compared to bitcoin

Why not bitcoin? A stack based language that is Turing incomplete is not flexible/expressive enough to build various apps, only narrow domain specific apps that relate to currency transactions.

Ethereum is a general purpose blockchain to build apps on. Compare to summer of 2014 - a chain for every app. Developers have to worry about the platform basics rather than focus on their application. Same as early years of computing. By having a common standard, flexible platform, developers can build their app and not worry about the platform details (too much, ideally).

How Ethereum solves this

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