The internet is now old enough that it’s a multi-generational enterprise. The original vision of a connected world that opens up communication between people across the globe is still there, but we can see many differences in how this has been interpreted over time. From DNS, to the explosion of TCP/IP-based protocols and their eventual overshadowing by HTTP, to streaming video and web APIs and mobile networks and the Internet of Things. Each of these developments has tried to stretch the boundaries of what the internet can do, but each also represents a generation’s best attempts at realising the best internet they can achieve with the technology - and the politics and economics - that they have.
The most recent generation of thinking is, as far as I can tell, that which has come out of the blockchain community. The key insight here is that blockchain, as a distributed systems technology, provides a mechanism for solving a set of coordination and consensus problems that were previously intractable. In a nutshell, blockchains use a combination of cryptography, economic incentives and batched transactions to allow a global consensus about the order and effect of writes to a shared append-only database. This opens up the opportunity to redesign many systems which were designed under the old assumption that distributed consensus was practically impossible for real-world purposes.
However, as I covered in a previous post, there’s a whole set of concepts which tend to be addressed under the heading of ‘blockchain’. These include, in no particular order: Bitcoin, blockchain-the-distributed-systems-technology, smart contracts and a set of vaguer notions about secure data sharing, APIs and digital payment rails1. As a result, we see a lot of statements about how ‘blockchain’ will save the world, protect us from fraud, disrupt the financial system and even rescue democracy. As a term that can refer to both blockchain as a technology and to specific instances or applications of blockchains, public or private, 'blockchain’ is overloaded, and we need to be careful about how we use it.
It’s also an implementation detail. An important and ingenious implementation detail, but an implementation detail nonetheless. 'Blockchain’ belongs with packet-switching, relational databases and Diffie-Hellman key exchange as a bedrock technology for a class of applications. Packet-switching was an innovation that gave us greater power to communicate, relational databases gave us greater access and retrieval of information, and Diffie-Hellman key exchange gave us greater security. What does blockchain technology give us? I’d argue that it’s the ability to reach agreement.
At the lowest level, this capability arises from the fact that blockchains can reach consensus between peers, using a combination of cryptography and economic incentives. Everyone can have a copy of the entire blockchain database, but the incentives ensure that everyone agrees on which changes to the database are accepted as canonical. Once accepted, the data cannot be removed. Here’s where discussion can get a bit slippery, though: the consensus we are talking about is between computers, and when we say that data on the blockchain cannot be changed, we simply mean that history cannot be erased.
In practice, our applications can be more flexible (in much the same sense that we can store denormalised data in relational databases if we choose). Data on the blockchain cannot be changed once it’s there, but we can simply add more data to indicate the new state of the thing that the data refers to. The fact that the nodes of the blockchain agree about what data is there doesn’t force humans to agree that the data is correct, because that kind of judgement is not within the scope of the blockchain as a technology, and we handle this at the application level. The key point is that it’s easy to add flexibility if the underlying system can provide consensus and permanence, but very hard to restrict unwanted flexibility if the underlying system does not. And agreements, ultimately, are about restricting flexibility: our freedom to do as we please is limited by our need to fulfil our obligations under the agreements we have made.
So-called “smart contracts” (it is obligatory to begin every introduction to smart contracts by acknowledging that they are neither smart, nor contracts) extend these capabilities, by building a degree of automation into the platform. If a blockchain is like a database, smart contracts are stored procedures, bits of business logic that can enable more complex operations to be carried out on the blockchain, with the same consensus and permanence. Again, there is some slipperiness in the terms: a smart contract isn’t a legal contract, at least according to most legal systems. Smart contracts must also be distinguished from Ricardian contracts, which are contracts (but have nothing to do with David Ricardo, about whom the term 'Ricardian’ normally applies). Nevertheless, smart contracts form a solid basis for building higher-level constructs that could be recognised as legal contracts.
Any sensible person might be tempted to conclude that what we have here is a set of interesting technologies obscured by confusing terminology. Grouping everything under the heading of 'blockchain’ makes it hard to think about blockchains as components in broader systems, many of which are not blockchain-based. Often, people talk about solving problems 'using blockchains’ when an ordinary database would do just as well, or where the blockchain is not the important or novel part of the system being described. It often seems as though 'blockchain’ is being used as a signifier for decentralisation, digital payment or cryptographic security even when no actual blockchain technology is being used.
When even the clearest blockchain explanations need a preamble explaining the confusion over terms, we know something has gone wrong. If this confusion were limited to a debate between technologists then it might not be a problem - we never really got a good definition of NoSQL, but it turned out not to matter very much. But if we can’t get our terms straight here, it damages our ability to think clearly about a whole category of applications that represent the next generation of internet functionality.
At hexayurt.capital we have taken to referring to the world enabled by blockchains, smart contracts and associated developments as the Internet of Agreements™ (IoA). This started out as a way to shape our thinking, away from the narrower technical considerations and toward the social impacts of an ability to create legible, testable, provable and enforceable agreements via networked computation. We can assume blockchains as key enablers of this capability, but IoA can incorporate broader ideas including voice-based commerce, automated regulatory compliance, logistics and fulfilment, and complex value networks. As a frame for thinking about how the next wave of the internet will play out, IoA has been more useful to us than “blockchain”.
Now seems like a good time to start sharing our ideas. Vinay’s recent talk at the Blockchain Expo in London (video and slides here) mapped out the thinking at a high level, in particular addressing the gap between agreements between computers and agreements between people and institutions - mediated as they are by laws and regulations.
Our paper, presented at the World Government Summit in Dubai, lays this out in much greater depth. The paper looks at the implications for global trade of a system of networked agreements that can interface with different cultural and legal regimes, including impacts on the sharing economy, international development and regulatory compliance.
We’re also planning an IoA conference later this year, to gather together leading thinkers and makers in this space, and those who want to understand how these trends will affect them. If you’d like to know more, get in touch via hexayurt.capital.
- Some people would include digital identity, because it’s not a new generation of technology unless someone is trying to solve ‘identity’ where all previous generations failed. ⏎