Das Surfpool SDK wird als zwei Artefakte veröffentlicht, die dieselbe Rust-Laufzeitumgebung kapseln:
| Sprache | Paket | Ausführungsumgebung |
|---|---|---|
| Rust | surfpool-sdk auf crates.io | Innerhalb einer beliebigen #[tokio::test] oder asynchronen Laufzeitumgebung |
| TypeScript / JavaScript | @solana/surfpool auf npm | Node.js 18+ über native napi-rs-Bindungen |
Rust
Füge das Crate als Dev-Abhängigkeit hinzu. Das SDK ist asynchron-first und
erwartet eine Tokio-Laufzeitumgebung. Füge daher tokio mit dem full-Feature
für Tests ein.
[dev-dependencies]surfpool-sdk = "1"tokio = { version = "1", features = ["full"] }
Das Crate re-exportiert die am häufigsten benötigten Solana-Typen, sodass ein
einzelnes use surfpool_sdk::{...} in der Regel ausreicht:
use surfpool_sdk::{Keypair, Pubkey, RpcClient, Signer, // re-exported Solana typesSurfnet, SurfnetBuilder, SurfnetError, // SDK entry pointsBlockProductionMode, SimnetEvent, // re-exported surfpool types};
Falls du einen Typ benötigst, der nicht re-exportiert wird, hänge direkt vom
zugrunde liegenden Solana-Crate ab – das SDK bindet dich nicht an eine bestimmte
Version von solana-program oder solana-client.
TypeScript / JavaScript
Installiere als Dev-Abhängigkeit mit deinem bevorzugten Paketmanager:
npm install --save-dev @solana/surfpool# orpnpm add -D @solana/surfpool# oryarn add --dev @solana/surfpool
Das Paket exportiert eine einzelne Surfnet-Klasse sowie unterstützende Typen:
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";
Unterstützte Plattformen
Das JS-Paket ist auf plattformspezifische native Module angewiesen, die
automatisch als optionalDependencies installiert werden:
| Plattform | Target-Triple | npm-Paket |
|---|---|---|
| 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 |
Nicht unterstützte Plattform
Wenn das Paket auf einer Plattform ohne passendes Binary installiert wird,
schlägt die Installation zwar durch, aber Surfnet.start() wirft zur Laufzeit
einen Fehler. Erstelle ein Issue, falls du ein weiteres Zielgerät benötigst.
Anforderungen
- Node.js 18 oder neuer. Das SDK verwendet
Uint8Array, nativesfetchundassert/strictausnode:test. - Ein beschreibbares temporäres Verzeichnis. Jede Surfnet-Instanz belegt Ports und kann transiente Daten in das temporäre Verzeichnis des Betriebssystems schreiben.
Installation überprüfen
Ein einzeiliger Schnelltest bestätigt, dass die Laufzeitumgebung startet und der RPC-Endpunkt Anfragen akzeptiert.
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);}
Fehlerbehebung
`failed to bind to port` on Rust
Ein anderer Prozess belegt 0.0.0.0 aggressiv. Führen Sie den Test erneut aus
– das SDK wählt bei jedem Aufruf einen neuen Port. Wenn der Fehler weiterhin
auftritt, prüfen Sie auf verwaiste surfpool-Prozesse.
`Cannot find module '@solana/surfpool-...'`
Der optionalDependencies-Eintrag für Ihre Plattform wurde nicht installiert.
Führen Sie die Installation mit --include=optional erneut aus, oder
überprüfen Sie, ob Ihre Plattform in der unterstützten Tabelle oben aufgeführt
ist.
`stop()` hängt in JS
Stellen Sie sicher, dass Sie stop() einmal pro start() aufrufen. Der
Node-Wrapper hält RPC- und WebSocket-Server gebunden, bis stop()
zurückkehrt.
Is this page helpful?