project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

(Self) Sovereign Money System

Towards a (Self) Sovereign Money System promoting financial stability and economic growth equivalent to fractional reserve banking, trough an autonomous programmable money system on scalable blockchain technology.

(Self) Sovereign Money System

Created At

Scaling Ethereum 2023

Project Description

I choose the problem statement: How can we design a stable monetary system with enough loan liquidity to promote economic growth similar to our current fractional reserve banking system?

  • A very drafty 21-page working paper that is basically a brain dump of all the theory, argumentation, and formulas for such a system.
  • A prototype of a minimal subset of the current idea to facilitate the design process and have an academic implementation to test against in automated simulations; for that reason, there is no UX, as there will be no users in this implementation.

The working paper introduces a novel Self-Sovereign Money System (SSMS) designed to address the financial instability inherent to the existing Fractional Reserve Banking (xRB) system while also mitigating concerns regarding loan pricing and availability associated with alternative systems such as Full Reserve Banking (FRB), Sovereign Money System (SMS), and Decentralized Finance (DeFi). The proposed system achieves sufficient maturity transformation, that is, matching short-term savings to fund long-term debts, by allowing savers to sell the debt they funded in the market or directly to the system, thus eliminating the possibility of bank runs. The entire system is transparently defined and autonomously executed through the use of blockchain technology, where the governing body can be a Sovereign entity such as a Central Bank or a decentralized entity such as a Decentralized Autonomous Organisation (DAO). The proposed system operates through a native currency, the Self-Sovereign Token (SST), interchangeable with a Central Bank Digital Currency (CBDC). Loans are facilitated by pooling savers’ SST and generating new SST when necessary to meet loan demand. Savers, including the system itself, obtain proportional ownership of the loan pool, represented by a Pooled Debt Token (PDT). The PDT acts as a pass-through mechanism, distributing repayments with interest to its holders, while the system burns all its repayments to counteract inflation. The PDT’s value in SST is autonomously, continuously, and transparently determined based on external market forces and underlying loan variables, addressing the critical shortcomings of Collateralized Debt Obligations, the traditional instruments to pool loans that caused the financial crisis of 2008. The system can also stabilize market prices, similar to a central bank’s function. Savers can sell their PDT to withdraw savings, eliminating bank-run risks. Moreover, interest rates are also autonomously adjusted to promote stable economic growth equal to nominal GDP growth of 3%. The working paper presents the theory and a prototype implementation of this system, applicable to both sovereign nations and decentralized global economies.

The prototype implements a subset of what is described in the paper. This minimum viable prototype consists of 3 smart contracts, functionally tested. First, a simple ERC20 mintable and burnable Self Sovereign Token, interchangeable with a Central Bank Issued Currency. A contract to store, create, pay, and manage Debt Contracts, aka individual loans, and a system contract that manages everything. The system is designed to target an economic growth rate of 3% annually, and thanks to noble price-winning economist Milton Friedman, that means that the growth rate of the money supply must be equal to 3% annually, or 0.25% monthly. The money supply in this system is given by the token's total supply plus the value of all the debt contracts in the system. If this money supply grows too large to the current target, the system interest rate will increase to incentivize fewer new loans, leading to fewer tokens being minted and the value of all debt contracts decreasing.

Since this system is applicable to both a sovereign country under central bank control or as a fully decentralized system, it made sense to choose a sovereign optimism rollup for the main development chain, where the governing body has full control but it still shares the security with Ethereum.

How it's Made

The first week of the hackathon went to deep research. I am a Web3 engineer and not an economist, so I speedran macroeconomics 101 and read up on the theory and history of our current financial system and alternatives. It took me towards a path of Sovereign Money Systems and papers around the Chicago plan of 1930s, which were revisited in 2012 by IMF researchers and proven to solve basically all the problems of fractional reserve banking. I basically adapted the idea behind this IMF paper into a blockchain-based system and implementation with decentralized/autonomous governance/execution instead of a central bank.

  • A lot of time went into research (1 week+), 2-4 days deriving my system and formulas, and 4-5 days prototyping.
  • I am a big fan of on-chain projects, so I made the entire project in solidity smart contracts.
  • Prototyping in solidity is a pain, I always prototype in a normal language first, but because of time, I did it all in solidity from scratch. I used truffle as a dev env.
  • Because this project involved a lot of math, I used the brilliant https://github.com/PaulRBerg/prb-math project. Not so easy to work with, but I made my own toString function (contracts/Utils.sol) to return doubles/floats in string format with a correctly placed ".", to use in debugging and logs.
  • It seems all my homies hate the int type, because nobody supported it, even if they had it in the codebase??, so I. discovered some bugs with ints that I will open issues for after this. I couldn't even convert it into a string. So I made my own versions casting it to unit first and then if converting it to string, simply prepending the -. I used ints almost exclusively because of the possibility of having negative interest rates etc..
  • The optimism rollup fitted the use-case to have a fully sovereign system/chain. Where the governing body, whether that is a central bank, government, DAO, or a consortium, have full control of every aspect of the chain, but it still shares the security with Ethereum
background image mobile

Join the mailing list

Get the latest news and updates