Surfpool SDK

Surfpool SDK khởi động toàn bộ runtime Surfnet bên trong tiến trình kiểm thử của bạn. Sử dụng nó khi bạn muốn có một endpoint RPC tương thích Solana cục bộ, một payer được nạp sẵn tiền, và thao tác trạng thái trực tiếp mà không cần khởi chạy surfpool start như một tiến trình riêng biệt.

Cả thư viện Rust (surfpool-sdk) và các binding JS (@solana/surfpool) đều bọc cùng một runtime. Gói JS được vận chuyển kèm các binary native được biên dịch sẵn thông qua napi-rs cho macOS (Intel + Apple Silicon) và Linux x86-64.

Bắt đầu nhanh

Cài đặt SDK, khởi động Surfnet, gọi endpoint RPC, rồi dừng lại. Các bài kiểm thử chạy song song dùng chung một tiến trình một cách an toàn vì các cổng được cấp phát động.

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());
}

Có Gì Trong Hộp

Sự Khác Biệt So Với surfpool start

CLI chạy một Surfnet tồn tại lâu dài mà bạn kết nối từ các tiến trình bên ngoài. SDK chạy Surfnet bên trong bài kiểm thử của bạn, điều đó có nghĩa là:

  • Không cần quản lý cổng bên ngoài — mỗi Surfnet::start() đều liên kết với một cổng trống, vì vậy các bộ kiểm thử có thể chạy song song mà không cần cờ --port.
  • Teardown đồng bộstop() trả về khi runtime đã thực sự giải phóng các cổng của nó.
  • Cheatcode dưới dạng các phương thức có kiểu — cùng một giao diện được expose qua JSON-RPC bởi surfpool start cũng có sẵn dưới dạng các phương thức Rust gốc và binding napi-rs.
  • Quan sát sự kiện trực tiếp — các sự kiện runtime được expose qua kênh trong tiến trình (Rust) hoặc phương thức drain (JS) mà không cần đăng ký WebSocket.

Khi Nào Nên Sử Dụng SDK

Hãy dùng SDK khi:

  • Bạn đang viết kiểm thử tích hợp cho một chương trình Anchor và muốn kiểm tra số dư token sau một chuỗi các thiết lập cheatcode.
  • Bạn cần các worker kiểm thử song song để mỗi worker có một Surfnet riêng biệt.
  • Bạn muốn fork mainnet các tài khoản cụ thể (remoteRpcUrl + streamAccount) bên trong một bài kiểm thử.
  • Bạn cần đồng hồ xác định bằng cách nhảy runtime đến một slot hoặc timestamp cố định trước khi kiểm tra logic vesting, lockup hoặc hết hạn.

Khi CLI phù hợp hơn

Thay vào đó hãy dùng surfpool start khi bạn muốn một Surfnet tồn tại qua nhiều tiến trình — ví dụ, khi một CLI, ví trình duyệt và các script client tùy chỉnh đều cần chia sẻ cùng một instance.

Is this page helpful?

Mục lục

Chỉnh sửa trang