4

I wanted to start mining Bitcoin from the genesis block, so I cloned Bitcoin and removed the checkpoints. Then I compiled and started up the daemon. I wasn't connected to any other peers, however, so it wouldn't let me mine. I did ./bitcoin-cli setgenerate true but ./bitcoin-cli getmininginfo said I had 0 hashespersecond. When I connected to just one other peer, though, (a peer which also didn't have the checkpoints or the block chain), I could start mining.

Theoretically, though, why wouldn't the peer just let me mine on my own chain and not broadcast my results to anybody? I know it's not really a peer-to-peer network in this case, but I don't see why it would harm anyone to allow mining like this. Where in the v0.9.3 code does it essentially say "if not connected to peers, then don't allow generation"?

7

I wanted to start mining bitcoin from the genesis block

I'm pretty sure regtest will let you do that.

why wouldn't the peer just let me mine on my own chain and not broadcast my results to anybody?

Because that would be pointless. You're not confirming transactions, and you won't get rewarded for your mining. Your chain will probably be overwritten the very next time you connect to the network.

Where in the v0.9.3 code does it essentially say "if not connected to peers, then don't allow generation"?

Here:

if (Params().NetworkID() != CChainParams::REGTEST) {
    // Busy-wait for the network to come online so we don't waste time mining
    // on an obsolete chain. In regtest mode we expect to fly solo.
    while (vNodes.empty())
        MilliSleep(1000);
}

It's here on versions after 0.9.3:

fMiningRequiresPeers = true;

This commit changed it.

  • The fMiningRequiresPeers = true isn't on v0.9.3... ? – morsecoder Nov 19 '14 at 1:52
  • @StephenM347 So it isn't. Fixed. – Nick ODell Nov 19 '14 at 1:56
  • And it may be pointless, but my point was that (I thought) it wasn't harmful. It seems like from the comment in the code, though, that allowing mining while not connected might actually be harmful because you could waste time mining on an obsolete chain. This also shows me where to change if I want to temporarily disable this for debugging, so thanks! – morsecoder Nov 19 '14 at 3:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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