(57)【要約】【課題】分散台帳サブシステムの各間を跨がった適宜な情報共有を効率的に行う。【解決手段】分散台帳システム１において、分散台帳サブシステム１１１〜１５１の各々において、当該分散台帳サブシステム内で共有される台帳データを保持するサブ台帳と、共通のサブ台帳を持つ分散台帳サブシステムの間で連動して台帳データの入出力に関するトランザクション処理を行うスマートコントラクト７０１とを備え、所定のトランザクション要求を所定装置から受信してスマートコントラクト７０１を実行することで、共通のサブ台帳を持つ他の分散台帳サブシステムに対し、当該他の分散台帳サブシステムが管理する他のサブ台帳の台帳データを対象としたトランザクション要求を送信し、他の分散台帳サブシステムから得たトランザクション応答を応答する構成とする。【選択図】図１
2019200580.tif 000002
【特許請求の範囲】
【請求項１】
複数の分散台帳サブシステムから構成される分散台帳システムであって、
前記分散台帳サブシステムの各々において、当該分散台帳サブシステム内で共有される台帳データを保持するサブ台帳と、共通のサブ台帳を持つ分散台帳サブシステムの間で連動して台帳データの入出力に関するトランザクション処理を行うスマートコントラクトとを備え、所定のトランザクション要求を所定装置から受信して前記スマートコントラクトを実行することで、前記共通のサブ台帳を持つ他の分散台帳サブシステムに対し、当該他の分散台帳サブシステムが管理する、前記共通のサブ台帳とは異なる他のサブ台帳の台帳データを対象としたトランザクション要求を送信し、少なくとも前記他の分散台帳サブシステムから得たトランザクション応答を前記所定装置に応答するものである、
ことを特徴とする分散台帳システム。
【請求項２】
前記分散台帳サブシステムの各々は、
トランザクション要求の対象となるサブ台帳を保持する分散台帳ノードのリストとして、隣接ノード情報を更に保持し、
前記スマートコントラクトを実行することで、前記トランザクション要求を送信する際、予め定めた所定のノード選定基準に基づいて、前記隣接ノード情報から、前記トランザクション要求の送信先として、前記他の分散台帳サブシステム内の分散台帳ノードを選定し、当該選定した分散台帳ノードに前記トランザクション要求を送信するものである、
ことを特徴とする請求項１に記載の分散台帳システム。
【請求項３】
前記分散台帳サブシステムの各々は、
前記隣接ノード情報において、トランザクション引数に応じて呼び出すべきサブ台帳と当該サブ台帳を保持する分散台帳ノードとに関する各情報を保持し、
前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値と、前記隣接ノード情報とに基づき、前記他のサブ台帳の台帳データを対象としたトランザクション要求の送信要否を判定し、前記判定の結果、送信が必要であれば、前記選定した分散台帳ノードに前記トランザクション要求を送信するものである、
ことを特徴とする請求項２に記載の分散台帳システム。
【請求項４】
前記分散台帳サブシステムの各々は、
前記隣接ノード情報において、前記トランザクション引数を、当該トランザクション引数が示す事象の階層構造に応じたデータ構造で規定しており、
前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値を、より下位階層のレベルについての１つ以上のトランザクション引数である下位トランザクション引数に分解し、当該分解したそれぞれの下位トランザクション引数の値と、前記隣接ノード情報とに基づき、前記分散台帳ノードの選定を行い、当該選定した分散台帳ノードに前記トランザクション要求を送信して、前記送信先の分散台帳ノードからトランザクション応答を受信し、当該受信した前記下位階層に関するトランザクション応答を、前記下位階層よりも上位階層のトランザクション引数に応じて集約し、前記トランザクション要求の送信元に応答するものである、
ことを特徴とする請求項３に記載の分散台帳システム。
【請求項５】
分散台帳システムを構成する分散台帳サブシステムであって、
分散台帳サブシステム内で共有される台帳データを保持するサブ台帳と、共通のサブ台帳を持つ分散台帳サブシステムの間で連動して台帳データの入出力に関するトランザクション処理を行うスマートコントラクトとを備え、
所定のトランザクション要求を所定装置から受信して前記スマートコントラクトを実行
することで、前記共通のサブ台帳を持つ他の分散台帳サブシステムに対し、当該他の分散台帳サブシステムが管理する、前記共通のサブ台帳とは異なる他のサブ台帳の台帳データを対象としたトランザクション要求を送信し、少なくとも前記他の分散台帳サブシステムから得たトランザクション応答を前記所定装置に応答するものである、
ことを特徴とする分散台帳サブシステム。
【請求項６】
前記分散台帳サブシステムは、
トランザクション要求の対象となるサブ台帳を保持する分散台帳ノードのリストとして、隣接ノード情報を更に保持し、
前記スマートコントラクトを実行することで、前記トランザクション要求を送信する際、予め定めた所定のノード選定基準に基づいて、前記隣接ノード情報から、前記トランザクション要求の送信先として、前記他の分散台帳サブシステム内の分散台帳ノードを選定し、当該選定した分散台帳ノードに前記トランザクション要求を送信するものである、
ことを特徴とする請求項５に記載の分散台帳サブシステム。
【請求項７】
前記分散台帳サブシステムは、
前記隣接ノード情報において、トランザクション引数に応じて呼び出すべきサブ台帳と当該サブ台帳を保持する分散台帳ノードとに関する各情報を保持し、
前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値と、前記隣接ノード情報とに基づき、前記他のサブ台帳の台帳データを対象としたトランザクション要求の送信要否を判定し、前記判定の結果、送信が必要であれば、前記選定した分散台帳ノードに前記トランザクション要求を送信するものである、
ことを特徴とする請求項６に記載の分散台帳サブシステム。
【請求項８】
前記分散台帳サブシステムは、
前記隣接ノード情報において、前記トランザクション引数を、当該トランザクション引数が示す事象の階層構造に応じたデータ構造で規定しており、
前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値を、より下位階層のレベルについての１つ以上のトランザクション引数である下位トランザクション引数に分解し、当該分解したそれぞれの下位トランザクション引数の値と、前記隣接ノード情報とに基づき、前記分散台帳ノードの選定を行い、当該選定した分散台帳ノードに前記トランザクション要求を送信して、前記送信先の分散台帳ノードからトランザクション応答を受信し、当該受信した前記下位階層に関するトランザクション応答を、前記下位階層よりも上位階層のトランザクション引数に応じて集約し、前記トランザクション要求の送信元に応答するものである、
ことを特徴とする請求項７に記載の分散台帳サブシステム。
【請求項９】
分散台帳システムを構成する分散台帳サブシステムが含むノードであって、
所属先の分散台帳サブシステム内で共有される台帳データを保持するサブ台帳と、共通のサブ台帳を持つ他の分散台帳サブシステムのノードとの間で連動して台帳データの入出力に関するトランザクション処理を行うスマートコントラクトとを備え、
所定のトランザクション要求を所定装置から受信して前記スマートコントラクトを実行することで、前記共通のサブ台帳を持つ他の分散台帳サブシステムの所定ノードに対し、当該他の分散台帳サブシステムが管理する、前記共通のサブ台帳とは異なる他のサブ台帳の台帳データを対象としたトランザクション要求を送信し、少なくとも前記他の分散台帳サブシステムの所定ノードから得たトランザクション応答を前記所定装置に応答するものである、
ことを特徴とする分散台帳ノード。
【請求項１０】
前記トランザクション要求の対象となるサブ台帳を保持する分散台帳ノードのリストとして、隣接ノード情報を更に保持し、
前記スマートコントラクトを実行することで、前記トランザクション要求を送信する際、予め定めた所定のノード選定基準に基づいて、前記隣接ノード情報から、前記トランザクション要求の送信先として、前記他の分散台帳サブシステム内の分散台帳ノードを選定し、当該選定した分散台帳ノードに前記トランザクション要求を送信するものである、
ことを特徴とする請求項９に記載の分散台帳ノード。
【請求項１１】
前記隣接ノード情報において、トランザクション引数に応じて呼び出すべきサブ台帳と当該サブ台帳を保持する分散台帳ノードとに関する各情報を保持し、
前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値と、前記隣接ノード情報とに基づき、前記他のサブ台帳の台帳データを対象としたトランザクション要求の送信要否を判定し、前記判定の結果、送信が必要であれば、前記選定した分散台帳ノードに前記トランザクション要求を送信するものである、
ことを特徴とする請求項１０に記載の分散台帳ノード。
【請求項１２】
前記隣接ノード情報において、前記トランザクション引数を、当該トランザクション引数が示す事象の階層構造に応じたデータ構造で規定しており、
前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値を、より下位階層のレベルについての１つ以上のトランザクション引数である下位トランザクション引数に分解し、当該分解したそれぞれの下位トランザクション引数の値と、前記隣接ノード情報とに基づき、前記分散台帳ノードの選定を行い、当該選定した分散台帳ノードに前記トランザクション要求を送信して、前記送信先の分散台帳ノードからトランザクション応答を受信し、当該受信した前記下位階層に関するトランザクション応答を、前記下位階層よりも上位階層のトランザクション引数に応じて集約し、前記トランザクション要求の送信元に応答するものである、
ことを特徴とする請求項１１に記載の分散台帳ノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散台帳システム、分散台帳サブシステム、および、分散台帳ノードに関するものであり、具体的には、サブ台帳ネットワークの各間を跨がった適宜な情報共有を効率的に行う技術に関する。
【背景技術】
【０００２】
近年、分散台帳（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｌｅｄｇｅｒ）技術が様々な分野で注目を集めている。分散台帳は、複数の計算ノード間でやり取りするデータをセキュアに共有することを特徴とする分散データベースである。なお、こうした分散台帳に保存されるデータを台帳データと称し、同一の台帳データセットを共有する計算ノードの集合を分散台帳システムと称する。
【０００３】
分散台帳技術における特徴の一つに、スマートコントラクト（Ｓｍａｒｔ  Ｃｏｎｔｒａｃｔ）の存在が挙げられる。スマートコントラクトは、デジタル化（ソフトウェアプログラム化）された契約とも言われるもので、台帳データの入力、出力などの処理をプログラム的に記述することで実現される。分散台帳システムにおける各計算ノードは、互いの合意形成を図りつつ、こうしたスマートコントラクトを実行し、その実行結果等でそれぞれの台帳データを更新する。
【０００４】
なお、上述の分散台帳技術は、その構成に応じて、いくつかの種類に分類される。例えば、不特定多数の計算ノード間で分散台帳システムが構成されるパブリック型、特定組織間の計算ノード間で分散台帳システムが構成されるパーミッション型ないしコンソーシアム型、特定組織内の計算ノード間で分散台帳システムが構成されるプライベート型、などが存在する。
【０００５】
このうち特に、パーミッション型の分散台帳が注目されており、これを組織間横断業務に用いることで、ビジネスプロセスの効率化を図るとの期待もある。例えば、パーミッション型の分散台帳システムをサプライチェーンに適用した場合、当該サプライチェーンを構成する組織間でリソース情報を共有し、バイヤーのニーズに応じてサプライヤーの在庫を最小化するなどといった、サプライチェーンの全体最適化を目指すことも想定される。
【０００６】
ただし、そうしたサプライチェーンの参加者たる組織それぞれで立場は異なっており、取引関係等によっては、当該組織間での情報共有を図ることが好ましくない状況も含みうる。そのため、全組織が所属する単一の分散台帳システムを構築するのではなく、所定の取引関係がある組織同士のみでシステムを構築するケースも想定される。
【０００７】
そこで、そうしたケースに対応して、分散台帳を論理分割する「Ｃｈａｎｎｅｌ」と称する概念（非特許文献１）が出現している。なお、このＣｈａｎｎｅｌにて論理分割された分散台帳は、サブ台帳（Ｓｕｂ−Ｌｅｄｇｅｒ）と呼ばれる。
【０００８】
この場合の分散台帳システムは、全組織が参加するひとつの分散台帳システムでありながらも、内部的には特定組織間のみで所定のサブ台帳を共有する分散台帳サブシステムを複数含んだ構成となっている。なお、上述の分散台帳サブシステムにおける計算ノードは、インストールされたスマートコントラクトを実行し、当該分散台帳サブシステムにおけるサブ台帳のデータを更新することとなる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】ｈｔｔｐｓ：／／ｈｙｐｅｒｌｅｄｇｅｒ−ｆａｂｒｉｃ．ｒｅａｄｔｈｅｄｏｃｓ．ｉｏ／ｅｎ／ｒｅｌｅａｓｅ／ｃｈａｎｎｅｌｓ．ｈｔｍｌ（検索日：２０１８年２月７日）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
Ｃｈａｎｎｅｌ技術によれば、上述の分散台帳サブシステムを構築しやすい利点がある一方で、情報共有のスコープがそれぞれの分散台帳サブシステム内に限定される問題もある。その場合、分散台帳ネットワーク全体で適宜な情報共有を図ることが難しく、サプライチェーンの全体最適化も限定的となってしまう恐れがある。
【００１１】
そこで、分散台帳サブシステムの所定ノードに、分散台帳サブシステム間で情報を照会するスマートコントラクトを実装し、これを適宜に呼び出して実行する構成も想定できる。
【００１２】
しかしながら、各分散台帳サブシステムのノードに、そうしたスマートコントラクトを実装する場合、分散台帳サブシステムごとに設定等が異なるスマートコントラクトの各間で、インタフェース調整等が必要となりやすい。このことは、少なからぬ導入コスト増に繋がり、導入障壁となりうる。
【００１３】
また、そうしたノードが、当該スマートコントラクトの実行に伴って、各分散台帳サブシステムの各ノードに宛ててトランザクションを発行（すなわち同報配信）すると、受取側のノードとしては同内容のトランザクションを複数受信するケースや、そもそも接続関係が無い（許されていない）分散台帳サブシステムのノード宛てのトランザクションの発行に失敗するといったケースも生じる。この場合、結局のところ、分散台帳サブシステムを跨がった、すなわち組織を跨がった適宜な情報共有が図られないこととなる。
そこで本発明の目的は、分散台帳サブシステムの各間を跨がった適宜な情報共有を効率的に行う技術を提供することにある。
【課題を解決するための手段】
【００１４】
上記課題を解決する本発明の分散台帳システムは、複数の分散台帳サブシステムから構成される分散台帳システムであって、前記分散台帳サブシステムの各々において、当該分散台帳サブシステム内で共有される台帳データを保持するサブ台帳と、共通のサブ台帳を持つ分散台帳サブシステムの間で連動して台帳データの入出力に関するトランザクション処理を行うスマートコントラクトとを備え、所定のトランザクション要求を所定装置から受信して前記スマートコントラクトを実行することで、前記共通のサブ台帳を持つ他の分散台帳サブシステムに対し、当該他の分散台帳サブシステムが管理する、前記共通のサブ台帳とは異なる他のサブ台帳の台帳データを対象としたトランザクション要求を送信し、少なくとも前記他の分散台帳サブシステムから得たトランザクション応答を前記所定装置に応答するものである、ことを特徴とする。
【００１５】
また、本発明の分散台帳サブシステムは、分散台帳システムを構成する分散台帳サブシステムであって、分散台帳サブシステム内で共有される台帳データを保持するサブ台帳と、共通のサブ台帳を持つ分散台帳サブシステムの間で連動して台帳データの入出力に関するトランザクション処理を行うスマートコントラクトとを備え、所定のトランザクション要求を所定装置から受信して前記スマートコントラクトを実行することで、前記共通のサブ台帳を持つ他の分散台帳サブシステムに対し、当該他の分散台帳サブシステムが管理する、前記共通のサブ台帳とは異なる他のサブ台帳の台帳データを対象としたトランザクション要求を送信し、少なくとも前記他の分散台帳サブシステムから得たトランザクション
応答を前記所定装置に応答するものである、ことを特徴とする。
【００１６】
また、本発明の分散台帳ノードは、分散台帳システムを構成する分散台帳サブシステムが含むノードであって、所属先の分散台帳サブシステム内で共有される台帳データを保持するサブ台帳と、共通のサブ台帳を持つ他の分散台帳サブシステムのノードとの間で連動して台帳データの入出力に関するトランザクション処理を行うスマートコントラクトとを備え、所定のトランザクション要求を所定装置から受信して前記スマートコントラクトを実行することで、前記共通のサブ台帳を持つ他の分散台帳サブシステムの所定ノードに対し、当該他の分散台帳サブシステムが管理する、前記共通のサブ台帳とは異なる他のサブ台帳の台帳データを対象としたトランザクション要求を送信し、少なくとも前記他の分散台帳サブシステムの所定ノードから得たトランザクション応答を前記所定装置に応答するものである、ことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、分散台帳サブ台帳システムの各間を跨がった適宜な情報共有を効率的に行うことが可能となる。
【図面の簡単な説明】
【００１８】
【図１】第１実施形態における分散台帳システムの構成例を示す図である。
【図２】第１実施形態における分散台帳システムの概念例を示す図である。
【図３Ａ】第１実施形態における分散台帳システムのサブシステム粒度での関係例を示す図である。
【図３Ｂ】第１実施形態における分散台帳システムの分散台帳ノード粒度での関係例を示す図である。
【図４】第１実施形態における分散台帳サブシステムの構成例を示す図である。
【図５】第１実施形態における分散台帳クライアントが管理するテーブルの一例を示す図である。
【図６Ａ】第１実施形態における分散台帳ノードが管理するテーブルの一例を示す図である。
【図６Ｂ】第１実施形態における分散台帳ノードが管理するテーブルの一例を示す図である。
【図７Ａ】第１実施形態におけるスマートコントラクトの実装例を示す図である。
【図７Ｂ】第１実施形態におけるスマートコントラクトの実装例を示す図である。
【図８】第１実施形態の分散台帳システムにおける全体処理フロー例を示す図である。
【図９】第１実施形態の分散台帳サブシステムにおける処理フロー例を示す図である。
【図１０】第１実施形態におけるスマートコントラクトの処理フローを示す図である。
【図１１Ａ】第１実施形態における分散台帳サブシステムの動作概念（分散台帳サブシステム粒度）を説明する図である。
【図１１Ｂ】第１実施形態における分散台帳サブシステムの動作概念（分散台帳ノード粒度）を説明する図である。
【図１２】第１実施形態における呼び出し関係と台帳データの一例を示す図である。
【図１３】第１実施形態の各分散台帳サブシステムにおける処理を示すシーケンス図である。
【図１４】第１実施形態におけるＧＵＩの一例を示す図である。
【図１５】第１実施形態における分散台帳サブシステムの構成例を示す図である。
【図１６】第１実施形態の分散台帳ノードおよび分散台帳クライアントのハードウェア構成例を示す図である。
【図１７】第２実施形態における分散台帳クライアントおよび分散台帳サブシステムの構成例を示す図である。
【図１８】第２実施形態におけるスマートコントラクトの実装例を示す図である。
【発明を実施するための形態】
【００１９】
実施形態を説明するにあたり、本明細書中では、以下のように用語を定義する。まず、分散台帳は、分散台帳システムを構成する複数の計算ノード、すなわち分散台帳ノードの間で取り扱う台帳データをセキュアに共有することを特徴とする分散データベースである。こうした分散台帳はブロックチェーンとも呼ばれる。
【００２０】
なお、本明細書中では、上述の分散台帳システムの形態のうち、パーミッション型（コンソーシアム型とも呼ばれる）を対象として説明を行うものとする。また、分散台帳システムにおいては、上述したデータの共有のために、ハッシュチェーンやコンセンサスプロトコルなどの要素技術が用いられている。
【００２１】
また、上述の分散台帳は、分散台帳システムに参加する計算ノードのうち特定の計算ノード間でのみ共有されるサブ台帳、を含んで構成される。こうしたサブ台帳を共有する計算ノード群は、分散台帳サブシステムを構成する。分散台帳システムは分散台帳サブシステムの集合体である。
【００２２】
また台帳データは、分散台帳（あるいはサブ台帳）に記録されるデータである。台帳データのデータ構造には、ＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）やＫＶＳ（Ｋｅｙ−Ｖａｌｕｅ  Ｓｔｏｒｅ）のデータ構造を含みうる。こうしたデータ構造は、分散台帳システムの利用者（スマートコントラクトの実装者）により規定することが可能である。
【００２３】
スマートコントラクトは、台帳データの入力、出力などの処理を記述したプログラムであるとする。スマートコントラクトは、分散台帳システム（あるいは分散台帳サブシステム）に所属する分散台帳ノードにインストールされ、適宜のタイミングで実行される。
【００２４】
スマートコントラクトを実行する分散台帳ノードは、必ずしも分散台帳システム（あるいは分散台帳サブシステム）に所属する全ノードとは限らないが、スマートコントラクトの実行結果にしたがって、分散台帳システム（あるいは分散台帳サブシステム）に所属する全ノードが各自の台帳データを更新する。
【００２５】
また、トランザクションは、上述の分散台帳ノード各々が、コンセンサスプロトコルなどに基づいて連動しながらスマートコントラクトを実行することで行う処理それぞれのことである。トランザクションの例には、台帳データの参照や、台帳データの更新などを含む。トランザクションには引数（リクエストのパラメータ）を含む。トランザクション引数の例には、参照対象のデータのキー（ｋｅｙ）や、更新対象のデータのキーおよび更新後の値（ｖａｌｕｅ）を含む。
−−−第１実施形態−−−
以下、本発明の第１実施形態について図面を用いて説明する。図１は、第１実施形態における分散台帳システム１の構成例を示す図である。
【００２６】
図１に示す分散台帳システム１の利用者すなわちステークホルダは、組織１０１〜１０５である。これらの組織１０１〜１０５は、例えば、サプライチェーンを構成するバイヤーとサプライヤーであると想定する。
【００２７】
これら組織１０１〜１０５は、それぞれ担当者等が操作する端末、業務システム、およ
び、分散台帳サブシステム、を有している。例えば、組織１０１は、分散台帳サブシステム１１１、業務システム１１２ａ〜ｃ、端末１１３ａ〜ｃ、を有している。同様に、組織１０２は、分散台帳サブシステム１２１、業務システム１２２、端末１２３ａ〜ｃ、を有している。同様に組織１０３は、分散台帳サブシステム１３１、業務システム１３２ａ〜ｃ、端末１３３ａ〜ｃ、を有している。同様に、組織１０４は、分散台帳サブシステム１４１、業務システム１４２ａ〜ｃ、端末１４３ａ〜ｃ、を有している。同様に、組織１０５は、分散台帳サブシステム１５１、業務システム１５２ａ〜ｃ、端末１５３ａ〜ｃ、を有している。
こうした組織１０１〜１０５の分散台帳サブシステムらは、インターネットなど適宜なネットワーク１０６を介して、相互に通信可能であるとする。
【００２８】
また、上述の構成のうち、分散台帳サブシステム１１１〜１５１は、分散台帳システム１を構成するサブシステムである。本実施形態においては、それぞれの分散台帳サブシステムは、上述の組織１０１〜１０５のうち１つの組織に所属している。
【００２９】
ここで、概念的理解を容易にするため、分散台帳サブシステム１１１〜１５１が分散台帳やスマートコントラクトを保持する形で図示している。しかし実際には、後述するように、分散台帳サブシステムにおける分散台帳ノードが、そうした分散台帳やスマートコントラクトを保持するものとする。
【００３０】
なお、上述の構成のうち各組織１０１〜１０５の業務システム１１２ａ〜ｃ、１２２ａ〜ｃ、１３２ａ〜ｃ、１４２ａ〜ｃ、１５２ａ〜ｃは、当該組織が利用する業務システムである。具体的には、サプライチェーンに製品や部品の受発注処理を行うシステムを想定できる。
【００３１】
また、各組織１０１〜１０５の端末１１３ａ〜ｃ、１２３ａ〜ｃ、１３３ａ〜ｃ、１４３ａ〜ｃ、１５３ａ〜ｃは、当該組織の担当者等が利用する端末である。そうした担当者らは、当該組織の端末を操作して、当該組織の分散台帳サブシステムや業務システムにアクセスする。
【００３２】
また、各組織１０１〜１０５は、ゲートウェイ１１４、１２４、１３４、１４４、１５４を備えている。こうしたゲートウェイは、当該組織における分散台帳サブシステムと、他組織の分散台帳サブシステムとの間の通信制御装置である。
＜分散台帳システムの具体的概念について＞
【００３３】
上述の分散台帳システム１の概念を、分散台帳の視点で示した場合、図２の構成を想定できる。図２の例では、単一の分散台帳２０１が、複数の分散台帳サブシステム１１１〜１５１（のサブ台帳）で構成されるケースを示している。
【００３４】
この分散台帳システム１は、次の構成要素を含む。すなわち、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃ、分散台帳クライアント２１２ａ〜ｃ、２２２ａ〜ｃ、２３２ａ〜ｃ、２４２ａ〜ｃ、２５２ａ〜ｃ、である。
このうち分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃは、分散台帳２０１を構成する台帳データを持つ。
【００３５】
また、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃは、それぞれが持つ台帳データの入出力処理（トランザクション）を行うスマートコントラクトのプログラムを管理し実行する。
これらの複数の分散台帳ノードそれぞれが台帳データを持ち、スマートコントラクトを実行することで、分散台帳２０１が実現される。
【００３６】
分散台帳クライアント２１２ａ〜ｃ、２２２ａ〜ｃ、２３２ａ〜ｃ、２４２ａ〜ｃ、２５２ａ〜ｃは、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃに、トランザクションを要求する。
【００３７】
一方、上述の分散台帳システム１の概念を、分散台帳サブシステムの視点で示した場合、図３Ａ、３Ｂの構成を想定できる。図３Ａ、３Ｂは、サブ台帳を用いた分散台帳システムにおいて、サブ台帳間の論理的な関係の一例を示す図である。
【００３８】
サブ台帳３０１〜３０８は、分散台帳システム１の構成要素のうち、特定の限定された分散台帳ノードにより構成される分散台帳サブシステムで共有される分散台帳を示す。
【００３９】
図２で述べたように、台帳データおよびスマートコントラクトの実体は、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃにより管理される。一方で、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃを用いて、サブ台帳３０１〜３０８を説明するのは、構成要素が多く複雑性が高い。
【００４０】
そのため、まずは図３Ａで、分散台帳サブシステム１１１〜１５１の粒度で説明する。その後、図３Ｂで、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃの粒度で説明する。
図３Ａは、サブ台帳３０１〜３０８の論理的な関係を、分散台帳サブシステム１１１〜１５１の粒度で説明する図である。
サブ台帳３０１は、分散台帳サブシステム１１１、１２１の間で共有される。また、サブ台帳３０２は、分散台帳サブシステム１２１内で共有される。
また、サブ台帳３０３は、分散台帳サブシステム１２１、１３１の間で共有される。また、サブ台帳３０４は、分散台帳サブシステム１３１内で共有される。
【００４１】
また、サブ台帳３０５は、分散台帳サブシステム１３１、１４１の間で共有される。また、サブ台帳３０６は、分散台帳サブシステム１３１、１５１の間で共有される。
また、サブ台帳３０７は、分散台帳サブシステム１４１内で共有される。また、サブ台帳３０８は、分散台帳サブシステム１５１内で共有される。
このように、サブ台帳は、特定の分散台帳サブシステム間で（あるいは、単一の分散台帳サブシステム内で）共有される。
【００４２】
一方、図３Ｂは、上述のサブ台帳３０１〜３０８の構成を、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃの粒度で説明する図である。
【００４３】
このうちサブ台帳３０１は、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃにより共有される。またサブ台帳３０２は、分散台帳ノード２２１ａ〜ｃにより共有される。
【００４４】
また、サブ台帳３０３は、分散台帳ノード２２１ａ〜ｃ、２３１ａ〜ｃにより共有される。また、サブ台帳３０４は、分散台帳ノード２３１ａ〜ｃにより共有される。
【００４５】
また、サブ台帳３０５は、分散台帳ノード２３１ａ〜ｃ、２４１ａ〜ｃにより共有される。また、サブ台帳３０６は、分散台帳ノード２３１ａ〜ｃ、２５１ａ〜ｃにより共有される。
また、サブ台帳３０７は、分散台帳ノード２４１ａ〜ｃにより共有される。また、サブ台帳３０８は、分散台帳ノード２５１ａ〜ｃにより共有される。
なお、必ずしも、分散台帳サブシステム内の全ノードが同一のサブ台帳を保持する必要はない。
＜分散台帳サブシステムの構成＞
【００４６】
続いて、上述の分散台帳サブシステム１１１〜１５１の構成について、図４に基づき説明する。図４において、分散台帳サブシステム４０１は、分散台帳サブシステム１１１〜１５１に該当する。以降は、分散台帳サブシステム１１１〜１５１のそれぞれの構成のうち、必要な共通機能を説明するため、主に４０１の符号を用いて共通的に説明する。
【００４７】
また、図４における端末４０２ａ〜ｃは、端末１１３ａ〜ｃ、１２３ａ〜ｃ、１３３ａ〜ｃ、１４３ａ〜ｃ、１５３ａ〜ｃに該当する。以降は、端末１１３ａ〜ｃ、１２３ａ〜ｃ、１３３ａ〜ｃ、１４３ａ〜ｃ、１５３ａ〜ｃのそれぞれの構成のうち、必要な共通機能を説明するため、主に４０２の符号を用いて共通的に説明する。
【００４８】
また、図４における分散台帳ノード４１１ａ〜ｃは、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃに該当する。以降は、分散台帳ノード２１１ａ〜ｃ、２２１ａ〜ｃ、２３１ａ〜ｃ、２４１ａ〜ｃ、２５１ａ〜ｃのそれぞれの構成のうち、必要な共通機能を説明する際には、主に４１１の符号を用いて共通的に説明する。
【００４９】
また、図４における分散台帳クライアント４１２ａ〜ｃは、分散台帳クライアント２１２ａ〜ｃ、２２２ａ〜ｃ、２３２ａ〜ｃ、２４２ａ〜ｃ、２５２ａ〜ｃに該当する。以降は、分散台帳クライアント２１２ａ〜ｃ、２２２ａ〜ｃ、２３２ａ〜ｃ、２４２ａ〜ｃ、２５２ａ〜ｃのそれぞれの構成のうち、必要な共通機能を説明する際には、主に４１２の符号を用いて共通的に説明する。
【００５０】
こうした構成の分散台帳サブシステム４０１における分散台帳ノード４１１の構成について説明する。分散台帳ノード４１１の構成要素には、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ
Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）４２１、スマートコントラクト管理部４２２、台帳管理部４２３、トランザクション実行管理部４２４、ノード管理部４２５、および、通信制御部４２６、を含む。
【００５１】
このうちＡＰＩ４２１は、他の構成要素から、トランザクション実行などに関するリクエストを受信し応答するためのインタフェースである。ＡＰＩ４２１の実装例としては、ＷｅｂＡＰＩを含む。
また、スマートコントラクト管理部４２２は、スマートコントラクトのプログラムを保持・管理し、実行するための管理部である。
また、台帳管理部４２３は、サブ台帳を保持・管理し、サブ台帳内の台帳データを管理するための管理部である。
【００５２】
また、トランザクション実行管理部４２４は、スマートコントラクトの処理の実行状況を管理するための管理部である。このトランザクション管理部４２４は、分散台帳ノード間で、コンセンサスプロトコルなどに基づき連動しながら、スマートコントラクトを実行する。
また、ノード管理部４２５は、分散台帳ノードの情報（例：自身のノードＩＤ）を管理する管理部である。
【００５３】
また、通信制御部４２６は、他の構成要素との通信を制御する機能部である。通信のプロトコルには、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を含む。
【００５４】
上述のごとき分散台帳ノード４１１の構成要素のうち、スマートコントラクト管理部４２２は、スマートコントラクト管理テーブル４３１と、スマートコントラクト実行部４３２、を含む。
【００５５】
このうちスマートコントラクト管理テーブル４３１は、サブ台帳ごとに利用可能なスマートコントラクトの情報を管理する。スマートコントラクト管理テーブル４３１の詳細は、図６Ａ、６Ｂに基づき後述する。
また、スマートコントラクト実行部４３２は、スマートコントラクトの処理を実行する機能部である。
また、分散台帳ノード４１１の構成要素のうち、台帳管理部４２３は、台帳メタデータ管理テーブル４４１、および、台帳データ管理テーブル４４２を含む。
【００５６】
このうち台帳メタデータ管理テーブル４４１は、分散台帳ノード４１１が管理するサブ台帳のメタデータを管理する。台帳メタデータ管理テーブル４４１の詳細は、図６Ａ、６Ｂに基づき後述する。
【００５７】
また、台帳データ管理テーブル４４２は、個々のサブ台帳に保存される台帳データを管理するテーブルである。この台帳データ管理テーブル４４２に保存される台帳データの例は、図６Ａ、６Ｂに基づき後述する。以上が、分散台帳ノード４１１の構成についての説明である。
＜分散台帳クライアントの構成＞
【００５８】
続いて分散台帳クライアント４１２の構成について説明する。分散台帳クライアント４１２の構成要素には、ＡＰＩ４５１、ＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）生成部４５２、トランザクション呼出部４５３、ノード管理テーブル４５４、トランザクション引数一時管理テーブル４５５、および、トランザクション結果一時管理テーブル４５６、を含む。
【００５９】
このうちＡＰＩ４５１は、他の構成要素から、処理リクエストを受け取り、処理結果を返すためのインタフェースである。ＡＰＩ４５１の実装例としては、ＷｅｂＡＰＩを含む。また、ＡＰＩ４５１が提供するインタフェースの例として、分散台帳ノードへのトランザクション生成を要求するインタフェースを含む。また、他の例として、分散台帳ノードが返すトランザクションの結果を返すインタフェースを含む。
【００６０】
また、ＵＩ生成部４５２は、端末４０２などの他の構成要素向けに、処理の実行結果などを表示するためのＵＩを生成する機能部である。このＵＩ生成部４５２の詳細は、図１４に基づき後述する。
【００６１】
また、トランザクション呼出部４５３は、分散台帳ノード４１１へトランザクション要求を送信し、そのトランザクションの結果（トランザクション応答）を受信する機能部である。
【００６２】
また、ノード管理テーブル４５４は、分散台帳ノードについての情報を管理するテーブルである。このノード管理テーブル４５４の詳細は、図５に基づき後述する。
【００６３】
また、トランザクション引数一時管理テーブル４５５は、分散台帳ノード４１１に送信するトランザクションの引数（リクエストのパラメータ）を一時的に管理するテーブルである。このトランザクション引数一時管理テーブル４５５の詳細は、図５に基づき後述する。
【００６４】
また、トランザクション結果一時管理テーブル４５６は、分散台帳ノード４１１から受信したトランザクション実行結果（レスポンス。トランザクション応答）を一時的に管理するテーブルである。このトランザクション結果一時管理テーブル４５６の詳細は、図５に基づき後述する。以上が、分散台帳クライアント４１２の構成についての説明である。＜分散台帳クライアントが管理するテーブル＞
【００６５】
図５は、分散台帳クライアント４１２が管理するテーブルの一例を示す図である。図５において、テーブル中に記載されている値は、分散台帳サブシステム１３１に所属する分散台帳クライアントにおける例を示している。
【００６６】
まず、ノード管理テーブル４５４は、分散台帳ノードについての情報を管理するテーブルである。このノード管理テーブル４５４の構成要素には、ノード５１１、エンドポイント５１２、台帳５１３、および、スマートコントラクト５１４、を含む。
このうちノード５１１は、分散台帳クライアント４１２によりアクセスされるノードの識別子である。
また、エンドポイント５１２は、上述のノード５１１のエンドポイントであり、ホスト名、ＩＰアドレス、ＴＣＰのポート番号のような、各種の識別子を含む。
また、台帳５１３は、上述のノード５１１が所属する分散台帳サブシステムにおけるサブ台帳の識別子である。
また、スマートコントラクト５１４は、上述のノード５１１が実行可能なスマートコントラクトの識別子である。
【００６７】
続いて、トランザクション引数一時管理テーブル４５５は、分散台帳ノード４１１に送信するトランザクションの引数（リクエストのパラメータ）を一時的に管理するテーブルである。
【００６８】
このトランザクション引数一時管理テーブル４５５の構成要素には、トランザクションＩＤ５２１、台帳５２２、スマートコントラクト５２３、ノード５２４、認証情報５２５、メインリソースＩＤ５２６、個数５２７、価格５２８、リードタイム５２９、メインリソースＩＤ５３１、サブリソースＩＤ５３２、および、個数５３３、を含む。
このうちトランザクションＩＤ５２１は、分散台帳システム１全体にわたって実行されるトランザクションを一意に識別するための識別子である。
また、台帳５２２は、トランザクション実行対象の、分散台帳サブシステムのサブ台帳の識別子である。
また、スマートコントラクト５２３は、トランザクション実行対象のスマートコントラクトの識別子である。
また、ノード５２４は、トランザクションを実行する１つ以上の分散台帳ノードの識別子である。
また、認証情報５２５は、分散台帳ノードにトランザクション実行を要求する際に必要となる認証情報である。
以降のトランザクション引数は、スマートコントラクトの処理内容や、ユーザが実行したい処理（問い合わせ内容など）により異なる。
【００６９】
例えば、メインリソースＩＤ５２６は、例えば、サプライチェーンにおける在庫情報の問い合わせ対象となる製品の識別情報など、スマートコントラクトによる照会対象のリソースの識別子である。
【００７０】
また、個数５２７は、上述の照会対象のリソースの個数である。またその他に、価格５２８、および、リードタイム５２９なども、トランザクション引数に含めてよい。
【００７１】
また、メインリソースＩＤ５３１、サブリソースＩＤ５３２、および、個数５３３は、階層構造の上位にあたるメインリソースの構成要素を、メインリソースを構成する階層構造下位のサブリソースと、その個数の形式で表した情報であり、同様にトランザクション引数に含めてよい。
【００７２】
また、トランザクション結果一時管理テーブル４５６は、分散台帳ノード４１１から受信したトランザクション実行結果（レスポンス。トランザクション応答）を一時的に管理するテーブルである。
【００７３】
このトランザクション結果一時管理テーブル４５６の構成要素には、トランザクションＩＤ５４１、個数５４２、価格５４３、および、リードタイム５４４、を含む。
このうちトランザクションＩＤ５４１は、当該トランザクションを一意に識別するための識別子である。
【００７４】
以降の構成要素は、スマートコントラクトの処理内容や、ユーザが実行したい処理（問い合わせ内容など）により異なる。例えば、個数５４２は、所定のサブリソースＩＤに対応したサブリソース（例：部品）の利用可能な個数について照会するトランザクションを実行した結果である。同様に、価格５４３は、当該サブリソースの価格について照会するトランザクションを実行した結果である。また、リードタイム５４４は、当該サブリソースのリードタイムについて照会するトランザクションを実行した結果である。
＜分散台帳ノードが管理するテーブル＞
【００７５】
図６Ａ、６Ｂは、分散台帳ノード４１１が管理するテーブルの一例を示す図である。図６Ａ、６Ｂにおいて、テーブル中に記載されている値は、分散台帳サブシステム１３１に所属する分散台帳ノードにおける例を示している。
このうちスマートコントラクト管理テーブル４３１は、サブ台帳ごとに利用可能なスマートコントラクトの情報を管理するテーブルである。
【００７６】
このスマートコントラクト管理テーブル４３１の構成要素には、台帳６１１、および、スマートコントラクト６１２、を含む。このうち台帳６１１は、当該サブ台帳の識別子である。また、スマートコントラクト６１２は、当該サブ台帳ごとに実行可能なスマートコントラクトの識別子である。
【００７７】
また、台帳メタデータ管理テーブル４４１は、分散台帳ノード４１１が管理するサブ台帳のメタデータを管理するテーブルである。この台帳メタデータ管理テーブル４４１の構成要素には、台帳６２１、ノード６２２、および、データ種別６２３、を含む。
【００７８】
このうち台帳６２１は、サブ台帳の識別子である。また、ノード６２２は、当該サブ台帳を共有する分散台帳ノードの識別子である。また、データ種別６２３は、当該サブ台帳に保存される台帳データの種類についての識別子である。
【００７９】
また、台帳データ管理テーブル４４２は、個々のサブ台帳に保存される台帳データを管理するテーブルである。こうした台帳データ管理テーブル４４２に保存される台帳データの例を以下に説明する。
【００８０】
例えば、リソース情報６０１は、分散台帳システム１における各サブ台帳のうち、サブ台帳３０３における、リソース情報に関する台帳データである。このリソース情報６０１の構成要素には、リソースＩＤ６３１、および、リソース保持量６３２、を少なくとも含む。
【００８１】
このうちリソースＩＤ６３１は、リソース（例えば製品）の識別子である。また、リソース保持量６３２は、当該リソースの保持量（例えば在庫数）である。なお、このリソース情報６０１には、他にも、当該リソースの価格６３３やリードタイム６３４といった情報を含めてもよい。
【００８２】
また、リソース情報６０２は、分散台帳システム１における各サブ台帳のうち、サブ台帳３０５における、リソース情報に関する台帳データである。このリソース情報６０２の構成要素には、リソースＩＤ６３５、および、リソース保持量６３６、を含む。
【００８３】
このうちリソースＩＤ６３５は、当該リソース（例えば製品）の識別子である。また、リソース保持量６３６は、リソースの保持量（例えば在庫数）である。なお、このリソース情報６０２には、他にも、当該リソースの価格６３７やリードタイム６３８のような情報を含めてもよい。
【００８４】
また、リソース情報６０３は、分散台帳システム１における各サブ台帳のうち、サブ台帳３０６における、リソース情報に関する台帳データである。このリソース情報６０３の構成要素には、リソースＩＤ６３９、および、リソース保持量６４０、を含む。
【００８５】
このうちリソースＩＤ６３９は、当該リソース（例えば製品）の識別子である。また、リソース保持量６４０は、当該リソースの保持量（例えば在庫数）である。なお、このリソース情報６０３には、他にも、当該リソースの価格６４１やリードタイム６４２のような情報を含めてもよい。
【００８６】
また、ノード別台帳情報６０４は、例えば、サブ台帳３０３内における、ノード別の参照先のサブ台帳に関する情報を管理する台帳データである。このノード別台帳情報６０４の構成要素には、組織６５１、ノード６５２、および、台帳６５３、を含む。
【００８７】
このうち組織６５１は、組織の識別子である。また、ノード６５２は、分散台帳ノードの識別子である。また、台帳６５３は、上述の組織６５１およびノード６５２により指定されたノードが参照可能なサブ台帳の識別子である。
【００８８】
また、隣接ノード情報６０５は、例えば、サブ台帳３０４における、トランザクション要求の送信先、すなわち再帰問い合わせ先の候補ノードの情報を管理する台帳データである。
この隣接ノード情報６０５の構成要素には、リソースＩＤ６６１、組織６６２、台帳６６３、スマートコントラクト６６４、および、ノード６６５、を含む。
【００８９】
このうちリソースＩＤ６６１は、問い合わせ対象（例：製品）となるリソースの識別子である。また、組織６６２は、当該リソースを取り扱う組織の識別子である。また、台帳６６３は、当該リソースに関する台帳データを保持するサブ台帳の識別子である。また、スマートコントラクト６６４は、問い合わせに際して実行するスマートコントラクトの識別子である。また、ノード６６５は、上述のリソースＩＤ６６１に関するトランザクションを実行する候補ノードの識別子である。
＜スマートコントラクトの実装例＞
【００９０】
続いて、分散台帳ノードらがそれぞれ保持するスマートコントラクトについて説明する。図７Ａは、第１実施形態におけるスマートコントラクト７０１の実装例を示す図である。ここで示すスマートコントラクト７０１は、スマートコントラクト管理テーブル４３１（図４）内に管理される。
【００９１】
スマートコントラクト７０１の構成要素には、トランザクション受付部７１１、ロール判別部７１２、サブ台帳参照部７１３、トランザクション分解部７１４、ノード選定部７１５、トランザクション呼出部７１６、トランザクション結果結合部７１７、トランザクション結果応答部７１８、トランザクション引数一時管理テーブル７２１、および、トランザクション結果一時管理テーブル７２２、を含む。
【００９２】
このうちトランザクション受付部７１１は、例えば、端末１１３〜１５３など所定の装置からトランザクションの実行要求（トランザクション要求）を受け付ける機能部である。
また、ロール判別部７１２は、トランザクションを実行する分散台帳ノードが、自己のロール（役割）を判別する機能部である。
また、サブ台帳参照部７１３は、サブ台帳に対する入力や出力に関する処理を行う機能部である。
また、トランザクション分解部７１４は、トランザクション受付部７１１で受け付けたトランザクションを、サブトランザクションに分解する機能部である。
【００９３】
また、ノード選定部７１５は、トランザクション分解部７１４が分解した個々のサブトランザクションについて、当該サブトランザクションの実行対象の分散台帳ノードを選定する機能部である。
【００９４】
また、トランザクション呼出部７１６は、ノード選定部７１５が選定した分散台帳ノードについて、サブトランザクションのトランザクション実行要求を送信し、そのトランザクション実行結果（トランザクション応答）を受信する機能部である。
また、トランザクション結果結合部７１７は、トランザクション分解部７１４が分解した個々のサブトランザクションの実行結果を集約する機能部である。
【００９５】
また、トランザクション結果応答部７１８は、トランザクション受付部７１１で受け付けたトランザクションの呼び出し元に対し、当該トランザクションの実行結果（トランザクション結果結合部７１７がサブトランザクションの実行結果を集約したもの）を応答する機能部である。
【００９６】
また、トランザクション引数一時管理テーブル７２１は、分散台帳ノード４１１に送信するサブトランザクションの引数（リクエストのパラメータ）を一時的に管理するテーブルである。トランザクション引数一時管理テーブル７２１の構成要素は、トランザクション引数一時管理テーブル４５５の（図５参照）構成要素と同様である。
【００９７】
また、トランザクション結果一時管理テーブル７２２（図７Ｂ）は、スマートコントラクト７０１が生成するトランザクションの実行状況および実行結果（レスポンス。トランザクション応答）を一時的に管理するテーブルである。
【００９８】
このトランザクション結果一時管理テーブル７２２の構成要素には、トランザクションＩＤ７３１、トランザクション内部ＩＤ７３２、サブリソースＩＤ７３３、個数７３４、価格７３５、および、リードタイム７３６、を含む。
このうちトランザクションＩＤ７３１は、分散台帳システム１の全体にわたって実行されるトランザクションを一意に識別するための識別子である。
また、トランザクション内部ＩＤ７３２は、再帰的に実行される個々のトランザクションの進行状況を管理するための識別子である。
【００９９】
以降の構成要素は、スマートコントラクトの処理内容や、ユーザが実行したい処理（問
い合わせ内容など）により異なる。例えば、サブリソースＩＤ７３３は、サブリソース単位に分割されたトランザクションにおいて照会対象のリソースＩＤである。また、個数７３４は、特定のサブリソースＩＤの利用可能な個数について照会するトランザクションを実行した結果である。またその他には、価格７３５、リードタイム７３６なども、本テーブルに含めてもよい（図５と同様）。
【０１００】
なお、図７において、一部の機能部に、「ｌｏｏｋｕｐ」、「ｄｉｖｉｄｅ」、「ｑｕｅｒｙ」、「ｍｅｒｇｅ」、「ｒｅｐｌｙ」、のような記号を割り当てている。これらの記号は、後述する図１１の呼び出し関係図と、図１３のシーケンス図において用いることとする。
＜全体の処理フロー例＞
【０１０１】
図８は、第１実施形態における全体の処理フロー例を示す図である。ここではまず、端末４０２が、トランザクション引数を生成する（Ｓ８０１）。生成するトランザクション引数には、該当組織のユーザが端末４０２に入力する、例えば、トランザクションＩＤ、在庫情報の問い合わせ対象となるサブ台帳、製品や部品のリソースＩＤ、といった値（図５のトランザクション引数一時管理テーブル４５５の各項目）などを想定する。
【０１０２】
次に、上述の端末４０２が、上述のトランザクション引数の生成に続き、分散台帳サブシステム４０１にトランザクション実行を要求（トランザクション要求）する（Ｓ８０２）。
一方、この要求を受けた分散台帳サブシステム４０１は、トランザクション実行処理を行う（Ｓ８０３）。このステップの詳細は図９に基づき後述する。
【０１０３】
続いて、上述の端末４０２が、上述のトランザクション実行処理を行った分散台帳サブシステム４０１から、トランザクション実行結果（トランザクション応答）を受信する（Ｓ８０４）。
最後に、上述の端末４０２が、Ｓ８０４で得たトランザクション実行結果を、ディスプレイ等の出力装置上のＵＩに表示し（Ｓ８０５）、処理を終了する。
＜分散台帳サブシステムにおけるトランザクション実行処理＞
【０１０４】
続いて、上述のフローにおけるステップＳ８０３、すなわち分散台帳サブシステムにおけるトランザクション実行処理の詳細について説明する。図９は、分散台帳サブシステムのトランザクション実行処理（Ｓ８０３）に対応した処理フロー例を示す図である。
【０１０５】
この場合まず、分散台帳クライアント４１２のＡＰＩ４５１が、上述の端末４０２からトランザクション実行の要求とともに、トランザクション引数を受け取り、これをトランザクション引数一時管理テーブル４５５に保存する（Ｓ９０１）。
【０１０６】
次に、分散台帳クライアント４１２のトランザクション呼出部４５３は、Ｓ９０１で受け取ったトランザクション引数の中に、トランザクションＩＤが含まれていなければ、トランザクションＩＤを生成し、トランザクション引数にセットする（Ｓ９０２）。この生成の方法としては、一般的な乱数生成の関数を利用するか、或いは単に、既存のトランザクションＩＤの値をインクリメントする、といった適宜な方法を用いればよい。
【０１０７】
続いて、分散台帳クライアント４１２のトランザクション呼出部４５３は、以下の処理を行う（Ｓ９０３）。まずトランザクション呼出部４５３は、例えば、上述のトランザクション引数が示す台帳５２２の値、すなわちサブ台帳の値（例：サブ台帳３０５）をキーに、ノード管理テーブル４５４（図５）を参照し、当該サブ台帳を共有している分散台帳サブシステムのノード（例：分散台帳ノード２３１ａ〜ｃ、２４１ａ〜ｃのうち、自らが
所属する分散台帳サブシステムの分散台帳ノードではない方）を、スマートコントラクト実行対象の候補ノード群として抽出する。また、トランザクション呼出部４５３は、抽出したノード群の中から、予め定めた問い合わせ先ノードの選定基準に基づいて、ノードを選定する。こうした問い合わせ先ノードの選定基準としては、候補ノード群のうち、任意のアクティブなノードであることや、直近のトランザクションに対するレスポンスタイム（当然ながら、トランザクションごとのレスポンスタイムの履歴情報を分散台帳クライアント４１２が管理・保持している）が短いノードであることなどが挙げられる。次にトランザクション呼出部４５３は、選定した問い合わせ先ノードに対し、該当するスマートコントラクトを呼び出す（この際に、必要に応じて、呼び出し先ノードにスマートコントラクト実行を要求する際に必要となる認証情報を適宜の方法により取得して、トランザクション引数にセットする）。
【０１０８】
その後、上述の問い合わせ先ノードである分散台帳ノード４１１は、上述の分散台帳クライアント４１２から要求されたスマートコントラクトを実行する（Ｓ９０４）。このステップの詳細は図１０に基づき後述する。
【０１０９】
続いて、分散台帳ノード４１１は、Ｓ９０４で実行したスマートコントラクトの実行結果（応答）を、呼び出し元である上述の分散台帳クライアント４１２に返す（Ｓ９０５）。
最後に、分散台帳ノード４１１は、上述のスマートコントラクトの実行結果に基づき、自身のサブ台帳を更新し（Ｓ９０６）、処理を終了する。
＜分散台帳ノードにおけるスマートコントラクトの実行＞
続いて、上述のフローのうち、分散台帳ノード４１１によるステップＳ９０４の処理の詳細について、図１０に基づき説明する。
【０１１０】
この場合まず、分散台帳ノード４１１のスマートコントラクト７０１におけるトランザクション受付部７１１が、分散台帳クライアント４１２から上述のトランザクション引数を取得する（Ｓ１００１）。
【０１１１】
次に、Ｓ１００２において、スマートコントラクト７０１のロール判別部７１２が、自己のノードＩＤ、すなわち当該スマートコントラクト７０１を保持する分散台帳ノード４１１のノードＩＤを、例えばノード管理部４２５にて参照する。また、自己のロールを判別する。ここで参照したノードＩＤは、後述するステップＳ１００４にて用いられる。
【０１１２】
また、上述のロールの判別方法としては、トランザクションの呼び出し関係から、呼び出し元なのか呼び出し先なのかを判別する（当然、自身が発行したトランザクションであれば、呼び出し元であり、他の分散台帳ノードが発行したトランザクションであれば呼び出し先となる）。また、自己がリーダーノードか否かなどを判別する。この際に、自己がトランザクション実行対象（例：呼び出し先のリーダーノード）であれば、以降の処理を継続する。このロール判別の処理は、呼び出し元ノードが適切な呼び出し先を毎回的確に指定できれば、必ずしも必要ではない。
【０１１３】
次に、スマートコントラクト７０１のサブ台帳参照部７１３が、Ｓ１００１で得ているトランザクション引数のうち「メインリソースＩＤ」に対して、リソース情報６０１（図６Ｂ）におけるリソース保持量６３２の値を参照し、リソース量を特定する（Ｓ１００３）。
【０１１４】
続いて、Ｓ１００４において、スマートコントラクト７０１のサブ台帳参照部７１３は、ノード別台帳情報６０４（図６Ｂ）を参照し、自己のノードＩＤ（Ｓ１００２で得ているもの）に対応する、自己のサブ台帳の識別子を取得する。また、ここで取得したサブ台
帳の識別子（例：３０４）に対応する、隣接ノード情報６０５（図６Ｂ）を参照する。ここで参照する情報は、少なくとも、台帳６３３（問い合わせ先の台帳の識別子となる）、スマートコントラクト６６４（問い合わせ先のスマートコントラクトの識別子となる）、ノード６６５（問い合わせ先の隣接ノードの識別子となる）、の各値となる。
【０１１５】
次に、スマートコントラクト７０１のトランザクション分解部７１３が、Ｓ１００１で得ているトランザクション引数のうちサブリソースＩＤ５３２の値を抽出し、サブリソースＩＤ群を取得する（Ｓ１００５）。なお、サブリソースが、メインリソースと同じＩＤになる場合もある。
【０１１６】
以下、Ｓ１００５で得たサブリソースＩＤ群における各サブリソースＩＤに対して、以下の処理（Ｓ１００６）を実行する。なお、呼び出し対象のサブリソースがなければ、以下の処理は行わない。
【０１１７】
まず、スマートコントラクト７０１のノード選定部７１５が、ステップＳ１００４で参照した隣接ノード情報６０５のうちノード６６５、すなわち分散台帳ノードの中から、予め定めた問い合わせ先ノードの選定基準に基づいて、問い合わせ先のノードを選定する（Ｓ１００７）。問い合わせ先ノードの選定基準には、候補ノード群のうち、任意のアクティブなノードであることや、レスポンスタイムが短いノードであることなどが挙げられる。
【０１１８】
続いて、スマートコントラクト７０１のトランザクション呼出部７１６が、トランザクション引数のうち、台帳５２２の欄に対して問い合わせ先の台帳の識別子（Ｓ１００４で参照済みのもの。以下同様）を、スマートコントラクト５２３の欄に対して問い合わせ先のスマートコントラクトの識別子を、ノード５２４の欄に選定した隣接ノードの識別子を、認証情報５２５の欄に選定した隣接ノードに対するトランザクション要求用の認証情報を、メインリソースＩＤ５２６の欄に問い合わせ対象のサブリソースＩＤを、それぞれ設定する（Ｓ１００８）。この際に、必要に応じて、呼び出し先ノードにスマートコントラクト実行を要求する際に必要となる認証情報を適宜の方法により取得する。
【０１１９】
次に、スマートコントラクト７０１のトランザクション呼出部７１６は、問い合わせ先の分散台帳サブシステム４０１に、トランザクション実行を要求する（Ｓ１００９）。要求したトランザクションについて、トランザクション結果一時管理テーブル７２２（図７Ｂ）を用いて、その実行状況を管理する。なお、適切な呼び出し先ノードがなければ、このステップ（Ｓ１００９）および次のステップ（Ｓ１０１０）は実行しない。
【０１２０】
続いて、スマートコントラクト７０１のトランザクション呼出部７１６は、上述の分散台帳サブシステム４０１から、トランザクション実行結果を受け取る（Ｓ１０１０）。受け取った結果は、トランザクション結果一時管理テーブル７２２に追記される。
以上の処理（Ｓ１００７〜Ｓ１０１０）は、トランザクション引数のうち、それぞれの「サブリソースＩＤ」に対して行うこととなる（Ｓ１０１１）。
【０１２１】
その後、スマートコントラクト７０１のトランザクション結果結合部７１７が、これまでのステップで得ている、各サブリソースＩＤに関するトランザクション実行結果を集計する。また、上述のステップＳ１００３で参照した自己のリソース情報と結合する。（Ｓ１０１２）。
【０１２２】
各サブリソースＩＤに関するトランザクション実行結果の集計には、照会したサブリソース（例：部品）の個々の個数を組み合わせることで実現可能なメインリソース（例：製品）の最大個数（必要に応じて価格やリードタイムなど）を、予め保持するＢＯＭ（Ｂｉ
ｌｌ  ｏｆ  ｍａｔｅｒｉａｌｓ）に基づき算出することを含む。
【０１２３】
最後に、スマートコントラクト７０１のトランザクション応答部７１８が、上記のステップＳ１０１２による結合結果を、呼び出し元に応答し（Ｓ１０１３）、処理を終了する。
＜分散台帳サブシステム間の呼び出し関係＞
ここで図１１Ａ、１１Ｂに基づき、第１実施形態における分散台帳サブシステムの動作概念を、分散台帳サブシステム間の呼び出し関係に基づき説明する。
【０１２４】
これまで説明したスマートコントラクト７０１の処理を実行することにより、図１１のような呼び出し関係でトランザクションが実行される。図３の説明と同様の理由により、まず分散台帳サブシステム粒度で説明し（図１１Ａ）、次に分散台帳ノードの粒度で説明する（図１１Ｂ）。
【０１２５】
まず図１１Ａは、分散台帳サブシステムの粒度での呼び出し関係を示す図である。この図１１Ａにおいて、「ｑｕｅｒｙ」、「ｌｏｏｋｕｐ」、「ｒｅｐｌｙ」の各単語は、図７Ａにおいて説明した、トランザクション呼出部７１６、サブ台帳参照部７１３、トランザクション結果応答部７１８、に該当する。また、各単語の末尾についている、「−Ａ」、「−Ｂ」、「−Ｃ１」、「−Ｃ２」は、サブ台帳におけるトランザクションの符号を意味している（異なる符合がついているトランザクションは異なるものである）。
図１１Ａに示すように、再帰呼び出し先のサブ台帳が所属する分散台帳サブシステムのみから、再帰呼び出し処理が行われる。
【０１２６】
一方、図１１Ｂは、第１実施形態における分散台帳サブシステムの動作概念（分散台帳ノード粒度）を、分散台帳ノードの粒度での呼び出し関係に基づき説明する図である。この図１１Ｂにおいて、分散台帳クライアントは省略し、分散台帳ノードのみを表示している。
【０１２７】
各段階の呼び出し関係において、二重トランザクションが発生しないように、呼び出し先には特定の分散台帳ノードのみを指定する。なお、図からは省略しているが、分散台帳サブシステム１１１からのトランザクションは、分散台帳クライアントから生成される。
また、図からは省略しているが、本実施形態においては、分散台帳ノードが呼び出すトランザクションは、呼び出し先の分散台帳サブシステムにアクセス可能な、（自己が所属する分散台帳サブシステム内、あるいは、サブ台帳に所属する他の分散台帳サブシステム内の）分散台帳クライアントに送信される。
【０１２８】
図１２は、第１実施形態における呼び出し関係と台帳データの一例を示す図である。呼び出し関係は、図１１と同様である。図１２においては、組織１０１と組織１０２が「製品」の個数情報を共有し、組織１０２と組織１０３が同様の粒度の「製品」の個数情報を共有する。一方、組織１０３と組織１０４は「（組織１０１から見た意味での）部品」の個数情報を共有し、組織１０３と組織１０５が「（組織１０１から見た意味での）部品」の個数情報を共有する。
【０１２９】
個々のサブ台帳だけでは、組織１０１からは、限定された個数情報しか把握できないが、このように再帰的に問い合わせをしていくことで、直接的にサブ台帳を共有しないながらも、システム全体としての集約された個数情報を取得できることとなる。
＜シーケンス＞
【０１３０】
図１３は、第１実施形態の各分散台帳サブシステムにおける処理を示すシーケンス図である。ここで、分散台帳サブシステム１１１、１２１、１３１、１４１、１５１の粒度で
の、処理の流れについてあらためて説明する。
図において、「ＴＸ−Ａ」、「ＴＸ−Ｂ」、「ＴＸ−Ｃ１」、「ＴＸ−Ｃ２」は、それぞれ異なる（サブ）トランザクションであることを示す。
【０１３１】
また、「ｑｕｅｒｙ」、「ｌｏｏｋｕｐ」、「ｄｉｖｉｄｅ」、「ｍｅｒｇｅ」、「ｒｅｐｌｙ」は、図７Ａにおいて説明した、トランザクション呼出部７１６、サブ台帳参照部７１３、トランザクション分解部７１４、トランザクション結果結合部７１７、トランザクション結果応答部７１８、にそれぞれ該当する。また、「ｃｏｍｍｉｔ」は台帳データを更新することを意味する。
【０１３２】
図１３に示すように、例えば、分散台帳サブシステム１１１に端を発するトランザクションの実行要求を受けた分散台帳サブシステム１２１が、分散台帳サブシステム１３１に対してトランザクション実行要求（ｑｕｅｒｙ）を行い、これに対して、分散台帳サブシステム１３１がサブ台帳データを参照（ｌｏｏｋｕｐ）し、必要に応じてトランザクションを分割（ｄｉｖｉｄｅ）し、別の分散台帳サブシステム１４１、１５１への１つ以上のトランザクション実行要求（ｑｕｅｒｙ）を行う。また、その分散台帳サブシステム１４１、１５１から応答された（ｒｅｐｌｙ）トランザクションの実行結果は、集計（ｍｅｒｇｅ）されて、要求の送信元の分散台帳サブシステム１１１に応答（ｒｅｐｌｙ）される。このようなサブトランザクションの連鎖により、分散台帳システム全体にわたるトランザクションが実行される。
＜ＧＵＩについて＞
【０１３３】
図１４は、第１実施形態におけるＧＵＩの一例を示す図である。このＧＵＩは、上述のごとく集計されたトランザクションの実行結果を受信した分散台帳サブシステムが、自身のディスプレイ等の出力装置上に表示させる画面例となる。
【０１３４】
図で示すＧＵＩ１４０１の構成要素は、リソース情報サブ画面１４１１、ブロックデータサブ画面１４１２、クエリサブ画面１４１３、を含む。クエリサブ画面１４１３には、製品ＩＤ表示エリア１４２１、問合ボタン１４２２、個数表示エリア１４２３、および、価格表示エリア１４２４、を含む。
【０１３５】
本図で示す例においては、各構成要素の用途は次のとおりである。リソース情報サブ画面１４１１は、例えば、図６Ｂのリソース情報６０１〜６０３といった台帳データ管理テーブル４４２で管理する情報を表示する。
また、ブロックデータサブ画面１４１２は、図５のトランザクション引数一時管理テーブル４５５で管理する情報を表示する。
また、製品ＩＤ表示エリア１４２１で指定される値は、ユーザが指定する、トランザクション引数のリソースＩＤの値となる。
また、問合ボタン１４２２は、ユーザに押下されることで、トランザクション実行要求をトリガする。
【０１３６】
また、個数表示エリア１４２３と価格表示エリア１４２４は、トランザクション実行結果を表示するエリアである（他にもリードタイムなどの情報を適宜表示してもよい）。
【０１３７】
こうしたＧＵＩ１４０１において、リソース情報サブ画面１４１１、ブロックデータサブ画面１４１２は、所属するサブ台帳ごとにサブ画面を表示させるとしてもよい。
【０１３８】
このためには、分散台帳クライアント４１２におけるＵＩ生成部４１２（図１５参照）は、画面パーツテンプレート１４３１ａ〜ｃ、および、分散台帳ネットワーク構成管理テーブル１４３２を保持する。
【０１３９】
このうち分散台帳ネットワーク構成管理テーブル１４３２は、自己の分散台帳サブシステム４０１が所属するサブ台帳に関するプロファイル情報などを持つ。ＵＩ生成部４１２は、この情報を元に、所属サブ台帳の個数分だけのサブ画面をＧＵＩ１４０１に表示するよう画面制御処理を行う。
＜ハードウェア構成例＞
【０１４０】
続いて、分散台帳ノード４１１および分散台帳クライアント４１２のハードウェア構成例について説明する。図１６は、第１実施形態における分散台帳ノード４１１、分散台帳クライアント４１２のハードウェア構成例を示す図である。
【０１４１】
図１６に例示する分散台帳ノード４１１、分散台帳クライアント４１２は、演算装置たるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５０１、メモリ１５０２、および、補助記憶装置１５０３、を備える一般的な計算機を用いて実現することができる。
【０１４２】
さらに、分散台帳ノード４１１、分散台帳クライアント４１２が実装する各処理部は、ＣＰＵ１５０１が補助記憶装置１５０３に格納されているプログラム１５０３１を実行することにより具現化される。プログラム１５０３１は、あらかじめ補助記憶装置１５０３に格納されていてもよいし、必要なときに通信インタフェース１５０４を介した他装置から取得するか、メディアインタフェース１５０５を経由して利用可能な媒体から読み取って取得するとしてもよい。
【０１４３】
また上述の媒体とは、たとえば、通信媒体（すなわち有線、無線、光などのネットワーク、または当該ネットワークを伝搬する搬送波やデジタル信号）、またはメディアインタフェース１５０５に着脱可能な外部記憶媒体１５０７を指す。
【０１４４】
なお、分散台帳ノード４１１、分散台帳クライアント４１２は、入出力装置１５０６を介して端末４０２からの操作を受け付けるべく、当該端末４０２と通信可能に接続してもよい。
【０１４５】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ１５０２や、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置１５０３、または、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の記録媒体に記録しておくことができる。また、上記の各構成は、それらの一部又は全部を、仮想的なハードウェア（仮想マシン）として実現してもよい。
−−−第２実施形態−−−
【０１４６】
以下、本発明の第２の実施形態について図面を用いて説明する。基本的には上述の第１実施形態と同様であるため、ここでは上述の第１実施形態との差分についてのみ説明するものとする。
【０１４７】
図１７は、第２の実施形態における分散台帳サブシステム４０１の構成を示す図である。上述の第１実施形態における分散台帳サブシステムと異なる点は、端末４０２において、ＵＩ表示部１６１１、分散台帳ＡＰＩ呼出部１６１２、を含むことである。
【０１４８】
このうちＵＩ表示部１６１１は、第１実施形態のＵＩ生成部４５２と同様である。また、分散台帳ＡＰＩ呼出部１６１２は、トランザクション呼出部４５３と同様である。すなわち、分散台帳クライアント４１２の機能の一部を端末４０２に実装した構成となっている。従って端末４０２が分散台帳ノード４１１の処理を直接呼び出すこととなる。
【０１４９】
図１８は、第２実施形態におけるスマートコントラクトの実装例を示す図である。図１８では、分散台帳クライアント４１２の機能部を、スマートコントラクト７０１の中に実装することを示している。
【０１５０】
特に、トランザクション呼出部４５３、トランザクション引数一時管理テーブル４５５、トランザクション結果一時管理テーブル４５６は、第１実施形態で示したスマートコントラクト７０１内の構成要素と重複する部分があり、図１８に示すような機能部で代替する（ノード管理テーブル４５４は、サブ台帳内のデータである隣接ノード情報６０５で代替する）。
【０１５１】
第１実施形態において、図１１Ｂでは分散台帳クライアントを省略した旨を説明した。一方、第２実施形態における構成では、各トランザクション間の連携において、分散台帳クライアント自体が不要となり、図１１Ｂの構造を具現化することとなる。
【０１５２】
以下、これまでに述べた各実施形態（第１実施形態、第２実施形態）について補足する。上記の各実施形態においては、単一の分散台帳内に複数のサブ台帳が存在する状況を想定し説明を行った。一方、分散台帳自体が複数存在し、分散台帳間にまたがってトランザクションを実行する場合にも、上述の各実施形態と同様の構成や処理が適用可能である。
【０１５３】
また、各実施形態にて示した、各サブ台帳の共有範囲（所属する分散台帳サブシステムや所属する分散台帳ノード）は、あくまでも一例にすぎない。例えば、サブ台帳が３つ以上の組織で共有されてもよい。また、サブ台帳に記録される台帳データについても、あくまでも一例である。各実施形態では、リソース情報のような台帳データも、複数組織で共有されるサブ台帳内の台帳データとして記述したが、単一組織内のみで共有されるサブ台帳内の台帳データとしてもよい。
【０１５４】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、分散台帳サブシステムの各間を跨がった適宜な情報共有を効率的に行うことが可能となる。
【０１５５】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態の分散台帳システムにおいて、前記分散台帳サブシステムの各々は、トランザクション要求の対象となるサブ台帳を保持する分散台帳ノードのリストとして、隣接ノード情報を更に保持し、前記スマートコントラクトを実行することで、前記トランザクション要求を送信する際、予め定めた所定のノード選定基準に基づいて、前記隣接ノード情報から、前記トランザクション要求の送信先として、前記他の分散台帳サブシステム内の分散台帳ノードを選定し、当該選定した分散台帳ノードに前記トランザクション要求を送信するものである、としてもよい。
【０１５６】
これによれば、トランザクション要求の好適な送信先を効率的に特定することが可能となり、ひいては、分散台帳サブシステムの各間を跨がった適宜な情報共有をより効率的に行うことが可能となる。
【０１５７】
また、本実施形態の分散台帳システムにおいて、前記分散台帳サブシステムの各々は、前記隣接ノード情報において、トランザクション引数に応じて呼び出すべきサブ台帳と当該サブ台帳を保持する分散台帳ノードとに関する各情報を保持し、前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値と、前記隣接ノード情報とに基づき、前記他のサブ台帳の台帳データを対象としたトランザクション要求の送信要否を判定し、前記判定の結果、送信が必要であれば、前記選定した分散台帳ノードに前記トランザクション要求を送信するものである、としてもよい。
【０１５８】
これによれば、トランザクション要求の送信要否を効率的に判定し、無用なトランザクション要求の送信を回避できることとなる。ひいては、分散台帳サブシステムの各間を跨がった適宜な情報共有をより効率的に行うことが可能となる。
【０１５９】
また、本実施形態の分散台帳システムにおいて、前記分散台帳サブシステムの各々は、前記隣接ノード情報において、前記トランザクション引数を、当該トランザクション引数が示す事象の階層構造に応じたデータ構造で規定しており、前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値を、より下位階層のレベルについての１つ以上のトランザクション引数である下位トランザクション引数に分解し、当該分解したそれぞれの下位トランザクション引数の値と、前記隣接ノード情報とに基づき、前記分散台帳ノードの選定を行い、当該選定した分散台帳ノードに前記トランザクション要求を送信して、前記送信先の分散台帳ノードからトランザクション応答を受信し、当該受信した前記下位階層に関するトランザクション応答を、前記下位階層よりも上位階層のトランザクション引数に応じて集約し、前記トランザクション要求の送信元に応答するものである、としてもよい。
【０１６０】
これによれば、例えば、サプライチェーンにおいて取り扱う製品とそれを構成する部品といった階層構造をふまえて、部品の在庫情報に関するトランザクション要求の送信とその応答の取得、ならびに、当該応答を集約して製造可能な製品の情報生成、といった、サプライチェーンにおけるバイヤーとサプライヤーの各間にわたる情報収集を柔軟に実行できる。ひいては、分散台帳サブシステムの各間を跨がった適宜な情報共有をより効率的に行うことが可能となる。
【０１６１】
また、本実施形態の前記分散台帳サブシステムは、トランザクション要求の対象となるサブ台帳を保持する分散台帳ノードのリストとして、隣接ノード情報を更に保持し、前記スマートコントラクトを実行することで、前記トランザクション要求を送信する際、予め定めた所定のノード選定基準に基づいて、前記隣接ノード情報から、前記トランザクション要求の送信先として、前記他の分散台帳サブシステム内の分散台帳ノードを選定し、当該選定した分散台帳ノードに前記トランザクション要求を送信するものである、としてもよい。
【０１６２】
また、本実施形態の前記分散台帳サブシステムは、前記隣接ノード情報において、トランザクション引数に応じて呼び出すべきサブ台帳と当該サブ台帳を保持する分散台帳ノードとに関する各情報を保持し、前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値と、前記隣接ノード情報とに基づき、前記他のサブ台帳の台帳データを対象としたトランザクション要求の送信要否を判定し、前記判定の結果、送信が必要であれば、前記選定した分散台帳ノードに前記トランザクション要求を送信するものである、としてもよい。
【０１６３】
また、本実施形態の前記分散台帳サブシステムは、前記隣接ノード情報において、前記トランザクション引数を、当該トランザクション引数が示す事象の階層構造に応じたデー
タ構造で規定しており、前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値を、より下位階層のレベルについての１つ以上のトランザクション引数である下位トランザクション引数に分解し、当該分解したそれぞれの下位トランザクション引数の値と、前記隣接ノード情報とに基づき、前記分散台帳ノードの選定を行い、当該選定した分散台帳ノードに前記トランザクション要求を送信して、前記送信先の分散台帳ノードからトランザクション応答を受信し、当該受信した前記下位階層に関するトランザクション応答を、前記下位階層よりも上位階層のトランザクション引数に応じて集約し、前記トランザクション要求の送信元に応答するものである、としてもよい。
【０１６４】
また、本実施形態の分散台帳ノードは、前記トランザクション要求の対象となるサブ台帳を保持する分散台帳ノードのリストとして、隣接ノード情報を更に保持し、前記スマートコントラクトを実行することで、前記トランザクション要求を送信する際、予め定めた所定のノード選定基準に基づいて、前記隣接ノード情報から、前記トランザクション要求の送信先として、前記他の分散台帳サブシステム内の分散台帳ノードを選定し、当該選定した分散台帳ノードに前記トランザクション要求を送信するものである、としてもよい。
【０１６５】
また、本実施形態の分散台帳ノードは、前記隣接ノード情報において、トランザクション引数に応じて呼び出すべきサブ台帳と当該サブ台帳を保持する分散台帳ノードとに関する各情報を保持し、前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値と、前記隣接ノード情報とに基づき、前記他のサブ台帳の台帳データを対象としたトランザクション要求の送信要否を判定し、前記判定の結果、送信が必要であれば、前記選定した分散台帳ノードに前記トランザクション要求を送信するものである、としてもよい。
【０１６６】
また、本実施形態の分散台帳ノードは、前記隣接ノード情報において、前記トランザクション引数を、当該トランザクション引数が示す事象の階層構造に応じたデータ構造で規定しており、前記スマートコントラクトを実行することで、前記受信した所定のトランザクション要求におけるトランザクション引数の値を、より下位階層のレベルについての１つ以上のトランザクション引数である下位トランザクション引数に分解し、当該分解したそれぞれの下位トランザクション引数の値と、前記隣接ノード情報とに基づき、前記分散台帳ノードの選定を行い、当該選定した分散台帳ノードに前記トランザクション要求を送信して、前記送信先の分散台帳ノードからトランザクション応答を受信し、当該受信した前記下位階層に関するトランザクション応答を、前記下位階層よりも上位階層のトランザクション引数に応じて集約し、前記トランザクション要求の送信元に応答するものである、としてもよい。
【符号の説明】
【０１６７】
１  分散台帳システム
１０１〜１０５  組織
１０６  ネットワーク
１１１、１２１、１３１、１４１、１５１  分散台帳サブシステム
１１２、１２２、１３２、１４２、１５２  業務システム
１１３、１２３、１３３、１４３、１５３  端末
１１４、１２４、１３４、１４４、１５４  ゲートウェイ
２０１  分散台帳
２１１、２２１、２３１、２４１、２５１  分散台帳ノード
２１２、２２２、２３２、２４２、２５２  分散台帳クライアント
３０１〜３０８  サブ台帳
４０１  分散台帳サブシステム
４０２  端末
４１１  分散台帳ノード
４１２  分散台帳クライアント
４２１  ＡＰＩ
４２２  スマートコントラクト管理部
４２３  台帳管理部
４２４  トランザクション管理部
４２５  ノード管理部
４２６  通信制御部
４３１  スマートコントラクト管理テーブル
４３２  スマートコントラクト実行部
４４１  台帳メタデータ管理テーブル
４４２  台帳データ管理テーブル
４５１  ＡＰＩ
４５２  ＵＩ生成部
４５３  トランザクション呼出部
４５４  ノード管理テーブル
４５５  トランザクション引数一時管理テーブル
４５６  トランザクション結果一時管理テーブル
６０１〜６０３  リソース情報
６０４  ノード別台帳情報
６０５  隣接ノード情報
７０１  スマートコントラクト
７１１  トランザクション受付部
７１２  ロール判定部
７１３  サブ台帳参照部
７１４  トランザクション分解部
７１５  ノード選定部
７１６  トランザクション呼出部
７１７  トランザクション結果結合部
７１８  トランザクション結果応答部
７２１  トランザクション引数一時管理テーブル
７２２  トランザクション結果一時管理テーブル
１４０１  ＧＵＩ
１４１１  リソース情報表示サブ画面
１４１２  ブロックデータ表示サブ画面
１４１３  クエリ表示サブ画面
１４２１  製品表示エリア
１４２２  問合ボタン
１４２３  個数表示エリア
１４２４  価格表示エリア
１４３１  画面パーツテンプレート
１４３２  分散台帳ネットワーク構成管理テーブル
１５０１  ＣＰＵ
１５０２  メモリ
１５０３  補助記憶装置
１５０３１  プログラム
１５０４  通信インタフェース
１５０５  メディアインタフェース
１５０６  入出力装置
１５０７  外部記憶媒体
１５０８  ネットワーク
１６１１  ＵＩ表示部
１６１２  分散台帳ＡＰＩ呼出部
【図１】
2019200580.tif 000003
【図２】
2019200580.tif 000004
【図３Ａ】
2019200580.tif 000005
【図３Ｂ】
2019200580.tif 000006
【図４】
2019200580.tif 000007
【図５】
2019200580.tif 000008
【図６Ａ】
2019200580.tif 000009
【図６Ｂ】
2019200580.tif 000010
【図７Ａ】
2019200580.tif 000011
【図７Ｂ】
2019200580.tif 000012
【図８】
2019200580.tif 000013
【図９】
2019200580.tif 000014
【図１０】
2019200580.tif 000015
【図１１Ａ】
2019200580.tif 000016
【図１１Ｂ】
2019200580.tif 000017
【図１２】
2019200580.tif 000018
【図１３】
2019200580.tif 000019
【図１４】
2019200580.tif 000020
【図１５】
2019200580.tif 000021
【図１６】
2019200580.tif 000022
【図１７】
2019200580.tif 000023
【図１８】
2019200580.tif 000024