Supermajority attestations and block finalization, as well as withdrawal queues, prevent long-range attacks. To attempt to reorg a finalized block (blocks are generally finalized after 6 minutes) you have to commit to losing 1/3 of total staked ether, currently several billion dollars.
The only participants who can equivocate (vote for two blocks at the same height) are active validators so there is significant economic value at risk to pursue such an attack.
Not challenging the solution, just genuinely curious in how PoS works.
There is some element of bootstrapping who the original validator set was, known as "weak subjectivity". There's a great post from Vitalik exploring this further at https://blog.ethereum.org/2014/11/25/proof-stake-learned-lov...
Vitalik has a pretty good post about it: https://blog.ethereum.org/2014/11/25/proof-stake-learned-lov...
Essentially, the solution is to ignore forks whose lengths exceed the exit delay, since such forks can be created without a slashing risk.
The main issue is that new nodes need to start with a (somewhat recent) trusted checkpoint. This does open up some attack surface that doesn't exist in PoW, though in my view it's not much of an issue. If I want to be extra careful, I can always ask several sources for a checkpoint and make sure they match.
This is made extremely hard in Bitcoin through proof-of-work. To rewrite history you must re-do all of the work, which means you burn enough real-world energy to work faster than the entire rest of the network (aka majority hash rate attack). It's allowed, but expensive.
In PoS, there was never any work, so you can just rewrite history.
Every time the subject of Ethereum's move to PoS comes up, it seems this issue is there. The solutions mutate into a head-spinning kaleidoscope of different guises, all rabbit holes in their own maddening way and suspicious on that basis alone.
That this lengthy piece doesn't even mention long range attacks speaks volumes.