はじめに
- ビットコインとブロックチェーン を読んだので自分の理解のためにざっくりまとめる。
ビットコインとは
- ブロックチェーン上で管理される仮想通貨
ブロックチェーンとは
- ビットコインの取引が記載された分散管理台帳
ビットコインの利用の流れ
-
ビットコイン利用者
が「私から誰々に何ビットコイン送金する」という取引(トランザクション
)を作成してビットコインのネットワークに申請する - トランザクションはネットワーク上に伝播して各ノードに共有される
-
ビットコインマイナー
が複数のトランザクションをまとめてブロック
を作成し、既存の管理台帳(ブロックチェーン
)へ新たな取引を追記する - 新たな取引が追記された管理台帳がネットワーク上に伝播されることで取引が成立となる
トランザクションとは
- ビットコインの取引データ
- ビットコインの管理台帳上にはだれが何ビットコイン持っているという直接的なデータはなく、だれがいくらもらったという過去のすべてのトランザクションを累計して各ユーザーの所持ビットコインを算出するしくみになっている。
- なので新たなトランザクションを作成する際には「誰から誰にいくら送る」という形ではなく、過去のトランザクションを参照して「このトランザクションでもらったビットコインを別の誰々に送金する」という形をとる
- 各トランザクションには鍵がかけられており所有者にしか利用することができない。この鍵がウォレットである。
- 新たなトランザクションを作成する際、元になるトランザクションと新たなトランザクションのコイン量の差額がトランザクション承認の手数料となり、マイニングが成功したユーザーの所持コインとなる。手数料が高いトランザクションほど優先して処理されやすい。
トランザクション承認の詳細
- 発行されたトランザクションはまとめられてブロックとなる
- ブロックチェーンはブロックの連結リストであり、古いトランザクションを含むブロックを親としてより新しいトランザクションが子ブロックとなる管理台帳である
- 新しいブロックは既存のブロックチェーンの一番新しいブロックを親とする
- ブロックはデータ列でありハッシュ関数にかけることで値が得られる
- ブロックには任意の値を入れられるフィールド(
nonce
)があり、この nonce フィールドを調整してブロックをハッシュ関数にかけた結果の値
が目標とする値
よりも小さくなった時に新しいブロックがブロックチェーンに追記される資格を得る - この都合のいい nonce の値を探すことがマイニングと呼ばれる
- 前出の
目標とする値
は過去の取引履歴から算出され、その時々のマイニング参加者の処理能力で 10 分程度の計算が必要となる値に随時更新される
マイニングとは
- ブロックチェーンに新たなブロックを追記すること
- マイニングに成功するとトランザクション手数料と新規発行コインがもらえる
- 新規発行コイン量はブロックチェーンのブロック数に対応して決まっており、ブロック数が増えるごとに発行量が減っていき最終的にはゼロになる。
安全性について
-
自分のトランザクションが他人に勝手に使われることはないのか?
- トランザクションを使用できるのは対応するウォレットを持っている人だけ
- ウォレットが盗まれればトランザクションも勝手に使われてしまう
- ウォレットの鍵から子供鍵を生成して利用することで紛失や盗難のリスクを減らすことができる
- 鍵はただの文字列なので印刷して金庫にしまっておくなどすることができる
-
管理台帳が改ざんされることはないのか?
- トランザクションを改ざんするとブロックのハッシュ値が変わるので nonce の計算をし直す必要が出てくる。古いブロックであればあるほど影響範囲が大きくなり、現実的な時間で計算しなおすということが難しくなるので、これをもって安全性の根拠とする
- 理論的にはネットワークの参加者の多くが攻撃者に協力することで攻撃を行うことは可能だが、ネットワーク全体の処理力が指数関数的に成長し続けているので現実的ではないし、攻撃に対しいてはすぐにビットコインコミュニティによって対応策がとられることでしょうということ。