Εγκατάσταση

Το Surfpool SDK δημοσιεύεται ως δύο artifacts που περιτυλίγουν το ίδιο Rust runtime:

ΓλώσσαΠακέτοΠού εκτελείται
Rustsurfpool-sdk στο crates.ioΜέσα σε οποιοδήποτε #[tokio::test] ή async runtime
TypeScript / JavaScript@solana/surfpool στο npmNode.js 18+ μέσω napi-rs native bindings

Rust

Προσθέστε το crate ως dev-dependency. Το SDK είναι async-first και απαιτεί Tokio runtime, οπότε συμπεριλάβετε το tokio με το feature full για tests.

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

Το crate επανεξάγει τους τύπους Solana που χρειάζεστε συχνότερα, οπότε ένα μόνο use surfpool_sdk::{...} είναι συνήθως αρκετό:

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

Αν χρειάζεστε έναν τύπο που δεν επανεξάγεται, εξαρτηθείτε απευθείας από το υποκείμενο Solana crate — το SDK δεν σας δεσμεύει σε κάποια συγκεκριμένη έκδοση του solana-program ή του solana-client.

TypeScript / JavaScript

Εγκαταστήστε ως dev-dependency με τον package manager της επιλογής σας:

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

Το πακέτο εξάγει μία μόνο κλάση Surfnet και υποστηρικτικούς τύπους:

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";

Υποστηριζόμενες Πλατφόρμες

Το πακέτο JS εξαρτάται από platform-specific native modules που εγκαθίστανται αυτόματα ως optionalDependencies:

ΠλατφόρμαTarget tripleΠακέτο npm
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

Μη υποστηριζόμενη πλατφόρμα

Αν το πακέτο εγκατασταθεί σε πλατφόρμα χωρίς αντίστοιχο binary, η εγκατάσταση ολοκληρώνεται αλλά το Surfnet.start() θα εκπέμψει σφάλμα κατά την εκτέλεση. Ανοίξτε ένα issue αν χρειάζεστε επιπλέον target.

Απαιτήσεις

  • Node.js 18 ή νεότερη έκδοση. Το SDK χρησιμοποιεί Uint8Array, native fetch και assert/strict από το node:test.
  • Έναν εγγράψιμο προσωρινό κατάλογο. Κάθε instance του Surfnet δεσμεύει θύρες και ενδέχεται να γράφει προσωρινά δεδομένα στον προσωρινό κατάλογο του λειτουργικού συστήματος.

Επαλήθευση Εγκατάστασης

Ένα σύντομο smoke test μιας γραμμής επιβεβαιώνει ότι το runtime εκκινεί και το RPC endpoint αποδέχεται αιτήματα.

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

Αντιμετώπιση Προβλημάτων

`failed to bind to port` on Rust

Κάποια άλλη διεργασία δεσμεύει επιθετικά το 0.0.0.0. Εκτελέστε ξανά το test — το SDK επιλέγει νέα θύρα σε κάθε κλήση. Αν το σφάλμα επιμένει, ελέγξτε για ορφανές διεργασίες surfpool.

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

Η καταχώριση optionalDependencies για την πλατφόρμα σας δεν εγκαταστάθηκε. Εκτελέστε ξανά την εγκατάσταση με --include=optional, ή ελέγξτε αν η πλατφόρμα σας εμφανίζεται στον πίνακα υποστηριζόμενων πλατφορμών παραπάνω.

`stop()` hangs in JS

Βεβαιωθείτε ότι καλείτε το stop() μία φορά ανά start(). Ο Node wrapper διατηρεί τους διακομιστές RPC και WebSocket σε δέσμευση μέχρι να επιστρέψει το stop().

Is this page helpful?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας
© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.