23.02.19 23:41 작성
·
338
1
callWhoIsMsgSender 와 whoIsMsgSender 함수 두개 모두 호출한건 lec13의 컨트랙 주소인건가요?
답변 1
0
2023. 02. 20. 00:18
안녕하세요 제원님 :)
먼저, lec13_1은 whoIsMsgSender 라는 함수를 갖고 있습니다.
whoIsMsgSender 는 msg.sender를 반환을 합니다.
msg.sender는 트랜잭션을 보낸 주소 입니다,
즉 여기에서는, whoIsMsgSender 를 실행한 (트랜잭션을 보낸) 주소라고 생각하시면 됩니다.
자 그러면,
lec13의 함수 callWhoIsMsgSender는 lec13_1의 함수 whoIsMsgSender 를 실행하고 (트랜잭션을 보내고) 있습니다.
즉 lec13_1의 함수 whoIsMsgSender의 입장에서 생각을 하면, lec13의 함수 callWhoIsMsgSender가 실행한것이기에, whoIsMsgSender의 msg.sender는 lec13주소가 됩니다.
자 그러면, lec13의 함수 callWhoIsMsgSender가 lec13_1의 함수 whoIsMsgSender 를 실행을 시키려면, 누군가 lec13의 함수 callWhoIsMsgSender를 실행해야겠죠?
예를 들어서, Alice가 lec13의 함수 callWhoIsMsgSender 를 실행시켰다고 가정했을때,
lec13의 함수 callWhoIsMsgSender 의 msg.sender는 Alice의 주소가 되겠죠.
자 그러면, 정리해서 한번 볼까요?
Alice ---트랜잭션 보냄---> lec13의 함수 callWhoIsMsgSender ---트랜잭션 보냄---> lec13_1의 함수 whoIsMsgSender
입니다.
즉, lec13의 함수 callWhoIsMsgSender 입장에서는 Alice가 자신을 실행시켰으니, lec13의 함수 callWhoIsMsgSender 의 msg.sender는 Alice 의 주소가 되겠죠.
반면에,
lec13_1의 함수 whoIsMsgSender 는 lec13의 함수 callWhoIsMsgSender 가 자신을 실행 시켰으니, lec13의 함수 callWhoIsMsgSender 의 msg.sender는 lec13의 주소가 되겠죠.
혹시 궁금한점 있으시면, 질문 남겨주세요 :))
감사합니다 :)