Joy Tokens - le jeu sur la blockchain

Résumé

La technologie de Joy Gaming offre une solution novatrice pour rapprocher les petits développeurs, les éditeurs de logiciels, les grands casinos et les joueurs. Elle a conçu un écosystème de jeu permettant à la fois aux joueurs, aux développeurs et aux casinos de diminuer les risques.

Le manque de confiance et de transparence est un sujet de préoccupation pour l’industrie du jeu en ligne. Les joueurs ont tendance à utiliser les casinos renommés au lieu de sites moins connus, même si ces derniers offrent plus de « jeux intéressants ». Les joueurs sont en effet naturellement attirés par les marques de casino en qui ils ont confiance. La technologie de Joy Gaming est un système transparent basé sur la blockchain qui contribuera à améliorer la confiance dans le secteur du jeu. La technologie de Joy Gaming permet aux utilisateurs de jouer dans un environnement transparent et régi par le code. Cela permet aux joueurs et aux développeurs d’avoir confiance dans l’équité des jeux. Grâce à un générateur RNG innovant, les joueurs auront l'esprit tranquille et sauront que les jeux sur lesquels ils jouent sont équitables et sûrs. Les développeurs, les casinos et les entreprises bénéficieront d’un écosystème qui assure le partage de la liquidité et une rémunération équitable. En associant les développeurs et les casinos, notre objectif est une solution optimale au profit de tous les participants de Joy Gaming.

Introduction

Le marché actuel du jeu

Le marché actuel du jeu est principalement axé sur la réputation : une réputation développée grâce à l'augmentation de la publicité. Pour acquérir et fidéliser les joueurs, les casinos sont obligés de dépenser de grosses sommes pour développer la confiance et la réputation par le biais du développement de la notoriété de leur marque. En outre, les grands casinos contrôlent le développement du jeu. Les joueurs sont obligés de faire confiance à ces casinos car le manque de transparence implique que les joueurs ne puissent pas suivre leurs mises et ne sont ainsi pas en mesure d’évaluer la légitimité de chaque pari.

Les développeurs plus petits souffrent également de cette situation. Ils ne sont payés qu'un pourcentage minime des recettes des jeux et font face à certaines difficultés pour publier un nouveau jeu tels que le manque de revenu immédiat et un accès aux grandes plates-formes de jeux.

La solution Joy Gaming

La solution de Joy Gaming est basée sur la blockchain et permet aux développeurs de créer des jeux qui seront exécutés sur son backend, par le biais d'un contrat intelligent, plutôt que directement sur la blockchain. Comme tous les résultats sont enregistrés sur la blockchain, la fraude est significativement plus faible. Ainsi, les joueurs peuvent vérifier que les développeurs proposent les jeux exactement comme décrit sur la blockchain. De plus, les développeurs de jeux et les éditeurs de logiciels peuvent s'intégrer et se mettre en contact avec des fournisseurs de liquidités, tels que des casinos, pour donner un accès direct à leurs jeux. Les casinos, comme les développeurs bénéficieront des revenus supplémentaires et de l'augmentation de l'innovation de jeu. Le manque de notoriété d’un site spécifique peut être compensé par le fait que les règles et l'infrastructure sous-jacente des jeux soient enregistrées sur la blockchain (en plus du système d’approbation avant que les jeux ne soient autorisés sur le réseau Joy Gaming).

Technologie

Contrats Intelligents

Le réseau Joy Gaming s’appuie sur des contrats intelligents décentralisés pour garantir et tout enregistrer sur la blockchain. Grâce à la blockchain, nous serons en mesure de contrôler tout ce qui se passera sur Joy Gaming. Les utilisateurs qui jouent sur les jeux pourront visualiser, en temps réel, les résultats et les récompenses du réseau. Contrairement aux casinos traditionnels où les dépôts sont effectués sur le compte du casino, les utilisateurs auront toujours le contrôle sur leur portefeuille de JoyToken (et les retraits seront plus simples et réalisés plus rapidement).

Notre plateforme utilisera le réseau Ethereum comme écosystème basé sur la Blockchain. Le réseau Ethereum est bien établi, accepté et utilisé par la communauté avec une capacité complète de langage de Turing. Même s'il existe certains problèmes de latence, une solution décentralisée intermédiaire permet de réduire considérablement cette latence.

