While familiarizing myself with Ethereum, I found multiple security alerts referring to consensus issues, most notable those that arose because the geth and the parity client handled certain edge cases differently. However, I also noted that parity nodes do not mine transaction them-self. So when a parity client for example accepts an invalid transaction, why would that cause a fork of the blockchain since the nodes do not really mine themselves (But rather for example ethminer). Or is it that ethminer does not validate the blocks, but the parity client does?
1 Answer
While you're correct that ethminer or whichever miner you choose does the mining itself, not the client, the block and block header that the mining is done on is created by the client, usually either Parity or Geth. This means that, if there is a consensus issue, blocks mined by one of these wont be accepted by the other.
Aside from that, consensus issues can still arise if only one of the clients is constructing blocks. If Parity and Geth process a transaction differently, then if Geth mines the block, Parity will see that block as invalid since the state root will be different. This is still a consensus issue.
-
Thanks! So say the Geth node mines a block, then parity will reject this block upon syncing with the network (in case of a consensus issue)? Commented Dec 4, 2018 at 15:10
-
Correct. When Parity receives the new block, it first verifies the mining work, then it runs all the transactions in the block on the state the Parity node has. Then it'll calculate the root hashes in the block header. If the root hashes don't match, then the block is thrown out due to a consensus bug. Commented Dec 4, 2018 at 15:21