ブロックチェーンとは?事例を交えてわかりやすく解説! 更新

■はじめに

2020年の戦略的テクノロジ・トレンドのトップ10に入るほど、近年「ブロックチェーン」に対する期待が高まっています。一方、「ブロックチェーン」と聞いても一般的には「仮想通貨の技術」というイメージが強く、実はブロックチェーンの仕組み自体や活用実態を詳しく知らないという方は多いのではないでしょうか。
今回のNTC技術コラムでは、ブロックチェーンについて実際の事例を交えながら分かりやすく解説していきます。
1.ブロックチェーンとは?
2.コンセンサスアルゴリズムとは
3.スマートコントラクトとは
4.ブロックチェーンの活用事例
5.やってみよう!ブロックチェーン

■ブロックチェーンとは

ブロックチェーンとは、一言でいうと「誰も中央で管理していない自律した仕組み」です。
ブロックチェーンは仮想通貨「ビットコイン」の基盤となる技術として発明されました。ビットコインが広く世に知られるに従い、ビットコインの核心的な技術であるブロックチェーンを他にも応用できるのではないかと考えられ、近年は金融や流通、契約等の分野で注目が集まっています。

>ブロックチェーンの成り立ち
そもそも、オンライン上での電子決済は、以前から実現できていました。
ただし、それは各利用者の残高や履歴を一元管理するサーバの存在が多重支払いを防止していたがゆえの実現でした。言い換えると、下記の図のように中央集権的な存在が必要でした。

この一元管理するサーバ(銀行のような第三者機関)を撤廃する方法として、一元的な取引履歴をみんなで分散して共有するシステムを構築し、取引履歴を時間順に積み重ね、それを書き換えできない形で記録し、過去に多重支払いが起こっていないことをみんなが確認できる仕組みを考えました。この仕組みが「ブロックチェーン」です。

>ブロックチェーンの特徴
ブロックチェーンの特徴は、主に以下の3点に絞ることができます。
・第三者機関が不要
・システムダウンが起きない
・データの改ざんが困難

〇第三者機関が不要(P2P方式)・システムダウンが起きない
ブロックチェーンは銀行のような第三者機関を介さず、ユーザー同士でシステムを管理しあう構造になっており、この形式をP2P(ピアーツーピア)方式といいます。各ユーザ(ノード)には、同じ取引履歴(台帳)が存在するため、何らかの理由で使用できないノードが発生しても、全体に影響しないようになっています。事実、ビットコインの例でいうと、ビットコインのブロックチェーンは2009年から始まって10年以上経っていますが、ネットワークがダウンしたことはなく、ブロックチェーンにより自律分散システムが実現されています。

〇データの改ざんが困難
ブロックチェーンでは、およそ10分おきに、発生した取引(トランザクション)を「ブロック」という塊にまとめます。そして、新しいブロックには「直前のブロックのハッシュ値」を埋め込むことで、ブロック同士をチェーンで繋ぐように関連付けています。
途中のブロックを改竄しようとするとそれ以降の全てのブロックも「ハッシュ値の整合性」を保つために変更しなければならないため、改竄が難しい構造になっています。全てのブロックを書き換えれば変更可能ですが、ブロックを生成するには、時間のかかる計算処理をする必要があるため、事実上改竄不可能となっています。
※ハッシュ値とは:
ハッシュ値とはアルゴリズム(ハッシュ計算)により算出された一定量の情報をコンパクトにまとめるデータのこと。情報が少しでも変更されると、計算されるハッシュ値は全く異なるものになります。

>ブロックチェーンを支える様々な技術
先述の「P2Pネットワーク方式」に加え、ブロックチェーンは「コンセンサスアルゴリズム」「スマートコントラクト」「偽造防止・暗号化技術」といった複数の技術の組み合わせで実現されます。
後程、「コンセンサスアルゴリズム」「スマートコントラクト」について詳しく説明します。

>ブロックチェーンの適用範囲の広がり
ビットコインという、仮想通貨から始まったブロックチェーンですが、近年は仮想通貨以外の金融領域や非金融領域にブロックチェーン技術が応用化されています。ブロックチェーン技術の応用はその発達段階に応じてブロックチェーン1.0,2.0,3.0と分類され、数字が大きくなるにつれて適用領域は拡大します。
数字が大きい技術より優れているわけではなく、それぞれ得手・不得手があり、用途によって使い分けられます。これらは、相互に影響を受けながら発展することが見込まれます。

■コンセンサスアルゴリズムとは

