Documentation Index
Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt
Use this file to discover all available pages before exploring further.
Parameters
This method does not take any parameters.
Response
Initial inflation percentage from time 0
Terminal inflation percentage
Rate per year at which inflation is lowered
Percentage of total inflation allocated to the foundation
Duration of foundation pool inflation in years
Code Examples
Basic Request
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getInflationGovernor"
}'
Using web3.js
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');
// Get inflation governor parameters
const inflationGovernor = await connection.getInflationGovernor();
console.log('Initial inflation:', inflationGovernor.initial);
console.log('Terminal inflation:', inflationGovernor.terminal);
console.log('Taper rate:', inflationGovernor.taper);
console.log('Foundation percentage:', inflationGovernor.foundation);
console.log('Foundation term:', inflationGovernor.foundationTerm);
// Calculate current inflation rate
async function calculateCurrentInflation() {
const inflationGovernor = await connection.getInflationGovernor();
const epochInfo = await connection.getEpochInfo();
const yearsSinceGenesis = epochInfo.absoluteSlot / (432000 * 365); // Approximate years
const currentInflation = Math.max(
inflationGovernor.terminal,
inflationGovernor.initial - (inflationGovernor.taper * yearsSinceGenesis)
);
return {
currentInflation,
yearsSinceGenesis,
initialInflation: inflationGovernor.initial,
terminalInflation: inflationGovernor.terminal,
taperRate: inflationGovernor.taper
};
}
Notes
- Returns the parameters that govern inflation on the Solana network
- Inflation decreases over time according to the taper rate
- Foundation inflation is separate from validator inflation
- The response is immediate as it reads from the current state
- These parameters are set by governance and can change
Best Practices
- Use this method to understand the network’s inflation schedule
- Cache results when appropriate to reduce RPC load
- Consider the impact of inflation on staking rewards
- Monitor for changes in inflation parameters
- Use in conjunction with other inflation-related methods
Common Errors
| Code | Message | Solution |
|---|
| -32601 | Method not found | Verify you’re connected to a Solana RPC node |
| -32007 | Inflation information unavailable | Node may be bootstrapping or syncing |
Use Cases
-
Inflation Analysis
interface InflationMetrics {
currentInflation: number;
yearsSinceGenesis: number;
initialInflation: number;
terminalInflation: number;
taperRate: number;
foundationPercentage: number;
foundationTerm: number;
validatorInflation: number;
foundationInflation: number;
}
async function analyzeInflation(): Promise<InflationMetrics> {
const inflationGovernor = await connection.getInflationGovernor();
const epochInfo = await connection.getEpochInfo();
const yearsSinceGenesis = epochInfo.absoluteSlot / (432000 * 365);
const currentInflation = Math.max(
inflationGovernor.terminal,
inflationGovernor.initial - (inflationGovernor.taper * yearsSinceGenesis)
);
const foundationInflation = yearsSinceGenesis < inflationGovernor.foundationTerm
? currentInflation * inflationGovernor.foundation
: 0;
return {
currentInflation,
yearsSinceGenesis,
initialInflation: inflationGovernor.initial,
terminalInflation: inflationGovernor.terminal,
taperRate: inflationGovernor.taper,
foundationPercentage: inflationGovernor.foundation,
foundationTerm: inflationGovernor.foundationTerm,
validatorInflation: currentInflation - foundationInflation,
foundationInflation
};
}
-
Staking Reward Projection
interface StakingProjection {
currentAPY: number;
futureAPY: number[];
years: number[];
}
async function projectStakingRewards(
totalStaked: number,
totalSupply: number,
years: number = 10
): Promise<StakingProjection> {
const inflationGovernor = await connection.getInflationGovernor();
const epochInfo = await connection.getEpochInfo();
const currentYear = epochInfo.absoluteSlot / (432000 * 365);
const yearsArray = Array.from({ length: years }, (_, i) => i);
const futureAPY = yearsArray.map(year => {
const inflation = Math.max(
inflationGovernor.terminal,
inflationGovernor.initial - (inflationGovernor.taper * (currentYear + year))
);
const foundationInflation = (currentYear + year) < inflationGovernor.foundationTerm
? inflation * inflationGovernor.foundation
: 0;
const validatorInflation = inflation - foundationInflation;
return (validatorInflation * totalSupply) / totalStaked;
});
return {
currentAPY: futureAPY[0],
futureAPY,
years: yearsArray
};
}
-
Inflation Monitoring
interface InflationAlert {
type: 'high' | 'low' | 'change';
message: string;
currentInflation: number;
expectedInflation: number;
difference: number;
}
async function monitorInflation(
threshold: number = 0.01
): Promise<InflationAlert[]> {
const inflationGovernor = await connection.getInflationGovernor();
const epochInfo = await connection.getEpochInfo();
const yearsSinceGenesis = epochInfo.absoluteSlot / (432000 * 365);
const expectedInflation = Math.max(
inflationGovernor.terminal,
inflationGovernor.initial - (inflationGovernor.taper * yearsSinceGenesis)
);
const currentInflation = await connection.getInflationRate();
const difference = Math.abs(currentInflation - expectedInflation);
const alerts: InflationAlert[] = [];
if (difference > threshold) {
alerts.push({
type: 'change',
message: `Inflation differs from expected by ${difference.toFixed(4)}`,
currentInflation,
expectedInflation,
difference
});
}
if (currentInflation > inflationGovernor.initial) {
alerts.push({
type: 'high',
message: `Inflation is above initial rate`,
currentInflation,
expectedInflation,
difference
});
}
if (currentInflation < inflationGovernor.terminal) {
alerts.push({
type: 'low',
message: `Inflation is below terminal rate`,
currentInflation,
expectedInflation,
difference
});
}
return alerts;
}