הרבה אנשים מדמיינים את המפתח הפרטי והמפתח הציבורי כשני חצאים של זוג, שנבחרים יחד באותו רגע. זה לא מה שקורה. יש מספר אחד בלבד, והמספר הזה הוא המפתח הפרטי. המפתח הציבורי הוא חישוב שנעשה עליו: מי שיש לו את המפתח הפרטי יכול לחשב את המפתח הציבורי בשבריר שנייה, וההפך הוא שאף אחד בעולם לא יודע לעשות.
המפתח הפרטי הוא מספר שלם, ולא יותר מזה: מספר בין 1 לבין גבול קצת מתחת ל-2^256. אין רישום, אין שרת, אין רשות שמנפיקה. לבחור מספר בטווח הזה זה כבר להחזיק ארנק, וזה מה שהמודול הקודם רצה להגיד כשהוא חזר ואמר שמי שיש לו את המפתח מזיז את המטבעות.
מה שהופך את המספר הזה למפתח ציבורי הוא פעולה שנעשית על עקומה. העקומה של ביטקוין נקראת secp256k1, והמשוואה שלה נכנסת בשורה אחת: y² = x³ + 7. הציור אינו הקשת החלקה של ספרי הלימוד: הקואורדינטות הן מספרים שלמים בתוך גוף סופי, עם p השווה ל-2^256 פחות 2^32 פחות 977. הגרף הוא ענן של נקודות מפוזרות, והאריתמטיקה של הענן הזה היא הנושא של המסלול המתקדם. כאן מספיק כלל אחד.
הכלל הוא ששתי נקודות על העקומה, כשמחברים אותן, נותנות נקודה שלישית על אותה עקומה: העבר קו ישר בין השתיים, ראה היכן הוא חותך את העקומה בפעם השלישית, שיקף את החיתוך הזה לצד השני של הציר. התוצאה לעולם לא תברח מהעקומה.
יש נקודת התחלה, שנקראת G, הגנרטור. היא לא נבחרת על ידך או על ידי הארנק שלך: היא כתובה בתקן, עם שתי הקואורדינטות הקבועות, והיא אותה נקודה לכל ארנקי הביטקוין מאז הבלוק הראשון.

המפתח הציבורי שלך הוא G מחובר לעצמו כל כך הרבה פעמים כמו הערך של המפתח הפרטי שלך. אם המפתח הפרטי הוא המספר k, המפתח הציבורי הוא הנקודה kG — נקודה מוכפלת במספר, פעולה שנקראת כפל סקלרי.
לחבר את G לעצמו מספר בסדר גודל כזה, פעם אחר פעם, היה לוקח יותר מגיל היקום — ובכל זאת החישוב יוצא מיידי. הטריק הוא להכפיל במקום לחבר. בחיבור הנקודה לעצמה אתה מתקדם בשניים; בהכפלה, בארבעה; בהכפלה נוספת, בשמונה. עם 256 הכפלות וכמה חיבורים באמצע, מגיעים לכל נקודה בטווח.
ההפך אין לו שום טריק. נתונה הנקודה kG, בידיעה שההתחלה הייתה G, לגלות את k הוא בעיית הלוגריתם הדיסקרטי. אחרי ארבעים שנות ניסיונות, השיטה הטובה ביותר הידועה עדיין דורשת סדר גודל של 2^128 צעדים. השיעור 5 מודד את המספר הזה. לעת עתה מה שחשוב הוא צורת האסימטריה: קל בכיוון אחד, בלתי אפשרי בכיוון השני, כמו פונקציית ה-hash מהשיעור הקודם — רק שכאן, בצד השני, לא נמצא קובץ. נמצא הכסף שלך.

הבחירה בעקומה הייתה מוזרה בזמנו. ה-secp256k1 פורסמה בשנת 2000 על ידי SECG, קבוצה הקשורה לחברת Certicom הקנדית, וכמעט אף אחד לא השתמש בה: העולם עבד עם ה-P-256, של המכון האמריקאי NIST. סאטושי בחר בזו שהייתה פחות בשימוש. הפרמטרים של ה-secp256k1 פשוטים מדי מכדי להסתיר משהו — האפס והשבע במשוואה, ה-p מעט מתחת ל-2^256 — בעוד שהפרמטרים של ה-P-256 נובעים מקבועים שמעולם לא הוסברו. בשנת 2013, מסמכים שדלפו על ידי אדוארד סנודן הראו שה-NSA שילמה עשרה מיליון דולר כדי להחליש תקן אחר מאותה משפחה, ה-Dual_EC_DRBG. מעולם לא הוכח דבר נגד ה-P-256, ויש קריפטוגרפים שמגנים עליה עד היום; מה שניתן לומר הוא שהבחירה של 2008 הזדקנה היטב.
מכאן נובעת התוצאה המעשית ביותר: המפתח הפרטי לא צריך לעולם לצאת מהמקום שבו נולד. המכשיר מחשב את המפתח הציבורי ממנו, וזה הציבורי שנוסע — זה מה שהרשת רואה וזה שנכנס למתכון של הכתובת שלך. ארנק חומרה קיים כולו בגלל האסימטריה הזו — הוא שומר את המספר ומוסר את הנקודה.

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