What: a standard to detect and publish what interfaces a smart contract implements.
Why: be able to query which version that the smart contract implements.
How interfaces are identified: interface **is defined as the XOR of all function selectors.
How to publish interfaces: interfaceId == type(interface).interfaceId
What: the data passed along with a transaction that allows us to send messages to other entities or interact with smart contracts.
For example, baz(uint32, bool) →calldata: 0xcdcd77c0|4bytes|32bytes
First 4 bytes: function name and its parameter types, also called function selector.
The rest of calldata: parameter values.
https://ethereum.stackexchange.com/questions/52989/what-is-calldata