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.
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:
vat
is the main CDP accounting module
vox
is the par price adjustment mechanism
vow
is the liquidation and profit/loss mechanism
And three auxiliary systems, defined by interface:
feed
subsystem puts price feeds from oracle systems, AMMs, and other source, into one common base protocol
flow
subsystem implements the liquidation and profit/loss auctions
rule
subsystem is responsible for adding new CDP types and managing their parameters
Finally, there are two tokens:
RISK is the system’s risk-share. It represents the present value of future interest from all RICO loans, minus bad debt bailouts. All profits and losses are immediately realized via RISK buy/burn or mint/sell.
The model for ROI on RISK is buy/burn, offset by mint/sell when bad debt must be covered. Buy/burn is like a share buyback, and leads to the same present value as a dividend model. To see how they are equivalent, consider a strategy that sells a fraction of its risk share equal to the fraction of global risk share burned. The seller’s cashflow from these sales are analagous to receiving a dividend for their fraction of the risk share, on a recurring basis.
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
is the main CDP accounting module. It holds collateral tokens and mints/burns rico.
frob
a CDP to adjust collateral balance and debt
flash
to flash mint rico and/or flash borrow collateral
safe
to determine if a CDP is safe, risky, or unknown
vow
module can
grab
unsafe CDPs to liquidate them
drip
accumulated interest to buy-and-burn RISK
heal
bad debt with its ability to mint-and-sell RISK
vox
module can
prod
the par price
rule
module can add new CDP types and set their risk parameters.
feed
subsystem to determine if a CDP is safe.
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:
feed
and gem
contracts, with known control flow.
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.
flop
) auction.
flip
auction).
flip
auction for a CDP that was not underwater results in surplus rico, which can be immediately released via drip
for a flap
auction.
In this model, flop
auctions are not treated as rare, exceptional events.
Instead, buy/burn and mint/sell are two continuous processes, whose net flow determines the moment-to-moment NPV of RISK.
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
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.
flip
auctions are liquidations, they sell collateral for rico, possibly granting a refund.
flap
auctions are the buy/burn auctions which buy RISK with rico interest collected in real time via drip
.
flop
auctions are the mint/sell auctions which mint RISK to buy back rico to cover debt.
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
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.
BasicReceiver
. Another could be ThresholdReceiver
, which verifies a threshold signature.
…