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 (日本語訳版)