referrerpolicy=no-referrer-when-downgrade
pallet_delegated_staking::pallet

Type Alias Module

Source
pub type Module<T> = Pallet<T>;
👎Deprecated: use Pallet instead
Expand description

Type alias to Pallet, to be used by construct_runtime.

Generated by pallet attribute macro.

Aliased Type§

struct Module<T>(/* private fields */);

Implementations

Source§

impl<T: Config> Pallet<T>

Source

pub fn register_agent( origin: OriginFor<T>, reward_account: T::AccountId, ) -> DispatchResult

Register an account to become a stake Agent. Sometimes also called a Delegatee.

Delegators can authorize Agents to stake on their behalf by delegating their funds to them. The Agent can then use the delegated funds to stake to Config::CoreStaking.

An account that is directly staked to Config::CoreStaking cannot become an Agent. However, they can migrate to become an agent using Self::migrate_to_agent.

Implementation note: This function allows any account to become an agent. It is important though that accounts that call [StakingUnchecked::virtual_bond] are keyless accounts. This is not a problem for now since this is only used by other pallets in the runtime which use keyless account as agents. If we later want to expose this as a dispatchable call, we should derive a sub-account from the caller and use that as the agent account.

Source

pub fn remove_agent(origin: OriginFor<T>) -> DispatchResult

Remove an account from being an Agent.

This can only be called if the agent has no delegated funds, no pending slashes and no unclaimed withdrawals.

Source

pub fn migrate_to_agent( origin: OriginFor<T>, reward_account: T::AccountId, ) -> DispatchResult

Migrate from a Nominator account to Agent account.

The origin needs to

This function will create a proxy account to the agent called proxy_delegator and transfer the directly staked amount by the agent to it. The proxy_delegator delegates the funds to the origin making origin an Agent account. The real delegator accounts of the origin can later migrate their funds using Self::migrate_delegation to claim back their share of delegated funds from proxy_delegator to self.

Any free fund in the agent’s account will be marked as unclaimed withdrawal.

Source

pub fn release_delegation( origin: OriginFor<T>, delegator: T::AccountId, amount: BalanceOf<T>, num_slashing_spans: u32, ) -> DispatchResult

Release previously delegated funds by delegator to origin.

Only agents can call this.

Tries to withdraw unbonded funds from CoreStaking if needed and release amount to delegator.

Source

pub fn migrate_delegation( origin: OriginFor<T>, delegator: T::AccountId, amount: BalanceOf<T>, ) -> DispatchResult

Migrate delegated funds that are held in proxy_delegator to the claiming delegator’s account. If successful, the specified funds will be moved and delegated from delegator account to the agent.

This can be called by agent accounts that were previously a direct Nominator with Config::CoreStaking and has some remaining unclaimed delegations.

Internally, it moves some delegations from proxy_delegator account to delegator account and reapplying the holds.

Source

pub fn delegate_to_agent( origin: OriginFor<T>, agent: T::AccountId, amount: BalanceOf<T>, ) -> DispatchResult

Delegate given amount of tokens to an Agent account.

If origin is the first time delegator, we add them to state. If they are already delegating, we increase the delegation.

Conditions:

  • Delegators cannot delegate to more than one agent.
  • The agent account should already be registered as such. See Self::register_agent.
Source§

impl<T: Config> Pallet<T>

Source

pub fn generate_proxy_delegator( agent: Agent<T::AccountId>, ) -> Delegator<T::AccountId>

Derive an account from the migrating agent account where the unclaimed delegation funds are held.

Source

pub fn do_slash( agent: Agent<T::AccountId>, delegator: Delegator<T::AccountId>, amount: BalanceOf<T>, maybe_reporter: Option<T::AccountId>, ) -> DispatchResult

Take slash amount from agent’s pending_slashcounter and apply it to delegator account.

Trait Implementations

Source§

impl<T: Config> BeforeAllRuntimeMigrations for Pallet<T>

Source§

fn before_all_runtime_migrations() -> Weight

Something that should happen before runtime migrations are executed.
Source§

impl<T: Config> Callable<T> for Pallet<T>

Source§

impl<T> Clone for Pallet<T>

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T> Debug for Pallet<T>

Source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Config> DelegationInterface for Pallet<T>

Source§

fn agent_balance(agent: Agent<Self::AccountId>) -> Option<Self::Balance>

Effective balance of the Agent account.

Source§

fn register_agent( agent: Agent<Self::AccountId>, reward_account: &Self::AccountId, ) -> DispatchResult

Delegate funds to an Agent.

Source§

fn remove_agent(agent: Agent<Self::AccountId>) -> DispatchResult

Remove Agent registration.

Source§

fn delegate( who: Delegator<Self::AccountId>, agent: Agent<Self::AccountId>, amount: Self::Balance, ) -> DispatchResult

