Мне нравится لسرعة التطوير وقابلية النقل الممتازة. إنه لأمر جيد جدًا أن يكون لديك دائمًا أداة في جيبك جاهزة لحل المشكلات.
لقد كان من العار تمامًا أن نتعرف على blockchain المحلي لم يكن لديه PHP SDK جاهز في ترسانته. حسنا، كان علي أن أكتب ذلك.
في البداية كان علي أن أستخدم لتوقيع المعاملات. لذلك، لإدارة ثلاثة عناوين، كان من الضروري إطلاق ثلاث عقد... لقد كان مشهدًا مؤسفًا، على الرغم من أنه حل بعض المشكلات. حتى وصل الفهم إلى أن الاعتماد على العقد هو طريق مسدود. أولا، بسبب وظائف محدودة وثانيًا بسبب السرعة (كانت العقد بطيئة جدًا في تلك الأيام).
لقد بدأت وظيفتين متوازيتين. الأول هو إنشاء مستكشف blockchain الذي سيكون سريعًا ومستقلًا تمامًا عن واجهة برمجة تطبيقات العقدة. والثاني هو جمع كافة الوظائف للعمل مع Waves Platform في مكان واحد. هكذا ظهرت المشاريع и .
كانت الخطوة الأولى وراء الكواليس لـ Waves blockchain . لم يكن الأمر سهلاً، لكننا ما زلنا قادرين على كتابة حساب مستقل لجميع الأرصدة وحتى العثور على خطأ في الحسابات على العقد الأصلية ( بالمناسبة، هذا يعمل بالنسبة لهم، ويدفعون ثمن الأخطاء التي تم العثور عليها). يمكنك معرفة المزيد حول وظائف متصفح w8io في هذا الموضوع:
أثناء العمل على w8io، كانت لدي شكوك بالفعل، ولكن عندما وصل العمل إلى نهايته المنطقية وبدأت في إنشاء SDK، تأكدت شكوكي. لم أتمكن من العثور على بعض الوظائف في أي مكان، بما في ذلك الوظائف الأكثر أهمية، وظائف التشفير. ثم بدأت بصنع الطوب الخاص بي للأساس. هكذا ولدوا: للتشفير إلى base58 (في الواقع لتشفير أي أبجدية إلى أي)، لإنشاء التوقيعات المتوافقة والتحقق منها (مع الخيارات ), لحساب إحدى التجزئات (التي كانت متاحة فقط منذ PHP 7.2)، وما إلى ذلك.
هذا هو المكان الذي يجب أن أشكره للحصول على بعض النصائح القيمة التي وجهتني في الاتجاه بدلاً من ملفات التضمين المألوفة بالنسبة لي، ولكنها قديمة.
بعد بضعة أشهر ، خرج وهو الآن جاهز للعمل مع جميع الوظائف القياسية لمنصة 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 من العنوان المحسوب تلقائيًا باستخدام العبارة الأولية إلى العنوان المستعار "اختبار"، ونقله ليتم توقيعه بمفتاح خاص وإرساله إلى الشبكة. بعد ذلك، نتأكد من تأكيد الشبكة بنجاح للمعاملة.
يتركز العمل مع المعاملات في . لفهم أفضل للعمل مع المعاملات، يمكنك الدراسة أو انتقل فورًا إلى الأمثلة التوضيحية في .
منذ أن تم تطوير WavesKit للاستخدام في العالم الحقيقي، فهو يتمتع بالفعل بميزات متقدمة. الميزة القاتلة الأولى هي والذي يتحكم في تحقيق مستوى الثقة المطلوب بعدم فقدان المعاملة بل على العكس تم تأكيدها والوصول إلى العدد المطلوب من التأكيدات في الشبكة.
هناك آلية أخرى مضادة للرصاص وهي كيفية تواصل WavesKit مع العقد. في ظروف الاحتباس الحراري، يعمل الإطار فقط مع العقدة الرئيسية، مع الحفاظ على اتصال دائم بها، ولكن في حالة حدوث أخطاء، يمكنه التبديل تلقائيًا إلى العقدة الاحتياطية. إذا قمت بإعداد مجموعة من العقد الاحتياطية، يمكنك استدعاء الوظيفة لتحديد أفضل عقدة باعتبارها العقدة الرئيسية بناءً على القيمة القصوى للارتفاع الحالي وسرعة الاستجابة. أضف الآن إلى هذا ذاكرة التخزين المؤقت للاستعلام الداخلي واشعر بالاهتمام لكل من المستخدمين ومالكي العقدة.
واحدة من أحدث الآليات المتقدمة هي الوظيفة . لقد ظهر بسبب الحاجة إلى الرد على المعاملات الواردة في الوقت الفعلي. تحل هذه الوظيفة تمامًا جميع الفروق الدقيقة المرتبطة بمعالجة المعاملات في blockchain. لا مزيد من المتاعب، ما عليك سوى إعداد وظيفة رد الاتصال الخاصة بك بالخيارات المطلوبة وانتظر المعاملات الجديدة لبدء عملياتك. على سبيل المثال، مشروع آخر لي تم تصميمه بالكامل حول هذه الوظيفة، ويمكنك بسهولة دراسة كيفية عمله مباشرة .
أحب المصادر المفتوحة، فهي أحد أعظم إنجازات البشرية. وبما أنني المطور الوحيد ووصلت إلى حالة تم فيها حل جميع احتياجاتي، أدعوكم لاستخدامها والمساهمة فيها .
المصدر: www.habr.com
