-
Notifications
You must be signed in to change notification settings - Fork 237
Description
Not using commit-reveal allows weight copiers to operate and take a portion of dividends meant to go to holders and validators running the infrastructure.
Commit-reveal has a long history now. sn12 deployed CRv1 and has shown that it can kick weight copiers out, then CRv2 was deployed mostly to remove numerous issues with CRv1 implementation, but it was hard to use it. CRv3 was born to make it easier to use, but there have been security issues and finally now that CRv4 resolved them, we can see that the weight copiers largely gave up on subnets where commit-reveal is enabled.
The problem is that many subnets still don't use commit-reveal and it really is time to... disable the support for weight copying.
I propose the following changes:
- Change the default value of
commit_reveal
for new subnets toEnabled
- Make 1 the minimum for
commit_reveal_interval
- In a migration for all subnets which currently have
commit_reveal_interval
set to0
, change it to1
- In a migration for all subnets which currently have
commit_reveal
set toDisabled
, change it toEnabled
- Make
commit_reveal
hyperparameter sudo only - Remove support for CRv3 (breaking compatibility with bittensor python sdk < 9.9.0, but CRv3 is as secure as
set_weights()
, so...)
Schedule
Points 1, 2, 3, 4 to be done on 2025-08-25
Point 5 (and 4 repeated) to be done on 2025-09-01
Point 6 to be done on 2025-09-08
Why not remove set_weights() entirely
If drand ever breaks, we'd prefer to be temporarily vulnerable to weight copying, than not being able to set weights at all.
What about miner feedback?
After the last round of updates, the concealment period can be less than a minute (reveal happens 4ish blocks after epoch). So in CRv4 it's not really a problem anymore (unlike CRv1, CRv2, CRv3).
What about cooperative validation?
The concealment period is 4 blocks or so, so not a problem, but if you need to motivate validators to find a new leader quickly, use Yuma 3 + Liquid alpha 2.