The Byzantine Generals Problem (1982) [pdf]
lamport.azurewebsites.net
lamport.azurewebsites.net
However, from the jail he was able to secretly contact his followers to arrange to escape, meet his followers, and attack the king's palace at night. So the night before his scheduled execution, the general managed to escape from prison. He fled to a ziggurat several kilometers away, where his followers would meet him. However, the ziggurat was one of several in the area, and he wasn't sure if his cohorts would find the right ziggurat. By this time it was twilight, so he lit a small fire and sent smoke signals to indicate in which structure he was hiding.
However, the king's loyal soldiers saw the smoke coming from the ziggurat, and came to arrest him before he could meet his followers. He was executed later that day.
The moral of the story? WARNING: The searching general has determined that smoking ziggurats can be extremely hazardous to your stealth.
They are as scrutable as Solomonic proverbs, and just as bloodthirsty, but at the end of the day I feel like I read something that maybe made me a better programmer.
If you are the bad guy you sort all candidates according to their current trust, as defined by being part of the trusted group in previous voting rounds. And then you put your marker into the most trusted bucket that isn't yours. Thereby nobody should get ahead.
However, in recent ICO craze, a lot of algorithms (with the exception of Bitcoin, and maybe others I didn't read) don't go very long way other than "we will broadcast to everyone". These under-specified message passing scheme can be troublesome, especially for these algorithms without Proof-of-work.
1.Don't have an algorithm concept in the paper 2.Don't know what an algorithm is 3.Have a concept, don't know what it means' 4.Don't know what the Byzantine Generals Problem is 5.Don't know what blockchain is
Therefore I wonder if there is another area of science, one that is not as optimistic, and for instance follows these system expectations:
- if you send a message, you cannot expect anybody to follow its content
- you cannot trust any messenger to begin with (but might gain trust over time)
- just because a messenger was there some time ago, doesn't mean the messenger is still there
- just because a message is signed by a messenger it doesn't necessarily already mean the message is from the messenger
- the messages contents might be a false interpretation of the system's state, or might not represent the current state of affairs, things might change between send and receive of a message
- errors are the architectural default case, success is a lucky coincidence (that of course must be exploited maximally)
- side note: leadership election might already need an amount of successful cooperation that is never achieved (i.e. multiple messages need to be exchanged and trusted successfully)
In some regards I feel TCP/IP is already thinking in the right direction. That's how the internet became so successful in the beginning. But it has the big fault (which also was a key factor in its growth) that it simply trusts stuff via default. Mistrust is an add-on.
So if anybody knows about people researching distributed system from that pessimistic but serenely-accepting perspective I would be really interested.
In my opinion,that is what routing protocols should look like. Or at least they should adopt byzantine fault tolerance and modern crypto to authenticate route updates.