Add more delegation to the Agent account.

Source§

fn withdraw_delegation( delegator: Delegator<Self::AccountId>, agent: Agent<Self::AccountId>, amount: Self::Balance, num_slashing_spans: u32, ) -> DispatchResult

Withdraw delegation of delegator to Agent.

If there are funds in Agent account that can be withdrawn, then those funds would be unlocked/released in the delegator’s account.

Source§

fn pending_slash(agent: Agent<Self::AccountId>) -> Option<Self::Balance>

Returns pending slash of the agent.

Source§

type Balance = <<T as Config>::Currency as Inspect<<T as Config>::AccountId>>::Balance

Balance type used by the staking system.
Source§

type AccountId = <T as Config>::AccountId

AccountId type used by the staking system.
Source§

fn agent_transferable_balance( agent: Agent<Self::AccountId>, ) -> Option<Self::Balance>

Returns the total amount of funds that is unbonded and can be withdrawn from the Agent account. None if not an Agent.
Source§

fn delegator_balance( delegator: Delegator<Self::AccountId>, ) -> Option<Self::Balance>

Returns the total amount of funds delegated. None if not a Delegator.
Source§

fn delegator_slash( agent: Agent<Self::AccountId>, delegator: Delegator<Self::AccountId>, value: Self::Balance, maybe_reporter: Option<Self::AccountId>, ) -> DispatchResult

Apply a pending slash to an Agent by slashing value from delegator. Read more
Source§

impl<T: Config> DelegationMigrator for Pallet<T>

Source§

fn force_kill_agent(agent: Agent<Self::AccountId>)

Only used for testing.

Source§

type Balance = <<T as Config>::Currency as Inspect<<T as Config>::AccountId>>::Balance

Balance type used by the staking system.
Source§

type AccountId = <T as Config>::AccountId

AccountId type used by the staking system.
Source§

fn migrate_nominator_to_agent( agent: Agent<Self::AccountId>, reward_account: &Self::AccountId, ) -> DispatchResult

Migrate an existing Nominator to Agent account. Read more
Source§

fn migrate_delegation( agent: Agent<Self::AccountId>, delegator: Delegator<Self::AccountId>, value: Self::Balance, ) -> DispatchResult

Migrate value of delegation to delegator from a migrating agent. Read more
Source§

impl<T: Config> DispatchViewFunction for Pallet<T>

Source§

fn dispatch_view_function<O: Output>( id: &ViewFunctionId, input: &mut &[u8], output: &mut O, ) -> Result<(), ViewFunctionDispatchError>

Source§

impl<T: Config> GetStorageVersion for Pallet<T>

Source§

type InCodeStorageVersion = StorageVersion

This type is generated by the pallet macro. Read more
Source§

fn in_code_storage_version() -> Self::InCodeStorageVersion

Returns the in-code storage version as specified in the storage_version attribute, or [NoStorageVersionSet] if the attribute is missing.
Source§

fn on_chain_storage_version() -> StorageVersion

Returns the storage version of the pallet as last set in the actual on-chain storage.
§

fn current_storage_version() -> Self::InCodeStorageVersion

👎Deprecated: This method has been renamed to in_code_storage_version and will be removed after March 2024.
DEPRECATED: Use [Self::current_storage_version] instead. Read more
Source§

impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

Source§

fn try_state(_n: BlockNumberFor<T>) -> Result<(), TryRuntimeError>

Execute the sanity checks of this pallet, per block. Read more
§

fn on_initialize(_n: BlockNumber) -> Weight

Block initialization hook. This is called at the very beginning of block execution. Read more
§

fn on_finalize(_n: BlockNumber)

Block finalization hook. This is called at the very end of block execution. Read more
§

fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight

Hook to consume a block’s idle time. This will run when the block is being finalized (before [Hooks::on_finalize]). Read more
§

fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)

A hook to run logic after inherent application. Read more
§

fn on_runtime_upgrade() -> Weight

Hook executed when a code change (aka. a “runtime upgrade”) is detected by the FRAME Executive pallet. Read more
§

fn pre_upgrade() -> Result<Vec<u8>, DispatchError>

Execute some pre-checks prior to a runtime upgrade. Read more
§

fn post_upgrade(_state: Vec<u8>) -> Result<(), DispatchError>

Execute some post-checks after a runtime upgrade. Read more
§

fn offchain_worker(_n: BlockNumber)

Implementing this function on a pallet allows you to perform long-running tasks that are dispatched as separate threads, and entirely independent of the main blockchain execution. Read more
§

fn integrity_test()

Check the integrity of this pallet’s configuration. Read more
Source§

impl<T: Config> IntegrityTest for Pallet<T>

Source§

fn integrity_test()

