KIP-17 approve 함수

안녕하세요. NFT를 거래할 수 있는 거래소를 제작중입니다.
다만 이해가 되지 않는 부분이있어서 글을 남기게 됩니다.

function ERCApprove(address _CA,address _addr) external {
ERC721(_CA).setApprovalForAll(_addr, true);
}

function approve(address _CA,address _addr) external {
ERC721(_CA).approve(_addr, 1);
}

두 함수다 caller is not owner라는 곳에서 막히게 됩니다. 이 오류가 왜 발생했는지에 대해서는
제가 call 함수를 사용했기 때문에 발생하는 문제라는 것은 인지하고 있습니다.
그렇다면 이 문제를 어떻게 해결할 수 있을지에 대해서는 생각이 잘 나지않습니다.
결국 A라는 컨트랙트에서 B컨트랙트의 approve 류의 함수를 호출하게되면 owner = A의 conract주소가 되는데
이부분을 해결 할 수 있는 방법이 있을까요? 또는 예시 코드가 있을까요?

@Ovadix

안녕하세요.
실행하는 컨트랙트의 주소를 Owner 로 등록해주시면 쉽게 해결될 거 같습니다 :slight_smile:

그게 아니라면 ApproveForAll 과 같은 메서드로 해당 컨트랙트에게 모든 토큰에 대한 전송권한을 주는 방법이 있을 거 같습니다.

디테일하게 어떤 기획인지 몰라 답변이 제한적일 수밖에 없는 점 양해바랍니다.

1 Like