[][src]Enum pallet_staking::Call

pub enum Call<T: Config> {
    bond(<T::Lookup as StaticLookup>::SourceBalanceOf<T>, RewardDestination<T::AccountId>),
    bond_extra(BalanceOf<T>),
    unbond(BalanceOf<T>),
    withdraw_unbonded(u32),
    validate(ValidatorPrefs),
    nominate(Vec<<T::Lookup as StaticLookup>::Source>),
    chill(),
    set_payee(RewardDestination<T::AccountId>),
    set_controller(<T::Lookup as StaticLookup>::Source),
    set_validator_count(u32),
    increase_validator_count(u32),
    scale_validator_count(Percent),
    force_no_eras(),
    force_new_era(),
    set_invulnerables(Vec<T::AccountId>),
    force_unstake(T::AccountIdu32),
    force_new_era_always(),
    cancel_deferred_slash(EraIndexVec<u32>),
    payout_stakers(T::AccountIdEraIndex),
    rebond(BalanceOf<T>),
    set_history_depth(EraIndexu32),
    reap_stash(T::AccountIdu32),
    submit_election_solution(Vec<ValidatorIndex>, CompactAssignmentsElectionScoreEraIndexElectionSize),
    submit_election_solution_unsigned(Vec<ValidatorIndex>, CompactAssignmentsElectionScoreEraIndexElectionSize),
    kick(Vec<<T::Lookup as StaticLookup>::Source>),
    // some variants omitted
}

Dispatchable calls.

Each variant of this enum maps to a dispatchable function from the associated module.

Variants

bond(<T::Lookup as StaticLookup>::SourceBalanceOf<T>, RewardDestination<T::AccountId>)

Take the origin account as a stash and lock up value of its balance. controller will be the account that controls it.

value must be more than the minimum_balance specified by T::Currency.

The dispatch origin for this call must be Signed by the stash account.

Emits Bonded.

NOTE: Two of the storage writes (Self::bonded, Self::payee) are never cleaned unless the origin falls below existential deposit and gets removed as dust.

Weight: O(1) DB Weight:

bond_extra(BalanceOf<T>)

Add some extra amount that have appeared in the stash free_balance into the balance up for staking.

Use this if there are additional funds in your stash account that you wish to bond. Unlike [bond] or [unbond] this function does not impose any limitation on the amount that can be added.

The dispatch origin for this call must be Signed by the stash, not the controller and it can be only called when EraElectionStatus is Closed.

Emits Bonded.


DB Weight:

unbond(BalanceOf<T>)

Schedule a portion of the stash to be unlocked ready for transfer out after the bond period ends. If this leaves an amount actively bonded less than T::Currency::minimum_balance(), then it is increased to the full amount.

Once the unlock period is done, you can call withdraw_unbonded to actually move the funds out of management ready for transfer.

No more than a limited number of unlocking chunks (see MAX_UNLOCKING_CHUNKS) can co-exists at the same time. In that case, Call::withdraw_unbonded need to be called first to remove some of the chunks (if possible).

The dispatch origin for this call must be Signed by the controller, not the stash. And, it can be only called when EraElectionStatus is Closed.

Emits Unbonded.

See also Call::withdraw_unbonded.


Weight: O(1) DB Weight:

withdraw_unbonded(u32)

Remove any unlocked chunks from the unlocking queue from our management.

This essentially frees up that balance to be used by the stash account to do whatever it wants.

The dispatch origin for this call must be Signed by the controller, not the stash. And, it can be only called when EraElectionStatus is Closed.

Emits Withdrawn.

See also Call::unbond.


Complexity O(S) where S is the number of slashing spans to remove Update:

validate(ValidatorPrefs)

Declare the desire to validate for the origin controller.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash. And, it can be only called when EraElectionStatus is Closed.


Weight: O(1) DB Weight:

nominate(Vec<<T::Lookup as StaticLookup>::Source>)

Declare the desire to nominate targets for the origin controller.

