35

A mining pool with a significant percentage of the hash rate could allow double spend attacks by the pool manager. There are a number of pools that approach this level. However, most people say that a compromised pool would be easily detected, and the attack would be insignificant.

However, isn't this issue not about a single pool but the combined centralizing effect of pools? A moderate-sized attacker could easily compromise more than a few pool managers with a rubber hose attack, or pose as legit pools for a while until they obtain nearly complete control of the block chain.

The attacker would be able to double spend a lot of bitcoins (that it generated for itself with its pools in the first place), and regardless of any monetary advantage it could destabilize and destroy confidence in bitcoin. Easily within the capabilities and motivations of a government. A well-planned attack could happen far quicker than anyone could notice and pull their miners from the pools.

7
  • 3
    It's a good topic, I also made multiple posts about the issue on forum, but it has to be Q&A format for StackExchange.
    – Serith
    Aug 31, 2011 at 19:29
  • 1
    I'm at a loss how this question is not in a question & answer format. I asked a clear short question and then explained the context of that question. Aug 31, 2011 at 19:33
  • 2
    Its better to separate the question from the answer. But feel free to answer your own question.
    – nealmcb
    Aug 31, 2011 at 20:14
  • 2
    I'm not attempting to answer my own question. I'm really asking it. It seems like people don't think this is an issue, and I want to understand why it isn't. Aug 31, 2011 at 22:32
  • 1
    @MrJoshua The question is poorly constructed. It is a useful topic but the question could be cleaned up to meet SE standards. You shouldn't attempt to answer your own question in the body of the question. Instead of saying "pools do x" = answer. It should be phrased openended like "Do pools x?", "Could an attacker compromise multiple pools?", "How quickly could a 51% attack be executed". Openended questions lead to increased debate and better answers. Providing your own answer in guise of question without supporting information is less effective. Oct 20, 2011 at 16:53

2 Answers 2

20

The short answer to your question is "yes".

Efforts are underway to develop schemes that allow pooled mining without the pool manager being able to control what transactions go into the pool's blocks, leaving that decision (as well as which chain to extend, so long as it is reasonable) to the individual miners. All the pool really needs is proof that the miner is mining for the pool.

4
  • 5
    I voted up this answer, but it would help if you could site references. I was under the impression that suggestions on doing this have been made, but that no one was actively working on it. (ostisably because no one feels this is a real threat, hence the original question so I could understand why people believe that.) Aug 31, 2011 at 22:38
  • 3
    "Efforts are underway" - what about P2Pool? en.bitcoin.it/wiki/P2Pool
    – ripper234
    Sep 1, 2011 at 6:56
  • 4
    P2Pool is an example of one such effort. Sep 1, 2011 at 7:09
  • Stratum V2 is another (current) example of such effort. Jun 27, 2020 at 11:15
14

Large pools with a significant fraction of total hashing power do represent an increased risk to the security of the Bitcoin network.

Pools by themselves are not necessarily a risk as a peer to peer network doesn't necessarily need to consist of invidiual users. A network of pools being the peers is also viable however the pools must be peers and there must be a sufficient number to make collusion between peers infeasible. When one pool is 50x the size of average pool it has no peer. One could encourage miners to support smaller and medium sized pools thus restoring the "peer" nature of the network however that is likely a futile effort. The problem is that large pools have an inherent advantage over smaller pools in the form of less reward variance which is a desirable attribute for miners. Due to this advantage there will always be a tendency for hashing power to aggregate.

Realisticly we should accept that large even massive pools are an inevitability due to the high variance nature of Bitcoin hashing. However the risk of large pools stems from the fact that miners are "dumb". By miners I am referring to the software not the person. Currently the pool server tells the miner what to hash and the miner blindly hashes it. If the pool is compromised or malicious it can tell the miner to hash "bad data" such as a forked blockchain, or double spend transaction. The current implementation of mining pools makes it impossible for a miner to ensure they are doing "good work" until after the fact. This is an important element because large pools aren't inherently a risk. What makes them a risk is the control they have over a large amount of hashing power.

Any reasonable mitigation must address that:

  • Large pools are inevitable. Miners will seek out pools which minimize variance.
  • The pool server is the weak link in an otherwise robust network due to denial of service, corruption, or compromise.
  • The miner must be smart. It must decide for itself what to include in the block to ensure only "good work" is done.

p2pool (peer-to-peer pool) is one solution to this issue without the unrealistic goal of simply having no pools or only "small" pools. p2pool could someday have >51% of the network hashing power and it wouldn't represent a risk to the network. This is because each miner in the pool is working independently which makes subversion of the pool ineffective for the purposes of attacking the block chain.

How p2pool creates a network of "smart" miners.

p2pool creates a "share chain" where each miner submits shares to a parallel p2p network that records all the shares completed by the pool. Each miner independently includes transactions, sets up block headers, forwards other miner's transmissions for shares it hashes. When a block is found the reward is split fairly because in generating each block header the miner looks at last x shares in the "share chain" and setups the coinbase transaction to split reward based on work over the last x shares. IIRC x is currently set to roughly 1 day of work. So everytime a block is found each miner in the pool is rewarded equal to the % of shares accepted by the pool in the prior 24 hours.

https://github.com/forrestv/p2pool

https://bitcointalk.org/index.php?topic=18313

https://en.bitcoin.it/wiki/P2Pool

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.