
Ceci est un déploiement Truffle de contrats intelligents intentionnellement vulnérables, destiné à permettre aux personnes intéressées par la sécurité des contrats intelligents d'exploiter une grande variété de problèmes dans un environnement sûr.
Tentez votre chance (ou vos compétences) aux différents jeux du casino pour gagner de fabuleux jetons et des prix !
Ce projet est en cours de développement, il peut donc y avoir pour l'instant un nombre décevant de jeux, mais d'autres arriveront et il y a plein de choses à exploiter en attendant.
Installer les dépendances
sudo apt install npmsudo npm install -g truffle ganache-cliExécutez ./start_challenge.sh pour démarrer testrpc, déployer le casino sur votre testnet local et commencer à simuler les autres joueurs
Examinez le code dans le répertoire contracts/ pour trouver des vulnérabilités
Créez des scripts de preuve de concept pour obtenir autant de CasinoTokens que possible ! (regardez les scripts d'utilisateurs simulés dans le répertoire exec/simuilated-users/ pour avoir une idée de comment interagir avec les contrats si vous êtes bloqué)
GOATlib/GOATConfig.js et utiliser GOATConfig.accounts.attacker pour tous vos appels. Je sais que vous avez accès aux véritables comptes propriétaires et aux autres joueurs puisque c'est sur testrpc, et je ne suis pas impressionné par votre script qui parcourt les comptes et appelle transfer.GOATlib/ : bibliothèque contenant le code utilisé par les différents fichiers JavaScript.build/ : le répertoire que Truffle crée lorsqu'il compile le projet. Il contient des informations sur tous les contrats du projet, y compris le bytecode compilé et les adresses des contrats déployés.contracts/ : le code des contrats intelligents.exec/simulated-users/ : scripts contrôlant les joueurs simulés qui jouent aux différents jeux.exec/examples : exemples de scripts auxquels vous pouvez vous référer lors de la création de vos exploitsmigrations/ : scripts exécutés par truffle pour le déploiement. Ils sont exécutés par ordre alphabétique et peuvent offrir un aperçu de la façon dont les contrats sont initialisés et dont ils s'assemblent.Tous les jeux du GOATCasino utilisent un jeton conforme à l'ERC20, défini dans le fichier CasinoToken.sol.
Le CasinoToken utilise certains contrats zeppelin largement répandus pour implémenter une grande partie des fonctionnalités standard d'un jeton.
Vous pouvez utiliser le contrat défini dans CasinoExchange.sol pour acheter et vendre des CasinoTokens en échange d'ether.
Le fichier Faucet.sol définit un contrat qui peut être utilisé une fois par utilisateur pour obtenir un approvisionnement gratuit en CasinoTokens afin d'essayer les jeux.
Le contrat Vault.sol détient une réserve de fonds à laquelle le propriétaire peut accéder. Des parts égales des fonds du coffre sont protégées par des méthodes distinctes de contrôle d'accès afin de mieux protéger les fonds si une méthode s'avère insuffisante.
Enfin, le seul jeu du casino pour le moment est la loterie.
Les utilisateurs peuvent acheter des billets numérotés de 0 à 255.
Chaque minute, un utilisateur peut déclencher la fonction checkWin pour générer le numéro de billet gagnant, récompenser le gagnant avec le montant du prix (moins la part de la maison) et commencer un nouveau tour en effaçant les billets achetés.
Si personne n'a acheté le billet gagnant, le tour continue pendant une autre minute d'achat avant qu'un nouveau billet gagnant puisse être choisi.