Allow the Staking proxy to call claim_root - #3015
Conversation
|
@yeuyeuh is attempting to deploy a commit to the RaoFoundation Team on Vercel. A member of the Team first needs to authorize it. |
UnArbosSix
left a comment
There was a problem hiding this comment.
needs to target main branch
If a coldkey has set a Staking proxy, that is an explicit signal of trust that the proxy manages its stake positions on its behalf. Under Root Reborn dividends only materialize through claim_root, which can only restake the payout on root for the same coldkey - no value can leave the account. Also documents claim_root in the Staking allowlist of the proxies guide.
2597029 to
c39adfa
Compare
|
Rebased onto One thing worth flagging in the conflict resolution: type StakingAllowed = (StakeManagementCalls, RootClaimTypeCalls, RootClaimCalls);The docs change follows the same logic — Heads-up on CI: |
|
@UnArbosSix ready for another look when you have a moment. |
Description
Root dividends only materialize through
claim_root. Butclaim_rootsits inRootClaimCalls, which theStakingproxy type cannot reach — so a Staking-proxy setup silently stops realizing root rewards, and coldkeys must sign a secondRootClaimdelegation for a right they already meant to delegate.If a coldkey has set a Staking proxy, that's an explicit signal of trust that the proxy manages its stake positions — which includes realizing their rewards.
claim_rootis strictly benign in the Staking threat model: it can only restake the payout on root for the same coldkey; no value can leave the account.Changes:
runtime/src/proxy_filters/mod.rs:StakingAllowed = (StakeManagementCalls, RootClaimTypeCalls, RootClaimCalls)—RootClaimCallsadded,RootClaimTypeCallsuntouchednarrow_proxies_have_exact_allow_listsnow expectsSubtensorModule::claim_rootforProxyType::Staking, alongsideset_root_claim_type)docs/guides/proxies.mdx: the Staking bullet now listsclaim_rootnext toset_root_claim_typeRelated Issue(s)
Type of Change
Breaking Change
Not breaking: it widens the
Stakingproxy allowlist with one benign call. Existing delegations keep working unchanged; no migration needed.NonTransfer/NonCritical/NonFungiblealready includeRootClaimCalls, so all superset relations still hold (verified bysuperset_relations_match_allowed_call_sets).Checklist
cargo fmt --all -- --check(clean)../scripts/fix_rust.shwas not used because it auto-commits, which would have added noise commits to this branch.Screenshots (if applicable)
N/A
Additional Notes
Rebased onto
main(was targetingrelease-v438). The branch now carries a single commit on top ofmain.cargo test -p node-subtensor-runtime --lib proxy_filtershas 4 pre-existing failures onmain, unrelated to this PR:AdminUtils::sudo_set_emission_bar_quantileandAdminUtils::sudo_set_emission_gate_exponentare not registered in any proxy call group, soall_call_groups_cover_runtime_call_metadatafails, and the three broad-proxy inventory tests (non_transfer_*,non_fungible_*,non_critical_*) cascade from it. The tests this PR touches all pass:narrow_proxies_have_exact_allow_lists,superset_relations_match_allowed_call_sets,non_transfer_superset_is_explicit_allowlist.Happy to open a separate PR registering those two admin calls if that's useful.