Effects will be felt at the beginning of the next era. This can only be called when EraElectionStatus is Closed.

The dispatch origin for this call must be Signed by the controller, not the stash. And, it can be only called when EraElectionStatus is Closed.


Weight: O(N) where N is the number of targets DB Weight:

chill()

Declare no desire to either validate or nominate.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash. And, it can be only called when EraElectionStatus is Closed.


Weight: O(1) DB Weight:

set_payee(RewardDestination<T::AccountId>)

(Re-)set the payment target for a controller.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash.


set_controller(<T::Lookup as StaticLookup>::Source)

(Re-)set the controller of a stash.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the stash, not the controller.


Weight: O(1) DB Weight:

set_validator_count(u32)

Sets the ideal number of validators.

The dispatch origin must be Root.

Weight: O(1) Write: Validator Count

increase_validator_count(u32)

Increments the ideal number of validators.

The dispatch origin must be Root.

Same as [set_validator_count].

scale_validator_count(Percent)

Scale up the ideal number of validators by a factor.

The dispatch origin must be Root.

Same as [set_validator_count].

force_no_eras()

Force there to be no new eras indefinitely.

The dispatch origin must be Root.

force_new_era()

Force there to be a new era at the end of the next session. After this, it will be reset to normal (non-forced) behaviour.

The dispatch origin must be Root.

set_invulnerables(Vec<T::AccountId>)

Set the validators who cannot be slashed (if any).

The dispatch origin must be Root.

force_unstake(T::AccountIdu32)

Force a current staker to become completely unstaked, immediately.

The dispatch origin must be Root.

O(S) where S is the number of slashing spans to be removed Reads: Bonded, Slashing Spans, Account, Locks Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Account, Locks Writes Each: SpanSlash * S

force_new_era_always()

Force there to be a new era at the end of sessions indefinitely.

The dispatch origin must be Root.

cancel_deferred_slash(EraIndexVec<u32>)

Cancel enactment of a deferred slash.

Can be called by the T::SlashCancelOrigin.

Parameters: era and indices of the slashes for that era to kill.

Complexity: O(U + S) with U unapplied slashes weighted with U=1000 and S is the number of slash indices to be canceled.

payout_stakers(T::AccountIdEraIndex)

Pay out all the stakers behind a single validator for a single era.

The origin of this call must be Signed. Any account can call this function, even if it is not one of the stakers.

This can only be called when EraElectionStatus is Closed.


N is the Number of payouts for the validator (including the validator) Weight:

rebond(BalanceOf<T>)

Rebond a portion of the stash scheduled to be unlocked.

The dispatch origin must be signed by the controller, and it can be only called when EraElectionStatus is Closed.


set_history_depth(EraIndexu32)

Set HistoryDepth value. This function will delete any history information when HistoryDepth is reduced.

Parameters:

Origin must be root.

reap_stash(T::AccountIdu32)

Remove all data structure concerning a staker/stash once its balance is at the minimum. This is essentially equivalent to withdraw_unbonded except it can be called by anyone and the target stash must have no funds left beyond the ED.

This can be called from any origin.

Complexity: O(S) where S is the number of slashing spans on the account. DB Weight:

submit_election_solution(Vec<ValidatorIndex>, CompactAssignmentsElectionScoreEraIndexElectionSize)

Submit an election result to the chain. If the solution:

  1. is valid.
  2. has a better score than a potentially existing solution on chain.

then, it will be put on chain.

A solution consists of two pieces of data:

  1. winners: a flat vector of all the winners of the round.
  2. assignments: the compact version of an assignment vector that encodes the edge weights.

Both of which may be computed using phragmen, or any other algorithm.

Additionally, the submitter must provide:

Both validators and nominators will be represented by indices in the solution. The indices should respect the corresponding types (ValidatorIndex and NominatorIndex). Moreover, they should be valid when used to index into SnapshotValidators and SnapshotNominators. Any invalid index will cause the solution to be rejected. These two storage items are set during the election window and may be used to determine the indices.

