안녕하세요 :)
이번 시간에는 대체 불가능 토큰(NFT)을 위한
TokenURI를 생성하는 방법에 대해 알아봅시다!
필요한 것 / Prerequisite
* NFT.storage API Key
* Installing IPFS
* Code Editor (VSCode)
*Content you want to put in TokenURI
TokenURI 를 넣는 이유
NFT에 우리가 올리고 싶어하는 이미지, 영상, 음악을
블록체인에 다이렉트로 올려버리게 된다면
구성하고 있는 노드들 전부가 그 파일을 다운 받게됩니다.
이렇게 되면 사진같은 파일이라도 블록체인에 무리를 주겠죠?
그러면 블록체인에 배포하기 위한 fee도 엄청나게 많이 나오게 되니
그 대안으로 파일이 위치한 TokenURI를 올려버리는겁니다.
문제점
NFT는 구조상 URI를 블록체인에 올려버리는 특성때문에
서버가 다운된다면 NFT안의 내용이 없어지거나 변형될 수 있으며
저희는 그 대안으로 IPFS를 꼽을 수 있습니다.
이는 InterPlanetary File System으로 불리며 분산 파일 시스템입니다.
그럼에도 이는 무결점한 시스템이 아니며 최근에는
실제로 작동하지 않는 IPFS주소를 발견한 적도 있다고 합니다.
따라서 이러한 문제점을 인지하고 각자 맞는 방법으로 활용하면 되겠습니다!
TokenURI 생성 / Creating your own URI with data
데이터를 담을 URI를 생성하기 위해선
원하는 데이터를 파일로 받으신 후 NFT.storage에 가입 후 파일에 업로드하게 되면
업로드한 파일에 대한 IPFS 해쉬가 주어지게 됩니다.
이를 IPFS 프로그램이 켜진 상태에서 들어가게 되면
이미지도 확인이 가능! 다운받는 곳은 여기 :)
ipfs.io/ipfs/ 뒤쪽에 해시를 넣어주면 된다.
예시
ipfs.io/ipfs/bafybeifjo6jp6zvxudgvrtlrrupcgl4qrn6li4nu7di2uyhk73mt2qbccy
Metadata
최근에는 NFT를 거래할 수 있는 많은 마켓플레이스에서
토큰에 들어가는 메타데이터 구조에 대한 스탠다드를 권고하고있습니다.
왜냐면 NFT에는 단지 컨텐츠 그 자체만 올라가는 것이 아닌
설명, 속성, 날짜 등 아주 많은 요소들이 들어갈 수 있는데요
이렇듯 TokenURI에는 컨텐츠 뿐만 아니라 다른 요소들도 넣어줄 수 있게하는게
제가 이 포스팅을 하는 이유겠죠?
다시 NFT.storage 웹의 밑으로 내려다보면
IPFS의 원리와 메타데이터를 만들어주는 방법을 자세히(?) 설명해주고있다.
자 이제 이를 위해 새로운 폴더를 생성해주고
올리실 컨텐츠로 폴더에 위치해줍니다
이후 이곳에서 만들어준 패키지를 받아주시고 임포트 까지 해줍니다!
npm init
npm nft.storage
이후 위에 올린 코드를 넣어주시고
API Key를 넣어준 후
image 값 안에 위치한 곳과 이름, 타입을 넣어준 후
attributes로 원하는 속성을 넣어줍니다 !
여기서 너무 개고생을 많이했는데ㅠ
올려드린 NFT.storage 캡쳐에는 파일을 단순히 /*data*/ 로만 설명을 해놔서
이게 IPFS Hash를 적으라는건지 컨텐츠의 위치를 올리라는건지
아무것도 모른채 거의 몇시간동안 메타데이터 링크에서 사진이 안보이는 현상 발생..
이에 대한 해답을 찾으러 인터넷의 바다를 떠돌다가 드디어 발견..!! ㅠㅠ
아무래도 정보가 너무 없다보니 이렇게 개고생을 했다!
그래도 끝내 찾아서 성공한 나 자신 칭찬해
이제 이미지를 내장되어 있는 fs 모듈에서 fs.readFileSync 메서드를 이용하는데
콘솔을 찍어보면 데이터가 쪼개져 나온다.
byte 형식으로 바꾸는 이유는 바이트 타입의 배열은 쉽게 비교, 압축, 저장 그리고 다른
형태로의 변환이 쉽게 가능하기 때문인데
그래서 이런 방식을 쓰나보다..!
여튼 콘솔을 돌려보면 아래처럼 찍히게 된다
<Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52
00 00 02 d0 00 00 02 a4 08 06 00 00 00 29 e4 08 4b 00 00 0a e0 69 43 43
50 49 43 43 20 50 72 6f 66 69 ... 382611 more bytes>
암튼 이렇게 파일을 실행해주면 json 형식의 파일을 담고 있는 ipfs 해쉬가 주어진다!!!! 얏호
이 링크를 따라서 들어가보면ㅎㅎ
짜잔 이렇게 json 형식의 메타데이터가 나와있는 것을 볼 수 있다!
이미지에 나와있는 해쉬로 링크를 들어가보면!
https://ipfs.io/ipfs/bafybeicfilzgerdvygz5wooltlwnmycpx5ny45msobjmhp2yzvob7qsis4/Padaeng.png
쨔-잔 🎶 하고 파댕이가 나오는 걸 확인할 수 있다
ipfs가 깔려있지 않으면 링크가 안열리려나 ... ?
폰에서 확인하니 잘 나온다!
자 어떠셨나요?
쉽다면 쉽고 복잡하다면 복잡한
NFT 메타데이터 생성하기!
여기까지 따라오셨다면 NFT 만드는 것은 껌일거에요!
다음 포스팅에선 이를 블록체인에 직접 올려보는
포스팅을 올리도록 하겠습니다
빠염!
ps. nft.js를 실행하면 오류가 난다는 크루의 제보
'BlockChain' 카테고리의 다른 글
분산원장기술에 대해 Araboja (0) | 2022.04.05 |
---|---|
Opensea 구현하기 / Clone Opensea.io project with team (2) | 2021.12.22 |
Klaytn Baobab Network Faucet / 클레이튼 테스트넷 클레이 받기 (0) | 2021.12.13 |
메타마스크 프라이빗 키와 니모닉 단어 내보내는 방법! (0) | 2021.12.10 |