読書メモ:詳解ビットコイン
最近、ImmunefiのAttackathonやAudit Competitionに参加する機会が増え、ブロックチェーン全体のアーキテクチャを改めて復習する必要性を感じていました。これまでに『マスタリング・イーサリアム』やスマートコントラクト関連の書籍を読んだり、ethereum.orgのコンテンツを翻訳したり、多くのプロジェクトに貢献したりして、ブロックチェーン技術について一定の理解があるつもりでした。しかし、より抽象的な視点からバグや脆弱性を調査するには、まだ知識が不足していると感じていました。
そこで、『詳解ビットコイン』を購入し、ブロックチェーン技術の源流であるビットコインの仕組みを学びながら、知識を整理することにしました。この書籍はオライリーらしく難解で、分厚く、言葉攻めです。原書が洋書ですので、表現や翻訳の限界のためか解りにくい部分もあり、すべてを完全に理解するには至りませんでしたが、独自の「クッキートークン」を用いたブロックチェーンの構築プロセスを通じて、体系的な知識を得ることができました。
特に、ウォレットの仕組みについての解説が充実しており、階層決定性(HD)ウォレットのマスター鍵や子鍵の仕組みについて深く学べました。また、トランザクションの仕組みも大変参考になり、イーサリアムとは異なるP2PKH(Pay-to-PubKey-Hash)などの概念を理解するのに役立ちました。ただし、P2PKHは書籍を読むだけでは完全には理解できず、実際に使ってみないと身につかないと感じました。
ブロックチェーンの技術解説では、ブルームフィルターやマークル木について詳しく触れられており、実装の詳細までは把握できなかったものの、監査においてこれらの存在を知っているだけでも役立つと感じました。このような複雑な実装は、バグが入りやすい部分でもあるため、注意深く学んでいきたいところです。
プルーフ・オブ・ワーク(PoW)についても、マイナーの役割を整理するのに非常に役立ちました。イーサリアムのフルノードとバリデータの関係と同様に、ビットコインではフルノードとマイナーの役割が分かれています。また、ピアツーピア(P2P)ネットワークについても、イーサリアムとは実装の詳細こそ異なるものの、ゴシッププロトコルなどの基本概念は共通しており、知識を整理するのに適した内容でした。
さらに、ビットコイン固有の技術として、セグウィット(SegWit)やP2WSH(Pay-to-Witness-Script-Hash)などのスクリプトも取り上げられています。これらはSolidityによるスマートコントラクトとは大きく異なるため、まだ理解が浅い部分もありますが、非常に勉強になりました。
ビットコインのアップグレードについても、ソフトフォークやハードフォークに関する説明があり、発生時の問題点について詳しく解説されています。チェーンの分岐はバグによって引き起こされると致命的な影響を与えるため、この部分は今後も繰り返し読み込み、理解を深めていきたいと考えています。マスタリング・イーサリアムにはあまり詳しく書かれていなかった部分なのでかなり貴重な内容です。
全体として、章末問題が理解の確認に非常に役立ちました。この一冊だけでブロックチェーン技術を完全に理解することは難しいですが、コードを参照しながら、普遍的な仕様を抽出し、バグの発見に活用できそうだと感じました。
次に、オライリーの『プログラミング・ビットコイン』も購入したので、実際の実装を確認しながら、より深く理解を進めていきたいと思います。