인프런 커뮤니티 질문&답변

안영수님의 프로필 이미지

작성한 질문수

GameFi - 블록체인 Web3 게임 만들기

buyItem

SnowmenSales.sol 파일의 buyItem 함수에 대해 질문이 있습니다.

해결된 질문

23.05.29 15:52 작성

·

344

·

수정됨

0

token 을 transfer 할 때,
address(this) 와 owner() 의 개념이 혼란스럽습니다.

buyer 가 amount 를 지불 할 때 owner() 를 쓴 것은 이해가 됩니다만,

snowmenToken.safeTransferFrom(buyer, owner(), amount);

아래처럼 snowmenGame 에서 token 을 transfer 할 때는 address(this) 를 사용하는 이유는 무엇인가요?

snowmenGame.safeTransferFrom(address(this), buyer, tokenId, quantity, "");

owner() 와 address(this) 가 각각 주소값이 다른데,
snowmenGame.safeTransferFrom 을 할 때, address(this) 대신에 owner() 를 하면 안되는 걸까요?

답변 2

1

안영수님의 프로필 이미지
안영수
질문자

2023. 05. 29. 17:08

감사합니다. 바로 다음 강의에서 관련 내용이 있었네요;

앞의 강의에서 놓친 게 있는지 찾아 보다가 혼란을 느낀 것 같습니다.

1

SEJONG IT EDU님의 프로필 이미지
SEJONG IT EDU
지식공유자

2023. 05. 29. 16:35

안녕하세요 :)

address(this)는 snowmenSales 스마트 컨트랙이 배포된 "주소"입니다. 그래서 address(this)즉 snowmenSales 컨트랙이 소유하고 있는 erc1155 토큰을 buyer계정으로 전송하는 과정이에요.

우리가 snowmenGame 컨트랙에서 민팅할 때 snowmenSales 컨트랙으로 전송했기 때문에 토큰의 소유자가 컨트랙이므로address(this)를 쓰는겁니다.