Concept Flow - Transaction context (tx.origin vs msg.sender)
User initiates transaction
tx.origin = User
Contract A receives call
msg.sender = User (if direct call) OR Contract B (if called by Contract B)
Contract B calls Contract A
msg.sender = Contract B
tx.origin still = User
Contract A uses tx.origin or msg.sender
Action depends on which is used
Shows how tx.origin stays the original user, while msg.sender changes with each call in the call chain.