스마트 컨트랙트 자체의 nft 보유

지갑을 가진 계정이 아닌 스마트 컨트랙트(KIP17 기반) 자체가 NFT를 주고받을 수 있는 기능이 있나요?
현재 원하는 워크플로우는 owner가 smart contract을 통해 NFT를 minting한뒤,
trader smart contract 자체에 nft를 safeTransferFrom으로 전송하고. 이후에 스마트 컨트랙트 자체가 다른 유저에게 NFT를 safeTransferFrom을 통해서 이전하는 기능입니다.

해결하였습니다. 다른 분들을 위해 게시물은 남겨놓도록 하겠습니다.
해결 방안: IKIP17Receiver, IERC721Receiver를 둘다 상속해야하고
각각 다음과 같이 정의하시는 것이 예시입니다.

contract NFTMarket is IKIP17Receiver, IERC721Receiver{
function onKIP17Received(address operator, address from, uint256 tokenId, bytes memory data)public returns(bytes4){
    seller[tokenId]=from;
    return bytes4(keccak256("onKIP17Received(address,address,uint256,bytes"));
}

  function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data) public returns(bytes4){
    seller[tokenId]=from;
    return bytes4(keccak256("onERC721Received(address,address,uint256,bytes"));
}

}

2개의 좋아요

@soccer0874

해결 되어서 다행입니다. 어떻게 해야 되는지도 함께 공유해주셔서 감사해요 :slight_smile: