CAP定理を覚えておこう
ブロックチェーンの向き不向きを整理する前に、CAP定理について触れておきましょう。
CAP定理とは、Webサービスを運用する上で「一貫性」「可用性」「分断耐性」の3つの性質を同時に満たすことは不可能であるという定理です。
一貫性(Consistency)
サービス利用者が常に最新のデータにアクセスすることができる。
可用性(Availability)
システム障害によりサービスが停止しない、つまりシステムに単一障害点が存在しない。
分断耐性(Partition-tolerance)
システムのネットワークが遮断された場合でも、サービスが停止しない。
この定理は、完璧なシステムなど存在せず、何かを選ぶなら何かを捨てなければならないということを表しています。
Vérifiez la progression de votre leçon
Une fois que vous avez compris la leçon,
cliquez sur le bouton "Vérifier" !
ブロックチェーンにおけるCAP定理は?
それでは、CAP定理にブロックチェーンを当てはめてみましょう。
ブロックチェーンは、無数のノードで構成され、全てのノードが全く同一の情報を保有しているのでした。
これはつまり、システムに単一障害点が存在しないことを表しています。
また、ゼロダウンタイムを実現していることからも、ブロックチェーンは「可用性(Availability)」に長けていることがわかります。
さらに、ブロックチェーンの通信はPeer−to−Peer型であることも学習しました。
これはネットワークのある部分が遮断されても問題なく通信できることを示しています。
従って、分断耐性(Partition-tolerance)の性質も備わっていることがわかります。
一貫性(Consistency)についてはどうでしょうか。
ブロックチェーンは無数のノードによるPtoP型の通信方式によって構築されていました。
そのため、全てのノードに同一のデータが伝播されるには、実は少しばかり時間がかかるのです。
要するに、とあるノードが持っているデータと別のノードが持っているデータが、リアルタイムでは一致しないということになります。
これでは常に最新のデータにアクセスできるという一貫性(Consistency)の性質を有しているとはいえません。
Vérifiez la progression de votre leçon
Une fois que vous avez compris la leçon,
cliquez sur le bouton "Vérifier" !
ブロックチェーンの向き不向きを理解しよう
CAP定理から紐解いたブロックチェーンの性質に加え、レッスン②「パブリックチェーンの特徴を理解しよう」で学習した「信頼不要(trustless)」と「透明性(transparency)」の特徴から、ブロックチェーンの向き不向きを整理しましょう。
ブロックチェーンが向いていること
ブロックチェーンは、改ざんされると困るデータを記録することに向いています。
例えば、不動産や証券の所有権、大学の卒業履歴などが挙げられます。
これらのデータは、全て公開されていても問題ないですし、無数のノードに同一のデータを保有しておいてもらうことで、不正にデータが書き換えられるといった心配もありません。
ブロックチェーンが向いていないこと
ブロックチェーンは、即時性が求められるデータを記録することには向いていません。
CAP定理でみた通り、ブロックチェーンはデータの一貫性に欠ける部分があります。
将来的にブロックチェーンの開発が進む可能性はもちろんありますが、ブロックチェーンは実は決済には不向きなのです。
決済は、その場で商品と交換して支払いを確定させる必要があるため、全てのノードに決済データが行き渡るまでに少し時間のかかるブロックチェーンはあまり適していません。
一方で、海外送金などの少し時間がかかっても問題ないような場面では、ブロックチェーンを活用するメリットは大いにあるでしょう。
ブロックチェーンはビットコインから始まっているため、金融のための技術と誤解されがちですが、金融以外の分野でも多くの活用事例が出てきています。
また、ブロックチェーンは閲覧されて困るデータを記録することにも向いていません。
何度も学習してきた通り、ブロックチェーンに記録されるデータは全て公開されています。
そのため、個人情報などの閲覧されて困るようなデータは絶対に記録してはいけません。
ブロックチェーンの実用化を検討する際には、「ブロックチェーンに何を記録するのか」この観点が非常に重要になるのです。
Vérifiez la progression de votre leçon
Une fois que vous avez compris la leçon,
cliquez sur le bouton "Vérifier" !