BSIP: 0077
Title: Require Higher CR When Creating / Adjusting Debt Positions
Authors: Abit More
@shulthz
Michel Santos
Status: Installed
Type: Protocol
Created: 2019-09-30
This BSIP proposes a protocol change which aims to improve overall collaretal ratio (CR) of smartcoins.
Risk-loving traders tend to borrow as much debt as possible with as little collateral as possible, which impacts overall CR of that smartcoin. Smartcoin owners would like to have a tool to counter this behavior.
Requiring a higher CR for new debt positions would introduce a buffer thus would increase the stability of the smartcoin.
Note: "Implementation Hints" are not to be considered part of the formal specification, but merely as a possible implementation.
Add one "Initial Collateral Ratio" (ICR) parameter to each smartcoin asset, which can be updated by the asset owner.
Add one "Initial Collateral Ratio" (ICR) parameter to each smartcoin's price feed, which can be updated by the asset's feed publishers.
Implementation Hint: The optional field that can be set by the asset owner could be placed in bitasset_options
.
struct bitasset_options
{
struct ext {
//...
/// The ICR parameter which the asset owner/"issuer" has permission to update
optional<uint16_t> initial_collateral_ratio;
}
};
Implementation Hint: The optional field that can be set by the feed publishers of an asset could be placed in asset_publish_feed_operation
.
struct asset_publish_feed_operation
{
struct ext {
//...
/// The ICR parameters which the feed publisher has permission to update
optional<uint16_t> initial_collateral_ratio;
}
};
The inital collateral ratio (ICR) shall equal the asset owner's ICR parameter if it is explicitly set. Otherwise it shall equal the median value of the feed publisher's ICR parameter. Any individual feed publisher's ICR shall default to the maintenance collateral ratio (MCR) if the feed publisher's ICR is not explicitly set.
When adjusting a position, the logic of BSIP30 shall be amended such that the current CR shall be compared to the ICR instead of the maintenance collateral ratio (MCR). The effects of this BSIP's amendment on the relevant smart contracts can be summarized in a comparison of the desired behaviors before versus after the protocol upgrade.
Before the protocol upgrade:
When creating a new debt position
Require CR > MCR
When adjusting a debt position
If new CR <= MCR
Require CR increased and debt not increased
When current CR <= MCR
Trigger margin call
After the protocol upgrade:
Require ICR >= MCR
When creating a new debt position
Require CR > ICR
When adjusting a debt position
If new CR <= ICR
Require CR increased and debt not increased
When current CR <= MCR
Trigger margin call
Note: The logic around target collateral ratio (TCR) is not affected.
At the time that this BSIP activates, the new Initial Collateral Ratio parameter will not be set and shall therefore default to the current MCR value. Similarly, whenever the Initial Collateral Ratio is unset by an asset owner, the ICR value shall default to the current MCR value.
An asset owner shall be able to set and unset a parameter at will unless the permission to change that parameter has been forfeited as described in Permission to Change the Parameter.
The permission to change the asset owner's parameter shall make use of a new permission. Disabling the permission prohibits the changing of the parameter as described in Changing the Parameter.
The existing set of asset owner permissions shall be expanded to permit an asset owner to forfeit the permission to change the new parameter. The asset owner shall not be permitted to regain a permission after it is forfeited unless the supply of the asset is zero.
Existing software clients might not be updated to make use of the new parameter. Changing the permissions shall be designed such that older software clients may not accidentally forfeit the permission either for existing assets or new assets. The parameter and the permission to change parameter shall be designed such that they are defaulted to enabled. The permission shall be designed such that explicit disabling/forfeiting is required which should not be possible with older software clients.
Implementation Hints
The asset_object.asset_options.issuer_permissions
could be expanded to include disable_icr_update
.
Appropriate changes to the ASSET_ISSUER_PERMISSION_MASK and UIA_ASSET_ISSUER_PERMISSION_MASK are advised to be both backward and forward compatible.
It shall be possible to set and unset the asset owner's parameter at any time if and only if its respective permission is enabled.
Implementation Hints
The create_asset_operation
could be modified to include the setting of the parameters above.
The update_asset_operation
could be modified to disable/forfeit the permissions to change, and to enable/regain the permissions if the supply is zero.
The asset_update_bitasset_operation
could be modified to permit updating of the ICR value, if the asset has the appropriate permissions.
Any client software that intends to allow owners of smart assets to create or to change the new parameters will need to be updated. Older client software may continue to be used but will not be able to view, change, or set the new parameter.
Older client software may unexpectedly unset a parameter (although not a flag nor a permission) that is already set due to incompatibility. When a new parameter is sucessfully set or updated, the asset owner demonstrates awareness of the new feature by using client software that is compatible with the new feature. The asset owner should be aware of the risks of using incompatible older client software and should avoid using it when possible.
If an asset owner sets a parameter and later forfeits the permission to change the parameter, that parameter will be locked forever.
If an asset owner has set a parameter with compatible (new) client software, but uses incompatible (old) client software afterwards, the parameter may be unset unexpectedly by the incompatible client software.
This BSIP introduces a new tool for smartcoin asset owners to fine tune their assets. Having an ICR greater than MCR would probably result in less risk-loving traders borrowing that smartcoin, thus may lead to fewer market activities and worse liquidity. It is up to the asset owners to decide whether to use this tool.
This document is placed in the public domain.