The Solidity docs on Global Variables say this about
sender of the transaction (full call chain)
But that is a bit vague. Can we always be sure that
ts.origin is an externally owned account (EOA)? Are there any edge cases?
Ethereum Stack Exchange is a question and answer site for users of Ethereum, the decentralized application platform and smart contract enabled blockchain. It only takes a minute to sign up.Sign up to join this community
tx.origin is the original sender of the call. In a transaction that results in a chain of calls,
tx.origin is the EOA that initiated the transaction in the first place (contracts cant initiate transactions on their own) and
msg.sender is the last member of the chain (and it can be a contract)