Pourquoi deux phases (et pas un seul gros matching)
Sur un marché P2P, le problème central est simple : il faut des personnes qui veulent miser sur des issues différentes du même événement au même moment, à des montants compatibles. Sur les events populaires (Real Madrid vs Barça, BTC > 100K), c'est facile. Sur les events de niche ou aux paliers rares, c'est plus tendu.
Plutôt que de te coller dans un pool dès le placement (et te bloquer dans un multiplicateur indicatif qui peut bouger), Ktkarena fait deux passes :
- Phase 1 - Matching live : pendant toute la durée d'ouverture de l'event, on cherche activement à te matcher en P2P. Sur un événement à deux issues, c'est personne contre personne, mise contre mise : la voie noble - multiplicateur fixe, pas de partage, pas d'incertitude. À trois issues ou plus, l'appariement se fait en lots (voir ci-dessous).
- Phase 2 - Pool phase : juste avant la fermeture de l'event, on regarde ce qui reste sans contrepartie. On rassemble tous les résidus dans un pool mutualisé et on calcule un multiplicateur pool équitable. S'il te convient (selon ta préférence), tu rentres dans le pool ; sinon tu es remboursé.
L'avantage : tu n'es jamais forcé d'accepter un pool aux conditions défavorables. Tu sais exactement ce qui se passe à chaque étape.
Phase 1 - Matching live (pendant tout l'event)
Cette phase démarre dès que tu lances ton défi et continue tant que l'event est ouvert. Elle se décompose en deux temps :
1. La cascade de placement (instantanée). Sur un événement à deux issues, au moment où tu cliques « défier », un algorithme tente trois étapes en cascade en l'espace de quelques secondes :
- Match direct intra-palier : on cherche un joueur qui prend la position inverse, exactement à ton palier. Détails.
- Cascade inter-paliers : si rien, on élargit aux paliers voisins. Détails.
- Agrégation de plusieurs adversaires : si toujours rien, on assemble plusieurs petites mises adverses pour faire le compte. Détails.
Si la cascade trouve une contrepartie complète, ton défi est matché. Sinon, le résidu reste en attente d'un adversaire (statut en attente) - mais on ne s'arrête pas là.
2. La matching loop (continue pendant tout l'event). Tant que l'event reste ouvert, un job tourne en arrière-plan et re-tente la cascade sur ton résidu chaque fois qu'un nouveau joueur arrive sur une autre issue, et au minimum une fois par minute. Aucune action de ta part nécessaire ; tu reçois une notification dès qu'un match est trouvé. Détails de la matching loop.
Sur un événement à trois issues ou plus, pas de cascade instantanée. Ta mise part entière en file d'attente, et le moteur l'apparie ensuite en lots : un lot réunit jusqu'à douze participants, sur plusieurs issues, et chaque participation y reçoit son propre multiplicateur, fixé à la formation du lot. Tant que ton défi n'est pas apparié, le multiplicateur affiché n'est qu'une estimation. Ce qui n'a pas trouvé de lot au démarrage de la pool phase passe en phase 2, comme à deux issues.
Phase 2 - Pool phase (en fin d'event)
Quelques minutes avant la fermeture de l'event (durée adaptative selon la longueur de l'event - typiquement 15 à 60 minutes), le placement de nouveaux défis se ferme et l'event entre dans la pool phase.
Pendant la pool phase :
- Plus aucune nouvelle mise ne peut être placée.
- Les défis en cours sont verrouillés (annulation impossible côté user).
- Le système liste tous les résidus restants (défis sans contrepartie complète).
- Il calcule un multiplicateur pool indicatif en rapportant la masse totale du pool à la masse de chaque issue.
- Pour chaque participant, on vérifie si le multiplicateur calculé respecte sa préférence personnelle de multiplicateur minimal pool.
- Si oui : le participant rentre dans le pool, sa mise reste engagée, son multiplicateur final est figé.
- Si non : il est remboursé intégralement, sans pénalité ni commission.
Le tout se fait en une seule transaction atomique. Tu reçois une notification claire : « Ton défi est passé en pool à ×1.45 » ou « Ton défi a été remboursé (multiplicateur pool ×1.10 sous ton seuil ×1.20) ».
Détails complets sur la pool phase.
Tes préférences influencent la phase 2
Deux réglages personnels te donnent la main sur la pool phase, accessibles dans tes paramètres de défi :
Acceptation du pool (3 valeurs) :
- Toujours : tu acceptes systématiquement le pool si ton multiplicateur min est respecté.
- Si nécessaire (défaut) : tu acceptes le pool uniquement si ton défi n'a pas été matché en P2P en phase 1.
- Jamais : tu refuses systématiquement le pool. Si rien n'a matché en phase 1, tu es remboursé.
Multiplicateur minimal pool (de 1.00 à 5.00, par pas de 0.10) : le multiplicateur le plus bas que tu acceptes en pool. En dessous, refund automatique. La valeur par défaut est 1.20.
Tes préférences sont capturées au moment du placement : si tu changes tes paramètres après avoir lancé ton défi, ton défi en cours garde les valeurs initiales. Comme ça, pas de mauvaise surprise.
Pourquoi ce modèle est plus juste qu'avant
Dans l'ancien modèle, dès qu'un défi n'avait pas de match direct, il pouvait être absorbé immédiatement dans un pool à un multiplicateur indicatif. Problème : ce multiplicateur pouvait bouger pendant tout l'event (selon qui rejoint le pool), et tu n'avais aucun contrôle.
Le nouveau modèle inverse la logique :
- On t'offre toujours le temps maximum pour un match P2P propre.
- On ne te met dans un pool qu'en dernier recours, et seulement avec ton consentement (préférences personnelles).
- Si le pool calculé ne te convient pas, tu pars sans frais.
Résultat : tu sais à l'avance le pire scénario, et tu n'es jamais piégé dans un multiplicateur qui se dégrade.