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