כדי להבין את ביטקוין, חובה קודם כל לוותר על הרעיון של מטבעות דיגיטליים היושבים בכספת וירטואלית. בעולם הבנקאות המסורתי, כסף מוגדר לפי יתרות חשבון. אם יש לך כסף בבנק, מסד נתונים מרכזי מחזיק מספר ספציפי ליד שמך. ביטקוין פועל באופן שונה לחלוטין. אין מטבעות פיזיים, ואין גם קבצים דיגיטליים המייצגים מטבעות בודדים. אין גם חשבונות בשכבת הפרוטוקול שרק מפרטים את יתרת המשתמש.
במקום זאת, כל המערכת מסתמכת על היסטוריית עסקאות. מה שאנו קוראים לו "ביטקוין" הוא בעצם שרשרת של חתימות דיגיטליות המשקפות היסטוריה של העברת ערך. הבעלות נקבעת לא על ידי החזקת אובייקט סטטי, אלא על ידי היכולת ליצור רשומה חדשה בפנקס זה. כאשר משתמש בודק את יתרת הארנק שלו, התוכנה למעשה סורקת את כל הבלוקצ'יין כדי לחשב את סכום כל העסקאות הלא-מושקעות הנגישות על ידי המפתחות שלו.
ההבדל הארכיטקטוני הזה הוא יסודי לאופן שבו הרשת נשארת מבוזרת. ללא בנק מרכזי שמעדכן פנקס אדון של יתרות, הרשת מסתמכת על שרשרת שקופה וניתנת לאימות של שרשרת שליטה. כל עסקה מצביעה אחורה לעסקה קודמת, ומקשרת עד לרגע שבו המטבעות נטבעו לראשונה על ידי כורה. המבנה הזה מבטיח שעלייה לא ניתן ליצור משום כך, וש היסטוריית כל שבריר של ביטקוין ניתנת למעקב ובלתי ניתנת לשינוי.
היסודות של הבעלות: הצפנת מפתח ציבורי
הבנת זוגות מפתחות
בלב מכניקת עסקאות הביטקוין נמצאת הצפנת מפתח ציבורי. המסגרת המתמטית הזו מאפשרת למשתמשים לייצר זהות דיגיטלית מאובטחת ללא רישום מול רשות מרכזית. הבעלות מוגדרת על ידי החזקת זוג מפתחות: מפתח פרטי ומפתח ציבורי. המפתח הפרטי הוא סוד שנוצר באקראי, דומה לסיסמה, אך מורכב בהרבה. הוא מעניק את הסמכות להעביר כספים.
המפתח הציבורי נגזר מתמטית מהמפתח הפרטי. ניתן לשתף אותו בגלוי מבלי לפגוע באבטחה. מהמפתח הציבורי הזה, הרשת מייצרת כתובת ביטקוין, שמשמשת כיעד לכספים. הדרך החד-כיוונית הזו היא מכרעת. ניתן בקלות לייצר מפתח ציבורי ממפתח פרטי, אך בלתי אפשרי להפוך את התהליך ולהפיק את המפתח הפרטי מהמפתח הציבורי.
הא-סימטריה הזו מאפשרת לרשת לפעול ללא אמון. כאשר משתמש רוצה לקבל כספים, הוא משתף את הכתובת שלו. כאשר הוא רוצה להוציא כספים, הוא משתמש במפתח הפרטי שלו כדי לחתום קריפטוגרפית על הודעה. החתימה הזו מוכיחה שהוא הבעלים של המפתח הפרטי הקשור לכתובת המחזיקה את הכספים, מבלי לחשוף אי פעם את המפתח הפרטי עצמו לרשת או לנמען.
תפקידן של חתימות דיגיטליות
עסקת ביטקוין היא בעצם הודעה שמצהירה, "אני מעביר את הביטקוינים הספציפיים האלה לכתובת חדשה הזו." כדי להפוך את ההודעה הזו לתקפה, היא חייבת להיות חתומה דיגיטלית. החתימה הדיגיטלית נוצרת על ידי יישום המפתח הפרטי של השולח על נתוני העסקה. התהליך הזה מייצר מחרוזת נתונים ייחודית שספציפית בדיוק לעסקה הזו.
אם כל חלק מפרטי העסקה ישתנה—כגון הסכום או כתובת היעד—החתימה כבר לא תתאים. זה מבטיח שברגע שעסקה חתומה ומשודרת, היא לא יכולה להיות שונתה על ידי צדדים שלישיים. משתתפי הרשת, או צמתים, יכולים להשתמש במפתח הציבורי של השולח כדי לאמת את החתימה באופן מתמטי.
אם המתמטיקה מסתדרת, הרשת יודעת שהעסקה לגיטימית ונחתמה על ידי הבעלים האמיתי. אם היא נכשלת, העסקה נדחית מיד. האימות הזה מתרחש אוטומטית על פני אלפי מחשבים ברחבי העולם, ומבטיח את הרשת ללא התערבות אנושית.
| רכיב | פונקציה | נראות |
|---|---|---|
| מפתח פרטי | חותם על עסקאות כדי להוכיח בעלות | סודי (רק הבעלים) |
| מפתח ציבורי | מאמת חתימות מול הכתובת | ציבורי (רשת) |
| כתובת | יעד לקבלת כספים | ציבורי (כל אחד) |
מודל הפלט של עסקת UTXO הלא-מושקעת
איך ביטקוין מטפל בערך
רוב האנשים רגילים למודל ה"מבוסס חשבון" שמשתמשים בו בנקים וכרטיסי אשראי. במערכת הזו, אם יש לך 100$ ומבזבזים 20$, הבנק פשוט מעדכן את רשומת מסד הנתונים שלך ל-80$. ביטקוין משתמש בהיגיון שונה המכונה מודל UTXO (Unspent Transaction Output). במערכת הזו, אין יתרות קבועות, רק חתיכות של ביטקוין שנתקבלו אך טרם הושקעו.
דמיינו את ה-UTXO האלה כמזומן דיגיטלי או גושי זהב בגדלים שונים. אם אתם מקבלים עסקה של 0.5 BTC ואחת נוספת של 0.3 BTC, אתם מחזיקים שני UTXO נפרדים בארנק שלכם. הם לא מתמזגים ל"מטבע" בודד של 0.8 BTC בבלוקצ'יין, גם אם תוכנת הארנק מציגה את הסכום הכולל לנוחות. הם נשארים רשומות ערך נפרדות וממתינות לשימוש.
כאשר אתם יוזמים עסקה, הארנק שלכם בוחר מספיק UTXO כדי לכסות את הסכום שאתם רוצים לשלוח. אי אפשר לחלק UTXO לחצי ללא הוצאתו בשלמותו. זה דומה לאופן שבו מזומן פיזי עובד. אי אפשר לקרוע שטר של 20$ כדי לשלם על פריט של 10$. חובה למסור את השטר בשלמותו ולקבל עודף בחזרה.
קלטים, פלטים ועודף
כל עסקת ביטקוין מורכבת מקלטים ופלטים. קלטים הן הפניות ל-UTXO קודמים שאתם כעת מוציאים. פלטים הן היעדים החדשים לערך הזה. כאשר אתם בונים עסקה, אתם צורכים UTXO קיימים כקלטים ויוצרים UTXO חדשים כפלטים.
לדוגמה, אם כורה מרוויח פרס בלוק של 6.25 BTC, זה UTXO בודד. אם הכורה רוצה לשלוח 1 BTC לאליס, הוא לא יכול פשוט לשלוח 1 BTC. הוא חייב לבנות עסקה שלוקחת את UTXO של 6.25 BTC כקלט. העסקה תהיה עם שני פלטים.
הפלט הראשון שולח 1 BTC לאליס. הפלט השני שולח את ה-5.25 BTC הנותרים חזרה לכתובת של הכורה עצמו. הפלט השני הזה מכונה "פלט עודף". בבלוקצ'יין, ה-UTXO המקורי של 6.25 BTC מסומן כמושקע ואינו תקף יותר לעסקאות עתידיות. במקומו, נוצרים ונרשמים שני UTXO חדשים (1 BTC ו-5.25 BTC). שרשרת הקלטים והפלטים הזו יוצרת את ההיסטוריה הבלתי שבירה של המטבע.
Bitcoin Script: שפת העסקאות
ביצוע מבוסס מחסנית
עסקאות ביטקוין אינן רק העברות ערך פשוטות; הן הוראות מתכנתות. ההוראות האלה כתובות בשפה המכונה Bitcoin Script. בניגוד לשפות תכנות מורכבות המשמשות לפיתוח תוכנה כללי, Script פשוטה מכוונה. היא "מבוססת מחסנית", כלומר היא מעבדת נתונים על ידי דחיפת פריטים לרשימה (המחסנית) וביצוע פעולות על הפריטים העליונים.
Script אינה Turing-complete. זה אומר שהיא חסרה את היכולת ליצור לולאות או לוגיקה מורכבת שעלולה לרוץ ללא הגבלה. בחירה זו בעיצוב היא תכונה אבטחה מכוונת. על ידי הגבלת המורכבות של השפה, הרשת מונעת לולאות אינסופיות שעלולות לקרוס צמתים או לאפשר לתוקפים להעמיס את המערכת בפקודות יקרות חישובית.
הסקריפט קובע את התנאים שחייבים להתקיים כדי להוציא UTXO. כאשר עסקה נוצרת, השולח מצרף "סקריפט נעילה" (ScriptPubKey) לפלט. הסקריפט הזה אומר בעצם, "הכספים האלה ניתנים להעברה רק על ידי מי שיכול לספק חתימה התואמת להאש מפתח ציבורי ספציפי זה."
שחרור ואימות
כדי להוציא את הכספים מאוחר יותר, הבעלים יוצר עסקה חדשה המכילה "סקריפט שחרור" (ScriptSig). הסקריפט הזה מכיל את החתימה הדיגיטלית ואת המפתח הציבורי. כאשר צומת מאמתת עסקה, היא מפעילה את שני הסקריפטים יחד. היא מניחה את סקריפט השחרור על המחסנית ואחריו את סקריפט הנעילה מהעסקה הקודמת.
הצומת מבצעת את ההוראות בסדר עוקב. אם התוצאה הסופית היא "True", העסקה תקפה והכספים ניתנים להעברה. אם התוצאה היא "False", העסקה לא תקפה. המנגנון הזה מאפשר תנאים מורכבים יותר מבעלות פשוטה.
למשל, סקריפטים יכולים להיות כתובים כדי לדרוש מספר חתימות (Multi-Sig), שבו שתיים מתוך שלושה מפתחות מוגדרים חייבים לחתום לפני שהכספים יועברו. סקריפטים יכולים גם לאכוף נעילות זמן, המונעות הוצאת כספים עד שגובה בלוק מסוים יושג. המתכנתות הזו היא היסוד לתכונות מתקדמות כמו רשת Lightning ו-sidechains, המשתמשות בסקריפטים מורכבים כדי לאפשר התיישבויות מחוץ לשרשרת מהירות וזולות יותר.
מחזור חיי העסקה: מארנק לבלוקצ'יין
יצירה ושידור
מסע עסקת ביטקוין מתחיל בתוכנת הארנק של המשתמש. הארנק אוסף את הקלטים הנדרשים מה-UTXO הזמינים של המשתמש ומגדיר את הפלטים. הוא מחשב את ההפרש בין הקלטים לפלטים, שהופך לעמלת העסקה. ברגע שהפרטים מוגדרים, הארנק משתמש במפתח הפרטי כדי לייצר את החתימה הדיגיטלית.
חבילת הנתונים החתומה הזו משודרת אז לרשת. צומת המשתמש שולחת את ההודעה לעמיתיה, שמצידם מפיצים אותה ברחבי העולם. כל צומת שמקבלת את העסקה מבצעת בדיקה ראשונית. הן מאמתות שהחתימה הדיגיטלית תקפה, שהקלטים לא הושקעו כבר, ושהערכים של העסקה אינם שליליים.
אם העסקה עוברת את הבדיקות האלה, הצומת מוסיפה אותה לאזור ההחזקה הזמני שלה המכונה "mempool" (בריכת זיכרון). ה-mempool אינו תור מרכזי יחיד אלא אוסף מקומי של עסקאות תקפות ולא מאושרות המאוחסנות בכל צומת בודדת. בשלב זה, העסקה ידועה לרשת אך עדיין לא חלק מההיסטוריה הקבועה של הבלוקצ'יין.
שוק העמלות וההעדפה
מכיוון שבלוקים בבלוקצ'יין של ביטקוין בעלי קיבולת גודל מוגבלת, לא כל עסקה ב-mempool יכולה להיכנס לבלוק הבא. המחסור הזה יוצר שוק עמלות. כורים, שבונים את הבלוקים, מוטיבציה כלכלית לכלול עסקאות שמשלמות את העמלות הגבוהות ביותר לבית (sat/vB).
עמלות נקבעות לא על פי ערך הביטקוין הנשלח אלא על פי גודל הנתונים של העסקה. עסקה שמעבירה 10 מיליון דולר עשויה להיות קטנה מאוד בגודל נתונים אם היא משתמשת רק בקלט אחד ופלט אחד. לעומת זאת, עסקה שמעבירה 100$ עשויה להיות גדולה בגודל נתונים אם היא אוספת אבק מחמישים קלטים זעירים כדי לבצע את התשלום.
משתמשים שרוצים אישור מהיר לעסקאותיהם חייבים לצרף עמלה תחרותית מספיק כדי למשוך כורים. בתקופות של עומס רשת גבוה, ה-mempool מתמלא בעסקאות לא מאושרות. כורים בוחרים באופן טבעי את המציעים הגבוהים ביותר. עסקאות עם עמלות נמוכות עלולות לשבת ב-mempool שעות או ימים עד שהתנועה תירגע או השולח יגביר את העמלה.
כרייה והסכמה
כורים ממלאים את התפקיד הסופי בחיזוק מכניקת העסקאות. כורה בוחר קבוצת עסקאות מה-mempool שלו כדי ליצור בלוק מועמד. הם אז מתחרים ב-Proof of Work (PoW), תהליך חישובי אינטנסיבי שבו הם פותרים חידת מתמטיקה המבוססת על הנתונים בבלוק הזה.
תהליך זה דורש האשינג חוזר של כותרת הבלוק עם מספר אקראי המכונה nonce עד שההאש התוצאתית יורד מתחת לרמת קושי יעד ספציפית. הקושי מתכוונן אוטומטית כל 2,016 בלוקים כדי להבטיח שבלוקים חדשים יימצאו בקירוב כל 10 דקות, ללא קשר לכמה כוח חישוב מצטרף לרשת.
ברגע שכורה מוצא פתרון תקף, הוא משדר את הבלוק החדש לרשת. צמתים אחרות מקבלות את הבלוק ומאמתות את הפתרון. הן גם מאמתות מחדש כל עסקה כלולה בבלוק כדי להבטיח שלא הופרו חוקים. לאחר האימות, צמתים מעדכנות את העותק המקומי שלהן של הבלוקצ'יין, מסירות את העסקאות הכלולות מה-mempool שלהן. העסקה כעת מאושרת.
טיפול בבעיית ההוצאה הכפולה
אתגר ההכפלה הדיגיטלית
בעולם הדיגיטלי, מידע מועתק בקלות. אם אתה שולח תמונה בדוא"ל, אתה עדיין שומר את הקובץ המקורי. עבור מטבע דיגיטלי, זה מציג פגיעות קריטית המכונה בעיית ההוצאה הכפולה. ללא מנגנון למניעתה, שחקן זדוני יכול לחתום על עסקה ששולחת 1 BTC לסוחר ולשלוח במקביל עסקה נוספת ששולחת את אותו 1 BTC לעצמו או לצד אחר.
במערכת מרכזית, בנק מונע זאת על ידי תחזוקת פנקס אדון. ברשת מבוזרת, אין רשות מרכזית שתגיד איזו עסקה הגיעה ראשונה. ביטקוין פותר זאת באמצעות שילוב של פנקס הבלוקצ'יין הציבורי ו-Proof of Work.
מכיוון שכל צומת מלאה מחזיקה עותק שלם של הבלוקצ'יין, לכל הרשת יש הסכמה לגבי אילו UTXO תקפים כרגע. אם משתמש מנסה לשדר שתי עסקאות סותרות, צמתים יקבלו את הראשונה שהן רואות וידחו את השנייה כניסיון להוציא קלטים שכבר הוזכרו.
בלתי ניתנות להיפוך באמצעות Proof of Work
עם זאת, הבדלי זמנים עלולים להוביל לצמתים שונות לקבל גרסאות שונות של האמת זמנית. כאן הכרייה הופכת מכרעת. ה"אמת" בביטקוין מוגדרת על ידי השרשרת הארוכה ביותר עם הכי הרבה Proof of Work מצטבר. ברגע שעסקה כלולה בבלוק, היא הופכת לחלק מההיסטוריה הרשמית הזו.
כדי להפוך או לבזבז כפול עסקה שכבר אושרה בבלוק, תוקף יצטרך לכרות מחדש את הבלוק הזה ואת כל הבלוקים הבאים מהר יותר משאר הרשת גם יחד. זה מכונה מתקפת 51%. העלות האדירה באנרגיה ובחומרה הנדרשת להשגת זאת הופכת את הפנקס לבלתי ניתן לשינוי למעשה.
ככל שיותר בלוקים נוספים מעל הבלוק המכיל עסקה ספציפית, האבטחה גדלה באופן אקספוננציאלי. עסקה עם אישור אחד בטוחה בדרך כלל, אך אחת עם שישה אישורים נחשבת בלתי אפשרית מתמטית להיפוך בתנאי רשת רגילים. המנגנון הזה הופך נתונים דיגיטליים, שניתנים להעתקה בקלות בדרך כלל, לנכס דיגיטלי ייחודי ומוגבל.
תפקידן של צמתים בשלמות הרשת
אימות לעומת כרייה
ישנה אי הבנה נפוצה שרק כורים מבטיחים את הרשת. בעוד כורים מסדרים עסקאות ומייצרים בלוקים, "צמתים" הן המבקרים שאוכפים את החוקים. צומת היא כל מחשב שמריץ את תוכנת הביטקוין, מאחסן את הבלוקצ'יין ומאמת תעבורה.
צמתים מלאות מורידות כל בלוק ועסקה. הן בודקות חתימות דיגיטליות, מאמתות שהסכומי קלט מכסים את סכומי הפלט, ומבטיחות שאין מטבעות מושקעים כפול. חשוב מכך, צמתים גם מאמתות את העבודה שביצעו הכורים. אם כורה מייצר בלוק שמפר כלל פרוטוקול—כגון הענקת יותר מדי ביטקוין לעצמו או הכללה של עסקה לא תקפה—צמתים ידחו את הבלוק מיד.
הדחייה הזו מתרחשת ללא קשר לכמה אנרגיה הכורה השקיע כדי ליצור את הבלוק. איזון הכוחות הזה מבטיח שכורים לא יכולים לשנות את חוקי המערכת או להדפיס כסף נוסף. הם משרתים את הפרוטוקול, נשמרים על ידי רשת מבוזרת של צמתים המופעלות על ידי אנשים ועסקים ברחבי העולם.
מבוזרות ואמינות
העמידות של מכניקת עסקאות הביטקוין מסתמכת על הגיוון ומספר הצמתים האלה. ככל שהצמתים מפוזרים יותר, קשה יותר לכל ישות לצנזר עסקאות או לכבות את הרשת. צמתים מתקשרות peer-to-peer, מפיצות נתוני עסקאות כמו שמועה שמתפשטת בהמון.
אין שרת מרכזי לפריצה. אם חלק מהאינטרנט יורד, הצמתים הנותרים ממשיכות לפעול. כאשר הצמתים המנותקים חוזרות, הן מסנכרנות עם הרשת כדי להוריד את ההיסטוריה החסרה. הארכיטקטורה הזו מבטיחה שהפנקס נשאר עקבי וזמין גלובלית, 24/7, ללא הפסקות.
משתמשים יכולים להפעיל צמתים משלהם כדי להשיג ריבונות פיננסית. על ידי אימות העסקאות שלהם בעצמם במקום להסתמך על שירות ארנק צד שלישי, הם מבטלים את הצורך לבטוח באף אחד אחר לגבי מצב הכספים שלהם. זה תואם את האתוס המרכזי של ביטקוין: "אל תבטחו, אמתו."
עמלות רשת ומשקל נתונים
חישוב עלויות
עלות עסקת ביטקוין מובנת לעיתים קרובות באופן שגוי. היא אינה אחוז מהסכום הנשלח, כמו עמלת עיבוד כרטיס אשראי. במקום זאת, זו תשלום מוחלט עבור מקום בבלוק. מקום בבלוק הוא סחורה נדירה, מוגבלת לקיבולת ספציפית לבלוק (קונספטואלית 1MB, אם כי משופרת במשקל SegWit).
מכיוון שהמערכת משתמשת במודל UTXO, גודל הנתונים של עסקה תלוי במורכבות הקלטים והפלטים שלה. עסקה שמאחדת עשרה קלטים קטנים לפלט אחד מכילה יותר נתוני חתימה דיגיטלית מעסקה המשתמשת בקלט אחד. לכן, היא צורכת יותר בתים בבלוק.
כורים גובים ליחידת נתונים, בדרך כלל נמדד בסטושי לבית (sat/vB). "סטושי" הוא היחידה הקטנה ביותר של ביטקוין (0.00000001 BTC). אם שער השוק הנוכחי הוא 50 sats/byte, עסקה פשוטה עשויה לעלות 2$, בעוד עסקה מורכבת עשויה לעלות 10$, גם אם הן מעבירות את אותו ערך.
| גורם | השפעה על עמלה | סיבה |
|---|---|---|
| מספר קלטים | מגביר עמלה | כל קלט דורש סקריפט חתימה דיגיטלית |
| מספר פלטים | מגביר עמלה | כל פלט מוסיף נתונים לכתובת חדשה |
| עומס | מגביר שער | ביקוש גבוה מעלה את מחיר השוק sat/byte |
ניהול עומס
עמלות רשת משתנות בפראות על פי הביקוש. כאשר ה-mempool ריק, משתמשים יכולים לשלם עמלה מינימלית ועדיין לקבל אישור בבלוק הבא. כאשר הרשת עמוסה, משתמשים חייבים להתחרות. ארנקים בדרך כלל מעריכים את העמלה הנדרשת על ידי הסתכלות על התור הנוכחי ב-mempool.
למשתמשים שקבעו עמלה נמוכה מדי, העסקה לא אבודה; היא פשוט תלויה ב-mempool. בסופו של דבר, אם היא לא נלקחת על ידי כורה, היא תוסר מזיכרון הצמתים, והכספים יישארו למעשה בארנק השולח. במצבים דחופים, משתמשים יכולים להשתמש במזרני עסקאות או פרוטוקולי "Replace-by-Fee" (RBF) כדי להגביר את העמלה של עסקה תקועה, ומשדרים אותה מחדש עם תמריץ גבוה יותר לכורים.
מסקנה
מכניקת עסקאות הביטקוין מייצגת מעבר ממערכות פיננסיות מבוססות אמון למערכות קריפטוגרפיות מבוססות אימות. על ידי החלפת יתרות חשבון במודל UTXO, ביטקוין מתייחס לערך כשרשרת שליטה דיגיטלית שניתן לבדוק על ידי כל אחד. הצפנת מפתח ציבורי מבטיחה שרק בעל המפתח הפרטי יכול לייצר העברות אלה, ומספקת רמת אבטחה שאינה מסתמכת על כספות בנקים או בדיקות זהות.
המערכת הזו מחוברת על ידי האינטראקציה של צמתים, כורים וחוקי Bitcoin Script הספציפיים. שפת הסקריפט, למרות שהיא מוגבלת מכוונה בהיקף, מספקת את הלוגיקה הנדרשת לאימות בעלות ולאפשר תנאי הוצאה מורכבים מבלי לפגוע ביציבות הרשת. שוק העמלות התחרותי וה-mempool מבטיחים שהמשאב המוגבל של מקום בבלוק מוקצה ביעילות, בעוד Proof of Work מספק את האבטחה התרמודינמית שהופכת את הפנקס לבלתי ניתן לשינוי.
הבנת המכניקה הזו חושפת מדוע ביטקוין מתואר כפנקס מבוזר. זה לא רק מטבע אלא מערכת חשבונאות קפדנית ואוטומטית המוחזקת על ידי הסכמה גלובלית. כל היבט, ממתמטיקת המפתחות לקלטים של קבוצת ה-UTXO, מעוצב כדי לאפשר לזרים להחליף ערך ללא מתווכים, ומפתור את בעיית ההוצאה הכפולה באמצעות קוד במקום סמכות.
ביטקוין מחליף אמון במוסדות בהוכחה קריפטוגרפית, ומבטיח שהעברת ערך מאומתת, בלתי ניתנת לשינוי ובבעלות מוחלטת של מחזיק המפתח.