מתקדם שיעור 6 4 דקות קריאה

חלוקת פרק זמן ועבודה משותפת

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

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

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

חמישים אנשים שחופרים את אותו הבור לא חופרים חמישים בורות.

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

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

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

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

יש תשובות חלקיות, וכדאי להכיר אותן. הנפוצה ביותר היא הוכחה באמצעות דגימה: בנוסף למטרה האמיתית, השרת מכניס לחלק כמה מטרות מזויפות, שאת התשובות להן הוא כבר מכיר. מי שסקר באמת מוצא את המטרות המושתלות ומחזיר אותן; מי שלא סקר לא יכול לנחש אותן. זו לא הוכחה מלאה — זה מבחן שקשה לרמות.

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

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

מציאה לבד לא יכולה להיות זהה ללקיחה לבד.

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

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

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