박주니 개발 정리

공연티켓 nft 구매자 거래(purchaseNFT) 본문

블록체인

공연티켓 nft 구매자 거래(purchaseNFT)

박주니 2023. 3. 17. 14:34
728x90
반응형

지금 이 설명을 듣기 위해서는 그전에 설명했던 공연티켓 nft 발행 및 signature 과정이 필요합니다. 그래서 전 과정에서 signature 값이 있어야 purchaseNFT abi를 이용하실 수 있습니다. 해당 abi도 공연티켓 nft 발행 및 signature 설명할 때 같이 포함되어있습니다. 여기에 별도로 올릴 수는 있지만 오히려 그것이 더 차질을 드릴 거 같아서 한번에 가져오는 것을 추천합니다. 

 

지금 설명하기 전에 앞서서 이제 구매자 입장에서 하신다고 생각하고 진행해야합니다. 즉 메타마스크 wallet address도 발행자 address랑 다르게 설정하고 진행하는 것을 추천합니다.

메타마스크에서 계정생성을 별도로 해서 진행하시는 것을 추천합니다. 

  // 티켓 발행
  async function handleBuyNFT() {
    const accounts = await window.ethereum.request({
      method: "eth_requestAccounts",
    });
    const buyerAddress = accounts[0];
    const contractAddress = [performanceNFT];
    const contract = new web3.eth.Contract(ConcertSeats.abi, contractAddress);
    const price = web3.utils.toWei("0.01", "ether");// 실제 공연 티켓 matic 값

    try {
      await contract.methods
        .purchaseNFT(
          buyerAddress,
          [tokenId],
          [signature]
        )
        .send({
          from: buyerAddress,
          value: price,
          gasLimit: 3000000,
          debug: true,
        });
    } catch (error) {
      console.error("NFT 구매 실패", error);
    }
  }

추가 설명) 

web3.utils.toWei([공연 티켓 matic], "ether") 는 전에 발행할 때 price을 넣은 적이 있는데 그 price를 matic 기준으로 했다면 마찬가지로 price를 0.01대신에 바꿔서 진행하시면 됩니다. 그럼 해당 이벤트를 진행할 때 price+수수료 가스비를 지불하면 해당 nft를 구매할 수 있다고 이해하시면 됩니다. 

tokenId 는 signature을 만들때 그 안에 tokenId도 같이 넣었을텐데 동일한 tokenId를 넣으시면 됩니다. 그러면 해당되는 tokenId를 구매한다는 의미입니다. 

signature 는 전에 설명드렸던 signature에 얻어진 값을 string으로 넣으시면 됩니다. 

 

여기까지 진행해서 성공적으로 진행이 되었다면 nft 마켓에 적용할 수 있는 공연티켓 nft를 만든 것입니다.

 

만드는 과정을 다시 설명하자면

1. 스마트 컨트렉트 배포 

2. abi 구성 셋팅

3. 발행 

4. signature 

================== 4번까지는 관리자가 진행한다고 이해

5. signature을 가지고 purchaseNFT 적용

================== 클라이언트쪽에서 구매를 요청한다고 이해 

728x90
반응형
Comments