Two days ago, Vitalik Buterin weighed-in on the EOS Github page about an issue regarding the loss of consensus for an algorithm. EOS is very much so a competitor of Ethereum, with a big community behind it and some extremely impressive technology. Therefore, I am sure that many people were surprised to see Vitalik's comment about the issue!
The message behind Vitalik's comment is important. Even though the two projects are competitors, the general mindset of thought leaders in this space is (or should be if it is not) to help grow and develop the blockchain industry as a whole. This is a true show of the power of open source platforms like Github, and why they are so important.
I will paste the comment below and leave a link to the Github page, for those interested.
This does not seem to actually be safe. Consider a case with four validators, so we are allowed one byzantine. Suppose before time T the commonly agreed head is Z; then, at times (T, T+1, T+2, T+3), validators (A, B, C, D) make blocks extending a chain from Z. A now has votes from B, C and D and so is finalized. Now, before timeslot T+3 ends, D also (byzantine-ly) makes a block (call it D') on top of Z. Then, at times (T+4 ... T+11), (A, B, C, D, A, B, C, D) make blocks on top of D' (this is ok because each validator is making a block at a height one higher than the block they previously made). The second A block in this chain has three votes and so is also finalized. Hence, two conflicting blocks got finalized.
In general, it's not possible to achieve BFT safety on a block without at least two messages from most nodes that directly or indirectly reference that block; this algo tries to do it in one round and it's likely impossible to actually do that safely. If you want an intuitive and good way of doing this, I recommend just using the algorithm in our Casper FFG paper: https://arxiv.org/abs/1710.09437