Add era to Unbonded event (#11770)

* Add era to `Unbonded` event

fixes #11749

* Fix missing tests

* Add comment for `era` field in `Unbonded` struct.

Co-authored-by: parity-processbot <>
This commit is contained in:
Falco Hirschenberger
2022-07-25 16:53:12 +02:00
committed by GitHub
parent 0b79a7a877
commit 3afa175a4c
3 changed files with 134 additions and 61 deletions
+3 -1
View File
@@ -1349,7 +1349,7 @@ pub mod pallet {
/// pool.
/// - `points` is the number of points that are issued as a result of `balance` being
/// dissolved into the corresponding unbonding pool.
///
/// - `era` is the era in which the balance will be unbonded.
/// In the absence of slashing, these values will match. In the presence of slashing, the
/// number of points that are issued in the unbonding pool will be less than the amount
/// requested to be unbonded.
@@ -1358,6 +1358,7 @@ pub mod pallet {
pool_id: PoolId,
balance: BalanceOf<T>,
points: BalanceOf<T>,
era: EraIndex,
},
/// A member has withdrawn from their pool.
///
@@ -1683,6 +1684,7 @@ pub mod pallet {
pool_id: member.pool_id,
points: points_unbonded,
balance: unbonding_balance,
era: unbond_era,
});
// Now that we know everything has worked write the items to storage.
+86 -45
View File
@@ -869,7 +869,7 @@ mod claim_payout {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 11, pool_id: 1, bonded: 11, joined: true },
Event::Unbonded { member: 11, pool_id: 1, points: 11, balance: 11 }
Event::Unbonded { member: 11, pool_id: 1, points: 11, balance: 11, era: 3 }
]
);
});
@@ -1374,7 +1374,7 @@ mod claim_payout {
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10 },
Event::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10, era: 3 },
Event::PaidOut { member: 10, pool_id: 1, payout: 50 },
Event::PaidOut { member: 20, pool_id: 1, payout: 50 },
]
@@ -1808,12 +1808,12 @@ mod claim_payout {
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 20, pool_id: 1, bonded: 20, joined: true },
Event::Bonded { member: 30, pool_id: 1, bonded: 20, joined: true },
Event::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10 },
Event::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10, era: 3 },
Event::PaidOut { member: 30, pool_id: 1, payout: 15 },
Event::Unbonded { member: 30, pool_id: 1, balance: 10, points: 10 },
Event::Unbonded { member: 30, pool_id: 1, balance: 5, points: 5 },
Event::Unbonded { member: 30, pool_id: 1, balance: 10, points: 10, era: 3 },
Event::Unbonded { member: 30, pool_id: 1, balance: 5, points: 5, era: 3 },
Event::PaidOut { member: 20, pool_id: 1, payout: 7 },
Event::Unbonded { member: 20, pool_id: 1, balance: 5, points: 5 },
Event::Unbonded { member: 20, pool_id: 1, balance: 5, points: 5, era: 3 },
Event::PaidOut { member: 10, pool_id: 1, payout: 7 }
]
);
@@ -1865,10 +1865,10 @@ mod claim_payout {
pool_events_since_last_call(),
vec![
Event::StateChanged { pool_id: 1, new_state: PoolState::Destroying },
Event::Unbonded { member: 20, pool_id: 1, balance: 20, points: 20 },
Event::Unbonded { member: 20, pool_id: 1, balance: 20, points: 20, era: 3 },
Event::Withdrawn { member: 20, pool_id: 1, balance: 20, points: 20 },
Event::MemberRemoved { pool_id: 1, member: 20 },
Event::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10 },
Event::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10, era: 6 },
Event::Withdrawn { member: 10, pool_id: 1, balance: 10, points: 10 },
Event::MemberRemoved { pool_id: 1, member: 10 },
Event::Destroyed { pool_id: 1 }
@@ -2269,7 +2269,7 @@ mod unbond {
Event::Bonded { member: 40, pool_id: 1, bonded: 40, joined: true },
Event::Bonded { member: 550, pool_id: 1, bonded: 550, joined: true },
Event::PaidOut { member: 40, pool_id: 1, payout: 40 },
Event::Unbonded { member: 40, pool_id: 1, points: 6, balance: 6 }
Event::Unbonded { member: 40, pool_id: 1, points: 6, balance: 6, era: 3 }
]
);
@@ -2311,7 +2311,13 @@ mod unbond {
pool_events_since_last_call(),
vec![
Event::PaidOut { member: 550, pool_id: 1, payout: 550 },
Event::Unbonded { member: 550, pool_id: 1, points: 92, balance: 92 }
Event::Unbonded {
member: 550,
pool_id: 1,
points: 92,
balance: 92,
era: 3
}
]
);
@@ -2349,7 +2355,7 @@ mod unbond {
Event::Withdrawn { member: 550, pool_id: 1, points: 92, balance: 92 },
Event::MemberRemoved { pool_id: 1, member: 550 },
Event::PaidOut { member: 10, pool_id: 1, payout: 10 },
Event::Unbonded { member: 10, pool_id: 1, points: 2, balance: 2 }
Event::Unbonded { member: 10, pool_id: 1, points: 2, balance: 2, era: 6 }
]
);
});
@@ -2395,7 +2401,7 @@ mod unbond {
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Unbonded { member: 10, pool_id: 1, points: 10, balance: 10 }
Event::Unbonded { member: 10, pool_id: 1, points: 10, balance: 10, era: 9 }
]
);
});
@@ -2430,7 +2436,13 @@ mod unbond {
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Bonded { member: 200, pool_id: 1, bonded: 200, joined: true },
Event::Unbonded { member: 100, pool_id: 1, points: 100, balance: 100 },
Event::Unbonded {
member: 100,
pool_id: 1,
points: 100,
balance: 100,
era: 3
},
]
);
@@ -2439,7 +2451,13 @@ mod unbond {
assert_eq!(
pool_events_since_last_call(),
vec![Event::Unbonded { member: 200, pool_id: 1, points: 200, balance: 200 }]
vec![Event::Unbonded {
member: 200,
pool_id: 1,
points: 200,
balance: 200,
era: 3
}]
);
assert_eq!(
@@ -2508,7 +2526,7 @@ mod unbond {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Unbonded { member: 100, pool_id: 1, points: 100, balance: 100 }
Event::Unbonded { member: 100, pool_id: 1, points: 100, balance: 100, era: 3 }
]
);
@@ -2659,7 +2677,7 @@ mod unbond {
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Unbonded { member: 10, pool_id: 1, points: 1, balance: 1 }
Event::Unbonded { member: 10, pool_id: 1, points: 1, balance: 1, era: 3 }
]
);
@@ -2685,7 +2703,7 @@ mod unbond {
);
assert_eq!(
pool_events_since_last_call(),
vec![Event::Unbonded { member: 10, pool_id: 1, points: 5, balance: 5 }]
vec![Event::Unbonded { member: 10, pool_id: 1, points: 5, balance: 5, era: 3 }]
);
// when: casual further unbond, next era.
@@ -2712,7 +2730,7 @@ mod unbond {
);
assert_eq!(
pool_events_since_last_call(),
vec![Event::Unbonded { member: 10, pool_id: 1, points: 1, balance: 1 }]
vec![Event::Unbonded { member: 10, pool_id: 1, points: 1, balance: 1, era: 4 }]
);
// when: unbonding more than our active: error
@@ -2747,7 +2765,7 @@ mod unbond {
);
assert_eq!(
pool_events_since_last_call(),
vec![Event::Unbonded { member: 10, pool_id: 1, points: 3, balance: 3 }]
vec![Event::Unbonded { member: 10, pool_id: 1, points: 3, balance: 3, era: 4 }]
);
});
}
@@ -2792,9 +2810,9 @@ mod unbond {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 20, pool_id: 1, bonded: 20, joined: true },
Event::Unbonded { member: 20, pool_id: 1, balance: 2, points: 2 },
Event::Unbonded { member: 20, pool_id: 1, balance: 3, points: 3 },
Event::Unbonded { member: 20, pool_id: 1, balance: 1, points: 1 }
Event::Unbonded { member: 20, pool_id: 1, points: 2, balance: 2, era: 3 },
Event::Unbonded { member: 20, pool_id: 1, points: 3, balance: 3, era: 4 },
Event::Unbonded { member: 20, pool_id: 1, points: 1, balance: 1, era: 5 }
]
);
})
@@ -2827,7 +2845,7 @@ mod unbond {
vec![
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Unbonded { member: 10, pool_id: 1, points: 3, balance: 3 }
Event::Unbonded { member: 10, pool_id: 1, points: 3, balance: 3, era: 3 }
]
);
});
@@ -2873,7 +2891,7 @@ mod unbond {
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 20, pool_id: 1, bonded: 20, joined: true },
Event::PaidOut { member: 20, pool_id: 1, payout: 10 },
Event::Unbonded { member: 20, pool_id: 1, balance: 2, points: 2 }
Event::Unbonded { member: 20, pool_id: 1, balance: 2, points: 2, era: 3 }
]
);
@@ -2889,7 +2907,7 @@ mod unbond {
vec![
// 2/3 of ed, which is 20's share.
Event::PaidOut { member: 20, pool_id: 1, payout: 6 },
Event::Unbonded { member: 20, pool_id: 1, points: 3, balance: 3 }
Event::Unbonded { member: 20, pool_id: 1, points: 3, balance: 3, era: 4 }
]
);
@@ -2904,7 +2922,7 @@ mod unbond {
pool_events_since_last_call(),
vec![
Event::PaidOut { member: 20, pool_id: 1, payout: 3 },
Event::Unbonded { member: 20, pool_id: 1, points: 5, balance: 5 }
Event::Unbonded { member: 20, pool_id: 1, points: 5, balance: 5, era: 5 }
]
);
@@ -3003,7 +3021,6 @@ mod withdraw_unbonded {
with_era: Default::default()
}
);
assert_eq!(
pool_events_since_last_call(),
vec![
@@ -3011,8 +3028,14 @@ mod withdraw_unbonded {
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 40, pool_id: 1, bonded: 40, joined: true },
Event::Bonded { member: 550, pool_id: 1, bonded: 550, joined: true },
Event::Unbonded { member: 550, pool_id: 1, points: 550, balance: 550 },
Event::Unbonded { member: 40, pool_id: 1, points: 40, balance: 40 },
Event::Unbonded {
member: 550,
pool_id: 1,
points: 550,
balance: 550,
era: 3
},
Event::Unbonded { member: 40, pool_id: 1, points: 40, balance: 40, era: 3 },
]
);
assert_eq!(
@@ -3077,7 +3100,7 @@ mod withdraw_unbonded {
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Unbonded { member: 10, pool_id: 1, balance: 5, points: 5 },
Event::Unbonded { member: 10, pool_id: 1, balance: 5, points: 5, era: 9 },
Event::Withdrawn { member: 10, pool_id: 1, balance: 5, points: 5 },
Event::MemberRemoved { pool_id: 1, member: 10 },
Event::Destroyed { pool_id: 1 }
@@ -3122,8 +3145,14 @@ mod withdraw_unbonded {
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 40, pool_id: 1, bonded: 40, joined: true },
Event::Bonded { member: 550, pool_id: 1, bonded: 550, joined: true },
Event::Unbonded { member: 40, pool_id: 1, balance: 20, points: 20 },
Event::Unbonded { member: 550, pool_id: 1, balance: 275, points: 275 },
Event::Unbonded { member: 40, pool_id: 1, balance: 20, points: 20, era: 3 },
Event::Unbonded {
member: 550,
pool_id: 1,
balance: 275,
points: 275,
era: 3,
}
]
);
assert_eq!(
@@ -3199,7 +3228,7 @@ mod withdraw_unbonded {
assert_eq!(
pool_events_since_last_call(),
vec![
Event::Unbonded { member: 10, pool_id: 1, points: 5, balance: 5 },
Event::Unbonded { member: 10, pool_id: 1, points: 5, balance: 5, era: 6 },
Event::Withdrawn { member: 10, pool_id: 1, points: 5, balance: 5 },
Event::MemberRemoved { pool_id: 1, member: 10 },
Event::Destroyed { pool_id: 1 }
@@ -3313,8 +3342,20 @@ mod withdraw_unbonded {
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Bonded { member: 200, pool_id: 1, bonded: 200, joined: true },
Event::Unbonded { member: 100, pool_id: 1, points: 100, balance: 100 },
Event::Unbonded { member: 200, pool_id: 1, points: 200, balance: 200 }
Event::Unbonded {
member: 100,
pool_id: 1,
points: 100,
balance: 100,
era: 3
},
Event::Unbonded {
member: 200,
pool_id: 1,
points: 200,
balance: 200,
era: 3
}
]
);
@@ -3391,7 +3432,7 @@ mod withdraw_unbonded {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Unbonded { member: 100, pool_id: 1, points: 100, balance: 100 },
Event::Unbonded { member: 100, pool_id: 1, points: 100, balance: 100, era: 3 },
Event::Withdrawn { member: 100, pool_id: 1, points: 100, balance: 100 },
Event::MemberRemoved { pool_id: 1, member: 100 }
]
@@ -3431,8 +3472,8 @@ mod withdraw_unbonded {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: false },
Event::Unbonded { member: 10, pool_id: 1, points: 6, balance: 6 },
Event::Unbonded { member: 10, pool_id: 1, points: 1, balance: 1 }
Event::Unbonded { member: 10, pool_id: 1, points: 6, balance: 6, era: 3 },
Event::Unbonded { member: 10, pool_id: 1, points: 1, balance: 1, era: 4 }
]
);
@@ -3518,8 +3559,8 @@ mod withdraw_unbonded {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 11, pool_id: 1, bonded: 10, joined: true },
Event::Unbonded { member: 11, pool_id: 1, points: 6, balance: 6 },
Event::Unbonded { member: 11, pool_id: 1, points: 1, balance: 1 }
Event::Unbonded { member: 11, pool_id: 1, points: 6, balance: 6, era: 3 },
Event::Unbonded { member: 11, pool_id: 1, points: 1, balance: 1, era: 4 }
]
);
@@ -3608,8 +3649,8 @@ mod withdraw_unbonded {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 100, pool_id: 1, bonded: 100, joined: true },
Event::Unbonded { member: 100, pool_id: 1, points: 75, balance: 75 },
Event::Unbonded { member: 100, pool_id: 1, points: 25, balance: 25 },
Event::Unbonded { member: 100, pool_id: 1, points: 75, balance: 75, era: 3 },
Event::Unbonded { member: 100, pool_id: 1, points: 25, balance: 25, era: 4 },
Event::Withdrawn { member: 100, pool_id: 1, points: 75, balance: 75 },
]
);
@@ -3680,9 +3721,9 @@ mod withdraw_unbonded {
Event::Created { depositor: 10, pool_id: 1 },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: true },
Event::Bonded { member: 10, pool_id: 1, bonded: 10, joined: false },
Event::Unbonded { member: 10, pool_id: 1, balance: 7, points: 7 },
Event::Unbonded { member: 10, pool_id: 1, balance: 3, points: 3 },
Event::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10 },
Event::Unbonded { member: 10, pool_id: 1, balance: 7, points: 7, era: 3 },
Event::Unbonded { member: 10, pool_id: 1, balance: 3, points: 3, era: 4 },
Event::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10, era: 4 },
Event::Withdrawn { member: 10, pool_id: 1, balance: 7, points: 7 }
]
);
@@ -95,8 +95,8 @@ fn pool_lifecycle_e2e() {
pool_events_since_last_call(),
vec![
PoolsEvent::StateChanged { pool_id: 1, new_state: PoolState::Destroying },
PoolsEvent::Unbonded { member: 20, pool_id: 1, points: 10, balance: 10 },
PoolsEvent::Unbonded { member: 21, pool_id: 1, points: 10, balance: 10 },
PoolsEvent::Unbonded { member: 20, pool_id: 1, points: 10, balance: 10, era: 3 },
PoolsEvent::Unbonded { member: 21, pool_id: 1, points: 10, balance: 10, era: 3 },
]
);
@@ -159,7 +159,7 @@ fn pool_lifecycle_e2e() {
);
assert_eq!(
pool_events_since_last_call(),
vec![PoolsEvent::Unbonded { member: 10, pool_id: 1, points: 50, balance: 50 }]
vec![PoolsEvent::Unbonded { member: 10, pool_id: 1, points: 50, balance: 50, era: 6 }]
);
// waiting another bonding duration:
@@ -237,8 +237,8 @@ fn pool_slash_e2e() {
assert_eq!(
pool_events_since_last_call(),
vec![
PoolsEvent::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10 },
PoolsEvent::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10 }
PoolsEvent::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10, era: 4 },
PoolsEvent::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10, era: 4 }
]
);
@@ -262,9 +262,9 @@ fn pool_slash_e2e() {
assert_eq!(
pool_events_since_last_call(),
vec![
PoolsEvent::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10 },
PoolsEvent::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10 },
PoolsEvent::Unbonded { member: 21, pool_id: 1, balance: 10, points: 10 },
PoolsEvent::Unbonded { member: 10, pool_id: 1, balance: 10, points: 10, era: 5 },
PoolsEvent::Unbonded { member: 20, pool_id: 1, balance: 10, points: 10, era: 5 },
PoolsEvent::Unbonded { member: 21, pool_id: 1, balance: 10, points: 10, era: 5 },
]
);
@@ -305,7 +305,7 @@ fn pool_slash_e2e() {
assert_eq!(staking_events_since_last_call(), vec![StakingEvent::Unbonded(POOL1_BONDED, 5)]);
assert_eq!(
pool_events_since_last_call(),
vec![PoolsEvent::Unbonded { member: 21, pool_id: 1, balance: 5, points: 5 }]
vec![PoolsEvent::Unbonded { member: 21, pool_id: 1, balance: 5, points: 5, era: 6 }]
);
// now we start withdrawing. we do it all at once, at era 6 where 20 and 21 are fully free.
@@ -342,7 +342,7 @@ fn pool_slash_e2e() {
pool_events_since_last_call(),
vec![
PoolsEvent::StateChanged { pool_id: 1, new_state: PoolState::Destroying },
PoolsEvent::Unbonded { member: 10, pool_id: 1, points: 10, balance: 10 }
PoolsEvent::Unbonded { member: 10, pool_id: 1, points: 10, balance: 10, era: 9 }
]
);
@@ -432,7 +432,13 @@ fn pool_slash_proportional() {
);
assert_eq!(
pool_events_since_last_call(),
vec![PoolsEvent::Unbonded { member: 20, pool_id: 1, balance: bond, points: bond }]
vec![PoolsEvent::Unbonded {
member: 20,
pool_id: 1,
balance: bond,
points: bond,
era: 127
}]
);
CurrentEra::<T>::set(Some(100));
@@ -443,7 +449,13 @@ fn pool_slash_proportional() {
);
assert_eq!(
pool_events_since_last_call(),
vec![PoolsEvent::Unbonded { member: 21, pool_id: 1, balance: bond, points: bond }]
vec![PoolsEvent::Unbonded {
member: 21,
pool_id: 1,
balance: bond,
points: bond,
era: 128
}]
);
CurrentEra::<T>::set(Some(101));
@@ -454,7 +466,13 @@ fn pool_slash_proportional() {
);
assert_eq!(
pool_events_since_last_call(),
vec![PoolsEvent::Unbonded { member: 22, pool_id: 1, balance: bond, points: bond }]
vec![PoolsEvent::Unbonded {
member: 22,
pool_id: 1,
balance: bond,
points: bond,
era: 129
}]
);
// Apply a slash that happened in era 100. This is typically applied with a delay.
@@ -531,7 +549,13 @@ fn pool_slash_non_proportional_only_bonded_pool() {
);
assert_eq!(
pool_events_since_last_call(),
vec![PoolsEvent::Unbonded { member: 20, pool_id: 1, balance: bond, points: bond }]
vec![PoolsEvent::Unbonded {
member: 20,
pool_id: 1,
balance: bond,
points: bond,
era: 127
}]
);
// slash for 30. This will be deducted only from the bonded pool.
@@ -598,7 +622,13 @@ fn pool_slash_non_proportional_bonded_pool_and_chunks() {
);
assert_eq!(
pool_events_since_last_call(),
vec![PoolsEvent::Unbonded { member: 20, pool_id: 1, balance: bond, points: bond }]
vec![PoolsEvent::Unbonded {
member: 20,
pool_id: 1,
balance: bond,
points: bond,
era: 127
}]
);
// slash 50. This will be deducted only from the bonded pool and one of the unbonding pools.