mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-20 02:21:03 +00:00
Staking and nomination pools runtime API improvements (#13119)
* Adds StakingAPI_nominations_quota and NominationPoolsApi_balanceToPoint and NominationPoolsApi_pointsToBalance runtime APIs * Adds balance param to api_nominations_quota * Update frame/nomination-pools/src/lib.rs Co-authored-by: Anton <anton.kalyaev@gmail.com> * Update frame/nomination-pools/src/lib.rs Co-authored-by: Anton <anton.kalyaev@gmail.com> * Addresses comments - returns zero instead of error in runtime api * Update frame/staking/runtime-api/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/staking/runtime-api/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Addresses PR comments * Update frame/nomination-pools/runtime-api/Cargo.toml Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Fixes points_to_balance logic; adds tests * test comment fix * Update frame/nomination-pools/runtime-api/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Update frame/nomination-pools/runtime-api/src/lib.rs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Fix block pruning (#13323) * Referendum proposal's metadata (#12568) * referenda metadata * todo comment * remove TODO, update rustdocs * referenda clear_metadata origin signed or root * referenda metadata unit tests * drop schema type for referenda metadata * remove metadata type * referenda metadata benches * note different preimages * metadata for democracy pallet * metadata democracy pallet tests and benches * fix cargo clippy * update docs * ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy * ".git/.scripts/bench-bot.sh" pallet dev pallet_referenda * Update the doc frame/democracy/src/lib.rs Co-authored-by: Roman Useinov <roman.useinov@gmail.com> * Update the doc frame/democracy/src/lib.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * reference instead clone for take Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * error rename BadMetadata to PreimageNotExist * clear metadata within internal_cancel_referendum fn * remove redundant clone * collapse metadata api into one set_metadata method * fmt * review fixes * not request preimage on set_metadata * rename events and update docs * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_democracy * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_referenda * rename reset_metadata to transfer_metadata --------- Co-authored-by: command-bot <> Co-authored-by: Roman Useinov <roman.useinov@gmail.com> Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * Improve test coverage of the `Notifications` protocol (#13033) * Add handler and upgrade tests * Add tests for `behaviour.rs` * Apply review comments * Update dependencies * Apply suggestions from code review Co-authored-by: Dmitry Markin <dmitry@markin.tech> * Apply review comments * Fix clippy * Update mockall * Apply review comment --------- Co-authored-by: Dmitry Markin <dmitry@markin.tech> * refactors runtime API logic to own pallet impl block * removes unrelated changes * Fixes cargo doc comments lint * fixes node cargo * fixes comment * restart ci * restart ci * restart ci --------- Co-authored-by: Anton <anton.kalyaev@gmail.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: parity-processbot <> Co-authored-by: Arkadiy Paronyan <arkady.paronyan@gmail.com> Co-authored-by: Muharem Ismailov <ismailov.m.h@gmail.com> Co-authored-by: Roman Useinov <roman.useinov@gmail.com> Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com> Co-authored-by: Dmitry Markin <dmitry@markin.tech>
This commit is contained in:
@@ -2142,24 +2142,6 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
impl<T: Config> Pallet<T> {
|
||||
/// Returns the pending rewards for the specified `member_account`.
|
||||
///
|
||||
/// In the case of error, `None` is returned.
|
||||
pub fn pending_rewards(member_account: T::AccountId) -> Option<BalanceOf<T>> {
|
||||
if let Some(pool_member) = PoolMembers::<T>::get(member_account) {
|
||||
if let Some((reward_pool, bonded_pool)) = RewardPools::<T>::get(pool_member.pool_id)
|
||||
.zip(BondedPools::<T>::get(pool_member.pool_id))
|
||||
{
|
||||
let current_reward_counter = reward_pool
|
||||
.current_reward_counter(pool_member.pool_id, bonded_pool.points)
|
||||
.ok()?;
|
||||
return pool_member.pending_rewards(current_reward_counter).ok()
|
||||
}
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
|
||||
/// The amount of bond that MUST REMAIN IN BONDED in ALL POOLS.
|
||||
///
|
||||
/// It is the responsibility of the depositor to put these funds into the pool initially. Upon
|
||||
@@ -2579,6 +2561,50 @@ impl<T: Config> Pallet<T> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Config> Pallet<T> {
|
||||
/// Returns the pending rewards for the specified `who` account.
|
||||
///
|
||||
/// In the case of error, `None` is returned. Used by runtime API.
|
||||
pub fn api_pending_rewards(who: T::AccountId) -> Option<BalanceOf<T>> {
|
||||
if let Some(pool_member) = PoolMembers::<T>::get(who) {
|
||||
if let Some((reward_pool, bonded_pool)) = RewardPools::<T>::get(pool_member.pool_id)
|
||||
.zip(BondedPools::<T>::get(pool_member.pool_id))
|
||||
{
|
||||
let current_reward_counter = reward_pool
|
||||
.current_reward_counter(pool_member.pool_id, bonded_pool.points)
|
||||
.ok()?;
|
||||
return pool_member.pending_rewards(current_reward_counter).ok()
|
||||
}
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
|
||||
/// Returns the points to balance conversion for a specified pool.
|
||||
///
|
||||
/// If the pool ID does not exist, it returns 0 ratio points to balance. Used by runtime API.
|
||||
pub fn api_points_to_balance(pool_id: PoolId, points: BalanceOf<T>) -> BalanceOf<T> {
|
||||
if let Some(pool) = BondedPool::<T>::get(pool_id) {
|
||||
pool.points_to_balance(points)
|
||||
} else {
|
||||
Zero::zero()
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns the equivalent `new_funds` balance to point conversion for a specified pool.
|
||||
///
|
||||
/// If the pool ID does not exist, returns 0 ratio balance to points. Used by runtime API.
|
||||
pub fn api_balance_to_points(pool_id: PoolId, new_funds: BalanceOf<T>) -> BalanceOf<T> {
|
||||
if let Some(pool) = BondedPool::<T>::get(pool_id) {
|
||||
let bonded_balance =
|
||||
T::Staking::active_stake(&pool.bonded_account()).unwrap_or(Zero::zero());
|
||||
Pallet::<T>::balance_to_point(bonded_balance, pool.points, new_funds)
|
||||
} else {
|
||||
Zero::zero()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Config> OnStakerSlash<T::AccountId, BalanceOf<T>> for Pallet<T> {
|
||||
fn on_slash(
|
||||
pool_account: &T::AccountId,
|
||||
|
||||
Reference in New Issue
Block a user