So I am trying to put my head around POS. And I have a question about transaction conflict resolution and whether there is an attack risk here.

If I understand correctly how POS works, if there are two transactions who are fighting for legitimacy, then the people voting will be rewarded by the one who is taken into the blockchain and those who have voted for the losing transaction.

So here is the scenario and I would like to know if I missed something or not. Here is the idea: Let's say I send on different machines but at the same time a transaction to send all my ETH from one account to the other. Because it is spread on the globe, some voters will take transaction x, some transaction y and some another transaction. If you have no info on the other transactions yet, you will validate it and bet on it. So what will happen is that a small portion of the voters will be rewarded with the correct transaction and the others will lose their bet. This could be used as an attack to gain ETH from making the other lose. As a voter attacker, I can easily recognize my transaction (by signing them for example) and make sure I don't participate in the voting of the block containing any of my transactions.

What would happen in that case? How can the system resolve these conflicts without penalizing the voters too much?

My observation is that in the case of PoW, conflict resolution does not cost anything, eventually one block will win and that's the end of it. But In the case of PoS, each conflict resolution will result to a cost for people voting for the wrong block without having anyway of knowing they are doing so.

1 Answer 1


There's three reasons an attack like this wouldn't work (according to the current CASPER system.)

First, there are no longer "contradictory" transactions. All a transaction needs to be valid is that it is properly formatted. Everything else, from nonce-checking to validating that the account has enough ETH to send, will be done by the EVM. So transaction X and transaction Y could both "happen." It's just that one will send all the account's ETH, and the other would fail to do anything.

Second, the right to create a block, by the current system, is deterministic. It's known what validator will produce the block at each height. So to create two contradictory blocks, a validator would have to do it personally. This would result in the validator being punished by losing its deposit.

Third, betting isn't all-or-nothing. A validator gives odds, such as "I believe this block has a 60% chance of being correct." Validators, by the default strategy, increase the odds as they see other validators bet the same way. If there were two contradictory blocks, then wise validators would stop betting on the block that seemed to be losing, and start betting on the block that seemed to be winning. Those who had started betting on the losing block would lose some of their bets, but not nearly as much as the validator that had produced two blocks in the first place.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.