Rationale
The reward calculation logic is divided into two parts: the old one and the new one. This is based on proposal No.82 which took effect on 2023-01-20 at 14:00:00. Due to the proposal, the vote rewards that occurred before that time (14:00:00, 2023-01-20) would still be calculated with the old reward algorithm when withdrawing, which has poor performance. For more details, please see TIP-465.
There are three types of transactions that trigger vote reward withdrawal: VoteWitnessContract, UnfreezeBalanceContract, and WithdrawBalanceContract.
Why should this feature exist?
To improve the performance of withdrawing vote rewards that occurred before 2023-01-20 14:00:00, reduce the execution time of the above three types of transactions.
Implementation
Do you have ideas regarding the implementation of this feature?
Option 1
Calculate the vote rewards (before 14:00:00, 2023-01-20) in advance by background task and cache them.
Previews

Problems&Shortcomings
Option 2
Execute the above three transactions asynchronously.
Previews

Problems&Shortcomings
Are you willing to implement this feature?
Yes.
statistic
As of Aug. 9, 2023, nearly 210k accounts(rewarding cumulative 2+ maintenances) still need old reward calculation logic , about 1k accounts/w declined online. There are 20k accounts rewarding cumulative 3k maintenances, 150k accounts rewarding cumulative 1k maintenances.
Rationale
The reward calculation logic is divided into two parts: the old one and the new one. This is based on proposal No.82 which took effect on 2023-01-20 at 14:00:00. Due to the proposal, the vote rewards that occurred before that time (14:00:00, 2023-01-20) would still be calculated with the old reward algorithm when withdrawing, which has poor performance. For more details, please see TIP-465.
There are three types of transactions that trigger vote reward withdrawal: VoteWitnessContract, UnfreezeBalanceContract, and WithdrawBalanceContract.
Why should this feature exist?
To improve the performance of withdrawing vote rewards that occurred before 2023-01-20 14:00:00, reduce the execution time of the above three types of transactions.
Implementation
Do you have ideas regarding the implementation of this feature?
Option 1
Calculate the vote rewards (before 14:00:00, 2023-01-20) in advance by background task and cache them.
Previews
Problems&Shortcomings
how to mark and cleanoutdated data(reward has been withdrawn)Option 2Execute the above three transactions asynchronously.
Previews
Problems&Shortcomings
transactionsexpiredue to time-consuming reward calculationsthe transactions are in disorderhow to callback forbroadcastTransactionwhen executed asynchronouslytransactions are not guaranteed to be broadcast over the entire networkAre you willing to implement this feature?
Yes.
statistic
As of Aug. 9, 2023, nearly 210k accounts(rewarding cumulative 2+ maintenances) still need old reward calculation logic , about 1k accounts/w declined online. There are 20k accounts rewarding cumulative 3k maintenances, 150k accounts rewarding cumulative 1k maintenances.