 The one downside that proof of stake has over proof of work that's absolutely true and it doesn't seem to be resolvable in a theoretical sense is this notion of algorithmic weight. Proof of work when someone generates a block they have to actually do some work they have to expend energy to do this and as long as you assume the problem is hard we can actually calculate how much work is required to do. So when you look at a blockchain generated by proof of work and you have multiple versions of that blockchain A through Z you can easily pick out which one you'd consider to be the longest by which one has the most work to it. That's the idea of algorithmic weight. The problem with proof of stake is that there isn't an obvious way to synthesize algorithmic weight in a proof of stake system. So if you assume that the Genesis block is correct and that people stay synchronized with the network with some degree of regularity the system is completely secure from a theoretical standpoint. However in real-life use cases people have their cell phones they leave them on they off people have their laptops they turn them on and off they join the network they leave the network people are much more asynchronous. So given that you do need to have some notion of catching up with the chain and if you're given multiple versions of history you have to decide which one is correct. So what we're trying to do with Ouroboros and the Cardano project is to have theory meet practicality good engineering principles in common sense meet good models.