DX推進！ブロックチェーン

![930931.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/e0c4ffd0-a3e1-1548-c450-faef562a0d73.jpeg)


エスプリフォートでは、DX W（ディー・エックス・ダブル）ラボにてブロックチェーンを用いたデジタルトランスフォーメーション（DX）を推進中です。
これら技術や他の技術などの使いどころを見極めた上で、顧客への新しい付加価値を創っていっています。

本稿では、エスプリフォートでDX推進中のブロックチェーンについてご紹介いたします。


## ブロックチェーンとは

データがノード（コンピュータやサーバー）に、トランザクションデータ（取引データ）をブロックという単位でまとめて記録し、同じブロック情報を分散して管理する技術のことです。
この技術は分散管理台帳技術とも言われており、ブロックが時系列順にチェーンのようにつながっていることから、「ブロックチェーン」と呼ばれています。


## ブロックチェーンがトランザクションを処理する流れ

１、仮想通貨を10コインたろうさんからじろうさんに送金するとします。
最初にたろうさんは、じろうさんに10コインを送るというトランザクションを作って、デジタル署名をします。

２、作ったトランザクションをたろうさんがブロックチェーンに送信すると、ブロックチェーン内ではトランザクションを受け取ったコンピュータが、それぞれ接続しているコンピュータにトランザクションを転送することにより、すべてのコンピュータにトランザクションが届いていきます。

３、各コンピュータは、受け取ったトランザクションのデジタル署名を検証し、たろうさんが所有する10コインをじろうさんへ移します。

４、各コンピュータは、処理したトランザクションを他のトランザクションを複数合わせてブロックとしてまとめ、直前のブロックとハッシュ・チェーン構造でつなぎます。
これらの処理はすべてのコンピュータで並列に実行され、互いに内容が適切かを確認して合意された場合に、たろうさんからじろうさんに10コインの仮想通貨を移動したという内容が、すべてのコンピュータに記録されます。

　
※ブロックは「コンセンサスアルゴリズム」と呼ばれる合意形成のルールに基づいて、特定の条件を満たすことでブロックを生成することができます。
※ハッシュ・チェーンとは、同一ハッシュ値をもつデータを連結リストとして構造する方法です。

## プロックチェーンの特徴は

:::note info
**データを全員で情報共有できる**
ブロックチェーンのネットワークに参加しているすべての参加者は、同じデータを共有します。
このため、自身が持つコンピュータやサーバーに格納されているブロックチェーンのデータを取得できます。
:::

:::note info
**高いトレーサビリティ（追跡可能性）がある**
トランザクションデータがブロックとして保存され、ブロックが時系列順にチェーンのように繋がって格納されています。
そのため、過去にさかのぼってデータを参照することができ、高いトレーサビリティがあります。
:::

:::note info
**改ざんが非常に困難（改竄不可能性（Immutability））、セキュリティ性が高い**
各トランザクション（データ）は連続したブロックに格納されます。
そのブロックに依存関係があるので、過去の一部を改竄した場合は、それ以降のトランザクションをすべて整合性がある形で改竄する必要があり、事実上改竄不可能です。
:::

:::note info
**不正や故障などのエラーが起きてもシステムは稼働し続けれる**

- **ビザンチン障害耐性（Byzantine Fault Tolerance: BFT）がある**
ビザンチン障害とは、故障したコンピュータはどのような振る舞いをするか全くわからない種類の故障で、悪意のあるデータを送信したり、他のコンピュータと協調をしなかったりするものを言います。
ビザンチンノード（嘘つきまたは故障したコンピューター）が一定数存在しても、ブロックチェーンは正しく動き続けます。

- **単一障害点（Single Point of Failure: SPOF）の排除**
ブロックチェーンに単一障害点はありません。
単一障害点とは、一般的なシステムは複数のハードウェアから構成されます。
システムを構成するハードウェア（サーバ、電源、通信回線など）の中で、それが故障してしまうとシステム全体が停止してしまうような単一箇所が動かないと、システム全体が障害となる箇所。
従来のシステムではマスター、コントローラーや認証局などが単一障害点となります。
:::

## ブロックチェーンってデータベースと似ていないか？
データを管理する仕組みとしては似ているところもあります。
しかし、ブロックチェーンはたとえサービス提供者であっても記録されたデータの改ざんや消去はできません。
また、参加者が自身の取引履歴を消すこともできません。
ブロックチェーンは、決してダウンせず、公正にデータを記録できることが前提であるからこそ、これらのことができないのです。

