It's the standard way to interact with contracts in the Ethereum ecosystem:
- from outside the blockchain
- for contract-to-contract interaction
Data is encoded according to its type.
The encoding requires a schema to decode
Assumptions
Assumptions for contracts:
- interface functions are strongly typed, known at compilation time, static
- they'll have interface definitions of contracts they call available at compile-time
This is not for contracts with:
- dynamic interface
- only known at run-time