State Variables এবং Local Variables

Solidity Syntax এবং বেসিক ধারণা (Basic Syntax and Concepts) - সলিডিটি (Solidity) - Computer Programming

332

Solidity তে, state variables এবং local variables দুটি গুরুত্বপূর্ণ ধরনের ভেরিয়েবল ব্যবহৃত হয়, যা স্মার্ট কন্ট্রাক্টে ডেটা সংরক্ষণ এবং পরিচালনার জন্য বিভিন্নভাবে কাজ করে। এই দুটি ভেরিয়েবলের মধ্যে পার্থক্য বুঝতে হলে, প্রথমে তাদের গঠন এবং কার্যকারিতা সম্পর্কে জানাটা প্রয়োজন।


State Variables

State variables হল সেই ভেরিয়েবলগুলো যেগুলি ব্লকচেইনে স্থায়ীভাবে সংরক্ষিত থাকে। এগুলি স্মার্ট কন্ট্রাক্টের মূল স্টেট বা ডেটার অংশ হিসেবে কাজ করে। যখনই একটি ফাংশন state variable এর মান পরিবর্তন করে, তখন সেটি ব্লকচেইনে সংরক্ষিত হয় এবং চিরকালীন থাকে যতক্ষণ না স্মার্ট কন্ট্রাক্টটি ডিপ্লয় করা থাকে।

State variables এর কিছু বৈশিষ্ট্য:

  • ব্লকচেইনে সংরক্ষিত: যখনই একটি state variable এর মান পরিবর্তন হয়, এটি ব্লকচেইনে স্থায়ীভাবে সংরক্ষিত হয়।
  • স্টোরেজে রাখা হয়: এগুলি স্টোরেজে সংরক্ষিত থাকে, যা কিছুটা ব্যয়বহুল হতে পারে (গ্যাস খরচ বেশি হয়)।
  • public: যখন একটি state variable public হিসেবে ডিফাইন করা হয়, তখন Solidity স্বয়ংক্রিয়ভাবে getter ফাংশন তৈরি করে, যা ব্যবহারকারীদের মাধ্যমে ভেরিয়েবলটির মান অ্যাক্সেস করা যায়।

উদাহরণ:

pragma solidity ^0.8.0;

contract Example {
    uint public number; // state variable

    function setNumber(uint _number) public {
        number = _number; // state variable update
    }

    function getNumber() public view returns (uint) {
        return number; // state variable access
    }
}

এখানে number একটি state variable, যা setNumber ফাংশন দিয়ে পরিবর্তন করা হয় এবং getNumber ফাংশন দিয়ে অ্যাক্সেস করা হয়।


Local Variables

Local variables হল সেই ভেরিয়েবলগুলো যেগুলি শুধুমাত্র ফাংশনের ভিতরে ব্যবহার করা হয় এবং ফাংশন শেষ হলে সেগুলি মুছে যায়। এগুলি কেবলমাত্র ফাংশনের execution context এ বিদ্যমান থাকে এবং স্মার্ট কন্ট্রাক্টের ব্লকচেইন স্টোরেজে সংরক্ষিত হয় না।

Local variables এর কিছু বৈশিষ্ট্য:

  • ফাংশনের মধ্যে সংরক্ষিত: এগুলি শুধুমাত্র ফাংশনের execution সময়কালীন উপলব্ধ থাকে এবং ফাংশন শেষ হলে সেগুলি ডিলিট হয়ে যায়।
  • স্টোরেজে রাখা হয় না: এগুলি স্টোরেজে সংরক্ষিত হয় না, ফলে গ্যাস খরচও কম হয়।
  • আরেকটি ফাংশনে অ্যাক্সেস করা যায় না: একটি ফাংশনের local variable অন্য কোনো ফাংশন থেকে অ্যাক্সেস করা যায় না।

উদাহরণ:

pragma solidity ^0.8.0;

contract Example {
    uint public number; // state variable

    function setNumber(uint _number) public {
        uint temp = _number; // local variable
        number = temp; // state variable update
    }

    function getNumber() public view returns (uint) {
        return number; // state variable access
    }
}

এখানে temp একটি local variable, যা setNumber ফাংশনের ভিতরে ব্যবহার করা হয় এবং number state variable এর মান পরিবর্তন করা হয়।


State Variables এবং Local Variables এর মধ্যে পার্থক্য

পার্থক্যState VariablesLocal Variables
সংরক্ষণব্লকচেইনে স্থায়ীভাবে সংরক্ষিতশুধুমাত্র ফাংশনের execution সময়কালে থাকে
স্টোরেজস্টোরেজে রাখা হয়স্ট্যাক (stack) এ রাখা হয়
গ্যাস খরচবেশি গ্যাস খরচ (ব্লকচেইনে সংরক্ষিত থাকে)কম গ্যাস খরচ (স্টোরেজে সংরক্ষিত হয় না)
অ্যাক্সেসফাংশনের বাইরে থেকেও অ্যাক্সেস করা যায়ফাংশনের বাইরে অ্যাক্সেস করা যায় না
পাবলিকপাবলিক হলে স্বয়ংক্রিয়ভাবে getter ফাংশন তৈরি হয়পাবলিক নয়

সারাংশ

State variables হল স্মার্ট কন্ট্রাক্টের ব্লকচেইনে স্থায়ীভাবে সংরক্ষিত ভেরিয়েবল, যেগুলি স্টোরেজে রাখা হয় এবং ফাংশনগুলো এগুলির মান পরিবর্তন করতে পারে। অন্যদিকে, local variables হল শুধুমাত্র ফাংশনের ভিতরে ব্যবহার করা হয় এবং ফাংশন সম্পন্ন হওয়ার পর মুছে যায়। State variables এর গ্যাস খরচ বেশি হলেও এগুলি ব্লকচেইনে দীর্ঘ সময়ের জন্য সংরক্ষিত থাকে, তবে local variables দ্রুত এবং কম গ্যাস খরচে কাজ করে।

Content added By
Promotion

Are you sure to start over?

Loading...