Το πακέτο @solana/surfpool εκθέτει μία κλάση, Surfnet, καθώς και τους
υποστηρικτικούς τύπους που χρειάζεστε για να καλέσετε τις μεθόδους του με
ασφάλεια τύπων. Αυτή η σελίδα καταγράφει κάθε εξαγόμενο σύμβολο· για αφηγηματική
χρήση, δείτε τους οδηγούς ξεκινώντας από
Επισκόπηση.
Εξαγωγές Πακέτου
| Σύμβολο | Είδος | Σημειώσεις |
|---|---|---|
Surfnet | κλάση | Εκτελούμενη παρουσία Surfnet με μεθόδους cheatcode |
SurfnetConfig | τύπος | Όρισμα στο Surfnet.startWithConfig |
DeployOptions | τύπος | Όρισμα στο Surfnet.deploy |
SetTokenAccountUpdate | τύπος | Όρισμα στο Surfnet.setTokenAccount |
ResetAccountOptions | τύπος | Όρισμα στο Surfnet.resetAccount |
StreamAccountOptions | τύπος | Όρισμα στο Surfnet.streamAccount |
SolAccountFunding | τύπος | Στοιχείο του πίνακα που περνά στο Surfnet.fundSolMany |
SimnetEventValue | τύπος | Στοιχείο που επιστρέφεται από το Surfnet.drainEvents |
KeypairInfo | τύπος | Επιστρέφεται από το Surfnet.newKeypair |
ClockValue | τύπος | Πεδίο στο SimnetEventValue |
EpochInfoValue | τύπος | Επιστρέφεται από τα βοηθητικά χρονικής μετακίνησης |
ByteArrayLike | τύπος | Uint8Array | number[] — ευέλικτη είσοδος byte |
Κλάση Surfnet
Στατικές Μέθοδοι
class Surfnet {static start(): Surfnet;static startWithConfig(config: SurfnetConfig): Surfnet;static newKeypair(): KeypairInfo;}
Ιδιότητες Παρουσίας
class Surfnet {readonly rpcUrl: string; // http://127.0.0.1:<port>readonly wsUrl: string; // ws://127.0.0.1:<port>readonly payer: string; // base58 public keyreadonly payerSecretKey: Uint8Array; // 64-byte private keyreadonly instanceId: string;}
Κύκλος Ζωής
class Surfnet {stop(): void; // idempotent; safe to call from `finally` / test teardown}
Cheatcodes SOL
class Surfnet {fundSol(address: string, lamports: number): void;fundSolMany(accounts: SolAccountFunding[]): void;setAccount(address: string,lamports: number,data: Uint8Array,owner: string): void;resetAccount(address: string, options?: ResetAccountOptions): void;}
Cheatcodes Token
class Surfnet {fundToken(owner: string,mint: string,amount: number,tokenProgram?: string): void;fundTokenMany(owners: string[],mint: string,amount: number,tokenProgram?: string): void;setTokenBalance(owner: string,mint: string,amount: number,tokenProgram?: string): void;setTokenAccount(owner: string,mint: string,update: SetTokenAccountUpdate,tokenProgram?: string): void;getAta(owner: string, mint: string, tokenProgram?: string): string;}
Χρονική Μετακίνηση
class Surfnet {timeTravelToSlot(slot: number): EpochInfoValue;timeTravelToEpoch(epoch: number): EpochInfoValue;timeTravelToTimestamp(timestampMs: number): EpochInfoValue;}
Ανάπτυξη Προγράμματος
class Surfnet {deployProgram(programName: string): string; // returns program iddeploy(options: DeployOptions): string; // returns program id}
Ροή & Συμβάντα
class Surfnet {streamAccount(address: string, options?: StreamAccountOptions): void;drainEvents(): SimnetEventValue[];}
Τύποι Διαμόρφωσης
SurfnetConfig
interface SurfnetConfig {offline?: boolean; // default: trueremoteRpcUrl?: string; // setting this implies offline=falseblockProductionMode?: "manual" | "clock" | "transaction"; // default: "transaction"slotTimeMs?: number; // default: 1airdropSol?: number; // lamports; default: 10_000_000_000airdropAddresses?: string[];payerSecretKey?: ByteArrayLike;enableFeatures?: string[]; // feature IDs (base58 or kebab name)disableFeatures?: string[];allFeatures?: boolean;}
DeployOptions
interface DeployOptions {programId: string; // base58 addresssoPath?: string; // mutually exclusive with soBytessoBytes?: ByteArrayLike;idlPath?: string; // optional Anchor IDL JSON}
SetTokenAccountUpdate
interface SetTokenAccountUpdate {amount?: number;delegate?: string; // base58 pubkeyclearDelegate?: boolean;state?: string; // e.g. "initialized", "frozen"delegatedAmount?: number;closeAuthority?: string;clearCloseAuthority?: boolean;}
ResetAccountOptions
interface ResetAccountOptions {includeOwnedAccounts?: boolean;}
StreamAccountOptions
interface StreamAccountOptions {includeOwnedAccounts?: boolean;}
SolAccountFunding
interface SolAccountFunding {address: string;lamports: number;}
KeypairInfo
interface KeypairInfo {publicKey: string; // base58secretKey: number[]; // 64 bytes}
ByteArrayLike
type ByteArrayLike = Uint8Array | number[];
Όπου μια μέθοδος δέχεται ByteArrayLike, μπορείτε να περάσετε είτε ένα
Uint8Array είτε ένα απλό πίνακα αριθμών. Ο wrapper εξομαλύνει και τα δύο στη
μορφή που αναμένει η native σύνδεση.
Τύποι Συμβάντων
SimnetEventValue
Ένα επίπεδο αντικείμενο με διακριτή τιμή kind και προαιρετικά πεδία. Δείτε
Συμβάντα για τον κατάλογο παραλλαγών.
interface SimnetEventValue {kind: string;message?: string;timestamp?: string;initialTransactionCount?: number;clock?: ClockValue;epochInfo?: EpochInfoValue;accountPubkey?: string;clockCommand?: string;slotIntervalMs?: number;transactionSignature?: string;logs?: string[];computeUnitsConsumed?: number;fee?: number;errorMessage?: string;tag?: string;profileKey?: string;profileSlot?: number;runbookId?: string;runbookErrors?: string[];}
ClockValue
interface ClockValue {slot: number;epoch: number;leaderScheduleEpoch: number;unixTimestamp: number;epochStartTimestamp: number;}
EpochInfoValue
interface EpochInfoValue {absoluteSlot: number;slotIndex: number;slotsInEpoch: number;epoch: number;blockHeight: number;transactionCount?: number;}
Σφάλματα
Κάθε μέθοδος εκπέμπει ένα τυπικό Error του οποίου το μήνυμα περιτυλίγει το
υποκείμενο SurfnetError της Rust. Εξετάστε το error.message για να
διακρίνετε τις περιπτώσεις.
try {surfnet.deploy({ programId, soPath: "missing.so" });} catch (err) {// err.message starts with "Cheatcode:" / "Startup:" / etc.console.error(err);}
Αποτύπωμα Εγγενούς Ενότητας
Το πακέτο εξαρτάται από εγγενή δυαδικά αρχεία ειδικά για κάθε πλατφόρμα, τα
οποία δημοσιεύονται ως optionalDependencies:
| Triple | Package |
|---|---|
aarch64-apple-darwin | @solana/surfpool-darwin-arm64 |
x86_64-apple-darwin | @solana/surfpool-darwin-x64 |
x86_64-unknown-linux-gnu | @solana/surfpool-linux-x64-gnu |
Εάν κανένα από τα πακέτα πλατφόρμας δεν εγκατασταθεί στο σύστημά σας, το
Surfnet.start() εκτελεί εξαίρεση κατά την πρώτη κλήση με ένα σαφές σφάλμα «δεν
βρέθηκε εγγενής ενότητα». Ανατρέξτε στην
Εγκατάσταση για τον πίνακα υποστήριξης
και την αντιμετώπιση προβλημάτων.
Is this page helpful?