user24926: In the bitcoin/src, which files are the "main" files I should start with if I want to learn how Bitcoin works? In other words, where's it good to branch off from?
I'm new to C++, but can code okay in PHP and Python. I'm learning C++ along the way.

user24556: Even I'm quite new to Bitcoin and I started out with this.
This short explanation gave me good overview.
And Christopher Gurnee is right with starting to study the Developer Guide, the Developer Reference and in addition you could take a look at the Developer Examples.
Regarding your interest in coding, you should take a look at the bitcoin-0.10.X/qa/ directory - here you find (also python) code for quality assurance tests.

user9382: I've found Python to be the best Bitcoin learning tool, and many agree, namely because:

You can use the Python console without compiling code, allowing you to easily play with it until it makes sense
Python (especially version 2.7) is dynamically typed (bytes, strings, ints do not need declaring) See Christopher Gurnee's comment below
There's some fantastic libraries for Python, namely Pycoin and pybitcointools


user25088: I certainly appreciate your level of enthusiasm to want to dig straight into the code, but if I were you I'd start with the Developer Guide on bitcoin.org, and perhaps also the Developer Reference. A whole lot of effort has gone into this documentation (especially thanks to this guy), and I think you'd be remiss to not to take advantage of it.
After digesting some of that content, you'll have a better idea of what particular aspect of Bitcoin Core interests you the most. As I'm sure you've noticed, it's a rather large codebase, covering consensus issues, blockchain/storage/pruning issues, elliptic curve cryptography, DOS issues, Bitcoin scripting issues, Bloom filters, wallet issues, UI issues, and tons of other things I can't begin to fathom. After getting a good technical overview of Bitcoin and posing a more specific question, I'm sure someone (perhaps not me) can give you a more specific staring point.

24926: <p>In the bitcoin/src, which files are the "main" files I should start with if I want to learn how Bitcoin works? In other words, where's it good to branch off from?</p>

<p>I'm new to C++, but can code okay in PHP and Python. I'm learning C++ along the way.</p>
 24556: <p>Even I'm quite new to Bitcoin and I started out with <a href="http://www.michaelnielsen.org/ddi/how-the-bitcoin-protocol-actually-works/" rel="nofollow">this</a>.</p>

<p>This short explanation gave me good overview.</p>

<p>And Christopher Gurnee is right with starting to study the Developer Guide, the Developer Reference and in addition you could take a look at the <a href="https://bitcoin.org/en/developer-examples" rel="nofollow">Developer Examples</a>.</p>

<p>Regarding your interest in coding, you should take a look at the <code>bitcoin-0.10.X/qa/</code> directory - here you find (also python) code for quality assurance tests.</p>
 9382: <p>I've found <a href="http://www.python.org" rel="nofollow">Python</a> to be the best Bitcoin learning tool, and many agree, namely because:</p>

<ol>
<li>You can use the Python console without compiling code, allowing you to easily play with it until it makes sense</li>
<li>Python (especially version 2.7) is dynamically typed (bytes, strings, ints do not need declaring) <em>See <a href="https://bitcoin.stackexchange.com/users/25088/christopher-gurnee">Christopher Gurnee's</a> comment below</em></li>
<li>There's some fantastic libraries for Python, namely <a href="https://github.com/richardkiss/pycoin" rel="nofollow">Pycoin</a> and <a href="https://github.com/vbuterin/pybitcointools" rel="nofollow">pybitcointools</a></li>
</ol>
 25088: <p>I certainly appreciate your level of enthusiasm to want to dig straight into the code, but if I were you I'd start with the <a href="https://bitcoin.org/en/developer-guide" rel="nofollow noreferrer">Developer Guide on bitcoin.org</a>, and perhaps also the <a href="https://bitcoin.org/en/developer-reference" rel="nofollow noreferrer">Developer Reference</a>. A whole lot of effort has gone into this documentation (especially thanks to <a href="https://bitcoin.stackexchange.com/users/21052/david-a-harding">this guy</a>), and I think you'd be remiss to not to take advantage of it.</p>

<p>After digesting some of that content, you'll have a better idea of what particular aspect of Bitcoin Core interests you the most. As I'm sure you've noticed, it's a rather large codebase, covering consensus issues, blockchain/storage/pruning issues, elliptic curve cryptography, DOS issues, Bitcoin scripting issues, Bloom filters, wallet issues, UI issues, and tons of other things I can't begin to fathom. After getting a good technical overview of Bitcoin and posing a more specific question, I'm sure someone (perhaps not me) can give you a more specific staring point.</p>
