Surfpool SDK jest publikowany jako dwa artefakty opakowujące to samo środowisko uruchomieniowe Rust:
| Język | Pakiet | Gdzie działa |
|---|---|---|
| Rust | surfpool-sdk na crates.io | Wewnątrz dowolnego środowiska #[tokio::test] lub asynchronicznego |
| TypeScript / JavaScript | @solana/surfpool na npm | Node.js 18+ przez natywne wiązania napi-rs |
Rust
Dodaj skrzynkę jako zależność deweloperską. SDK jest zaprojektowany
asynchronicznie i wymaga środowiska uruchomieniowego Tokio, dlatego dołącz
tokio z funkcją full dla testów.
[dev-dependencies]surfpool-sdk = "1"tokio = { version = "1", features = ["full"] }
Skrzynka ponownie eksportuje najczęściej potrzebne typy Solana, więc zazwyczaj
wystarczy pojedyncze use surfpool_sdk::{...}:
use surfpool_sdk::{Keypair, Pubkey, RpcClient, Signer, // re-exported Solana typesSurfnet, SurfnetBuilder, SurfnetError, // SDK entry pointsBlockProductionMode, SimnetEvent, // re-exported surfpool types};
Jeśli potrzebujesz typu, który nie jest ponownie eksportowany, zależą
bezpośrednio od odpowiedniej skrzynki Solana — SDK nie ogranicza Cię do żadnej
konkretnej wersji solana-program ani solana-client.
TypeScript / JavaScript
Zainstaluj jako zależność deweloperską przy użyciu wybranego menedżera pakietów:
npm install --save-dev @solana/surfpool# orpnpm add -D @solana/surfpool# oryarn add --dev @solana/surfpool
Pakiet eksportuje pojedynczą klasę Surfnet wraz z typami pomocniczymi:
import {Surfnet, // entry pointtype SurfnetConfig, // config for startWithConfigtype DeployOptions, // explicit program deploytype SetTokenAccountUpdate,type ResetAccountOptions,type StreamAccountOptions,type SimnetEventValue, // event drained from drainEvents()type KeypairInfo, // shape returned by Surfnet.newKeypair()type EpochInfoValue,type ClockValue} from "@solana/surfpool";
Obsługiwane platformy
Pakiet JS zależy od natywnych modułów specyficznych dla platformy, które są
instalowane automatycznie jako optionalDependencies:
| Platforma | Triplet docelowy | Pakiet npm |
|---|---|---|
| macOS Apple Silicon | aarch64-apple-darwin | @solana/surfpool-darwin-arm64 |
| macOS Intel | x86_64-apple-darwin | @solana/surfpool-darwin-x64 |
| Linux x86-64 (glibc) | x86_64-unknown-linux-gnu | @solana/surfpool-linux-x64-gnu |
Nieobsługiwana platforma
Jeśli pakiet zostanie zainstalowany na platformie bez pasującego pliku
binarnego, instalacja zakończy się pomyślnie, ale Surfnet.start() zgłosi
błąd w czasie wykonywania. Otwórz zgłoszenie, jeśli potrzebujesz dodatkowego
celu.
Wymagania
- Node.js 18 lub nowszy. SDK używa
Uint8Array, natywnegofetchiassert/strictznode:test. - Zapisywalny katalog tymczasowy. Każda instancja Surfnet przydziela porty i może zapisywać dane przejściowe do katalogu tymczasowego systemu operacyjnego.
Weryfikacja instalacji
Jednoliniowy test dymny potwierdza, że środowisko uruchomieniowe startuje i punkt końcowy RPC przyjmuje żądania.
use surfpool_sdk::{Signer, Surfnet};#[tokio::test]async fn surfpool_sdk_smoke() {let surfnet = Surfnet::start().await.expect("start surfnet");let balance = surfnet.rpc_client().get_balance(&surfnet.payer().pubkey()).expect("get balance");assert!(balance > 0);}
Rozwiązywanie problemów
`failed to bind to port` on Rust
Inny proces agresywnie zajmuje 0.0.0.0. Uruchom test ponownie — SDK wybiera
nowy port przy każdym wywołaniu. Jeśli błąd się utrzymuje, sprawdź, czy nie ma
osieroconych procesów surfpool.
`Cannot find module '@solana/surfpool-...'`
Wpis optionalDependencies dla Twojej platformy nie został zainstalowany.
Uruchom instalację ponownie z --include=optional lub sprawdź, czy Twoja
platforma widnieje w powyższej tabeli obsługiwanych platform.
`stop()` hangs in JS
Upewnij się, że wywołujesz stop() raz na start(). Opakowanie Node
utrzymuje serwery RPC i WebSocket w stanie połączonym do momentu zwrócenia
przez stop() wartości.
Is this page helpful?