I might sound arrogant, but I'm afraid that the lack of understanding how a coin works (especially the PoS coins) among users, is what causing the most problems.
First of all, users that rush into calling someone "a thief" puts them on the same level as exchange admins/owners who calls project "shitty". The solution I described above was for the average user's wallet and not the wallet that belongs to an exchange. I believe that attacking someone who is trying to help you, just because you're in a "bad mood" is not good for anybody.
Anyway, on with the rest of this post. First of all, I apologize from those who already know what I'm about to write. This is for those who do not (and really need to understand)...
When we move coins from our wallets to someone else, our wallet creates a "transaction". That transaction has the info needed for all wallets, so they can verify that we have that amount of coins and we are in position of sending them somewhere else, according to the coin's rules (for example, there has been enough confirmations for that transaction).
As soon as it creates this transaction, it announces it to all the nodes it is connected with. Those nodes will check the transaction against the same rules and if valid, they will put it in memory and announce it to the other nodes that are connected with. The same step goes over and over till this transaction is propagated to the entire network, or till a miner's wallet who already accepted this transaction, discovered a new block, included this transaction in it and his transaction of the block discovery has been accepted and propagated to the network.
In other words, transactions are the vehicle of coin transfers and blocks are vehicles (verifications) of the transactions.
Now, you might think that since the transaction made it into a block, everything is fine, the transaction has been made and the coins were transferred.
Well, that's not the case. You see, when a new block is discovered (for example height 15000) from node
a, other nodes must also verify that this block is good and accept it. Even if they do, there is a big chance that another block has been discovered(same height 15000) from node
b, but according to the coin's rules this block has a better score (or better receives the "bestchain" reward
) and gets preference over the one that node
a discovered.
This could happen after many blocks being discovered based on node
a's blockhash.
What does this mean? It means that we, that created the transaction of moving coins and saw that our transaction has been verified (got X confirmations to make it valid), suddenly we find our transaction being invalidated. That means that our wallet should mark the chain from node
a's block as invalid and use the preferred chain as the current.
Now, this is what happens when we are dealing with a pure PoW (proof of work) blocks coin.
With PoS blocks (proof of stake), everybody's wallet is a miner. If we have many coins that are ready to enter the "stake" status, then our wallet mines for PoS blocks (and finds them) and those blocks could be many (I mean too many, like 20 or 30 in a row).
If this happens when we moved our coins, that means that with our PoS blocks (according to the wallet) we confirmed the our own transaction and since we had more than X blocks since then, we verified it as valid.
But if our PoS blocks are not accepted by the rest of the nodes, that means that our chain becomes invalid. If our wallet is stubborn enough (many PoS blocks mined) will keep broadcasting them till they get accepted. But because they are no longer valid, the other nodes bans our wallet and disconnects us. Why is that? Because our wallet might be honest and just trying to broadcast something that it think it's correct, somebody could have compiled a "modified" wallet code, that tries to spoof real blocks and "inject" them to the blockchain in order to get more coins themselves.
I hope that this helps users and exchange owners understand why things are the way they are and why we need to understand them, because either we like it or not, when we decided to download a wallet and manage coins in it, we also decided that we're part of this and we need to obey the rules that makes it function.
I realize that this is too much to read and I maybe not explained them very clear and simple, but that's the best I can do currently and I welcome anyone with questions to make them.