Skip to content

Commit 230f0be

Browse files
Add derived algorithm_version to node-rewards command (#1875)
1 parent 5dd522a commit 230f0be

File tree

5 files changed

+29
-20
lines changed

5 files changed

+29
-20
lines changed

Cargo.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rs/cli/src/commands/node_rewards/common.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ use csv::Writer;
33
use futures_util::future::join_all;
44
use ic_base_types::{PrincipalId, SubnetId};
55
use ic_canisters::node_rewards::NodeRewardsCanisterWrapper;
6-
use ic_node_rewards_canister_api::DateUtc;
76
use ic_node_rewards_canister_api::provider_rewards_calculation::{DailyNodeFailureRate, DailyNodeProviderRewards, DailyResults};
7+
use ic_node_rewards_canister_api::{DateUtc, RewardsCalculationAlgorithmVersion};
88
use icp_ledger::AccountIdentifier;
99
use itertools::Itertools;
1010
use log::info;
@@ -18,6 +18,7 @@ use tabled::{Table, Tabled};
1818
pub struct NodeRewardsCtx {
1919
pub start_date: NaiveDate,
2020
pub end_date: NaiveDate,
21+
pub algorithm_version: Option<RewardsCalculationAlgorithmVersion>,
2122
pub csv_detailed_output_path: Option<String>,
2223
pub provider_id: Option<String>,
2324
pub compare_with_governance: bool,
@@ -59,8 +60,11 @@ pub trait NodeRewardsDataFetcher {
5960
println!("Fetching node rewards for all providers from NRC from {} to {}...", start_date, end_date);
6061

6162
let days: Vec<DateUtc> = start_date.iter_days().take_while(|day| day <= &end_date).map(DateUtc::from).collect();
62-
let responses: Vec<anyhow::Result<DailyResults>> =
63-
join_all(days.iter().map(|day| async move { node_rewards_client.get_rewards_daily(*day).await })).await;
63+
let responses: Vec<anyhow::Result<DailyResults>> = join_all(
64+
days.iter()
65+
.map(|day| async move { node_rewards_client.get_rewards_daily(*day, ctx.algorithm_version).await }),
66+
)
67+
.await;
6468

6569
let mut providers_rewards: BTreeMap<PrincipalId, Vec<(DateUtc, DailyNodeProviderRewards)>> = BTreeMap::new();
6670
let mut subnets_failure_rates: BTreeMap<SubnetId, Vec<(DateUtc, f64)>> = BTreeMap::new();

rs/cli/src/commands/node_rewards/ongoing.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ impl ExecutableCommand for Ongoing {
7070
let rewards_ctx = NodeRewardsCtx {
7171
start_date,
7272
end_date,
73+
algorithm_version: None,
7374
csv_detailed_output_path: self.common.csv_detailed_output_path.clone(),
7475
provider_id: self.common.provider_id.clone(),
7576
governance_providers_rewards,

rs/cli/src/commands/node_rewards/past_rewards.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use chrono::{DateTime, Datelike};
22
use clap::Args;
33
use ic_canisters::governance::GovernanceCanisterWrapper;
44
use ic_canisters::node_rewards::NodeRewardsCanisterWrapper;
5+
use ic_node_rewards_canister_api::RewardsCalculationAlgorithmVersion;
56
use log::info;
67
use std::collections::BTreeMap;
78

@@ -75,10 +76,12 @@ impl ExecutableCommand for PastRewards {
7576
.ok_or_else(|| anyhow::anyhow!("Cannot get previous day"))?;
7677

7778
let node_providers = governance_client.get_node_providers().await?;
79+
let algorithm_version = last.algorithm_version.map(|v| RewardsCalculationAlgorithmVersion { version: v });
7880

7981
let rewards_ctx = NodeRewardsCtx {
8082
start_date,
8183
end_date,
84+
algorithm_version,
8285
csv_detailed_output_path: self.common.csv_detailed_output_path.clone(),
8386
provider_id: self.common.provider_id.clone(),
8487
governance_providers_rewards,

rs/ic-canisters/src/node_rewards.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ use std::str::FromStr;
22

33
use crate::IcAgentCanisterClient;
44
use candid::Principal;
5-
use ic_node_rewards_canister_api::provider_rewards_calculation::{
6-
DailyResults, DateUtc, GetNodeProvidersRewardsCalculationRequest, GetNodeProvidersRewardsCalculationResponse,
5+
use ic_node_rewards_canister_api::{
6+
RewardsCalculationAlgorithmVersion,
7+
provider_rewards_calculation::{DailyResults, DateUtc, GetNodeProvidersRewardsCalculationRequest, GetNodeProvidersRewardsCalculationResponse},
78
};
89

910
const NODE_REWARDS_CANISTER: &str = "sgymv-uiaaa-aaaaa-aaaia-cai";
@@ -23,16 +24,16 @@ impl NodeRewardsCanisterWrapper {
2324
Self { agent }
2425
}
2526

26-
pub async fn get_rewards_daily(&self, day: DateUtc) -> anyhow::Result<DailyResults> {
27+
pub async fn get_rewards_daily(
28+
&self,
29+
day: DateUtc,
30+
algorithm_version: Option<RewardsCalculationAlgorithmVersion>,
31+
) -> anyhow::Result<DailyResults> {
2732
self.agent
2833
.query::<GetNodeProvidersRewardsCalculationResponse>(
2934
&Principal::from_str(NODE_REWARDS_CANISTER).map_err(anyhow::Error::from)?,
3035
"get_node_providers_rewards_calculation",
31-
candid::encode_one(GetNodeProvidersRewardsCalculationRequest {
32-
day,
33-
// Use the default version
34-
algorithm_version: None,
35-
})?,
36+
candid::encode_one(GetNodeProvidersRewardsCalculationRequest { day, algorithm_version })?,
3637
)
3738
.await?
3839
.map_err(|e| anyhow::anyhow!(e))

0 commit comments

Comments
 (0)