L’utilisation d’un agent autonome (c-à-d d'un contrat intelligent) instaure une relation de confiance dans le système car tout conflit d’intérêts entre le joueur et la plate-forme est géré et vérifié de manière décentralisée. Il n'est pas nécessaire qu'une tierce partie soit impliquée. Toutes les transactions sont faites par le biais d'un contrat intelligent, qui garantit à toutes les parties l'accès à tout moment et la possibilité de vérifier l'équité du jeu.

La pile Joy Gaming

Notre environnement technologique est essentiellement composé de trois éléments principaux : la couche Blockchain, les Applications de Jeu (back/front-end) et le Générateur de Nombres Aléatoires (RNG). Le back/front end des jeux fonctionnera sur des bases de données. Cependant, toutes les parties pouvant conduire à toute forme de contestation entre le joueur et la plate-forme seront décentralisées et vérifiées sur la Blockchain à l'aide de Contrats Intelligents.

La figure ci-dessus présente la communication entre les applications de jeux approuvées et le générateur de nombres aléatoires Joy Gaming.

La Couche Blockchain

La couche de Blockchain dispose de trois fonctions : la gestion des jetons, la gestion des résultats du jeu, et le contrôle du générateur de nombres aléatoires.

La Gestion des Jetons

Sur un casino en ligne traditionnel, les clients envoient de l’argent au casino pour jouer leurs parties. Ceci présente néanmoins la possibilité de fraudes potentielles. Joy Gaming résout ce problème en utilisant la technologie Blockchain. Tous les fonds des joueurs seront stockés sur le portefeuille JoyToken de chaque joueur. Lorsqu’un joueur place une mise, l’argent sera envoyé sur un contrat intelligent qui gérera le résultat du pari de manière décentralisée. Utiliser la Blockchain permet que le casino (c-à-d la plateforme Joy Gaming) n'exerce aucun contrôle sur l’argent du joueur à tout moment.

Pour résumer :

La Gestion des Résultats du Jeu

Un contrat intelligent sera utilisé pour la mise de chaque joueur. Le contrat intelligent gèrera les informations fournies par toutes les parties du système (code du jeu, RNG, données du joueur). Le contrat intelligent vérifiera ensuite le résultat du jeu et affectera automatiquement les fonds à la bonne personne selon les règles du contrat établi.

Le joueur A réalise par exemple un pari sur la roulette.

  1. Les fonds seront envoyés automatiquement sur le contrat de la roulette
  2. Le nombre aléatoire généré pour ce tour de la roulette sera copié et enregistré dans un contrat intelligent. (Remarque : tout élément critique du déroulement du jeu (RNG et historique du jeu) se produisant sera enregistré sur un contrat intelligent).
  3. En utilisant le nombre aléatoire généré, le code du jeu enverra les résultats au contrat intelligent
  4. Le gagnant sera alors crédité automatiquement. Si le joueur perd, l’argent sera divisé entre le développeur et les gestionnaires de la plate-forme. Cette division est négociée pendant la phase de développement et appliquée automatiquement lorsqu'un joueur perd.
  5. Enfin, le joueur peut décider de relancer le processus et de continuer à jouer ou de mettre fin à sa session de jeu

Code de démonstration pour l’enregistrement initial d’un jeu sur le réseau

Le code ci-dessous illustre l’enregistrement d’un jeu sur le réseau Joy Gaming. L’inscription se fait entièrement à travers le réseau Ethereum. Cela permet aux participants de vérifier facilement que le contrat ait été approuvé officiellement par le réseau. Par le biais de cette démonstration, nous voyons que l’enregistrement peut être appelé via la fonction GameRegistry() par laquelle le jeu sera enregistré sur le réseau Joy Gaming. (Remarque : Le montant à créditer au développeur peut également être spécifié, par le biais de setPlatformShare(uint256 newShare)).

    contract GameRegistry is Ownable {
        using SafeMath for uint256;
        address public tokenAddress;
        address[] public gameList;
        uint256 public decimals = 5;
        uint256 public platformShare = 5 * 10**(decimals.sub(2));
        address public controller;
        mapping(address => bool) public gameRegistered;
        event ControllerTransfer(address originalController, address currentController);
        event PlatformShareUpdate(uint256 originalShare, uint256 newShare);
        event GameRegistered(address game);
        event GameDelisted(address game);


        function GameRegistry(address _tokenAddress) {
            owner = msg.sender;
            controller = owner;
            tokenAddress = _tokenAddress;
        }

        function setController(address newController) public onlyOwner {
            require(newController != address(0) && newController != controller);
            ControllerTransfer(controller, newController);
            controller = newController;
        }

        function setPlatformShare(uint256 newShare) public onlyOwner {
            require(newShare < 10**decimals);
            PlatformShareUpdate(platformShare, newShare);
            platformShare = newShare;
        }

        function createGame(string _name, uint256 _payoutRate) public {
            address newGame = new Game(_name, msg.sender, this, tokenAddress, payoutRate);
            require(!gameRegistered[newGame]);
            gameList.push(newGame);
            gameRegistered[newGame] = true;
            GameRegistered(newGame);
        }

        function delistGame(address game) public onlyOwner {
            require(gameRegistered[game]);
            gameRegistered[game] = false;
            GameDelisted(game);
        }

        function registerGame(address game) public onlyOwner {
            Game g = Game(game);
            require(!gameRegistered[game]);
            gameRegistered[game] = true;
            gameList.push(game);
            GameRegistered(game);
        }

        function getGameRegistered(address game) public constant returns (bool registered) {
            return gameRegistered[game];
        }
    }
    

Vérifiabilité du Générateur de Nombres Aléatoires (RNG)

Un élément principal de l’industrie du jeu est la vérifiabilité d’un RNG. Dans le sens traditionnel du terme, les générateurs de RNG sont habituellement gérés par la société qui héberge les jeux. Cependant, dans notre cas, ils seront décentralisés et manifestement équitables car chaque jeu est lancé sur algorithme personnalisé intégré qui s’appuiera sur le générateur RNG lié au contrat intelligent du réseau Ethereum. Ce processus est décrit plus en détail dans la phase de conclusion et dans le processus de paiement.

Application de jeu (Gestion back & front end)

Les codes de l’application de jeu seront hébergés sur nos serveurs ou hébergés à travers le réseau IPFS/Sia/Storj. Le résultat du jeu sera ensuite communiqué au contrat intelligent. Les serveurs de jeu fourniront à leur tour l’état du jeu à la Blockchain en utilisant JSON RPC par l’intermédiaire de l'IPC. L’expérience utilisateur ne sera pas affectée par l’utilisation/la disponibilité de la Blockchain car tous les résultats du jeu sont immédiatement disponibles. Ceci assure que l’expérience utilisateur soit proche du jeu traditionnel, tout en s’assurant que le processus soit aussi totalement transparent et décentralisé. Chaque code de jeu sera accessible sur la Blockchain et assurera une vérificabilité complète sur le nombre aléatoire généré.

Caractère aléatoire basé sur les informations de la Blockchain

La clé consiste à trouver une technique de génération décentralisée RNG que nos jeux puisse utiliser et qui soit basée sur la blockchain. La solution courante est d'utiliser des informations de génération de bloc (notamment l'horodatage, le nonce, le hachage du bloc en cours et ainsi de suite) pour générer des nombres aléatoires. Bien que ces nombres soient générés par les mineurs, il est fortement improbable qu'un mineur puisse changer l’issue du jeu sur le réseau public Ethereum. Le mineur devrait pour cela posséder suffisamment de puissance minière pour exploiter le bloc plusieurs fois dans un environnement de compétition publique (environ 14 secondes), comme suit :

  1. Le mineur est en compétition dans le processus d’exploration de l’environnement public Blockchain d'Ethereum
  2. Le mineur obtient le nonce et est maintenant en mesure d’obtenir la récompense
  3. Le mineur vérifie les informations du nonce et des blocs générées par rapport à l’exigence de gain du jeu
  4. Si elles correspondent, le mineur remplit le résultat
  5. Dans le cas contraire, le mineur redémarre le processus d’exploration pour trouver un autre nonce adapté, oubliant la précédente récompense minière

