Fallback Functions এর কাজ এবং প্রয়োজনীয়তা

Fallback Functions এবং Receive Functions (ফলব্যাক এবং রিসিভ ফাংশন) - সলিডিটি (Solidity) - Computer Programming

297

Solidity তে Fallback Functions একটি বিশেষ ধরনের ফাংশন যা কন্ট্রাক্টে কোনও ইথার (Ether) প্রেরণ করা হলে বা একটি অপরিচিত কল (function call) আসলে স্বয়ংক্রিয়ভাবে কল হয়। এটি একটি স্মার্ট কন্ট্রাক্টের "default" ফাংশন হিসেবে কাজ করে এবং এটি ব্যতীত অন্য কোনও ফাংশন না থাকলে বা একজন ব্যবহারকারী যদি একটি অজানা ফাংশন কল করে তখন এই ফাংশনটি কার্যকর হয়।

1. Fallback Function এর কাজ

Fallback function সাধারণত দুটি উদ্দেশ্যে ব্যবহৃত হয়:

  1. Ether গ্রহণ: একটি কন্ট্রাক্টের সাথে ইথার ট্রান্সফার করার সময় এটি ট্রান্সফার গ্রহণ করতে সাহায্য করে। এটি খুবই গুরুত্বপূর্ণ যখন কোনও কন্ট্রাক্ট ইথার প্রাপ্তির জন্য ডিজাইন করা হয় এবং ইথার পাঠানোর সময় কোনও নির্দিষ্ট ফাংশন কল করা না হয়।
  2. Unrecognized Function Call: যদি কেউ কন্ট্রাক্টে কোনো অজানা ফাংশন কল করে, তবে fallback function ট্রিগার হয়। এটি কন্ট্রাক্টে সঠিক ফাংশন খুঁজে না পেলে একটি ডিফল্ট মেকানিজম হিসেবে কাজ করে।

Fallback function কিছু বিশেষ বৈশিষ্ট্য ধারণ করে:

  • এটি নামহীন এবং return type ছাড়া হয়।
  • এটি Gas Limit নির্ধারণ করে না এবং এটি শুধুমাত্র ইথার গ্রহন করতে ব্যবহৃত হতে পারে।
  • msg.data এর মাধ্যমে এটি কল করা যায়, কিন্তু এটি আর্গুমেন্ট গ্রহণ করতে পারে না।

2. Fallback Function এর Syntax

Solidity তে fallback function এর একটি নির্দিষ্ট সিনট্যাক্স রয়েছে, যা নিচে দেখানো হলো:

pragma solidity ^0.8.0;

contract MyContract {

    // Fallback function (no arguments and no return value)
    fallback() external payable {
        // Ether প্রাপ্তির পর যা করতে হবে
    }
}

এখানে:

  • external নির্ধারণ করে যে এটি শুধুমাত্র বাইরের কল থেকে এক্সেস করা যাবে।
  • payable নির্দেশ করে যে এই ফাংশনটি ইথার গ্রহণ করতে সক্ষম।
  • এটি কোন ইনপুট বা আউটপুট গ্রহণ করে না, শুধু ইথার গ্রহন এবং ট্রানজেকশন পরিচালনা করে।

3. Fallback Function এর প্রয়োজনীয়তা

