- https://remix.ethereum.org/
- https://book.getfoundry.sh/
- https://www.youtube.com/watch?v=s9MVkHKV2Vw
- https://www.openzeppelin.com/contracts
- https://docs.openzeppelin.com/contracts/4.x/erc721
- https://docs.openzeppelin.com/contracts/4.x/erc1155
- garabage collection: https://ethereum.stackexchange.com/questions/15337/can-we-get-all-elements-stored-in-a-mapping-in-the-contract
- mappings https://docs.soliditylang.org/en/v0.8.19/types.html#mapping-types
- https://stackoverflow.com/questions/48877910/how-can-i-return-an-array-of-struct-in-solidity
- https://stackoverflow.com/questions/48877910/how-can-i-return-an-array-of-struct-in-solidity
- https://medium.com/loom-network/ethereum-solidity-memory-vs-storage-how-to-initialize-an-array-inside-a-struct-184baf6aa2eb
- https://medium.com/coinmonks/ethereum-solidity-memory-vs-storage-which-to-use-in-local-functions-72b593c3703a#:~:text=The%20first%20is%20%E2%80%9Cstorage%E2%80%9D%2C,and%20is%20cheaper%20to%20use.
- https://www.youtube.com/watch?v=jA_ykc6woig