A solution is valid if:

  1. It is submitted when EraElectionStatus is Open.
  2. Its claimed score is equal to the score computed on-chain.
  3. Presents the correct number of winners.
  4. All indexes must be value according to the snapshot vectors. All edge values must also be correct and should not overflow the granularity of the ratio type (i.e. 256 or billion).
  5. For each edge, all targets are actually nominated by the voter.
  6. Has correct self-votes.

A solutions score is consisted of 3 parameters:

  1. min { support.total } for each support of a winner. This value should be maximized.
  2. sum { support.total } for each support of a winner. This value should be minimized.
  3. sum { support.total^2 } for each support of a winner. This value should be minimized (to ensure less variance)

The transaction is assumed to be the longest path, a better solution.

submit_election_solution_unsigned(Vec<ValidatorIndex>, CompactAssignmentsElectionScoreEraIndexElectionSize)

Unsigned version of submit_election_solution.

Note that this must pass the [ValidateUnsigned] check which only allows transactions from the local node to be included. In other words, only the block author can include a transaction in the block.

See [submit_election_solution].

kick(Vec<<T::Lookup as StaticLookup>::Source>)

Remove the given nominations from the calling validator.

Effects will be felt at the beginning of the next era.

The dispatch origin for this call must be Signed by the controller, not the stash. And, it can be only called when EraElectionStatus is Closed. The controller account should represent a validator.

Note: Making this call only makes sense if you first set the validator preferences to block any further nominations.

Trait Implementations

impl<T: Config> Clone for Call<T>[src]

impl<T: Config> Debug for Call<T>[src]

impl<T: Config> Decode for Call<T> where
    <T::Lookup as StaticLookup>::Source: Decode,
    <T::Lookup as StaticLookup>::Source: Decode,
    RewardDestination<T::AccountId>: Decode,
    RewardDestination<T::AccountId>: Decode,
    Vec<<T::Lookup as StaticLookup>::Source>: Decode,
    Vec<<T::Lookup as StaticLookup>::Source>: Decode,
    RewardDestination<T::AccountId>: Decode,
    RewardDestination<T::AccountId>: Decode,
    <T::Lookup as StaticLookup>::Source: Decode,
    <T::Lookup as StaticLookup>::Source: Decode,
    Vec<T::AccountId>: Decode,
    Vec<T::AccountId>: Decode,
    T::AccountId: Decode,
    T::AccountId: Decode,
    T::AccountId: Decode,
    T::AccountId: Decode,
    T::AccountId: Decode,
    T::AccountId: Decode,
    Vec<<T::Lookup as StaticLookup>::Source>: Decode,
    Vec<<T::Lookup as StaticLookup>::Source>: Decode,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact
[src]

impl<T: Config> Encode for Call<T> where
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    RewardDestination<T::AccountId>: Encode,
    RewardDestination<T::AccountId>: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    RewardDestination<T::AccountId>: Encode,
    RewardDestination<T::AccountId>: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    Vec<T::AccountId>: Encode,
    Vec<T::AccountId>: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact
[src]

impl<T: Config> EncodeLike<Call<T>> for Call<T> where
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    RewardDestination<T::AccountId>: Encode,
    RewardDestination<T::AccountId>: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    RewardDestination<T::AccountId>: Encode,
    RewardDestination<T::AccountId>: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    <T::Lookup as StaticLookup>::Source: Encode,
    Vec<T::AccountId>: Encode,
    Vec<T::AccountId>: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    T::AccountId: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    Vec<<T::Lookup as StaticLookup>::Source>: Encode,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact,
    BalanceOf<T>: HasCompact
[src]

impl<T: Config> Eq for Call<T>[src]

impl<T: Config> GetCallName for Call<T>[src]

impl<T: Config> GetDispatchInfo for Call<T>[src]

impl<T: Config> PartialEq<Call<T>> for Call<T>[src]