コンセンサスアルゴリズムとは台帳にブロックを追加する為に合意形成を行う仕組みのことです。非許可型ではお互いに信用できないノードであるため厳格なコンセンサスアルゴリズムを構築する必要があります。

>PoWについて
PoWはビットコインに採用された、ブロックチェーンで初めてのコンセンサスアルゴリズムになります。PoWではブロック内のナンスという無意味な値を設定し、ハッシュ化(SHA-256)を行うという作業を総当たり形式で繰り返し行います。ハッシュ化とは文字列を一定の長さの数字(10進数とは限らない)に変換することです。
このハッシュ値が設定されているディフィカルティターゲットを下回るとブロックとして追加を行う権利を得ることができます。

ビットコインではこのディフィカルティターゲットは約2週間に一度調節され、ブロックの生成時間が10分となるように調整されます。
これはマシンパワーが指数関数的に伸びている為であり、ブロックの生成感覚が短くなることを防いでいます。
このハッシュ値からナンスを逆算することができないのでひたすらハッシュ化を行う以外でこのナンスを発見することはできません。
新しいブロックが発見されるとナンスが正しいものであるかを検証する必要があります。ビットコインの例では現在の難易度でこの条件に合致するナンスを見つける為には約600垓回の計算を行う必要があります。(1垓=1京の1万倍=1兆の1億倍)
このような負荷をかける作業を検証することは困難ですが、PoWでは検証をする際はハッシュ化するのみでよいので一瞬で検証を完了させることができます。
これで同様に検証を行っている他の人が確認を行い、正しいかブロックであるか判定します。このように演算力を担保として、合意の形成を行っています。

>PoSについて
この検証をコインの所持量を担保として行っています。PoSでは様々な方式があり、PoWと同様に計算を行わせるが、コインの所持量によってディフィカルティターゲットの値が大きくなり、ブロックの生成がしやすくなるという方式やコインの所持量の割合によってブロックの生成権を与えるといった方式があります。PoSではPoWの取引承認のスピードが遅い、マイニングの独占化、多大な電力の消費といったデメリットを解消しています。
2020年内に暗号通貨で2番目の規模をもつEthereumがPoSに移行する予定です。優れた仕組みのPoSですが、あまり実績がなく導入が進んでいませんでした。Ethereumで成功を収めればさらに導入が進んでいくと考えられています。

■スマートコントラクトとは

スマートコントラクトではコインを送金するのみでなく、その他権利等も送ることができるようになったものです。

これが可能になったことである条件が満たされたとき契約を実行させるといったことができるようになりました。これはゲームにも適応でき、敵を倒す(すなわち状態が変化させる)ことで特定のアイテムを倒した人の所持物にしたりするといったことも可能になります。
このようにブロックチェーンとスマートコントラクトを組み合わせることで、より幅広い分野での活躍が期待させるようになりました。後程実際のサービスの例としてホテル予約サービス「LockTrip」を紹介します。

■ブロックチェーンの活用事例

ブロックチェーンを論ずるにあたり、ブロックチェーンを仮想通貨を実現するための1構成要素としてとらえる系統と、ブロックチェーン自体をシステムの基幹技術としてとらえる系統の2つが存在しており、さらに近年のブロックチェーン3.0の隆盛に伴って金融・非金融の軸を追加したマトリクスでユースケースを検討・選定する傾向が出始めています。

それでは、ブロックチェーン技術の具体的な活用事例を3点ご紹介します。
>ブロックチェーン×ホテル予約(LockTrip)

「LockTrip」は、ホテル側が日程と部屋のグレードに合わせて、値段を設定します
利用者はホテル代金を確認し、代金を支払うことによって宿泊予約を行います。この際仮想通貨に変換するのですが、スマートコントラクト内で処理するので利用者もホテル側も意識する必要はありません
スマートコントラクトを活用することで代理店を通さず直接予約を行うことができるので、安く予約を行うことができます。「LockTrip」では他予約サイトと比較して平均20%程度価格が抑えられているそうです。

>ブロックチェーン×決済システム(Libra)
Facebookを主導とした世界的企業が参画し開発を行っている国際決済システムです。
当初暗号通貨としてサービスを開始する予定でしたが、多方面からの反対により決済システムに方向転換することとなりました。Libraは金融包摂を目標としており、全世界に17億人いる銀行口座を持っていない人でも金融サービスを享受できる社会を目指しています。Libraは国際送金や決済が非常に安価かつ迅速に行えるサービスです。またLibraの強みとして複数企業が複数サービスを提供することが考えられるので、サービス間で相互運用性を持つことができ、大きなプラットフォームとなる可能性を秘めています。
技術的な特徴としては「許可型」であり、許可型であることを生かしたコンセンサスアルゴリズム「LibraBFT」を採用しています。このLibraBFTの長所としてはファイナリティを得るのが早い、処理能力が高いという点があります。Bitcoinとの比較が以下になります。

