Instalasi

Surfpool SDK diterbitkan sebagai dua artefak yang membungkus runtime Rust yang sama:

BahasaPaketTempat berjalan
Rustsurfpool-sdk di crates.ioDi dalam #[tokio::test] atau runtime async apa pun
TypeScript / JavaScript@solana/surfpool di npmNode.js 18+ melalui binding native napi-rs

Rust

Tambahkan crate sebagai dev-dependency. SDK ini mengutamakan async dan membutuhkan runtime Tokio, jadi sertakan tokio dengan fitur full untuk pengujian.

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

Crate ini mengekspor ulang tipe Solana yang paling sering dibutuhkan, sehingga satu use surfpool_sdk::{...} biasanya sudah cukup:

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

Jika Anda membutuhkan tipe yang tidak diekspor ulang, tambahkan dependensi langsung ke crate Solana yang mendasarinya — SDK tidak mengunci Anda pada versi tertentu dari solana-program atau solana-client.

TypeScript / JavaScript

Instal sebagai dev-dependency menggunakan package manager pilihan Anda:

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

Paket ini mengekspor satu kelas Surfnet beserta tipe-tipe pendukungnya:

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

Platform yang Didukung

Paket JS bergantung pada modul native khusus platform yang diinstal secara otomatis sebagai optionalDependencies:

PlatformTarget triplePaket 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

Platform tidak didukung

Jika paket diinstal pada platform yang tidak memiliki binary yang sesuai, proses instalasi akan selesai tetapi Surfnet.start() akan melempar error saat runtime. Buka sebuah issue jika Anda memerlukan target tambahan.

Persyaratan

  • Node.js 18 atau lebih baru. SDK menggunakan Uint8Array, fetch native, dan assert/strict dari node:test.
  • Direktori temp yang dapat ditulis. Setiap instans Surfnet mengalokasikan port dan dapat menulis data sementara ke direktori temp OS.

Memverifikasi Instalasi

Pengujian smoke satu baris mengonfirmasi bahwa runtime berhasil dijalankan dan endpoint RPC menerima permintaan.

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

Pemecahan Masalah

`failed to bind to port` on Rust

Proses lain sedang mengikat 0.0.0.0 secara agresif. Jalankan ulang pengujian — SDK memilih port baru pada setiap pemanggilan. Jika kegagalan terus berlanjut, periksa apakah ada proses surfpool yang tidak terhenti.

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

Entri optionalDependencies untuk platform Anda tidak berhasil diinstal. Jalankan ulang instalasi dengan --include=optional, atau periksa apakah platform Anda tercantum dalam tabel yang didukung di atas.

`stop()` hangs in JS

Pastikan Anda memanggil stop() satu kali per start(). Wrapper Node menjaga server RPC dan WebSocket tetap terikat hingga stop() selesai.

Is this page helpful?

Daftar Isi

Edit Halaman
Ā© 2026 Yayasan Solana. Semua hak dilindungi.