mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 10:47:55 +00:00
Rpc for pending rewards (#11831)
* rpc pending rewards * commit * remove unused imports * fix * fix * fmt * fix * fmt * fix * docs * docs & formatting * better formatting * temporary fix * error handling * fix? * fmt * use to_string * fmt * fixed error handling * fix * rpc added to client * Update Cargo.toml * Update Cargo.toml * fix wrong reward counter * expose function * move implementation * docs * docs * docs * Update lib.rs * Update lib.rs * unexpose functions * unused dependency * update Cargo.lock * Update frame/nomination-pools/src/lib.rs * Update lib.rs * Update lib.rs * Update frame/nomination-pools/rpc/runtime-api/src/lib.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * remove rpc * remove rpc directory * final fix Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
Generated
+10
@@ -4759,6 +4759,7 @@ dependencies = [
|
||||
"pallet-multisig",
|
||||
"pallet-nomination-pools",
|
||||
"pallet-nomination-pools-benchmarking",
|
||||
"pallet-nomination-pools-runtime-api",
|
||||
"pallet-offences",
|
||||
"pallet-offences-benchmarking",
|
||||
"pallet-preimage",
|
||||
@@ -5911,6 +5912,15 @@ dependencies = [
|
||||
"sp-std",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pallet-nomination-pools-runtime-api"
|
||||
version = "1.0.0-dev"
|
||||
dependencies = [
|
||||
"parity-scale-codec",
|
||||
"sp-api",
|
||||
"sp-std",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pallet-nomination-pools-test-staking"
|
||||
version = "1.0.0"
|
||||
|
||||
@@ -116,6 +116,7 @@ members = [
|
||||
"frame/nomination-pools",
|
||||
"frame/nomination-pools/benchmarking",
|
||||
"frame/nomination-pools/test-staking",
|
||||
"frame/nomination-pools/runtime-api",
|
||||
"frame/randomness-collective-flip",
|
||||
"frame/ranked-collective",
|
||||
"frame/recovery",
|
||||
|
||||
@@ -79,6 +79,7 @@ pallet-mmr = { version = "4.0.0-dev", default-features = false, path = "../../..
|
||||
pallet-multisig = { version = "4.0.0-dev", default-features = false, path = "../../../frame/multisig" }
|
||||
pallet-nomination-pools = { version = "1.0.0", default-features = false, path = "../../../frame/nomination-pools"}
|
||||
pallet-nomination-pools-benchmarking = { version = "1.0.0", default-features = false, optional = true, path = "../../../frame/nomination-pools/benchmarking" }
|
||||
pallet-nomination-pools-runtime-api = { version = "1.0.0-dev", default-features = false, path = "../../../frame/nomination-pools/runtime-api" }
|
||||
pallet-offences = { version = "4.0.0-dev", default-features = false, path = "../../../frame/offences" }
|
||||
pallet-offences-benchmarking = { version = "4.0.0-dev", path = "../../../frame/offences/benchmarking", default-features = false, optional = true }
|
||||
pallet-preimage = { version = "4.0.0-dev", default-features = false, path = "../../../frame/preimage" }
|
||||
@@ -145,6 +146,7 @@ std = [
|
||||
"pallet-mmr/std",
|
||||
"pallet-multisig/std",
|
||||
"pallet-nomination-pools/std",
|
||||
"pallet-nomination-pools-runtime-api/std",
|
||||
"pallet-identity/std",
|
||||
"pallet-scheduler/std",
|
||||
"node-primitives/std",
|
||||
|
||||
@@ -1835,6 +1835,12 @@ impl_runtime_apis! {
|
||||
}
|
||||
}
|
||||
|
||||
impl pallet_nomination_pools_runtime_api::NominationPoolsApi<Block, AccountId, Balance> for Runtime {
|
||||
fn pending_rewards(member_account: AccountId) -> Balance {
|
||||
NominationPools::pending_rewards(member_account)
|
||||
}
|
||||
}
|
||||
|
||||
impl sp_consensus_babe::BabeApi<Block> for Runtime {
|
||||
fn configuration() -> sp_consensus_babe::BabeGenesisConfiguration {
|
||||
// The choice of `c` parameter (where `1 - c` represents the
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
[package]
|
||||
name = "pallet-nomination-pools-runtime-api"
|
||||
version = "1.0.0-dev"
|
||||
authors = ["Parity Technologies <admin@parity.io>"]
|
||||
edition = "2021"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://substrate.io"
|
||||
repository = "https://github.com/paritytech/substrate/"
|
||||
description = "Runtime API for nomination-pools FRAME pallet"
|
||||
readme = "README.md"
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
||||
[dependencies]
|
||||
codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
|
||||
sp-api = { version = "4.0.0-dev", default-features = false, path = "../../../primitives/api" }
|
||||
sp-std = { version = "4.0.0-dev", default-features = false, path = "../../../primitives/std" }
|
||||
|
||||
[features]
|
||||
default = ["std"]
|
||||
std = [
|
||||
"codec/std",
|
||||
"sp-api/std",
|
||||
"sp-std/std",
|
||||
]
|
||||
@@ -0,0 +1,3 @@
|
||||
Runtime API definition for nomination-pools pallet.
|
||||
|
||||
License: Apache-2.0
|
||||
@@ -0,0 +1,33 @@
|
||||
// This file is part of Substrate.
|
||||
|
||||
// Copyright (C) 2022 Parity Technologies (UK) Ltd.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//! Runtime API definition for nomination-pools pallet.
|
||||
//! Currently supports only one rpc endpoint.
|
||||
|
||||
#![cfg_attr(not(feature = "std"), no_std)]
|
||||
|
||||
use codec::Codec;
|
||||
|
||||
sp_api::decl_runtime_apis! {
|
||||
/// Runtime api for accessing information about nomination pools.
|
||||
pub trait NominationPoolsApi<AccountId, Balance>
|
||||
where AccountId: Codec, Balance: Codec
|
||||
{
|
||||
/// Returns the pending rewards for the member that the AccountId was given for.
|
||||
fn pending_rewards(member: AccountId) -> Balance;
|
||||
}
|
||||
}
|
||||
@@ -939,7 +939,7 @@ pub struct RewardPool<T: Config> {
|
||||
|
||||
impl<T: Config> RewardPool<T> {
|
||||
/// Getter for [`RewardPool::last_recorded_reward_counter`].
|
||||
fn last_recorded_reward_counter(&self) -> T::RewardCounter {
|
||||
pub(crate) fn last_recorded_reward_counter(&self) -> T::RewardCounter {
|
||||
self.last_recorded_reward_counter
|
||||
}
|
||||
|
||||
@@ -2147,6 +2147,20 @@ pub mod pallet {
|
||||
}
|
||||
|
||||
impl<T: Config> Pallet<T> {
|
||||
/// Returns the pending rewards for the specified `member_account`.
|
||||
///
|
||||
/// In the case of error the function returns balance of zero.
|
||||
pub fn pending_rewards(member_account: T::AccountId) -> BalanceOf<T> {
|
||||
if let Some(pool_member) = PoolMembers::<T>::get(member_account) {
|
||||
if let Some(reward_pool) = RewardPools::<T>::get(pool_member.pool_id) {
|
||||
return pool_member
|
||||
.pending_rewards(reward_pool.last_recorded_reward_counter())
|
||||
.unwrap_or_default()
|
||||
}
|
||||
}
|
||||
BalanceOf::<T>::default()
|
||||
}
|
||||
|
||||
/// 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
|
||||
|
||||
Reference in New Issue
Block a user