Restore the RootWeights proxy - #3129
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
| ProxyType::SwapHotkey => HotkeySwapCalls::contains(call), | ||
| ProxyType::SubnetLeaseBeneficiary => SubnetLeaseAllowed::contains(call), | ||
| ProxyType::RootClaim => RootClaimCalls::contains(call), | ||
| ProxyType::RootWeights => RootWeightsCalls::contains(call), |
There was a problem hiding this comment.
[HIGH] Reactivation silently empowers dormant proxy delegates
Proxy definitions are stored by this stable enum value, and is_deprecated() never prevented users from retaining or creating type-12 definitions while its filter denied all calls. This change therefore gives every existing RootWeights delegate new authority without the account owner's consent; the delegate executes as the real hotkey and can alter its root-basket allocation. Introduce a new proxy-type index, or first migrate away all existing type-12 definitions before enabling this filter.
🛡️ AI Review — Skeptic (security review)VERDICT: VULNERABLE HIGH scrutiny: young account with no public repositories, offset by repository-admin status, substantial merged contributions, and matching author/committer; no Gittensor association found. Findings
ConclusionReactivating proxy type 12 retroactively empowers every existing # 🔍 AI Review — Auditor (domain review) has not yet run on this PR. |
|
🔄 AI review updated — Skeptic: VULNERABLE |
|
Should we not have this be a different enum value instead? Not great to have it reuse a deprecated one that may be set unintentionally |
Problem
set_root_weightsis currently available throughAny,NonTransfer,NonFungible, andNonCritical, but each of those proxy types grants substantially broader authority than root basket curation alone. The stableRootWeightsproxy type still exists at index 12, but it is marked deprecated and its filter denies every call, so users cannot delegate this operation narrowly.Root cause
When proxy filtering was reorganized into additive call groups,
set_root_weightswas placed in the broad residual Subtensor call group whileRootWeightsremained grouped with deprecated deny-all proxy types. That preserved the encoded proxy index but removed its original useful behavior.Fix
RootWeightswithout changing its stable on-chain index.SubtensorModule::set_root_weights.Any,NonTransfer,NonFungible, andNonCriticalby including the new call group in their additive policies.Validation
cargo fmt --check --allgit diff --checkRust builds and tests are left to CI under the repository's quick-preflight policy. This runtime-affecting change requires release handling through a spec version newer than mainnet or the corresponding no-bump label.