『ゼロから創る暗号通貨』
はじめに

濵津 誠/hamatz

はじめに

私は「こういうものです。覚えなさい」と教えられるのが昔から大嫌いでした。たとえば高校の数学の授業。黒板に書かれた問題に対する解説をただただノートにとり、それを暗記する。たとえそれが連綿と続く人類の歴史の積み重ねの中で獲られた知恵の結晶だとしても、私にとっては苦痛以外の何ものでもない「作業」でした。その性分は今でも変わっておらず、紙に書かれた何かをただ記憶する、という作業がとても苦手です。

さて、そんな性分を抱える私が、職務上のいろいろな出会いを通じて「暗号通貨に関連する技術を学ぼう」ということになり、有名どころの本を揃えたりTwitterで話題の記事などを漁ったりしていたところ、ある1つの問題にぶつかりました。すなわち、

  • 「ビットコインの仕組みはこのようになっています」
  • 「ブロックチェーンとはこういうものです」

といった「事実の紹介」しかしてくれない教材ばかりが目につき、「なぜそのような形に至ったのか?」という肝心な「思考の過程」を伝えてくれるものに出会えなかった、ということです。

  • 「こんなことを実現したいなら、こういうふうに作ればよいのでは?」
  • 「ああ、なるほど。こういう問題が起こるのか……」

あえて不完全なところからスタートし、失敗や反省を繰り返しながら「創る」ことで完成品に至るまでの思考の過程をシェアする。私が欲しかったのはそういうテキストでした。本書は、私のような性分を持った人たちに対して「あのときこういう本があれば良かった」と筆者自らが思えるものを提供することを大きな目的としています。

このところ、ブロックチェーンという技術は、ネット上でもその他の媒体でも用語を目にしない日はないのではないかというほどポピュラーになりつつあります。ですが、その中身をしっかりと理解し、必要に応じて自分の用途に応じてカスタマイズできる人となると、まだまだ僅か。学生から現役のエンジニアまで、ブロックチェーンの技術を学ぼうとする方々の動機はさまざまでしょう。本書では、暗号通貨技術の本質を掴むために、細かな部分を削ぎ落としてデザインされたSimpleBitcoinというプラットフォームをゼロから創造していきます。

SimpleBitcoinの完成までの過程には、当然、失敗もあります。「学ぶ」という目的を外れない程度のシンプルさを保つために、あえて不完全なまま終わる部分もあります。とはいえ、不完全であるということさえ理解できていれば、「今回は解決を見送ったこの問題は、たとえば本家のビットコインではどう対処しているのだろう?他の暗号通貨ではどうしているんだろう?」といった、暗号通貨技術全般に対する勘所は身につくはずです。

本書の解説、そしてSimpleBitcoinの実装には、コードの可読性の高さや近年の流行を鑑み、プログラミング言語Python(バージョン3系)を採用しました。読み進める上でPythonに対する深い知識は前提としていないので安心してください。ただし、Pythonの解説書ではありませんので、環境のセットアップをはじめとするプログラミング言語Pythonの詳細な解説は含めてありません。必要であれば他の書籍などで適宜補完してください。

繰り返しになりますが、本書で創っていくSimpleBitcoinのゴールは、既存の実装の完全なコピー実装ではありません。暗号通貨のエッセンスをつかみ取れることがSimpleBitcoinの主眼です。本書を通じ、既存の仕組みの仕様を単純に受け入れるのではなく、より良いものにするためにどんな工夫が考えられるかを常に意識できるようなブロックチェーン・エンジニアが一人でも多く誕生してくれれば幸いです。

サンプルコード

次のリポジトリに本書のサンプルコードが掲載されています。

各章でサンプルコードの指定がある場合は、そちらも合わせて確認ください。

クラウドファンディングとPEAKS

本書は技術書クラウドファンディング・サービスである「PEAKS」のプロジェクトとして開始され、795人の支援者のサポートによって作られました。出資者特典である「アーリーアクセス」「ベータ版公開」でいただいた多くのコメント、ご意見も反映されております。

PEAKSではこんな本を作りたい!という方を募集しています。次の窓口からご連絡いただければ幸いです。

免責事項

本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

  • この書籍は無料で各章の半分まで読めます。
  • クラウドファンディングでのご購入、電子版をご購入のお客様は、全文をお読みいただけます。
  • 閲覧にはご購入されたアカウントでのログイン が必要です。
  • 製本版をご購入の方は別途電子版のご購入 が必要となります。