Встановлення

Surfpool SDK публікується як два артефакти, що обгортають однаковий Rust-рантайм:

МоваПакетДе виконується
Rustsurfpool-sdk на crates.ioВсередині будь-якого #[tokio::test] або асинхронного рантайму
TypeScript / JavaScript@solana/surfpool на npmNode.js 18+ через нативні прив'язки napi-rs

Rust

Додайте крейт як dev-залежність. SDK є async-first і потребує рантайму Tokio, тому для тестів додайте tokio з функцією full.

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

Крейт повторно експортує типи 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 — SDK не прив'язує вас до жодної конкретної версії solana-program чи solana-client.

TypeScript / JavaScript

Встановіть як dev-залежність за допомогою вашого менеджера пакетів:

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-пакет залежить від платформо-специфічних нативних модулів, які встановлюються автоматично як optionalDependencies:

ПлатформаЦільовий трипл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

Непідтримувана платформа

Якщо пакет встановлено на платформі без відповідного бінарного файлу, встановлення завершиться успішно, але Surfnet.start() видасть помилку під час виконання. Відкрийте issue, якщо вам потрібна підтримка додаткової платформи.

Вимоги

  • Node.js 18 або новіше. SDK використовує Uint8Array, вбудований fetch та assert/strict з node:test.
  • Доступна для запису тимчасова директорія. Кожен екземпляр Surfnet виділяє порти та може записувати тимчасові дані до системної тимчасової директорії.

Перевірка встановлення

Простий однорядковий тест підтверджує, що середовище виконання запускається та RPC-ендпоінт приймає запити.

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. Повторіть тест — SDK обирає новий порт при кожному виклику. Якщо помилка повторюється, перевірте наявність зависших процесів surfpool.

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

Запис optionalDependencies для вашої платформи не було встановлено. Повторіть встановлення з --include=optional або перевірте, чи ваша платформа присутня в таблиці підтримуваних вище.

`stop()` hangs in JS

Переконайтеся, що ви викликаєте stop() один раз для кожного start(). Node-обгортка утримує RPC та WebSocket-сервери активними до повернення stop().

Is this page helpful?

Зміст

Редагувати сторінку