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.
Параметры
Объект конфигурации, содержащий следующие необязательные поля:Показать Поля конфигурации
Уровень подтверждения:
processed: Последний блок (неподтверждённый)
confirmed: Подтверждён супербольшинством
finalized: Финализирован супербольшинством
Фильтр результатов по типу счёта:
circulating: Фильтровать по счетам в обороте
nonCirculating: Фильтровать по счетам вне оборота
Ответ
Slot, на котором был обработан запрос
Массив объектов с информацией о счёте:Адрес счёта (в кодировке base-58)
Количество 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": "getLargestAccounts"
}'
Запрос с фильтром
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": "getLargestAccounts",
"params": [
{
"filter": "circulating"
}
]
}'
Использование web3.js
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');
// Get all largest accounts
const largestAccounts = await connection.getLargestAccounts();
console.log('Largest accounts:', largestAccounts);
// Get circulating accounts only
const circulatingAccounts = await connection.getLargestAccounts({
filter: 'circulating'
});
console.log('Largest circulating accounts:', circulatingAccounts);
Примечания
- Возвращает топ-20 счетов по балансу в lamports
- Результаты отсортированы в порядке убывания баланса
- Счета в обороте — это счета, не принадлежащие системной программе
- Счета вне оборота, как правило, принадлежат системной программе
- Ответ приходит немедленно, так как читается из текущего состояния
Рекомендации
- Используйте подходящий уровень подтверждения в зависимости от ваших потребностей:
processed для обновлений интерфейса
confirmed для большинства операций
finalized для критических операций
- Используйте параметр
filter для фокусировки на нужных счетах
- Для отображения пользователям конвертируйте lamports в SOL, разделив на 1e9
- Рассмотрите кэширование результатов для обновлений интерфейса, чтобы снизить нагрузку на RPC
Распространённые ошибки
| Код | Сообщение | Решение |
|---|
| -32602 | Invalid param: Invalid filter | Используйте ‘circulating’ или ‘nonCirculating’ |
| -32601 | Method not found | Убедитесь, что вы подключены к узлу Solana RPC |
| -32007 | Account information unavailable | Узел может выполнять начальную загрузку или синхронизацию |
Сценарии использования
-
Анализ сети
async function analyzeNetworkDistribution() {
const accounts = await connection.getLargestAccounts();
const total = accounts.reduce((sum, acc) => sum + acc.lamports, 0);
const top20Percentage = accounts.reduce((sum, acc) => sum + acc.lamports, 0) / total;
console.log(`Top 20 accounts hold ${top20Percentage * 100}% of total SOL`);
}
-
Мониторинг распределения токенов
async function monitorTokenDistribution() {
const circulating = await connection.getLargestAccounts({ filter: 'circulating' });
const nonCirculating = await connection.getLargestAccounts({ filter: 'nonCirculating' });
const circulatingTotal = circulating.reduce((sum, acc) => sum + acc.lamports, 0);
const nonCirculatingTotal = nonCirculating.reduce((sum, acc) => sum + acc.lamports, 0);
console.log('Circulating supply:', circulatingTotal / 1e9, 'SOL');
console.log('Non-circulating supply:', nonCirculatingTotal / 1e9, 'SOL');
}
-
Отслеживание крупных держателей
interface WhaleAlert {
address: string;
balance: number;
change: number;
}
async function trackWhaleMovements(previousAccounts: any[]) {
const currentAccounts = await connection.getLargestAccounts();
const alerts: WhaleAlert[] = [];
for (const current of currentAccounts) {
const previous = previousAccounts.find(p => p.address === current.address);
if (previous) {
const change = current.lamports - previous.lamports;
if (Math.abs(change) > 1e9) { // Alert on changes > 1 SOL
alerts.push({
address: current.address,
balance: current.lamports / 1e9,
change: change / 1e9
});
}
}
}
return alerts;
}