टोकन एकीकरण चेकलिस्ट
मनमाने टोकन के साथ इंटरैक्ट करते समय इस चेकलिस्ट का पालन करें। सुनिश्चित करें कि आप प्रत्येक आइटम से जुड़े जोखिमों को समझते हैं, और इन नियमों के किसी भी अपवाद को सही ठहराएं।
सुविधा के लिए, सभी स्लिदर यूटिलिटीज़ (opens in a new tab) को सीधे टोकन पते पर चलाया जा सकता है, जैसे:
स्लिदर का उपयोग करने वाला ट्यूटोरियल
slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherTokenइस चेकलिस्ट का पालन करने के लिए, आप टोकन के लिए स्लिदर से यह आउटपुट प्राप्त करना चाहेंगे:
- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]- slither [target] --print human-summary- slither [target] --print contract-summary- slither-prop . --contract ContractName # Echidna और Manticore के उपयोग और कॉन्फ़िगरेशन की आवश्यकता हैसामान्य विचार
- अनुबंध की सुरक्षा समीक्षा की गई है। उन अनुबंधों के साथ इंटरैक्ट करने से बचें जिनकी सुरक्षा समीक्षा नहीं हुई है। मूल्यांकन की लंबाई (उर्फ “प्रयास का स्तर”), सुरक्षा फर्म की प्रतिष्ठा, और निष्कर्षों की संख्या और गंभीरता की जांच करें।
- आपने डेवलपर से संपर्क किया है। आपको किसी घटना के बारे में उनकी टीम को सचेत करने की आवश्यकता हो सकती है। blockchain-security-contacts (opens in a new tab) पर उपयुक्त संपर्क खोजें।
- महत्वपूर्ण घोषणाओं के लिए उनके पास एक सुरक्षा मेलिंग सूची है। उनकी टीम को यूज़र (जैसे आप!) को सलाह देनी चाहिए जब महत्वपूर्ण समस्याएं मिलती हैं या जब अपग्रेड होते हैं।
ERC अनुरूपता
स्लिदर में एक यूटिलिटी, slither-check-erc (opens in a new tab) शामिल है, जो कई संबंधित ERC मानकों के लिए एक टोकन की अनुरूपता की समीक्षा करता है। यह समीक्षा करने के लिए slither-check-erc का उपयोग करें कि:
- ट्रांसफ़र और ट्रांसफ़रफ़्रॉम एक बूलियन लौटाते हैं। कई टोकन इन फ़ंक्शन पर बूलियन नहीं लौटाते हैं। परिणामस्वरूप, अनुबंध में उनके कॉल विफल हो सकते हैं।
- यदि उपयोग किया जाता है तो नाम, दशमलव और प्रतीक फ़ंक्शन मौजूद होते हैं। ये फ़ंक्शन ERC20 मानक में वैकल्पिक हैं और मौजूद नहीं हो सकते हैं।
- दशमलव एक uint8 लौटाता है। कई टोकन गलत तरीके से एक uint256 लौटाते हैं। यदि ऐसा है, तो सुनिश्चित करें कि लौटाया गया मान 255 से कम है।
- टोकन ज्ञात ERC20 रेस कंडीशन (opens in a new tab) को कम करता है। ERC20 मानक में एक ज्ञात ERC20 रेस कंडीशन है जिसे हमलावरों को टोकन चोरी करने से रोकने के लिए कम किया जाना चाहिए।
- टोकन ERC777 टोकन नहीं है और ट्रांसफ़र और ट्रांसफ़रफ़्रॉम में कोई बाहरी फ़ंक्शन कॉल नहीं है। ट्रांसफ़र फ़ंक्शन में बाहरी कॉल रीएंट्रेंसी का कारण बन सकती हैं।
स्लिदर में एक यूटिलिटी, slither-prop (opens in a new tab) शामिल है, जो यूनिट टेस्ट और सुरक्षा गुण उत्पन्न करता है जो कई सामान्य ERC खामियों को खोज सकता है। यह समीक्षा करने के लिए slither-prop का उपयोग करें कि:
- अनुबंध slither-prop से सभी यूनिट परीक्षणों और सुरक्षा गुणों को पास करता है। उत्पन्न यूनिट परीक्षण चलाएं, फिर एकिड्ना (opens in a new tab) और मैंटिकोर (opens in a new tab) के साथ गुणों की जांच करें।
अंत में, कुछ ऐसी विशेषताएं हैं जिन्हें स्वचालित रूप से पहचानना मुश्किल है। इन शर्तों की मैन्युअल रूप से समीक्षा करें:
- ट्रांसफ़र और ट्रांसफ़रफ़्रॉम को कोई शुल्क नहीं लेना चाहिए। अपस्फीतिकारी टोकन अप्रत्याशित व्यवहार का कारण बन सकते हैं।
- टोकन से अर्जित संभावित ब्याज को ध्यान में रखा जाता है। कुछ टोकन, टोकन धारकों को ब्याज वितरित करते हैं। यदि ध्यान में नहीं रखा गया तो यह ब्याज अनुबंध में फंस सकता है।
अनुबंध संरचना
- अनुबंध अनावश्यक जटिलता से बचता है। टोकन एक साधारण अनुबंध होना चाहिए; जटिल कोड वाले टोकन के लिए उच्च मानक की समीक्षा की आवश्यकता होती है। जटिल कोड की पहचान करने के लिए स्लिदर के ह्यूमन-समरी प्रिंटर (opens in a new tab) का उपयोग करें।
- अनुबंध SafeMath का उपयोग करता है। जो अनुबंध SafeMath का उपयोग नहीं करते हैं, उन्हें उच्च मानक की समीक्षा की आवश्यकता होती है। SafeMath उपयोग के लिए अनुबंध का मैन्युअल रूप से निरीक्षण करें।
- अनुबंध में केवल कुछ गैर-टोकन-संबंधित फ़ंक्शन हैं। गैर-टोकन-संबंधित फ़ंक्शन अनुबंध में किसी समस्या की संभावना को बढ़ाते हैं। अनुबंध में उपयोग किए गए कोड की व्यापक रूप से समीक्षा करने के लिए स्लिदर के कॉन्ट्रैक्ट-समरी प्रिंटर (opens in a new tab) का उपयोग करें।
- टोकन का केवल एक पता है। बैलेंस अपडेट के लिए कई एंट्री पॉइंट वाले टोकन पते के आधार पर आंतरिक बहीखाता को तोड़ सकते हैं (जैसे,
balances[token_address][msg.sender]वास्तविक बैलेंस को नहीं दर्शा सकता है)।
मालिक के विशेषाधिकार
- टोकन अपग्रेड करने योग्य नहीं है। अपग्रेड करने योग्य अनुबंध समय के साथ अपने नियम बदल सकते हैं। यह निर्धारित करने के लिए कि क्या अनुबंध अपग्रेड करने योग्य है, स्लिदर के ह्यूमन-समरी प्रिंटर (opens in a new tab) का उपयोग करें।
- मालिक के पास सीमित मिंटिंग क्षमताएं हैं। दुर्भावनापूर्ण या समझौता किए गए मालिक मिंटिंग क्षमताओं का दुरुपयोग कर सकते हैं। मिंटिंग क्षमताओं की समीक्षा के लिए स्लिदर के ह्यूमन-समरी प्रिंटर (opens in a new tab) का उपयोग करें, और कोड की मैन्युअल रूप से समीक्षा करने पर विचार करें।
- टोकन को रोका नहीं जा सकता। दुर्भावनापूर्ण या समझौता किए गए मालिक रोके जा सकने वाले टोकन पर निर्भर अनुबंधों को फंसा सकते हैं। रोके जा सकने वाले कोड को मैन्युअल रूप से पहचानें।
- मालिक अनुबंध को ब्लैकलिस्ट नहीं कर सकता। दुर्भावनापूर्ण या समझौता किए गए मालिक ब्लैकलिस्ट वाले टोकन पर निर्भर अनुबंधों को फंसा सकते हैं। ब्लैकलिस्टिंग सुविधाओं को मैन्युअल रूप से पहचानें।
- टोकन के पीछे की टीम ज्ञात है और दुरुपयोग के लिए जिम्मेदार ठहराई जा सकती है। अनाम विकास टीमों के साथ अनुबंध, या जो कानूनी आश्रयों में रहते हैं, उन्हें उच्च मानक की समीक्षा की आवश्यकता होनी चाहिए।
टोकन की कमी
टोकन की कमी के मुद्दों की समीक्षा के लिए मैन्युअल समीक्षा की आवश्यकता होती है। इन शर्तों के लिए जाँच करें:
- कोई भी यूज़र अधिकांश आपूर्ति का मालिक नहीं है। यदि कुछ यूज़र अधिकांश टोकन के मालिक हैं, तो वे टोकन के पुनर्वितरण के आधार पर संचालन को प्रभावित कर सकते हैं।
- कुल आपूर्ति पर्याप्त है। कम कुल आपूर्ति वाले टोकन को आसानी से हेरफेर किया जा सकता है।
- टोकन कुछ से अधिक एक्सचेंजों में स्थित हैं। यदि सभी टोकन एक एक्सचेंज में हैं, तो एक्सचेंज का एक समझौता टोकन पर निर्भर अनुबंध से समझौता कर सकता है।
- यूज़र बड़े फंड या फ्लैश लोन के संबंधित जोखिमों को समझते हैं। टोकन बैलेंस पर निर्भर अनुबंधों को बड़े फंड वाले हमलावरों या फ्लैश लोन के माध्यम से हमलों पर सावधानीपूर्वक विचार करना चाहिए।
- टोकन फ्लैश मिंटिंग की अनुमति नहीं देता है। फ्लैश मिंटिंग से बैलेंस और कुल आपूर्ति में पर्याप्त उतार-चढ़ाव हो सकता है, जिसके लिए टोकन के संचालन में सख्त और व्यापक ओवरफ़्लो जाँच की आवश्यकता होती है।
पेज का अंतिम अपडेट: 3 मार्च 2026