אימות הגרלה אקראית
הדביקו קוד תעודה כדי לבדוק אותו.
מה הכלי הזה בודק
מישהו הריץ הגרלה ונתן לכם קוד תעודה. הדף הזה אומר לכם אם הקוד עקבי מבפנים — האם המספרים באמת נובעים מהזרע שהמארגן פרסם, והאם טביעת האצבע באמת מכסה את הזרע ואת ההגדרות האלה.
הכול רץ בדפדפן שלכם. התעודה לעולם לא נשלחת לשום מקום.
שתי הבדיקות
טביעת אצבע. התעודה נושאת גיבוב SHA-256 מעל הזרע והגדרות ההגרלה. הדף הזה מחשב מחדש את הגיבוב הזה. אם הוא לא תואם לזה שמאוחסן בתעודה, הזרע או ההגדרות שונו אחרי שההתחייבות נעשתה.
הרצה חוזרת. המחולל עם הזרע הוא דטרמיניסטי לחלוטין, כך שאותו זרע ואותן הגדרות תמיד מייצרים את אותם המספרים. הדף הזה מריץ מחדש את ההגרלה ומשווה. אם המספרים שונים, התוצאה נערכה.
תעודה עוברת רק כששתי הבדיקות עוברות.
מה בדיקה תקינה מוכיחה ומה לא
היא מוכיחה שהמארגן לא שינה בשקט את הזרע, את ההגדרות או את המספרים אחרי שהתחייב עליהם.
היא לא מוכיחה שהזרע היה בלתי צפוי. אם המארגן בחר את הזרע בעצמו ולעולם לא פרסם את טביעת האצבע לפני ההגרלה, הוא יכול היה לנסות זרעים רבים ולשמור את זה שאהב. לטביעת האצבע יש משמעות רק כשהיא פורסמה לפני ההגרלה, במקום כלשהו עם חותמת זמן — פוסט, תגובה, הודעה.
זו כל הנקודה בשלב ההתחייבות: הוא הופך “תסמכו עליי” למשהו שכל אחד יכול לבדוק בדיעבד.
איך מריצים הגרלה שאנשים יכולים לאמת
- הגדירו את הטווח וכמה מספרים אתם צריכים.
- לחצו על יצירת טביעת אצבע. פרסמו את הגיבוב שקיבלתם — בפוסט ההגרלה, בתגובה, בכל מקום שהמשתתפים יכולים לראות אותו עם חותמת זמן.
- סגרו את ההרשמה, ואז הגרילו.
- פרסמו את הזרע ואת התעודה. כל אחד יכול להדביק אותה כאן.
דילוג על שלב 2 הופך את התעודה לקישוטית בלבד. פרסום טביעת האצבע קודם הוא מה שנותן לה משקל.
למה זרע לבדו לא מספיק
זרע הוא רק טקסט. הוא מייצר מספרים רק כשידוע איך הוא הורחב לתוכם — איזה אלגוריתם, איזה טווח, כמה מספרים, האם חזרות היו מותרות.
זו הסיבה שטביעת האצבע מכסה גם את הזרע וגם את ההגדרות. בלעדיה, מארגן יכול לפרסם זרע, ואז לטעון בדיעבד שההגרלה רצה על טווח אחר ושמערכת מספרים אחרת הייתה התוצאה האמיתית. ההתחייבות סוגרת את הדלת הזו.
למה טביעת אצבע לא ניתנת לזיוף
גיבוב SHA-256 הוא פונקציה חד-כיוונית: קל לחשב אותה קדימה, ואין דרך ידועה להריץ אותה אחורה. זה מה שהופך את ההתחייבות למחייבת.
כדי לרמות, מארגן היה צריך לפרסם טביעת אצבע אחת ואז לחשוף בדיעבד זרע אחר שמייצר את אותו הגיבוב — התקפת פרה-אימג’ שנייה (second-preimage attack). איש לא מצא כזו נגד SHA-256, ומרחב החיפוש הופך כוח גס לחסר משמעות: 2²⁵⁶ גדול ממספר האטומים המוערך ביקום הנצפה.
דבר נוסף שהוא לא יכול לעשות הוא להטות את התוצאה. שינוי תו יחיד בזרע משנה בערך מחצית מהביטים של הגיבוב, בלתי צפוי. אין דרך לחפש זרע שגם תואם לטביעת אצבע שפורסמה וגם מייצר זוכה נוח, כי צריך לקבע את הגיבוב קודם, והגיבוב תלוי בהכול.
כך שטביעת האצבע נועלת לחלוטין את הזרע ואת ההגדרות. הדבר היחיד שהיא לא נועלת הוא מתי היא פורסמה — וזו הסיבה שחותמת הזמן על הפוסט שלכם עושה חצי מהעבודה.
איפה הגרלות שניתנות לאימות חשובות
- מבצעי מתנות ותחרויות — מי שלא זכה הם אלה ששואלים
- בחירה קהילתית ובחירת DAO — מי מקבל מקום, מענק, תפקיד
- מחקר — תוכנית דגימה שסוקר יכול להריץ מחדש ולאשר
- הגרלות פרסים עם חשיפה משפטית — בחלק מהתחומים השיפוטיים נדרשת שיטה שניתן להוכיח, לא רק טענה
- כל דבר שזר צריך להאמין בו — ככל שהקהל רחוק יותר, כך “בחרנו באקראי” שווה פחות כשלעצמו