See [Hooks::integrity_test].
Source§

impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

Source§

fn offchain_worker(n: BlockNumberFor<T>)

This function is being called after every block import (when fully synced). Read more
Source§

impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

Source§

fn on_finalize(n: BlockNumberFor<T>)

See [Hooks::on_finalize].
Source§

impl<T: Config> OnGenesis for Pallet<T>

Source§

fn on_genesis()

Something that should happen at genesis.
Source§

impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

Source§

fn on_idle(n: BlockNumberFor<T>, remaining_weight: Weight) -> Weight

See [Hooks::on_idle].
Source§

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

See [Hooks::on_initialize].
Source§

impl<T: Config> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

Source§

fn on_poll(n: BlockNumberFor<T>, weight: &mut WeightMeter)

Code to execute every now and then at the beginning of the block after inherent application. Read more
Source§

impl<T: Config> OnRuntimeUpgrade for Pallet<T>

Source§

fn on_runtime_upgrade() -> Weight

See [Hooks::on_runtime_upgrade].
Source§

fn pre_upgrade() -> Result<Vec<u8>, TryRuntimeError>

See [Hooks::pre_upgrade].
Source§

fn post_upgrade(state: Vec<u8>) -> Result<(), TryRuntimeError>

See [Hooks::post_upgrade].
§

fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>

The expected and default behavior of this method is to handle executing pre_upgrade -> on_runtime_upgrade -> post_upgrade hooks for a migration. Read more
Source§

impl<T: Config> OnStakingUpdate<<T as Config>::AccountId, <<T as Config>::Currency as Inspect<<T as Config>::AccountId>>::Balance> for Pallet<T>

Source§

fn on_slash( who: &T::AccountId, _slashed_active: BalanceOf<T>, _slashed_unlocking: &BTreeMap<EraIndex, BalanceOf<T>>, slashed_total: BalanceOf<T>, )

Fired when a staker is slashed. Read more
Source§

fn on_withdraw(stash: &T::AccountId, amount: BalanceOf<T>)

Fired when a portion of a staker’s balance has been withdrawn.
§

fn on_stake_update(_who: &AccountId, _prev_stake: Option<Stake<Balance>>)

Fired when the stake amount of someone updates. Read more
§

fn on_nominator_add(_who: &AccountId)

Fired when someone sets their intention to nominate. Read more
§

fn on_nominator_update(_who: &AccountId, _prev_nominations: Vec<AccountId>)

Fired when an existing nominator updates their nominations. Read more
§

fn on_nominator_remove(_who: &AccountId, _nominations: Vec<AccountId>)

Fired when someone removes their intention to nominate, either due to chill or validating. Read more
§

fn on_validator_add(_who: &AccountId)

Fired when someone sets their intention to validate. Read more
§

fn on_validator_update(_who: &AccountId)

Fired when an existing validator updates their preferences. Read more
§

fn on_validator_remove(_who: &AccountId)

Fired when someone removes their intention to validate, either due to chill or nominating.
§

fn on_unstake(_who: &AccountId)

Fired when someone is fully unstaked.
Source§

impl<T: Config> PalletInfoAccess for Pallet<T>

Source§

fn index() -> usize

Index of the pallet as configured in the runtime.
Source§

fn name() -> &'static str

Name of the pallet as configured in the runtime.
Source§

fn name_hash() -> [u8; 16]

Two128 hash of name.
Source§

fn module_name() -> &'static str

Name of the Rust module containing the pallet.
Source§

fn crate_version() -> CrateVersion

Version of the crate containing the pallet.
Source§

impl<T: Config> PalletsInfoAccess for Pallet<T>

Source§

fn count() -> usize

The number of pallets’ information that this type represents. Read more
Source§

fn infos() -> Vec<PalletInfoData>

All of the pallets’ information that this type represents.
Source§

impl<T> PartialEq for Pallet<T>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: Config> StorageInfoTrait for Pallet<T>

Source§

fn storage_info() -> Vec<StorageInfo>

Source§

impl<T: Config> TryDecodeEntireStorage for Pallet<T>

Source§

fn try_decode_entire_state() -> Result<usize, Vec<TryDecodeEntireStorageError>>

Decode the entire data under the given storage, returning Ok(bytes_decoded) if success.
Source§

impl<T: Config> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

Source§

fn try_state( n: BlockNumberFor<T>, _s: TryStateSelect, ) -> Result<(), TryRuntimeError>

Execute the state checks.
Source§

impl<T: Config> ViewFunctionIdPrefix for Pallet<T>

Source§

fn prefix() -> [u8; 16]

Source§

impl<T: Config> WhitelistedStorageKeys for Pallet<T>

Source§

fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>

Returns a 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.
Source§

impl<T> Eq for Pallet<T>