Surfpool SDK diterbitkan sebagai dua artefak yang membungkus runtime Rust yang sama:
| Bahasa | Paket | Tempat berjalan |
|---|---|---|
| Rust | surfpool-sdk di crates.io | Di dalam #[tokio::test] atau runtime async apa pun |
| TypeScript / JavaScript | @solana/surfpool di npm | Node.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.
[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 typesSurfnet, SurfnetBuilder, SurfnetError, // SDK entry pointsBlockProductionMode, 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# orpnpm add -D @solana/surfpool# oryarn add --dev @solana/surfpool
Paket ini mengekspor satu kelas Surfnet beserta tipe-tipe pendukungnya:
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";
Platform yang Didukung
Paket JS bergantung pada modul native khusus platform yang diinstal secara
otomatis sebagai optionalDependencies:
| Platform | Target triple | Paket 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 |
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,fetchnative, danassert/strictdarinode: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?