プログラミングのゴミ箱

日々の学習の中で知らなかったことについて、調べたことを解説します。

ブロックチェーンの仕組み

EnterChain(https://enterchain.online/home)のPhase1で学習したことの備忘録。

ブロックチェーンとは

 データの改竄を不可能(困難)にする技術。その応用性の高さから様々なビジネスに結び付けられることが期待される。
 一般的にはビットコインなどの暗号資産と共に知られているが、ブロックチェーン = 暗号資産ではない。
 ブロックチェーンの公開範囲によってパプリックチェーン(全ての人に公開)とコンソーシアムチェーン(複数企業に公開)、プライベートチェーン(単一企業のみで使用)というふうに分類され、暗号資産はパブリックチェーンに分類される。

ブロックチェーンの仕組み

 ブロックチェーンに記述されるいくつかのデータをまとめたものをブロックと呼び、ブロックの中にはデータとNonce(Number used once)、前のブロックのハッシュ値が格納される。
 ハッシュ値とはハッシュ関数と呼ばれる関数によって生成される値のことを指し、ハッシュ関数はいかの特徴を持っている。

  1. 関数を通したあとのデータからは、元のデータがなにかわからない。
  2. どんなデータをハッシュ化しても、同じ長さのハッシュ値になる。
  3. 同じデータを何度ハッシュ化しても、常に同じハッシュ値になる。

 新しいブロックを生成するには、先程の3つのデータをハッシュ化した値の先頭の何文字かが0となるように調整されたNonceを見つけなければならず、ビットコインでは条件を満たすNonceを見つけた人に報酬としてビットコインが支払われる。
 それぞれのブロックは前のブロックのハッシュ値を持っているため、データを改ざんしようとするとそれ以降につながっているすべてのブロックのNonceを見つけなければならず、Nonceの発見には膨大な計算量が必要となるため、改ざんが困難な仕組みとなっている。

ブロックチェーンのメリット・デメリット

メリット

  • 非中央集権的にデータを管理出来る(第三者を介さず個人間の取引が実現できる)。
  • サービスが停止しにくい(ゼロダウンタイム)。
  • トレーサビリティが高い(データの行方が追える)。

デメリット

  • 最初に入力されるデータが誤りだった場合に見抜くことができない(オラクル問題)。
  • 処理速度が遅い(スケーラビリティ問題)。

 スケーラビリティの問題については様々な解決策が考案されている。
 例えば、ビットコインでは10分に一つのブロックが生成されるが、これを単純に5秒に一つにすると、処理速度は120倍になる。
 しかし、ブロックの生成間隔を短くすることで新たな問題が生まれる。それは、異なる人が同時にマイニング(Nonceを見つける作業)を行う確率が高くなってしまうことである。
 もし複数人が同時にマイニングを行った場合、チェーンを分岐させることで対応する。複数のチェーンが同時に存在する環境を作り出し、あとからチェーンの長い方をメインのチェーンとするというものである。これをフォークという。
 ブロックの生成感覚を短くしてしまうとフォークされたチェーンがたくさん存在することになり、チェーンが複雑になってしまう可能性がある。
 処理速度とチェーンの管理のしやすさのバランスを取らなければならない。

Ethereum(イーサリアム)

 イーサリアムにはスマートコントラクトと呼ばれる機能があり、ブロックチェーン上でプログラムを自動で実行してくれる。この機能のおかげで、イーサリアムは単なる通貨としてではなく、様々なアプリケーションを開発するプラットフォームとなっている。
 スマートコントラクトを操作するためのツールとしてSolidityという言語が有名である。