Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

Bitcoin Kick Ass Course

for developers

Executive summary
This is an organized group effort to understand every aspect of Bitcoin - how it works, how to
interact with it, how to use it with existing tools. The target audience is developers of various
kinds and with various background. The knowledge of Python, C++, and Go may be helpful
for the practical programming. But other languages may suit as well.

The course material is divided by weeks, following the material structure of the great book
Mastering Bitcoin: Programming the Open Blockchain by Andreas M. Antonopoulos. In the
beginning of every week you get a fresh block of material to read, watch and understand -
pages from the Mastering Bitcoin book, the articles on the web, youtube videos. And, of
course, a bunch of practical programming exercises to write, debug and run. To understand
the material better we provide the online discussion channels where you can get help from
the mentors and also help others when you know the stuff enough. So, you will learn by
reading, doing and teaching - the most effective way to become the best.

So, at the end of the course you will fully understand:


Bitcoin building blocks
How to explore Bitcoin Blockchain
How to compile, run and interact with full Bitcoin node
How public key cryptography works
How Bitcoin transactions work and how to create transactions from command line
Bitcoin advanced transactions - multisig, P2SH
How Bitcoin network is built and operates
How Bitcoin mining and consensus work
What is Bitcoin soft-fork and hard-fork
Bitcoin recent developments - Lightning Network, SegWit, Bitcoin Cash and others

The course takes 9 weeks, demanding about 15 hours per week. When doing the course
remember to find a quiet place with minimal distractions and keep your telephone off!

Practical programming projects will be done in solo or in small groups of 2-3 guys. And at the
end of the course we will do a contest for the best project. More than that - based on voting,
most active and helpful participants will get recognition and generous discount for further
courses.
Audience
In one sentence - developers.

The course assumption is that you are a developer or a student with some programming
experience. The basic understanding or security, networking, algorithms and bits and bytes
will be most helpful, but not mandatory. The only must-have, though, is your desire to
understand the Bitcoin.

Course description and goal


In one sentence - to get a theoretical and practical knowledge of bitcoin.

The end goal of the course is to get practical and theoretical knowledge of the Bitcoin,
Blockchain and a number of related technologies. You will get a full understanding of how
Bitcoin works, including the structure of bitcoin transactions, bitcoin blockchain and
consensus, bitcoin peer network, bitcoin security, bitcoin wallets and other. The course is
conducted fully online. The learning curve for the bitcoin world is pretty steep. Hence, you
will need to invest time for self reading and understanding of the material. The course
structure is based on one week - one topic principle (see weekly breakdown below). In the
beginning of every week the list of the covered material will be given - book pages or
chapters, online articles, YouTube videos, source code examples, tools and utilities. First,
you will need to self-read, self-watch and self-learn the weekly material and do your best to
understand it on your own. The next step is to get help understanding the material on the
designated online channels of our group, or, to help others. And the last step is to do the
practical exercises or mini-projects. You can tackle the questions and the project on your
own or in self-organized groups of 2-3 guys. All sorts of discussion and collaboration are
most welcome.

Time frame and commitment


In one sentence - 15 hours a week for 9 weeks.

The course material covers 9 weeks of focused study and will be further adjusted according
to the advancement pace and the collective feedback. This study plan assumes f ocused
time commitment of 15 hours weekly (as a regular academic course demands). Surely, the
programming and debugging takes time, so, try to keep your weekends appointment-free.

Page 2 out of 8
Prerequisite knowledge
In one sentence - some knowledge of C++, Go or Python and some programming
experience.

Programming concepts and programming languages - the more the better, the deeper the
smarter. Bitcoin is implemented in C, C++, Java, Go and other languages. Programming
languages for bitcoin-related technologies include, probably, most widespread programming
languages out there.

Environment and activities


In one sentence - read, discuss and program.

The program suggest the below online and offline main activities:
Read - Reading books, manuals, websites, watching youtube and googling
Program - Reading, writing and compiling source code
Discuss - Discussing all the above on the designated channels

So, the environment suggests PC with an Operating System of choice, internet and
programming environment (IDE, editors, compilers). I recommend using Ubuntu 16.04 LTS
Gnome - it can be downloaded from https://ubuntugnome.org/download. You can install it
natively, or as virtual machine using Virtualbox (h
ttps://www.virtualbox.org/wiki/Downloads).

Course material
In one sentence - Mastering Bitcoin: Programming the Open Blockchain by Andreas M.
Antonopoulos

Covered material
Book Mastering Bitcoin: Programming the Open Blockchain by Andreas M.
Antonopoulos
Bitcoin C++ source code (partially)
Bitcoin utilities and tools mentioned in the book

Recommended material
PDF Bitcoin Developer Reference by Krzysztof Okupski - 40 pages
http://enetium.com/resources/Bitcoin.pdf
Bitcoin Developer Reference - 200 pages
https://bitcoin.org/en/developer-reference
Other materials and utilities to support the knowledge - to be updated as time goes by

Page 3 out of 8
Course structure

Week 1
What Is Bitcoin?
History and introduction
How Bitcoin Works
Exploring bitcoin blockchain
Payment request QR code
Bitcoin transactions (create, send, verify)
Bitcoin mining

Week 2
Bitcoin Core: The Reference Implementation
Bitcoin development environment
Compiling bitcoin core
Running a bitcoin core node
Bitcoin Core application programming interface (API)
Exploring and decoding transactions and blocks
Alternative clients, libraries, and toolkits (libbitcoin, pybitcointools)

Week 3
Keys, Addresses
Public key cryptography and cryptocurrency
Bitcoin addresses
Base58Check and key formats (Raw, Hex, WIF, WIF-compressed)
Implementing keys and addresses in python
Advanced keys and addresses (P2SH, multisig)
Paper wallets

Week 4
Wallets
Nondeterministic (random) wallets (type-0 wallet)
Deterministic (seeded) wallets (type-1 wallet)
HW wallets (Trezor, Ledger Nano)
Transactions
Transaction outputs and inputs
Transactions fees
Transaction scripts and script language
Digital signatures (ECDSA)
Signature hash types (SIGHASH)

Page 4 out of 8
Week 5
Advanced Transactions and Scripting
Multisignature
Pay-to-Script-Hash (P2SH)
Data recording output (RETURN)
Timelocks
Scripts with flow control (Conditional clauses)

Week 6
The Bitcoin Network
Peer-to-peer network architecture
Node types and roles
The extended bitcoin network
Bitcoin relay networks
Full nodes and SPV
Bloom filters
Transaction Pools

Week 7
The Blockchain
Structure of a block
The genesis block
Linking blocks in the blockchain
Merkle trees
Merkle trees and simplified payment verification (SPV)
Bitcoins test blockchains
Using test blockchains for development

Week 8
Mining and Consensus
Bitcoin economics and currency creation
Decentralized consensus
Independent verification of transactions
Mining nodes
Aggregating transactions into blocks
Constructing the block header
Mining and validating a block
Assembling and selecting chains of blocks
Blockchain forks
Mining and the hashing race
Changing the consensus rules (soft, hard and other forks)

Page 5 out of 8
Week 9
Bitcoin Security
Security principles
User security best practices
Blockchain Applications
Building blocks, primitives (no double-spend, immutability, neutrality, etc.)
Applications from building blocks (Proof-of-Existence, kickstarter, payment
channels)
Colored coins
Counterparty
Payment channels and state channels
Routed payment channels (Lightning Network)

Page 6 out of 8
This course is not...
This course is not a webinar or some real-time material coverage
This c ourse is not given as a set of pre-recorded video tutorials as in regular online
course
This course is not one-to-many lecturing as accustomed in the academia

This course is
This course is a group effort for all of the participants to progress as a group
This c ourse is sure to boost and deepen your Bitcoin practical knowledge
This c ourse is coordinated using the best knowledge source, digested and organized
for you!

Ways to communicate with me


Email: zertsekel@gmail.com
Telegram: @kosta_zertsekel

Course organizer
My name is Kosta Zertsekel or just Kosta. Im a guy of 35, based in
Israel. Im a highly experienced software engineer, with heavy
background in Embedded, Linux, Linux Kernel, drivers and
networking development with 10+ years of experience. Im learning
a Bitcoin and related technologies for quite some time. Im hugely
passionate about Bitcoin and related technologies. My goal is to
share and enrich the knowledge and the practical skills with you.

What is the price?


The price is $19 USD paid weekly, or, $149 USD in one payment for the whole course. T
he
payment is accepted in any cryptocurrency. Thats right - in ANY cryptocurrency from the
top hundred coins listed on https://coinmarketcap.com. For non-crypto payment option,
please contact me on the Telegram to decide on the payment option.

How to join the course?


Fill in Google form https://goo.gl/forms/3bbIBlDpmaEcD9V42 to say hi
Decide on payment option and currency
Perform the payment

Page 7 out of 8
Preparations for the course
Purchase the Mastering Bitcoin book
It is most advised to purchase the course book Mastering Bitcoin: Programming the Open
Blockchain by Andreas M. Antonopoulos, 2nd edition. Ive read this book twice and Andreas
did a great job organizing Bitcoin material in a step-by-step learning curve. More than that,
Andreas provides this book for free in a text format on github. But the printed real book
edition is much better for real detailed learning.

Install Bitcoin Core on your PC


Download and install the Bitcoin Core implementation: h
ttps://bitcoin.org/en/download.

Course start date


The course takes off on XXX-th of ZZZ-ber 2017, at 7 am UTC time.
The first batch of the material will be dispatched and all the participants invited to join the
Telegram channel.Septem

Page 8 out of 8

You might also like