Surfpool SDK uruchamia pełne środowisko wykonawcze Surfnet wewnątrz procesu
testowego. Używaj go, gdy potrzebujesz lokalnego punktu końcowego RPC
kompatybilnego z Solaną, wstępnie zasilonego płatnika oraz bezpośredniej
manipulacji stanem bez uruchamiania surfpool start jako osobnego procesu.
Zarówno skrzynka Rust (surfpool-sdk), jak i powiązania JS (@solana/surfpool)
opakują to samo środowisko wykonawcze. Pakiet JS dostarcza wstępnie skompilowane
natywne pliki binarne przez napi-rs dla macOS (Intel + Apple Silicon) oraz Linux
x86-64.
Szybki start
Zainstaluj SDK, uruchom Surfnet, odpytaj punkt końcowy RPC, a następnie zatrzymaj go. Równoległe testy bezpiecznie współdzielą ten sam proces, ponieważ porty są przydzielane dynamicznie.
use surfpool_sdk::{Signer, Surfnet};#[tokio::test]async fn starts_a_local_surfnet() {let surfnet = Surfnet::start().await.unwrap();let rpc = surfnet.rpc_client();let balance = rpc.get_balance(&surfnet.payer().pubkey()).unwrap();assert!(balance > 0);println!("rpc: {}", surfnet.rpc_url());println!("ws: {}", surfnet.ws_url());}
Co zawiera pakiet
Instalacja
Konfiguracja Cargo i npm, obsługiwane platformy, natywne pliki binarne
Konfiguracja
Opcje buildera: zdalne RPC fallback, produkcja bloków, czas slotów, bramki funkcji, niestandardowi płatnicy
Cheatcodes
Zasilaj SOL/tokeny, modyfikuj konta, resetuj stan upstream, streamuj z mainnet
Podróż w czasie
Przeskocz do określonego slotu, epoki lub znacznika czasu Unix
Programy
Automatyczne wykrywanie przestrzeni roboczej Anchor, jawne wdrożenie .so + IDL
Zdarzenia
Pobieraj zdarzenia środowiska wykonawczego do asercji i logowania
Dokumentacja Rust
Pełne API skrzynki surfpool-sdk
Dokumentacja JS
Pełne API TypeScript @solana/surfpool
Czym różni się od surfpool start
CLI uruchamia długo działający Surfnet, z którym łączysz się z zewnętrznych procesów. SDK uruchamia Surfnet wewnątrz Twojego testu, co oznacza:
- Brak zarządzania portami zewnętrznymi — każdy
Surfnet::start()wiąże się z wolnym portem, dzięki czemu zestawy testów mogą działać równolegle bez flag--port. - Synchroniczne zamykanie —
stop()zwraca wynik, gdy środowisko uruchomieniowe faktycznie zwolniło swoje porty. - Cheatcody jako metody typowane — ta sama powierzchnia udostępniana przez
JSON-RPC przez
surfpool startjest dostępna jako natywne metody Rust i powiązania napi-rs. - Bezpośrednia obserwacja zdarzeń — zdarzenia środowiska uruchomieniowego są udostępniane przez kanał wewnątrz procesu (Rust) lub metodę drain (JS) bez subskrypcji WebSocket.
Kiedy używać SDK
Sięgnij po SDK, gdy:
- Piszesz testy integracyjne dla programu Anchor i chcesz sprawdzać salda tokenów po sekwencji skonfigurowanych cheatcodów.
- Potrzebujesz równoległych procesów testowych, z których każdy ma izolowany Surfnet.
- Chcesz forkować z mainnetu konkretne konta (
remoteRpcUrl+streamAccount) wewnątrz testu. - Potrzebujesz deterministycznych zegarów, przeskakując środowisko uruchomieniowe do określonego slot lub znacznika czasu przed testowaniem logiki vestingu, blokady lub wygasania.
Kiedy CLI jest lepszym wyborem
Użyj surfpool start zamiast tego, gdy chcesz mieć Surfnet, który przeżywa
wiele procesów — na przykład gdy CLI, portfel przeglądarkowy i niestandardowe
skrypty klienckie muszą współdzielić tę samą instancję.
Is this page helpful?