このページでは、ハッシュ値でブロックをつなぐブロックチェーンの仕組み、P2Pによる分散型台帳、CAP定理、マイニングとナンス値がわかります。
- 一言で言うと:
- 取引の記録をハッシュ値でくさりのようにつなぎ、参加者みんなで持ち合うことで、改ざんできないようにした分散型の台帳(データベース)の話
- 分散システムの限界を示すCAP定理と、仮想通貨マイニングも出てくる
仕組み(ブロック、ハッシュ値、ナンス値、P2Pネットワーク)→ 分散システムの限界(CAP定理)→ 報酬の仕組み(仮想通貨マイニング)
覚え方の軸
- ブロックチェーンの特徴は「改ざん不可能、高い可用性、高い透明性」
- 改ざん不可能は、前のブロックのハッシュ値を次のブロックに入れてつなぐから(1つ書き換えると、それ以降を全部作り直す必要がある)
- 高い可用性は、P2Pネットワークで全員が台帳を持つから(一部が壊れても動く)
- CAP定理は「3つのうち2つまで」
- C(一貫性)・A(可用性)・P(分断耐性)のうち、同時に満たせるのは2つまで
- ブロックチェーンは、AとPを保証し、Cは完璧には保証しない
- マイニングは「条件に合うハッシュ値になるナンス値を総当たりで探す」
- 見つけた人に報酬(新しく発行された仮想通貨)
ブロックチェーンにおける関連技術(★)
① ブロックチェーンとは
- ブロックチェーン:
- ネットワーク上のコンピュータにデータを分散保持させる分散型台帳技術
- 「改ざん不可能、高い可用性、高い透明性」という特徴を持った、全く新しい分散型のデータベース
- 台帳の作り方:
- 一定期間内の取引データを入れたブロックを、ハッシュ値をジョイントとして鎖のようにつなぐことで台帳を作る
- それを、P2Pネットワークで管理する
ブロックチェーンの概要
- ブロックの中身:
- 前のブロックのハッシュ値
- 取引データ(複数)
- ナンス値
- 改ざんが見つかる流れ:
- ①ブロック100の取引データを改ざんする
- ②ブロック100から計算したハッシュ値が、ブロック101に入っている「前のブロックのハッシュ値」と一致しない
- → 不正発覚
- 改ざんが事実上不可能な理由:
- 各ブロックに入っているハッシュ値は、1つ前に作られたブロックから算出されたハッシュ値
- だから、取引データを改ざんすると、そのブロックのハッシュ値が変わり、そのブロック以降のすべてのブロックのハッシュ値も変えなければならなくなる
- ハッシュ関数:
- ブロックチェーンの必須技術
- 参加者がデータの改ざんを検出するために使う
- ナンス値:
- 一度だけ使われる、使い捨てのランダムな値
- ブロックチェーンの例え:
- 日記の各ページの最後に「前のページの内容から作った暗号(ハッシュ値)」を書いておく。昔のページを1文字でも書き換えると、次のページの暗号と合わなくなり、すぐばれる。ごまかすには、その後の全ページの暗号を書き直す必要がある
② P2Pネットワーク
- P2P:
- ノード(端末)どうしが対等な関係で、直接に通信する方式
- PtoP(Peer to Peer:ピアツーピア)ともいう
- P2Pネットワークの役割:
- 分散型の台帳管理を支える
- ブロックチェーンでは、P2Pネットワークを使って、取引データ(履歴)を参加者全員で持ち合い、管理する
- だから、一部のノードに障害が起きても、システムを維持できる
- P2Pの例え:
- 本部の金庫に1冊だけ帳簿を置く(中央集権)のではなく、クラス全員が同じ帳簿のコピーを持つ。誰か1人のノートがなくなっても、他の人のノートで続けられる
③ ブロックチェーンとCAP定理
- CAP定理:
- 分散型データベースシステムで、データストアに望まれる3つの特性「一貫性(整合性)、可用性、分断耐性」のうち、同時に満たせるのは2つまでという理論
CAP定理の3つの特性(★)
| 特性 | 中身 |
|---|---|
| 一貫性(整合性)(Consistency) | すべてのユーザが、データをすべて同じもの(最新データ)として見られる |
| 可用性(Availability) | 必ずデータにアクセスできる(単一障害点が存在しない) |
| 分断耐性(Partition Tolerance) | ネットワークの一部が遮断された場合でも、データにアクセスできる |
- 組合せ:
- CA、CP、APのどれか2つまで
- ブロックチェーンの場合:
- 時系列で発生するデータをいくつかまとめてブロックを作り、作ったブロックは、多くのノードの承認処理を経てから、ブロックチェーンに反映される
- だから、可用性と分断耐性は保証するが、一貫性についての完璧な実現は保証していない(AP)
- 単一障害点:
- その箇所が故障すると、システム全体が停止する箇所
- SPOF(Single Point of Failure)ともいう
- CAP定理の例え:
- 支店どうしの電話線が切れた(分断)とき、「全支店の在庫数を必ず一致させる(C)」なら、確認がとれるまで販売を止めるしかない(Aを捨てる)。「販売は止めない(A)」なら、支店ごとの在庫数が一時的にずれる(Cを捨てる)
仮想通貨マイニング
- ハッシュ値の制約:
- ブロックとブロックをつなぐハッシュ値には、「上位N桁がすべて0」という制約があり、これに外れるハッシュ値はジョイントに使えない
- ナンス値を探す:
- ブロックに入る取引データと、1つ前のブロックのハッシュ値は決まっている
- だから、条件を満たすハッシュ値にするには、適切なナンス値を見つける必要がある
- でも、この作業は原則、総当たりで行うしかなく、計算量が膨大
- 報酬の仕組み:
- そこで、仮想通貨ネットワークの参加者に依頼し、使えるナンス値(ハッシュ値)を見つけた人には報酬を払う
- 例えば、仮想通貨のブロックチェーンなら、成功報酬として新しく発行された仮想通貨が与えられる
- 仮想通貨マイニング:
- このように、目的のハッシュ値を得るための計算作業に参加し、報酬として仮想通貨を得ること
- マイニングは「採掘」という意味
- マイニングの例え:
- 「答えが00…0で始まる」ようになる数字を、くじ引きのように片っ端から試す。最初に当てた人が、ごほうびの金貨をもらえる
- 注意(新しい情報):
- 日本の法律(資金決済法)では、2020年5月の改正法の施行で、「仮想通貨」の呼び方が「暗号資産」に変わっている。試験の問題文でも「暗号資産」と書かれることがある
- 上のように総当たりの計算で承認する方式をPoW(Proof of Work)という。ただし、すべてのブロックチェーンがPoWではない。例えば、イーサリアムは2022年に、計算の代わりに保有量に応じて承認者を選ぶPoS(Proof of Stake)に移行した
混同しやすいペア
- ブロックチェーン / 従来の集中型データベース
- ブロックチェーンは、P2Pで全員が台帳を持つ分散型台帳。改ざん不可能、高い可用性、高い透明性
- 集中型データベースは、管理者のサーバに1つだけデータを置く
- ハッシュ値 / ナンス値
- ハッシュ値は、前のブロックから計算した値。ブロックどうしをつなぎ、改ざんを見つける
- ナンス値は、一度だけ使う使い捨てのランダムな値。条件に合うハッシュ値にするために探す
- P2P / クライアントサーバ
- P2P(PtoP)は、ノードどうしが対等な関係で直接通信する
- クライアントサーバは、サーバが中心になってサービスを提供する
- 一貫性 / 可用性 / 分断耐性(CAP定理)
- 一貫性は、全員が同じ最新データを見られる
- 可用性は、必ずデータにアクセスできる(単一障害点がない)
- 分断耐性は、ネットワークの一部が切れてもアクセスできる
- CAP定理の一貫性 / ACID特性の一貫性
- CAP定理の一貫性は、全ユーザが同じ最新データを見られること(分散システムの特性)
- ACID特性の一貫性は、トランザクションの処理でデータに矛盾が生じないこと
- 単一障害点(SPOF) / 分断耐性
- 単一障害点は、そこが壊れるとシステム全体が止まる箇所(ないほうが可用性が高い)
- 分断耐性は、ネットワークが部分的に切れても動き続けられること
- データマイニング / 仮想通貨マイニング
- データマイニングは、大量のデータから法則性や因果関係を掘り出す
- 仮想通貨マイニングは、条件に合うナンス値を探す計算に参加して、報酬の仮想通貨を得る
- 仮想通貨 / 暗号資産
- 仮想通貨は、一般的な(以前からの)呼び方
- 暗号資産は、2020年の資金決済法改正以降の法律上の呼び方(同じもの)