関連するソリューション
システム開発
マネージドサービス(運用・保守)
サイバーセキュリティ
ID-Cross/クラウドサービス
業務改革
先端技術部
エバンジェリスト・フェロー 玉越 元啓
Cutting-Edge Technology Department / Motohiro Tamakoshi
先端技術部の玉越です。
今回のテーマは、「ブロックチェーン」についてです。
報道や経済関連の記事で、まだまだビットコインの同義語としてブロックチェーンという単語が使われる場面を見かけます。その結果、ビジネスにおいてブロックチェーンを理解して活用方法を考えるときに、暗号通貨の範疇を超えられなくなってしまいます。では、ブロックチェーンとはどのような技術なのでしょうか?
- ブロックチェーンとは
- ブロックチェーンを構成する仕組み~ブロックとは?チェーンとは?
- ブロックチェーンの主要な要素(台帳/スマートコントラクト/合意形成)
- ブロックチェーンの特徴
- ブロックチェーンの利用シーン
- ブロックチェーンの種類と利用できるサービス
- 実装してみました
ブロックチェーンとは
ブロックチェーンとは、ネットワークに接続した複数のコンピュータによりデータを共有するしくみのことで、情報を記録するための技術のひとつです。データを記録するという意味では広義のデータベースの一つと捉えてよいでしょう。特に、ビジネスシーンにおいては送金システムや仮想通貨の代名詞として理解するよりも、データベースとして理解いただいたほうがわかりやすいと思います。(技術的に俯瞰する際も同様です。後述します。)
つまり、どのような技術でつくられていて、その結果、どんな特徴を持つのかを知れば、データを保持する手段としてブロックチェーンを選択してよいかを判断できることになります。
ブロックチェーンを構成する仕組み~ブロックとは?チェーンとは?
「ブロックチェーン」では、コンピュータ(ノードと呼びます)に、取引データ(トランザクションデータと呼びます)を1件単位(ブロックと呼びます)で記録します。この記録を作成するときに、時系列順につながっている取引が結びつくように管理します。この取引データであるブロックが連鎖(チェーン)している様子からブロックチェーンと名づけられました。
同じ内容のブロックを異なるコンピュータに「分散」して管理する仕組みであり、分散管理台帳技術とも言われます。分散という表現から参加しているノードでデータを分担して管理している印象を受けますが、それぞれが同じ情報をもっているのがブロックチェーンを理解するときのポイントです。私はこの点を間違えており、なかなか理解が進まなかった苦い思い出があります。
図1.ブロックチェーンのイメージ図
ブロックチェーンの主要な要素
一般的に、ブロックチェーンは次の3つの要素で構成されています。
- 台帳
- スマートコントラクト
- 合意形成
台帳とは
1件の取引データを記録したものをブロックとよび、ブロックには、取引データのほかに、インデックスとハッシュ値などが含まれます。インデックスは取引の順番や時間を示したもの、ハッシュ値は直前のブロックの内容から計算される値です。
このブロックの集合を台帳と呼びます。リレーショナルデータベースにおいては、1件のレコードがブロック、台帳がテーブルに近いものです。
図2.ブロックのイメージハッシュ値とは?
ハッシュ値とは、元になる入力データから一定の計算手順により求められた固定長の値です。ハッシュ値から元のデータを復元することはできない仕組みになっています。ある特定のハッシュ値が得られるような入力データを効率よく求めることはできず(弱衝突耐性)、同じハッシュ値となる別の入力データも容易には見つけられない(強衝突耐性)という特徴を持ちます。
下の例を見ていただくと、元のデータが1文字変わっただけで、求められるハッシュ値がまったく異なり、また、ハッシュ値から元のデータを計算することが簡単ではないことがわかっていただけると思います。
Pythonによるハッシュ値計算の例
Python 3.7.3
>>> import hashlib
>>> print(hashlib.sha256("transaction20210828atob".encode("utf-8")).hexdigest())
d8c423c33fff789627fc99eb2ece36a44558d2b47f98e062654e0f3e943a6d86
>>> print(hashlib.sha256("transaction20210829atob".encode("utf-8")).hexdigest())
cfe0965bbbd33a8f1af3caa25b7851c969816f817b09d4ef64e14e360c1938db
スマートコントラクトとは?
「ブロックチェーン」上で、人の手を介さずに契約を自動実行させる仕組みを「スマートコントラクト」と言います。取引成立のための内容と条件をプログラムとして実装しておき、条件が満たされた際には自動的に実行される(取引が成立する)仕組みです。
合意形成とは
取引の正当性を、ブロックチェーンの参加者で確認する作業のことです。改ざんやダブルブッキングがないかなどを検査し、正当なものだと全員で合意(承認)できたら、新しいブロックをチェーンに加えることになります。データベースにおけるコミットのような処理なります。参加者の過半数のハッシュ値の計算結果が一致したら合意したとする。ブロックチェーンの特徴
ブロックチェーンには主に次のような特徴があります。- 情報の共有とトレーサビリティ
- 分散システム
- 改ざん不可
情報の共有とトレーサビリティ
ブロックチェーンの全ての参加者(ノード)は、同じデータを保有しており、その内容は参加者に公開され検証済みです。このことから、情報を共有する仕組みとトレーサビリティが確保されているといわれています。負荷なく情報を公開する仕組みが備わっているとも言えます。公開したくない情報を扱う場合は、ブロックチェーンを内部のみで利用し、外部に公開しない方法があります。インターネットの技術が社内ネットワークのイントラネットで使用されているように、ブロックチェーンの技術を限定的に利用することが可能です。
無停止
ブロックチェーンでは、全てのノードが同じデータを持っているとともに、同じ機能も持っています。そのため、一部のノードが停止しても他のノードが正常に動いていればブロックチェーンが停止することはありません。図4.無停止のイメージ
ノードAが停止しても、B・Cが動いていれば、ブロックチェーンとして機能する。
改ざん不可
台帳のブロックには、直前のデータに基づくハッシュ値が含まれています。過去のデータを改ざんしようとすると、それに続く全てのデータのハッシュ値を順番に計算して改ざんする必要があります。仮に改ざんしたとしても、参加者による合意がないと台帳を更新できないため、事実上、改ざんは出来ない仕組みになっています。
ここまでのまとめです。
ブロックチェーンの利用シーン
ブロックチェーンのこうした特徴を活用して、仮想通貨以外の場面でも使われるケースが増えてきました。国内では、SONYの音楽の著作権管理や(※外部サイト:ブロックチェーン基盤を活用したデジタルコンテンツの権利情報処理システムを開発)電力取引の履歴管理(※外部サイト:みんな電力がブロックチェーン電力取引とトレーサビリティで特許取得、現在はStellarを採用)に使われており、海外では、ピカソの絵画がブロックチェーンで証券化され売りに出されています(※外部サイト:Shares in Picasso painting go up for grabs at $6,000 in blockchain sale)。
ブロックチェーンが持つ、参加者全員が同じ情報を持つ特長から、不特定多数の利用が想定されるケースに使われることが多いようです。製品のトレーサビリティの開示、マンションの管理費、治療履歴の管理などへの適用が検証されています。
ブロックチェーンを活用したサービスが増えてきている背景に、ブロックチェーンを気軽に使える環境が整ってきたことがあります。次に、どんな環境があるのか、ブロックチェーンの種類と一緒に紹介します。
ブロックチェーンの種類と利用できるサービス
ブロックチェーンは、自由に参加できる「パブリック型」と、参加には管理体の許可が必要な「プライベート型」の大きく2種類に分けられます。プライベート型において、複数の組織で管理するものは「コンソーシアム型」と呼ばれるようになりました。
種類 |
主な特徴 |
---|---|
パブリック型 |
参加自由。参加者全員で管理する |
プライベート型 |
単一の組織で管理し、参加には許可が必要 |
コンソーシアム型 |
複数の組織で管理し、参加には許可が必要 |
ブロックチェーンを使った事業やシステムを計画するとき、構築に必要な機能がそろっているフレームワークやマネージドサービスが出てきたため、以前より気軽に採用できるようになりました。代表的なフレームワークやサービスを紹介します。
サービス/フレームワーク |
提供元 |
概要 |
---|---|---|
Hyperledger Fabric |
Hyperledger |
もっとも人気のあるエンタープライズ向けのオープンソースのフレームワーク |
GoQuorum |
EEA |
仮想通貨のイーサリアムに使われているブロックチェーンをエンタープライズ向けに拡張したもの |
Corda |
R3コンソーシアム |
金融取引に応用するために開発されたオープンソースのフレームワーク |
Amazon Managed Blockchain |
AWS |
Hyperledger Fabric や Ethereum を使用するフルマネージドサービス |
Quorum Blockchain Service (旧Azure Blockchain Service) |
Microsoft |
コンソーシアム型のブロックチェーンを簡単に構築管理できる |
IBM Blockchain Platform |
IBM |
オンプレミスとクラウド環境の両方にまたがって稼働できる |
代表的なシステムの構成である3層アーキテクチャは、プレゼンテーション層/ファンクション層/データ層の3層に役割をわけるものでした(図5)。AWSのブロックチェーンサービスを使ったシステムの構成例(図6)をみてみると、端末からデータを受け取り一次的な加工を行うところまでは、3層アーキテクチャとかわらず、データベースサーバの代わりにブロックチェーンのサービスがあることに気づきます。
図5.3層アーキテクチャの概要
出展:※外部サイト:応用情報技術者試験ドットコム
出展:※外部サイト:Building a blockchain application in Java using Amazon Managed Blockchainを参考に筆者作成
実装してみました
ブロックチェーンの動きを確認するため最低限必要となる、ブロックの追加、ハッシュ値の計算、台帳の更新、他のノードの台帳の検証、などの機能を実装して実験します。ブロックチェーンの作りは、WEBクライアントからAPIリクエストを受け付けて、Blockchainの操作を行うものになっています。
図7.ブロックチェーンデモ実装の概要
同じ環境を仮想的に3台用意し、それぞれのノードをブロックチェーンに参加させます。この3台はネットワークを通して相互に通信が可能な状態となっています。全員の台帳が同じ状態であることを確認してから、新しい取引が追加されると、全員の台帳が更新されることを確認します。
まずは全員の台帳の状態を確認します。
ノードAに新しい取引を送ります。
senderが送金元、recipientが送金先、amountが送金金額です。
ノードAの台帳に新しい取引が含まれるブロックが追加されました。このときは、ノードB,Cの台帳には新しいブロックはありません。
ノードAのブロックの内容をノードB,Cで検証し、問題ないことが確認できると、それぞれの台帳にも新しいブロックが追加されます。
ちなみに、こんな感じで仮想的なノードを動かしていました。
足りない機能としては、ユーザ認証・管理やSSL通信の対応、といった共通的なものやユーザーインターフェース、ビジネスロジックの追加などが考えられます。フレームワークやクラウドサービスにはこうした機能がすでにあるので、ビジネスロジックの開発に専念できるのはありがたいです。
技術者の方へ全体を通して
今回ブロックチェーンの概要を紹介しましたが、ブロックチェーンを構成する技術は、公開鍵・秘密鍵などの暗号化技術や合意形成のアルゴリズムなどまだ他にもあります。また、ブロックチェーンを理解している技術者はまだ少ない状況です。ぜひ入門書・専門書を手に取ってブロックチェーンに触れてみてください。構成する技術の一つ一つは基本情報処理試験にでてくるような基本的な知識にすぎません。今後も出てくるだろう新しい技術を理解するためにも、今ある基礎知識を学んでおくことが大切だと考えています。
当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。
エバンジェリストによるコラムやIDグループからのお知らせなどを
メルマガでお届けしています。