이더넷에서 Solidity와 함께 자신만의 NFT 시리즈 만들기

나의 트위터 구독원에는 대량의 아바타 개인 자료 사진이 있는데 매일 글이 발표되고 대형 NFT 판매를 보여주며 사람들이 게임 속의 생물을 통해 돈을 번다...
NFT 토끼굴에 갈 때가 된 것 같습니다.우리 시작합시다!
본고는 NFT를 소개하고 Solidity를 사용하여 이더리움에서 NFT 시리즈를 만드는 것을 지도합니다.
당신의 소장품을 만드는 것은 복잡하게 들린다.나도 그렇게 생각해.솔직히 말해서, 만약 buildspace 때문이 아니었다면, 나는 영원히 NFT 시리즈를 만들 생각을 하지 못했을 것이다. 10분짜리 글에서 그것을 해석해 보려는 것은 말할 것도 없다.Buildspace는 개발자가 프로젝트를 만들어 웹3을 이해하는 플랫폼이다.나는 나의 첫 번째 프로젝트에 참가 신청을 했고, 내가 만들 수 있는 것에 대해 놀랐다.이리 와봐.본고에서 우리는buildspace의 프로젝트인'자신의 NFT 시리즈를 만들고 Web3 응용 프로그램을 발표하여 그것들을 보여줄 것이다'에 주목할 것이다.
나에게 이렇게 적나라하게단지 새로운 용어가 일을 복잡하게 만들 뿐이다.

캡처하면 안 돼요?


많은 사람들이 이 문제를 묻고 있는 것 같다.내 친구도 가족도 다 이러는 거 알아.이 절이 끝날 때, 우리는 답이 하나 있을 것이다😉

NFT


