Skip to content

Commit 39df9c9

Browse files
Add base and adjusted rewards total to summary csv (#1876)
1 parent 230f0be commit 39df9c9

File tree

3 files changed

+32
-19
lines changed

3 files changed

+32
-19
lines changed

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

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ pub struct NodeRewardsCtx {
2020
pub end_date: NaiveDate,
2121
pub algorithm_version: Option<RewardsCalculationAlgorithmVersion>,
2222
pub csv_detailed_output_path: Option<String>,
23-
pub provider_id: Option<String>,
2423
pub compare_with_governance: bool,
2524
pub governance_providers_rewards: BTreeMap<PrincipalId, u64>,
2625
pub governance_rewards_raw: ic_nns_governance_api::MonthlyNodeProviderRewards,
@@ -86,14 +85,6 @@ pub trait NodeRewardsDataFetcher {
8685
}
8786
}
8887

89-
if let Some(ref provider_filter) = ctx.provider_id {
90-
providers_rewards.retain(|provider_id, _| {
91-
let provider_id_str = provider_id.to_string();
92-
let prefix = get_provider_prefix(&provider_id_str);
93-
provider_id_str == *provider_filter || prefix == *provider_filter
94-
});
95-
}
96-
9788
Ok(NrcData {
9889
providers_rewards,
9990
subnets_failure_rates,
@@ -402,7 +393,7 @@ pub trait NodeRewardsCsvOutput {
402393

403394
// Generate node providers summary CSV with ICP rewards and accounts only for PastRewards mode
404395
if ctx.is_past_rewards_mode {
405-
self.create_node_providers_summary_csv(&rewards_dir)?;
396+
self.create_node_providers_summary_csv(&rewards_dir, nrc_data)?;
406397
}
407398

408399
Ok(())
@@ -781,12 +772,18 @@ pub trait NodeRewardsCsvOutput {
781772
}
782773

783774
/// Create node providers summary CSV with provider IDs, rewards in ICP, and account information
784-
fn create_node_providers_summary_csv(&self, output_dir: &str) -> anyhow::Result<()> {
775+
fn create_node_providers_summary_csv(&self, output_dir: &str, nrc_data: &NrcData) -> anyhow::Result<()> {
785776
let filename = format!("{}/node_providers_summary.csv", output_dir);
786777
let mut wtr = Writer::from_path(&filename)?;
787778

788779
// Write header
789-
wtr.write_record(["node_provider_id", "rewards_icp", "account_id"])?;
780+
wtr.write_record([
781+
"node_provider_id",
782+
"rewards_icp",
783+
"account_id",
784+
"total_base_rewards_xdr_permyriad",
785+
"total_adjusted_rewards_xdr_permyriad",
786+
])?;
790787

791788
let ctx = self.ctx();
792789

@@ -820,7 +817,29 @@ pub trait NodeRewardsCsvOutput {
820817
.map(|s| s.to_string())
821818
.unwrap_or("".to_string());
822819

823-
wtr.write_record([&provider_id, &format!("{:.8}", rewards_icp), &account_id])?;
820+
// Calculate total base and adjusted rewards from nrc_data (sum across all days)
821+
let (total_base_rewards, total_adjusted_rewards) = provider_id_principal
822+
.and_then(|id| nrc_data.providers_rewards.get(&id))
823+
.map(|daily_rewards| {
824+
let base_total: u64 = daily_rewards
825+
.iter()
826+
.map(|(_, reward)| reward.total_base_rewards_xdr_permyriad.unwrap_or(0))
827+
.sum();
828+
let adjusted_total: u64 = daily_rewards
829+
.iter()
830+
.map(|(_, reward)| reward.total_adjusted_rewards_xdr_permyriad.unwrap_or(0))
831+
.sum();
832+
(base_total, adjusted_total)
833+
})
834+
.unwrap_or((0, 0));
835+
836+
wtr.write_record([
837+
&provider_id,
838+
&format!("{:.8}", rewards_icp),
839+
&account_id,
840+
&total_base_rewards.to_string(),
841+
&total_adjusted_rewards.to_string(),
842+
])?;
824843
}
825844

826845
wtr.flush()?;
@@ -836,10 +855,6 @@ pub struct CommonArgs {
836855
#[arg(long)]
837856
pub csv_detailed_output_path: Option<String>,
838857

839-
/// Filter to a single provider (full principal or provider prefix)
840-
#[arg(long)]
841-
pub provider_id: Option<String>,
842-
843858
/// If set, display comparison table with governance rewards
844859
#[arg(long)]
845860
pub compare_with_governance: bool,

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ impl ExecutableCommand for Ongoing {
7272
end_date,
7373
algorithm_version: None,
7474
csv_detailed_output_path: self.common.csv_detailed_output_path.clone(),
75-
provider_id: self.common.provider_id.clone(),
7675
governance_providers_rewards,
7776
compare_with_governance: self.common.compare_with_governance,
7877
governance_rewards_raw: last.clone(),

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ impl ExecutableCommand for PastRewards {
8383
end_date,
8484
algorithm_version,
8585
csv_detailed_output_path: self.common.csv_detailed_output_path.clone(),
86-
provider_id: self.common.provider_id.clone(),
8786
governance_providers_rewards,
8887
compare_with_governance: self.common.compare_with_governance,
8988
governance_rewards_raw: last.clone(),

0 commit comments

Comments
 (0)