안녕하세요!
드디어 마지막 시간이네요.
최근 하락장과 함께 NFT에 대해 회의적으로 보시는 분들도 많겠지만,
어쨋든 기술은 기술일 뿐입니다.
현재 트렌드가 어떻고, 앞으로 어떻게 발전할지는 시장에 달렸다고 생각합니다 ㅎㅎ
앞으로는 메타버스뿐만 아니라 좀더 다양한 분야에서 NFT 기술이 사용될 수 있겠죠.
아무튼 마지막 과정 시작합니다!
자, 이제 드디어 마지막 시간이다.
NFT를 업로드하고, 발행해보자!
일단, 앞선 과정이 제대로 됐는지 먼저 체크체크!
NFT 발행과정은 늘 살얼음판을 걷는 것과 같다. 돈이 들어가니까.
json파일의 정보가 잘못되었거나, 파일명을 틀리게 넣었거나, 모든 과정 중에 실수가 있으면 수수료를 그냥 날리게 될 가능성이 높다.
- metadata는 잘 작성이 되었는가?
- 파일명은 0.png, 0.json~9999.png, 9999.json으로 잘 명명되어있나?
- config.json과 .env 파일은 잘 세팅이 되었는가?
적어도 이 세가지는 꼭 두세번 확인을 하고 실행하길 권한다.
지금부터는 돈이 깨지니까.
일단 무서우니까 Baobab network, 그러니까 클레이튼의 테스트넷에서 실행해보겠다.
- image와 metadata의 ipfs 업로드
두 가지 중 하나를 선택해야 한다.
- 스스로 image를 ipfs에 업로드 하고, metadata에 URL을 넣은 경우
- ipfs업로드는 하지 않았고, image 파일과 URL이 없는 metadata 파일만 가지고 있는 경우
첫번째의 경우엔 다음 명령어를 넣고,
node gacha-cli.mjs upload images -n baobab
두 번째의 경우엔 다음 명령어를 넣는다.
node gacha-cli.mjs upload images -n baobab -i
“-i” 옵션만 다르지만, -i 옵션을 넣으면 먼저 폴더에 넣은 image 파일을 본인이 config 파일에 입력한 pinata api key를 통해 pinata에 업로드하고, 그 해시값을 URL로 만든 다음 metadata에 입력한다.
“-i”를 입력하지 않은 경우 위 과정을 생략하고, 바로 metadata 파일들을 ipfs에 업로드 한 뒤, 해당 URL을 스마트컨트랙트에 업로드한다.
“-i” 옵션을 넣고 업로드를 하면 위와 같은 메시지들이 출력된다. 각 NFT의 번호, 그리고 이미지 파일을 먼저 올린 후 json 파일 수정 후 업로드가 된다.
“New collection is successfully made.”라는 메시지는 Metadata들의 URI들을 업로드하고, 해당 URI들이 발행될 NFT의 스마트 컨트랙트가 잘 만들어졌다는 메시지이다.
참고로 각 데이터들은 10개 단위로 스마트컨트랙트에 올라간다. 그러니까 먼저 json 데이터들을 ipfs에 10개를 올린 뒤, 그 uri를 한꺼번에 모아서 스마트컨트랙트에 전달한다는 뜻이다. 가스비가 크지 않은 클레이튼이지만, 어쨋든 아끼면 좋은 거니까…
업로드 과정이 끝나면 프로젝트 폴더 내에 .cache라는 폴더가 자동으로 생성되고, 그 안에 info.json이라는 파일이 생성된다. 업로드된 URI 정보를 한번에 모아두는 캐시파일인데,
이런식으로 각 메타데이터의 번호, URI와 이름, 그리고 onChain이라는 항목으로 구분된다. 이 onChain이 뭐냐면, 다음 과정과 관련있다.
2. Upload verifying
업로드가 끝났으면, 당연히 스마트컨트랙트에 잘 업로드가 되었는지 확인을 해야 한다. 이 확인을 위한 기능이 verify이다.
다음 명령어를 입력해본다.
node gacha-cli.mjs verify -n baobab
verify는 스마트컨트랙트에 업로드 된 URI와 캐시파일에 입력된 URI가 동일한지 체크하는 기능이다. 위와같이 verify작업이 모두 끝나면, 캐시파일도 다음과 같이 바뀌어있다.
이렇게 모든 캐시값의 onChain값이 true로 바뀌었다면, 업로드는 무사히 성공한 것이다. 명령어 한번 더 입력하는게 귀찮을지도 모르겠지만, 제대로 업로드도 안됐는데 민팅을 하는 것보단 나을 것이다.
자, 드디어 마지막 단계이다.
3. Mint버튼 UI 확인
일단 선행된 .env파일의 각 항목들을 다시한번 확인한다. 총 발행갯수나 지갑주소 등등 잘못된 값이 없는지 확인한 뒤, 다음 명령어를 입력한다.
npm start
무언가 잘못되지 않았다면, 인터넷 브라우저가 하나 뜨고 다음과 같은 화면이 뜰 것이다.
맨 윗쪽은 [발행된 갯수/총 갯수]이고, 둘쨋줄은 민팅 가격이다.
그리고 셋째줄은 각각 1개, 3개, 5개씩 민트할 수 있는 기능이다.
나머지 디자인은 발행인 여러분에게 맡긴다. 애초에 디자인은 각각 다를테니 견본을 만들어도 다 수정할거고 견본이 있어봐야 지우고 다시 만들고 귀찮을테니…
혹시나 민팅 갯수를 조절하고 싶다면,
저 Mint.jsx파일에 들어가서,
저 부분은 5개 민팅의 함수부분인데, 밑줄친 3개의 5의 숫자를 바꾸고,
코드 맨 밑쪽에 저 밑줄친 5도 숫자를 바꾸면 된다. 함수 이름도 바꿔도 좋다.
시험삼아 그럼 민팅을 해보면,
민팅 트랜잭션 확인창이 뜨고, 확인을 누르고 구입을 하면,
발행갯수가 1로 카운트 되고 발행이 된다.
이렇게 테스트를 마쳤으면, 명령어의 -n baobab 부분을
“-n mainnet”으로 바꿔서 동일하게 실행하면 된다.
이렇게 민팅된 NFT들은
오픈씨에서도 확인하고 판매할 수 있다.
(그림까지 보여드리고 싶지만 딱히 허락을 받은 그림이 아니라서;;)
이렇게, NFT의 발행의 전 과정을 Klay-Gacha-Machine을 이용해서 진행해보았다.
마지막으로 다시 한번 언급하지만, NFT를 구매자가 구매할 때 가격 중 0.1klay는 수수료로 빠져나갑니다.(급존대;;)
그럼, 아름다운 판매가 되길 바라며!