Programmable Money

View the Project on GitHub redpill5/financialsystem

Bitcoin enthusiasts like Andreas M. Antonopolous and Stefan Thomas sometimes describe Bitcoin as programmable money. Programmable money sounds very promising and suggests that software developers can do a lot of interesting stuff that isn’t possible without Bitcoin and other crypto finance solutions. Here are some thoughts on this topic:

The term “programmable” roughly means “To provide a machine with a set of coded working instructions.” You can program a machine so it behaves the way it was instructed to behave. The instructions are in some way persisted so they don’t get lost. Sometimes several native instructions can be combined into higher level, more powerful instructions.

Programmability presupposes digitization because computers use bits and bytes. In order to be programmable, money has to be available in electronic form. This is the case in today’s financial system and also with crypto currencies like bitcoin.

So, the financial and legal system can be considered as the machine and contracts are the instructions. While today’s financial system is to a large extent digital, the whole legal system and contract law is way behind and operates as it still was 1980.

We have programmable computers, programmable thermostats, video recorder, phones, remote controls, e-mail clients and so on. For marketing purposes the term programmable often gets replaced with the term smart, so we have smartphones, smart homes, smart cities, smart contracts, …

New Use Cases Become Feasible Often the first phase of programmability focuses on automation of tedious tasks that are performed by humans. By using automation people need to do fewer steps manually or don’t need to do anything anymore. (e.g. timers, pattern matching, threshold monitoring, decision making, calculations)

In later phases, programmability leads to solutions that couldn't be done by humans anymore because humans are too slow in processing thousands of steps per second (e.g. search engines, business intelligence, algorithmic trading, recommendation algorithms, animations, simulations, rule engines, continuous deployment, port scanning, …).

With money it might take a similar path as with other programmable things. At the begin programmable money like Bitcoin, NXT and Ethereum has similar features as traditional fiat money (cash) but with time people realize that many new applications become possible.

Money is used to purchase stuff, pay rents, compensate for delivered work, compensate for lending, to incentivize people to do something, or to refrain doing something and so on.

Programmable money can be viewed as programmable incentives and rewards to influence the behavior of other economic actors. Those actors can be humans or machines. Also software (machines, DAOs, …) can posses and use money. 

Can you imagine a robot using a credit card? Does it make sense that robots use ATMs? No, not really. Should a robot use a service like PayPal or Tencent’s WeChat? Probably not. The fiat currency world (including PayPal) knows nothing like sending money to a piece of software as recipient. How would do KYC (Know Your Customer) and AML (Anti Money Laundering) for a software as account holder? 

A Bitcoin address or something like an embedded 21.co bitcoin computer is a much better fit. Think of IoT (Internet of Things) devices as a small robot and things begin to make sense. Bitcoin P2SH (e.g. for Multisig ) is an example where bitcoins are being sent to a piece of software. Once a machine can hold its own money it can pay for what it needs. A machine could pay a human so that it gets maintenance work done or that software gets migrated to a newer runtime.

Those use cases where machines pay machines or machines pay humans offer the biggest distinction from the current financial system.

Programmability enables cheap and fast experimentation. It’s much easier and quicker to change software than it is to change hardware. This means that programmability enables cheap and fast experimentation. Experimentation and tinkering lead to (permissionless) innovation. The numerous Bitcoin startups, websites and the over 500 altcoins are the result of such experimentations.

With wide spread usage, bitcoin libraries might be integrated into web browsers, frameworks, Java virtual machine, mobile phones, smartcards and the 21.co bitcoin computer. This will fuel further experimentation.

The two main perspectives of programmable money are those of the issuer and the user of the money.

Programmable money affects different areas:

Programmable money can have behavior itself. A good example is the cryptocurrency named Freicoin with its cost associated to holding the currency (demurrage fee).

It seems that governments and central banks are not yet aware that also inflation, confiscation (bail-in), automated tax-collection and sanctions (blacklists), could be implemented with programmable money.

Programs need Data Programmers write source code and use software libraries and APIs (Application Programming Interfaces) to create their programs. But finally those programs need access to data.

Many topics are already programmable today but only for companies that have access to those APIs and to closed networks. Most proprietary bank applications expose some APIs as well. But those APIs are only accessible for some players in the financial services industry, not for individuals or small companies. With the existing financial system programmers can do only what bank APIs allow them to do — which is not much.

Most financial services companies expose customer data only through graphical user interfaces. Many companies allow customers to download tabular data and PDF files but there are only a few useful APIs to program against. Banks or financial intermediaries like ACH, Swift, SIC, Target, CLS, BIS could provide public APIs as well — but most of them don’t.

Companies like Visa, Mastercard, PayPal offer some APIs, but developers can only access their own data. This is not what I consider to be programmable money.

Bitcoin as Programmable Money  Bitcoin’s blockchain is a common publicly accessible database of bitcoin transactions. This is very different from the existing closed proprietary financial system.

The Bitcoin blockchain is open big data. The full blockchain and all on-chain transactions are accessible for software developers. And there is not just the Blockchain, there are the bitcoin exchanges with their pricing and market depth APIs, so are specialized firms like blockchain.info that provide additional Bitcoin APIs to make easier for programmers to build applications.

With Bitcoin, NXT and Ethereum it seems that you can program just about anything — your own type of transactions, nodes, wallets, network analyzers, faucets, payment gateways, miners, game/gadget integrations — you can programmatically control pretty much any aspect of crypto currencies. This is pretty powerful.

Many bitcoin or blockchain APIs are available directly on your laptop or mobile phone — no need to ask some company for permission, no need to sign-up for a bank account, no need to sign legal agreements with a lot of fine print, no API usage metering, no danger of sudden API discontinuation.

Most bitcoin companies have rather a Silicon Valley mindset than a Wall Street banking mindset and therefore those companies offer API access to their services. Many of those companies release software with open source license, which is also very different compared to established financial players.

Programmable Contracts and Contract Enforcement The more I think about programmable money use cases, the more I think that programmability of money is primarily interesting for the issuer of money.

It is rather on the level of contracts where we have events, conditions and instructions. For the users of money the programmable contracts (a.k.a. smart contracts) and their automated enforcement offers way more use cases than the programmability of money itself. Financial instruments are basically contracts. Therefore it’s no surprise that investment banks are interested in Ethereum (separate consortium instances) and R3 Corda.

API Banking Solutions like Figo API, solarisBank, Fidor API, seed.co, and others show that some banks and financial intermediaries try to bring better programmability to the financial system.

Conclusion

With programmable money it’s a bit like Columbus’ egg: today’s financial system could also enable programmable money, but they don’t do it. As of 2016, crypto currencies like Bitcoin, NXT and Ethereum offer programmability for everybody and access to all transaction data.