Chains API
Solana protocol parameters: network, epochs, inflation, minimum stake, rent
Which network this is (genesis hash), slots per epoch, the inflation schedule and rate in force, the smallest stake delegation, and the balance an account needs to be rent-exempt.
/api/external/chain-analysis/network-parameters/{chain}What it returns
Six protocol parameters of the chain, each read from the chain itself: the genesis hash (which names the network: mainnet has one, every test network another), the epoch schedule (slots per epoch and how far ahead the leader schedule is fixed), the inflation schedule over the years, the inflation rate in force this epoch, the smallest stake delegation accepted and the balance an account must hold to be exempt from rent (a base plus a rate per byte of account data). Every rate is a yearly FRACTION (0.036 = 3.6 %), not a percent. Balances are in lamports (1 SOL = 1,000,000,000 lamports). Each of the six is null when it could not be read, independently of the others. All but the current inflation rate change only by a protocol upgrade; the rate steps once per epoch (about two days).
Chains
- Solana SOL
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/chain-analysis/network-parameters/SOL"
| Parameter | Description |
|---|---|
chainpath · string · required | SOL only; every other chain returns 400. These are Solana protocol parameters (epochs, inflation, minimum stake, rent exemption) that other chains do not publish in this form. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
genesisHash | string | null | The genesis block's hash, base58. It names the network. |
epochSchedule | object | null | How the chain divides slots into epochs. |
epochSchedule.slotsPerEpoch | integer | Slots in every full-length epoch. |
epochSchedule.leaderScheduleSlotOffset | integer | How many slots before an epoch begins its leader schedule is fixed. |
epochSchedule.warmup | boolean | Whether the first epochs were shorter, doubling in length up to slotsPerEpoch. |
epochSchedule.firstNormalEpoch | integer | The first full-length epoch. |
epochSchedule.firstNormalSlot | integer | The first slot of firstNormalEpoch. |
inflationSchedule | object | null | The schedule the yearly inflation rate follows, every value a fraction. |
inflationSchedule.initial | number | The yearly rate the schedule started at. |
inflationSchedule.terminal | number | The floor the rate falls to and then stays at. |
inflationSchedule.taper | number | The fraction by which the rate falls each year until it reaches terminal. |
inflationSchedule.foundation | number | The share of inflation paid to the foundation. |
inflationSchedule.foundationTerm | number | For how many years the foundation share is paid. |
inflationRate | object | null | The yearly inflation rate in force for epoch, split by who receives it. |
inflationRate.epoch | integer | The epoch this rate applies to. |
inflationRate.total | number | The total yearly rate. |
inflationRate.validator | number | The part paid to validators and their stakers. |
inflationRate.foundation | number | The part paid to the foundation. |
stakeMinimumDelegationLamports | integer | null | The smallest stake delegation the chain accepts, in lamports. |
rentExemption | object | null | The balance an account must hold to be exempt from rent: an account with N bytes of data needs at least emptyAccountLamports + N × lamportsPerDataByte lamports. |
rentExemption.emptyAccountLamports | integer | The minimum for an account with no data, in lamports. |
rentExemption.lamportsPerDataByte | integer | What each byte of account data adds to the minimum, in lamports. |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key