pub trait SwapAction<AccountId, T: Config> {
    // Required methods
    fn reserve(&self, source: &AccountId) -> DispatchResult;
    fn claim(&self, source: &AccountId, target: &AccountId) -> bool;
    fn weight(&self) -> Weight;
    fn cancel(&self, source: &AccountId);
Expand description

Definition of a pending atomic swap action. It contains the following three phrases:

  • Reserve: reserve the resources needed for a swap. This is to make sure that Claim succeeds with best efforts.
  • Claim: claim any resources reserved in the first phrase.
  • Cancel: cancel any resources reserved in the first phrase.

Required Methods§


fn reserve(&self, source: &AccountId) -> DispatchResult

Reserve the resources needed for the swap, from the given source. The reservation is allowed to fail. If that is the case, the the full swap creation operation is cancelled.


fn claim(&self, source: &AccountId, target: &AccountId) -> bool

Claim the reserved resources, with source and target. Returns whether the claim succeeds.


fn weight(&self) -> Weight

Weight for executing the operation.


fn cancel(&self, source: &AccountId)

Cancel the resources reserved in source.



impl<T: Config, AccountId, C> SwapAction<AccountId, T> for BalanceSwapAction<AccountId, C>where C: ReservableCurrency<AccountId>,