Skip to content

Commit

Permalink
Added allow_commission_decrease_at_any_time proposal.
Browse files Browse the repository at this point in the history
  • Loading branch information
bji committed Oct 26, 2023
1 parent a85a0da commit 84b36f6
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions proposals/0080-allow_commission_decrease_at_any_time.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
simd: '0080'
title: Allow Commission Decrease at Any Time
authors:
- Bryan Ischo ([email protected])
category: Standard/Meta
type: Core/Networking/Interface/Meta
status: Draft
created: 2023-10-26
feature: (fill in with feature tracking issues once accepted)
supercedes: (optional - fill this in if the SIMD supercedes a previous SIMD)
extends: (optional - fill this in if the SIMD extends the design of a previous
SIMD)
---

## Summary

The commission_updates_only_allowed_in_first_half_of_epoch feature disallows commission decrease in the second half of epoch. Given that the purpose of this feature was to prevent 'rug pulls' which are accomplished by increasing commission at the end of epoch and then decreasing commission at the beginning of next epoch, disallowing decreases during the second half of epoch is unnecessary.

Check failure on line 18 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 392]

proposals/0080-allow_commission_decrease_at_any_time.md:18:81 MD013/line-length Line length [Expected: 80; Actual: 392]

A feature gate must be added to support this SIMD as all validators' vote programs must treat commission change instructions the same or else consensus will diverge.

Check failure on line 20 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 165]

proposals/0080-allow_commission_decrease_at_any_time.md:20:81 MD013/line-length Line length [Expected: 80; Actual: 165]

## Motivation

Some validator operators may need to decrease commission in order to satisfy their own operational criteria. Speaking personally, when I have an operator error that results in reduced stake account rewards for the epoch, I reduce commission to 0% to ensure that stake accounts are not disadvantaged by my actions. Not being allowed to do this in the second half of an epoch is a real problem for me.

Check failure on line 24 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 400]

proposals/0080-allow_commission_decrease_at_any_time.md:24:81 MD013/line-length Line length [Expected: 80; Actual: 400]

Allowing commission changes during the second half of epochs also enables "reverse rug pulls" where a validator has commission set to 100% during the majority of an epoch but reduces it to 0% across the epoch boundary. It's not clear why some validator operators choose to do this, but it does not seem harmful, and there does appear to be motivation for some validators to do this as it's been done numerous times in the past.

Check failure on line 26 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 428]

proposals/0080-allow_commission_decrease_at_any_time.md:26:81 MD013/line-length Line length [Expected: 80; Actual: 428]

## Alternatives Considered

No alternatives were considered.

## New Terminology

Reverse Rug Pull: Setting commission to 100% for most of an epoch, and to 0% only across epoch boundaries. This has the effect of discouraging third party stake to a validator while still charging 0% commission. This is not considered to be a technique harmful to stakers.

Check failure on line 34 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 274]

proposals/0080-allow_commission_decrease_at_any_time.md:34:81 MD013/line-length Line length [Expected: 80; Actual: 274]

## Detailed Design

A feature will be added which will enable set-commission logic to first check whether the proposed commission change is a decrease, and if so, do not invoke the "only allow commission change in first half of epoch" rule.

Check failure on line 38 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 220]

proposals/0080-allow_commission_decrease_at_any_time.md:38:81 MD013/line-length Line length [Expected: 80; Actual: 220]

In order to facilitate testing, all of the functionality for handling the set-commission vote program instruction will be moved into the vote state module instead of being half in the vote instruction processing logic and half in the vote state module. All of the functionality being in the vote state module will allow a new test which tests just commission updates at various points within an epoch to be written.

Check failure on line 40 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 416]

proposals/0080-allow_commission_decrease_at_any_time.md:40:81 MD013/line-length Line length [Expected: 80; Actual: 416]

## Impact

Validators will now be able to decrease commission at any time in the epoch, but only increase commission in the first half of epochs (because of the commission_updates_only_allowed_in_first_half_of_epoch feature already implemented).

Check failure on line 44 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 234]

proposals/0080-allow_commission_decrease_at_any_time.md:44:81 MD013/line-length Line length [Expected: 80; Actual: 234]

## Security Considerations

None

## Drawbacks

It may cause additional confusion to validators who might not understand why some types of commission changes succeed only in the first half of epochs while others succeed always.

Check failure on line 52 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 179]

proposals/0080-allow_commission_decrease_at_any_time.md:52:81 MD013/line-length Line length [Expected: 80; Actual: 179]

## Backwards Compatibility

This feature requires a feature gate because software which includes the implementation will allow certain set-commission transactions to succeed where software without the implementation would fail those transactions. Thus all validators must be updated to the new functionality at an epoch boundary so that all validators agree on the result of executing those transactions.

Check failure on line 56 in proposals/0080-allow_commission_decrease_at_any_time.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 377]

proposals/0080-allow_commission_decrease_at_any_time.md:56:81 MD013/line-length Line length [Expected: 80; Actual: 377]

0 comments on commit 84b36f6

Please sign in to comment.