ملاحظاتي على عناوين البيتكوين

عادةً ما يتم تمثيل عناوين Bitcoin بتنسيق سهل القراءة ويسمى Base58Check. يمكنك u التفكير في الأمر على أنه نسخة معدلة وسهلة القراءة من Base 64. ستحتوي الحمولة النافعة (عادةً بتنسيق سداسي عشري) على بادئة ملحقة (اعتمادًا على نوع المعلومات التي يتم تشفيرها). يتم تشغيل التسلسل البادئة + الحمولة من خلال دالة التجزئة SHA256 مرتين والتي تنتج قيمة 32 بايت. يتم استخدام أول 4 بايت من هذا التجزئة كمجموع اختباري ويتم إضافته إلى النتيجة: البادئة + الحمولة + المجموع الاختباري . أخيرًا ، يتم ترميز هذا في Base 58 للعنوان الناتج. يبدو مثل هذا:

فيما يلي رسم تخطيطي يوضح هذا:


يمكن التعبير عن كل من المفاتيح الخاصة والعامة في Base58Check. على سبيل المثال ، يمكن الإشارة إلى المفاتيح الخاصة في شكل سداسي عشري أو WIF (تنسيق استيراد المحفظة) أو WIF-Compressed (سأشرح الفرق لاحقًا). من الحمولة السداسية ، يتم إلحاق البادئة المطلوبة ، ويتم حساب المجموع الاختباري الناتج. يتم ترميز النتيجة في Base 58 والذي سينتج التنسيق المطلوب. هناك اختلاف طفيف هنا وهو أن تنسيق WIF-Compressed سيتم إلحاق الحمولة السداسية به مع لاحقة 01 قبل تشفير Base58Check.

باستخدام المفاتيح العامة ، سيكون لدينا نقطة منحنى ناقص الشكل (س ، ص) ويُشار إليها على النحو التالي:

يسمى هذا التنسيق “المفتاح العام غير المضغوط”. توجد طريقة لضغط هذا باستخدام إحداثي x فقط وبادئة تمثل y زوجي أو فردي. تذكر أنه في حالة وجود x ، يمكن استخدام صيغة المنحنى البيضاوي التالية لحل y:

إذا أمكن استنتاج y من x ، فيمكن تمثيل “المفتاح العام المضغوط” الناتج على أنه 02 + x أو 03 + x . يتم إضافة البادئة 02 عندما تكون y زوجية ، وإلا يتم استخدام البادئة 03 عندما تكون y فردية. هذا يسمح لنا بتقليل حجم المعاملات بشكل كبير على blockchain مما يؤدي إلى توفير كبير في التخزين بمرور الوقت. عادةً ما تستمد المحافظ الجديدة عنوان البيتكوين من المفاتيح العامة المضغوطة.

ومع ذلك ؛ يمكن أن يضيف هذا بعض التعقيد كما هو الحال الآن من نفس المفتاح الخاص ، ويمكن أن يكون لدينا تنسيق غير مضغوط ومضغوط للمفتاح العام يمكن اشتقاقه منه. لذلك ، يمكن إنشاء عنواني بيتكوين محتملين نتيجة لذلك. إذا أردنا استخدام هذا المفتاح الخاص في تطبيق محفظة آخر ، فكيف يمكننا تحديد ما إذا كان سيتم استخدام التنسيق المضغوط أو غير المضغوط للمفتاح العام وبالتالي عنوان البيتكوين الصحيح ؟؟ يقودنا هذا إلى كيفية تنسيق المفاتيح الخاصة للاستيراد إلى محافظ أخرى.

WIF (تنسيق استيراد المحفظة)

في تنسيق WIF ، يتم ترميز المفتاح الخاص بالنظام الست عشري باستخدام Base58Check باستخدام البادئة 128 أو 0x80. والنتيجة هي تنسيق سهل القراءة للمستخدم يبدأ بـ 5. مع WIF ، سيتم استخدام المفتاح العام غير المضغوط بالتنسيق 04 + x + y . بعد حساب SHA256 و RIPEMD160 من هذا التنسيق الناتج ، يتم ترميزها باستخدام Base58Check باستخدام البادئة 0 أو 0x00. والنتيجة هي عنوان بيتكوين يبدأ بـ 1.

WIF مضغوط

في WIF-Compressed ، يتم ترميز المفتاح الخاص السداسي عشر الذي يحتوي على اللاحقة 01 إلى Base58Check باستخدام نفس البادئة 128 أو 0x80. سينتج هذا المفتاح الخاص المشفر Base58Check بدءًا من K أو L. والمفتاح العمومي الناتج “مضغوط” بـ 02 + x أو 03 + x (اعتمادًا على أن y زوجي أو فردي). بعد حساب SHA256 و RIPEMD160 من هذا التنسيق الناتج ، يتم ترميزها باستخدام Base58Check باستخدام البادئة 0 أو 0x00. والنتيجة هي عنوان بيتكوين يبدأ بـ 1.

في موضوع ملاحظات البيتكوين التالي ، سأنتقل إلى أنواع المحافظ المختلفة.