---
title: "टोकन एकत्रीकरण चेकलिस्ट"
description: "टोकन्सशी संवाद साधताना विचारात घेण्याच्या गोष्टींची चेकलिस्ट"
author: "ट्रेलऑफबिट्स"
lang: mr
tags: ["Solidity", "स्मार्ट कॉन्ट्रॅक्ट्स", "सुरक्षा", "टोकन्स"]
skill: intermediate
breadcrumb: "टोकन एकत्रीकरण"
published: 2020-08-13
source: Building secure contracts
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md
---

अनियंत्रित टोकन्सशी संवाद साधताना या चेकलिस्टचे अनुसरण करा. प्रत्येक बाबीशी संबंधित धोके तुम्हाला समजले आहेत याची खात्री करा आणि या नियमांच्या कोणत्याही अपवादांचे समर्थन करा.

सोयीसाठी, सर्व स्लिदर [युटिलिटीज](https://github.com/crytic/slither#tools) थेट टोकन पत्त्यावर चालवल्या जाऊ शकतात, जसे की:

[स्लिदर ट्युटोरिअल वापरणे](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)

```bash
slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken
```

या चेकलिस्टचे अनुसरण करण्यासाठी, तुम्हाला टोकनसाठी स्लिदरकडून हे आउटपुट हवे असेल:

```bash
- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]
- slither [target] --print human-summary
- slither [target] --print contract-summary
- slither-prop . --contract ContractName # कॉन्फिगरेशन, आणि एकिडना आणि मॅन्टिकोरचा वापर आवश्यक आहे
```

## सामान्य विचार {#general-considerations}

- **कॉन्ट्रॅक्टचे सुरक्षा पुनरावलोकन झालेले आहे.** सुरक्षा पुनरावलोकन नसलेल्या कॉन्ट्रॅक्ट्सशी संवाद साधणे टाळा. मूल्यांकनाचा कालावधी (ज्याला "प्रयत्नांची पातळी" असेही म्हणतात), सुरक्षा फर्मची प्रतिष्ठा आणि निष्कर्षांची संख्या आणि तीव्रता तपासा.
- **तुम्ही डेव्हलपर्सशी संपर्क साधला आहे.** तुम्हाला त्यांच्या टीमला एखाद्या घटनेबद्दल सावध करण्याची आवश्यकता असू शकते. [blockchain-security-contacts](https://github.com/crytic/blockchain-security-contacts) वर योग्य संपर्क शोधा.
- **त्यांच्याकडे गंभीर घोषणांसाठी सुरक्षा मेलिंग लिस्ट आहे.** जेव्हा गंभीर समस्या आढळतात किंवा अपग्रेड्स होतात तेव्हा त्यांच्या टीमने वापरकर्त्यांना (तुमच्यासारख्या!) सल्ला दिला पाहिजे.

## ERC अनुरूपता {#erc-conformity}

स्लिदरमध्ये [slither-check-erc](https://github.com/crytic/slither/wiki/ERC-Conformance) नावाची एक युटिलिटी समाविष्ट आहे, जी अनेक संबंधित ERC मानकांनुसार टोकनच्या अनुरूपतेचे पुनरावलोकन करते. हे तपासण्यासाठी slither-check-erc वापरा:

- **हस्तांतरण (transfer) आणि transferFrom बुलियन (boolean) परत करतात.** अनेक टोकन्स या फंक्शन्सवर बुलियन परत करत नाहीत. परिणामी, कॉन्ट्रॅक्टमधील त्यांचे कॉल्स अयशस्वी होऊ शकतात.
- **जर वापरले असतील तर name, decimals आणि symbol फंक्शन्स उपस्थित आहेत.** ही फंक्शन्स ERC-20 मानकामध्ये ऐच्छिक आहेत आणि कदाचित उपस्थित नसतील.
- **Decimals uint8 परत करते.** अनेक टोकन्स चुकीने uint256 परत करतात. जर असे असेल, तर परत केलेले मूल्य 255 च्या खाली असल्याची खात्री करा.
- **हे टोकन ज्ञात [ERC-20 रेस कंडिशन](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729) कमी करते.** ERC-20 मानकामध्ये एक ज्ञात ERC-20 रेस कंडिशन आहे जी हल्लेखोरांना टोकन्स चोरण्यापासून रोखण्यासाठी कमी करणे आवश्यक आहे.
- **हे टोकन ERC-777 टोकन नाही आणि हस्तांतरण (transfer) आणि transferFrom मध्ये कोणताही बाह्य फंक्शन कॉल नाही.** हस्तांतरण फंक्शन्समधील बाह्य कॉल्समुळे रीएन्ट्रन्सी (reentrancies) होऊ शकतात.

स्लिदरमध्ये [slither-prop](https://github.com/crytic/slither/wiki/Property-generation) नावाची एक युटिलिटी समाविष्ट आहे, जी युनिट चाचण्या आणि सुरक्षा गुणधर्म व्युत्पन्न करते जे अनेक सामान्य ERC त्रुटी शोधू शकतात. हे तपासण्यासाठी slither-prop वापरा:

- **कॉन्ट्रॅक्ट slither-prop मधील सर्व युनिट चाचण्या आणि सुरक्षा गुणधर्म उत्तीर्ण करते.** व्युत्पन्न केलेल्या युनिट चाचण्या चालवा, त्यानंतर [एकिडना](https://github.com/crytic/echidna) आणि [मॅन्टिकोर](https://manticore.readthedocs.io/en/latest/verifier.html) सह गुणधर्म तपासा.

शेवटी, अशी काही वैशिष्ट्ये आहेत जी स्वयंचलितपणे ओळखणे कठीण आहे. या अटींसाठी व्यक्तिचलितपणे पुनरावलोकन करा:

- **हस्तांतरण (transfer) आणि transferFrom ने शुल्क घेऊ नये.** डिफ्लेशनरी (Deflationary) टोकन्समुळे अनपेक्षित वर्तन होऊ शकते.
- **टोकनमधून मिळणाऱ्या संभाव्य व्याजाचा विचार केला जातो.** काही टोकन्स टोकन धारकांना व्याज वितरीत करतात. जर हे विचारात घेतले नाही तर हे व्याज कॉन्ट्रॅक्टमध्ये अडकू शकते.

## कॉन्ट्रॅक्ट रचना {#contract-composition}

- **कॉन्ट्रॅक्ट अनावश्यक गुंतागुंत टाळते.** टोकन एक साधे कॉन्ट्रॅक्ट असावे; गुंतागुंतीचा कोड असलेल्या टोकनला उच्च दर्जाच्या पुनरावलोकनाची आवश्यकता असते. गुंतागुंतीचा कोड ओळखण्यासाठी स्लिदरचे [human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#human-summary) वापरा.
- **कॉन्ट्रॅक्ट SafeMath वापरते.** SafeMath न वापरणाऱ्या कॉन्ट्रॅक्ट्सना उच्च दर्जाच्या पुनरावलोकनाची आवश्यकता असते. SafeMath च्या वापरासाठी कॉन्ट्रॅक्टची व्यक्तिचलितपणे तपासणी करा.
- **कॉन्ट्रॅक्टमध्ये केवळ काही नॉन-टोकन-संबंधित फंक्शन्स आहेत.** नॉन-टोकन-संबंधित फंक्शन्समुळे कॉन्ट्रॅक्टमध्ये समस्या निर्माण होण्याची शक्यता वाढते. कॉन्ट्रॅक्टमध्ये वापरलेल्या कोडचे विस्तृतपणे पुनरावलोकन करण्यासाठी स्लिदरचे [contract-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) वापरा.
- **टोकनला फक्त एकच पत्ता आहे.** शिल्लक अद्यतनांसाठी एकाधिक एंट्री पॉइंट्स असलेली टोकन्स पत्त्यावर आधारित अंतर्गत बुककीपिंग खंडित करू शकतात (उदा., `balances[token_address][msg.sender]` कदाचित वास्तविक शिल्लक दर्शवणार नाही).

## मालकाचे विशेषाधिकार {#owner-privileges}

- **टोकन अपग्रेड करण्यायोग्य नाही.** अपग्रेड करण्यायोग्य कॉन्ट्रॅक्ट्स कालांतराने त्यांचे नियम बदलू शकतात. कॉन्ट्रॅक्ट अपग्रेड करण्यायोग्य आहे की नाही हे निर्धारित करण्यासाठी स्लिदरचे [human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) वापरा.
- **मालकाकडे मर्यादित मिंटिंग क्षमता आहेत.** दुर्भावनायुक्त किंवा तडजोड केलेले मालक मिंटिंग क्षमतांचा गैरवापर करू शकतात. मिंटिंग क्षमतांचे पुनरावलोकन करण्यासाठी स्लिदरचे [human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary) वापरा आणि कोडचे व्यक्तिचलितपणे पुनरावलोकन करण्याचा विचार करा.
- **टोकन थांबवण्यायोग्य (pausable) नाही.** दुर्भावनायुक्त किंवा तडजोड केलेले मालक थांबवण्यायोग्य टोकन्सवर अवलंबून असलेल्या कॉन्ट्रॅक्ट्सना अडकवू शकतात. थांबवण्यायोग्य कोड व्यक्तिचलितपणे ओळखा.
- **मालक कॉन्ट्रॅक्टला ब्लॅकलिस्ट करू शकत नाही.** दुर्भावनायुक्त किंवा तडजोड केलेले मालक ब्लॅकलिस्ट असलेल्या टोकन्सवर अवलंबून असलेल्या कॉन्ट्रॅक्ट्सना अडकवू शकतात. ब्लॅकलिस्टिंग वैशिष्ट्ये व्यक्तिचलितपणे ओळखा.
- **टोकनच्या मागील टीम ज्ञात आहे आणि गैरवापरासाठी त्यांना जबाबदार धरले जाऊ शकते.** निनावी डेव्हलपमेंट टीम्स असलेल्या किंवा कायदेशीर आश्रयस्थानांमध्ये असलेल्या कॉन्ट्रॅक्ट्सना उच्च दर्जाच्या पुनरावलोकनाची आवश्यकता असावी.

## टोकनची कमतरता {#token-scarcity}

टोकनच्या कमतरतेच्या समस्यांच्या पुनरावलोकनासाठी व्यक्तिचलित पुनरावलोकन आवश्यक आहे. या अटी तपासा:

- **कोणत्याही वापरकर्त्याकडे बहुतांश पुरवठा नाही.** जर काही वापरकर्त्यांकडे बहुतांश टोकन्स असतील, तर ते टोकनच्या विभाजनावर आधारित ऑपरेशन्सवर प्रभाव टाकू शकतात.
- **एकूण पुरवठा पुरेसा आहे.** कमी एकूण पुरवठा असलेल्या टोकन्समध्ये सहजपणे फेरफार केली जाऊ शकते.
- **टोकन्स काही मोजक्या एक्सचेंजेसपेक्षा जास्त ठिकाणी स्थित आहेत.** जर सर्व टोकन्स एकाच एक्सचेंजमध्ये असतील, तर एक्सचेंजशी तडजोड झाल्यास टोकनवर अवलंबून असलेल्या कॉन्ट्रॅक्टशी तडजोड होऊ शकते.
- **वापरकर्त्यांना मोठ्या निधीचे किंवा फ्लॅश लोन्सचे संबंधित धोके समजतात.** टोकन शिल्लकवर अवलंबून असलेल्या कॉन्ट्रॅक्ट्सनी मोठा निधी असलेल्या हल्लेखोरांचा किंवा फ्लॅश लोन्सद्वारे होणाऱ्या हल्ल्यांचा काळजीपूर्वक विचार केला पाहिजे.
- **टोकन फ्लॅश मिंटिंगला परवानगी देत नाही**. फ्लॅश मिंटिंगमुळे शिल्लक आणि एकूण पुरवठ्यामध्ये लक्षणीय चढ-उतार होऊ शकतात, ज्यामुळे टोकनच्या ऑपरेशनमध्ये कठोर आणि सर्वसमावेशक ओव्हरफ्लो तपासणी आवश्यक असते.