ترقية كبيرة في إصدار Solana Web3.js 2.x ، تقسيم الوظائف وتحسين الأداء

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

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

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

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

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

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

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

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

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

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

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

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

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

الاتصال

في إصدار 1.x، تقدم فئة Connection العديد من الطرق. لكن الوظيفة الرئيسية لها هي إنشاء جهاز إرسال طلبات عن طريق تكوين عنوان طلب RPC، ثم إرسال طلبات متنوعة من خلاله.

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

زوج المفاتيح

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

على سبيل المثال، يمكنك استخدام await generateKeyPair() لإنشاء زوج من المفاتيح، بدلاً من Keypair.generate() سابقًا. من الجدير بالذكر أن generateKeyPair الجديدة تعيد Promise، بدلاً من إعادة زوج المفاتيح مباشرة. وهذا لأن التنفيذ الجديد يستفيد قدر الإمكان من واجهة برمجة تطبيقات Web Crypto في JavaScript، باستخدام تنفيذ Ed25519 الأصلي. العديد من طرق واجهة برمجة تطبيقات Web Crypto غير متزامنة. ومع ذلك، فإن هذا التغيير ليس صعب القبول، ففي عام 2024 الذي أوشك على الانتهاء، أصبح مطورو JavaScript معتادين جدًا على Promise.

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

فئتان Transaction و VersionedTransaction في الإصدار 1.x لم تعد موجودة في 2.x.

لم تعد الطرق المتعلقة ببرنامج النظام المقدمة في الإصدار القديم موجودة، لذا يجب استيراد جميع الطرق الثابتة على فئة SystemProgram من أماكن أخرى. على سبيل المثال، تتطلب تعليمات النقل استدعاء دالة getTransferSolInstruction من @solana-program/system.

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

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

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

رد فعل

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

ملخص

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

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

SOL5.11%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • مشاركة
تعليق
0/400
SignatureVerifiervip
· منذ 17 س
آه... إصدار آخر متسرع يتطلب تدقيق أمني مكثف
شاهد النسخة الأصليةرد0
BearMarketSurvivorvip
· منذ 17 س
كلما تحسنت الأداء، زادت الحمقى.
شاهد النسخة الأصليةرد0
AlwaysAnonvip
· منذ 17 س
أوه! أخيراً تمت الترقية.
شاهد النسخة الأصليةرد0
DefiPlaybookvip
· منذ 18 س
وفقًا لمنحنى زيادة TVL المتوقع، فإن تحسين هيكل الوحدة 2.x سيزيد من الأداء بنسبة 27.8%
شاهد النسخة الأصليةرد0
  • تثبيت