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());}
Що входить до комплекту
Встановлення
Налаштування Cargo та npm, підтримувані платформи, нативні бінарні файли
Конфігурація
Параметри білдера: резервний віддалений RPC, продукція блоків, тайминг слотів, feature gates, кастомні платники
Читкоди
Поповнення SOL/токенів, мутація акаунтів, скидання стану upstream, стрімінг із mainnet
Подорож у часі
Перехід до абсолютного слоту, епохи або Unix-мітки часу
Програми
Автовиявлення Anchor workspace, явне розгортання .so + IDL
Події
Витягування подій рантайму для перевірок і логування
Довідник Rust
Повний API крейту surfpool-sdk
Довідник JS
Повний TypeScript API @solana/surfpool
Відмінності від 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?