본문 바로가기
Blockchain

[Blockchain] OpenSea NFT 민팅 하는 방법

by 개발자 염상진 2022. 7. 21.

OpenSea는 NFT를 거래하는 대표적인 플랫폼입니다. OpenSea에서 지원하는 블록체인은 이더리움, 폴리곤, 솔라나, 클레이튼이 있습니다. 테스트넷으로는 이더리움 Rinkeby와 클레이튼의 Baobab을 지원하고 있습니다. 

OpenSea에서 이더리움 메인넷으로 테스트를 진행하기에는 민팅 비용이 상당하기 때문에 Rinkeby 테스트넷으로 NFT를 진행합니다. 

NFT를 발행하는 순서는 다음과 같습니다.

  1. ERC-721 표준을 사용해 컨트랙트 배포
  2. tokenURI를 AWS S3에 배포
  3. 배포된 컨트랙트를 사용해서 NFT 민팅
  4. Sell 시작

 

 

① ERC-721 컨트랙트 컴파일 & 배포

ERC-721 컨트랙트를 컴파일/배포 하기 위해 Remix를 사용합니다. 먼저 Rinkeby 테스트넷에서 사용할 Rinkeby ETH를 받아옵니다.

Rinkeby Faucet

Remix에 접속해 아래 contracts/MyNFTs.sol 파일을 생성하고 아래 코드를 복사합니다.

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

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";

contract TestNFTs is ERC721URIStorage, Ownable {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;
    
    constructor() public ERC721("TestNFT", "NFT"){}
    
    function mintNFT(string memory tokenURI) public onlyOwner returns(uint256){
        _tokenIds.increment();
        
        uint256 newItemId = _tokenIds.current();
        _mint(msg.sender, newItemId);
        _setTokenURI(newItemId, tokenURI);
        
        return newItemId;
    }
}

 

Remix에서 해당 코드를 컴파일하고 컨트랙트를 배포합니다. 

 

 

② AWS에서 NFT 정보를 담은 JSON 파일을 배포합니다.

NFT 메타데이터를 담은 JSON 파일을 배포하기 위해 AWS S3를 사용합니다.

먼저 버킷을 생성하고, 권한을 설정합니다.

 

외부에서 읽기 접근이 가능해야 하므로 퍼블릭 액세스 권한을 설정합니다.

 

버킷 접근 권한 정책 설정에서 아래 코드를 복사해줍니다. 퍼블릭 접근 권한을 설정하는 statement입니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "S3 버킷 이름/*"
        }
    ]
}

 

접근 권한 설정이 완료되면 이제, NFT에 올릴 디지털 자산(이미지, 영상, 음악 등등)과 NFT 메타데이터를 담은 JSON 파일을 업로드해줍니다.

 

 

③ NFT 민팅

 

 

Remix에서 NFT 메타데이터 JSON 파일의 AWS S3 객체 URI를 복사해 tokenURI로 사용합니다. 트랜잭션을 실행하면 NFT 민팅이 바로 진행됩니다.

 

이더스캔에서 트랜잭션 상태를 바로 확인할 수 있습니다. 

 

④ OpenSea NFT selling 시작

profile로 접속하면 방금 민팅한 NFT가 올라온 것을 확인할 수 있습니다.

 

NFT 화면으로 접속하면 지정한 Name과 Description 그리고 Image가 반영된 것을 확인할 수 있습니다. 이제 상단의 "Sell" 버튼을 클릭해서 OpenSea 테스트넷에서 NFT를 팔 수 있습니다. 

 

Sell 버튼을 클릭하면 Fixed Price와 Timed Auction 두가지 방법중 하나를 선택할 수 있습니다. 저는 고정 가격으로 99 Rinkeby ETH로 NFT를 올리도록 하겠습니다.

 

 

 

Complete Listing을 하면 2번의 서명을 해야 됩니다. 첫번째 서명은 OpenSea에 해당 컨트랙트의 approve 함수를 실행하는 과정입니다. 즉 OpenSea가 내가 소유한 NFT를 사용할 권한을 위임하는 과정입니다.

 

두번째 서명은 해당 NFT에 개인키로 서명을 합니다. 서명까지 완료되면 성공적으로 OpenSea Testnet에 제가 만든 NFT가 정상적으로 배포됩니다. 

 

 

위에 작성한 NFT는 링크에서 확인가능합니다.

 

 

※ 주의사항 : AWS S3는 사용한만큼 과금되는 구조로 사용하지 않는 경우 반드시 버킷을 삭제해야 과금이 안됩니다. 사용하지 않는 AWS 서비스는 항상 모두 삭제해놓는 것이 바람직합니다.

 

 

 

 

[Blockchain] NFT 만드는 법 (ERC-721 표준 사용)

ERC-721 컨트랙트 컴파일 ⓐ Remix IDE를 실행합니다. ⓑ 새로운 프로젝트를 실행하고 contracts 폴더에 testNFT.sol 파일을 생성합니다. ⓒ openzeppelin에서 제공하는 라이브러리를 사용해 ERC-721 컨트랙트 코

about-tech.tistory.com

 

 

 

크립토 키티 접속 제한 우회 방법 (VPN 확장 프로그램)

NFT 그리고 크립토키티 ERC-721 표준을 사용한 최초의 NFT 플랫폼 크립토 키티는 어릴적 가지고 놀았던 다마고치와 유사한 패턴을 가지고 있습니다. 이더(ETH)를 지불하면 고양 캐릭터를 생성할 수

about-tech.tistory.com

 

 

[Blockchain] ERC-721 vs ERC-20 차이점 (NFT vs FT)

ERC-721 표준 스펙은 이더리움 블록체인에서 NFT(Non-Fungible Token)을 생성하는 표준입니다. 이더리움 개선 제안인 EIP에서 721번째 토론에서 나온 표준이며, 구분 가능한(대체 불가능한) 토큰 발행에 대

about-tech.tistory.com

 

댓글