WingCash Forum

Immutable Cash: How, Why, and What

The WingCash architecture is designed around cash notes with immutable (unchangeable) value. I’d like to discuss how we came to that idea, why we chose to build on it, and what effect it has had on WingCash.

The idea comes from physical cash. Every physical bill has an identity and an immutable value. The immutable value of a bill or coin makes physical cash very easy to understand and trust. Ancient financial systems didn’t need complex accounting because physical cash provided all the assurance merchants needed to be sure they received full payment.

Of course, physical cash has a lot of problems, so most money movement in the modern world is digital. However, we have lost something in the process. Today’s digital financial systems come with fees, delays, chargebacks, and identity theft. These problems drag down our economy and impede adoption of digital cash in the developing world.

Before the first line of code was written for WingCash, we decided to represent all money as a collection of digital objects with immutable value. Immutability is a kind of mathematical purity that solves problems before they happen. Computer programmers, especially those who use functional languages, are very familiar with immutability. Does immutability solve every problem? No. Does immutability make many kinds of problems simpler? Yes!

Thanks to immutability, WingCash can provide strong accountability in the form of an historical record attached to each note. WingCash has been also able to add new features like closed loop cash without major architectural changes.

The WingCash database stores information appropriate for double-entry accounting, but we use the records of cash note movements more often because that information is clearer for users. In a way, our accounting system acknowledges that the machines we call computers are more like filing systems than like calculators. WingCash files bills in wallets instead of changing account balances.

Now, what happens when you have a $10 bill (represented in WingCash as an object with an immutable $10 value) but you want to pay someone only $5? To complete that transfer, WingCash sends the $10 bill to its issuer, who then provides two $5 bills. The transfer receives the $5 bills and sends one back to the sender and the other to the recipient. This is just like what a cashier does when they receive physical cash.

I hope this discussion clarifies immutable cash and why WingCash is built upon it.

1 Like