Fallback Function এর প্রধান ব্যবহার এবং প্রয়োজনীয়তা হলো:

  • Ether প্রাপ্তি: যদি আপনার কন্ট্রাক্টে কোনো নির্দিষ্ট ফাংশন ইথার গ্রহণ করতে না পারে, তবে fallback function সেটি গ্রহণ করবে। এটি কন্ট্রাক্টের নিরাপত্তা এবং স্বচ্ছতা বজায় রাখে।
  • Unknown Function Calls: কখনো কখনো ব্যবহারকারীরা কন্ট্রাক্টের কোন ফাংশন ভুলভাবে কল করতে পারেন। fallback function তাদের জন্য একটি "default" ফাংশন হিসেবে কাজ করে, যেখানে ভুল কল হওয়ার পরও কন্ট্রাক্ট সঠিকভাবে কাজ করবে।
  • ডাটা লগিং এবং প্রক্রিয়াকরণ: fallback function ব্যবহার করে আপনি ইথার গ্রহণের সময় কিছু ডাটা লগ করতে বা প্রক্রিয়া চালাতে পারেন। উদাহরণস্বরূপ, আপনি ট্রানজেকশন রেকর্ড করতে পারেন, লগ ইন করতে পারেন, বা অন্যান্য পদক্ষেপ নিতে পারেন।
  • অবৈধ কল বা অপরিচিত কলের বিরুদ্ধে সুরক্ষা: কিছু কন্ট্রাক্টে fallback function ব্যবহার করা হয় যাতে সেগুলি অবৈধ কল বা অজানা কলের জন্য একটি নিরাপত্তা ব্যবস্থা হিসেবে কাজ করতে পারে।

4. Fallback Function এর ব্যবহার উদাহরণ

pragma solidity ^0.8.0;

contract FallbackExample {

    uint public balanceReceived;

    // Fallback function to accept ether
    fallback() external payable {
        balanceReceived += msg.value;  // Ether গুলি যোগ করা হচ্ছে
    }

    function getBalance() public view returns (uint) {
        return balanceReceived;  // বর্তমান ব্যালেন্স
    }

    // Function to withdraw funds
    function withdraw() public {
        payable(msg.sender).transfer(balanceReceived);  // ইথার প্রত্যাহার
        balanceReceived = 0;  // ব্যালেন্স শূন্য করা
    }
}

ব্যাখ্যা:

  • এখানে fallback ফাংশনটি payable হিসেবে ডিফাইন করা হয়েছে, যাতে ইথার গ্রহণ করতে পারে। যখনই ইথার কন্ট্রাক্টে প্রেরণ করা হবে, তখন এটি এই ফাংশনটিকে কল করবে এবং ইথারের পরিমাণ balanceReceived তে যোগ হবে।
  • getBalance ফাংশনটি কন্ট্রাক্টের বর্তমান ব্যালেন্স ফেরত দেয়।
  • withdraw ফাংশনটি কন্ট্রাক্টের ব্যালেন্সটি msg.sender (ব্যবহারকারী) কে প্রেরণ করে এবং পরবর্তীতে balanceReceived শূন্য করে দেয়।

5. Fallback Function এবং Receive Function

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

Receive Function উদাহরণ:

pragma solidity ^0.8.0;

contract ReceiveExample {

    uint public balanceReceived;

    // Receive function to accept ether
    receive() external payable {
        balanceReceived += msg.value;  // Ether গুলি যোগ করা হচ্ছে
    }

    function getBalance() public view returns (uint) {
        return balanceReceived;  // বর্তমান ব্যালেন্স
    }
}

এখানে:

  • receive() ফাংশনটি শুধুমাত্র ইথার গ্রহণের জন্য ব্যবহৃত হচ্ছে।
  • balanceReceived ফাংশনটি বর্তমানে কত ইথার রয়েছে তা ফিরিয়ে দিচ্ছে।

সারাংশ

Fallback Functions Solidity তে স্মার্ট কন্ট্রাক্টের জন্য একটি অত্যন্ত গুরুত্বপূর্ণ ফিচার যা ইথার গ্রহণ এবং অজানা ফাংশন কলের জন্য ব্যবহৃত হয়। এটি ইথার গ্রহণ করতে ব্যবহৃত হতে পারে, এবং যদি কোনও কন্ট্রাক্টের মধ্যে অজানা ফাংশন কল হয়, তাহলে fallback functionটি স্বয়ংক্রিয়ভাবে কল হয়। এটি কন্ট্রাক্টের কার্যকারিতা এবং সুরক্ষা নিশ্চিত করতে সহায়ক, বিশেষত যখন কন্ট্রাক্টে অজানা কল বা ইথার প্রেরণ করার কাজ করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...