Starting with this question, I understand that validators can’t vote for two blocks at the same height. But, could the validator alternate its votes between the two chains? For example, when the height is even, it votes in fork A, when the height is odd, it votes for B. The the validator would be "active" in both chains.
Obviously, validators can’t be active in two chains because forks would proliferate! How is this solved?
Here is a little more context. As far as I understand there are two opposing problems here:
- You need to give validators the ability to change chains. If I voted on a chain that looked correct, but eventually got abandoned, I should be able to correct my mistake and come back to the real chain (without being slashed or divested).
- You need to prevent validators from mining both chains to prevent forks from proliferating.
So how does Casper solve that conundrum?