תוכן עניינים
בנובמבר 2021 הוטמע ברשת הבלוקצ'יין של ביטקוין העדכון החשוב ביותר שלה מאז שהרשת נוסדה ועלתה לאוויר. טאפרוט (Taproot), העדכון המדובר, נוצר על ידי קהילת המפתחים של ביטקוין באמצעות תהליך של הצעות לשיפור שנקרא BIP (ראשי תיבות של Bitcoin Improvement Proposals), שבו עולות הצעות לשיפור הבלוקצ'יין, מתקיימים דיונים, ומתקבלת ביקורת עמיתים עד לקבלת הסכמה רחבה ובהמשך כתיבת הקוד הרלוונטי.
טאפרוט הפך את רשת הבלוקצ'יין של ביטקוין לסקיילבילית (Scalable), כלומר כזו שיכולה להמשיך לבצע את מה שהיא אמורה לבצע אך בסדרי גודל רחבים משמעותית מאלו המקוריים. העדכון ייעל את תהליך עיבוד הטרנזקציות ברשת הבלוקצ'יין של ביטקוין והפך אותו למהיר וזול יותר, שיפר את רמת הפרטיות ברשת והוסיף לה תשתית לחוזים חכמים.
כפי שנתאר ונסביר בהמשך, טאפרוט הוטמע באמצעות תהליך שנקרא מיזלוג רך (Soft fork), אשר שומר על רצף שרשרת הבלוקים ולא מפצל את הרשת לשתי רשתות נפרדות כפי שקורה כאשר מתבצע מיזלוג קשיח (Hard fork).
במאמר זה נסביר מהו טאפרוט, כיצד הוא שיפר את הבלוקצ'יין של ביטקוין, איך הוא הוטמע ומהן המשמעויות של הטמעתו ברשת הבלוקצ'יין של המטבע הקריפטוגרפי הראשון והמוביל בעולם.
השינוי הגדול של טאפרוט
תהליך אימות הטרנזקציות ברשת הבלוקצ'יין של ביטקוין מתבסס על חתימות דיגיטליות. חתימות אלה נוצרות באמצעות מפתחות פרטיים ומאומתות באמצעות מפתחות ציבוריים. ניתן לקרוא על כך עוד במאמר שלנו: הקריפטוגרפיה של ביטקוין.
לפני ההטמעה של טאפרוט, אימות טרנזקציות ברשת היה תהליך איטי משום שהוא דרש אימות של כל חתימה דיגיטלית מול המפתח הציבורי הרלוונטי. דרישה זו הגדילה את כמות הזמן שהיה נחוץ לצורך אימות טרנזקציות מולטיסיג מורכבות (מולטיסיג, קיצור של Multisignature, כלומר ריבוי חתימות. הכוונה היא לטרנזקציות שהביצוע שלהן דורש מספר חתימות ממספר גורמים שונים או לטרנזקציות שקשורות לכמה וכמה כתובות).
טאפרוט איפשר צבירה של חתימות והציג את האפשרות לאגד מספר חתימות יחד ולאמת אותן בפעם אחת, כלומר ביטל את הצורך להתייחס אל כל חתימה בנפרד. בדרך זו של אימות מספר רב של טרנזקציות בו זמנית, תהליך עיבוד הטרנזקציות הפך לפשוט, מהיר וזול יותר.
אפשרות זו הושגה על ידי שינוי שיטת ההצפנה בבלוקצ'יין של ביטקוין. עד להטמעה של טאפרוט נשענה הצפנת המפתחות הפרטיים והציבוריים בבלוקצ'יין על אלגוריתם חתימות דיגיטליות שנקרא עקומה אליפטית. טאפרוט שינה את שיטת ההצפנה כך שתתבסס על סוג אחר של חתימות אשר נקראות חתימות שנור (Schnorr), שהשימוש בהן איפשר קיבוץ אוסף של טרנזקציות לכדי טרנזקציה אחת. מובן כי השימוש בחתימות שנור הוביל לחסכון משמעותי במקום על גבי כל בלוק ברשת, מאחר ובמקום לתעד בבלוק שורה של טרנזקציות נפרדות ניתן היה עכשיו לתעד טרנזקציה אחת בלבד (אשר כללה בתוכה את הטרנזקציות הנפרדות).
בין השאר איפשר טאפרוט לאחד בין טרנזקציות של חתימה יחידה לבין טרנזקציות מולטיסיג. שילוב זה תרם לחיזוק הפרטיות ברשת משום שאיחוד החתימות הקשה על האפשרות להבחין ביניהן, כלומר הקשה על גורמים המעוניינים בכך להבחין בין המשתתפים השונים בטרנזקציה מסוימת. במילים אחרות, טאפרוט איפשר להסוות טרנזקציות מולטיסיג על ידי הצגתן כטרנזקציה של חתימה אחת ובכך הגביר את הפרטיות של מבצעי הטרנזקיות.
חשוב להדגיש כי מדובר היה בשינוי מאד משמעותי ועמוק אשר נגע ליסוד המהותי ביותר של רשת הבלוקצ'יין של ביטקוין, כלומר למנגנון ההצפנה שלה. כפי שנסביר בהמשך, לעובדה זו הייתה חשיבות רבה באופן הטמעת העדכון ברשת.
טאפרוט וחוזים חכמים
ההטמעה של טאפרוט יצרה תשתית לשימוש בחוזים חכמים על רשת הבלוקצ'יין של ביטקוין. בכך פתח העדכון את הדלת בפני שימושים פיננסיים חדשניים שניתן היה להתחיל ליישם על גבי הרשת.
חוזים חכמים מבצעים פעולות על גבי רשת בלוקצ'יין באופן אוטומטי וזאת על פי תנאים ומועדים שהוגדרו מראש. בהקשר שאנו עוסקים בו, חוזים חכמים על רשת הבלוקצ'יין של ביטקוין מגדירים את התנאים הספציפיים שבהם תתבצע טרנזקציה מסוימת באמצעות המטבע. דוגמאות לתנאים אשר יוגדרו בחוזה החכם הן: הגדרת המפתח הפרטי המתאים אשר נדרש לשם ביצוע הטרנזקציה, מספר החתימות הנדרשות, והמועד העתידי שבו תתבצע הטרנזקציה. למשל: הטרנזקציה תתבצע רק אם יינתנו 3 מתוך 5 חתימות אפשריות, אך במידה ועברו שנתיים ממועד נקוב כלשהו, יספיקו לכך רק 2 חתימות.
טאפרוט הציג את שפת הקוד טאפסקריפט (Tapscript), אשר איפשרה תכנות של חוזים חכמים מורכבים דוגמת החוזה הנ"ל. בנוסף, לפני שטאפסקריפט נכנסה לתמונה נדרשה חשיפה מלאה של החוזה החכם על גבי הבלוקצ'יין. חשיפה זו פגעה בפרטיות המשתמשים והיתה כרוכה בניצול נפח נתונים ניכר על הבלוקצ'יין ולכן גם בעמלות גבוהות יותר. השימוש בטאפסקריפט ייעל זאת בכך שאיפשר לחשוף על הבלוקצ'יין רק את התנאים הרלוונטיים בחוזה החכם ולא את כל החוזה בשלמותו. לדוגמה: פעולה כמו פתיחת ערוץ ברשת הברק, שעד אז היתה חשופה בבלוקצ'יין לעיניי כל, יכלה להתבצע מבלי להיחשף מרגע שהעדכון של טאפרוט הוטמע. אפשרות זו הובילה להגברת הפרטיות, לשימוש בנפח נתונים מצומצם ולהוזלת העמלות. ניתן לקרוא עוד על רשת הברק במאמר שלנו: אז מהי בעצם רשת הברק?
NFTs על הבלוקצ'יין של ביטקוין
כפי שהסברנו, עדכון טאפרוט הגדיל באופן דרמטי את כמות המידע שכל טרנזקציה על גבי רשת הבלוקצ'יין של ביטקוין יכולה להכיל, ובנוסף הציג את טאפסקריפט – שפת קוד שמאפשרת תכנות של חוזים חכמים מורכבים על גבי אותה רשת.
אלא שטאפרוט הוביל לחידוש נוסף ברשת הבלוקצ'יין של ביטקוין – אורדינלס (Ordinals). אורדינלס היא מערכת המאפשרת לסמן סאטושיז, שהם יחידות הביטקוין הקטנות ביותר. מערכת זו שולבה יחד עם תהליך שנקרא חריטה (Inscription) ומאפשר הטמעת מידע כמו טקסט, תמונה ווידאו על גבי סאטושיז. כך נוצרו חריטות אורדינל (Ordinal Inscriptions), אשר מאפשרות לייצר קשר ייחודי בין מידע ספציפי לבין סאטושי ספציפי. קשר זה הופך את האורדינלס ל-NFTs, משום שהוא מייצר נכס דיגיטלי ייחודי שאין נכס דיגיטלי אחר הזהה לו.
תהליך החריטה, שהתאפשר בזכות עדכון טאפרוט, הוא זה שמאפשר להטמיע מידע על גבי החתימה הדיגיטלית שמאמתת כל טרנזקציה ברשת.
מדובר על שינוי מהותי ברשת הבלוקצ'יין של ביטקוין, אשר מאפשר ליצור ולאחסן עליה NFTs. נציין כי בשונה מרשת הבלוקצ'יין של אתריום, ברשת של ביטקוין כל ה-NFTs מאוחסנים על הבלוקצ'יין עצמו.
ניתן לקרוא עוד על אורדינלס במאמר שלנו: אורדינלס – שגעון ה-NFT מגיע לביטקוין.
מיזלוג רך ומיזלוג קשיח
כדי להסביר כיצד התבצע השדרוג של טאפרוט יש להבין מהו מיזלוג רך ומהו מיזלוג קשיח.
מנגנון הקונצנזוס של רשתות בלוקצ'יין הוא המנגנון שלפיו נקבעת מהימנותן של הטרנזקציות המתבצעות ברשת. כללי מנגנון הקונצנזוס משמשים לאימות אותן טרנזקציות. במצב בו מתבצע שינוי במנגנון הקונצנזוס, למשל בעקבות עדכון של תוכנת הבלוקצ'יין לאחר קבלת החלטה על הכנסת כלל חדש למנגנון, ניתן להניח שלא כל הצמתים אשר מריצים את התוכנה (כלומר כל הצמתים ברשת הבלוקצ'יין) אכן יעדכנו אותה לגרסה החדשה שלה, וגם אם יעדכנו אותה הרי שלא כל הצמתים יעשו זאת באותו זמן. כך יכול להיווצר מצב שבו חלק מהצמתים יאשרו טרנזקציה חדשה (כי אותם צמתים עדכנו את התוכנה, כלומר הם פועלים על פי כללי מנגנון הקונצנזוס החדשים) וחלק מהצמתים יפסלו את הטרנזקציה החדשה (כי הם עדיין מריצים את התוכנה הלא מעודכנת). זהו מצב בלתי אפשרי משום שהוא יוצר אי הסכמה לגבי הרצף ההיסטורי של הבלוקצ'יין, כלומר הרצף הנשמר של טרנזקציות מאושרות מיום תחילת פעולתה של הרשת. אי ההסכמה הזו יוצרת פיצול בבלוקצ'יין, שאחריו ישנה שרשרת שבה כל הבלוקים מאושרים, וישנה שרשרת שבה רק חלק הבלוקים מאושרים. פיצול זה נקרא מזלג, ומכאן המושג "מיזלוג" (Fork).
אחרי הטמעה של שדרוג ברשת נוצרים שני סוגים של צמתים: צמתים שהטמיעו את השדרוג (צמתים משודרגים), וצמתים שלא הטמיעו את השדרוג (צמתים ישנים).
מיזלוג רך (Soft fork) הוא הכנסת שינוי בתוכנת הבלוקצ'יין באופן שיש לו תאימות לאחור. במילים אחרות, גם אחרי שדרוג של תוכנת הבלוקצ'יין, כל טרנזקציה שצומת משודרג מאשר, גם צומת ישן מאשר. כך לא נוצרת אי הסכמה לגבי ההיסטוריה של הבלוקצ'יין. במיזלוג רך הצמתים בבלוקצ'יין לא חייבים לעדכן את הגרסה אותה הם מריצים, אך אם ברצונם להשתמש בחוק או בפיצ'ר החדש שהוכנסו, הם יהיו מוכרחים לעשות זאת.
מיזלוג קשיח (Hard fork) הוא הכנסת שינוי בתוכנת הבלוקצ'יין באופן שגורם לאיבוד התאימות לאחור. במצב כזה הקונצנזוס ברשת נשבר משום שמופיעות טרנזקציות שמאושרות על ידי הצמתים המשודרגים, אך נפסלות על ידי הצמתים הישנים.
נזכיר כי מצב של פיצול רשת הבלוקצ'יין של ביטקוין לשני ענפים נפרדים בעקבות מיזלוג קשיח כבר קרה בעבר במקרה של ביטקוין קאש (BCH).
הטמעת טאפרוט במיזלוג רך
הטמעת טאפרוט ברשת הבלוקצ'יין של ביטקוין בוצעה באמצעות מיזלוג רך. אלא שטאפרוט היווה שינוי מהותי במנגנון החתימות, שהוא אולי החשוב ביותר בבלוקצ'יין. נשאלת השאלה, כיצד שינוי כל כך מרחיק לכת עבר כמיזלוג רך ולא כמיזלוג קשיח. במילים אחרות, איך ניתן היה להמשיך לקיים את הקונצנזוס ברשת הבלוקצ'יין כאשר צמתים משודרגים מאשרים טרנזקציות חדשות אשר מבוצעות ברוח העדכון (כלומר מבוצעות על בסיס מנגנון החתימות החדש של חתימות שנור), וצמתים ישנים פוסלים את אותן טרנזקציות ומגדירים אותן כלא חוקיות מאחר והם אינם מריצים את התוכנה המעודכנת (כלומר כלל אינם מזהים חתימות שנור). איך ניתן לצפות שצמתים ישנים יאשרו טרנזקציות אשר חתומות בשיטה שאותם צמתים אינם מכירים?
התשובה לכך היא שמצב זה התאפשר באמצעות מנגנון שהוטמע ברשת הבלוקצ'יין של ביטקוין בעדכון סגוויט (SegWit) אשר קדם לטאפרוט. מנגנון זה הניח מראש כי במועד עתידי כלשהו יוכנסו שינויים ושיפורים ברשת הבלוקצ'יין באמצעות גרסאות חדשות של התוכנה, והוא התבסס על כך שכל טרנזקציה כוללת בתוכה את מספר הגרסה הנוכחית של תוכנת הבלוקצ'יין. הרעיון מאחורי מנגנון זה הוא שכאשר צומת מאמת טרנזקציה הוא בודק את מספר הגרסה שלה. במידה והמספר מוכר לצומת (כי זה צומת משודרג, כלומר צומת שעודכן בגרסה האחרונה של התוכנה), הוא מוודא את חוקיות החתימה. לעומת זאת, אם הצומת לא מכיר את מספר הגרסה בעת בדיקת הטרנזקציה (כי זה צומת ישן שלא עודכן בגרסה האחרונה של התוכנה), הוא מבין שמדובר בטרנזקציה שבוצעה לאחר שהוכנס שינוי במנגנון הקונצנזוס של הבלוקצ'יין ולכן הצומת לא ינסה לאמת את החתימה של הטרנזקציה, אלא ישאיר את פעולת האימות לצמתים המשודרגים.
הצומת הישן לא יבדוק את חוקיות הטרנזקציה, לא יציג אותה כקיימת, לא יכלול אותה בבלוק (אם זה צומת שעוסק בכרייה) ולא ישדר אותה הלאה. הוא רק יעביר אותה לצומת משודרג. בנוסף, אם הטרנזקציה כבר מופיעה באחד הבלוקים, הצומת הישן יקבל אותה כחוקית, כלומר יתייחס אליה כאל חלק אמיתי מההיסטוריה של הבלוקצ'יין. באופן זה נשמרת התאימות לאחור גם במצב בו לאחר הטמעת השדרוג עדיין קיימים ברשת צמתים ישנים.
כך בדיוק נעשה בעדכון טאפרוט ולכן השדרוג לא הוביל למיזלוג קשיח ולפיצול של רשת הבלוקצ'יין של ביטקוין.
לסיכום
עדכון טאפרוט, שהוטמע ברשת הבלוקצ'יין של ביטקוין בנובמבר 2021, הפך את הרשת לסקיילבילית והעלה משמעותית את מספר הטרנזקציות שהרשת הצליחה לעבד. באופן טבעי, שיפור משמעותי זה הפך את ביטקוין לאמצעי תשלום יעיל יותר.
בנוסף לשיפורים הקונקרטיים של ייעול תהליך עיבוד הטרנזקציות, הגברת המהירות, הורדת העלויות, שיפור הפרטיות ושדרוג התשתית לשילוב חוזים חכמים ברשת, אחת התוצאות המשמעותיות ביותר של העדכון היתה העובדה שהטמעתו בוצעה באמצעות מיזלוג רך, כלומר מבלי לפצל את הרשת לשתי רשתות נפרדות. עובדה זו הוכיחה כי ניתן לבצע שינויים מהותיים ברשת הבלוקצ'יין של המטבע הקריפטוגרפי המוביל בביטחון וביציבות.
בנוסף, ההיקף של טאפרוט והעובדה שהוא חולל שינוי דרמטי באחד ממרכיבי רשת הבלוקצ'יין היסודיים ביותר (מנגנון החתימות), העידה על כך שרשת הבלוקצ'יין של ביטקוין אינה מקובעת וארכאית, אלא דינמית, גמישה ובעלת פוטנציאל שינוי גבוה.