과정
1) 이미지를 ipfs에 올린다. -> hash 값을 받는다.
2) metadata JSON(NFT에 넣을 정보를 담는 그릇)파일을 ipfs에 올린다. -> has값을 받는다.
3) ERC721 민터 코드를 블록체인에 올린다.(디플로이 한다.)
4) NFT를 민트한다.
5) Alphawallet에서 확인한다.
hash값은 암호화 알고리즘을 통해서 나오는 값을 의미함.
ERC721- NFT의 스탠다드.
NFT라고 불리는 것들은 대부분 이 형식을 따름
ERC20에 토큰 ID, 메타데이터 JSON 파일이 추가된 형태
토큰 ID- NFT에 붙는 개별 식별번호
메타데이터JSON은 NFT에 넣는 정보를 담는 그릇 -> 메타데이터 JSON파일을 블록체인에 저장하면 비용이 너무 비싸다.
분산 저장소에 가는 경로만 블록체인에 일반적으로 담는다.
IPFS란= 분산 저장소, 위변조 불가능 어찌보면 블록체인과 비슷하다.
순서 1) 이 코드를, Remix에 붙여넣는다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract NFT is ERC721 {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("CResearch", "CNR") {}
mapping(uint => string) tokenURIs;
function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
return tokenURIs[tokenId];
}
function create(address to, string memory tokenURI)
public
returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(to, newItemId);
tokenURIs[newItemId] = tokenURI;
return newItemId;
}
}
2) metadata.json, .png 이미지 파일을 사용할 예정
3.1) pinata(ipfs를 사용하기 위해서) 로그인 한다.
3.2) 이미지를 먼저 올린 후, ipfs 값을 복사 한다..
3.3) metada JSON 파일을 "images" : "ipfs://올린 이미지 파일 ipfs 값 붙여넣기"
4) Remix를 켠 다음에, NFT를 민트한다.
4.1)=> cmd +s 누르고 저장하기
4.2) Deploy 할 때,
Environment를 Injected Provider -MetaMask로 변경해주고,
Contract를 내가 하려고 하는, 파일로 잘 맞춘 다음에, Deploy한다.
4.3) create에 들어가서,
to: alphawallet 주소 넣어봄, 지금은 막힘
tokenURI: ipfs://metadata.json(CID)값을 그대로 붙여넣기
5) AlphaWallet에서 확인이 됐지만, 현재는 안된다고 해서, Brave Wallet으로 확인해봄. 안됨
Share article