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

স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ

ইথেরিয়াম-এর একটি দারুণ দিক হলো তুলনামূলকভাবে ডেভেলপার-বান্ধব ল্যাঙ্গুয়েজ ব্যবহার করে স্মার্ট কন্ট্রাক্ট প্রোগ্রাম করা যায়। আপনার যদি Python বা কোনো কার্লি-ব্র্যাকেট ল্যাঙ্গুয়েজ (নতুন ট্যাবে খোলে)-এর অভিজ্ঞতা থাকে, তবে আপনি পরিচিত সিনট্যাক্স সহ একটি ল্যাঙ্গুয়েজ খুঁজে পেতে পারেন।

সবচেয়ে সক্রিয় এবং রক্ষণাবেক্ষণ করা দুটি ল্যাঙ্গুয়েজ হলো:

  • Solidity
  • Vyper

Remix ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (আইডিই) Solidity এবং Vyper উভয় ক্ষেত্রেই কন্ট্রাক্ট তৈরি এবং পরীক্ষা করার জন্য একটি বিস্তৃত ডেভেলপমেন্ট পরিবেশ প্রদান করে। কোডিং শুরু করতে ইন-ব্রাউজার Remix আইডিই ব্যবহার করে দেখুন (নতুন ট্যাবে খোলে)।

আরও অভিজ্ঞ ডেভেলপাররা ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)-এর জন্য একটি ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ Yul, অথবা Yul-এর একটি এক্সটেনশন Yul+ ব্যবহার করতে চাইতে পারেন।

আপনি যদি কৌতূহলী হন এবং এখনও ব্যাপকভাবে ডেভেলপমেন্টের অধীনে থাকা নতুন ল্যাঙ্গুয়েজগুলো পরীক্ষা করতে সাহায্য করতে চান, তবে আপনি Fe নিয়ে পরীক্ষা-নিরীক্ষা করতে পারেন, যা একটি উদীয়মান স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ এবং বর্তমানে এটি প্রাথমিক পর্যায়ে রয়েছে।

পূর্বশর্ত

প্রোগ্রামিং ল্যাঙ্গুয়েজ, বিশেষ করে JavaScript বা Python-এর পূর্ব অভিজ্ঞতা আপনাকে স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজগুলোর পার্থক্য বুঝতে সাহায্য করতে পারে। ল্যাঙ্গুয়েজগুলোর তুলনামূলক আলোচনায় গভীরভাবে প্রবেশ করার আগে আমরা আপনাকে একটি ধারণা হিসেবে স্মার্ট কন্ট্রাক্ট বুঝতে সুপারিশ করি। স্মার্ট কন্ট্রাক্ট পরিচিতি।

Solidity

  • স্মার্ট কন্ট্রাক্ট বাস্তবায়নের জন্য অবজেক্ট-ওরিয়েন্টেড, হাই-লেভেল ল্যাঙ্গুয়েজ।
  • কার্লি-ব্র্যাকেট ল্যাঙ্গুয়েজ যা C++ দ্বারা সবচেয়ে বেশি প্রভাবিত হয়েছে।
  • স্ট্যাটিক্যালি টাইপড (কম্পাইল করার সময় ভেরিয়েবলের টাইপ জানা যায়)।
  • সমর্থন করে:
    • ইনহেরিট্যান্স (আপনি অন্যান্য কন্ট্রাক্ট এক্সটেন্ড করতে পারেন)।
    • লাইব্রেরি (আপনি পুনরায় ব্যবহারযোগ্য কোড তৈরি করতে পারেন যা বিভিন্ন কন্ট্রাক্ট থেকে কল করা যায় – যেমন অন্যান্য অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজে স্ট্যাটিক ক্লাসের স্ট্যাটিক ফাংশন)।
    • জটিল ইউজার-ডিফাইনড টাইপ।

উদাহরণ কন্ট্রাক্ট

এই উদাহরণটি আপনাকে Solidity কন্ট্রাক্ট সিনট্যাক্স কেমন তা সম্পর্কে একটি ধারণা দেবে। ফাংশন এবং ভেরিয়েবলগুলোর আরও বিস্তারিত বর্ণনার জন্য, ডকুমেন্টেশন দেখুন (নতুন ট্যাবে খোলে)।

