Surfpool SDK

Surfpool SDK запускает полноценную среду выполнения Surfnet внутри вашего тестового процесса. Используйте его, когда вам нужен локальный RPC-эндпоинт, совместимый с Solana, предварительно пополненный плательщик и прямое управление состоянием без запуска surfpool start как отдельного процесса.

Как крейт для Rust (surfpool-sdk), так и JS-биндинги (@solana/surfpool) оборачивают одну и ту же среду выполнения. JS-пакет поставляется с готовыми нативными бинарными файлами через napi-rs для macOS (Intel + Apple Silicon) и Linux x86-64.

Быстрый старт

Установите SDK, запустите Surfnet, обратитесь к RPC-эндпоинту, затем остановите его. Параллельные тесты безопасно используют один и тот же процесс, поскольку порты выделяются динамически.

use surfpool_sdk::{Signer, Surfnet};
#[tokio::test]
async fn starts_a_local_surfnet() {
let surfnet = Surfnet::start().await.unwrap();
let rpc = surfnet.rpc_client();
let balance = rpc.get_balance(&surfnet.payer().pubkey()).unwrap();
assert!(balance > 0);
println!("rpc: {}", surfnet.rpc_url());
println!("ws: {}", surfnet.ws_url());
}

Что входит в комплект

Отличия от surfpool start

CLI запускает долгоживущий Surfnet, к которому вы подключаетесь из внешних процессов. SDK запускает Surfnet внутри вашего теста, что означает:

  • Без управления внешними портами — каждый Surfnet::start() привязывается к свободному порту, поэтому наборы тестов могут выполняться параллельно без флагов --port.
  • Синхронное завершение работыstop() возвращает управление только после того, как среда выполнения фактически освободила свои порты.
  • Читкоды как типизированные методы — тот же интерфейс, предоставляемый через JSON-RPC посредством surfpool start, доступен в виде нативных методов Rust и привязок napi-rs.
  • Прямое наблюдение за событиями — события среды выполнения передаются через внутрипроцессный канал (Rust) или метод drain (JS) без подписки на WebSocket.

Когда использовать SDK

Используйте SDK в следующих случаях:

  • Вы пишете интеграционные тесты для программы Anchor и хотите проверять балансы токенов после серии настроек с использованием читкодов.
  • Вам нужно, чтобы параллельные тестовые воркеры имели каждый собственную изолированную Surfnet.
  • Вы хотите форкнуть конкретные аккаунты из mainnet (remoteRpcUrl + streamAccount) внутри теста.
  • Вам нужны детерминированные часы — для этого переводите среду выполнения на фиксированный slot или временную метку перед проверкой логики вестинга, локапа или истечения срока.

Когда CLI подходит лучше

Используйте surfpool start, если вам нужна Surfnet, которая сохраняется между несколькими процессами — например, когда CLI, браузерный кошелёк и пользовательские клиентские скрипты должны совместно использовать один и тот же экземпляр.

Is this page helpful?

Содержание

Редактировать страницу