Conversation
Eugene-hu
left a comment
There was a problem hiding this comment.
LGTM; when do you think we can release this update taco?
| // Calculate weights for bonds, apply bonds penalty to weights. | ||
| // bonds_penalty = 0: weights_for_bonds = weights.clone() | ||
| // bonds_penalty = 1: weights_for_bonds = clipped_weights.clone() | ||
| let weights_for_bonds: Vec<Vec<I32F32>> = interpolate( &weights, &clipped_weights, bonds_penalty); |
There was a problem hiding this comment.
So if the bonds penalty = 0.5, will the interpolate function return an average between weights and clipped weights?
There was a problem hiding this comment.
Yes, that is correct, the unit tests for interpolate has examples of this.
Once outstanding approvals are granted, it can be merged. |
| } | ||
|
|
||
| #[pallet::call_index(59)] | ||
| #[pallet::weight((Weight::from_ref_time(14_000_000) |
There was a problem hiding this comment.
Was this benchmarked? If not, will add it to the list of features that need benchmarking before we push latest chain upgrade.
There was a problem hiding this comment.
It was not Edit: not my PR, oops
There was a problem hiding this comment.
Was this benchmarked? If not, will add it to the list of features that need benchmarking before we push latest chain upgrade.
No it wasn't benchmarked, but copied the time of another u16 hyperparam.
Add BondsPenalty hyperparam
Given recent issues with (partially) blacklisted validators getting poor dividends, we've been exploring the possibility of adjusting the validation bonds penalty to improve their dividends.
Bonds penalty: Weight higher than consensus gets clipped, and bonds calculated from this then also get clipped, which means dividends get clipped. Cabal that sets weights on its own poor servers have their bonds cut and receive less dividends.
Validation advantage: Setting weight on the highest performing servers, means that dividends will be relatively better. Cabal that sets weights on its own poor servers will get less dividends because those servers get less incentive.
Suggestion: Adjust bonds penalty per netuid, with a default zero penalty, keep validation advantage.
Expected result: Partially blacklisted validators that set more weights on a fewer set of servers will enjoy full bonds on those, instead of getting bonds cut like when validation penalty applies.
Security guarantees:
A foremost concern is how this will affect the consensus security guarantees, so we simulate that as part of the subtensor integration tests with the
_map_consensus_guarantees()function, and do a comparison with/without bonds penalty.We observe as slight erosion of guarantees, at one point quantified as a 73% -> 79% honest utility increase required @ 60% honest stake to retain at least 60% emission. This is acceptable given that we gain significant alleviation of poor dividends due to blacklisting.