> ## 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.

# getInflationRate

> 返回网络的当前通胀率

## 参数

此方法不接受任何参数。

## 响应

<ResponseField name="result" type="object">
  <Expandable title="result fields">
    <ResponseField name="total" type="number">
      总通胀率（百分比）
    </ResponseField>

    <ResponseField name="validator" type="number">
      分配给验证者的通胀率（百分比）
    </ResponseField>

    <ResponseField name="foundation" type="number">
      分配给基金会的通胀率（百分比）
    </ResponseField>

    <ResponseField name="epoch" type="number">
      当前 epoch 编号
    </ResponseField>
  </Expandable>
</ResponseField>

## 代码示例

### 基本请求

```bash theme={null}
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": "getInflationRate"
}'
```

### 使用 web3.js

```typescript theme={null}
import { Connection } from '@solana/web3.js';

const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');

// Get current inflation rate
const inflationRate = await connection.getInflationRate();
console.log('Total inflation:', inflationRate.total);
console.log('Validator inflation:', inflationRate.validator);
console.log('Foundation inflation:', inflationRate.foundation);
console.log('Current epoch:', inflationRate.epoch);

// Calculate staking APY
async function calculateStakingAPY(totalStaked: number, totalSupply: number) {
  const inflationRate = await connection.getInflationRate();
  const validatorAPY = (inflationRate.validator * totalSupply) / totalStaked;
  
  return {
    validatorAPY,
    totalInflation: inflationRate.total,
    validatorInflation: inflationRate.validator,
    foundationInflation: inflationRate.foundation,
    epoch: inflationRate.epoch
  };
}
```

## 注意事项

1. 返回当前通胀率及其分配
2. 总通胀在验证者和基金会之间分配
3. 通胀率以百分比表示
4. 响应是即时的，因为它从当前状态读取
5. 通胀率可能在不同 epoch 之间变化

## 最佳实践

1. 使用此方法了解当前网络通胀
2. 在适当时缓存结果以减少 RPC 负载
3. 考虑通胀对质押奖励的影响
4. 监控通胀率的变化
5. 结合其他通胀相关方法使用

## 常见错误

| 错误码    | 消息                                | 解决方案                  |
| ------ | --------------------------------- | --------------------- |
| -32601 | Method not found                  | 验证是否连接到 Solana RPC 节点 |
| -32007 | Inflation information unavailable | 节点可能正在启动或同步中          |

## 用例

1. **通胀跟踪**
   ```typescript theme={null}
   interface InflationHistory {
     epoch: number;
     total: number;
     validator: number;
     foundation: number;
     timestamp: number;
   }

   async function trackInflationHistory(
     epochs: number = 10
   ): Promise<InflationHistory[]> {
     const history: InflationHistory[] = [];
     const currentEpoch = (await connection.getEpochInfo()).epoch;
     
     for (let i = 0; i < epochs; i++) {
       const epoch = currentEpoch - i;
       const inflationRate = await connection.getInflationRate();
       
       history.push({
         epoch: inflationRate.epoch,
         total: inflationRate.total,
         validator: inflationRate.validator,
         foundation: inflationRate.foundation,
         timestamp: Date.now()
       });
       
       // Add delay to avoid rate limiting
       await new Promise(resolve => setTimeout(resolve, 1000));
     }
     
     return history;
   }
   ```

2. **质押分析**
   ```typescript theme={null}
   interface StakingMetrics {
     currentAPY: number;
     projectedAPY: number;
     totalStaked: number;
     totalSupply: number;
     inflationRate: number;
     validatorInflation: number;
   }

   async function analyzeStakingMetrics(): Promise<StakingMetrics> {
     const inflationRate = await connection.getInflationRate();
     const supply = await connection.getSupply();
     const voteAccounts = await connection.getVoteAccounts();
     
     const totalStaked = voteAccounts.current
       .concat(voteAccounts.delinquent)
       .reduce((sum, account) => sum + account.activatedStake, 0);
     
     const currentAPY = (inflationRate.validator * supply.value.total) / totalStaked;
     
     // Project future APY based on current trends
     const projectedAPY = currentAPY * 0.95; // Assuming 5% decrease
     
     return {
       currentAPY,
       projectedAPY,
       totalStaked,
       totalSupply: supply.value.total,
       inflationRate: inflationRate.total,
       validatorInflation: inflationRate.validator
     };
   }
   ```

3. **通胀告警**
   ```typescript theme={null}
   interface InflationAlert {
     type: 'high' | 'low' | 'change';
     message: string;
     currentRate: number;
     previousRate: number;
     difference: number;
   }

   class InflationMonitor {
     private previousRate: number | null = null;
     private threshold: number;
     
     constructor(threshold: number = 0.01) {
       this.threshold = threshold;
     }
     
     async checkInflation(): Promise<InflationAlert[]> {
       const inflationRate = await connection.getInflationRate();
       const alerts: InflationAlert[] = [];
       
       if (this.previousRate !== null) {
         const difference = Math.abs(inflationRate.total - this.previousRate);
         
         if (difference > this.threshold) {
           alerts.push({
             type: 'change',
             message: `Inflation rate changed by ${difference.toFixed(4)}`,
             currentRate: inflationRate.total,
             previousRate: this.previousRate,
             difference
           });
         }
       }
       
       // Check for unusually high or low rates
       if (inflationRate.total > 0.08) { // 8% threshold
         alerts.push({
           type: 'high',
           message: `Inflation rate is unusually high: ${inflationRate.total}`,
           currentRate: inflationRate.total,
           previousRate: this.previousRate || inflationRate.total,
           difference: 0
         });
       }
       
       if (inflationRate.total < 0.01) { // 1% threshold
         alerts.push({
           type: 'low',
           message: `Inflation rate is unusually low: ${inflationRate.total}`,
           currentRate: inflationRate.total,
           previousRate: this.previousRate || inflationRate.total,
           difference: 0
         });
       }
       
       this.previousRate = inflationRate.total;
       return alerts;
     }
   }
   ```