## ブロックチェーンのメリット
:::note info
**セキュリティ性が高く改ざんされにくい**
ブロックチェーンの特徴である「改ざんが非常に困難（改竄不可能性（Immutability））、セキュリティ性が高い」の通り、システムダウンしにくいようになっています。
:::

:::note info
**システムダウンしにくい**
ブロックチェーンの特徴である「不正や故障などのエラーが起きてもシステムは稼働し続けれる」の通り、システムダウンしにくいようになっています。
:::

:::note info
**情報の公明性が保たれる**
ブロックチェーンで保存された下記ブロックの内容は、誰でも閲覧可能です。
　・ハッシュ
　・タイムスタンプ
　・マイナー
　・トランザクション数
　・データサイズ

しかも取引内容は削除できないので、どのような取引が行われているかを時系列で追いながら確認できます。
これらから、公明で透明な記録として残すことができます。
:::

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

:::note alert
**データの改ざん、削除ができない**
公開したくないような個人情報の管理には向いていません。
改ざんが難しいことからもわかるように、もし、本人から個人情報の削除を求められたとしても、消すことがとても困難です。
またデータ自体は暗号化されているため、内容が他人に見られることはありません。
:::

:::note alert
**合意形成に時間がかかる傾向がある**
ブロックチェーンではデータが分散しているため、合意形成に時間がかかってしまいます。
ビットコインでも承認され、新しいブロックが生まれるのにおよそ10分かかります。
そのため、現状、即時決済ではデータを一箇所で管理している決済システムで行うクレジットカードのようなキャッシュレスのほうが優れています。
:::

:::note alert
**処理の速度と障害への耐性を両立できない**
ブロックチェーンには、第三者が取引情報をチェックして承認を行うことで、安全性を担保しています。
この取引を承認する作業をマイニングと呼んでいますが、ビットコインではおよそ10分おきにマイニングが完了し、新しいブロックが生まれています。
即時決済を行うには承認にかかる時間が長すぎるという問題があります。
この問題を解決するため、処理の速度を優先すれば流れるブロックの数を減らさなければいけません。
しかしブロックの数を減らすことで障害への耐性が下がるリスクがあるため、取引のスピードを優先するのか、それとも障害への耐性を優先するのか、現状では両立ができません。
:::

:::note alert
**データの巨大化してしまう**
ブロックチェーンの利用が進めば進むほど、ネットワークを飛び交う通信量と取引履歴として保持するデータ量は増えていくため、最終的にその量は膨大なものとなります。
時間の経過とともに、ストレージの増大では対応しきれなくなる恐れがあります。
:::

## ブロックチェーンの種類

- **パブリックチェーン**
オープンで誰でも参加できるブロックチェーンを指します。
パブリックチェーンは誰がいつ参加しても脱退しても良いため、サービスの提供者であっても、参加者の総数を把握することはできない。
また、パブリックチェーンには不特定多数の参加者がネットワークに参加するため、不正を働く者や正常に動作しない者も含まれる前提でシステムを運用する必要がある。
そのためには厳格なコンセンサスアルゴリズムを必要とする。
　

- **プライベートチェーン/コンソーシアムチェーン**
参加のために管理者の承認が必要となるような参加者を限定するブロックチェーンを指します。
プライベートチェーンは、参加者の数を常に把握でき、悪意を持つ参加者が含まれるリスクを抑えやすいことから、厳格なコンセンサスアルゴリズムがなくとも機能する。
一般的には参加者の多数決による合意形成を採用している。

## ブロックチェーンと相性が良い利用方法（スマートコントラクト）
人の手を必要としない取引プロセスの自動化がブロックチェーンと相性が良いため、スマートコントラクトが注目を集めている。
スマートコントラクトとは、取引における契約を自動で行う仕組みのことである。
コントラクト（契約）をスマートに行うという言葉通りの意味でつけられた。

スマートコントラクトの概念自体はブロックチェーンよりも古くからあります。
最初のスマートコントラクトとして自動販売機です。
自動販売機では”お金を入れる”、”ボタンを押す”という2つの行為により、”飲み物を提供する”という契約が自動で実行されます。
このようにスマートコントラクトにおける契約というのは、取引のことを指します。
インターネット上での取引について、多くがスマートコントラクトに含まれています。

このようにブロックチェーンとスマートコントラクトを掛け合わせれば、ブロックチェーン上に契約の成立条件を設定しておき、その条件が満たされたとき自動的に契約が実行されるという仕組みを実現することができ、この契約は人の手を介さず、改ざんの心配もありません。
ブロックチェーンとスマートコントラクトの組み合わせは、これからの可能性を感じさせられますね。

https://www.esprit-fort.co.jp/

https://www.esprit-fort.co.jp/recruit/