Vyper

  • পাইথনিক প্রোগ্রামিং ল্যাঙ্গুয়েজ
  • স্ট্রং টাইপিং
  • ছোট এবং বোধগম্য কম্পাইলার কোড
  • দক্ষ বাইটকোড জেনারেশন
  • কন্ট্রাক্টগুলোকে আরও সুরক্ষিত এবং অডিট করা সহজ করার উদ্দেশ্যে ইচ্ছাকৃতভাবে Solidity-এর চেয়ে কম ফিচার রাখা হয়েছে। Vyper যা সমর্থন করে না:
    • মডিফায়ার
    • ইনহেরিট্যান্স
    • ইনলাইন অ্যাসেম্বলি
    • ফাংশন ওভারলোডিং
    • অপারেটর ওভারলোডিং
    • রিকার্সিভ কলিং
    • ইনফিনিট-লেংথ লুপ
    • বাইনারি ফিক্সড পয়েন্ট

v0.4.0 থেকে, Vyper একটি মডিউল সিস্টেম (নতুন ট্যাবে খোলে) সমর্থন করে। ক্লাস ইনহেরিট্যান্সের পরিবর্তে কম্পোজিশনের মাধ্যমে কোড পুনরায় ব্যবহার করা যায়।

আরও তথ্যের জন্য, Vyper-এর যৌক্তিকতা পড়ুন (নতুন ট্যাবে খোলে)।

উদাহরণ

এই উদাহরণটি আপনাকে Vyper কন্ট্রাক্ট সিনট্যাক্স কেমন তা সম্পর্কে একটি ধারণা দেবে। ফাংশন এবং ভেরিয়েবলগুলোর আরও বিস্তারিত বর্ণনার জন্য, ডকুমেন্টেশন দেখুন (নতুন ট্যাবে খোলে)।

Yul এবং Yul+

আপনি যদি ইথেরিয়ামে নতুন হয়ে থাকেন এবং এখনও স্মার্ট কন্ট্রাক্ট ল্যাঙ্গুয়েজ দিয়ে কোনো কোডিং না করে থাকেন, তবে আমরা Solidity বা Vyper দিয়ে শুরু করার পরামর্শ দিই। স্মার্ট কন্ট্রাক্ট নিরাপত্তার সর্বোত্তম অনুশীলন এবং ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)-এর সাথে কাজ করার সুনির্দিষ্ট বিষয়গুলোর সাথে পরিচিত হওয়ার পরেই কেবল Yul বা Yul+ নিয়ে কাজ করুন।

Yul

  • ইথেরিয়ামের জন্য ইন্টারমিডিয়েট ল্যাঙ্গুয়েজ।
  • EVM এবং Ewasm (নতুন ট্যাবে খোলে) (একটি ইথেরিয়াম ফ্লেভারড WebAssembly) সমর্থন করে এবং এটি উভয় প্ল্যাটফর্মের একটি ব্যবহারযোগ্য সাধারণ ডিনোমিনেটর হিসেবে ডিজাইন করা হয়েছে।
  • হাই-লেভেল অপ্টিমাইজেশন ধাপগুলোর জন্য ভালো টার্গেট যা EVM এবং Ewasm উভয় প্ল্যাটফর্মকে সমানভাবে উপকৃত করতে পারে।

Yul+

  • Yul-এর একটি লো-লেভেল, অত্যন্ত দক্ষ এক্সটেনশন।
  • প্রাথমিকভাবে একটি অপটিমিস্টিক রোলআপ কন্ট্রাক্টের জন্য ডিজাইন করা হয়েছে।
  • Yul+-কে Yul-এর একটি পরীক্ষামূলক আপগ্রেড প্রস্তাব হিসেবে দেখা যেতে পারে, যা এতে নতুন ফিচার যোগ করে।

উদাহরণ কন্ট্রাক্ট

নিচের সহজ উদাহরণটি একটি পাওয়ার ফাংশন বাস্তবায়ন করে। এটি solc --strict-assembly --bin input.yul ব্যবহার করে কম্পাইল করা যেতে পারে। উদাহরণটি input.yul ফাইলে সংরক্ষণ করা উচিত।

আপনার যদি আগে থেকেই স্মার্ট কন্ট্রাক্টের ভালো অভিজ্ঞতা থাকে, তবে Yul-এ একটি সম্পূর্ণ ERC-20 ইমপ্লিমেন্টেশন এখানে (নতুন ট্যাবে খোলে) পাওয়া যাবে।

Fe

  • ইথেরিয়াম ভার্চুয়াল মেশিন (EVM)-এর জন্য স্ট্যাটিক্যালি টাইপড ল্যাঙ্গুয়েজ।
  • Python এবং Rust দ্বারা অনুপ্রাণিত।
  • শেখা সহজ হওয়ার লক্ষ্য রাখে -- এমনকি ইথেরিয়াম ইকোসিস্টেমে নতুন ডেভেলপারদের জন্যও।
  • Fe ডেভেলপমেন্ট এখনও প্রাথমিক পর্যায়ে রয়েছে, ল্যাঙ্গুয়েজটির আলফা রিলিজ 2021 সালের জানুয়ারিতে হয়েছিল।

উদাহরণ কন্ট্রাক্ট

নিচে Fe-তে বাস্তবায়িত একটি সহজ কন্ট্রাক্ট দেওয়া হলো।

কীভাবে বেছে নেবেন

অন্য যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজের মতো, এটি মূলত সঠিক কাজের জন্য সঠিক টুল বেছে নেওয়ার পাশাপাশি ব্যক্তিগত পছন্দের বিষয়।

আপনি যদি এখনও কোনো ল্যাঙ্গুয়েজ ব্যবহার করে না থাকেন, তবে এখানে কিছু বিষয় বিবেচনা করতে পারেন:

Solidity-এর ভালো দিক কী?

  • আপনি যদি একজন শিক্ষানবিস হন, তবে অনেক টিউটোরিয়াল এবং শেখার টুল রয়েছে। কোডিংয়ের মাধ্যমে শিখুন বিভাগে এ সম্পর্কে আরও দেখুন।
  • ভালো ডেভেলপার টুলিং উপলব্ধ।
  • Solidity-এর একটি বড় ডেভেলপার কমিউনিটি রয়েছে, যার মানে হলো আপনি খুব দ্রুত আপনার প্রশ্নের উত্তর খুঁজে পাবেন।

Vyper-এর ভালো দিক কী?

  • স্মার্ট কন্ট্রাক্ট লিখতে চাওয়া Python ডেভেলপারদের জন্য শুরু করার দারুণ উপায়।
  • Vyper-এ ফিচারের সংখ্যা কম, যা আইডিয়াগুলোর দ্রুত প্রোটোটাইপিংয়ের জন্য এটিকে দারুণ করে তোলে।
  • Vyper-এর লক্ষ্য হলো অডিট করা সহজ হওয়া এবং সর্বাধিক মানব-পাঠযোগ্য হওয়া।

Yul এবং Yul+-এর ভালো দিক কী?

  • সহজ এবং কার্যকরী লো-লেভেল ল্যাঙ্গুয়েজ।
  • র (raw) EVM-এর অনেক কাছাকাছি যাওয়ার সুযোগ দেয়, যা আপনার কন্ট্রাক্টগুলোর গ্যাস ব্যবহার অপ্টিমাইজ করতে সাহায্য করতে পারে।

ল্যাঙ্গুয়েজের তুলনা

বেসিক সিনট্যাক্স, কন্ট্রাক্ট লাইফসাইকেল, ইন্টারফেস, অপারেটর, ডেটা স্ট্রাকচার, ফাংশন, কন্ট্রোল ফ্লো এবং আরও অনেক কিছুর তুলনার জন্য Auditless-এর এই চিটশিটটি (নতুন ট্যাবে খোলে) দেখুন।

আরও পড়ুন