Skip to content

Restore the RootWeights proxy - #3129

Draft
UnArbosFive wants to merge 1 commit into
mainfrom
restore-root-weights-proxy
Draft

Restore the RootWeights proxy#3129
UnArbosFive wants to merge 1 commit into
mainfrom
restore-root-weights-proxy

Conversation

@UnArbosFive

Copy link
Copy Markdown
Contributor

Problem

set_root_weights is currently available through Any, NonTransfer, NonFungible, and NonCritical, but each of those proxy types grants substantially broader authority than root basket curation alone. The stable RootWeights proxy 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_weights was placed in the broad residual Subtensor call group while RootWeights remained grouped with deprecated deny-all proxy types. That preserved the encoded proxy index but removed its original useful behavior.

Fix

  • Reactivate RootWeights without changing its stable on-chain index.
  • Give it an explicit call group containing only SubtensorModule::set_root_weights.
  • Expose the same one-call allowlist through proxy filter metadata and stop reporting the type as deprecated.
  • Preserve the existing permissions of Any, NonTransfer, NonFungible, and NonCritical by including the new call group in their additive policies.
  • Cover the active status and exact one-call allowlist in the proxy filter tests.

Validation

  • cargo fmt --check --all
  • git diff --check

Rust 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.

@vercel

vercel Bot commented Aug 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
subtensor Ready Ready Preview Aug 28, 2026 11:12pm

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI review — see the sticky summary comment for the verdict and the inline comments below for specific findings.

ProxyType::SwapHotkey => HotkeySwapCalls::contains(call),
ProxyType::SubnetLeaseBeneficiary => SubnetLeaseAllowed::contains(call),
ProxyType::RootClaim => RootClaimCalls::contains(call),
ProxyType::RootWeights => RootWeightsCalls::contains(call),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

@github-actions

Copy link
Copy Markdown
Contributor

🛡️ 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

Sev File Finding
HIGH runtime/src/proxy_filters/mod.rs:123 Reactivation silently empowers dormant proxy delegates inline

Conclusion

Reactivating proxy type 12 retroactively empowers every existing RootWeights delegation. A fresh proxy index or a migration clearing legacy definitions is required before this authority can be enabled safely.


# 🔍 AI Review — Auditor (domain review) has not yet run on this PR.

@github-actions

Copy link
Copy Markdown
Contributor

🔄 AI review updated — Skeptic: VULNERABLE

@camfairchild

Copy link
Copy Markdown
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants