A technical book by Jimmy Song published by O’Reilly in 2019. This overview draws on the entire Preface and final chapter, Advanced Topics and Next Steps, in the official repository, the Preface illustrations we examined and publication records.
Programming Bitcoin was written by Jimmy Song. The O’Reilly catalogue lists February 2019; the README in the author’s repository lists March 2019. We retain both records separately. The public repository provides text and accompanying files, but its continuously updated branch may not be identical to a particular printed copy. [1] [2]
The Preface sets a clear goal: understanding Bitcoin technology by writing the library’s components yourself. It is not an analysis of monetary, economic or social effects. The author also says the library is not meant to be exhaustive or efficient, and the book is not a reference manual for the specification of every feature. [3]
Knowledge of programming, especially Python, is a prerequisite; the library uses Python 3. The author prefers an intermediate level, but says even a beginner can understand many concepts. For the mathematical sections he expects roughly an algebra-level background and introduces new concepts gradually. This is therefore not an introduction without any technical prerequisites. [3]
The Preface describes 14 chapters as a cumulative construction: mathematical foundations and serialization, transactions, blocks and network communication. Chapters 1–12 contain programming exercises. They culminate in a testnet task where the reader retrieves data from a node, constructs and signs a transaction, and sends it to the network. We do not confuse this teaching plan with having completed the tasks ourselves. [3]
In the described workflow, the reader uses Jupyter notebooks and edits associated Python files to pass prepared tests. Solutions are available both in an appendix and in the chapter directories. We examined illustrations of this workflow; reading and images alone do not demonstrate that we ran the exercises or verified their environment today. [3]
The final chapter proposes wallets as a topic for further study and emphasizes the difficulty of protecting private keys. For a test wallet project, it also mentions the user interface, backups, an address book and transaction history. Knowing how to sign does not cover the entire application design; these suggestions are further learning steps, not a finished secure wallet. [4]
The author recommends contributing to open projects and suggests ideas such as a block explorer, a web shop or a utility library. For the shop, he advises starting on testnet and using secure cryptographic libraries. This chapter points toward further study; we do not adopt its historical project list and career advice as a current assessment of services or a guarantee of employment. [4]
We read the entire Preface and the entire Advanced Topics and Next Steps chapter in the official repository and examined all four Preface images. We verified the publisher’s catalogue and README. We did not fully verify the other chapters or accompanying code and did not run any book exercises; this is neither a complete review nor a security audit of the library. [1] [2] [3] [4]
For the clearest picture, read this entry together with Private Key, Transaction, Bitcoin Script, Full Node.
01Do I need to know programming before reading?+
Yes, the Preface assumes programming knowledge, especially Python. The author prefers an intermediate level, but says even basic knowledge may be sufficient to understand many concepts.
02Is the book’s library a finished solution for real funds?+
In the Preface, the author defines it as a learning tool, not a complete or efficient library. We did not run its code or the book exercises, and this overview does not establish safety for handling real funds.