
slither v0.11.6
Solidity और Vyper के लिए स्थैतिक विश्लेषक
Slither, स्मार्ट कॉन्ट्रैक्ट स्टैटिक एनालाइज़र
एम्पायर हैकिंग स्लैक में शामिल हों
- चर्चाएँ और सहायता
Slither एक Solidity और Vyper स्टैटिक विश्लेषण फ्रेमवर्क है जो Python3 में लिखा गया है। यह भेद्यता डिटेक्टरों का एक सेट चलाता है, कॉन्ट्रैक्ट विवरणों के बारे में दृश्य जानकारी प्रिंट करता है, और आसानी से कस्टम विश्लेषण लिखने के लिए एक API प्रदान करता है। Slither डेवलपर्स को कमजोरियों का पता लगाने, अपनी कोड समझ को बढ़ाने और तेज़ी से कस्टम विश्लेषणों का प्रोटोटाइप बनाने में सक्षम बनाता है।
- विशेषताएँ
- उपयोग
- कैसे स्थापित करें
- डिटेक्टर
- प्रिंटर
- उपकरण
- API दस्तावेज़ीकरण
- सहायता प्राप्त करना
- FAQ
- लाइसेंस
- प्रकाशन
विशेषताएँ
- कम झूठी सकारात्मकता के साथ कमजोर Solidity कोड का पता लगाता है (ट्रॉफियों की सूची देखें [./trophies.md])
- स्रोत कोड में त्रुटि की स्थिति की पहचान करता है
- निरंतर एकीकरण और Hardhat/Foundry बिल्ड में आसानी से एकीकृत होता है
- अंतर्निहित 'प्रिंटर' महत्वपूर्ण कॉन्ट्रैक्ट जानकारी की त्वरित रिपोर्ट करते हैं
- Python में कस्टम विश्लेषण लिखने के लिए डिटेक्टर API
- Solidity >= 0.4 के साथ लिखे गए कॉन्ट्रैक्ट का विश्लेषण करने की क्षमता
- मध्यवर्ती प्रतिनिधित्व (SlithIR) सरल, उच्च-सटीक विश्लेषण सक्षम बनाता है
- सभी सार्वजनिक Solidity कोड का 99.9% सही ढंग से पार्स करता है
- प्रति कॉन्ट्रैक्ट 1 सेकंड से कम का औसत निष्पादन समय
- CI में Github के कोड स्कैनिंग के साथ एकीकृत होता है
- Vyper स्मार्ट कॉन्ट्रैक्ट के लिए समर्थन
उपयोग
किसी Hardhat/Foundry/Dapp/Brownie एप्लिकेशन पर Slither चलाएँ:```console slither .
यह पसंदीदा विकल्प है यदि आपके प्रोजेक्ट में निर्भरताएँ हैं क्योंकि Slither स्रोत कोड संकलित करने के लिए अंतर्निहित संकलन ढांचे पर निर्भर करता है।
हालांकि, आप Slither को एक एकल फ़ाइल पर चला सकते हैं जो निर्भरताएँ आयात नहीं करती:```console
slither tests/uninitialized.sol
कैसे स्थापित करें
नोट Slither को Python 3.10+ की आवश्यकता है। यदि आप नहीं हैं समर्थित संकलन फ्रेमवर्क में से किसी एक का उपयोग करने जा रहे हैं, तो आपको solc, Solidity कंपाइलर की आवश्यकता है; हम solc संस्करणों के बीच सुविधाजनक रूप से स्विच करने के लिए solc-select का उपयोग करने की सलाह देते हैं।
uv का उपयोग करना (अनुशंसित)
uv एक तेज़ Python पैकेज मैनेजर है जो pip से 10-100x तेज़ है।```console
Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
Install slither as a tool
uv tool install slither-analyzer
Or run slither without installation
uvx --from slither-analyzer slither
अपग्रेड करने के लिए:```console
uv tool upgrade slither-analyzer
Pip का उपयोग करना```console
python3 -m pip install slither-analyzer
अपग्रेड करने के लिए:```console
python3 -m pip install --upgrade slither-analyzer
Brew का उपयोग करके```console
brew install slither-analyzer
### Git का उपयोग (विकास)```bash
git clone https://github.com/crytic/slither.git && cd slither
# Install as editable for development
uv tool install -e .
# Or use uv run for testing without installation
uv run slither <target>
The -e फ़्लैग एडिटेबल मोड में इंस्टॉल करता है, जिसका अर्थ है कि स्रोत कोड में किए गए परिवर्तन बिना पुनः इंस्टॉल किए तुरंत प्रभावी हो जाते हैं।
Docker का उपयोग करना
Docker इमेज eth-security-toolbox का उपयोग करें। इसमें हमारे सभी सुरक्षा उपकरण और Solidity के हर प्रमुख संस्करण एक ही इमेज में शामिल हैं। /home/share को कंटेनर में /share पर माउंट किया जाएगा।```bash
docker pull trailofbits/eth-security-toolbox
कंटेनर में एक निर्देशिका साझा करने के लिए:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
एकीकरण
- GitHub एक्शन एकीकरण के लिए, slither-action का उपयोग करें।
- प्री-कमिट एकीकरण के लिए, उपयोग करें (
$GIT_TAGको वास्तविक टैग से बदलें) ```YAML- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- id: slither
- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- मार्कडाउन रिपोर्ट उत्पन्न करने के लिए,
slither [target] --checklistका उपयोग करें। - GitHub स्रोत कोड हाइलाइटिंग के साथ मार्कडाउन उत्पन्न करने के लिए,
slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/का उपयोग करें (ORG,REPO,COMMITको बदलें)
डिटेक्टर