Параметры
Объект конфигурации, содержащий:Уровень подтверждения (processed, confirmed, finalized)
Ответ
Текущее количество транзакций
Примеры кода
Базовый запрос
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
}
};
}
Примечания
- Возвращает текущее количество транзакций из реестра
- Счётчик включает все транзакции, обработанные узлом
- Ответ приходит немедленно, так как читается из текущего состояния
- Счётчик может меняться с появлением новых транзакций
- Счётчик может отличаться между узлами из-за распространения по сети
Рекомендации
- Используйте подходящий уровень подтверждения в зависимости от ваших потребностей
- Кэшируйте результаты там, где это уместно, для снижения нагрузки на RPC
- Отслеживайте изменения количества транзакций
- Рассмотрите использование подписки на websocket для обновлений в реальном времени
- Обрабатывайте сетевые ошибки и выполняйте повторные попытки при необходимости
Распространённые ошибки
| Код | Сообщение | Решение |
|---|
| -32601 | Method not found | Убедитесь, что вы подключены к узлу Solana RPC |
| -32602 | Invalid params | Проверьте параметры конфигурации |
Сценарии использования
-
Анализ количества транзакций
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
}
};
}
}
-
Мониторинг количества транзакций
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;
}
}
-
Планирование количества транзакций
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()
}
};
}
}