Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Lazy payouts #4474

Merged
merged 95 commits into from
Mar 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
4def98e
TODOs
gavofyork Dec 18, 2019
338362a
Remove superfluous:
gavofyork Dec 18, 2019
0c22a21
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Jan 7, 2020
f92f0e8
partial implementation
gui1117 Jan 7, 2020
bb71353
full implementation
gui1117 Jan 8, 2020
3a4a9be
fix preferences
gui1117 Jan 9, 2020
7a80d10
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Jan 9, 2020
5345095
update comments
gui1117 Jan 9, 2020
dbe3a64
upgrade test WIP
gui1117 Jan 9, 2020
f41ee81
fix more tests
gui1117 Jan 10, 2020
fd48681
fix cutoff
gui1117 Jan 10, 2020
fa38f84
fix saturation
gui1117 Jan 10, 2020
c4b0f2f
comment
gui1117 Jan 10, 2020
4315218
upgrade mock
gui1117 Jan 10, 2020
a26e9da
upgrade test
gui1117 Jan 10, 2020
cc6dd63
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Jan 13, 2020
245ec98
WIP migration
gui1117 Jan 13, 2020
4206435
WIP migration
gui1117 Jan 14, 2020
f1586b2
Merge commit '857f7338b2066a03dc956acf004b101b4bdcf593' into gav-lazy…
gui1117 Jan 14, 2020
8e0bfa4
Merge commit 'd63ff7b9ac8d766b87a7a2cd99d5d73a521f97a9' into gav-lazy…
gui1117 Jan 14, 2020
70b9ff8
remove slot stake stuff
gui1117 Jan 14, 2020
61881d6
Merge commit '6688c3be1ff71803d5963935df7a0d646b2d50d2' into gav-lazy…
gui1117 Jan 14, 2020
fd5bafc
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Jan 14, 2020
f392d4a
fix merge
gui1117 Jan 14, 2020
2b9f806
migration of ledger
gui1117 Jan 14, 2020
d0431f4
remove equalize from test
gui1117 Jan 14, 2020
10232de
add test
gui1117 Jan 14, 2020
6367fda
fix
gui1117 Jan 14, 2020
30eb57c
update doc
gui1117 Jan 14, 2020
8eb8a58
fix compilation
gui1117 Jan 14, 2020
eb0d4e5
improve test readibility
gui1117 Jan 15, 2020
54b670f
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Jan 16, 2020
16a6fd0
improve doc
gui1117 Jan 20, 2020
ceffbfd
Merge commit 'c3af86cee45d98dd5f97fb2de419ba4e25ac14b7' into gav-lazy…
gui1117 Jan 20, 2020
c2cda09
Merge commit '561bd727489501cfb24d29020062b3a5d4fdcca9' into gav-lazy…
gui1117 Jan 20, 2020
a241d95
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Jan 20, 2020
3d426bb
fix most todo
gui1117 Jan 20, 2020
5d4c2e5
fix migration and test
gui1117 Jan 21, 2020
3590769
remove println
gui1117 Jan 21, 2020
df3a4de
WIP
gui1117 Jan 21, 2020
70979ac
add test and spec
gui1117 Jan 22, 2020
3c56ab3
weight
gui1117 Jan 22, 2020
c088756
update doc
gui1117 Jan 22, 2020
72ff737
safer end_era
gui1117 Jan 30, 2020
58a2c90
fix exposure of conversion
gui1117 Jan 30, 2020
02c05b2
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Jan 30, 2020
dd7590f
Revert "safer end_era"
gui1117 Jan 30, 2020
c99772b
fix useless put
gui1117 Jan 30, 2020
eb1a6ef
exposure clipped
gui1117 Jan 30, 2020
4e1d12d
doc
gui1117 Jan 30, 2020
33afe32
fix payout with clipped
gui1117 Jan 30, 2020
35f76ab
fix node runtime
gui1117 Jan 30, 2020
d35dafc
add doc
gui1117 Jan 31, 2020
381d5ef
pluggable and generalized staking module
gui1117 Jan 31, 2020
2519aef
remove print
gui1117 Jan 31, 2020
e881add
update doc
gui1117 Jan 31, 2020
1f7b353
refactor
gui1117 Jan 31, 2020
086eb8d
improve documentation and implementation
gui1117 Feb 1, 2020
5162c0b
fix test
gui1117 Feb 1, 2020
1d9f460
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Feb 1, 2020
9cd88e2
Fix test
gui1117 Feb 1, 2020
68105c8
fix test
gui1117 Feb 1, 2020
827847b
fix test
gui1117 Feb 1, 2020
e2af768
fix remove lowest stake from exposure, not biggest.
gui1117 Feb 3, 2020
ea4ef67
nomination index arguments in nominator_payout
gui1117 Feb 3, 2020
74a4cbe
add test
gui1117 Feb 3, 2020
0116e20
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Feb 3, 2020
faaddec
try to fix offence
gui1117 Feb 3, 2020
20b28b3
apply slashed and bond eras until active era
gui1117 Feb 3, 2020
7dd7975
doc
gui1117 Feb 3, 2020
a89202e
update spec version
gui1117 Feb 3, 2020
3f860bd
Merge branch 'master' into gav-lazy-rewards
gavofyork Feb 12, 2020
8e652b1
Merge branch 'master' into gav-lazy-rewards
gavofyork Feb 12, 2020
89974f8
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Feb 19, 2020
c87a3d6
add test upgrade from previous test environment
gui1117 Feb 19, 2020
961618d
Apply suggestions from code review
gui1117 Feb 21, 2020
751b993
nominators upgrade has been cleaned
gui1117 Feb 21, 2020
e56e70a
dynamic history depth implementation
gui1117 Feb 21, 2020
975a6eb
make current_era - history_depth included
gui1117 Feb 21, 2020
3d78f79
Change equality check to start era to less than or equal
shawntabrizi Feb 22, 2020
b834b4e
Use era specific validator prefs
shawntabrizi Feb 23, 2020
23a4b2b
Add print statement and comment about start era if <
shawntabrizi Feb 23, 2020
45bf05b
fix next_reward overflow
gui1117 Feb 24, 2020
3dce1b0
make more check for bad era claim for zero cost
gui1117 Feb 24, 2020
22c46b5
small refactor
gui1117 Feb 24, 2020
2f70fbe
Merge branch 'master' into gav-lazy-rewards
shawntabrizi Feb 24, 2020
24d334f
code refactor + fix use of deprecated storage
gui1117 Feb 26, 2020
7edfdae
fix wasm build
gui1117 Feb 26, 2020
5627b2b
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Feb 26, 2020
4caa747
add comment
gui1117 Feb 26, 2020
015c39a
Fix tests
shawntabrizi Feb 28, 2020
f7ba093
Merge remote-tracking branch 'origin/master' into gav-lazy-rewards
gui1117 Mar 2, 2020
c4d27b2
remove outdated comment
gui1117 Mar 2, 2020
129a6d9
Apply suggestions from code review
gui1117 Mar 3, 2020
d5b3080
gather active era information into one storage
gui1117 Mar 3, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion bin/node/cli/src/chain_spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,6 @@ pub fn testnet_genesis(
}).collect::<Vec<_>>(),
}),
pallet_staking: Some(StakingConfig {
current_era: 0,
validator_count: initial_authorities.len() as u32 * 2,
minimum_validator_count: initial_authorities.len() as u32,
stakers: initial_authorities.iter().map(|x| {
Expand Down
2 changes: 2 additions & 0 deletions bin/node/runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ parameter_types! {
pub const BondingDuration: pallet_staking::EraIndex = 24 * 28;
pub const SlashDeferDuration: pallet_staking::EraIndex = 24 * 7; // 1/4 the bonding duration.
pub const RewardCurve: &'static PiecewiseLinear<'static> = &REWARD_CURVE;
pub const MaxNominatorRewardedPerValidator: u32 = 64;
}

impl pallet_staking::Trait for Runtime {
Expand All @@ -286,6 +287,7 @@ impl pallet_staking::Trait for Runtime {
type SlashCancelOrigin = pallet_collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>;
type SessionInterface = Self;
type RewardCurve = RewardCurve;
type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator;
}

parameter_types! {
Expand Down
1 change: 0 additions & 1 deletion bin/node/testing/src/genesis.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ pub fn config_endowed(
]
}),
pallet_staking: Some(StakingConfig {
current_era: 0,
stakers: vec![
(dave(), alice(), 111 * DOLLARS, pallet_staking::StakerStatus::Validator),
(eve(), bob(), 100 * DOLLARS, pallet_staking::StakerStatus::Validator),
Expand Down
2 changes: 2 additions & 0 deletions frame/im-online/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ impl pallet_session::SessionManager<u64> for TestSessionManager {
VALIDATORS.with(|l| l.borrow_mut().take())
}
fn end_session(_: SessionIndex) {}
fn start_session(_: SessionIndex) {}
}

impl pallet_session::historical::SessionManager<u64, u64> for TestSessionManager {
Expand All @@ -62,6 +63,7 @@ impl pallet_session::historical::SessionManager<u64, u64> for TestSessionManager
)
}
fn end_session(_: SessionIndex) {}
fn start_session(_: SessionIndex) {}
}

/// An extrinsic type used for tests.
Expand Down
4 changes: 4 additions & 0 deletions frame/session/src/historical.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ pub trait SessionManager<ValidatorId, FullIdentification>: crate::SessionManager
/// If there was a validator set change, its returns the set of new validators along with their
/// full identifications.
fn new_session(new_index: SessionIndex) -> Option<Vec<(ValidatorId, FullIdentification)>>;
fn start_session(start_index: SessionIndex);
fn end_session(end_index: SessionIndex);
}

Expand Down Expand Up @@ -146,6 +147,9 @@ impl<T: Trait, I> crate::SessionManager<T::ValidatorId> for NoteHistoricalRoot<T

new_validators
}
fn start_session(start_index: SessionIndex) {
<I as SessionManager<_, _>>::start_session(start_index)
}
fn end_session(end_index: SessionIndex) {
<I as SessionManager<_, _>>::end_session(end_index)
}
Expand Down
13 changes: 11 additions & 2 deletions frame/session/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,15 @@ pub trait SessionManager<ValidatorId> {
/// Because the session pallet can queue validator set the ending session can be lower than the
/// last new session index.
fn end_session(end_index: SessionIndex);
/// Start the session.
///
/// The session start to be used for validation
fn start_session(start_index: SessionIndex);
}

impl<A> SessionManager<A> for () {
fn new_session(_: SessionIndex) -> Option<Vec<A>> { None }
fn start_session(_: SessionIndex) {}
fn end_session(_: SessionIndex) {}
}

Expand Down Expand Up @@ -423,6 +428,8 @@ decl_storage! {

<Validators<T>>::put(initial_validators_0);
<QueuedKeys<T>>::put(queued_keys);

T::SessionManager::start_session(0);
});
}
}
Expand Down Expand Up @@ -520,6 +527,8 @@ impl<T: Trait> Module<T> {
// Inform the session handlers that a session is going to end.
T::SessionHandler::on_before_session_ending();

T::SessionManager::end_session(session_index);

// Get queued session keys and validators.
let session_keys = <QueuedKeys<T>>::get();
let validators = session_keys.iter()
Expand All @@ -532,12 +541,12 @@ impl<T: Trait> Module<T> {
DisabledValidators::take();
}

T::SessionManager::end_session(session_index);

// Increment session index.
let session_index = session_index + 1;
CurrentIndex::put(session_index);

T::SessionManager::start_session(session_index);

// Get next validator set.
let maybe_next_validators = T::SessionManager::new_session(session_index + 1);
let (next_validators, next_identities_changed)
Expand Down
2 changes: 2 additions & 0 deletions frame/session/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ impl SessionHandler<u64> for TestSessionHandler {
pub struct TestSessionManager;
impl SessionManager<u64> for TestSessionManager {
fn end_session(_: SessionIndex) {}
fn start_session(_: SessionIndex) {}
fn new_session(_: SessionIndex) -> Option<Vec<u64>> {
if !TEST_SESSION_CHANGED.with(|l| *l.borrow()) {
VALIDATORS.with(|v| {
Expand All @@ -112,6 +113,7 @@ impl SessionManager<u64> for TestSessionManager {
#[cfg(feature = "historical")]
impl crate::historical::SessionManager<u64, u64> for TestSessionManager {
fn end_session(_: SessionIndex) {}
fn start_session(_: SessionIndex) {}
fn new_session(new_index: SessionIndex)
-> Option<Vec<(u64, u64)>>
{
Expand Down
Loading