Programming Bitcoin は、Jimmy Song による 2019 年の技術書です。読者が少しずつ作る Python ライブラリ、つまり再利用できるプログラム部品の集まりを通して Bitcoin を説明します。プログラミングの基礎がある人向けの教科書であり、完成済みのウォレットではありません。
アプリを使えることと、仕組みを理解していることは別の能力です。Song は、前者から後者への橋渡しを目指します。Bitcoin の説明を読むだけでなく、その部品を書いて試すのです。必要なデータを取得し、取引を作り、ネットワークへ渡す方法を理解することが目標で、通貨や社会をめぐる議論は対象外です。 [3]
全体は 14 章で、前の内容を積み重ねて進みます。最初は鍵や署名に必要な数学です。次に、データを保存や送信のための厳密な形式に変換する「シリアライズ」を学び、取引、ブロック、ネットワーク通信へ進みます。この順序には意味があります。難しい課題では、すでに作った部品を使うからです。 [3]
第 1–12 章には演習があります。読者は Python ファイルを編集し、用意されたテストで解答が課題の条件を満たすか確認します。ここでいう Jupyter notebook はノート型のコンピューターではなく、コードを実行してすぐ結果を見られる作業文書です。解答は付録とリポジトリにありますが、大切なのは正解を写すことより、自分の間違いを理解することです。 [3]
最後のプログラミング演習では、それまでの作業を組み合わせます。別のノードに接続し、使える資金を確認し、取引を作成して署名し、送信します。舞台は、実験用に分かれたネットワークである testnet です。この学習計画の紹介は、私たちが演習を実行したことや、現在の環境での動作を確認したことを意味しません。 [3]
ライブラリは Python 3 を使います。Song は中級程度の知識を勧めますが、プログラミング初心者でも多くの概念は理解できるとしています。数学は代数の基礎で足りる想定で、新しい道具は順に導入されます。プログラミング経験がなければ、言語と Bitcoin のプロトコルを同時に学ぶより、先に Python の基礎を学ぶ方が取り組みやすいでしょう。 [3]
最終章で Song は、秘密鍵の保護が難しいことを強調します。ウォレットには、分かりやすい操作画面、バックアップ、取引履歴も必要です。ある関数のテストに通っても、プログラム全体の安全性を証明したことにはなりません。このライブラリは学習用で、完全性や最適化を目指した実装ではなく、実際の資金に使えると自動的に判断できるものではありません。 [3] [4]
著者は、テスト用ウォレット、ブロックエクスプローラー、オンラインショップ、補助ライブラリなどの自作を提案します。ショップは testnet から始め、安全な暗号ライブラリを使うよう勧めています。公開プロジェクトへの貢献も道の一つです。いずれも学習の提案であり、現在のサービスを検証した一覧や就職の保証ではありません。 [4]
O’Reilly は 2019 年2月、著者のリポジトリの README は 2019 年3月と記載しています。この二つの記録は区別しています。本紹介は、出版情報、前書き全体、最後の章 Advanced Topics and Next Steps に基づきます。本全体の書評でも、付属コードのテストでもありません。オンラインの本文は変わる可能性があるため、古いインストール手順を使う前には現在の文書と照らし合わせる必要があります。 [1] [2] [3] [4]
理解を深めるには、この項目とあわせて次もお読みください Private Key, トランザクション, Bitcoin Script, Full Node.
01まったくの初心者でも読めますか?+
プログラミングの基礎があれば、Bitcoin 開発の初心者にも向いています。前書きは特に Python と、おおむね代数程度の数学を前提としています。コードを書かずに Bitcoin の使い方を理解したいなら、入門ガイドの方が直接的な道になります。
02演習を終えたら、このライブラリに自分のビットコインを預けられますか?+
演習を終えただけでは、その結論は出せません。著者は明確に学習用の道具としてライブラリを作っています。実際の資金を安全に扱うには、鍵の保護やバックアップからの復旧を含め、はるかに広い検証が必要です。この紹介は、その検証を提供するものではありません。