ترقية قوية لإصدار 2.x من Solana Web3.js: تصميم معياري لتحسين الأداء

robot
إنشاء الملخص قيد التقدم

تحديثات كبيرة في إصدار 2.x من Solana Web3.js: البرمجة الوظيفية والتصميم المعياري

تم إصدار Solana Web3.js ك مكتبة JavaScript غنية بالميزات رسميًا في نوفمبر بإصدار 2.x. النسخة الجديدة شهدت تغييرات ملحوظة مقارنةً بإصدار 1.x، وستقوم هذه المقالة بتلخيص التحديثات الرئيسية لها.

على الرغم من أن الإصدار 2.x قد تم إصداره للتو وأن معدل استخدامه لا يزال منخفضًا، إلا أن العديد من المكتبات الشائعة لم تنتقل بعد، فإن فهم هذه التغييرات سيكون مفيدًا جدًا لعمليات النقل المستقبلية.

مقارنة الإصدارات

الإصدار 1.x سهل الاستخدام نسبيًا. يحتوي على حزمة واحدة فقط: @solana/web3.js، حيث تتركز جميع الوظائف فيها. تم تصميمه بناءً على الفئات ويحتوي على العديد من العمليات الشائعة، مثل فئة Connection التي تقدم عشرات الطرق، مما يغطي تقريبًا جميع الوظائف التي يحتاجها المطورون.

ومع ذلك، فإن هذا التصميم يجلب أيضًا بعض المشكلات: حتى لو استخدم المطورون جزءًا صغيرًا فقط من الوظائف، سيتم تنزيل مكتبة الشفرة بالكامل على جهاز المستخدم، وبسبب حجم الشفرة في المكتبة، قد يستغرق ذلك بعض الوقت.

تبنت النسخة 2.x استراتيجية مختلفة. قامت الفريق الرسمي بتقسيم قاعدة الشيفرة الأصلية إلى عدة وحدات صغيرة مثل @solana/accounts، @solana/codecs، @solana/rpc، @solana/signers، @solana/transactions، وغيرها. في الوقت نفسه، تخلت عن التنفيذ القائم على الفئات واعتمدت أكثر على الدوال الفردية. هذه التصميم مفيد لتحسين بناء الشيفرة في JavaScript، حيث سيتم حذف الشيفرة غير المستخدمة ولن يتم تنزيلها على أجهزة المستخدمين. وفقًا للإحصائيات الرسمية، فإن استخدام النسخة الجديدة من DApp يمكن أن يحقق عادةً تحسينًا بنسبة 30% في الحجم، وإذا تم استخدام عدد قليل من الوظائف، فقد تكون نسبة التحسين أعلى.

سلسلة Web3 للمبتدئين: الآن قم بترقية @solana/web3.js 2.x لبدء البرمجة الوظيفية

هذا التغيير يفرض متطلبات أعلى على جودة وثائق فريق Solana، وأصبح كيفية تمكين المطورين من العثور بسرعة على الوظائف المطلوبة مسألة حاسمة. يبدو أن تسمية الحزم المختلفة تتمتع بدلالة جيدة، حيث يمكن فهم أغراضها تقريبًا من أسمائها، مما يقلل إلى حد ما من صعوبة انتقال المطورين.

ومع ذلك، نظرًا لأنه تم إصداره مؤخرًا، فإن العديد من المشاريع لم تقم بعد بعملية الترحيل. كما أن الأمثلة المتعلقة بالإصدار 2.x على Solana Cookbook قليلة نسبيًا. بالإضافة إلى ذلك، تميل النسخة الجديدة إلى استخدام الميزات المدمجة في وقت التشغيل (مثل إنشاء أزواج المفاتيح)، ولكن الوصف في الوثائق لهذه الأجزاء غير كاف، مما قد يسبب ارتباكًا للمطورين.

تتمثل إحدى الميزات المهمة الأخرى لإصدار 2.x في عدم الاعتماد على أي شيء خارجي. قد لا تكون هذه الميزة مهمة جدًا للعديد من المستخدمين، ولكن بالنظر إلى الهجوم على سلسلة التوريد الذي تعرضت له إصدارات @solana/web3.js 1.95.5 و1.95.6 في أوائل ديسمبر 2023، فإن تقليل المدخلات الخارجية والاعتماد يمكن أن يقلل بشكل كبير من احتمال حدوث أحداث أمنية. مع إصدار 2.x، قرر فريق تطوير Web3.js استخدام وظائف أصلية أكثر، وإلغاء الاعتماد الخارجي وإدخال Polyfills. على الرغم من أنه قد تكون هناك تغييرات في المستقبل، إلا أن إصدار 2.x قد أزال جميع الاعتماد الخارجي بالفعل.

