All Articles

Solana Validators and Their On-Chain Profiles

validator info

In this short write-up, let’s discuss how validators publish metadata about themselves.

I was mainly curious about how validators' icons are displayed on popular Solana explorers like validators.app or Solana Beach.

The Solana Config Program

Validators can publish their metadata, such as name, website, details, and icon on-chain. That’s where the dat a can be accessed by explorers and other tools.

For purpose of storing this data there is created the Solana Config program ( Rust Docs) )

Solana Config program ID: Config1111111111111111111111111111111111111.

Solana CLI validator-info Command

Validators use the Solana CLI for managing information stored on-chain via the validator-info command:

# listing all solana config program accounts
solana validator-info -um get

When you want to publish or update your validator information, you use the solana validator-info -um publish command. This is a place limiting what are keys you can set in the validator info data. At the current time those are:

solana validator-info -um publish --help

-d, --details <DETAILS>                               Validator description
-i, --icon-url <URL>                                  Validator icon URL
-w, --website <URL>                                   Validator website url
-p, --info-pubkey <PUBKEY>                            The pubkey of the Validator info account to update

ARGS:
    <NAME>    Validator name
Note

In past there was also --keybase-username option.

Anza currently discourages the Keybase username to be setup by validators. See Anza documentation on validator-info for more details.

If you are interested to list all accounts of the Solana Config program, you can use my solana-config-print tool,

Query of Validator Info

Here’s an example of querying validator information (it is a bit strange one need to provide the info account public key and not the validator identity public key but):

solana validator-info -um get 3LdoMyLZFRRoWcJ1VVzdRnWAMeJjsWJgQYmpoeYGkCGd

Validator Identity: 3x9nibnhgBHWKMRiGnsXJELRBjviQpKyigfrXtKW27KJ
  Info Address: 3LdoMyLZFRRoWcJ1VVzdRnWAMeJjsWJgQYmpoeYGkCGd
  Details: Stake and support https://staking.kiwi
  Keybase Username: krassovitski
  Name: Staking kiwi validator
  Website: https://solanastaking.kiwi/

The underlying account structure looks like this (when used the solana-config-print tool):

Account: 3LdoMyLZFRRoWcJ1VVzdRnWAMeJjsWJgQYmpoeYGkCGd
  Keys (2):
    [0] Va1idator1nfo111111111111111111111111111111 (signer: false)
    [1] 3x9nibnhgBHWKMRiGnsXJELRBjviQpKyigfrXtKW27KJ (signer: true)
  Config Data:
    {
      "details": "Stake and support https://staking.kiwi",
      "keybaseUsername": "krassovitski",
      "name": "Staking kiwi validator",
      "website": "https://solanastaking.kiwi/",
      "iconUrl": "<path to icon if set>"
    }

Validator Info in Solana Explorers

It is recommended to use the validator-info subcommand of the Solana CLI to help explorer applications to fetch more information about validators than only the validator identity public key and vote account.

According to validators.app FAQ, they use a scoring system where published information added points in that schema and it is described as follows:

Published Information

Stakeholders or delegators want to know who is running a node. The Published Information
Score measures the contact information that the validator has posted to the blockchain
using the `solana validator-info` feature.

(2 points) means that the validator has published all four data elements
           (Name, Avatar, Website URL, and Details).
(1 point)  means that the validator has published two or three parts.
(0 points) means that the validator has published only one, or zero, pieces of contact data.

How Explorers Display Validators' Icons

When I looked into how validators are displayed on explorers like validators.app or Solana Beach, the way icons are shown seems to be consistent across them.

There is a differentiator – the validator may publish keybaseUsername in their validator-info data or simply provide an iconUrl (as a direct link to an image).

When keybaseUsername is defined, explorers fetch the icon from keybase.io.

For example, a validator with Keybase username krassovitski can be found at keybase.io/krassovitski.

When the iconUrl is defined, explorers fetch the icon directly from that URL. Such an example is HelixNode validator:

solana validator-info -um get SBD5DJUmJeBNqgnqxsdvJGzKZGbheY4ZmL9e3tGyiSY

Validator Identity: HLXxkmjb47spcmbbKi3UCfZ2qmFY29t8MN562AEmh2Qh
  Info Address: SBD5DJUmJeBNqgnqxsdvJGzKZGbheY4ZmL9e3tGyiSY
  Details: Decentralization genetics - in every block!
  Icon Url: https://ipfs.filebase.io/ipfs/QmYEXXCYbNL37DYKaisX65vXWjuEUZNaemf6jURfApiLsC
  Name: 🧬 HelixNode jitoMEV 0% fee 🧬
  Website: https://staking.kiwi/app/HLXktVmNFeELB5uL5nrpP4WL7jyi3TMyekxASVjDhZ1t

Summary

From what I found, validators fall into three categories:

  1. Validators with Keybase defined - This approach primarily links to keybase.io as a store of additional information about the validator. This method is no longer recommended by Anza.

  2. Validators with direct iconUrl - When Keybase is not defined, validator explorers display the image directly from the iconUrl field. This appears to be the current recommended approach.

  3. Validators without validator-info data - Some validators on the chain do not provide any validator-info data at all.

Published Oct 27, 2025

Developer notes.