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

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

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

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

  • Solidity
  • Vyper

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

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

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

পূর্বশর্ত

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

Solidity

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

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

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

Vyper

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

আরও তথ্যের জন্য, Vyper-এর যৌক্তিকতা পড়ুন (opens in a new tab)

উদাহরণ

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

Yul এবং Yul+

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

Yul

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

Yul+

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

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

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

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

Fe

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

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

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

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

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

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

Solidity-এর দারুণ দিক কী?

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

Vyper-এর দারুণ দিক কী?

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

Yul এবং Yul+-এর দারুণ দিক কী?

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

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

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

আরও পড়ুন