Même si cette méthode est très fiable, nous l'avons rejeté car nous recherchions un modèle qui ne laisse aucune possibilité de manipulation potentielle.

RANDAO (une organisation autonome décentralisée qui vise à générer des nombres aléatoires entièrement décentralisés) est une approche très intéressante, mais qui n'est pas suffisamment mature pour être mise en œuvre à l'heure actuelle. Joy Gaming soutient le développement de nombres aléatoires entièrement décentralisés et nous consacrerons du temps à étudier RANDAO car, si la technologie devient mature et fiable, elle sera tout à fait conforme à notre plan de développement.

Génération de nombres RNG décentralisés - Approche Agile

Le générateur aléatoire doit relever les défis suivants :

La solution proposée :

Le caractère aléatoire des chiffres sera introduit au moyen d’un algorithme de générateur congruentiel capable de génèrer des pseudo séquences aléatoires de nombres qui vont changer en ajoutant l’entrée de données du monde extérieur (par ex. les mouvements du joueur sur la plate-forme, l'échange de données Forex et cryptomonnaies, etc.). Ces ensembles de données sont utilisés du fait de leur comportement inattendu. Ils sont aussi disponibles en permanence. Cette solution est conforme aux exigences relatives aux licences, en fournissant tous les nombres aléatoires requis dans un court laps de temps, le tout sans affecter l’expérience utilisateur. Afin de renforcer notre modèle RNG, nous amorcerons une double vérification en utilisant la technologie de la Blockchain en minant chaque numéro au cours d’une transaction. Il sera alors impossible pour Joy Gaming de manipuler les chiffres de quelque manière que ce soit.

Technologie Joytoken :

Opérations de Jeu

Bénéfices et structure de l'écosystème

En fonctionnant sur la blockchain, les utilisateurs peuvent facilement identifier où va leur argent et si les résultats sont générés de manière équitable. L’expérience utilisateur est notre priorité et nous vous offrirons une expérience variété de jeux, une sécurité renforcée et une fiabilité parfaite.

En plus des avantages pour l’utilisateur, les développeurs bénéficient d'une réserve importante de liquidités et de la réputation supplémentaire fournie par le réseau de Joy Gaming. Les développeurs seront en mesure de « prouver » facilement les jeux auxquels l’utilisateur joue dans la mesure où ils sont transparents et sont hébergés la blockchain. Le développeur se mettra en contact avec les casinos et percevra des commissions sur les jeux joués, tout en sachant qu’il dispose d'une possibilité de vérifiabilité efficace. Les développeurs sont essentiels dans l’industrie du jeu. Chez Joy Gaming, nous les comprenons et nous nous efforcerons de proposer la meilleure expérience en termes de juste récompense, une assistance complète lors du processus de commercialisation, et une plus grande capacité pour les joueurs.

Pour assurer le succès des jeux, Joy Gaming fournit une assistance aux développeurs au sein de l'écosystème Joy Gaming.

L'assistance aux développeurs est fourni sur :
Les développeurs doivent seulement s’occuper du développement de jeux, Joytokens fera le reste.

Trouver l'équilibre au sein de la blockchain

L'expérience utilisateur est cruciale pour travailler sur une initiative de jeu en ligne. Joy Gaming a travaillé dur pour trouver le juste équilibre entre la vitesse de l’expérience de jeu et la décentralisation qui vient avec l’utilisation d’une blockchain pour l’industrie du jeu en ligne.

Problèmes possibles auxquels Ethereum fait face dans son état actuel

L’Ethereum Blockchain n’est pas un système optimal pour traiter les données rapidement parce que le processus d’extraction de preuve de travail arrive toutes les 14 secondes. En outre, l'Ethereum n'est pas fait pour stocker des quantités considérables de données, étant donné que la Blockchain est copiée sur tous les nœuds participants du réseau. Par conséquent, un système entièrement décentralisé à chaque étape, du RNG au jeu lui-même, ne serait pas la meilleure option parce qu’il y aurait un délai important et les joueurs ne veulent pas patienter pendant des minutes avant d'obtenir les résultats du jeu. De plus, les contrats intelligents gérant de grandes quantités de données et traitant des logiques non linéaires sont chers.

Prix GAS

L’Ethereum a introduit le prix GAS afin d’éviter les « attaques de type DDoS », où une personne mal intentionnée pourrait créer un grand nombre de contrats pour influencer l’efficacité du réseau public lui-même. De cette façon, GAS change fréquemment son coût en vue d’une utilisation précise de la demande de contrat Smart.

Résumé :

La plateforme Joy Gaming est un équilibre réaliste entre la vitesse et la décentralisation pour fournir une expérience joueur optimal. Chaque jeu sur la plate-forme se conformera avec les exigences suivantes de décentralisation :

Bien que chaque jeu sera offert par les différents développeurs, il y aura un processus d’acceptation de jeu (voir la section 6.5) où l’équipe de Joy Gaming s'assurera que les développeurs répondent à nos exigences de vitesse et de décentralisation. Aucun jeu n’est renseigné sur la plate-forme si il ne respecte pas ces exigences. Nous pourrions inclure un processus joueur KYC supplémentaire, dans lequelle seulement les joueurs vérifiés Joy Gaming seraient autorisés à utiliser la plate-forme afin de nous assurer un niveau plus élevé de Fair-Play et de conformité juridique.

Architecture de l'intégration de la Blockchain et scénarios

Comme expliqué précédemment, les caractéristiques techniques de tous les jeux doivent répondre à deux besoins : minimiser les retards causés par l’utilisation de la Blockchain et utiliser sa décentralisation.

L’Architecture de jeu globale suivante correspond aux exigences de la plateforme Joy Gaming en termes de sécurité, de décentralisation et de vitesse. Il y a quatre composantes principales :

Le processus est divisé en plusieurs phases :

Phase de chargement

Notre objectif est d’éviter la vérification du temps de transaction sur chaque pari au cours de la phase de chargement car cela réduira au minimum les retards causés par la blockchain et aura un impact considérablement la vitesse de l’expérience utilisateur.

Afin de répondre à cette exigence, il sera demandé à l’utilisateur d’envoyer de l’argent pour le contrat intelligent du jeu sélectionné pendant que le jeu se charge et se configure

Ce processus nécessite quinze secondes pour charger le jeu et mettre en place le contrat intelligent Blockchain. Ce processus est permis si, et seulement si, l’utilisateur a été contrôlé et vérifié par le processus KYC. Il sera impossible pour les joueurs non vérifiés d'envoyer de l’argent au contrat intelligent, et un message d’erreur automatique les guidera à travers le processus de KYC (plus de détails à l’article 15).

Processus d’initiation jeu

Le montant de monnaie s’installe dans le contrat intelligent et se remplira sur le WS (portefeuille serveur) en tant que valeur du portefeuille du client initial. Le GS (serveur de jeu) peut être considérée comme un système de cache, où la valeur de l'argent de la plate-forme de l’acteur (développeur, plateforme, client) augmentera ou diminuera en fonction des résultats du jeu.

Chaque pari du client sera communiquée à au GS (serveur de jeu) pour déterminer les résultats.

  1. Le WS met en place les portefeuilles temporaires - le montant du portefeuille du client sera celui investi au cours de la phase de chargement. Un double contrôle est effectué sur le contrat intelligent pour s’assurer que le montant initial affecté au portefeuille du client soit bien celui investi au client pendant la phase de chargement.
  2. L’utilisateur place un pari (par exemple, 5 JoyTokens sont placés sur le rouge dans un jeu de roulette).
  3. Le pari sera communiqué au GS et transformé en utilisant le RNG (qui est vérifié au sein de la Blockchain). En fonction du résultat du jeu, les portefeuilles WS (Clients, Plateforme et Développeur) seront mis à jour.
  4. son processus sera répété tant que l'utilisateur dispose de fonds et ne souhaite pas arrêter de jouer.

Contrat intelligent de démonstration pour le fonctionnement d'un jeu sur le réseau

    function Game(string _name, address _owner, address _registryAddress, address _ tokenAddress, uint256 _payoutRate) {
            name = _name;
            owner = _owner;
            registryAddress = _registryAddress;
            registry = GameRegistry(registryAddress);
            tokenAddress = _tokenAddress;
            token = ERC20(tokenAddress);
            payoutRate = _payoutRate;
            isActive = true;
            decimals = registry.decimals();
        }
        function activate() public onlyOwner {
            isActive = true;
            GameActivated();
        }

        function deactivate() public onlyOwner {
            isActive = false;
            GameDeactivated();
        }

        function ownerDeposit(uint256 amount) public onlyOwner {
            require(amount > 0);
            require(token.transferFrom(owner, this, amount));
            ownerAvailableDeposit.add(amount);
        }

        function ownerWithdraw(uint256 amount) public onlyOwner {
            require(amount > 0 && amount <= ownerAvailableDeposit);
            ownerAvailableDeposit.sub(amount);
            require(token.transfer(owner, amount));
        }

        function playerJoin(uint256 initialDeposit) public whenActive {
            require(!playerInGame[msg.sender]);
            uint256 potentialPayout = getPayout(initialDeposit);
            require(potentialPayout.sub(initialDeposit) <= ownerAvailableDeposit);
            ownerAvailableDeposit = ownerAvailableDeposit.sub(potentialPayou sub(initialDeposit ));
            playerInGame[msg.sender] = true;

            if (initialDeposit > 0){
                playerCurrentGameDeposits[msg.sender] = initialDeposit;
                require(token.transferFrom(msg.sender, this, initialDeposit));
            }
            PlayerJoined(msg.sender);
        }

        function announceResult(address player, uint result) public onlyController {
            require(playerInGame[player]);
            require(result <= uint(GameResult.draw));
            playerInGame[player] = false;
            GameResult gameResult = GameResult(result);
            if (gameResult == GameResult.win) {
                require(resolvePlayerWin(player));
            } else if (gameResult == GameResult.loss) {
                require(resolvePlayerLoss(player));
            } else {
                require(resolveDraw(player));
            }
            GameResultAnnounced(player, result);
        }

        function resolvePlayerWin(address player) private returns (bool success) {
            uint256 payout = getPayout(playerCurrentGameDeposits[player]);
            playerCurrentGameDeposits[player] = 0;
            if (payout > 0)
                playerDeposits[player] = playerDeposits[player].add(payout);
            return true;
        }

        function resolvePlayerLoss(address player) private returns (bool success) {
            uint256 playerDeposit = playerCurrentGameDeposits[player];
            playerCurrentGameDeposits[player] = 0;
            uint256 payout = getPayout(playerDeposit);
            uint256 platformShare = playerDeposit.mul(registry.platformShare()).div(10**registry.decimals());
            require(platformShare < playerDeposit);
            if (platformShare > 0)
                platformDeposit = platformDeposit.add(platformShare);
            uint256 profit = playerDeposit.sub(platformShare);
            ownerAvailableDeposit = ownerAvailableDeposit.add(payout.sub(playerDeposit)).add(profit);
            return true;
        }

        function resolveDraw(address player) private returns (bool success) {
            uint256 playerDeposit = playerCurrentGameDeposits[player];
            playerCurrentGameDeposits[player] = 0;
            uint256 payout = getPayout(playerDeposit);
            if (playerDeposit > 0)
                playerDeposits[player] = playerDeposits[player].add(playerDeposit);
            ownerAvailableDeposit = ownerAvailableDeposit.add(payout.sub(playerDeposit));
            return true;
        }

        function playerWithdraw(uint256 amount) public {
            require(amount > 0 && amount <= playerDeposits[msg.sender]);
            playerDeposits[msg.sender] = playerDeposits[msg.sender].sub(amount);
            require(token.transfer(msg.sender, amount));
        }

        function platformWithdraw(uint256 amount) public {
            require(msg.sender == registry.owner());
            require(amount > 0 && amount <= platformDeposit);
            platformDeposit = platformDeposit.sub(amount);
            require(token.transfer(msg.sender, amount));
        }

        function getPayout(uint256 deposit) private constant returns (uint256 payout) {
            return deposit.mul(payoutRate).div(10**decimals);
        }
    }
    