2020年4月に方針転換があり、ローンチの予定が未定となってしまいましたが、大きな将来性を持ったプロジェクトとなっています。サービスインされましたら皆さんも着目してみてください。

>ブロックチェーン×サプライチェーン(Thank my farmer)
最後に、ブロックチェーンとサプライチェーンを組み合わせた事例をご紹介します。
そもそもサプライチェーンとは、一言で言ってしまいますと「物流」ということです。皆さんが普段購入しているモノは全て製造から販売といった共通した流れがあり、この流れ全体を指す言葉になります。
これまで多くの企業では、各企業内で閉じた情報をシステム管理していたため、改ざんの可能性があり、配送や製品管理に関する事前の条件が遵守されているか検証が困難であるという問題がありました。また、製品に問題が発生した際、問題発生源の特定や拡散防止に多大なコストと時間がかかり、消費者は、生産地情報などのごく一部の情報しか得ることができないといった問題もありました。

ブロックチェーンには、ブロックに前のデータのハッシュ値を格納する為一部のデータ改ざんが困難な耐改ざん性、全てのノードが同じデータを共有することによるデータの透明性、またすべての取引情報がブロックに格納されることで追跡が可能なトレーサビリティという大きな特徴がありました。この特性を生かしデータの改ざんが防止し、事前の条件順守の検証がスマートコントラクトにより厳密かつ容易に実施可能になります。
また、情報が一元的に管理されているため、問題発生時の情報のトレースや発生源の特定が短時間で可能になり、消費者は、生産地情報だけでなく、中間地点における配送状況といった、網羅性の高い履歴情報を閲覧可能になるといった改善をすることができます。
これをコーヒー豆追跡用に開発されたものが「Thank my farmer」です。農家と消費者間の透明性を向上することで乱獲や、労働基準の無視といった問題を解決し、食品の持続可能性を促進する狙いで開発されました。このアプリによって、消費者はコーヒー製品に記載されたQRコードを読み込むことによって、製品がどのように作られたかストーリーを見ることができ、食の安全性を確保することができます。
また、生産者や小売業者は先ほど挙げた問題発生時の原因究明の容易化などに加え、食品や生産者の情報を供給プロセスにつなげることで、確かな証明書を共有し、信頼性を確保することもできます。
今回は食品の例を紹介しましたが、他分野でも高度化するサプライチェーンの課題を解決する新たなソリューションになると期待されています。

■やってみよう!ブロックチェーン

最後に、今回検証としてAWSのAmazon Managed Blockchainを使用して、環境を構築して検証しましたのでその記録を掲載したいと思います。

今回挑戦したのは、単独のアカウントを用いてチェーンコードを実行することです。

出展)https://qiita.com/kai_kou/items/e02e34dd9abb26219a7e
赤枠内の環境を構築し検証しました。
今回の検証ではAアカウントから送金を行い、Aアカウントの残高が減少するか確認を行いました。

まずAのアカウントの所持コイン数を確認します。

現在の所持コインが100コインであることが確認できました
Aアカウントから送金を行っています。

Aアカウントから10コイン送っています。返り値=200は成功ということですので、送金ができているということになります。

最後に送金後のAアカウントの所持コイン数を確認します。

10コイン減って90コインであることが確認できました。

今回は単一アカウントでの検証でしたが、今後は複数アカウントを使用し検証を行います。検証が完了致しましたら更新を行います。

(以下11/30追記)

〇複数ユーザーでの検証

続きまして1つのチャネルにもう一人のユーザーを追加して、ブロックの共有を行うことができているか検証しました。
先ほどの図で説明しますと赤枠が広がった状態になります。

MemberAで先ほどと同様にAのアカウントの所持コイン数を確認します。

現在の所持コインが100コインであることが確認できました

MemberBでAアカウントから送金を行います。


Aアカウントから10コイン送っています。返り値=200は成功ということですので、送金ができているということになります。

まず送金を行ったMemberBでAアカウントの状態を確認します。

このようにAアカウントの所持コインが90に減っていることが確認できました。

同様に今回送金を行っていないMemberAでもAアカウントの情報が更新されているか確認します。

所持コインが90に減っていることが確認できました。
MemberAとMemberBでブロックの内容が共有できていることを確認できました。