חוזים חכמים עם Chainlink VRF לגלגל המזל

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

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1375
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1349
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    794
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1087
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1032
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1129

גלגל המזל בבלוקצ'יין: היכן נשברת הגינות ההגרלה

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

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

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

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

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

מה נותנת הגרלת פרסים הוגנת באופן שניתן להוכיח

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

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

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

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

דרכים ליצירת אקראיות בבלוקצ'יין: השוואה

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

אפשרות מתי מתאימה מגבלות
אורקל חיצוני לאקראיות (Chainlink VRF) סבבים ציבוריים עם פרסים, שבהם נדרש ביקורת בלתי תלויה של התוצאה השהיית אישור: הערך מגיע לאחר כמה בלוקים, והצגה מיידית של הסיבוב אינה אפשרית
פסאודו-אקראיות בשרת מבצעים פרטיים, סיבובי בונוס, סבבי בדיקה פנימיים התוצאה תלויה במפעיל, והיכולת לאמת מוגבלת ללוגים ולמוניטין של הפלטפורמה
סכמה היברידית להגרלה פרסים גדולים, שבהם נדרשים גם תגובת ממשק מהירה וגם הוכחה ציבורית יקרה יותר בתמיכה: שני מקורות אנטרופיה, נוהל פרסום וחשיפה משלו

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

שלבי הטמעת הגרלה על חוזים חכמים

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

  1. ביקורת מכניקה. מפרקים את חוקי ההגרלה, תפקידי המפעיל והמנהל, מקור האקראיות ונקודות שבהן אפשרית התערבות ידנית. בפלט — מפת סיכונים ומגבלות.
  2. תכנון סכמת ההגרלה. קובעים את מבנה החוזה של גלגל המזל: מרשם משתתפים, קבלת הימורים, רגע בקשת האקראיות, כללי סיום וחלוקת פרסים.
  3. הגדרת המעגל. מחברים מקור אקראיות ניתן לאימות, קובעים מגבלות ונוהל הפקדה, מוציאים פונקציות ניהוליות לחתימה מרובה, מוסיפים השהיה והגנה מפני הפעלה חוזרת.
  4. רשת בדיקה. מריצים תרחישים: השהיית תגובת האורקל, סירוב, ניסיון חוזר, הגרלה בלי משתתפים, קריאה לפונקציה מתפקיד זר.
  5. בדיקת תשלומים. משווים סכומים ליתרת החוזה, בודקים מגבלות ומקרים שבהם לא הצליחו לשלוח את הפרס: תשלום כזה נכנס לתור ולא הולך לאיבוד.
  6. מסירה להפעלה. מוסרים נוהל עדכון, הרשאות, הגדרות ניטור והתראות, סדר פעולות בעת תקלה וחזרה לגרסה קודמת.

תצורה, סכמות ונוהלי הגרלה

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

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

מקרה בוחן: צמצמנו תשלומים שנויים במחלוקת לאחר הגרלה

פרויקט גיימינג הגריל פרסים דרך גלגל המזל בכל שבוע, אבל התוצאה נוצרה בשרת ולא אושרה публично. השחקנים ראו רק את הרשומה הסופית, ולכן רצף כושל נתפס כהטיה.

בשיא, שיעור ההגרלות שאחריהן הגיעה פנייה שנויה במחלוקת הגיע ל-4%, ובירור מקרה אחד ארך עד יומיים: התמיכה השוותה ידנית לוגים, ייצואים והתכתבויות.

מה שינו

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

מה השתנה

שיעור הפניות השנויות במחלוקת ירד בערך פי שמונה — מ-4% ל-0.5% מההגרלות. בירור פנייה אחת הצטמצם מיומיים ל-10-15 דקות: ברוב המקרים השאלה נסגרת בקישור לרשומה, ולא בבירור לוגים. אישור ציבורי יש כעת לכל הגרלה, בעבר לא היה לאף אחת.

נשארו מקרים בודדים, והם בעיקר על גישה לחשבון, ולא על הגינות התוצאה. הוספנו ניטור: אם האישור לא עבר או התעכב, מופעלת התראה וההגרלה לא יוצאת לדרך. תשלומים שנויים במחלוקת הצטמצמו לא בגלל החמרת כללים, אלא מפני שאת התוצאה стало ניתן לראות לפני תחילת השיחה.

במה אקראיות ניתנת לאימות שונה ממחולל מספרים?

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

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

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

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

על העיקרון הזה פועלים מחוללים ניתנים לאימות כמו Chainlink VRF. עבור גלגל המזל זה אומר שהמפעיל מפסיק להיות בורר במשחק שלו עצמו: השאלה «האם זה נפל בהגינות?» עוברת ממישור האמון למישור הבדיקה.

ספקות טכניים נפוצים לפני ההשקה

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

כבר פועלת אצלנו הגרלה — אפשר להעביר?

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

מה יקרה אם האורקל לאקראיות אינו זמין?

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

איך מחושבת העלות של פעולות רשת?

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

אפשר לאמת את החוזה בלי הצוות שלכם?

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

נדון במשימה שלכם: מאיפה מתחילים את העבודה

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

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

הצעד הראשון — פירוק המכניקה בשיחה: עוברים על זרימת האקראיות, סכמת החוזים והתפקידים. את האקראיות מחברים דרך Chainlink VRF: התוצאה ניתנת לאימות ציבורית, ולא «מאמינים למילה». לאחר הפירוק אנחנו חוזרים עם סכמה, חלוקה לשלבים עם קבלה בכל שלב והערכה לפי לוחות זמנים.

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