Chaque gagnant sort d'un tirage aléatoire pondéré. Chaque chance que vous gagnez devient une place dans un pool : 5 chances, 5 places. À la fin du giveaway, notre code tire des places au hasard avec crypto.randomInt, un générateur cryptographiquement sûr, sans graine que quelqu'un pourrait prédire ou influencer. Le code exact de sélection est lisible plus haut sur cette page.
Transparence de l'algorithme
Comment ScopliDrop tire les gagnants au sort,
et pourquoi c'est vérifiable
Notre algorithme open source garantit un tirage équitable. Plus de tâches, plus de chances, mais chaque participant peut vraiment gagner. Aucune manipulation, aucun favoritisme, aucune exception.
Notre promesse de transparence
La confiance se gagne par la transparence. Chaque étape de notre tirage au sort peut être inspectée. Il n'y a ni boîte noire, ni algorithme caché, ni paramètre secret. Ce que vous voyez est exactement ce qui se passe.
L'algorithme derrière le tirage
Chaque gagnant est tiré par ce code, pris tel quel dans notre base de code. Un aléatoire cryptographiquement sûr, sans fonction cachée ni paramètre secret.
WinnerSelection.ts
12// src/lib/services/WinnerSelection.ts3import { randomInt } from 'crypto';4import { GiveawayEntry } from '@/components/dashboard/giveaways/types';56/**7 * Select winners using weighted random selection.8 * @param entries All entries, each with a user_id and entries_count9 * @param winnerCount Number of winners to draw10 * @param hasFraudDetection Premium+ servers exclude fraud-flagged entries11 * @param cooldownExcludedUserIds Users on winner cooldown (recent wins)12 * @returns Array of selected winner user IDs13 */14export function selectWinners(15 entries: GiveawayEntry[],16 winnerCount: number,17 hasFraudDetection: boolean = true,18 cooldownExcludedUserIds: string[] = []19): string[] {20 if (!entries || entries.length === 0) {21 return [];22 }2324 // 1. Exclude fraud-flagged entries (premium+) and users on winner cooldown.25 // Flags are set only by automated fraud detection; a server admin can never26 // manually flag, unflag, or hand-pick who gets excluded from the draw.27 // Free servers keep every entry; fraud flags are ignored.28 const cooldownExcluded = new Set(cooldownExcludedUserIds);29 const eligibleEntries = (hasFraudDetection30 ? entries.filter(entry => entry.fraud_flag !== 'red')31 : entries32 ).filter(entry => !cooldownExcluded.has(entry.user_id));3334 if (eligibleEntries.length === 0) {35 return [];36 }3738 // 2. Build a weighted pool: one slot per entry earned.39 // 5 entries = 5 slots = 5 chances to win.40 const entryPool: string[] = [];41 for (const entry of eligibleEntries) {42 for (let i = 0; i < entry.entries_count; i++) {43 entryPool.push(entry.user_id);44 }45 }4647 // 3. Draw winners with cryptographically secure randomness.48 const winners: string[] = [];49 const winnerSet = new Set<string>();5051 // A user can only win once, so never draw more winners than unique people.52 const uniqueParticipants = new Set(eligibleEntries.map(entry => entry.user_id));53 const availableWinnerCount = Math.min(winnerCount, uniqueParticipants.size);5455 if (availableWinnerCount === 0 || entryPool.length === 0) {56 return [];57 }5859 while (winners.length < availableWinnerCount && entryPool.length > 0) {60 // crypto.randomInt is a CSPRNG: no seed, no bias, not manipulable.61 const randomIndex = randomInt(entryPool.length);62 const selectedUserId = entryPool[randomIndex];6364 // Only add first-time winners; duplicates are skipped.65 if (!winnerSet.has(selectedUserId)) {66 winners.push(selectedUserId);67 winnerSet.add(selectedUserId);68 }6970 // Remove the drawn slot via swap-and-pop (O(1)).71 entryPool[randomIndex] = entryPool[entryPool.length - 1];72 entryPool.pop();73 }7475 return winners;76}Les étapes clés de l'algorithme
Cliquez sur une étape pour voir son implémentation dans le code
Ligne 3
Aléatoire sécurisé
Les gagnants sont tirés avec crypto.randomInt de Node, un générateur cryptographiquement sûr. Aucune graine à prédire, rien à manipuler, pas même par nous.
Ligne 30
Filtrage fraude et cooldown
Avant le tirage, les participations signalées comme frauduleuses sont retirées sur les serveurs avec détection de fraude, et les membres encore sous cooldown des gagnants sont mis de côté. Les serveurs gratuits gardent toutes les participations.
Ligne 43
Création du pool pondéré
L'équité commence ici. Chaque membre est ajouté au pool une fois par chance gagnée : 5 chances, 5 places. Proportionnel, jamais garanti.
Ligne 61
Le tirage
Un index aléatoire dans le pool pondéré désigne chaque gagnant. Plus de chances veut simplement dire plus de places, et chaque place a exactement la même probabilité.
Ligne 65
Pas de doublon
Un ensemble de gagnants garantit que personne ne gagne deux fois, et nous ne tirons jamais plus de gagnants qu'il n'y a de participants éligibles distincts.
Comment fonctionne l'équité
Voyez exactement comment notre algorithme donne à chaque participant une chance équitable, avec de meilleures chances pour ceux qui s'impliquent le plus.
1
Collecte des chances
Les membres font des tâches et gagnent des chances selon leurs actions
2
Création du pool pondéré
Chaque chance est ajoutée au pool de sélection selon les tâches validées
3
Sélection aléatoire
Un aléatoire cryptographiquement sûr pioche dans le pool pondéré
4
Pas de doublon
Chaque membre ne peut gagner qu'une fois par giveaway
5
Confirmation des gagnants
Les gagnants tirés sont vérifiés et annoncés
Exemple concret
Alice fait 3 tâches, Bob en fait 1, Charlie en fait 5. Le pool contient 9 chances au total, avec des probabilités proportionnelles.
Alice
3 chances gagnées
33 % de chances
Bob
1 chance gagnée
11 % de chances
Charlie
5 chances gagnées
56 % de chances
Le pool (9 chances au total)
Chaque point représente une chance. Le gagnant est tiré au hasard parmi toutes les chances.
Fini les giveaways truqués
Un bot giveaway Discord qui montre exactement comment les gagnants sont choisis
Le problème
La plupart des bots giveaway Discord sont des boîtes noires. Même quand le bot est honnête et vraiment aléatoire, votre communauté n'a aucun moyen de le vérifier. Elle ne voit pas l'algorithme, ne peut pas contrôler le processus, ne peut pas prouver que les gagnants n'ont pas été choisis à la main.
Sans transparence, chaque giveaway paraît suspect. Vos membres commencent à se demander si c'est vraiment équitable. La confiance meurt, l'engagement chute.
On en avait assez de voir des communautés mourir parce que la confiance était rompue
La solution
Ne craignez plus jamais une baisse d'engagement à cause d'accusations de giveaway truqué. Quand un membre doute de l'équité, envoyez-lui le lien de cette page.
ScopliDrop certifie que les propriétaires de serveur ne peuvent ni modifier un giveaway ni choisir les gagnants. Point.
Il existe bien un bouton « Terminer le giveaway », mais il ne fait que déclencher notre algorithme de tirage, rien d'autre. Les admins du serveur NE PEUVENT PAS choisir les gagnants, par aucun moyen. C'est notre promesse.
Vos questions sur l'équité
Comment nous garantissons des giveaways transparents, sûrs et vraiment équitables pour tous les participants.
Rejoignez la révolution de l'équité
Prêt à lancer des giveaways vraiment équitables
dès aujourd'hui ?
Rejoignez des milliers de communautés Discord passées à des giveaways transparents et vérifiables. Commencez gratuitement, prouvez l'équité dès le premier jour.