HACKER Q&A
📣 mettamage

How does a bank store money? With SQL?


We know quite a bit about how cryptocurrencies work. I now wonder where can I read more on how bank technologies work. Some naive questions (gotta start somewhere):

Is a MySQL database keeping track of how much money I have?

Can these databases / technologies be hacked?

Have they been hacked? And how?

To what extent is this stuff open-source and closed source?

Are certain programming languages and/or frameworks fundamental to the electronic transfer of bank money?

In short: how does the technology of fiat/normal money work, technically?


  👤 Nextgrid Accepted Answer ✓
The underlying database technology isn't really relevant. MySQL or Postgres can work perfectly.

The database doesn't just have a row with your name and balance in there, it also has a row of every single transaction, in an out of your account. The balance can be stored denormalised for ease of access however the true figure is always the sum of all the transactions into your account.

The database could indeed be compromised however there are (or should be) layers and layers of security that means it will be difficult (and probably unnecessary - there are much easier ways to steal money than compromising the ledger itself). Banks have been compromised in the past at different levels but I haven't heard of an incident where the ledger itself was affected. There was a case where the machines used for large wire transfers over the SWIFT network were compromised to issue transfers of large sums of money but this was hidden from the sending bank and thus not recorded on their ledger at all (until they found out).

A lot of it is closed-source however it is not a requirement. Monzo for example (a modern bank in the UK) uses Cassandra for their data storage as far as I know.

Same applies for programming languages or frameworks, a lot of it is closed source and running on obscure stacks like mainframes, but at the end of the day the role of a bank is just to keep accurate records and communicate with the different payment networks (card networks, national money transfer services like Faster Payments in the UK or ACH, international transfer services like SWIFT). Monzo primarily uses Golang, Starling Bank is in Java, and I heard Curve (not really a bank but technically similar) is in PHP.