Skip to content

Commit 2eae439

Browse files
refactor(nns): Delete private neuron flags. (dfinity#3689)
# Motivation This feature ([private & public neurons][feat]) has completed its probation. [feat]: https://dashboard.internetcomputer.org/proposal/130832 # References Closes [NNS1-3228] and [NNS1-3248]. [NNS1-3228]: https://dfinity.atlassian.net/browse/NNS1-3228 [NNS1-3248]: https://dfinity.atlassian.net/browse/NNS1-3248
1 parent de17b0d commit 2eae439

File tree

5 files changed

+70
-422
lines changed

5 files changed

+70
-422
lines changed

rs/nns/governance/src/governance.rs

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::{
2-
are_set_visibility_proposals_enabled, decoder_config,
2+
decoder_config,
33
governance::{
44
merge_neurons::{
55
build_merge_neurons_response, calculate_merge_neurons_effect,
@@ -527,18 +527,6 @@ impl ManageNeuron {
527527
(Some(nid), None) => Ok(Some(NeuronIdOrSubaccount::NeuronId(*nid))),
528528
}
529529
}
530-
531-
// TODO(NNS1-3228): Delete this.
532-
fn is_set_visibility(&self) -> bool {
533-
let Some(Command::Configure(ref configure)) = self.command else {
534-
return false;
535-
};
536-
537-
matches!(
538-
configure.operation,
539-
Some(manage_neuron::configure::Operation::SetVisibility(_)),
540-
)
541-
}
542530
}
543531

544532
impl Command {
@@ -4978,21 +4966,6 @@ impl Governance {
49784966
&self,
49794967
manage_neuron: &ManageNeuron,
49804968
) -> Result<(), GovernanceError> {
4981-
// TODO(NNS1-3228): Delete this.
4982-
if manage_neuron.is_set_visibility() &&
4983-
// But SetVisibility proposals are disabled
4984-
!are_set_visibility_proposals_enabled()
4985-
{
4986-
return Err(GovernanceError::new_with_message(
4987-
ErrorType::Unavailable,
4988-
"Setting neuron visibility via proposal is not allowed yet, \
4989-
but it will be in the not too distant future. If you need \
4990-
this sooner, please, start a new thread at forum.dfinity.org \
4991-
and describe your use case."
4992-
.to_string(),
4993-
));
4994-
}
4995-
49964969
let managed_id = manage_neuron
49974970
.get_neuron_id_or_subaccount()?
49984971
.ok_or_else(|| {

rs/nns/governance/src/lib.rs

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -200,15 +200,6 @@ thread_local! {
200200

201201
static IS_PRUNE_FOLLOWING_ENABLED: Cell<bool> = const { Cell::new(true) };
202202

203-
// TODO(NNS1-3247): To release the feature, set this to true. Do not simply
204-
// delete. That way, if we need to recall the feature, we can do that via a
205-
// 1-line change (by replacing true with `cfg!(feature = "test")`). After
206-
// the feature has been released, it will go through its "probation" period.
207-
// If that goes well, then, this can be deleted.
208-
static IS_PRIVATE_NEURON_ENFORCEMENT_ENABLED: Cell<bool> = const { Cell::new(true) };
209-
210-
static ARE_SET_VISIBILITY_PROPOSALS_ENABLED: Cell<bool> = const { Cell::new(true) };
211-
212203
static ALLOW_ACTIVE_NEURONS_IN_STABLE_MEMORY: Cell<bool> = const { Cell::new(true) };
213204

214205
static USE_STABLE_MEMORY_FOLLOWING_INDEX: Cell<bool> = const { Cell::new(true) };
@@ -255,38 +246,6 @@ pub fn temporarily_disable_prune_following() -> Temporary {
255246
Temporary::new(&IS_PRUNE_FOLLOWING_ENABLED, false)
256247
}
257248

258-
pub fn is_private_neuron_enforcement_enabled() -> bool {
259-
IS_PRIVATE_NEURON_ENFORCEMENT_ENABLED.with(|ok| ok.get())
260-
}
261-
262-
/// Only integration tests should use this.
263-
#[cfg(any(test, feature = "canbench-rs", feature = "test"))]
264-
pub fn temporarily_enable_private_neuron_enforcement() -> Temporary {
265-
Temporary::new(&IS_PRIVATE_NEURON_ENFORCEMENT_ENABLED, true)
266-
}
267-
268-
/// Only integration tests should use this.
269-
#[cfg(any(test, feature = "canbench-rs", feature = "test"))]
270-
pub fn temporarily_disable_private_neuron_enforcement() -> Temporary {
271-
Temporary::new(&IS_PRIVATE_NEURON_ENFORCEMENT_ENABLED, false)
272-
}
273-
274-
pub fn are_set_visibility_proposals_enabled() -> bool {
275-
ARE_SET_VISIBILITY_PROPOSALS_ENABLED.with(|ok| ok.get())
276-
}
277-
278-
/// Only integration tests should use this.
279-
#[cfg(any(test, feature = "canbench-rs", feature = "test"))]
280-
pub fn temporarily_enable_set_visibility_proposals() -> Temporary {
281-
Temporary::new(&ARE_SET_VISIBILITY_PROPOSALS_ENABLED, true)
282-
}
283-
284-
/// Only integration tests should use this.
285-
#[cfg(any(test, feature = "canbench-rs", feature = "test"))]
286-
pub fn temporarily_disable_set_visibility_proposals() -> Temporary {
287-
Temporary::new(&ARE_SET_VISIBILITY_PROPOSALS_ENABLED, false)
288-
}
289-
290249
pub fn allow_active_neurons_in_stable_memory() -> bool {
291250
ALLOW_ACTIVE_NEURONS_IN_STABLE_MEMORY.with(|ok| ok.get())
292251
}

rs/nns/governance/src/neuron/types.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use crate::{
33
LOG_PREFIX, MAX_DISSOLVE_DELAY_SECONDS, MAX_NEURON_AGE_FOR_AGE_BONUS,
44
MAX_NEURON_RECENT_BALLOTS, MAX_NUM_HOT_KEYS_PER_NEURON,
55
},
6-
is_private_neuron_enforcement_enabled, is_voting_power_adjustment_enabled,
6+
is_voting_power_adjustment_enabled,
77
neuron::{combine_aged_stakes, dissolve_state_and_age::DissolveStateAndAge, neuron_stake_e8s},
88
neuron_store::NeuronStoreError,
99
pb::v1::{
@@ -265,11 +265,7 @@ impl Neuron {
265265
return Some(Visibility::Public);
266266
}
267267

268-
if is_private_neuron_enforcement_enabled() {
269-
return self.visibility.or(Some(Visibility::Private));
270-
}
271-
272-
self.visibility
268+
self.visibility.or(Some(Visibility::Private))
273269
}
274270

275271
/// Sets a neuron's dissolve state and age.
@@ -955,8 +951,7 @@ impl Neuron {
955951
let mut recent_ballots = vec![];
956952
let mut joined_community_fund_timestamp_seconds = None;
957953

958-
let show_full = !is_private_neuron_enforcement_enabled()
959-
|| self.visibility() == Some(Visibility::Public)
954+
let show_full = self.visibility() == Some(Visibility::Public)
960955
|| self.is_hotkey_or_controller(&requester);
961956
if show_full {
962957
let mut additional_recent_ballots = self

rs/nns/governance/src/neuron/types/tests.rs

Lines changed: 31 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ use crate::{
55
manage_neuron::{SetDissolveTimestamp, StartDissolving},
66
VotingPowerEconomics,
77
},
8-
temporarily_disable_private_neuron_enforcement, temporarily_disable_voting_power_adjustment,
9-
temporarily_enable_private_neuron_enforcement, temporarily_enable_voting_power_adjustment,
8+
temporarily_disable_voting_power_adjustment, temporarily_enable_voting_power_adjustment,
109
};
1110
use ic_cdk::println;
1211

@@ -437,63 +436,37 @@ fn test_visibility_when_converting_neuron_to_neuron_info_and_neuron_proto() {
437436
);
438437

439438
// Case 1: visibility is explicitly set.
440-
for set_enforcement in [
441-
temporarily_enable_private_neuron_enforcement,
442-
temporarily_disable_private_neuron_enforcement,
443-
] {
444-
let _restore_on_drop = set_enforcement();
445-
446-
for visibility in [Visibility::Public, Visibility::Private] {
447-
let neuron = builder.clone().with_visibility(Some(visibility)).build();
439+
for visibility in [Visibility::Public, Visibility::Private] {
440+
let neuron = builder.clone().with_visibility(Some(visibility)).build();
448441

449-
assert_eq!(neuron.visibility(), Some(visibility),);
450-
451-
let neuron_info = neuron.get_neuron_info(
452-
&VotingPowerEconomics::DEFAULT,
453-
timestamp_seconds,
454-
principal_id,
455-
);
456-
assert_eq!(neuron_info.visibility, Some(visibility as i32),);
457-
458-
let neuron_proto = neuron.into_proto(&VotingPowerEconomics::DEFAULT, timestamp_seconds);
459-
assert_eq!(neuron_proto.visibility, Some(visibility as i32),);
460-
}
461-
}
462-
463-
// Case 2: visibility is not set.
464-
let neuron = builder.clone().build();
465-
{
466-
let _restore_on_drop = temporarily_disable_private_neuron_enforcement();
467-
468-
assert_eq!(neuron.visibility(), None,);
442+
assert_eq!(neuron.visibility(), Some(visibility),);
469443

470444
let neuron_info = neuron.get_neuron_info(
471445
&VotingPowerEconomics::DEFAULT,
472446
timestamp_seconds,
473447
principal_id,
474448
);
475-
assert_eq!(neuron_info.visibility, None,);
449+
assert_eq!(neuron_info.visibility, Some(visibility as i32),);
476450

477-
let neuron_proto = neuron
478-
.clone()
479-
.into_proto(&VotingPowerEconomics::DEFAULT, timestamp_seconds);
480-
assert_eq!(neuron_proto.visibility, None,);
451+
let neuron_proto = neuron.into_proto(&VotingPowerEconomics::DEFAULT, timestamp_seconds);
452+
assert_eq!(neuron_proto.visibility, Some(visibility as i32),);
481453
}
482-
{
483-
let _restore_on_drop = temporarily_enable_private_neuron_enforcement();
484454

485-
assert_eq!(neuron.visibility(), Some(Visibility::Private),);
455+
// Case 2: visibility is not set.
486456

487-
let neuron_info = neuron.get_neuron_info(
488-
&VotingPowerEconomics::DEFAULT,
489-
timestamp_seconds,
490-
principal_id,
491-
);
492-
assert_eq!(neuron_info.visibility, Some(Visibility::Private as i32),);
457+
let neuron = builder.clone().build();
493458

494-
let neuron_proto = neuron.into_proto(&VotingPowerEconomics::DEFAULT, timestamp_seconds);
495-
assert_eq!(neuron_proto.visibility, Some(Visibility::Private as i32),);
496-
}
459+
assert_eq!(neuron.visibility(), Some(Visibility::Private),);
460+
461+
let neuron_info = neuron.get_neuron_info(
462+
&VotingPowerEconomics::DEFAULT,
463+
timestamp_seconds,
464+
principal_id,
465+
);
466+
assert_eq!(neuron_info.visibility, Some(Visibility::Private as i32),);
467+
468+
let neuron_proto = neuron.into_proto(&VotingPowerEconomics::DEFAULT, timestamp_seconds);
469+
assert_eq!(neuron_proto.visibility, Some(Visibility::Private as i32),);
497470

498471
// Case 3: Known neurons are always public.
499472
let neuron = builder
@@ -502,26 +475,20 @@ fn test_visibility_when_converting_neuron_to_neuron_info_and_neuron_proto() {
502475
description: Some("neuron description".to_string()),
503476
}))
504477
.build();
505-
for set_enforcement in [
506-
temporarily_enable_private_neuron_enforcement,
507-
temporarily_disable_private_neuron_enforcement,
508-
] {
509-
let _restore_on_drop = set_enforcement();
510478

511-
assert_eq!(neuron.visibility(), Some(Visibility::Public),);
479+
assert_eq!(neuron.visibility(), Some(Visibility::Public),);
512480

513-
let neuron_info = neuron.get_neuron_info(
514-
&VotingPowerEconomics::DEFAULT,
515-
timestamp_seconds,
516-
principal_id,
517-
);
518-
assert_eq!(neuron_info.visibility, Some(Visibility::Public as i32),);
481+
let neuron_info = neuron.get_neuron_info(
482+
&VotingPowerEconomics::DEFAULT,
483+
timestamp_seconds,
484+
principal_id,
485+
);
486+
assert_eq!(neuron_info.visibility, Some(Visibility::Public as i32),);
519487

520-
let neuron_proto = neuron
521-
.clone()
522-
.into_proto(&VotingPowerEconomics::DEFAULT, timestamp_seconds);
523-
assert_eq!(neuron_proto.visibility, Some(Visibility::Public as i32),);
524-
}
488+
let neuron_proto = neuron
489+
.clone()
490+
.into_proto(&VotingPowerEconomics::DEFAULT, timestamp_seconds);
491+
assert_eq!(neuron_proto.visibility, Some(Visibility::Public as i32),);
525492
}
526493

527494
#[test]

0 commit comments

Comments
 (0)