בינוני שיעור 6 4 דקות קריאה

פורמטים של מפתח: WIF, הקסה, דחוס ולא דחוס

המפתח עצמו מופיע בארבעה דרכים שונות, ולטעות ביניהם גורמת לארנק להיראות ריק מבלי שדבר נעלם.

אחת ההודעות הנפוצות ביותר בפורומים של תמיכה מתחילה תמיד באותו אופן: ייבאתי את המפתח שלי לארנק חדש והיתרה הופיעה כאפס. כמעט אף פעם לא נעלם משהו. מה שהשתנה הוא האריזה של אותו מספר, והארנק בדק בדלת הלא נכונה.

המפתח הפרטי, כפי שאתה כבר יודע, הוא מספר של 256 ביטים. הצורה הגולמית ביותר לכתיבתו היא בהקסדצימלי: שישים וארבעה תווים, מ-0 עד 9 ומ-a עד f, כל שניים מהם שווים לבייט. זה המספר ותו לא — ללא גרסה, ללא בדיקה, ללא אזהרת שגיאה אם תחליף תו.

לכן קיים ה-WIF, פורמט ייבוא ארנק. זו אותה שיטה של כתובת, מיושמת על המפתח הפרטי: מוסיפים בייט גרסה מקדימה, מחשבים checksum של ארבעה בייטים עם SHA-256 פעמיים, ממירים הכל לבסיס 58. התוצאה היא שרשרת שמתחילה עם הספרה 5 ויש לה חמישים ואחד תווים, או מתחילה עם K או L ויש לה חמישים ושניים. ההבדל בין שני המקרים הללו הוא הנושא של שאר השיעור.

זה אותו מתכת בשלוש עיטופים. רק הנייר השתנה.

חזור לעקומה לרגע. המפתח הציבורי הוא נקודה, ולנקודה יש שתי קואורדינטות, x ו-y. כתיבת שתיהן במלואן נותנת שישים וחמישה בייטים: בייט סימון אחד ושלושים ושניים לכל קואורדינטה. זו הצורה הלא דחוסה, היחידה שהייתה קיימת כשביטקוין נולד.

אבל המשוואה של העקומה מאפשרת לחסוך חצי מזה. בהינתן ה-x, המשוואה y² = x³ + 7 מחזירה את ה-y בריבוע, ומי שיודע את הריבוע יודע את הערך למעט פרט אחד: קיימות שתי שורשים, אחד זוגי ואחד אי-זוגי. מספיק אז לשמור את ה-x כולו וביט אחד בלבד שאומר איזו מהן נכונה. המפתח הציבורי הדחוס יש לו שלושים ושלושה בייטים ומתחיל עם 02 או 03 — בדיוק אותו ביט. הלא דחוס מתחיל עם 04.

כשיודעים את הגובה, נשארות שתי אפשרויות. ביט אחד אומר איזו מהן.

כאן נמצאת המלכודת כולה. שתי הצורות מתארות את אותה נקודה, אבל הן רצפים של בייטים שונים — והכתובת, כפי שהשיעור 3 הראה, היא ה-hash של רצף הבייטים. hashes שונים, כתובות שונות. אותו מפתח פרטי, לכן, שולט בשתי כתובות שלא נראות דומות כלל, והכסף שנמצא באחת לא מופיע בשנייה.

ה-WIF מודיע לארנק איזה משני הצורות עליו להרכיב. כאשר המפתח הפרטי ישמש בצורה דחוסה, מוסיפים בייט 01 בסוף לפני חישוב ה-checksum, וזה הבייט הנוסף שדוחף את התוצאה מחמישים ואחד לחמישים ושניים תווים ומחליף את ה-5 ההתחלתי ל-K או ל-L. התו הראשון של WIF אינו קישוט: הוא ההוראה כיצד לקרוא את השאר.

ההחלפה התרחשה ב-2012, כאשר ה-Bitcoin Core התחיל לייצר מפתחות דחוסים כברירת מחדל. החיסכון הוא אמיתי: שלושים ושניים בייטים פחות בכל כניסה של עסקה, חוזרים על עצמם במיליארדי עסקאות. המפתחות שלפני כן ממשיכים להיות תקפים, ולכן ארנקים רציניים, בעת ייבוא, סורקים את שני הנתיבים במקום לבחור אחד.

אותו מפתח פותח את שתי הדלתות. מה שחיפשת היה מאחורי השנייה.

ישנן עוד שתי אריזות שמופיעות מדי פעם. המפתח המוצפן לפי תקן BIP-38 מתחיל עם 6P והופך למפתח אמיתי רק לאחר סיסמה — זה מה שמטבעות הפיזיים של מייק קלדוול, ה-Casascius, הדפיסו תחת הולוגרמה בין 2011 ל-2013. והפורמט המיני, של שלושים תווים שמתחילים עם S, נכנס למרחב הצר של אותם מטבעות.

שום דבר מזה לא משנה את המפתח. הקסדצימלי, WIF, דחוס, מוצפן: אלו דרכים לכתוב, לשמור ולהעביר את אותו מספר, עם יותר או פחות הגנה מפני שגיאת הקלדה. בלבול בין האריזה לתוכן הוא מה שגורם ליתרה להיראות כאילו נעלמה — ובדיקת התו הראשון בדרך כלל פותרת את ההלם בעשר שניות.

ארנק אמיתי, עם זאת, לא שומר מפתח. הוא שומר זרע, שממנו יוצאים אלפי מפתחות ברצף, כולם ניתנים לשחזור מתוך שתים עשרה מילים. איך הטריק הזה עובד, ולמה הוא שינה את הדרך לעשות גיבוי, הוא הנושא של המודול הבא.