Fee¶
Overview¶
The fee model crate implements the fee model outlined in Fee Model.
Step-by-step¶
Fees are paid by Users (e.g., during issue and redeem requests) and forwarded to a reward pool.
Fees are then split between incentivised network participants (i.e. Vaults).
Network participants can claim these rewards from the pool based on their stake.
Stake is determined by their participation in the network - through incentivized actions.
Rewards are paid in
interBTC
.
Data Model¶
Scalars (Fees)¶
IssueFee¶
Issue fee share (configurable parameter, as percentage) that users need to pay upon issuing interBTC
.
Paid in
interBTC
Initial value: 0.5%
IssueGriefingCollateral¶
Issue griefing collateral as a percentage of the locked collateral of a Vault a user has to lock to issue interBTC
.
Paid in collateral
Initial value: 0.005%
RefundFee¶
Refund fee (configurable parameter, as percentage) that users need to pay to refund overpaid interBTC
.
Paid in
interBTC
Initial value: 0.5%
RedeemFee¶
Redeem fee share (configurable parameter, as percentage) that users need to pay upon request redeeming interBTC
.
Paid in
interBTC
Initial value: 0.5%
PunishmentFee¶
Fee (as percentage) that a Vault has to pay if it fails to execute redeem requests (for redeem, on top of the slashed value of the request).
The fee is paid in collateral based on the interBTC
amount at the current exchange rate.
Paid in collateral
Initial value: 10%
TheftFee¶
Fee (as percentage) that a reporter (Vault or Relayer) receives if another Vault commits theft.
The fee is paid in collateral based on the interBTC
amount at the current exchange rate.
Paid in collateral
Initial value: 5%
ReplaceGriefingCollateral¶
Default griefing collateral as a percentage of the to-be-locked collateral of the new Vault, Vault has to lock to be replaced by another Vault. This collateral will be slashed and allocated to the replacing Vault if the to-be-replaced Vault does not transfer BTC on time.
Paid in collateral
Initial value: 0.005%
Functions¶
distributeRewards¶
Distributes fees among incentivised network participants.
Specification¶
Function Signature
distributeRewards(amount)
Preconditions
There MUST be at least one registered Vault OR a treasury account.
Postconditions
If there are no registered funds, rewards MUST be sent to the treasury account.
Otherwise, rewards MUST be distributed according to distributeReward.
withdrawRewards¶
A function that allows incentivised network participants to withdraw all earned rewards.
Specification¶
Function Signature
withdrawRewards(account)
Parameters
account
: the account withdrawinginterBTC
rewards.
Events
Preconditions
The
account
MUST have available rewards forinterBTC
.
Postconditions
The account’s balance MUST increase by the available rewards.
The account’s withdrawable rewards MUST decrease by the withdrawn rewards.