# 6 | A Taxonomy of Currency (II): the Rise of the Supercoin
Programming Value Flows with Superfluid
This is another issue of Dirt Roads. No financial reports analysis, no marketing material dress downs, no investment advice, just deep reflections on the important stuff happening at the back end of banking. Because banking is nothing but a pragmatic translation of our ability to imagine what hasn’t yet happened, but could. The time you dedicate to read, think, and share, is precious to me, I won’t make abuse of it.
Programmable Money
Even today, the only language computers can execute is machine code, a mere collection of binary digits called bits. At the dawn of computer science programmers were writing applications directly in machine code. This gave them full control over what machines would execute, but due to its immense inefficiency made the development of more complex applications totally impractical. Then came assembly language, a low-level programming language, specific to a particular architecture, that was later converted into executable machine code by a program called assembler. It was the first step towards the abstraction of semantics away from the pure laws of computer grammar. High-level languages came next, with the ambition of bridging natural and computer languages and make code more readable; examples include C, C++, and Java. Computing languages kept evolving into their fourth generation, even more abstract and able to operate with large collections of information, called objects; the most famous object-oriented programming language today is Python. Fifth-generation languages went one step further, and are designed to make the computer solve a given problem without the presence of the programmer, while within specified constraints. This is the forefront of AI research.
It is fair to affirm that formal programming languages somehow predate the emergence of computing machines, and that some sort of informal programming language has always existed within the human brain. What computers did was simply turbocharge the speed of reasoning, facilitate knowledge transfer, and allow universal modularity.
Even if we are not used to think about it in this way, the same reasoning applies to our relationship with money. You can pick the definition you want, but money is still a mean of storage of some kind of information, like a bit. Money, or better value, can too be programmed to be combined in several ways and flow from application to application, or user to user, like more general information. The fact that we are still carrying metal coins in our pockets, or that we need to wait for three days to settle a financial transaction, is a testament of how much slower the technologies manipulating financial value have evolved. When dealing with financial value we are still in the middle of the machine code era. Even the emergence of stablecoins has done nothing beyond making digital money compatible with blockchain operating systems.
Today, the stablecoin arena is still lightly regulated, and there is a lot of risk involved when experimenting with financial value in a lightly regulated space. At the same time the absence of red tape allows ideas at the fringes to be brought forward, tested, and eventually (for some of them) survive and improve the status quo.
I believe we are now at the beginning of the second age of programmable money, where assembly (monetary) languages are starting to emerge to synthesise some of the basic functionalities money can perform (single transactions) into higher-level primitives to be used by specific applications. In the blockchain world, where every on-chain computation has huge (gas) costs, making money programmability more efficient has a comparably large benefit.
Welcome to Superfluid
After the publication a couple of weeks ago of A Taxonomy of Currency: from Coin to Stablecoin, a trusted friend and brilliant mind suggested I should have given a look at Superfluid and what the team there was trying to build. I did, and couldn’t have been more grateful.
Superfluid is technically a new smart contract framework running on Ethereum, aiming at enhancing the basic transactional functionalities of tokens via a novel primitive called agreements. Less technically, the Superfluid protocol allows blockchain assets, and among those stablecoins, to be programmable in ways that are more sophisticated than single transactions.
Programmable money. The idea was simple and yet insanely powerful. Agreements are initiated with a single on-chain transaction and keep working in perpetuity (subject to few - also programmable - conditions) without requiring any further interaction or gas fee. The agreements primitive enables a long list of functions, including:
Money streaming: programmable endless streams of (crypto) money from one address to the other without the need to lock tokens upfront
Rewards distribution: rewards distribution from a wallet to thousands of recipients in a single transaction
SuperApps: composable and modular applications that rely on a stream of similar actions, like income stream management from DAOs, execution of DeFi investment strategies, yield farming, etc.
Real world contracts have already been compared to programming code, with a language of some kind ruling the interactions among parties. What Superfluid does is introducing a meta-layer that enhances the usability and efficiency of contractual transactions on the blockchain, in the same way assembly programming languages were superior to machine code in designing more complex applications.
How does the agreements primitive work? Agreements represent, in code, financial relationships among several parties that last over time. The Superfluid framework adds agreements functionalities to crypto tokens by upgrading (or wrapping) those tokens. Superfluid calls those upgraded tokens super tokens, and denotes them with a final x. You could, in other words, upgrade (or actually trade) a DAI for a ERC20-compliant DAIx, or a USDC for a USDCx, or more generally upgrade a stablecoin for a supercoin, and enjoy Superfluid’s functionalities.
The simplest application of such supercoin are Constant Flow Agreements, or CFAs: a CFA starts a constant flow of tokens from one wallet to another, without the need for (and the cost of) repeated transactions. It is basically the blockchain version of a standing order. This simple application is powerful in the way it mitigates two of the most annoying problems of blockchain settlement: keys management and gas costs, as described by Multicoin Capital (emphasis is mine):
The base layer of Superfluid is streaming cash flows. This is straightforward: “stream $5 per hour.” This sounds like a state channel, but it is not. State channels require bilateral, synchronous signatures between sender and receiver. Superfluid allows the sender to authorize the stream with a single signature, and doesn’t require the receiver to be online at all. This reduces the key management burden. Stream recipients can claim the tokens that they have been streamed anytime with a signature (or never claim them at all, and stream them on to someone else using Superfluid).
In addition, those incoming flows can be manipulated by smart contracts with arbitrary complexity, all via Supefluid’s dashboard (currently under development):
1st layer of complexity: “stream $5 per hour”
2nd layer of complexity: “stream $5 per hour to Bob as long as I am receiving at least $10 per hour”
3rd layer of complexity: “Bob receives a stream of $20 per hour from his employer, streams $5 to pay back a loan, streams $10 of it into a savings account, pays a few subscriptions, and commits the rest to buy ETH every second”
I did set up a Superfluid dashboard on Rapsten Testnet on two different Metamask accounts to start flows between the two. The snippet above is from Account 2. As a reminder, only transactions pay gas costs.
Transaction 1: Account 2 was gifted 1000 TUSD (actually fTUSD since those were fake tokens for testing).
Transaction 2: those fTUSD were then deposited in Superfluid smart contract - or more precisely where traded for a similar amount of TUSDx (technically again, those are fTUSDx i.e. fake super TUSD!).
Transaction 3: a stream of TUSDx was started from Account 2 to Account 1 for an amount of 500 TUSDx per month - accruing real-time.
Transaction 4: the same stream was then updated to an amount of 687 TUSDx per month - updating the forward looking real-time stream.
In addition, Account 2 receives a stream of 500 DAIx from Account 1, again accruing real-time. The accrued amounts can be withdrawn anytime (i.e. transformed back from TUSDx to TUSD, yes I know technically from fTUSDx back to fTUSD). Even if those streams are interrupted, what has already accrued cannot be claimed back. Settlement/ counterparty risk has been significantly mitigated.
Real-Time Finance
At Dirt Roads we don’t focus on technology or computer science per se, but rather deal with those innovations that have the potential to transform how banking works. In the case of Superfluid it is easy to understand why this is the case. The transformation of maturities has been one of the key functions historically performed by banks: liability and asset holders rarely share similar cash flow timing and banks have acted as compensation chambers by aggregating and managing those flows.
More in general, there has always been a mismatch between the creation of value and the correspondent transfer of resources, even in an era like ours characterised by quasi-instantaneous information. The emergence of real-time, on-chain programmable, asset flows makes some of these banking services redundant, while significantly reducing economic frictions. Imagine a (not too) distant future where agreements among parties are settled in real time along the continuum of programmable blocks, where salaries are paid, interests accrue, dividends are distributed, money is invested, in real time. The impact on capital allocation and prudential requirements, on the needs for any form of credit, on counterparty risk more generally, would be immense.
What Is Next for Superfluid
In July 2021, Superfluid obtained a USD 9m seed investment from a group of investors including Balaji Srinivasan, Stani Kulechov, Do Kwon, Multicoin Capital and Semantic Ventures.
It is difficult, or rather impossible, to guess all the implications that real-time, quasi-frictionless, programmable value transfer can have on the world we live in. The impact on the emerging Internet of Things, for example, could be extreme. It is not the intention of this newsletter to forecast the future of companies, or suggest viable investments, but rather point to those innovations that help us advance conceptually the way we do things and interact with each other. For as much as Superfluid is pioneering the field, its impact might still be more philosophical than practical, and we might look back at the agreements primitive as the “Hello, World!” of higher-level languages apt at manipulating financial value. It is simply too early to tell.
Allow me a brief mathematical digression to conclude. For any VNM-rational agent, there exists a utility function that can be uniquely determined for each of those agents, and that can explain the choices that such agent performed in conditions of uncertainty, when those choices had a financial outcome. There is, in other words, a very personal yet inexorable connection between monetary outcomes and subjective utility. Aiming at complexly manipulate financial transactions means to try and codify how each of us relates to the uncertainty we live in. It is time we equip ourselves with more abstract and more powerful languages that govern those financial transactions.
Thanks for your comment Miao,
A pleasure that so many at Superfluid appreciated my post, which was unsolicited and truly spontaneous. Keep doing a great job, I will follow your journey. Luca
Hi, I am Miao from Superfluid.
Thanks for your analysis of Superfluid money, you nailed it on the head.
I especially enjoyed the "abstraction of semantic" part. That resonates the most with me, since it has a lot to do with compressing information to what's necessary for transactions.