بحثت عن كلمة "الثقة" في الورقة البيضاء لبابل أربع مرات. وجدتها تمامًا صفرًا.
هذا الرقم لم يتركني أغمض جفني. ليس لأن الثقة غائبة عن البروتوكول. بل لأنها استُبدلت بشيء لم أكن مستعدًا لتسميته.
تتبّعت مخطط توقيع EOTS مقابل موفّر نهائية (finality) على شبكة اختبار قمت بتخريبه عمدًا. وقّع مرة واحدة بصدق، وستظل المفتاح مخفيًا. وقّع مرتين على كتل متضاربة، وستقوم الرياضيات بنشر مفتاحك الخاص على الشبكة. لا هيئة قضائية. لا تصويت على الحوكمة. والعقوبة لا تحتاج إلى قاضٍ لأن الكذبة تحمل جلّادها معها.
أجريت المحاكاة أتوقع وجود عتبة، أو فترة سماح، أو تدخل بشري. لا شيء من ذلك موجود. الاقتصاديات هي ما أوقعني.
المتحقق الذي يوقّع مرتين يفقد الرصيد المرتبط بالإضافة إلى BTC المقتطع. لكن هذه هي تكلفة الفشل في الهجوم. أما تكلفة إطلاقه فهي أن تكون أسرع من الطابع الزمني لبيتكوين أولًا، وهذا يعني إعادة تنظيم دفتر حسابات بقيمة تريليون دولار قبل أن تتفعّل حتى عملية استخراج التوقيع.
لا تُقتطع لمجرد المحاولة. تُقتطع لأنك تحاول وتخسر. هذه هي الجزء الذي لا أستطيع التوقف عن التفكير فيه. بابل لا تمنعك من أن تكون غير صادق. بل تجعل عدم الصدق متماثلًا بنيويًا مع الاعتراف بمجرد أن ترفض إثباتات العمل في بيتكوين أن تتابع فوركك.
معظم السلاسل تبيعك الثقة عبر لجنة. بابل تبيعك الثقة على شكل بديهية: إذا غششت، فستفضحك الرياضيات قبل أن يلاحظ أي إنسان. هذه ليست أمنًا. إنها حتمية.
لا أعلم إن كان السوق قد تسعّر ذلك بعد. أعلم فقط أن كل سلسلة أخرى تطلب منك أن تؤمن. بابل تطلب منك أن تحسب. والحساب أرخص من الإيمان حتى يأتي الوقت الذي لم يعد فيه كذلك.
كنت أريد أن أعرف ما الذي يحدث في الفجوة بين تغيّر الدعم الحقيقي لدى مزوّد الإنهاء (finality provider) وبين قيام البروتوكول بالإقرار بأن التغيير قد حصل. لذلك تتبّعت كيف يعالج مكوّن x/epoching في Babylon فعليًا تفويضًا جديدًا.
رسائل الإيداع والسحب لا تُنفّذ فورًا. فهي تُحمَّل في قائمة انتظار لمدة طول دورة (epoch) كاملة، ثم تُعالج في دفعة واحدة عند الحدّ الفاصل. وحتى يصل ذلك الحدّ، تعكس قوة تصويت الإنهاء في السلسلة اللقطة القديمة، لا اللقطة الحالية. قد يكون مزوّد الإنهاء يفقد تفويضات في الوقت الفعلي، وقد يكون يفرّغ نفسه اقتصاديًا في منتصف الدورة، ومع ذلك لا يزال يصوّت بالوزن الذي كان لديه قبل أن يسحب أي شخص.
هذا ليس خللًا. بل هو المقايضة مقابل تجميع آلاف عمليات التفويض المدعومة ببيتكوين (BTC) في تسوية واحدة بدلًا من معالجة كل عملية على حدة. لكن هذا يعني أن الأمان الاقتصادي-التمويلي الذي يدعم كتلة معيّنة ليس الأمان الموجود الآن. إنه الأمان الذي كان موجودًا وقت آخر نقطة تحقق (checkpoint)، ويُحمَل للأمام على أساس الثقة بأن شيئًا جوهريًا لم يتغيّر بينهما.
استمررت في مقارنتها بكيفية عمل حدّ ائتمان فعليًا. لا يتم تحديث حدّك فور تغيّر دخلك. بل يتم تحديثه ضمن دورة، وفي الفترة بين ذلك، يكون البنك يمدّ الثقة استنادًا إلى رقم يكون بالفعل غير دقيق قليلًا. يفعل Babylon الشيء نفسه مع وزن بيتكوين، فقط مع تشفير أقوى ملفوف حول عدم الدقة.
لا أعتقد أن هذا يُخلّ بالنموذج. إلغاء الربط السريع، بحوالي يومين، يحافظ على هذه النافذة قصيرة مقارنةً بسلاسل PoS النموذجية. لكن «قصيرة» ليست «صفرًا»، والجزء الذي يستحق المراقبة ليس سعر الرمز. بل مدى اتساع نافذة الدورة هذه مع نمو مجموعة المُحققين (validator set).
افترضتُ أن لجنة العهد مجرد إجراء شكلي، من نوع الـ multisig الذي تحتاجه كل بروتوكولات الاستيكينغ في بيتكوين، ولا يقرأ أحد الكود الخاص بها. ولم أتراجع عن افتراضي إلا بعد تتبّع ما يحدث عندما يحاول المُدقِّق إلغاء الربط مبكّرًا.
لا توجد قائمة انتظار لإلغاء الربط بالطريقة التي يتوقعها الناس. عندما تقوم بالاستيكينغ، فإنك لا توقّع وعدًا بالانتظار. بل توقّع معاملة الخروج نفسها مسبقًا، وهي مؤقّتة بوقت محدّد (timelocked)، ومحتفظ بها لدى لجنة العهد قبل أن تتحرّك عملات الـ BTC الخاصة بك أصلًا باتجاه المُدقِّق. لا تقرّر اللجنة ما إذا كنت ستسترد بيتكوينك أم لا. إنها تحتفظ بمعاملةٍ كانت قد حُسمت مسبقًا، وما عليها إلا أن تنتظر الساعة التي حدّدتها التوقيعة.
هذه التفاصيل الواحدة تغيّر حقيقة ما تكونه اللجنة فعلًا. ليست جهةَ حوكمة تتمتّع بسلطة تقديرية. إنها كاتب عدل (موثّق) لقرار اتخذته بالفعل. وظيفتها برمّتها هي رفض أن يكون لديها رأي. في اللحظة التي يبدأ فيها أحد أعضاء العهد بتقييم ما إذا كان خروجك منصفًا، تكون المنظومة قد فشلت بالفعل، لأن العدالة كان من المفترض تسويتها في وقت التوقيع، لا في وقت الاسترداد.
واصلت التفكير في مدى غرابة ذلك خارج نطاق الكود. تقريبًا كل مؤسسة نتعامل معها—بنك، أو مالك عقار، أو محكمة—تحتفظ بالحق في إعادة تفسير حالتك لاحقًا. لجنة بيبلِيون مبنية بحيث لا يكون لديها أي “حالة” لإعادة تفسيرها. لقد جرى إغلاقها بالتوقيع بالفعل.
لا أظن أن ذلك يجعل الخروج المبكر بلا ألم. بل يعني أن الألم تم تسعيره قبل أن تَستيك، وليس تمت المساومة عليه بعد ذلك. بنيةٌ تكون فيها أصعب محادثة قد حدثت بالفعل، بهدوء، في اليوم الذي ضغطت فيه تأكيد.
قضيت بعد ظهرٍ في محاولة الإجابة عن سؤالٍ غريب. إذا كذبت حزمة تجميعٍ (Rollup) عن تاريخها الخاص، فإلى أي مدى عليك أن تحفر لتُمسكها. مع معظم السلاسل، تكون الإجابة الصادقة مُزعزِعة. ستحتاج إلى الوثوق بمن لا يزال يراقب.
ثم تتبّعت كيف يعمل بروتوكول توقيت بابل (Babylon) فعليًا، كتلةً كتلةً، مقابل سلسلة اختبارية (testnet) أتحكم بها. وفي كل فترةٍ من الوقت، يتم إيداع حالة تلك السلسلة في كتلةٍ حقيقية من بيتكوين، ليس على شكل ملخصٍ، ولا كمراجع، بل كالتزامٍ فعلي يتم ختمه بنفس برهان العمل الذي يحمي تاريخًا بقيمة تريليون دولار. بمجرد أن يوجد هذا الإيداع، فإن إعادة كتابة ماضي الـ rollup تعني أولًا إعادة كتابة ماضي بيتكوين. لا أحد يعيد كتابة ماضي بيتكوين. ليس لأن ذلك محظور. بل لأن كلفة المحاولة حضارية.
استمررت في مقارنة ذلك بشيءٍ عاديٍّ بشكلٍ مؤلم. معظم ما نسمّيه ذاكرة—في الزواج أو الصداقة أو صفقة عمل—قابل للتفاوض. يمكن لشخصين أن يتذكّرا نفس السنة بشكل مختلف، ولا يعني ذلك أن أحدهما يكذب تقنيًا. ما تبنيه بابل هو عكس هذا النوع من الذاكرة. نسخة من الماضي تتوقف عن كونها قابلة للتفاوض لحظة أن يقف فوقها ما يكفي من برهان العمل.
وهذا هو ما أظن أن الناس يفوته عندما يسمّون ذلك مجرد عملية إعادة تجميع (restaking) أخرى. لا يتعلق الأمر باستئجار الأمان. بل باستئجار الديمومة (permanence)، واقتراض دفتر الحسابات الوحيد الذي لم يوافق ولو مرة واحدة على نسيان شيء تحت الضغط.
لا أعرف بعد ما إذا كان السوق يُسعّر الديمومة بشكلٍ صحيح. لكني أعلم أنها السلعة الوحيدة هنا التي تتضاعف بمرور الوقت بدلًا من أن تتدهور.
أريد أن أوصف شيئًا يتجاوزه معظم الناس دون أن يلاحظوه، لأن ما يبدو على السطح أشبه ببنية عادية لتشفير العملات الرقمية ليس كذلك.
تتبعت كيف يتصرف مخطط «توقيع قابل للاستخراج لمرة واحدة» الخاص بـ Babylon فعليًا تحت حالة التوقيع المزدوج، لا من خلال قراءته نظريًا، بل عبر محاكاة مخطط واحد مقابل مزوّد نهائية تجريبية. وقّع مرة واحدة بصدق، ولن يكشف التوقيع إلا ما أذنت به.
وقّع مرتين على كتل متعارضة، وستعيد المعادلات نفسها بناء مفتاحك الخاص. ليس عقوبة يفرضها الحوكمة. وليست تصويتًا من المُدققين. إن الخيانة هي التي تستخرج «العقاب» من داخل الكذب.
ظللت أفكر في مدى ندرة وجود شيء كهذا في أي مكان آخر، في الكود أو في الحياة. معظم أنظمة الثقة تكتشفك بعد وقوع الضرر: شاهد، أو دفتر أستاذ، أو درجة سمعة يحافظ عليها شخص آخر. هذا لا يحتاج إلى شاهد. الخيانة متطابقة بنيويًا مع الاعتراف. لا يمكنك أن تغش بهدوء، لأن الهدوء نفسه هو الشيء الوحيد الذي يحفظك آمنًا، وفي اللحظة التي تكسره فيها، تكون قد سلمت الأدلة بنفسك.
هذه هي الفقرة التي تستحق التوقف عندها أطول من الرسم البياني. نقضي جزءًا كبيرًا من حياتنا اليومية في التفاوض على الثقة عبر وعود لا يمكننا التحقق منها: كلمة شريك، أو عذر زميل، أو صديق يقول إن الأمر مختلف هذه المرة. يقوم Babylon بترميز نسخة الثقة الوحيدة التي لا تعتمد على تصديق شخص آخر لك. إنها تعتمد على ألا تحتاج إلى الكذب مرتين.
لا أعتقد أن هذا يجعل BABY آمنًا من التقلبات. بل يجعل نموذج الأمان شيئًا أندر من ميزة. بنية تكون فيها الصدق بلا كلفة، والخيانة باهظة التكلفة—بحكم التصميم، لا بحكم الإلزام.
إنها لا تتحرك. لا تُجري حسابات. فقط تجلس هناك، نقية وخاملة، بينما تتولى كل سلسلة أخرى مهمة اكتشاف طريقة لتحريك رأس المال.
ثم نظرت إلى ما يفعله بابيلون فعليًا، وأدركت أنني كنت أطرح المشكلة بالعكس.
لا يطلب بابيلون من بيتكوين أن تتغير. لا يلتفها ولا ينشئ لها جسرًا، ولا يسلمها إلى وصي يعد بإعادتها.
بل يستخدم برمجة بيتكوين نفسها — فترات الحجز الزمني (timelocks)، ومعاملات فكّ الارتباط الموقعة مسبقًا، وشرط الإقصاء (slashing) المفروض عبر Extractable One-Time Signatures — بحيث إذا قام مزوّد نهائية (finality provider) بالتوقيع المزدوج يومًا ما، فإن إثبات سوء السلوك يُكتب في نفس التشفير الذي يؤمّن العملة نفسها. لا يوجد طرف ثالث موثوق يحتفظ بالمفاتيح.
لا توجد «BTC مُصطنعة» طافية للتظاهر بأنها النسخة الحقيقية.
أعتقد أن هذا ما يخطئ فيه كثير من الناس هنا.
يرون «الستاكينغ» ويظنون أنه مجرد غلاف عائد آخر. لكن ما يحدث فعليًا هو أن نهائية بيتكوين — أصعب وأبطأ وأحفظ أمنًا في الصناعة — يتم تأجيرها لشبكات إثبات الحصة (Proof-of-Stake) التي لم تكن قادرة أصلًا على شراء ذلك النوع من الثقة من تلقاء نفسها.
تحت كل ذلك يجلس BABY — ليس مجرد زينة، بل باعتباره الرمز الذي يقوم المدققون بوضعه كضمان لتشغيل سلسلة Genesis، وخطة التحكم التي تنسق أي مزوّدي نهائية يُوثقون وأيهم يُعرّض للإقصاء.
تتدفق الرسوم إلى مُكدّسي BABY.
تقرر الحوكمة أي الشبكات حتى مؤهلة للحصول على أمن مدعوم ببيتكوين (BTC). إنها أعمال سباكة، لكن سباكة لها عواقب.
لم أتوقع أبدًا أن يصافح تعصب بيتكوين (maximalism) وتركيب إثبات الحصة (Proof-of-Stake composability). بابيلون هو المصافحة.
وبمجرد أن تبدأ مليارات الدولارات من بيتكوين المحلية بالجلوس داخل تلك المصافحة بدلًا من كونها رمزًا مُلتفًا على جسر في مكان ما، أعتقد أن السؤال سيتوقف عن كونه «هل هذا آمن» ويبدأ في أن يصبح «لماذا تؤمن سلسلة PoS بأي طريقة أخرى غير هذا؟»
إجابة نيوتن عن رفض الخدمة (DoS) ليست "انتظر". إنها "بدّل القاعدة." تحققت مما تقوله الإيصال.
على كل نظام امتثال أن يقرر ما الذي يحدث عندما يكون تحت الضغط — عندما يكون المشغّلون مثقلين بالأعباء، أو عندما يهدد اندفاع من الطلبات بتعطيل عملية التقييم. تعطي معظم الأنظمة جوابًا بأن الأداء ينخفض: تصبح الأمور أبطأ، لكن القواعد تظل كما هي. تصف ورقة نيوتن البحثية إجابة مختلفة. يتضمن التخفيف الذي ذكرته لمواجهة ظروف حجب الخدمة (DoS) تشغيل عدة مجموعات من المشغّلين، وإعادة محاولات مُقيّدة بمعدل الطلبات — وسياسة بديلة، مع مثال محدد يتمثل في خفض حدود المعاملات.
كنتُ أتعامل مع "مدققي نيوتن" كفريق واحد ضمن نموذج أمان واحد.
لكن الأمر ليس كذلك، بمجرد أن تسأل: من الذي يدعم كل دور فعليًا.
تُؤمَّن مجموعة تجميع نيوتن (Newton's Keystore rollup)، وهي الجزء الذي يخزن ويحدّث الأذونات، عبر مدقّقين يقومون بالمراهنة على NEWT مباشرةً من خلال إثبات حصة مفوَّض (delegated proof-of-stake).
لكن الورقة البيضاء (litepaper) تصف دورًا منفصلًا: التحقق من السياسات (policy validation)، يتم بواسطة شبكة لا مركزية من المشغّلين مؤمنة بإعادة الرهان على إيثريوم (Ethereum restaking)، وليس عبر مراهنة NEWT على الإطلاق.
هذه هي الجزئية التي لم أكن قد فصلتها من قبل.
"مدققي نيوتن" تبدو كأنها مجموعة واحدة من الأشخاص يؤدّون مهمة واحدة تحت ضمان أمان واحد. لكن في الحقيقة، هناك دورَان مختلفان تمامًا مع داعمين اقتصاديين مختلفين.
تضع مجموعة مدققي الـ rollup NEWT على المحك لتأمين تخزين الأذونات وسلامة التنفيذ.
أما مشغلو السياسات (policy operators)، وهم الذين يقومون بتقييم المعاملات مقابل منطق سياسات Rego أو WASM، فيتم دعمهم عبر ETH مُعاد رهانُه بدلًا من ذلك. أي أنهم يستعيرون أمن المُدقّقين الحاليين لدى إيثريوم، بدلًا من بدء أصلٍ مُرهَن جديد لهذا العمل المحدد.
لذلك، لا يُعد أمان النظام رقمًا واحدًا؛ بل هو مكونان، ولا يتحركان معًا.
group مدققيٍ مُرهَن بـ NEWT لا يكون آمنًا إلا بقدر ما تكون القيمة السوقية لـ NEWT وتوزيعها آمنين. أما مجموعة مشغلي إيثريوم مُعاد رهانُه فتستمد الأمان من قاعدة مدقّقين أكبر بكثير وأكثر رسوخًا بالفعل.
إن تسببت أزمة في سعر NEWT في إضعاف أمن الـ rollup دون أن تمس بالضرورة أمن التحقق من السياسات، فإن فشلًا خاصًا بإعادة الرهان قد لا يلمس جهة الـ rollup أيضًا.
ما لا يتضح من litepaper هو كيفية تفاعل هاتين المجموعتين تشغيليًا: هل يجب أن يتم تأكيد قرار تقييم السياسة من مجموعة المشغّلين المُعاد رهانهم بشكل منفصل من قبل مدققي الـ rollup المرهَنين بـ NEWT؟ أم أنهما يعملان على مسارات مستقلة إلى حد كبير فقط تتغذى في النهاية على نفس الإقرار (attestation).
ما الذي أنا متحفظ عليه: هل يعني تشغيل نموذجَي أمان منفصلين جنبًا إلى جنب خيارًا حقيقيًا لتنويع المخاطر، أم أنه ببساطة يعني أن على المهاجم أن يجد نقطة الضعف الأضعف بينهما بدلًا من كسر نظامٍ موحّد واحد.
يضيف النص التعريفي عبارة واحدة إلى قصة الوسيط. ويغيّر الشكل الكامل للمشكلة.
كنت قد استنتجت بالفعل أن الوسيط في مرحلة الإعداد لدى نيوتن يُحسب من بين المشغّلين الذين يستجيبون بسرعة أكبر، وليس من المجموعة الكاملة المسجّلة من المشغّلين؛ وذلك لأن البوابة تبدأ في إجراء الحساب فور استيفاء حدّ النصاب. ما لم أكتشفه حتى الآن هو ما إذا كانت ميزة السرعة تلك مجرد صدفة ناتجة عن تأخر الشبكة، أم أن البروتوكول نفسه يختار شيئًا من هذا القبيل بالفعل.
يجيب نص نيوتن التعريفي على ذلك مباشرة، في عبارة يسهل تجاوزها دون تمعن: يتم وصف اختيار المشغّلين لمهمة ما بأنه «غير خاضع للإذن للانضمام»، لكن «مُرجّح بالأداء» من حيث الطريقة التي يتم بها فعليًا اختيار المشغّلين ليعملوا على مهمة معينة.
يُصاب الجميع بهوسٍ بالأرقام الدوّارة. 10، 100، 1000.
ولا يُقيم أحدٌ موكبًا احتفاليًا لرقم 9. لكن 9 هو الرقم الذي يجعل الأرقام الدوّارة ممكنة أصلًا، آخر محطة قبل أن تُعاد إعادة العد ثم يبدأ الصعود من جديد.
اسأل أي حارس مرمى عن رقم القميص الذي طارد أحلامه المزعجة، ولن يكون أبدًا 10.
اسأل أي ثقافة عن أي رقم بنَت حوله المعابد والمحظورات، وسيقول نصفهم إنّه 9.
اجمع أرقام 81 أو 999، أو أي رقمٍ مكوَّن من ألف رقم، فإذا كان من مضاعفات 9 فإنه دائمًا يعود إلى 9، كالجاذبية في الحسابات. تسعة أشهر لنموِّ شخصٍ لم يكن موجودًا من قبل.
تسع سنوات لعملية تبادل غيّرت طريقة تعامل العالم مع المال. لا أظن أن 9 هو الرقم الذي يسبق شيئًا أكبر. أظن أن كل ما هو أكبر ليس سوى 9 يتظاهر بأنه نسي من أين جاء.
كنت أفترض باستمرار أن "تم نشره إلى Ethereum" يعني أن سجل الأذونات بالكامل موجود هناك. ليس الأمر كذلك. إنه تحديدًا جذر الحالة.
محفظة Newton (Keystore) عبارة عن Rollup يتعامل مع تخزين الأذونات وتحديثاتها خارج الطبقة الأساسية، لكن البروتوكول ينشر إثباتات الحتمية (finality proofs) وجذور حالة الأذونات إلى Ethereum بدلًا من نشر بيانات الأذونات الكاملة نفسها.
جذر الحالة هو التزام مضغوط، تجزئة واحدة تمثل الحالة الحالية بالكامل، وليس الحالة.
وهذه هي الجزء الذي لم أفصله سابقًا.
نشر جذر إلى Ethereum يعني أنه يمكن لأي شخص التحقق من أن حالة أذونات معينة كانت موجودة في نقطة زمنية محددة، دون أن تقوم Ethereum بتخزين ما الذي تحتويه تلك الحالة فعليًا.
البيانات الأساسية—من يملك zkPermission، وأي وكيل (agent) مُحدَّد ضمن ماذا—تبقى على Rollup محفظة Keystore. ما يتم تثبيته على السلسلة هو بصمتها فقط. وهذا ما يجعل العملية رخيصة بما يكفي للقيام بها بشكل مستمر بدلًا من أن تكون باهظة بشكل يمنع القيام بها.
لكن هذا يعني أيضًا أن الضمان الذي تقدمه Ethereum أضيق مما يبدو.
يمكن لـ Ethereum تأكيد أن جذر الحالة الذي تم ادعاؤه هو الجذر الذي تم الالتزام به. لكنها لا تستطيع أن تخبرك بما بداخل ذلك الجذر ما لم تكن لديك بيانات Keystore الأساسية بالفعل لتقارن الجذر بها.
تتطلب عملية التحقق قطعتين معًا: المرساة (الـ anchor) والبيانات التي تم تثبيت المرساة عليها، وليس المرساة وحدها.
لذلك فإن "مرساة إلى Ethereum" ليست الادعاء نفسه مثل "قابلة للقراءة من Ethereum". إنها التزام يمكنك تدقيقه مقابل بيانات يتعين عليك الحصول عليها من الـ rollup نفسه.
تؤكد وثائق Newton هذه الممارسة، لكنها لا تحدد مدى تكرار نشر الجذور، ولا توضح شكل مسار التحقق الحقيقي للمستخدم إذا أراد التحقق من حالة أذوناته مقابل الجذر المُثبت مباشرةً.
ما الذي أتعامل معه: هل تصميم تثبيت جذر الحالة يهدف إلى أن يتحقق أي شخص بشكل مستقل، أم بشكل رئيسي إلى أن يثبت البروتوكول سلامته، بينما يظل مسار التحقق الفردي غير مُنشأ حتى الآن.
الحسابات على وسـيط نيوتن. الكلمة كانت تحمل أكثر من مجرد الرقم.
تعمل مرحلة التحضير لدى نيوتن على النحو التالي: يقوم المُشغِّلون بشكل مستقل بجلب البيانات الخارجية التي تحتاجها السياسة، ثم يبلّغون عنها دون توقيع، وبمجرد وصول عدد كافٍ من الاستجابات لتلبية النصاب، يقوم البوّابة بما لديها، ويرمي أعلى وأدنى القيم، ثم يحسب الوسيط. يصبح ذلك الوسيط هو الرقم الكنسي الوحيد الذي يقارن به كل مُشغِّل السياسة طوال مدة المهمة.
"الوسيط" يقوم بالكثير من التطمين في تلك الجملة. إنه الكلمة التي تلجأ إليها عندما تريد أن تقول إن قيمةً ما لا يمكن جرّها حولها فاعلٌ واحد سيّئ.
المفاضلة المزدوجة في Newton يفترض أنها تثبت أن التطبيق تحقّق من موافقة المستخدم. تحققت من طريقة التشفير
عندما يتم إنشاء مهمة على "Newton"، يجب أن يقوم طرفان بالتوقيع بالموافقة قبل أن تمضي البوابة قدماً: المستخدم، والتطبيق الذي يتصرف نيابةً عنه. يصفُ المستند ذلك على أنه "سلسلة" — من المفترض أن تعني توقيع التطبيق شيئاً محدداً: "لقد رأينا موافقة المستخدم، وتأكدنا منها، ثم أضفنا موافقتنا فقط بعد ذلك." أردت أن أعرف ما إذا كان إنشاء التوقيع الثاني الفعلي يُلزم ترتيب الأحداث هذا، أم أنه يكتفي بالادعاء بأن ذلك حدث.
إليك ما تم وصفه. يقوم التوقيعان بالتحقق مقابل الرسالة الأساسية نفسها — وهي مُلخص (digest) مُبني من عميل السياسة (policy client) وهاش النية (intent hash)، مع طيّ مراجع البيانات ضمن ذلك. يقوم المستخدم بالتوقيع عليها. كما يقوم التطبيق بالتوقيع عليها أيضاً. تقبل البوابة المهمة بمجرد أن يتحقق كل توقيع من صحة ما يقابله مقابل مفاتيحه العامة. والغاية المعلنة من توقيع التطبيق هي الشهادة بأنه استلم موافقة المستخدم وتحقق منها قبل إضافة موافقته الخاصة.
بصراحة لم أتوقع أن تكون تدويرات المشغّلِين هي الجزء المثير للاهتمام من تصميم نيوتن، لكنها كذلك.
تذكر وثائق خصوصية نيوتن شيئًا يسهل تجاهله: بروتوكولات إعادة المشاركة، وبالتحديد المشاركة السرّية الاستباقية، التي تتيح للمشغّلِين تدوير أنفسهم دون تغيير المفتاح العام المُجمَّع. حفل الـ DKG الذي يوزّع مفتاحًا خاصًا عتبيًا لا يعمل إلا عندما يتغير بالفعل مجموعة المشغّلِين، ولا يؤثر ذلك على تأخر تقييم المهام يومًا بعد يوم.
هذه هي الفكرة التي لم أكن قد فصلتها من قبل.
عادةً، إذا قمت بتدوير المشاركين في نظام عتبي، فستتوقع أن تتغير إعدادات المفاتيح كاملةً مع تغيّرهم، وبالتالي يصبح أي شيء مُشفّر باستخدام الإعداد القديم غير قابل للقراءة بمجرد انتقال مجموعة المشغّلِين. تتجنب إعادة المشاركة ذلك.
يمكن للمشغّلِين الدخول والخروج بينما يظل المفتاح العام المُجمَّع ثابتًا، وهذا يعني أن البيانات المُشفّرة لمجموعة المشغّلِين القديمة تظل قابلة للفك بواسطة المجموعة الجديدة.
هذه ضمانية أكثر هدوءًا من عتبات النصاب (quorum) أو تجميع BLS، لكنها قد تهم أكثر من الناحية التشغيلية. نظام يؤدي إلى كسر البيانات المُشفّرة سابقًا عند تعاقب المشغّلِين هو نظام يعاقب لامركزية نفسه مع مرور الوقت؛ لا يمكن للكيانات الجديدة أن تدخل دون أن تُصبح السجلات السابقة يتيمة (orphaning). تعني إعادة المشاركة أن مجموعة المشغّلِين يمكن أن تتطور دون أن يفقد المستخدمون الوصول إلى ما كانوا قد قاموا بتأمينه بالفعل ضمن الإعداد القديم.
ما لا توضحُه وثائق نيوتن صراحةً هو مدى تكرار الحاجة إلى تشغيل إعادة المشاركة فعليًا مع نمو مجموعة المُدقِّقين، أو ماذا يحدث للبيانات إذا فشل حفل إعادة المشاركة نفسه في منتصف الطريق.
ما أنا عالقٌ معه: هل تجعل إعادة المشاركة الاستباقية لامركزية المشغّلِين تكلفةً مجانية مع مرور الوقت، أم أنها تنقل نقطة الهشاشة فقط إلى حفل إعادة المشاركة نفسه.
لقد كنت أنوي إلقاء نظرة على هذا منذ أيام: كيف يتوافق مُحقِّقو (validators) نيوتن بالفعل على تأكيد (attestation)، لأن "quorum" وحدها لا تشرح الآليات.
يستخدم نيوتن توقيعات BLS للتأكُّد، والتوافق لا يُبنى حول مُجمّع/ملخّص digest واحد، بل حول اثنين.
يوقّع المُتحقِّقون بشكل منفصل على مُلخّص السياسة (policy digest) ومُلخّص التنفيذ (execution digest) لنفس النية/المقصد.
هذا الانقسام يعني أن الاتفاق ليس "نعم، وافق على هذا"، بل هو نعمّان مستقلّان: تصويت يؤكد أن منطق السياسة قد تم الوفاء به، وتصويت يؤكد أن بيانات الاستدعاء الفعلية (call data) التي يتم تنفيذها تتطابق مع ما تم تأكيده/الإشعار به (attested).
وهذا هو الجزء الذي لم أفصله من قبل.
نظام مُلخّص واحد (single-digest) يتيح لتوقيع واحد أن يشهد على النية كاملة في آنٍ واحد، بحيث تكون السياسة والتنفيذ مُدمجين معًا. إذا تم العبث بنصفٍ ما بعد التوقيع، فلن تكون هناك طريقة لعزل أي جزء فشل.
أما وجود مُلخّصين (two digests)، فيجعل توقيع المُتحقِّق قابلًا للنقض/الإبطال مقابل كل نصف على حدة.
يمكنك إثبات أن السياسة كانت صحيحة بينما كان مُلخّص التنفيذ مُفسدًا، أو العكس، بدلًا من توقيع واحد يغطي ادعاءً مدمجًا لا يمكنك تفكيكه.
هذا ضمان أقوى بشكل ملموس من "اتفق المشغّلون". لأن المشغّلين يتفقون على شيئين منفصلين، ويتم تجميعهما عبر BLS بحيث لا يزال الشبكة تتحقق من توقيع واحد مُجمّع على السلسلة (on-chain).
ما لا توضحه وثائق نيوتن هو ما الذي يحدث تشغيليًا عندما يتعارض المُلخّصان لشخص مُتحقِّق واحد: هل يتم رفضه فورًا، أم يتم وضع علامة عليه وحلّه عبر منطق احتياطي (fallback)؟
وهذا هو السؤال المفتوح الذي ما زلت أبحث فيه: هل يحمي الانقسام إلى مُلخّصين من العبث الجزئي، أم أنه فقط ينقل مكان ظهور الغموض.
تشفير نـيوتن يربط شيئَين تشفيريًا. تحقّقت مما إذا كان يمكن أن يفعل ذلك طرفٌ ثالثٌ، موجودٌ بالضبط على اليمين
يقدّم "طبقة الخصوصية" من نيوتن ادعاءً أمنيًا دقيقًا: عندما يتم تشفير البيانات الخاصة وتحميلها، يتم ربط نصّ التشفير تشفيريًا بشكلٍ محدد بسياسة معينة وسلسلة معينة. حاول إعادة تشغيل الظرف المُشفّر نفسه في مكان آخر — سياسة مختلفة، سلسلة مختلفة — وتفشل عملية التحقق من المصادقة تمامًا. يتم رفض فك التشفير. أردت أن أرى بالضبط ما الذي يغطيه "مرتبط بـ"، وإلى جانب ذلك، ما الذي لا يغطيه.
هذه هي الصيغة الفعلية. يتم حساب البيانات الإضافية المُصادقة المرفقة بالتشفير اعتمادًا على مخرَجين اثنين بالضبط: عميل السياسة ومعرّف السلسلة، يتم تجميعهما عبر التجزئة (هاش).
نيوتن تُسمي اثنين من مفاتيحها «مستقلين». تتبّعت السلسلة التي تربطهما بهدوء
تقدم نيوتن وعدًا أمنيًا محددًا بشأن نظام فك التشفير بالعتبة لديها: إن مفتاح التوقيع الخاص بالمشغّل على أساس يومي ومجموعته من مفتاح فك التشفير الخاص في الشبكة ليست بينهما علاقة من الناحية التشفيرية. إذا تم اختراق أحدهما، تقول الوثائق، فإن الآخر يظل آمنًا. أردت أن أعرف ما إذا كان هذا الاستقلال قائمًا طوال الطريق، أم أنه قائم جزئيًا فقط في بعض الأجزاء.
إليك البنية الفعلية. يتم إنتاج مفتاح فك التشفير بعتبة نيوتن مرة واحدة فقط، عبر مراسم تفاعلية بين المشغّلين، ثم يتم تقسيمه إلى حصص — لا يملك أي طرف واحد، ولا حتى البوابة، كامل الشيء. يتطلب إعادة بنائه نصابًا من المشغّلين يتعاونون. إن هذا السر هو في حد ذاته مسألة رياضية مستقلة، مُولَّد بصورة مستقلة عن المفاتيح الموجودة لأي مشغّل. وفي هذه النقطة تحديدًا، فإن دعوى الاستقلال محكمة بلا أي ثغرات: لا يمكنك استنتاج حصة شخص ما من السرّ الخاص بالعتبة من مفتاح توقيعه العادي، لأن الأمرين لم يكونا مرتبطين رياضيًا من الأساس.
استيقظت بالفعل أفكر في هذا الأمر، لذا أول شيء غدًا أريد أن أبحث في أين يعيش فعليًا «حالة الإذن» الخاصة بـ Newton بمجرد الانتهاء منها، لأن عبارة «إنها على rollup» ليست إجابة كاملة.
إن Keystore عبارة عن rollup، وهذا يعني أن التنفيذ والتحديثات تحدث خارج الطبقة الأساسية من أجل التكلفة والسرعة. لكن تصميم Newton أيضًا ينشر إثباتات الإنهاء وجذور حالة الإذن إلى Ethereum.
هذا ادعاء مختلف عن «إن الـ rollup آمن». يعني أن الحالة الفعلية لمن لديه الصلاحية للقيام بأي شيء يتم تثبيتها على L1، وليس مجرد معالجتها هناك من حين لآخر.
وهذا الجزء هو ما لم أفصل بينه وبين غيره من قبل.
إن كان الـ rollup ينفّذ فقط بشكل خارج السلسلة (off-chain)، فهو يثق في جهاز ترتيب الرسائل (sequencer) ومجموعة المُدقِّقين الخاصة به كمرجع للحقيقة.
أما الـ rollup الذي ينشر جذور الحالة إلى Ethereum، فهذا يعني أنه يمكن لأي شخص التحقق من الجذر المُلتزم به مقابل L1 والتحقق من أن حالة الإذن كانت كما هي في تلك اللحظة، دون الحاجة إلى الوثوق بالمشغّلين الداخليين للـ rollup في تقريرها بأمانة.
الـ rollup يتعامل مع الإنتاجية. وEthereum تتعامل مع «التثبيت» الذي لا يتحكم به أحد.
لذلك سؤال الأمان الحقيقي ليس «هل الـ Keystore سريع؟»، بل «كم مرة يتم تثبيت الحالة (anchored)، وماذا يمكن التحقق منه من الجذر وحده مقارنة بما يزال يتطلب الوثوق بالحالة الداخلية للـ rollup بين عمليتي التثبيت؟»
تؤكد وثائق Newton أن جذور الحالة يتم نشرها إلى Ethereum من أجل الإنهاء النهائي (finality)، لكنها لا توضح وتيرة التثبيت أو ما الذي يبدو عليه تعرّض المستخدم الفعلي في النافذة بين الجذر المنشور والآخر، إذا حدث خطأ ما في الـ rollup خلال تلك النافذة.
هذا ما أريد معرفته غدًا: هل الفجوة بين عمليّات التثبيت صغيرة بما يكفي لتكون مجرد أمر نظري، أم أنها نافذة حقيقية ما زال فيها الـ Keystore يطلب مني أن أثق به قبل أن تتمكن Ethereum من التحقق من عمله؟
لم أستطع التوقف عن التفكير في هذا أثناء نزهتي في وقت سابق، لذا غصت أخيرًا في كيفية تحقق نيوتن فعليًا من أن الوكيل قد فعل ما يدّعيه—واتضح أنها عمليتان برهانيتان مكدستان فوق بعض، وليستا واحدة.
التشغيل نفسه يتم داخل بيئة تنفيذ موثوقة، وهي TEE. تمنح هذه البيئة شهادة/إثبات صحة تفيد بأن الشفرة تعمل داخل بيئة مغلقة ومحكمة، دون عبث، وتنتج أي مخرجات تكون قد أنتجتها.
لكن شهادة TEE وحدها هي ادعاء على مستوى الجهاز. فهي تقول: "هذه العتاد يشهد بأن هذا تم تنفيذه بشكل صحيح"—وما زال ذلك يتطلب الثقة في ذلك العتاد المحدد وفي الشركة المصنّعة له.
وهذه هي النقطة التي لم أكن قد فصلتها من قبل.
نيوتن لا يكتفي بشهادة TEE. فهو يولّد برهانًا ذا معرفة-صفرية (Zero-Knowledge) لهذه الشهادة، ويتحقق من سلامة ذلك البرهان عبر عقود بروتوكول على السلسلة (on-chain). لذا سلسلة الثقة ليست "ثق بالعتاد". بل هي: "تحقق من برهانٍ حول ادعاء العتاد على السلسلة، دون الحاجة إلى الثقة تمامًا في مورد العتاد."
هذا ضمان مختلف عن أيّ من الجزأين لوحده. وجود TEE بدون طبقة ZK يعني أنني أثق في إنتل أو أي شركة مصنّعة للرقاقة قامت ببناء الـ enclaves. أما وجود ZKP بدون طبقة TEE فلا يوجد ما يرسّيه فعليًا على أرض الواقع لما تم تنفيذه.
عند تكديسهما معًا، فإن برهان ZK يتحقق من ادعاء يتعلق بتنفيذٍ محكم على العتاد، لذا لا يحتاج فحص السلسلة إلى أخذ كلام العتاد بحكم الأمر الواقع، ولا إلى تخمين ما هي الشفرة التي تم تشغيلها.
ما لا أستطيع تحديده من الوثائق هو أين تقع حدود الثقة الفعلية اليوم.
هل طبقة ZK تتحقق تشفيرياً من شهادة TEE كاملة، أم أنها تتحقق حاليًا من إشارة أخفّ وزنًا، بينما أعمال الإثبات الأكثر صعوبة الخاصة بـ zkTEE ما زالت على خارطة الطريق؟ الوثائق تصف وجود الجزأين، لكنها لا توضح مدى إحكام ربطهما معًا في هذه المرحلة من التطوير.
وهذا ما أنا عالق معه: هل هذه بالفعل سلسلة إثبات مستقلة عن العتاد، أم أنها نظام TEE مع طبقة معرفة-صفرية ملفوفة حوله في الوقت الحالي، بينما التحقق الأكثر صرامة لا يزال يلحق الركب.
نيوتن يتخطى فحص الاتساق الذي لا يجرؤ أنظمة الإجماع على تخطيه. وعلى ماذا يراهن؟
تقوم معظم الأنظمة التي تُلزم أطرافًا مستقلة متعددة بالاتفاق على شيء ما بإدراج خطوة بين "يقوم كل طرف بحساب إجابة" و"يتم دمج الإجابات": جولةٌ يقوم فيها الجميع بمقارنة الملاحظات قبل الالتزام بأي شيء. تقول وثائق نيوتن إن خطوة التقييم لديها تتخطى ذلك تمامًا. يحدث تقييم السياسة والتوقيع كإجراء ذري واحد، دون جولة منفصلة للتحقق من أن المشغّلين يتفقون فعليًا قبل أن تخرج تواقيعهم.
كنت أريد أن أرى بالضبط ما الذي يجب أن يكون صحيحًا لكي يكون هذا الاختصار آمنًا، وماذا يحدث إذا لم يكن كذلك.