Hacker News new | ask | show | jobs
by superzamp 569 days ago
(Disclaimer: I’m the author, nice to see your take here and pleasantly surprised to see my post here as well!)

You can surely use accounts with fine grained attributes (e.g. to describe the soon to be received but not yet available money or customer 1234, naming it users:1234:pending). You can even add more data to this account on a metadata level (e.g. finer grained accounting classification).

The problem with an account-only approach is that a monetary value represented in it is only temporarily represented here, and if there’s a specific set of attribute relative to that value, you’ll be somewhat forced to overly complicate your structure of accounts to persist theses values throughout the ledger.

Banks are not fintech and hence face different issues so let’s take an example anchored in that context. Imagine you’re holding $100 for user 1234, spread across two FBO accounts at two different banks. You might be interested in persisting the nature and location of these funds throughout the ledger. So instead of having an account structure such as users:1234:main:jpmc, users:1234:main:fargo and so on, you could simplify your ledger structure by having a single users:1234:main holding something like:

    [USD/2 100 (bank: jpmc)]
    [USD/2 100 (bank: fargo)]
So that no matter the complexity of your ledger transactions, you’ll always be able to « reveal » the identity of these funds which would otherwise be lost in a ledgering model optimized for classical accounting.

But that’s just an example, the idea is to explore the concept of semi-fungibility and how it can improve some of the challenges fintech face (in their journey of being not bank).

2 comments

For technical discussion:

This is easy to represent with double ledger accounting.

We have a customer ledger which in normal banking balances as a bank liability against the bank’s assets held in Treasurys or cash or whatever.

You seem to want a report of where you are allocating the customer funds. This isn’t possible in any sane way without having individualised accounts, any more than it is sane for me to ask my bank “Ok, I have $1,000 in checking, how much is held in short term assets of the bank, Treasurys, long term assets like mortgages held by the bank”? It’s not a reasonable question since they’re fungible.

If you truly want to hold FBO accounts at your banker’s bank then you do indeed create a hierarchy like this:

AwesomeFinTech:Assets:BoringBanks:JPMC:Clients:Jim AwesomeFinTech:Assets:BoringBanks:BoA:Clients:Jim AwesomeFinTech:Liabilities:Clients:Jim AwesomeFinTech:Liabilities:Clients:Jim:JPMC AwesomeFinTech:Liabilities:Clients:Jim:BoA

When you move funds into the FBO account (which is just the Assets:JPMC account), balance the transaction against both the liabilities and assets.

You can a report on the liabilities:client and see where the funds are.

If you want to see all your assets at JPMC for Clients, you can see that.

If your fintech fails and you need reports of all the funds at JPMC… easy, go dump the balances of all the JPMC:Clients accounts.

We may have a philosophical disagreement since I think fintechs definitely are banks, or at least pretend to be banks. What you call a “bank” is what (for example) my credit union or my local town’s small bank calls their “banker’s bank”. They do indeed store their funds, generally speaking, at their banker’s bank; I know for a fact one of them primarily uses Chase.

Their banking software keeps reliable ledgers of balances and posts changes nightly to their banker’s bank.

They prepare for data loss with off site backups. This stuff has been done in banking since at least the 1970s.

Anything being out of balance is a major emergency. If it’s a software problem, they would immediately demand action from the software vendor, who will drop whatever else they are doing by and fix the problem.

The “journey of being not a bank” is puzzling since someone who doesn’t want to be a bank really isn’t someone who should be holding client funds.