Financial Integrity
This post makes several references to the blog post on the zero sum fallacy. You don’t need to have read it for this article to be useful, but it explains the problem in depth, and is used for contrast.
Definition
Section titled “Definition”Financial integrity : the ability to prove that a system operates in a financially sound way.
“Financially sound” is a bit vague, but here we’re using to mean that the system has the following properties:
- The system cannot spend money that it does not have
- Debt in the system can only be created intentionally
- Money cannot be lost within the system
These three properties combined will ensure that your finances can never go into unbounded debt. That will at least ensure that your business is not actively costing you money, but most companies need even more specific rules that we’ll talk about later.
First let’s take a look at each of these rules, and how String Theory provides them.
Available Money
Section titled “Available Money”This property likely makes intuitive sense to you. If you have $100 in your bank account, you can’t spend $1011. If you try to, the transaction will fail.
This is weirdly an uncommon feature in business financial systems. Accounts are generally allowed to go negative, and the company bets on the operating account to have the funds to cover such mistakes. After the fact they’ll try to figure out what caused the overpayment, and how to fix it. If you have billions of dollars in your operating account, that’s just fine. But if you are a smaller business, or want to operate with more financial discipline this can be a huge problem.
Note: Lines of credit do not violate this property, as they are funds available to your system.
Strong transactions
Section titled “Strong transactions”String Theory implements this property by its use of knots . Each knot represents a piece of money in the system, and in order for a withdraw to happen a corresponding knot must exist in the system . This means its impossible to spend money that doesn’t exist. It effectively makes it so no account can ever be overdrafted.
Diagram: Attempted overdraft in String Theory
There are times, however, when you do want to be able to loan someone money that isn’t already in there account. String Theory allows loans (and corresponding debt), but the actually money for the loan must come from another account in your system. This means that you can’t create loans if your company doesn’t have the funds to actually fund the loan.
Unintentional Debt
Section titled “Unintentional Debt”Many of the mistakes in finance come from “unintentional” debt. This is debt that gets created due to mistakes in your system (e.g. overdraft of accounts, overuse, or overcreation of credits) instead of intentional business decisions (e.g. giving a customer a personal loan). In traditional double-entry systems, there is no way to tell the difference between these two types of debt. So when you allow one, you allow both.
Strictly intentional debt
Section titled “Strictly intentional debt”String Theory only allows for intentional debt. You can never create debt as part of an overdraft, or spend money that has been explicitly deposited (or budgeted) in the system.
Instead, when you have a valid business reason for creating debt in the system you intentionally add it. This means that you can’t accidentally add debt during a non-debt operation. For example: if a customer owes you money, you add the debt explicitly to their account instead of withdrawing their account below zero.
To put it another way, creating debt and withdrawing money are different operations . Doing one, cannot trigger the other.
Disappearing money
Section titled “Disappearing money”This property is important, but also the most basic of any financial system. Once money enters the system it can’t “disappear”. If it moves there must be a record of where it went. In double-entry systems this property is enforced by the double sided nature of a transaction. Whenever money moves the transaction must have a source (debit) and a destination (credit).
Atomic money
Section titled “Atomic money”String Theory implements this property using its database technology. Some very technical details follow (if you are interested), but the short version is that String Theory keeps a record of everything that happens to money. Whenever an action is taken it is either entirely applied, or rejected, never partially completed which ensures money is never lost.
Technical explanation
String Theory guarantees that every operation is atomic . That means that all the changes are applied at once, or they all fail. We accomplish this by using database transactions that roll back on any failure. When transferring across shards it uses a two-phase commit model that ensures any failures during the transfer cannot cause either side to lose track of the money.
Additionally, String Theory uses an append-only data model so that if a new snapshot of money fails to be created, the old one can never be lost.
Micro integrity
Section titled “Micro integrity”So far we’ve talked about these properties as they apply to a business as a whole, and indeed, its important that they are enforced at the business level (if you total business balances goes below $0, you are in some trouble). However, most businesses also want to enforce these checks on a smaller scale. For example, when you make a sale you want to ensure that your total expenses for that sale are less than the revenue. Otherwise, you running at a loss for that particular transaction.
Diagram: A bad sale
We call this concept micro integrity . It is vitaly important for each product a business sells, and its devilishly difficult with traditional financial systems. Particularly, for things like credit card fees or other costs that can’t be calculated at checkout time.
In this example the sale lost $5 over all. Bummer! But more than just us losing $5, who paid for it? We definitely sent $5 than we made, but where did it come from? This kind of unintentional debt is very difficult to budget for, or classify as we aren’t required to say where this extra money came from.
Dead simple micro integrity
Section titled “Dead simple micro integrity”String Theory uses a concept called threads which keeps track of how money moves through your system. You can think of a thread like a special account that is automatically created when a piece of money enters the system, and always has the balance from that specific piece of money .
This makes micro integrity incredibly easy. If you want to make sure you can’t send out more money then you made from a sale, make the withdraws directly from the sale thread. If you try to exceed the amount, it’ll fail unless you give it a valid place for the money to come from.
This forces you to have strong financial discipline and create budgets for excess expenses. The system just won’t let you send out money until you decide who is paying for it. This level of financial stability is often considered unattainable by businesses because of the investment it would take to get it to work in traditional systems, but it is the default for String Theory.
Up next
Section titled “Up next”In our next post we’ll talk about the property of uniquely identifiable (sometimes called non-fungible) which allows you to track individual pieces of money by a “serial number”. In String Theory it also allows you to find how a piece of money looked at a specific point in time.
Footnotes
Section titled “Footnotes”-
If you have overdraft protection with your bank, you should disable it as soon as possible. It’s a predatory practice that will cost you a huge amount of money if you ever use it. It commonly buries people with low balances in compounding debt. ↩