Metaphors, when used correctly, are powerful and useful. We often use unhelpful metaphors out of laziness or habit. I want blockchain—the ideas and the technology behind it—to be legible and accessible to as many people as possible, and I think one reason this still isn’t the case is that we’ve chosen the wrong metaphors. Terms like “coin”, “wallet”, and “transaction” were never especially accurate, and as blockchain and Web3 technologies become more useful and have more diverse applications, these terms are increasingly holding us back. This is my attempt to consider better metaphors.
Thing #1: Transactions as Intents
One of the most basic data structures or units of meaning in blockchain is the transaction. Blockchains are basically append-only databases, and every blockchain has transactions: in technical terms, a transaction is an atomic state change, i.e., the smallest possible change that can occur and that must either entirely succeed or entirely fail. (The term comes from databases, where it means the same thing.)
Bitcoin introduced the idea of a blockchain transaction as a simple coin send containing an input and one or more outputs, a fee, and a signature. Of course, Bitcoin has since introduced more complex transactions, and Ethereum and other smart contract platforms go much further and have much more complicated, expressive transactions. But the fundamental idea remains the same: a transaction encodes a desired action, whether it be a coin send or a smart contract call, along with metadata such as signature, gas price, and max gas.
But what is a transaction, really? What does it represent? The word “transaction” suggests an entry in a ledger, but that’s not entirely true because that’s what becomes of the transaction after it’s mined into the blockchain. Before that happens, however, a transaction is actually something quite different.
One way of thinking about a transaction is as an intent: it’s a desired change in the world (or, to put it in more technical terms, a desired state change), along with that same metadata: the parameters for the change, how much you’re willing to pay for the change, maybe how long you’re willing to wait, etc..
This is a better metaphor, but it isn’t strictly true in technical terms. In blockchains like Ethereum, a transaction is actually not a desired state change, it’s actually a command with parameters. (In computer science terms, this is the difference between imperative and declarative programming.) If we can escape from the imperative, financial, Bitcoin-and-Ethereum-style design, more possibilities become visible. In particular, we can see a transaction as a desired outcome. E.g., rather than saying, “call the transfer() method on contract 0x123… with these parameters and this max gas” (which can be quite dangerous unless you’ve audited the code of the contract in question and know the exact state of the blockchain at the time the transaction is executed), a transaction might be more ergonomic and be easier to understand if it encoded an intent such as, “trade these 100 XYZ coins for at least 150 ABC coins.” (Some newer projects such as Anoma helpfully make this concept more explicit.)
Someday we’ll be able to go even farther and do even better than that. What if you were able to encode an intent such as, “Get me the best deal on a flight to Miami next week,” or, “Build a widget that pulls data from x,y,z, sources and displays it in such a such a fashion.” You occasionally see people posting these sorts of requests on social media, but as blockchains, smart contracts, the underlying VMs, and marketplaces get more sophisticated, it will become possible to express more and more complex and fine-grained intents programmatically, and to validate responses on chain.
Another way in which transactions can and will become more expressive is the metadata. A transaction should be able to express multidimensional preferences, e.g., that it will pay more for earlier inclusion, or inclusion in a certain position in a block, or a certain position with respect to a particular class of transaction, or alongside specific other transactions. (This is just starting to become possible through MEV and bundling.)
For more: Read up on MEV and watch this talk on “smart transactions” to get a sense of where we’re going.
Thing #2: Wallets as Agents
If a transaction expresses an intent, the engine for generating and managing the set of those intents is a personal agent (a much better term than “wallet”!). The agent is a piece of software that works on your behalf. It tracks all data relevant to you and your intents: the status of intents or transactions you’ve already broadcast, the state of any trades or positions you’ve taken, your data in each of the apps you use, etc. It keeps track of each of your identities (and keeps them isolated from each other), it learns your preferences, and it may even suggest useful new intents or ways to better bundle or organize existing intents.
Crypto wallet software today is the dumbest of all possible agents. It’s barely capable of keeping track of your identities and submitting transactions on your behalf. The extent to which you can express preferences is whether you want your transaction to be faster, or cheaper. In a real Web3-enabled world, we’ll have agent software that’s significantly more useful, sophisticated, and customizable.
I find the term user agent, which is still used in browser software, fascinating. There’s a reason this term was chosen for web browsers: the original idea was that they would work along the lines I describe, acting on behalf of the user, managing the user’s data, etc.. Modern browsers are highly sophisticated tools, among the most complex and optimized software we use. They’re certainly customizable. But I think they’ve failed to deliver on the “agent” vision because they don’t actually act on your behalf, and the extent to which you can customize the behavior of websites and web applications is extremely limited.
Imagine user agent software that you trust and that really works on your behalf. It’s open source and well documented. It manages your cryptocurrency wallets and automatically logs you into various applications using your preferred identity. It stores your data and keeps it secure and encrypted, and makes it available across all of your devices. It allows you to seamlessly create arbitrarily complex intents along the lines described above, broadcast them, and track their progress. It uses AI to predict and fulfill your needs ahead of time.
We’re a far way from this vision today but I think we’ll eventually get there.
For more: Consider the degree to which the software you use day to day works for you, rather than for big companies.
Thing #3: Blockchains as Ecosystems
If transactions represent intent, and wallets are personal agents, this begs the question: what does the blockchain itself represent? What’s the substrate for a network of agents acting on the intent of their principals?
The obvious answer is a marketplace. There are endless possibilities for how smart agents can help manage intents, which can be broadcast and accumulated, aggregated, bundled, composed, filtered and sorted in many creative ways. This is nothing new—markets already fulfill this role in capitalism—but with blockchains they can become orders of magnitude more efficient.
Rather than needing to create a firm to satisfy a particular market need, a process that’s slow and expensive, anyone, anywhere could write a more efficient algorithm to automate the process. It should result in greater profits for those who can satisfy such needs more effectively and efficiently, and more happiness all around.
Hopefully transactions will become cheap enough and throughput great enough that all sorts of applications can cheaply generate and broadcast many such intents all the time, and there will be broad, deep, decentralized markets for other actors to step in and fulfill them (and reap a small profit in exchange). Hopefully transactions also become expressive enough to allow truly fine-grained definition of intent, which would result in a system far more creative, responsive, and efficient than one, such as capitalism, in which the only intent a consumer can express is whether or not they choose to purchase a particular product or service already on offer. Smart software agents along the lines described above will be an important part of this transformation.
Taken to its logical conclusion, a network that allows consumers to efficiently express fine-grained intent and service providers to collect fees in exchange for fulfilling that intent is a sort of hedonistic machine. Depending on your disposition and how you feel about technology, this is either a utopian or a dystopian vision for the future. As interesting and compelling as this idea sounds, a blockchain is still more than a market.
Another good metaphor is the dark forest. This captures the idea that, rather than a neat, clean, transparent marketplace where the actors are known and their actions are visible, and everyone plays by the same, known set of rules, in fact the blockchain ecosystem is a dark, scary place where pseudonymous entities appear and attack or capture one another with frightening regularity.
This is a step in the right direction. The blockchain is not as clean, simple, or well-defined as a marketplace. The main reason is that the rules themselves evolve over time as code is updated and evolves. The rules of DeFi, for example, change many orders of magnitude faster than do the rules of, say, NYSE.
I think the only good response is that the blockchain is an ecosystem—like an actual biological ecosystem of many climates, habitats, and creatures that inhabit them. It’s a living, thriving ecosystem that evolves over time, and the various creatures and components of the ecosystem thrive or stagnate together. We throw the term “ecosystem” around pretty loosely these days, but I think a blockchain is more like an actual, biological ecosystem than a company or an ordinary software platform.
How is this metaphor useful? I think it’s mainly useful for the same reason that thinking about the entire earth as a single, large ecosystem is useful: it helps you appreciate the ways in which it’s complex, and everything is connected and interdependent. An unhealthy ecosystem, or one with an exploited environment, will end up hurting everyone. A healthy ecosystem is robust and antifragile, but an ecosystem can be thrown out of balance, and it’s hard to forecast the long-term, large-scale impact of changes (like the upcoming Ethereum Merge). And this interdependence is why maximalism and short-term, selfish, profit-driven behavior are short-sighted and naive: over the long run we all succeed together or we fail together.
For more: Read about how trees talk to each other and act benevolently. It’s mind-blowing, and it’s scientific truth. It’ll change how you think about ecosystems.