أنا أحب PHP لسرعة التنمية وقابلية ممتازة. من الرائع أن يكون لديك مثل هذه الأداة في جيبك ، وتكون على استعداد دائمًا لحل المشكلات.
بالنسبة لي كان أمرًا محزنًا للغاية أنه لم يكن هناك Waves Platform SDK لـ PHP عندما قابلت هذا blockchain الجميل لأول مرة. حسنا ، اضطررت إلى كتابة هذه المجموعة.
في البداية ، استخدمت نقاطي لتوقيع المعاملات. لذلك لثلاثة عناوين تعمل ، اضطررت إلى تشغيل 3 عقد ... لقد كانت مثيرة للشفقة إلى حد كبير ، لكن تم حل بعض المهام. حتى كان هناك فهم أن الاعتماد على عقدة هو طريق مسدود. أولاً بسبب قلة الوظائف والثاني العقدة API بطيئة (في تلك الأيام كانت بطيئة للغاية).
لقد بدأت 2 أعمال متوازية. واحد هو مستكشف blockchain التي يجب أن تكون سريعة ولا تعتمد على العقدة API على الإطلاق. الآخر هو مجمع لجميع الوظائف اللازمة للعمل مع منصة ويفز. هذه هي الطريقة التي ولدت مشاريع مثل w8io و WavesKit .
كانت الخطوة الأولى وراء الكواليس من Waves blockchain مستكشف w8io . كان الأمر صعبًا ، لكنني ما زلت أتمكن من كتابة حساب مستقل لجميع الأرصدة وحتى أنني وجدت خطأً في الحسابات على العقد الأصلية (بالمناسبة ، يعمل برنامج مكافآت الأخطاء ، يدفعون مقابل الأخطاء). يمكنك معرفة المزيد حول وظائف مستكشف w8io في هذا الموضوع: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite
عندما تم ذلك ، انتقلت إلى الخطوة التالية ، لكن لم أستطع العثور على لبنات بناء ، وحتى بالنسبة للجزء الأكثر أهمية ، وهو التشفير. لذلك بدأت في صنع حزم قاعدة بلدي. هذه هي الطريقة التي ولدت بها ABCode لترميز base58 (في الغالب ولكن أي إلى أي أبجدية فعليًا) ، Curve25519 للمتغيرات المدعومة من وظائف التوقيع والتحقق ( في متغيرات المنشطات ) ، Blake2b لوظيفة التجزئة (والتي تظهر فقط في مكتبة Sodium في PHP 7.2) الخ
هنا أود أن أشكر إينال كاردانوف على بعض النصائح التي وجهتني إلى طريقة الملحن بدلاً من يتضمن ملف المدرسة القديمة.
بعد شهرين ، خرج WavesKit من مرحلة تجريبية وأصبح الآن جاهزًا للعمل مع وظائف Waves Platform القياسية. جميع معاملات الشبكة الرئيسية متاحة للمستخدمين لإنشاء وتوقيع والبث بسهولة في الحزمة الواحدة ، والتي تعمل على كل إصدار 64 بت من PHP يبدأ من 5.6 شاملة.
قم بتوصيل WavesKit بمشروعك:
composer require deemru/waveskit
مثال على الاستخدام الأساسي:
use deemru\WavesKit; $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 ، والذي يعمل في testnet "T". نقوم بتعيين pharse الرئيسي ، حيث يتم حساب المفاتيح والعنوان من المفتاح العمومي تلقائيًا. بعد ذلك ، نقوم بإنشاء معاملة تحويل قدرها 0.00000001 Waves من العنوان المحسوب إلى عنوان يحمل الاسم المستعار "test" ، وننقل هذه المعاملة للتوقيع باستخدام وظيفة المفتاح الخاص المحسوبة وننشرها على الشبكة. بعد ذلك ، نضمن أن يتم تأكيد المعاملة بنجاح من قبل الشبكة.
يتركز العمل مع المعاملات في الوظائف ذات البادئات "tx" . لفهم أفضل لكيفية التعامل مع المعاملات ، يمكنك دراسة وثائق WavesKit أو الرجوع على الفور إلى أمثلة الاستخدام الحقيقي في اختبارات التكامل المستمر .
نظرًا لأن WavesKit كان يتطور في حالات حقيقية ، فلديه ميزات متقدمة. أولاً وقبل كل شيء ، يتم التأكد من الوظيفة التي يمكن استخدامها لتحقيق أي مستوى من الثقة المرغوب فيه بأن معاملتك لم تضيع ، ولكنها أكدت ووصلت إلى العدد المطلوب من التأكيدات.
آلية إثبات الرصاص الأخرى هي كيفية تفاعلها مع العقد. هناك قدرة داخلية للرجوع إلى عقد نسخ احتياطي في حالة وجود أخطاء في العقد الرئيسية. يمكنك تعيين مجموعة من العقد الاحتياطية إلى الوراء. يمكنك استدعاء وظيفة setBestNode لاختيار أفضل عقدة مناسبة حاليًا بناءً على أعلى ارتفاع وأقصر وقت استجابة للعقدة. قم الآن بإضافة ميكانيكي ذاكرة التخزين المؤقت الداخلية وعقد اتصال إلى ترسانتها ويمكنك أن تشعر بالاهتمام ليس فقط للمستخدمين ، ولكن أصحاب العقدة أيضا.
واحدة من أحدث ميزة متقدمة هي وظيفة txMonitor . بدا كضرورة الرد على المعاملات الواردة في الوقت الحقيقي. تعمل هذه الوظيفة على حل جميع المشكلات المتعلقة بمعالجة المعاملات بشكل كامل في blockchain. لا مزيد من الألم للمطورين ، فقط قم بتعيين وظيفة رد الاتصال والخيارات المرغوبة وانتظر المعاملات الجديدة لتشغيل العمليات الخاصة بك. على سبيل المثال ، يعتمد مشروع VECRO الخاص بي بالكامل على وظيفة txMonitor هذه ، فلا تتردد في معرفة كيفية عمله .
أحب المصادر المفتوحة ، هذا هو أحد أعظم إنجازات البشرية. بما أنني المطور الوحيد لهذا الإطار وقد توصلت إلى أن جميع احتياجاتي قد تم حلها ، فإنني أرحب بكم لاستخدام WavesKit والمساهمة فيه .