일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nodejs
- exceljs
- Python
- Ai
- chatGPT
- git
- Kaikas
- nft
- Remix
- PM2
- pagination
- polygon
- metamask
- 발행
- threejs
- Laravel
- NextJS
- jquery
- nginx
- Setting
- netfunnel
- 배포
- miniconda
- node
- 라라벨
- 회고
- CSS
- React
- 블록체인
- 공연티켓
- Today
- Total
박주니 개발 정리
공연티켓 nft 구매자 거래(purchaseNFT) 본문
지금 이 설명을 듣기 위해서는 그전에 설명했던 공연티켓 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 적용
================== 클라이언트쪽에서 구매를 요청한다고 이해