ABI
Application Binary Interfaces are a set of definitions that map function calls into bytecode to facilitate communication between two programs. Typically, these interfaces reside in a user program and translate its requests for a corresponding low-level system like an operating system or virtual machine. When the bytecode prescribed by the ABI is submitted, the low-level program will execute its precise operations. This is similar to a lower-level version of an API.
In blockchain technology the ABI is typically generated after a developer compiles a smart contract, prior to deploying it on a VM like the Ethereum Virtual Machine (EVM). This set of bytecode allows the client-side application to communicate with the smart contract stored inside the virtual machine in order to retrieve its data and call its functions. This process is essential to the functionality of any dApp that runs on a VM-based blockchain like Ethereum.