**מערכת הוכחת עבודה** (באנגלית: **Proof-of-work system**) היא מתודה שבאמצעותה ניתן למנוע התקפת מניעת שירות (התקפת DoS) ושימושים לא תקינים אחרים בשירותים כגון גנבת מטבעות קריפטוגרפיים.

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

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

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

רקע
---

מערכת פופולרית מסוימת, שממומשת ב-Hashcash (מערכת למניעת דואר זבל), משתמשת בפונקציות גיבוב הופכי חלקיות כדי להוכיח שנעשתה עבודה, ורק אז ניתן לשלוח הודעת דואר אלקטרוני. למשל, הדוגמה הבאה מייצגת כ-252 חישובי גיבוב (האש) שנועדו כדי לשלוח מייל ל: `calvin@comics.net` ב-19 בינואר 2038:

X-Hashcash: 1:52:380119:calvin@comics.net:::9B760005E92F0DAE
זה מאומת על ידי חישוב יחיד, באמצעות הבדיקה שגיבוב באמצעות SHA-1 של החותמת (משמיטים את הכותרת `X-Hashcash:` כולל הנקודתיים, וכל כמות של רווחים עד לספרה '1') מתחיל עם 52 אפסים בבסיס בינארי, או 13 אפסים בבסיס הקסדצימלי:

```
0000000000000756af69e2ffbdb930261873cd71
```

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

מערכת הוכחת עבודה בביטקוין
--------------------------

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

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

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

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

הערות שוליים
------------

1. ↑  דוורק סינתיה; נאור מוני, pricing via processing or combatting junk mail advances in cryptology, **Lecture Notes in Computer Science No. 740**, Springer: 139–147
2. ↑  ג'ייקבסון מרקוס; ג'ולס ארי, Proofs of Work and Bread Pudding Protocols, **Communications and Multimedia Security**, Kluwer Academic Publishers
3. ↑  On most Unix systems this can be verified with `echo -n 1:52:380119:calvin@comics.net:::9B760005E92F0DAE | openssl sha1`
4. ↑  Ittay Eyal, Emin Gun Sirer, Majority is not Enough: Bitcoin Mining is Vulnerable, **arXiv:1311.0243 [cs]**, 2013-11-15 doi: 10.48550/arxiv.1311.0243