محوّل الست عشري إلى Base58

الصق بايتات ست عشرية واحصل على سلسلة Base58 التي تستخدمها Bitcoin وSolana وIPFS. يتحوّل كل بايت 00 بادئ إلى 1 بادئ، وتُحفظ بقية البايتات كما هي تمامًا.

تعمل بالكامل داخل متصفحك، ولا يُرفع أي شيء.

طريقة الاستخدام

  1. الصق البايتات الست عشرية في مربع المدخلات. تُقبل المسافات والنقطتان الرأسيتان والبادئة 0x.
  2. اقرأ نتيجة Base58 في المخرجات.
  3. انسخها، أو انقر «تبديل المدخلات والمخرجات» لفك ترميز Base58 إلى ست عشري مجددًا.

كيف يتحوّل الست عشري إلى Base58

تُحوَّل الخانات الست عشرية أولًا إلى بايتات، بخانتين لكل بايت، لذا يجب أن يكون عدد خانات المدخلات زوجيًا. ثم تُقرأ البايتات على أنها عدد واحد بترتيب big-endian، ويُعاد كتابته بالأساس 58 بأبجدية Bitcoin. ويُكتب كل بايت 00 بادئ على هيئة 1، ولهذا يصبح 0000ff هو 115Q، بينما يصبح ff وحده 5Q.

يحتاج Base58 إلى نحو 1.37 حرف لكل بايت، لذا تتقلص 64 خانة ست عشرية (32 بايتًا) إلى 43 أو 44 حرفًا. ولا تحتوي الأبجدية على 0 أو O أو I أو l أو + أو /، لذا يسهل نطق النتيجة بصوت عالٍ، ويمكن تحديدها بنقرة مزدوجة، وتصلح لعناوين URL. ويُحسب كل شيء داخل متصفحك.

إنشاء معرّفات Solana وIPFS

  • Solana: العنوان هو المفتاح العام Ed25519 المكوّن من 32 بايتًا بصيغة Base58، بلا بادئة ولا مجموع اختباري. الصق المفتاح الست عشري المكوّن من 64 خانة لتحصل على العنوان.
  • IPFS CIDv0: معرّف CIDv0 هو multihash من نوع sha2-256 بصيغة Base58. ضع 1220 قبل الملخص (digest) المكوّن من 64 خانة لتحصل على سلسلة من 46 حرفًا تبدأ بـ Qm. ويجب أن يكون الملخص هو الذي حسبه IPFS للكتلة المرمّزة، وهو يختلف عن تجزئة SHA-256 للملف الأصلي.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

عناوين Bitcoin تحتاج إلى مجموع اختباري

تجزئة HASH160 وحدها ليست عنوانًا. فعنوان Bitcoin القديم هو ترميز Base58Check لبايت الإصدار 00 متبوعًا بتجزئة HASH160 المكوّنة من 20 بايتًا، وهذا الترميز يُلحق قبل الترميز مجموعًا اختباريًا من 4 بايتات محسوبًا بتجزئة SHA-256 مزدوجة. أما ترميز 00 وتجزئة HASH160 بـ Base58 العادي فيعطي سلسلة أقصر بلا مجموع اختباري، وترفضها المحافظ.

استخدم صفحة Base58Check بدلًا من ذلك: اضبط «صيغة المدخلات» على «ست عشري»، وأدخل 00 متبوعًا بتجزئة HASH160، وسيُضاف المجموع الاختباري تلقائيًا. وإذا كانت قيمتك الست عشرية تنتهي أصلًا بالمجموع الاختباري الصحيح، فستنتج هذه الصفحة العنوان نفسه.

0062e907b15cbf27d5425399ebf6f0fb50ebb88f18    (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

تحويل الست عشري إلى Base58 في الشيفرة البرمجية

# Python (pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff'))     # b'115Q'

// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex'));    // '115Q'

الأسئلة الشائعة

كيف أحوّل تجزئة HASH160 إلى عنوان Bitcoin؟
ضع بايت الإصدار 00 قبلها ورمّزها بـ Base58Check، لا بـ Base58 العادي. وتقوم صفحة Base58Check بذلك عندما تُدخل البايتات بالصيغة الست عشرية.
لماذا تبدأ النتيجة بعدة أحرف 1؟

لأن قيمتك الست عشرية تبدأ بالعدد نفسه من بايتات 00. ويحتفظ Base58 بها على هيئة أحرف 1 بادئة كي تُستعاد عند فك ترميز السلسلة.

لماذا تُرفض مدخلاتي الست عشرية؟

يحتاج الست عشري إلى عدد زوجي من الخانات، ولا يقبل إلا الأحرف 0-9 وa-f، بأحرف كبيرة أو صغيرة. وتُزال المسافات والنقطتان الرأسيتان والبادئة 0x تلقائيًا؛ أما أي شيء آخر، مثل حرف g دخيل أو خانة ناقصة، فيُعد خطأً.

ما أبجدية Base58 التي تستخدمها هذه الصفحة؟
أبجدية Bitcoin، التي تستخدمها Solana وIPFS ومعظم المشاريع الأخرى أيضًا. ولاستخدام أبجدية Flickr أو Ripple، انتقل إلى صفحة Base58، واختر الأبجدية هناك، وأدخل مدخلاتك على هيئة بايتات ست عشرية.