Spinvolta

كيف نضمن العدالة

العشوائية أولًا. الحركة ثانيًا. وقابلية التحقق حين يهم الأمر.

1. كل نتيجة تأتي من مولّد عشوائي مشفّر

تسحب Spinvolta النتائج باستخدام crypto.getRandomValues()، مولّد الأرقام العشوائية الآمن تشفيريًا المدمج في كل متصفح ونظام تشغيل حديث — المصدر نفسه المستخدم لإنشاء مفاتيح التشفير. لا نستخدم Math.random() لحسم أي شيء أبدًا. (الأمور الزخرفية البحتة، مثل اتجاه طيران قصاصة ملونة، قد تستخدمه.)

2. بلا انحياز باقي القسمة

لا يمكن دائمًا تقسيم رقم عشوائي من 32 بت بالتساوي على 7 خيارات مثلًا: فالعدد 4,294,967,296 ليس من مضاعفات 7، لذا تجعل العملية الساذجة رقم % 7 بعض الخيارات أكثر احتمالًا بقليل. تستخدم Spinvolta أخذ العيّنات بالرفض: إذا وقع الرقم في البقية غير المتساوية أعلى النطاق، يُستبعد ويُسحب رقم جديد. فيصبح لكل خيار الاحتمال نفسه تمامًا، أيًّا كان عدد الخيارات.

3. الأوزان دقيقة

في الوضع الموزون تُحوّل أوزان مثل 1 و2.5 و0.125 إلى أعداد صحيحة على مقياس مشترك وتُجمع بدقة. ويختار سحب متساوي الاحتمال واحد على المجموع الفائز، فيكون الخيار ذو الوزن 2 أكثر احتمالًا بالضبط بمرتين من ذي الوزن 1 — وتعرض أحجام القطاعات هذه الاحتمالات الدقيقة.

4. عدة فائزين دون تكرار

تستخدم أوضاع عدة فائزين، والفرق، والترتيب العشوائي، وخلط الورق، والسحوبات خلط فيشر–ييتس غير المنحاز (مع أخذ العيّنات بالرفض نفسه)، فيكون كل ترتيب أو مجموعة فائزين ممكنة متساوية الاحتمال.

5. النتيجة أولًا، ثم الحركة

عندما تضغط أدِر، يُحسم الفائز قبل أن تتحرك العجلة. ثم يحسب محلّل حركة — الزخم والسرعة وعدد الدورات والتأرجح الخفيف في النهاية — تنتهي بدقة داخل القطاع الفائز، في نقطة عشوائية بعيدة عن الحواف. الدفع الأقوى أو الدوران الأطول أو الإيقاف اليدوي يغيّر الشكل فقط. وتتحقق اختباراتنا الآلية من آلاف الدورات العشوائية لضمان أن الحركة تتوقف دائمًا عند النتيجة المسحوبة مسبقًا ولا تنزلق إلى القطاع المجاور.

6. سحوبات عادلة يمكن إثباتها للمسابقات والغرف

في السحوبات (وفي أي سحب تهم فيه الثقة) تذهب Spinvolta أبعد، حتى لا تضطر إلى الثقة بنا أو بالمنظّم:

  1. قبل السحب يثبّت متصفحك قائمة المشاركين والإعدادات بدقة، وينشر بصمة — تجزئة SHA-256 للقائمة والإعدادات وبذرة سرية. ويسجّل خادمنا وقت استلامها.
  2. تحدد البصمة جولة مستقبلية من منارة العشوائية drand League of Entropy — قيمة علنية تنتجها كل 3 ثوانٍ منظمات مستقلة حول العالم، ولا يستطيع أحد توقعها أو اختيارها.
  3. حين تُنشر تلك الجولة، يُحسب الفائزون من البصمة وقيمة المنارة والبذرة.
  4. تعرض صفحة الإثبات كل شيء. ويستطيع أي شخص الضغط على تحقّق لإعادة الحساب في متصفحه، بما في ذلك التوقيع التشفيري للمنارة.

لا يستطيع المنظّم اختيار الفائز لأن قيمة المنارة لم تكن موجودة حين ثُبّتت القائمة. ولا نستطيع نحن أيضًا، لأننا لا نرى البذرة قبل تثبيت البصمة ولا نتحكم في drand. وإن تعذّر الوصول إلى المنارة، ينتقل السحب إلى طريقة «التزام ثم كشف» موسومة بوضوح.

7. مُختبرة إحصائيًا

تشغّل مجموعة اختباراتنا اختبارات حسن المطابقة بمربع كاي على مئات آلاف السحوبات المحاكاة مع كل تغيير، وعلى أكثر من مليون سحب في المجموعة الكاملة: سحوبات متساوية، وموزونة، وخلط، ومواقع الفائزين المتعددين. ويمكنك تشغيل نسختك على صفحة اختبار العدالة.

ما لا نستطيع إثباته

في الدوران اليومي، أنت تثق بأن الشيفرة العاملة في متصفحك هي ما نصفه. تعمل كليًا على جهازك ويمكنك فحصها بأدوات المطوّر في المتصفح. وحين تكون المخاطر أعلى — جوائز أو سحوبات علنية — استخدم سحبًا عادلًا يمكن إثباته لا يتطلب الثقة بأحد.

الأسئلة الشائعة

هل يمكن التلاعب بالعجلة؟

ليس عبر الحركة: تُسحب النتيجة أولًا بعدالة ثم تُحسب الحركة لعرضها. الطريقة الوحيدة لتغيير الاحتمالات هي الوضع الموزون، الذي يعرض شارة «عجلة موزونة» ويرسم القطاعات بما يطابقها.

لماذا ظهر الاسم نفسه مرتين متتاليتين؟

لأن العشوائية الحقيقية فيها سلاسل. مع 10 خيارات يظهر الخيار نفسه مرتين متتاليتين في 10% من الحالات. استخدم وضع الإقصاء إن أردت أن يظهر كل خيار مرة واحدة.

ما drand؟

drand منارة عشوائية موزعة تديرها League of Entropy، وهي مجموعة من الجامعات والشركات والمنظمات المستقلة. تنشر قيمة عشوائية جديدة قابلة للتحقق كل بضع ثوانٍ.