Metody RPC Solana i dokumentacja
Interakcja z węzłami Solana bezpośrednio za pomocą JSON RPC API poprzez metody HTTP i Websocket.
Konfigurowanie zaangażowania stanu
Podczas kontroli wstępnych i przetwarzania transakcji węzły Solana wybierają, który stan banku zapytać, na podstawie wymogu zaangażowania określonego przez klienta. Zaangażowanie opisuje, jak bardzo blok jest sfinalizowany w danym momencie. Podczas zapytań o stan księgi zaleca się używanie niższych poziomów zaangażowania do raportowania postępów i wyższych poziomów, aby upewnić się, że stan nie zostanie cofnięty.
W kolejności malejącej zaangażowania (od najbardziej sfinalizowanego do najmniej sfinalizowanego) klienci mogą określić:
finalized
- węzeł zapyta o najnowszy blok potwierdzony przez superwiększość klastra jako osiągający maksymalne zablokowanie, co oznacza, że klaster uznał ten blok za sfinalizowanyconfirmed
- węzeł zapyta o najnowszy blok, na który głosowała superwiększość klastra.- Uwzględnia głosy z gossip i odtwarzania.
- Nie uwzględnia głosów na potomkach bloku, tylko bezpośrednie głosy na ten blok.
- Ten poziom potwierdzenia zapewnia również gwarancje "optymistycznego potwierdzenia" w wersji 1.3 i nowszych.
processed
- węzeł zapyta o swój najnowszy blok. Należy zauważyć, że blok ten może zostać pominięty przez klaster.
Do przetwarzania wielu zależnych transakcji w serii zaleca się użycie
zaangażowania confirmed
, które równoważy szybkość z bezpieczeństwem cofnięcia.
Dla całkowitego bezpieczeństwa zaleca się użycie zaangażowania finalized
.
Domyślne zaangażowanie
Jeśli konfiguracja zaangażowania nie zostanie podana, węzeł
domyślnie użyje zaangażowania finalized
Tylko metody, które zapytują o stan banku, akceptują parametr zaangażowania. Są one wskazane w poniższej Referencji API.
Struktura RpcResponse
Wiele metod, które przyjmują parametr zaangażowania, zwraca obiekt JSON RpcResponse składający się z dwóch części:
context
: Struktura JSON RpcResponseContext zawierająca poleslot
, w którym operacja została oceniona.value
: Wartość zwrócona przez samą operację.
Parsowane odpowiedzi
Niektóre metody obsługują parametr encoding
i mogą zwracać dane konta lub
instrukcji w parsowanym formacie JSON, jeśli zostanie zażądane
"encoding":"jsonParsed"
i węzeł posiada parser dla programu właściciela. Węzły
Solana obecnie obsługują parsowanie JSON dla następujących natywnych i SPL
programów:
Program | Stan konta | Instrukcje |
---|---|---|
Address Lookup | v1.15.0 | v1.15.0 |
BPF Loader | n/a | stabilny |
BPF Upgradeable Loader | stabilny | stabilny |
Config | stabilny | |
SPL Associated Token Account | n/a | stabilny |
SPL Memo | n/a | stabilny |
SPL Token | stabilny | stabilny |
SPL Token 2022 | stabilny | stabilny |
Stake | stabilny | stabilny |
Vote | stabilny | stabilny |
Lista parserów kont można znaleźć tutaj, a parserów instrukcji tutaj.
Kryteria filtrowania
Niektóre metody obsługują podanie obiektu filters
, aby umożliwić wstępne
filtrowanie danych zwracanych w obiekcie JSON RpcResponse. Dostępne są
następujące filtry:
-
memcmp: object
- porównuje podany ciąg bajtów z danymi konta programu na określonym przesunięciu. Pola:offset: usize
- przesunięcie w danych konta programu, od którego rozpoczyna się porównaniebytes: string
- dane do dopasowania, zakodowane jako ciąg znakówencoding: string
- kodowanie dla filtrabytes
danych, "base58" lub "base64". Dane są ograniczone do rozmiaru 128 lub mniej bajtów po dekodowaniu.
NOWOŚĆ: To pole oraz ogólne wsparcie dla base64 są dostępne tylko w solana-core v1.14.0 lub nowszym. Proszę pominąć przy zapytaniach do węzłów na wcześniejszych wersjach
-
dataSize: u64
- porównuje długość danych konta programu z podanym rozmiarem danych
Is this page helpful?