If you're a programmer, I highly recommend trying to implement your own (toy) Bitcoin client -- just as a learning experience and not for general use or distribution. (Just be sure to advertise it as such if you put it up on Github). I've been involved with Bitcoin since early 2011 and am just now understanding the protocol in depth, having started to implement my own Bitcoin client.
You're best bet to do so is probably to just skip the reference client and its complex C++ implementation, and learn the protocol from the Python implementation [0], combined with the protocol specification on the Bitcoin wiki [1].
If Java is your thing, I've also heard good things about the readability of Bitcoinj, which is used for various Android Bitcoin clients. Just note that Bitcoinj implements SPV, which is not the full reference protocol. But it would still be a great start to learning about Bitcoin.
If you're not a programmer, there are a 101 different intro to Bitcoin sites. I think I've heard good things about the Khan Academy's intro videos, but I've never watched them myself. And yes, and Satoshi's original paper.
You're best bet to do so is probably to just skip the reference client and its complex C++ implementation, and learn the protocol from the Python implementation [0], combined with the protocol specification on the Bitcoin wiki [1].
If Java is your thing, I've also heard good things about the readability of Bitcoinj, which is used for various Android Bitcoin clients. Just note that Bitcoinj implements SPV, which is not the full reference protocol. But it would still be a great start to learning about Bitcoin.
If you're not a programmer, there are a 101 different intro to Bitcoin sites. I think I've heard good things about the Khan Academy's intro videos, but I've never watched them myself. And yes, and Satoshi's original paper.
0. https://github.com/jgarzik/python-bitcoinlib
1. https://en.bitcoin.it/wiki/Protocol_specification
2. http://code.google.com/p/bitcoinj/
3. bitcoin.org/bitcoin.pdf
EDIT: s/legibility/readability