-
Notifications
You must be signed in to change notification settings - Fork 7
/
preface.tex
15 lines (9 loc) · 2.83 KB
/
preface.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
% to not include in ToC
%\section*{Preface}
\section{Preface}
I started teaching Bitcoin programming in 2016. Every year I was trying to improve and update my material to keep it as relevant as possible. Luckily, Bitcoin progresses at a steady pace while always keeping backwards compatibility. This is convenient because existing material will always be valid even though better alternatives might be introduced in the future.
To understand the material better and to improve the material in my courses I started an open source Python library, called bitcoin-utils\footnote{https://github.com/karask/python-bitcoin-utils}. The library was created for educational purposes and not for computational efficiency and that might be evident in certain parts of the implementation. Before starting this library I had investigated several other well-known Python libraries but I did not find an appropriate one for teaching. Some were too low-level with limited documentation while others were abstracting concepts that I deemed important for students to understand. The book contains a lot of examples using this library for demonstration.
Throughout the years I have prepared a lot of material based on my early code experiments, the bitcoin-utils library and several online resources, especially the Bitcoin Stack Exchange\footnote{https://bitcoin.stackexchange.com/} and the Bitcoin Book\footnote{https://github.com/bitcoinbook/bitcoinbook} by A. Antonopoulos. While I try to always credit the initial sources that I have consulted over the years it is possible that I have missed some. Please let me know and I will update accordingly.
This book is not about introducting what Bitcoin\footnote{https://github.com/karask/satoshi-paper} is. The readers are expected to have some programming knowledge, be comfortable with their own operating system as well as have some basic understanding of what Bitcoin is, its utility, what addresses and private keys are as well as have some experience using wallets and sending bitcoins\footnote{When we refer to the coins we will use \emph{bitcoin(s)} (lowercase `b') and when we refer to the protocol or the network we will use \emph{Bitcoin} (uppercase `B')}. However, the first chapters do give a quick summary of Bitcoin and how it works to make sure that the fundamentals are covered.
This book is about teaching Bitcoin programming; to help people delve deeper, and in particular learn how to \emph{talk} to the Bitcoin network programmatically. The Bitcoin library is relatively easy to navigate through, so you can go even deeper when required. There is an emphasis on providing practical examples which, I believe, helps understanding.
I have been using a Linux-based machine and thus most command-line examples are from \keyword{bash} shell. However, people comfortable with other Operating Systems should have no issues to adjust as needed.