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

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

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

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

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

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

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

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

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

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

وفقًا للإحصاءات الواردة في الوثائق الرسمية، يمكن أن تحقق إصدارات DApp الجديدة عادةً تحسينًا في الحجم بنسبة 30%. إذا تم استخدام عدد قليل فقط من الوظائف، فقد تكون نسبة التحسين أعلى.

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

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

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

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

الاتصال

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

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

const rpc = createSolanaRpcApi( { httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });

// إرسال المعاملة باستخدام rpc const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);

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

زوج المفاتيح

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

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

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

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

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

جافا سكريبت استيراد { الأنابيب } من '@solana / وظيفي' ؛ import { getTransferSolInstruction } من '@solana / system-program' ؛ استيراد { addSignatureToTransaction, createTransaction ، sendAndConfirmTransaction, } من '@solana/web3.js';

const transferSol = pipe( // إنشاء المعاملة (ix) => createTransaction({ التعليمات: [ix] }) ، // إضافة توقيع (tx) = > addSignatureToTransaction(tx ، signer) ، // إرسال وتأكيد الصفقة (signedTx) = > sendAndConfirmTransaction(rpc ، signedTx) );

توقيع const = انتظر transferSol( getTransferSolInstruction({ من: المرسل، إلى: المستلم, المبلغ, }) );

بالمقارنة مع إصدار 1.x، زادت كمية الشفرة، ولكن أصبحت القابلية للتخصيص أقوى. يتم بدء المعاملات من خلال HTTPS RPC، ثم يتم تأكيد نتائج المعاملات من خلال الاشتراك في WSS RPC.

يدعم React

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

ملخص

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

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

SOL10.21%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
LiquidityHuntervip
· منذ 2 س
تحسين الوحدة... لكن عنق الزجاجة في الأداء لا يزال عند عتبة 85%
شاهد النسخة الأصليةرد0
OnchainFortuneTellervip
· منذ 20 س
شاهد وجه البيتكوين هو مجرد مخادع
شاهد النسخة الأصليةرد0
NoodlesOrTokensvip
· منذ 20 س
أخيرًا تم التحديث بعد تردد طويل
شاهد النسخة الأصليةرد0
SandwichTradervip
· منذ 20 س
لماذا تركض بهذه السرعة؟ هل الهيكل في حالة من الفوضى؟
شاهد النسخة الأصليةرد0
staking_grampsvip
· منذ 20 س
واو، أريد تعلم القليل من ذلك.
شاهد النسخة الأصليةرد0
AirdropHunter007vip
· منذ 20 س
又又又来晚了!求 توزيع مجاني...
شاهد النسخة الأصليةرد0
  • تثبيت