Author

Topic: Proof-of-stake cryptocurrencies comparison and vulnerabilities (Read 2012 times)

legendary
Activity: 1708
Merit: 1011
Well, I'm not a programmer, but I have been thinking about this one for a while.  I see a couple of problems with PoS that I have not seen addressed.  At all, not even poorly.  The big one is that PoS functionally creates "supernodes" in the major stakers willing to break their own anonimity to "forge" new blocks.  Bitcoin has no supernodes, because no node trusts another more than itself.  This is not possible with PoS, since the proof of stake itself is functionally used as evidence of trustworthiness.  The problem with this is that PoS also creates the condition that such a "supernode" can turn malicious, and cause great harm to the system.  Supporters would be quick to point out that anyone with a large stake would cause themselves great harm in doing so.  Well, yes, and that is my point.  The building of such trust in 'stakers' creates a perverse incentive for those same stakers to be compromised by a malicious third party, because the trust they have built up with the system becomes a method of causing harm to both the PoS currency system and the targeted staker in particular.  Or, alternatively, an incentive for a malicious hacker to figure out how to 'spoof' being a major staker. 

While hybrid PoW/PoS systems are not as subject to this effect as a pure PoS currency, hybrid systems still functionally promote the 'supernode' issue by creating nodes with a disproportionate ability to mine new blocks.  PoW doesn't have this problem, because no particular node can 'build' or 'develop' any special trust that lasts longer than the target interval.  Furthermore, hybrid systems are particularly complex, and may have other vectors of attack due to said complexity.  PoW is expensive from an energy perspective, as compared to PoS, but it's realtively simple and it works.
newbie
Activity: 8
Merit: 0
Topic says it all.
I am mostly interested in peercoin, timekoin, novacoin and yacoin.
Jump to: