মূল কন্টেন্টে যান

স্মার্ট কন্ট্রাক্ট নিরাপত্তা চেকলিস্ট

স্মার্ট কন্ট্রাক্ট
নিরাপত্তা
solidity
মধ্যবর্তী
Trailofbits
7 সেপ্টেম্বর, 2020
3 মিনিট পড়ার সময়

স্মার্ট কন্ট্রাক্ট ডেভেলপমেন্ট চেকলিস্ট

আপনার স্মার্ট কন্ট্রাক্ট লেখার সময় আমরা এই উচ্চ-স্তরের প্রক্রিয়াটি অনুসরণ করার পরামর্শ দিই।

পরিচিত নিরাপত্তা সমস্যাগুলো পরীক্ষা করুন:

  • স্লিদার (নতুন ট্যাবে খোলে) দিয়ে আপনার কন্ট্রাক্টগুলো পর্যালোচনা করুন। এতে সাধারণ দুর্বলতাগুলোর জন্য 40 টিরও বেশি বিল্ট-ইন ডিটেক্টর রয়েছে। নতুন কোডের সাথে প্রতিটি চেক-ইনে এটি চালান এবং নিশ্চিত করুন যে এটি একটি ক্লিন রিপোর্ট পায় (বা নির্দিষ্ট সমস্যাগুলো সাইলেন্স করতে ট্রায়াজ মোড ব্যবহার করুন)।
  • Crytic (নতুন ট্যাবে খোলে) দিয়ে আপনার কন্ট্রাক্টগুলো পর্যালোচনা করুন। এটি এমন 50 টি সমস্যা পরীক্ষা করে যা স্লিদার করে না। Crytic আপনার টিমকে GitHub-এ পুল রিকোয়েস্টগুলোতে সহজেই নিরাপত্তা সমস্যাগুলো তুলে ধরে একে অপরের সাথে আপ-টু-ডেট থাকতে সাহায্য করতে পারে।

আপনার কন্ট্রাক্টের বিশেষ বৈশিষ্ট্যগুলো বিবেচনা করুন:

  • আপনার কন্ট্রাক্টগুলো কি আপগ্রেডযোগ্য? slither-check-upgradeability (নতুন ট্যাবে খোলে) বা Crytic (নতুন ট্যাবে খোলে) দিয়ে আপনার আপগ্রেডযোগ্যতা কোডের ত্রুটিগুলো পর্যালোচনা করুন। আপগ্রেডগুলো যে 17 টি উপায়ে ভুল পথে যেতে পারে তা আমরা নথিভুক্ত করেছি।
  • আপনার কন্ট্রাক্টগুলো কি ERC-এর সাথে সামঞ্জস্যপূর্ণ বলে দাবি করে? slither-check-erc (নতুন ট্যাবে খোলে) দিয়ে সেগুলো পরীক্ষা করুন। এই টুলটি তাৎক্ষণিকভাবে 6 টি সাধারণ স্পেসিফিকেশন থেকে বিচ্যুতি শনাক্ত করে।
  • আপনি কি 3য় পক্ষের টোকেনগুলোর সাথে ইন্টিগ্রেট করেন? বাহ্যিক কন্ট্রাক্টগুলোর উপর নির্ভর করার আগে আমাদের টোকেন ইন্টিগ্রেশন চেকলিস্ট পর্যালোচনা করুন।

আপনার কোডের গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্যগুলো দৃশ্যমানভাবে পরিদর্শন করুন:

  • স্লিদার-এর inheritance-graph (নতুন ট্যাবে খোলে) প্রিন্টার পর্যালোচনা করুন। অসাবধানতাবশত শ্যাডোয়িং এবং C3 লিনিয়ারাইজেশন সমস্যাগুলো এড়িয়ে চলুন।
  • স্লিদার-এর function-summary (নতুন ট্যাবে খোলে) প্রিন্টার পর্যালোচনা করুন। এটি ফাংশন ভিজিবিলিটি এবং অ্যাক্সেস কন্ট্রোল রিপোর্ট করে।
  • স্লিদার-এর vars-and-auth (নতুন ট্যাবে খোলে) প্রিন্টার পর্যালোচনা করুন। এটি স্টেট ভেরিয়েবলগুলোর অ্যাক্সেস কন্ট্রোল রিপোর্ট করে।

গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্যগুলো নথিভুক্ত করুন এবং সেগুলো মূল্যায়ন করতে স্বয়ংক্রিয় টেস্ট জেনারেটর ব্যবহার করুন:

  • আপনার কোডের জন্য নিরাপত্তা বৈশিষ্ট্যগুলো নথিভুক্ত করতে শিখুন। এটি প্রথমে কঠিন মনে হতে পারে, তবে একটি ভালো ফলাফল অর্জনের জন্য এটি সবচেয়ে গুরুত্বপূর্ণ কাজ। এই টিউটোরিয়ালের যেকোনো উন্নত কৌশল ব্যবহার করার জন্যও এটি একটি পূর্বশর্ত।
  • একিডনা (নতুন ট্যাবে খোলে) এবং ম্যান্টিকোর (নতুন ট্যাবে খোলে)-এর সাথে ব্যবহার করার জন্য Solidity-তে নিরাপত্তা বৈশিষ্ট্যগুলো সংজ্ঞায়িত করুন। আপনার স্টেট মেশিন, অ্যাক্সেস কন্ট্রোল, গাণিতিক ক্রিয়াকলাপ, বাহ্যিক মিথস্ক্রিয়া এবং স্ট্যান্ডার্ড কনফরম্যান্সের উপর ফোকাস করুন।
  • স্লিদার-এর Python API দিয়ে নিরাপত্তা বৈশিষ্ট্যগুলো সংজ্ঞায়িত করুন। ইনহেরিট্যান্স, ভেরিয়েবল ডিপেন্ডেন্সি, অ্যাক্সেস কন্ট্রোল এবং অন্যান্য কাঠামোগত সমস্যার উপর ফোকাস করুন।
  • Crytic (নতুন ট্যাবে খোলে) দিয়ে প্রতিটি কমিটে আপনার প্রপার্টি টেস্টগুলো চালান। Crytic নিরাপত্তা প্রপার্টি টেস্টগুলো গ্রহণ এবং মূল্যায়ন করতে পারে যাতে আপনার টিমের সবাই সহজেই দেখতে পারে যে সেগুলো GitHub-এ পাস করেছে। ব্যর্থ টেস্টগুলো কমিট ব্লক করতে পারে।

সবশেষে, এমন সমস্যাগুলোর বিষয়ে সচেতন থাকুন যা স্বয়ংক্রিয় টুলগুলো সহজে খুঁজে পায় না:

  • গোপনীয়তার অভাব: পুলে সারিবদ্ধ থাকা অবস্থায় অন্য সবাই আপনার ট্রানজ্যাকশনগুলো দেখতে পারে
  • ফ্রন্ট রানিং ট্রানজ্যাকশন
  • ক্রিপ্টোগ্রাফিক ক্রিয়াকলাপ
  • বাহ্যিক বিকেন্দ্রীভূত অর্থব্যবস্থা (DeFi) উপাদানগুলোর সাথে ঝুঁকিপূর্ণ মিথস্ক্রিয়া

সাহায্য চান

ইথেরিয়াম অফিস আওয়ার (নতুন ট্যাবে খোলে) প্রতি মঙ্গলবার বিকেলে চলে। এই 1-ঘণ্টার, 1-অন-1 সেশনগুলো হলো নিরাপত্তা সম্পর্কে আপনার যেকোনো প্রশ্ন জিজ্ঞাসা করার, আমাদের টুলগুলো ব্যবহার করে ট্রাবলশুট করার এবং আপনার বর্তমান পদ্ধতি সম্পর্কে বিশেষজ্ঞদের কাছ থেকে মতামত পাওয়ার একটি সুযোগ। আমরা আপনাকে এই গাইডের মাধ্যমে কাজ করতে সাহায্য করব।

আমাদের Slack-এ যোগ দিন: Empire Hacking (নতুন ট্যাবে খোলে)। আপনার কোনো প্রশ্ন থাকলে আমরা সবসময় #crytic এবং #ethereum চ্যানেলগুলোতে উপলব্ধ থাকি।