Phase de conclusion et processus de paiement

L'utilisateur peut arrêter sa session de jeu et commencer la phase de conclusion à tout moment en utilisant un processus simple rendu facile par l'interface de jeu conviviale. Le processus de conclusion se compose de :

  1. La demande de l’utilisateur d’arrêter est renseignée sur le GS et sur le WS.
  2. Le GS créera un fichier historique de la session, le fichier sera alors haché.
  3. Le dernier montant actualisé des portefeuilles WS avec le hachage sera envoyé au contrat intelligent.
  4. Selon les informations transmises, le contrat intelligent changera son état et traitera le paiement sur la Blockchain.

Procédure d’acceptation de jeu

Nous pensons que notre approche va attirer un certain nombre de développeurs et de propositions de jeux.

Afin de rendre le processus d’acceptation de jeu efficace et pertinent pour notre plate-forme, toutes les nouvelles propositions de jeu seront traitées comme suit :

  1. Audit de code : nos experts s'assureront que tout correspond à nos exigences en matière de sécurité et légales.
  2. Tester le jeu basé sur diverses métriques : temps, sécurité, coûts, intégration de la blockchain, expérience utilisateur, etc. Si les résultats des étapes I et II sont réussis, le jeu proposé passera ensuite par le processus d’intégration.
  3. Développement du contrat intelligent.
  4. Vérification de test et de sécurité du contrat intelligent développé.
  5. Lancement du jeu sur la plate-forme.

