Yes!
> You didn't implement it because it takes considerable effort.
I'd wager it's because he was smart enough to read the man page for rsync and didn't over-engineer a non-solution to a non-problem in his particular use-case.
No, distributed consensus is necessary if you're willing to sacrifice correctness for availability.
>> public safety
> So this distributed consensus thing, Byzantine Fault Tolerance,
Show me a blockchain that actually implements BFT. Longest chain wins is not Byzantine Fault Tolerance.
?!?!
Do you think it's most correct to have only one replica?
> Show me a blockchain that actually implements BFT.
A lot of blockchains implement some variant of PBFT. Including the one I made: https://gitlab.com/chromaway/postchain/
If I makes you feel any better, I see Raft as only BFT during leader election, the rest of the time if the leader is a bad actor then everything is fucked. It’s a game of Secret Hitler.
Remember, the Byzantine Generals problem is what the BFT term is acknowledging, and the problem with the generals was one of sabotage, not just missing messages. It’s only statistically unlikely that longest chain is created in earnest and not via malfeasance. But the bigger a system scales the more frequent counterexamples occur. That’s the lesson of every scalable system. Bad days that used to happen once a quarter now happen a couple times a week.
Edit:
> In a consortium blockchain, typically blocks must be approved (signed) by a majority of consortium members.
Well, well. Adults have finally joined the blockchain community. Maybe there’s hope yet.
Then e.g. in Ethereum there's also a Merkle tree of the entire state as well.
> there's no distributed consensus
Distributed consensus is necessary if you want high availability and replication for your Merkle tree.
If data in your tree is important, you want to replicate it, right? You want to be sure it's stored on multiple nodes.
So this distributed consensus thing, Byzantine Fault Tolerance, it basically gives you a receipt that at least N nodes have this data stored.
You didn't implement it because it takes considerable effort. But if you implemented Merkle tree with high availability, you'd get something very similar to blockchain.