개발 학습/블록체인

S4: mintNFT함수 (NFT 발행)

StelthPark 2021. 11. 30. 16:43

Remix와 openzeppelin의 상속(Import) 사용하여 ERC721작성

ERC721의 변수로 첫번째 MyNFT는  스마트계약의 이름이고 두번째 변수 NFT는 기호이다.

 

새로운 NFT를 발행하는 mintNFT

 

    function mintNFT(address recipient, string memory tokenURI)
        public onlyOwner //오너만 생성할수 있게한다.
        returns (uint256)
    {
        _tokenIds.increment(); //현재까지 생성된 NTF토큰ID에서 하나올린다.

        uint256 newItemId = _tokenIds.current(); //현재 만들고있는 NTF으로 새 ID할당
        _mint(recipient, newItemId); //받을 사람주소와 새 NTF의 ID값으로 생성
        _setTokenURI(newItemId, tokenURI); //새 NFT ID와 NTF의 JSON정보인 URI로 토큰 URI생성

        return newItemId; //uint256의 새 NTF ID값을 반환
    }

mintNFT 함수에서 NFT를 받을 주소와 NFT의 정보가 든 json파일의 URI주소를 인자로 담는다.

_min 함수에 NFT를 받을 recipient와 새로 만들어진 NFT의 ID를 넣어 생성시킨다.

 

만약 mintNFT로 새 NFT를 발급할때 발급자 즉 msg.sender에게 바로 NFT가 발급되게 할려면

mintNFT함수에 인자를 tokenURI만 받고 _mint 내부함수에서 recipient대신 msg.sender로 대처한다.