طريقة الاستخدام
- اختر «ترميز» لتحويل النص أو البايتات إلى Base58، أو «فك الترميز» لإعادة سلسلة Base58 إلى بيانات.
- حدّد «الأبجدية». أبجدية Bitcoin هي الافتراضية، وهي أيضًا الأبجدية التي تستخدمها IPFS وSolana.
- اكتب المدخلات أو الصقها. غيّر «صيغة المدخلات» إلى «ست عشري» إذا كانت لديك بايتات خام مثل تجزئة أو مفتاح عام.
- لا تفعّل «مجموع اختباري Base58Check» إلا إذا كانت السلسلة تحمل مجموعًا اختباريًا من 4 بايتات، ثم انسخ النتيجة أو نزّلها.
ما هو Base58؟
Base58 ترميز لتحويل البيانات الثنائية إلى نص، أُنشئ من أجل Bitcoin. تتكوّن أبجديته من الأرقام والأحرف اللاتينية البالغ عددها 62، بعد استبعاد أربعة أحرف يسهل الخلط بينها: 0 (الصفر) وO (حرف o الكبير) وI (حرف i الكبير) وl (حرف L الصغير). كما أنها لا تحتوي على + أو / أو =، لذا يمكن تحديد سلسلة Base58 بنقرة مزدوجة ووضعها في عنوان URL دون تهريب.
وعلى خلاف Base64، لا يقسّم Base58 المدخلات إلى مجموعات من البتات، بل يعامل المدخلات كلها على أنها عدد واحد كبير ويكتبه بالأساس 58. ولهذا لا يوجد حشو، وقد يؤدي تغيير بايت واحد إلى تغيير كثير من أحرف المخرجات. وليس لبايتات الصفر البادئة أي قيمة عددية، لذا يُكتب كل منها على هيئة الحرف الأول من الأبجدية (1 في أبجدية Bitcoin) للحفاظ عليه. ويبلغ حجم المخرجات نحو 1.37 ضعف حجم المدخلات.
أين يُستخدم Base58
- Bitcoin. العناوين القديمة (legacy) والمفاتيح الخاصة بصيغة WIF مرمّزة بـ Base58Check، أي Base58 مع بايت إصدار ومجموع اختباري.
- IPFS. معرّف المحتوى من الإصدار 0 (CIDv0) هو صيغة Base58 لتجزئة multihash من نوع SHA-256، ولهذا يبلغ طول هذه المعرّفات 46 حرفًا وتبدأ بـ
Qm. - Solana. تُكتب المفاتيح العامة وعناوين الحسابات وتوقيعات المعاملات بـ Base58 العادي دون مجموع اختباري. ويصبح المفتاح المكوّن من 32 بايت عادةً 43 أو 44 حرفًا.
- Flickr وXRP Ledger. تستخدم الروابط المختصرة في Flickr أبجدية Flickr، وتستخدم عناوين XRP أبجدية Ripple، ولهذا تبدأ بالحرف
r.
للتحويل بين Base58 والبايتات الخام، استخدم تحويل Base58 إلى ست عشري وتحويل الست عشري إلى Base58. وللمعرّفات التي يكفي أن تتكوّن من أحرف وأرقام فقط، قارنه بـ Base62.
أبجديات Base58
| الأبجدية | الأحرف بالترتيب |
|---|---|
| Bitcoin | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Flickr | 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
| Ripple | rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz |
تستخدم الأبجديات الثلاث الأحرف الـ 58 نفسها بترتيب مختلف، لذا فإن السلسلة المرمّزة بإحداها تُفك إلى بايتات مختلفة، أو يفشل فك ترميزها، عند استخدام أبجدية أخرى.
Base58 في الشيفرة البرمجية
# Python (pip install base58)
import base58
base58.b58encode(b'hello') # b'Cn8eVZg'
base58.b58decode('Cn8eVZg') # b'hello'
// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));
المواصفات
| الأبجدية | 1-9 A-Z a-z باستثناء 0 O I l |
|---|---|
| حجم المخرجات | نحو 137% (تحويل الأعداد الكبيرة) |
| الحشو | لا يوجد (تتحول بايتات الصفر البادئة إلى 1) |
| المعيار | Bitcoin Base58 |
| حساس لحالة الأحرف | نعم |
أمثلة
| المدخلات (UTF-8) | المخرجات |
|---|---|
Hello, World! | 72k1xXWG59fYdzSNoA |
Base64.is | r1Nm3AS7ZcnN |
你好 | 2xuZUfBKa |
الأسئلة الشائعة
لماذا تتحول بايتات الصفر البادئة إلى 1؟
1 في أبجدية Bitcoin. ولهذا تُرمَّز 32 بايتًا صفريًا إلى سلسلة من 32 حرف 1 متتاليًا.هل Base58 حساس لحالة الأحرف؟
نعم. الأحرف الكبيرة والصغيرة أرقام مختلفة، لذا فإن تغيير حالة حرف واحد يغيّر البايتات الناتجة عن فك الترميز أو يجعل السلسلة غير صالحة.