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

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

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

زوج المفاتيح

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

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

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

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

يجب أن يكون مستخدمو 1.x على دراية بفئتي "Transaction" و"VersionedTransaction"، وعندما يتعرفون على Solana في البداية، قد تكون العلاقة بينهما مربكة.

في الإصدار 2.x، لم تعد هاتان الفئتان موجودتين أيضًا.

لم تعد الطرق المتعلقة بـ System Program المتاحة في الإصدار القديم موجودة، لذا يجب استيراد جميع الطرق الثابتة على فئة "SystemProgram" من أماكن أخرى.

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

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

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

معاملة CONST = pipe( createTransaction({ الإصدار: 0 }) ، addInstruction(getTransferSolInstruction({ من: senderPublicKey, إلى: recipientPublicKey، المبلغ: لامبورتس, })), setComputeUnitLimit(200_000)، addSignature(senderSignature) );

توقيع const = انتظر sendAndConfirmTransaction(rpc ، transaction) ؛

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

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

رد فعل

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

ملخص

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

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

SOL0.97%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
RetiredMinervip
· 08-01 03:21
في سنه المتقدمة لا يزال يتلاعب بالإصدار الجديد
شاهد النسخة الأصليةرد0
IntrovertMetaversevip
· 07-31 08:40
الترقية سريعة لكن لا أحد يستخدمها.
شاهد النسخة الأصليةرد0
LeverageAddictvip
· 07-29 23:23
إلغاء مشروع الفريق القديم
شاهد النسخة الأصليةرد0
OnchainHolmesvip
· 07-29 23:22
أخيرًا انتظرتُ، هربتُ هربتُ
شاهد النسخة الأصليةرد0
TokenVelocityTraumavip
· 07-29 23:21
ترقية الأشياء متعبة للغاية، وداعاً
شاهد النسخة الأصليةرد0
ProofOfNothingvip
· 07-29 23:13
هُو هُو، تم التحديث، يمكنك تجربته.
شاهد النسخة الأصليةرد0
  • تثبيت