From 4bf7f1628bba6c1e25f460eb7e91ae9828e3a2e1 Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Tue, 18 Feb 2025 19:19:11 +0000 Subject: [PATCH 1/2] SIMD-XXXX: Delay commission updates --- proposals/XXXX-delay-commission-updates.md | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 proposals/XXXX-delay-commission-updates.md diff --git a/proposals/XXXX-delay-commission-updates.md b/proposals/XXXX-delay-commission-updates.md new file mode 100644 index 000000000..1b2cf086c --- /dev/null +++ b/proposals/XXXX-delay-commission-updates.md @@ -0,0 +1,62 @@ +--- +simd: 'XXXX' +title: Delay Commission Updates +authors: Justin Starry (Anza) +category: Standard +type: Core +status: Review +created: 2025-02-18 +feature: (fill in with feature key and github tracking issues once accepted) +--- + +## Summary + +Allow validators to update their commission values without restriction but delay +those commission changes for at least one full epoch. + +## Motivation + +Stake delegators should have time to re-delegate their stake in response to +validator commission rate changes. + +## New Terminology + +NA + +## Detailed Design + +- During inflation reward distribution for an epoch `E`, use the commission rate +set in the vote account state at the beginning of the epoch `E - 1` when +calculating validator commissions. This is the same vote account state used to +calculate the leader schedule for epoch `E` so it must already be available +in-protocol. The only exception is inflation reward distribution for epoch `E == +0`. In that case, use the commission rate set by vote accounts in the genesis +config. + +- Update the core vote program to no longer restrict commission updates in any way. + +## Alternatives Considered + +An alternative approach is to track recent commission values over the past few +epochs in the vote account state. This bookkeeping increases state size +requirements of the vote account for each type of commission set by a validator. + +## Impact + +- Validators will need to wait at least one full epoch before their commission +updates are applied. + +- Stake delegators will have at least one full epoch to react to commission +updates. + +## Security Considerations + +NA + +## Drawbacks *(Optional)* + +Why should we not do this? + +## Backwards Compatibility *(Optional)* + +No backwards compatibility issues. Commission updates will be less restrictive. From 1ef0635393b022abbb5876977d395f6b924fde49 Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Thu, 29 May 2025 22:26:35 +0000 Subject: [PATCH 2/2] add more details --- proposals/0249-delay-commission-updates.md | 68 ++++++++++++++++++++++ proposals/XXXX-delay-commission-updates.md | 62 -------------------- 2 files changed, 68 insertions(+), 62 deletions(-) create mode 100644 proposals/0249-delay-commission-updates.md delete mode 100644 proposals/XXXX-delay-commission-updates.md diff --git a/proposals/0249-delay-commission-updates.md b/proposals/0249-delay-commission-updates.md new file mode 100644 index 000000000..8392541bb --- /dev/null +++ b/proposals/0249-delay-commission-updates.md @@ -0,0 +1,68 @@ +--- +simd: '0249' +title: Delay Commission Updates +authors: Justin Starry (Anza) +category: Standard +type: Core +status: Review +created: 2025-02-18 +feature: (fill in with feature key and github tracking issues once accepted) +--- + +## Summary + +Allow validators to update their commission rate at any time but delay those +commission updates for at least one full epoch. + +## Motivation + +Validators should be able update their desired commission at any time. That +said, stake delegators should always have ample time to re-delegate their stake +in response to validator commission rate changes. + +## New Terminology + +NA + +## Detailed Design + +### Runtime + +For a given epoch `E`, the earned inflation rewards for each vote account are +calculated at the beginning of the next epoch `E + 1`. During inflation reward +calculation, use the inflation rewards commission rate from the vote account +state as it existed at the beginning of epoch `E - 1`. If the vote account did +not exist at that time, fall back to the vote account state at the beginning of +epoch `E`. And if the vote account did not exist then either, fall back +to the vote account state at the beginning of epoch `E + 1`. + +#### UpdateCommission + +Update the core vote program to no longer restrict commission increases from +happening during the first half of the epoch. + +## Alternatives Considered + +NA + +## Impact + +- Validators will need to wait at least one full epoch before their commission +updates are applied. + +- Stake delegators will have at least one full epoch to react to commission +updates. + +## Security Considerations + +NA + +## Drawbacks *(Optional)* + +Why should we not do this? + +## Backwards Compatibility *(Optional)* + +A feature gate will be used to simultaneously update vote program rules around +commission rate updates as well as update the runtime's commission calculations +at epoch boundaries. \ No newline at end of file diff --git a/proposals/XXXX-delay-commission-updates.md b/proposals/XXXX-delay-commission-updates.md deleted file mode 100644 index 1b2cf086c..000000000 --- a/proposals/XXXX-delay-commission-updates.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -simd: 'XXXX' -title: Delay Commission Updates -authors: Justin Starry (Anza) -category: Standard -type: Core -status: Review -created: 2025-02-18 -feature: (fill in with feature key and github tracking issues once accepted) ---- - -## Summary - -Allow validators to update their commission values without restriction but delay -those commission changes for at least one full epoch. - -## Motivation - -Stake delegators should have time to re-delegate their stake in response to -validator commission rate changes. - -## New Terminology - -NA - -## Detailed Design - -- During inflation reward distribution for an epoch `E`, use the commission rate -set in the vote account state at the beginning of the epoch `E - 1` when -calculating validator commissions. This is the same vote account state used to -calculate the leader schedule for epoch `E` so it must already be available -in-protocol. The only exception is inflation reward distribution for epoch `E == -0`. In that case, use the commission rate set by vote accounts in the genesis -config. - -- Update the core vote program to no longer restrict commission updates in any way. - -## Alternatives Considered - -An alternative approach is to track recent commission values over the past few -epochs in the vote account state. This bookkeeping increases state size -requirements of the vote account for each type of commission set by a validator. - -## Impact - -- Validators will need to wait at least one full epoch before their commission -updates are applied. - -- Stake delegators will have at least one full epoch to react to commission -updates. - -## Security Considerations - -NA - -## Drawbacks *(Optional)* - -Why should we not do this? - -## Backwards Compatibility *(Optional)* - -No backwards compatibility issues. Commission updates will be less restrictive.