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

Transaction calldata

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.

Reference

https://ethereum.stackexchange.com/questions/52989/what-is-calldata