@BabylonLabs_io كنت أظن أنه بعد انتهاء أولوية/فترة رهاني “Babylon” من فكّ الربط (unbonding)، يصبح الـBTC عمليًا بالفعل بين يدي المُراهن.
ثم قرأت ما الذي تتطلبه فعليًا معاملة السحب (withdrawal).
يمتلك “Babylon” دورة رهان (staking lifecycle) من أربعة أنواع معاملات: الرهان (staking)، فكّ الربط (unbonding)، الإخضاع/الاقتطاع (slashing)، ثم السحب (withdrawal). فكّ الربط ينهي فترة القفل. لا يقوم بنقل العملات إلى أي مكان.
هذه هي الخطوة التي كدت أتجاوزها، وبصراحة أعيدت قراءتها مرتين للتأكد. $BANK
معاملة السحب هي معاملة منفصلة بذاتها. شرطها الوحيد هو أن أحد مدخلاتها يشير إلى مخرجات رهان/فكّ ربط/اقتطاع (staking أو unbonding أو slashing) تكون قد انتهت صلاحية قفلها الزمني (timelock) بالفعل.
لذلك تبقى الأموال هناك، غير مُقفلَة، إلى أن يقوم شخص ما فعلًا ببث (broadcast) عملية السحب.
لا شيء يجبر حدوث ذلك تلقائيًا—لا “Keeper”، ولا مسح تلقائي (auto-sweep)، ولا أحد يقوم بسحبها نيابةً عنك.
على المُراهن أن يبني ويرسل المعاملة الرابعة تلك حتى “يُحوَّل” “unbonded” إلى “spendable” (قابل للإنفاق). حالتان، معاملتان، ومعظم الشروحات تتوقف فقط بعد الأولى.
لا أقول إن ذلك عيب. فقط خطوة غير مكتملة لا أحد يتعب في ذكرها.
هل يجعل تخطي خطوة السحب في أغلب الشروحات الناس يظنون أن الـBTC يتحرك من تلقاء نفسه؟ أم أن كلمة “unbonded” مُفترَض أنها تُفهم مسبقًا على أنها تعني شيئًا يختلف—شيئًا أقرب من ذلك؟ $BABY
هل “unbonded” فعلًا هو الشيء نفسه مثل “withdrawn”؟
هل تعني “unbonded” أن الـBTC الخاص بك قد تحرك بالفعل؟
$BICO كنت أبحث عن عدد حالي مُجمّع لشبكات Bitcoin Supercharged Networks — @BabylonLabs_io $BABY — ولم أجد شيئًا.
ما الذي ظهر بدلًا من ذلك: قامت Union بالتزام وجلب 25 مليون BABY لتسريع عملية التكامل. قامت BOB بالتزام في وقت سابق، وهي تجلس على أكثر من 400 مليون دولار في TVL، وبما يقارب 44% من ذلك مُبني بالفعل على Babylon LSTs. جاء الاثنان مع إعلانات صريحة خاصة بهما. وبعيدًا عن هذين، تذكر مواد Lombard الخاصة بها Corn وPell Network كأماكن يخطط فيها لخطة Finality Providers لتخصيص التفويض — إشارة أضعف من التزام رسمي من BSN، لكنها مع ذلك حقيقية. تصف مستندات Babylon المرحلة 3 بأنها المرحلة التي يتم فيها «تكامل L1s وL2s مع البروتوكول» — بصيغة الجمع، مستمرّة، دون إرفاق رقم. $VIC
التزامان مؤكدان من BSN. اثنان أخريان يُرجّح أنهما في الطريق. لا يوجد إجمالي رسمي جارٍ.
تحققت مما هو مُؤكد بالفعل مقابل ما هو مجرد مُستنتج. توجد أرقام أقدم متداولة — 25 ملتزمًا، من مراجعة لعام 2024 — أصبحت قديمة بما يكفي الآن لدرجة أنني لن أكررها باعتبارها الحالية. وفي الوقت نفسه، تنشر Babylon رقمًا مجاورًا واحدًا بوضوح: أكثر من 250 مزوّد Finality Providers نشطين حاليًا. #baby
هذه الفجوة تهم أكثر مما يبدو. آلية الانكماش الخاصة بـ Babylon، حرق مزاد مكافآت BSN، تعتمد مباشرة على عدد هذه الشبكات التي هي فعليًا تعمل وتُنتج حجمًا للمزادات. أن لا يقوم أحد بنشر رقم BSN الحالي لا يعني فقط فجوة معلومات عابرة — بل هو متغير إدخالي لآلية tokenomics لا يمكنني التحقق منها من الخارج، حتى مع بقاء رقم مزوّد Finality Providers المجاور هناك، دقيقًا ومنشورًا.
هل يحدث نمو حقيقي بهدوء، أم أن هناك مقياسًا لم يهتم أحد بعد بجعله قابلاً للمتابعة؟ ما زلت أتفكر في ذلك.
@BabylonLabs_io قضيت الصباح في التنقيب عن آثار اختراق Kelp DAO، وكانت استجابة Babylon نقطة بيانات أكثر إثارة للاهتمام من الاختراق نفسه.
في 18 أبريل، قام مهاجمون مرتبطون بمجموعة Lazarus التابعة لكوريا الشمالية بتزوير رسالة جسر LayerZero وإصدار 116,500 توكن rsETH غير مدعوم — ما يعادل تقريبًا 292 مليون دولار. وبحلول وقت لاحق، انتهى المطاف بحوالي 107,000 من ذلك الـ rsETH كضمان مودَع على Aave، تاركًا البروتوكول مع ديون معدومة مقدَّرة بين 177 و246 مليون دولار. وانخفض إجمالي القيمة المقفلة في Aave من 26 مليار دولار إلى 14 مليار دولار في أعقاب ذلك.
جهود التعافي، التي سُمّيت "DeFi United"، جمعت أكثر من 317 مليون دولار من ETH من أنحاء الصناعة، بما في ذلك Consensys وAvalanche Foundation وLido وEther.fi. وبحلول منتصف مايو، تم حرق rsETH الخاصة بالمستغل على Arbitrum وتم إلغاء تعليق عمليات السحب بالكامل عبر أسواق Aave — وتم احتواء الأزمة خلال نحو شهر. $BLESS
مساهمة مؤسسة Babylon: 3 ملايين USDT. تم تقسيمها على وجه التحديد — 2 مليون إلى Aave V3، و1 مليون إلى Aave V4.
احسب الأمور على هذا التقسيم. لم ترسل Babylon مجرد شيك واحد إلى "Aave". بل ضخت ضعف ذلك المبلغ في النسخة الأقدم V3، والتي كانت تعمل بالفعل، مقارنةً بما خصصته لـ V4 — وهي النسخة نفسها التي كان تكامل TBV الخاص ببابلون على وشك البناء عليها. وهذه ليست إشارة محايدة؛ إنها رأس مال يتجه إلى نفس النظام البيئي الذي كانت Babylon بحاجة إلى صحته ليصبح منتجها مؤثرًا.
إليك الجزء الذي يستحق التأمل فيه، حتى بعد أشهر. لم تكن Babylon تُصلح اختراقها بنفسها. بل كانت Babylon تدفع في أزمة شخص آخر، على بروتوكول لا تتحكم فيه، لأن استقراره كان بالفعل يتحمل وزن خارطة طريقها.
تسميها فرق التسويق دعمًا لهذا النظام البيئي. لكن في الواقع تبدو أقرب إلى التأمين — حماية لصحة المنصة التي يعتمد عليها منتجك المستقبلي.
اصطفاف ذكي في التموضع، أم اعتراف صامت بحجم اعتماد نجاح TBV على Aave تحديدًا؟
@BabylonLabs_io ظللت عالقًا في قرار تصميم صغير واحد في ملف Babylon's TBV مع Aave DAO — اختيار عدم جعل vaultBTC قابلاً للتحويل أبدًا.
يحتاج البروتوكول إلى طريقة لتمثيل بيتكوينٍ مُقيّد داخل نظام الاقتراض، لكنه لا يحوّل هذا التمثيل إلى شيء يمكن للناس تمريره بحرية. يتم إصدار vaultBTC بنسبة 1:1 مقابل مخزن (vault)، مع تقييده بحيث يتفاعل فقط مع عقود Hub وSpoke وadapter التابعة لـ Aave نفسها. لا مكان آخر. $BEAT
شعرت بأن هذا كان مقصودًا. وليس هذا اختيار Babylon الأول من نوعه. قبل أشهر، كانت نسخة تجريبية مُختبرة على Morpho تعمل بشكل مختلف على مستوى الآلية؛ فقد بُنيت كأصل غير قابل للاستبدال بدلًا من أن تكون ERC-20، وبسيولة لا تتجاوز 14 دولارًا في USDC. وصف المؤسس المشارك David Tse ذلك بأنه "أصل غير قابل للاستبدال وسيط يتصل بالمخزن (vault) مع Morpho". آلية مختلفة، وغريزة واحدة: ألا تسمح للتمثيل بأن يتجاوز التكامل الوحيد الذي صُمم من أجله.
إذا أصبح vaultBTC قابلًا للتداول، فسيظهر سوق ثانٍ حول تمثيل الضمانات نفسه، منفصلًا عن بيتكوين الضامن. هذا هو السبب الحقيقي وراء بقائه غير قابل للتحويل — فهو يمنع الضمان من أن يأخذ حياة مستقلة.
في الواقع، أنا أقدّر هذا التحفّظ. ليست كل البروتوكولات بحاجة إلى رمز تداولي إضافي، حتى لو كان ذلك على حساب المرونة.
تخيّل Unified Margin لدى GRVT — حيث يحقّق إيداع واحد عائدًا عبر Aave بالفعل، ويدعم الصفقات، ويحتفظ بالتعرّض الفوري (spot exposure) في الوقت نفسه — محاولًا استيعاب vaultBTC بالطريقة نفسها. لم يستطع. حتى منصة كانت متصلة بالفعل بـ Aave ستكون بحاجة إلى مخزنها المنفصل الخاص بها. لم يُجعل قابلًا للتحويل، عن قصد. $GRVT
أحيانًا يكون تقييد ما يمكن للمستخدمين فعله هو بالضبط ما يحمي افتراضات البروتوكول.
هل عدم القابلية للتحويل هو التصميم الأكثر نظافة، أم أنه يضحّي بما يكفي كبيرًا جدًا لصالح المستقبل القابل للتأليف (composable) الذي يبنيه DeFi؟
@BabylonLabs_io ظللت أعتقد أن "Babylon تتكامل مع Aave" تعني نقطة اتصال واحدة. إنها في الواقع جُزئان (Spokes) مخصّصان لغرضين مختلفين يجلسان على بنية Aave الخاصة بنموذج Hub-and-Spoke.
أولها هو Babylon Core Lending Spoke. يحصل إيداع الـ BTC الأصلي الخاص بالمودِع، وهو مُقيّد داخل Taproot UTXO، على تمثيلٍ على Ethereum باسم vaultBTC، ويُستخدم للاقتراض مقابل أصول مثل العملات المستقرة. Aave v4 لا يقبل كضمان إلا ERC-20، لذلك يوجد vaultBTC فقط لسد هذه الفجوة — فهو مُصدَر بنسبة واحدٍ إلى واحد مقابل الـ vault، ومقيّد بحيث يتفاعل فقط مع العقود الخاصة بـ Aave.
ثانيها هو BTC Vault Swap Spoke، مُصمَّم لحل مشكلة واحدة ضيقة: تسوية البيتكوين بطيئة. لا يمكن للمراكز المُصادَرة أن تنتظر عدة أيام لعملية استرداد BTC الأصلي داخل نافذة Aave المعتادة. لذا تُستبدَل الـ vaults المصادَرة فورًا بـ WBTC، ما يتيح للمُصفيّين عديمي الإذن تسوية الدين مباشرةً، بينما يقوم مجموعة منفصلة من المُراجحين باسترداد الـ BTC الفعلي لاحقًا، وفق جدول البيتكوين الخاص.
جناحان، وظيفة واحدة مقسومة إلى نصفين.
كان عليّ أن أُتبِع السبب وراء هذا الشكل تحديدًا. نموذج Hub-and-Spoke الخاص بـ Aave يعزل مخاطر كل Spoke عن بقية الـ Hub — فتعطل Spoke الخاص بضمان BTC لا يطال أسواق Aave غير المرتبطة. ويُبقي Aave DAO الحدود والمعايير تحت سيطرته الخاصة بغض النظر عن ذلك.
هذا العزل هو مكسب التصميم الحقيقي، وهو الإجابة الفعلية على كيفية عمل هذا التكامل: أحد الـ Spokes يتولى الاقتراض مقابل BTC، والآخر يتولى تأخير تسوية البيتكوين بشكل منفصل، بحيث لا يحتاج أيّ من المشكلتين إلى انتظار الأخرى.
هل يجعل عزل المخاطر بدقة بهذا الشكل التكامل أكثر أمانًا، أم أن تقسيم التسوية إلى مسارين يخلق شيئين يمكن أن يحدث في كل واحد منهما خطأ بدلًا من واحد؟
تعمل سلسلة Babylon Genesis عبر ثمانية وحدات أساسية منفصلة — ومعظم الشروحات تذكر وحدتين فقط
@BabylonLabs_io كنت أظن أن "Bitcoin plus Cosmos" كان وصفًا كافيًا تمامًا لماهية Babylon Genesis.
ثم نظرت إلى ما بُنيت منه السلسلة فعليًا تحت تلك العبارة.
تعمل Babylon Genesis عبر ثمانية وحدات أساسية: Epoching (التأطير بالأزمنة)، Checkpointing (نقاط التحقق)، BTC Checkpointing (نقاط التحقق الخاصة بالـBTC)، BTC Light Client (العميل الخفيف للـBTC)، Zone Concierge (منسق المنطقة)، BTC Staking (الاستيكينغ الخاص بالـBTC)، Finality (الحسم النهائي)، وRewards (المكافآت). كل وحدة تحمل جزءًا مميزًا مما يجعل السلسلة تعمل.
البروتوكول ليس مجرد شيئين متراصّين فوق بعض.
إن عبارة "Bitcoin plus Cosmos" تُسمّي أصل أمان وإطارًا أساسيًا. لكنها لا تقول شيئًا عن من يتولى تتبع حالة الاستيكينغ، أو من ينجز/يُحسم الكتل، أو من يُثبّت نقاط التحقق مرةً أخرى على Bitcoin، أو من يقوم بتوجيه المكافآت بمجرد أن تكون كل الطبقات التي فوقها قد عملت بشكل صحيح.
اثنتان من بين الثمانية سهل الخلط بينهما من الاسم وحده. يتولى BTC Staking التفويض ودورة حياة الاستيكينغ. تقوم Finality بمعالجة أصوات EOTS من مقدمي الخدمة. تنسّق Zone Concierge البيانات التي تُرسَل إلى BSNs متصلة. يقوم Epoching بتحديد كيفية تقدم Babylon Genesis داخليًا ضمن دورات، بينما يقوم Checkpointing بربط تلك الدورات بـBitcoin عبر وحدتَي BTC Checkpointing وBTC Light Client. تجيء Rewards في النهاية، لتدفع فقط ما تكون الوحدات التي فوقها قد كسبته بالفعل.
لكن مجرد تسمية ثمانية وحدات لا يعني أن نقاط الفشل الثمانية تحمل وزنًا متساويًا.
فأكثر من وحدة تعتمد على أن تنجز الأخرى عملها أولًا؛ ولا يمكن توجيه مكافأة إلا بعد أن تكون وحدات الاستيكينغ والحسم والربط (Anchoring) قد أدت دورها بالفعل دون خطأ.
لذلك فإن اختزال الأمر إلى كلمتين ليس خطأً بالمعنى الحرفي، لكنه يخفي تسلسلًا لا يوضح عدد الأجزاء؛ فعدة وحدات يجب أن تنجح قبل أن يتحول استيك واحد من الـBTC إلى نتيجة نهائية محسومة ومكافأة.
هل يوضح تسمية جميع الوحدات الثمانية المزيد عن أماكن فشل Babylon المحتملة، أم أن الخطر الحقيقي يظل متركزًا في واحدة أو اثنتين منها فقط؟
ماذا يحدث إذا أخطأ مُرحّلو بابل خارج السلسلة (Offchain Relayers)
@BabylonLabs_io كنت أظن سابقًا أن كلمة "غير مُقيّد" تعني أن نزاهة أحد لا يهم فعليًا، وأن النظام يعمل بغضّ النظر عن من يظهر.
ثم وجدت السطر المحدّد في وثائق بابل الخاصة بالمعمارية الذي يعقّد ذلك.
تُشغّل بابل مجموعة يقظة ذاتية التسيير (Submitter وReporter وMonitor) تقوم بتمرير البيانات بين بيتكوين وبابل جنيسس (Babylon Genesis). يمكن لأي شخص تشغيل هذا البرمجيات. لا يلزم إذن، ولا توجد جهة حاكمة تقرر من الذي يتأهل.
لكن وثائق المعمارية نفسها تنص بوضوح أن التشغيل الآمن يتطلب وجود مشغل صادق واحد على الأقل لكل برنامج، وليس أغلبية أو نصابًا، بل واحدًا لكل دور.
مم.
لأن هذا ادعاء مختلف بشكل ملحوظ عن "بدون ثقة" (trustless). المشاركة غير المُقيّدة وضمان وجود مشغل صادق ليستا الشيء نفسه؛ إحداهما تتعلق بمن يُسمح له بتشغيل البرمجيات، والأخرى تتعلق بما إذا كان هناك فعلًا شخصٌ موثوق.
الوظيفة المحددة لـ Monitor هي تنفيذ عمليات الإقصاء (slashing) عندما يصوّت مزوّرًا مزوّدُ خدمة التحقق النهائي (finality provider) مرتين، أو استخراج مفتاحه إذا فشل المسار الآلي. لكن هذا لا ينجح إلا إذا كان مشغّل Monitor متصلًا بالفعل ويُراقب الأمر؛ فهو يخبرك بعد وقوع الأمر، لا قبله. #baby
دوّنت ذلك السطر وتركته مفتوحًا على الشاشة الثانية لبعض الوقت.
إذا فشل كل مشغلي دور معيّن أو انقطعوا جميعًا عن الاتصال في الوقت نفسه، فلن توجد أي آلية بديلة موصوفة في أي مكان داخل الوثيقة نفسها غير "سيُرفع الإنذار". ما زال اكتشاف المشكلة يفترض وجود شخص صادق يراقب ليرى الإنذار أصلًا.
لا أقول إن هذا يجعل بابل هشّة. تميل الأنظمة الموزعة غالبًا إلى افتراض وجود مشارك صادق في مكان ما، وهذه واحدة فقط تم تسميتها صراحة بدلًا من تركها ضمنيًا. $BABY
ما يلفت النظر هو أن وثائق بابل تضمن من يُسمح له بالمشاركة، لا من سيشارك فعليًا.
فإذا انهار افتراض المشغل الصادق في أي وقت فعليًا، فهل كان أي شخص يراقب سيلتقط ذلك حتى قبل أن يصبح الأمر مهمًا؟
ما يزال اعتماد بابلون على الحيازة الذاتية يعتمد على لجنة عهد
@BabylonLabs_io هناك شيء ما يتعلق بكلمة «الحيازة الذاتية» في بابلون ظل يراودني.
افترضت أنها تعني أن المراهن وحده يتحكم في كل نتيجة، دون استثناءات.
ثم قرأت فعليًا متطلبات السيناريو، واتضح أن هذا الافتراض لم يكن صحيحًا.
لدى بابلون ثلاثة مسارات مخصصة لمخرجات الرهان. يسمح الـ time lock للمراهن بالخروج وحده بمجرد انتهاء مدة القفل. ويتيح الـ unbonding الخروج مبكرًا. ويُطبق الـ slashing عقوبة على مزوّد النهائية الذي يقوم بالتوقيع المزدوج.
مساران من بين تلك الثلاثة لا يمكنهما ببساطة التنفيذ دون تواقيع لجنة العهد.
وهذه هي النقطة التي كدت أتخطاها تقريبًا.
لجنة العهد هي مجموعة M-of-N من مفاتيح بيتكوين. تُطلب تواقيعها قبل أن يبدأ أي طلب رهان أصلًا، وتُطلب مرة أخرى قبل أن يمكن تمرير معاملة فكّ الربط أو فرض العقوبة. $BABY
أما عملة الـ BTC نفسها فلا تغادر أبدًا سكربت المراهن، لذلك تبقى الأصول في المكان الذي وضعها فيه المراهن طوال الوقت.
ومع ذلك، يجدر بنا الدقة بشأن ما الذي تتيحه هذه التبعية فعلًا.
مواصفة سكربت الرهان واضحة بشأن هذه الجزئية. يمكن للجنة رفض الطلب. لا يمكنها تحويل الأموال إلى أي مكان لم يكن المراهن قد التزم به مسبقًا وقت الرهان؛ كل ما يمكنها فعله هو حجب التوقيع الذي يسمح بإتمام عملية الصرف.
لذا يمكن للجنة إيقاف شيء ما عن التفعيل دون أن تصبح أمينة على الأصول أبدًا. #baby
لكن هذا يعني أيضًا أن خروج المراهن، سواء كان مبكرًا أم عقابيًا، يعتمد على تواقيع لا يحتفظ بها المراهن شخصيًا. الحيازة الذاتية تحمي إلى أين يمكن للأموال أن تصل في النهاية. لكنها لا تلغي كل الأطراف التي يلزم تعاونها للوصول إلى هناك.
هل يؤدي حصر صلاحيات اللجنة في «الرفض فقط» إلى جعل الأمر مسألة غير ذات صلة بالنسبة للحيازة الذاتية؟ أم أن الحاجة إلى توقيع أي شخص آخر أصلًا تجعل «الحيازة الذاتية» أكثر تعقيدًا مما كان يُفترض؟
هل تبعية بابلون فعلًا محصورة؟
هل ما زالت صلاحية الرفض فقط تُحسب كتبعـية على الحيازة؟ #baby
لماذا يتيح إطار بابل أداة BABY للرسوم والإجماع والحوكمة — لا للاستثمار
@BabylonLabs_io سأعترف بذلك: كانت تنبيهات علم الاقتصاد الرمزي (tokenomics) في السابق هي الجزء الذي كنت أتخطاه بلا قراءة في أي صفحة وثائق.
هذه المرة أمهلت نفسي عند صفحة بابل الخاصة بها، وانتهيت بالعودة إلى المقطع نفسه مرتين.
ما بُنيت BABY للقيام به هو أمر مُحدد: دفع الغاز في ubbn، والالتحاق بالرهان إلى جانب BTC من أجل الإجماع، وتمكين حامليها من التصويت على الحوكمة. ثلاث مهام، كلها مرتبطة فعليًا بتشغيل السلسلة. لا في أي مكان تعرض الصفحة ذلك كشيء تمسك به وتنتظر نموه.
وبعد بضعة أسطر تحت جدول التخصيص، ينص تنبيه على أن الأرقام افتراضية وقابلة للتوقع للمستقبل وقد تتغير دون إشعار. ويذهب أبعد من ذلك، إذ يذكر صراحةً أن BABY غير مخصصة للعمل كاستثمار.
مررت بالجزأين مرة أخرى، هذه المرة جنبًا إلى جنب. توكن مُعطى ثلاث مهام تشغيلية محددة، إلى جانب تحذير بأن أرقام عرضه الخاصة ليست ثابتة.
على حدة، لا يبرز أي سطر منهما كثيرًا. لكن معًا، تقول شيئًا أكثر حدة: المنفعة هي النقطة الفعلية، وكل ما هو رقمي حولها يظل مجردًا وقابلًا للتغيير.
يعيد ذلك صياغة جدول التخصيص نفسه. فتح المستثمرين والفريق والمستشارين يمتد حتى أبريل 2029. حوافز المجتمع تم الإفراج عنها بالفعل. تمويل النظام البيئي على جدول زمني مدته ثلاث سنوات. كل ذلك يقع تحت ملاحظة تقول إن هذه الفئات، ونسبها، قد ما تزال تتغير.
ليس المقصود أن هذا مؤشر خطر. مثل هذه التنبيهات شائعة، كما أن تأطير توكن حول الغاز والحوكمة بدلًا من الصعود ليس أمرًا غير معتاد أيضًا.
فأنا فقط لاحظت أن كتابة بابل نفسها تدعوك إلى التعامل مع BABY كخِدمة بنية تحتية أولًا، وأن كل رقم في تلك الصفحة هو رقم “حالي” وليس رقمًا نهائيًا.
لذا عندما تكون المنفعة ثابتة بالتصميم لكن الأرقام ليست كذلك صراحةً—فأيّهما يخبرك فعليًا بما تملكه؟
هل ينبغي تقييم BABY بناءً على منفعتها أم بناءً على أرقام العرض؟
لماذا يتخطّى مسار فك الارتباط في بايابلون المزود الخاص بالنهائية بالكامل
@BabylonLabs_io كل طلب لفك الارتباط وكل حدث إقفال/خصم في بايابلون بدا لي مثل الفئة نفسها من المخارج، فقط بتوقيت مختلف.
ثم قمت فعليًا بفتح البرنامجين النصيين جنبًا إلى جنب، أتوقع أن لا يشبه أحدهما الآخر إطلاقًا.
مسار فك الارتباط: توقيع المُراهن، بالإضافة إلى عتبة تعاقدية (covenant). لا شيء غير ذلك.
مسار الإقفال/الخصم: توقيع المُراهن، نفس العتبة التعاقدية، ومفتاح مزود النهائية.
مُوقِّع إضافي واحد—هذه هي الفروقات كلها.
وإدراج هذا المُوقِّع الواحد ليس مجرد شكلي.
توقيع واحد فقط يكفي لتغيير من يجب عليه الظهور لكي تتم عملية الصرف. يمكن للمراهن فك الارتباط عند الطلب، دون الحاجة إلى أي تعاون من المزود الذي فوّضه إليه؛ يكفي توقيعه هو وحده وموافقة العتبة التعاقدية. أمّا مسار الإقفال/الخصم فيبقى مغلقًا حتى يقوم ذلك المزود بالتوقيع المزدوج (double-sign) ويُسلّم مفتاحه عن طريق الخطأ.
لذا فإن مفتاح المزود يكون موجودًا في البرنامج النصي منذ اليوم الأول، مُوقَّعًا مسبقًا ولا يفعل شيئًا، إلى أن يُعاد استخدام العشوائية فيستيقظ بمفرده.
كل ما يحدث قبل تلك اللحظة يتم بالكامل دون أن يرفع المزود إصبعًا؛ صمته هو جوهر الفكرة. بمجرد كسره، لا يعود تعاونهم جزءًا من الصورة، فالمفتاح المكشوف يُنجز المهمة وحده.
لا أقول إن هذا يجعل فك الارتباط أكثر أمانًا بشكل عام. المساران يظلان معتمدين على نفس عتبة التعاقد سواءً بسواء.
فقط ملاحظة وجود مفتاح واحد هي الحدّ الكامل بين خروجٍ اختياري وبين خروجٍ عقابي؛ كل شيء آخر في البرنامجين النصيين يتطابق تمامًا.
إذا كان البرنامج النصي يختلف بالضبط عن مُوقِّع واحد، فهل هذا اختيار تصميم صغير، أم هو أهم سطر في كامل المستند؟
هل وجود مُوقِّع واحد يحدد الاختيار بين خروج اختياري وآخر عقابي؟
@BabylonLabs_io في كل مرة أنظر فيها إلى تصميم جديد للتخزين/الـ staking، أول شيء أتحقق منه هو عدد الطرق التي يمكن من خلالها تحريك الأموال المقفلة. مع Babylon، اتضح أن الإجابة كانت أصغر مما توقعت، وأكثر تعمّدًا بكثير.
ناتج الـ staking هو ناتج Taproot، وBabylon يعطّل مسار الإنفاق بالمفتاح العادي بالكامل. يفعل ذلك عبر تعيين المفتاح الداخلي إلى نقطة NUMS، وهي قيمة «لا حيلة في جعبتي» المحددة في BIP-341، والمستنتجة من تجزئة نقطة الأساس G الخاصة ببيتكوين. لا توجد لأي مفتاح خاص لهذه النقطة. هذا المسار ليس ضعيفًا؛ بل هو مغلق، عمدًا.
ما يتبقى هو بالضبط ثلاثة مسارات سكربت.
مسار الـ timelock يتيح للمُخزِّن الإنفاق وحده، بمجرد مرور عدد محدد من كتل البيتكوين تم الالتزام به. مسار الـ unbonding يتيح للمُخزِّن الخروج مبكرًا، إلى جانب عتبة من توقيعات لجنة العهد/الاتفاق، دون إشراك مزوّد نهائية.
مسار الـ slashing يحتاج إلى المُخزِّن، ونفس عتبة العهد/الاتفاق، معًا مع مفتاح مزوّد النهائية، ولا يصبح قابلاً للتنفيذ إلا إذا قام ذلك المزوّد بالتوقيع المزدوج.
ثلاثة أبواب، والفرق بينها ليس من يُسمح له بالدخول، بل أي مُوقّع يجب أن يظهر. يبدُو الـ unbonding والـ slashing متطابقين تقريبًا: نفس توقيع المُخزِّن، ونفس عتبة العهد/الاتفاق، باستثناء أن أحدهما يتضمن مفتاح مزوّد النهائية والآخر لا يتضمنه. هذا الإدراج المفرد هو ما يحوّل الخروج الطوعي إلى إجراء عقابي.
إزالة مسار إنفاق المفتاح تزيل أي طريقة غير رسمية لتحريك الأموال؛ لا توجد إلا هذه المسارات الثلاثة الرسمية. لكن هذا يعني أيضًا أن نموذج الأمان بالكامل بات يعتمد على أن تكون هذه السكربتات الثلاثة صحيحة تمامًا، دون وجود بديل أبسط يجلس «تحتها».
هل يؤدي إغلاق كل الاختصارات إلى جعل السكربت أكثر أمانًا، أم أنه يقلّل فقط من التسامح مع الخطأ داخل السكربت نفسه؟
@BabylonLabs_io كنت أظن أن حدثًا قاطعًا (slashing) في Babylon يعني أن لجنة ما قد نظرت في مُقدّم حتمية نهائية (finality provider) وقررت أنه مذنب بشيء.
عند التعمق في آلية Babylon الخاصة بـ EOTS، ما لفت انتباهي هو أنه لا توجد لجنة، ولا مراجعة، ولا قرار أو حكم في أي مكان داخلها.
كل مُقدّم حتمية نهائية في Babylon يلتزم بالعشوائية العامة مسبقًا، قيمة واحدة لكل ارتفاع كتلة مستقبلي ينوي التصويت عليه. يقوم أزواج التصويت بمشاركة نصف علني ونصف خاص، وما دامت كل قيمة ارتفاع (height) تحصل على توقيع واحد فقط في كل مرة، تظل العشوائية الخاصة سرية. ولا يظهر الفشل إلا عند لحظة إعادة الاستخدام: إذا وقّعت على كتلتين مختلفتين عند الارتفاع نفسه، تُستخدم العشوائية الخاصة نفسها مرتين. توقيعان مبنيان على عشوائية متطابقة يكفيان—رياضيًا—لاستخراج المفتاح الكامن تحتهما. لا يستخرجه أحد. الرياضيات فقط هي التي تُسقطه.
ومن هناك يصبح كل شيء ميكانيكيًا، لا تقديريًا. تنخفض قوة التصويت في Babylon إلى الصفر فور اكتشاف ذلك، ويتم «تدمير» المُقدّم بشكل دائم (tombstoned)، ويمكن للمفتاح المستعاد الآن أن يوقّع معاملات الـ slashing عبر كل الرهانات (stake) المفوّضة إليه.
إذًا ماذا يتحقق توقيع Babylon EOTS فعليًا؟ أمر واحد: أن حدث توقيع مزدوج قد وقع عند ارتفاع محدد، وأن المفتاح الناتج حقيقي. لا يقول شيئًا عما إذا كان المُقدّم يقوم بتعطيل/منع (censoring) الكتل، أو يشغّل بنية تحتية غير موثوقة، أو يصوّت بشكل غير متسق بطرق لا تمس إعادة استخدام العشوائية. لا شيء من ذلك يعيد استخدام العشوائية، لذلك لا ينتج عنه مفتاح.
إن كانت هناك آلية دقيقة بهذا القدر بشأن وضعية فشل واحدة، فهي—بحكم التعريف—صامتة تجاه أي وضعية أخرى.
عندما تكون المحفظة آمنة لكن مفتاح التداول غير آمن: مخاطر الوصول المفوَّض في GRVT
@grvt_io كلما فحصت نموذج واجهة برمجة التطبيقات الخاص بـ GRVT بشكل أعمق، اتّضح لي أن هناك تمييزًا واحدًا أصبح أكثر وضوحًا: قد لا يتمكّن المفتاح من سحب الأموال، ومع ذلك يظل قويًا بما يكفي لإلحاق الضرر بالحساب.
تُوثِّق GRVT مفاتيح واجهة برمجة تطبيقات الحسابات التداولية بصلاحية “التداول فقط”. ترتبط كل مفاتيح بعنوان Ethereum، ويمكن لمفتاحه الخاص توقيع الأوامر عبر EIP-712.
هذا الفصل مهم. إن بيانات اعتماد التداول ليست بالضرورة بيانات اعتماد للسحب تلقائيًا.
لكن “مقيَّد” لا يعني “غير مؤذٍ”.
إذا تم اختراق مفتاح مُخوَّل للتداول، فإن الخطر الأساسي ليس أن يقوم مهاجم بإرسال الأصول إلى محفظة خارجية. الخطر هو إساءة استخدام التداول المصرَّح به. قد ينشئ المهاجم تعرّضًا غير مرغوب فيه، ويستهلك الهامش المتاح، ويقرّب الحساب من التصفية (liquidation) بينما ما زالت الأوامر تبدو صالحة ضمن الصلاحية الممنوحة للمفتاح.
هذا استنتاج من نموذج الصلاحيات الموثّق، وليس ادعاءً بأن واجهة برمجة تطبيقات GRVT قد تم اختراقها.
يمكن لطبقة الحَوْزة (custody) أن تعمل تمامًا كما صُمِّمت، بينما يتكبّد الحساب التداولي ضررًا اقتصاديًا. تبقى المحفظة هي المالك، لكن المهاجم يتحكم مؤقتًا في القرارات التي تغيّر قيمة الحساب.
وهذا يجعل أمن واجهة البرمجة التطبيقية أكثر من مجرد تخزين سريّ. تشمل الضوابط العملية صلاحيات ضيقة، وبيئات توقيع معزولة، ومراقبة فورية، وإلغاء سريع، وتدوير منتظم للمفاتيح. والغرض ليس فقط إيقاف عمليات السحب. بل هو الحد من مقدار الضرر الذي يمكن أن تحدثه سلطة التداول المفوَّضة قبل إزالة الوصول.
المفتاح الضيق يقلل نطاق الانفجار. لكنه لا يزيله إلى الصفر.
لذلك تكمن الخطورة في “التحكم الاقتصادي دون التحكم في الحَوْزة”. يستحق هذا التمييز الاهتمام نفسه الذي يحظى به أمن عمليات السحب.
تمنع الحَوْزة الذاتية حيث يمكن إرسال الأموال. ويؤمّن الوصول المفوَّض القرارات التي تُتخذ قبل أن تحتاج تلك الأموال أصلًا إلى المغادرة.
أي تحكم هو الأكثر أهمية لمفتاح واجهة برمجة تطبيقات التداول؟
@NewtonProtocol كنت أقرأ سياسة نيوتن Rego التي بدت بسيطة جدًا لدرجة يصعب أن تفشل. سمحت بعملية سحب عندما كانت المحفظة تمتلك حالة الهوية المطلوبة، وكانت الوجهة معتمدة، وظل الحساب فوق حد الضمان الخاص به. كانت كل حالة منطقية. الجزء الذي أقلقني هو كل ما توقعت السياسة أن يحصل عليه النظام المحيط بشكل صحيح قبل بدء التقييم. افترضت القاعدة أن حالة الهوية تنتمي إلى نفس المحفظة التي طلبت السحب. وافترضت أن الوجهة المعتمدة هي العنوان الذي سيتلقى الأصول في النهاية. وافترضت أن قيمة الضمان تم حسابها باستخدام سعر حديث والأرقام العشرية الصحيحة للأصل.
@NewtonProtocol لقد عالجتُ في البداية "الرفض الافتراضي" باعتباره شيئًا يمكن لسياسة نيوتن إضافته بعد اكتمال شروط السماح.
وكلما درستُ القاعدة أكثر، أدركتُ أن القرار الافتراضي يحدد ما يحدث عندما لا تعود الطلبات تبدو مألوفة.
تخيّل سياسة تسمح بتحويلات أقل من حد معيّن عندما ينتمي الوجهة إلى قائمة معتمدة. قد تعمل هذه المنطقية لكل معاملة كان المطوّر يتوقعها.
لكن الاختبار الأصعب يبدأ عندما يتغير شكل الطلب.
قد يكون حقل مطلوب مفقودًا. قد يستخدم مُعرّف أصلٍ صيغةً جديدة. قد يكشف عقدٌ دالةً لم ترها السياسة من قبل. قد تُقدّم التطبيقات نوع معاملة جديدًا بينما تواصل السياسة العمل.
النظام يحتاج إلى إجابة.
إذا بدأت السياسة من الإذن ولم تبحث إلا عن أسباب معروفة لرفض الطلب، فقد تنجو عملية غير مألوفة لأن أي قيد لم يتم تفعيله.
لم يُثبت أن الطلب آمن.
لم يكن الأمر سوى أنه لم يُعترف به باعتباره خطِرًا.
تبدأ سياسة @NewtonProtocol من الرفض، ولا تمنح الترخيص إلا بعد أن تكون كل الشروط موجودة ومُستوفاة. تبقى القيم المجهولة والإجراءات غير المدعومة والمدخلات المشوّهة والأدلة غير المكتملة مرفوضة إلى أن تتمكن السياسة من تقييمها عمدًا.
وهذا يهم لأن التطبيقات تتطور أسرع من السياسات. قد تظهر أصول جديدة ومسارات تنفيذ جديدة بينما تظل القاعدة الأقدم تفترض بيئتها كما كانت.
يمنع "الرفض الافتراضي" هذا الفجوة من أن تتحول إلى إذن.
توضح قاعدة السماح مكان وجود الترخيص. تقرر القاعدة الافتراضية كيفية تعامل النظام مع ما لم يكن المطوّر يتوقعه.
السؤال الذي أعود إليه باستمرار هو أين يجب أن يعيش هذا "البديل".
هل ينبغي لكل سياسة من سياسات نيوتن أن ترفض الطلبات غير المعروفة بنفسها، أم ينبغي لطبقة تحقق موثوقة واحدة أن ترفض المدخلات غير المكتملة قبل التقييم؟
مشكلة الحالة الكامنة وراء الحدود المتحركة وفحوصات السرعة في نيوتن
قضيت بعض الوقت أفكر في ما يحدث عندما تصل معاملتان إلى الحد المتحرك نفسه قبل أن يقوم أيٌّ منهما بتحديث الحالة المسجّلة. قد يبدو كل طلب صحيحًا بذاته. إذا تم تقييمهما مقابل نفس الإجمالي السابق، فقد تسمح سياسة @NewtonProtocol باتخاذ إجراءين يتجاوزان الحد بمجرد تنفيذِهما معًا. تخيّل أن محفظة قد أنفقت 8,000 دولار من حدّها اليومي. يصل طلبان إضافيان في الوقت نفسه، ويحاول كلٌ منهما إنفاق 1,500 دولار أخرى. يقرأ الطلب الأول الإجمالي المسجّل على أنه 8,000 دولار. يصبح المبلغ المتوقع 9,500 دولار، لذا توافق السياسة عليه.
قضيت بعض الوقت في النظر إلى ما يجعل شهادة @NewtonProtocol صالحة للاستخدام في معاملة واحدة فقط.
في البداية، افترضت أن توقيع المشغّل نفسه سيمنع إعادة الاستخدام.
لكن التوقيع يثبت فقط أن المشغّلين وافقوا على الرسالة التي قاموا بتوقيعها. أما السؤال الأصعب فهو ما إذا كانت تلك الرسالة مرتبطة بالفعل بالتحديد بالإجراء الذي ينفّذه التطبيق لاحقًا.
تخيّل أن شهادة تمنح إذنًا بسحب من محفظة واحدة إلى عقد واحد.
إذا لم تكن الرسالة الموقّعة مرتبطة بالمرسل والهدف والمعلمات والسلسلة والرقم التسلسلي (nonce) وانتهاء الصلاحية، فقد يظل نفس الإذن كافيًا لتلبية معاملة مختلفة.
يمكن أن تظل التشفيريات صحيحة.
ومع ذلك قد يكون التفويض خاطئًا.
لذلك يجب التعامل مع الشهادة الصالحة على أنها إذن بنية واحدة محددة فقط، وليست إذنًا قابلاً لإعادة الاستخدام.
لا يتطلب التكرار (replay) من أحد تزوير توقيع. الأمر لا يتطلب سوى إجراء آخر يظل مناسبًا للسياق الأصلي الذي تم توقيع الرسالة ضمنه.
يمكن للرقم التسلسلي (nonce) أن يمنع الاستخدام المتكرر. تحدّ مدة الانتهاء من صلاحية الإذن إلى متى يظل صالحًا. يمكن أن تمنع ربط السلسلة والعقد إعادة الاستخدام في مكان آخر. ويمكن أن تمنع ربط المعلمات تغيير المبلغ أو المستلم الذي تم اعتماده لاحقًا.
شهادة صالحة ≠ تفويض قابل لإعادة الاستخدام.
الجزء الذي ما زلت أعود إليه هو ما إذا كان ينبغي للتطبيقات رفض أي شهادة لا تكون مرتبطة بنية فريدة واحدة.
إذا كان بإمكان الهدف أو المعلمات أو السلسلة أو التوقيت أن تتغير بينما يبقى التفويض صالحًا، فماذا بالضبط الذي قام المشغّلون بتفويضه؟
@grvt_io أمضى بعض الوقت في التفكير في ما الذي يحتاجه المستخدم لإثبات أن مباراة GRVT كانت عادلة.
هنا، لا تعني العدالة أن الصفقة النهائية كانت صالحة فحسب. بل تعني أن الأوامر المؤهلة تلقت الأولوية الموثقة، دون إزاحة أمر سابق دون سبب مستند إلى قواعد.
تُوثّق GRVT أن المطابقة وتخزين البيانات يتمان خارج السلسلة (offchain)، بينما توفر العقود الذكية ضمانات التنفيذ على السلسلة (onchain). تحمل الأوامر المُرسلة توقيعات، ويمكن لمسار التسوية أن يتحقق مما إذا كانت حزمة المُصنِّع والمُشتري (maker-and-taker) المختارة تستوفي القواعد المطبقة على تلك المعاملة.
ميكانيكيًا، يمكن أن يثبت ذلك أن المطابقة المختارة كانت مقبولة.
المطابقة الصالحة ليست تلقائيًا مطابقة قابلة لإعادة التشغيل بشكل مستقل.
تصف المواد العامة التي تمت مراجعتها موجزات دفتر الأوامر (order-book feeds) والعمليات (fills) وقواعد RPI، لكنها لا تقدم سجلًا عامًا كاملاً للتسلسل لكل أمر مؤهل ولكل خيار بديل فكر فيه المُطابق (matcher). وبدون هذا السجل، لا يستطيع مستخدم خارجي إعادة بناء مسار الاختيار بالكامل اعتمادًا على مخرجات التسوية العامة وحدها، اعتمادًا على الأدلة العامة المتاحة اليوم.
تجعل سيولة RPI الحدود أكثر وضوحًا. تُعرّف GRVT RPI على أنها سيولة المُصنِّع المتاحة فقط لمستخدمي الواجهة غير الخوارزمية (non-algorithmic UI users). قد يؤدي ذلك إلى تنفيذ أفضل لمسار مؤهل، مع إتاحة رؤية مختلفة للسيولة القابلة للتنفيذ لمشاركي واجهة برمجة التطبيقات (API).
أفهم المفاضلة في التصميم. قد يحمي تقييد مسار الأوامر صانعي السوق ويحسن الأسعار المعروضة.
ومع ذلك، فإن جودة التنفيذ والأولوية القابلة للتحقق بشكل مستقل هما ادعاءان منفصلان.
إن عدم كفاية إعادة البناء العامة لا يثبت أن GRVT قامت بالمطابقة بشكل غير عادل. بل يعني أن المستخدمين يجب أن يعتمدوا على السجلات الداخلية لـ GRVT أو القواعد الموثقة أو عملية ضمان خارجية لأجزاء من تقييم العدالة.
هذا هو السؤال الذي أعود إليه باستمرار.
هل ينبغي أن تظل عدالة المطابقة ضمانًا تشغيليًا، أم أن تصبح شيئًا يمكن للمستخدمين التحقق منه بشكل مستقل؟