One thing I don't understand about DPOS is how it handles competing chains. In POW it is prohibitively expensive to create competing blockchain of equal length, but with DPOS it can be done almost without a cost.
I don't know internals, but isn't it possible to create alternative history from genesis block which pretty much includes all transactions made on main chain with few modifications:
- kicking out original delegates in very beginning of chain and replace them with ones under my control
- replace transaction registering some well known account name (exchange?) with my own
Generally create alternative history with as few changes as possible and carry it forward to latest state.
Now if new node joins network and connect to my server I can feed it with fake chain. It has no way of telling that my chain is not original. It is exactly same, even delegate names can be the same. User can also see his balance as it is on main chain.
Now when this user tries to send money to exchange which account I took over he is actually sending money to me?
Does it make any sense?