The delegate election process:
If delegates get elected and then disappear all within the period allocated for consensus, doesn't that represent a DOS if this happens to a majority?
Yes that can happen, but that is just the same as (n/m)-1 failures.
It would be highly unlikely though, akin to all a bunch of Bitcoins miners (a couple of pools?) going offline, transactions then take much longer to be confirmed.
I have considered it though, perhaps for example some attacker has a rare occurrence majority of his nodes in the delegate set (leaving aside the difficulty of these attacks ), notices and decides "Hey, lets screw this up!" and turns off all his nodes.
That then results in greater than (n/m)-1 failures so those transactions will fail...there are 2 mechanisms to defend against this activity.
First of all, if there is a period where transactions are not obtaining a majority consensus, the delegate selection mechanism switches for a short period of time. Instead of delegates being the most recently endorsed, it switches to also include the delegates with the heaviest weight.
Delegates with the heaviest weights will have a high likelihood of being constantly online (they have to be to have the heaviest weight)...this
should be sufficient to get things moving again quickly, then the delegate selection can switch back the more "random" mode of operation.
Secondly, it is quite trivial to detect nodes that are in the delegate set but are not voting on transactions as expected. These nodes can be omitted from future delegate sets for a period of time.
Finally I did consider having a "end of the world" list of super delegates that the network can refer to in the most dire of circumstances, but I'm not sure if I like that idea, or if it will be required as the likelihood of all delegates, both recent and weighted, being offline is slim to none IMO. Also, the larger the network grows, the more unlikely this becomes.