跳转到主要内容

参数

config
object
包含以下内容的配置对象:
commitment
string
Commitment 级别(processed、confirmed、finalized)

响应

result
number
最低质押委托金额(以 lamports 为单位)

代码示例

基本请求

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": "getStakeMinimumDelegation",
  "params": []
}'

使用 web3.js

import { Connection } from '@solana/web3.js';

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

// Get minimum stake delegation
const minDelegation = await connection.getStakeMinimumDelegation();
console.log('Minimum stake delegation:', minDelegation);

// Get minimum stake delegation with analysis
async function getStakeMinimumDelegationWithAnalysis(
  config?: { commitment?: string }
) {
  const minDelegation = await connection.getStakeMinimumDelegation(config);
  
  return {
    minDelegation,
    analysis: {
      inSOL: minDelegation / 1e9, // Convert lamports to SOL
      metadata: {
        timestamp: Date.now(),
        commitment: config?.commitment
      }
    }
  };
}

注意事项

  1. 返回以 lamports 为单位的最低质押委托金额
  2. 最低委托金额由网络设置
  3. 响应是即时的,因为它从当前状态读取
  4. 最低委托金额可能随网络升级而变化
  5. 此值对于确定有效的质押金额非常重要

最佳实践

  1. 根据需求使用适当的 commitment 级别
  2. 在适当时缓存结果以减少 RPC 负载
  3. 监控最低委托金额的变化
  4. 考虑使用 WebSocket 订阅获取实时更新
  5. 适当处理网络错误并重试

常见错误

错误码消息解决方案
-32601Method not found验证是否连接到 Solana RPC 节点
-32602Invalid params检查配置参数
-32007Minimum delegation information unavailable节点可能正在启动或同步中

用例

  1. 质押委托分析
    interface StakeDelegationAnalysis {
      minDelegation: number;
      metrics: {
        inSOL: number;
        recommendedMinimum: number;
      };
      metadata: {
        timestamp: number;
        commitment?: string;
      };
    }
    
    class StakeDelegationAnalyzer {
      private readonly recommendedMultiplier = 1.1; // 10% above minimum
      
      async analyzeStakeDelegation(
        config?: { commitment?: string }
      ): Promise<StakeDelegationAnalysis> {
        const minDelegation = await connection.getStakeMinimumDelegation(config);
        
        return {
          minDelegation,
          metrics: {
            inSOL: minDelegation / 1e9,
            recommendedMinimum: minDelegation * this.recommendedMultiplier
          },
          metadata: {
            timestamp: Date.now(),
            commitment: config?.commitment
          }
        };
      }
    }
    
  2. 质押委托监控
    interface StakeDelegationChange {
      previousMinDelegation: number;
      currentMinDelegation: number;
      change: number;
      metadata: {
        timestamp: number;
      };
    }
    
    class StakeDelegationMonitor {
      private previousMinDelegation: number | null = null;
      
      async monitorStakeDelegation(
        config?: { commitment?: string }
      ): Promise<StakeDelegationChange | null> {
        const currentMinDelegation = await connection.getStakeMinimumDelegation(config);
        
        if (this.previousMinDelegation === null) {
          this.previousMinDelegation = currentMinDelegation;
          return null;
        }
        
        if (this.previousMinDelegation !== currentMinDelegation) {
          const change: StakeDelegationChange = {
            previousMinDelegation: this.previousMinDelegation,
            currentMinDelegation,
            change: currentMinDelegation - this.previousMinDelegation,
            metadata: {
              timestamp: Date.now()
            }
          };
          
          this.previousMinDelegation = currentMinDelegation;
          return change;
        }
        
        return null;
      }
    }
    
  3. 质押委托规划
    interface StakeDelegationPlan {
      minDelegation: number;
      recommendations: Array<{
        amount: number;
        description: string;
        inSOL: number;
      }>;
      metadata: {
        timestamp: number;
      };
    }
    
    class StakeDelegationPlanner {
      private readonly tiers = [
        { multiplier: 1.1, description: 'Minimum recommended' },
        { multiplier: 2, description: 'Standard' },
        { multiplier: 5, description: 'Premium' }
      ];
      
      async planStakeDelegation(
        config?: { commitment?: string }
      ): Promise<StakeDelegationPlan> {
        const minDelegation = await connection.getStakeMinimumDelegation(config);
        
        const recommendations = this.tiers.map(tier => ({
          amount: minDelegation * tier.multiplier,
          description: tier.description,
          inSOL: (minDelegation * tier.multiplier) / 1e9
        }));
        
        return {
          minDelegation,
          recommendations,
          metadata: {
            timestamp: Date.now()
          }
        };
      }
    }