Solidity Types Layout Cheat Sheet

One unusual thing about programming in Solidity to target the EVM, as opposed to other programming languages targeting any other platform, is that a type doesn’t only dictate the data’s memory layout; it also dictates how the data is encoded in calldata and how it is stored in storage. Typically, persistence format is done via custom (de)serialization, and on-the-wire formats are handled by IDLs.