Add Solana Support - #171
Open
josephinney wants to merge 5 commits into
Open
Conversation
josephinney
requested review from
LadyChristina and
dimkarakostas
as code owners
August 11, 2026 15:17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR adds full support for Solana to the pipeline.
Note on related work: I'm aware of #168, which also adds Solana support but appears to have stalled while awaiting changes since late 2025. I opened this PR because it takes a different approach in a few areas that may be useful to compare, and I'm very happy to consolidate, defer to, or combine efforts with that PR, whatever the maintainers prefer. Key differences:
SolanaMapping(inheriting fromDefaultMappingwith exact identifier lookup), rather thanDummyMapping, which aligns with the review feedback given on feat(solana): wire with samples & tests #168.identifiers/solana.jsonis keyed by validator vote account, sourced from Solana's on-chain Config program.Approach
Solana is conceptually similar to Cardano (data arrives already parsed, mapping is an exact identifier lookup rather than a substring match), with one key difference: the identifier (vote account) and the reward address (identity account) are distinct values, whereas in Cardano the pool hash serves as both. The vote account is used as the identifier because it is stable and permanent, whereas a validator's identity account can be rotated over time.
Main changes:
SolanaMapping: exact vote-account identifier lookup, single identity-account address lookup.ledger_parser(reusingDummyParser) andledger_mapping.mapping_information/identifiers/solana.json(validator metadata).config.yaml.Two pipeline-wide notes:
get_reward_addressesnow accepts the list-formreward_addressesfrom the EDI data-format spec (e.g.["addr"]) in addition to the comma-separated string. Backward compatible and benefits all ledgers.queries.yamlentry is added, as Solana is not collected via BigQuery in this PR.Clustering (addresses/clusters mapping information) is intentionally left for a follow-up, to be coordinated with the maintainers.
All tests pass (45 passed). Note:

mapping_information/cardano_preprocessingis excluded from the local run because its BigQuery/protobuf dependency is incompatible with Python 3.14 (unrelated to Solana, pre-existing). The Solana parser and mapping tests are included and passing.Checklist
All Submissions:
New Ledger Support Submissions:
consensus_decentralization/parse.py?consensus_decentralization/map.py?