분류 전체보기

    [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..

    [CloseSea] swap페이지 만들기

    GitHub - TeTedo/NFT_market Contribute to TeTedo/NFT_market development by creating an account on GitHub. github.com swap 페이지는 위와 같이 만들었다. 수수료는 5%로 적용하여 처음 컨트랙트를 배포한 owner에게 보내도록 설정했다. 바꿀 이더를 입력하면 수수료를 계산하여 얼만큼의 토큰을 받을지 적용해준다.

    [CloseSea] eslint, prettier 설정

    개발을 하던 중간 서로 prettier의 설정이 달라 코드 정렬이 계속 달라졌다. 이를 해결하기 위해 eslinit와 prettier로 작업영역의 코드스타일을 통일 시키려고 했다. 루트폴더 /.vscode/setting.json { "editor.codeActionsOnSave": { "source.fixAll": true }, "eslint.workingDirectories": [{ "mode": "auto" }] } .vscode 폴더에 들어있는 setting.json은 루트 폴더 작업영역내의 설정을 해주는 것이다. "editor.codeActionsOnSave": { "source.fixAll": true }, 저장을 할때마다 formatter규칙에 따라 format을 해준다는 설정이다. "esli..

    [Docker] ERROR in [eslint] EACCES: permission denied, mkdir '/app/node_modules/.cache'

    도커를 배우고 처음으로 적용한 프로젝트이다. 윈도우를 사용하며 도커를 공부하면서 마운트가 안되는 오류가 있었다. 그래서 리눅스로 도커를 공부했었다. 루트폴더를 만들고 도커환경을 세팅하는 과정에서 문제가 발생했다. 리액트를 빌드하려고 하면 ERROR in [eslint] EACCES: permission denied, mkdir '/app/node_modules/.cache' 라는 오류문구가 떴다. 옆에 팀원이 맥을 사용하길래 도커를 깔고 해보라고 한 결과 맥은 이상없이 잘 빌드되고 실행됐다. 리눅스에서 구글링을 해보고 주변에 도움도 청하면서 온갖 방법을 시도했지만 해결할 수 없었다. 2일을 투자했지만 아무것도 얻지 못했다. 그래서 대안책으로 docker-compose를 통해 데이터베이스와 백엔드 두개의 ..