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 receives if another Vault commits theft. The fee is paid in collateral taken from the liquidated Vault.
Paid in collateral
Initial value: 5%
TheftFeeMax
Upper bound to the reward that can be payed to a reporter on success. This is expressed in Bitcoin to ensure consistency between assets.
Initial value: 0.1 BTC
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(accountId, vaultId)
Parameters
accountId
: the account withdrawinginterBTC
rewards.vaultId
: the vault that generatedinterBTC
rewards.
Events
Preconditions
The function call MUST be signed by
accountId
.The BTC Parachain status in the Security component MUST NOT be
SHUTDOWN:2
.The
accountId
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.
Events
WithdrawRewards
Event Signature
WithdrawRewards(account, amount)
Parameters
account
: the account withdrawing rewardsamount
: the amount of rewards withdrawn
Functions