-
Notifications
You must be signed in to change notification settings - Fork 86
Update PR 115 (BSIP48) modify_max_supply #216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: bsips-issuer-asset-disable-modify-max-supply
Are you sure you want to change the base?
Changes from 4 commits
6a51733
03d5a93
b93d081
0d8e38d
0c8b60b
79e4f19
b136220
2a82116
a6feb61
0fdb3b0
858b7ee
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10,45 +10,61 @@ | |
|
|
||
| # Abstract | ||
|
|
||
| The possibility of creating assets on the BitShares Blockchain is a core feature | ||
| of our platform. In the case of an ico, the ico-holders can create an asset with | ||
| a fixed maximum supply. However this maximum supply can be changed by the | ||
| asset creator (issuer) anytime. This exposes participators ico to the risk, | ||
| of loosing value of their bought asset. | ||
| The possibility of creating assets on the BitShares Blockchain is a core feature of our platform. However some things are too maleable when they should not be. Other things are inflexible when they should be. | ||
|
|
||
| With this BSIP a flag will be introduced which forbids the modification of the maximum | ||
| supply of an issuer created asset. | ||
| In the case of an ICO, the ICO holders can create an asset with a maximum supply. However this maximum supply can be changed by the asset creator (issuer) anytime. This exposes participants in the ICO to the risk of losing value of their purchased asset. | ||
|
|
||
| With this BSIP a flag will be introduced which forbids the modification of the maximum supply of an issuer created asset. | ||
|
|
||
| In addition, another new flag will be introduced that prevents any more tokens from being issued in the future. | ||
|
|
||
| And finally, the ability to change the precision of an asset will now be available as long as current supply is zero. | ||
|
|
||
| # Motivation | ||
|
|
||
| The implementation of a flag, to disable the modification of the maximum supply for | ||
| issuer created asset, has effects for both sides. On the one side the security for the | ||
| participators or non-issuer users increases, because the value of their assets (tokens) | ||
| can't be manipulated by exposing the market to more created tokens. And on the other side | ||
| it is good marketing for the ico-hoders, because they can advertise with their fixed | ||
| maximum supply. | ||
| A flag to disable the modification of the maximum supply for issuer created asset will be implemented. This has benefits for both the participants and the ICO holder. Participants in the ICO are assured the value of their assets (tokens) will not be diluted by issuers creating more tokens. ICO holders are able to market the fact that the maximum supply is fixed. | ||
pmconrad marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| A flag to disable issuing allows token holders to be assured that the current supply will remain fixed, even if there are unissued tokens. | ||
|
|
||
| The ability to change the precision of a created asset adds flexibility in the asset creation process. | ||
|
|
||
| # Rational | ||
|
|
||
| The `disable_modify_max_supply` is a new created flag in the `asset_issuer_permissions`. | ||
| The flag can be activated to forbid the modification of the `max_supply` (`asset_object.options`). | ||
| Once the flag is activated, it can't be deactivated. | ||
| The `disable_modify_max_supply` is a newly created flag in the `asset_issuer_permissions`. The flag can be activated to forbid the modification of the `max_supply` (`asset_object.options`). Once the flag is set to `true`, it can only be set to `false` if `current_supply` is zero. | ||
|
||
|
|
||
| The `disable_issue` is a newly created flag in the `asset_issuer_permissions`. The flag can be activated to forbid issuance of additional tokens. Once the flag is set to `true`, it can not be changed. | ||
|
|
||
| Changing the precision of an asset should be easily accomplished with an `asset_update_operation`. This causes no harm while the asset is not issued. | ||
|
|
||
| # Specifications | ||
|
|
||
| This BSIP comes with a change to the protocol, which requires a propotocol upgrade. | ||
| However the changes to the code are minor. | ||
| This BSIP comes with changes to the protocol, hence requires a propotocol upgrade. However the changes to the code are minor. | ||
|
|
||
| For `disable_modify_max_supply`: | ||
|
|
||
| 1. Add the `disable_modify_max_supply` flag to the issuer permissions | ||
| 2. Add a `can_modify_max_supply()` the `asset_object` | ||
| 3. Change the `asset_update_evaluator::evaluate` method to assert false for | ||
| 1. the deactivation of the `disable_modify_max_supply` flag | ||
| 2. the modification of the `max_supply` when the `disable_modify_max_supply` is set | ||
| 2. Set `disable_modify_max_supply` to false for existing assets at hardfork time | ||
| 3. Add a `can_modify_max_supply()` to the `asset_object` | ||
| 4. Change the `asset_update_evaluator::do_evaluate` method to assert false for | ||
| 1. the setting of the `disable_modify_max_supply` flag to `false` if `current_supply` is not zero or | ||
| 2. the modification of the `max_supply` when the `disable_modify_max_supply` is `true` | ||
|
|
||
| For `disable_issue`: | ||
|
|
||
| 1. Add the `disable_issue` flag to the issuer permissions | ||
| 2. Set the `disable_issue` flag to `false` for existing assets at hardfork time | ||
| 3. Add a `can_issue()` to the `asset_object` | ||
| 4. Change the `asset_update_evaluator::do_evaluate` method to assert false for the setting of the `disable_issue` flag to `false` if it is currently `true` | ||
| 5. Change the `asset_issue_evaluator::do_evaluate` method to assert false if `can_modify_max_supply()` returns false | ||
jmjatlanta marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| To change the precision: | ||
|
|
||
| 1. Add the `fc::optional<uint8_t> new_precision` to the `asset_update_operation` struct. | ||
jmjatlanta marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 2. Change the `asset_update_evaluator::do_evaluate` method to assert false if `new_precision` exists and is not equal to `asset_object.precision` and `current_supply` is not zero. | ||
|
|
||
jmjatlanta marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| # Summary for Shareholders | ||
|
|
||
| This BSIP proposes a way to improve the user security in the context of issuer created | ||
| assets. | ||
| This BSIP proposes a way to improve the financial security of users against the dilution of issuer created assets. It also provides a mechanism for asset creators to modify the precision of their asset. | ||
jmjatlanta marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| # Copyright | ||
|
|
||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.