6-13-2023 This is an archived work. It’s preserved in memory of Nikolai Mushegian, co-founder, core contributor, and dear friend. Some parts may be out of date. Updated docs will be posted soon.

1-1-2024 An updated version of this document can be found here.

Rico Reflex Bond System

The Rico Reflex Bond System is a spiritual successor to the Dai and Rai systems, built with an emphasis on automation and market rate discovery.

A reflex bond is a synthetic asset that is mechanically similar to a collateralized stablecoin, but uses a moving par price relative to an external reference asset to balance supply and demand. See bank.dev/vox for details about price vs quantity rate and par price adjustment mechanism.

Overview

One of the primary design principles and differences from earlier iterations of the Rico system is an emphasis on minimalism. This makes it not only easier to audit, but easier to understand the entire system at once. Everyone using the system, and not just developers, should understand all the components and how they fit together.

There are only three core components:

And three auxiliary systems, defined by interface:

Finally, there are two tokens:

***

Charging Interest in Real Time

There is some nuance related to how interest is calculated and charged. Interest is collected in real time. Every drip (which anyone can call) charges interest to all CDPs of a given type. drip adjusts the internal debt unit so that the amount owed reflects all interest up to present.

Because it can be called at any time, the debt owed can be considered a continuously prorated value. A less efficient but “more correct” implementation could force a drip before every single interaction, which would make all values actually prorated in real time.

Every drip also results in the creation of rico equal to the amount charged, which is immediately released into the market through the RISK buy/burn mechanism.

Effectively “principal plus interest” becomes just “principal” in real time, and this equals the amount of rico in existence. The value comes out of the value of the CDP. If the CDP becomes unsafe because the growing debt amount exceeds the minimum collateral ratio, it can be liquidated just like if the collateral value falls too much.

Again, the amount of credit and debt in the system are equal at all times. In a naive implementation, the amount of debt owed exceeds the amount of credits in the system, which combined with lack of way for setting a negative effective rate, would cause the system to inevitably collapse, when interest owed is greater than what the system can actually pay.

vat

Vat is the main CDP accounting module. It holds collateral tokens and mints/burns rico.

In the Dai and Rai systems, the vat was carefully designed to perform all logic without external calls and without loss of precision. In the Rico system, these two properties are broken, but in a controlled manner which mitigates their side effects:

vow

Vow is the module responsible for keeping the system solvent. It performs liquidations of unsafe CDPs and bails out bad debt with mint-and-sell, which is offset by the buy-and-burn flow from interest charged.

There are two big conceptual differences from the equivalent mechanics in the Dai system.

In this model, flop auctions are not treated as rare, exceptional events. Instead, buy/burn and mint/sell are two continuous processes. ***

vox

Vox is the par price adjustment mechanism. The difference between a pegged stablecoin system like Dai and a reflex bond system like Rai or Rico is the moving par price, which is the system’s internal definition of the price of the synthetic in terms of some external reference asset.

The rate of change of par, called way, is the primary monetary lever of the system used to balance supply and demand, and is adjusted automatically in response to market price deviation from par.

Changes in this price rate adjust the present value of the asset in the same way that changes in the interest rate on a variable rate bond adjusts its present value. This is in contrast to using the quantity rate or fee, which is a per-collateral-type risk parameter which should be understood more like an insurance fee.

The main advantage of this model is that price rate be negative (way < 1), which gives the system the ability to deal with “squeezes” or “hoarding” without the problem of the quantity rate zero bound, the inability of the bank to charge a negative quantity rate in a sustainable manner. In other words, the system can make the effective rate of borrowing vs the external reference asset negative, while still maintaining positive cashflow for the system.

Vox calls the feed subsystem to find the market price of rico in terms of REF, adjusts way depending on the difference between the market price and par, then calls vat to prorate par according to way.

flow

Flow is the subsystem that contains implementations of the abstract auction interface used by vow. It is defined by interface, and can have different implementations for different collateral types.

There are three different auction types, serving different roles.

Note that a liquidation results in both a flip auction, selling collateral to buy rico, and a flop auction, minting RISK to buy rico.

Rico will initially use a naive “auction” implementation which simply trades through an AMM. This intentionally inefficient mechanism is designed to catch the attention of MEV seekers. Once keepers are aware that the Rico system is primarily driven by incentivized actions and a healthy competitive market develops, more efficient mechanisms like gradual dutch auctions can be used.

Part of the problem with the Maker system is that the actions designed for incentivized keepers were made opaque and not presented to the market in a way that incentivized competition. This was part of the problem on “black thursday”, when some collateral was sold for 0 dai.

feed

Feed is the subsystem responsible for providing price feeds. Feedbase is a generic object that serves as a point of coordination that makes it easier to compose various receivers, adapters, and combinators.

rule