العقود الذكية
شيفرة لا يمكنك ترقيعها بصمت بعد النشر.
البرمجيات المعتادة تُكتب بعلم أن الخطأ يمكن إصلاحه يوم الثلاثاء. أما العقد المنشور فعلنيّ، ومُعادى منذ أول كتلة، ويكلّف أحدهم مالاً في كل تشغيل. وتكاد كل ممارسة في هذه الصفحة تنبع من هذه الشروط الأربعة.
- علنيّ قبل أن يُفرَغ من قراءته
- غير قابل للتغيير ما لم تصمّمه غير ذلك
- مُعادى منذ أول كتلة
- مدفوع الثمن عند كل تنفيذ
لماذا يختلف
ما الذي يتغيّر حين يكون النشر نهائياً.
لا شيء من هذا فكرة غريبة. إنها انضباطات هندسية معتادة تصبح غير قابلة للتفاوض حين يُغلق مخرج النجاة المعتاد.
السلوك يُحدَّد قبل أن يُكتب
ما يجب أن يصدق على العقد دائماً، مكتوباً بلغة واضحة أولاً: ما الذي لا يجوز أن يصير سالباً، ومن يجوز له استدعاء ماذا، وما الذي يجب أن يساويه المجموع دوماً. ثم تصير هذه العبارات هي الاختبارات. وكتابتها لاحقاً تنتج اختبارات توافق ما تفعله الشيفرة أصلاً.
القارئ غريب
شخص لم يكتبها، ويُدفع له ليجد عيوبها، ويعمل تحت ضغط الوقت. فالتسمية والبنية والتعليقات تُكتب لذلك الشخص، لأنها تُكتب أيضاً لمن سيصونها بعد سنتين.
الفشل ليس مساراً استثنائياً
التراجع تشغيل طبيعي لا حالة خطأ تُضاف في النهاية. وكل استدعاء خارجي يُعامَل بوصفه قادراً على الفشل أو إعادة الدخول أو إرجاع ما لم تَعِد به الواجهة.
لا شيء على السلسلة خاصّ
القيم المخزّنة قابلة للقراءة مهما قالت كلمة الرؤية، ومجمع المعاملات المعلّقة علنيّ قبل أن يُعدَّن شيء. وأي تصميم يعتمد على بقاء سرّ غير مرئي تصميم لم يكتمل.
الاختبار
ما معنى الاختبار حين لا يمكنك إطلاق إصلاح.
تغطية الأسطر أقلّ الأرقام إفادة في هذا العمل، ونحن لا نستشهد بها. المهم هو ما إذا كانت الخصائص الواجب صدقها قد هوجمت لا مجرّد أن تكون قد مُرّرت.
ثوابت لا أمثلة فقط
اختبار المثال يثبت أن العقد تعامل مع الحالة التي خطرت لك. أما اختبار الخاصية فيقرّر ما يجب أن يبقى صادقاً لكل مدخل، ويترك أداة تقضي ساعات في محاولة كسره. والأعطال المثيرة تأتي من النوع الثاني.
التشويش على الخصائص المعلنة
مدخلات عشوائية ومعادية، تُشغَّل طويلاً، مع تقليص أي حالة فاشلة إلى أصغر صورة لها ثم حفظها دائماً كاختبار انحدار. فالعطل الذي وُجد مرة يجب أن يستحيل إعادته بصمت.
اختبارات على حالة السلسلة الحقيقية
تُنفَّذ على نسخة من السلسلة الحقيقية عند كتلة حقيقية، مع البروتوكولات التي سيتفاعل معها فعلاً. فالعقد الذي ينجح أمام محاكاة مثالية فقط اختُبر في بيئة غير موجودة.
الحالات المعادية اختبارات أصيلة
إعادة الدخول، وحدود الأعداد، والسلوك غير المتوقع للرموز، واستباق المعاملة، والتلاعب بمصدر سعر داخل كتلة واحدة، وما يحدث حين تُوقَف تبعية. تُكتب هذه اختباراتٍ بدل تركها ليثيرها التدقيق.
سكربت النشر يُختبر أيضاً
وسائط المُنشئ، ونقل الملكية، وتهيئة الوكيل، وترتيب تنفيذ العمليات. فالعقد المنشور صحيحاً والمهيّأ خطأً معطوب كالمعطوب منطقه، ومن هنا تأتي حصة مفاجئة من الحوادث الحقيقية.
كلفة التنفيذ
الكلفة قيد تصميم لا جولة ضبط.
في السلاسل التي تقيس التنفيذ، كل كتابة تخزين وكل حلقة فاتورة يدفعها أحد. واعتبار ذلك أمراً يُحسَّن في النهاية يعني عادةً إعادة كتابة نموذج البيانات في النهاية.
محسومة قبل النشر
تُحدَّد العمليات المكلفة من نموذج البيانات لا تُكتشف من إيصال شبكة اختبار. وحيث يستلزم التصميم حلقة غير محدودة على مصفوفة متنامية، يُلتقَط ذلك وهو ما يزال مخططاً.
تُقاس أثناء البناء
تُسجَّل الكلفة لكل دالة وتُقارَن بين الإصدارات، فيظهر أي تغيير يجعل عملية شائعة أغلى بوضوح في المراجعة لا في الإنتاج.
توازَن مع قابلية القراءة
بعض التوفيرات تجعل العقد أصعب تدقيقاً بدرجة ملموسة. وهذه مقايضة لها ثمن حقيقي، وتُحسم بوعي لا بردّ فعل، لأن العقد غير المقروء يكلّف في المراجعة أكثر مما يوفّر في الرسوم.
قابلية الترقية
قابل للترقية يعني أن أحداً يستطيع تغييره.
هذا أكثر قرار يُتخذ بحكم العادة. يُضاف وكيل لأنه يبدو حصيفاً، فتكون النتيجة عقداً يستطيع مفتاح واحد أن يستبدل منطقه وهو يحتفظ بأصول آخرين.
غير قابل للتغيير، حيث تكون القواعد ثابتة فعلاً
لا شيء يُخترَق، ولا شيء يُحكَم، وهو أقوى ضمان تقدّمه لطرف مقابل. وثمن ذلك أن العيب يُعالَج بالترحيل لا بالترقيع.
قابل للترقية خلف مهلة
قفل زمني يجعل أي تغيير مرئياً قبل نفاذه ويمنح المتأثرين نافذة للخروج. والمهلة هي ما يحوّل صلاحية إدارية إلى أمر قابل للملاحظة.
السيطرة بيد أكثر من شخص
عتبة من الموقّعين لا مفتاح فرد، مع توثيق علني لحامليه وللعتبة. فمن يملك الترقية جزء من نموذج أمان العقد لا تفصيل تشغيلي.
تخطيط التخزين يُعامَل كدائم
ترقية وكيل دون الحفاظ على تخطيط ما هو مخزَّن أصلاً تُفسده. فالتخطيط يُوثَّق ويُفحص آلياً بين الإصدارات، لأن هذا العطل صامت حتى يصير مكلفاً.
إن كان العقد قابلاً للتغيير، فقل من يستطيع تغييره، وكم طول الإنذار، وما الذي يوقفه. إجابة منشورة عن هذه الأسئلة الثلاثة أثمن من كلمة «مُدقَّق» وحدها.
التحضير للتدقيق
ما الذي يجعل التدقيق رخيصاً.
التدقيق الخارجي محدود بالوقت. وما يجده يعتمد كثيراً على مقدار ذلك الوقت الذي يُنفَق في فهم الشيفرة بدل فحصها.
نطاق مجمَّد وإصدار موسوم
إصدار بعينه، مع تسمية الملفات داخل النطاق وخارجه. فتدقيق هدف متحرّك ينتج ملاحظات على شيفرة لم تعد موجودة.
المواصفة ترافقه
ما الغرض من كل عقد، والثوابت الواجب صدقها، وافتراضات الثقة، ومن يُفترض أن يستطيع فعل ماذا. فكل ساعة يقضيها المدقّق في استعادة النيّة ساعة لم تُنفَق في البحث عن عيب.
المخاطر المعروفة تُذكر سلفاً
المواضع التي يشكّ فيها الفريق أصلاً، مكتوبة ومسلَّمة. فإخفاء الشك حمايةً للتقرير هو ما يجعله ينتهي في الإنتاج بدلاً من ذلك.
الملاحظات يُردّ عليها لا تُبتلع
كل ملاحظة تُصلَح أو تُقبَل بسبب مكتوب. والمخاطرة المقبولة مع حجّة نتيجة مشروعة؛ أما الملاحظة بلا ردّ فليست كذلك.
التقرير ليس ضماناً
التدقيق دليل على أن أكفاءً بحثوا مدة محدودة وأبلغوا بما وجدوا. وهو ليس برهان صحّة، ومن يقدّمه على أنه كذلك يصف شيئاً لم يدّعه المدقّقون.
أسئلة
الأسئلة التي تستحق أن تُطرح أولاً.
هل تدقّقون عقوداً كتبها غيركم؟
المراجعة نعم. فمراجعة من لم يكتب الشيفرة مفيدة فعلاً ونحن نقوم بها. أما ما لن نفعله فهو مراجعة عملنا نحن وتقديمها على أنها تدقيق مستقل، لأنها ليست كذلك. وحيث سيحتفظ العقد بقيمة كبيرة، تستحق شركة خارجية لا علاقة لها بالبناء كلفتها.
على أي سلسلة ينبغي أن يكون هذا؟
هذا السؤال يسبق هذه الصفحة لا أن يكون فيها. يُحسم بأدلة عن التسوية والكلفة والأدوات وأين يوجد أطرافك المقابلون أصلاً — وأحياناً تكون الإجابة أن قاعدة بيانات تخدم المتطلّب أفضل. وصفحة البلوكتشين تبيّن كيف يُتخذ هذا القرار.
هل ينبغي أن يكون العقد قابلاً للترقية؟
يعتمد كلياً على ما يحتفظ به ولمن. فإن كانت القواعد ثابتة فعلاً، فغير القابل للتغيير ضمان أقوى وعقد أبسط. وإن كانت ستحتاج إلى تغيير، فالصيغة الصادقة قابل للترقية بقفل زمني وموقّعين متعددين، مُفصَحاً عنه بوضوح. أما الإجابة التي نرفض تقديمها فهي وكيل يُضاف افتراضاً وخلفه مفتاح واحد.
كم يستغرق التدقيق، ومتى ينبغي أن يبدأ؟
المدة تحدّدها شركة التدقيق وتعتمد على النطاق والتعقيد. أما ما نستطيع قوله فهو متى يُحجز: بعد اكتمال ميزات العقود ونجاح الاختبارات، لا والتصميم ما يزال يتحرّك. فحجز تدقيق على عقد غير مكتمل يهدر معظم ما تدفعه.
من يحتفظ بالمفاتيح بعد النشر؟
أنت. فالنشر والملكية وأي دور إداري تنتقل إليك، ويشمل التسليم ما يتحكّم به كل مفتاح، وأين يُحفظ، وما يحدث إن فُقد. والعقد الذي يبقى مفتاحه الإداري لدى المورّد بعد التسليم تبعية لم يوافق عليها أحد.
ماذا يحدث إن اكتُشف شيء بعد النشر؟
يُخطَّط لذلك قبل وقوعه: كيف يُبلَّغ عن المشكلة، ومن يستطيع التصرّف، وما الذي يمكن فعله فعلاً في ضوء قرار الترقية المتخذ سلفاً، وكيف يُبلَّغ الحائزون. والعقد الذي لا إجابة لديه عن هذا السؤال خطة استجابته للحوادث هي الارتجال.
أخبرنا بما يجب أن يضمنه العقد.
صِف ما يجب أن يبقى صادقاً دائماً ومن يجب أن يثق به. وإن كانت الإجابة الصادقة أن المتطلّب لا يحتاج عقداً أصلاً، فستسمع ذلك في المكالمة.
info@eorbitt.com · نردّ خلال يوم عمل واحد.