Mastering Bitcoin(日本語版)を読んだので本のまとめ

Bictoin本: “Mastering Bitcoin” Oreilly’sの日本語版が無料公開

この本 Mastering Bitcoin (英語) エンジニアなら泣く子も黙るオライリーから出版されてます。

なんと驚いたことに、この本の日本語訳が無料公開されているのです。読まない手はないですね。

日本語訳はこちら -> [PDF] Mastering Bitcoin (日本語訳版)

2014年出版の本なのですが、Bitcoinの仕組みについて説明してある本であり、素晴らしい本でした。今でも原理は同じなので、とても勉強になりました。

コードを用いて説明されているところも多く、とても良いです。エンジニアじゃない方は慣れない用語が多いかもしれませんが、コードを飛ばして読めば良いと思います。

とても良かったので、今後見返す事もあると思い、本の内容を個人的にまとめてみました。

“Mastering Bitcoin”の内容まとめ

イントロダクション

  • Bitcoinとは
  • Bitcoinをはじめよう
  • bitcoinを送る/受け取る

Bitcoinの仕組み

  • トランザクション、ブロック、マイニング、ブロックチェーン
  • Bitcoinトランザクション
  • Bitcoinマイニング
  • トランザクションの使用

Bitcoinクライアント

  • Bitcoin Core:リファレンス実装
  • bitcoind
  • 代替のBitcoinクライアント、ライブラリ、ツールキット
  • pycoin, btcd

キー、アドレス、ウォレット

  • 公開鍵、秘密鍵
  • Bitcoinアドレス: 一方向暗号学的ハッシュ化を使うことで公開鍵から生成
  • Base58とBase58Checkエンコード
  • PythonでのキーとBitcoinアドレスの実装
  • ウォレット: 秘密鍵のためのコンテナ
  • 決定性(Deterministic , Seeded)ウォレット, 階層的決定性ウォレット(BIP0032/BIP0044)
  • 高度なキーとアドレス: 暗号化秘密鍵(BIP0038), Pay-to-Script Hash (P2SH) とマルチシグネチャアドレス, Vanity Address,
  • ペーパーウォレット

トランザクション

  • トランザクションのライフサイクル
  • トランザクションの構造: アウトプットとインプット
  • トランザクション手数料: トランザクションのデータサイズ(KB)に基づいて計算
  • トランザクションチェーンとOrphanトランザクション
  • トランザクションscriptとScript言語
  • 標準的なトランザクション(pay-to-public-key-hash (P2PKH), public-key, multi-signature, pay-to-script-hash (P2SH), data output (OP_RETURN))

Bitcoinネットワーク

  • P2Pのネットワーク
  • ネットワーク内のノードの種類(ウォレット、マイナー、フルブロックチェーン、ネットワークルーティングの4種類)とその役割
  • ネットワークをどのように発見するのか(DNSシードに問い合わせる)
  • ピア同士の最初のハンドシェイク
  • フルノード(フルブロックチェーンノード)について。 (“行ったことのない町の全てのストリート、住所についての詳細な地図を持っ ている観光客”)
  • SPV(Simplified Payment Verfication)ノードについて。軽量クライアント。 (“メイン通りしか知らず行き当たりばったりで進む観 光客のようなもの”)
  • Bloom Filter(確率的探索フィルタ)について。
  • トランザクションプール: 未検証トランザクションの一時リスト。

ブロックチェーン

  • ブロックチェーンはまるで垂直スタック。そこから、高さ(Height)という表現に。
  • 古い世代のブロックを変更すろと、その子、孫、次のすべての世代のハッシュ値が変わる。この再計算がすごく大変なので、変更が不可能
  • ブロックはコンテナ型のデータ構造。ヘッダは80byte、トランザクションは1つ最低でも250byteある。平均して500個のトランザクションが1つのブロックに含まれる。
  • Genesisブロック。2009年1月3日 Genesisブロック
  • merkle tree(マークル木、ハッシュ木)

マイニングとコンセンサス(合意形成)

  • 新しいブロックは10分ごとに”マイニング”される
  • 新たにマイニングされるbitcoinの量は、約4年ごと(正確には210,000ブロックごとに)減っていく。2140年以降はもう新しいBitcoinは出ない。
  • Bitcoinセキュリティの土台であるdecentralized emergent consensus(分散型創発コンセンサス)
  • ノードが行う最初のトランザクション検証
  • ブロックへのトランザクション集積(トランザクション年齢、トランザクション手数料、トランザクション優先度)
  • generationトランザクション: マイナーへの報酬トランザクション
  • Proof-Of-Workアルゴリズム: nonceと難易度のコントロール
  • 2,016ブロック毎に全てのBitcoinノードはproof-of-workの難易度をretarget
  • Blockchainのフォークとその収束
  • マイニングプール
  • コンセンサス攻撃: 51%攻撃

Alt chain、通貨、アプリケーション

  • メタコイン: Bitcoin上に建てられたソフトウェアのレイヤー。通貨内通貨。
  • Colored Coin: 少額のbitcoin上にメタ情報を積み重ねるメタプロトコル
  • Mastercoin: Bitcoinシステムを拡張する様々なア プリケーションのためのプラットフォーム。MSTという通貨をトランザクショ ンを行うためのトークンとして使用。
  • Litecoin: scryptをproof-of-workのアルゴリズムとして使用。ブロックの生成速度を速くする実装を行っており、Bitcoinの10分毎の代わりに2.5分毎にブロックが生成。”bitcoinが金ならばlitecoinは銀”。
  • Dogecoin: Litecoinのフォーク。
  • proof-of-workの代替手段: proof-of-stake: 利付き担保のように通貨の”所有を主張(stake)“することができるシステム。
  • 通貨ではないAlt chain: Namecoin(分散型のキーバリューの登録・移管プラットフォーム)
  • Ethereum: チューリング完全な契約処理と、それを実行するプラットフォーム。

Bitcoinの安全性

  • 鍵の管理はユーザーに任せよ、トランザクションはブロックチェーンに任せよ
  • 物理的なbitcoinの保管 ペーパーウォレット
  • ハードウェアウォレット

色んな疑問が解決されました

例えば、トランザクションプールってどうなってるのか、マイナーへの報酬の計算ロジックはどうなっているのか、 フォークが起きた場合にどうやって収束していくのか等々、色んな疑問が解決されました。

Bitcoinについての理解が一段と深くなるのは間違いないです。 ぜひ読んでみてください -> [PDF] Mastering Bitcoin (日本語訳版)

@takp