世の中ではビットコインをはじめとする仮想通貨がブームとなっているが、正直その仕組みが分かっておらず、手を出すのが怖い。
まあクレジットカードの仕組みを知らないとクレジットカードが使えないというわけでもなく、世の中のインフラには乗っかっている私だが、ビットコインについては昨今の事件の話もあり、その仕組みをしっかりと勉強してみたい。
というわけで、本を1冊買って読んでみることにした。少し古い本で、Amazonのレビューによると情報も古いみたいなのだが、まずは基本的な部分を理解する必要があるので、それを学んで行きたい。少しずつ読みながら、まとめていくことにした。
- 作者: アンドレアス・M・アントノプロス,今井崇也,鳩貝淳一郎
- 出版社/メーカー: エヌティティ出版
- 発売日: 2016/07/14
- メディア: 大型本
- この商品を含むブログ (7件) を見る
関連記事
- 「Mastering Bitcoin」を読む (第1章 イントロダクション・第2章 ビットコインの仕組み)
- 「Mastering Bitcoin」を読む (第4章 鍵、アドレス、ウォレット)
- 「Mastering Bitcoin」を読む (第5章 トランザクション)
- 「Mastering Bitcoin」を読む (第8章 マイニングとコンセンサス)
これは著者が読んだ内容をまとめているだけなので、誤訳、理解不足により誤っている可能性があります!鵜呑みにしないようにお願いします。 文章の途中に挿入している画像は、 https://www.bitcoinbook.info/translations/ja/book.pdf に含まれている画像を使用させていただいています。
第01章 イントロダクション
- ビットコインとは、デジタルマネーのエコシステムの基礎となるコンセプト。
ビットコインは分散されたpeer-to-peerのシステムではなく、中央サーバを持たない。
ビットコインは、マイニングという処理を通じて取引の検証と記録を行う。
- 平均して10分に1回の頻度で、過去10分の取引が検証され、その解の発見者にはビットコインが新たに与えられる。
- これがマイニングに相当する。
- この報酬は、トランザクションに含まれる手数料 (インプットとアウトプットの差分)から支払われる。
ビットコイン以前のデジタル通貨
デジタル通貨は、以下の2つの問題を解決する必要がある。 1. そのデジタルマネーは本物と信じて良いか?偽物ではないのか? 2. このデジタルマネーが、私ではなく他人のものと主張されることはないか?(二重支払問題)
一方で、ビットコインは以下の4つの鍵となるイノベーションを組み合わせる。 - 分散化されたpeer-to-peerネットワーク(ビットコインプロトコル) - 公開された取引元帳(ブロックチェーン) - 数学に基づきあらかじめ決定された、分散化された通貨発行(分散マイニング) - 分散化された取引検証システム (トランザクションscirot)
ビットコインの歴史
- サトシ・ナカモトによる論文をベースにしている。
- 2009年にビットコインネットワークがスタート。現在の分散コンピュータの規模は、すーぱコンピュータの処理能力の合計を超えている。
- 「ピザンチン将軍問題」に対する現実的な解法を示している。
- 信用できない潜在的に危ういネットワークにおいて、情報を交換することで、構成員全体の行動について合意できるか、というもの。
ビットコインを誰がどのように使うのか
- 少額物品の販売 : ビットコインのソフトウェア・取引所・基本的な取引について説明する。
- 高額物品の販売 : 「51%合意攻撃」
- 海外請負サービス : ビットコインを用いたアウトソーシング、請負サービス、国際電信送金
- 通貨や国境を超えたグローバルな資金調達 : 慈善団体への寄付の透明性の向上
- BtoBビジネス : ビットコインを用いた国際的な資金決済
- マイニング : ビットコインネットワークの堅牢性を高め、通貨発行を担っている専用システム
ビットコインをはじめよう
- 多くのクライアントソフトウェアが存在する。主に3つのタイプ
- フルクライアント : ビットコインが始まって以来のすべての履歴を保持している。
- 軽量クライアント : ユーザのウォレット保持するものの、取引情報などは、第三者が管理するサーバを介して行う。
- ウェブクライアント : ウェブブラウザを通じてアクセスするもの。ユーザのウォレットを第三者のサーバに保持している。
クイックスタート
- いくつかの方法でクライアントソフトウェアをダウンロードして、自分の「ビットコインアドレス」生成する。
最初のビットコインを手に入れる
ビットコインを送る・受け取る
第02章 ビットコインの仕組み
トランザクション、ブロック、マイニング、ブロックチェーン
ビットコインの1つのトランザクションを負うことで詳細にビットコインの仕組みを調べる。
登場人物: ジョー、アリス、ボブ
ビットコイン概観
コーヒー代金の支払い
アリスがボブのカフェでコーヒーの代金を支払う。支払いの総額は0.015BTCである。 これは1.5USDに相当する。
このトランザクションでは、アリスが支払いを確定させるためにsendボタンを押し、ボブがトランザクションの完了を確認する。
ビットコインは様々な額で取引を行うことができる。 最小単位は「satoshi」で、1/100,000,000 bitcoinのことを指す。
ビットコイントランザクション
- トランザクションには、1つ以上の「インプット」「アウトプット」が記載されている。
アリスがボブのカフェで支払いをするとき、
コーヒー代の支払いのトランザクションをボブのビットコインアドレスと紐づけることによって、このトランザクションのアウトプットを使用するためには、ボブの署名が必要になる。
ビットコイントランザクション
1つのインプットと2つのアウトプットの形式 (一般的なトランザクション)
- インプット0 : From アリス、アリスによる署名付き
- アウトプット0 : To ボブ
- アウトプット1 : To アリス (おつり)
集約型トランザクション (小さなコインや小額紙幣をまとめて大きな額の紙幣にするトランザクション)
- インプット 0 ... N
- アウトプット0
分配型トランザクション (企業内での給与の支払いなど)
- インプット 0
- アウトプット 0 ... N
トランザクションの構築
トランザクションを作ったり署名を行うのに、ビットコインネットワークに接続されている必要はない。 最終的にそのトランザクションが送られれば問題ない。
正しいインプットをどのように得るか
ほとんどのウォレットは、未使用トランザクションアウトプット(UTXO)を保持するデータベースを持っていて、ウォレットの秘密鍵でロックされている。
フルインデックスのウォレットを持っている場合は自分が十分な量のウォレットを持っているかどうかを確認できるが、そうでない場合は、ビットコインネットワークに問い合わせることができる。
アウトプットの生成
アリスの資金 0.1BTC からコーヒー代金 0.015BTC を支払うとおつりが発生する。アリスは0.85BTCのおつりをもらう。
さらに、トランザクションがビットコインネットワークで早く処理されるために、アリスのウォレットは少額のトランザクション手数料を加える (0.0005BTC)。 この差額がトランザクションの手数料となり、ブロックチェーンに組み込むための手数料としてマイナーにより徴収される。
トランザクションを元帳にどうやって取り込むか
トランザクションがビットコインネットワークに取り込まれてはじめて、ブロックチェーンの一部になる。
ビットコインネットワークへのトランザクションの送信
ビットコインクライアントは、いくつかほかのビットコインクライアントとつながることで、ビットコインネットワークに参加している。 トランザクションとブロックをすべてのビットコインクラインとに伝えることである。
どのようにビットコインネットワークを伝わっていくのか
アリスのウォレットはボブのウォレットと直接つながっている必要はなく、ビットコインネットワークを通じてPeer-to-Peerで転送されていき、数秒以内で大半のノードに到達する。
ボブの視点で見た時には
アリスからボブへのトランザクションが、ボブのウォレットに到達すると、ボブのウォレットはそれを認識する。 これは、このトランザクションがボブの秘密鍵でのみ復号できるアウトプットになっているからである。
この時点で、ボブは多少のリスクがあるものの、このトランザクションがすぐにブロックに含められ承認されるものとみなすことができる。
※ 少額の場合はブロックが生成されるまで10分も待つ必要はなく、コーヒー一杯のような少額の商品には必要がない。
ビットコインマイニング
- マイニングにより検証されブロックに取り込まれるまでは、共有されている元帳であるブロックチェーンの一部になることはできない。
マイニングにより、トランザクションが「ブロック」の中に取り込まれる。
マイニングの目的
マイニングとは数独パズルのようなものである。
- 約10分間で解けるように難しさが自動的に調整される。
- 数独パズルは、解くのは難しいが、検証は容易である。
- マイナーは約10分ごとに開放を見つけるレースに参加している。
ブロック内のトランザクションのマイニング
ビットコインネットワークのノードが、新しい検証されていないトランザクションを発見すると、ノード内の取らなくしょんプールに加える。
マイナーは、未検証のトランザクションを取り出してそれをブロックに加える。
さらに、ブロックの有効性を証明するための難しい問題を解く。
マイナーは、自分が作るブロックに、特別なトランザクションを追加する。
アリスのトランザクションを含む、419個のトランザクションを含むブロックをジンが解法を見つけ、#277316として放出している。
- 数分後に、新しいブロック#277317が別のマイナーにより放出され、このブロックは直前のブロック #277316 をベースとしているため、アリスのトランザクションを含むブロックの信用が強化されることになる。