IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2024-178981分散台帳システム、及び分散台帳システムの制御方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024178981
(43)【公開日】2024-12-26
(54)【発明の名称】分散台帳システム、及び分散台帳システムの制御方法
(51)【国際特許分類】
   G06Q 10/063 20230101AFI20241219BHJP
【FI】
G06Q10/063
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023097435
(22)【出願日】2023-06-14
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000176
【氏名又は名称】弁理士法人一色国際特許事務所
(72)【発明者】
【氏名】佐藤 竜也
(72)【発明者】
【氏名】下沢 拓
(72)【発明者】
【氏名】伊藤 哲
【テーマコード(参考)】
5L010
5L049
【Fターム(参考)】
5L010AA06
5L010AA20
5L049AA06
5L049AA20
(57)【要約】
【課題】客観性のある情報に基づき分散台帳システムの全体としての健全性を監視する。
【解決手段】分散台帳システムは、複数の組織の夫々が有する分散台帳ノードを通信可能に接続することにより構成され、スマートコントラクトを実行することが可能であり、スマートコントラクトは、複数の組織の分散台帳ノードの間で合意形成を行いつつ分散台帳に情報を管理する。分散台帳ノードは、組織のクライアントノード等の他の装置から受信したトランザクションに応じてスマートコントラクトを実行する。スマートコントラクトは、第1の組織が第2の組織の分散台帳ノードの健全性を監視することにより取得した情報である健全性監視結果を受信し、受信した健全性監視結果を検証することにより第2の組織の分散台帳ノードの健全性を検証し、健全性を検証した結果である健全性検証結果を分散台帳に記録する。
【選択図】図5
【特許請求の範囲】
【請求項1】
複数の組織の夫々により提供される分散台帳ノードを含み、
前記複数の分散台帳ノードにより構成される分散台帳ネットワークを提供する、
分散台帳システムであって、
外部から受信したトランザクションに応じてスマートコントラクトを実行し、
前記スマートコントラクトは、
複数の前記組織の前記分散台帳ノードの間で合意形成を行いつつ分散台帳に情報を管理し、
第1の前記組織が第2の前記組織の前記分散台帳ノードの健全性を監視することにより取得した情報である健全性監視結果を受信し、
受信した前記健全性監視結果を検証することにより前記第2の組織の前記分散台帳ノードの健全性を検証し、
健全性を検証した結果である健全性検証結果を前記分散台帳に記録する、
分散台帳システム。
【請求項2】
請求項1に記載の分散台帳システムであって、
前記分散台帳は、前記組織の夫々が準備し提供すべき前記分散台帳ノードの構成を示した情報である構成設計情報を記録し、
前記スマートコントラクトは、
前記第2の組織の前記健全性検証結果を前記第2の組織の前記構成設計情報と比較対照することにより、前記組織が前記構成設計情報に準拠している度合いを示す情報である構成準拠状況を生成し、
生成した前記構成準拠状況を前記分散台帳に記録する、
分散台帳システム。
【請求項3】
請求項2に記載の分散台帳システムであって、
前記スマートコントラクトは、前記第2の組織の前記構成準拠状況が前記構成設計情報を満たしているか否かを判定し、満たしていない場合は、前記第2の組織に前記分散台帳ノードの構成の見直しを指示する情報、又は、第3の前記組織が前記第2の組織の代わりに分散台帳ノードを用意することを指示する情報を前記分散台帳に記録する、
分散台帳システム。
【請求項4】
請求項2に記載の分散台帳システムであって、
前記スマートコントラクトは、前記第2の組織の前記構成準拠状況が前記構成設計情報を満たしているか否かを判定し、満たしていない場合は前記分散台帳ノードの構成が不足していることにより前記第2の組織にペナルティが課されることを示す情報を前記分散台帳に記録する、
分散台帳システム。
【請求項5】
請求項2に記載の分散台帳システムであって、
前記スマートコントラクトは、前記構成準拠状況に基づき、前記複数の組織の夫々の信頼度である組織信頼度を生成し、生成した前記複数の組織の夫々の前記組織信頼度を前記分散台帳に記録する、
分散台帳システム。
【請求項6】
請求項2又は5に記載の分散台帳システムであって、
前記スマートコントラクトは、前記複数の組織の夫々の前記健全性監視結果に基づき、前記複数の組織の夫々の信頼度である組織信頼度を生成し、生成した前記組織信頼度を前記分散台帳に記録する、
分散台帳システム。
【請求項7】
請求項1に記載の分散台帳システムであって、
前記複数の組織の夫々が有する、前記分散台帳ノードと通信可能に接続する複数のクライアントノードを含み、
第1の前記組織の前記クライアントノードは、
前記第2の組織の前記分散台帳ノードの健全性の監視を行い、
前記監視により得られる前記健全性監視結果を含む前記トランザクションを生成し、
生成した前記トランザクションを前記分散台帳ノードに送信する、
分散台帳システム。
【請求項8】
請求項7に記載の分散台帳システムであって、
前記分散台帳は、前記組織が前記第2の組織の前記分散台帳ノードの健全性を監視する際に用いる監視方法を示す情報である健全性監視方法定義を記録し、
前記クライアントノードは、前記健全性監視方法定義の前記監視方法に従って前記第2の組織の健全性を監視する、
分散台帳システム。
【請求項9】
請求項7に記載の分散台帳システムであって、
前記クライアントノードは、サービスディスカバリ機能により前記第2の組織の分散台帳ノードの生死を確認することにより前記健全性の監視を行う、
分散台帳システム。
【請求項10】
請求項1に記載の分散台帳システムであって、
前記分散台帳は、前記組織が前記第2の組織の前記分散台帳ノードの健全性を監視する際に用いる監視方法を示す情報である健全性監視方法定義を記録し、
前記スマートコントラクトは、前記複数の組織の夫々の前記分散台帳ノードの監視を担当する前記組織である監視担当組織を、前記スマートコントラクトの合意条件、前記健全性監視方法定義に含まれる健全性判定可能基準、及び前記健全性監視結果のうちの少なくともいずれかに基づき選出し、選出した前記監視担当組織を示す情報を前記分散台帳に記録する、
分散台帳システム。
【請求項11】
請求項6に記載の分散台帳システムであって、
前記スマートコントラクトは、前記複数の組織の夫々の前記分散台帳ノードの監視を担当する前記組織である監視担当組織を前記組織信頼度に基づき決定し、決定した前記監視担当組織を示す情報を前記分散台帳に記録する、
分散台帳システム。
【請求項12】
請求項2に記載の分散台帳システムであって、
前記スマートコントラクトは、前記組織の前記構成準拠状況に応じて、前記第2の組織の分散台帳ノードの監視を担当する前記組織である監視担当組織を選出する際の重み付けを示す情報を前記分散台帳に記録する、
分散台帳システム。
【請求項13】
複数の組織の夫々により提供される分散台帳ノードを含み、
前記複数の分散台帳ノードにより構成される分散台帳ネットワークを提供し、
外部から受信したトランザクションに応じてスマートコントラクトを実行し、
前記スマートコントラクトは、複数の前記組織の前記分散台帳ノードの間で合意形成を行いつつ分散台帳に情報を管理する、
分散台帳システムの制御方法であって、
前記スマートコントラクトが、
第1の前記組織が第2の前記組織の前記分散台帳ノードの健全性を監視することにより取得した情報である健全性監視結果を受信するステップ、
受信した前記健全性監視結果を検証することにより前記第2の組織の前記分散台帳ノードの健全性を検証するステップ、及び、
健全性を検証した結果である健全性検証結果を前記分散台帳に記録するステップ、
を実行する、分散台帳システムの制御方法。
【請求項14】
請求項13に記載の分散台帳システムの制御方法であって、
前記分散台帳が、前記組織の夫々が準備し提供すべき前記分散台帳ノードの構成を示した情報である構成設計情報を記録するステップ、及び、
前記スマートコントラクトが、前記第2の組織の前記健全性検証結果を前記第2の組織の前記構成設計情報と比較対照することにより、前記組織が前記構成設計情報に準拠している度合いを示す情報である構成準拠状況を生成し、生成した前記構成準拠状況を前記分散台帳に記録するステップ、
を更に実行する、分散台帳システムの制御方法。
【請求項15】
請求項14に記載の分散台帳システムの制御方法であって、
前記スマートコントラクトが、前記第2の組織の前記構成準拠状況が前記構成設計情報を満たしているか否かを判定し、満たしていない場合は前記第2の組織に前記分散台帳ノードの構成の見直しを指示する情報を前記分散台帳に記録するステップ、
を更に実行する、分散台帳システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散台帳システム、及び分散台帳システムの制御方法に関する。
【背景技術】
【0002】
近年、金融機関や政府等の中央集権機関を介して行われていた取引を、個々の利用者の情報処理装置を用いて構成されたP2P(Peer to Peer)ネットワーク(以下、「分散台帳ネットワーク」と称する。)において管理される分散台帳(以下、「ブロックチェーン」とも称する。)に記録することにより、利用者の間で直接行えるようにした技術(以下、「分散台帳技術」と称する。)が登場し、様々な分野への適用が進んでいる。
【0003】
分散台帳技術に関し、例えば、特許文献1には、ブロックチェーンにおけるトランザクションのエンドースメント(承認)を最適化された状態で行えるようにすることを目的として構成されたシステムについて記載されている。上記システムでは、エンドースメントを実行するための一つ又は複数のエンドースメント要求を識別し、エンドースメント要求を順序付けノードに送信し、ピア(Peer)の性能指標を監視し、性能指標に基づき1つ又は複数のエンドースメント要求をピアに割り当てる。
【0004】
また、例えば、非特許文献1には、金融機関や政府等の信頼できる中央集権機関を経由して実施されてきた取引を、分散台帳を用いて仮想通貨により利用者の間で直接行えるようにする技術について記載されている。
【0005】
また、例えば、非特許文献2及び非特許文献3には、事前に定義された処理をトランザクション等のイベントをトリガーとして実行することにより分散台帳を更新する技術であるスマートコントラクト(Smart Contract)(「Chaincode」とも称される。)について記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特願2020-562204号公報
【非特許文献】
【0007】
【非特許文献1】“A Peer-to-Peer Electronic Cash System”,[online]、[令和5年5月26日検索]、インターネット<URL:https://bitcoin.org/bitcoin.pdf>
【非特許文献2】“Ethereum White Paper”,[online]、[令和5年5月26日検索]、インターネット<URL:https://ethereum.org/ja/whitepaper/>
【非特許文献3】“Hyperledger Fabric”,[online]、[令和5年5月26日検索]、インターネット<URL:http://hyperledger-fabric.readthedocs.io/en/release-2.5/>
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記の分散台帳技術は次のような特徴を有する。
(1)分散台帳ネットワークの参加者の間の取引において、中央集権機関ではなく、任意もしくは特定の参加者による合意形成や承認により取引が確定する。
(2)複数のトランザクションをブロックとして管理し、ブロックを数珠繋ぎにして分散台帳に記録し、連続するブロックにハッシュ値を記録することにより、記録内容の改竄が実質的に不可能である。
(3)参加者全員が同一の台帳データを共有するため、参加者全員が取引の内容を確認することができる。
【0009】
このように、分散台帳技術によれば、中央集権機関による管理が不要となり、複数の主体間で情報の共有や取引を行うことが可能になる。
【0010】
分散台帳技術の利用形態として、非特許文献1に記載されているような特定の管理者の存在を前提としないパブリック型、単一の管理者の存在を前提とするプライベート型、及び非特許文献3に記載されているような複数の管理者の存在を前提とするコンソーシアム型がある。このうちプライベート型及びコンソーシアム型は、分散台帳ネットワークにおける運用の取り決めに管理者の許可が必要とされるためパーミッション型(許可型)とも称される。
【0011】
上記利用形態のうち、コンソーシアム型は、例えば、複数の組織(例えば、特定の業界におけるコンソーシアムやサプライチェーンに関係する複数企業間等)が協力して運営する場合に向いており、とくにエンタープライズ分野(金融、産業、流通、公共、IT基盤、社会インフラ等)での活用が有望視されている。コンソーシアム型では、例えば、分散台帳ネットワーク(コンソーシアム)に参加する複数の組織の夫々のノード(以下、「分散台帳ノード」と称する。)が合意形成プロトコルに基づき同期し連動しつつ、事前に取り決められた契約内容(スマートコントラクト)に従って取引を実行する。
【0012】
ところで、分散台帳ネットワークを用いて構成される情報処理システム(以下、「分散台帳システム」と称する。)の実際の運用状態(システム構成等)と参加組織全体として予定(設計)されていた運用状態との間に乖離が生じた場合、分散台帳システムの健全性や性能、可用性が損なわれてしまう可能性がある。また、コンソーシアム型では、各参加組織の夫々がノードを用意するため、参加組織全体として予定されていた運用状態が維持されているか否かを必ずしも容易に把握することができない。
【0013】
上記の特許文献1では、順序付けサービスがピア(peer)の性能指標を監視し、性能指標に基づきエンドースメント要求をピアに割り当てる。しかし、同文献には、コンソーシアム型の分散台帳システムの運用で生じる上記の課題を解決するための仕組みは記載されていない。また、性能指標の監視は単一の組織が行うため、監視された結果を信頼性のある証拠として利用することはできない。
【0014】
また、非特許文献3には、運用サービス(Operations Service)として、各ノードのヘルスチェック(Health Checks)やメトリック(Metrics)を取得することにより各ノードの状態を監視することが記載されている。また、同文献には、ゲートウェイ(Gateway)が、利用可能なノードを発見する仕組み(Service Discovery)が記載されている。しかし、同文献に記載されている仕組みは、組織の夫々が自身の所有するもしくは利用可能なノードを監視することを想定しており、参加組織の全体を監視するものではない。また、単一の組織(単一信頼点)が監視する仕組みであるため、監視の結果を信頼性のある証拠として利用することはできない。
【0015】
本発明は、こうした背景に鑑みてなされたものであり、客観性のある情報に基づき、分散台帳システム全体としての健全性を監視することが可能な、分散台帳システム及び分散台帳システムの制御方法を提供することを目的とする。
【課題を解決するための手段】
【0016】
上記課題を解決するための本発明の一つは、複数の組織の夫々により提供される分散台帳ノードを含み、前記複数の分散台帳ノードにより構成される分散台帳ネットワークを提供する、分散台帳システムであって、外部から受信したトランザクションに応じてスマートコントラクトを実行し、前記スマートコントラクトは、複数の前記組織の前記分散台帳ノードの間で合意形成を行いつつ分散台帳に情報を管理し、第1の前記組織が第2の前記組織の前記分散台帳ノードの健全性を監視することにより取得した情報である健全性監視結果を受信し、受信した前記健全性監視結果を検証することにより前記第2の組織の前記分散台帳ノードの健全性を検証し、健全性を検証した結果である健全性検証結果を前記分散台帳に記録する。
【0017】
その他、本願が開示する課題、及びその解決方法は、発明を実施するための形態の欄、及び図面により明らかにされる。
【発明の効果】
【0018】
本発明によれば、客観性のある情報に基づき、分散台帳システム全体としての健全性を監視することができる。
【図面の簡単な説明】
【0019】
図1】分散台帳システムの概略的な構成を示す図である。
図2A】ブロックチェーン(BC)の一例である。
図2B】ブロックチェーン(BC)の一例である(図2Aの続き)。
図2C】ブロックチェーン(BC)の一例である(図2Bの続き)。
図2D】ブロックチェーン(BC)の一例である(図2Cの続き)。
図2E】ブロックチェーン(BC)の一例である(図2Dの続き)。
図2F】ブロックチェーン(BC)の一例である(図2Eの続き)。
図2G】ブロックチェーン(BC)の一例である(図2Fの続き)。
図3】ステート情報の一例である。
図4A】構成情報(組織情報)の一例である。
図4B】構成情報(SC合意条件情報)の一例である。
図5】健全性管理SC、ステート情報、及びSCイベントを説明するブロック図である。
図6A】ステート情報(健全性監視方法定義)の一例である。
図6B】ステート情報(健全性監視結果)の一例である。
図6C】ステート情報(健全性検証結果)の一例である。
図6D】ステート情報(構成設計情報)の一例である。
図6E】ステート情報(構成準拠状況)の一例である。
図6F】ステート情報(キャパシティ情報)の一例である。
図6G】ステート情報(組織信頼度)の一例である。
図6H】ステート情報(監視担当組織)の一例である。
図7】メンバー登録処理を説明するフローチャートである。
図8】SCデプロイ/実行処理を説明するフローチャートである。
図9】健全性報告処理を説明するフローチャートである。
図10】健全性相互検証処理を説明するフローチャートである。
図11】構成準拠状況検証処理を説明するフローチャートである。
図12】信頼度算出処理を説明するフローチャートである。
図13】監視担当組織選出処理を説明するフローチャートである。
図14】監視結果表示ユーザインタフェースの一例である。
図15】分散台帳システムの実現に用いる情報処理装置の一例である。
【発明を実施するための形態】
【0020】
以下、図面を参照しつつ本発明の実施形態について説明する。尚、以下の実施形態は、本発明を説明するための例示に過ぎず、説明の明確化のため、適宜、省略及び簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。とくに限定しない限り、各構成要素は単数でも複数でも構わない。
【0021】
以下では、各種情報の例として、「情報」、「データ」等の表現により説明することがあるが、各種情報はこれら以外のデータ構造(「テーブル」、「表」等)で表現してもよい。以下の説明において、識別情報について説明する際に、「識別子」、「ID」、「識別情報」等の表現を用いることがあるが、これらについては互いに置換することができる。以下の説明において、符号の前に付した「S」の文字は処理ステップの意味である。
【0022】
また、以下の説明において、分散台帳のことを「ブロックチェーン」又は「BC」とも称する。また、分散台帳を用いて利用者間で直接取引を行えるようにする技術のことを、以下、「分散台帳技術」と称する。また、分散台帳技術を利用するための基盤となる、通信ネットワークを介して通信可能に接続する複数の情報処理装置(以下、「分散台帳ノード」又は「コンソーシアム」と称する。)を用いて構成されるP2P(Peer to Peer)ネットワークのことを、以下、「分散台帳ネットワーク」と称する。また、分散台帳技術により提供されるスマートコントラクト(Smart Contract)のことを、以下、「SC」とも称する。また、スマートコントラクト(SC)に対して発行されるトランザクション(Transaction)のことを「TX」とも称する。
【0023】
また、本実施形態において、「健全性」は、例えば、以下の指標により判断するものとする。
(1)各ノードの死活状況(各組織からのノードの利用可能性、ネットワーク的な到達可能性、サービスの提供が可能な状態(Ready)になっているか否か等)
(2)設計した構成からの乖離(ノード数の過不足、仕様の過不足等)
(3)満たすべき性能や可用性の充足状況(外形監視(Synthetic Monitoring)の性能値が一定水準を満たすか等)
(4)設定値の正しさ(提供する機能有効/無効フラグの設定状況、ソフトウェアのバージョン等)
【0024】
[第1実施形態]
図1に、第1実施形態として示す情報処理システムである分散台帳システム1の概略的な構成を示している。分散台帳システム1は、1つ以上の分散台帳ノード3と一つ以上のクライアントノード4とを含む。分散台帳ノード3及びクライアントノード4は、いずれも情報処理装置(コンピュータ)を用いて構成される。これらは通信ネットワーク5を介して互いに双方向の通信が可能な状態で接続されている。通信ネットワーク5は、ネットワーク機器を用いて構成される無線又は有線方式の通信基盤であり、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、各種公衆通信網、専用線等である。
【0025】
分散台帳システム1は、複数の分散台帳ノード3により構成されるコンソーシアム型の分散台帳ネットワークを含む。分散台帳ネットワークを利用する組織(以下、「参加組織」と称する)の夫々は、一つ以上の分散台帳ノード3と一つ以上のクライアントノード4を有する。コンソーシアム型の分散台帳ネットワーク(コンソーシアム)であるため、原則として各組織が夫々の分散台帳ノード3の運用を行う。尚、参加組織が有する分散台帳ノード3及びクライアントノード4は、参加組織が直接利用することが可能な状態(操作や管理が可能な状態)になっていればよく、必ずしも参加組織が所有していなくてもよい。
【0026】
同図に示すように、分散台帳ノード3は、記憶部300、トランザクション管理部(以下、「TX管理部320」と称する。)、コンセンサス管理部325、スマートコントラクト実行管理部(以下、「SC実行管理部330」と称する)、承認済TX配信部335、トランザクション発行部(以下、「TX発行部340」と称する。)、ノード探索部345、メンバー管理部350、及び通信部355の各機能を有する。
【0027】
上記機能のうち、記憶部300は、分散台帳310、コンソーシアム情報302、及び参加メンバー管理情報303の各情報(データ)を記憶(格納)する。
【0028】
分散台帳310は、ブロックチェーン(BC)(以下、「BC311」と称する。)、ステート情報312、組織の業務に関する処理を実現するスマートコントラクト(SC)である業務SC313、及び分散台帳システム1の健全性の管理に関する処理を行うスマートコントラクト(SC)である健全性管理SC314を含む。
【0029】
BC311には、例えば、トランザクション(TX)の履歴(受信履歴、実行履歴)が管理される。また、ステート情報312には、例えば、トランザクション(TX)の履歴に基づく情報やスマートコントラクト(SC)の実行に必要な情報(以下、「ステート情報」と称する。)が管理される。ステート情報312は、例えば、NOSQLのようなDBMS(Data Base Management System)により管理されるデータベースのテーブルに管理される。ステート情報312は、例えば、Key-Value形式で管理される、トランザクション(TX)の実行結果に基づく情報を含む。
【0030】
コンソーシアム情報302は、分散台帳ネットワークを構成する組織の情報、組織の間(分散台帳ノード3の間)で取り決められた各種の合意条件(トランザクション(TX)を受け入れてよいか等を決めるための条件(後述するSC合意条件)等)に関する情報等を含む。SC合意条件は、分散台帳310のブロックチェーン(BC)(BC311)としても記録される。コンソーシアム情報302は、各組織の分散台帳ノード3の間で共有される。
【0031】
参加メンバー管理情報303は、参加組織のメンバー(ノード、管理者、ユーザ等を含む)に関する情報(識別情報、認証情報、各種属性情報等)を含む。
【0032】
TX管理部320は、クライアントノード4や他の分散台帳ノード3から送られてくるトランザクション(TX)を受信する。また、TX管理部320は、トランザクション(TX)の履歴(受信履歴、実行履歴)や実行結果の取得、トランザクション(TX)の実行結果の提示(ユーザインタフェースを介した提示等)等に関する処理を行う。また、TX管理部320は、トランザクション(TX)を受信した際、メンバー管理部350と連携し、トランザクション(TX)の発行元(クライアントノード、メンバー等)の認証に関する処理を行う。
【0033】
コンセンサス管理部325は、他の分散台帳ノード3との間での、クライアントノード4又は分散台帳ノード3から受信したトランザクション(TX)を受け入れてよいかの合意形成に関する処理を行う。合意が成立すると、コンセンサス管理部325は、SC実行管理部330と連携し、スマートコントラクト(SC)のデプロイ、デプロイ済みのスマートコントラクト(SC)の実行、トランザクション(TX)の履歴や実行結果の分散台帳310への記録等を行う。
【0034】
SC実行管理部330は、他の分散台帳ノード3との間で合意が成立した場合に、スマートコントラクト(SC)のデプロイやデプロイ済みのスマートコントラクト(SC)の実行に関する処理を行う。尚、合意形成やスマートコントラクト(SC)の実行は、必ずしも分散台帳ネットワークを構成する全ての分散台帳ノード3が行う必要はなく、一部の分散台帳ノード3の間で合意形成やスマートコントラクト(SC)の実行を行い、承認済TX配信部335と連携して結果を通信ネットワーク5を介して他の分散台帳ノード3に配信するようにしてもよい(その場合の取り決めは、合意形成のアルゴリズムに依存する)。
【0035】
承認済TX配信部335は、上記の合意形成やスマートコントラクト(SC)の実行に参加していない分散台帳ノード3に対し、上記の合意形成やスマートコントラクト(SC)の実行の結果(トランザクション(TX)の履歴や実行結果等)を通信ネットワーク5を介して配信する。
【0036】
TX発行部340は、分散台帳ノード3(自身を含む)に対してトランザクション(TX)を発行する。尚、このように本実施形態では、クライアントノード4だけでなく分散台帳ノード3も分散台帳ノード3に対してトランザクション(TX)を発行できるものとする。
【0037】
ノード探索部345は、クライアントノード4等の他の情報処理装置から送られてくる要求に応じて通信ネットワーク5を探索し、分散台帳システム1を構成している各分散台帳ノード3の状態や、各分散台帳ノード3の分散台帳ネットワークへの参加の状況に基づき、分散台帳システム1において現在利用可能な分散台帳ノード3を探索する。尚、上記の探索は、例えば、サービスディスカバリ(Service Discovery)(非特許文献3におけるGateway機能等)の仕組みにより行う。また、ノード探索部345は、探索した結果に基づき、トランザクション(TX)を送信する分散台帳ノード3や合意形成に用いる分散台帳ノード3を選出する。
【0038】
メンバー管理部350は、分散台帳ネットワークに参加する組織やメンバーの登録に関する処理を行う。また、メンバー管理部350は、参加組織やメンバーの認証処理を行う。メンバー管理部350は、例えば、公開鍵暗号方式における秘密鍵と公開鍵のペア(以下、「鍵ペア」と称する)を用いた参加組織やメンバーの認証、トランザクション(TX)への署名、スマートコントラクト(SC)の実行権限の制御を行う。参加する組織やメンバーの情報は、参加メンバー管理情報303に管理される。
【0039】
通信部355は、通信ネットワーク5を介して、クライアントノード4や他の分散台帳ノード3との間の通信に関する処理を行う。例えば、通信部355は、他の分散台帳ノード3の間での合意形成や、承認済のトランザクション(TX)の他の分散台帳ノード3への配信等に関する通信を行う。
【0040】
同図に示すように、クライアントノード4は、記憶部400、TX発行部420、ノード探索部425、業務アプリ430、及び監視エージェント435の各機能を有する。
【0041】
記憶部400は、ノード探索情報401を記憶する。ノード探索情報401は、ノード探索部425により探索された、分散台帳システム1において現在利用可能な分散台帳ノード3を示す情報を含む。
【0042】
TX発行部420は、トランザクション(TX)を分散台帳ノード3に送信(発行)する。TX発行部420は、例えば、組織のメンバーの操作入力に応じて上記のトランザクションを生成し、分散台帳ノード3に送信する。トランザクション(TX)には、当該トランザクション(TX)の発行元(組織、メンバー、クライアントノード4)の情報(識別情報、認証情報等)が付帯する。
【0043】
ノード探索部425は、分散台帳ノード3のノード探索部345と同様に、通信ネットワーク5を探索し、各分散台帳ノード3の状態や各分散台帳ノード3の分散台帳ネットワークへの参加状況に基づき、分散台帳システム1において現在利用可能な分散台帳ノード3を探索する。また、ノード探索部425は、探索した結果に基づき、トランザクション(TX)の送信先となる分散台帳ノード3や合意形成に用いる分散台帳ノード3を選出する。
【0044】
業務アプリ430は、組織が行う業務を遂行又は支援するアプリケーションソフトソフトウェア(プログラムやデータ)により実現される機能である。業務アプリ430は、例えば、業務に関する機能の提供に際し、TX発行部420と連携して業務SC313に関するトランザクション(TX)を分散台帳ノード3に送信(発行)する。
【0045】
監視エージェント435は、他の組織の分散台帳ノード3の健全性の監視に関する処理を行う。監視エージェント435は、分散台帳ノード3のステート情報312に格納されている後述の監視方法(例えば、外形監視やノード探索部345により取得された情報に基づく監視方法等。健全性監視方法定義551の内容)に従い、他の組織の分散台帳ノード3の健全性を監視する。監視エージェント435は、TX発行部420と連携し、分散台帳ノード3の健全性管理SC314に対して監視により取得した情報(他の組織の分散台帳ノード3の健全性を示す情報(以下、「健全性監視結果」とも称する。))を報告(通知)するためのトランザクション(TX)を生成し、生成したトランザクション(TX)を分散台帳ノード3に送信(発行)する。
【0046】
図2A図2Fは、図1に示した分散台帳310のブロックチェーン(BC)(BC311)の各ブロックのデータ構造の一例である。分散台帳技術では、複数のトランザクション(TX)が夫々ブロックとして管理され、ブロックチェーン(BC)(BC311)は、各ブロックが前のブロックのハッシュ値を持つように各ブロックを数珠繋ぎにした構造を有する。上記構造により、前段のブロックの値が1ビットでも変わると後続の全ブロックのハッシュ値が変化し、悪意者等による内容の改竄を困難にすることができる。
【0047】
尚、本実施形態では、1つのトランザクション(TX)と1つのブロックが一対一に対応している場合を例示するが、複数のトランザクション(TX)を1つのブロックに対応させるようにしてもよい。また、本例では、スマートコントラクト(TX)が単一のブロックチェーン(BC)として連なる構成であるが、参加組織の夫々が管理や参照することが可能であれば他の構成でもよい。また、本例では、複数のスマートコントラクト(TX)を個別に定義しているが、単一のスマートコントラクト(TX)に集約するようにしてもよい。
【0048】
図2A図2Fに示す各ブロック311a~311fは、TX情報21、前ブロックハッシュ値23、及びステートハッシュ値24(後述するステート情報から生成したハッシュ値)の各情報を含む。
【0049】
図2Aに示すブロック311aは、業務SC313のデプロイのためのトランザクション(TX)(以下、「デプロイTX」と称する。)の情報を含む。尚、業務SC313は、例えば、商取引(企業等の組織間での仮想通貨の取引)におけるビジネスコントラクトに関する業務のスマートコントラクト(SC)である。
【0050】
同図に示すように、ブロック311aのTX情報21は、タイムスタンプ211、SC_ID212、TX種別213、SC実体214、SC入力仕様215、SCメタ定義216、TX発行者217、TX実行/承認者218、承認済TX配信者219、及びRWセット220の各項目を含む。
【0051】
このうちタイムスタンプ211には、当該トランザクション(TX)が発行された日時(タイムスタンプ)が格納される。
【0052】
SC_ID212には、スマートコントラクト(SC)の識別子(以下、「SC_ID」と称する。)が格納される。
【0053】
TX種別213には、当該トランザクション(TX)の種別(「デプロイ」、「実行」、「参照」等)を示す情報(本例では「デプロイ」)が格納される。
【0054】
SC実体214には、スマートコントラクト(SC)の実体(例えば、実行可能なバイナリデータ(実行コード)等)が格納される。
【0055】
SC入力仕様215には、スマートコントラクト(SC)に含まれる関数名やその引数を利用者が把握するための情報が格納される。尚、例示するブロック311aには、少なくとも以下の関数(以下、「SC関数」と称する。)を含む業務SC313が定義されている。
関数名:取引()、入力引数:差出顧客ID, 差出顧客ID,送金額、戻り値:成否
関数名:全取引参照()、入力引数:顧客ID、戻り値:指定顧客の全取引リスト
【0056】
SCメタ定義216には、スマートコントラクト(SC)をデプロイした際に指定した入力引数に従って決定されるパラメータが格納される。上記のパラメータは、例えば、スマートコントラクト(SC)(当該業務SC)の実行時における合意条件(例えば、「参加組織の過半数以上の承認を持ってTXを受け入れる等」)、その他の各種定義情報等である。
【0057】
TX発行者217には、当該トランザクション(TX)の発行元の情報(例えば、発行者(クライアントノード4、分散台帳ノード3、管理者、ユーザ等)の識別子(以下、「メンバーID」と称する。)、電子署名に関する情報(発行元やデータの改竄有無の検証に用いる情報)等が格納される。尚、上記の電子署名は、メンバー管理部350が発行した各メンバーの秘密鍵を用いて行われ、上記秘密鍵の公開鍵(証明書)を用いて検証される。
【0058】
TX実行/承認者218には、TX発行者217と同様に、コンセンサス管理部325やSC実行管理部330により行われる合意形成やスマートコントラクト(SC)の実行に関わった参加者(以下、「TX実行/承認者」と称する。)の情報が格納される。
【0059】
承認済TX配信者219には、承認済TX配信部335による配信処理に関わった参加者(以下、「承認済TX配信者」と称する。)の情報が格納される。
【0060】
RWセット220には、当該トランザクション(TX)について行った処理に際して参照や更新を行った情報(以下、「RWセット」(RW:Read-Write)と称する。)が格納される。尚、RWセットは、後述のステート情報に相当する。RWセット及びステート情報については後述する。
【0061】
図2Eに示すブロック311eは、図2Aに示すブロック311aのデプロイTXによりデプロイされた業務SCを(実行)機能させる(呼び出す)ためのトランザクション(以下、「実行TX」と称する。)である。
【0062】
同図に示すように、例示するブロック311eのTX情報は、タイムスタンプ211、SC_ID212、TX種別213、呼び出し関数/入力引数221、TX発行者217、TX実行/承認者218、承認済TX配信者219、RWセット220、及びSCイベント222の各項目を含む。尚、上記項目のうち、タイムスタンプ211、SC_ID212、TX発行者217、TX実行/承認者218、承認済TX配信者219については図2Aのブロック311aと同様であるので説明を省略する。
【0063】
TX種別213には、当該実行TXにより実行される処理が分散台帳310の更新処理を含む場合は「実行」が、当該実行TXにより実行される処理が分散台帳310の更新処理を含まない参照処理である場合は「参照」が格納される。本例では、TX種別213に「実行」が格納されている。
【0064】
呼び出し関数/入力引数221には、スマートコントラクト(SC)により呼び出されるSC関数とSC関数に与える入力引数が格納される。本例では、呼び出し関数/入力引数221に、SC関数として「取引()」が、入力引数「顧客a, 顧客b, \1M」が格納されている。
【0065】
RWセット220には、前述したように当該トランザクション(TX)について行った処理に際して参照や更新を行った情報(RWセット、ステート情報)が格納される。本例では、RWセット220に、スマートコントラクト(SC)のデプロイや実行に際して参照/更新された情報が格納されている。
【0066】
例示するブロック311eでは、RWセット220に、RWセットとして、SC_ID2201、RW区分2202、Key2203、Value2204、及びバージョン2205の各項目を有する一つ以上のレコードを有するテーブルが格納されている。
【0067】
上記項目のうちSC_ID2201には、スマートコントラクト(SC)の識別子(SC_ID)が格納される。
【0068】
RW区分2202には、SC_ID、参照(Read)か更新(Write)かを示す情報(以下、「RW区分」と称する。)が格納される。
【0069】
Key2203、Value2204には、当該SC_IDで特定されるスマートコントラクト(SC)により参照や更新を行った情報が格納される。
【0070】
バージョン2205には、SC_IDとKeyの組に対応する上記情報のバージョンを示す情報が格納される。上記バージョンは、例えば、上記情報が更新される度に1ずつ加算(インクリメント)される。
【0071】
同図の例では、スマートコントラクト(SC)のSC関数である「登録(顧客a,顧客b,¥10M)」が実行され、Key「顧客a」を参照してバージョン番号「4」のValue「¥100M」を取得し(1行目)、Value「¥90M」で更新した結果、バージョン番号が「5」に更新されたという情報がRWセットとして管理されている。
【0072】
このように、トランザクション(TX)の実行結果は、RWセット(ステート情報)として管理される。このため、RWセットを参照することで、スマートコントラクト(SC)を実行することなく、トランザクション(TX)の実行結果を直接取得することができる。このため、例えば、スマートコントラクト(SC)を実行しない分散台帳ノード3を含む複数の分散台帳ノード3の間でトランザクション(TX)の実行結果を効率よく共有することができる。
【0073】
同図に示すSCイベント222は、分散台帳ノード3が生成するイベントに関する情報(以下、「イベント情報」と称する。)が格納される。分散台帳ノード3のTX管理部320は、分散台帳310のBC311にトランザクション(TX)の履歴を追加する際等のタイミングでイベント情報を生成し、生成したイベント情報をSCイベント222に格納する。
【0074】
クライアントノード4や分散台帳システム1に参加している分散台帳ノード3は、通信ネットワーク5を介してBC311のSCイベント222に格納されているイベント情報を参照することができる(即ち、SCイベント222を介して、各分散台帳ノード3の間及び各分散台帳ノード3と各クライアントノード4の間でイベント情報を共有することができる。また、分散台帳ノード3やクライアントノード4は、イベント情報に従って各種の処理を実行することができる。
【0075】
以上、業務SC313のデプロイTXのブロック(図2Aに示すブロック311a)及び業務SC313の実行TXのブロック(図2Eに示すブロック311e)について説明したが、健全性管理SC314のデプロイTXのブロック(図2Bに示すブロック311b)及び健全性管理SC314の実行TXのブロック(図2Fに示すブロック311f)についても同様の構成を有する。尚、このように、業務SC313と健全性管理SC314のブロックは共通しており、両者を処理するための分散台帳ノード3の機能を共通化することができる。このため、本実施形態の仕組みは効率よく実現することが可能である。
【0076】
図3は、図1に示した分散台帳310のステート情報312のデータ構造である。ブロックチェーン(BC)による情報管理の仕組みでは、ブロックチェーン(BC)に管理される情報の最新の状態(例えば、ブロックチェーン(BC)に仮想通貨を管理している場合における仮想通貨の最新の残高)を取得するためにブロックチェーン(BC)を順に辿る必要があるため非効率である。そこで、本実施形態では、前述したRWセットの内容を全て反映することにより得られる、ブロックチェーン(BC)に管理される情報の最新の状態をステート情報312として管理する仕組み(例えば、非特許文献3に開示されている仕組み)を採用する。尚、本実施形態では、SC実行管理部330は、SC_IDをキーとしてスマートコントラクト(SC)の実体を取得してスマートコントラクト(SC)を実行するものとし、ステート情報312は、スマートコントラクト(SC)毎に管理される(データ格納領域が用意される)ものとする。
【0077】
同図に示すように、例示するステート情報312は、SC_ID3121、SC実体3122、及び内部テーブル3123の各項目を有する一つ以上のレコードを含む。
【0078】
SC_ID3121には、スマートコントラクト(SC)のSC_IDが格納される。
【0079】
SC実体3122には、スマートコントラクト(SC)の実体(例えば、実行可能なバイナリデータ(実行コード)等)が格納される。これによりSC実行管理部330は、SC_IDをキーとしてスマートコントラクト(SC)の実体を取得し実行することができる。
【0080】
内部テーブル3123には、スマートコントラクト(SC)の実行結果等のSCの実行に際して用いる情報が管理される。内部テーブル3123の内容はトランザクション(TX)が実行される度に更新される。本例では、内部テーブル3123に図2E図2Fに示したRWセット220に格納されているRWセットの最新の値が管理される。
【0081】
尚、同図の例では、内部テーブル3123にKey-value形式で情報を格納しているが、ValueについてはJSON(JavaScript Object Notation)(「Java」、「Javascript」はいずれも登録商標) 形式等の他の形式で内部テーブル3123に格納するようにしてもよい。それにより、例えば、任意のデータスキーマのテーブルとして内部テーブル3123に情報を格納するようにしてもよい。また、Keyの設計を工夫することで、内部テーブル3123にスキーマの異なる複数の情報を仮想的に管理することもできる。
【0082】
図4Aは、図1に示したコンソーシアム情報302の一例(以下、「組織情報302a」と称する。)である。組織情報302aは、参加組織に関する情報を含む。
【0083】
同図に示すように、例示する組織情報302aは、業務ID3021、組織ID3022、メンバーID3023等の項目を有する複数のレコードで構成される。
【0084】
上記項目のうち、業務ID3021には、分散台帳ネットワークを用いて行われる業務の識別子である業務ID(「業務A」、「業務B」等)が格納される。
【0085】
組織ID3022には、参加組織の識別子である組織ID(「組織1」、「組織2」、「組織3」、「組織4」等)が格納される。
【0086】
メンバーID3023には、参加組織のメンバーのメンバーID(「分散台帳ノード11」、「クライアントノード11」、「管理者11」、「ユーザ11」等)が格納される。
【0087】
図4Bは、図1に示したコンソーシアム情報302の他の一例(以下、「SC合意条件情報302b」と称する。)である。SC合意条件情報302bは、業務毎(業務ID毎)に設定された、スマートコントラクト(SC)について合意が成立する(スマートコントラクト(SC)の実行結果を受け入れる)ための条件(以下、「SC合意条件」と称する。)に関する情報を含む。
【0088】
同図に示すように、例示するSC合意条件情報302bは、業務ID3025及びSC合意条件D3026等の項目を有する一つ以上のレコードで構成される。
【0089】
上記項目のうち、業務ID3025には、前述した業務IDが格納される。
【0090】
SC合意条件D3026には、当該業務について設定されたSC合意条件が格納される。尚、SC合意条件は、BC311の内容(図2AのSCメタ定義216に格納されているSC合意条件)に基づき決定される。
【0091】
同図の例では、業務IDが「業務A」のレコードは、当該業務について「合意形成に至る(合意が成立する)ためには参加組織の多数決が必要」というSC合意条件が設定されていることを示す。
【0092】
また、同図の例では、業務IDが「業務B」のレコードは、当該業務について「障害が発生している分散台帳ノード3の数をfとした場合に、合意形成に至る(合意が成立する)ためには参加組織の2f+1以上の合意が必要(例えば、fが1であれば、合意が成立するためには3組織以上の合意が必要」というSC合意条件が設定されていることを示す。
【0093】
図5は、図1に示した健全性管理SC314、健全性管理SC314によって定義され操作されるステート情報312、及びSCイベント222を説明する図である。
【0094】
同図に示すように、健全性管理SC314は、SC関数(健全性報告511、健全性相互検証512、構成準拠状況検証513、アクション指示514、組織信頼度算出515、監視担当組織選出516、及び各種データ参照517)を含む。SC関数は、実行に際し、ステート情報312やBC311のSCイベント222に適宜アクセス(更新又は参照)する。
【0095】
同図に示すように、例示するステート情報312は、健全性監視方法定義551、健全性監視結果552、健全性検証結果553、構成設計情報554、構成準拠状況555、キャパシティ情報556、組織信頼度557、及び監視担当組織558を含む。また、例示するSCイベント222は、アクションイベント581を含む。
【0096】
ステート情報312のうち、健全性監視方法定義551は、各組織が他の組織の構成(分散台帳ノード3、クライアントノード4)の健全性を監視する際に用いるべき共通の監視方法や監視手段を規定(定義)した情報(以下、「健全性監視方法」と称する。)を含む。
【0097】
健全性監視結果552は、各組織のクライアントノード4が夫々、他の組織の構成(分散台帳ノード3、クライアントノード4)の健全性を監視した結果(以下、「健全性監視結果」と称する。)に関する情報を含む。
【0098】
健全性検証結果553は、各組織から相互に報告された健全性監視結果を検証することにより、各分散台帳ノード3の健全性(分散台帳ノード3の生死等)を判定した結果(以下、「健全性検証結果」と称する。)を示す情報を含む。
【0099】
構成設計情報554は、コンソーシアム全体の観点に基づく、個々の組織が準備し提供すべき構成についての情報(以下、「構成設計情報」と称する。)を含む。構成設計情報554は、コンソーシアム全体の観点からトップダウン的に設定されたものでもよいし、個々の組織の要望や提案に基づきボトムアップ的に設定されたものでもよい。尚、後述するように、構成設計情報554の内容は、アクションイベント581に基づき自動的に修正されることがある。
【0100】
構成準拠状況555は、健全性検証結果553と構成設計情報554を比較対照することにより導出される、各組織の構成が構成設計情報への準拠の度合いを示す情報(以下、「構成準拠状況」と称する。)を示す情報を含む。
【0101】
キャパシティ情報556は、各組織が提供可能なリソースの範囲や上限を示す情報(以下、「キャパシティ情報」と称する。)を含む。
【0102】
組織信頼度557は、各組織が他の組織の構成(分散台帳ノード3、クライアントノード4)を監視する場合における、各組織の信頼度を示す情報(以下、「組織信頼度」と称する。)を含む。
【0103】
監視担当組織558は、健全性の監視を担当する組織(以下、「監視担当組織」と称する。)を示す情報を含む。
【0104】
尚、キャパシティ情報556及び監視担当組織558の詳細については、後述の第2実施形態で説明する。
【0105】
SCイベント222のアクションイベント581は、構成準拠状況が予め設定された基準(構成設計情報)に達していない場合に健全性管理SC314によって生成されるイベント(以下、「アクションイベント」とも称する。)の情報を含む。クライアントノード4の監視エージェント435は、通信ネットワーク5を介してBC311のSCイベント222であるアクションイベント581を随時参照し、アクションイベント581に自身に対する指示が含まれていることを確認すると、アクションイベント581の内容に応じた処理(構成準拠情報が基準(構成設計情報)を満たすように組織に分散台帳ノード3の保守や増設を促す情報を出力する処理等)を実行する。
【0106】
健全性管理SC314のSC関数である健全性報告511は、クライアントノード4から送られてくる健全性監視結果を報告するためのトランザクション(TX)を受信し、受信したトランザクション(TX)を実行することにより健全性監視結果をステート情報312に健全性監視結果552として記録する。
【0107】
上記のSC関数である健全性相互検証512は、各組織から通知された健全性監視結果を検証し、検証した結果をステート情報312に健全性検証結果553として記録する。
【0108】
上記のSC関数である構成準拠状況検証513は、健全性検証結果と構成設計情報とを比較対照することにより各組織の構成準拠状況を検証し、検証した結果をステート情報312に構成準拠状況555として記録する。
【0109】
上記のSC関数であるアクション指示514は、構成準拠状況555を参照することにより健全性が不十分な組織を特定し、特定した組織(のクライアントノード4)を対象とするアクションイベントを生成し、生成したアクションイベントをアクションイベント581としてSCイベント222に格納する。
【0110】
上記のSC関数である組織信頼度算出515は、健全性の監視に関わる各組織の組織信頼度を求め、求めた組織信頼度をステート情報312に組織信頼度557として記録する。尚、組織信頼度算出515の詳細については第2実施形態で説明する。
【0111】
上記のSC関数である監視担当組織選出516は、健全性の監視を担当する組織を選出する。尚、監視担当組織選出516の詳細については第2実施形態で説明する。
【0112】
上記のSC関数である各種データ参照517は、分散台帳310、コンソーシアム情報302、参加メンバー管理情報303等の情報源にアクセスして各種のデータを取得又は参照する関数(例えば、クエリ関数)である。
【0113】
尚、以上に示したSC関数は、夫々を独立した関数として実装してもよいし、全部又は一部を統合した単一のSC関数として実装してもよい。
【0114】
続いて、図5に示した各種の情報(データ)について説明する。
【0115】
図6Aは、図5に示した健全性監視方法定義551の一例である。同図に示すように、例示する健全性監視方法定義551は、監視方法ID5511、監視方法5512、監視頻度5513、判定可能基準5514、判定方法5515等の項目を有する一つ以上のレコードで構成される。
【0116】
上記項目のうち、監視方法ID5511には、監視方法の識別子である監視方法IDが格納される。
【0117】
監視方法5512には、健全性の監視に用いる監視方法を示す情報が格納される。
【0118】
監視頻度5513には、健全性の監視を実行する頻度を示す情報が格納される。
【0119】
判定可能基準5514には、分散台帳ノード3の健全性を決定するための基準を示す情報を示す情報(SC合意条件)が格納される。
【0120】
判定方法5515には、複数の組織による健全性監視結果に基づき分散台帳ノード3の健全性を決定する際の判定方法を示す情報が格納される。
【0121】
例えば、同図に示す健全性監視方法定義551の監視方法IDが「監視方法01」のレコードは、「サービスディスカバリAPI」を利用した監視方法(各組織のクライアントノード4がノード探索部345によりノード探索情報401を取得した結果に基づき健全性を監視する方法)を「60秒」の監視頻度で実施することが定義されている。また、同レコードには、「SC合意条件」を満たす場合に健全性の監視結果の受け入れ(決定)が可能であり、複数の組織から集まった健全性監視結果の「多数決」により各ノードの生死を決定することが定義されている。
【0122】
また、同図に示す健全性監視方法定義551の監視方法IDが「監視方法02」のレコードは、各組織のクライアントノード4から各分散台帳ノード3の「外形監視によるTX実行時間」を「60秒」の監視頻度で監視することが定義されている。また、同レコードには、同レコードには、「SC合意条件」を満たす場合に健全性の監視結果の受け入れ(決定)が可能であり、集まった報告による実行時間の平均値が「3秒未満」であれば分散台帳ノード3は「正常」と判定することが定義されている。
【0123】
尚、例示する健全性監視方法定義551の例では、各項目の内容をテキスト形式で記載しているが、各項目の内容は、例えば、JSON(JavaScript Object Notation)(「Java」、「Javascript」はいずれも登録商標)等の形式で記載してもよい。また、より複雑な処理を効率よく表現するため、例えば、プログラミング言語やDSL(Domain Specific Language)に従って各項目の内容を記述してもよい。
【0124】
図6Bは、図5に示した健全性監視結果552の一例である。同図に示すように、例示する健全性監視結果552は、監視組織ID5521、監視対象5522、監視結果5523、監視日時5524、タイムスパン5525等の項目を有する一つ以上のレコードで構成される。
【0125】
上記項目のうち、監視組織ID5521には、他の組織の分散台帳ノード3の監視を行ってその結果を報告してきた組織の組織ID(以下、「監視組織ID」とも称する。)が格納される。尚、監視組織ID5521に、組織が所有するクライアントノード4の識別子(以下、「クライアントノードID」と称する。)を格納してもよい。
【0126】
監視対象5522は、組織ID55221及び分散台帳ノードID55222を小項目として含む。組織ID55221には、当該監視において監視対象となった組織の組織ID(以下、「監視対象組織ID」とも称する。)が格納される。また、分散台帳ノードID55222には、当該監視において監視対象となった分散台帳ノード3の識別子(以下、「分散台帳ノードID」と称する。)が格納される。
【0127】
監視結果5523には、当該監視の結果を示す情報が格納される。本例では、監視の結果、監視対象の分散台帳ノード3の健全性が正常と判定された場合は「OK」が、健全性が異常と判定された場合は「NG」が格納される。
【0128】
監視日時5524には、当該レコードの監視結果についての報告が行われた日時を示す情報(タイムスタンプ)が格納される。クライアントノード4の監視エージェント435による他の組織の分散台帳ノード3の健全性の監視は、健全性監視方法定義551の監視頻度5513に従って繰り返し(定期的等)行われ、その結果が分散台帳ノード3に報告される。尚、上記日時には、組織の間で多少のばらつきが生じ得る。
【0129】
タイムスパン5525には、組織間の上記のばらつきを吸収する目的で用いる情報であるタイムスパンが格納される。タイムスパンは、例えば、健全性管理SCや各組織の監視エージェント435により設定される。健全性相互検証512による検証は、タイムスパン毎の健全性監視結果を単位として行われる。例えば、同図に符号552aで示すレコードは、「Span1-1」で特定されるタイムスパン内の日時「(略):00:001」に、「組織1」が「組織2」の「ノード1」の健全性の監視を行った結果が「OK」であったことを示している。
【0130】
図6Cは、図5に示した健全性検証結果553の一例である。同図に示すように、例示する健全性検証結果553は、監視対象5531、健全性検証結果履歴5532等の項目を有する一つ以上のレコードで構成される。
【0131】
上記項目のうち、監視対象5531(組織ID55311、分散台帳ノードID55312)については、図6Bの監視対象5522と同様であるので説明を省略する。
【0132】
健全性検証結果履歴5532には、各組織から報告された健全性監視結果を検証して分散台帳ノード3の健全性(OK/NG)を検証した結果(健全性検証結果)が格納される。同図の例では、タイムスパン毎の健全性判定結果が時系列順に格納されている。例えば、一行目のレコード553aには、「組織1」の「ノード2」の健全性検証結果が「Span1-1」及び「Span1-2」では「OK」、「Span1-3」では「NG」であることが(JSON形式で)格納されている。
【0133】
図6Dは、構成設計情報554の一例である。構成設計情報554は、コンソーシアム全体として個々の組織が準備し提供すべき構成を示す情報を含む。同図に示すように、例示する構成設計情報554は、組織ID5541、準備ノード5542、仕様詳細5543等の項目を有する一つ以上のレコードで構成される。
【0134】
上記項目のうち、組織ID5541には、組織IDが格納される。
【0135】
準備ノード5542には、組織がコンソーシアムのために準備し提供すべき分散台帳ノード3の数を示す情報が格納される。
【0136】
仕様詳細5543には、組織が準備し提供すべき分散台帳ノード3が満たすべき仕様(スペック)を示す情報が格納される。上記情報は、例えば、分散台帳ノード3のハードウェア仕様(プロセッサ、メモリ、ストレージ等の処理性能や容量等))を示す情報、ソフトウェア仕様(オペレーティングシステムやアプリケーションソフトウェア等のソフトウェアの種類やバージョン等)、分散台帳ノード3の機能(TX承認機能、承認済みTX配信等)等を示す情報を含む。上記情報の内容は、例えば、コンソーシアムの運営方針に応じて決定される。尚、クライアントノード4による他の組織の分散台帳ノード3の健全性の監視において、上記情報への準拠状況を監視対象とするようにしてもよい。
【0137】
図6Eは、構成準拠状況555の一例である。構成準拠状況555は、図6Cの健全性検証結果553と図6Dの構成設計情報554とを比較対照することにより生成される、各組織の分散台帳ノード3の構成準拠状況を示す情報を含む。同図に示すように、例示する構成準拠状況555は、組織ID5551、準拠状況5552、構成準拠率5553、タイムスパン5554等の項目を有する一つ以上のレコードで構成される。
【0138】
上記項目のうち、組織ID5551には、組織IDが格納される。
【0139】
準拠状況5552には、当該組織の構成準拠状況を示す情報が格納される
【0140】
構成準拠率5553には、当該組織の構成準拠率を示す情報が格納される。
【0141】
タイムスパン5554には、当該レコードの構成準拠状況を確認したタイムスパンを示す情報が格納される。尚、監視頻度毎に構成準拠状況の検証では粒度が細か過ぎる場合には、例えば、複数のタイムスパンを単位として構成準拠状況を確認するようにしてもよい。
【0142】
同図の場合、例えば、レコード555aは、「組織1」の構成準拠状況がタイムスパン「Span1」では、構成準拠状況が「OK」であり、構成準拠率が「99.9%」であることを示す。尚、タイムスパン「Span1」は、図6Cの健全性検証結果553における「Span1-XX」のデータを対象として集計したことを意味する。
【0143】
また、同図におけるレコード555bは、「組織1」の構成準拠状況がタイムスパン「Span1」では、構成準拠状況が「NG」であり、構成準拠率が「50%」であることを示している。尚、同図に示すように、当該レコードの準拠状況5552には、本例で準拠状況が「NG」となった理由「1ノード不足」がJSON形式で格納されている。
【0144】
図6Fは、キャパシティ情報556の一例である。キャパシティ情報556は、各組織が提供可能なリソースの範囲や上限を示す情報を含む。同図に示すように、例示するキャパシティ情報556は、組織ID5561、準備可能ノード5562等の項目を有する一つ以上のレコードで構成される。
【0145】
上記項目のうち、組織ID5561には、組織IDが格納される。
【0146】
準備可能ノード5562には、当該組織がコンソーシアムのために提供が可能なリソースの範囲や上限を示す情報が格納される。本例では、準備可能ノード5562に分散台帳ノード3の数を格納している。尚、準備可能ノード5562に、例えば、図6Dに示した仕様の情報を含めてもよい。
【0147】
図6Gは、組織信頼度557の一例である。組織信頼度557は、健全性監視に関わる各組織の信頼度を示す情報を含む。同図に示すように、例示する組織信頼度557は、組織ID5571、健全性報告内容信頼度5572、構成準拠信頼度5573等の項目を有する一つ以上のレコードで構成される。
【0148】
上記項目のうち、組織ID5571には、組織IDが格納される。
【0149】
健全性報告内容信頼度5572には、当該組織から報告された健全性監視結果がどの程度信頼できるかを定量的に示した情報(以下、「健全性報告内容信頼度」とも称する。)が格納される。本例では、健全性報告内容信頼度5572に、他の組織の報告内容との一致度を百分率で表現した値を格納している。
【0150】
構成準拠信頼度5573には、当該組織が構成準拠という観点でどの程度信頼できるかを定量的に示した情報(以下、「構成準拠信頼度」とも称する。)が格納される。尚、図6Eに示した構成準拠率5553と同様に、構成準拠信頼度はタイムスパンを用いて把握してもよい。また、例えば、構成準拠率の過去の所定期間における累積値に基づき構成準拠信頼度を求めてもよい。
【0151】
図6Hは、監視担当組織558の一例である。監視担当組織558には、他の組織の分散台帳ノード3の健全性の監視を担当する組織を示す情報が格納される。同図に示すように、例示する監視担当組織558は、監視担当組織ID5581等の項目を有する複数のレコードで構成される。
【0152】
監視担当組織ID5581には、健全性監視報告を担当する組織の組織IDのリストが格納される。同図における符号558aで示すレコードは、「組織1」、「組織3」、「組織4」が健全性を監視し報告する組織であることを示している。
【0153】
図7は、分散台帳ネットワークに参加するメンバーの登録に際して分散台帳ノード3が行う処理(以下、「メンバー登録処理S700」と称する。)を説明するフローチャートである。以下、同図とともにメンバー登録処理S700について説明する。
【0154】
まず、メンバー管理部350が、クライアントノード4等からメンバーの登録要求(以下、「メンバー登録要求」と称する。)を受信する(S711)。メンバー登録要求には、登録の対象となるメンバー(以下、「対象メンバー」と称する。)が所属する組織の組織IDや対象メンバーのメンバーIDを含む。
【0155】
続いて、メンバー管理部350は、メンバー登録要求に指定されている対象メンバーについて、秘密鍵と公開鍵の組(以下、秘密鍵と当該秘密鍵の公開鍵の組のことを「鍵ペア」と称する。)を生成し、生成した鍵ペアをメンバーIDと対応づける(S712)。
【0156】
続いて、メンバー管理部350は、対象メンバーの情報(組織ID、メンバーID等)と鍵ペアの公開鍵を他の分散台帳ノード3にブロードキャストする(S713)。ブロードキャストを受信した他の分散台帳ノード3は、受信した情報を参加メンバー管理情報303として管理する。
【0157】
続いて、メンバー管理部350は、S711でメンバー登録要求を送ってきた他の分散台帳ノード3に、S712で生成した鍵ペアの秘密鍵D31を送信する(S714)。秘密鍵D31を受信した他の分散台帳ノード3は、受信した秘密鍵D31を自身の秘密鍵D31として参加メンバー管理情報303に管理する。
【0158】
尚、以上では、メンバー管理部350が分散台帳ノード3の機能であるものとして説明したが、メンバー管理部350は、クライアントノード4やメンバー管理を行う専用のノード等の他のノードに実装するようにしてもよい。
【0159】
本実施形態では、S712で生成した鍵ペアを用い、分散台帳ネットワークに参加するメンバーの認証や各種トランザクション(TX)への署名、SC実行権限の制御等を行う。例えば、クライアントノード4が秘密鍵で電子署名したトランザクション(TX)、を発行し、これを検証する分散台帳ノード3が、秘密鍵に対応する公開鍵を用いて電子署名を検証することにより本人確認を行う。鍵ペアの生成方法や電子署名の検証方法、メンバーIDと鍵ペアを対応づける方法等は、例えば、公知技術や周知技術により行われる。
【0160】
図8は、分散台帳ノード3の分散台帳310へのスマートコントラクト(SC)のデプロイ又は実行に際して分散台帳ノード3が行う処理(以下、「SCデプロイ/実行処理S800」と称する。)を説明するフローチャートである。以下、同図とともにSCデプロイ/実行処理S800について説明する。
【0161】
まず、TX管理部320が、クライアントノード4等の他のノードから、スマートコントラクト(SC)のデプロイ又は実行のためのトランザクション(TX)を受信する(S811)。
【0162】
続いて、分散台帳ノード3のコンセンサス管理部325が、受信したトランザクション(TX)が、デプロイTX又は実行TXのいずれであるかを判定する(S812)。受信したトランザクション(TX)がデプロイTXであれば(S812:デプロイTX)、処理はS821に進む。受信したトランザクション(TX)が実行TXであれば(S812:実行TX)、処理はS831に進む。
【0163】
S821では、コンセンサス管理部325は、他の分散台帳ノード3との間で、受信したデプロイTXの実行とBC311への追加についての合意形成のための処理(以下、「合意形成処理」と称する。)を行う(S821)。尚、合意形成は、例えば、公知技術又は周知技術を用いて行われる。例えば、非特許文献3に開示されている「Endorser-Ordererモデル」により合意形成を行う場合は次の手順で合意形成が行われる。
【0164】
まず、コンセンサス管理部325は、分散台帳ネットワークに参加している分散台帳ノード3(自身を含む)の中から承認権限のある分散台帳ノード3を選出し、選出した分散台帳ノード3の夫々とデプロイTXを共有する。選出された分散台帳ノード3の夫々は、共有したデプロイTXが問題を有するか否かを検証(改竄の有無の検証、正当性の有無の検証等)する。
【0165】
コンセンサス管理部325は、選出された分散台帳ノード3の夫々から検証結果(「承認」又は「非承認」)を取得し、各分散台帳ノード3の検証結果を予め設定された合意条件(例えば、2組織以上の承認)と対照し、当該デプロイTXを受け入れるか否かを判定する。そして、コンセンサス管理部325は、判定した結果を分散台帳ネットワークに参加する全ての分散台帳ノード3に送信する。
【0166】
尚、このように「Endorser-Ordererモデル」による合意形成では、分散台帳ネットワークに参加する全ての分散台帳ノード3がトランザクション(TX)の検証を行う必要が無く、トランザクション(TX)を効率よく検証することができる。
【0167】
合意が成立すると、続いて、(当該分散台帳ノード3の)TX配信部36が、分散台帳ネットワークに参加している全ての分散台帳ノード3にデプロイTXをブロードキャストする。そして、上記のデプロイTXを受信した分散台帳ノード3のSC実行管理部330は、受信したデプロイTXを実行し、当該デプロイTXにかかるスマートコントラクト(SC)を分散台帳310にデプロイする(S822)。尚、デプロイは、デプロイTXの内容に基づきSC_IDやスマートコントラクト(SC)の実体を分散台帳310上のステート情報として登録し、ブロックチェーン(BC)(BC311)の末尾に当該デプロイTXのブロックを追加することにより行われる。
【0168】
続いて、コンセンサス管理部325は、デプロイTXの実行結果を当該デプロイTXの送信元に送信する(S823)。
【0169】
一方、S831では、コンセンサス管理部325は、実行TXについてS821と同様の合意形成処理を行う。合意が成立すると、続いて、承認済TX配信部335が、分散台帳ネットワークに参加している全ての分散台帳ノード3に実行TXをブロードキャストする。上記実行TXを受信した分散台帳ノード3のSC実行管理部330は、実行TXにより指定されるスマートコントラクト(SC)を実行する(S832)。尚、スマートコントラクト(SC)の実行は、実行TXに指定されているスマートコントラクト(SC)に対し、実行TXに指定されている呼び出し関数を指定し入力引数を与えることにより行われる。上記のスマートコントラクト(SC)が実行されることにより、分散台帳310の内容が更新され、ブロックチェーン(BC)(BC311)の末尾に当該実行TXのブロックが追加される。
【0170】
続いて、当該分散台帳ノード3のコンセンサス管理部325は、実行TXの実行結果を当該実行TXの送信元に送信する(S833)。
【0171】
図9は、組織のクライアントノード4が他の組織の分散台帳ノード3の健全性の監視を行い、その結果を分散台帳ノード3に報告する際に分散台帳システム1にて行われる処理(以下、「健全性報告処理S900」と称する。)を説明するフローチャートである。以下、同図とともに健全性報告処理S900について説明する。尚、健全性報告処理S900にて実行されるスマートコントラクト(SC)は、当該処理の実行前に各分散台帳ノード3にデプロイ済みであるものとする。
【0172】
クライアントノード4の監視エージェント435は、ステート情報312の健全性監視方法定義551で指定されている方法で他の組織の分散台帳ノード3の健全性監視を行う(S911)。
【0173】
例えば、監視エージェント435は、図6Aに例示した健全性監視方法定義551の一つ(ここでは、監視方法IDが「監視方法01」のレコードの定義とする。)に従い、ノード探索部425と連携し、分散台帳ネットワークに存在する分散台帳ノード3の夫々が現在利用可能であるか否かを示す情報を取得し、取得した情報に基づき健全性を判定し、その結果を健全性の監視結果とする。
【0174】
続いて、クライアントノード4は、S911の健全性の監視結果を入力として、分散台帳ノード3に対し、健全性管理SC314のSC関数「健全性報告511」を呼び出す(実行を指示する)実行TXを送信(発行)する(S912)。
【0175】
分散台帳ノード3は、上記の健全性の監視結果及び実行TXを受信すると、SC実行管理部330が、実行TXに従い、受信した健全性の監視結果を入力としてSC関数「健全性報告511」を実行する(S921)。
【0176】
SC関数「健全性報告511」の処理において、分散台帳ノード3は、まず、受信した実行TXや当該実行TXに付帯して受信した情報(当該実行TXの送信者の組織の情報等)に基づき、当該組織が健全性の報告を行う権限を有しているか否かを確認する(S922)。そして、当該組織が上記の権限を有していることを確認すると、分散台帳ノード3は、クライアントノード4から受信した健全性の監視結果をステート情報312の健全性監視結果552に追加する(S923)。
【0177】
例えば、図6Bの健全性監視結果552の符号552a~552dで示す4つのレコードの情報は、「組織1」のクライアントノード4から送信された実行TXにより健全性報告511が実行されて追加された情報である。これらのレコードには、タイムスパン「Span1-1」における健全性の監視結果として、他の組織である「組織2」と「組織3」の分散台帳ノード3の健全性の監視結果が格納されている。
【0178】
尚、各組織からの健全性の監視結果の報告は、例えば、報告を行った組織以外の他の組織が上書きすることができないようにアクセス制限を行ってもよい(例えば、非特許文献3の「ABAC, Stateエンドース」の方法でアクセス制限する等)。
【0179】
図10は、クライアントノード4から分散台帳ノード3に図5の健全性管理SCのSC関数「健全性相互検証512」を呼び出す実行TXが送信された際に分散台帳ノード3が行う処理(以下、「健全性相互検証処理S1000」と称する。)を説明するフローチャートである。以下、同図とともに健全性相互検証処理S1000について説明する。
【0180】
分散台帳ノード3は、上記の実行TXを受信すると、SC実行管理部330が、健全性管理SCのSC関数「健全性相互検証512」を実行する(S1011)。
【0181】
SC関数「健全性相互検証512」の処理において、分散台帳ノード3は、検証対象期間(タイムスパン)のステート情報「健全性監視結果552」を参照し、当該検証対象期間における分散台帳ノード3の健全性を検証する(S1012)。
【0182】
尚、上記の検証対象期間は、例えば、実行TXに付帯してクライアントノード4から受信した情報に基づくものでもよいし、また、現在の日時から自動的に決定するようにしてもよい。また、検証可能な全ての期間としてもよい。
【0183】
例えば、図6Bの健全性監視結果552では、タイムスパン5525が「Span1-1」のタイムスパンにおける組織2の「ノード1」の分散台帳ノード3は、「組織1」と「組織3」のいずれの監視結果についても監視結果5523に「OK」が格納されている。この場合、他の参加組織からの報告も「OK」であった場合は、判定可能基準5514「SC合意条件」(ここでは図4Bの業務ID3025が「業務A」のSC合意条件3026「参加組織の過半数以上の承認」とする。)を満し、判定方法5515「多数決」に従って健全性検証結果は「OK」となる。
【0184】
図10に戻り、続くSC関数「健全性相互検証512」の処理において、分散台帳ノード3は、健全性検証結果を、ステート情報312の「健全性検証結果553」に追加もしくは更新する(S1013)。例えば、健全性検証結果553が図6Bの内容である場合、図6Cの健全性検証結果553の「組織2」の「ノード1」のレコードに、健全性検証結果履歴5532として「Span1-1: OK」が追加される。
【0185】
尚、以上では、ある組織のクライアントノード4からSC関数「健全性相互検証512」の実行TXが送信(発行)されたことを契機として健全性相互検証処理S1000が行われる場合を例示したが、他の事象を契機として健全性相互検証処理S1000を実行してもよい。例えば、SC関数「健全性報告511」により健全性報告処理S900が行われた際、分散台帳ノード3が、検証対象期間について健全性の検証が可能か否かの判定基準を満たす旨の報告を取得できている否かを判定し、取得できていると判定した場合にSC関数「健全性相互検証512」を後続して実行するようにしてもよい。また、所定のSCイベントが生じたことを契機として健全性相互検証処理S1000を実行するようにしてもよい。
【0186】
図11は、クライアントノード4から、分散台帳ノード3群の分散台帳ノード3に対し、図5の健全性管理SC314のSC関数「構成準拠状況検証513」の実行TXが送信された場合に分散台帳ノード3において行われる処理(以下、「構成準拠状況検証処理S1100」と称する。)、及び、SC関数「アクション指示514」の実行TXが送信された場合に分散台帳ノード3において行われる処理(以下、「アクション処理S1150」と称する。)を説明するフローチャートである。以下、同図とともに構成準拠状況検証処理S1100及びアクション処理S1150について説明する。
【0187】
まず、構成準拠状況検証処理S1100に相当するS1111~S1114の処理について説明する。
【0188】
分散台帳ノード3群の各分散台帳ノード3は、実行TXとして、健全性管理SC314のSC関数「構成準拠状況検証513」の呼び出しを受信し、各分散台帳ノード3のSC実行管理部330が、受信した実行TXに従いSC関数「構成準拠状況検証513」を実行する(S1111)。
【0189】
SC関数「構成準拠状況検証513」の処理において、分散台帳ノード3は、まず、構成設計情報554を取得する(S1112)。尚、SC関数「構成準拠状況検証513」は、例えば、データ参照関数を用いて構成設計情報554を取得する。
【0190】
続くSC関数「構成準拠状況検証513」の処理において、分散台帳ノード3は、検証対象期間(タイムスパン)におけるステート情報312「健全性検証結果553」を参照し、当該検証対象期間における各組織の構成準拠状況を検証する(S1113)。
【0191】
尚、上記の検証対象期間は、例えば、実行TXからの入力情報によって指定される。また、上記の検証対象期間は、例えば、現在日時に基づき分散台帳ノード3が自動的に決定するようにしてもよい。また、例えば、分散台帳ノード3が未検証の全ての期間を上記の検証対象期間とするようにしてもよい。
【0192】
分散台帳ノード3の構成準拠状況は、例えば、対象期間中における分散台帳ノード3の健全性を正常であった期間の割合から求め、対象期間中に健全性が正常であった分散台帳ノード3のノード数と構成設計情報554の準備ノード5542との差分から構成準拠率を求める。図6Cの健全性検証結果553と図6Dの構成設計情報554を例として具体的に説明する。
【0193】
まず、健全性検証結果553から、例えば、「Span1(Span1-X)」を検証対象期間とした場合、「組織1」の「ノード1」の健全性検証結果は「Span1-1にてOK、Span1-2にてOK、Span1-3にてOK…」であるので、「Span1」のタイムスパンにおける「組織1」の「ノード1」の健全性は「3÷3=100%」となる。また、同様に「組織1」の「ノード2」の健全性は「100%」となる。
【0194】
ここで構成設計情報554と比較すると、「組織1」については、準備ノード5542は「2ノード」であり、健全性検証結果553から、「ノード1」及び「ノード2」の2ノードが検証対象期間において健全性が「100%」(正常)であることが確認できたため、当該検証対象期間における準拠状況は「OK」となり、当該検証対象期間における準拠率は「100%」となる。
【0195】
また、「組織2」の「ノード1」の分散台帳ノード3の健全性検証結果は「Span1-1にてOK、Span1-2にてOK、Span1-3にてOK…」であるので、「Span1」のタイムスパンにおける「組織2」の「ノード1」の健全性は「3÷3=100%」となる。一方、「組織2」の「ノード2」の健全性は0÷3で「0%」となる。
【0196】
ここで構成設計情報554と比較すると、「組織2」については、準備ノード5542は「2ノード」であり、健全性検証結果553から、「ノード2」の健全性が「0%」ある、当該検証対象期間における準拠状況は「NG」となり、その理由は「1ノード不足」となる。また、構成準拠率は「「100%+0%」/2=50%」となる。
【0197】
図11に戻り、続くSC関数「構成準拠状況検証513」の処理において、分散台帳ノード3は、検証結果を健全性管理SC314のステート情報312「構成準拠状況」に追加(更新)する(S1114)。
【0198】
尚、以上では、分散台帳ノード3がSC関数「構成準拠状況検証513」の実行TXを受信したことを契機として構成準拠状況検証処理S1100を実行する場合を示したが、構成準拠状況検証処理S1100は、他の事象を契機として実行してもよい。また、図6Aに示した監視頻度5513のように予め設定した対象期間や実行頻度に従って構成準拠状況検証処理S1100を実行するようにしてもよい。また、例えば、SC関数「健全性相互検証512」に後続してSC関数「構成準拠状況検証513」を実行するようにしてもよい。また、SCイベントの発生を契機としてSC関数「構成準拠状況検証513」を実行するようにしてもよい。
【0199】
続いて、アクション処理S1150に相当するS1151~S1154及びS1161~S1163の処理について同図とともに説明する。
【0200】
各分散台帳ノード3は、実行TXとして、健全性管理SCのSC関数「アクション指示514」を呼び出す実行TXを受信(S1151)すると、SC実行管理部330が、受信した実行TXに従いSC関数「アクション指示514」を実行する。尚、SC関数「アクション指示514」は、SC関数「構成準拠状況検証513」に後続して分散台帳ノード3が自動実行するようにしてもよい。
【0201】
SC関数「アクション指示514」の処理において、分散台帳ノード3は、まず、現在の構成準拠状況が所定の条件から逸脱するか否かを判定する(S1152)。上記の条件としては、例えば、構成準拠状況において「NG」が一定期間が続くこと、全ての組織又はいずれかの組織の構成準拠率が所定の閾値を下回ること等がある。
【0202】
S1152において、現在の構成準拠状況が所定の条件から逸脱しない場合(S1152:No)」、アクション処理S1150は終了する。一方、現在の構成準拠状況が所定の条件から逸脱する場合(S1152:Yes)、SC関数「アクション指示514」は、現在の状況に応じてコンソーシアムの参加組織に向けたアクション(例えば、「構成見直し依頼」、「ペナルティを課す」等)を決定する(S1153)。
【0203】
図6Eの構成準拠状況555では、「Span1」において「組織2」の分散台帳ノード3が1台不足しており、構成準拠状況555が構成設計情報554から逸脱している。そのため、SC関数「アクション指示514」は、コンソーシアムとしてのアクションを次のようにして決定し発行する。
【0204】
まず、分散台帳ノード3は、構成の見直しを行い、コンソーシアムに不足分ノードを1台追加することを決定する。また、分散台帳ノード3は、当該ノードを用意する組織を選出するため、キャパシティ情報556を参照する。ここで例えば、図6Fのキャパシティ情報556を図6Dの構成設計情報554と比較すると、「組織1」、「組織3」、「組織4」のいずれも準備可能ノード5562に1台ずつ余裕があることがわかる。そこで、分散台帳ノード3は、例えば、現在の準備ノード5542が最も少ない「組織4」に対して、「組織2」の代わりにコンソーシアムへの分散台帳ノード3の提供を依頼するアクションの発行を決定する。一方、分散台帳ノード3は、「組織2」に対して構成設計情報554に指定されている構成を準備できなかったことについてペナルティ(「Span1」の期間中の損失額の支払い等)を課す旨のアクションの発行を決定する。分散台帳ノード3は、発行することを決定した以上のアクションを指示するアクションイベントを生成し、生成したアクションイベントをアクションイベント581としてSCイベント222に格納する(S1154)。
【0205】
クライアントノード4の監視エージェント435は、SCイベント222を随時監視している。監視エージェント435は、上記のアクションイベント581の発生を検出すると(S1161)、自組織が当該アクションイベント581の対象組織であるかを確認する(S1162)。自組織がアクションイベント581の対象組織であった場合(S1162:YES)、クライアントノード4は、アクションイベント581に指示された内容に従ってアクションイベント581に対応する処理を実施する(S1163)。監視エージェント435は、アクションイベント581の処理の実施の結果を、必要に応じて、例えば、健全性管理SC314を介してコンソーシアムに報告する。
【0206】
各組織は、例えば、自組織についてのアクションイベント581の発生を確認すると、分散台帳ノード3をコンソーシアムに追加する等、アクションイベント581の内容に従った対応を行い、その結果を分散台帳ノード3に報告する。尚、分散台帳ノード3は、上記報告を受信すると、構成設計情報554を更新(例えば、「組織4」の準備ノードを1台追加し、「組織2」の準備ノードを1台減らす等)する。これによりコンソーシアムとしての構成を是正することができる。尚、組織2はアクションイベント581を受け、ペナルティ分の損失額を、例えば、仮想通貨としてコンソーシアムに支払う。
【0207】
以上に説明したように、本実施形態の分散台帳システム1によれば、健全性監視(構成の正しさ/死活)を(複数の)他組織が実施/検証することで客観性を確保できる。
【0208】
また、以上に示したように、所定の処理をスマートコントラクト(SC)により行うことで、各組織の健全性監視結果をオンチェーンに集約して分析処理することができる。このため、単一信頼点を排除して証拠としての価値を提供できる。
【0209】
また、本実施形態の分散台帳システム1によれば、組織を横断する情報収集を実現できる、信頼できる証拠に基づくアクションを実施できる等の効果がある。
【0210】
[第2実施形態]
続いて、第2実施形態の分散台帳システム1について説明する。尚、第2実施形態の分散台帳システム1の基本的な構成は、第1実施形態の分散台帳システム1と同様であるので、以下、第1実施形態との相違点を中心として説明する。
【0211】
第2実施形態の分散台帳システム1は、第1実施形態の分散台帳システム1の構成に加え、各組織の報告の内容や構成準拠状況に基づき、各組織の信頼度(以下、「組織信頼度」と称する。)を求め、その結果を、コンソーシアムや各組織にフィードバックする構成を有する。また、第2実施形態の分散台帳システム1は、組織信頼度に基づき、他の分散台帳ノード3の健全性の監視を行う組織を選出する構成を有する。
【0212】
図12は、第2実施形態の分散台帳システム1における分散台帳ノード3が、各組織の組織信頼度を求める際に行う処理(以下、「信頼度算出処理S1200」と称する。)を説明するフローチャートである。以下、同図とともに信頼度算出処理S1200について説明する。
【0213】
各分散台帳ノード3は、クライアントノード4から、実行TXとして、図5に示す健全性管理SC314のSC関数「組織信頼度算出515」を呼び出す実行TXを受信すると、SC関数「組織信頼度算出515」を実行する(S1211)。尚、クライアントノード4は、所定のタイミング(例えば、定期的等)で上記実行TXを各分散台帳ノード3に送信(発行)する。
【0214】
SC関数「組織信頼度算出515」の処理において、分散台帳ノード3は、まず、算出対象とする期間(例えば、タイムスパン。以下、「算出対象期間」と称する。)におけるステート情報312の健全性監視結果552と健全性検証結果553を参照する。そして、分散台帳ノード3は、取得した情報に基づき、当該算出対象期間における各組織の健全性の監視の内容についての信頼度(以下、「健全性報告内容信頼度」と称する。)を求める(S1212)。
【0215】
上記の算出対象期間は、例えば、クライアントノード4から分散台帳ノード3に送信する実行TXに付帯させてもよいし、現在日時から自動的に設定してもよい。また、算出対象としていない全ての期間を対象としてもよい。
【0216】
健全性報告内容信頼度としては、例えば、算出の対象となる組織の各タイムスパンにおける健全性の監視結果が、各タイムスパンにおいて他の組織の判断結果(コンソーシアム全体の総意)との一致の度合い(割合)から求める。
【0217】
続くSC関数「組織信頼度算出515」の処理において、分散台帳ノード3は、算出対象期間におけるステート情報312の構成準拠状況555を参照し、算出対象期間における各組織の構成準拠の度合い(以下、「構成準拠信頼度」と称する。)を求める(S1213)。
【0218】
構成準拠信頼度は、例えば、各組織の算出対象期間における全てのタイムスパンの構成準拠率の統計値(平均値、最小値、最大値等)から求める。
【0219】
続くSC関数「組織信頼度算出515」の処理において、分散台帳ノード3は、S1212で求めた健全性報告内容信頼度とS1213で求めた構成準拠信頼度に基づく情報を組織信頼度として健全性管理SCのステート情報312の組織信頼度557に追加(更新)する(S1214)。
【0220】
このように、組織信頼度を求めてステート情報312に記録するので、各組織の信頼度の客観的な評価を得ることができる。
【0221】
尚、健全性報告内容信頼度は、健全性相互検証の判定可能基準及び判定方法に活用してもよく、例えば、健全性報告内容信頼度の高い組織からの報告の重みを大きくする等の利用形態が考えられる。
【0222】
また、健全性報告内容信頼度を、健全性の監視を行う組織の選出に用いてもよく、例えば、健全性報告内容信頼の高い組織を優先して選出するようにする。
【0223】
このように、健全性報告内容信頼度を活用することで、健全性の監視の精度を高める効果が期待できる。
【0224】
また、構成準拠信頼度に基づきペナルティ額の重みづけを行う等、構成準拠信頼度は前述したアクションイベント581の内容を決定する際に用いることができる。これにより分散台帳システム1の運営の健全化を期待できる。
【0225】
また、構成準拠信頼度の利用形態としては、ある組織の分散台帳ノード3が不足している場合は、構成準拠信頼度が当該組織よりも高い他の組織に分散台帳ノード3の提供を依頼するといったことも考えられる。
【0226】
このように、構成準拠信頼度を積極的に活用することで、コンソーシアムとしての構成準拠率の維持向上を促進する効果が期待できる。
【0227】
図13は、第2実施形態の分散台帳システム1における分散台帳ノード3が、健全性の監視を行う組織を選出する際に行う処理(以下、「監視担当組織選出処理S1300」と称する。)を説明するフローチャートである。以下、同図とともに監視担当組織選出処理S1300について説明する。
【0228】
各分散台帳ノード3は、クライアントノード4から、実行TXとして、図5に示す健全性管理SC314のSC関数「監視担当組織選出516」を呼び出す実行TXを受信すると、SC関数「監視担当組織選出516」を実行する(S1311)。クライアントノード4は、適宜なタイミング(例えば、定期的等)で上記実行TXを各分散台帳ノード3に送信(発行)する。
【0229】
SC関数「監視担当組織選出516」の処理において、分散台帳ノード3は、まず、ステート情報312の健全性監視方法定義551の判定可能基準5514に基づき監視担当組織の選出に用いる情報(SC合意条件等)を取得する(S1312)。例えば、上記処理において、分散台帳ノード3は、判定可能基準5514に「SC合意条件」が格納されている場合、分散台帳ノード3の記憶部300が記憶するコンソーシアム情報302に含まれているSC合意条件を取得する。本例では、SC合意条件「3組織以上からの承認」を取得するものとする。
【0230】
続くSC関数「監視担当組織選出516」の処理において、分散台帳ノード3は、ステート情報312の組織信頼度557を取得する(S1313)。
【0231】
続いて、上記処理において、分散台帳ノード3は、分散台帳ノード3は、S1312とS1313で取得した情報を用いて監視担当組織を決定する(S1314)。例えば、分散台帳ノード3は、SC合意条件を最低限満たすために3つの組織を選出する。例えば、組織信頼度557が図6Gの内容である場合、SC関数「監視担当組織選出516」は、健全性報告内容信頼度5572が高い順に、「組織1」、「組織3」、「組織4」を選出する。
【0232】
続くSC関数「監視担当組織選出516」の処理において、分散台帳ノード3は、選出した組織をステート情報312の監視担当組織558に追加(更新)する(S1315)。
【0233】
各組織のクライアントノード4の監視エージェント435は、例えば、健全性管理SC314を介して監視担当組織558を取得し、自身が監視担当組織に選出されている場合に他の組織の健全性の監視と分散台帳ノード3への報告を行う。
【0234】
また、例えば、健全性管理SC314は、監視担当組織558の情報を用いて、図9のS922において組織が権限を有するか否かの確認を行う。
【0235】
尚、以上では、判定可能基準5514(SC合意条件)を最低限満たす組織を選出したが、余裕をもって少し多めに組織を選出するようにしてもよい。そのようにすることで、例えば、健全性報告内容信頼度が低い組織しか存在しない場合に監視担当組織が不足する事態となるリスクを低減することができる。
【0236】
以上のように、健全性の監視の判定可能基準(とくにSC合意条件等の分散台帳システムとしての合意条件)に基づき、必要最小限の監視担当組織を選出することで、分散台帳ノード3の健全性の監視の客観性確保と、リソース量や処理量の効率化とを両立させることができる。
【0237】
<健全性に関する情報の提供>
以上に説明した分散台帳システム1は、分散台帳ノード3の分散台帳310に管理されている情報をユーザに随時提供する仕組みを備える。上記仕組みは、分散台帳310に直接アクセスして上記情報を取得するものでもよいし、健全性管理SC314のように分散台帳ノード3(分散台帳310)にデプロイされたスマートコントラクト(SC)を利用して上記情報を取得するものでもよい。また、上記情報を提供する仕組みは、分散台帳ノード3やクライアントノード4に設けてもよいし、それら以外のノード(Webサーバ等)に設けてもよい。
【0238】
図14は、上記の情報を提供する情報処理装置がユーザに提示する画面(以下、「健全性情報提供画面1400」と称する)の一例である。例示する健全性情報提供画面1400には、ログイン中の組織IDが「組織1」の組織に主眼を置いた情報が表示されている。
【0239】
例示する健全性情報提供画面1400には、各組織の構成準拠状況1411、健全性検証結果履歴1412、当該組織による他の組織の健全性監視結果1413、他の組織による当該組織の健全性監視結果1414、コンソーシアムに参加している各組織の組織信頼度1415等が表示されている。
【0240】
このように、各組織のユーザは、健全性情報提供画面1400を介して容易にステート情報312の内容を確認することができ、自組織の分散台帳ノード3についての健全性の管理に役立てることができる。
【0241】
<技術的効果>
以上に説明したように、本実施形態の分散台帳システム1における分散台帳ノード3は、第1の組織が第2の組織の分散台帳ノード3の健全性を監視した結果である健全性監視結果を受信し、受信した複数組織による健全性監視結果を検証し、検証した結果である健全性検証結果を分散台帳310に記録する。このため、各組織の分散台帳ノード3についての客観性のある健全性検証結果を分散台帳310に集約して管理することができ、客観性のある情報に基づき、分散台帳システム1全体としての健全性を効率よく監視することができる。
【0242】
また、健全性監視結果の取得や健全性監視結果の検証をスマートコントラクト(SC)により行うので、各組織の健全性に関する情報を分散台帳にオンチェーンの情報として管理することができる。従って、単一信頼点を排除して信頼性/証拠性の高い情報を提供することができる。
【0243】
また、分散台帳ノード3は、健全性検証結果を第2の組織の構成設計情報と比較対照することにより、組織が構成設計情報に準拠している度合いを示す情報である構成準拠状況を生成して分散台帳310に記録する。このため、健全性の判断に用いる各組織の分散台帳ノード3の構成準拠情報を客観性の高い情報として管理し提供することができる。
【0244】
また、分散台帳ノード3は、第2の組織の構成準拠状況が構成設計情報を満たしていない場合、第2の組織に分散台帳ノード3の構成の見直しを指示する情報を分散台帳310に記録する。このため、第2の組織は、上記情報を参照することで、分散台帳ノード3の見直しが必要であることを認識することができる。
【0245】
また、分散台帳ノード3は、第2の組織の構成準拠状況が構成設計情報を満たしていない場合、分散台帳ノード3の構成が不足していることにより第2の組織にペナルティが課されることを示す情報を分散台帳に記録するので、第2の組織は、上記情報を参照することで、ペナルティを回避するために分散台帳ノードの見直しが必要であることを認識することができる。
【0246】
また、分散台帳ノード3は、構成準拠状況に基づき、複数の組織の夫々の信頼度である組織信頼度を生成して分散台帳に記録するので、各組織の組織信頼度を提供することができる。
【0247】
また、分散台帳ノード3は、健全性監視結果に基づき、複数の組織の夫々の信頼度である組織信頼度を生成して分散台帳に記録するので、各組織の組織信頼度を提供することができる。
【0248】
また、組織のクライアントノード4は、分散台帳310の健全性監視方法定義551に従って第2の組織の健全性を監視するので、組織間の健全性の監視方法のばらつきを防ぐことができる。
【0249】
また、分散台帳ノード3は、健全性監視結果に基づき監視担当組織を決定するので、信頼性の高い組織を監視担当組織として選出することができる。
【0250】
また、分散台帳ノード3は、組織信頼度に基づき監視担当組織を決定するので、信頼性の高い組織を監視担当組織として選出することができる。
【0251】
また、分散台帳ノード3は、構成成準拠状況に応じて監視担当組織を選出するので、信頼性の高い組織を監視担当組織として選出することができる。
【0252】
<情報処理装置の例>
図15は、第1実施形態及び第2実施形態で説明した分散台帳システム1の実現に用いる情報処理装置(コンピュータ)の一例である。クライアントノード4や分散台帳ノード3は、例えば、同図に示す情報処理装置10を用いて構成される。
【0253】
例示する情報処理装置10は、プロセッサ11、主記憶装置12(メモリ)、補助記憶装置13(外部記憶装置)、入力装置14、出力装置15、及び通信装置16を備える。これらはバスや通信ケーブル等を介して通信可能に接続されている。情報処理装置10の例として、パーソナルコンピュータ、各種サーバ装置、オフィスコンピュータ、汎用機(メインフレーム)、スマートフォン、タブレット等がある。
【0254】
情報処理装置10は、その全部又は一部が、例えば、クラウドシステムによって提供される仮想サーバのように、仮想化技術やプロセス空間分離技術等を用いて提供される仮想的な情報処理資源を用いて実現されるものであってもよい。また、情報処理装置10によって提供される機能の全部又は一部は、例えば、クラウドシステムがAPI(Application Programming Interface)等を介して提供するサービスによって実現してもよい。また、情報処理装置10によって提供される機能の全部又は一部は、例えば、SaaS(Software as a Service)、PaaS(Platform as a Service)、IaaS(Infrastructure as a Service)等を利用して実現されるものであってもよい。
【0255】
プロセッサ11は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)、AI(Artificial Intelligence)チップ等を用いて構成されている。
【0256】
主記憶装置12は、プロセッサ11がプログラムを実行する際に利用する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、不揮発性メモリ(NVRAM(Non Volatile RAM))等である。分散台帳システム1の各構成要素において実現される各種の機能は、夫々のプロセッサ11が、補助記憶装置13に格納(記憶)されているプログラムやデータを主記憶装置12に読み出して実行することにより実現される。
【0257】
補助記憶装置13は、プログラムやデータを記憶する装置であり、例えば、SSD(Solid State Drive)、ハードディスクドライブ、光学式記憶装置(CD(Compact Disc)、DVD(Digital Versatile Disc)等)、NAS(Network Attached Storage)等の各種ストレージシステム、ICカード、SDカードや光学式記録媒体等の非一時的な記録媒体の読取/書込装置、クラウドサーバの非一時的な記憶領域等で構成することができる。補助記憶装置13には、記録媒体の読取装置や通信装置16を介して、非一時的な記録媒体や非一時的な記憶装置を備えた他の情報処理装置からプログラムやデータを読み込むことができる。補助記憶装置13に格納(記憶)されているプログラムやデータは主記憶装置12に随時読み込まれる。
【0258】
入力装置14は、外部からの情報の入力を受け付けるインタフェースであり、例えば、キーボード、マウス、タッチパネル、カードリーダ、ペン入力方式のタブレット、音声入力装置等である。
【0259】
出力装置15は、処理経過や処理結果等の各種情報を外部に出力するインタフェースである。出力装置15は、例えば、上記の各種情報を可視化する表示装置(液晶モニタ、LCD(Liquid Crystal Display)、グラフィックカード等)、上記の各種情報を音声化する装置(音声出力装置(スピーカ等))、上記の各種情報を文字化する装置(印字装置等)である。尚、例えば、情報処理装置10が通信装置16を介して他の装置との間で情報の入力や出力を行う構成としてもよい。
【0260】
入力装置14と出力装置15は、ユーザとの間での対話処理(情報の受け付け、情報の提供等)を実現するユーザインタフェースを構成する。
【0261】
通信装置16は、他の装置との間の通信を実現する装置である。通信装置16は、通信ネットワーク5を介して他の装置との間の通信を実現する、有線方式又は無線方式の通信インタフェースであり、例えば、NIC(Network Interface Card)、無線通信モジュール、USBモジュール等である。
【0262】
情報処理装置10には、例えば、オペレーティングシステム、ファイルシステム、DBMS(DataBase Management System)(リレーショナルデータベース、NoSQL等)、KVS(Key-Value Store)等が導入されていてもよい。
【0263】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0264】
1 分散台帳システム、3 分散台帳ノード、300 記憶部、302 コンソーシアム情報、303 参加メンバー管理情報、310 分散台帳、311 ブロックチェーン(BC)、312 ステート情報、313 業務SC、314 健全性管理SC、320 TX管理部、325 コンセンサス管理部、330 SC実行管理部、335 承認済TX配信部、340 TX発行部、345 ノード探索部、350 メンバー管理部、355 通信部、4 クライアントノード、400 記憶部、401 ノード探索情報、420 TX発行部、425 ノード探索部、430 業務アプリ、435 監視エージェント、511 健全性報告、512 健全性相互検証、513 構成準拠状況検証、514 アクション指示、515 組織信頼度算出、516 監視担当組織選出、517 各種データ参照、551 健全性監視方法定義、552 健全性監視結果、553 健全性検証結果、554 構成設計情報、555 構成準拠状況、556 キャパシティ情報、557 組織信頼度、558 監視担当組織、S700 メンバー登録処理、S800 SCデプロイ/実行処理、S900 健全性報告処理、S1000 健全性相互検証処理、S1100 構成準拠状況検証処理、S1150 アクション処理、S1200 信頼度算出処理、S1300 監視担当組織選出処理、1400 健全性情報提供画面
図1
図2A
図2B
図2C
図2D
図2E
図2F
図2G
図3
図4A
図4B
図5
図6A
図6B
図6C
図6D
図6E
図6F
図6G
図6H
図7
図8
図9
図10
図11
図12
図13
図14
図15