ブロックチェーンについてざっくり理解する

#はじめに
最近ブロックチェーンについて学習をしているので、忘れないようにざっくりまとめて記事として残していきます。
下記書籍を参考に学習しています。
[Pythonで動かして学ぶ！あたらしいブロックチェーンの教科書 ](https://www.amazon.co.jp/Python%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6%EF%BC%81%E3%81%82%E3%81%9F%E3%82%89%E3%81%97%E3%81%84%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-AI-TECHNOLOGY-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BEFLOC/dp/4798159441/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8&qid=1584265197&sr=8-2)

#目次
- ブロックチェーンとは?
- どのように実現されているのか

#ブロックチェーンとは?
分散型システムの弱点をうまく解消しうる、いわば次世代の分散型システム。
集中型システムと分散型システムを比較すると、こんな感じの長所/短所がある。

|      |集中型システム|分散型システム|
|:----:|:----------------------|:-----------------------|
|長所|・仕様変更への対応が簡単<br>・シンプルに設計できる|・システムがダウンしない<br>・計算能力を簡単に上げられる|
|短所|・中心のコンピュータがダウン→システム全体停止<br>・データの集中<br>・維持管理コストが高い|・ネットワークがなければ機能できない<br>・構成が複雑になる<br>・データの完全性維持が困難|

分散型システムの最大の弱点は、データの完全性維持が困難であることに因る重要なデータを扱えないという点であった。
ブロックチェーンは、分散型システムの長所を十分に活用しつつ、集中型システムのようにデータの完全性を維持するための技術。

###ブロックチェーンの特徴
1.データ改ざんに対して強い耐性を持つ
2.障害や攻撃があってもダウンしない
3.トラストレス
4.低コスト

####1.データ改ざんに対して強い耐性を持つ
ブロックチェーンは文字通り、ブロックがチェーン上につながって構造を持っている。
その繋がり、並び方には依存関係があるため、データの一部を書き換えるためには、それに依存する全てのブロックを書き換える必要がある。
そのため、強いデータ改ざん耐性を持つ。
####2.障害や攻撃があってもダウンしない
複数のコンピューターが連携してシステムを成り立たせているため、特定のコンピューターが障害/攻撃によりダウンしたとしてもその他のコンピューター達でやっていける。
####3.トラストレス
システムに参加する特定のコンピューターを信用する必要がないということ。
あるコンピューターが、どこの誰であるのかをいちいち気にしなくてもいい。
####4.低コスト
ブロックチェーンと同等の耐改ざん性/耐障害性を実現しようと思うと、かなりコストがかかるらしい。
###ブロックチェーンの種類
####・パブリックチェーン
その名の通り、パブリックなチェーン。
チェーンを構成するネットワークを管理する者がおらず、誰でも自由にネットワークに参加できるのが特徴。

|長所   |短所    |
|:-----|:-------|
|・衆人環視の元運営されるため、透明性/公共性が高い<br>|・明確な決済完了点がなく、取引の承認に時間がかかる|

####・プライベートチェーン
特定の組織や個人が、参加者や仕様を管理することで独自のネットワークを構築できるタイプのブロックチェーン。

|長所   |短所    |
|:-----|:-------|
|・取引の承認が速い<br>・情報の共有範囲を限定できる|・透明性/公共性が低い<br>・場合によっては取引が履行されない危険性がある|

####・コンソーシアムチェーン
プライベートチェーンでは特定の組織や個人がネットワークを管理していたが、コンソーシアムチェーンでは複数の組織や個人によりネットワークが管理される。

|長所   |短所    |
|:-----|:-------|
|・プライベートチェーンに比べて独裁的な運営リスクが少ない|・プライベートチェーン同様|

###ブロックチェーンの構成技術
####・ハッシュ関数
ハッシュ関数は下記のような特徴を持っており、データの正当性や容量削減に活用されている。<br>
1.出力値から入力値を逆算することが困難
2.入力値の変化によって出直値がランダムに変化する
3.入力値の長さに因らず、出力値は一定
4.入力値から出力値への計算は非常に簡単

####電子署名
あるデータの作成者を検証するための技術。
下記のようなプロセスで作成者の正当性を確認する。<br>
1.伝達したいデータをハッシュ関数を用いてハッシュ化する
2.公開鍵を用いてハッシュ値を暗号化する
3.伝達したいデータとハッシュ値の暗号化データをまとめて相手に送る
4.受信した相手は、ハッシュ値の暗号化データから秘密鍵を用いてハッシュ値を復号する
5.伝達したいデータからハッシュ値を求め、4のハッシュ値と同じであるかどうか比較する


####・P2Pネットワーク
現在メジャーなクライアントサーバ方式では、特定のサーバが全てのデータを持ち、各コンピュータはそのサーバへアクセスしてデータの読み書きを行っている。
一方、P2P方式では各コンピュータ同士がデータを相互に保持し、やりとりを行ってシステムを形成する。
データは各コンピュータ同士でバケツリレー方式で伝搬される。

####・コンセンサスアルゴリズム
上記P2P方式では、データの正しさを維持することが難しい。
それを補うための手続きがコンセンサスアルゴリズム。
ブロックチェーンでは、Proof of Workという方式を利用して、各コンピュータ間でデータの正当性を保証している。
Proof of Workのプロセスは下記のようになっている。<br>
1.ネットワーク上の取引データをある程度まとめてブロックを生成する。この時点ではブロックは未完成。
2.ネットワーク上のコンピュータ達がそのブロックを完成させるために、とんでもない量の計算をする
3.計算の結果、正解だと思われる値をブロックに追加し、ブロックを完成させる
4.その後、他のコンピュータに計算結果が正しいかどうか確認依頼する
5.他のコンピュータは計算が正しいかどうかを確認する


###ブロックチェーンの将来性
ブロックチェーンを用いて独自のネットワークを形成できるという点から、ゲームやSNSなどにおいてこれまでにない課金体系やインセンティブの用意が可能となる。
また、耐改ざん性や透明性の高さを活かして、トレーサビリティの向上や保険料支払いの仕組みを改善することが期待される。