Skip to content

Commit b0b3a34

Browse files
committed
Merge branch 'brent/fix-sm-test-slashing' (#3072)
* brent/fix-sm-test-slashing: fix enqueued slashes in SM test
2 parents 208faeb + e77da8a commit b0b3a34

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

crates/proof_of_stake/src/tests/state_machine.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ struct AbstractPosState {
141141
/// Validator slashes post-processing
142142
validator_slashes: BTreeMap<Address, Vec<Slash>>,
143143
/// Enqueued slashes pre-processing
144-
enqueued_slashes: BTreeMap<Epoch, BTreeMap<Address, Vec<Slash>>>,
144+
enqueued_slashes: BTreeMap<Epoch, BTreeMap<Address, BTreeMap<u64, Slash>>>,
145145
/// The last epoch in which a validator committed an infraction
146146
validator_last_slash_epochs: BTreeMap<Address, Epoch>,
147147
/// Validator's total unbonded required for slashing.
@@ -1413,8 +1413,10 @@ impl ConcretePosState {
14131413
) {
14141414
// Check the enqueued slashes
14151415
let abs_enqueued = ref_state.enqueued_slashes.clone();
1416-
let mut conc_enqueued: BTreeMap<Epoch, BTreeMap<Address, Vec<Slash>>> =
1417-
BTreeMap::new();
1416+
let mut conc_enqueued: BTreeMap<
1417+
Epoch,
1418+
BTreeMap<Address, BTreeMap<u64, Slash>>,
1419+
> = BTreeMap::new();
14181420
enqueued_slashes_handle()
14191421
.get_data_handler()
14201422
.iter(&self.s)
@@ -1426,7 +1428,7 @@ impl ConcretePosState {
14261428
nested_sub_key:
14271429
NestedSubKey::Data {
14281430
key: address,
1429-
nested_sub_key: _,
1431+
nested_sub_key: SubKey::Data(height),
14301432
},
14311433
},
14321434
slash,
@@ -1436,7 +1438,7 @@ impl ConcretePosState {
14361438
.or_default()
14371439
.entry(address)
14381440
.or_default();
1439-
slashes.push(slash);
1441+
slashes.insert(height, slash);
14401442
});
14411443
assert_eq!(abs_enqueued, conc_enqueued);
14421444
}
@@ -2503,7 +2505,7 @@ impl ReferenceStateMachine for AbstractPosState {
25032505
.or_default()
25042506
.entry(address.clone())
25052507
.or_default()
2506-
.push(slash);
2508+
.insert(*height, slash);
25072509

25082510
// Remove the validator from either the consensus or
25092511
// below-capacity set and place it into the jailed validator set
@@ -3844,7 +3846,7 @@ impl AbstractPosState {
38443846
|mut acc, (validator, slashes)| {
38453847
let mut tot_rate =
38463848
acc.get(validator).cloned().unwrap_or_default();
3847-
for slash in slashes {
3849+
for slash in slashes.values() {
38483850
debug_assert_eq!(slash.epoch, infraction_epoch);
38493851
let rate = cmp::max(
38503852
slash.r#type.get_slash_rate(&self.params),
@@ -3918,7 +3920,7 @@ impl AbstractPosState {
39183920
let cur_slashes =
39193921
self.validator_slashes.entry(validator.clone()).or_default();
39203922

3921-
for slash in slashes {
3923+
for (_, slash) in slashes {
39223924
let rate = cmp::max(
39233925
slash.r#type.get_slash_rate(&self.params),
39243926
cubic_rate,

0 commit comments

Comments
 (0)