Struct vault_registry::pallet::Pallet
source · pub struct Pallet<T>(_);
Expand description
The Pallet
struct, the main type that implements traits and standalone
functions within the pallet.
Implementations§
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn register_vault(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>,
collateral: <T as Config>::Balance
) -> DispatchResultWithPostInfo
pub fn register_vault( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, collateral: <T as Config>::Balance ) -> DispatchResultWithPostInfo
Initiates the registration procedure for a new Vault. The Vault locks up collateral, which is to be used in the issuing process.
Errors
InsufficientVaultCollateralAmount
- if the collateral is below the minimum thresholdVaultAlreadyRegistered
- if a vault is already registered for the origin accountInsufficientCollateralAvailable
- if the vault does not own enough collateral
sourcepub fn register_public_key(
origin: OriginFor<T>,
public_key: BtcPublicKey
) -> DispatchResultWithPostInfo
pub fn register_public_key( origin: OriginFor<T>, public_key: BtcPublicKey ) -> DispatchResultWithPostInfo
Registers a new Bitcoin address for the vault.
Arguments
public_key
- the BTC public key of the vault to update
sourcepub fn accept_new_issues(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>,
accept_new_issues: bool
) -> DispatchResultWithPostInfo
pub fn accept_new_issues( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, accept_new_issues: bool ) -> DispatchResultWithPostInfo
Configures whether or not the vault accepts new issues.
Arguments
origin
- sender of the transaction (i.e. the vault)accept_new_issues
- true indicates that the vault accepts new issues
Weight: O(1)
sourcepub fn set_custom_secure_threshold(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>,
custom_threshold: Option<UnsignedFixedPoint<T>>
) -> DispatchResultWithPostInfo
pub fn set_custom_secure_threshold( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, custom_threshold: Option<UnsignedFixedPoint<T>> ) -> DispatchResultWithPostInfo
Configures a custom, higher secure collateral threshold for the vault.
Arguments
origin
- sender of the transaction (i.e. the vault)custom_threshold
- either the threshold, or None to use the systemwide default
Weight: O(1)
pub fn report_undercollateralized_vault( _origin: OriginFor<T>, vault_id: DefaultVaultId<T> ) -> DispatchResultWithPostInfo
sourcepub fn set_minimum_collateral(
origin: OriginFor<T>,
currency_id: CurrencyId<T>,
minimum: <T as Config>::Balance
) -> DispatchResult
pub fn set_minimum_collateral( origin: OriginFor<T>, currency_id: CurrencyId<T>, minimum: <T as Config>::Balance ) -> DispatchResult
Changes the minimum amount of collateral required for registration (only executable by the Root account)
Arguments
currency_id
- the collateral’s currency idminimum
- the new minimum collateral
sourcepub fn set_system_collateral_ceiling(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>,
ceiling: <T as Config>::Balance
) -> DispatchResult
pub fn set_system_collateral_ceiling( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, ceiling: <T as Config>::Balance ) -> DispatchResult
Changes the collateral ceiling for a currency (only executable by the Root account)
Arguments
currency_pair
- the currency pair to changeceiling
- the new collateral ceiling
sourcepub fn set_secure_collateral_threshold(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>,
threshold: UnsignedFixedPoint<T>
) -> DispatchResult
pub fn set_secure_collateral_threshold( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, threshold: UnsignedFixedPoint<T> ) -> DispatchResult
Changes the secure threshold for a currency (only executable by the Root account)
Arguments
currency_pair
- the currency pair to changethreshold
- the new secure threshold
Changes the collateral premium redeem threshold for a currency (only executable by the Root account)
Arguments
currency_pair
- the currency pair to changeceiling
- the new collateral ceiling
sourcepub fn set_liquidation_collateral_threshold(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>,
threshold: UnsignedFixedPoint<T>
) -> DispatchResult
pub fn set_liquidation_collateral_threshold( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, threshold: UnsignedFixedPoint<T> ) -> DispatchResult
Changes the collateral liquidation threshold for a currency (only executable by the Root account)
Arguments
currency_pair
- the currency pair to changeceiling
- the new collateral ceiling
sourcepub fn recover_vault_id(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>
) -> DispatchResult
pub fn recover_vault_id( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T> ) -> DispatchResult
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn minimum_collateral_vault<KArg>(k: KArg) -> <T as Config>::Balancewhere
KArg: EncodeLike<CurrencyId<T>>,
pub fn minimum_collateral_vault<KArg>(k: KArg) -> <T as Config>::Balancewhere KArg: EncodeLike<CurrencyId<T>>,
“ The minimum collateral (e.g. DOT/KSM) a Vault needs to provide to register.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn punishment_delay() -> BlockNumberFor<T>
pub fn punishment_delay() -> BlockNumberFor<T>
“ If a Vault fails to execute a correct redeem or replace, it is temporarily banned“ “ from further issue, redeem or replace requests. This value configures the duration“ “ of this ban (in number of blocks) .“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn secure_collateral_threshold<KArg>(
k: KArg
) -> Option<UnsignedFixedPoint<T>>where
KArg: EncodeLike<DefaultVaultCurrencyPair<T>>,
pub fn secure_collateral_threshold<KArg>( k: KArg ) -> Option<UnsignedFixedPoint<T>>where KArg: EncodeLike<DefaultVaultCurrencyPair<T>>,
“ Determines the over-collateralization rate for collateral locked by Vaults, necessary for“ “ wrapped tokens. This threshold should be greater than the LiquidationCollateralThreshold.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
“ Determines the rate for the collateral rate of Vaults, at which users receive a premium,“ “ allocated from the Vault's collateral, when performing a redeem with this Vault. This“ “ threshold should be greater than the LiquidationCollateralThreshold.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn liquidation_collateral_threshold<KArg>(
k: KArg
) -> Option<UnsignedFixedPoint<T>>where
KArg: EncodeLike<DefaultVaultCurrencyPair<T>>,
pub fn liquidation_collateral_threshold<KArg>( k: KArg ) -> Option<UnsignedFixedPoint<T>>where KArg: EncodeLike<DefaultVaultCurrencyPair<T>>,
“ Determines the lower bound for the collateral rate in issued tokens. If a Vault’s“ “ collateral rate drops below this, automatic liquidation (forced Redeem) is triggered.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn liquidation_vault_account_id() -> T::AccountId
pub fn liquidation_vault_account_id() -> T::AccountId
Public functions
pub fn _register_vault( vault_id: DefaultVaultId<T>, collateral: <T as Config>::Balance ) -> DispatchResult
pub fn try_set_vault_custom_secure_threshold( vault_id: &DefaultVaultId<T>, new_threshold: Option<UnsignedFixedPoint<T>> ) -> DispatchResult
pub fn get_vault_secure_threshold( vault_id: &DefaultVaultId<T> ) -> Result<UnsignedFixedPoint<T>, DispatchError>
pub fn get_bitcoin_public_key( account_id: &T::AccountId ) -> Result<BtcPublicKey, DispatchError>
pub fn get_vault_from_id( vault_id: &DefaultVaultId<T> ) -> Result<DefaultVault<T>, DispatchError>
pub fn get_backing_collateral( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
pub fn get_liquidated_collateral( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
pub fn get_free_redeemable_tokens( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
sourcepub fn get_active_vault_from_id(
vault_id: &DefaultVaultId<T>
) -> Result<DefaultVault<T>, DispatchError>
pub fn get_active_vault_from_id( vault_id: &DefaultVaultId<T> ) -> Result<DefaultVault<T>, DispatchError>
Like get_vault_from_id, but additionally checks that the vault is active
sourcepub fn try_deposit_collateral(
vault_id: &DefaultVaultId<T>,
amount: &Amount<T>
) -> DispatchResult
pub fn try_deposit_collateral( vault_id: &DefaultVaultId<T>, amount: &Amount<T> ) -> DispatchResult
Deposit an amount
of collateral to be used for collateral tokens
Arguments
vault_id
- the id of the vaultamount
- the amount of collateral
sourcepub fn force_withdraw_collateral(
vault_id: &DefaultVaultId<T>,
amount: &Amount<T>
) -> DispatchResult
pub fn force_withdraw_collateral( vault_id: &DefaultVaultId<T>, amount: &Amount<T> ) -> DispatchResult
Withdraw an amount
of collateral without checking collateralization
Arguments
vault_id
- the id of the vaultamount
- the amount of collateral
sourcepub fn is_allowed_to_withdraw_collateral(
vault_id: &DefaultVaultId<T>,
amount: Option<Amount<T>>
) -> Result<bool, DispatchError>
pub fn is_allowed_to_withdraw_collateral( vault_id: &DefaultVaultId<T>, amount: Option<Amount<T>> ) -> Result<bool, DispatchError>
Checks if the vault would be above the secure threshold after withdrawing collateral
pub fn transfer_funds_saturated( from: CurrencySource<T>, to: CurrencySource<T>, amount: &Amount<T> ) -> Result<Amount<T>, DispatchError>
pub fn transfer_funds( from: CurrencySource<T>, to: CurrencySource<T>, amount: &Amount<T> ) -> DispatchResult
sourcepub fn try_increase_to_be_issued_tokens(
vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>
) -> Result<(), DispatchError>
pub fn try_increase_to_be_issued_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> Result<(), DispatchError>
Checks if the vault has sufficient collateral to increase the to-be-issued tokens, and if so, increases it
Arguments
vault_id
- the id of the vault from which to increase to-be-issued tokenstokens
- the amount of tokens to be reserved
sourcepub fn register_deposit_address(
vault_id: &DefaultVaultId<T>,
issue_id: H256
) -> Result<BtcAddress, DispatchError>
pub fn register_deposit_address( vault_id: &DefaultVaultId<T>, issue_id: H256 ) -> Result<BtcAddress, DispatchError>
sourcepub fn requestable_to_be_replaced_tokens(
vault_id: &DefaultVaultId<T>
) -> Result<Amount<T>, DispatchError>
pub fn requestable_to_be_replaced_tokens( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
returns the amount of tokens that a vault can request to be replaced on top of the current to-be-replaced tokens
sourcepub fn try_increase_to_be_replaced_tokens(
vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>
) -> Result<Amount<T>, DispatchError>
pub fn try_increase_to_be_replaced_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> Result<Amount<T>, DispatchError>
returns the new total to-be-replaced and replace-collateral
pub fn decrease_to_be_replaced_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> Result<(Amount<T>, Amount<T>), DispatchError>
sourcepub fn decrease_to_be_issued_tokens(
vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>
) -> DispatchResult
pub fn decrease_to_be_issued_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> DispatchResult
Decreases the amount of tokens to be issued in the next issue request from the vault, or from the liquidation vault if the vault is liquidated
Arguments
vault_id
- the id of the vault from which to decrease to-be-issued tokenstokens
- the amount of tokens to be unreserved
sourcepub fn issue_tokens(
vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>
) -> DispatchResult
pub fn issue_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> DispatchResult
Issues an amount of tokens
tokens for the given vault_id
At this point, the to-be-issued tokens assigned to a vault are decreased
and the issued tokens balance is increased by the amount of issued tokens.
Arguments
vault_id
- the id of the vault from which to issue tokenstokens
- the amount of tokens to issue
Errors
VaultNotFound
- if no vault exists for the givenvault_id
InsufficientTokensCommitted
- if the amount of tokens reserved is too low
sourcepub fn get_global_secure_threshold(
currency_pair: &VaultCurrencyPair<CurrencyId<T>>
) -> Result<UnsignedFixedPoint<T>, DispatchError>
pub fn get_global_secure_threshold( currency_pair: &VaultCurrencyPair<CurrencyId<T>> ) -> Result<UnsignedFixedPoint<T>, DispatchError>
Get the global secure threshold for a specified currency pair.
Arguments
currency_pair
- The currency pair for which to retrieve the global secure threshold.
Returns
Returns the global secure threshold for the specified currency pair or an error if the threshold is not set.
Errors
ThresholdNotSet
- If the secure collateral threshold for the givencurrency_pair
is not set.
sourcepub fn try_increase_to_be_redeemed_tokens(
vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>
) -> DispatchResult
pub fn try_increase_to_be_redeemed_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> DispatchResult
Adds an amount tokens to the to-be-redeemed tokens balance of a vault. This function serves as a prevention against race conditions in the redeem and replace procedures. If, for example, a vault would receive two redeem requests at the same time that have a higher amount of tokens to be issued than his issuedTokens balance, one of the two redeem requests should be rejected.
Arguments
vault_id
- the id of the vault from which to increase to-be-redeemed tokenstokens
- the amount of tokens to be redeemed
Errors
VaultNotFound
- if no vault exists for the givenvault_id
InsufficientTokensCommitted
- if the amount of redeemable tokens is too low
sourcepub fn decrease_to_be_redeemed_tokens(
vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>
) -> DispatchResult
pub fn decrease_to_be_redeemed_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> DispatchResult
Subtracts an amount tokens from the to-be-redeemed tokens balance of a vault.
Arguments
vault_id
- the id of the vault from which to decrease to-be-redeemed tokenstokens
- the amount of tokens to be redeemed
Errors
VaultNotFound
- if no vault exists for the givenvault_id
InsufficientTokensCommitted
- if the amount of to-be-redeemed tokens is too low
sourcepub fn decrease_tokens(
vault_id: &DefaultVaultId<T>,
user_id: &T::AccountId,
tokens: &Amount<T>
) -> DispatchResult
pub fn decrease_tokens( vault_id: &DefaultVaultId<T>, user_id: &T::AccountId, tokens: &Amount<T> ) -> DispatchResult
Decreases the amount of tokens f a redeem request is not fulfilled Removes the amount of tokens assigned to the to-be-redeemed tokens. At this point, we consider the tokens lost and the issued tokens are removed from the vault
Arguments
vault_id
- the id of the vault from which to decrease tokenstokens
- the amount of tokens to be decreaseduser_id
- the id of the user making the redeem request
sourcepub fn decrease_liquidated_collateral(
vault_id: &DefaultVaultId<T>,
amount: &Amount<T>
) -> DispatchResult
pub fn decrease_liquidated_collateral( vault_id: &DefaultVaultId<T>, amount: &Amount<T> ) -> DispatchResult
Decreases the amount of collateral held after liquidation for any remaining to_be_redeemed tokens.
Arguments
vault_id
- the id of the vaultamount
- the amount of collateral to decrement
sourcepub fn redeem_tokens(
vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>,
premium: &Amount<T>,
redeemer_id: &T::AccountId
) -> DispatchResult
pub fn redeem_tokens( vault_id: &DefaultVaultId<T>, tokens: &Amount<T>, premium: &Amount<T>, redeemer_id: &T::AccountId ) -> DispatchResult
Reduces the to-be-redeemed tokens when a redeem request completes
Arguments
vault_id
- the id of the vault from which to redeem tokenstokens
- the amount of tokens to be decreasedpremium
- amount of collateral to be rewarded to the redeemer if the vault is not liquidated yetredeemer_id
- the id of the redeemer
sourcepub fn redeem_tokens_liquidation(
currency_id: CurrencyId<T>,
redeemer_id: &T::AccountId,
amount_wrapped: &Amount<T>
) -> DispatchResult
pub fn redeem_tokens_liquidation( currency_id: CurrencyId<T>, redeemer_id: &T::AccountId, amount_wrapped: &Amount<T> ) -> DispatchResult
Handles redeem requests which are executed against the LiquidationVault. Reduces the issued token of the LiquidationVault and slashes the corresponding amount of collateral.
Arguments
currency_id
- the currency being redeemedredeemer_id
- the account of the user redeeming issued tokenstokens
- the amount of tokens to be redeemed in collateral with the LiquidationVault, denominated in BTC
Errors
InsufficientTokensCommitted
- if the amount of tokens issued by the liquidation vault is too lowInsufficientFunds
- if the liquidation vault does not have enough collateral to transfer
sourcepub fn replace_tokens(
old_vault_id: &DefaultVaultId<T>,
new_vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>,
collateral: &Amount<T>
) -> DispatchResult
pub fn replace_tokens( old_vault_id: &DefaultVaultId<T>, new_vault_id: &DefaultVaultId<T>, tokens: &Amount<T>, collateral: &Amount<T> ) -> DispatchResult
Replaces the old vault by the new vault by transferring tokens from the old vault to the new one
Arguments
old_vault_id
- the id of the old vaultnew_vault_id
- the id of the new vaulttokens
- the amount of tokens to be transferred from the old to the new vaultcollateral
- the collateral to be locked by the new vault
Errors
VaultNotFound
- if either the old or new vault does not existInsufficientTokensCommitted
- if the amount of tokens of the old vault is too lowInsufficientFunds
- if the new vault does not have enough collateral to lock
sourcepub fn cancel_replace_tokens(
old_vault_id: &DefaultVaultId<T>,
new_vault_id: &DefaultVaultId<T>,
tokens: &Amount<T>
) -> DispatchResult
pub fn cancel_replace_tokens( old_vault_id: &DefaultVaultId<T>, new_vault_id: &DefaultVaultId<T>, tokens: &Amount<T> ) -> DispatchResult
Cancels a replace - which in the normal case decreases the old-vault’s to-be-redeemed tokens, and the new-vault’s to-be-issued tokens. When one or both of the vaults have been liquidated, this function also updates the liquidation vault.
Arguments
old_vault_id
- the id of the old vaultnew_vault_id
- the id of the new vaulttokens
- the amount of tokens to be transferred from the old to the new vault
sourcepub fn withdraw_replace_request(
vault_id: &DefaultVaultId<T>,
amount: &Amount<T>
) -> Result<(Amount<T>, Amount<T>), DispatchError>
pub fn withdraw_replace_request( vault_id: &DefaultVaultId<T>, amount: &Amount<T> ) -> Result<(Amount<T>, Amount<T>), DispatchError>
Withdraws an amount
of tokens that were requested for replacement by vault_id
Arguments
vault_id
- the id of the vaultamount
- the amount of tokens to be withdrawn from replace requests
sourcepub fn liquidate_vault(
vault_id: &DefaultVaultId<T>
) -> Result<Amount<T>, DispatchError>
pub fn liquidate_vault( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
Liquidates a vault, transferring all of its token balances to the
LiquidationVault
, as well as the collateral.
Arguments
vault_id
- the id of the vault to liquidatestatus
- status with which to liquidate the vault
pub fn try_increase_total_backing_collateral( currency_pair: &DefaultVaultCurrencyPair<T>, amount: &Amount<T> ) -> DispatchResult
pub fn decrease_total_backing_collateral( currency_pair: &DefaultVaultCurrencyPair<T>, amount: &Amount<T> ) -> DispatchResult
pub fn insert_vault(id: &DefaultVaultId<T>, vault: DefaultVault<T>)
pub fn ban_vault(vault_id: &DefaultVaultId<T>) -> DispatchResult
pub fn ensure_not_banned(vault_id: &DefaultVaultId<T>) -> DispatchResult
sourcepub fn is_vault_below_secure_threshold(
vault_id: &DefaultVaultId<T>
) -> Result<bool, DispatchError>
pub fn is_vault_below_secure_threshold( vault_id: &DefaultVaultId<T> ) -> Result<bool, DispatchError>
Threshold checks
pub fn is_vault_liquidated( vault_id: &DefaultVaultId<T> ) -> Result<bool, DispatchError>
sourcepub fn is_vault_below_liquidation_threshold(
vault: &DefaultVault<T>,
liquidation_threshold: UnsignedFixedPoint<T>
) -> Result<bool, DispatchError>
pub fn is_vault_below_liquidation_threshold( vault: &DefaultVault<T>, liquidation_threshold: UnsignedFixedPoint<T> ) -> Result<bool, DispatchError>
check if the vault is below the liquidation threshold.
sourcepub fn is_collateral_below_vault_secure_threshold(
collateral: &Amount<T>,
wrapped_amount: &Amount<T>,
vault: &RichVault<T>
) -> Result<bool, DispatchError>
pub fn is_collateral_below_vault_secure_threshold( collateral: &Amount<T>, wrapped_amount: &Amount<T>, vault: &RichVault<T> ) -> Result<bool, DispatchError>
Takes vault custom secure threshold into account (if set)
pub fn _set_minimum_collateral_vault( collateral_currency: CurrencyId<T>, min_collateral: <T as Config>::Balance )
pub fn _set_system_collateral_ceiling( currency_pair: DefaultVaultCurrencyPair<T>, ceiling: <T as Config>::Balance )
pub fn _set_secure_collateral_threshold( currency_pair: DefaultVaultCurrencyPair<T>, threshold: UnsignedFixedPoint<T> )
pub fn _set_liquidation_collateral_threshold( currency_pair: DefaultVaultCurrencyPair<T>, threshold: UnsignedFixedPoint<T> )
sourcepub fn calculate_collateral(
collateral: &Amount<T>,
numerator: &Amount<T>,
denominator: &Amount<T>
) -> Result<Amount<T>, DispatchError>
pub fn calculate_collateral( collateral: &Amount<T>, numerator: &Amount<T>, denominator: &Amount<T> ) -> Result<Amount<T>, DispatchError>
return (collateral * Numerator) / denominator, used when dealing with liquidated vaults
sourcepub fn get_vaults_by_account_id(
account_id: T::AccountId
) -> Result<Vec<DefaultVaultId<T>>, DispatchError>
pub fn get_vaults_by_account_id( account_id: T::AccountId ) -> Result<Vec<DefaultVaultId<T>>, DispatchError>
RPC get all vaults the are registered using the given account id. Note that one account id might be used in multiple vault ids.
sourcepub fn calculate_inclusion_fee(
wrapped_currency: CurrencyId<T>,
redeem_tx_size: u32
) -> Result<Amount<T>, DispatchError>
pub fn calculate_inclusion_fee( wrapped_currency: CurrencyId<T>, redeem_tx_size: u32 ) -> Result<Amount<T>, DispatchError>
Calculates the inclusion fee for a redeem transaction based on the provided parameters.
Get all vaults that:
- are below the premium redeem threshold, and
- have a non-zero amount of redeemable tokens, and thus
- are not banned
Return a tuple of (VaultId, RedeemTokens to get max_premium
from vault)
sourcepub fn get_vaults_with_issuable_tokens(
) -> Result<Vec<(DefaultVaultId<T>, Amount<T>)>, DispatchError>
pub fn get_vaults_with_issuable_tokens( ) -> Result<Vec<(DefaultVaultId<T>, Amount<T>)>, DispatchError>
Get all vaults with non-zero issuable tokens, ordered in descending order of this amount
sourcepub fn get_vaults_with_redeemable_tokens(
) -> Result<Vec<(DefaultVaultId<T>, Amount<T>)>, DispatchError>
pub fn get_vaults_with_redeemable_tokens( ) -> Result<Vec<(DefaultVaultId<T>, Amount<T>)>, DispatchError>
Get all vaults with non-zero issued (thus redeemable) tokens, ordered in descending order of this amount
sourcepub fn get_issuable_tokens_from_vault(
vault_id: &DefaultVaultId<T>
) -> Result<Amount<T>, DispatchError>
pub fn get_issuable_tokens_from_vault( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
Get the amount of tokens a vault can issue
pub fn ensure_accepting_new_issues( vault_id: &DefaultVaultId<T> ) -> Result<(), DispatchError>
sourcepub fn get_to_be_issued_tokens_from_vault(
vault_id: DefaultVaultId<T>
) -> Result<Amount<T>, DispatchError>
pub fn get_to_be_issued_tokens_from_vault( vault_id: DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
Get the amount of tokens issued by a vault
sourcepub fn get_collateralization_from_vault(
vault_id: DefaultVaultId<T>,
only_issued: bool
) -> Result<UnsignedFixedPoint<T>, DispatchError>
pub fn get_collateralization_from_vault( vault_id: DefaultVaultId<T>, only_issued: bool ) -> Result<UnsignedFixedPoint<T>, DispatchError>
Get the current collateralization of a vault
pub fn get_collateralization_from_vault_and_collateral( vault_id: DefaultVaultId<T>, collateral: &Amount<T>, only_issued: bool ) -> Result<UnsignedFixedPoint<T>, DispatchError>
sourcepub fn get_required_collateral_for_wrapped(
amount_wrapped: &Amount<T>,
currency_id: CurrencyId<T>
) -> Result<Amount<T>, DispatchError>
pub fn get_required_collateral_for_wrapped( amount_wrapped: &Amount<T>, currency_id: CurrencyId<T> ) -> Result<Amount<T>, DispatchError>
Gets the minimum amount of collateral required for the given amount of btc with the current threshold and exchange rate
Arguments
amount_wrapped
- the amount of wrappedcurrency_id
- the collateral currency
sourcepub fn get_required_collateral_for_vault(
vault_id: DefaultVaultId<T>
) -> Result<Amount<T>, DispatchError>
pub fn get_required_collateral_for_vault( vault_id: DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
Get the amount of collateral required for the given vault to be at the current SecureCollateralThreshold with the current exchange rate
pub fn vault_exists(vault_id: &DefaultVaultId<T>) -> bool
pub fn compute_collateral( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
pub fn compute_capacity( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
pub fn get_total_user_vault_collateral( currency_pair: &DefaultVaultCurrencyPair<T> ) -> Result<Amount<T>, DispatchError>
pub fn get_free_collateral( vault_id: &DefaultVaultId<T> ) -> Result<Amount<T>, DispatchError>
pub fn get_liquidation_vault( currency_pair: &DefaultVaultCurrencyPair<T> ) -> DefaultSystemVault<T>
pub fn get_rich_liquidation_vault( currency_pair: &DefaultVaultCurrencyPair<T> ) -> RichSystemVault<T>
pub fn is_vault_below_certain_threshold( vault_id: &DefaultVaultId<T>, threshold: UnsignedFixedPoint<T> ) -> Result<bool, DispatchError>
pub fn new_vault_deposit_address( vault_id: &DefaultVaultId<T>, secure_id: H256 ) -> Result<BtcAddress, DispatchError>
pub fn collateral_integrity_check()
pub fn total_user_vault_collateral_integrity_check()
Trait Implementations§
source§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
§type CurrentStorageVersion = NoStorageVersionSet
type CurrentStorageVersion = NoStorageVersionSet
source§fn current_storage_version() -> Self::CurrentStorageVersion
fn current_storage_version() -> Self::CurrentStorageVersion
source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
source§impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn offchain_worker(n: BlockNumberFor<T>)
fn offchain_worker(n: BlockNumberFor<T>)
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
§fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
on_finalize
). Read more§fn on_initialize(_n: BlockNumber) -> Weight
fn on_initialize(_n: BlockNumber) -> Weight
§fn integrity_test()
fn integrity_test()
source§impl<T: Config> IntegrityTest for Pallet<T>
impl<T: Config> IntegrityTest for Pallet<T>
source§fn integrity_test()
fn integrity_test()
source§impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn offchain_worker(n: BlockNumberFor<T>)
fn offchain_worker(n: BlockNumberFor<T>)
source§impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn on_finalize(n: BlockNumberFor<T>)
fn on_finalize(n: BlockNumberFor<T>)
source§impl<T: Config> OnGenesis for Pallet<T>
impl<T: Config> OnGenesis for Pallet<T>
source§fn on_genesis()
fn on_genesis()
source§impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn on_initialize(n: BlockNumberFor<T>) -> Weight
fn on_initialize(n: BlockNumberFor<T>) -> Weight
source§impl<T: Config> OnRuntimeUpgrade for Pallet<T>
impl<T: Config> OnRuntimeUpgrade for Pallet<T>
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
source§impl<T: Config> PalletInfoAccess for Pallet<T>
impl<T: Config> PalletInfoAccess for Pallet<T>
source§fn module_name() -> &'static str
fn module_name() -> &'static str
source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
source§impl<T> PartialEq<Pallet<T>> for Pallet<T>
impl<T> PartialEq<Pallet<T>> for Pallet<T>
source§impl<T: Config> ValidateUnsigned for Pallet<T>
impl<T: Config> ValidateUnsigned for Pallet<T>
source§fn validate_unsigned(
source: TransactionSource,
call: &Self::Call
) -> TransactionValidity
fn validate_unsigned( source: TransactionSource, call: &Self::Call ) -> TransactionValidity
§fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError>
fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError>
source§impl<T: Config> WhitelistedStorageKeys for Pallet<T>
impl<T: Config> WhitelistedStorageKeys for Pallet<T>
source§fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
Vec<TrackedStorageKey>
indicating the storage keys that
should be whitelisted during benchmarking. This means that those keys
will be excluded from the benchmarking performance calculation.impl<T> Eq for Pallet<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Pallet<T>where T: RefUnwindSafe,
impl<T> Send for Pallet<T>where T: Send,
impl<T> Sync for Pallet<T>where T: Sync,
impl<T> Unpin for Pallet<T>where T: Unpin,
impl<T> UnwindSafe for Pallet<T>where T: UnwindSafe,
Blanket Implementations§
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where Self: TryInto<T>,
§impl<T> Conv for T
impl<T> Conv for T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
T
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.