Cài đặt

Surfpool SDK được phát hành dưới dạng hai gói bao bọc cùng một Rust runtime:

Ngôn ngữGóiMôi trường chạy
Rustsurfpool-sdk trên crates.ioBên trong bất kỳ #[tokio::test] hoặc async runtime nào
TypeScript / JavaScript@solana/surfpool trên npmNode.js 18+ thông qua napi-rs native bindings

Rust

Thêm crate này như một dev-dependency. SDK được thiết kế async-first và yêu cầu Tokio runtime, vì vậy hãy thêm tokio với tính năng full cho các bài kiểm tra.

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

Crate này tái xuất các kiểu Solana mà bạn cần dùng nhiều nhất, vì vậy chỉ cần một use surfpool_sdk::{...} duy nhất là thường đủ:

use surfpool_sdk::{
Keypair, Pubkey, RpcClient, Signer, // re-exported Solana types
Surfnet, SurfnetBuilder, SurfnetError, // SDK entry points
BlockProductionMode, SimnetEvent, // re-exported surfpool types
};

Nếu bạn cần một kiểu chưa được tái xuất, hãy phụ thuộc trực tiếp vào crate Solana cơ bản — SDK không ràng buộc bạn với bất kỳ phiên bản cụ thể nào của solana-program hoặc solana-client.

TypeScript / JavaScript

Cài đặt như một dev-dependency với trình quản lý gói bạn ưa thích:

npm install --save-dev @solana/surfpool
# or
pnpm add -D @solana/surfpool
# or
yarn add --dev @solana/surfpool

Gói này xuất một lớp Surfnet duy nhất kèm theo các kiểu hỗ trợ:

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";

Nền tảng được hỗ trợ

Gói JS phụ thuộc vào các mô-đun gốc dành riêng cho từng nền tảng, được cài đặt tự động dưới dạng optionalDependencies:

Nền tảngTarget tripleGói 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

Nền tảng không được hỗ trợ

Nếu gói được cài đặt trên một nền tảng không có tệp nhị phân phù hợp, quá trình cài đặt sẽ hoàn tất nhưng Surfnet.start() sẽ báo lỗi khi chạy. Hãy mở một issue nếu bạn cần thêm target khác.

Yêu cầu

  • Node.js 18 trở lên. SDK sử dụng Uint8Array, fetch gốc, và assert/strict từ node:test.
  • Thư mục tạm có quyền ghi. Mỗi instance Surfnet sẽ cấp phát cổng và có thể ghi dữ liệu tạm thời vào thư mục temp của hệ điều hành.

Xác minh Cài đặt

Một bài kiểm tra nhanh một dòng xác nhận rằng runtime khởi động thành công và endpoint RPC chấp nhận các yêu cầu.

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

Khắc phục sự cố

`failed to bind to port` on Rust

Một tiến trình khác đang chiếm dụng 0.0.0.0 liên tục. Hãy chạy lại bài kiểm tra — SDK sẽ chọn một cổng mới cho mỗi lần gọi. Nếu lỗi vẫn tiếp diễn, hãy kiểm tra các tiến trình surfpool còn sót lại.

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

Mục optionalDependencies cho nền tảng của bạn chưa được cài đặt. Hãy chạy lại lệnh cài đặt với --include=optional, hoặc kiểm tra xem nền tảng của bạn có xuất hiện trong bảng hỗ trợ ở trên không.

`stop()` hangs in JS

Hãy xác nhận rằng bạn chỉ gọi stop() một lần cho mỗi start(). Node wrapper sẽ giữ các máy chủ RPC và WebSocket ở trạng thái ràng buộc cho đến khi stop() trả về.

Is this page helpful?

Mục lục

Chỉnh sửa trang