팀프로젝트/close_sea

    [CloseSea] 최종 정리

    배포 URL React App ec2-3-35-131-178.ap-northeast-2.compute.amazonaws.com 기간 : 2022.12.19 ~ 2022.12.25 팀원 : 본인 외 1명 GitHub - TeTedo/NFT_market Contribute to TeTedo/NFT_market development by creating an account on GitHub. github.com 이슈 트래킹 : 노션(본인 닉네임 : 파파파박) Close Sea NFT 토이 프로젝트 Close Sea Front : React SmartContract : Solidity rough-twine-a04.notion.site 본인이 사용한 스택 Docker, Eslint, Prettier, React,..

    [CloseSea] aws 배포 이슈

    aws에 도커를 통해 배포를 진행하려고 했다. aws에서 도커허브에 올린 내 이미지를 받아와 npm start를 실행하도록 했지만 메모리가 부족하다는 오류가 뜨면서 실행되지 않았다. 오류에 대해 검색해보니 메모리를 올려주는 명령어를 추가하여 npm start를 하면 된다고 했지만 똑같은 오류가 발생했다. 문제는 근본적으로 내가 선택한 aws 인스턴스는 가장 작은 메모리를 사용하는 것이였기 때문이었다. 메모리가 부족했기 때문에 react를 빌드하여 실행시키는 방법을 생각했다. 이를 위해 Dockerfile을 새로 작성하고 이미지를 수정해야 했다. 기존 Dockerfile FROM node:18 WORKDIR /app COPY package.json . RUN npm install COPY . . EXPOS..

    [CloseSea] ERC721 tokenURI 연결 이슈

    우선 NFT 메타데이터는 해시립스를 이용하여 생성했다. 생성한 메타데이터를 바탕으로 각 tokenURI를 백엔드에서 받아오려고 했지만 내 로컬에서 실행시킨 백엔드 서버에서 goerli testnet opensea가 정보를 받아오지 못해 메타데이터가 담기지 못했다. 이를 해결하기 위해 어디에서나 받아올수 있는 URI가 필요했고 난 pinata를 선택했다. Pinata | Your home for NFT media Welcome to Pinata - Your home for NFT Media. We power the web3 space distributing content for NFTs across some of the top marketplaces, metaverses, apps and more. Get..

    [CloseSea] NFT거래 권한 이슈

    개인끼리 거래를 할때 NFT소유자가 구매자에게 직접 보내주는건 approve에 상관없이 가능하다. 하지만 거래소를 이용하여 거래를 하려고 하면 거래소에게 NFT를 옮길 권한을 줘야 한다. 나는 NFT 민팅 컨트랙트와 거래 컨트랙트를 따로 만들어 사용했다. 하지만 ERC721에 있는 setApprovalForAll 함수를 통해 거래컨트랙트에 권한을 줘도 거래가 되지 않았다. 이유는 msg.sender에 있었다. msg.sender는 그 함수를 호출한 주소가 들어간다. NFT거래 컨트랙트에서 NFT민팅 컨트랙트에 있는 setApprovalForAll 함수를 실행하면 msg.sender로 NFT컨트랙트가 들어간다. 이를 수정하기 위해 front에서 client가 바로 setApprovalForAll 함수를 호..

    [CloseSea] 지갑연결 버튼

    지갑 연결 버튼 컴포넌트 import React from "react"; const ConnectWalletBtn = ({ setAccount }) => { const getRequestAccount = async () => { const [account] = await window.ethereum.request({ method: "eth_requestAccounts", }); return account; }; const connectWallet = async () => { const account = await getRequestAccount(); setAccount(account); localStorage.setItem("account", account); window.ethereum.on("acco..

    [CloseSea] 스마트 컨트랙트

    GitHub - TeTedo/NFT_market Contribute to TeTedo/NFT_market development by creating an account on GitHub. github.com NFT표준 규격으로 ERC721 대신 ERC721A를 사용했다. ERC721A Azuki www.azuki.com 아즈키 프로젝트에서 기존 ERC721의 가스비를 개선하여 ERC721A를 만들었다. 기존 ERC721에서 5개를 민팅한다고 했을때 가스비는 1개를 민팅한 가스비에서 비례적으로 늘어난다. 최적화1 ERC721 Enumerable 에서 중복 스토리지 제거 최적화2 발행된 NFT 대신 발행 요청당 한번 소유자의 잔액 업데이트 내가 토큰을 2개 가지고 있고 5개를 더 산다고 가정했을때 내 NFT..