Money as a Graph Algorithm
I’ve been fascinated by money for a long time. It started as a ‘cultural studies’ student, when I came across an interesting definition of money by a sociologist1. I’ve forgotten about the definition, but the idea that money was something complex and could be viewed in different ways stayed with me.
I picked up on it again while I was developing an app that kept track of debts between friends (called “Cash With Friends” accordingly). Naturally, the domain was modeled as a directed graph. Each node represents a person and the edges between them represent debts.
What I’ve realized is that the software could effectively settle debts when it found a cycle in the graph:
is equal to
But then, if all it takes to settle debts is a graph algorithm, why use money at all? This is when it hit me that money is a distributed graph algorithm: It’s a token that is passed around in order to find and resolve cycles in the debt graph.
Consider what it would take to get from the first graph to the second graph using money/tokens? There have to be $10 in the first place, which have to be passed from one person to the next, until they arrive at the original person again.
Of course, that’s not the textbook definition of money, but it’s an interesting one nonetheless. Interpreting it this way opens up new doors.
Interestingly, debt is a much more ancient form of payment than money. As it turns out, barter systems never existed. Instead, it used to be: “I owe you one” and people kept track of “who owes who”. As societies became larger, especially once larger than Dunbar’s number, this must have become increasingly complicated to keep track of.
At least in theory, there could have been “central scribes”, who kept track of all debts. But not only would they have been a security risk, there’s also a limit to how much they could have kept track of.
Money on the other hand has neither of those disadvantages. There is no single point of failure, instead the information is spread out and it has no scaling problem either - the properties of a distributed algorithm. It’s actually pretty clever.
If “technology is at its best when it is invisible”, it would be nice to go from “I give you $10” back to “I owe you $10” without compromising on the benefits that modern day money has brought with it.
The Central Scribe
We now have graph algorithms and computers, even a trustworthy one, which could serve as the equivalent of the central scribe2. With the introduction of this component the algorithm could be solved in a centralized manner.
Imagine money didn’t exist. When we’d buy something, instead of using money, we’d tell the central scribe about our new debt3. With this information, the central scribe can do things that weren’t previously possible: He can look for cycles in the debt graph using a graph algorithm.
Example: Let’s say you wanted to buy a bottle of liquor at the local store. In this alternate world, instead of passing money over the counter, you tell the scribe that you owe $10 to the store owner.
The scribe checks the debt graph and looks for a path from the store owner back to you. For the sake of simplicity, let’s say you work for the IT department of the liquor company. The scribe notices that the company still owes you $1000 from last month’s salary. The scribe also notices that the store owner still owes the liquor company $10,000 from the last month’s delivery.
With this information the scribe can update the debt graph: You no longer owe the store owner the $10 for the bottle. Instead the store owner now owes $10 less to the liquor company (= $9,990), which in turn owes $10 less to you (= $990). You just bought the bottle of liquor, except you didn’t use any money.
In the real world it wouldn’t be as simple as that. However, more intermediaries means the scribe’s work gets more computationally expensive, but it doesn’t invalidate the concept. It becomes more problematic when there’s no link at all, but due to the small-world hypothesis this might not be the case. That’s speculative though, because being acquainted and being in debt are not the same thing. But what if they were?
Everybody’s Private Bank
As far as I know, commercial banks have agreements with each other as to how much the can owe to each other at any given time. When a customer of bank A wants to send money to a customer of bank B, they won’t move actual funds. Instead bank A sends an IOU to bank B. This goes in both directions. Eventually they settle whatever amount wasn’t canceled out with an actual monetary transaction. Anyway, we can use it as a model and make it available to a wider audience.
Let’s say the central scribe wouldn’t just let you tell him about new debts, he would also ask you to specify some amount you’d be willing to lend to each of your friends at any given time. You know your friends, you have some idea what their financial situation is, so you should be able to come up with some number. If you’d like something more risky, you could also specify some number you’d lend to other people, plus some interest to make up for the risk.
With this information, the central scribe now has more leeway when routing the debt through the graph. Given a certain level of trust between network participants, the problem that no route exists between two nodes would no longer exist. However, there is still a problem with large transactions: What if there is simply not enough “trust” in the system for the transaction to “go through”?
In this case one could simply fall back to the classical monetary system. There is no reason why these systems couldn’t co-exist. But this would also be an opportunity for the traditional banking sector to step in and serve as central hubs, trusting each other with huge sums, making big transactions happen.
So what would we get form all this?
Democratization. First of all we’d have a democratization of the lending market. Everybody could voluntary publish how much they’d be willing to lend to everybody else, including banks to banks, customers to banks and banks to customers. Whoever accepts the lowest interest rate would be the most likely to be able to earn that interest.
Debt Minimization. While debt would be the “currency” of the system, there would never be more than there had to be, because the central scribe would resolve it as soon as he found a cycle.
Easy Credit. Somebody looking for a loan could get it from his/her social network.
Money Supply. From the last point follows another interesting property. The money supply would be dynamic and represent the amount of trust in the system. If people are more optimistic, they’d be willing to lend higher amounts, effectively increasing the amount of money in the system. This is different form Bitcoin which has a fixed money supply for example.
However, a shrinking money supply might not be what you’d want in the case people are getting pessimistic.
Defaults. When somebody were to default, the only people directly affected would be his friends, arguably also the ones most forgiving. If local error is good, this is as local as it can get with respect to debt.
Bootstraping. Bootstrapping an economy could be easier. If all it took to create money was an agreement between two parties, that could be easier than convincing external parties to put money into the local economy. This is obviously speculative as well.
Privacy. All transactions being public is quite a problem, especially when you’d like buy a lot of liquor, like in the example above.
Complexity. More important though, a pretty complex system would have to be built. Arguably, all complex systems do have quite a bit of left-side tail risk.
Locality. No longer would all money be equal. If there is not enough trust between to two clusters in the graph, it’s members could have difficulty trading with each other. The extent to which this would be a problem is unclear.
Unknown unknowns. Anything else that might be wrong with it.
All in all it’s far from clear if something like this could work. I’m probably missing something important. Even if it did, the advantages are unclear. In the presence of signaling one should expect that people like to talk about democratization more than they like actual democratization (including myself I guess).
It’s hard to imagine the adoption of such a system, unless there’s something tangible in play as well, like borrowing at lower rates and/or lending at higher rates.
However, it could find some niche in online communities like reddit, which have embraced fun currencies before (i.e. Doge Coin). With a system like this, people promising to pay each other for witty comments, even without the intention of actually paying, could create an “economy by accident” once the usage reached a critical threshold.
Until recently computers haven’t been politically neutral (i.e. the owner in full control of the data). However, with programmable blockchains computation can now happen in a cencorship-resistant way. ↩︎
I know this has privacy implications. While the central scribe can be politically neutral, it can’t be confidential as of now. It might be that something like homomorphic encryption is the missing piece to the puzzle. However, note that, contrary to popular belief, people using Bitcoin are giving up (part of) their anonymity already. ↩︎