محافظ HD ومسارات الاشتقاق (BIP44)
جدول المحتويات
عندما تُعدّ محفظة عملات رقمية وتتلقى عبارة استرجاعية من 12 كلمة، تمنحك تلك النسخة الاحتياطية الواحدة الوصول إلى كل حساب ستنشئه المحفظة --- على Bitcoin وEthereum وSolana وأي سلسلة أخرى مدعومة. الآلية التي تجعل هذا ممكناً تُسمى محفظة HD، ونظام العناوين الذي تستخدمه يحكمه مسارات الاشتقاق.
يشرح هذا الدليل كيف تحوّل محافظ HD بذرة واحدة إلى عدد غير محدود من المفاتيح، وماذا يعني مسار اشتقاق مثل m/44'/60'/0'/0/0 فعلياً، ولماذا الحصول على المسار الصحيح مهم عند التنقل بين المحافظ أو سلاسل الكتل.
ما هي محفظة HD؟¶
HD تعني هرمية حتمية (Hierarchical Deterministic). المصطلح يأتي من BIP32، وهي مواصفة نُشرت عام 2012 تحدد كيفية اشتقاق شجرة من أزواج مفاتيح التشفير من جذر واحد.
هرمية تعني أن المفاتيح منظمة في هيكل شجري --- يمكن للمفتاح الأصلي إنتاج مفاتيح فرعية، ويمكن لتلك الفرعية إنتاج مفاتيح أحفاد. يمكن للشجرة أن تتفرع بالعمق المطلوب.
حتمية تعني أن العملية قابلة للتكرار. بنفس الجذر (البذرة الرئيسية)، تُنتج نفس شجرة المفاتيح في كل مرة، في كل محفظة تتبع المعيار.
قبل محافظ HD، كان كل عنوان جديد يتطلب توليد ونسخ احتياطي لـ مفتاح خاص عشوائي منفصل. إذا ولّدت 100 عنوان، كنت بحاجة إلى 100 نسخة احتياطية. فقدان واحدة يعني ضياع تلك الأموال. محافظ HD قضت على هذه المشكلة. تنسخ البذرة مرة واحدة، وكل مفتاح تشتقه المحفظة مستقبلاً مغطى بالفعل بتلك النسخة الاحتياطية.
جذر الشجرة يأتي من عبارة BIP39 الاسترجاعية. تُحوَّل الكلمات المساعدة إلى بذرة ثنائية من 512 بت عبر PBKDF2 (كما هو موضح في شرح BIP39). تُقسم تلك البذرة إلى مفتاح خاص رئيسي (256 بت) ورمز سلسلة رئيسي (256 بت). معاً، يشكلان الجذر الذي تنمو منه الشجرة بأكملها.
تشريح m/44'/60'/0'/0/0¶
مسار الاشتقاق هو العنوان داخل الشجرة الذي يحدد مفتاحاً معيناً. يبدو كمسار ملف على الحاسوب، وكل جزء يخبرك بالفرع الذي يجب اتباعه.
دعنا نفكك m/44'/60'/0'/0/0، المسار القياسي لأول عنوان Ethereum:
m / 44' / 60' / 0' / 0 / 0
│ │ │ │ │ │
│ │ │ │ │ └── مؤشر العنوان (0 = العنوان الأول)
│ │ │ │ └────── التغيير (0 = خارجي/استقبال، 1 = داخلي/تغيير)
│ │ │ └─────────── الحساب (0 = الحساب الأول)
│ │ └───────────────── نوع العملة (60 = Ethereum)
│ └──────────────────────── الغرض (44 = معيار BIP44)
└──────────────────────────── المفتاح الرئيسي (جذر الشجرة)
تفصيل كل مستوى:¶
m --- المفتاح الرئيسي. كل مسار اشتقاق يبدأ هنا. هذا هو الجذر المشتق مباشرة من بذرتك.
44' --- الغرض. الرقم 44 يشير إلى أن هذا المسار يتبع معيار BIP44 للمحافظ متعددة الحسابات والعملات. الفاصلة العليا (') تشير إلى اشتقاق "مقوّى"، مما يعني أن المفتاح الفرعي لا يمكن حسابه من المفتاح العام الأصلي وحده --- يتطلب المفتاح الخاص. هذا إجراء أمني.
60' --- نوع العملة. كل عملة رقمية لها رقم معيّن في SLIP-44 (المزيد أدناه). Ethereum هو 60. Bitcoin هو 0. Solana هو 501. هذا المستوى يسمح لبذرة واحدة بخدمة سلاسل كتل متعددة دون تصادم المفاتيح.
0' --- مؤشر الحساب. فكر فيه كمحافظ منفصلة داخل محفظتك. الحساب 0 هو الافتراضي. يمكنك استخدام الحساب 1 لغرض مختلف --- الادخار مقابل الإنفاق مثلاً. معظم المستخدمين لا يتجاوزون الحساب 0.
0 --- مستوى التغيير. في نموذج UTXO لـ Bitcoin، 0 يعني العناوين الخارجية (الاستقبال) و1 يعني العناوين الداخلية (التغيير). Ethereum لا يستخدم عناوين التغيير بنفس الطريقة، لكن المستوى محفوظ للتوافق.
0 --- مؤشر العنوان. هذا هو الرقم الأخير الذي يُزاد لإنتاج عناوين جديدة. المؤشر 0 هو عنوانك الأول، المؤشر 1 هو الثاني، وهكذا. تزيد محفظتك هذه القيمة كلما طلبت عنوان استقبال جديد.
BIP44 وأنواع العملات في SLIP-44¶
وحّد BIP44 هيكل مسار الاشتقاق المبيّن أعلاه. نُشر عام 2014 وبُني على اشتقاق مفاتيح BIP32 بتسلسل هرمي ثابت من خمسة مستويات: الغرض / نوع العملة / الحساب / التغيير / مؤشر العنوان.
يحتفظ SLIP-44 (اقتراح تحسين مختبرات ساتوشي 44) بسجل أرقام أنواع العملات. كل سلسلة كتل لها عدد صحيح فريد حتى تنتج نفس البذرة مفاتيح مختلفة تماماً لسلاسل مختلفة. إليك بعض التعيينات الشائعة:
| نوع العملة | سلسلة الكتل | المسار الافتراضي |
|---|---|---|
| 0 | Bitcoin | m/44'/0'/0'/0/0 |
| 2 | Litecoin | m/44'/2'/0'/0/0 |
| 60 | Ethereum (وسلاسل EVM) | m/44'/60'/0'/0/0 |
| 144 | XRP | m/44'/144'/0'/0/0 |
| 195 | Tron | m/44'/195'/0'/0/0 |
| 501 | Solana | m/44'/501'/0'/0' |
| 9006 | Avalanche (C-Chain) | m/44'/60'/0'/0/0 |
لاحظ أن Avalanche C-Chain تستخدم نوع العملة 60 (نوع Ethereum) لأن C-Chain متوافقة مع EVM وتتشارك نفس تنسيق العناوين. ينطبق الأمر نفسه على Polygon وArbitrum وOptimism وBase --- جميعها تستخدم m/44'/60'/0'/0/0، مما يعني أن نفس عنوان Ethereum صالح على كل هذه الشبكات.
لهذا السبب عندما تضيف Polygon أو Arbitrum إلى MetaMask، يكون عنوانك هو نفسه عنوان Ethereum. جميعها تُشتق من نفس المسار. التمييز يحدث على مستوى الشبكة (chain ID)، وليس على مستوى اشتقاق المفاتيح.
سلاسل مختلفة، مسارات مختلفة¶
بينما تتشارك سلاسل EVM مسار Ethereum، تستخدم السلاسل غير المتوافقة مع EVM اتفاقياتها الخاصة، والاختلافات مهمة.
مسارات Bitcoin¶
تطور Bitcoin عبر عدة تنسيقات عناوين، لكل منها معيار اشتقاق خاص:
| المعيار | المسار | نوع العنوان | البادئة |
|---|---|---|---|
| BIP44 | m/44'/0'/0'/0/0 |
Legacy (P2PKH) | 1... |
| BIP49 | m/49'/0'/0'/0/0 |
Nested SegWit (P2SH-P2WPKH) | 3... |
| BIP84 | m/84'/0'/0'/0/0 |
Native SegWit (bech32) | bc1q... |
| BIP86 | m/86'/0'/0'/0/0 |
Taproot | bc1p... |
معظم محافظ Bitcoin الحديثة تستخدم BIP84 (Native SegWit) افتراضياً لأنه يوفر رسوم معاملات أقل. إذا استعدت بذرة في محفظة ولم تظهر أموالك، قد تكون المحفظة تفحص مسار الاشتقاق الخطأ. التبديل بين BIP84 وBIP44 (أو العكس) في إعدادات المحفظة عادة يحل المشكلة.
مسارات Solana¶
يستخدم Solana ed25519 بدلاً من secp256k1، لذا اشتقاقه مختلف هيكلياً. المسار القياسي هو m/44'/501'/0'/0' --- لاحظ أن جميع المستويات الأربعة مقوّاة (مشار إليها بـ '). بعض محافظ Solana تستخدم m/44'/501'/0' أو m/44'/501'، والمسار المحدد يختلف حسب تطبيق المحفظة. تستخدم Phantom وSolflare اتفاقيات مختلفة، مما قد يسبب ارتباكاً عند الترحيل. للاطلاع التفصيلي، راجع دليل توليد محفظة Solana.
XRP وTron¶
يستخدم XRP نوع العملة 144 مع المسار m/44'/144'/0'/0/0. يستخدم Tron نوع العملة 195 مع m/44'/195'/0'/0/0. كلاهما يستخدم secp256k1 مثل Bitcoin وEthereum، لكن ترميز عناوينهما يختلف.
BIP84 مقابل BIP44: لماذا لدى Bitcoin معايير متعددة¶
إذا استخدمت Bitcoin، ربما لاحظت أن بعض العناوين تبدأ بـ 1، وبعضها بـ 3، والحديثة تبدأ بـ bc1q. هذا ليس تجميلياً --- كل تنسيق يقابل معيار اشتقاق ونوع سكريبت مختلف.
BIP44 (m/44'/0'/...) يولّد عناوين P2PKH القديمة (تنسيق 1...). كان هذا مسار Bitcoin الأصلي المشتق من BIP32. لا يزال يعمل، لكن هذه العناوين تستخدم مساحة كتلة أكبر لكل معاملة.
BIP49 (m/49'/0'/...) يولّد عناوين Nested SegWit P2SH (تنسيق 3...). كانت هذه تنسيقاً انتقالياً يوفر توفير رسوم SegWit مع الحفاظ على التوافق مع المحافظ القديمة.
BIP84 (m/84'/0'/...) يولّد عناوين Native SegWit باستخدام ترميز bech32 (تنسيق bc1q...). هذا أكفأ تنسيق للمعاملات القياسية وهو الافتراضي في معظم المحافظ الحديثة.
النقطة الجوهرية أن جميع التنسيقات الثلاثة يمكن اشتقاقها من نفس العبارة الاسترجاعية. كلماتك الـ 12 لا تتغير. ما يتغير هو مستوى الغرض في مسار الاشتقاق: 44 أو 49 أو 84. المحفظة التي تدعم الثلاثة ستفحص كل مسار للعثور على أموالك.
عند توليد أو استعادة محفظة Bitcoin، تحقق دائماً من معيار الاشتقاق الذي تستخدمه المحفظة افتراضياً. إذا رأيت تنسيق عنوان مختلفاً عما توقعت، فالمحفظة على الأرجح تستخدم معيار BIP مختلفاً. لاستكشاف تنسيقات عناوين Bitcoin بالتفصيل، راجع تنسيقات عناوين العملات الرقمية.
اشتقاق المفاتيح خطوة بخطوة¶
إليك كيف يعمل الاشتقاق الكامل من العبارة الاسترجاعية إلى عنوان Ethereum قابل للاستخدام:
الخطوة 1: من الكلمات المساعدة إلى البذرة¶
تُعالج كلماتك المساعدة الـ 12 عبر PBKDF2-HMAC-SHA512 مع 2,048 تكراراً والملح "mnemonic" (مع عبارة مرور اختيارية). الناتج بذرة ثنائية من 512 بت.
الخطوة 2: من البذرة إلى المفتاح الرئيسي¶
تُعالج البذرة من 512 بت عبر HMAC-SHA512 بالمفتاح "Bitcoin seed" (تُستخدم هذه السلسلة بغض النظر عن سلسلة الكتل المستهدفة). 256 بت اليسرى تصبح المفتاح الخاص الرئيسي. 256 بت اليمنى تصبح رمز السلسلة الرئيسي.
الخطوة 3: من المفتاح الرئيسي إلى المفاتيح الفرعية¶
بدءاً من المفتاح الرئيسي، يُنفذ كل مستوى من مسار الاشتقاق دالة اشتقاق مفتاح فرعي (CKD). للفروع المقوّاة (المشار إليها بـ ')، يُغذى المفتاح الخاص الأصلي ورمز السلسلة في HMAC-SHA512 مع مؤشر الفرع. النتيجة مفتاح خاص فرعي جديد ورمز سلسلة.
للفروع العادية (غير المقوّاة)، يُستخدم المفتاح العام الأصلي بدلاً من المفتاح الخاص. هذا ما يتيح محافظ المراقبة فقط --- يمكنك اشتقاق مفاتيح عامة وعناوين دون امتلاك المفتاح الخاص.
الخطوة 4: من المفتاح الخاص إلى المفتاح العام¶
في المستوى الأخير من الاشتقاق، يُحوَّل المفتاح الخاص الفرعي إلى مفتاح عام عبر ضرب المنحنى البيضاوي. لـ Ethereum، يستخدم هذا منحنى secp256k1. العملية هي: Public Key = Private Key * G، حيث G نقطة المولّد للمنحنى.
الخطوة 5: من المفتاح العام إلى العنوان¶
يُهشّ المفتاح العام لإنتاج عنوان سلسلة الكتل. لـ Ethereum، يُهشّ المفتاح العام بـ Keccak-256، وآخر 20 بايت (40 حرفاً سداسي عشري) تصبح العنوان مسبوقاً بـ 0x. لـ Bitcoin، تتضمن العملية SHA-256 يليه RIPEMD-160، ثم ترميز Base58Check أو bech32 حسب نوع العنوان.
يمكنك رؤية هذه العملية بالكامل عبر مولّد عناوين Ethereum أو مولّد عناوين Bitcoin من SafeSeed، اللذين يعرضان كل خطوة من البذرة إلى العنوان.
لماذا هذا مهم عملياً¶
فهم مسارات الاشتقاق ليس مجرد معرفة أكاديمية. إليك حالات عملية حيث يهم:
- استعادة محفظة في برنامج مختلف. إذا انتقلت من Ledger إلى Trezor، أو من MetaMask إلى محفظة مختلفة، تأكد من تطابق مسار الاشتقاق. نفس البذرة مع مسار مختلف يعني عناوين مختلفة وأموالاً تبدو مفقودة.
- الوصول إلى سلاسل متعددة. عبارتك الاسترجاعية تغطي بالفعل Polygon وArbitrum وسلاسل EVM الأخرى --- جميعها تستخدم نوع عملة Ethereum 60. لا حاجة لنسخة احتياطية منفصلة.
- تشخيص الأموال المفقودة. إذا استعدت بذرة Bitcoin ولم تستطع رؤية رصيدك، جرب التبديل بين مسارات BIP44 وBIP49 وBIP84 في إعدادات المحفظة.
- توليد عناوين لأغراض محددة. بزيادة مؤشر الحساب (المستوى الثالث)، يمكنك إنشاء محافظ منفصلة منطقياً --- واحدة للإنفاق اليومي وأخرى للتخزين طويل الأمد --- كلها من نفس العبارة الاسترجاعية.
نظام مسارات الاشتقاق هو ما يحوّل عبارة استرجاعية واحدة إلى محفظة متعددة السلاسل ومتعددة الحسابات. إنه طبقة البنية التحتية التي تجعل الحفظ الذاتي للعملات الرقمية الحديثة قوياً وقابلاً للنقل. بمجرد فهمه، يمكنك التنقل بين المحافظ والسلاسل وتنسيقات العناوين بثقة.