Reimbursement for lost pool rewards
This proposal aims to reimburse 50 pool members that didn't receive various amounts of pool rewards due to this bug, which was fixed in the latest runtime upgrade.
In short, when a pool enters the destroying phase anyone can permissionlessly unbond the pool members. When that happens any pending rewards are claimed. This bug caused the rewards to be sent to the caller of the unbond
extrinsic, instead of the actual pool member.
We ran this Python script to find the affected accounts and the rewards they didn't receive (credit to Kian who wrote it). The results can be found here. I'd appreciate any cross checks to make sure the batch call has been built correctly and the proper amounts will be sent to the correct recipients.
To be clear, this is a double spend. These rewards have already been claimed by the pool owners who called the unbond
extrinsics. But given that the amount is small, and trying to contact all these pool owners to return the misappropriated rewards would be troublesome to say the least, we believe this proposal is the most straightforward way to make these pool members whole and we'd appreciate it if the community approved it.
Comments (3)
Proposal Passed
3
of 3Summary
0%
Aye
0%
Nay
Aye (47)0.0 PAS
Support0.0 PAS
Nay (2)0.0 PAS
Voting Data
Approval%
Support%
Threshold0.00%
Threshold0.00%
I have worked Michalis on this fix and want to testify to the correctness of everything described here. I think this is a great example of exercising:
Of course, if the amount at risk was substantially larger, this would have possibly been a controversial proposal, but for 120 DOTs, I think it is perfectly fine to allow the network to refund the affected users.
For accounting purposes, I wish it would have been possible to attach a remark to the proposal, such that, for example, when an affected user sees this unknown transfer from treasury into their account 2 years from now, they have a way to know why it happened. For larger amounts, this is also useful for tax and accounting purposes.
I have worked Michalis on this fix and want to testify to the correctness of everything described here. I think this is a great example of exercising: