Surfpool SDK julkaistaan kahtena artefaktina, jotka käyttävät samaa Rust-suoritusympäristöä:
| Kieli | Paketti | Suoritusympäristö |
|---|---|---|
| Rust | surfpool-sdk crates.io:ssä | Missä tahansa #[tokio::test]- tai async-suoritusympäristössä |
| TypeScript / JavaScript | @solana/surfpool npm:ssä | Node.js 18+ napi-rs-natiivisidosten kautta |
Rust
Lisää crate dev-riippuvuudeksi. SDK on async-ensijainen ja edellyttää
Tokio-suoritusympäristöä, joten sisällytä tokio ja full-ominaisuus testejä
varten.
[dev-dependencies]surfpool-sdk = "1"tokio = { version = "1", features = ["full"] }
Crate vie uudelleen yleisimmin tarvitsemasi Solana-tyypit, joten yksittäinen
use surfpool_sdk::{...} riittää yleensä:
use surfpool_sdk::{Keypair, Pubkey, RpcClient, Signer, // re-exported Solana typesSurfnet, SurfnetBuilder, SurfnetError, // SDK entry pointsBlockProductionMode, SimnetEvent, // re-exported surfpool types};
Jos tarvitset tyyppiä, jota ei viedä uudelleen, riippuu suoraan taustalla
olevasta Solana-cratesta — SDK ei sido sinua mihinkään tiettyyn versioon
solana-program:stä tai solana-client:stä.
TypeScript / JavaScript
Asenna dev-riippuvuudeksi valitsemallasi paketinhallintaohjelmalla:
npm install --save-dev @solana/surfpool# orpnpm add -D @solana/surfpool# oryarn add --dev @solana/surfpool
Paketti vie yhden Surfnet-luokan sekä sitä tukevat tyypit:
import {Surfnet, // entry pointtype SurfnetConfig, // config for startWithConfigtype DeployOptions, // explicit program deploytype 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";
Tuetut alustat
JS-paketti riippuu alustakohtaisista natiiveista moduuleista, jotka asennetaan
automaattisesti optionalDependencies-riippuvuuksina:
| Alusta | Kohdekolmikko | npm-paketti |
|---|---|---|
| macOS Apple Silicon | aarch64-apple-darwin | @solana/surfpool-darwin-arm64 |
| macOS Intel | x86_64-apple-darwin | @solana/surfpool-darwin-x64 |
| Linux x86-64 (glibc) | x86_64-unknown-linux-gnu | @solana/surfpool-linux-x64-gnu |
Ei-tuettu alusta
Jos paketti asennetaan alustalle, jolle ei löydy vastaavaa binaaria, asennus
valmistuu, mutta Surfnet.start() aiheuttaa virheen suoritusaikana. Avaa
issue, jos tarvitset tukea lisäkohteelle.
Vaatimukset
- Node.js 18 tai uudempi. SDK käyttää
Uint8Array, natiivejafetch- jaassert/strict-ominaisuuksia paketistanode:test. - Kirjoitettava väliaikaishakemisto. Jokainen Surfnet-instanssi varaa portteja ja saattaa kirjoittaa tilapäistä dataa käyttöjärjestelmän temp-hakemistoon.
Asennuksen Varmentaminen
Yksirivisellä smoke-testillä varmistetaan, että ajoympäristö käynnistyy ja RPC-päätepiste hyväksyy pyynnöt.
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);}
Vianmääritys
`failed to bind to port` on Rust
Jokin toinen prosessi varaa 0.0.0.0 aggressiivisesti. Suorita testi
uudelleen — SDK valitsee uuden portin jokaisella kutsukerralla. Jos virhe
toistuu, tarkista onko surfpool-prosesseja jäänyt taustalle.
`Cannot find module '@solana/surfpool-...'`
Alustasi optionalDependencies-merkintää ei asennettu. Suorita asennus
uudelleen komennolla --include=optional tai tarkista, että alustasi löytyy
yllä olevasta tuetuista alustoista.
`stop()` jumittuu JS:ssä
Varmista, että kutsut stop():ää kerran per start(). Node-kääre pitää RPC-
ja WebSocket-palvelimet sidottuina, kunnes stop() palaa.
Is this page helpful?