(draft Thurs 30 July for future blog post)
Ethereum: what’s about to happen
Vinay Gupta, Ethereum Release Coordinator
By the end of this article, you’re going to understand blockchains well enough to decide what they mean to your life.
Hi Hacker News, I wasn’t expecting you. Since this draft was written we’ve actually launched Frontier!
I expect we’ll have a final of this piece on the blog in the next two days.
Ethereum brings up strong emotions. Some have compared it to SkyNet, the distributed artificial intelligence of the Terminator movies. Others suggest the entire thing is a pipe dream. Sometime right around now, the Frontier network is going live, and everyone will get to see what all the fuss is about.
But if you’re not terribly technical, or technical in a different field (“great on video compression algorithms, not so much on cryptography!”) it’s easy to stare at all this stuff and think “I’ll get around to this later” or decide to ignore it until the Guardian does a nice feature.
But, in truth, it’s not that difficult to understand Ethereum, blockchains, Bitcoin and all the rest - at least the implications for people just going about their daily business, living their lives. Explanations usually focus on some very clever low-level details like mining, but that stuff really doesn’t help people (other than implementers) understand what is going on. Rather, let’s look at how the blockchains fit into the more general story about how computers impact society. As is so often the case, to understand the present, we have to start in the past: blockchains are the third act of the play, and we are just at the beginning of that third act. So we must recap.
The actual story starts in the 1970s when the database as we currently know it was created: the relational model, SQL, big racks of spinning tape drives, all of that stuff. If you’re imagining big white rooms with expensive beige monoliths watched over by men in ties, you’re in the right corner of history. In the age of Big Iron, big organizations paid big bucks to IBM and the rest for big databases and put all their most precious data assets in these systems: their institutional memory and customer relationships. Things that were hard to represent in databases became alternately devalued and fetishized, and years passed as people struggled to get the real world into databases using knowledge management, the semantic web, and many other abstractions. Not everything fit, but we ran society on these tools anyway. The things which did not fit cleanly in databases got marginalized, and life went on.
You may not think you know this world of databases, but you live in it. Every time you see a paper form with squares indicating one letter per box, you are interacting with a database. Every time you use a web site, there’s a database (or more likely an entire mess of them) lurking just under the surface. Every time a customer service assistant shrugs and says “computer says no” or an organization acts in crazy, inflexible ways, odds-are there’s a database underneath which has a limited, rigid view of reality and it’s simply too expensive to fix the software to make the organization more intelligent. We live in these boxes, as pervasive as oxygen, and as inflexible as punched cards.
The second act is started by the arrival of Tim Berners-Lee and the advent of the web. It actually starts just a hair before his arrival. In the late 1980s and early 1990s we get serious about computer networking. Protocols like Telnet, Gopher, Usenet and Email itself provide a user interface to the spanning arcs of the early internet, but it’s not until the 1990s we get mass adoption of networked computers, leading incrementally to me typing this on Google Docs, and you reading it in a web browser. This process of joining the dots - “the network is the computer” as Sun Microsystems used to say) - was fast. In the early 1990s, vast numbers of machines already existed, but they were largely stand-alone devices, or connected to a few hundred machines on a university campus without much of a window into the outside world. The software and hardware to do networking everywhere - the network of networks, the internet - took a long time to create, and then spread like wildfire. The small pieces became loosely joined, then tightly coupled into the network we know today. We are still riding the technological wave as the network gets smarter, smaller and cheaper and starts showing up in things like our lightbulbs under names like “the Internet of Things.”
But the databases and the networks never really learn to get on. The Big Iron in the machine rooms and the myriads of tiny little personal computers scattered over the internet like dew on a cobweb could not find a common world-model which allowed them to interoperate smoothly. Interacting with a single database is easy enough: forms and web applications of the kinds you use every day. But the hard problem is getting databases working together, invisibly, for our benefit, or getting the databases to interact smoothly with processes running on our own laptops.
Those technical problems are usually masked by bureaucracy, but we experience their impact every single day of our lives. It’s the devil’s own job getting two large organizations working together on your behalf, and deep down, that’s a software issue. Perhaps you want your car insurance company to get access to a police report about your car getting broken into. In all probability you will have to get the data out of one database in the form of a handful of printouts, and then mail them to the company yourself: there’s no real connectivity in the systems. You can’t drive the process from your laptop, except by the dumb process of filling in forms. There’s no sense of using computers to do things, only expensive paper simulators. Although in theory information could just flow from one database to another with your permission, in practice the technical costs of connecting databases are huge, and your computer doesn’t store your data - it’s just something you fill in forms on. Why are we under-utilizing all this potential so badly?
The answer, as always, is in our own heads. The organizational assumptions about the world which are baked into computer systems are almost impossible to translate. The human factors - the mindsets which generate the software - don’t fit together. Each enterprise builds their computer system in their own image, and these images disagree about what is vital and what is incidental, and truth does not flow between them easily. When we need to translate from one world model to another, we put humans in the process, and we’re back to processes which mirror filling in paper forms rather than genuinely digital cooperation. The result is a world in which all of our institutions seem to be at sixes and sevens, never quite on the same page, and things that we need in our ordinary lives seem to keep falling between the cracks, and every process requires filling in the same damn name and address data, ninety times a day.
There are lots of other factors that keep this gap open - technological acceleration, constant change, the sheer expense of writing software. But it all boils down to mindset in the end. Although it looks like ones and zeros, software “architects” are swinging around budgets you could use to build a skyscraper, and changing something late into a project like that has similar costs to tearing down a half-made building. Rows upon rows upon rows of expensive engineers throwing away months (or years) of work: the software sticks in place, and the world moves on. Everything is always slightly broken.
Over and over again, we go back to paper and metaphors from the age of paper because we cannot get the software right, and the core to that problem is that we managed to network the computers in the 1990s, but we never did figure out how to really network the databases and get them all working together.
We’d like to fix that.
You’ve heard people talking about bitcoin. Missionary chaps in pubs absolutely sure that something fundamental has changed, throwing around terms like “Central Bank of the Internet” and discussing the end of the nation state. Sharply dressed women on podcasts talking about the amazing future potential. But what’s actually underneath all this? What is the technology, separated from the politics and the future potential?
What’s underneath it is an alternative to getting databases synchronized by printing out wads of paper and walking it around. Let’s think about paper cash for a moment: I take a wad of paper from one bank to another, and the value moves from one bank account - one computer system - to another. Bitcoin simply takes a paper-based process, the fundamental representation of cash, and replaces it with a digital system: digital cash.
Bitcoin took the paper out of that system, and replaced it with a stable agreement (“consensus”) between all the computers in the bitcoin network about the current value of all the accounts involved in a transaction. You move numbers from one bitcoin account to another without having to move either cash or go through the baroque wire transfer processes that banks use to shuffle numbers because the underlying database technology is new, modern and better: better services through better technology. Just like cash it is anonymous and decentralized, and bitcoin bakes in some monetary policy and issues the cash itself: a “decentralized bank.”
Once you think of cash as a special kind of form, and cash transactions as paper shuffling to move stuff around in databases, it’s pretty easy to see bitcoin clearly. What about Ethereum, this “blockchain 2.0, web 3.0” technology we’ve all been devoting our lives to launching recently?
Ethereum takes this “beyond the paper metaphor” approach to getting databases to work together further than bitcoin. Rather than replacing cash, Ethereum seeks to replace all the other places where you have to fill in forms to get computers to work together. You push the data into Ethereum, it’s bound permanently in public storage (the “blockchain”). All the organizations that need to access that information - from your cousin to your government - can see it. This might seem a little odd at first - after all, you don’t want your health records in such a system - and that’s right. If you were going to store health records online, you’d need to protect them with an additional layer of encryption to ensure they couldn’t be read - and we should be doing this anyway. It’s not common practice to apply appropriate encryption to private data, that’s why you keep hearing about these enormous hacks and leaks.
So what kinds of things would you like as public data? Let’s start with some obvious things: your domain names. You own a domain name for your business, and people need to know that your business owns that domain name - not somebody else. That unique system of names is how we navigate the internet as a whole: that’s a clear example of something we want in a permanent public database. We’d also like it if governments didn’t keep editing those public records and taking domains offline based on their local laws: if the internet is a global public good, it’s annoying to have governments constantly poking holes in it.
Another good example is crowdfunding for projects, as done by places like KickStarter, IndieGoGo and so on. In these systems, somebody puts a project online and gather funds, and there’s a public record of how much funding has flown in. If it’s over a certain number, the project goes live - and we’d like them to document what they did with the money. This is a very important step: we want them to be accountable for the funds they have taken in, and if the funds aren’t sufficient, we want them returned where they came from. We have a global public good, the ability for people to organize and fund projects together. Transparency really helps, so this is a natural place for a blockchain.
So let’s think about the crowdfunding example in more detail. In a sense, giving money to a crowdfunding project is a simple contract:
If the account balance is greater than $10000 then fund the project, and if I contributed more than $50, send me a t-shirt. Otherwise, return all the money.
expressed as let’s pretend code, that might be:
if (account_balance > $10000)
move account_balance to funded_account
tell invoicing_system to send_shirt
move donation_account to original_donor
(link to actual crowdfund contract)
If you represent this simple agreement as actual detailed code, you get something like this. This is a simple example of a smart contract, and smart contracts are one of the most powerful aspects of the Ethereum system.
A smart contract envisages taking certain kinds of simple paper agreements and representing them as software. You can’t easily imagine doing this for house painting - “is the house painted properly?” is not something a computer can do - yet. But for contracts which are mainly about digital things - think cell phone contracts or airline tickets or similar, which rely on computers to provide service or send you an e-ticket - software already represents these contracts pretty well in 99.9995% of cases. Very occasionally something goes wrong and all the legalese in English gets activated, and a human judge gets involved in a lawsuit, but that’s a very rare exception indeed. Mostly we deal with web sites, and show the people in the system who help us (like airline gate staff) proof that we’ve completed the transaction with the computers, for example by showing them our boarding passes. We go about our business by filling in some forms and computers go out and sort it all out for us, no humans required except when something goes wrong.
To make that all possible today, companies offering those kinds of services maintain their own technical infrastructure - dotcom money pays for fleets of engineers and server farms and physical security around these assets. You can buy off-the-shelf services from people that will set you up an e-commerce website or some other simple case, but basically this kind of sophistication is the domain of the big companies because of all the overheads and technical skill you need before you can have a computer system take money and offer services.
It’s just hard and expensive. If you are starting a bank or a new airline, software is a very significant part of your budget, and hiring a technical team is a major part of your staffing challenge.
So what Ethereum offers is a “smart contract platform” which takes a lot of that expensive, difficult stuff and automates it. It’s early days yet, so we can’t do everything, but we anticipate a surprising amount of capability even from the first version of the world’s first generally available smart contract platform.
So how does a smart contract platform work? Just like bitcoin, lots and lots of people run the software, and get a few tokens (ether) for doing it. Those computers in the network all work together and share a common database, called the blockchain. Bitcoin’s blockchain stores financial transactions. Ethereum’s blockchain stores smart contracts. You don’t rent space in a data center and hire a bunch of sysadmins. Rather, you use the shared global resource, the “world computer” and the resources you put into the system go to the people whose computers make up this global resource. The system is fair and equitable.
Ethereum is open source software, and the Ethereum team maintain it (increasingly with help from lots of independent contributors and other companies too.) Most of the web runs on open source software produced and maintained by similar teams: we know that open source software is a good way to produce and maintain global infrastructure. This makes sure that there’s no centralized body which can use its market power to do things like jack up the transaction fees to make big profits: open source software (and its slightly more puritan cousin, Free Software) help keep these global public goods free and equitable for everybody
The smart contracts themselves, which run on the Ethereum platform, are written in simple languages: not hard to learn for working programmers. There’s a learning curve, but it’s not different from things that working professionals do every few years as a matter of course. Smart contracts are typically short: 500 lines would be long. But because they leverage the huge power of cryptography and blockchains, because they operate across organizations and between individuals, there is enormous power in even relatively short programs.
A smart contract can store records on who owns what. It can store promises to pay, and promises to deliver without having middleman or exposing people to the risk of fraud. It can automatically move funds in accordance with instructions given long in the past, almost like a will or a futures contract. For pure digital assets there is no “counterparty risk” because the value to be transferred can be locked into the contract when it is created, and released automatically when the conditions and terms are met: if the contract is clear, then fraud is impossible, because the program actually has real control of the assets involved rather than requiring trustworthy middle men like ATM machines or car rental agents.
All of this potentially takes the full power of modern technology and puts it into the hands of programmers who are working in an environment not much more complex than coding web sites. Simple programs running on enormously powerful shared global infrastructure that can move value around, and represent the ownership of property. That creates markets, registries like domain names, and many other things that we do not currently understand because they have not been built yet. When the web was invented to make it easy to publish documents for other people to see, nobody would have guessed it would revolutionize every industry it touched, and change people’s personal lives through social networks, dating sites, and online education. Nobody would have guessed that Amazon could one day be bigger than Wal-Mart. It’s impossible to say for sure where smart contracts will go, but it’s hard not to look at the web, and dream.
We are excited precisely because we do not know what we have created, and more importantly, what you and your friends will create with it. My belief is that terms like “Bitcoin 2.0” and “Web 3.0” will be inadequate - it will be a new thing, with new ideas and new culture embedded in a new software platform. Each new medium changes the message: blogging brought long form writing back, and then twitter created an environment where brevity was not only the soul of wit, but by necessity its body also. Now we can represent simple agreements as free speech, as publication of an idea, and who knows where this leads.
Ethereum Frontier is a first step: it’s a platform for programmers to build services you might access through a web browser or a phone app. Later we’ll release Ethereum Metropolis, which will be a web browser like program, currently called Mist, which takes all the security and cryptography inherent in Ethereum and packages it nicely with a user interface that anybody can use. The security is even stronger than current e-commerce systems and phone apps have. These systems will be stand-alone, so nearly anybody can download a “distributed application builder” and load it up with their content and ideas and upload it - for simple things, no code will be required, but the full underlying power of the network will be available.
After that - and we’re talking a year or two - Ethereum Serenity will take the network to a whole new level. Right now, adding more computers to the Ethereum network makes it more secure, but not faster. We manage the limited speed of the network using Ether, a token which gives priority on the network etc. In the Serenity system, adding more computers to the network makes it faster, and this will finally allow us to build systems which really are internet scale: hundreds of millions of computers working together to do jobs we collectively need done. Today we might guess at protein folding or genomics or AI, but who’s to say what uses will be found for such brilliant software.
I hope this non-technical primer on the Ethereum launch has been useful, and as soon as we have a user friendly version of the system available for general use, you’ll be the first to know!