If the bytecode of a contract exceeds 24KB then it is rejected by the Ethereum network.
I wanted one storage space for all state variables
one address from which I could design and implement all functions without bytecode size limitation.
I wanted all functions to read and write to state variables directly, easily and in the same way.
It would also be nice to have optional, seemless upgrade functionality
to be able to replace functions, remove them and add new functionality without needing to redeploy everything.
To be able to extend the smart contract system in a consistent, systematic way after it is deployed.
facet ?
Know these things to understand diamonds: