👋 Note: Originally published on Feb 22, 2016 (link). This was part 5 of 7 in a series of posts released under the pseudonym Creole.
In the third post, we explored how blockchains can serve as a platform for what I called “value technologies” — things that act like currencies, shares, or rewards points.
In this post, we take this idea further. Many people now believe that blockchains will let us build things more complex and more interesting than the simple value technologies discussed above. We can write software that can itself control currencies, shares, or rewards points. This “software agent” would be more like an independent economic entity. Living on the blockchain, it would be able to send, receive, or hold money — whatever it was programmed to do. Maybe it even provides a useful service to people, or to other software, for which it is paid.
The question people have begun to ask, in other words, is: can we make companies out of code?
Ok, let’s back up. What would it mean for there to be software that “lives” on a blockchain?
You understand that bitcoin is a currency-like blockchain application. It was built to let people send, receive, and hold bitcoin. Bitcoin’s blockchain is structured like a ledger — a long list of transactions that records who has control over every amount of bitcoin that exists. It was built to do this one thing.
Another way to think about this is that the Bitcoin blockchain is a big computer that runs only one program. The program lets you move bitcoin from one address to another, and that’s about it. You can’t write new programs, or install entirely new software, or do much of anything beyond simple transactions.
But what if you could write new programs, install new software? What if there was a blockchain that had the same fundamental benefits as the bitcoin blockchain, but gave anyone the ability to write code that would run on it — not just transactions of a currency-like token, but things with additional rules & complexity… like shares, rewards points, or corporations?
This is the idea behind another blockchain called Ethereum. It comes with a “built in” set of programming languages that let anyone write code that “runs” on the Ethereum blockchain in a way similar to how a bitcoin transaction “runs” on the bitcoin blockchain. Instead of simply tracking balances of bitcoin, the Ethereum blockchain tracks the state of all of the programs that are stored on it.
A software agent can “live” on the Ethereum blockchain in the sense that the code that constitutes it is stored on the blockchain. Because there is always consensus on the state of the blockchain — just like there is always consensus on the state of who owns what bitcoin — the program will always behave as functioned. It cannot be altered or deleted unless it was programmed to allow it to be altered or deleted. Once it’s on the blockchain, it can be autonomous — it doesn’t depend on any individual computer to survive. It exists on thousands of computers all over the world, and every copy is kept in perfect sync by the blockchain.
Crucially, for our purposes, these software agents can natively control money. In the case of Ethereum, they can control balances of Ether, the native token of that blockchain. They can also control other smart agents, or any other program on the blockchain. In short, they can be programmed to perform any operation that people can perform within the Ethereum system.
In the first post, we discussed how blockchain technology might cut out middlemen. Firms like Western Union sit in the middle of a simple transaction — moving money from A to B — and extract a fee. Bitcoin, by letting anyone anywhere send money for free, can compete with the service provided by Western Union.
The promise of blockchain “smart agents” is that they allow blockchain technology to cut out other kinds of middlemen, too. Even ones that provide complex services, and sit in the middle of complex transactions. At the top of this post I said the question was: can we make companies out of code? A better formulation might be: can we write code that can compete with services today only offered by companies?
One of the most promising areas for this to happen is in peer to peer marketplaces, where a company sits in the middle of complex transactions facilitated by technology. For instance, transactions where a rider pays another person a small fee in exchange for a ride.
Uber runs a service that connects riders to drivers. When a user requests a ride, Uber’s software matches them to a nearby driver. When the trip is verified as complete, the software calculates the fee based on the phone’s GPS, and facilitates the transfer of money from the consumer to the driver. Uber takes a 20% cut.
Maybe a blockchain service could offer something similar. The core business logic — how to match drivers and riders, how to verify trips are complete, how to calculate fees — would be set in place & guaranteed by a blockchain. Payment is, of course, handled over the same platform. There is no legal entity, because there doesn’t have to be — this is all just software that a community of people have created for public use. Beyond the small fees paid as part of transactions on the blockchain, there is no entity to take a cut — which means either lower prices for riders, larger profits for drivers, or both in lesser amounts.
This blockchain “ride sharing” platform wouldn’t so much be a company as a protocol. Think of it like email. No one owns email: it is just a widely accepted protocol — a system of agreed upon rules — for exchanging information. But there are many email clients made by companies that let people use the email protocol.
A blockchain ridesharing protocol would simply be a set of rules — enforced by the blockchain’s lock-step consensus — that define how to enter into a certain type of transaction: exchanging money for a ride. There would be many clients — apps on your phone — that would let you interface with it. But the underlying service — matching, and transfer of funds — would be facilitated by the blockchain.
Of course, Uber does more than match riders and drivers. They provide many other services that improve on their core offering in some way. They make software that makes it easy & convenient to call a ride. They provide an identity and reputation system for riders & drivers. They are a brand, and they’ve spent a lot of money advertising their services and creating new markets for their product.
One mistake many blockchain evangelists make is discounting the importance of these other functions. A good piece of technology is necessary but not sufficient for success as a product — especially when the product is something new or unfamiliar. I believe that an open source community could build an excellent ride sharing protocol, but I do not believe they could run an effective nationwide sales organization.
But maybe we don’t have to, in some cases. Uber has already created the market for technology-driven ridesharing. Maybe a “no name” version could compete. It wouldn’t come with all the bells and whistles at first, but it would be cheaper.
We might enter a world where there are innovator marketplace services and generic marketplace services. Uber, AirBnB and others had the idea, proved the technology, and changed consumer habits to build the market. But once the market exists — once renting out your apartment is simply a thing you do — there might be room for a generic version, run entirely by code, to compete with lower prices and by returning nearly the whole share of revenue to labour.