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

Solana Web3.js 2.x إصدار: ترقية كبيرة لمكتبة JavaScript الغنية بالميزات

تم إطلاق Solana Web3.js ك مكتبة جافا سكريبت قوية في نوفمبر بإصدار 2.x. مقارنةً بالإصدار 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، حيث سيتم حذف الشيفرة غير المستخدمة، ولن يتم تحميلها على أجهزة المستخدمين. وفقًا للإحصاءات الواردة في الوثائق الرسمية، فإن DApps التي تستخدم النسخة الجديدة تحقق عمومًا تحسينًا في الحجم بنسبة 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 غير متزامنة. ومع ذلك، فإن هذا التغيير ليس من الصعب على مطوري JavaScript المعاصرين الذين يعرفون 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 = await rpc.sendTransaction(transaction);

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

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

React دعم

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

ملخص

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

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

SOL0.85%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 5
  • إعادة النشر
  • مشاركة
تعليق
0/400
GweiWatchervip
· 08-09 18:00
القديم لا يتم ترقيته
شاهد النسخة الأصليةرد0
TheShibaWhisperervip
· 08-09 18:00
متى ستكتمل عملية الترقية؟ لقد أزعجني ذلك.
شاهد النسخة الأصليةرد0
SchrodingerWalletvip
· 08-09 17:54
مرة أخرى يجب أن أتحمل جولة من النقل، لقد شعرت بالاستياء.
شاهد النسخة الأصليةرد0
SorryRugPulledvip
· 08-09 17:50
ترقية وانتقال، الأمر مزعج
شاهد النسخة الأصليةرد0
DaoTherapyvip
· 08-09 17:42
دعنا ننتظر الترقية أولاً
شاهد النسخة الأصليةرد0
  • تثبيت