우선, NFT는 대체할 수 없는 기호화폐를 대표한다.
  • 대체불능: 대체불능은 한 상품을 서로 바꿀 수 있다는 것을 의미한다(이 단어는 구글에서 여러 번 검색했다).대체 불가능이란 고유한 특성을 가지고 서로 교환할 수 없는 상품을 가리킨다.예를 들어 비트코인은 대체할 수 있는 자산이다.만약 우리 모두가 비트코인을 가지고 상대방에게 보낸다면, 결국 우리는 같은 것을 가질 것이다.다른 한편, 집은 대체할 수 없다.만약 우리가 집을 바꾸기로 결정한다면 결과는 다를 것이다.
  • 기호화폐: 간단하게 말하면 블록체인은 공유되고 변하지 않는 분류 장부이고 기호화폐는 블록체인 위에 사는 디지털 자산이다.
  • NFT는 블록체인에서 독보적인 디지털 자산이다.그것들은 모두 유일무이하다.이것은 소유권을 추적할 수 있도록 허용한다.
    현재 대부분의 NFT는 이더리움 블록체인에 있다.그러나 우리도 소라나와 눈사태에 관한 프로젝트를 많이 보았다.

    그런데 NFT는 도대체 뭐야?


    하늘은 극한이다.이론적으로 모든 디지털 자산은 NFT가 될 수 있다.가장 인기 있는 것은 소장품과 예술품이다.
    소장품은 말 그대로 NFT 양식의 자산 집합이다.그것들을 포켓 요괴 카드, 심지어 펜스 소장품으로 상상할 수 있다.NFT 소장품도 같은 논리가 있는데, 단지 디지털 세계에 있을 뿐이다.
    최초의 NFT는 CryptoKitties라는 소장품 종목이었다.이것은 고양이를 기르는 것을 중심으로 하는 놀이다.모든 새끼 고양이(nft)는 유일무이하다. 너는 새끼 고양이를 키워서 새로운 것을 창조할 수 있다.

    NFT 항목을 수집하는 또 다른 예는 CryptoPunks입니다.콩, 수염, 보라색 머리 등 다양한 속성을 가진 암호화 펑크 10000개가 있다. 펑크마다 특징이 달라져 펑크마다 유일무이한 암호화 펑크가 된다.

    예술은 말하지 않아도 안다.예술가는 블록체인에서 작품을 창작할 기회가 있고 구매자와 직접 연락할 수 있다.이 과정은 바이어와 창립자를 직접 연결함으로써 중간에 있는 많은 중개인을 없앴다.

    NFT의 기타 용례는 도메인 이름, 게임, 음악, 티켓 업무를 포함한다.(우리는 심지어 더 많은 응용을 발견하지 못했다.)

    스마트 계약과 거래


    NFT는 스마트 계약에서 코드를 실행함으로써 만들어졌다.이 과정도'조폐'라고 불린다
    ERC-721는 표준 유형의 스마트 계약으로 이더리움에서 대체 가능한 화폐를 만들 수 있다.모든 영패의 전역 유일성은 Token Id 필드를 통해 이루어진다.따라서 NFT를 만드는 모든 스마트 계약에 대해 스마트 계약과 영패 ID는 서로 다르다.
    일단 NFT를 만들면 암호화된 지갑에서 그것을 볼 수 있다.그리고 당신은 2급 시장을 이용해서 NFT를 매매할 수 있습니다. 오늘OpenSea은 가장 인기 있는 2급 시장입니다.
    주의해야 할 점은 블록체인의 모든 거래에 원가가 있다는 것이다.따라서 NFT를 조폐, 구매 또는 판매하려면 gas fee의 가격을 지불해야 한다.
    기체는 거래 원가를 나타내는 단위의 도량이다.따라서 천연가스 비용은 인터넷으로 거래를 처리하는 비용이다.
    이더리움 블록체인에서 천연가스 비용은 이더리움 화폐로 지불하고 gwei(10-9 이더리움 화폐)로 표시한다.이더리움 네트워크에 대한 높은 수요로 휘발유 요금이 상당히 높다.특히 인기 있는 NFT 프로젝트가 줄어들면 결국 거래에 100달러만 지불할 수도 있다.거래를 진행하기 전에 반드시 검사해 주십시오gas tracker.
    고가스비는 태방팀과 다른 축소 해결 방안이 해결하고 있는 문제다.높은 천연가스 비용은 왜 많은 프로젝트가 다른 블록체인에 나타나는지 설명한다.
    🙌 우리 캡처 문제로 돌아가자.NFT의 주요 가치 주장은 추적 가능하고 투명한 소유권이다.소유자는 그들이 NFT를 가지고 있다는 것을 증명할 수 있다.NFT가 이전되면 거래는 블록체인에 기록된다.이것은 기본적으로 디지털 예술, 심지어 어떤 자산도 이전하는 새로운 방식이다.그래서 모나리자의 사진을 찍는 것과 이 작품을 가지고 있는 것은 별개의 일이다.마찬가지로 NFT를 촬영한 화면 캡처는 투명하고 변하지 않는 분류장에 소유자로 열거된 것과 다르다.

    어떻게 자신의 NFT 시리즈를 만듭니까?


    프로젝트 도구

  • Metamask Wallet: 암호화된 지갑.
  • Alchemy: 이태방 개발 플랫폼.Alchemy API를 사용하여 Alchemy의 이더리움 인프라와 상호 작용합니다.
  • Hardhat: 이태방 개발 환경.이것은 npm 가방입니다.
  • OpenZepplin Contracts: 안전한 스마트 계약 구현을 위한 라이브러리입니다.우리는 ERC271 도서관 표준을 사용할 것이다.
  • 선결 조건


    (이것은 내 previous post의 설정과 같다. 다음은 이 항목들을 검사하는 데 사용되는 검사 목록이다.)
  • IDE 선택 및 "solidity extension"획득
  • 에서 metamask에 계정을 만들고 링크비 테스트 네트워크로 전환합니다.
  • 네 거 가져와Alchemy API key.
  • 안전모를 사용하게 하다.
  • 노드js 당신의 NFT 시리즈를 만듭니다


  • 프로젝트 폴더를 만들고 디렉터리로 이동합니다.안전모를 설치하다.
    mkdir eda-nft-collection
    cd eda-nft-collection
    npm init -y
    npm install --save-dev hardhat
    

  • 프로젝트 디렉토리에서npx hardhat. 설치 마법사를 실행하면 다음을 수행할 수 있습니다.
    전체 설치 마법사에서enter를 누르고 기본 설정을 유지합니다
    옵션입니다.
    $ npx hardhat
    

  • 실행 명령은 설치 입니다.
    똑똑한 계약.ERC-721 토큰 기준이 있습니다.
    우리는
    npm install @openzeppelin/contracts
    
  • 계약 폴더 아래에 새 엔티티 만들기
    파일(파일 확장자는.sol)입니다.이것은 우리의 서류가 될 것이다
    ERC-721 토큰.

  • 다음은 OpenZepplin에서 확장된 ERC-721 영패 스마트 계약의 예입니다.나는 코드에 무슨 일이 일어났는지 설명하기 위해 몇 가지 주석을 추가했다.자신의solidity 파일에 복사하여 붙여넣습니다.
    //SPDX-License-Identifier: Unlicense
    pragma solidity ^0.8.9; // tells the solidity version to    the complier
    
    // get the OpenZeppelin Contracts, we will use to creat our own
    import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
    import "@openzeppelin/contracts/utils/Counters.sol";
    
    import "hardhat/console.sol"; // built in hardhat local environment 
    
    contract EdaNFTCollection is ERC721URIStorage {
    
      // keep count of the tokenId
      using Counters for Counters.Counter; // keep track of the token id's
      Counters.Counter private _tokenIds;
    
      uint256 public constant maxSupply = 2; // set the max supply of NFT's for your collection
    
      constructor() ERC721 ("edaNFTCollection", "EDA") { // construct your token, needs name and symbol
        console.log("An NFT has been minted to %s", msg.sender);
    }
    
      function createEdaNFT() public { //function to create nfts
    
        uint256 newItemId = _tokenIds.current(); // get the tokenId
    
        require(newItemId < maxSupply); // check if the total supply has been reached 
    
        _safeMint(msg.sender, newItemId); // mint the nft from the sender account 
    
        _setTokenURI(newItemId, "https://jsonkeeper.com/b/2KQZ"); // add the contents to the nft 
        // the content of this nft is on the url above. This means that the nft is an off-chain nft
        // if the server with the content changes then the image in the url changes 
    
        _tokenIds.increment(); // increment the token, so when the next person calls the function it will be the next token in line 
    
        console.log("NFT ID %s has been minted", newItemId); 
    
       }
    }
    

  • 우리는 로컬 기기에서 계약을 받아서 링키 테스트 네트워크에 올려야 한다.이를 위해서는 하나의 배치만 만들 수 있습니다.'스크립트' 폴더 아래의 js 파일입니다.다음 내용을 복사해서 파일에 붙여넣습니다.
    const main = async () => {
    
        const nftContractFactory = await hre.ethers.getContractFactory('EdaNFTCollection'); // get the contract 
        const nftContract = await nftContractFactory.deploy(); // deploy --> convert to computer language
        await nftContract.deployed(); // wait for it to deploy
        console.log("Contract deployed to:", nftContract.address);
    
        let txn = await nftContract.createEdaNFT() // mint the nft 
        await txn.wait() // wait for the mint
    
        txn = await nftContract.createEdaNFT() // mint another nft (we set 2 as the max supply, can't mint more)
        await txn.wait() // wait for the mint
    
      };
    
      const runMain = async () => {
        try {
          await main();
          process.exit(0);
        } catch (error) {
          console.log(error);
          process.exit(1);
        }
      };
      runMain();
    
  • Alchemy API 키를 받으려면 Rinkeby 테스트 네트워크와 계약을 맺어야 합니다.안전모에 API 키를 추가합니다.배치하다.json(단계 8의 코드 세션 참조)

  • metamask 개인 키를 안전모에 추가합니다.배치하다.json.계정 세부 정보 -->메타 마스크 확장에서 개인 키를 내보내면 됩니다.
    require('@nomiclabs/hardhat-waffle');
    
    module.exports = {
      solidity: '0.8.9', // make sure the version matches the one in smart contract file 
      networks: {
        rinkeby: {
          url: ' ', // rinkeby key 
          accounts: [' '], // metamask privte key- DO NOT SHARE THIS!! It has access to all your accounts
        },
      },
    };
    
  • 아래 명령을 실행하여 계약을 Rinkeby 테스트 네트워크에 배치합니다.
  •  npx hardhat run scripts/deploy.js --network rinkeby
    
    만일 모든 것이 정상이라면, 그것은 계약을 배치하고 계약 주소를 단말기에 인쇄해야 한다.
    OpenZepplin
    implementation
    의 링크비 테스트 네트워크로 가세요.이더리움 스캔은 이더리움의 모든 거래와 계약을 보여 줍니다.계약 주소를 검색할 때 계약 상세 정보와 관련 거래를 볼 수 있어야 합니다.
    당신의 계좌Etherscan에 들어가서 당신이 방금 주조한 NFT를 확인하세요.
    🎉 됐다!현재, 우리는 solidity 프로그래밍 언어를 사용하여 이더리움 블록체인에 NFT 집합을 만들었다.
    결제Rinkeby Opensea를 확인하여 더 많은 항목을 얻으십시오. NFT 시리즈가 등록되지 않은 경우 등록하십시오.당신은 당신의 nft를 위해 전방을 세울 수 있으며, 심지어는 프로젝트에서 연쇄 nft를 제작할 수 있습니다!
    마지막으로 NFT 업계는 매우 새롭다.감독이 적거나 없으면 암시적인 추측이 많다.그러나 나는 NFT가 매우 흥분된다는 것을 발견했다. 왜냐하면 NFT 이전에 분산금융은 블록체인의 주요 업종이었기 때문이다.이제 우리는 블록체인 기술의 새로운 응용이 생겼다.우주가 어떻게 변할지 봅시다.
    제 글을 읽어주셔서 감사합니다.만약 당신에게 무슨 문제가 있으면 그것들을 아래에 놓고 나에게 연락하세요. 나는 당신의 소식을 듣고 매우 기쁩니다.

    좋은 웹페이지 즐겨찾기