בעיית ההוצאה הכפולה ואמון מבוזר: מדוע ביטקוין זקוק לבלוקצ'יין

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

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

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

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

מנגנוני בעיית ההוצאה הכפולה

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

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

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

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

הבלוקצ'יין כשרת חותמת זמן מבוזר

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

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

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

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

הוכחת עבודה: עלות ההונאה

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

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

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

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

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

קלטים, פלטים ומודל UTXO

ביטקוין לא משתמש בחשבונות ויתרות כמו בנק מסורתי. במקום זאת, הוא משתמש במודל הנקרא Unspent Transaction Outputs (UTXO). ההבחנה הטכנית הזו חיונית למניעת הוצאה כפולה ברמת הפרוטוקול. כשאתה מסתכל על יתרת ארנק ביטקוין, אתה בעצם רואה את סכום כל ה-UTXO שמפתחות הפרטיות שלך יכולות לפתוח.

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

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

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

תפקיד שפת הסקריפט של ביטקוין

כדי להבטיח שרק הבעלים החוקי יכול להוציא UTXO, ביטקוין משתמש במערכת סקריפטים. Bitcoin Script היא שפת תכנות פשוטה מבוססת מחסנית. היא אינה שפת מטרה כללית כמו Python או C++. היא מוגבלת בכוונה כדי לתעדף אבטחה ודטרמיניזם. היא לא מאפשרת לולאות אינסופיות, מה שמונע מתוקפים לסתום את הרשת בקוד מורכב.

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

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

שפת הסקריפט הזו מאפשרת יותר מהעברות פשוטות. היא מאפשרת תנאי הוצאה מורכבים, כמו ארנקי Multi-Signature (Multi-Sig). בהגדרת Multi-Sig, סקריפט הנעילה עשוי לדרוש שתיים מתוך שלוש חתימות ספציפיות כדי לשחרר את הכספים. הגמישות הזו משפרת את האבטחה ומאפשרת פתרונות משמורת מבוזרים ללא הסתמכות על אמון צד שלישי.

חדר ההמתנה: דינמיקת ה-mempool

לפני שעסקה נקבעת בבלוקצ'יין, היא חיה ב-mempool. ה-mempool (בריכת זיכרון) הוא אזור החזקה לעסקאות לא מאושרות. כל צומת ברשת מחזיקה בגרסה משלה של ה-mempool. כשמשתמש משדר עסקה, היא מתפשטת ברשת ויושבת בבריכות האלה, מחכה שכורה יבחר אותה.

ה-mempool הוא המקום שבו מתקפת הוצאה כפולה סבירה להיות מנסה. תוקף עשוי לשדר עסקה עם עמלה נמוכה לסוחר ועסקה סותרת עם עמלה גבוהה יותר לעצמו. כורים הם שחקנים רציונליים כלכלית. הם בדרך כלל נותנים עדיפות לעסקאות עם עמלות גבוהות יותר כדי למקסם את הרווחים שלהם.

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

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

אישורים וסופיות

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

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

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

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

אישורים רמת אבטחה מקרה שימוש טיפוסי
0 נמוכה (מסוכנת) פריטי קמעונאות קטנים ומעטים
1 בינונית קניות יומיות, העברות
6 גבוהה מאוד תשלומים גדולים, בורסות

רשת הצמתים: מאמתים מבוזרים

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

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

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

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

האשרייט: המגן של הרשת

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

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

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

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

תמריצים כלכליים והלווינג

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

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

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

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

מסקנה

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

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

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