Installatie

De Surfpool SDK wordt gepubliceerd als twee artefacten die dezelfde Rust-runtime omhullen:

TaalPakketWaar het draait
Rustsurfpool-sdk op crates.ioBinnen elke #[tokio::test] of async-runtime
TypeScript / JavaScript@solana/surfpool op npmNode.js 18+ via napi-rs native bindings

Rust

Voeg de crate toe als dev-dependency. De SDK is async-first en vereist een Tokio-runtime, dus voeg tokio toe met de full feature voor tests.

Cargo.toml
[dev-dependencies]
surfpool-sdk = "1"
tokio = { version = "1", features = ["full"] }

De crate herexporteert de Solana-types die je het vaakst nodig hebt, dus één enkele use surfpool_sdk::{...} is doorgaans voldoende:

use surfpool_sdk::{
Keypair, Pubkey, RpcClient, Signer, // re-exported Solana types
Surfnet, SurfnetBuilder, SurfnetError, // SDK entry points
BlockProductionMode, SimnetEvent, // re-exported surfpool types
};

Als je een type nodig hebt dat niet wordt hergeëxporteerd, afhankelijk van de onderliggende Solana-crate rechtstreeks — de SDK koppelt je niet aan een specifieke versie van solana-program of solana-client.

TypeScript / JavaScript

Installeer als dev-dependency met je pakketbeheerder naar keuze:

npm install --save-dev @solana/surfpool
# or
pnpm add -D @solana/surfpool
# or
yarn add --dev @solana/surfpool

Het pakket exporteert één enkele Surfnet klasse plus ondersteunende types:

import {
Surfnet, // entry point
type SurfnetConfig, // config for startWithConfig
type DeployOptions, // explicit program deploy
type 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";

Ondersteunde platformen

Het JS-pakket is afhankelijk van platformspecifieke native modules die automatisch worden geïnstalleerd als optionalDependencies:

PlatformTarget triplenpm-pakket
macOS Apple Siliconaarch64-apple-darwin@solana/surfpool-darwin-arm64
macOS Intelx86_64-apple-darwin@solana/surfpool-darwin-x64
Linux x86-64 (glibc)x86_64-unknown-linux-gnu@solana/surfpool-linux-x64-gnu

Niet-ondersteund platform

Als het pakket wordt geïnstalleerd op een platform zonder overeenkomende binary, voltooit de installatie zich maar zal Surfnet.start() een fout geven tijdens runtime. Open een issue als je een extra target nodig hebt.

Vereisten

  • Node.js 18 of nieuwer. De SDK gebruikt Uint8Array, native fetch, en assert/strict van node:test.
  • Een beschrijfbare tijdelijke map. Elke Surfnet-instantie wijst poorten toe en kan tijdelijke gegevens schrijven naar de tijdelijke map van het besturingssysteem.

De Installatie Verifiëren

Een eenregelige rooktest bevestigt dat de runtime start en het RPC-eindpunt verzoeken accepteert.

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);
}

Probleemoplossing

`failed to bind to port` on Rust

Een ander proces bindt 0.0.0.0 agressief. Voer de test opnieuw uit — de SDK kiest bij elke aanroep een nieuwe poort. Als de fout aanhoudt, controleer dan op verlaten surfpool-processen.

`Cannot find module '@solana/surfpool-...'`

De optionalDependencies-vermelding voor uw platform is niet geïnstalleerd. Voer de installatie opnieuw uit met --include=optional, of controleer of uw platform voorkomt in de ondersteunde tabel hierboven.

`stop()` hangs in JS

Bevestig dat u stop() eenmaal per start() aanroept. De Node-wrapper houdt RPC- en WebSocket-servers gebonden totdat stop() terugkeert.

Is this page helpful?

Inhoudsopgave

Pagina Bewerken
© 2026 Solana Foundation. Alle rechten voorbehouden.