صدر الإصدار 2.x من Solana Web3.js في نوفمبر 2023، وقد جاء هذا الإصدار الجديد بتغييرات ملحوظة مقارنة بالإصدار 1.x. ستقوم هذه المقالة بتلخيص التحسينات الرئيسية.
على الرغم من أن الإصدار 2.x تم إصداره للتو ، إلا أن معدل الاستخدام ليس مرتفعًا بعد ، والعديد من المكتبات الشائعة لم تنتقل بعد ، ولكن فهم هذه التغييرات سيساعد في الاستعداد للترقيات المستقبلية.
مقارنة الإصدارات
تعتبر النسخة 1.x سهلة الاستخدام نسبيًا، فهي تحتوي فقط على حزمة واحدة هي @solana/web3.js، وقد غلفت العديد من العمليات الشائعة بتصميم قائم على الفئات. على سبيل المثال، توفر فئة Connection العشرات من الطرق، والتي تغطي تقريبًا جميع الوظائف التي يحتاجها المطورون.
ومع ذلك، فإن هذا التصميم قد جلب بعض المشاكل. على الرغم من أن الميزات التي يستخدمها المطورون فعليًا قد تكون قليلة، إلا أن مكتبة الشيفرة بالكامل ستتم تحميلها على أجهزة المستخدمين، مما يؤدي إلى زيادة وقت التحميل.
اتخذ الإصدار 2.x نهجًا مختلفًا. قام الفريق الرسمي بتقسيم قاعدة الشيفرة الأصلية إلى عدة وحدات صغيرة، مثل @solana/accounts و @solana/codecs و @solana/rpc وغيرها. التخلي عن التنفيذ القائم على الفئات في الإصدار الجديد، حيث يتم استخدام وظائف فردية بشكل أكبر، مما يسهل تحسين الشيفرة في وقت بناء JavaScript. سيتم حذف الشيفرات غير المستخدمة، ولن يتم تنزيلها على أجهزة المستخدمين. وفقًا للبيانات الرسمية، يمكن أن تحقق DApp التي تستخدم الإصدار الجديد عادةً تحسينًا في الحجم يصل إلى 30%، وقد تكون نسبة التحسين أعلى بالنسبة للتطبيقات التي تحتوي على وظائف أقل.
هذا التغيير يفرض متطلبات أعلى على جودة الوثائق لفريق سولانا. كيف يمكن للمطورين العثور بسرعة على الوظائف المطلوبة أصبح سؤالاً محورياً. حالياً، أسماء الحزم تتمتع بدلالات جيدة، حيث يمكن من خلال الأسماء فهم استخدامها بشكل تقريبي، مما يقلل إلى حد ما من صعوبة انتقال المطورين.
ومع ذلك، نظرًا لأن المشروع تم إطلاقه مؤخرًا، فإن العديد من المشاريع لم تنتقل بعد. بعض الأمثلة ووصف الوثائق ليست كافية، مما قد يسبب بعض الارتباك للمطورين.
السمة المهمة الأخرى للإصدار 2.x هي عدم الاعتماد على أي مكتبات خارجية. هذا أمر حيوي لتعزيز الأمان، خاصة بعد الهجمات على سلسلة التوريد في أوائل ديسمبر 2023 على إصدارات @solana/web3.js 1.95.5 و 1.95.6. يستخدم الإصدار الجديد المزيد من الوظائف الأصلية، مما يلغي الاعتماد على المكتبات الخارجية وإدخال Polyfills، وبالتالي يقلل من مخاطر الأمان.
التغييرات الرئيسية
طريقة الاتصال
اعتمد الإصدار 2.x طريقة أكثر وظيفية للتعامل مع الاتصالات. لم يعد يستخدم فئة Connection، بل يتم إنشاء مُرسل الطلبات من خلال تكوين عنوان طلب RPC. على سبيل المثال، عند إرسال صفقة، سيتم تلقائيًا بدء طلب HTTPS وإقامة اتصال WSS، والاشتراك في حالة الصفقة، وبعد تأكيد الصفقة، سيتم إرجاع تجزئة الصفقة.
إدارة مفاتيح
لقد شهدت العمليات المرتبطة بالمفتاح العام والمفتاح الخاص تغييرات كبيرة. لم تعد الفئات Keypair و PublicKey المستخدمة بشكل شائع في الإصدار 1.x موجودة، بل تم استبدالها بمجموعة من الدوال. على سبيل المثال، يتم الآن استخدام await generateKeyPair() لإنشاء زوج المفاتيح، بدلاً من Keypair.generate() السابقة.
تستخدم التنفيذات الجديدة واجهة برمجة التطبيقات Web Crypto في JavaScript، مع استخدام تنفيذ Ed25519 الأصلي. هذا أدى إلى تحويل بعض العمليات إلى غير متزامنة، ولكن بالنسبة لمطوري JavaScript المعاصرين الملمين بـ Promise، فهذه ليست مشكلة كبيرة.
معالجة المعاملات
في إصدار 2.x، لم يعد هناك فئتي Transaction و VersionedTransaction. كما يجب استيراد الطرق المتعلقة ببرنامج النظام من أماكن أخرى. على سبيل المثال، تحتاج تعليمات التحويل الآن إلى استدعاء دالة getTransferSolInstruction في @solana-program/system.
تقدم النسخة الجديدة شكل pipe المستخدم بشكل شائع في البرمجة الوظيفية. لم يعد يتم بدء المعاملات عبر Connection، بل يتم بدء المعاملات من خلال وظيفة محددة يتم إنشاؤها بواسطة مزود RPC معرف. على الرغم من أن كمية الشيفرة قد زادت قليلاً، إلا أنها توفر قابلية تخصيص أقوى.
دعم React
من الجدير بالذكر أن مشروع @solana/web3.js يتضمن أيضًا مكتبة باسم @solana/react، والتي توفر بعض React Hook وتحتوي على ميزات مثل signIn.
الخاتمة
أظهر إصدار النسخة 2.x من @solana/web3.js تصميم فريق سولانا على التحسين المستمر. يوفر الإصدار الجديد للمطورين وسيلة فعالة ومرنة وقابلة للتخصيص للتفاعل مع شبكة سولانا، مما يتطلع إلى دفع المزيد من التطور والتطبيقات على المنصة.
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.
تم إصدار النسخة 2.x من Solana Web3.js: إعادة تشكيل تجربة التطوير من خلال البرمجة الوظيفية
Solana Web3.js 2.x: عصر البرمجة الوظيفية الجديد
صدر الإصدار 2.x من Solana Web3.js في نوفمبر 2023، وقد جاء هذا الإصدار الجديد بتغييرات ملحوظة مقارنة بالإصدار 1.x. ستقوم هذه المقالة بتلخيص التحسينات الرئيسية.
على الرغم من أن الإصدار 2.x تم إصداره للتو ، إلا أن معدل الاستخدام ليس مرتفعًا بعد ، والعديد من المكتبات الشائعة لم تنتقل بعد ، ولكن فهم هذه التغييرات سيساعد في الاستعداد للترقيات المستقبلية.
مقارنة الإصدارات
تعتبر النسخة 1.x سهلة الاستخدام نسبيًا، فهي تحتوي فقط على حزمة واحدة هي @solana/web3.js، وقد غلفت العديد من العمليات الشائعة بتصميم قائم على الفئات. على سبيل المثال، توفر فئة Connection العشرات من الطرق، والتي تغطي تقريبًا جميع الوظائف التي يحتاجها المطورون.
ومع ذلك، فإن هذا التصميم قد جلب بعض المشاكل. على الرغم من أن الميزات التي يستخدمها المطورون فعليًا قد تكون قليلة، إلا أن مكتبة الشيفرة بالكامل ستتم تحميلها على أجهزة المستخدمين، مما يؤدي إلى زيادة وقت التحميل.
اتخذ الإصدار 2.x نهجًا مختلفًا. قام الفريق الرسمي بتقسيم قاعدة الشيفرة الأصلية إلى عدة وحدات صغيرة، مثل @solana/accounts و @solana/codecs و @solana/rpc وغيرها. التخلي عن التنفيذ القائم على الفئات في الإصدار الجديد، حيث يتم استخدام وظائف فردية بشكل أكبر، مما يسهل تحسين الشيفرة في وقت بناء JavaScript. سيتم حذف الشيفرات غير المستخدمة، ولن يتم تنزيلها على أجهزة المستخدمين. وفقًا للبيانات الرسمية، يمكن أن تحقق DApp التي تستخدم الإصدار الجديد عادةً تحسينًا في الحجم يصل إلى 30%، وقد تكون نسبة التحسين أعلى بالنسبة للتطبيقات التي تحتوي على وظائف أقل.
هذا التغيير يفرض متطلبات أعلى على جودة الوثائق لفريق سولانا. كيف يمكن للمطورين العثور بسرعة على الوظائف المطلوبة أصبح سؤالاً محورياً. حالياً، أسماء الحزم تتمتع بدلالات جيدة، حيث يمكن من خلال الأسماء فهم استخدامها بشكل تقريبي، مما يقلل إلى حد ما من صعوبة انتقال المطورين.
ومع ذلك، نظرًا لأن المشروع تم إطلاقه مؤخرًا، فإن العديد من المشاريع لم تنتقل بعد. بعض الأمثلة ووصف الوثائق ليست كافية، مما قد يسبب بعض الارتباك للمطورين.
السمة المهمة الأخرى للإصدار 2.x هي عدم الاعتماد على أي مكتبات خارجية. هذا أمر حيوي لتعزيز الأمان، خاصة بعد الهجمات على سلسلة التوريد في أوائل ديسمبر 2023 على إصدارات @solana/web3.js 1.95.5 و 1.95.6. يستخدم الإصدار الجديد المزيد من الوظائف الأصلية، مما يلغي الاعتماد على المكتبات الخارجية وإدخال Polyfills، وبالتالي يقلل من مخاطر الأمان.
التغييرات الرئيسية
طريقة الاتصال
اعتمد الإصدار 2.x طريقة أكثر وظيفية للتعامل مع الاتصالات. لم يعد يستخدم فئة Connection، بل يتم إنشاء مُرسل الطلبات من خلال تكوين عنوان طلب RPC. على سبيل المثال، عند إرسال صفقة، سيتم تلقائيًا بدء طلب HTTPS وإقامة اتصال WSS، والاشتراك في حالة الصفقة، وبعد تأكيد الصفقة، سيتم إرجاع تجزئة الصفقة.
إدارة مفاتيح
لقد شهدت العمليات المرتبطة بالمفتاح العام والمفتاح الخاص تغييرات كبيرة. لم تعد الفئات Keypair و PublicKey المستخدمة بشكل شائع في الإصدار 1.x موجودة، بل تم استبدالها بمجموعة من الدوال. على سبيل المثال، يتم الآن استخدام await generateKeyPair() لإنشاء زوج المفاتيح، بدلاً من Keypair.generate() السابقة.
تستخدم التنفيذات الجديدة واجهة برمجة التطبيقات Web Crypto في JavaScript، مع استخدام تنفيذ Ed25519 الأصلي. هذا أدى إلى تحويل بعض العمليات إلى غير متزامنة، ولكن بالنسبة لمطوري JavaScript المعاصرين الملمين بـ Promise، فهذه ليست مشكلة كبيرة.
معالجة المعاملات
في إصدار 2.x، لم يعد هناك فئتي Transaction و VersionedTransaction. كما يجب استيراد الطرق المتعلقة ببرنامج النظام من أماكن أخرى. على سبيل المثال، تحتاج تعليمات التحويل الآن إلى استدعاء دالة getTransferSolInstruction في @solana-program/system.
تقدم النسخة الجديدة شكل pipe المستخدم بشكل شائع في البرمجة الوظيفية. لم يعد يتم بدء المعاملات عبر Connection، بل يتم بدء المعاملات من خلال وظيفة محددة يتم إنشاؤها بواسطة مزود RPC معرف. على الرغم من أن كمية الشيفرة قد زادت قليلاً، إلا أنها توفر قابلية تخصيص أقوى.
دعم React
من الجدير بالذكر أن مشروع @solana/web3.js يتضمن أيضًا مكتبة باسم @solana/react، والتي توفر بعض React Hook وتحتوي على ميزات مثل signIn.
الخاتمة
أظهر إصدار النسخة 2.x من @solana/web3.js تصميم فريق سولانا على التحسين المستمر. يوفر الإصدار الجديد للمطورين وسيلة فعالة ومرنة وقابلة للتخصيص للتفاعل مع شبكة سولانا، مما يتطلع إلى دفع المزيد من التطور والتطبيقات على المنصة.