인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

제원님의 프로필 이미지
제원

작성한 질문수

ERC20 깨부수기 (+ truffle, 프론트엔드)

call

솔리디티

작성

·

350

1

callWhoIsMsgSender 와 whoIsMsgSender 함수 두개 모두 호출한건 lec13의 컨트랙 주소인건가요?

답변 1

0

D_One님의 프로필 이미지
D_One
지식공유자

안녕하세요 제원님 :)

먼저, lec13_1whoIsMsgSender 라는 함수를 갖고 있습니다.

whoIsMsgSender msg.sender를 반환을 합니다.

msg.sender는 트랜잭션을 보낸 주소 입니다,

즉 여기에서는, whoIsMsgSender 를 실행한 (트랜잭션을 보낸) 주소라고 생각하시면 됩니다.

 

자 그러면,

lec13의 함수 callWhoIsMsgSenderlec13_1의 함수 whoIsMsgSender 를 실행하고 (트랜잭션을 보내고) 있습니다.

lec13_1의 함수 whoIsMsgSender의 입장에서 생각을 하면, lec13의 함수 callWhoIsMsgSender가 실행한것이기에, whoIsMsgSender의 msg.sender는 lec13주소가 됩니다.

자 그러면, lec13의 함수 callWhoIsMsgSenderlec13_1의 함수 whoIsMsgSender 를 실행을 시키려면, 누군가 lec13의 함수 callWhoIsMsgSender를 실행해야겠죠?

예를 들어서, Alicelec13의 함수 callWhoIsMsgSender 를 실행시켰다고 가정했을때,

lec13의 함수 callWhoIsMsgSender msg.senderAlice의 주소가 되겠죠.

 

자 그러면, 정리해서 한번 볼까요?

Alice ---트랜잭션 보냄---> lec13의 함수 callWhoIsMsgSender ---트랜잭션 보냄---> lec13_1의 함수 whoIsMsgSender

입니다.

즉, lec13의 함수 callWhoIsMsgSender 입장에서는 Alice가 자신을 실행시켰으니, lec13의 함수 callWhoIsMsgSender msg.senderAlice 의 주소가 되겠죠.

반면에,

lec13_1의 함수 whoIsMsgSender lec13의 함수 callWhoIsMsgSender 가 자신을 실행 시켰으니, lec13의 함수 callWhoIsMsgSender msg.senderlec13의 주소가 되겠죠.

 

혹시 궁금한점 있으시면, 질문 남겨주세요 :))

감사합니다 :)

 

 

 

 

제원님의 프로필 이미지
제원

작성한 질문수

질문하기