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

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

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

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

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

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

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

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

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

بالمقارنة، اتبعت النسخة 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 قد ألغى جميع الاعتماد الخارجي.

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

الاتصال

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

تم استخدام طريقة أكثر وظيفية لتحقيق هذه الوظيفة في إصدار 2.x:

جافا سكريبت استيراد { createSolanaRpc } من "@solana / web3.js" ؛

const rpc = createSolanaRpc("");

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

زوج المفاتيح

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

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

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

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

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

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

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

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

جافا سكريبت استيراد { الأنابيب } من "@solana / web3.js" ؛ import { getTransferSolInstruction } من "@solana / system-program" ؛

معاملة CONST = pipe( createTransaction({ الإصدار: 0 }) ، addInstruction(getTransferSolInstruction({ fromPubkey: المرسل, toPubkey: المستلم ، لامبورتس: المبلغ })) );

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

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

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

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.
  • أعجبني
  • 5
  • مشاركة
تعليق
0/400
RugPullSurvivorvip
· 07-12 23:48
تغييرها يعني عدم تغييرها... من الأفضل إعادة كتابتها بالكامل.
شاهد النسخة الأصليةرد0
Degen4Breakfastvip
· 07-12 23:48
أخيرًا أصبحت الأمور أفضل
شاهد النسخة الأصليةرد0
digital_archaeologistvip
· 07-12 23:40
اسقاط اعتماد التقييمات الجيدة
شاهد النسخة الأصليةرد0
AirdropHunterWangvip
· 07-12 23:32
هل هذا فقط؟ هل توجد ميزات أقل؟
شاهد النسخة الأصليةرد0
metaverse_hermitvip
· 07-12 23:31
آه، هذه الهجرة حقًا مؤلمة.
شاهد النسخة الأصليةرد0
  • تثبيت