My understanding is that the world state is stored as a merkle patricia tree. Within each account, the storage contents (including contract information) are stored as a mapping for each account key. However, aren't the contents too large to be stored? Are the contents hashed in some way?
My interpretation is that once a user sends a transaction through a smart contract, the tx is hashed and checked with the nodes for validity (by comparing hashes_. But I'm starting to think this is the wrong idea.