Solana Validator Icons are changing — here’s how & why

Michael Hubbard
3 min readNov 9, 2023

Solana, the famously fast & performant blockchain, uses a delegated proof of stake consensus mechanism. This means that users may delegate their SOL tokens to a validator of their choosing, enabling that validator to carry their stake-weight into consensus voting and to produce blocks.

With such a delegation system it is important to enable informed choices by delegators. This means differentiating and identifying validators, measuring their performance and uptime, as well as their community and engineering contributions.

History: Keybase & sunset

Since Mainnet-Beta launched in early 2020, Solana validators have been publishing their meta data on-chain. This happens using the native Config Program.

Using the Config Program through the Solana CLI one can publish a name, website & description for a validator.

solana validator-info publish "My Validator" \
-w https://validator.website \
-d "My validator is the fastest validator" \
-n keybase_name

This method is also used to publish a reference to an off-chain icon for a validator.

Until recently this was done using a service called Keybase. Keybase is a service that allows anyone to store cryptographically signed files, and keybase account icons are accessible via their API and stored on Amazon S3.

When passing a keybase_name into the Config program, under the hood the CLI would check that the user has a text file in their keybase account, which has a name matching the validator identity public key. This relied on the free keybase.pub service, which shut down earlier this year.

Users could still publish an icon to their keybase profile and override the validation on the CLI with a force flag, however this event clearly presented the problems of relying on a single, third party, entity to host the entire validator icon infrastructure.

Future: iconUrl

solana validator-info publish "My Validator" \
-w https://validator.website \
-d "My validator is the fastest validator" \
-i "https://my-icon.com/icon.png"

After keybase.pub was shut down, in May 2023 we made the suggestion of introducing a new method of publishing validator icons. This resulted in the introducing of the iconUrl.

Various methods, pros & cons were discussed, however ultimately the consensus among validators that joined the conversation on the Solana Tech Discord as well as between validators and Solana Labs Engineers on the Github Pull Request was that an arbitrary URL is the best approach.

The benefit is that validators have complete sovereignity over their icons. They can host them anywhere they like, in any format they like.

The drawback is that this presents additional challenges to any frontend wishing to utilize such icons.

The Config Program under the hood simply stores a JSON object containing the validator meta data, it isn’t feasible to validate the remote file behind the URL. Therefore any app consuming validator info data should ensure it validates and caches the images, so that valid and appropriately sized images are served to its users, without dependency on the remote URL being always-on.

Keybase remains available on the CLI, and most validator info accounts still contain this, however it requires passing the -n and -f flags which are hidden by default from the user. All apps should implement support for both for backward compatibility, with the preference being to display the iconUrl.

Recommended icon format

The official docs recommend that icons are 360x360px (as the Keybase ones are) and in PNG format, to allow for transparency.

Whether or not validators follow this format, it is recommended for clients and frontends to validate, sanitize and redraw images to these dimensions or another square dimension appropriate for their use case.

--

--

Michael Hubbard

Entrepreneur, blockchain enthusiast, web developer, business analyst, avid traveller, Always looking for the next adventure!