টোকেন ইন্টিগ্রেশন চেকলিস্ট
যেকোনো টোকেনের সাথে ইন্টারঅ্যাক্ট করার সময় এই চেকলিস্টটি অনুসরণ করুন। প্রতিটি বিষয়ের সাথে যুক্ত ঝুঁকিগুলো আপনি বুঝতে পেরেছেন তা নিশ্চিত করুন এবং এই নিয়মগুলোর যেকোনো ব্যতিক্রমের যৌক্তিকতা যাচাই করুন।
সুবিধার জন্য, সমস্ত Slither ইউটিলিটি (opens in a new tab) সরাসরি একটি টোকেন এডড্রেস-এ চালানো যেতে পারে, যেমন:
slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherTokenএই চেকলিস্টটি অনুসরণ করতে, আপনি টোকেনের জন্য Slither থেকে এই আউটপুটটি পেতে চাইবেন:
- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]- slither [target] --print human-summary- slither [target] --print contract-summary- slither-prop . --contract ContractName # কনফিগারেশন এবং একিডনা ও ম্যান্টিকোর-এর ব্যবহার প্রয়োজনসাধারণ বিবেচ্য বিষয়সমূহ
- কন্ট্রাক্টটির একটি সিকিউরিটি রিভিউ আছে। সিকিউরিটি রিভিউ নেই এমন কন্ট্রাক্টগুলোর সাথে ইন্টারঅ্যাক্ট করা এড়িয়ে চলুন। মূল্যায়নের সময়কাল (যাকে "লেভেল অফ এফোর্ট" বলা হয়), সিকিউরিটি ফার্মের সুনাম এবং প্রাপ্ত সমস্যাগুলোর সংখ্যা ও তীব্রতা পরীক্ষা করুন।
- আপনি ডেভেলপারদের সাথে যোগাযোগ করেছেন। কোনো ঘটনার বিষয়ে আপনার তাদের টিমকে সতর্ক করার প্রয়োজন হতে পারে। blockchain-security-contacts (opens in a new tab)-এ উপযুক্ত যোগাযোগের মাধ্যম খুঁজুন।
- গুরুত্বপূর্ণ ঘোষণার জন্য তাদের একটি সিকিউরিটি মেইলিং লিস্ট আছে। যখন কোনো গুরুতর সমস্যা পাওয়া যায় বা আপগ্রেড হয়, তখন তাদের টিমের উচিত ব্যবহারকারীদের (আপনার মতো!) পরামর্শ দেওয়া।
ERC সামঞ্জস্যতা
Slither-এ একটি ইউটিলিটি রয়েছে, slither-check-erc (opens in a new tab), যা অনেক সম্পর্কিত ERC স্ট্যান্ডার্ডের সাথে একটি টোকেনের সামঞ্জস্যতা পর্যালোচনা করে। এটি পর্যালোচনা করতে slither-check-erc ব্যবহার করুন:
- Transfer এবং transferFrom একটি বুলিয়ান (boolean) রিটার্ন করে। বেশ কিছু টোকেন এই ফাংশনগুলোতে বুলিয়ান রিটার্ন করে না। ফলস্বরূপ, কন্ট্রাক্টে তাদের কলগুলো ব্যর্থ হতে পারে।
- name, decimals এবং symbol ফাংশনগুলো ব্যবহার করা হলে তা উপস্থিত থাকে। এই ফাংশনগুলো ERC20 স্ট্যান্ডার্ডে ঐচ্ছিক এবং উপস্থিত নাও থাকতে পারে।
- Decimals একটি uint8 রিটার্ন করে। বেশ কিছু টোকেন ভুলভাবে একটি uint256 রিটার্ন করে। যদি এমন হয়, তবে নিশ্চিত করুন যে রিটার্ন করা মান 255 এর নিচে।
- টোকেনটি পরিচিত ERC20 রেস কন্ডিশন (race condition) (opens in a new tab) প্রশমিত করে। ERC20 স্ট্যান্ডার্ডে একটি পরিচিত ERC20 রেস কন্ডিশন রয়েছে যা আক্রমণকারীদের টোকেন চুরি করা থেকে বিরত রাখতে অবশ্যই প্রশমিত করতে হবে।
- টোকেনটি কোনো ERC777 টোকেন নয় এবং transfer ও transferFrom-এ কোনো এক্সটার্নাল ফাংশন কল নেই। ট্রান্সফার ফাংশনগুলোতে এক্সটার্নাল কল রিএন্ট্রান্সির (reentrancies) কারণ হতে পারে।
Slither-এ একটি ইউটিলিটি রয়েছে, slither-prop (opens in a new tab), যা ইউনিট টেস্ট এবং সিকিউরিটি প্রপার্টি তৈরি করে যা অনেক সাধারণ ERC ত্রুটি আবিষ্কার করতে পারে। এটি পর্যালোচনা করতে slither-prop ব্যবহার করুন:
- কন্ট্রাক্টটি slither-prop থেকে সমস্ত ইউনিট টেস্ট এবং সিকিউরিটি প্রপার্টি পাস করে। তৈরি করা ইউনিট টেস্টগুলো রান করুন, তারপর Echidna (opens in a new tab) এবং Manticore (opens in a new tab) দিয়ে প্রপার্টিগুলো চেক করুন।
পরিশেষে, এমন কিছু বৈশিষ্ট্য রয়েছে যা স্বয়ংক্রিয়ভাবে শনাক্ত করা কঠিন। এই শর্তগুলোর জন্য ম্যানুয়ালি পর্যালোচনা করুন:
- Transfer এবং transferFrom-এর কোনো ফি নেওয়া উচিত নয়। ডিফলেশনারি (Deflationary) টোকেনগুলো অপ্রত্যাশিত আচরণের কারণ হতে পারে।
- টোকেন থেকে অর্জিত সম্ভাব্য সুদ বিবেচনায় নেওয়া হয়। কিছু টোকেন টোকেন হোল্ডারদের মধ্যে সুদ বিতরণ করে। যদি বিবেচনায় নেওয়া না হয়, তবে এই সুদ কন্ট্রাক্টে আটকে যেতে পারে।
কন্ট্রাক্ট কম্পোজিশন
- কন্ট্রাক্টটি অপ্রয়োজনীয় জটিলতা এড়িয়ে চলে। টোকেনটি একটি সাধারণ কন্ট্রাক্ট হওয়া উচিত; জটিল কোডযুক্ত একটি টোকেনের জন্য উচ্চ মানের পর্যালোচনার প্রয়োজন। জটিল কোড শনাক্ত করতে Slither-এর human-summary printer (opens in a new tab) ব্যবহার করুন।
- কন্ট্রাক্টটি SafeMath ব্যবহার করে। যেসব কন্ট্রাক্ট SafeMath ব্যবহার করে না, সেগুলোর জন্য উচ্চ মানের পর্যালোচনার প্রয়োজন। SafeMath ব্যবহারের জন্য কন্ট্রাক্টটি ম্যানুয়ালি পরিদর্শন করুন।
- কন্ট্রাক্টটিতে টোকেন-সম্পর্কিত নয় এমন মাত্র কয়েকটি ফাংশন রয়েছে। টোকেন-সম্পর্কিত নয় এমন ফাংশনগুলো কন্ট্রাক্টে কোনো সমস্যা হওয়ার সম্ভাবনা বাড়িয়ে দেয়। কন্ট্রাক্টে ব্যবহৃত কোডটি ব্যাপকভাবে পর্যালোচনা করতে Slither-এর contract-summary printer (opens in a new tab) ব্যবহার করুন।
- টোকেনটির শুধুমাত্র একটি এডড্রেস রয়েছে। ব্যালেন্স আপডেটের জন্য একাধিক এন্ট্রি পয়েন্ট থাকা টোকেনগুলো এডড্রেস-এর উপর ভিত্তি করে অভ্যন্তরীণ হিসাবরক্ষণ ভেঙে দিতে পারে (যেমন,
balances[token_address][msg.sender]প্রকৃত ব্যালেন্স প্রতিফলিত নাও করতে পারে)।
মালিকের বিশেষাধিকার
- টোকেনটি আপগ্রেডযোগ্য নয়। আপগ্রেডযোগ্য কন্ট্রাক্টগুলো সময়ের সাথে সাথে তাদের নিয়ম পরিবর্তন করতে পারে। কন্ট্রাক্টটি আপগ্রেডযোগ্য কিনা তা নির্ধারণ করতে Slither-এর human-summary printer (opens in a new tab) ব্যবহার করুন।
- মালিকের সীমিত মিন্টিং ক্ষমতা রয়েছে। ক্ষতিকারক বা আপসকৃত মালিকরা মিন্টিং ক্ষমতার অপব্যবহার করতে পারে। মিন্টিং ক্ষমতা পর্যালোচনা করতে Slither-এর human-summary printer (opens in a new tab) ব্যবহার করুন এবং কোডটি ম্যানুয়ালি পর্যালোচনা করার কথা বিবেচনা করুন।
- টোকেনটি পজ (pause) করার যোগ্য নয়। ক্ষতিকারক বা আপসকৃত মালিকরা পজ করার যোগ্য টোকেনের উপর নির্ভরশীল কন্ট্রাক্টগুলোকে ফাঁদে ফেলতে পারে। পজ করার যোগ্য কোড ম্যানুয়ালি শনাক্ত করুন।
- মালিক কন্ট্রাক্টটিকে ব্ল্যাকলিস্ট করতে পারে না। ক্ষতিকারক বা আপসকৃত মালিকরা ব্ল্যাকলিস্ট থাকা টোকেনের উপর নির্ভরশীল কন্ট্রাক্টগুলোকে ফাঁদে ফেলতে পারে। ব্ল্যাকলিস্টিং বৈশিষ্ট্যগুলো ম্যানুয়ালি শনাক্ত করুন।
- টোকেনের পেছনের টিমটি পরিচিত এবং অপব্যবহারের জন্য তাদের দায়ী করা যেতে পারে। বেনামী ডেভেলপমেন্ট টিমযুক্ত কন্ট্রাক্ট, অথবা যেগুলো আইনি আশ্রয়ে থাকে, সেগুলোর জন্য উচ্চ মানের পর্যালোচনার প্রয়োজন।
টোকেনের দুষ্প্রাপ্যতা
টোকেনের দুষ্প্রাপ্যতার সমস্যাগুলোর পর্যালোচনার জন্য ম্যানুয়াল পর্যালোচনার প্রয়োজন। এই শর্তগুলো পরীক্ষা করুন:
- কোনো ব্যবহারকারী সাপ্লাইয়ের বেশিরভাগ অংশের মালিক নয়। যদি কয়েকজন ব্যবহারকারী বেশিরভাগ টোকেনের মালিক হয়, তবে তারা টোকেনের বিভাজনের উপর ভিত্তি করে কার্যক্রমকে প্রভাবিত করতে পারে।
- মোট সাপ্লাই পর্যাপ্ত। কম মোট সাপ্লাইযুক্ত টোকেনগুলো সহজেই ম্যানিপুলেট করা যায়।
- টোকেনগুলো কয়েকটির বেশি এক্সচেঞ্জে অবস্থিত। যদি সমস্ত টোকেন একটি এক্সচেঞ্জে থাকে, তবে এক্সচেঞ্জের কোনো ক্ষতি হলে টোকেনের উপর নির্ভরশীল কন্ট্রাক্টটিও ক্ষতিগ্রস্ত হতে পারে।
- ব্যবহারকারীরা বড় ফান্ড বা ফ্ল্যাশ লোনের সাথে যুক্ত ঝুঁকিগুলো বোঝেন। টোকেন ব্যালেন্সের উপর নির্ভরশীল কন্ট্রাক্টগুলোকে অবশ্যই বড় ফান্ডধারী আক্রমণকারী বা ফ্ল্যাশ লোনের মাধ্যমে আক্রমণের বিষয়টি সতর্কতার সাথে বিবেচনা করতে হবে।
- টোকেনটি ফ্ল্যাশ মিন্টিংয়ের অনুমতি দেয় না। ফ্ল্যাশ মিন্টিং ব্যালেন্স এবং মোট সাপ্লাইয়ে উল্লেখযোগ্য ওঠানামার কারণ হতে পারে, যার জন্য টোকেনের কার্যক্রমে কঠোর এবং ব্যাপক ওভারফ্লো চেকের প্রয়োজন হয়।
পেজ সর্বশেষ আপডেট: ২১ অক্টোবর, ২০২৫