[Solana] nft 민팅 사이트 만들기 2탄 (feat. Candy Machine)

0xDave·2022년 7월 19일
0

Solana

목록 보기
2/4
post-thumbnail

👻 팬텀 지갑 연결하기


const [walletAddress, setWalletAddress] = useState(null);

지갑 연결 상태를 저장하기 위해 useState가 추가됐고

//연결 함수 추가
const connectWallet = async () => {
    const { solana } = window;
  
    if (solana) {
      const response = await solana.connect();
      console.log('Connected with Public Key:', response.publicKey.toString());
      setWalletAddress(response.publicKey.toString());
    }
  };

//버튼 추가
const renderNotConnectedContainer = () => (
    <button
      className="cta-button connect-wallet-button"
      onClick={connectWallet}
    >
      Connect to Wallet
    </button>
  );

버튼을 눌렀을 때 지갑이 연결될 수 있도록 connectWallet() 함수가 추가 됐다. solana.connect() 를 이용하면 생각보다 쉽게 사용자가 지갑을 연결할 수 있다.

📝 NFT 파일과 JSON 파일 준비


이런 식으로 NFT를 만들 png 파일과 json 파일을 0번부터 원하는 갯수까지 만들고, json 파일에 아래 내용을 입력해준다. 아래쪽 creators의 주소에 자신의 팬텀 월렛 주소를 입력하고 creator fee를 설정해주면 된다.

{
    "name": "Pretty Rustacean",
    "symbol": "PRRT",
    "image": "0.png",
    "properties": {
      "files": [
        {
          "uri": "0.png",
          "type": "image/png"
        }
      ],
      "creators": [
        {
          "address": "YOUR PHANTOM WALLET",
          "share": 100
        }
      ]
    }
  }

👜 지갑 만들기


웹 브라우저에 설치된 팬텀지갑과 달리 솔라나 데브넷에 NFT와 컨트랙트를 deploy 할 지갑을 만들어야 한다.

solana-keygen new --outfile ~/.config/solana/devnet.json

위 명령어로 keypair를 만들 수 있다. 명령어를 입력하면 만들어진 지갑의 public 주소와 seed phrase가 나온다.

solana config set --keypair ~/.config/solana/devnet.json

만들어진 keypair를 default 값으로 설정해주고

solana airdrop 2

데브넷에 deploy할 때 사용할 가스비를 받는다.


🍬 Candy Machine 설정


다음은 Candy machine을 설정해줄 confige.json 파일을 만들어준다. 위에서 만들었던 지갑 주소를 입력해주면 된다.

{
    "price": 0.1, //nft 가격
    "number": 3, //nft 갯수 입력
    "gatekeeper": null,
    "solTreasuryAccount": "<YOUR WALLET ADDRESS>", //지갑주소
    "splTokenAccount": null,
    "splToken": null,
    "goLiveDate": "05 Jan 2021 00:00:00 GMT", //민팅 날짜
    "endSettings": null,
    "whitelistMintSettings": null,
    "hiddenSettings": null,
    "storage": "arweave", //nft 저장 위치. 여기서는 arweave로 저장.
    "ipfsInfuraProjectId": null,
    "ipfsInfuraSecret": null,
    "awsS3Bucket": null,
    "noRetainAuthority": false,
    "noMutable": false
}

이제 asset 폴더가 있는 상위 폴더로 가서 아래 명령어를 입력해주면

ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts upload -e devnet -k ~/.config/solana/devnet.json -cp config.json ./assets

Candy Machine 완성!


출처 및 참고자료


  1. https://buildspace.so/p/ship-solana-nft-collection/lessons/build-connect-wallet-button
  2. https://docs.metaplex.com/guides/archived/candy-machine-v2/preparing-assets#-image-0png?utm_source=buildspace.so&utm_medium=buildspace_project
  3. [KO] 솔라나에서의 NFT 구현 2편: 캔디머신을 활용한 NFT 민팅 과정 이해하기
profile
Just BUIDL :)

0개의 댓글