I have recently learned about some concepts of mimblewimble. I heard that in a mimblewimble implementation, the blockchain history is not kept. Does that mean that all blocks that include the hashes (which represent the proof of work) are being thrown away, too? How does a mimblewimble implementation protect the chain state if all the proof of actual work is being thrown away? Anybody could just replace the state with something else. What am I missing?
The proof of work is definitely not thrown away. All block headers need to be kept to prove the most work chain of headers. What is thrown away is what you would typically think as the content of the block: inputs and outputs.
This works by keeping a current state tracking transaction outputs and various other bits of data and committing to all of that in some Merkle-like tree. The root of the current tree is included in each block header. So when you start a new node and download only the current state, without needing all the transaction history, you can validate that the state you've been given is anchored in the block header chain, which gives you the proof of work.