Każdy eksplorator Solana to nakładka na API. Gdy szukasz sygnatury w Solscanie albo Solana Explorer, strona wywołuje interfejs JSON-RPC Solany, często przez własny indekser, i renderuje wynik. Kiedy więc ktoś szuka API eksploratora Solana, zwykle chce jednej z trzech rzeczy: surowych danych on-chain, które pobierze za darmo, bogatszego zindeksowanego API z etykietami i historią albo danych rynkowych, takich jak ceny i pary handlowe. Ten poradnik porównuje wszystkie trzy opcje według stanu na wrzesień 2026 roku, z działającym kodem i limitami, które zmierzyliśmy sami.
Opcje API eksploratora Solana w pigułce
Krótka odpowiedź: JSON-RPC do surowych danych, indekser do historii i parsowania, API rynkowe do cen. Tabela podsumowuje opcje, które przetestowaliśmy na potrzeby naszej wyszukiwarki na żywo.
| Dostawca | Klucz | Do czego | Limity |
|---|---|---|---|
| api.mainnet-beta.solana.com | Nie | Testy, lekkie skrypty | 100 zap. / 10 s na IP |
| solana-rpc.publicnode.com | Nie | Transakcje, sygnatury, salda, bloki | Bez zindeksowanych wywołań tokenów |
| public.rpc.solanavibestation.com | Nie | Konta tokenów, posiadacze, podaż | Ograniczany ruch |
| Solscan Pro API | Tak | Etykiety, transfery, dane tokenów | Lite: 49 USD/mies., 20M CU |
| Helius | Tak | Parsowana historia, DAS, archiwum | Free: 1M kredytów, 10 zap./s |
| Jupiter lite-api | Nie | Ceny i metadane tokenów | Ograniczany ruch |
| DexScreener | Nie | Pary DEX, płynność | 60–300 zap./min |
Kilka dodatkowych wyników z naszych testów, żebyś nie stracił na to popołudnia. Anonimowy dostęp w Tatum pozwalał tylko na 5 zapytań na minutę, a wiele metod było płatnych. Ankr wymagał klucza. Darmowy plan dRPC nie obejmował Solany. BlockEden był wyłącznie płatny. Publiczne API SolanaFM i Solana Beach zwracały podczas naszych sprawdzeń błąd HTTP 502.
Podstawowe metody JSON-RPC, z których korzysta każdy eksplorator
Cztery metody pokrywają większość tego, co widać na stronie eksploratora. Każda przyjmuje ciało JSON z polami jsonrpc, id, method i params, wysyłane metodą POST do dowolnego endpointu RPC.
- getSignaturesForAddress zwraca sygnatury transakcji, które dotyczyły danego adresu, od najnowszych. Każdy wpis zawiera
signature,slot,err(null przy sukcesie),memo,blockTimeiconfirmationStatus.limitwynosi od 1 do 1000, domyślnie 1000. To właśnie lista „historii” na stronie portfela. - getTransaction zwraca pełną transakcję dla jednej sygnatury: instrukcje, konta, opłatę, zużyte compute units, logi oraz salda przed i po. Przekaż
"maxSupportedTransactionVersion": 0, inaczej transakcje wersjonowane zwrócą błąd. - getBalance zwraca saldo SOL konta w lamportach (1 SOL = 1 000 000 000 lamportów).
- getTokenAccountsByOwner zwraca konta tokenów SPL należące do portfela, filtrowane po mincie albo po programie tokenów (starszy SPL Token lub Token-2022). Użyj kodowania
jsonParsed, żeby dostać czytelne salda.
To podstawowe klocki widoków eksploratora portfeli i eksploratora transakcji. Listy posiadaczy, podaż tokena i skanowanie kont należących do programu wymagają cięższych metod, takich jak getTokenLargestAccounts, getSupply i getProgramAccounts, które wiele publicznych węzłów traktuje jako zapytania „zindeksowane” i blokuje.
Przykład getSignaturesForAddress: fetch i curl
Oto minimalny przykład dla przeglądarki lub Node 18+, który wypisuje 25 ostatnich sygnatur dla adresu. Jako przykładowego adresu używa mintu USDC, ale zadziała z dowolnym portfelem lub programem.
const RPC = 'https://solana-rpc.publicnode.com';
const address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
const res = await fetch(RPC, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'getSignaturesForAddress',
params: [address, { limit: 25, commitment: 'confirmed' }],
}),
});
const { result, error } = await res.json();
if (error) throw new Error(`${error.code}: ${error.message}`);
for (const s of result) {
console.log(s.signature, s.slot, s.err ? 'failed' : 'ok', s.blockTime);
}
To samo wywołanie z terminala:
curl -s https://solana-rpc.publicnode.com \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getSignaturesForAddress",
"params":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",{"limit":5}]}'
Żeby pobrać jedną z tych transakcji, zmień metodę na getTransaction i przekaż [signature, { "encoding": "jsonParsed", "maxSupportedTransactionVersion": 0 }]. blockTime to uniksowy znacznik czasu w sekundach i dla bardzo starych lub usuniętych danych może mieć wartość null.
Paginacja z before i until
getSignaturesForAddress stronicuje wstecz w czasie. Przekaż before z ostatnią sygnaturą z poprzedniej strony, żeby dostać kolejną, starszą stronę; przekaż until, żeby zatrzymać się po dotarciu do znanej sygnatury. Pusta tablica oznacza, że doszedłeś do końca historii, którą przechowuje węzeł.
async function allSignatures(address, max = 5000) {
const out = [];
let before;
while (out.length < max) {
const params = [address, { limit: 1000, ...(before && { before }) }];
const page = await rpc('getSignaturesForAddress', params); // twoja funkcja pomocnicza do POST
if (!page.length) break;
out.push(...page);
before = page[page.length - 1].signature;
}
return out;
}
Przy synchronizacji przyrostowej zapisuj najnowszą sygnaturę, jaką widziałeś, i następnym razem przekaż ją jako until. Pobierasz wtedy tylko nowe dane, co pozwala spokojnie mieścić się w publicznych limitach.
Głębokość historii bywa różna: nie każdy węzeł RPC przechowuje pełną księgę. Publiczny węzeł może zwrócić krótką historię starego portfela, podczas gdy dostawca archiwalny zwróci dane z kilku lat. Jeśli historia portfela wygląda podejrzanie krótko, sprawdź zindeksowane API, zanim uznasz, że konto jest nowe.
Poziomy commitment: processed, confirmed, finalized
Commitment mówi węzłowi, jak bardzo utrwalony musi być blok, zanim węzeł odpowie. Oficjalna dokumentacja RPC definiuje trzy poziomy, a domyślny jest zwykle finalized.
- processed: najnowszy blok węzła. Najszybciej, ale blok wciąż może zostać wycofany.
- confirmed: przegłosowany przez superwiększość, czyli ponad dwie trzecie aktywnego stake’u.
- finalized: maksymalny lockout; najmocniejsza gwarancja.
getSignaturesForAddress akceptuje tylko confirmed lub finalized. Dla stron w stylu eksploratora rozsądnym kompromisem jest confirmed: nowa sygnatura pojawia się w ciągu kilku slotów (od skrócenia w sierpniu i wrześniu 2026 roku slot trwa około 250–300 ms), a wycofania na tym poziomie zdarzają się bardzo rzadko. Przy wszystkim, co przesuwa pieniądze albo aktualizuje główną bazę danych, czekaj na finalized.
Dobre obyczaje przy limitach publicznych endpointów
Publiczne endpointy są współdzielone, więc zachowuj się jak kulturalny gość. Oficjalne endpointy mainnetu, devnetu i testnetu pozwalają na 100 zapytań na 10 sekund z jednego IP, 40 na 10 sekund dla pojedynczej metody i 40 jednoczesnych połączeń, i wprost nie są przeznaczone do produkcji.
Praktyczne zasady, których przestrzegamy we własnym kliencie Solscannera (rpc.ts):
- Rotuj, nie zasypuj. Nasza wyszukiwarka trzyma dwie pule. Wywołania „lekkie” (transakcje, sygnatury, salda, bloki, epoka) trafiają najpierw do publicnode, potem do Solana Vibe Station, a na końcu do oficjalnego endpointu. Wywołania „ciężkie”, zindeksowane (
getTokenAccountsByOwner,getTokenLargestAccounts,getSupply,getProgramAccounts,getTokenSupply) idą najpierw do Solana Vibe Station. Devnet i testnet korzystają z oficjalnych endpointów. - Traktuj błędy limitów jako „spróbuj gdzie indziej”. Kody takie jak -32005, 429 i 403 albo komunikaty wspominające o limitach lub planach przenoszą zapytanie do następnego endpointu, zamiast kończyć się porażką.
- Zapamiętuj, co zadziałało. Ostatni endpoint, który odpowiedział, staje się pierwszym wyborem przy kolejnym zapytaniu.
- Ustaw timeout. Każde zapytanie jest przerywane po 14 sekundach, żeby wolny węzeł nie zamroził strony.
- Cache’uj i grupuj. Nie pobieraj ponownie transakcji w stanie finalized; one się nigdy nie zmieniają.
Do danych rynkowych wywołujemy bezkluczowe lite-api.jup.ag od Jupitera dla cen i metadanych tokenów (w naszym kliencie do 100 mintów na zapytanie), CoinGecko jako zapasowe źródło ceny SOL i DexScreener dla par handlowych. DexScreener w swojej dokumentacji API podaje 60 zapytań na minutę dla endpointów profili tokenów i 300 na minutę dla endpointów par. Nasz przewodnik po eksploratorach DeFi wyjaśnia, co oznaczają te liczby dla par.
Solscan Pro API, Helius i inne płatne API eksploratorów
Płatne API mają sens, gdy potrzebujesz zindeksowanych danych, których zwykłe RPC nie da ci tanio: opisanych transferów, rankingów posiadaczy tokenów, zdekodowanej aktywności DeFi albo historii z wielu lat w jednym zapytaniu.
Solscan Pro API. Solscan, od stycznia 2024 roku należący do Etherscan, udostępnia swoje zindeksowane dane (konta, transfery, tokeny, NFT, rynki) przez Pro API. Istnieje darmowy poziom; plan Lite kosztuje 49 USD miesięcznie, daje 20 milionów compute units i 1000 zapytań na 60 sekund i nie obejmuje multi-endpointów, Market/price-ohlcv, Account/metadata ani Account/funded_by. Istnieją wyższe plany, ale nie udało nam się zweryfikować ich obecnych cen, więc sprawdź cennik Solscana samodzielnie. Za plany API nie ma zwrotów.
Helius. Helius, zespół stojący za eksploratorem Orb, oferuje darmowy plan z kluczem API: w chwili pisania 1 milion kredytów miesięcznie i 10 zapytań RPC na sekundę. Jego rozszerzone API zwracają sparsowane, czytelne dla człowieka transakcje, a sam Orb działa na danych archiwalnych Heliusa i metodzie getTransactionsForAddress.
API Solana Beach. Solana Beach publikuje dokumentację pod adresem solanabeach.io/docs i repozytorium na GitHubie, skupione na walidatorach i stakingu. W naszych testach zwracało błąd 502, więc najpierw sprawdź jego status.
Najczęstsze błędy API Solana i co oznaczają
Większość awarii API układa się w kilka wzorców, a treść błędu zwykle mówi, z którym masz do czynienia. Zanim cokolwiek ponowisz, przeczytaj error.code i error.message.
HTTP 403 lub 429. Endpoint blokuje twoje IP albo ogranicza jego ruch. Zwolnij, przełącz się na inny endpoint albo przejdź na plan z kluczem. Oficjalny endpoint mainnetu zwracał nam 403 z adresu IP centrum danych, co jest typowe dla współdzielonych adresów chmurowych.
Błąd -32005 lub komunikaty o „planie”. Dostawca nie obsługuje tej metody na twoim poziomie. Na darmowych węzłach ofiarą zwykle padają zindeksowane wywołania, takie jak getTokenAccountsByOwner.
Błędy CORS w konsoli przeglądarki. Endpoint działa z curl, ale odrzuca zapytania ze strony internetowej. Każdy endpoint bez klucza z naszej tabeli akceptował we wrześniu 2026 roku zapytania z przeglądarki i dlatego statyczna strona, taka jak Solscanner, może uruchamiać wyszukiwarkę bez backendu. Jeśli dodajesz dostawcę wymagającego klucza, wywołuj go z serwera, żeby klucz nigdy nie trafił do użytkowników.
Wynik null. W przypadku getTransaction null zwykle oznacza, że węzeł nie zna tej sygnatury: zły klaster, jeszcze nieosiągnięty poziom commitment albo sygnatura spoza historii węzła. Nasz klient potrafi ponowić takie wywołanie na kolejnym endpoincie, zanim zgłosi „not found”.
Kiedy potrzebujesz indeksera zamiast RPC?
Indekser jest potrzebny, gdy twoje pytanie obejmuje wiele kont albo długie okresy. RPC dobrze odpowiada na pytania „jaki jest teraz stan tego konta?” i „co zrobiła ta transakcja?”. Źle radzi sobie z pytaniem „każdy transfer USDC z tego portfela od 2023 roku, z wartościami w USD”, bo musiałbyś przejść przez tysiące sygnatur i sparsować każdą z nich.
Znaki, że wyrosłeś z surowego RPC:
- Wywołujesz
getTransactionsetki razy na jedno wyświetlenie strony. - Potrzebujesz liczby lub rankingu posiadaczy tokena (publiczne węzły często blokują
getTokenLargestAccountsigetProgramAccounts). - Potrzebujesz etykiet czytelnych dla ludzi (giełdy, programy, znane portfele) albo historycznych cen w USD.
- Potrzebujesz historii starszej niż ta, którą przechowuje twój węzeł.
Na tym etapie Helius, Solscan Pro albo własny indekser (plugin Geyser zasilający bazę danych) szybko się zwraca. Jeśli wciąż tworzysz prototyp, testuj najpierw na endpointach devnetu i przeczytaj przewodnik po eksploratorze programów, żeby dekodować instrukcje za pomocą IDL. Porównanie eksploratorów zbudowanych na tych API z perspektywy użytkownika znajdziesz w naszym rankingu najlepszych eksploratorów Solana.
Zespół badawczy SolscannerAktualizacja · Metodologia recenzji