Skip to content

Commit

Permalink
chore(nns): Deleted set_initial_voting_power_economics. (#3778)
Browse files Browse the repository at this point in the history
Because it was a one time use code, and it has been released already.

This is the denouement of [PR 2580].

[PR 2580]: #2580
  • Loading branch information
daniel-wong-dfinity-org authored Feb 5, 2025
1 parent 052e611 commit 9dd1f0c
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 130 deletions.
9 changes: 2 additions & 7 deletions rs/nns/governance/canister/canister.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ use ic_nns_common::{
};
use ic_nns_constants::LEDGER_CANISTER_ID;
use ic_nns_governance::{
data_migration::set_initial_voting_power_economics,
decoder_config, encode_metrics,
governance::{Environment, Governance, HeapGrowthPotential, RngError, TimeWarp as GovTimeWarp},
is_prune_following_enabled,
Expand Down Expand Up @@ -503,8 +502,7 @@ fn canister_init_(init_payload: ApiGovernanceProto) {

schedule_timers();

let mut governance_proto = InternalGovernanceProto::from(init_payload);
set_initial_voting_power_economics(&mut governance_proto);
let governance_proto = InternalGovernanceProto::from(init_payload);
set_governance(Governance::new(
governance_proto,
Box::new(CanisterEnv::new()),
Expand All @@ -527,7 +525,7 @@ fn canister_pre_upgrade() {
fn canister_post_upgrade() {
println!("{}Executing post upgrade", LOG_PREFIX);

let mut restored_state = with_upgrades_memory(|memory| {
let restored_state = with_upgrades_memory(|memory| {
let result: Result<InternalGovernanceProto, _> = load_protobuf(memory);
result
})
Expand All @@ -536,9 +534,6 @@ fn canister_post_upgrade() {
CANISTER MIGHT HAVE BROKEN STATE!!!!.",
);

// TODO(NNS1-3446): This can be deleted after it has been released.
set_initial_voting_power_economics(&mut restored_state);

grow_upgrades_memory_to(WASM_PAGES_RESERVED_FOR_UPGRADES_MEMORY);

println!(
Expand Down
63 changes: 0 additions & 63 deletions rs/nns/governance/src/data_migration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,69 +8,6 @@
//! initial value, but thereafter, it can be changed as the result of requests
//! (e.g. create a proposal followed by many votes in favor).
use crate::{
governance::LOG_PREFIX,
pb::v1::{Governance, VotingPowerEconomics},
};

#[path = "data_migration_tests.rs"]
#[cfg(test)]
mod tests;

/// This ensures that the fields in voting_power_economics are set.
///
/// If they already have Some value, the existing values are left alone.
///
/// Whereas, if values are missing (or voting_power_economics itself is None),
/// they get set according to DEFAULT_VOTING_POWER_ECONOMICS.
///
/// What we expect in production is that when governance is upgraded,
/// voting_power_economics will default to None, and during post_ugprade, this
/// gets called, causing voting_power_economics to be set to
/// DEFAULT_VOTING_POWER_ECONOMICS.
///
/// In testing, when a new governance canister is created,
/// voting_power_economics gets set in init, which also calls this.
pub fn set_initial_voting_power_economics(governance: &mut Governance) {
let economics = governance.economics.as_mut();

let Some(economics) = economics else {
println!("{}ERROR: No NetworkEconomics!", LOG_PREFIX);
return;
};

let voting_power_economics = economics.voting_power_economics.as_mut();
let default = VotingPowerEconomics::with_default_values();

let Some(voting_power_economics) = voting_power_economics else {
println!("{}Setting voting_power_economics to default.", LOG_PREFIX);
economics.voting_power_economics = Some(default);
return;
};

let VotingPowerEconomics {
start_reducing_voting_power_after_seconds,
clear_following_after_seconds,
} = voting_power_economics;

if start_reducing_voting_power_after_seconds.is_none() {
println!(
"{}WARNING: voting_power_economics was set, but not its \
start_reducing_voting_power_after_seconds field. This is weird. \
Nevertheless, setting the field to the default.",
LOG_PREFIX,
);
*start_reducing_voting_power_after_seconds =
default.start_reducing_voting_power_after_seconds;
}

if clear_following_after_seconds.is_none() {
println!(
"{}WARNING: voting_power_economics was set, but not its \
clear_following_after_seconds field. This is weird. \
Nevertheless, setting the field to the default.",
LOG_PREFIX,
);
*clear_following_after_seconds = default.clear_following_after_seconds;
}
}
61 changes: 1 addition & 60 deletions rs/nns/governance/src/data_migration_tests.rs
Original file line number Diff line number Diff line change
@@ -1,61 +1,2 @@
#[allow(unused)]
use super::*;
use crate::pb::v1::{Governance as GovernanceProto, NetworkEconomics, VotingPowerEconomics};
use lazy_static::lazy_static;

mod set_initial_voting_power_economics {
use super::*;

lazy_static! {
static ref GOVERNANCE_PROTO: GovernanceProto = GovernanceProto {
economics: Some(NetworkEconomics::with_default_values()),
..Default::default()
};
}

#[test]
fn test_typical() {
let mut governance_proto = GOVERNANCE_PROTO.clone();
governance_proto
.economics
.as_mut()
.unwrap()
.voting_power_economics = None;

set_initial_voting_power_economics(&mut governance_proto);

assert_eq!(
governance_proto.economics.unwrap().voting_power_economics,
Some(VotingPowerEconomics {
start_reducing_voting_power_after_seconds: Some(15_778_800), // 0.5 * 365.25 days.
clear_following_after_seconds: Some(2_629_800), // 1/12 * 365.25 days
}),
);
}

#[test]
fn test_weird() {
let mut governance_proto = GOVERNANCE_PROTO.clone();
{
let voting_power_economics = governance_proto
.economics
.as_mut()
.unwrap()
.voting_power_economics
.as_mut()
.unwrap();

voting_power_economics.start_reducing_voting_power_after_seconds = Some(42);
voting_power_economics.clear_following_after_seconds = None;
}

set_initial_voting_power_economics(&mut governance_proto);

assert_eq!(
governance_proto.economics.unwrap().voting_power_economics,
Some(VotingPowerEconomics {
start_reducing_voting_power_after_seconds: Some(42), // Do not touch.
clear_following_after_seconds: Some(2_629_800), // 1/12 * 365.25 days
}),
);
}
} // mod set_initial_voting_power_economics

0 comments on commit 9dd1f0c

Please sign in to comment.