NFTミント色試し(本機)

9965 ワード

1.イメージ部分


API(例えば
  • pinat/Infura)を用いるIPFSに画像をアップロードした後、画像URL
  • を得る.
  • このURLをnft用メタデータ(jsonファイル)に追加する、IPFS中
  • にメタデータをアップロードする.
  • にアップロードされたメタデータのurlはnft minting関数のtokenURIとして
  • を用いる.

    2.インテリジェント契約部分

  • alchemy-
  • インテリジェント契約配信およびEthereum API呼び出し用
  • Openzeppelin-インテリジェント契約(継承ERC 721)
  • をインポートして作成します.
  • hardhat-インテリジェント契約のテスト、コンパイル、および導入に使用される
  • dotnv-alchemy API鍵、metamask秘密鍵などの管理
  • web3.js-インテリジェント契約導入、フロントエンドmetamask財布接続、契約関数呼び出しなどに使用

    3.minting部


    Mintingの定義:MintingとはデジタルファイルをEtherum BlockChain上のNFTに変換するプロセスです.This NFT is stored on the decentralized database making it impossible to edit, modify, or delete.
  • alchemy-web 3インストール後の書き込みスクリプトの作成

  • Step 1. 変数の定義(上で更新した.envファイルの変数をprocess.env.API URL形式として使用)

  • Step 2. ABI定義/hardhatは、スマート契約とインタラクティブなインタフェースのためにjsonファイル形式でABI/ABIを作成しました.

  • Step 3. ミント色関数//nonceを定義し、事務所に必要な値を設定します.

  • Step 4. トランザクションの割当て

  • Step 5. 画像のメタデータtokenURIを用いてminting関数(The)を呼び出す  mintNFT  function requires a  tokenURI  parameter that refers to a JSON document where the metadata (image, properties, name, description,…) is stored.)
    //step 1: You define your variables from .env file
    require('dotenv').config();
    const API_URL = process.env.API_URL;
    const PUBLIC_KEY = process.env.PUBLIC_KEY;
    const PRIVATE_KEY = process.env.PRIVATE_KEY;
    
    const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
    const web3 = createAlchemyWeb3(API_URL);
    
    //step 2: Define our contract ABI (Application Binary Interface) & adresses
    const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json");
    const contractAddress = "0x099D1751c33d75297c9f331a5Cd39275ff534f96";
    const nftContract = new web3.eth.Contract(contract.abi, contractAddress);
    
    //step 3: Define the minting function
    async function mintNFT(tokenURI) {
      const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); //get latest nonce
    
      //the transaction
      const tx = {
        'from': PUBLIC_KEY,
        'to': contractAddress,
        'nonce': nonce,
        'gas': 500000,
        'maxPriorityFeePerGas': 1999999987,
        'data': nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI()
      };
    
      //step 4: Sign the transaction
      const signedTx = await web3.eth.accounts.signTransaction(tx, PRIVATE_KEY);
      const transactionReceipt = await web3.eth.sendSignedTransaction(signedTx.rawTransaction);
      
      console.log(`Transaction receipt: ${JSON.stringify(transactionReceipt)}`);
    }
    
    //step 5: Call the mintNFT function
    mintNFT("https://gateway.pinata.cloud/ipfs/Qmeou5f7ttU98n96mYWfYzKHV7pfRe5rcZBhYznHZCUV7M");
  • 端末でスクリプトを実行
  • node scripts/mint-nft.js
  • If you followed all the steps correctly, you should receive a “Transaction receipt” which stipulates all the used parameters. You can also check on Ropsten Etherscan if your transaction was successful.
  • チュートリアルリファレンス:https://docs.alchemy.com/alchemy/tutorials/how-to-create-an-nft