bsips/bsip-0018.md

228 lines
10 KiB
Markdown
Raw Normal View History

2017-06-06 07:21:18 +00:00
BSIP: 00018
Title: Revive BitAsset through buying Settlement Pool
Authors: Fabian Schuh
Status: Draft
Type: Protocol
Created: 2017-06-05
2017-06-06 07:24:39 +00:00
Discussion: https://bitsharestalk.org/index.php/topic,24322.0.html
2017-06-06 07:21:18 +00:00
Worker: FIXME
# Abstract
BitAssets, i. e. market-pegged assets (MPA) like bitUSD in BitShares can suffer
a "global settlement" event. After global settlement, the asset is
effectively rendered useless. This BSIP proposes a protocol change to
enable resolving a global settlement so that affected assets can be
continued and put to good use again.
2017-06-06 07:21:18 +00:00
# Motivation
2017-06-07 11:02:22 +00:00
The necessity of reviving bitassets has already been discussed in
BSIP-0017, and is unquestioned.
2017-06-06 07:21:18 +00:00
Market-pegged assets, aka SmartCoins are among the core features of the
BitShares blockchain and as such provide one of our unique selling points.
MPAs can suffer a "global settlement" event. A global settlement occurs
when the least collateralized short position has insufficient collateral
to buy back the borrowed SmartCoins at the current feed price. What
happens then is that the MPA is tagged with a "settlement price",
defined as the collateral ratio of the least collateralized short. All
short positions are closed automatically, by collecting sufficient
collateral into a settlement pool and paying out the remainder to the
short's owners. MPA holders can use the forced settlement operation to
receive their share from the settlement pool in exchange for their MPAs.
Even after global settlement, market-pegged assets can still be
2017-06-06 07:21:18 +00:00
transferred or traded, but they can no longer be borrowed.
Currently, in BitShares, there is no actual way to resolve the global
settlement, but eventually, all significant holders will have to settle
their positions to obtain BTS for their long position. Some dust will
remain scattered all over the place, where the value of the dust
position is lower than the fees required to get rid of it.
2017-06-06 07:21:18 +00:00
2017-06-06 14:57:48 +00:00
# Rationale
2017-06-06 07:21:18 +00:00
When a market-pegged assets undergoes a global settlement, one of the crucial
2017-06-06 07:21:18 +00:00
mechanisms that support the peg (namely "margin calls") is no longer available.
However, other mechanisms, such as the "face-value", trading and settlement
still exist and, unless the valuation of BTS decreases significantly, the
outstanding debt (the BitAsset long positions) are still collateralized by
approximately 100% through the settlement pool at the fixed settlement price.
2017-06-06 07:21:18 +00:00
This means, if a global settlement event happened on USD at a price of 1
bitUSD/BTS, then an outstanding debt of 1000 bitUSD would be backed by
1000 BTS in the settlement pool of the bitUSD asset and no other call
positions would be open by anyone else. Every bitUSD long position
could, in this case, claim BTS from the settlement pool at a rate of
1:1.
2017-06-06 07:21:18 +00:00
# Proposal
All that is needed for the asset to be *revived* is:
* empty the settlement pool
* re-enable price feeds
Since after a global settlement, the collateral for the outstanding long
positions are stored in the settlement pool, we here propose to **obtain
2017-06-06 14:57:48 +00:00
the funds in the settlement pool and its outstanding debt from the
network**. Since the collateral ratio of the settlement pool after a
global settlement is 100%, obtaining the settlement funds in order to
convert it into an open call position **requires to also provide
additional collateral or reduce the debt** in order to not cause another
global settlement or margin call right away.
2017-06-06 07:21:18 +00:00
# Specifications
2017-06-07 11:02:22 +00:00
## Bugfix: MPAs that have seen a global settlement cannot be settled after the price feed expires
It has turned out that force-settling an MPA requires a valid price feed
even when the MPA has a `settlement_price` set. This is clearly a bug,
since in that case the settlement price is independent from the price
feed. Furthermore, publishing price feeds is no longer possible after a
global settlement, so the time when settlement is possible at all is
limited to the expiration period of the price feed of the MPA.
This bug will be fixed. See
https://github.com/cryptonomex/graphene/issues/664#issuecomment-254056746
for a discussion.
## Auto-revive empty bitassets
A bitasset is "empty" if nobody is holding a positive amount of it
anymore. The only reasonable exception to this rule is the pool of
accumulated fees belonging to the asset itself. This situation can occur
after all holders of a globally settled asset have settled their
position via forced settlement.
The emptiness of a bitasset can easily be determined. When the BitAsset is
empty, the remainder of the settlement fund will be paid out to the
issuer, the accumulated fees and the current supply are reset to zero,
and the settlement price is cleared.
## `bid_settlement_funds_operation`
This applies only to SmartCoins, not to Prediction Markets.
The idea of turning the settlement fund into a short position when its
value has increased sufficiently can easily be extended. If the value of
the settlement fund itself is not sufficient to create a sufficiently
collateralized short position (in terms of price feed and MCR), an
investor could volunteer to add the required amount of collateral to the
fund and take ownership of the resulting short position
(collateral+debt).
2017-06-06 07:21:18 +00:00
This operation is all that is needed empty the settlement pool and re-enable price feeds.
It has the following payload:
* `fee` (asset_type): The operation requires a fee to be paid
* `symbol` (asset_id_typ): Symbol that has a settlement fund to be claimed.
* `account` (account_type): This account obtains the collateral **as well** as
the debt (i.e. call position) and has to either pay additional collateral,
provide shares of the BitAsset to reduce the outstanding debt, or a combination
of both.
* `additional_collateral` (asset_type): Collateral paid by the account in
order to support the call position
* `obtain_settlement_funds` (asset_type): The amount of settlement funds the
account is willing to obtain
The operation works as follows:
1. It pays a fee
2. It reduces the account's balance by `debt`.
The debt is used to reduce the outstanding shares of the globally settled BitAsset.
3. It reduces the account's balance by `collateral`.
The collateral is used to initially support the accounts' call position.
However, technically, only little additional collateral is required (if the
valuation of the collateral hasn't change since the global
settlement) if the owner accepts a margin call.
2017-06-06 07:21:18 +00:00
4. The global settlement flag is removed from the asset.
5. The asset is re-enabled such that price feeds can be produced again.
6. After sufficient price feeds, the asset can be borrowed again.
The required checks for the operation are:
* Has the asset globally settled?
* Are funds in the settlement pool?
* `debt` > 0 or `collateral` > 0
* `obtain_settlement_funds` <= `settlement_pool`
2017-06-07 11:02:22 +00:00
* the account has sufficient balance to cover `additional_collateral`
If the checks are successful, a `call_order_object` belonging to the
investor will be created or updated as described above. Then, the
settlement price and `settlement_fund` will be cleared.
The fee for this operation will be paid by the investor/recoverer. The
fee is equal to the fee of the `call_order_update` operation.
2017-06-06 07:21:18 +00:00
# Discussion
## Sufficient Collateral
Given that at the time of claiming the settlement funds, the blockchain
cannot know the valuation of the collateral, the user needs to ensure
that sufficient collateral is provided to support the call position
**after** the price feeds are refreshed. Otherwise, the asset will
either experience another global settlement event right away, or the
call position will be margin called. In any way, it is up to the user
of the above operation to take that risk.
2017-06-06 07:21:18 +00:00
## Partially Obtaining Settlement Funds
In the case a widely used BitAsset is globally settled, the costs of providing
the collateral can be shared among multiple participants by means of only
obtaining a fraction of the settlement pool.
## BitAssets using BitAssets as collateral are unaffected
One huge advantage of this approach is BitAssets that are collateralized
by other BitAssets are not directly affected by this proposal. Even
though the *economical debt* of such asset may be argued about if the
collateral asset experienced a global settlement, the *technical debt*
is unaffected. Converting the settlement pool into a regular call
position through this proposal would not only restore the original
BitAsset, but also reset the collateral of the derived BitAsset.
2017-06-06 07:21:18 +00:00
## Committee funded BitAsset Recovery
## Cost vs. Profit
This operation opens an interesting cost vs. profit trade-off for those willing
to take the risk of using this operation that we would like to discuss. Keep in
mind that
* the valuation of the collateral may be volatile (e.g. in case of BTS)
* after global settlement, the long positions can settle and thus
reduce the debt as well as the settlement pool
2017-06-06 07:21:18 +00:00
Market participants that are willing to take risk may want to obtain a larger
chunk of a settlement pool as it means an **instant short position**.
2017-06-07 11:02:22 +00:00
## Feeds
Re-collateralization is deliberately not restricted to the issuer of the
globally settled bitasset. The intent here is to incentivize potential
investors. Effectively, during an uptrend in the value of the
collateral, this works like a reverse auction. A higher value of the
collateral results in a lower required amount for re-collateralization,
i. e. the chance/risk ratio increases. This incentive makes sense,
because additional collateral is in the best interest of the holders of
the settled BitAsset.
This "reverse auction" ends when the BitAsset is auto-revived by
creating a short position for the issuer. At that point, an "investor"
could re-collateralize with zero risk, which is no longer in the
interest of the holders.
2017-06-06 07:21:18 +00:00
# Summary for Shareholders
This proposal presents a flexible way of reviving a BitAsset that has
experienced a global settlement event. The blockchain or shareholders do
not need to take any risk as the proposal only offers a new way for
market participants to (partially) revive the BitAsset.
2017-06-06 07:21:18 +00:00
# Copyright
2017-06-07 11:02:22 +00:00
2017-06-06 07:21:18 +00:00
This document is placed in the public domain.