サルでもわかる?ブロックチェーン復習

ブロックチェーンについて復習します
これを読めばサルでもわかるかも?

1295 views

サルでもわかるように言ってくれ

「暗号技術」と「P2Pネットワーク」と「コンセンサスアルゴリズム」を使ってるわ

ごめん、サルにはわからん

「暗号技術」と「PC同士をつなげる技術」と「データの正しさを決めるアルゴリズム」や


暗号技術

ブロックチェーンではたくさんの暗号技術が使われている。その中でも特に重要なのは以下の5つや
1. ハッシュ関数
2. 公開鍵暗号方式
3. 共通鍵暗号方式
4. 楕円曲線暗号
5. 電子署名
それぞれ解説していくで

ハッシュ関数

ハッシュ関数でハッシュ値を計算することを「ハッシュ化」というんや
(別名:ダイジェスト)
ハッシュ関数には4つの特徴があるで

  • 一方向にしか計算できず、逆算ができない(不可逆性)
  • 入力データが少しでも異なると出力データが大きく異なる(機密性)
  • 入力データの長さを問わず、出力データの長さは同じ(固定長)
  • 入力データから出力データを簡単に計算できる(処理速度)

これらの特徴を生かすことで、「データの正しさ」を証明したり、
「データの容量」を節約したりできる。

公開鍵暗号方式

暗号には「暗号化」と「複合」の二段階があるで。
公開鍵暗号方式は、「暗号化」と「複合」で異なる鍵を使う方式やで。

使う鍵は「公開鍵」と「秘密鍵」や。

  • 「公開鍵」=>広く公開している鍵
  • 「秘密鍵」=>自分だけが持っている鍵

ここで大切なのは、公開鍵から、秘密鍵が特定が不可能な点。
取引データのやり取りとかいろんな場面で使われている。

共通鍵暗号方式

共通鍵暗号方式は「暗号化」と「複合」で同じ鍵を使う方式や。
共有する相手が鍵を持つ必要があるから、相手が増えるほど管理がややこしいんよ

楕円曲線暗号

「楕円曲線」とは、楕円曲線離散対数問題という数学問題を利用しているんや。
難しくてサルにはわからんから要約すると、与えられた情報から特定の情報が逆算しにくいんや。
具体的には「秘密鍵」と「公開鍵」を作成するときに使うんやでb

電子署名

「電子署名」とは、データが誰に作成されたかを検証する技術や。

P2Pネットワーク

P2Pネットワークって何

「P2Pネットワーク」とは、Peer(ぴあ)と呼ばれる立場が対等なPC同士が、相互にデータを融通して形成されるネットワークや。
この時、ネットワーク上にあるPCを「ノード」と呼ぶで
イメージ図
[特徴] * システムがダウンしない * ネットワークの分断耐性が強い * データの一貫性維持が難しい

ブロックチェーンにおけるP2P

世界中のPCがブロックチェーンを保持している。
ブロックチェーンの取引データなどは、ノードからノードへバケツリレーして、ネットワーク全体に広めるんやで。

P2Pの種類

P2Pネットワークには種類がある

  • フルノード
  • SPVノード

フルノード

「フルノード」はブロックチェーンのすべてのデータを保持しているノードや。
かなり容量を食うから、相当タフなPCでないと難しいで。
(2019/09時点で、200GBだったりする)

SPVノード

「SPVノード」は、ブロックチェーンのブロックヘッダ(要約)の情報のみ持つで。
足りない部分は「フルノード」に問い合わせるんや。
容量が軽く済むで(だいたい1000分の1くらいにはなるらしい)

コンセンサスアルゴリズム

P2Pを助ける仕組み

さっき、P2Pの特徴に「データの一貫性維持」が難しいってかいたやろ?
何とかして「正しいデータ」を判断する必要がある。
そのための仕組みが「コンセンサスアルゴリズム」や。

一つの真実を決める

P2Pは「データの一貫性維持」が難しいんや。つまり、何が正しいデータかわからんくなる。
そこで、データ書き換えとか怖いってなるんや。

この不正を防ぐためにP2Pネットワーク上のすべてのノードがただ一つの正しいデータを共有する必要がある。
加えて、不正を検出する必要もある。
そのために提案されたのが「Proof of Work」や

Proof of Workとは

「Proof of Work」とは、不特定多数のPCによる演算を行って、ブロックチェーン全体の整合性を保つアルゴリズムや。
具体的には

  • 取引データを要約したデータ
  • タイムスタンプ

など多数のデータをまとめるんや。
そのデータに「ナンス(Nonce)」を加えて、ハッシュ化するんや。
この値が一定の値より小さくなるまで計算を続けるんやで。

これを「マイニング」と呼ぶ。これやる人をご存じ「マイナー」と呼ぶで。

具体的には、「ナンス」の値を変化させるんや。
ハッシュは、少し値を変えるだけで出力が大きく変わる。この仕組みを使ってるんやな。
あ、「マイニング」成功したら報酬もらえるで。
(2019/09時点で12.5BTC。約750万円。ただし、半減していく)

Proof of Workのプロセス

  1. ネットワーク上を伝播する取引データを受信して記録する
  2. 取引データをまとめてブロックを生成する
  3. ナンスを少しずつ変えながら大量のハッシュ計算を行う
  4. 条件に合うナンスを見つけた人が、ブロックを完成させてノードに報告する
  5. 他ノードはブロック中身とナンス値が正しか検証する
  6. 正しいとき、ブロックを完成させた人に報酬が支払われる

Proof of Workのデメリット

  1. 電力の過剰使用:膨大な計算を行うので電力めっちゃ食うで
  2. ハッシュパワーの寡占化:
    ハッシュパワーはネットワークの演算能力のことや。多くの計算資源が「マイナー」に集中してもうた。
    一部の「マイナー」に力が集中することはかなりまずいで。なんせ、分散が前提の技術や。
    さらに、このままだと「51%攻撃」が理論上できてしまうんや

51%攻撃

悪意のある組織や個人によって、不正な取引を正当化することや。

ほかのコンセンサスアルゴリズム

この弱点を克服するために、いろいろアルゴリズムは出て来とるで。
例えば、NEMはPolって仕組みを使っとる

Page 3 of 9.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

owl

自己紹介

駆け出しエンジニア
だいたいweb系をかじってる
最近ちょとブロックチェーンに興味出てきた

サイト/ブログ

https://github.com/owl0109

ツイッター

@kijiken1