Une fois que le jeu est au sein du réseau Joy Games, tout s’intégrera au sein du système. Si le développeur a besoin de liquidités supplémentaires, il/elle sera facilement en mesure d’accéder au groupes de casinos qui sont disposés à participer en offrant des jeux. S'il y a d'autres problèmes techniques, notre équipe apportera son assistance au développeur afin d'arriver rapidement à une solution.

Exemple de contrat intelligent de paiement

    uint256 playerDeposit = playerDeposits[player];
        playerDeposits[player] = 0;
        uint256 payout = getPayout(playerDeposit);
        uint256 platformShare = playerDeposit.mul(registry.platformShare()).div(10**registry.decimals());
        require(platformShare < playerDeposit);
        if (platformShare > 0)
            require(token.transfer(registry.owner(), platformShare));
        uint256 profit = playerDeposit.sub(platformShare);
        ownerAvailableDeposit = ownerAvailableDeposit.add(payout.sub(playerDeposit )).add(profit );
        return true;
    

Au sein de son contrat, le développeur peut choisir de recevoir un part des bénéfices réalisés sur l’exécution du jeu. Cela est spécifié dans la variable platformShare. Après chaque manche de jeu effectuée par le casino, le développeur recevra une petite partie des revenus. Tout cela est codé directement dans le contrat intelligent donc il n’y a pas d’attente entre le jeu joué et le paiement.

