-
Notifications
You must be signed in to change notification settings - Fork 86
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
BSIP#26: Refund Order Creation Fee in Originally Paid Asset on Cancel #33
Comments
We may need to also add the proposal that adds a new operation to get the funds out of the fee pool. Otherwise issuers that don't want to use the fee pool are forced to use it until it is empty. |
I agree. It's described in the "discussion" section. If we feel it's a must we can add it to this bsip or create another bsip. //Update: maybe better to rename "discussion" section of this bsip to "related issues" or something? I wanted to put those info somewhere in the bsip but didn't find a good place in the template. |
Good job. |
For the For the |
Added to master branch, closing here. |
Abstract
When a user placing an new order, fee can be paid with another asset but not only BTS. Currently, when the order is cancelled and if not partially filled already, an amount of BTS will be refunded to the user. This BSIP proposes refunding in the originally paid assets but not always BTS.
Motivation
Make the asset system easier to use and less vulnerable.
Rational
With the asset fee pool feature, asset holders don't need to hold BTS to pay transaction fees. However, after the "Refund Create Order Fees on Cancel" feature introduced in Graphene issue #445 as well as BSIP #2, due to the (inappropriate) design / implementation, fee pools often get drained by 3rd-party bots unexpectedly, which renders the fee pool feature hard to use / less useful. This BSIP proposes a protocol change to prevent fee pool draining from happening, while still keeping a similar "Refund Create Order Fees on Cancel" feature in the system. It brings following benefits:
Specifications
Current Design and Implementation
Always refund fee in the form of CORE asset (BTS), even if fee was paid with another asset.
accumulated_fees
field right away, in the same time some BTS will be deducted from the fee pool according to the asset's CER then be put into thedeferred_fee
field of the new createdlimit_order_object
.deferred_fee
field will be directed to referral program.deferred_fee
field will be sent to the owner's balance.deferred_fee
but capped by the remaining amount, then the cancellation fee (if any) will be redirected to referral program, the yet remaining amount (if any) indeferred_fee
will be sent to the order owner's balance.Proposed Changes
Always refund fee in the form of paid asset.
deferred_paid_fee
field (a new field) but not add it to the asset'saccumulated_fees
field right away, in the same time deduct some BTS from the fee pool according to the asset's CER and put it into thedeferred_fee
field of the new createdlimit_order_object
. Say, the order owes the system some fees in BTS and owe the asset issuer some fees in that asset.deferred_fee
field to referral program, at the same time send the assets indeferred_paid_fee
field to the asset'saccumulated_fees
field.deferred_fee
field to the asset's fee pool, and send the assets indeferred_paid_fee
field to the owner's balance.deferred_fee
but capped by the remaining amount, then redirect the cancellation fee (if any) to referral program; if the cancellation fee is positive, deduct an amount equals toround_up(cancellation_fee_in_bts * deferred_paid_fee / deferred_fee_before_deduct)
of assets fromdeferred_paid_fee
but capped by the remaining amount then send it to the asset'saccumulated_fees
field; then send the yet remaining amount (if any) indeferred_fee
to the fee pool, send the yet remaining amount (if any) indeferred_paid_fee
to the order owner's balance.Discussion
When creating an asset, with current design, the issuer is forced to put half of creation fee into the new asset's fee pool. But not all people like this feature. It's better if the fee pool filling is optional when creating a new asset.
Asset issuers may want a dedicated operation to get out some BTS from the fee pool, for example when accidentally filled too much BTS into the pool. This is discussed in bitshares-core issue #188. If this BSIP is implemented, asset issuers will be no longer able to get out the BTS from the fee pool by cancelling an order.
Summary for Shareholders
Copyright
This document is placed in the public domain.
See Also
The text was updated successfully, but these errors were encountered: