Yes, @Regna437, there are a lot of differences between NEOs Proof Of Stake and Cardano Proof of Stake. The biggest difference is the algorithm they respectively use.
Cardano uses Ouroboros (will be using Ouroboros Praos and Hydra)
Ouroboros looks at the distribution of the tokens in the ecosystem and from a source of random numbers, it divides the world into epochs. Each epoch is then divided into slots. Each epoch lasts for a very short of time ~20 seconds.
Each slot then gets its own slot leader, who is randomly chosen.
The Slot leader act like miners do in a POW protocol in the sense that they are the ones who choose the blocks that get added to the blockchain. They can, however, add only one block.
If a slot leader somehow misses their chance and doesn’t choose the block, they miss their opportunity and will have to wait till they become slot leaders again. It is ok for one or more slots to remain empty (without generated blocks), but the majority of the blocks (at least 50% + 1) must be generated during an epoch.
As you can see, the slot leaders have a very important role to play in the ecosystem. To be considered for qualification, one must own 2% stake in Cardano. These stakeholders are called electors and they are the ones who elect the slot leaders for the next epoch during the current epoch. The more stake the stakeholder has in the system, the more chance they get to be elected as slot leaders.
Now, since the slot leaders have a lot of power, special care must be taken to make the election as unbiased as possible. There must be some amount of randomness involved. This is why a multiparty computation (MPC) is done to achieve some form of randomness.
In this MPC approach, each elector performs a random action called “coin tossing” and after that shares their results with other electors. Though the results are randomly generated by each elector, they eventually agree on the same final value.
The election is divided into three phases:
Let’s explore what happens within each phase.
Firstly, an elector generates a secret random value and then forms a “commitment”. The commitment is a message that contains encrypted shares (keep this in mind for the recovery phase) and a proof of secret.
After that, an elector signs the commitment with their private key and specifies the epoch number and attaches their public key.
Doing this solves two purposes:
Everybody can check who created this commitment (since it has the public key attached to it).
They can check which epoch it belongs to.
After this is done, the elector sends their commitments to other electors. Eventually, each elector collects the other elector’s commitments (The commitments get put into the block and become part of the blockchain).
Think of commitments like a locked box that has a secret in it and there is a special value that unlocks the box. This special value is called an “opening”. This is what this phase is all about, the electors send their “opening”. These openings are also put into the block and then becomes part of the blockchain.
Finally, we have the recovery phase.
By this time, an elector has both commitments and openings. However, some electors may act maliciously and publish their commitment without the opening. Basically, give the locked box without the passphrase.
In order to circumnavigate this, the honest electors can post all the encrypted shares (as mentioned in commitment phase) and simply reconstruct the secrets. This way, even if certain electors act in a malicious manner, the system will still work. This is how Ouroboros gets its Byzantine Fault Tolerance.
Eventually, an elector verifies that the commitments and openings match and when that happens, the secrets from the commitments are extracted which forms a seed. The seed is a randomly generated byte string.
All the electors now possess this seed.
So, let’s pause for a second and check where we are right now.
We are electing slot leaders for the next epoch. In order to make sure that the election is as unbiased as possible we needed some sort of randomness. The “seed” provides us with this randomness.
Now it is time to select the Slot Leaders. To do that we will use the Follow the Satoshi (FTS) algorithm.
The FTS Algorithm
The name of the algorithm comes from Satoshi Nakamoto, the unknown creator of Bitcoin.
The FTS basically selects a random coin from the stake. Whoever owns that coin becomes the slot leader. It is that straightforward!
This is why, the more stake one has in the system, the more chances they have of winning this lottery.
The slot leaders will also have the power to not only choose the blocks in the main blockchain but to choose blocks in other blockchains inside the Cardano ecosystem as well.
For a more in depth look you should read @LLFourn his Medium article: Unraveling the ouroboros, it was very wel written and helped me understand the algorithm at a higher level. You can also check out the Ouroboros whitepaper and the Ouroboros Praos whitepaper,
NEO uses A Byzantine Fault Tolerance Algorithm for Blockchain
The algorithm works as follows:
A Consensus Node broadcasts a transaction to the entire network with the sender’s signatures.
[A Consensus Node receives a transaction and broadcasts it to the system.]
Consensus Nodes log transaction data into local memory.
The first view v of the consensus activity is initialized.
The Speaker is identified. Wait t seconds.
[A Speaker has been identified and the view has been set.]
The Speaker broadcasts the proposal : <prepareRequest, h, k, p, bloc, [block]sigp>
[The Speaker mints a block proposal for review by the Delegates.]
The Delegates receive the proposal and validate:
Is the data format consistent with the system rules?
Is the transaction already on the blockchain?
Are the contract scripts correctly executed?
Does the transaction only contain a single spend?(i.e. does the transaction avoid a double spend scenario?)
If Validated Proposal Broadcast: <prepareResponse, h, k, i, [block]sigi>
If Invalidated Proposal Broadcast: <ChangeView, h,k,i,k+1>
[The Delegates review the block proposal and respond.]
After receiving s number of ‘prepareResponse’ broadcasts, a Delegate reaches a consensus and publishes a block.
The Delegates sign the block.
[A consensus is reached and the approving Delegates sign the block, binding it to the chain.]
When a Consensus Node receives a full block, current view data is purged, and a new round of consensus begins.
k = 0
If after (timeout ) seconds on the same view without consensus:
Consensus Node broadcasts:
Once a Consensus Node receives at least s number of broadcasts denoting the same change of view, it increments the view v, triggering a new round of consensus.
For a more in depth look you should look at the consencus whitepaper on the NEO website.
Another difference is the power you get when staking, with NEO you will stake and receive rewards, but you do not need to join a staking pool. All you need is a wallet compatible with staking. You will not be able to vote for protocol changes with your stake AFAIK.
Cardano does allow for staking with a pool and in a sense you delegate your voting power to that pool if a protocol change is suggested.
Dash is not a Proof of Stake coin but Proof of Service. The masternodes are actually the tools which will give you the revenue for the service they provide.
There are plenty more differences between NEO and Cardano, but that would be off-topic considering your question was on Proof of Stake differences between these two.