Перейти к основному содержанию

Параметры

config
object
Объект конфигурации, содержащий:
commitment
string
Уровень подтверждения (processed, confirmed, finalized)

Ответ

result
number
Текущее количество транзакций

Примеры кода

Базовый запрос

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": "getTransactionCount"
}'

Использование web3.js

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

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

// Get transaction count
const count = await connection.getTransactionCount();
console.log('Transaction count:', count);

// Get transaction count with analysis
async function getTransactionCountWithAnalysis(
  config: { commitment?: string }
) {
  const count = await connection.getTransactionCount(config);
  
  return {
    count,
    analysis: {
      timestamp: Date.now(),
      commitment: config.commitment
    }
  };
}

Примечания

  1. Возвращает текущее количество транзакций из реестра
  2. Счётчик включает все транзакции, обработанные узлом
  3. Ответ приходит немедленно, так как читается из текущего состояния
  4. Счётчик может меняться с появлением новых транзакций
  5. Счётчик может отличаться между узлами из-за распространения по сети

Рекомендации

  1. Используйте подходящий уровень подтверждения в зависимости от ваших потребностей
  2. Кэшируйте результаты там, где это уместно, для снижения нагрузки на RPC
  3. Отслеживайте изменения количества транзакций
  4. Рассмотрите использование подписки на websocket для обновлений в реальном времени
  5. Обрабатывайте сетевые ошибки и выполняйте повторные попытки при необходимости

Распространённые ошибки

КодСообщениеРешение
-32601Method not foundУбедитесь, что вы подключены к узлу Solana RPC
-32602Invalid paramsПроверьте параметры конфигурации

Сценарии использования

  1. Анализ количества транзакций
    interface TransactionCountAnalysis {
      count: number;
      metrics: {
        timestamp: number;
        commitment?: string;
      };
    }
    
    class TransactionCountAnalyzer {
      async analyzeTransactionCount(
        config: { commitment?: string }
      ): Promise<TransactionCountAnalysis> {
        const count = await connection.getTransactionCount(config);
        
        return {
          count,
          metrics: {
            timestamp: Date.now(),
            commitment: config.commitment
          }
        };
      }
    }
    
  2. Мониторинг количества транзакций
    interface TransactionCountChange {
      changes: {
        previousCount: number;
        currentCount: number;
        difference: number;
        percentageChange: number;
      };
      metadata: {
        timestamp: number;
      };
    }
    
    class TransactionCountMonitor {
      private previousCount: number | null = null;
      
      async monitorTransactionCount(
        config: { commitment?: string }
      ): Promise<TransactionCountChange | null> {
        const currentCount = await connection.getTransactionCount(config);
        
        if (this.previousCount !== null && this.previousCount !== currentCount) {
          const difference = currentCount - this.previousCount;
          const percentageChange = (difference / this.previousCount) * 100;
          
          this.previousCount = currentCount;
          
          return {
            changes: {
              previousCount: this.previousCount,
              currentCount,
              difference,
              percentageChange
            },
            metadata: {
              timestamp: Date.now()
            }
          };
        }
        
        this.previousCount = currentCount;
        return null;
      }
    }
    
  3. Планирование количества транзакций
    interface TransactionCountPlan {
      currentCount: number;
      recommendations: Array<{
        type: 'scale' | 'optimize' | 'monitor';
        reason: string;
      }>;
      metadata: {
        timestamp: number;
      };
    }
    
    class TransactionCountPlanner {
      private readonly maxTransactionsPerSecond = 1000;
      private readonly minTransactionsPerSecond = 100;
      
      async planTransactionCount(
        config: { commitment?: string }
      ): Promise<TransactionCountPlan> {
        const currentCount = await connection.getTransactionCount(config);
        
        const recommendations: Array<{
          type: 'scale' | 'optimize' | 'monitor';
          reason: string;
        }> = [];
        
        // Check for high transaction rate
        if (currentCount > this.maxTransactionsPerSecond) {
          recommendations.push({
            type: 'scale',
            reason: `Transaction count (${currentCount}) exceeds maximum (${this.maxTransactionsPerSecond})`
          });
        }
        
        // Check for low transaction rate
        if (currentCount < this.minTransactionsPerSecond) {
          recommendations.push({
            type: 'optimize',
            reason: `Transaction count (${currentCount}) below minimum (${this.minTransactionsPerSecond})`
          });
        }
        
        return {
          currentCount,
          recommendations,
          metadata: {
            timestamp: Date.now()
          }
        };
      }
    }