פעם בכיתה ד' נתנו לילדים משימה פשוטה: להביא תעודה של ההורים מהיסודי. רוב הילדים חזרו עם דפים מצהיבים, עם ציונים בכתב יד ועיטור של גיר שנתקע במדבקה של ההסתדרות. אבל אחד – תומר – חזר בלי תעודה. במקום זה, הוא המציא סיפור מעורר השראה על שריפה, עכבר שאכל את המסמכים, וסבתא אחת שהייתה אחראית על הארכיון ונעלמה באותו שבוע ליוון. לא היה לו הוכחה. רק עלילה.
וזה בדיוק מה שקורה, במידה מסוימת, גם בבלוקצ’יין. כולם מדברים, מעבירים עסקאות, מאשרים בלוקים – אבל השאלה מתי בדיוק כל דבר קרה? ובכן, התשובה קצת יותר מורכבת משנדמה.
כולם מסכימים על הכול – חוץ מהזמן
עולם הבלוקצ'יין גאה בכך שאין בו סמכות אחת. זוהי נשמת אפו. כל דבר שמישהו מכתיב מלמעלה, הוא זר מהותית לקריפטו.
זה מכריח את עולם הקריפטו לבנות מחדש דברים שבעולם הרגיל נארים מובנים מאליהם. שליטה ומטבעות כמובן, אבל עוד דברים רבים.
אחד מהדברים שעולם הקריפטו מתמודד איתם משחר קיומו הוא העדר זמן מוסכם.
איננו מודעים לכך, אבל העובדה שהשעה נכון לכתיבת שורות אלו היא 23:49 לא ניתנה למשה מסיני. זוהי החלטה של גוף ריכוזי של בני אדם, שאומנם אין עליה חולק ברמה העקרונית, אבל היא מוכתבת. שום בלוקצ'יין אינו מסוגל להגדיר למשתמשים את השעה שבמחשב שלהם – זה מנוגד מהותית לביזור. אין פייסבוק אחת שתחליט מה השעה, אין שרת מרכזי שיכתוב למעלה "השעה עכשיו היא 13:42:56". כל מחשב ברשת (צומת) מחזיק שעון משלו, וכשהוא מעבד עסקה או מדווח עליה, השעה שבו היא שמוזנת בבלוקצ'יין. הבעיה היא שבמחשבים אחרים עלולות להופיע שעות אחרות, אם בשל אי דיוקים קטנים, אים בשל תקלות או חוסר כוונון, אם בשל חלקיקי השניות שלוקח לביטים לעבור מקצה אחד של העולם לקצה אחר – שהרי כל רשת בלוקצ'יין מאופיינת בריבוי שרתים ובריבוי מיקומים. בקיצור, השרתים השונים מעניקים חותמת זמן שונה לכל עסקה.
אוקיי, בסדר. אתם אומרים. אבל מה הבעיה עם זה?
ובכן, דמיינו שאתם שולחים טרנזקציה – תשלום קטן על פיצה דיגיטלית – והעסקה שלכם מתחרה עם עוד מיליון עסקאות אחרות. מי בא קודם? מי מאחר? מי מתחרה על אותו NFT בדיוק באותו רגע? ומה אם כעבור חצי דקה מוכר הפיצה שילם קצת מהביט הזה שקיבל כדי לקנות פלאפל? הוא יוכל לשלם רק אם הספיק לקבל. אבל האם הוא הספיק לקבל? תלוי איזה מחשב שואלים… כאן מתחילות הבעיות.
ביטקוין ואת'ריום – שעון לא ממשי
בביטקוין ובאת’ריום, העסקה נרשמת בבלוק. כל בלוק כזה כולל חותמת זמן – כן, יש תאריך ושעה. אבל זה לא מדויק. כאמור, זה מבוסס על השעון של מי שיצר את הבלוק (הכורה או המאמת). זה לא עקרוני לביטקוין, תיאורטית, אפשר קצת לשחק עם השעון הזה, להקדים או לאחר בכמה דקות, והבלוק עדיין יתקבל. כלל המחשבים של הרשת ידברו זה עם זה ויכריעו לבסוף מה הייתה העסקה הקודמת ומה הנוכחית, וגם אם תהיה מחלוקת, מה שהרוב מחליטים יתקבל על כלל הרשת. זה אפילו לא משנה אם טכנית הסדר היה הפוך (עלול לקרול כשהפרשי זמן בין עסקאות קטנים מאוד) – העיקר שיש הסכמה ברורה.
הבעיה היא שלדבר אחד עם השני זה איטי. במיוחד כשיש אלפי מחשבים. עד שהם מסכימים מי בא לפני מי – הלכה חצי שעה.
בדיוק בגלל זה ביטקוין קובע בלוק כל 10 דקות. יש לו זמן להמתין. את'ריום שיפר את זה – בלוק כל 12 שניות – אבל עדיין: הסדר נקבע לפי הסכמה בין מחשבים, לא לפי שעה מוחלטת.
וזה יוצר המון סרבול. כדי לדעת מה קרה קודם, הרשת צריכה להגיע להסכמה (קונצנזוס). זה לוקח זמן, אנרגיה, ומגביל מאוד את מספר העסקאות.
ואז הגיע סולאנה, עם רעיון מוזר: בואו נבנה שעון שאי אפשר לזייף
כאן נכנס לתמונה אנאטולי יקובנקו, עם הטוויסט העלילתי: מה אם אפשר לבנות שעון… בלי שעון?
לא שעון רגיל. לא כזה שמראה 14:03 לפי הזמן בקליפורניה. אלא משהו שיאפשר לכל מחשב בעולם לדעת מתי עסקה קרתה, ואיפה היא נמצאת בציר הזמן של הרשת – בלי לבקש אישור מאף אחד אחר.
הרעיון הזה הפך ל-Proof of History – הוכחת היסטוריה. שם דרמטי, אבל הרעיון עצמו חכם בצורה מעצבנת.
איך זה עובד בפועל? הסבר בגובה העיניים (וגובה השרת)
בואו נדמיין מחשב שמבצע פעולה מאוד פשוטה שוב ושוב: הוא לוקח מספר, עושה עליו פעולה מתמטית מסובכת (נגיד, הרצת "SHA256" – שזה סוג של הצפנה), ואז לוקח את התוצאה ומריץ שוב, שוב, שוב. מין דומינו מתמטי, שאין דרך לדלג עליו – אתה חייב לעבור שלב אחר שלב.
ככה:
יש לך קלט A
אתה מחשב SHA256(A) = B
ואז SHA256(B) = C
ואז SHA256(C) = D
וכן הלאה.
כל שלב לוקח זמן קבוע. אם תעשה מיליון כאלה, תיקח בערך X שניות. והכי חשוב: אי אפשר לדעת מה תהיה התוצאה של השלב המיליון בלי לעשות את כל המיליון שקדמו לו.
עכשיו, נניח שאתה מקבל עסקה: העברת 2 SOL מחיים ללאה. אתה פשוט מדביק אותה לתוך רצף החישובים הזה, אחרי החישוב ה-783,541 למשל. ואז אפשר להגיד: "העסקה הזאת קרתה בין חישוב 783,541 ל-783,542".
וזה גאוני. כי עכשיו כל מחשב ברשת – בלי לשאול אף אחד – יכול לבדוק את ההיסטוריה, לחשב בעצמו את החישובים, ולוודא שהעסקה הזו באמת קרתה בזמן הזה. בלי קונצנזוס. בלי שיחות טלפון. בלי תיאומים. רק מתמטיקה קרה.
למה זה חשוב כל כך?
כי זה חוסך את הצורך להגיע להסכמה על הסדר. אתה כבר יודע מה קרה קודם – כי כל אירוע "חקוק" בזמן באופן קריפטוגרפי.
ולכן אפשר פשוט לאשר בלוקים בבת אחת, בלי לחכות שכולם יסיימו להתווכח. זה כמו שופט במשחק כדורגל שיש לו מצלמת VAR על כל צעד במשחק – והוא לא צריך להתייעץ עם אף אחד. רק להריץ אחורה ולבדוק.
האם זה באמת כל כך טוב?
שאלה מצוינת. כמו כל קסם, גם פה יש קאץ’.
יתרונות:
מהירות מטורפת: סולאנה מסוגלת (על הנייר) לעבד עשרות אלפי עסקאות בשנייה, כי היא לא צריכה תיאומים מסובכים.
דיוק: כל פעולה מקבלת מיקום מדויק בציר הזמן.
סקלאביליות: אפשר להעמיס על הרשת כמו על וויז ביום שני בבוקר – והיא ממשיכה לרוץ.
חסרונות:
השעון הזה רץ במקום אחד. לפחות בשלב הראשון, יש שרת מרכזי (או כמה) ש"מריצים" את רצף ה-Hashes. נכון, כולם יכולים לבדוק – אבל ההפקה נעשית במקור. זה מעלה שאלות על ביזור.
דרישות חומרה גבוהות: כדי להתמודד עם הקצב, צריך מחשבים חזקים במיוחד. לא כל אחד יכול להשתתף.
מורכבות: הקונספט פחות אינטואיטיבי ממנגנוני קונצנזוס רגילים. קשה לאמת אותו בלי להבין את המערכת לעומק.
אז כן, זה פתרון מבריק – אבל לא נטול אתגרים.
לסיכום: סולאנה בונה את הזמן בעצמה
בעולם שבו בלוקצ'יין הוא אמור להיות מדויק, בטוח ומתואם – הרעיון שלא יודעים "מתי" כלום קרה באמת נשמע כמו בדיחה. Proof of History בא להכניס את השעון לתוך הבלוקצ’יין, לא על ידי אמון, אלא על ידי מתמטיקה.
והאם זה עובד? במובנים רבים – כן. סולאנה הצליחה להגיע למהירויות שהיו פעם בגדר חלום. אבל כמו כל שעון טוב – גם זה צריך תחזוקה, כי אם הזמן מתקלקל, כל המערכת יכולה לאבד את הקצב.
אז בפעם הבאה שמישהו ישאל "אבל מה השעה בדיוק בבלוקצ’יין?" – תגידו לו: תלוי. אם זו סולאנה – יש לה תשובה. ואם זו רשת אחרת – שיקרא את הפוסט של תומר על הסבתא והעכבר.