Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट · पाठ

ERC-1155 बहु-टोकन मानक

ERC-1155 बहु-टोकन मानक सीखें, जो एक ही कॉन्ट्रैक्ट को विनिमेय, अर्ध-विनिमेय और अविनिमेय टोकन एक साथ सँभालने देता है और गैस-कुशल बैच कार्रवाइयों को सक्षम करता है।

पाठ 4, कुल 4 में से13 चरण

ERC-1155 बहु-टोकन मानक, CoddyKit पर Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

ERC-1155 क्यों मौजूद है

ERC-20 एक फ़ंजिबल टोकन संभालता है; ERC-721 विशिष्ट NFT संभालता है। लेकिन किसी गेम में दोनों को मिलाकर हज़ारों आइटम प्रकार चाहिए हो सकते हैं। हर प्रकार के लिए अलग कॉन्ट्रैक्ट तैनात करना व्यर्थ है।

ERC-1155 एक ऐसा कॉन्ट्रैक्ट है जो एक साथ अनेक टोकन ID संभाल सकता है, और इनमें से प्रत्येक फ़ंजिबल या नॉन-फ़ंजिबल हो सकता है।

टोकन ID के रूप में श्रेणियाँ

ERC-1155 में प्रत्येक टोकन की पहचान संख्यात्मक id से होती है। उसी id का बैलेंस एक से अधिक हो सकता है (फ़ंजिबल) या आपूर्ति ठीक एक हो सकती है (नॉन-फ़ंजिबल)।

  • id = 1 और बैलेंस 500 = फ़ंजिबल सोने का सिक्का
  • id = 2 और बैलेंस 1 = एक विशिष्ट तलवार NFT

मुख्य बैलेंस मैपिंग

ERC-1155 कॉन्ट्रैक्ट का केंद्र id से owner और फिर balance तक की नेस्टेड मैपिंग है।

mapping(uint256 => mapping(address => uint256)) private _balances;

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

बैच बैलेंस क्वेरी

इसकी प्रमुख विशेषता balanceOfBatch है, जो एक ही कॉल में कई बैलेंस लौटाती है और बार-बार अनुरोध करने की आवश्यकता घटाती है।

function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
    public view returns (uint256[] memory)
{
    require(accounts.length == ids.length, 'length mismatch');
    uint256[] memory batch = new uint256[](accounts.length);
    for (uint256 i = 0; i < accounts.length; i++) {
        batch[i] = _balances[ids[i]][accounts[i]];
    }
    return batch;
}

बैच ट्रांसफ़र

ERC-1155 आपको safeBatchTransferFrom के माध्यम से एक ही लेन-देन में कई टोकन प्रकार स्थानांतरित करने देता है। यह कई अलग-अलग ERC-20/721 ट्रांसफ़र की तुलना में बहुत सस्ता है।

function safeBatchTransferFrom(
    address from,
    address to,
    uint256[] memory ids,
    uint256[] memory amounts,
    bytes memory data
) public {
    require(ids.length == amounts.length, 'length mismatch');
    for (uint256 i = 0; i < ids.length; i++) {
        _balances[ids[i]][from] -= amounts[i];
        _balances[ids[i]][to] += amounts[i];
    }
}

सभी के लिए अनुमति

हर टोकन के लिए अलग अनुमति देने के बजाय, ERC-1155 एकल ऑपरेटर अनुमति का उपयोग करता है: setApprovalForAll किसी पते को आपके स्वामित्व वाले हर टोकन को स्थानांतरित करने की अनुमति देता है।

mapping(address => mapping(address => bool)) private _operatorApprovals;

function setApprovalForAll(address operator, bool approved) public {
    _operatorApprovals[msg.sender][operator] = approved;
}

function isApprovedForAll(address owner, address operator) public view returns (bool) {
    return _operatorApprovals[owner][operator];
}

साझा मेटाडेटा URI

ERC-1155 सभी टोकन के लिए एक URI टेम्पलेट का उपयोग करता है। क्लाइंट {id} प्लेसहोल्डर को हेक्स टोकन ID से बदलते हैं।

