pub type AssetRewards = Pallet<Runtime>;
Aliased Type§
struct AssetRewards(/* private fields */);
Implementations
Source§impl<T> Pallet<T>where
T: Config,
impl<T> Pallet<T>where
T: Config,
Pallet’s callable functions.
Sourcepub fn create_pool(
origin: <T as Config>::RuntimeOrigin,
staked_asset_id: Box<<T as Config>::AssetId>,
reward_asset_id: Box<<T as Config>::AssetId>,
reward_rate_per_block: <T as Config>::Balance,
expiry: DispatchTime<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>,
admin: Option<<T as Config>::AccountId>,
) -> Result<(), DispatchError>
pub fn create_pool( origin: <T as Config>::RuntimeOrigin, staked_asset_id: Box<<T as Config>::AssetId>, reward_asset_id: Box<<T as Config>::AssetId>, reward_rate_per_block: <T as Config>::Balance, expiry: DispatchTime<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, admin: Option<<T as Config>::AccountId>, ) -> Result<(), DispatchError>
Create a new reward pool.
Parameters:
origin
: must beConfig::CreatePoolOrigin
;staked_asset_id
: the asset to be staked in the pool;reward_asset_id
: the asset to be distributed as rewards;reward_rate_per_block
: the amount of reward tokens distributed per block;expiry
: the block number at which the pool will cease to accumulate rewards. TheDispatchTime::After
variant evaluated at the execution time.admin
: the account allowed to extend the pool expiration, increase the rewards rate and receive the unutilized reward tokens back after the pool completion. IfNone
, the caller is set as an admin.
Sourcepub fn stake(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
amount: <T as Config>::Balance,
) -> Result<(), DispatchError>
pub fn stake( origin: <T as Config>::RuntimeOrigin, pool_id: u32, amount: <T as Config>::Balance, ) -> Result<(), DispatchError>
Stake additional tokens in a pool.
A freeze is placed on the staked tokens.
Sourcepub fn unstake(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
amount: <T as Config>::Balance,
staker: Option<<T as Config>::AccountId>,
) -> Result<(), DispatchError>
pub fn unstake( origin: <T as Config>::RuntimeOrigin, pool_id: u32, amount: <T as Config>::Balance, staker: Option<<T as Config>::AccountId>, ) -> Result<(), DispatchError>
Unstake tokens from a pool.
Removes the freeze on the staked tokens.
Parameters:
- origin: must be the
staker
if the pool is still active. Otherwise, any account. - pool_id: the pool to unstake from.
- amount: the amount of tokens to unstake.
- staker: the account to unstake from. If
None
, the caller is used.
Sourcepub fn harvest_rewards(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
staker: Option<<T as Config>::AccountId>,
) -> Result<(), DispatchError>
pub fn harvest_rewards( origin: <T as Config>::RuntimeOrigin, pool_id: u32, staker: Option<<T as Config>::AccountId>, ) -> Result<(), DispatchError>
Harvest unclaimed pool rewards.
Parameters:
- origin: must be the
staker
if the pool is still active. Otherwise, any account. - pool_id: the pool to harvest from.
- staker: the account for which to harvest rewards. If
None
, the caller is used.
Sourcepub fn set_pool_reward_rate_per_block(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
new_reward_rate_per_block: <T as Config>::Balance,
) -> Result<(), DispatchError>
pub fn set_pool_reward_rate_per_block( origin: <T as Config>::RuntimeOrigin, pool_id: u32, new_reward_rate_per_block: <T as Config>::Balance, ) -> Result<(), DispatchError>
Modify a pool reward rate.
Currently the reward rate can only be increased.
Only the pool admin may perform this operation.
Sourcepub fn set_pool_admin(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
new_admin: <T as Config>::AccountId,
) -> Result<(), DispatchError>
pub fn set_pool_admin( origin: <T as Config>::RuntimeOrigin, pool_id: u32, new_admin: <T as Config>::AccountId, ) -> Result<(), DispatchError>
Modify a pool admin.
Only the pool admin may perform this operation.
Sourcepub fn set_pool_expiry_block(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
new_expiry: DispatchTime<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>,
) -> Result<(), DispatchError>
pub fn set_pool_expiry_block( origin: <T as Config>::RuntimeOrigin, pool_id: u32, new_expiry: DispatchTime<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, ) -> Result<(), DispatchError>
Set when the pool should expire.
Currently the expiry block can only be extended.
Only the pool admin may perform this operation.
Sourcepub fn deposit_reward_tokens(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
amount: <T as Config>::Balance,
) -> Result<(), DispatchError>
pub fn deposit_reward_tokens( origin: <T as Config>::RuntimeOrigin, pool_id: u32, amount: <T as Config>::Balance, ) -> Result<(), DispatchError>
Convenience method to deposit reward tokens into a pool.
This method is not strictly necessary (tokens could be transferred directly to the pool pot address), but is provided for convenience so manual derivation of the account id is not required.
Sourcepub fn cleanup_pool(
origin: <T as Config>::RuntimeOrigin,
pool_id: u32,
) -> Result<(), DispatchError>
pub fn cleanup_pool( origin: <T as Config>::RuntimeOrigin, pool_id: u32, ) -> Result<(), DispatchError>
Cleanup a pool.
Origin must be the pool admin.
Cleanup storage, release any associated storage cost and return the remaining reward tokens to the admin.
Source§impl<T> Pallet<T>where
T: Config,
impl<T> Pallet<T>where
T: Config,
Sourcepub fn pool_creation_footprint() -> Footprint
pub fn pool_creation_footprint() -> Footprint
The pool creation footprint.
The footprint specifically accounts for the storage footprint of the pool’s information itself, excluding any potential storage footprint related to the stakers.
Sourcepub fn pool_account_id(id: &u32) -> <T as Config>::AccountId
pub fn pool_account_id(id: &u32) -> <T as Config>::AccountId
Derive a pool account ID from the pool’s ID.
Sourcepub fn update_pool_and_staker_rewards(
pool_info: &PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>,
staker_info: &PoolStakerInfo<<T as Config>::Balance>,
) -> Result<(PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, PoolStakerInfo<<T as Config>::Balance>), DispatchError>
pub fn update_pool_and_staker_rewards( pool_info: &PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, staker_info: &PoolStakerInfo<<T as Config>::Balance>, ) -> Result<(PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, PoolStakerInfo<<T as Config>::Balance>), DispatchError>
Computes update pool and staker reward state.
Should be called prior to any operation involving a staker.
Returns the updated pool and staker info.
NOTE: this function has no side-effects. Side-effects such as storage modifications are the responsibility of the caller.
Sourcepub fn update_pool_rewards(
pool_info: &PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>,
reward_per_token: <T as Config>::Balance,
) -> Result<PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, DispatchError>
pub fn update_pool_rewards( pool_info: &PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, reward_per_token: <T as Config>::Balance, ) -> Result<PoolInfo<<T as Config>::AccountId, <T as Config>::AssetId, <T as Config>::Balance, <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number>, DispatchError>
Computes update pool reward state.
Should be called every time the pool is adjusted, and a staker is not involved.
Returns the updated pool and staker info.
NOTE: this function has no side-effects. Side-effects such as storage modifications are the responsibility of the caller.
Trait Implementations
Source§impl<T> BeforeAllRuntimeMigrations for Pallet<T>where
T: Config,
impl<T> BeforeAllRuntimeMigrations for Pallet<T>where
T: Config,
Source§fn before_all_runtime_migrations() -> Weight
fn before_all_runtime_migrations() -> Weight
Source§impl<T> Benchmarking for Pallet<T>
impl<T> Benchmarking for Pallet<T>
Source§fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata>
fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata>
Source§fn run_benchmark(
extrinsic: &[u8],
c: &[(BenchmarkParameter, u32)],
whitelist: &[TrackedStorageKey],
verify: bool,
internal_repeats: u32,
) -> Result<Vec<BenchmarkResult>, BenchmarkError>
fn run_benchmark( extrinsic: &[u8], c: &[(BenchmarkParameter, u32)], whitelist: &[TrackedStorageKey], verify: bool, internal_repeats: u32, ) -> Result<Vec<BenchmarkResult>, BenchmarkError>
Source§impl<T> DispatchViewFunction for Pallet<T>where
T: Config,
impl<T> DispatchViewFunction for Pallet<T>where
T: Config,
fn dispatch_view_function<O>(
id: &ViewFunctionId,
input: &mut &[u8],
output: &mut O,
) -> Result<(), ViewFunctionDispatchError>where
O: Output,
Source§impl<T> GetStorageVersion for Pallet<T>where
T: Config,
impl<T> GetStorageVersion for Pallet<T>where
T: Config,
Source§fn in_code_storage_version() -> <Pallet<T> as GetStorageVersion>::InCodeStorageVersion
fn in_code_storage_version() -> <Pallet<T> as GetStorageVersion>::InCodeStorageVersion
storage_version
attribute, or
NoStorageVersionSet
if the attribute is missing.Source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
Source§fn current_storage_version() -> Self::InCodeStorageVersion
fn current_storage_version() -> Self::InCodeStorageVersion
in_code_storage_version
and will be removed after March 2024.Self::current_storage_version
instead. Read moreSource§impl<T> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§fn integrity_test()
fn integrity_test()
Source§fn on_initialize(_n: BlockNumber) -> Weight
fn on_initialize(_n: BlockNumber) -> Weight
Source§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
Source§fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
Hooks::on_finalize
). Read moreSource§fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
Source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Executive
pallet. Read moreSource§fn try_state(_n: BlockNumber) -> Result<(), DispatchError>
fn try_state(_n: BlockNumber) -> Result<(), DispatchError>
Source§fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
Source§fn post_upgrade(_state: Vec<u8>) -> Result<(), DispatchError>
fn post_upgrade(_state: Vec<u8>) -> Result<(), DispatchError>
Source§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
Source§impl<T> IntegrityTest for Pallet<T>where
T: Config,
impl<T> IntegrityTest for Pallet<T>where
T: Config,
Source§impl<T> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§fn on_finalize(
n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number,
)
fn on_finalize( n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number, )
Hooks::on_finalize
.Source§impl<T> OnGenesis for Pallet<T>where
T: Config,
impl<T> OnGenesis for Pallet<T>where
T: Config,
Source§fn on_genesis()
fn on_genesis()
Source§impl<T> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§fn on_initialize(
n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number,
) -> Weight
fn on_initialize( n: <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number, ) -> Weight
Hooks::on_initialize
.Source§impl<T> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> OnRuntimeUpgrade for Pallet<T>where
T: Config,
impl<T> OnRuntimeUpgrade for Pallet<T>where
T: Config,
Source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Source§fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
fn pre_upgrade() -> Result<Vec<u8>, DispatchError>
Hooks::pre_upgrade
.Source§fn post_upgrade(state: Vec<u8>) -> Result<(), DispatchError>
fn post_upgrade(state: Vec<u8>) -> Result<(), DispatchError>
Hooks::post_upgrade
.Source§fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
pre_upgrade
->
on_runtime_upgrade
-> post_upgrade
hooks for a migration. Read moreSource§impl<T> PalletInfoAccess for Pallet<T>where
T: Config,
impl<T> PalletInfoAccess for Pallet<T>where
T: Config,
Source§fn module_name() -> &'static str
fn module_name() -> &'static str
Source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
Source§impl<T> PalletsInfoAccess for Pallet<T>where
T: Config,
impl<T> PalletsInfoAccess for Pallet<T>where
T: Config,
Source§impl<T> StorageInfoTrait for Pallet<T>where
T: Config,
impl<T> StorageInfoTrait for Pallet<T>where
T: Config,
fn storage_info() -> Vec<StorageInfo>
Source§impl<T> TryDecodeEntireStorage for Pallet<T>where
T: Config,
impl<T> TryDecodeEntireStorage for Pallet<T>where
T: Config,
Source§fn try_decode_entire_state() -> Result<usize, Vec<TryDecodeEntireStorageError>>
fn try_decode_entire_state() -> Result<usize, Vec<TryDecodeEntireStorageError>>
Ok(bytes_decoded)
if success.Source§impl<T> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
impl<T> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>where
T: Config,
Source§impl<T> WhitelistedStorageKeys for Pallet<T>where
T: Config,
impl<T> WhitelistedStorageKeys for Pallet<T>where
T: Config,
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.