Under DPOS each of the trusted delegates running nodes receives pay equal to ten percent of the transaction fees in the blocks that they sign.
DPOS allows for a wide variety of delegate compensation plans. The latest iteration allows each delegate to specify their fee rate and thus the shareholders can decide the rate. This allows some delegates to promise to reinvest their income into marketing, development, or other services required by the DAC. For fast growing DACs blockrewards beyond transaction fees can be given to the delegate to facilitate rapid growth.
Additionally, the system will not let more than two percent of the clients vote for a given delegate, and if they try to then the vote automatically gets cast for a delegate who has verifiably filled the role properly as well. This prevents any one delegate from gaining too much influence in the system. The system also automatically fires any delegate who tries to produce multiple blocks. In the event that something major were to occur, individual clients have the ability to go in and vote manually against any given delegate for a fee.
The latest incarnation of DPOS uses approval voting where every delegate has "approval" by some percentage of the shareholders. It is possible for a delegate to have 100% approval, but they would still only get to produce 1 out of 101 blocks. It is possible to have 101 delegates with 100% approval; however, in practice shareholders will not agree on whom will make the best delegate, so the 101 delegates with the highest overall approval are selected.
There is no longer any "voting against" a delegate, instead you just remove your approval.
Delegates can only be fired when someone produces a transaction with crypto-graphic proof that a delegate has signed a false statement (multiple blocks for the same time, or declared a transaction to be included in the chain when it wasn't).
Great work with this, it should get put on our website and the DPOS white paper needs updated. Stan, Brian, Arlen, SOMEBODY.... please see to it that the website gets updated with this info.