Token Standards এবং Smart Contract এর ইন্টিগ্রেশন

Tokens এবং ERC Standards (টোকেন এবং ERC স্ট্যান্ডার্ডস) - সলিডিটি (Solidity) - Computer Programming

313

Solidity তে Token Standards হল কিছু নির্দিষ্ট নিয়ম এবং স্ট্যান্ডার্ড প্রোটোকল যা ব্লকচেইনে টোকেন তৈরি করার জন্য ব্যবহার করা হয়। টোকেন স্ট্যান্ডার্ডগুলি বিভিন্ন কন্ট্রাক্টের মধ্যে একক রূপে টোকেনের আচরণ নিশ্চিত করে এবং এটি ডেভেলপারদের জন্য টোকেন তৈরি ও ইন্টিগ্রেশনকে সহজ করে তোলে।

এখানে আলোচনা করা হবে ERC-20, ERC-721, এবং ERC-1155 স্ট্যান্ডার্ডগুলির সাথে স্মার্ট কন্ট্রাক্টের ইন্টিগ্রেশন সম্পর্কে।

১. ERC-20 Token Standard

ERC-20 হল Ethereum ব্লকচেইনে সর্বাধিক ব্যবহৃত টোকেন স্ট্যান্ডার্ড। এটি একটি ফাংকশনাল টোকেন স্ট্যান্ডার্ড যা ডিজিটাল মুদ্রা বা অন্যান্য টোকেন তৈরি করতে ব্যবহৃত হয়। ERC-20 টোকেনের মাধ্যমে এক কন্ট্রাক্টের মধ্যে নির্দিষ্ট মানের টোকেন তৈরি করা যায় এবং অন্যান্য কন্ট্রাক্ট বা ওয়ালেটের সাথে যোগাযোগ করা যায়।

ERC-20 এর মূল ফাংশন:

  • totalSupply(): টোকেনের মোট সরবরাহ।
  • balanceOf(address account): কোনো একাউন্টের ব্যালেন্স।
  • transfer(address recipient, uint256 amount): টোকেন ট্রান্সফার করতে।
  • approve(address spender, uint256 amount): অনুমতি প্রদান করতে।
  • transferFrom(address sender, address recipient, uint256 amount): অনুমতি দিয়ে ট্রান্সফার করা।
  • allowance(address owner, address spender): কিভাবে একটি অ্যাকাউন্ট অন্য অ্যাকাউন্টের থেকে ট্রান্সফার করতে পারে তা জানাতে।

ERC-20 Token এর উদাহরণ:

pragma solidity ^0.8.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

contract MyToken is IERC20 {
    string public name = "MyToken";
    string public symbol = "MTK";
    uint8 public decimals = 18;
    uint256 public override totalSupply;

    mapping(address => uint256) public balances;
    mapping(address => mapping(address => uint256)) public allowances;

    constructor(uint256 _initialSupply) {
        totalSupply = _initialSupply * 10 ** uint256(decimals);
        balances[msg.sender] = totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        require(amount <= balances[msg.sender], "Insufficient balance");
        balances[msg.sender] -= amount;
        balances[recipient] += amount;
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        allowances[msg.sender][spender] = amount;
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        require(amount <= balances[sender], "Insufficient balance");
        require(amount <= allowances[sender][msg.sender], "Allowance exceeded");
        balances[sender] -= amount;
        balances[recipient] += amount;
        allowances[sender][msg.sender] -= amount;
        return true;
    }
}

এখানে:

  • MyToken কন্ট্রাক্টটি ERC-20 স্ট্যান্ডার্ড অনুসরণ করে এবং টোকেন ট্রান্সফার, ব্যালেন্স চেক এবং অনুমতি ব্যবস্থা ফাংশন সরবরাহ করে।

২. ERC-721 Token Standard (NFTs)

ERC-721 একটি স্ট্যান্ডার্ড যা Non-Fungible Tokens (NFTs) তৈরি করার জন্য ব্যবহৃত হয়। NFTs হল একক এবং অদ্বিতীয় ডিজিটাল অ্যাসেট, যেমন আর্টওয়ার্ক, ভিডিও, গেম আইটেম ইত্যাদি। ERC-721 স্ট্যান্ডার্ড টোকেনের মধ্যে প্রতিটি টোকেনের একটি ইউনিক আইডেন্টিফায়ার থাকে, যার মাধ্যমে তারা একে অপর থেকে আলাদা হয়।

ERC-721 এর মূল ফাংশন:

  • ownerOf(uint256 tokenId): টোকেনের মালিক কে।
  • safeTransferFrom(address from, address to, uint256 tokenId): টোকেন ট্রান্সফার করতে।
  • approve(address to, uint256 tokenId): কোনো নির্দিষ্ট টোকেনের জন্য অনুমতি প্রদান করতে।
  • getApproved(uint256 tokenId): নির্দিষ্ট টোকেনের জন্য অনুমতি যাচাই করতে।

ERC-721 এর উদাহরণ:

pragma solidity ^0.8.0;

interface IERC721 {
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
}

contract MyNFT is IERC721 {
    string public name = "MyNFT";
    string public symbol = "MNFT";
    mapping(uint256 => address) public owners;
    mapping(address => uint256) public balances;

    function ownerOf(uint256 tokenId) public view override returns (address) {
        return owners[tokenId];
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public override {
        require(from == owners[tokenId], "Not the owner");
        owners[tokenId] = to;
        balances[from] -= 1;
        balances[to] += 1;
    }

    function approve(address to, uint256 tokenId) public override {
        // Approve logic
    }
}

এখানে:

  • MyNFT কন্ট্রাক্টটি ERC-721 স্ট্যান্ডার্ড অনুসরণ করে এবং NFT তৈরি এবং ট্রান্সফার করতে ব্যবহৃত হয়।

৩. ERC-1155 Token Standard (Multi-Token Standard)

ERC-1155 একটি স্ট্যান্ডার্ড যা একাধিক ধরনের টোকেন তৈরি এবং পরিচালনা করতে ব্যবহৃত হয়। এটি একক কন্ট্রাক্টের মধ্যে fungible (ERC-20) এবং non-fungible (ERC-721) টোকেন সমর্থন করতে পারে। এটি গ্যাস খরচ কমানোর জন্য উপযোগী কারণ একাধিক টোকেন একসাথে ট্রান্সফার করা যায়।

ERC-1155 এর মূল ফাংশন:

  • safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data): টোকেন ট্রান্সফার করতে।
  • balanceOf(address account, uint256 id): নির্দিষ্ট টোকেনের ব্যালেন্স চেক করতে।

ERC-1155 এর উদাহরণ:

pragma solidity ^0.8.0;

interface IERC1155 {
    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data) external;
    function balanceOf(address account, uint256 id) external view returns (uint256);
}

contract MyMultiToken is IERC1155 {
    mapping(address => mapping(uint256 => uint256)) public balances;

    function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data) public override {
        require(balances[from][id] >= amount, "Insufficient balance");
        balances[from][id] -= amount;
        balances[to][id] += amount;
    }

    function balanceOf(address account, uint256 id) public view override returns (uint256) {
        return balances[account][id];
    }
}

এখানে:

  • MyMultiToken কন্ট্রাক্টটি ERC-1155 স্ট্যান্ডার্ড অনুসরণ করে এবং একাধিক টোকেন ধরনের জন্য ট্রান্সফার এবং ব্যালেন্স ফাংশন সরবরাহ করে।

Smart Contract এর ইন্টিগ্রেশন

এই স্ট্যান্ডার্ডগুলি স্মার্ট কন্ট্রাক্টের মধ্যে একাধিক ফাংশনালিটি এবং ধরনের টোকেন সমর্থন করতে সাহায্য করে। এক কন্ট্রাক্টের মাধ্যমে অন্য কন্ট্রাক্টের সাথে যোগাযোগ করার জন্য আপনি interface এবং inheritance ব্যবহার করে বিভিন্ন টোকেনের কার্যক্রম পরিচালনা করতে পারেন। উদাহরণস্বরূপ, যদি আপনার একটি DeFi প্ল্যাটফর্ম থাকে, যেখানে ERC-20, ERC-721 এবং ERC-1155 টোকেনের সমন্বয়ে ট্রানজেকশন হতে পারে, তবে আপনি প্রতিটি স্ট্যান্ডার্ডের জন্য আলাদা ফাংশন তৈরি করতে পারেন এবং সেগুলিকে এক কন্ট্রাক্টের মধ্যে ইন্টিগ্রেট করতে পারেন।

সারাংশ

Token Standards হল একটি গুরুত্বপূর্ণ উপাদান যা স্মার্ট কন্ট্রাক্টের মাধ্যমে বিভিন্ন ধরনের টোকেন তৈরি এবং পরিচালনা করতে ব্যবহৃত হয়। ERC-20, ERC-721, এবং ERC-1155 হল সবচেয়ে জনপ্রিয় টোকেন স্ট্যান্ডার্ড, যেগুলির মাধ্যমে আপনি ফাংকশনাল এবং ইউনিক টোকেন তৈরি করতে পারেন। এসব স্ট্যান্ডার্ড

ের সাথে ইন্টিগ্রেশন স্মার্ট কন্ট্রাক্টের কার্যকারিতা বৃদ্ধি করে এবং বিভিন্ন কন্ট্রাক্টের মধ্যে যোগাযোগ সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...