Exemple de processus d’intégration Blockchain : Icy Cash Splash

Alors que l’exemple de code est inclus dans le livre blanc pour démontrer les fonctionnalités et la mise en œuvre de Joytoken, notre référentiel officiel est accessible via notre lien de github ci-dessous : https://github.com/JoyPlatform/joy-contracts. Le code sera commenté pour offrir une visibilité et une compréhension totale de notre approche dans une perspective de développement. Si vous avez des questions, veuillez contacter notre équipe par le canal de communication à tout moment.

La technologie de la Blockchain au-delà d'Ethereum

Ethereum n’est pas immédiatement commercialisable pour la technologie du jeu parce qu’il y a encore des problèmes avec la vitesse et l’évolutivité qui doivent être résolus. Dans cette section, nous présenterons deux technologies complémentaires qui pourraient ajouter de la valeur à notre initiative et pourraient être intégrés à notre plan de développement.

IOTA: Décentralisation par l'intermédiaire de DAG (graphe orienté acyclique)

IOTA est une nouvelle approche décentralisée innovante. Ce n’est pas un écosystème de blockchain, il introduit plutôt le concept de tangle. Un tangle est littéralement une blockchain sans blocs et cela fait du consensus une partie intrinsèque du système.


Cette innovation présente des fonctionnalités de jeu révolutionnaires pour l’industrie des jeux de hasard :

The negative for the gambling business would be the transaction validation time. However, the transaction time is directly impacted by the number of active participants (since you must participate in two other validations in order to make your own transaction validated). Thus, a larger number of users will decrease the transaction time (which is currently between 2-3 minutes). Notably, the IOTA network is still on a beta version and the free transaction feature will likely attract large amounts of users and thereby resolve the transaction validation time. The potential of this ecosystem has no limit, and we are following its development and hoping to test game integration in the near future. [1]

Decentralization of storage and hosting

Decentralised storage is an open market since the blockchain technology is not made to store data. Sia [2], IPFS [2], and Storj [3] are the main competitors for this market. The general idea is to allow users to store data or rent available storage capabilities managed over a decentralised environment.

For example, many people in the world possess unused storage capabilities. The competitors mentioned above propose to store data with a high level of security across a network of participants that are looking to be rewarded for their hard drive rental. If a person wants to store a 1 gigabit document, then the document will be split into many pieces and each piece will be encrypted. Then, those encrypted pieces are copied and spread over each participant’s hard drive.

