654 / 736BK38

Programming Bitcoin

自分で部品を作りながら Bitcoin を理解する

ウォレットで「送信」を押すと、あとはアプリが処理してくれます。Programming Bitcoin が問うのは、その内側で何が起きなければならないかです。Jimmy Song は、小さなプログラミング課題から、練習用の取引を自分で作成し、署名してネットワークに送るところまで読者を導きます。

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演習を終えたら、このライブラリに自分のビットコインを預けられますか?

演習を終えただけでは、その結論は出せません。著者は明確に学習用の道具としてライブラリを作っています。実際の資金を安全に扱うには、鍵の保護やバックアップからの復旧を含め、はるかに広い検証が必要です。この紹介は、その検証を提供するものではありません。

DOC · 001O’Reilly — Programming Bitcoin出版社 DOC · 002Programming Bitcoin — official repository一次資料 DOC · 003Programming Bitcoin — Preface一次資料 DOC · 004Programming Bitcoin — Advanced Topics and Next Steps一次資料
改訂日: 一次資料を優先 · 投資助言ではありません