Skip to main content
The validator reads a YAML config. Start from config/validator.example.yaml and edit the network and validator blocks. Defaults below come from ValidatorSettings and NetworkSettings (src/platform_network/config/settings.py:10-52).

Network block

The network block sets identity and chain connection (config/validator.example.yaml:1-8, src/platform_network/config/settings.py:10-17):
KeyDefaultSource
nameplatformsettings.py:11, validator.example.yaml:2
netuid100settings.py:12, validator.example.yaml:3
chain_endpointnullsettings.py:13, validator.example.yaml:4
wallet_namedefaultsettings.py:14, validator.example.yaml:5
wallet_hotkeydefaultsettings.py:15, validator.example.yaml:6
wallet_pathnullsettings.py:16, validator.example.yaml:7
master_uid0settings.py:17, validator.example.yaml:8

Validator block

The validator block controls the registry reconcile loop and the weight submit loop (config/validator.example.yaml:15-22, src/platform_network/config/settings.py:41-52):
KeyDefaultPurposeSource
registry_urlhttps://chain.platform.networkRegistry the validator readssettings.py:42, validator.example.yaml:16
registry_retry_seconds15Reconcile retry intervalsettings.py:43, validator.example.yaml:17
weights_urlnullWeights source overridesettings.py:44, validator.example.yaml:18
weights_interval_seconds360Submit loop intervalsettings.py:45, validator.example.yaml:19
weights_timeout_seconds15.0Weights fetch timeoutsettings.py:46, validator.example.yaml:20
weights_retries3Weights fetch retriessettings.py:47, validator.example.yaml:21
weights_freshness_seconds720Max vector age before skipsettings.py:48, validator.example.yaml:22

Weights URL resolution

weights_url defaults to null. When it is null, the validator fetches weights from registry_url. The resolved_weights_url property returns weights_url when set, otherwise registry_url (src/platform_network/config/settings.py:50-52).

Database block

The validator config includes a database URL using the asyncpg driver (config/validator.example.yaml:24-25):
database:
  url: postgresql+asyncpg://platform:<password>@postgres.platform.svc.cluster.local/platform

Observability block

Logging defaults to JSON output (config/validator.example.yaml:35-38, src/platform_network/config/settings.py:112-115):
KeyDefaultSource
log_jsontruesettings.py:113, validator.example.yaml:36
sentry_dsnnullsettings.py:114, validator.example.yaml:37
otel_service_nameplatform-validatorvalidator.example.yaml:38

Delegation instead of self-hosting

If running the validator stack is too demanding, you can delegate validation power with Bittensor CHK / stake-weight check to the recommended validator hotkey, rather than running this stack yourself (config/validator.example.yaml:10-13).

Next steps

Running a validator

Apply the config and start the runtime.

Weight setting

How the cadence values drive submissions.