I have a library that is making a call to an external address like this
externalAddress.call(callData)
This callData
is calling a function of another contract that is utilizing the msg.sender
value. I seem to be getting some errors, so I am wondering who exactly is the msg.sender
if a call is made from inside of a library.
Roughly the order of transactions is:
My contract calls a library function => library calls external contract function => external contract uses msg.sender to do something.
msg.sender
. In the former, I don't know.