(57)【要約】  グループ内で共有するプライベートＤＢについても合意を形成する。  ブロック検証装置３は、グループ内で共有されるプライベートデータベース３２３と、全体リーダ装置からトランザクションのリストを受信する通信部３１と、該リストによって識別されるトランザクションを実行し、実行結果を出力するトランザクション処理部３３と、リスト、トランザクションの実行後のプライベートデータベースのダイジェスト、及びトランザクションに含まれるプライベートデータ群を含むプロポーザルを生成するブロック処理部３４と、を備え、通信部３１は、同一のグループに属する他のブロック検証装置３にプロポーザルを送信し、プロポーザルについての合意が形成されたと判定すると、リスト、プライベートデータベースのダイジェスト、及びプライベートデータ群のダイジェストを他の全てのブロック検証装置３に送信する。
2019142884.tif 000002
【特許請求の範囲】
【請求項１】
複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、前記グループ内におけるブロック検証装置を代表するブロック検証装置であって、
前記グループ内で共有されるプライベートデータベースと、
前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置から第１のトランザクションリストを受信する通信部と、
第１のトランザクションリストによって識別されるトランザクションを実行するトランザクション処理部と、
前記トランザクションの実行に応じた第２のトランザクションリスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルを生成するブロック処理部と、を備え、
前記通信部は、同一のグループに属する他のブロック検証装置に前記プロポーザルを送信し、前記ブロック処理部により前記プロポーザルについての合意が形成されたと判定すると、前記第２のトランザクションリスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを、他の全てのブロック検証装置に送信することを特徴とするブロック検証装置。
【請求項２】
複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置であって、
前記グループ内で共有されるプライベートデータベースと、
全てのブロック検証装置で共有される共有データベースと、
前記グループ内の前記ブロック検証装置を代表する各グループリーダブロック検証装置に、第１のトランザクションリストをそれぞれ送信し、
前記グループリーダブロック検証装置によって、前記第１のトランザクションリストによって識別されるトランザクションの実行に応じて生成される第２のトランザクションリスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルの合意が形成された場合に、前記第２のトランザクションリスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信する通信部と、
各グループリーダブロック検証装置から受信した前記第２のトランザクションリストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するトランザクション処理部と、
前記トランザクション処理部が実行したトランザクションのリスト、前記共有データベースの状態、前記プライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを、他のブロック検証装置に送信することによって該ブロックについての合意を形成するブロック処理部とを備えることを特徴とするブロック検証装置。
【請求項３】
複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、前記グループ内におけるブロック検証装置を代表するブロック検証装置が実行するブロック検証方法であって、
前記ブロック検証装置は、前記グループ内で共有される共有されるプライベートデータベースを備え、
前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置から、第１のトランザクションリストを受信するステップと、
第１のトランザクションリストによって識別されるトランザクションを実行するステップと、
前記トランザクションの実行に応じた第２のトランザクションリストと、プライベートデータベースのダイジェストと、前記トランザクションに含まれる前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群とを含むプロポーザルを生成するステップと、
同一のグループに属する他のブロック検証装置に前記プロポーザルを送信するステップと、
前記プロポーザルについての合意が形成された場合、前記第２のトランザクションリスト、前記トランザクションの実行に基づくプライベートデータのダイジェスト及びプライベートデータ群のダイジェストを他の全てのブロック検証装置に送信するステップと、
を含むことを特徴とするブロック検証方法。
【請求項４】
複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置が実行するブロック検証方法であって、
前記ブロック検証装置は、前記グループ内で共有されるプライベートデータベースと、  全てのブロック検証装置で共有される共有データベースと、を備え、
前記グループ内の前記ブロック検証装置を代表する各グループリーダブロック検証装置に、第１のトランザクションリストをそれぞれ送信するステップと、
前記グループリーダブロック検証装置によって、前記第１のトランザクションリストによって識別されるトランザクションの実行に応じて生成される第２のトランザクションリスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルの合意が形成された場合に、前記第２のトランザクションリスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信するステップと、
各グループリーダブロック検証装置から受信した前記第２のトランザクションリストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するステップと、
前記実行したトランザクションのリスト、前記共有データベースの状態、前記プライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを、他のブロック検証装置に送信することによって該ブロックについての合意を形成するステップと、
を含むことを特徴とするブロック検証方法。
【請求項５】
請求項１に記載のブロック検証装置としてコンピュータを機能させるためのプログラム。
【請求項６】
請求項２に記載のブロック検証装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック検証装置、ブロック検証方法、及びプログラムに関する。
【背景技術】
【０００２】
ビットコインは、完全分散型のコンピュータに格納された台帳によって実現された最初の暗号通貨である（非特許文献１参照）。ビットコインが登場する前においては、台帳は、信頼性を確保するために信頼できる第三者によって管理される必要があった。ビットコインにおける台帳の信頼性を確保するため、ブロックチェーンといわれる技術が用いられている。【０００３】
ブロックチェーンは、複数の分散ノード（以下、「ノード」という）と、該複数のノードを互いに通信させるための通信ネットワークとにより実現される。ブロックチェーンは、複数のノード間で合意を形成するためのコンセンサスメカニズムを提供する。ブロックチェーンを使うことによって、複数のノードと、該複数のノードを互いに通信させるための通信ネットワークとを含むシステムは、全体として状態遷移システムとみなすことができる。このようなシステムは、各ノードがブロックチェーンを用いて同期された同一の台帳を格納するため、高い可用性を備えている。トランザクションは、通信ネットワークを介して、一のノードから複数の他のノードに送信される。そして、トランザクションを受信したノードは、複数のトランザクションをブロックに格納する。このとき、台帳の信頼性が確保されるために、ブロックの正当性が各ノードによって検証される必要がある。そのため、ブロックは、コンセンサスアルゴリズムによって規定された一定の条件を満たす必要がある。コンセンサスアルゴリズムには様々なものがあり、例えば、ビットコインのコンセンサスアルゴリズムとして、ＰｏＷ（Proof Of Work）が採用されている。コンセンサスアルゴリズムには、実用ビザンチンフォールトトレランス（ＰＢＦＴ：Practical Byzantine Fault Tolerance）等も提案されている（非特許文献２参照）。【０００４】
各ノードは、ブロックに格納されている情報の整合が取れていることを検証する。また、各ノードは、ブロックがコンセンサスアルゴリズムによって規定された条件を満たすか否かを検証する。そして、各ノードは、ブロックに整合が取れており、コンセンサスアルゴリズムによって規定された条件を満たすことを検証すると、ブロックを台帳に追加する。【０００５】
上述したＰｏＷは、ブロックが格納された時点が遡るほど、該ブロックが置き換えられる確率が低くなるように設計された確率的なコンセンサスアルゴリズムである。そのため、ＰｏＷは、厳密な意味において複数のノード間で合意が形成されるに至っていない。これに対して、ＰＢＦＴは、投票によってブロックの正当性を検証しているため、厳密に複数のノード間で合意が形成される。ＰＢＦＴは後述するコンソーシアム型ブロックチェーンやプライベート型ブロックチェーンで利用されている。【０００６】
ＰＢＦＴは厳密な合意を形成するためのプロトコルのベースとなる考え方を提供し、今ではＰＢＦＴから着想を得た様々なプロトコルが提案されている。後述する本実施形態では、合意を形成するためのプロトコルとしてＰＢＦＴを適用するが、ＰＢＦＴに限らずに厳密な合意を形成するための任意のプロトコルを適用することができる。ＰＢＦＴでは、合意形成に参加するノードのうち１つのノードがリーダの役割を担い、その他のノードが検証者の役割を担い、３つのステップにより合意が形成される。３つのステップとは、プレプリペアステップとプリペアステップとコミットステップである。【０００７】
プレプリペアステップにおいて、トランザクションが発行されると、該トランザクションは、Ｐ２Ｐ方式により形成された通信ネットワークによりリーダの役割を担うノード（以下、「リーダノード」という）に送信される。リーダノードは、トランザクションの処理順序を決定し、ブロックを生成する。そして、リーダノードは、複数の、検証者の役割を担うノード（以下、「検証ノード」という）にブロックを送信する。複数の検証ノードそれぞれは、トランザクションが正しいこと、及びブロックに含まれる各種の値が正しいことを検証する。【０００８】
プリペアステップにおいて、各検証ノードは、自身の電子署名を検証結果に付与しリーダノード及び他の検証ノードに送信する。このため、各検証ノードは、他の検証ノードによる検証結果を受信することになる。これにより、各検証ノードは、一定数以上の検証ノードによってブロックが承認されたことを確認することができる。【０００９】
コミットステップにおいて、各検証ノードは、一定数以上の検証ノードによってブロックが検証されたと判定した場合、ブロックをコミットすることを示すコミットメッセージを他の検証ノード及びリーダノードに送信する。各検証ノードは、他の検証ノードから一定数以上のコミットメッセージを受信した場合、ブロックを台帳に追加する。各検証ノードは、台帳とリンクしたＤＢ（データベース）がある場合、該ＤＢも同時に更新する。【００１０】
ビットコインの登場後、ブロックチェーンは暗号通貨だけでなく様々な分野でも有用と考えられてきた。ビットコインで用いられているブロックチェーンを他の分野に適用するための試みがなされていたが、ビットコインで用いられているブロックチェーンは暗号通貨に特化しているため、複雑なアプリケーションを必要とする他の分野に適用されるのが困難であることがあった。【００１１】
しかしながら、２０１４年にヴィタリック・ブテリンがイーサリアム（非特許文献３参照）を提案したことによって、この状況は大きく変化した。イーサリアムは、ユーザがチューリング完全なプログラムを生成し、実行することができるブロックチェーンの実装方式の一つである。イーサリアムにおいて、開発者は、任意の目的のために任意の処理を実行するためのプログラムを生成し、各ノードは、該プログラムを用いて任意のデータを格納することができる。イーサリアムでは、ユーザにアドレスが付与されるとともに、プログラムにもアドレスが付与される。ユーザが自身のアドレスからプログラムに付与されたアドレス宛にトランザクションを発行すると、実行環境でプログラムが実行される。イーサリアムにおける各ノードには、台帳の他に、プログラムコード、該プログラムに格納されたデータ等を保存するデータベースを有する。この台帳とデータベースはイーサリアムを構成するノード間で同期される。【００１２】
図８に示すように、各ノード３に格納される台帳及びデータベースを同期させるために、各ノード３は、通信ネットワーク４を介してブロックを他のノード３に送信する。ブロックは、ブロック本体及びブロックヘッダから構成される。ブロック本体には、１以上のトランザクションが含まれる。なお、ブロック本体に含まれるトランザクションの数は１以上に限られない。例えば、コンセンサスアルゴリズムがＰｏＷである場合、ブロック本体に含まれるトランザクションの数は０以上であってもよい。ただし、コンセンサスアルゴリズムがＰＢＦＴである場合、トランザクションの数は１以上である。ブロックヘッダには、前ブロックヘッダのハッシュ値、トランザクションのリストのハッシュ値、及びデータベースのハッシュ値が含まれる。そして、各ノード３は、ブロックを受信すると、図９に示すようにブロックに含まれるトランザクションに基づくプログラムにより処理を実行する。ブロックのヘッダには共有ＤＢ（共有データベース）のハッシュ値が含まれているため、図１０に示すようにトランザクションだけではなく、該トランザクションを実行した後の共有ＤＢの状態に対して複数のノード間で合意が形成される。【００１３】
ビットコイン及びイーサリアムは、既にブロックチェーンを利用した、公開型のプラットフォームとして運用されている。また、公開型のプラットフォームの他に、コンソーシアム型のブロックチェーン、プライベート型のブロックチェーン等が知られている。近年、企業向けのサービスにブロックチェーンを適用しようとする試みが活発になっているため、コンソーシアム型のブロックチェーン及びプライベート型ブロックチェーンが注目されている。現在、各企業は、それぞれローカルのブロックチェーンを利用したプラットフォームを構築し、実証実験を行っているが、将来的には共同でプラットフォームを運用することが考えられる。しかし、プラットフォームを共同で運用するには、台帳を含むデータの肥大化とセキュリティに関する問題がある。【００１４】
ブロックチェーンを用いたシステムにおいて、該システムが運用され続ける限りデータは永続的に生成及び格納され続ける。特に、使用率が高く、生成及び格納されるデータ量が多いシステムであるほど、台帳及びデータベースそれぞれのサイズが大きくなる。また、データの保存期間はプラットフォームごとに決定されるため、上述のように複数の企業が共通のプラットフォームを使用する場合、各企業が保存期間を自由に設定することができない。さらに、共通のプラットフォームが運用される場合、全てのノードの共通台帳とデータベースとにデータが保存されるため、台帳とデータベースの肥大化が問題になる。【００１５】
また、複数の企業が共通のプラットフォームを使用する場合、共通プラットフォームで保存される一の企業のデータが他の企業によって保存されることになる。セキュリティ保持の観点から、他の企業のノードが一の企業のデータを参照することができないように、データを暗号化することが考えられる。しかし、仮にデータが暗号化されても、例えば、他の企業はデータに関する統計的な値が算出されうるという問題がある。【００１６】
クォーラムは、イーサリアムのアーキテクチャを拡張し、セキュリティパフォーマンスを向上させたコンソーシアム型又はプライベート型のプラットフォームである（非特許文献４参照）。クォーラムを構成する各ノードは、２種類のデータベースを有する。【００１７】
具体的には、各ノードは、イーサリアムを構成するノードが有するデータベースと同様のデータベース（以降、「共有ＤＢ（共有データベース）」という）を有する。各ノードがそれぞれ有する共有ＤＢは互いに共有される。さらに各ノードは、プライベートなデータベース（以降、「プライベートＤＢ（プライベートデータベース）」という）を有する。プライベートＤＢは、全ノードのうちの特定のノード間で共有される。
【先行技術文献】
【非特許文献】
【００１８】
【非特許文献１】Satoshi Nakamoto、[online]、“Bitcoin: A Peer-to-Peer Electronic Cash System”、[平成２９年１２月１９日検索]、インターネット<URL: https://Bitcoin.org/Bitcoin.pdf>
【非特許文献２】Miguel Castro、外１名、 “Practical Byzantine Fault Tolerance”、Appears in the Proceedings of the Third Symposium on Operating Systems Design and Implementation, New Orleans, USA, February 1999
【非特許文献３】“A Next-Generation Smart Contract and Decentralized Application Platform”、 Ethereum White Paper
【非特許文献４】https://github.com/jpmorganchase/Quorum-docs/blob/master/Quorum%20Whitepaper%20v0.1.pdf、Quorum White Paper
【発明の概要】
【発明が解決しようとする課題】
【００１９】
クォーラムにおいて、全体で共有される共有トランザクションの処理の実行結果に基づく状態は共有ＤＢに格納される。特定のノード間のみで共有されるプライベートトランザクションの処理の実行結果に基づく状態はプライベートＤＢに格納される。プライベートトランザクションは共有トランザクションのデータ本体を除く部分と、該データ本体のハッシュ値とを含む。また、共有トランザクションとプライベートトランザクションとは、全てのノードで共有される台帳に記録される。暗号化されたデータ本体は、特定のノードで共有される。さらに、該特定のノードは、暗号化されたデータ本体を復号し、復号されたデータ本体に含まれるトランザクションに基づく処理を実行する。そして、該特定のノードは、トランザクションの処理の実行結果に基づく状態をプライベートＤＢに格納する。【００２０】
このようにクォーラムを用いたブロックチェーンネットワークを構成する各ノードは、共有ＤＢ及びプライベートＤＢといった複数のデータベースを有する。そして、各ノードは、共有トランザクションの実行結果に基づく状態を共有ＤＢに格納し、プライベートトランザクションの実行結果に基づく状態をプライベートＤＢに格納する。したがって、プライベートトラザクションの実行結果に基づく状態を特定のノードのみで保持するため、該特定のノードのみによって構成するブロックチェーンネットワークを新たに形成する必要がない。したがって、特定のノード以外のノードが、該特定のノードのプライベートトランザクションの実行結果に基づく状態遷移を共有する必要がなくなる。また、特定のノードのみが保持すべきプライベートトランザクションの実行結果に基づく状態が共有ＤＢに格納されないため、共有ＤＢのデータ容量が肥大化するのを防ぐことができる。【００２１】
しかし、上述のように、クォーラムでは、特定のノード以外のノードは、該特定のノードのプライベートトランザクションの実行結果に基づく状態遷移を共有しないため、該状態遷移を検証することができない。すなわち、共有範囲の異なる複数のデータベースの状態を全てのノードで既存のコンセンサスプロセスにより合意を形成することはできない。各ノードが有するデータベースが共有データベースのみである場合、各ノードがブロックのヘッダに記載されているデータベースのハッシュ値を検証することによって、ノード間でデータベースの状態遷移について合意を形成することができる。そのため、プライベートＤＢへの直接的な書き換えなどの不正な動作を検出し、正当な状態を判定し、ノード間の整合を保つためには、新たなメカニズムが必要である。【００２２】
ブロックチェーンを用いたプラットフォームにおいて、該プラットフォームを構成するノードはブロックを生成する。ブロックは、ブロック本体とブロックヘッダとから構成される。ブロック本体にはトランザクションが含まれる。ブロックヘッダには、ブロック本体に含まれるトランザクションのハッシュ値、トランザクションにより処理された後のデータベースの状態を示すハッシュ値等が含まれる。各ノードは、ブロックに含まれる各種の情報の正当性を検証する。そして、各ノードは、各種の情報の正当性が検証された場合、台帳に格納されているチェーン状のブロックにおける直近に生成されたブロックに新たに生成されたブロックをつなぐことによって、新たに生成されたブロックを台帳に格納する。具体的には、新たに生成されたブロックに、直近に生成されたブロックのブロックヘッダのハッシュ値を記載して、台帳に格納する。また、各ノードは、トランザクションの実行結果に基づいてデータベースを更新する。【００２３】
プラットフォームを構成する複数のノードのうち一部のノードのみが、他のノードと共有されないプライベートＤＢを有する場合、他のノードは、一部のノードのプライベートＤＢの状態を保持しないため、プライベートトランザクションの実行結果に基づく状態を検証できない。したがって、全てのノードによる合意を形成することができなかった。【００２４】
かかる事情に鑑みてなされた本発明の目的は、グループ内で共有するプライベートＤＢの状態についても合意を形成することが可能なブロック検証装置、ブロック検証方法、及びプログラムを提供することにある。【００２５】
また、本発明は、複数のデータベースを持つブロックチェーンシステムの場合に、共有範囲の異なる複数のプライベートＤＢの状態について合意を形成する技術を提供する。
【課題を解決するための手段】
【００２６】
上記の課題を解決するため、本発明に係るブロック検証装置は、複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、前記グループ内におけるブロック検証装置を代表するブロック検証装置であって、前記グループ内で共有されるプライベートデータベースと、前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置からトランザクションのリストを受信する通信部と、該リストによって識別される前記トランザクションを実行し、実行結果を出力するトランザクション処理部と、前記実行結果に基づいて、前記リスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルを生成するブロック処理部と、を備え、前記通信部は、同一のグループに属する他のブロック検証装置に前記プロポーザルを送信し、前記ブロック処理部により前記プロポーザルについての合意が形成されたと判定すると、前記リスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを他の全てのブロック検証装置に送信することを特徴とする。【００２７】
また、上記の課題を解決するため、本発明に係るブロック検証装置は、複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備え、前記複数のブロック検証装置それぞれは前記グループ内で共有されるプライベートデータベース、及び全てのブロック検証装置で共有される共有データベースを含むブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置であって、他の前記ブロック検証装置からトランザクションを受信し、前記グループ内の前記ブロック検証装置を代表するグループリーダブロック検証装置に前記トランザクションのリストを送信し、前記グループリーダブロック検証装置によって、前記リストによって識別される前記トランザクションを実行した実行結果に基づいて、前記リスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルが生成され、前記プロポーザルについての合意が形成されたと判定されると送信される前記リスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信する通信部と、前記リストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するトランザクション処理部と、前記通信部により前記リスト、前記状態、並びに前記トランザクションの実行後のプライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを他のブロック検証装置に送信することによって該ブロックについての合意を形成するブロック処理部と、を備えることを特徴とする。【００２８】
また、上記の課題を解決するため、本発明に係るブロック検証方法は、複数のブロック検証装置を備えるブロック検証システムに構成される複数のグループのいずれかに属するブロック検証装置を代表し、複数の他のブロック検証装置と情報を送受信し、前記グループ内で共有されるプライベートデータベースを備えるブロック検証装置が実行するブロック検証方法であって、前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置から、トランザクションのリストを受信するステップと、該リストによって識別されるトランザクションを実行し、実行結果を出力するステップと、前記実行結果に基づいて、前記リストと、プライベートデータベースのダイジェストと、前記トランザクションに含まれる前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群とを含むプロポーザルを生成するステップと、同一のグループに属する他のブロック検証装置に前記プロポーザルを送信し、前記プロポーザルについての合意が形成されたと判定すると、前記リスト、並びに前記トランザクションの実行に基づくプライベートデータのダイジェスト及びプライベートデータ群のダイジェストを他の全てのブロック検証装置に送信するステップと、を含むことを特徴とする。【００２９】
また、上記の課題を解決するため、本発明に係るブロック検証方法は、複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備え、前記複数のブロック検証装置それぞれは前記グループ内で共有される共有されるプライベートデータベース、及び全てのブロック検証装置で共有される共有データベースを含むブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置が実行するブロック検証方法であって、他の前記ブロック検証装置からトランザクションを受信するステップと、前記グループ内の前記ブロック検証装置を代表するグループリーダブロック検証装置に前記トランザクションのリストを送信するステップと、前記グループリーダブロック検証装置によって、前記リストによって識別される前記トランザクションを実行した実行結果に基づいて、前記リスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルが生成され、前記プロポーザルについての合意が形成されたと判定されると送信される前記リスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信するステップと、前記リストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するステップと、前記リスト、前記状態、並びに前記トランザクションの実行後のプライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを他のブロック検証装置に送信することによって該ブロックについての合意を形成するステップと、
を含むことを特徴とする。【００３０】
上記の課題を解決するため、本発明に係るプログラムは、ブロック検証装置としてコンピュータを機能させる。
【発明の効果】
【００３１】
本発明によれば、グループ内で共有するプライベートＤＢについても合意を形成することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施形態に係るブロック検証システムの例を示す概念図である。
【図２】本発明の一実施形態に係るブロック検証装置が送受信するトランザクションの構造例を示す概念図である。
【図３】本発明の一実施形態に係るブロック検証装置の構成例を示すブロック図である。
【図４】各ノードによるブロックの生成を説明するための概念図である。
【図５】図４に示す新ブロックの他のノードへの送信を説明するための概念図である。
【図６】ブロックチェーンにおけるグループ化を説明するための概念図である。
【図７】グループ化されたブロックチェーンにおける合意形成を説明するための模式図である。
【図８】ブロックチェーンを用いたブロック検証システムの例を示す概念図である。
【図９】ブロックの生成を説明するための概念図である。
【図１０】ブロックの生成を説明するための概念図である。
【図１１】トランザクションの構造例を示す概念図である。
【発明を実施するための形態】
【００３３】
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
【００３４】
図１に、本発明の一実施形態に係るブロック検証システム１の構成例を示す。図１に示すように、ブロック検証システム１は、複数のコンピュータを備える。複数のコンピュータは、互いにＰ２Ｐ（Peer to Peer）型の通信ネットワークにより接続され、互いにデータを送受信する。
【００３５】
各コンピュータは、ブロック検証システム１における各場面での役割に応じて、トランザクション発行装置２として機能したり、ブロック検証装置３として機能したりする。ここで、複数のコンピュータのうちいずれかのコンピュータは、ブロック検証装置３として機能することなくトランザクション発行装置２として機能してもよい。複数のコンピュータのうちいずれかの複数のコンピュータは、トランザクション発行装置２として機能することなくブロック検証装置３として機能してもよい。なお、図１に示すブロック検証システム１において通信ネットワークに接続されるコンピュータの数は、一例であって、これに限られない。
【００３６】
トランザクション発行装置２は、ユーザの入力に基づいてトランザクションを発行し、通信ネットワークを介して複数のブロック検証装置３に送信する。
【００３７】
図１１に示すトランザクションは、処理データと電子署名とを含み、電子署名の対象は処理データである。これに対し、図２に示すように、本実施形態のトランザクションは、処理データと、プライベートデータと、プライベートデータハッシュ値と、電子署名とを含む。処理データは、例えば、共有ＤＢに格納されている、処理を実行するためのプログラムを宛先として示す情報であってもよいし、処理内容を示す情報であってもよい。処理データは、ブロック検証システム１が備える全てのブロック検証装置３で共有される。電子署名は、処理データ及びプライベートデータハッシュ値を対象範囲とする電子署名である。プライベートデータは、電子署名の対象に含まれないデータであり、このため、トランザクションからプライベートデータを分離することができる。プライベートデータハッシュ値は、プライベートデータをハッシュ関数で演算することによって算出されるハッシュ値である。
【００３８】
プライベートデータが電子署名の対象範囲に含まれないことによって、悪意のある第三者によってプライベートデータが改竄されることが懸念される。しかし、処理データとともにプライベートデータハッシュ値に対して電子署名が付与されているため、仮にプライベートデータが改竄されると、改竄されたプライベートデータのハッシュ値と、トランザクションに含まれるプライベートデータハッシュ値とに不整合が発生する。したがって、改竄を発見することができる。
【００３９】
＜全体でプライベートＤＢが共有されるブロック検証システム＞
まず、ブロック検証システム１における全てのブロック検証装置３においてプライベートＤＢが共有される場合について説明する。
【００４０】
図３に示すように、ブロック検証装置３は、通信部３１と、格納部３２と、トランザクション処理部３３と、ブロック処理部３４とを備える。
【００４１】
通信部３１は、トランザクション発行装置２からデータを受信し、他のブロック検証装置３とデータを送受信する。
【００４２】
格納部３２は、台帳部３２１と、共有ＤＢ３２２と、プライベートＤＢ３２３と、設定ファイル格納部３２４と、キャッシュ３２５とを含む。
【００４３】
台帳部３２１は、１つ以上のブロックの集合を格納する。各ブロックには、トランザクションと、直近に作成されたブロックのハッシュ値とが含まれる。台帳部３２１において、１つ以上のブロックがチェーン状に連鎖して格納される。「連鎖する」とは、上述のように、各ブロックに、１つ前のブロックのブロックヘッダのハッシュ値を含めることである。このため、例えば、ブロックチェーンで互いに連鎖されているブロックのいずれかについて改竄が行われると、該ブロックのブロックヘッダのハッシュ値は全く異なる値となる。このため、ブロックヘッダのハッシュ値と、１つ後ろのブロックのブロックヘッダに記載されたハッシュ値とが異なることになる。したがって、トランザクション情報を改竄したことが明らかになり、改竄を防止する仕組みとして利用される。
【００４４】
共有ＤＢ３２２は、プログラム及びコードを格納する。共有ＤＢ３２２は、共有ＤＢに格納されているデータに対するトランザクションによる処理の実行結果に基づく状態を格納する。
【００４５】
プライベートＤＢ３２３は、プライベートデータに対するトランザクションによる処理の実行結果に基づく状態を格納する。
【００４６】
設定ファイル格納部３２４は、プライベートデータに対する処理内容をブロックチェーンネットワークの構築前に予めノード間で決めておく場合に、当該処理内容を設定ファイルとして格納する。
【００４７】
キャッシュ３２５は、ブロック処理部３４が生成した、トランザクションを含むブロックを一時的に格納する。
【００４８】
トランザクション処理部３３は、通信部３１によって受信されたトランザクションの正当性を検証する。具体的には、トランザクション処理部３３は、トランザクションに含まれる署名に基づきプライベートデータに改竄がないことを検証する。トランザクション処理部３３は、トランザクションの正当性が検証されると、処理データに記述された処理を実行環境で実行する。このとき、図４に示すように、トランザクション処理部３３は、処理データに記述された、共有ＤＢ３２２に格納されているコード及びプログラムを用いて、共有ＤＢ３２２に格納されているデータに対して実行環境で処理を実行する。また、トランザクション処理部３３は、処理データに記述された処理の実行結果をブロック処理部３４に出力する。
【００４９】
また、トランザクション処理部３３は、共有ＤＢ３２２に格納されているデータに対する処理の実行が成功すると、トランザクションに含まれるプライベートデータに対して、処理データに記述された処理を実行する。また、トランザクション処理部３３は、プライベートデータに対する処理の実行結果をブロック処理部３４に出力する。トランザクション処理部３３は、設定ファイル格納部３２４に予め格納されている設定ファイルに基づいてプライベートデータに対して処理を実行してもよい。トランザクション処理部３３は、設定ファイルの他に共有ＤＢ３２２を用いて、グループ分けと同様にプライベートデータに対する処理を定義し、該定義に基づいて処理を実行してもよい。
【００５０】
また、ブロック処理部３４は、トランザクションに記述された処理の実行結果に基づく状態を格納した共有ＤＢ３２２（トランザクション後の共有ＤＢ）のハッシュ値である共有ハッシュ値を算出する。同様にして、ブロック処理部３４は、トランザクションに記述された処理が実行された後の状態を格納するプライベートＤＢ３２３（トランザクション後のプライベートＤＢ）のハッシュ値であるプライベートハッシュ値を算出する。さらに、ブロック処理部３４は、プライベートデータを含まないトランザクションをまとめたトランザクション群と、共有ハッシュ値と、プライベートハッシュ値とを含むブロックを新ブロックとして生成する。ブロック処理部３４は、生成した新ブロックを未確定のブロックとしてキャッシュ３２５に格納する。
【００５１】
また、ブロック処理部３４は、各トランザクションに含まれていた１つ以上のプライベートデータをまとめたプライベートデータ群を生成する。
【００５２】
通信部３１は、ブロック処理部３４によって生成されたプライベートデータ群と新ブロックとを互いに関連付けて、図５に示すように他のブロック検証装置３に送信する。
【００５３】
ブロック検証装置３の通信部３１は、互いに関連付けられたプライベートデータ群と新ブロックとを受信する。ここで、ブロック検証装置３が、プライベートデータ群と新ブロックとを受信した場合の処理について説明する。
【００５４】
トランザクション処理部３３は、通信部３１によって受信された、互いに関連付けられたプライベートデータ群と新ブロックとを用いてトランザクションに付された署名を検証する。また、トランザクション処理部３３は、プライベートデータのハッシュ値を用いてプライベートデータを特定する。また、トランザクション処理部３３は、トランザクション実行後の共有ＤＢ３２２及びプライベートＤＢ３２３の状態を検証する。トランザクション処理部３３は、共有ＤＢ３２２及びプライベートＤＢ３２３の状態の正当性が検証された場合、ブロックを台帳部３２１へ追加し、共有ＤＢ３２２及びプライベートＤＢ３２３を更新する。
【００５５】
＜グループごとにプライベートＤＢが共有されるブロック検証システム＞
次に、ブロック検証システム１が複数のグループで構成され、各ブロック検証装置３がいずれかのグループに属する場合における合意形成について説明する。各グループに属するブロック検証装置３のプライベートＤＢ３２３はグループ内のみで共有される。
【００５６】
具体的に、図６に示すように、ブロック検証システム１が３つのグループによって構成される例について説明する。以下では、３つのグループそれぞれをグループＡ、グループＢ、グループＣという。また、各グループに属する複数のブロック検証装置３それぞれにおいて、該グループを代表するブロック検証装置３を「グループリーダ装置」（グループリーダブロック検証装置）３ＧＬという。
また、グループリーダ装置３ＧＬではないブロック検証装置３を「メンバ装置３Ｍ」という。また、ブロック検証システム１を構成する全てのブロック検証装置３を代表する１つのブロック検証装置３を「全体リーダ装置」（全体リーダブロック検証装置）３Ｌという。
【００５７】
（第１合意形成プロセス）
各ブロック検証装置３の通信部３１は、トランザクション発行装置２によって、図２に示したトランザクションが発行されると、送信先である他のブロック検証装置３が属するグループに応じてデータを送信する。具体的には、通信部３１は、同一のグループに属する他のブロック検証装置３には、プライベートデータを含むトランザクションを送信する。一方、通信部３１は、異なるグループに属する他のブロック検証装置３には、プライベートデータを除いたトランザクションを送信する。このとき、通信部３１は、設定ファイル格納部３２４に予め格納されている設定に基づいて他のブロック検証装置３が属するグループを判定する。また、通信部３１は、トランザクションにより共有ＤＢ３２２に格納されているプログラムが実行されることによって、他のブロック検証装置３が属するグループを判定してもよい。
【００５８】
全体リーダ装置３Ｌの通信部３１は、各ブロック検証装置３の通信部３１からプライベートデータを含むトランザクション、あるいはプライベートデータを除いたトランザクションを受信する。図６に示す例では、全体リーダ装置３ＬはグループＢに属する。そのため、グループＡ及びグループＣに属するブロック検証装置３から受信したトランザクションにはプライベートデータが含まれておらず、グループＢに属するブロック検証装置３から受信したトランザクションにはプライベートデータが含まれている。
【００５９】
全体リーダ装置３Ｌのトランザクション処理部３３は、受信したトランザクションの正当性を検証し、ブロックに含めるトランザクションを仮決めする。全体リーダ装置３Ｌの通信部３１は、各グループリーダ装置３ＧＬに対して、ブロックではなく仮決めしたトランザクションのリスト（第１のトランザクションリスト）を送信する。このとき、全体リーダ装置３Ｌは、各グループリーダ装置３ＧＬに対して、全体リーダ装置３Ｌが送信したトランザクションのリストに基づいて処理を実行し、実行結果に基づく状態のダイジェストを全体リーダ装置３Ｌに送信するよう要求する。リストは、トランザクションそのものであってもよいし、該トランザクションを識別するための情報であってもよい。ダイジェストは、例えばハッシュ値などの要約データである。
【００６０】
各グループリーダ装置３ＧＬの通信部３１は、全体リーダ装置３Ｌから、トランザクションのリストを受信する。通信部３１がリストを受信すると、トランザクション処理部３３は、リストによって識別されるトランザクションに対応するプライベートデータが格納部３２のキャッシュ３２５に格納されているか否かを確認する。トランザクション処理部３３は、対応するプライベートデータが格納されていることを確認した場合、トランザクションを実行し、ブロック処理部３４に実行結果を出力する。具体的には、トランザクション処理部３３は、受信したリストに設定された各トランザクションについて、当該トランザクションに対応するプライベートデータが格納部３２に存在するか否かを判定する。対応するプライベートデータが格納されているトランザクションについては、トランザクション処理部３３は、当該トランザクションを自身が属するグループのトランザクションであるとみなし、当該トランザクションを実行する。対応するプライベートデータが格納されていないトランザクションについては、トランザクション処理部３３は、当該トランザクションを自身が属するグループではない他のグループのトランザクションであるとみなし、当該トランザクションを実行しない。ブロック処理部３４は、トランザクション処理部３３によって実行結果が出力されると、実行結果に基づいてプロポーザルを生成する。プロポーザルは、実行結果に基づくトランザクションのリスト（第２のトランザクションリスト）、実行後のプライベートＤＢ３２３のダイジェスト、及びプライベートデータ群を含む。実行結果に基づくトランザクションのリストは、トランザクションの実行に応じたリストであって、具体的には、トランザクション処理部３３が実行したトランザクション（すなわち、当該グループリーダ装置３ＧＬが属するグループのトランザクション）のリストである。ブロック処理部３４は、トランザクション処理部３３が実行したトランザクションのみを設定した、自身のグループ用のトランザクションリストを生成する。
【００６１】
グループリーダ装置３ＧＬのブロック処理部３４がプロポーザルを生成すると、通信部３１は、該グループリーダ装置３ＧＬのグループに属するメンバ装置３Ｍを含むブロック検証装置３に該プロポーザルを送信する。そして、例えばＰＢＦＴのような確定的な合意プロセスにより該プロポーザルについての合意が形成される。
【００６２】
各グループにおいてプロポーザルについての合意が形成されると、各グループリーダ装置３ＧＬは、合意が形成されたプロポーザルに含まれるトランザクションのリストと、トランザクションの実行後のプライベートＤＢ３２３のダイジェストと、プライベートデータ群のダイジェストとを、ブロック検証システム１を構成する他の全てのブロック検証装置３に送信する。ここで、各グループリーダ装置３ＧＬではなく、各グループに属する任意のメンバ装置３Ｍがトランザクションのリストと、トランザクションの実行後のプライベートＤＢ３２３のダイジェストと、プライベートデータ群のダイジェストとを送信してもよい。これにより、特定のグループに属するブロック検証装置３はプライベートデータを保持することができる。また、他のグループに属するブロック検証装置３は、特定のグループで合意が形成されたトランザクション、該トランザクションの実行後のプライベートＤＢ３２３の状態のダイジェスト、及びプライベートデータ群のダイジェストを保持することができる。
【００６３】
（第２合意形成プロセス）
全体リーダ装置３Ｌの通信部３１は、各グループに属するブロック検証装置３（グループリーダ装置３ＧＬ）から該グループで合意が形成されたトランザクションのリスト（第２のトランザクションリスト）と、プライベートＤＢ３２３の状態のダイジェストと、プライベートデータ群のダイジェストとを受信する。そして、全体リーダ装置３Ｌのブロック処理部３４は、仮決めしたトランザクションのうち、各グループリーダ装置３ＧＬから受信しなかったトランザクションを仮トランザクションから除外してブロックを生成する。すなわち、全体リーダ装置３Ｌのブロック処理部３４は、各グループリーダ装置３ＧＬに送信したリスト（第１のトランザクションリスト）に設定された仮トランザクションのうち、各グループリーダ装置３ＧＬから送信された全てのリスト（第２のトランザクションリスト）のいずれにも存在しない不正なトランザクションを、前記リスト（第１のトランザクションリスト）から除外したトランザクションのリスト（第３のトランザクションリスト）を生成する。そして、ブロック処理部３４は、不正なトランザクションを除外したリスト（第３のトランザクションリスト）のトランザクションを用いてブロックを生成する。
【００６４】
全体リーダ装置３Ｌのトランザクション処理部３３は、各グループリーダから受信したトランザクションのリストの順にトランザクションを実行し、実行結果に基づく共有ＤＢ３２２の状態を取得する。すなわち、トランザクション処理部３３は、各グループリーダから受信した各グループのリスト（第２のトランザクションリスト）に設定されたトランザクションの順番を変えないように、不正なトランザクションを除外したリスト（第３のトランザクションリスト）に設定されたトランザクションを順次、実行する。全体リーダ装置３Ｌのブロック処理部３４は、トランザクションのリストと、共有ＤＢ３２２のダイジェストと、各グループのプライベートＤＢ３２３のダイジェストと、各グループのプライベートデータ群のダイジェストとを含むブロックを生成し、他のブロック検証装置３に送信する。そして、全体リーダ装置３Ｌによって生成されたブロックについて、例えばＰＢＦＴのような確定的な合意形成アルゴリズムを用いて全てのブロック検証装置３によって合意が形成される。このとき、他のグループのプライベートＤＢ３２３及びプライベートデータ群については、第１合意形成プロセスによって合意が形成されていることを確認することによって、合意が形成される。
【００６５】
続いて、本実施形態におけるブロック検証システム１のブロック検証方法について図７を参照して説明する。
【００６６】
各ブロック検証装置３の通信部３１は、全体リーダ装置３Ｌにトランザクションを送信する（ステップＳ１１）。具体的には、各ブロック検証装置３の通信部３１は、全体リーダ装置３Ｌが該ブロック検証装置３と同一のグループに属する場合、プライベートデータを含むトランザクションを送信する。一方、各ブロック検証装置３の通信部３１は、全体リーダ装置３Ｌが該ブロック検証装置３と異なるグループに属する場合、プライベートデータを含まないトランザクションを送信する。図７においては、グループＢに属するメンバ装置３Ｍ＿Ｂが、全体リーダ装置３Ｌにトランザクションを送信する例を示している。
【００６７】
全体リーダ装置３Ｌの通信部３１によってブロック検証装置３からトランザクションが受信されると、該全体リーダ装置３Ｌのトランザクション処理部３３は、トランザクションを検証する（ステップＳ１２）。
【００６８】
トランザクションが正当であると検証されると、トランザクション処理部３３は、ブロックに含めるトランザクションを仮決めする（ステップＳ１３）。
【００６９】
全体リーダ装置３Ｌの通信部３１は、トランザクションのリストをグループリーダ装置３ＧＬに送信する（ステップＳ１４）。なお、図７においては、トランザクションのリストをグループＢに属するグループリーダ装置３ＧＬであるグループリーダ装置３ＧＬ＿Ｂに送信する例が示されている。
【００７０】
グループリーダ装置３ＧＬの通信部３１によってトランザクションのリストが受信されると、グループリーダ装置３ＧＬのトランザクション処理部３３は、トランザクションを実行し、実行結果をブロック処理部３４に出力する（ステップＳ１５）。
【００７１】
グループリーダ装置３ＧＬのブロック処理部３４は、実行結果に基づくリスト、実行後のプライベートＤＢ３２３のダイジェスト、及びプライベートデータ群を含むプロポーザルを生成する（ステップＳ１６）。
【００７２】
グループリーダ装置３ＧＬの通信部３１は、該グループリーダ装置３ＧＬが属するグループのメンバ装置３Ｍそれぞれにプロポーザルを送信する（ステップＳ１７）。なお、図７においては、グループリーダ装置３ＧＬ＿ＢがグループＢに属するメンバ装置３Ｍ＿Ｂそれぞれにプロポーザルを送信する例が示されている。
【００７３】
各メンバ装置３Ｍのトランザクション処理部３３は、プロポーザルを検証する（ステップＳ１８）。
【００７４】
ステップＳ１８でプロポーザルが正当であると検証されると、各メンバ装置３Ｍの通信部３１は、グループリーダ装置３ＧＬを含む、グループ内の他のブロック検証装置３に、自身の電子署名を付してプロポーザルを送信する（ステップＳ１９）。
【００７５】
ステップＳ１９で、一定数以上のブロック検証装置３から電子署名が付されたプロポーザルが送信されると、グループ内のブロック検証装置３（グループリーダ装置３ＧＬおよびメンバ装置３Ｍ）のブロック処理部３４は、該プロポーザルについての合意が形成されたと判定する（ステップＳ２０）。
【００７６】
各ブロック検証装置３の通信部３１は、合意が形成されたことを他のブロック検証装置３に送信し（ステップＳ２１）、台帳にブロックを追加する（ステップＳ２２）。
【００７７】
グループリーダ装置３ＧＬは、合意が形成されたプロポーザルに含まれるトランザクションのリストと、トランザクションの実行後のプライベートＤＢ３２３のダイジェストと、プライベートデータ群のダイジェストとを、他のグループのブロック検証装置３を含む、他の全てのブロック検証装置３に送信する（ステップＳ２３）。なお、図７においては、グループリーダ装置３ＧＬ＿Ｂが、グループＡおよびグループＣに属するそれぞれグループリーダ装置３ＧＬ＿Ａおよびグループリーダ装置３ＧＬ＿Ｃ等に、トランザクションのリストと、トランザクションの実行後のプライベートＤＢ３２３のダイジェストと、プライベートデータ群のダイジェストとを送信する例が示されている。
【００７８】
なお、上述したブロック検証装置３として機能させるためにコンピュータを好適に用いることができる。そのようなコンピュータは、ブロック検証装置３の各機能を実現する処理内容を記述したプログラムを該コンピュータのデータベースに格納しておく。該コンピュータのＣＰＵによってこのプログラムを読み出して実行させることで、コンピュータは、ブロック検証装置３としての機能を実現することができる。
【００７９】
また、プログラムは、コンピュータ読取り可能媒体に記録されていてもよい。コンピュータ読取り可能媒体を用いれば、プログラムをコンピュータにインストールすることが可能である。ここで、プログラムが記録されたコンピュータ読取り可能媒体は、非一過性（non-transitory）の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記録媒体であってもよい。
【００８０】
以上のように、本実施形態によれば、グループリーダ装置３ＧＬとしてのブロック検証装置３は、全体リーダ装置３Ｌから受信したリストによって識別されるトランザクションを実行し、実行結果に基づいてプロポーザルを生成し、同一のグループに属する他のブロック検証装置３に送信する。そして、グループリーダ装置３ＧＬは、プロポーザルについての合意が形成されたと判定すると、トランザクションのリスト、並びにトランザクションの実行後のプライベートＤＢ３２３のダイジェスト及びプライベートデータ群のダイジェストを全てのブロック検証装置３に送信する。そのため、ブロック検証システム１は、共有範囲が異なるプライベートＤＢ３２３の状態についても合意を形成することができる。また、本実施形態によれば、複数のデータベースを持つブロックチェーンシステムの場合に、ＰＢＦＴのような確定的な合意プロセスを利用し、共有範囲の異なる複数のプライベートＤＢの状態について合意を形成する
【００８１】
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００８２】
１      ブロック検証システム
２      トランザクション発行装置
３      ブロック検証装置
４      通信ネットワーク
３１    通信部
３２    格納部
３３    トランザクション処理部
３４    ブロック処理部
３２１  台帳部
３２２  共有ＤＢ
３２３  プライベートＤＢ
３２４  設定ファイル格納部
３２５  キャッシュ
【図１】
2019142884.tif 000003
【図２】
2019142884.tif 000004
【図３】
2019142884.tif 000005
【図４】
2019142884.tif 000006
【図５】
2019142884.tif 000007
【図６】
2019142884.tif 000008
【図７】
2019142884.tif 000009
【図８】
2019142884.tif 000010
【図９】
2019142884.tif 000011
【図１０】
2019142884.tif 000012
【図１１】
2019142884.tif 000013
【国際調査報告】
2019142884.tif 000014
2019142884.tif 000015