إصدار Solana Web3.js 2.x: إعادة بناء البرمجة الوظيفية تؤدي إلى تحسين الأداء

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

Solana Web3.js 2.x: فصل جديد من البرمجة الوظيفية

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

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

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

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

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

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

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

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

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

الاتصال

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

جافا سكريبت import { createSolanaRpc } من '@solana/web3.js';

كونست RPC = createSolanaRpc(');

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

زوج المفاتيح

في الإصدار 2.x، تم استبدال فئات Keypair و PublicKey ببعض الدوال. على سبيل المثال، يمكن الآن استخدام await generateKeyPair() لإنشاء زوج مفاتيح، بدلاً من Keypair.generate() السابق.

تُرجع الدالة الجديدة generateKeyPair وعدًا (Promise)، وذلك لأن التنفيذ الجديد يستفيد قدر الإمكان من واجهة برمجة التطبيقات Web Crypto الخاصة بجافا سكريبت، مستخدمًا تنفيذ Ed25519 الأصلي. العديد من طرق واجهة برمجة التطبيقات Web Crypto غير متزامنة.

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

لم تعد النسخة 2.x تستخدم فئتي Transaction و VersionedTransaction. كما لم تعد هناك طرق متعلقة ببرنامج النظام، ويجب استيرادها من أماكن أخرى. على سبيل المثال، تحتاج الآن تعليمات transfer إلى استدعاء دالة getTransferSolInstruction من @solana-program/system.

يوفر الإصدار الجديد شكل pipe الشائع الاستخدام في البرمجة الوظيفية. فيما يلي مثال على استخدام دالة pipe لتنفيذ وظيفة التحويل:

جافا سكريبت استيراد { الأنابيب } من '@solana / وظيفي' ؛ import { getTransferSolInstruction } من '@solana / programs' ؛

معاملة CONST = pipe( createTransaction({ الإصدار: 0 }) ، addInstruction(getTransferSolInstruction({ من: senderPublicKey, إلى: recipientPublicKey، المبلغ: lamports, })) );

توقيع const = انتظر sendAndConfirmTransaction(rpc ، معاملة ، signers) ؛

بالمقارنة مع الإصدار 1.x، زادت كمية الشيفرة قليلاً، لكنها توفر تخصيصًا أقوى.

دعم React

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

ملخص

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

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

شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • أعجبني
  • 7
  • مشاركة
تعليق
0/400
GweiObservervip
· منذ 22 س
تحسين الأداء yyds
شاهد النسخة الأصليةرد0
OPsychologyvip
· 07-06 03:28
تدور بسرعة كبيرة، من لم يكتب بضع سطور من الشيفرة بعد؟
شاهد النسخة الأصليةرد0
ShibaSunglassesvip
· 07-05 16:48
أخيرًا تم تحسينه، لا يمكن الاعتماد على اللقاح القديم.
شاهد النسخة الأصليةرد0
MetaverseHobovip
· 07-05 16:46
أخيرًا رؤى قيمة جاءت
شاهد النسخة الأصليةرد0
GateUser-00be86fcvip
· 07-05 16:43
تحديث web3.js قد وصل بالفعل
شاهد النسخة الأصليةرد0
GameFiCriticvip
· 07-05 16:40
أووو لا أستطيع مواكبة سرعة تطوير سول.
شاهد النسخة الأصليةرد0
BlockchainDecodervip
· 07-05 16:28
من منظور التنفيذ الوظيفي، يجب أن يكون تحسين الأداء في نطاق 15-20%
شاهد النسخة الأصليةرد0
  • تثبيت