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

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

חתימה דיגיטלית בנויה רעיונית ומעשית בעזרת קריפטוגרפיה (וכלים כגון: DSS, RSA) ובעיקר על עקומים אליפטיים המשמשים להצפנה ויצירת ייחודיות שתפקידם ליצור פלט ייחודי וחסין זיופים בעולם הווירטואלי בכדי לוודא:

  1. בעלות-שיוך סכום לבעליו.
  2. היתכנות-האם הפעולה אפשרית וחוקית על-פי פרוטוקול המטבע.
  3. שימוש הוגן (מניעת בזבוז כפול) וכחלק בלתי נפרד מאשרור העסקאות.

סכמה המתארת את השלבים ליצירת חתימה דיגיטלית: מפתח פרטי (ממנו מופק המפתח הציבורי) עובר המרה לכתובת ביטקוין

ממפתח פרטי לכתובת ביטקוין

סכמה המתארת את השלבים ליצירת חתימה דיגיטלית: מפתח פרטי, כתובת הביטקוין, מפתח ציבורי (בעלות/זהות החותם) והמידע הזקוק לחתימה יוצרים את החותמת

ביצוע חתימה דיגטלית

סכמה המתארת את השלבים ליצירת חתימה דיגיטלית: כתובת הביטקוין/מפתח ציבורי+המידע הזקוק לחתימה + החותמת (מהשלב הקודם) מייצרים מידע חתום

מידע חתום דיגיטלית

שרשרת הבלוקים/בלוצ'יין (בלועזית: Blockchain) הוא הכינוי לרישום פומבי לכול העסקאות (ו/או כל שימוש) שנעשו ברשת המטבע, דרך רישום זה ניתן לעקוב אחר כל מטבע (=מטבע הוא למעשה כתובת). כלומר, בפועל ניתן לחשב יתרה בכול כתובת וכמה היא "מחזיקה" בכל רגע נתון (בטווח טעות של 10 דקות בממוצע ברשת ביטקוין), זה מתאפשר מכיוון שתהליך שליחת מטבעות מחייב הפניה לעסקאות קודמות על מנת לחבר מהם סכום שהוא לפחות הסכום הנדרש להעברה (כלומר לוודא שיש לפחות סכום התואם את הסכום השליחה המבוקש) ההפניות המרכיבות את הסכום נקראות קלט- Inputs המידע המועבר נקרא פלט-Output ועל מידע זה נעשית החתימה הדיגיטלית ברשת ביטקוין.

סימון העברה כמשומשת

קלט (Input): סיכום הפניות/סימוכין אל פלט (Output) מעסקה אחרת/קודמת לעסקה נוכחית. בדרך כלל נעשה שימוש ביותר מקלט אחד לעסקה.

פלט (Output): הוא למעשה הוראות שליחה. לדוגמא: אם סה"כ הקלט (Input) שווה 50 מטבעות אבל המשתמש רוצה לשלוח 25 מטבעות, פרוטוקול המטבע ייצור פלט (Output) של 25 מטבעות שישלחו לנמען ועוד פלט של 25 שישלחו חזרה ("עודף") לארנק ממנו נעשית העסקה/העברה. יכול להיות יותר מפלט אחד אשר חולק את הערך הכולל של קלט.  כל פלט יוצר עסקה/העברה אחת בלבד אשר יכולה לשמש כהפניה/סימוכין ע"י קלט פעם אחת בלבד בעסקה עוקבת. בנוסף, אם קלט כלשהו לא "נפדה" (שימש כפלט) הוא יחשב כעמלה וכורה שפיצח את הבלוק יקבל אותה.

מההפניות ניתן להרכיב את הסכום המבוקש אך אפשר לעשות זאת פעם אחת בלבד באותה כתובת ובאותה עסקה, לאחר אישור ושימוש בקלט (Inputs) ויצירת פלט (Outputs) נעשית העברה המבוקשת והיא מסומנת כ"משומשת" (בלועזית: Spent  או (Used ע"י סימון הקלט בו (או בהם) נעשה שימוש. קלט הוא ספציפי לעסקה (ומרכיב את סה"כ הסכום המבוקש להעברה), לא ניתן לעשות בו או בהם שימוש נוסף, המידע שנמצא בפלט (Outputs) הוא המידע עליו תעשה חתימה בהעברה הבאה.

ביצוע ושימוש בחתימה דיגיטלית ברשת ביטקוין צעד אחר צעד

  1. תהליך השליחה מייצר בעזרת המפתח הפרטי (Signing Key / Private Key) ו'עקום אליפטי'(ECDSA) כתובת ביטקוין, הכתובת היא המפתח ציבורי לאחר תמצות SHA-256 ו RIPEMD-160 ולבסוף המרה ל  Base-58.
  2. מפתח פרטי/כתובת הביטקוין (בעלות/זהות החותם) והמידע הזקוק לחתימה (פלט מעסקה קודמת) יוצרים את החותמת הספציפית.
  3. כתובת הביטקוין (בעלות/זהות החותם)+המידע הזקוק לחתימה (פלט מעסקה קודמת)+החותמת מייצרים מידע חתום.
  4. הליך האישור בצמתים (Nodes) נעשה מול המפתח הציבורי + החתימה ללא גישה למפתח הפרטי.

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