مرجع Rust API

يعرض الـ surfpool-sdk سطحاً صغيراً يتمحور حول الـ Surfnet البنوي. تسرد هذه الصفحة كل عنصر عام؛ للاطلاع على الاستخدام التفصيلي، راجع الأدلة بدءاً من النظرة العامة.

صادرات جذر الحزمة

العنصرالنوعالملاحظات
Surfnetبنيةنسخة Surfnet قيد التشغيل — نقاط نهاية RPC/WS والدافع وأكواد الغش
SurfnetBuilderبنيةباني سلس تستخدمه Surfnet::builder()
Cheatcodes<'_>بنيةمساعد كود الغش المستعار الذي تُرجعه Surfnet::cheatcodes()
SurfnetErrorتعدادجميع متغيرات الأخطاء التي يُرجعها SDK
SurfnetResult<T>نوع بديلResult<T, SurfnetError>
Keypairإعادة تصديرsolana_keypair::Keypair
Pubkeyإعادة تصديرsolana_pubkey::Pubkey
Signerإعادة تصديرsolana_signer::Signer
RpcClientإعادة تصديرsolana_rpc_client::rpc_client::RpcClient
BlockProductionModeإعادة تصديرsurfpool_types::BlockProductionMode
SimnetCommandإعادة تصديرsurfpool_types::SimnetCommand
SimnetEventإعادة تصديرsurfpool_types::SimnetEvent
SvmFeatureConfigإعادة تصديرsurfpool_types::SvmFeatureConfig

Surfnet

pub struct Surfnet { /* private */ }

المُنشئون

impl Surfnet {
pub async fn start() -> SurfnetResult<Self>;
pub fn builder() -> SurfnetBuilder;
}

أدوات الوصول

impl Surfnet {
pub fn rpc_url(&self) -> &str;
pub fn ws_url(&self) -> &str;
pub fn payer(&self) -> &Keypair;
pub fn instance_id(&self) -> &str;
pub fn rpc_client(&self) -> RpcClient;
pub fn cheatcodes(&self) -> Cheatcodes<'_>;
pub fn events(&self) -> &crossbeam_channel::Receiver<SimnetEvent>;
pub fn send_command(&self, cmd: SimnetCommand) -> SurfnetResult<()>;
}

دورة الحياة

impl Surfnet {
pub fn stop(&mut self) -> SurfnetResult<()>;
}
impl Drop for Surfnet { /* calls stop() if not already stopped */ }

ينتظر stop مدةً تصل إلى خمس ثوانٍ حتى يُفرج وقت التشغيل عن منافذه. يكون الفشل أثناء Drop صامتاً؛ أما الفشل أثناء استدعاء stop الصريح فيُعيد SurfnetError::Runtime.

SurfnetBuilder

pub struct SurfnetBuilder { /* private */ }

يُعيد كل مُعيِّن Self، مما يتيح تسلسل الاستدعاءات. الاستدعاء الختامي هو start().await.

impl SurfnetBuilder {
pub fn offline(self, offline: bool) -> Self;
pub fn remote_rpc_url(self, url: impl Into<String>) -> Self;
pub fn block_production_mode(self, mode: BlockProductionMode) -> Self;
pub fn slot_time_ms(self, ms: u64) -> Self;
pub fn airdrop_addresses(self, addrs: Vec<Pubkey>) -> Self;
pub fn airdrop_sol(self, lamports: u64) -> Self;
pub fn skip_blockhash_check(self, skip: bool) -> Self;
pub fn payer(self, payer: Keypair) -> Self;
pub fn enable_feature(self, feature_id: Pubkey) -> Self;
pub fn disable_feature(self, feature_id: Pubkey) -> Self;
pub fn feature_config(self, config: SvmFeatureConfig) -> Self;
pub async fn start(self) -> SurfnetResult<Surfnet>;
}

أكواد الغش

pub struct Cheatcodes<'a> { /* private */ }

تمويل SOL

impl<'a> Cheatcodes<'a> {
pub fn fund_sol(&self, address: &Pubkey, lamports: u64) -> SurfnetResult<()>;
pub fn fund_sol_many(&self, accounts: &[(&Pubkey, u64)]) -> SurfnetResult<()>;
}

تمويل الرموز

impl<'a> Cheatcodes<'a> {
pub fn fund_token(
&self,
owner: &Pubkey,
mint: &Pubkey,
amount: u64,
token_program: Option<&Pubkey>,
) -> SurfnetResult<()>;
pub fn fund_token_many(
&self,
owners: &[&Pubkey],
mint: &Pubkey,
amount: u64,
token_program: Option<&Pubkey>,
) -> SurfnetResult<()>;
pub fn set_token_balance(
&self,
owner: &Pubkey,
mint: &Pubkey,
amount: u64,
token_program: Option<&Pubkey>,
) -> SurfnetResult<()>;
pub fn get_ata(
&self,
owner: &Pubkey,
mint: &Pubkey,
token_program: Option<&Pubkey>,
) -> Pubkey;
}