The power of this model is that the only way to access the file is to possess the private key of the document holder, since it is impossible to find all the encrypted pieces of all the participants in the network. It provides strong security for a very attractive price and is just a little more expensive than common centralised systems. This technology allows storage of very sensitive data over any user’s computer because everything managed between the renter and user is via a cryptocurrency payment.

As presented in section 11.3, we chose to store a hash of a client’s Game session over the blockchain environment to make available a full traceability of the user’s journey. Using the decentralised storage in our model would provide security of the history and a strong reliability because the system no longer has a central point of failure.

Joy Gaming is looking into using this solution for potential integration in its further development.

Affiliate engagement

New casino operators often struggle with player liquidity. Also, large affiliates do not want to deal with small start-up games by developers because they often have poor conversion and low retention rates with players. Therefore, large affiliates are hesitant to deal with small developers until they have some trading history. As these small developers are paid on a periodic basis and not in real time, they often suffer cash ow issues. Joy Gaming easily solves this through our pay-per-game model. Each time customers play on the game, the payments are made to the respective participants in the game. This ensures an agile ecosystem with a small feedback loop that will even further encourage new and innovative operations by developers.

The ICO, KYC Management and Requirements

In order to satisfy our legal compliance, we have to associate each investment with its investor. All participants, whatever the amount they have invested, will go through the basic verification procedure that includes a copy of their Passport. This process will be managed by JUMIO, which is a trusted KYC management company.

The Game Access, KYC Management and Requirements

KYC may be implemented in order to comply with regulatory bodies. In this case, in order to be able to access the game, every Client has to successfully go through the KYC process. Following each successful KYC check, the Public Key of the Client’s Wallet will be added to our system. Once the client’s public key is added, then the client can use our ecosystem. Players will then be easily able to see their status and review their play history on the public blockchain.

Case studies

The software development company

Avent is a software development company that wants to create an online gambling game. They have an amazing idea that would change the industry. However, casinos are not willing to hire Avent because the market is not tested yet. Avent could run their own private game online, but this comes with multiple issues. First, Avent doesn’t have the capital to offer their own private high stakes games. Second, users will hesitate to trust an unknown company. In addition, users are also not comfortable with the idea of handing over their credit card information to a 3rd party who will have access to all the funds. This means that Avent would find it very difficult to make a profit on their innovative gambling games.

Joy Gaming solves this in two ways. First, if Avent were to run on the Joy Gaming network, they would get exposure to a large number of liquidity providers (i.e. casinos) and that would resolve any liquidity issue. Second, the transparent and immutable nature of smart contracts and a trusted RNG generation algorithm would assure potential users that the games they are playing on Avent are fair. Finally, because all the transactions are conducted directly from the user’s wallet, they have access to all the funds at all times and would be more willing to try out Avent. Avent is now able to reach more customers than before and can focus more time on developing additional innovative games.

The user

Users are tired of having to constantly browse between many different casinos and games room, which requires them to trust an increasing number of third parties. Joy Gaming ensures all the transactions are visible, rules are immutable within the blockchain, and it verifies its developers. Therefore, users can play on Joy Gaming’s network and be assured that the games are fully verified and secure. Because no funds leave the user’s wallet until a game is initiated, the user is assured that their funds are safe and secure.

The casinos

Casinos are always looking for new ways to attract users and improve the quality of their games. Casinos also have the expertise, capital and liquidity to run games independently. Unfortunately, casinos cannot simply add random games because newly developed games are often not accepted by the mass market. The Joy Gaming network brings a solution. Developers that create new, exciting and experimental games can enter contracts directly with casinos. In this case, casinos are the liquidity provider in the smart contract, and each time a user plays the game, the casino would pay a commission to the developer. It’s a win-win scenario.

Vente de jeton

The Token

JoyTokens will be available for purchase on the Ethereum network as an ERC20 token. There is a current challenge with the ERC20 token: if you send your token to a Smart Contract, you have to use the “approve + transfer form” function to make the transfer. But, if you send your token to an externally owned address, you have to use the “transfer” function. Unfortunately, if you make a mistake using those functions, then the money is lost.


Sample code for the ERC20 token interface
    contract ERC20 is ERC20Basic {
      function allowance(address owner, address spender) public constant returns (uint256);
      function transferFrom(address from, address to, uint256 value) public returns (bool);
      function approve(address spender, uint256 value) public returns (bool);
      event Approval(address indexed owner, address indexed spender, uint256 value);
    }
    

We are aware of this challenge and are working to ensure it will not happen to our Clients. We plan to upgrade to the new and under-development ERC223 standard (after it is fully developed). The ERC223 has a new feature that triggers, in the case of a scenario explained above, and the money is automatically sent back to the client.

Utility

JoyTokens have many different uses. In the most basic sense, JoyTokens can be used to by players to play the games on the Joy Gaming network. The network provides a frictionless rewards system, guaranteed pay-outs, attraction of otherwise unobtainable affiliates, eliminates potential fraud and reduces payment processing fees.

