Surfpool SDK

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

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 zamykaniestop() zwraca wynik, gdy środowisko uruchomieniowe faktycznie zwolniło swoje porty.
  • Cheatcody jako metody typowane — ta sama powierzchnia udostępniana przez JSON-RPC przez surfpool start jest 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?

Spis treści

Edytuj stronę