This repository has been archived by the owner on Jan 13, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Consider removing StakeInstruction::RedeemVoteCredits #7835
Milestone
Comments
Any gaming implies a bug in the implementation. If I had to guess, credits probably need to be converted to lamports as soon as they are earned. |
Anybody remember why RedeemVoteCredits was added in the first place instead of auto redemption by the runtime? |
Yep, I wrote it. The goal was simply to minimize the size of the bank (aka, the kernel). |
No objection to moving that functionality to the runtime. |
Cool yeah these days the bank knows a ton about vote and stake so bank/vote/stake are already tightly coupled |
removing the instruction pays big dividends in vote and stake state size, too |
@rob-solana, can you take a stab at this? |
yeap, will do |
This was referenced Jan 22, 2020
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
RedeemVoteCredits has a number of problems:
MAX_EPOCH_CREDITS_HISTORY
epochs for each stake/vote account or rewards evaporate.After the first 24 hours of idling, redeeming votes
using a ~1 SOL stake produced ~6221 SOL in voter rewards. Redeeming
that same stake 12 hours later produced ~54 SOL in voter rewards. The reason
for this huge reward drop is because the total stake increased from 435 SOL to 25695
SOL in those 12 hours, so the credit point value was much smaller.
The first two points highlight the unintentional game that will be played around RedeemVoteCredits: if you see observe stake decreasing in the cluster than you're better off delaying RedeemVoteCredits if possible to capitalize on the increasing credit point value. But don't delay too long or you'll lost it all. Worse, RedeemVoteCredits can be run by anybody so others can inflict less desirable credit point values on you.
The alternative is to dispense of RedeemVoteCredits entirely, and have banks automatically redeem vote credits at the end of each epoch for all parties.
The text was updated successfully, but these errors were encountered: