How do two software engineers start learning about blockchain? By reading and coding. We decided to turn this into a kind of festival we're dubbing "10 Days of Block". We've picked a handful of open source blockchain projects, and will spend about a day each to see if we can get them running and doing something interesting. If we have some extra time, we'll try to hack on them a bit and see how they can be extended or connected together.
We'll be blogging about the experience as a way to document it for ourselves, and perhaps serve as a guide for others just getting into the vast jungle of blockchain technologies.
Feedback and comments welcome! If we come across bugs or come up with interesting extensions we'll send pull requests whenever possible to help contribute back to the community. We know we have much to learn and are standing on the shoulders of those who have come before us.
First, the reading. We highly recommend the following:
- Mastering Bitcoin - Unlocking Digital Currencies by Andreas M. Antonopoulos. The first two chapters will be useful to non-developers. The rest of the book is quite technical and a good starting point for software developers.
- White Paper: A Next-Generation Smart Contract and Decentralized Application Platform (colloquially, the "Ethereum White Paper") by Vitalik Buterin et al. If Bitcoin is v1.0 of blockchain and focused on crypto currency and exchanging value, Ethereum is the leading v2.0 blockchain which extends the idea of distributed simple transactions into a distributed Turing complete programming language.
- Ethereum: A Secure Decentralised Generalised Transaction Ledger (colloquially, the "Ethereum Yellow Paper") by Dr. Gavin Wood. This is an academic paper which describes in detail the math and algorithms behind Ethereum. Consider it complementary to the Ethereum White Paper.
These three sources in turn have links to further reading, and there are plenty of other books, articles and blogs out there, but we think this is a good place to start.