user30161: As per my understanding of bitcoin codebase, the following events happen after we solve a proof of work.

In miner.cpp, once the miner thread solves a new Proof-of-work (PoW), ProcessBlockFound basically notifies others via a signal BlockFound.
BlockFound signal calls ResetRequestCount which basically resets the mpRequestCount in wallet.h via the validationInterface.h.
(Missing Logic) 
A new NetMsgType::INV is issued from main.cpp in SendMessages/ProcessMessages to all peers.
These messages are eventually dispatched to all peers via network socket logic net.cpp 

I am missing the main piece of code logic between step2 and step4. Can any expert help me understand what background story is happening after step2? 

user18196: If you read a few lines after the BlockFound signal, you'll see:
CValidationState state;
if (!ProcessNewBlock(state, chainparams, NULL, pblock, true, NULL))
    return error("BitcoinMiner: ProcessNewBlock, block not accepted");

https://github.com/bitcoin/bitcoin/blob/v0.12.0rc2/src/miner.cpp#L373-L375
This is where the processing actually starts. ProcessNewBlock is defined in main.cpp.

30161: <p>As per my understanding of bitcoin codebase, the following events happen after we solve a proof of work.</p>

<ol>
<li>In <code>miner.cpp</code>, once the miner thread solves a new Proof-of-work (PoW), <code>ProcessBlockFound</code> basically notifies others via a signal <code>BlockFound</code>.</li>
<li><code>BlockFound</code> signal calls <code>ResetRequestCount</code> which basically resets the <code>mpRequestCount</code> in <code>wallet.h</code> via the <code>validationInterface.h</code>.</li>
<li><strong>(Missing Logic)</strong>  </li>
<li>A new <code>NetMsgType::INV</code> is issued from <code>main.cpp</code> in <code>SendMessages</code>/<code>ProcessMessages</code> to all peers.</li>
<li>These messages are eventually dispatched to all peers via network socket logic <code>net.cpp</code> </li>
</ol>

<p>I am missing the main piece of code logic between step2 and step4. Can any expert help me understand what background story is happening after step2? </p>
 18196: <p>If you read a few lines after the BlockFound signal, you'll see:</p>

<pre><code>CValidationState state;
if (!ProcessNewBlock(state, chainparams, NULL, pblock, true, NULL))
    return error("BitcoinMiner: ProcessNewBlock, block not accepted");
</code></pre>

<p><a href="https://github.com/bitcoin/bitcoin/blob/v0.12.0rc2/src/miner.cpp#L373-L375" rel="nofollow">https://github.com/bitcoin/bitcoin/blob/v0.12.0rc2/src/miner.cpp#L373-L375</a></p>

<p>This is where the processing actually starts. <code>ProcessNewBlock</code> is defined in <code>main.cpp</code>.</p>
