ETC - 1155 NFTバンドルコレクションの作成と配備方法


In this Tutorial, we are going to built NFT Bundle Collection using ERC-1155. Instead of Minting all the NFTs in one go. We allow user to mint NFT from any NFT bundle Collection one by one. We also set maximum supply of NFTs and one user can mint only one NFT.


概要


ERC 1155はNFFTを作成するためのゴールド標準として登場しましたあらゆる主要な市場は、ERC 1155標準として新しいトークンをリストします.このガイドでは、erc 1155トークン規格とerc 1155 nftバンドルコレクションの作成方法について学びます.

どうすればよいでしょう。

  • コレクションを作成
  • ERC - 1155契約の作成と配備
  • OpenSeaと互換性のある契約を更新する
  • NPTコレクションの配置
  • 必要なもの

  • イメージ資産
  • NFTSのメタデータ

  • Metamaskと若干のムンバイTest Matic.
  • ERC 20とERC 721(NFT)トークン標準の知識
  • ERC 1155とは


    ERC 1155は、1つの契約において、資金がなく、非資金で、半資金のトークンの作成を可能にするマルチトークン規格です.ERC 1155の前に、使用ケースがerc 20(fungible)とerc 721(非売れない)トークンの両方を必要とするならば、別々の契約はこれを達成するために必要でした.ERC 1155はまた、各コレクションの別の契約を作成するのではなく、1つのスマート契約で起動する複数のNFTのコレクションを可能にしますこれはスマート契約構造の効率を増加させ、トランザクション数を最小にします.ERC 1155で、トークンのバッチ転送も、以前の標準で1つのアドレスにトークンを転送する代わりに可能です.
    ゲームがコインと稀少品を必要とするので、ERC 1155アプリケーションの一般的な例はブロックチェーンベースの分散ゲームです.ERC 1155もNFTスペースで標準になりました.
    前のerc 721は、アドレスとトークンIDの1対1のマッピングを持っていました.ERC 1155は、トークンIDの組み合わせのアドレスがトークンのバランスにマップされる、かなり複雑なマッピングを持っています.

    メタデータURIの作成


    我々は、1つのNFTバンドルコレクション(アグラ、デリー、ゴアなど)を1つの単一のNFTを作成します.分散ストレージIPFSにファイルをアップロードするにはPINATA . あなたの選択のいくつかの他の分散ストレージのIPFSを選択することができます.
    Pinataにサインして、アグラ、デリー、ゴアのようにあなたのイメージファイルをアップロードしてください.成功したならば、次のようにしてください.

    イメージのIPFS URLをコピーします;私たちは、各コレクションのメタデータを必要とします.

    我々は、我々のNFTコレクションに関する情報を格納するために3つのJSONメタデータファイルを作成します.
    アグラコレクション
    デリーコレクション
    ゴアコレクション
    0です.JSONファイルは次のようになります.

    Name : NFTの名前があります.
    説明: NFTについて説明します.
    イメージ:我々が以前に得たイメージ(IPFS URL)へのリンクがあります.
    プロパティ: NFTのさまざまなプロパティを持っています
    残りのJSONファイル、1を作成します.JSONと2 .デリーとゴアコレクションのためのJSON.
    同様にPinataでメタデータフォルダをアップロードします.うまくアップロードしたら、次のようになります.

    JSONファイルにアクセスするには、URLの最後にファイル名を入力してください.
    https://ipfs.io/ipfs/QmSCFe5vvoPsSpyHZpGAW78GJ4bAuDcySCV9UnMm7B69iS/0.json

    ERC 1155契約の作成と配備


    私たちはOpenZeppelin 私たちのerc 1155契約を作成し、それを使用して展開する契約ライブラリEthereum REMIX IDE ムンバイTestnetについてあなたがMumabi蛇口から得ることができる若干のムンバイTest Maticを持っていることを確認してください.
    新しいファイルを作成します.SOLは、リミックスし、それに次のコードを貼り付けます.
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.9;
    
    import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
    import "@openzeppelin/contracts/access/Ownable.sol";
    import "@openzeppelin/contracts/utils/Strings.sol";
    
    contract TravelQuest is ERC1155, Ownable { 
        uint256[] public supplies = [50,50,50,50,50,50,150];
        uint256[] public minted = [0,0,0,0,0,0,0];
        mapping(uint256 => mapping(address => bool)) public member;
    
        constructor() ERC1155("ipfs://QmSCFe5vvoPsSpyHZpGAW78GJ4bAuDcySCV9UnMm7B69iS/{id}.json")
            {
            }
    
        // to Put NFT to Opensea
         function uri(uint256 _tokenId) override public view returns (string memory) {
            require(_tokenId <= supplies.length-1,"NFT does not exist");
            return string(
            abi.encodePacked(
                "ipfs://QmSCFe5vvoPsSpyHZpGAW78GJ4bAuDcySCV9UnMm7B69iS/",
                Strings.toString(_tokenId),
                ".json"
            )
            );
        }
    
         function mint(uint256 _tokenId) 
            public
            {
             require(
                !member[_tokenId][msg.sender],
                "You have already claim NFT"
            );    
            require(_tokenId <= supplies.length-1,"NFT does not exist");
            uint256 index = _tokenId;
    
            require (minted[index] + 1 <= supplies[index], "All the NFT have been minted");
            _mint(msg.sender, _tokenId, 1, "");
            // "" is data which is set empty
            minted[index] += 1;
            member[_tokenId][msg.sender] = true;
        }
    
        function totalNftMinted(uint256 _tokenId) public view returns(uint256){
            return minted[_tokenId];
        }
    }
    
    上記の説明
    行1 : SPDXライセンスタイプを指定します.スマート契約のソースコードが公開されるたびに、これらのライセンスは、著作権問題を解決/回避するのを助けることができます.ライセンスタイプを指定したくない場合は、特別な値を使用することができます.
    2行目:バージョンの宣言.
    行4 : openzeppelin erc 1155契約のインポート.
    10行目supplies Mintが利用できるNFTの最大数を追跡する配列です.
    11行目minted はどのように多くのNFT
    既に鋳造された.
    21行目function URI NFTのメタデータをOpenSeaに加える.IPFSに格納されているメタデータが使用されます.
    行32 :function mint ユーザーがNFTからNFTをミントすることを許可するために
    バンドルコレクション.一つのユーザーは、各々のNFT収集の1 nftだけを缶詰にすることができます.
    49行目function totalNftMinted それぞれのNFTコレクションから鋳造されたNFTの総数を与えます.
  • トークンが割り当てられるアドレス.ここの送付者は契約の展開を意味します.
  • トークンIDは既にトークンIDに名前を付けています.
  • 各トークンの量.
  • スマート契約
    コントラクトをコンパイルし、左メニューの3番目のタブに移動し、Web 3を環境として選択し、適切な契約名を選択して展開します.

    Metamaskからのトランザクションを承認します.トランザクションが完了すると、契約は展開されます.
    これでトークンIDを入力することでMint NFTのような機能を実行できます.トークンIDを入力することでトークンのURIも取得できます.

    URIのコントラクトを問い合わせると、OpenSeaでサポートされている形式を返します.

    ミントNFT

    nftディスプレイOpenSea

    すべてのメタデータでNFTを示すこと.

    結論


    あなたのerc 1155トークンの展開についておめでとう.ここであなたが現在erc 1155マルチトークン標準について知っていて、erc 1155束nftコレクションを作成して、配備する方法を知っているならば、それを作ります.
    あなたが新しい何かを学んだか、多分問題さえ解決したことを願っています.読書のおかげで、楽しい!
    あなたは私に従うことができます.ご提案/コメント来る!