impl<T: Config> UnfilteredDispatchable for Call<T>[src]

type Origin = T::Origin

The origin type of the runtime, (i.e. frame_system::Config::Origin).

Auto Trait Implementations

impl<T> RefUnwindSafe for Call<T> where
    T: RefUnwindSafe,
    <T as Config>::AccountId: RefUnwindSafe,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: RefUnwindSafe,
    <<T as Config>::Lookup as StaticLookup>::Source: RefUnwindSafe
[src]

impl<T> Send for Call<T> where
    T: Send,
    <T as Config>::AccountId: Send,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Send,
    <<T as Config>::Lookup as StaticLookup>::Source: Send
[src]

impl<T> Sync for Call<T> where
    T: Sync,
    <T as Config>::AccountId: Sync,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Sync,
    <<T as Config>::Lookup as StaticLookup>::Source: Sync
[src]

impl<T> Unpin for Call<T> where
    T: Unpin,
    <T as Config>::AccountId: Unpin,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: Unpin,
    <<T as Config>::Lookup as StaticLookup>::Source: Unpin
[src]

impl<T> UnwindSafe for Call<T> where
    T: UnwindSafe,
    <T as Config>::AccountId: UnwindSafe,
    <<T as Config>::Currency as Currency<<T as Config>::AccountId>>::Balance: UnwindSafe,
    <<T as Config>::Lookup as StaticLookup>::Source: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CheckedConversion for T[src]

impl<S> Codec for S where
    S: Encode + Decode
[src]

impl<T> DecodeAll for T where
    T: Decode
[src]

impl<T> DecodeLimit for T where
    T: Decode
[src]

impl<T> DynClone for T where
    T: Clone
[src]

impl<'_, '_, T> EncodeLike<&'_ &'_ T> for T where
    T: Encode
[src]

impl<'_, T> EncodeLike<&'_ T> for T where
    T: Encode
[src]

impl<'_, T> EncodeLike<&'_ mut T> for T where
    T: Encode
[src]

impl<T> EncodeLike<Arc<T>> for T where
    T: Encode
[src]

impl<T> EncodeLike<Box<T, Global>> for T where
    T: Encode
[src]

impl<'a, T> EncodeLike<Cow<'a, T>> for T where
    T: Encode + ToOwned
[src]

impl<T> EncodeLike<Rc<T>> for T where
    T: Encode
[src]

impl<Q, K> Equivalent<K> for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]

impl<T> From<T> for T[src]

impl<S> FullCodec for S where
    S: Decode + FullEncode
[src]

impl<S> FullEncode for S where
    S: Encode + EncodeLike<S>, 
[src]

impl<T> Hashable for T where
    T: Codec
[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> IsType<T> for T[src]

impl<T, Outer> IsWrappedBy<Outer> for T where
    T: From<Outer>,
    Outer: AsRef<T> + AsMut<T> + From<T>, 
[src]

pub fn from_ref(outer: &Outer) -> &T[src]

Get a reference to the inner from the outer.

pub fn from_mut(outer: &mut Outer) -> &mut T[src]

Get a mutable reference to the inner from the outer.

impl<T> KeyedVec for T where
    T: Codec
[src]

impl<T> MaybeDebug for T where
    T: Debug
[src]

impl<T> MaybeDebug for T where
    T: Debug
[src]

impl<T> MaybeRefUnwindSafe for T where
    T: RefUnwindSafe
[src]

impl<T> Member for T where
    T: 'static + Clone + PartialEq<T> + Eq + Send + Sync + Debug
[src]

impl<T> Parameter for T where
    T: Codec + EncodeLike<T> + Clone + Eq + Debug
[src]

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T> SaturatedConversion for T[src]

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<S, T> UncheckedInto<T> for S where
    T: UncheckedFrom<S>, 
[src]

impl<T, S> UniqueSaturatedInto<T> for S where
    T: Bounded,
    S: TryInto<T>, 
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]