# validator-root-weights (/docs/query/validator-root-weights)

The `(netuid, weight)` pairs its root dividends are deployed into each
epoch, exactly as stored (u16, max-upscaled), plus each destination's
normalized `share` of the total.     Netuid 0 means "hold as TAO / root
stake". An empty list means no custom weights are set; the fund is
uncurated and each subnet's dividend accumulates in place on that
subnet, trade-free (no sell, no redeploy).

**Category:** Staking

## Parameters [#parameters]

| Parameter     | Type   | Description                                  |
| ------------- | ------ | -------------------------------------------- |
| `hotkey_ss58` | string | Validator hotkey whose root weights to read. |

## CLI [#cli]

```bash
btcli query validator-root-weights --hotkey <ss58|name> --json
```

## Python [#python]

Namespace method (autocomplete, signature help):

```python
import bittensor as bt

sub = bt.Subtensor()
result = sub.staking.validator_root_weights(hotkey_ss58="5F...")
```

Or dispatch by name, as an agent would:

```python
result = sub.read("validator_root_weights", hotkey_ss58="5F...")
```

Async is the same surface awaited: `async with bt.Subtensor() as client:`.

## On-chain implementation [#on-chain-implementation]

* Runtime API [`BetaBasketRuntimeApi.get_validator_weights`](/code/runtime/src/lib.rs#L2369-L2371)

Every file is browsable under [/code](/code) exactly as built into the runtime.
