728x90
개인끼리 거래를 할때 NFT소유자가 구매자에게 직접 보내주는건 approve에 상관없이 가능하다.
하지만 거래소를 이용하여 거래를 하려고 하면 거래소에게 NFT를 옮길 권한을 줘야 한다.
나는 NFT 민팅 컨트랙트와 거래 컨트랙트를 따로 만들어 사용했다.
하지만 ERC721에 있는 setApprovalForAll 함수를 통해 거래컨트랙트에 권한을 줘도 거래가 되지 않았다.
이유는 msg.sender에 있었다.
msg.sender는 그 함수를 호출한 주소가 들어간다.
NFT거래 컨트랙트에서 NFT민팅 컨트랙트에 있는 setApprovalForAll 함수를 실행하면
msg.sender로 NFT컨트랙트가 들어간다.
이를 수정하기 위해 front에서 client가 바로 setApprovalForAll 함수를 호출하도록 수정했더니 정상적으로 거래가 되었다.
결론 : setApprovalForAll을 승인하면 승인한 주소에서 내 NFT를 마음대로 보낼수 있다.
728x90
'팀프로젝트 > close_sea' 카테고리의 다른 글
[CloseSea] aws 배포 이슈 (0) | 2022.12.28 |
---|---|
[CloseSea] ERC721 tokenURI 연결 이슈 (0) | 2022.12.28 |
[CloseSea] 지갑연결 버튼 (0) | 2022.12.28 |
[CloseSea] 스마트 컨트랙트 (0) | 2022.12.27 |
[CloseSea] swap페이지 만들기 (0) | 2022.12.27 |