طريقة الاستخدام
- اختر «ترميز» لإنشاء سلسلة Base58Check، أو «فك الترميز» للتحقق من سلسلة واستعادة بايتاتها.
- للترميز، اضبط «صيغة المدخلات» على «ست عشري» وأدخل بايت الإصدار متبوعًا بالحمولة، مثل 00 ثم تجزئة HASH160 من 20 بايت.
- أبقِ خيار «مجموع اختباري Base58Check» مفعّلًا. يُضاف المجموع الاختباري عند الترميز ويُتحقق منه عند فك الترميز.
- لفك الترميز، الصق السلسلة واضبط «صيغة المخرجات» على «ست عشري». ستحصل على بايت الإصدار والحمولة دون المجموع الاختباري.
كيف يعمل Base58Check
- ابدأ ببايت إصدار يحدّد نوع البيانات، متبوعًا بالحمولة، مثل تجزئة مفتاح عام من 20 بايت.
- احسب تجزئة SHA-256 لهذه البايتات، ثم احسب تجزئة SHA-256 للنتيجة مرة أخرى، واحتفظ بأول 4 بايتات بوصفها المجموع الاختباري.
- ألحِق المجموع الاختباري ورمّز كل شيء بـ Base58. يتحوّل كل بايت
0x00بادئ إلى1.
تحسب هذه الأداة المجموع الاختباري على البايتات التي تدخلها بالضبط، ولا تضيف بايت الإصدار نيابةً عنك، لذا ضعه في بداية مدخلاتك. وعند فك الترميز، تعيد حساب المجموع الاختباري على جميع البايتات باستثناء آخر 4 بايتات. فإذا تطابقا، تحصل على بايت الإصدار والحمولة؛ وإلا تظهر رسالة خطأ في المجموع الاختباري. ولا يمر خطأ كتابي عشوائي دون اكتشاف إلا مرة واحدة تقريبًا من كل أربعة مليارات محاولة.
بايتات الإصدار الشائعة
| بايت الإصدار | البيانات | تبدأ السلسلة المرمّزة بـ |
|---|---|---|
0x00 | عنوان Bitcoin من نوع P2PKH (تجزئة HASH160 من 20 بايت) | 1 |
0x05 | عنوان Bitcoin من نوع P2SH (تجزئة سكربت من 20 بايت) | 3 |
0x6F | عنوان P2PKH على شبكة Bitcoin التجريبية (testnet) | m أو n |
0x80 | مفتاح خاص بصيغة WIF (32 بايت، مع 0x01 للمفتاح المضغوط) | 5، أو K / L إذا كان مضغوطًا |
عناوين SegWit وTaproot التي تبدأ بـ bc1 تستخدم Bech32 وليس Base58Check، ولا يمكن فك ترميزها هنا. أما عناوين XRP Ledger فتستخدم المجموع الاختباري نفسه مع أبجدية Ripple: اختر Ripple في خيار «الأبجدية».
مثال: من HASH160 إلى عنوان
يتكوّن العنوان الشهير المرتبط بكتلة التكوين (genesis block) في Bitcoin من بايت الإصدار 00 متبوعًا بتجزئة HASH160 من 20 بايت. وعند إدخالها بصيغة «ست عشري» مع تفعيل Base58Check، تحصل على العنوان المعروف:
Input (Hex) 00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Output 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
وفي الشيفرة البرمجية، توفّر حزمة base58 في Python الدالتين b58encode_check() وb58decode_check()، وتوفّر حزمة npm المسماة bs58check الدالتين encode() وdecode().
المواصفات
| الأبجدية | 1-9 A-Z a-z باستثناء 0 O I l |
|---|---|
| حجم المخرجات | نحو 137% مع مجموع اختباري من 4 بايتات |
| الحشو | لا يوجد |
| المعيار | Bitcoin Base58Check |
| حساس لحالة الأحرف | نعم |
أمثلة
| المدخلات (UTF-8) | المخرجات |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
الأسئلة الشائعة
لماذا يفشل فك الترميز مع خطأ في المجموع الاختباري؟
هل تضيف الأداة بايت الإصدار نيابةً عني؟
00 لعنوان Bitcoin.هل يمكنني فك ترميز مفتاح خاص بصيغة WIF؟
80 ثم المفتاح المكوّن من 32 بايت، ثم 01 في النهاية إذا كان المفتاح مضغوطًا. يجري فك الترميز محليًا في متصفحك، ومع ذلك تعامل مع المفاتيح الخاصة الحقيقية بحذر.هل يمكنني فك ترميز عناوين bc1؟
لا. تستخدم عناوين SegWit الأصلية (Native SegWit) وTaproot ترميز Bech32 أو Bech32m، وهو ترميز مختلف له مجموعه الاختباري الخاص. وفي Bitcoin، لا يُستخدم Base58Check إلا للعناوين القديمة التي تبدأ بـ 1 أو 3 (أو m أو n أو 2 على الشبكة التجريبية).