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 request_redeem(
origin: OriginFor<T>,
amount_wrapped: <T as Config>::Balance,
btc_address: BtcAddress,
vault_id: VaultId<<T as Config>::AccountId, CurrencyId<T>>
) -> DispatchResultWithPostInfo
pub fn request_redeem( origin: OriginFor<T>, amount_wrapped: <T as Config>::Balance, btc_address: BtcAddress, vault_id: VaultId<<T as Config>::AccountId, CurrencyId<T>> ) -> DispatchResultWithPostInfo
Initializes a request to burn issued tokens against a Vault with sufficient tokens. It will also ensure that the Parachain status is RUNNING.
Arguments
origin
- sender of the transactionamount
- amount of issued tokensbtc_address
- the address to receive BTCvault_id
- address of the vault
sourcepub fn liquidation_redeem(
origin: OriginFor<T>,
currencies: DefaultVaultCurrencyPair<T>,
amount_wrapped: <T as Config>::Balance
) -> DispatchResultWithPostInfo
pub fn liquidation_redeem( origin: OriginFor<T>, currencies: DefaultVaultCurrencyPair<T>, amount_wrapped: <T as Config>::Balance ) -> DispatchResultWithPostInfo
When a Vault is liquidated, its collateral is slashed up to 150% of the liquidated BTC value. To re-establish the physical 1:1 peg, the bridge allows users to burn issued tokens in return for collateral at a premium rate.
Arguments
origin
- sender of the transactioncollateral_currency
- currency to be receivedwrapped_currency
- currency of the wrapped token to burnamount_wrapped
- amount of issued tokens to burn
sourcepub fn execute_redeem(
origin: OriginFor<T>,
redeem_id: H256,
unchecked_transaction: FullTransactionProof
) -> DispatchResultWithPostInfo
pub fn execute_redeem( origin: OriginFor<T>, redeem_id: H256, unchecked_transaction: FullTransactionProof ) -> DispatchResultWithPostInfo
A Vault calls this function after receiving an RequestRedeem event with their public key. Before calling the function, the Vault transfers the specific amount of BTC to the BTC address given in the original redeem request. The Vault completes the redeem with this function.
Arguments
origin
- anyone executing this redeem requestredeem_id
- identifier of redeem request as output from request_redeemtx_id
- transaction hashmerkle_proof
- membership prooftransaction
- tx containing payment
sourcepub fn cancel_redeem(
origin: OriginFor<T>,
redeem_id: H256,
reimburse: bool
) -> DispatchResultWithPostInfo
pub fn cancel_redeem( origin: OriginFor<T>, redeem_id: H256, reimburse: bool ) -> DispatchResultWithPostInfo
If a redeem request is not completed on time, the redeem request can be cancelled. The user that initially requested the redeem process calls this function to obtain the Vault’s collateral as compensation for not transferring the BTC back to their address.
Arguments
origin
- sender of the transactionredeem_id
- identifier of redeem request as output from request_redeemreimburse
- specifying if the user wishes to be reimbursed in collateral and slash the Vault, or wishes to keep the tokens (and retry Redeem with another Vault)
sourcepub fn set_redeem_period(
origin: OriginFor<T>,
period: BlockNumberFor<T>
) -> DispatchResultWithPostInfo
pub fn set_redeem_period( origin: OriginFor<T>, period: BlockNumberFor<T> ) -> DispatchResultWithPostInfo
Set the default redeem period for tx verification.
Arguments
origin
- the dispatch origin of this call (must be Root)period
- default period for new requests
Weight: O(1)
sourcepub fn mint_tokens_for_reimbursed_redeem(
origin: OriginFor<T>,
currency_pair: DefaultVaultCurrencyPair<T>,
redeem_id: H256
) -> DispatchResultWithPostInfo
pub fn mint_tokens_for_reimbursed_redeem( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, redeem_id: H256 ) -> DispatchResultWithPostInfo
Mint tokens for a redeem that was cancelled with reimburse=true. This is only possible if at the time of the cancel_redeem, the vault did not have sufficient collateral after being slashed to back the tokens that the user used to hold.
Arguments
origin
- the dispatch origin of this call (must be Root)redeem_id
- identifier of redeem request as output from request_redeem
Weight: O(1)
pub fn self_redeem( origin: OriginFor<T>, currency_pair: DefaultVaultCurrencyPair<T>, amount_wrapped: <T as Config>::Balance ) -> DispatchResultWithPostInfo
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn redeem_period() -> BlockNumberFor<T>
pub fn redeem_period() -> BlockNumberFor<T>
“ The time difference in number of blocks between a redeem request is created and required completion time by a“ “ vault. The redeem period has an upper limit to ensure the user gets their BTC in time and to potentially“ “ punish a vault for inactivity or stealing BTC.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn redeem_requests<KArg>(k: KArg) -> Option<DefaultRedeemRequest<T>>where
KArg: EncodeLike<H256>,
pub fn redeem_requests<KArg>(k: KArg) -> Option<DefaultRedeemRequest<T>>where KArg: EncodeLike<H256>,
“ Users create redeem requests to receive BTC in return for their previously issued tokens.“ “ This mapping provides access from a unique hash redeemId to a Redeem struct.“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn redeem_btc_dust_value() -> <T as Config>::Balance
pub fn redeem_btc_dust_value() -> <T as Config>::Balance
“ The minimum amount of btc that is accepted for redeem requests; any lower values would“ “ risk the bitcoin client to reject the payment“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn redeem_transaction_size() -> u32
pub fn redeem_transaction_size() -> u32
“ the expected size in bytes of the redeem bitcoin transfer“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn storage_version() -> Version
pub fn storage_version() -> Version
“ Build storage at V1 (requires default 0).“
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn get_current_inclusion_fee(
wrapped_currency: CurrencyId<T>
) -> Result<Amount<T>, DispatchError>
pub fn get_current_inclusion_fee( wrapped_currency: CurrencyId<T> ) -> Result<Amount<T>, DispatchError>
get current inclusion fee based on the expected number of bytes in the transaction, and the inclusion fee rate reported by the oracle
pub fn get_dust_value(currency_id: CurrencyId<T>) -> Amount<T>
sourcepub fn get_redeem_requests_for_account(account_id: T::AccountId) -> Vec<H256>
pub fn get_redeem_requests_for_account(account_id: T::AccountId) -> Vec<H256>
sourcepub fn get_redeem_requests_for_vault(vault_id: T::AccountId) -> Vec<H256>
pub fn get_redeem_requests_for_vault(vault_id: T::AccountId) -> Vec<H256>
sourcepub fn get_open_redeem_request_from_id(
redeem_id: &H256
) -> Result<DefaultRedeemRequest<T>, DispatchError>
pub fn get_open_redeem_request_from_id( redeem_id: &H256 ) -> Result<DefaultRedeemRequest<T>, DispatchError>
Fetch a pre-existing redeem request or throw. Completed or cancelled requests are not returned.
Arguments
redeem_id
- 256-bit identifier of the redeem request
sourcepub fn get_open_or_completed_redeem_request_from_id(
redeem_id: &H256
) -> Result<DefaultRedeemRequest<T>, DispatchError>
pub fn get_open_or_completed_redeem_request_from_id( redeem_id: &H256 ) -> Result<DefaultRedeemRequest<T>, DispatchError>
Fetch a pre-existing open or completed redeem request or throw. Cancelled requests are not returned.
Arguments
redeem_id
- 256-bit identifier of the redeem request
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>
§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 on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
§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> 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
.