I want to understand if we want to integrate the proof of stake consensus for our chain. So which consensus we should go for NPOS(Nominated proof of stake) or DPOS (Delegated proof of stake)?
How we should choose one from them?
Substrate and Polkadot Stack Exchange is a question and answer site for developers building blockchains with the Substrate SDK. It only takes a minute to sign up.
Sign up to join this communityAs explained in a recent talk at Polkadot Decoded, NPoS performs better in terms of economic security (how much stake is behind the active validator set), capital efficiency (the ratio between overall locked stake by validators and nominations and what is actually used to back the active validator set) and a few other metrics (e.g. lower stake variance in the active validator set). In general, NPoS is better at allocating the locked funds into being active and backing the validators who build and verify blocks, thus the economic security of the network is better under NPoS.
The reason for this is how the nominated stake distribution is performed when electing the active validator set. In NPoS, the stake distribution is performed by the election algorithm itself, whereas in DPoS, the stake distribution is performed explicitly by the nominators.
The drawback of NPoS is that the one of the steps of the election consists of optimising a NP-complex problem in a verifiable way. The easy way is to run the election on-chain, but (at least in the context of Polkadot), running such election on-chain is infeasible due to resource constraints. In Polkadot, the election runs off-chain and the results are verified on-chain. So the major drawback that follows from this is the engineering complexity involved in using NPoS. This may depend on the blockchain environment, of course. Note, however, that this complexity is transparent to the users and it only affects the development and dev maintenance of the staking system.
So to answer your question directly, it really depends on what you are looking for. I'd say you should consider using NPoS and weigh in the pros and cons described. These are highly dependent on the blockchain env you are considering.
Besides the Decoded talk that I already mentioned, we've recently published a blog post that goes into more details and will help answering your question. There is another blog post (to be published soon) that will focus on the technical details more, it also shows the experiment results of NPoS vs DPoS and why those results make sense.