Skip to content

Latest commit

 

History

History
157 lines (101 loc) · 7.17 KB

bsip-0077.md

File metadata and controls

157 lines (101 loc) · 7.17 KB
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

Abstract

This BSIP proposes a protocol change which aims to improve overall collaretal ratio (CR) of smartcoins.

Motivation

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.

Rationale

Requiring a higher CR for new debt positions would introduce a buffer thus would increase the stability of the smartcoin.

Specification

Note: "Implementation Hints" are not to be considered part of the formal specification, but merely as a possible implementation.

Parameter

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;
    }
};

Effect of a Parameter

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.

Permission to Change the Parameters

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.

Changing the Parameter

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.

Discussion

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.

Risks

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.

Summary for Shareholders

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.

References

Copyright

This document is placed in the public domain.