Imagine a new real bitcoin competitor suddenly emerges.
One of the problems it will encounter is attacks. I previously wrote about some ideas for minimizing DOS attacks. Another category of attacks is miner attacks. Blockchain technology is cleverly designed because it is very difficult to mine powerfully AGAINST anything. You can almost only mine in support of something. An exception occurs if the destructive guys have very large amounts of mining power compared to the constructive guys. The destructive miners can insist on mining only empty blocks which will prevent transactions from being confirmed and thereby make the network unattractive. I don’t know what ratio of constructive miners to destructive miners is necessary to overcome that kind of sabotage well enough but I have an idea to make it more expensive to attack.
In a network like bitcoin the price an attacking miner pays for participating in an attack is
- (the lost transaction fees of the transactions he could have included in the mined blocks) minus
- (the extra block rewards he receives due to the lower orphaning rates he gets because his blocks are propagated very fast because they are smaller/empty)
My idea is to make ”2” smaller. I think it can be accomplished by setting a MINIMUM block size in the bitcoin competitor. Imagine fx the current bitcoin network with a MINIMUM block size of 1 MB (the limit could be adaptive).
What would a constructive miner do if a minimum block size limit existed?
- Whenever the mempool transactions he would like to put into a new block is bigger than 1 MB the rules does not affect him. He mines as usual. This would be the normal blocks for a constructive miner.
- Whenever the mempool transactions he would like to put in a new block is smaller than 1 MB he will either try to include additional transactions with a smaller transaction fee than he would normally accept or he would include some ”fill” transaction like pay-to-myself transactions to reach the 1 MB minimum block size limit. These kind of blocks with ”fill” transactions will be rare or the attacking miners would have already lost because if the ordinary transactions in mempools go below 1 MB it obviously creates a minimum of confirmation delay for users.
What would a destructive miner do if a minimum block size limit existed?
The attacker don’t want to help the network so he will not include ordinary user transactions in any blocks but since there is a minimum block size limit he will have to make some attacker-pays-attacker transactions in every block he tries to solve. When the block is solved it will need to be propagated fast like any other block to reduce orphaning risk. Since the block is 1 MB in size it will not be as fast as it would if the block was empty.
In contrast to constructive miners the attackers cannot make use of techniques like xthin. If the attacker tries to use xthin by sending out his attacker-pays-attacker transactions before he has found a block he will constantly be paying for his spam. His transactions might be included in another miner's block and the attacking miner will have lost the transaction fees he paid. So Xthin works for the constructive miners but not for the the destructive miners!
I hope some of you constructive people who read this might find some of it useful.