उदाहरण: https://game.example/api/{id}.json

string private _uri = 'https://game.example/api/{id}.json';

function uri(uint256) public view returns (string memory) {
    return _uri;
}

टोकन मिंट करना

मिंट करने से किसी id का बैलेंस बढ़ता है। यही आंतरिक तर्क फ़ंजिबल (amount > 1) और नॉन-फ़ंजिबल (amount = 1) दोनों टोकन के लिए काम करता है।

function _mint(address to, uint256 id, uint256 amount) internal {
    require(to != address(0), 'mint to zero');
    _balances[id][to] += amount;
    emit TransferSingle(msg.sender, address(0), to, id, amount);
}

event TransferSingle(address operator, address from, address to, uint256 id, uint256 value);

सुरक्षित ट्रांसफ़र रिसीवर जाँच

ERC-721 की तरह, ERC-1155 टोकन को कॉन्ट्रैक्ट में फँसने से बचाता है। प्राप्त करने वाले कॉन्ट्रैक्ट को onERC1155Received लागू करके उसका मैजिक मान लौटाना होगा, अन्यथा ट्रांसफ़र रिवर्ट हो जाता है।

interface IERC1155Receiver {
    function onERC1155Received(
        address operator, address from,
        uint256 id, uint256 value, bytes calldata data
    ) external returns (bytes4);
}

OpenZeppelin का उपयोग

व्यवहार में आप इसे शुरुआत से लिखने के बजाय लेखापरीक्षित OpenZeppelin कार्यान्वयन से इनहेरिट करते हैं।

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import '@openzeppelin/contracts/token/ERC1155/ERC1155.sol';

contract GameItems is ERC1155 {
    uint256 public constant GOLD = 0;
    uint256 public constant SWORD = 1;

    constructor() ERC1155('https://game.example/api/{id}.json') {
        _mint(msg.sender, GOLD, 1000, '');
        _mint(msg.sender, SWORD, 1, '');
    }
}

ERC-1155 कब चुनें

जब आपके पास कई टोकन प्रकार हों, बैच संचालन की आवश्यकता हो या फ़ंजिबल और नॉन-फ़ंजिबल परिसंपत्तियाँ मिली-जुली हों, तब ERC-1155 चुनें। किसी एक सरल परिसंपत्ति के लिए ERC-20/721 का उपयोग करें, जहाँ अतिरिक्त जटिलता उचित नहीं है।

त्वरित जाँच

ERC-1155 की अपनी समझ का परीक्षण करें।

पुनरावलोकन

आपने सीखा कि ERC-1155 एक बहु-टोकन मानक है, जो एक ही कॉन्ट्रैक्ट में अनेक ID संभालता है। मुख्य बातें:

  • नेस्टेड id => owner => balance मैपिंग
  • बैच क्वेरी और ट्रांसफ़र गैस बचाते हैं
  • एकल ऑपरेटर अनुमति और साझा {id} URI
  • सुरक्षित ट्रांसफ़र रिसीवर जाँच टोकन को फँसने से बचाती है

कई परिसंपत्ति प्रकार वाले गेम और मार्केटप्लेस के लिए यह पसंदीदा मानक है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “ERC-1155 बहु-टोकन मानक” पाठ निःशुल्क है?

हाँ—“ERC-1155 बहु-टोकन मानक” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“ERC-1155 बहु-टोकन मानक” में मैं क्या सीखूँगा?

ERC-1155 बहु-टोकन मानक सीखें, जो एक ही कॉन्ट्रैक्ट को विनिमेय, अर्ध-विनिमेय और अविनिमेय टोकन एक साथ सँभालने देता है और गैस-कुशल बैच कार्रवाइयों को सक्षम करता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“ERC-1155 बहु-टोकन मानक” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. ERC-20 फ़ंजिबल टोकन मानक
  2. ERC-20 टोकन लागू करना
  3. ERC-721 नॉन-फ़ंजिबल टोकन (NFT)
  4. ERC-1155 बहु-टोकन मानक
← Solidity के साथ ब्लॉकचेन स्मार्ट कॉन्ट्रैक्ट पर वापस जाएँ