
هذا نشرٌ لعقود ذكية هشّة عمدًا باستخدام Truffle، يهدف إلى تمكين المهتمين بأمن العقود الذكية من استغلال مجموعة واسعة من الثغرات في بيئة آمنة.
جرّب حظك (أو مهاراتك) في الألعاب المختلفة في الكازينو لتربح رموزاً وجوائز رائعة!
هذا المشروع قيد التطوير، لذا قد تجد عدداً مخيباً للآمال من الألعاب في الوقت الحالي، لكن المزيد قادم وهناك الكثير من الأشياء التي يمكن استغلالها في هذه الأثناء.
ثبّت التبعيات
sudo apt install npmsudo npm install -g truffle ganache-cliشغّل ./start_challenge.sh لبدء testrpc، ونشر الكازينو على شبكة الاختبار المحلية لديك، والبدء في محاكاة اللاعبين الآخرين
راجع الكود في دليل contracts/ للعثور على الثغرات
أنشئ نصوصاً برمجية لإثبات المفهوم (PoC) للحصول على أكبر عدد ممكن من CasinoTokens! (اطّلع على نصوص المستخدمين المُحاكاة في دليل exec/simuilated-users/ لتفهم كيفية التفاعل مع العقود إذا واجهتك صعوبة)
GOATlib/GOATConfig.js واستخدام GOATConfig.accounts.attacker في جميع استدعاءاتك. أعلم أن لديك إمكانية الوصول إلى حسابات المالك الفعلية واللاعبين الآخرين لأن المشروع يعمل على testrpc، ولن يثير إعجابي برنامجك النصي الذي يتنقل بين الحسابات ويستدعي transfer.GOATlib/: مكتبة تحتوي على كود تستخدمه ملفات JavaScript المختلفة.build/: الدليل الذي ينشئه Truffle عند تجميع المشروع. يحتوي على معلومات حول جميع العقود في المشروع بما في ذلك bytecode المُجمّع وعناوين العقود المنشورة.contracts/: كود العقود الذكية.exec/simulated-users/: نصوص برمجية تتحكم في المقامرين المحاكيين الذين يلعبون الألعاب المختلفة.exec/examples: نصوص برمجية أمثلة يمكنك الرجوع إليها عند بناء استغلالاتك.migrations/: نصوص برمجية ينفذها truffle للنشر. تُنفذ بترتيب أبجدي ويمكن أن تقدم رؤى حول كيفية تهيئة العقود وكيفية ارتباطها ببعضها البعض.جميع الألعاب في GOATCasino تستخدم رمزاً متوافقاً مع معيار ERC20، وهو معرّف في ملف CasinoToken.sol.
يستفيد CasinoToken من بعض عقود zeppelin واسعة الاستخدام لتنفيذ الكثير من الوظائف القياسية للرمز.
يمكنك استخدام العقد المعرّف في CasinoExchange.sol لشراء وبيع CasinoTokens مقابل ether.
يُعرّف ملف Faucet.sol عقداً يمكن استخدامه مرة واحدة لكل مستخدم للحصول على إمداد مجاني من CasinoTokens لتجربة الألعاب.
يحتفظ عقد Vault.sol باحتياطي من الأموال ليتمكن المالك من الوصول إليه. أجزاء متساوية من أموال الخزنة محمية بطرق منفصلة للتحكم في الوصول، وذلك لحماية الأموال بشكل أفضل إذا تبين أن إحدى الطرق غير كافية.
أخيراً، اللعبة الوحيدة في الكازينو حالياً هي اليانصيب.
يمكن للمستخدمين شراء التذاكر برقم من 0 إلى 255.
كل دقيقة، يمكن للمستخدم تشغيل دالة checkWin لإنشاء رقم التذكرة الفائزة، ومكافأة الفائز بالجائزة المالية (مطروحاً منها عمولة الكازينو)، وبدء جولة جديدة بمسح التذاكر المشتراة.
إذا لم يشترِ أحد التذكرة الفائزة، تستمر الجولة لدقيقة إضافية من الشراء قبل أن يمكن اختيار تذكرة فائزة جديدة.