نقاط التغيير الهامة

اتصال

في الإصدار 1.x، قدمت فئة Connection مجموعة واسعة من الطرق. وفي الإصدار 2.x، تم اعتماد طريقة أكثر وظيفية للتنفيذ:

عند استدعاء "sendAndConfirmTransaction" لإرسال المعاملة، سيتم تلقائيًا إجراء طلب HTTPS، وإنشاء اتصال WSS للاشتراك في حالة المعاملة، وبعد تأكيد المعاملة سيتم إرجاع هاش المعاملة.

زوج المفاتيح

لقد طرأ تغيير كبير أيضًا على الجزء المتعلق بالمفتاح العام والمفتاح الخاص. لم تعد الفئات Keypair و PublicKey المستخدمة بشكل شائع في الإصدار 1.x موجودة، وتم استبدالها ببعض الدوال.

على سبيل المثال، يمكن استخدام "await generateKeyPair()" لإنشاء زوج مفاتيح، بدلاً من "Keypair.generate()".

من الجدير بالذكر أن الدالة الجديدة generateKeyPair تعيد Promise، بدلاً من إرجاع زوج المفاتيح مباشرة. وذلك لأن التنفيذ الجديد يستفيد قدر الإمكان من واجهة برمجة تطبيقات تشفير الويب في JavaScript، ويستخدم تنفيذ Ed25519 الأصلي. والعديد من طرق واجهة برمجة تطبيقات تشفير الويب غير متزامنة. ومع ذلك، فإن هذا التغيير ليس من الصعب التكيف معه بالنسبة لمطوري JavaScript الذين لديهم دراية بـ Promise.

إرسال المعاملة

في إصدار 2.x لم يعد هناك فئتان "Transaction" و "VersionedTransaction".

لم تعد الطرق المتعلقة ببرنامج النظام المقدمة في الإصدار القديم موجودة، ويجب استيراد الطرق الثابتة من فئة "SystemProgram" من مكان آخر.

على سبيل المثال، تتطلب تعليمات "transfer" استدعاء دالة "getTransferSolInstruction" في "@solana-program/system".

نظرًا لعدم تقديم الفئة بعد الآن، فإن Web3.js يقدم شكل "pipe" الشائع في البرمجة الوظيفية. يمكن استخدام دالة pipe لتنفيذ وظيفة التحويل الأصلية من 1.x.

يمكن ملاحظة أن المعاملات لم تعد تبدأ من خلال Connection، بل يتم إنشاء وظيفة فريدة من خلال مزود RPC المحدد، ثم يتم استدعاء هذه الوظيفة لبدء المعاملة. مقارنةً بالإصدار 1.x، زادت كمية الكود، لكن قابلية التخصيص أصبحت أقوى.

تتم المعاملات عبر HTTPS RPC، ثم يتم تأكيد نتائج المعاملات من خلال الاشتراك في WSS RPC. تعتمد الطريقة الجديدة بشكل كبير على WSS، ونعتقد أن تطبيق WSS سيكون أكثر انتشارًا في المستقبل، مما يضع متطلبات أعلى على استقرار خدمة مزودي RPC.

رد فعل

من الجدير بالذكر أن مشروع @solana/web3.js يحتوي أيضًا على مكتبة تُسمى @solana/react، التي تقدم بعض هوكات React وتحتوي على ميزات مثل signIn.

ملخص

أظهر إصدار النسخة 2.x من @solana/web3.js التزام فريق Solana بالتطوير المستمر والتحسين. يوفر للمطورين وسيلة فعالة ومرنة وقابلة للتخصيص للتفاعل مع شبكة Solana، مما يساعد في دفع اعتماد المنصة وتطويرها.

Web3 مبتدئين سلسلة: الآن ترقية @solana/web3.js 2.x لبدء البرمجة الوظيفية

SOL1.51%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • إعادة النشر
  • مشاركة
تعليق
0/400
OfflineValidatorvip
· منذ 20 س
تم ترقية js مرة أخرى، هل لا يزال هناك أحد يستخدم 1.x
شاهد النسخة الأصليةرد0
MoonRocketmanvip
· منذ 20 س
تم الانتهاء من تحسين المدار ترقية المحرك ناجحة الاستعداد لإشعال الرحلة الثانية للقمر
شاهد النسخة الأصليةرد0
MissedAirdropAgainvip
· منذ 21 س
زحف، في عجلة من أمره للارتفاع، أولاً قم بتسخين توزيع مجاني 2.0
شاهد النسخة الأصليةرد0
WalletDivorcervip
· منذ 21 س
ما زلت في انتظار أحضان 1.x ولا أريد تغيير الكود
شاهد النسخة الأصليةرد0
  • تثبيت