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?

Зміст

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