WavesKit - إطار عمل PHP للعمل مع Waves blockchain

Мне нравится PHP لسرعة التطوير وقابلية النقل الممتازة. إنه لأمر جيد جدًا أن يكون لديك دائمًا أداة في جيبك جاهزة لحل المشكلات.

لقد كان من العار تمامًا أن نتعرف على blockchain المحلي منصة موجات لم يكن لديه PHP SDK جاهز في ترسانته. حسنا، كان علي أن أكتب ذلك.

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

لقد بدأت وظيفتين متوازيتين. الأول هو إنشاء مستكشف blockchain الذي سيكون سريعًا ومستقلًا تمامًا عن واجهة برمجة تطبيقات العقدة. والثاني هو جمع كافة الوظائف للعمل مع Waves Platform في مكان واحد. هكذا ظهرت المشاريع w8io и WavesKit.

كانت الخطوة الأولى وراء الكواليس لـ Waves blockchain متصفح w8io. لم يكن الأمر سهلاً، لكننا ما زلنا قادرين على كتابة حساب مستقل لجميع الأرصدة وحتى العثور على خطأ في الحسابات على العقد الأصلية (برنامج مكافأة الأخطاء بالمناسبة، هذا يعمل بالنسبة لهم، ويدفعون ثمن الأخطاء التي تم العثور عليها). يمكنك معرفة المزيد حول وظائف متصفح w8io في هذا الموضوع: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

أثناء العمل على w8io، كانت لدي شكوك بالفعل، ولكن عندما وصل العمل إلى نهايته المنطقية وبدأت في إنشاء SDK، تأكدت شكوكي. لم أتمكن من العثور على بعض الوظائف في أي مكان، بما في ذلك الوظائف الأكثر أهمية، وظائف التشفير. ثم بدأت بصنع الطوب الخاص بي للأساس. هكذا ولدوا: ABCode للتشفير إلى base58 (في الواقع لتشفير أي أبجدية إلى أي)، Curve25519 لإنشاء التوقيعات المتوافقة والتحقق منها (مع الخيارات على المنشطات), بليك2ب لحساب إحدى التجزئات (التي كانت متاحة فقط منذ PHP 7.2)، وما إلى ذلك.

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

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

نقوم بتوصيل WavesKit بمشروعنا:

composer require deemru/waveskit

نحن نستخدم:

use deemruWavesKit;
$wk = new WavesKit( 'T' );
$wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' );
$tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) );
$tx = $wk->ensure( $tx );

في المثال أعلاه، قمنا بإنشاء كائن WavesKit الذي يعمل على شبكة الاختبار "T". نقوم بتثبيت عبارة أولية يتم من خلالها حساب المفاتيح وعنوان الحساب تلقائيًا بناءً على المفتاح العام. بعد ذلك، نقوم بإنشاء معاملة تحويل 0.00000001 من العنوان المحسوب تلقائيًا باستخدام العبارة الأولية إلى العنوان المستعار "اختبار"، ونقله ليتم توقيعه بمفتاح خاص وإرساله إلى الشبكة. بعد ذلك، نتأكد من تأكيد الشبكة بنجاح للمعاملة.

يتركز العمل مع المعاملات في وظائف تبدأ بـ tx. لفهم أفضل للعمل مع المعاملات، يمكنك الدراسة وثائق WavesKit أو انتقل فورًا إلى الأمثلة التوضيحية في اختبارات التكامل المستمر.

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

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

واحدة من أحدث الآليات المتقدمة هي الوظيفة com.txMonitor. لقد ظهر بسبب الحاجة إلى الرد على المعاملات الواردة في الوقت الفعلي. تحل هذه الوظيفة تمامًا جميع الفروق الدقيقة المرتبطة بمعالجة المعاملات في blockchain. لا مزيد من المتاعب، ما عليك سوى إعداد وظيفة رد الاتصال الخاصة بك بالخيارات المطلوبة وانتظر المعاملات الجديدة لبدء عملياتك. على سبيل المثال، مشروع آخر لي فيكرو تم تصميمه بالكامل حول هذه الوظيفة، ويمكنك بسهولة دراسة كيفية عمله مباشرة في رمز المشروع.

أحب المصادر المفتوحة، فهي أحد أعظم إنجازات البشرية. وبما أنني المطور الوحيد ووصلت إلى حالة تم فيها حل جميع احتياجاتي، أدعوكم لاستخدامها والمساهمة فيها WavesKit.

المصدر: www.habr.com

إضافة تعليق