For casinos and game developers, the tokens can be used to secure payment for running games and for receiving payment from players. Casinos can guarantee real-time affiliate payments to all developers, thereby affording new casino operators the same highly lucrative affiliate deals that are currently available only to the largest brands.

For the smaller game developers that rely on bigger casinos to “back” the games, tokens can be used to receive commissions from the casinos that provide the reputation and the working capital to offer the game.

All legitimate parties are afforded the security of knowing the immutable smart contracts, coupled with the tokens, eliminates fraud on the network.

Overall, tokens will have a value based on what users are willing to pay in order to use the services on the Joy Gaming network.

Token sale structure

Cryptocurrency accepted: ETH, BTC, Wire transfer

Hard-cap: JoyToken sale has a hard-cap of 46 340 000 USD.

Soft-cap: JoyToken sale has a soft-cap of 1 000 000 USD. If the total amount raised is below the soft-cap, the offering is considered failed.

Timescale: Starting approximately on 20th of March 2018 and lasting for up to 31 days or before all the tokens are distributed.

Oversubscription: When JoyToken offering raises more than 46 340 000 USD, the token sale will be closed immediately. There is a chance of oversubscription. In such an event, the exceeding amount of fund will be returned within 15 days after the close of the token sale. Please note that no interest will be paid in such case.

Failure: If the token sale does not hit the soft-cap, then it will be considered a failed token sale. The offering will be terminated and any funds sent will be returned within 15 days after the close of the token sale. Please note that no interest will be paid in such case.

Other risks: The sale of the tokens involves a number of other risks that are explained in the Private Placement Memorandum (PPM) that accompanies the token sale documents. Those risks include, without limitation, the SEC’s current position that similar tokens were considered securities and required registration or an exemption, potential loss of value in the tokens, inability to resell the tokens, failure to develop the Joy Gaming network, and viability of technology risks. The reader is urged to read the PPM for a fuller explanation of the risks and to obtain proper counsel before proceeding with any investment.

Token Distribution

Pré-vente 20 % 140 000 000
Sold during ICO* 30 % 210 000 000
Rewards pool (VIP etc) 10 % 70 000 000
Vendus sur la plateforme 23 % 161 000 000
Founding team, vested for 24 months 12 % 84 000 000
Ambassadors, Fund Raising Fees 3 % 21 000 000
ICO bounties 2 % 14 000 000
Total 100% 700 000 000

*Les jetons invendus seront brûlés.

Notre Équipe

Directeur général

Andrew MacDonald

20 ans d’expérience dans le secteur des jeux et de la vente au détail pour les principales entreprises du secteur. Application avec succès des techniques de rétention marketing sur le joueur individuel et des stratégies permettant de garantir des offres de jeu de qualité afin de promouvoir la croissance des entreprises. Un passionné de la recherche de solutions avec un fort accent sur les données.

Directeur marketing

Mike Leys

Plus de 34 ans d'expérience professionnelle, dont 30 ans dans le secteur du marketing. Responsable d'équipe et spécialiste marketing senior avec une connaissance et une implication éprouvée dans tous les domaines du marketing en ligne et hors ligne et du commerce électronique à travers le monde. Son expérience dans le secteur comprend l'iGaming, le divertissement, la téléphonie mobile, la vente au détail et les services financiers. Depuis 2005 dans le secteur de l'iGaming - lancement avec succès d'un certain nombre de sites de jeux en ligne avec l'objectif d'attirer des joueurs de qualité.

Directeur technique

Steve Giordano Imbroll

10 ans d'expérience en développement logiciel, 7 ans en Business Intelligence, dans le secteur bancaire et financier. Développeur de produits hautement qualifiés pour, a.o., Sony, Uber & PKR Technologies. Professionnel multidisciplines avec de multiples demandes de différents départements. Visionnaire vis-à-vis des subtilités de la performance de l'entreprise. Fascination récente pour le jeu et la sécurité.

Feuille de route

JUIN 2017
OP: 500 000 de financement initial
OCTOBRE 2017
OP: Des conseillers de l'industrie et de la blockchain
NOVEMBRE 2017
OP: Création de la fondation Joy Gaming
OUT: Présentation lors de la BlockChain Expo
DÉCEMBRE 2017
TECH: Machine à sous de démonstration utilisant des contrats intelligents
OP: Demande de licence de développeur de logiciel de paris
TECH: Lancement de la plateforme de développeurs de Joy Gaming
TECH: Audit du Code
MARCH 2017
OP: Vente de jetons
AVRIL 2018
OP: Audit de la vente de jetons
JUIN 2018
TECH: Jeux en direct sur Playcosmo
AOÛT 2018
TECH: Expansion aux jeux de table à probabilités fixes
OP: Intégration de plus de plateformes & d'opérateurs directs

Références

[1] https://iota.org/IOTA_Whitepaper.pdf

[2] https://www.sia.tech/whitepaper.pdf

[3] https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf

[4] https://storj.io/storj.pdf

[5] https://bitcoin.org/bitcoin.pdf

[6] https://github.com/ethereum/wiki/wiki/White-Paper

Table des matières