تعديل الحساب

impl<'a> Cheatcodes<'a> {
pub fn set_account(
&self,
address: &Pubkey,
lamports: u64,
data: &[u8],
owner: &Pubkey,
) -> SurfnetResult<()>;
pub fn execute<B: CheatcodeBuilder>(&self, builder: B) -> SurfnetResult<()>;
}

التنقل عبر الزمن

impl<'a> Cheatcodes<'a> {
pub fn time_travel_to_slot(&self, slot: u64) -> SurfnetResult<EpochInfo>;
pub fn time_travel_to_epoch(&self, epoch: u64) -> SurfnetResult<EpochInfo>;
pub fn time_travel_to_timestamp(&self, timestamp_ms: u64) -> SurfnetResult<EpochInfo>;
}

نشر البرامج

impl<'a> Cheatcodes<'a> {
pub fn deploy_program(&self, program_name: &str) -> SurfnetResult<Pubkey>;
pub fn deploy(&self, builder: DeployProgram) -> SurfnetResult<Pubkey>;
}

سمة CheatcodeBuilder

pub trait CheatcodeBuilder {
const METHOD: &'static str;
fn build(self) -> serde_json::Value;
}

قم بتطبيق هذا لرموز الغش المخصصة لـ JSON-RPC التي لم يتم تغليفها بعد بواسطة منشئ مكتوب.

المنشئون

جميع المنشئين موجودون في surfpool_sdk::cheatcodes::builders.

SetAccount

pub struct SetAccount { /* private */ }
impl SetAccount {
pub fn new(address: Pubkey) -> Self;
pub fn lamports(self, lamports: u64) -> Self;
pub fn data(self, data: Vec<u8>) -> Self;
pub fn owner(self, owner: Pubkey) -> Self;
pub fn rent_epoch(self, epoch: u64) -> Self;
pub fn executable(self, executable: bool) -> Self;
}

SetTokenAccount

pub struct SetTokenAccount { /* private */ }
impl SetTokenAccount {
pub fn new(owner: Pubkey, mint: Pubkey) -> Self;
pub fn amount(self, amount: u64) -> Self;
pub fn delegate(self, delegate: Pubkey) -> Self;
pub fn clear_delegate(self) -> Self;
pub fn state(self, state: impl Into<String>) -> Self;
pub fn delegated_amount(self, amount: u64) -> Self;
pub fn close_authority(self, authority: Pubkey) -> Self;
pub fn clear_close_authority(self) -> Self;
pub fn token_program(self, program: Pubkey) -> Self;
}

ResetAccount

pub struct ResetAccount { /* private */ }
impl ResetAccount {
pub fn new(address: Pubkey) -> Self;
pub fn include_owned_accounts(self, include: bool) -> Self;
}

StreamAccount

pub struct StreamAccount { /* private */ }
impl StreamAccount {
pub fn new(address: Pubkey) -> Self;
pub fn include_owned_accounts(self, include: bool) -> Self;
}

DeployProgram

pub struct DeployProgram { /* private */ }
impl DeployProgram {
pub fn new(program_id: Pubkey) -> Self;
pub fn from_keypair_path(path: impl AsRef<Path>) -> SurfnetResult<Self>;
pub fn so_path(self, path: impl Into<PathBuf>) -> Self;
pub fn so_bytes(self, bytes: Vec<u8>) -> Self;
pub fn idl_path(self, path: impl Into<PathBuf>) -> Self;
}

SurfnetError

#[derive(Debug)]
pub enum SurfnetError {
PortAllocation(String),
Startup(String),
Runtime(String),
Cheatcode(String),
Aborted(String),
}
المتغيرالسبب
PortAllocationتعذّر الربط بمنفذ حر لـ RPC أو WebSocket.
Startupفشل تهيئة وقت التشغيل.
Runtimeتعطّل مؤشر ترابط وقت التشغيل أو خرج بشكل غير متوقع.
Cheatcodeأعاد استدعاء JSON-RPC لرمز الغش خطأً.
Abortedتم إيقاف تشغيل وقت التشغيل أو إلغاؤه أثناء بدء التشغيل.

تُنفّذ الحزمة std::error::Error و Display على SurfnetError، لذا فهي تعمل مع ? و anyhow بشكل افتراضي.

Is this page helpful?