חזרה להתחלה
חמישה רעיונות. אפשר להתחיל מכל אחד.

Proof of Work

Proof of Work - למה קשה למצוא אבל קל לבדוק?

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

Bitcoin ו-Kaspa משתמשות בשביל זה בשיטה שנקראת Proof of Work - הוכחת עבודה.

הרעיון המרכזי פשוט:

קשה למצוא תוצאה שמתאימה לדרישה של הרשת - אבל כשמישהו כבר מצא אותה, קל מאוד לבדוק שהיא נכונה.

הכורים מנסים שוב ושוב

כורה מכין בלוק שהוא רוצה להציע.

אחר כך הוא מבצע חישוב על המידע של הבלוק.

החישוב מחזיר תוצאה מספרית.

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

ושוב.

ושוב.

לפעמים צריך לבצע מספר עצום של ניסיונות לפני שמתקבלת תוצאה מתאימה.

אי אפשר לדעת מראש איזה ניסיון יצליח

הכורה לא יכול לדעת מראש:

“אם אשנה את המספר לכאן, בטוח אצליח.”

כל ניסיון נותן תוצאה שקשה לחזות מראש.

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

לתוצאה של החישוב הזה קוראים Hash.

אפשר לחשוב עליו כמו מכונה:

מידע נכנס → תוצאה מספרית יוצאת

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

מתי ניסיון נחשב הצלחה?

כל ניסיון של הכורה יוצר Hash - מספר שקשה לחזות מראש.

לפי כללי הפרוטוקול נקבע מספר יעד - Target.

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

זה לא רק דימוי. כך הרעיון באמת עובד.

אפשר להמחיש במספרים קטנים:

נניח שהתוצאות האפשריות הן מ-0 עד 99.

אם הכלל אומר:

“כל תוצאה מתחת ל-10 מצליחה”

אז 0 עד 9 הן הצלחות - בערך ניסיון אחד מתוך עשרה.

אם משנים את הכלל ל:

“רק תוצאה מתחת ל-2 מצליחה”

עכשיו רק 0 או 1 מצליחים - ולכן הרבה יותר קשה למצוא תוצאה מתאימה.

במציאות טווח המספרים עצום, אבל הרעיון אותו רעיון:

ככל שה-Target נמוך יותר, פחות תוצאות מתאימות - ולכן צריך בממוצע יותר ניסיונות.

קשה למצוא - אבל קל לבדוק

כאן נמצא החלק החשוב של Proof of Work.

הכורה אולי ביצע מיליוני או מיליארדי ניסיונות עד שמצא תוצאה מתאימה.

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

הוא מבצע את החישוב הנדרש ובודק:

האם התוצאה באמת עומדת בדרישה?

אם כן - עבודת ה-Proof of Work תקינה.

אם לא - הבלוק נדחה.

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

יותר כוח חישוב נותן יותר ניסיונות

כורה שמסוגל לבצע יותר חישובים בשנייה יכול לנסות יותר פעמים.

ולכן יש לו סיכוי גבוה יותר למצוא תוצאה מתאימה.

אבל גם לכורה חזק מאוד אין “תור שמור”.

וגם כורה קטן יכול למצוא את התוצאה הבאה.

פשוט יש לו פחות ניסיונות מתוך כלל הניסיונות ברשת.

מספר הניסיונות שמערכת כרייה יכולה לבצע בשנייה נקרא Hashrate.

מי קובע את הקושי?

לא יושב אדם שבוחר ידנית את ה-Target הבא.

כללי הפרוטוקול קובעים מראש איך לחשב אותו.

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

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

אם הם נוצרים לאט מדי, הוא נעשה קל יותר.

רמת הקושי הזאת נקראת Difficulty - דרגת קושי.

Bitcoin ו-Kaspa עושות את ההתאמה בצורה שונה ובקצבים שונים, אבל הרעיון זהה:

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

אם כורה ינסה להשתמש ב-Target קל יותר ממה שהכללים דורשים, ה-Nodes יכולים לזהות ולדחות את הבלוק.

אז למה בכלל צריך Proof of Work?

אם כל מחשב היה יכול פשוט לומר:

“אני רוצה ליצור את הבלוק הבא”

לא הייתה דרך פשוטה לדעת למי לתת עדיפות.

גם לספור מחשבים או זהויות לא באמת פותר את הבעיה.

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

Proof of Work משתמש במשהו שקשה יותר ליצור בחינם:

עבודה חישובית אמיתית.

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

לכן Bitcoin ו-Kaspa לא נותנות כוח לפי מספר שמות או חשבונות.

ההשפעה על מציאת בלוקים קשורה לכמות העבודה החישובית שמבוצעת בפועל.

Proof of Work לא נותן לכורה שליטה על הכללים

נניח שכורה חזק מאוד מוצא בלוק.

ובתוכו הוא מנסה להוסיף עסקה שמוציאה כסף של מישהו אחר בלי רשות.

ה-Proof of Work שלו יכול להיות תקין לחלוטין.

אבל העסקה עדיין לא תקינה.

ה-Nodes בודקים גם את כללי העסקאות.

אם הבלוק מפר אותם - הם דוחים אותו.

כלומר:

Proof of Work נותן הזדמנות להציע בלוק.

הוא לא נותן רשות לשנות את חוקי הרשת.

העבודה גם מקשה על החלפת ההיסטוריה

כל בלוק דורש עבודה חדשה.

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

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

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

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

מה חשוב לקחת מהעמוד הזה?

Proof of Work הוא תחרות של ניסיונות חישוב.

קשה למצוא תוצאה מתאימה.

קל לבדוק תוצאה שכבר נמצאה.

יותר כוח חישוב נותן יותר ניסיונות - ולכן יותר סיכוי להצליח.

אבל גם אחרי שכורה הצליח, ה-Nodes עדיין בודקים שהבלוק עומד בכללים.

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

מקורות

המקורות החיצוניים באנגלית.