Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: alani123 on February 06, 2020, 01:42:00 PM



Title: Selfish mining and network propagation neutrality
Post by: alani123 on February 06, 2020, 01:42:00 PM
I'm reading on "selfish mining" recently, and keep seeing a claim that attacks on the node network could increase the profitability of selfish miners.

In one of the most cited papers for selfish mining, authors state that with a Sybil attack, selfish miners could increase their chances of having their block as the one other miners will end up mining on top of by creating fake nodes.

However, several bitcoin supporters including the respected miner developer ckolivas, believe that this isn't something that could apply in a real world scenario so easily. To quote CK himself:

Why is it impossible? All big pools are well connected but one of them might be just slightly better connected then the others.
Moreover selfish mining even increases your relative share of blocks if you have a poor connectivity to the network but a minig power of about 33%.
No such thing. Once the data has left the miner it propagates across the internet at the same rate these days. That's like saying you will shoot a missile after someone else shoots one when you see it and it will arrive first, even though they both travel at the same rate. By the time you've seen it it has already travelled some distance, possibly even all the distance to its targets. It takes a maximum of 200ms to get to anywhere on the internet these days except during network outages and connectivity failures. There is latency involved between one bitcoin node receiving a block and propagating it to another bitcoin node, but no miner is only connected to just one node.

The idea of selfish mining isn't new, it was first discussed in this forum as early as 2010 (https://bitcointalk.org/index.php?topic=2227.msg30083#msg30083). Makes me wonder if anything has changed since. Are we closer to drawing a conclusion now? And most importantly, because much of all this talk is plain theorization, have the effects of any alleged selfish mining attack that took place in the blockchain been documented?


Title: Re: Selfish mining and network propagation neutrality
Post by: jackg on February 06, 2020, 03:35:14 PM
It'd certainly be difficult to achieve, and I imagine bitmain and slush and a few others probabky connect to themselves via vpns or aws instances in other countries so it'd make it very hard to. Omit someone's block.

Block explorers also seem pretty well connected to the blockchain so you'd have to incentivise them to ignore the block too. And then there's privately owned nodes that will probably still accept the blocks and other miners would still accept each others blocks so short of a 51% hashpower attack, I don't think there's a chance for this to happen.

Ck is right about it taking 200ms as a max to broadcast data. My old laptop was still getting ping speeds of 8ms to the nearest node and 160 to the farthest (when connected to 8).


Title: Re: Selfish mining and network propagation neutrality
Post by: PrimeNumber7 on February 06, 2020, 03:42:39 PM
A selfish mining attack is when a miner (or a mining pool) finds a block but does not immediately broadcast the block, but will start trying to find a new block on top of their secret block while the rest of the network is trying to find a block on top of a block that is not at the top of the blockchain (not containing the most total work). If the miner finds a second block before the rest of the network finds two blocks, the miner can release both blocks. This makes the rest of the network to have been working in vein.

For this attack to be successful, the miner needs to have a high percentage of the network hashrate. If a pool were to do this, most of the miners would probably leave the pool. There are economic incentives to not try to execute this kind of attack because doing so would reduce the value of the mining equipment.

To address your question, pools run multiple nodes, some of which are not publicly known to be associated with the pool. This means that it is not really realistic to expect a pool to be the subject of a Sybil attack.


Title: Re: Selfish mining and network propagation neutrality
Post by: Wind_FURY on February 07, 2020, 08:11:30 AM
Doesn't running multiple nodes, by miners, increase inefficiency in broadcasting? Plus do miners run nodes? I believe they only connect to mining-pools' nodes, which are more incentivized to run a well connected node to broadcast their block as fast as possible.


Title: Re: Selfish mining and network propagation neutrality
Post by: ranochigo on February 08, 2020, 10:55:18 AM
Doesn't running multiple nodes, by miners, increase inefficiency in broadcasting? Plus do miners run nodes? I believe they only connect to mining-pools' nodes, which are more incentivized to run a well connected node to broadcast their block as fast as possible.
Running multiple nodes does ensure that the pool is less susceptible to sybil attack. I'm sure miners run some sort of modified client to ensure that their pools are the most efficient possible; the reference client is too resource heavy.

Since the SPV mining fork back in 2015, its widely established that several pools connect to each other's stratum mining server directly. They would be listening directly to their stratum mining channel so that they would know if there's a new block solved ASAP. I don't think selfish mining by the bigger pools would be possible since they would have to send the information of the new block to their miner when it's solved immediately.