סגוויט (SegWit) הוא שיפור טכנולוגי שהוטמע בפרוטוקול הביטקוין באמצעות מזלוג רך (סופט פורק) באוגוסט 2017.
לאחרונה פתחתי בסדרת מאמרים המסבירים את השיפורים הטכנולוגיים שהוטמעו ויוטמעו בביטקוין. במאמר הקודם (מומלץ לקרוא בטרם ממשיכים) למדנו על חשיבות חוקי הקונצנזוס בפרוטוקול הביטקוין, וכיצד שינוי בהם עלול להוביל למזלוג שרשרת הבלוקים ויצירת ענף חדש (ואף מטבע חדש). היום נתעמק ב-Segregated Witnesses (הפרדת חתימות) או בקיצור – סגוויט, נבין מהו השיפור הטמון בהפרדת החתימות והמשמעויות המגיעות עמו, ונחקור מדוע לקח לקהילת הביטקוין כשנתיים להטמיע אותו במערכת. רמז: כסף ופוליטיקה.
שימו לב, המאמר מסביר תחילה את הבעיות שסגוויט פתר לעומקן, ולאחר מכן כיצד עשה זאת. אם ברצונכם לדלג על החלק הטכני, מומלץ לקרוא תחילה את הנושא הראשון 'סקלאביליות' ולאחר מכן לדלג לכותרת "הפרדת חתימות". עם זאת, אני ממליץ בחום לקרוא את המאמר כולו על מנת שתוכלו להבין כיצד הפרוטוקול עובד לעומק, בצורה די מונגשת.
סקלאביליות – Scalability
בכדי שתוכלו להבין מדוע פרוטוקול הביטקוין צריך את סגוויט, עליכם תחילה להבין את בעיית הסקלאביליות – בעיה מוכרת עוד מתחילת דרכו של הביטקוין.
סקלאביליות היא היכולת של הרשת לתת מענה לביקוש רב יותר. כפי שבטח שמתם לב עד כה, שוק המטבעות הדיגיטליים בכלל והביטקוין בפרט חווים בחודשים האחרונים עליה מסיבית בביקוש ובשימוש. בחודשים אלו בעיית הסקלאביליות הורגשה לראשונה במלוא עוצמתה, כאשר גובה העמלות ברשת הביטקוין הגיע לממדים לא ריאליים מספיק בכדי לאפשר שימוש יומיומי ובר קיימא.
כידוע לכם, בלוק בשרשרת הבלוקים הוא למעשה שטח אחסון לכל סוג של מידע. המידע המאוחסן בשרשרת הבלוקים של הביטקוין הוא מידע חשבונאי – כלומר רישומי העברות כספיות, כאשר לכל בלוק (לכל דף ביומן החשבונאי) יש נפח אחסון מוגבל של עד 1 מ"ב. המשמעות היא שבבלוקצ'יין של הביטקוין (לפני הטמעת סגוויט) הכמות הממוצעת של עסקאות הנרשמות בבלוק הייתה כ-2,000 טראנזקציות.
זאת אומרת שמדובר בכמות של בין 3.3 ל-7 טרנסאקציות בשנייה. הסיבה שתרגמתי את זה לשניות היא כדי ניתן יהיה להשוות את קצב התעבורה של הביטקוין, לזה של חברת האשראי 'ויזה' הנמדדת בכ-1,700 טרנסאקציות בשנייה. הפערים כפי שאתם שמים לב, הם לא קטנים כלל. עם זאת, הטמעת והנגשת סגוויט, בשיתוף עם שיפורים טכנולוגיים עתידיים (אך קרובים) בהחלט יאפשרו לביטקוין לתת פתרון לקצבי תעבורה עצומים (ואף גבוהים יותר מאלו של ויזה).
קלט ופלט של טרנסאקציה בביטקוין
בשביל להבין את סגוויט, צריך להבין תחילה כיצד בנויה טרנסאקציה בביטקוין. חשוב לי להדגיש לטובת אלו מכם שלא יודעים: בעוד שאין ביכולתו של אף גוף או אדם לעקוב אחר כסף מזומן (היכן עבר בדרך אליכם), בביטקוין ניתן לדעת עבור כל מטבע את ההיסטוריה המוחלטת שלו משום שהיומן החשבונאי (הבלוקצ'יין) חשוף לכולם ומתעדכן בזמן אמת מהרגע שהוא נוצר.
לצורכי ההסבר, נניח וכרגע יש לי 1.5 ביטקוין בארנק, אותם קיבלתי ב-3 טרנסאקציות נפרדות משלושה אנשים שונים. כאמור, ההיסטוריה של 1.5 המטבעות רשומה ביומן. נקרא לטרנסאקציות הללו (TX(0), TX(1) ו-(TX(2, וכשארצה לבצע שימוש ב-1.5 ביטקוין, אאחד את שלושתן ביחד לקלט אחד – (TX(INPUT. כך זה ייראה:
כעת נסתכל על זה מהצד ההפוך. נניח שאת הטרנסאקציה הראשונה (TX(0 אתם שלחתם לי. לצורך הדוגמה, בעת השליחה היה לכם 1 ביטקוין בארנק, אך שלחתם לי 0.4 בלבד. הפלט של הטרנסאקציה יוגדר כ-(TX(OUTPUT והוא יהיה שווה 0.4 כמובן. עם זאת, מבחינת המערכת, שלחתם את הביטקוין השלם כולו מהארנק, ו-0.6 חזרו לארנקיכם כעודף – Change. ממש כמו תשלום במזומן בקיוסק. ככה נראתה הטרנסאקציה מהצד שלכם:
הדוגמה שהצגתי עבורכם, היא דוגמה מופשטת מאד לטרנסאקציה בביטקוין. בפועל, זה הרבה יותר מסובך מזה, משום שלכל טרנסאקציה יש מספר חוקים שהיא חייבת לעמוד בהם.
חתימות דיגיטליות
לאחר שהבנו את הפלטים והקלטים של טרנסאקציות בביטקוין, נפרט בקצרה את התהליך שעוברים המפתחות הפרטיים והציבוריים, ובכלל למה הם משמשים. נניח שאליס מעוניינת לשלוח לבוב מטבעות. על מנת שזה יקרה, בוב מוכרח להראות שבבוא הרגע הוא יוכל לספק הוכחת בעלות על הביטקוין. כאשר אליס שולחת את המטבעות, היא נועלת אותם למפתח הציבורי של בוב. כעת, בוב יצטרך 'לשלוף' את המפתח הפרטי שלו על מנת לשחרר את הטרנסאקציה ולקבל את המטבעות (למען הסר ספק, את התהליך הזה הארנק עושה עבורכם).
אך אליס צריכה אף היא להוכיח שיש לה את הזכות לשלוח את הביטקוין מלכתחילה. לכן כאשר היא שולחת את הטרנסאקציה למפתחו הציבורי של בוב, היא משתמשת במפתח הפרטי שלה לחתום על הטרנסאקציה. כעת, בהינתן החתימה של אליס והמפתח הציבורי של בוב, ניתן לוודא שאכן בוב הוא בעל המפתח הפרטי היחיד שמשויך לציבורי – ולכן הוא זה שמחזיק בביטקוין מעתה והלאה, ולא אחר. לסיכום, המפתח הפרטי הוא הוכחת הבעלות על מטבעות הביטקוין (ולכן הוא "הדבר" הכי חשוב!). הוכחה זו אגב, נקראת "נתוני חתימות" (Signature Data).
ניעזר באנלוגיה קטנה על מנת שתוכלו להבין זאת טוב יותר. דמיינו כי המפתח הציבורי הוא תיבת דואר קטנה (אלו שיש בסניפי הדואר). כשאליס רוצה לשלוח לבוב טרנסאקציה, היא ניגשת לתיבת הדואר שלה, ובעזרת המפתח הפרטי שלה פותחת אותה. לאחר מכן היא מוציאה מעטפה מתוך התיבה אשר מכילה שטרות (או במקרה שלנו, ביטקוין) ומשחילה אותה לתיבת הדואר של בוב, כך שמרגע זה הוא היחיד שיכול לגשת למעטפה (לביטקוין) באמצעות מפתחו הפרטי אשר משמש אותו לפתיחת התיבה. המפתח הפרטי משמש את בוב להוכחת הבעלות על הביטקוין, ואילו המפתח הציבורי הוא לצורכי ווידוא שאכן המפתח הפרטי מיועד לתיבה שלו.
עכשיו כשסיימנו עם ההסבר על טרנסאקציות וחתימות דיגיטליות, אפשר להמשיך הלאה. קודם לכן ציינו שכל בלוק מוגבל בתקרה של 1 מ"ב נפח אחסון. לאחר תהליכי מחקר התברר שנתוני החתימות הדיגיטליות תופסים כ-65% מנפח האחסון של בלוק. כלומר אם כל בלוק מכיל בממוצע 2,000 טרנסאקציות המשמעות היא ש-2,000 הטרנסאקציות נכנסות ב-35% מנפחו "האמיתי" של הבלוק, בעוד ששאר המקום נתפס ע"י נתוני החתימות. זכרו את חלק זה, שכן הוא ישחק תפקיד חשוב בהמשך.
פונקציות גיבוב (Hash Functions)
יש לנו עוד מספר משוכות קטנות לעבור בטרם מגיעים להסבר המלא על סגוויט, והמשוכה הבאה בתור היא פונקציות גיבוב קריפטוגרפיות – אלו המשמשות את הכורים לפתרון הבלוקים.
פונקציית גיבוב (Hash Function) היא פונקציה חד כיוונית, כלומר פונקציה שבהינתן הקלט שלה, נוכל לחשב את הפלט – אך בהינתן הפלט, יהיה לנו קשה מאד לחשב את הקלט. לפני שאתם בורחים בבהלה, אשתמש בדוגמה הנפלאה של דפי סיני:
בפונקציה הרגילה Y = X + 5 נוכל לדעת עבור כל X מהו ה-Y, ועבור כל Y מהו ה-X. למשל, אם נציב Y=10 נדע שה-X הוא 5.
עכשיו נשחק משחק קטן: עליכם לבצע שורש למספר X, ולקחת את הספרות החמישית והשביעית אחרי הנקודה. נתון לנו ש-X=35 אזי:
כעת נתון לנו ש- Y=13. מהו ה-X?
על מנת לחשב את X תיאלצו לפתוח בהליך ניסוי וטעייה שייקח לכם ככל הנראה זמן רב. כלומר, זוהי 'חידה' חד כיוונית אשר בהינתן הקלט נוכל לחשב את הפלט, אך בהינתן הפלט – יהיה לנו קשה מאד לחשב את הקלט. דבר נוסף שחשוב לדעת בנוגע לפעולת ה-Hashing הוא שניתן להכניס כקלט כל 'גודל' אפשרי (החל מספרה או אות, דרך קבצי מוזיקה ועד אינסוף) – אך הפלט שיתקבל תמיד יהיה באורך זהה. במנגנון הביטקוין אגב, משתמשים באלגוריתם ה-SHA256 עבור פעולת ה-Hashing, כלומר אורך הפלט יהיה 256 ביטים (כמות תווים בינאריים, כלומר 256 אפסים או אחדות).
באג חשילות הטרנסאקציות – Transaction Malleability Bug
חשילות הטרנסאקציה היכולת לשנות קידוד של טרנסאקציה כך שהמשמעות שלה נשארת זהה (ולכן נשארת תקינה), אך בעקבות השינוי, מזהה הטרנסאקציה (פונקציית ה-Hash הקריפטוגרפית) משתנה. בדוגמה שלפניכם תוכלו לראות כיצד הוספת של תו ה-"." (נקודה) בסוף המשפט הוביל לשינוי מקצה לקצה בפונקציית ה-Hash.
ברשותכם, אנצל את ההזדמנות לתזכורת קצרה: הבלוקצ'יין הוא נצחי (Immutable), כלומר מהרגע שהבלוק נחתם והתווסף לשרשרת, לא ניתן לבצע בו שינויים. בעוד שהמאפיין הזה הוא הכרחי לשמירה על אבטחת הרשת והמידע בה, יש בו חולשה אחת שלא צפו. מה אם בוצע שינוי כלשהו במידע לפני שהוא נכנס לבלוק? הרי, גם אם יגלו זאת מאוחר יותר, לא ניתן יהיה לעשות כלום בעקבות המאפיין שצוין דלעיל.
אז מה גורם לחשילות הטרנסאקציות? ובכן, התברר שהחתימות הדיגיטליות המתלוות לקלט הטרנסאקציות ניתנות למניפולציות ולשינויים, אשר יובילו לשינוי הקלט עצמו לפונקציית ה-Hash שיוצרת את מזהה הטרנסאקציה. כך שלמעשה, ניתן לבצע מניפולציות בחתימות הדיגיטליות שיגרמו לכך שהרשת לא תראה את מזהה הטרנסאקציה המקורי. לדוגמה, נניח שיוסי רוצה ששמוליק ישלח לו 2 מטבעות ביטקוין. שמוליק יוצר את הטרנסאקציה ושולח אותה לכתובתו הציבורית של יוסי (כפי שתואר קודם לכן עם אליס ובוב). כעת, הטרנסאקציה מחכה להיכנס לבלוק. בזמן הזה, יוסי משתמש בחשילות הטרנסאקציה ומשנה את החתימה של שמוליק בצורה שתשנה את הקלט לפונקציה של הטרנסאקציה.
כעת, קיים סיכוי שהטרנסאקציה שעברה שינוי תאושר לפני ששמוליק יקבל אישור שהטרנסאקציה שלו הושלמה, כך שהטרנסאקציה המקורית שוכתבה. עכשיו, כשיוסי קיבל את 2 המטבעות, הוא יוכל פשוט להגיד לשמוליק שהוא לא קיבל את 2 המטבעות שהוא חייב לו. שמוליק יסתכל בהיסטוריית הטרנסאקציות שלו ויגלה שאכן ההעברה לא הושלמה – וישלח שוב (תחת הנחה שיש לו מטבעות נוספים בארנק). כתוצאה מכך, יוסי מקבל 4 מטבעות במקום 2.
הפרדת חתימות – Segregated Witnesses
אם כן, עד כה דנו בשתי סוגיות עיקריות. הראשונה הייתה בעיית הסקלאביליות, אשר מורגשת כיום בעיקר לאור מגבלת גודל הבלוק של 1 מ"ב, ואילו השנייה הייתה ניצול הבאג בחשילות הטרנסאקציות, שמאפשר לאנשים מיומנים להפעיל מניפולציות על רשת הביטקוין כפי שיוסי עשה לשמוליק.
כעת, נכנס סגוויט לתמונה.
סגוויט הוא מזלוג רך (Soft Fork) אשר מאפשר לטרנסאקציות להכיל קלטים חדשים מסוג מיוחד שתומך סגוויט. בקלטים הללו, 'נתוני החתימות' (Signature Data) מופרדים מהמבנה הבסיסי של הטרנסאקציה, ומכאן השם "הפרדת חתימות" (Segregated Witnesses). כזכור לכם מהמאמר הקודם, סופט פורק הוא הוספת חוק לפרוטוקול אשר אינו מחייב את כל המשתמשים, אלא את אלו המעוניינים בכך.
בסגוויט זה בא לידי ביטוי בדרך שבה הצמתים השונים רואים את הטרנסאקציה. למה אני מתכוון? ובכן צמתים ישנים, אשר לא עדכנו את גרסת התוכנה הכוללת סגוויט, יראו את הטרנסאקציות החדשות ללא החלק הנוסף של החתימות אך עדיין יוכלו לפרשן כתקינות (תאימות לאחור, זוכרים?). לעומת זאת, צמתים משודרגים אשר תומכים בסגוויט – יראו את החלק הנוסף המכיל את החתימות.
אבל אם נתוני החתימות עדיין בתוך הבלוק – מה עשינו בזה?
השמטתי בכוונה פיסת מידע חשובה מחוץ להסברים כדי לנצל את הרגע הדרמטי הזה להפיג את המסתורין. כזכור לכם, הכורים הם אלו שמכניסים לתוך הבלוק את הטרנסאקציות ומפעילים על הבלוק את אותן מניפולציות ניסוי וטעייה על פונקציית ה-Hash של הבלוק.
עם זאת, ישנה טרנסאקציה אחת שלא דיברתי עליה והיא נקראת טרנסאקציית ה-Coinbase. טרנסאקציה זו היא הראשונה שנרשמת בבלוק, ותוכנה הוא "פרוטוקול יקר, תן לי – לכורה הנהדר שכרה את הבלוק – 12.5 מטבעות ביטקוין (הגמול לכורה בעת כתיבת המאמר) כגמול על פעולותיי". היופי בטרנסאקציה הזו טמון בכך שכעת, התווספה אליה הפתעה. מפתחי הביטקוין הבינו שהם יכולים להוסיף פלט לטרנסאקציה הזו, אשר יכלול התחייבות שכל נתוני החתימות תואמים את הטרנסאקציות שכלולות בבלוק. שינוי זה הוא שמאפשר לצמתים הלא-משודרגים לאמת טרנסאקציות על אף שאינם רואים את נתוני החתימות עצמם.
וכך, בצורה גאונית ביותר, נפתרות שתי הבעיות שצוינו קודם לכן:
- כאמור נתוני החתימות תפסו כ-65% מנפח הבלוק, אך בזכות סגוויט זה משתנה. מנגנון החישוב הנוכחי של 'גודל הבלוק' שונה למנגנון חישוב אחר הנקרא 'משקל הבלוק'. בחישוב המשקל, מבנה הבסיס של טרנסאקציה רגילה (שאיננה סגוויט) נחשב עדיין לפי גודלה (כאם סגוויט לא קיים), אבל מכיוון שנתוני החתימות בטרנסאקציות סגוויט הופרדו, הטרנסאקציה שלהן "מקבלת הנחה" וכעת שוקלת פחות. המשמעות היא שבהשוואה למצב הקודם, נקבע רף גבוה יותר לגודל הבלוק עבור הצמתים המשודרגים אשר יכולים לראות עד 4MB במקרה האידאלי, לעומת צמתים לא משודרגים אשר ימשיכו לראות בלוקים של עד 1MB (מכיוון שאינם רואים את החתימות המופרדות). אם ברצונכם להרחיב על חלק זה, לחצו כאן למאמר מצוין של אחד ממפתחי הביטקוין המובילים ג'ימי סונג.
- כעת שהחתימות הופרדו מהטרנסאקציות, לא ניתן להשתמש בבאג חשילות הטראנזקציות כדי לבצע מניפולציות על קלט הטרנסאקציה, ונמנעת האפשרות "לעבוד" על הפרוטוקול.
הפוליטיקה שמאחורי סגוויט – כי איך אפשר בלעדיה?
כן, כן. גם בעולם הביטקוין קיימים פוליטיקה ומאבקי כוחות, וכשמדובר בבעיית הסקלאביליות ובניסיון השגת הקונצנזוס להטמעת סגוויט – על אחת כמה וכמה.
סגוויט הוא שיפור טכנולוגי שכאמור דורש מזלוג רך. מאחר ומדובר בשינוי די גדול בפרוטוקול, הוכנס תנאי שדורש קונצנזוס לפיו לפחות 95% מהכורים יאשרו תמיכה בשיפור. כאשר בשנת 2015 הוצג פתרון סגוויט בכנס בהונג קונג ע"י ד"ר פיטר וולה – Peter Wuille (מפתח מוכר ומנוסה מאד בעולם הביטקוין) היה נדמה שזוהי אכן התשובה (לפחות הזמנית) לסקלאביליות שכולם חיכו לה, ובהתאם לכך הייתה תקווה גדולה להגיע לקונצנזוס מהיר.
באותה עת, החלו דיונים בקרב מפתחי הביטקוין והכורים על סוגיית הגדלת תקרת גודל הבלוק באמצעות מזלוג קשיח. להזכירכם מזלוג קשיח הוא שינוי חוק והפיכת השרשרת לחסרת תאימות לאחור, סוגיה שמתנגשת משמעותית עם קונצנזוס הרשת. לאחר הצגת פתרון סגוויט לעולם, הבינו הכורים שמדובר במזלוג רך ולא קשיח, והחלו להתנגד באופן בוטה.
עבר לא מעט זמן עד שהצליחו להבין מה עומד מאחוריי התנגדות הכורים, אך לבסוף הצליחו. הכורים (בראשות חברת הכרייה Bitmain) אינם מעוניינים בקהילת פיתוח אידאולוגית ומדעית ששוקלת בכובד ראש כל שינוי, לכן הם ניסו "לפטר" את קהילת המפתחים ע"י קידום פרוטוקול שהם יודעים שהמפתחים לא יתמכו בו. מעבר לזה, והסיבה העיקרית באמת, היא שהם רוצים כוח ושליטה. הכוח והשליטה באו לידי ביטוי ב-AsicBoost, טכנולוגיה אשר מוגנת בפטנט ומוטמעת בשבבי הכרייה של החברה. AsicBoost אפשרה לביטמיין להגדיל את רווחיהם בעד 30% ע"י מציאת "קיצור דרך" באלגוריתם ה-PoW של הביטקוין, ולאור זאת לצמצם את מתחריהם עד כדי נתח שוק עצום. סגוויט כמובן פתר את הניצול המתואר.
בנוסף לכורים, היו מספר מפתחים שלא היו מרוצים מהפתרון שהציע סגוויט. לטענתם, סגוויט הוא פתרון זמני ולא מספיק טוב, ושיש להגדיל את מגבלת תקרת גודל הבלוק כפי שדנו קודם לכן. כך פוצלה גם קהילת המפתחים לשניים: המפתחים שהתנגדו לסגוויט התאגדו תחת קבוצת Bitcoin Unlimited והחלו לצבור תמיכה כנגד סגוויט. כך החל המאבק המפורסם ביותר בתולדות המטבעות הקריפטוגרפיים – סגוויט או הגדלת תקרת גודל הבלוק.
(UASF (User Activated Soft Fork
באזור מרץ 2017, לאחר כשנה וחצי של ניסיונות התדיינות וגישור, לחלק מקהילת הפיתוח שמאחורי סגוויט וקהילת המשתמשים שהאמינה בשיפור הטכנולוגי – הגיעו המים עד נפש. לכן, הוצב אולטימטום לכורים: "אנחנו עוברים לסגוויט".
עד ה-1 באוגוסט 2017 היה על הכורים לעדכן את תוכנת הביטקוין שהם מריצים לתוכנה תומכת סגוויט, ולאותת כי הם חלק מכוחות הכרייה שתומכים בשיפור. הכורים הבינו שאם לא יתמכו בסגוויט, תיווצר שרשרת חדשה (ומטבע חדש, בהתאם למיזלוג קשיח) וכתוצאה מכך הם עלולים להפסיד המון כסף. לכן הם נאלצו להתמודד מול החלטה קשה. האם אנחנו מפסידים את הרשת לגמרי, ומנסים ליצור רשת חדשה באמצעות מזלוג קשיח, או שמא אנחנו 'מתקפלים' ותומכים בסגוויט?
לצורכי דיון בדילמה ומתוך רצון לנסות לגשר על הפערים בין הצדדים בפעם האחרונה, קם מנכ"ל ה-Digital Currency Group, בארי סילברט, וארגן מפגש 'הפסקת אש' אשר הביא את מה שמוכר לנו בקהילה כיום כ"הסכם ניו יורק".
הסכם ניו יורק – The New York Agreement
ב-21 במאי 2017 נפגשו נציגי מפתח של קהילת הביטקוין הבינלאומית בניו יורק לטובת דיון בדילמה. ההחלטה שהתקבלה הייתה כדלקמן: הטמעת סגוויט תחולק ל-2 שלבים שכללו הטמעת סגוויט בשלב הראשון, והגדלת תקרת גודל הבלוק בשלב השני (מה שמוכר בקהילה כ-SegWit2x). למעשה, הכורים ומפתחי Bitcoin Unlimited הסכימו להטמיע סגוויט, בתנאי שמספר חודשים לאחר שסגוויט יופעל – תסכים שאר הקהילה להגדיל את תקרת גודל הבלוק.
עם זאת, 'הסכם ניו יורק' היה אחיזת עיניים. בניו יורק אכן נפגשו נציגי מפתח בקהילת הביטקוין הבינלאומית, אך נציגים של קהילות הפיתוח והמדענים שהובילו את פיתוח סגוויט, כגון ביטקוין קור ובלוקסטרים כלל לא הגיעו. למעשה, תומכי סגוויט לא הסכימו מלכתחילה להגדיל את מגבלת תקרת הבלוק שכן לטענתם מדובר בפלסטר – פתרון זמני – ורחוק מאד מפתרון לטווח הארוך. הרי אם חושבים על זה בצורה הגיונית, אם הביקוש גדל למצב ש'תוקע' את הרשת וכפתרון נגדיל את תקרת גודל הבלוק (באמצעות מזלוג קשיח כאמור) – מה נעשה כשהרשת תהיה עמוסה שנית גם עם בלוקים גדולים יותר?
אם נמשיך להגדיל את תקרת גודל הבלוק בכל פעם שהרשת תהיה עמוסה, גודל שרשרת הביטקוין (אשר נמדד ב-GB) יהיה כה גדול עד שאנשים שמחזיקים עותק שלם של השרשרת, יפסיקו לעשות את זה. רק לסבר את האוזן, מהרגע הולדת הביטקוין ועד היום, 9 שנים אחרי, גודל השרשרת המלא הוא כ-155GB של מידע. אמנם אין זה מעט, אך זהו לא גודל שכונן קשיח פשוט לא יכול להתמודד איתו. אם נגדיל את מגבלת תקרת גודל הבלוק, גודל השרשרת יפסיק לגדול בצורה ליניארית ויגרום לאנשים להפסיק להחזיק עותק מלא. כך עלולה להיווצר ריכוזיות (מכיוון שמספר הצמתים המלאים יפחת), ובהתאם לכך תיחלש האבטחה של הרשת וייפתחו דלתות לתקיפות כגון מתקפת ה-51% שצוינה במאמר הקודם.
חשוב להדגיש כי בעתיד יהיה צורך בהגדלת תקרת גודל הבלוק, אך מאחר וזהו הליך שדורש מזלוג קשיח – מחכים לעשות את זה "כבדרך אגב" ביחד עם שיפורים טכנולוגיים רבים נוספים. ככה לפחות יהיה "Tradeoff" שווה, ולא תהיה פגיעה בחוקי הקונצנזוס של הרשת לחינם.
אז מה קרה בסוף?
המתח ברשת היה רב. הכורים הבינו שהם עלולים להפסיד כספים רבים אם לא יאמצו את סגוויט, ולכן כל אחד בקצב שלו החל לאותת שיטמיע סגוויט. כך, עד ה-1 באוגוסט 2017, אותתו 85% מכוחות הכרייה שהם תומכים בסגוויט, והחלו לאכוף את חוקי הקונצנזוס החדשים.
לאור UASF, החליטו חלק מאותם 'גורמי מפתח' בקהילה כגון חברת הכרייה ביטמיין, רוג'ר וור ועוד ליצור במזלוג קשיח את ביקאש (ביטקוין קאש) בו הגדילו את מגבלת תקרת גודל הבלוק פי 8 (ל-8 מ"ב). לטענתם מדובר בחזונו האמיתי של סטושי נקמוטו, אשר רצה שביטקוין יהווה מערכת מזומנים דיגיטליים, ולא Store of Value כזהב. עם זאת, הסיבה האמיתית לכך היא רצון לשלוט – ובעיקר להרוויח כסף באמצעות ה-AsicBoost. הרי, בביקאש אין סגוויט ולכן ניצול ה-AsicBoost עדיין אפשרי במטבע שכמעט כולו בשליטתם.
כמו כן, חלקו השני של הסכם ניו יורק, כלומר – הגדלת תקרת גודל הבלוק ל-2MB, בוטל לאחר שהתגלה שאין לו מספיק תמיכה – לא בקרב הכורים, לא בקרב המשתמשים, ולא בקרב המפתחים (שנכשלו בכל מקרה).
שישה חודשים לאחר מכן
- נכון להיום כ-20% מהטרנסאקציות נעשות באמצעות כתובות סגוויט.
- זירות המסחר והארנקים המובילים נמצאים בתהליך הטמעה מתקדם של השיפור הטכנולוגי בארנקיהם. המשמעות היא שבהערכה גסה, ב-3 חודשים הקרובים נגיע להטמעה רחבה יותר משמעותית.
- רוב הבלוקים שנכרים כיום נמצאים באזור ה-1.5 מ"ב נפח.
- נכרו בלוקים אשר נפחם גדול מ-2 מ"ב וזאת מבלי להגדיל את הבלוק במזלוג קשיח.
- מספר הטרנסאקציות בבלוק גדל משמעותית (פי 2 ויותר).
- עלות העמלות לטרנסאקציה ירדה לאפסית (אם כי לא 100% בעקבות סגוויט).
- פתרון באג חשילות הטרנסאקציה מאפשר שיפורים עתידיים נוספים כגון לייטנינג נטוורק.
לסיכום
עברנו הרבה יחד עד שהגענו הלום, אך כעת אתם מבינים מהו סגוויט ועד כמה הוא שיפור משמעותי לפרוטוקול הביטקוין. בנוסף, נחשפתם גם אם מעט לפוליטיקה שקיימת מאחורי הביטקוין, וכיצד נוצרו קבוצות שונות בעלות כל אינטרס שתוכלו לחשוב עליו – פרט מרווחתכם.
השיפור הטכנולוגי שסגוויט מביא עמו הוא רק תחילת הדרך! בעיית הסקלאביליות רחוקה מלהיפטר, וישנם שיפורים נוספים שבדרך לאימפלמנטציה. במאמר הבא בסדרת 'מפרקים את ביטקוין לחלקים' נחקור לעומק את לייטנינג נטוורק – כיצד היא עובדת, מתי היא צפויה להיות מונגשת להמונים ועד כמה מותר לנו להיות Bullish (כלומר לצפות לעלייה בערך הביטקוין) בזכותה.
תודה מיוחדת לעודד לייבה, מני רוזנפלד, אריאל הורוביץ, יגאל דראיירמן ותומר קרניסקי על העזרה בווידוא אמיתות תוכן המאמר.