What Is Kolibri USD (KUSD)?
Kolibri USD is an Tezos based stablecoin built on Collateralized Debt Positions (CDPs) known as Ovens. Kolibri uses CDPs (referred to as an Oven) to collateralize a soft pegged USD-stable value asset, kUSD.
|Coin Name||Kolibri USD|
|Source Code||Click Here To View Source Code|
|Explorers||Click Here To View Explorers|
|Twitter Page||Click Here To Visit Twitter Group|
|Whitepaper||Click Here To View|
|Official Project Website||Click Here To Visit Project Website|
A stability fee is applied to borrowed kUSD. It is accrued in terms of kUSD. It is percentage based fee applied to all outstanding kUSD (borrowed kUSD + stability fee). Interest is assessed every minute (about every block on the Tezos chain). The stability fee is adjusted via governance to increase or decrease the incentives to borrow or repay kUSD if the asset loses a peg. Negative stability fees are not supported in Kolibri but may be added in the future via a contract upgrade.
In order to remain solvent, an Oven must maintain a minimum collateralization ratio. The collateralization ratio is computed as.
If a Oven drops below the collateralization ratio, then it is said to be under collateralized. Oven owners should take care to keep their position above the collateralization ratio, by either locking more XTZ or repaying kUSD when the collateralization ratio drops.
The Kolibri system will prevent users from borrowing kUSD such that an Oven becomes under collateralized, or withdrawing XTZ to cause the Oven to become undercollateralized. However, the price of XTZ still fluctuates, which means an Oven can become undercollateralized without user action. At that point, a liquidation process kicks in to restore stability to the system.
Compound Interest Calculations
Kolibri USD maintains a constant, called stabilityFee which calculates interest. The stability fee is a fixed interest amount, calculated on a 60 second basis. GUIs should choose to display this interest amount as an APY.
Rather than calculate compound interest, Kolibri uses a linear approximation to calculate interest. That is to say that if two time periods have elapsed then the interest calculation will be.
Kolibri compounds interest within every call to the system. Given high enough usage, the system will be called at least every 60 seconds, which means interest will compound as expected. In periods of low usage, the interest will be linearly approximated, which is believed to be negligible in a system which represents numbers as small as.
Kolibri smart contracts deployed (as with all software) run the risk of software bugs, some of which can compromise the overall security of a system. When systems have administrative controls there is also the risk of malicious actors abusing those controls for nefarious purposes.
Kolibri is no different, and has a number of risks associated with it. We’ve tried to keep things as simple as possible, had a security review done by a reputable company, and written extensive tests (unit + integration) to gain confidence that Kolibri operates as we expect it to, but with security there is no guarantee that it’s 100% safe to use.
Below they outline some of the risks that exist in the system. It’s an ever-growing document and likely not 100% inclusive of every risk within the system. If you think something is missing please ping on twitter or come join discord!
The Token contract is an FA1.2 Token Contract.
Kolibri USD FA1.2 token standard is available in the Tezos Improvement Proposal Repository.
The token contract was copied verbatim from SmartPy’s implementation on 11/02/2020 with some minor changes noted below
Upgrade Path Any contract which interacts with the Token contract should have a governable reference. When a new Token contract is deployed, then the references should be updated. Additionally, if the admin needs to be changed, then the Governor should call setAdmin on the Token contract.
Until the stability fund grows in size, there’s a scenario where the economic model breaks if a black swan event were to occur within the Tezos ecosystem and the price crashes significantly. They have a very conservative 200% collateralization ratio per oven, and use a VWAP price feed to hedge against these risks but if the underlying collateral that backs the outstanding kUSD were to suddenly (and continue to be) worth significantly less, it’d remove the economic incentive to liquidate ovens and destroy any ability to stay at peg. In this black swan event we’d need to use the stability fund as a liquidator of last resort, but that will only be successful if they have enough funds to liquidate enough ovens to restore stability.
Risks In The Tooling
Kolibri USD was built and compiled to Michelson (the native smart contracting language of Tezos) using SmartPy. SmartPy is currently open source (though not with the most recent versions hosted on GitHub/gitlab), but is pretty constantly changing and has not (as of writing this) undergone a formal security audit.
We’ve written extensive tests, but they all depend on SmartPy operating correctly, and if it’s doing something like optimizing out security checks or creating invalid Michelson, it’s possible that those issues could impact the security of the system as a whole.
Writing compliers is difficult to do and one of the assumptions we’ve had to make about this system is that SmartPy is operating correctly and would also inform of any major breakage they discover. We’re also in contact with them to hopefully help hedge against this risk, but this is largely an unpredictable factor.