A DApp developer does not need to run the entire EOS blockchain, if so why would anyone want to be a witness node(full node?) since they are not part of the DPoS consensus. Aren't all transactions performed by Block Producers, does this mean that the only thing a node does is send and receive actions?
The philosophy behind DPoS is that, even though only a small set of nodes (in case of EOS, 21 Active BPs) are elected to produce blocks, every full node keeps an entire copy of block data & state data.
- Every full node will validate the incoming blocks, checking signatures for transactions, checking contract execution results, checking if the producer of the incoming block is the elected BP, etc. --- a lot of things that prevent the chain to corrupt.
- Every full node could provide READ access to the chain data. As every node has a complete copy, every node could response to read access like getTableRows directly. That's like a whole decentralized CDN.
- Of course broadcasting transactions for users. That's like WRITE access to the chain data.