بقلم: بريت ماكلين ، مدير الهندسة - Crypto، Fiat، Staking
إذا كنت مهتمًا بالعملات المشفرة أو المدفوعات أو الرهانات وترغب في المساعدة في بناء النظام المالي للمستقبل ، فإن فريق هندسة التمويل @ Kraken يقوم بالتوظيف!
عندما تم إطلاق Kraken قبل عقد من الزمن ، تم دعم ثلاث عملات مشفرة فقط: BTC و LTC و XRP.
اليوم ، تدعم Kraken 82 أصلًا على 33 blockchains ، وخدمات Staking لـ 8 cryptocurrencies.
لتسهيل الملايين من الإيداعات والسحوبات والمعاملات في شركة Kraken ، يقوم فريق هندسة التشفير بتشغيل مئات الخدمات لضمان التدفق السلس للأموال داخل وخارج البورصة. يتم تحديث برنامج blockchain الذي تدعم هذه الخدمات بشكل متكرر ؛ بالنسبة لبعض سلاسل الكتل الأكثر نشاطًا ، يمكن أن تكون الشوكات الصلبة والناعمة ذات طبيعة شهرية في حين أن البعض الآخر مثل Ethereum يكون مرتين سنويًا. بشكل عام ، هناك على الأقل عدد قليل من تحديثات البرامج للبنية التحتية blockchain الخاصة بنا كل أسبوع.
قد يكون التحدي المتمثل في دعم وتحديث مثل هذا العدد الكبير من الخدمات المختلفة ، مع بناء خدمات جديدة في نفس الوقت أمرًا شاقًا.
في الأشهر الـ 12 الماضية ، أضاف فريقنا دعمًا لـ:
- 60 عملة معماة جديدة:
- 39 × رموز ERC20
- Polkadot (عند إطلاق mainnet)
- Kusama
- Filecoin (عند إطلاق mainnet)
- التدفق (عند إطلاق mainnet)
- الكافا
- رمز ويب الطاقة (عند إطلاق mainnet)
- USDT (TRC20)
- 10 × باراشين كرودلوانز
- الاستلقاء تحت أشعة الشمس
- 1 × رمز SPL (مصل)
- مينا
- 8 أصول Staking جديدة:
- Polkadot (عند إطلاق mainnet)
- Kusama
- Ethereum 2.0 (عند إطلاق mainnet)
- التدفق (عند إطلاق mainnet)
- كاردانو
- كون
- الكافا
- الاستلقاء تحت أشعة الشمس
تم تحقيق هذه الإنجازات جنبًا إلى جنب مع الحفاظ على عمليات التكامل الحالية لدينا. مهندسو فريق التشفير مسؤولون ليس فقط عن برنامج البوابة المكتوب داخليًا ، ولكن أيضًا عن صيانة ونشر البنية التحتية blockchain التي تعتمد عليها بواباتنا. يمكن أن يكون إيقاع تطوير blockchain في هذه المشاريع أمرًا مزعجًا ، مع تغييرات متقطعة وميزات جديدة تأتي بشكل متكرر وأحيانًا مع القليل من التحذير.
إذن ، كيف تمكنت Kraken من إطلاق العشرات من المنتجات الجديدة كل عام مع مواكبة الوتيرة السريعة لتطوير blockchain؟
اختبارات نهاية إلى نهاية (E2E)!
لماذا نقدر اختبارات E2E ونتجنب السخرية
منذ الأيام الأولى في Kraken ، كان التركيز على أن اختبارات E2E هي أكثر أنواع الاختبارات قيمة التي يمكن للمهندس بناؤها. اختبارات الوحدة لها مكانها ، لكن العديد من المطورين عديمي الخبرة في عمليات الدمج المعقدة يميلون إلى كتابة اختبارات الوحدة لكل جزء من التعليمات البرمجية التي يبنونها اعتقادًا منهم أنهم يحسنون الجودة الكلية للبرنامج الذي يطورونه.
هذا المسار ، رغم أنه مليء بالنوايا الحسنة ، يمكن أن يؤدي في كثير من الأحيان إلى الكثير من الألم على الطريق. الاعتماد المفرط على اختبارات الوحدة يميل إلى ترسيخ العمارة الخاصة بك ؛ إنه يشبه صب طبقة من الإيبوكسي فوق قاعدة الشفرة بالكامل. أنت تقرن الشفرة بإحكام باختباراتها ، مما يجعل الشفرة أكثر صرامة وغير مرنة ومقاومة لإعادة البناء. إذا كنت بحاجة إلى إجراء تغيير ، فستحتاج على الأرجح إلى إجراء تغييرات كبيرة على الاختبارات ، وفي بعض الحالات ، قم بطرحها بالكامل. كود إعادة البناء هو قدرة أساسية لفريق هندسي أن يمتلكها في مجموعة أدواتهم وأي شيء يضيف احتكاكًا لسهولة إعادة البناء يجب تقييمه بعناية قبل تقديمه. عند إعادة بناء الكود ، لا يتطلب اختبار E2E المصمم جيدًا في كثير من الأحيان العديد من التغييرات ، ويوفر المرونة في ضبط الشجاعة الداخلية للتطبيق مع ضمان استمراره في العمل كما هو متوقع.
هل هذا يعني أنه لا يجب عليك كتابة اختبارات الوحدة؟ على الاطلاق! هناك العديد من السيناريوهات التي تكون فيها اختبارات الوحدة هي الحل الأمثل ، ولكننا وجدنا أنه بالنسبة لعمليات التكامل المعقدة ، تعمل اختبارات E2E بشكل أفضل. بشكل عام ، تكون اختبارات الوحدة أكثر فاعلية عند كتابتها للتعليمات البرمجية التي تفي بالمعايير التالية:
- معقدة حسابيًا مع العديد من حالات الحافة.
- دقيق النطاق بمتطلبات محددة جيدًا.
- يكمل وحدة عمل واحدة.
- عديم الجنسية.
غالبًا ما تكون هذه الأجزاء الصغيرة والمحددة بإحكام من الكود المعقد هي اللبنات الأساسية لتطبيق أكبر ، وحتى إذا حدث معيد البناء ، فمن غير المرجح أن تتغير هذه الوظائف. في عالمنا ، قد تكون هذه أشياء مثل اشتقاق العنوان ، والتحقق من صحة العنوان ، وتوقيع المعاملة ، وما إلى ذلك.
الخلاصة الرئيسية هنا هي أنه كفريق هندسي صغير ، لا توجد طريقة يمكننا من خلالها الحفاظ على حجم الخدمات التي ندعمها حاليًا ، و بناء منتجات جديدة دون اختبارات نهائية. يجب اعتبار اختبارات الوحدة رهانات الجدول ، ولكن بمعزل عن غيرها ، لن تكون كافية بالنسبة لنا لمواكبة هذا الفضاء المتطور. بدلاً من ذلك ، اخترنا الاستثمار بكثافة في مجموعات قوية من اختبارات التكامل واختبارات E2E التي تؤكد أن خدماتنا ستعمل بنجاح في أوضاع التشغيل الأكثر شيوعًا.
تحديات اختبارات E2E
على الرغم من أن اختبارات E2E يمكن أن تكون قوية ، إلا أنها ليست حلاً سحريًا. عند التكامل مع خدمات الجهات الخارجية ، غالبًا ما تفقد هذه الأنواع من الاختبارات قدرًا كبيرًا من قيمتها نظرًا لأن بعض نقاط النهاية أو الواجهات يجب أن يتم الاستهزاء بها من أجل اختبار تدفق وظيفة أو استدعاء معين بشكل كامل. تعد Mocks جيدة بقدر فهمك للخدمة التي تسخر منها ، ونتيجة لذلك ، يمكن أن تكون عرضة للخطأ عندما تكون التحديثات متكررة وكبيرة بطبيعتها. يعد الحفاظ على الكود الخاص بك بالإضافة إلى نماذجك انتهاكًا لمبدأ DRY (لا تكرر نفسك) ، وهو مصطلح صاغه ديفيد توماس وأندرو هانت في "المبرمج البراغماتي". يذكرون في كتابهم أن "كل قطعة معرفية يجب أن يكون لها تمثيل واحد ، لا لبس فيه ، وموثوق داخل النظام." يعني إنشاء إصدار تم الاستهزاء به من أي خدمة أنه توجد الآن نسختان متباينتان من الخدمة المذكورة: نسختك المسخّرة والإصدار الفعلي. الأخطاء في ترجمة سلوك التبعية التي تم الاستهزاء بها هي الآن مصدر قلق آخر يجب تفسيره.
Regtests للإنقاذ
لحسن الحظ بالنسبة لنا ، تدعم معظم البلوكشين القدرة على تشغيل شبكات خاصة مؤقتة يمكن دمجها كجزء من عملية التكامل المستمر (CI) / النشر المستمر (CD). المثال الأكثر شيوعًا على ذلك هو وضع اختبار انحدار Bitcoin (regtest). عند بدء تشغيل bitcoind باستخدام الخيار "-regtest" ، فإنه ينشئ بيئة blockchain محلية جديدة يمكنك التحكم فيها بشكل كامل. الميزة الرئيسية لوضع Regtest هي أنه يمكنك استخراج عدد عشوائي من الكتل حسب الرغبة ، مما يسمح لاختبارات E2E الخاصة بك بإكمال الرحلات ذهابًا وإيابًا لعمليات الإيداع والسحب من جميع الأنواع والمتغيرات ، ومحاكاة مئات السيناريوهات في غضون ثوانٍ. يمكن بسهولة محاكاة حالات Edge والسيناريوهات الفريدة الأخرى في وضع regtest ، مثل المعاملات المتعددة ، وإعادة المؤسسات ، والاستبدال بالرسوم (RBF) ، والدفع الطفل للوالد (CPFP) ، والمزيد! لا تضمن هذه الاختبارات أن الكود الخاص بنا لا يحتوي على أخطاء فحسب ، بل يتحقق أيضًا من الحالة النهائية لـ blockchain ودفاتر الأستاذ لدينا لضمان أن كل شيء يعمل كما هو متوقع.
كجزء من عملية إضافة دعم لعملة مشفرة جديدة على Kraken ، يقوم فريق التمويل ببناء إطار عمل regtest لجميع القوائم الجديدة. هذا الرمز هو أساس نظام الصيانة الخاص بنا: في أي وقت يتم فيه إصدار إصدار جديد ، فإن الأمر يتعلق ببساطة بتحديث إصدار عقدة blockchain وإعادة تشغيل خط أنابيب CI الخاص بنا لضمان عدم وجود تغييرات مفاجئة. لا تزال القراءة المتأنية لملاحظات الإصدار والتعاون مع المجتمع أمرًا ضروريًا للغاية ، ولكن هذه الاختبارات تمنحنا الثقة في إصدار إصدارات جديدة لم نكن لولاها.
حلول مبتكرة
لسوء الحظ بالنسبة لنا ، لم يتم اختبار جميع سلاسل الكتل مثل Bitcoin. غالبًا ما تقدم blockchains الجديدة مفاهيم جديدة ، ومن أجل تزويد عملائنا بالوصول إلى التقنيات الجديدة الأكثر إثارة ، تفضل Kraken إطلاق دعم blockchain الجديدة في أقرب وقت ممكن من بداية الشبكة الرئيسية. لدعم أصل جديد بأمان في تاريخ الإطلاق أو قريبًا منه ، تحتاج Kraken أحيانًا إلى تطوير أدوات اختبار معقدة لاكتساب الثقة في التكامل ولضمان عدم تعرض أموال العملاء للخطر.
خير مثال على ذلك هو عندما أطلقت Kraken دعم Ethereum 2.0 بعد 3 أيام فقط من إطلاق الشبكة الرئيسية في الأول من ديسمبر 1. على الرغم من أن الآلاف من الأفراد والشركات حول العالم ساعدوا في اختبار Ethereum 2020 على شبكات اختبار متعددة مثل Medalla و Spadina ، ما زلنا قررت أخذ مفهوم regtests إلى مستوى آخر بالكامل مع هذا التكامل. لقد علمنا في وقت مبكر أن Ethereum 2.0 سيكون تطورًا مهمًا ، وقد ثبت صحة هذا الاعتقاد حيث تم حتى الآن تعليق ملايين ETH على سلسلة المنارات ، بما في ذلك أكثر من 2.0 ETH التي تم تجميعها بواسطة عملاء Kraken.
يمكنك أن ترى أدناه رسمًا تخطيطيًا لمجموعة الخدمات التي يدور خط أنابيب التكامل المستمر (CI) لدينا ويمزقها في كل مرة يلتزم فيها المطور برمز إلى أحد مستودعات أكواد ETH2 الخاصة بنا.
على مستوى عالٍ ، يكون تدفق الاختبار هو:
- ابدأ العقد الأولية والبديلة لـ ETH1 (يتناوب كل منهما على التعدين من أجل الإجماع) بنشأة تحتوي على كمية أولية من ETH للاختبار.
- ابدأ عقدة سلسلة منارة ETH2 كسلسلة خاصة باستخدام وضع تكوين أدنى خاص حيث يلزم فقط 16 مدققًا لتنشيط التكوين.
- انشر عقد ETH2 الذكي على blockchain ETH1.
- قم بإيداع ETH في عقد إيداع ETH2 حيث يتم حرق الأموال وإنشاء أدوات التحقق على عقدة المدقق الخارجية ETH2. هؤلاء هم المدققون الذين يقومون فقط بتشغيل شبكة ETH2 ويتم التعامل معهم كما لو كانوا خارجيين لأي مدققين من Kraken.
- ابدأ تشغيل مستكشفات الكتل ETH1 و ETH2.
- بدء قاعدة البيانات.
- بدء البوابة والموقعون.
- أدخل طلبات العميل للحصول على حصة ETH -> ETH2.
- تلتقط Gateway طلبات العميل وترسل ETH إلى عقد الإيداع على blockchain ETH1 وتنشئ عددًا مطابقًا من المدققين على عقدة المدقق الداخلي ETH2. يتم فصل أدوات التحقق من الصحة إلى مجموعات مدقق داخلية وخارجية حتى نتمكن من اختبار ما يحدث عندما ينخفض المدققون لدينا (لاختبار القطع ، والعقوبات ، والمكافآت المفقودة) ، ومعرفة ما يحدث عندما تنقطع بقية الشبكة أو تكون غير متصلة بالإنترنت ولكن المدققين لدينا ابق مستيقظا.
- راقب حتى تنشط المدققات على سلسلة ETH2 ، وابدأ في تتبع المكافآت ، والمدفوعات ، واختبار القطع والعقوبات ، واكتشاف المكافآت المفقودة ، ودفع المكافآت للعملاء.
- قم بتشغيل عملية التسوية المالية المنفصلة الخاصة بنا على جميع المعاملات لضمان تطابق كل شيء في جميع دفاتر الأستاذ لدينا بشكل صحيح.
ما ورد أعلاه هو مجرد ملخص عالي المستوى لما يجري في إطار الاختبار الخاص بنا ؛ هناك عدد من الاختبارات والفحوصات وعمليات التحقق الأخرى التي تحدث. إذا احتاج المطور إلى تصحيح شيء ما أو إلقاء نظرة على حالة أي من الشبكتين ، فيمكنه استشارة مستكشفات الكتل لمعرفة ما حدث بالضبط في لمحة. لا نقوم عادةً بتضمين مستكشفات الكتل في خط أنابيب CI الخاص بنا ، ولكن نظرًا لتعقيد التكامل ، كان من المفيد أثناء مرحلة التطوير تصور ما كان يحدث على السلسلة.
قد تعتقد أن هذا يضيف تأخيرًا كبيرًا لخط أنابيب CI الخاص بنا ، لكن هذا ليس هو الحال لحسن الحظ. حاليًا ، يستغرق تشغيل خط أنابيب CI الكامل لـ Ethereum 2.0 repo 14 دقيقة فقط. يتضمن ذلك تدقيق / بناء جميع التبعيات ، وبدء جميع الخدمات ، ونشر العقود الذكية المختلفة على blockchain ، وكتل التعدين ، وإنشاء المدققين ، ثم تشغيل جميع سيناريوهات الاختبار التي يزيد عددها عن 100 سيناريو.
افكار اخيرة
يستهلك تطوير اختبارات E2E الشاملة لكل تكامل blockchain فردي في Kraken قدرًا كبيرًا من الموارد الهندسية. إنه ثمن ندفعه بكل سرور ، حيث أن اهتمامنا الأول هو سلامة أموال عملائنا وضمان حصولهم على تجربة عالية الجودة على منصتنا. هل يمكن لفريقنا إصدار المزيد من المنتجات إذا أمضينا وقتًا أقل في الاختبارات عند إنشاء عمليات تكامل جديدة؟ بدون سؤال. ومع ذلك ، فإن القيام بذلك يتعارض مع روح وقيم ليس فقط الفريق الهندسي ، ولكن الشركة ككل. تضمن هذه الاختبارات أنه يمكننا التحديث بأمان إلى الإصدارات الجديدة من برنامج blockchain ، وزيادة الثقة أثناء عمليات الانقسام الصلبة / الناعمة ، وتقليل إجهاد المطور عند نشر التغييرات.
لماذا يعتبر مهندسو كراكن من أكثر المهندسين احترامًا في الصناعة؟ هذه الرسالة من Steve Hunt ، نائب الرئيس للهندسة في Kraken ، يوضح قيمنا وتفانينا لمساعدة مهندسي blockchain الآخرين.
المصدر: https://blog.kraken.com/post/10227/testing-crypto-payments-staking-at-kraken/
- &
- 000
- 11
- 2020
- الوصول
- حسابي
- نشط
- الكل
- كل الحركات المالية
- السماح
- تطبيق
- هندسة معمارية
- حول
- الأصول
- ممتلكات
- معركة
- سلسلة منارة
- إلى البيتكوين
- سلسلة كتلة
- BTC
- نساعدك في بناء
- ابني
- دعوة
- الحالات
- تحدى
- تغيير
- الشيكات
- طفل
- الكود
- للاتعاون
- آت
- مشترك
- مجتمع
- الشركات
- حول الشركة
- الثقة
- إجماع
- تواصل
- عقد
- عقود
- خلق
- التشفير
- العملات الرقمية
- العملات المشفرة
- قاعدة البيانات
- صفقة
- تأخير
- كشف
- تطوير
- المطور
- المطورين
- التطوير التجاري
- مدير المدارس
- في وقت مبكر
- حافة
- الطُرق الفعّالة
- مهندس
- الهندسة
- المهندسين
- البيئة
- ERC20
- ETH
- ethereum
- Ethereum 2.0
- روح الشعب
- أحداث
- تبادل
- FAST
- الميزات
- المميزات
- أمر
- مالي
- مرونة
- تدفق
- الإطار
- بالإضافة إلى
- وظيفة
- التمويل
- أموال
- مستقبل
- العلاجات العامة
- جينيسيز
- خير
- عظيم
- هنا
- مرتفع
- منـزل
- كيفية
- HTTPS
- مئات
- بما فيه
- القيمة الاسمية
- العالمية
- البنية التحتية
- التكامل
- التكاملات
- عزل
- IT
- حفظ
- القفل
- المعرفة
- كراكن
- كبير
- إطلاق
- قيادة
- مستوى
- مصانع
- محلي
- LTC
- القيام ب
- تعدين
- المقبلة.
- الاكثر شهره
- Multisig
- شبكة
- مزايا جديدة
- منتجات جديدة
- العقد
- عرض
- تعمل
- خيار
- طلب
- أخرى
- الم
- المدفوعات
- المنصة
- أكثر الاستفسارات
- السعر
- خاص
- المنتجات
- مشروع ناجح
- جودة
- نادي القراءة
- تخفيض
- اعتماد
- المتطلبات الأساسية
- الموارد
- REST
- الجوائز
- المخاطرة
- يجري
- تشغيل
- السلامة
- شاشة
- خدمات
- طقم
- صغير
- سمارت
- عقد الذكية
- العقود الذكية
- So
- تطبيقات الكمبيوتر
- الفضاء
- المحك
- عمادا
- بداية
- الولايه او المحافظه
- إجهاد
- الدعم
- مدعومة
- الدعم
- نظام
- التكنولوجيا
- مؤقت
- تجربه بالعربي
- الاختبار
- اختبارات
- الوقت
- رمز
- تيشرت
- تتبع الشحنة
- صفقة
- المعاملات
- تحديث
- آخر التحديثات
- us
- قيمنا
- حجم
- الويب
- أسبوع
- في غضون
- للعمل
- العالم
- X
- XRP
- عام