Surfpool SDK

يشغّل Surfpool SDK وقت تشغيل Surfnet الكامل داخل عملية الاختبار الخاصة بك. استخدمه عندما تريد نقطة نهاية RPC متوافقة مع سولانا محلياً، ودافعاً ممولاً مسبقاً، ومعالجة مباشرة للحالة دون تشغيل surfpool start كعملية منفصلة.

يُغلّف كلٌّ من حزمة Rust (surfpool-sdk) وارتباطات JS (@solana/surfpool) nفس وقت التشغيل. تأتي حزمة JS مع ملفات ثنائية أصلية مُجمَّعة مسبقاً عبر napi-rs لنظام macOS (Intel + Apple Silicon) وLinux x86-64.

البداية السريعة

ثبّت SDK، وابدأ شبكة Surfnet، واتصل بنقطة نهاية RPC، ثم أوقفها. تتشارك الاختبارات المتوازية العملية ذاتها بأمان لأن المنافذ تُخصَّص ديناميكياً.

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

ما يحتويه الصندوق

كيف يختلف عن surfpool start

تشغّل واجهة CLI شبكة Surfnet طويلة الأمد تتصل بها من عمليات خارجية. أما SDK فيشغّل Surfnet داخل اختبارك، مما يعني:

  • لا إدارة للمنافذ الخارجية — كل Surfnet::start() يرتبط بمنفذ متاح تلقائياً، مما يتيح تشغيل مجموعات الاختبار بالتوازي دون الحاجة إلى أعلام --port.
  • إيقاف تشغيل متزامن — يعود stop() بعد أن يكون وقت التشغيل قد حرّر منافذه فعلياً.
  • Cheatcodes كأساليب مكتوبة — السطح ذاته المكشوف عبر JSON-RPC بواسطة surfpool start متاح كأساليب Rust أصيلة وروابط napi-rs.
  • مراقبة مباشرة للأحداث — تُكشف أحداث وقت التشغيل عبر قناة داخلية (Rust) أو أسلوب تصريف (JS) دون الحاجة إلى اشتراك WebSocket.

متى تستخدم SDK

الجأ إلى SDK عندما:

  • تكتب اختبارات تكامل لبرنامج Anchor وتريد التحقق من أرصدة الرموز بعد سلسلة من الإعدادات المُعدَّة بالـ cheatcode.
  • تحتاج إلى عمال اختبار متوازيين يمتلك كل منهم شبكة Surfnet معزولة.
  • تريد استنساخ حسابات mainnet محددة (remoteRpcUrl + streamAccount) داخل اختبار.
  • تحتاج إلى ساعات حتمية عبر تقديم وقت التشغيل إلى slot أو طابع زمني محدد قبل اختبار منطق الاستحقاق أو القفل أو الانتهاء.

When the CLI is the better fit

استخدم surfpool start بدلاً من ذلك عندما تريد شبكة Surfnet تبقى على قيد التشغيل عبر عمليات متعددة — على سبيل المثال، عندما تحتاج واجهة CLI ومحفظة متصفح وسكريبتات عميل مخصصة إلى مشاركة نفس المثيل.

Is this page helpful?

جدول المحتويات

تعديل الصفحة