لأغراض تعليمية فقط، وليس نصيحة استثمارية. قد يؤدي تسرّب مفتاح الجلسة أو منحه صلاحيات مفرطة إلى خسارة غير قابلة للعكس للأصول الرقمية.
الإجابة المباشرة
مفتاح جلسة المحفظة هو عادةً مفتاح توقيع ثانوي، أو بيانات تفويض مرتبطة به، لا يقبلها الحساب الذكي إلا وفق قواعد محددة. وقد تقيّد هذه القواعد الوقت والعقود المستهدفة ومحددات الوظائف وكميات الرموز وعدد المعاملات أو شروطًا أخرى. والهدف هو تمكين التطبيق من تنفيذ إجراءات متكررة من دون مطالبة مالك الحساب بالموافقة على كل عملية باستخدام الموقّع الرئيسي.
«مفتاح الجلسة» نمط تصميم وليس معيارًا موحدًا في Ethereum. يوفّر ERC-4337 تحققًا قابلًا للبرمجة للحساب وتحققًا محدد المدة من UserOperation، بينما يمكن لأنظمة الحسابات المعيارية مثل ERC-7579 استضافة المدقّقين والمنفّذين والخطافات. يحدد كود الحساب والوحدات المنشور في النهاية ما يستطيع المفتاح فعله. ولا يجعل انتهاء الصلاحية وحده الجلسة آمنة، كما أن حذف نسخة المتصفح لا يلغي بالضرورة صلاحية مسجلة على السلسلة أو واردة في تفويض لم تنتهِ مدته.
آلية العمل
يتكوّن المسار المعتاد من 5 مراحل:
- ينشئ المالك زوج مفاتيح جديدًا على جهاز، أو يجيز بيانات اعتماد تحدد موقّع الجلسة. يجب ألا يُرسل مفتاح الجلسة الخاص إلى خادم التطبيق ما لم يجعل التصميم ذلك الخادم أمين حفظ موثوقًا بصورة صريحة.
- يجيز المالك سياسة باستخدام المحفظة الرئيسية. تثبّت بعض الأنظمة المفتاح والسياسة على السلسلة، بينما تستخدم أخرى تفويضًا موقّعًا يتحقق منه الحساب عند وصول العملية.
- يبني التطبيق عملية ويوقّعها بمفتاح الجلسة. في مسار ERC-4337، تتحقق دالة
validateUserOpفي الحساب من التوقيع والسياسة؛ ومحاكاة المجمّع اختبار قبول وليست دليلًا على التنفيذ أو الأمان. - يجب أن يفرض الحساب كل قيد قبل التنفيذ. يمكن تلخيص الصلاحية الفعلية بالصيغة
A_effective = K ∩ P ∩ S: يجب أن يسمح امتلاك المفتاح (K) والسياسة المهيأة (P) والحالة الحالية للحساب أو السلسلة (S) جميعًا بالإجراء. - تنتهي الجلسة بانتهاء المدة، أو استنفاد nonce أو الحصة، أو الإلغاء الصريح، أو إزالة الوحدة، أو مسار إبطال آخر خاص بالتنفيذ. تحقّق من حالة الحساب الناتجة على السلسلة الصحيحة.
قبل إجازة جلسة، تحقّق من:
- معرّف السلسلة وعنوان الحساب الذكي وتنفيذ الحساب وعنوان المدقّق أو الوحدة؛
- المفتاح العام للجلسة أو معرّف بيانات الاعتماد ومكان تخزين مادته الخاصة؛
- كل هدف ومحدد وظيفة ورمز وقاعدة مستلم مسموح بها، وحد القيمة الأصلية وسقف الإنفاق لكل استدعاء أو تراكميًا؛
validAfterوvalidUntilوقواعد nonce وعدد الاستخدامات، وما إذا كان الوقت يقاس بطابع الكتلة الزمني أو بمصدر آخر؛- حظر الدفعات والاستدعاءات المتداخلة و
delegatecallوموافقات الرموز وتثبيت الوحدات وترقيات الحساب وتوقيعات رسائل ERC-1271 ما لم تكن مطلوبة صراحة؛ - من يستطيع إلغاء الجلسة، وهل يحتفظ المالك بمسار استرداد مستقل، وهل يتطلب الإلغاء Gas أو مجمّعًا أو paymaster يعمل.
يجب أن تفحص السياسة الإجراء الذي سيُنفذ فعلًا. ففحص الهدف الخارجي للدفعة فقط قد يترك الاستدعاءات الداخلية بلا قيود، وفحص المستلم وحده مع تجاهل الوظيفة والقيمة يسبب المشكلة نفسها. لا يكون الحد ذا معنى إلا إذا غطى الكود الذي يفرضه كل مسار تنفيذ.
مثال
تنشئ محفظة لعبة جلسة تدوم 24 ساعة. ولا تسمح إلا باستدعاء عقد لعبة موثّق، وتحظر delegatecall وموافقات الرموز، وتضع حدًا للقيمة الأصلية قدره 0.02 ETH لكل استدعاء وحدًا للإنفاق الكلي قدره 20 USDC. يمكن للعبة إرسال الحركات المسموح بها من دون تأكيدات متكررة، لكن طلب نقل NFT غير ذي صلة يجب أن يفشل في التحقق.
قبل الاستخدام، يسجل المالك الحساب والسلسلة والوحدة والمفتاح العام للجلسة ووقت الانتهاء والحدود وطريقة الإلغاء. ويختبر إجراءً واحدًا منخفض القيمة، ويتحقق من الاستدعاء المفكوك وحدث الحساب، ثم يختبر الإلغاء بصورة مستقلة. يؤكد ذلك المسار المهيأ، لكنه لا يثبت خلو الوحدة من الثغرات أو عجز جهاز مخترق عن الإنفاق حتى الحدود المتبقية.
المخاطر والضوابط
- سياسة واسعة جدًا: قد تحوّل الأهداف العامة والمحددات غير المقيدة والموافقات غير المحدودة والدفعات أو
delegatecallمفتاحًا «محدودًا» إلى صلاحية تقارب صلاحية المالك. استخدم قوائم سماح صريحة واحظر الإجراءات الإدارية. - سرقة المفتاح: قد تكشف مساحة المتصفح والسجلات والنسخ الاحتياطية والإضافات والبرمجيات الخبيثة والأجهزة المشتركة المفتاح. فضّل التخزين المعزول أو المحمي ماديًا عند دعمه، ومددًا قصيرة وحدودًا تراكمية منخفضة.
- خلل في فرض القيود: قد يفك الحساب أو المدقّق أو المنفّذ أو الخطاف الاستدعاءات خطأً أو يهمل مسارًا بديلًا. استخدم عمليات نشر موثقة وكودًا مراجعًا وتدقيقات واختبارات لمحاولات التجاوز.
- إعادة التشغيل والتباس السياق: قد تسمح معالجة nonce الضعيفة أو غياب الربط بالسلسلة أو الحساب أو الوحدة أو السياسة المقصودة بإعادة الاستخدام. تحقّق من نطاق التوقيع الدقيق وحماية إعادة التشغيل على السلسلة.
- افتراضات انتهاء الصلاحية: قد يقيّد
validUntilعملية ERC-4337 واحدة من دون إزالة مفتاح مسجل أو سماح رمز أو تفويض آخر تلقائيًا. افحص الحالة الفعلية لكل صلاحية بعد الانتهاء. - فشل الإلغاء: لا يحذف مسح البيانات المحلية سوى نسخة واحدة من السر. ألغِ عبر المسار الموثق للحساب وتحقق من النتيجة على السلسلة، واحتفظ بما يكفي من Gas ومسار بديل يسيطر عليه المالك.
- وحدات قابلة للترقية أو خبيثة: قد تملك الوحدات صلاحيات تنفيذ واسعة، وقد تغيّر الترقيات سلوك السياسة. افحص المالكين وتأخير الترقية وصلاحيات الإيقاف وعنوان التنفيذ وإجراء إزالة الوحدة.
- إساءة استخدام Gas والرعاية: قد تستهلك الجلسة أموال الحساب في Gas أو تتوقف إذا رفضها paymaster. قيّد سلوك الرسوم حيث أمكن واحتفظ بمسار إرسال مستقل.
إذا كان المفتاح ربما انكشف، فتوقف عن استخدام التطبيق المتأثر، واحتفظ بمعرّف الجلسة وتجزئات المعاملات المهمة، وألغِ المفتاح أو عطله من جهاز نظيف يسيطر عليه المالك. ثم افحص العمليات المعلقة والحديثة وموافقات الرموز والوحدات المثبتة وترقيات الحساب والأرصدة على كل سلسلة مدعومة. لا تنقل الأصول المتبقية إلا إذا جعل التصميم الإلغاء غير موثوق؛ فقد يؤدي التسرع إلى موقع «استرداد» غير موثق إلى زيادة الخسارة.
مفاهيم خاطئة شائعة
- «لا يستطيع مفتاح الجلسة نقل الأصول.» يستطيع تنفيذ كل إجراء تسمح به السياسة المفروضة، وقد يشمل التحويلات والمبادلات والموافقات أو التوقيعات.
- «يحدد ERC-4337 صلاحيات مفاتيح الجلسة.» يوفّر ERC-4337 إطار التحقق والتنفيذ، بينما تبقى سياسة الجلسة خاصة بالمحفظة أو الوحدة.
- «تحد مدة قصيرة من أقصى خسارة.» تعتمد الخسارة أيضًا على حدود الاستدعاء والحدود التراكمية والتكرار وGas والموافقات والأسعار وكل مسار قابل للوصول.
- «يساوي تسجيل الخروج إلغاء المفتاح.» قد يحذف نسخة محلية، لكنه لا يثبت إبطال التسجيل على السلسلة أو التفويض الموقّع.
- «تعني المحاكاة الناجحة أن العملية آمنة.» قد تظهر قبول التحقق الحالي، لكنها لا تثبت النية أو الإدراج اللاحق أو نجاح التنفيذ أو النهائية أو غياب ثغرات الوحدة.
مواضيع ذات صلة
المصادر
- Session Keys & Delegation - ERC-4337 Documentation (تاريخ الاطلاع: 2026-08-21)
- ERC-4337: Account Abstraction Using Alt Mempool - Ethereum Improvement Proposals (تاريخ الاطلاع: 2026-08-21)
- ERC-7579: Minimal Modular Smart Accounts - Ethereum Improvement Proposals (تاريخ الاطلاع: 2026-08-21)
- Safe Modules - Safe Docs (تاريخ الاطلاع: 2026-08-21)