मुख्य सामग्री पर जाएँ

स्मार्ट अनुबंध सुरक्षा जांचसूची

स्मार्ट अनुबंध
सुरक्षा
Solidity
माध्यमिक
Trailofbits
7 सितंबर 2020
3 मिनट का पठन

स्मार्ट अनुबंध विकास जांचसूची

यहां एक उच्च-स्तरीय प्रक्रिया है जिसका पालन करने की हम अनुशंसा करते हैं जब आप अपने स्मार्ट अनुबंध लिखते हैं।

ज्ञात सुरक्षा समस्याओं के लिए जांच करें:

  • स्लिदर (opens in a new tab) के साथ अपने अनुबंधों की समीक्षा करें। इसमें सामान्य कमजोरियों के लिए 40 से अधिक अंतर्निहित डिटेक्टर हैं। नए कोड के साथ हर चेक-इन पर इसे चलाएं और सुनिश्चित करें कि यह एक साफ रिपोर्ट प्राप्त करता है (या कुछ मुद्दों को शांत करने के लिए ट्रायज मोड का उपयोग करें)।
  • क्रिटिक (opens in a new tab) के साथ अपने अनुबंधों की समीक्षा करें। यह उन 50 समस्याओं की जांच करता है जो स्लिदर नहीं करता है। क्रिटिक आपकी टीम को एक-दूसरे के काम पर नज़र रखने में भी मदद कर सकता है, गिटहब पर पुल रिक्वेस्ट में सुरक्षा समस्याओं को आसानी से सामने लाकर।

अपने अनुबंध की विशेष विशेषताओं पर विचार करें:

  • क्या आपके अनुबंध अपग्रेड करने योग्य हैं? त्रुटियों के लिए अपने अपग्रेडेबिलिटी कोड की समीक्षा slither-check-upgradeability (opens in a new tab) या क्रिटिक (opens in a new tab) के साथ करें। हमने 17 तरीकों का दस्तावेजीकरण किया है जिनसे अपग्रेड गलत हो सकते हैं।
  • क्या आपके अनुबंध ERCs के अनुरूप होने का दावा करते हैं? उन्हें slither-check-erc (opens in a new tab) से जांचें। यह उपकरण तुरंत छह सामान्य विशिष्टताओं से विचलन की पहचान करता है।
  • क्या आप तीसरे पक्ष के टोकन के साथ एकीकृत करते हैं? बाहरी अनुबंधों पर भरोसा करने से पहले हमारी टोकन एकीकरण जांचसूची की समीक्षा करें।

अपने कोड की महत्वपूर्ण सुरक्षा विशेषताओं का दृष्टिगत रूप से निरीक्षण करें:

  • स्लिदर के inheritance-graph (opens in a new tab) प्रिंटर की समीक्षा करें। अनजाने में शैडोइंग और C3 लाइनाइराइजेशन समस्याओं से बचें।
  • स्लिदर के function-summary (opens in a new tab) प्रिंटर की समीक्षा करें। यह फ़ंक्शन दृश्यता और एक्सेस नियंत्रण की रिपोर्ट करता है।
  • स्लिदर के vars-and-auth (opens in a new tab) प्रिंटर की समीक्षा करें। यह स्टेट वेरिएबल्स पर एक्सेस नियंत्रण की रिपोर्ट करता है।

महत्वपूर्ण सुरक्षा गुणों का दस्तावेजीकरण करें और उनका मूल्यांकन करने के लिए स्वचालित परीक्षण जनरेटर का उपयोग करें:

  • अपने कोड के लिए सुरक्षा गुणों का दस्तावेजीकरण करना सीखें। शुरुआत में यह कठिन है, लेकिन एक अच्छा परिणाम प्राप्त करने के लिए यह एकमात्र सबसे महत्वपूर्ण गतिविधि है। इस ट्यूटोरियल में किसी भी उन्नत तकनीक का उपयोग करने के लिए यह एक पूर्वापेक्षा भी है।
  • एकिड्ना (opens in a new tab) और मैंटिकोर (opens in a new tab) के साथ उपयोग के लिए सॉलिडिटी में सुरक्षा गुण परिभाषित करें। अपनी स्टेट मशीन, एक्सेस नियंत्रण, अंकगणितीय संचालन, बाहरी इंटरैक्शन और मानकों के अनुरूपता पर ध्यान केंद्रित करें।
  • स्लिदर के पायथन API के साथ सुरक्षा गुण परिभाषित करें। इनहेरिटेंस, वेरिएबल निर्भरता, एक्सेस नियंत्रण और अन्य संरचनात्मक मुद्दों पर ध्यान दें।
  • क्रिटिक (opens in a new tab) के साथ हर कमिट पर अपने प्रॉपर्टी परीक्षण चलाएं। क्रिटिक सुरक्षा प्रॉपर्टी परीक्षणों का उपभोग और मूल्यांकन कर सकता है ताकि आपकी टीम का हर कोई आसानी से देख सके कि वे गिटहब पर पास हो गए हैं। विफल परीक्षण कमिट को ब्लॉक कर सकते हैं।

अंत में, उन मुद्दों से सावधान रहें जो स्वचालित उपकरण आसानी से नहीं खोज सकते हैं:

  • गोपनीयता की कमी: हर कोई आपके लेन-देन को देख सकता है जब वे पूल में कतार में होते हैं
  • लेन-देन को फ्रंट रनिंग करना
  • क्रिप्टोग्राफिक संचालन
  • बाहरी डीफाई घटकों के साथ जोखिम भरा इंटरैक्शन

मदद के लिए पूछें

एथेरियम ऑफिस ऑवर्स (opens in a new tab) हर मंगलवार दोपहर को चलते हैं। ये 1-घंटे, 1-ऑन-1 सत्र हमें सुरक्षा के बारे में आपके किसी भी प्रश्न को पूछने, हमारे उपकरणों का उपयोग करके समस्या निवारण करने और विशेषज्ञों से आपके वर्तमान दृष्टिकोण के बारे में प्रतिक्रिया प्राप्त करने का एक अवसर हैं। हम इस गाइड के माध्यम से काम करने में आपकी मदद करेंगे।

हमारे Slack में शामिल हों: Empire Hacking (opens in a new tab) । यदि आपके कोई प्रश्न हैं तो हम #crytic और #ethereum चैनलों में हमेशा उपलब्ध हैं।

पेज का अंतिम अपडेट: 7 फ़रवरी 2025

क्या यह ट्यूटोरियल सहायक था?