
यह एक जानबूझकर कमजोर बनाया गया स्मार्ट कॉन्ट्रैक्ट truffle deployment है, जिसका उद्देश्य स्मार्ट कॉन्ट्रैक्ट सुरक्षा में रुचि रखने वालों को एक सुरक्षित वातावरण में विभिन्न प्रकार की समस्याओं का शोषण करने की अनुमति देना है।
कैसीनो के विभिन्न खेलों में अपनी किस्मत(या कौशल) आज़माएँ और शानदार टोकन और पुरस्कार जीतें!
यह विकासाधीन है इसलिए इस समय खेलों की संख्या निराशाजनक हो सकती है, लेकिन आने वाले समय में और खेल जोड़े जाएँगे और तब तक शोषण करने के लिए बहुत सी चीज़ें मौजूद हैं।
डिपेंडेंसी इंस्टॉल करें
sudo apt install npmsudo npm install -g truffle ganache-cliटेस्टआरपीसी शुरू करने, कैसीनो को अपने लोकल टेस्टनेट पर डिप्लॉय करने और अन्य खिलाड़ियों का अनुकरण शुरू करने के लिए ./start_challenge.sh चलाएँ
कमजोरियों को खोजने के लिए contracts/ डायरेक्टरी में कोड की समीक्षा करें
जितने संभव हो उतने CasinoTokens प्राप्त करने के लिए प्रूफ ऑफ कॉन्सेप्ट स्क्रिप्ट बनाएँ! (यदि आप अटक जाएँ तो कॉन्ट्रैक्ट्स के साथ इंटरैक्ट करने का अंदाज़ा पाने के लिए exec/simuilated-users/ डायरेक्टरी में सिम्युलेटेड यूज़र स्क्रिप्ट्स देखें)
GOATlib/GOATConfig.js में लाइब्रेरी का उपयोग कर सकते हैं और अपनी सभी कॉल्स के लिए GOATConfig.accounts.attacker का उपयोग कर सकते हैं। मुझे पता है कि आपके पास वास्तविक मालिक (owner) अकाउंट्स और अन्य खिलाड़ियों तक पहुँच है, क्योंकि यह testrpc पर है, और मैं आपकी उस स्क्रिप्ट से प्रभावित नहीं हूँ जो अकाउंट्स को साइकिल करके transfer कॉल करती है।GOATlib/: विभिन्न JavaScript फ़ाइलों द्वारा उपयोग किए जाने वाले कोड वाली लाइब्रेरी।build/: वह डायरेक्टरी जिसे Truffle प्रोजेक्ट कंपाइल करते समय बनाता है। इसमें प्रोजेक्ट के सभी कॉन्ट्रैक्ट्स की जानकारी होती है, जिसमें कंपाइल्ड बाइटकोड और डिप्लॉय किए गए कॉन्ट्रैक्ट्स के पते शामिल हैं।contracts/: स्मार्ट कॉन्ट्रैक्ट कोड।exec/simulated-users/: विभिन्न खेल खेलने वाले सिम्युलेटेड जुआरियों को नियंत्रित करने वाली स्क्रिप्ट्स।exec/examples: अपने एक्सप्लॉइट्स बनाते समय संदर्भ के लिए उदाहरण स्क्रिप्ट्सmigrations/: डिप्लॉयमेंट के लिए Truffle द्वारा निष्पादित स्क्रिप्ट्स। इन्हें वर्णानुक्रम में निष्पादित किया जाता है और ये इस बात की जानकारी दे सकती हैं कि कॉन्ट्रैक्ट्स कैसे इनिशियलाइज़ होते हैं और एक साथ कैसे जुड़ते हैं।GOATCasino के सभी खेल एक ERC20-अनुरूप टोकन का उपयोग करते हैं, जिसे CasinoToken.sol फ़ाइल में परिभाषित किया गया है।
CasinoToken, टोकन की अधिकांश मानक कार्यक्षमताओं को लागू करने के लिए व्यापक रूप से उपयोग किए जाने वाले zeppelin कॉन्ट्रैक्ट्स का उपयोग करता है।
आप CasinoExchange.sol में परिभाषित कॉन्ट्रैक्ट का उपयोग करके ether के बदले CasinoTokens खरीद और बेच सकते हैं।
Faucet.sol फ़ाइल एक ऐसा कॉन्ट्रैक्ट परिभाषित करती है जिसका उपयोग प्रति उपयोगकर्ता एक बार किया जा सकता है ताकि खेलों को आज़माने के लिए CasinoTokens की मुफ्त आपूर्ति प्राप्त की जा सके।
Vault.sol कॉन्ट्रैक्ट मालिक की पहुँच के लिए फंड्स का रिज़र्व रखता है। वॉल्ट के फंड्स के बराबर हिस्से एक्सेस कंट्रोल के अलग-अलग तरीकों द्वारा सुरक्षित किए जाते हैं, ताकि यदि कोई एक तरीका अपर्याप्त पाया जाए तो फंड्स की बेहतर सुरक्षा हो सके।
अंत में, इस समय कैसीनो में एकमात्र खेल लॉटरी है।
उपयोगकर्ता 0 से 255 तक नंबर वाले टिकट खरीद सकते हैं।
हर मिनट, एक उपयोगकर्ता checkWin फ़ंक्शन को ट्रिगर करके विजेता टिकट नंबर जनरेट कर सकता है, विजेता को पुरस्कार राशि (हाउस का हिस्सा घटाकर) दे सकता है, और खरीदे गए टिकटों को साफ़ करके एक नया राउंड शुरू कर सकता है।
यदि किसी ने भी विजेता टिकट नहीं खरीदा है, तो राउंड खरीदारी के एक और मिनट के लिए जारी रहता है, इससे पहले कि नया विजेता टिकट चुना जा सके।