SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

開発者のためのブロックチェーン活用ガイド

従来型システムとの比較で学ぶ「スマートコントラクト」の仕組み~ブロックチェーン/スマートコントラクトの技術要素と特徴

開発者のためのブロックチェーン活用ガイド 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ブロックチェーンの技術要素とその特徴

 ブロックチェーンを構成する技術要素は大きく3つあります。その3つとはP2Pネットワーク、暗号技術、コンセンサスアルゴリズムです。これらの3要素がブロックチェーンにどのような特徴を生み出しているのかを解説します。

(1) P2Pネットワーク

 P2Pネットワークは、複数のコンピューターが対等の関係で通信しあうネットワーク構成方式です(図1)。クライアント・サーバー方式のようなコンピューター間の関係差はありません。ブロックチェーンでは、P2Pネットワーク上の各コンピューターのことをノードと呼びます。以降では、このようなブロックチェーンのP2Pネットワークのことをブロックチェーンネットワークと呼びます。

図1 ブロックチェーンネットワークとノード
図1 ブロックチェーンネットワークとノード

 ブロックチェーンネットワーク上のノードは前述のように対等な関係であり、各ノードが保持するデータも全く同一のものです。つまり、ブロックチェーンではデータが共有されることになり、これがブロックチェーンの特徴のひとつ(データの共有)です。また、P2Pネットワークは多数のノードで構成されているため、1台や2台のノードが故障したとしても、代替のノードさえあれば機能し続けます。こういった点で実質的にゼロダウンタイムシステムとみなせる点も特徴です。

(2) 暗号技術

 ブロックチェーンでは、主に2つの暗号技術が用いられています。ひとつは暗号学的ハッシュ関数で、データの完全性を証明したりチェックしたりするためのものです。例えば、暗号学的ハッシュ関数により任意の2つのデータのハッシュ値を計算し、計算結果のハッシュ値を比較します。ハッシュ値が一致すれば、2つのデータは完全に同一で、改ざんされていないと考えられます。もうひとつはデジタル署名で、データ送信者の本人確認、および、データが改ざんされていないことを証明するために使われます。

 これら2つの暗号技術は、ブロックチェーンを構成する主要なデータ構造である、トランザクション(図2)、ブロック(図3)、データ構造としてのブロックチェーン(図4)、スマートコントラクトなどのデータの格納などに使われるハッシュツリー(またはマークルツリーともいいます)に使われます。

図2 トランザクションのデータ構造の概要
図2 トランザクションのデータ構造の概要
図3 ブロックのデータ構造の概要
図3 ブロックのデータ構造の概要
図4 ブロックチェーンのデータ構造の概要(データ構造としてのブロックチェーン)
図4 ブロックチェーンのデータ構造の概要(データ構造としてのブロックチェーン)

 このような暗号技術を利用したデータ構造により、ブロックチェーンの各ノードでは、ブロックチェーンネットワークを流れる共有データに対し、改ざん有無などの正しさのチェックを行うことができます。ノードは、同じブロックチェーンネットワーク上の任意のノードからデータを取得し、正しさを暗号学的に検証します。検証により正しさを確認したらそのデータを取り込み、誤りや改ざんを検知したらそのデータを捨てて別のノードから再度データを取り寄せればよく、結果としてどのノードでも正しいと判断されるデータは同じになるはずです。それゆえに、ブロックチェーンではデータが共有されているにもかかわらず、耐改ざん性の特徴を持っています。

(3)コンセンサスアルゴリズム

 コンセンサスアルゴリズムは、ブロックチェーンネットワーク内のノード間の合意ルールです。ブロックチェーンのブロックは、コンセンサスアルゴリズムのルールに従って作成されます。また、前述の暗号学的な検証を通ったブロックのみがブロックチェーンに接続するための新しいブロックとして認められます。コンセンサスアルゴリズムには複数の種類があります。主なアルゴリズムとして、Proof of Work(PoW)、Proof of Stake(PoS)、Proof of Authority(PoA)があります。PoAには特性が異なるさまざまな実装バリエーションがあります(Clique、Raft、IBFT、QBFTなど)。

 ブロックチェーンでは、コンセンサスアルゴリズムに従ったブロック作成が機能していることが、システムとしてブロックチェーンが機能していることになります。このため、ブロックを作成するノードがシステムを実質的に制御する権限を持つことになります。ただし、ブロック作成の役割は特定の運用者が持つノードに集中させる必要はなく、不特定多数のノードに分散させることができます。これにより、クライアント・サーバーシステムのような特定のサーバーの制御下で中央集権的に運用されるシステムとは異なる、非中央集権的なシステムを実現することができます。

 一方で、ブロックチェーンネットワークに不特定多数のノードが参加するようになると、ノード集団の中に、ブロックチェーンネットワークを破壊するような挙動をするもの(故意や悪意だけでなく、ノード故障等も考えられます)が現れる可能性もあります。このような破壊的な攻撃に対しても、ビザンチン故障耐性(Byzantine Fault Tolerance:BFT)の性質を持つコンセンサスアルゴリズムを採用すれば、一定数のノードの攻撃には耐えることができます。ビザンチン故障耐性のあるコンセンサスアルゴリズムには、PoW、PoS、IBFTなどがあります。このような点で、ブロックチェーンは非中央集権性の特徴を持つシステムであると言えます。

 以上をまとめると、ブロックチェーンの技術要素から生み出されるブロックチェーンの特徴は、データの共有、ゼロダウンタイム、耐改ざん性、そして非中央集権です。次に、これら4つの特徴とスマートコントラクトの関係を解説します。

次のページ
ブロックチェーンの特徴とスマートコントラクトの関係

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
開発者のためのブロックチェーン活用ガイド連載記事一覧

もっと読む

この記事の著者

木下 学(NTTデータ先端技術株式会社)(キノシタ マナブ)

 ソフトウェアソリューション事業本部 デジタルソリューション事業部 データエンジニアリング担当 2014年入社。2017年からブロックチェーンを担当。 現在、NTTデータグループにおける全世界横断のブロックチェーンチームの一員として、ブロックチェーンを用いたシステム開発や技術検証を中心に、教育プログ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/15623 2022/03/10 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング