קזינו קריפטו רבים מבטיחים משחק הוגן, אך ללא Provably Fair אלו רק מילים. יישמנו מערכת Provably Fair זו באפליקציות מובייל ל-iOS ואנדרואיד, כאשר כל סבב ניתן לאימות מקומי תוך 2-3 מילישניות. האימות משתמש בפרוטוקול commit-reveal קריפטוגרפי עם client seed שנוצר בחומרה. הזמינו יישום כזה — צרו קשר.
אנו שמים דגש מיוחד על יצירת client_seed — הבסיס לאמון בין השחקן לקזינו. השרת אינו יכול להשפיע על התוצאה מכיוון שהזרע נוצר ישירות במכשיר באמצעות מנגנונים מאובטחים: ב-iOS — SecRandomCopyBytes מ-Security framework, באנדרואיד — SecureRandom CryptoProvider. 32 הבייטים שנוצרו מומרים למחרוזת hex ומוצגים למשתמש. בנוסף, הממשק חייב לאפשר למשתמש לשנות ידנית את client_seed — זו דרישה סטנדרטית למערכות שקופות. גישה זו מבטלת כל אפשרות למניפולציה מצד השרת, מכיוון שהזרע נוצר בסביבה מבודדת של האפליקציה ואינו נגיש להחלפה.
Commitment scheme בוויקיפדיה מתאר את הבסיס התיאורטי.
כיצד נוצר client_seed במכשיר נייד?
נעשה שימוש רק ב-CSPRNG חומרתי:
// iOS
var clientSeedBytes = Data(count: 32)
clientSeedBytes.withUnsafeMutableBytes { SecRandomCopyBytes(kSecRandomDefault, 32, $0.baseAddress!) }
let clientSeed = clientSeedBytes.map { String(format: "%02x", $0) }.joined() // Android
val clientSeedBytes = ByteArray(32)
SecureRandom().nextBytes(clientSeedBytes)
val clientSeed = clientSeedBytes.joinToString("") { "%02x".format(it) }המשתמש חייב להיות מסוגל לשנות ידנית את client_seed — נוהג סטנדרטי למערכות שקופות. שדה קלט עם כפתור "רענון" יוצר זרע אקראי חדש ומציג אותו.
אימות בצד הלקוח
לאחר סבב, האפליקציה צריכה לספק מסך אימות. המשתמש רואה:
| פרמטר | ערך |
|---|---|
| Server Seed Hash | // iOS var clientSeedBytes = Data(count: 32) clientSeedBytes.withUnsafeMutableBytes { SecRandomCopyBytes(kSecRandomDefault, 32, $0.baseAddress!) } let clientSeed = clientSeedBytes.map { String(format: "%02x", $0) }.joined() (מוצג לפני הסבב) |
| Server Seed | // Android val clientSeedBytes = ByteArray(32) SecureRandom().nextBytes(clientSeedBytes) val clientSeed = clientSeedBytes.joinToString("") { "%02x".format(it) } (נחשף לאחר מכן) |
| Client Seed | a1b2c3... |
| Nonce | 42 |
| תוצאת HMAC | deadbeef... |
| תוצאה | 6 (מתוך HMAC mod 6 + 1) |
חישוב האימות מתבצע מקומית באפליקציה — המשתמש רואה בדיוק מה מחושב. SHA-256 ו-HMAC-SHA-256 זמינים ב-CryptoKit (iOS) וב-f00f... (אנדרואיד) ללא תלויות.
בנוסף: קישור למאמת צד שלישי (למשל, provablyfair.org) — זה מגביר אמון גם אם הלקוח לעולם לא משתמש בו.
מדוע יצירת client_seed מקומית חשובה?
אם client_seed מגיע מהשרת, הקזינו יכול תיאורטית לבחור זרע שמניב תוצאה רצויה. יצירה מקומית במכשיר מבטלת התקפה זו: הזרע ידוע רק ללקוח עד לחשיפה. הניסיון שלנו מראה שמשתמשים סומכים על אפליקציות שבהן הם שולטים בזרע.
סכמת Commit-reveal
הסכמה הסטנדרטית פועלת כך:
- לפני סבב, השרת מפרסם
0x3f2a.... - הלקוח יוצר
javax.crypto(32 בייטים אקראיים דרך CSPRNG במכשיר). - תוצאת הסבב:
server_seed_hash = SHA256(server_seed), כאשר nonce הוא מונה סבבים. - לאחר הסבב, השרת חושף
client_seed. הלקוח בודק:HMAC-SHA256(server_seed, client_seed + nonce).
האפליקציה הניידת מטפלת בשלבים 2 ו-4. ראוי לציין, אימות מקומי מהיר פי 10 מאימות בצד השרת — הוא אינו דורש החלפת נתונים עם הקצה האחורי ומבטיח שקיפות של 100%.
מה כלול בעבודה
- פיתוח מודול יצירת client_seed עם ממשק משתמש לעדכונים ידניים.
- שילוב חישוב HMAC עם תוצאה (למשל, הטלת קובייה 0-5).
- מסך אימות המציג את כל הפרמטרים ובדיקה אוטומטית.
- תמיכה ברוטציית server_seed: חשיפת ישן ופרסום hash חדש.
- תיעוד API ובדיקות על 10,000 סבבים.
- העלאה ל-App Store ול-Google Play עם עמידה בהנחיות.
תהליך העבודה
- אנליטיקה: לימוד סכמת השרת שלכם, קביעת פורמט HMAC ו-nonce.
- עיצוב: ציור UX לאימות, כתיבת מפרט API.
- יישום: קוד ב-Swift/Kotlin, שימוש ב-CryptoKit/javax.crypto. הרצת 1000 סבבים על שרת בדיקה.
- בדיקה: בדיקת תאימות עם השרת, אימות אוטומטי של 10,000 סבבים.
- השקה: פרסום בחנויות, מתן גישה לקוד המקור.
הערכות זמן
מ-3 עד 5 ימי עבודה ליישום בסיסי. אם נדרשת יצירת תוצאה מותאמת אישית (למשל, לפוקר) — עד 10 ימים. העלות מחושבת באופן אישי לאחר ניתוח הקצה האחורי שלכם.
השוואה: אימות מקומי מול אימות בצד השרת
| פרמטר | מקומי (שלנו) | צד שרת |
|---|---|---|
| תלות ברשת | לא | כן |
| שקיפות למשתמש | מלאה | מוגבלת |
| אפשרות הונאה | מבוטלת | תיאורטית אפשרית |
| מהירות אימות | מיידית | תלויה ב-ping |
אמון והבטחות
ההבטחה שלנו: קוד המקור פתוח לביקורת, כל ה-hashים ציבוריים. יש לנו 5 שנות ניסיון בפיתוח מובייל ויישמנו Provably Fair עבור 15+ פרויקטים. קבלו ייעוץ על שילוב Provably Fair באפליקציה הניידת שלכם — פשוט כתבו לנו.







