(57)【要約】【課題】複数のブロックチェーン間におけるトランザクション確定の時間短縮を図る。【解決手段】トランザクション制御装置１は、複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測する予測し、予測された時刻に基づいて、前記複数のブロックチェーンそれぞれの次のトランザクションの実行順序を決定するＢＣ順序決定部２３と、ＢＣ順序決定部２３によって決定された実行順序に基づいて、複数のブロックチェーンそれぞれについて、次のトランザクションを実行するＴＸ実行部２４と、を有する。【選択図】図１
2020021186.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測する予測部と、
前記予測部によって予測された時刻に基づいて、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定する決定部と、
前記決定部によって決定された実行順序に基づいて、前記複数のブロックチェーンそれぞれについて、前記次のトランザクションを実行する実行部と、
を有することを特徴とするトランザクション制御装置。
【請求項２】
前記決定部は、前記予測部によって予測された時刻の早い順に、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定する
ことを特徴とする請求項１に記載のトランザクション制御装置。
【請求項３】
前記予測部は、前記予測した次のトランザクションの確定の時刻に基づいて、次のトランザクションを実行した場合に前記複数のブロックチェーン間でデータの不整合がある期間を予測し、
前記決定部は、前記予測部によって予測された不整合がある期間に基づいて、複数のブロックチェーンそれぞれの次のトランザクションの実行順序を決定する、
ことを特徴とする請求項１に記載のトランザクション制御装置。
【請求項４】
前記予測部は、
前記複数のブロックチェーンごとに、まだブロックに含まれないトランザクションのサイズを示すトランザクションキューサイズがブロックサイズより小さいか否かを判定する判定部と、
前記複数のブロックチェーンごとに、前記判定部によって前記トランザクションキューサイズが前記ブロックサイズより小さいと判定された場合には、直近のブロックが生成された時刻に、ブロックチェーンごとに定められたブロックの生成間隔を加算し、前記次のトランザクションの確定時刻を予測する第１の予測部と、
前記複数のブロックチェーンごとに、前記判定部によって前記トランザクションキューサイズが前記ブロックサイズ以上であると判定された場合には、直近のブロックが生成された時刻に、前記トランザクションキューサイズに対応する、予測されるブロック生成所要時間を加算し、前記次のトランザクションの確定時刻を予測する第２の予測部と、
を含むことを特徴とする請求項１ないし３のいずれか１つに記載のトランザクション制御装置。
【請求項５】
前記実行部は、さらに、前記複数のブロックチェーンごとに、実際にトランザクションを実行した際に要した所要時間を前記トランザクションキューサイズに対応付けて保存し、
前記実行部によって保存された情報を用いて、前記複数のブロックチェーンごとに、前記トランザクションキューサイズに対応する、予測されるブロック生成所要時間を計算し、計算した時間を統計情報として保存する保存部と、
をさらに有することを特徴とする請求項４に記載のトランザクション制御装置。
【請求項６】
複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測し、
前記予測した時刻に基づいて、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定し、
前記決定した実行順序に基づいて、前記複数のブロックチェーンそれぞれについて、前記次のトランザクションを実行する、
処理をコンピュータに実行させることを特徴とするトランザクション制御プログラム。
【請求項７】
複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測し、
予測された時刻に基づいて、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定し、
決定された実行順序に基づいて、前記複数のブロックチェーンそれぞれについて、前記次のトランザクションを実行する、
処理をコンピュータが実行することを特徴とするトランザクション制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクション制御装置などに関する。
【背景技術】
【０００２】
近年、ビットコイン（登録商標）などのデジタル仮想通貨が普及しつつある。ビットコインなどの仮想通貨において、ブロックチェーンと呼ばれる技術が用いられている。ブロックチェーンは、参加者間の仮想通貨の取引情報（トランザクション）がブロックと呼ばれる単位でまとめられたものである（例えば、特許文献２参照）。
【０００３】
デジタル仮想通貨の取引に利用されているブロックチェーンは、様々な業務システムに適用されつつあり（例えば、特許文献１参照）、業務システムごとにブロックチェーンを活用している。このため、複数の業務システムを連携させたシステムを開発する場合は、既存の複数のブロックチェーンを活用して１つのシステムとすることが必要となる。このとき、複数のブロックチェーン間で同じトランザクションを実行し、ブロックチェーンに記録されるデータを一致させたい場合がある。例えば、病院が、病院のブロックチェーンと、薬局のブロックチェーンとの間で同じトランザクションを実行し、処方箋などのデータを一致させたい場合である。
【０００４】
かかる場合には、システムが、複数のブロックチェーンに同時にトランザクションを書き込むことも考えられる。しかしながら、ブロックチェーンでは、トランザクションの取り消しができない。このため、システムは、複数のブロックチェーンに同時にトランザクションを書き込むより、一方のブロックチェーンにトランザクションを実行し、成功すると、他方のブロックチェーンにトランザクションを実行する方が、合理的である。
【０００５】
なお、ブロックチェーンにおけるトランザクションの確定は、トランザクションが実行されるごとに行われるわけではなく、一定の時間間隔あるいはトランザクション数量ごとに行われる。また、ブロックチェーンごとに、トランザクションを確定するまでの時間間隔やトランザクション数量も異なる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７−５０７６３号公報
【特許文献２】特開２０１７−９１１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の技術では、複数のブロックチェーン間で同じトランザクションを実行する際にトランザクションの確定までの時間を短縮することができないという問題がある。
【０００８】
例えば、システムの利用者は、トランザクションの確定の成否のフィードバックを可能な限り早く受け取りたい。しかしながら、従来の技術では、システムは、一方のブロックチェーンにトランザクションを実行し、成功すると、他方のブロックチェーンにトランザクションを実行するが、トランザクションの確定の成否を可能な限り早くフィードバックする仕組みはない。
【０００９】
１つの側面では、複数のブロックチェーン間におけるトランザクション確定の時間短縮を図ることを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、トランザクション制御装置は、複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測する予測部と、前記予測部によって予測された時刻に基づいて、前記複数のブロックチェーンそれぞれの次のトランザクションの実行順序を決定する決定部と、前記決定部によって決定された実行順序に基づいて、前記複数のブロックチェーンそれぞれの次のトランザクションを実行する実行部と、を有する。
【発明の効果】
【００１１】
１つの態様によれば、複数のブロックチェーン間におけるトランザクション確定の時間短縮を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例に係るトランザクション制御装置の構成を示す機能ブロック図である。
【図２】図２は、実施例に係るトランザクション制御装置の処理の一例を示す図である。
【図３】図３は、ＢＣのＴＸ確定のタイミングの一例を示す図である。
【図４】図４は、実施例に係るＢＣ情報テーブルのデータ構造の一例を示す図である。
【図５】図５は、実施例に係る所要時間テーブルのデータ構造の一例を示す図である。
【図６】図６は、実施例に係る統計情報テーブルのデータ構造の一例を示す図である。
【図７】図７は、実施例に係るＢＣ順序決定の一例を示す図である。
【図８】図８は、実施例に係るＢＣ順序決定の別の例を示す図である。
【図９】図９は、実施例に係るトランザクション制御処理のフローチャートの一例を示す図である。
【図１０】図１０は、実施例に係るＢＣ順序決定処理のフローチャートの一例を示す図である。
【図１１】図１１は、実施例に係るＴＸ実行処理のフローチャートの一例を示す図である。
【図１２】図１２は、実施例に係るＢＣ情報取得処理のフローチャートの一例を示す図である。
【図１３】図１３は、実施例に係る統計情報生成処理のフローチャートの一例を示す図である。
【図１４】図１４は、実施例に係るトランザクション制御装置の別の構成を示す機能ブロック図である。
【図１５】図１５は、実施例に係るトランザクション制御装置の処理の応用例を示す図である。
【図１６】図１６は、トランザクション制御プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するトランザクション制御装置、トランザクション制御プログラムおよびトランザクション制御方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００１４】
［実施例に係るトランザクション制御装置の構成］
図１は、実施例に係るトランザクション制御装置の機能構成を示す図である。図１に示すように、トランザクション制御装置１は、複数のブロックチェーン（ＢＣ：Blockchain）で同じトランザクションを確定させる場合に、複数のＢＣそれぞれについて、次のトランザクションの確定時刻を予測し、予測時刻の早い方のＢＣから先に次のトランザクションを実行する。なお、実施例では、ブロックチェーンを「ＢＣ」と略記する。また、トランザクションを「ＴＸ」と略記する場合がある。
【００１５】
ここで、実施例に係るトランザクション制御装置１の処理の一例を、図２を参照して説明する。図２は、実施例に係るトランザクション制御装置の処理の一例を示す図である。なお、ＢＣ−Ａで表わされる１つのＢＣは、ブロック生成間隔を６０秒として、６０秒ごとに、トランザクションを確定するものとする。また、ＢＣ−Ｂで表わされる１つのＢＣは、ブロック生成間隔を２０秒として、２０秒ごとに、トランザクションを確定するものとする。すなわち、各ＢＣは、未確定のトランザクション（ＴＸ）がキュー（「ＴＸキュー」という）に複数蓄積されている場合には、ＴＸキューに蓄積された複数のトランザクションを一纏まりにしてブロックを生成し、ブロック単位でトランザクションを確定する。
【００１６】
図２に示すように、トランザクション制御装置１は、アプリケーション１０からトランザクション（ＴＸ）の登録要求を受信すると、トランザクション対象のＢＣごとに次のＴＸの確定時刻を予測する。
【００１７】
例えば、図２では、ＢＣ−ＢがＴＸの登録を実行する場合には、ＢＣ−Ｂは、ＴＸの登録要求を受信した時点（ｔ１）後、次の確定時刻（ｔ２）で次のＴＸを確定する。したがって、トランザクション制御装置１は、ＢＣ−Ｂについて、次のＴＸの確定時刻をｔ２と予測する。また、ＢＣ−ＡがＴＸの登録を実行する場合には、ＢＣ−Ａは、ＴＸの登録要求を受信した時刻（ｔ１１）後、次の確定時刻（ｔ１２）で次のＴＸを確定する。したがって、トランザクション制御装置１は、ＢＣ−Ａについて、次のＴＸの確定時刻をｔ１２と予測する。
【００１８】
そして、トランザクション制御装置１は、予測した時刻が早いＢＣから次のＴＸの登録を実行する。例えば、図２では、予測した確定時刻は、ＢＣ−ＡよりＢＣ−Ｂの方が早い。したがって、トランザクション制御装置１は、予測した時刻が早いＢＣ−Ｂから次のＴＸの登録を実行する。
【００１９】
予測した時刻が早いＢＣからＴＸの登録を実行する理由は、以下のとおりである。
【００２０】
仮に、トランザクション制御装置１が、ＢＣ−Ａを先にＴＸの登録を実行するとする。すると、ＢＣ−Ａは、ＴＸの登録要求を受信した時刻（ｔ１１）後、次の確定時刻（ｔ１２）でＴＸを確定する。トランザクション制御装置１が、ＴＸの確定成功を受信すると、ＢＣ−Ｂに対してＴＸの登録を実行する。すると、ＢＣ−Ｂは、ＴＸの登録要求を受信した時刻（ｔ１３）後、次の確定時刻（ｔ１４）でＴＸを確定する。すると、ＴＸの実行から確定までの時間は、（ｔ１４−ｔ１１）と計算される。
【００２１】
一方、トランザクション制御装置１が、ＢＣ−Ｂを先にＴＸの登録を実行するとする。すると、ＢＣ−Ｂは、ＴＸの登録要求を受信した時刻（ｔ１）後、次の確定時刻（ｔ２）で次のＴＸを確定する。トランザクション制御装置１が、ＴＸの確定成功を受信すると、ＢＣ−Ａに対してＴＸの登録を実行する。すると、ＢＣ−Ａは、ＴＸの登録要求を受信した時刻（ｔ３）後、次の確定時刻（ｔ４）で次のＴＸを確定する。すると、ＴＸの実行から確定までの時間は、（ｔ４−ｔ１）と計算される。
【００２２】
したがって、トランザクション制御装置１は、予測した時刻が早いＢＣ−ＢからＴＸの登録を実行したほうが、アプリケーション１０へのＴＸの登録完了のフィードバックを早期に返すことができる。すなわち、トランザクション制御装置１は、複数のＢＣ間におけるＴＸ確定の時間短縮を図ることができる。
【００２３】
なお、図２では、ＢＣのＴＸ確定のタイミングは、ＢＣごとに定められたブロック生成間隔を経過した時点であるとした。しかしながら、ＢＣのＴＸ確定のタイミングは、以下のいずれかの条件を満たしたタイミングであっても良い。１つ目の条件は、まだブロックに含まれないＴＸのサイズ（ブロックに取り込み待ちのＴＸ量）がブロックサイズを超えない、且つ、直近のブロック生成日時からのブロック生成間隔が経過したときとする。これは、負荷が低い場合であると推定されるので、ブロック生成間隔の経過を待って、ＴＸを確定するためである。２つ目の条件は、まだブロックに含まれないＴＸのサイズ（ブロックに取り込み待ちのＴＸ量）がブロックサイズを超えたときとする。これは、負荷が高いと推定されるので、ブロック生成間隔の経過を待たないで、ブロックに取り込み待ちのＴＸ量がブロックサイズを超えたときにＴＸを確定するためである。
【００２４】
図３は、ＢＣのＴＸ確定のタイミングの一例を示す図である。図３には、Ｘ軸を時間とし、Ｙ軸をブロックサイズとした場合のＢＣのＴＸ確定のタイミングを示すグラフが表わされている。１つ目の条件は、符号ａ１で示されるタイミングである。すなわち、ＢＣのＴＸ確定のタイミングは、ブロックに取り込み待ちのＴＸ量がブロックサイズを超えないが、直近のブロック生成の日時ａ０からのブロック生成間隔が経過したとき（ａ１）となる。また、２つ目の条件は、符号ａ３で示されるタイミングである。すなわち、ＢＣのＴＸ確定のタイミングは、ブロックに取り込み待ちのＴＸ量がブロックサイズを超えたとき（ａ３）となる。
【００２５】
そこで、以降では、トランザクション制御装置１は、ＢＣのＴＸ確定のタイミングを１つ目の条件を満たすタイミングおよび２つ目の条件を満たすタイミングとして、ＢＣごとのＴＸの確定時刻を予測する。
【００２６】
図１に戻って、トランザクション制御装置１は、アプリケーション１０と、ライブラリ部２０と、通信部３０とを有する。
【００２７】
アプリケーション１０は、例えば、利用者が所定の取引を実行する場合に利用するソフトウェアである。アプリケーション１０は、要求送信部１１を含む。要求送信部１１は、取引（トランザクション）の登録要求をライブラリ部２０に送信する。
【００２８】
通信部３０は、ネットワークを介して、他の外部装置と通信を行う処理部である。通信部３０は、通信装置に対応する。例えば、通信部３０は、同じトランザクションの対象となる複数のＢＣに対して、トランザクション（ＴＸ）の実行を要求する。
【００２９】
ライブラリ部２０は、要求受信部２１、ＢＣ情報取得部２２、ＢＣ順序決定部２３、ＴＸ実行部２４、統計情報生成部２５および記憶部２６を有する。
【００３０】
記憶部２６は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部２６は、ＢＣ情報テーブル２６１、所要時間テーブル２６２および統計情報テーブル２６３を有する。
【００３１】
ＢＣ情報テーブル２６１は、ＢＣごとに、各ＢＣが持つブロックに関するＢＣ情報を記憶する。なお、ＢＣ情報テーブル２６１のデータ構造の説明は、後述する。
【００３２】
所要時間テーブル２６２は、ＢＣごとに、ＴＸキューに蓄積された複数のトランザクション（ＴＸ）からブロックを生成する所要時間の実績を蓄積する。言い換えれば、所要時間テーブル２６２は、ＢＣごとに、ＴＸキューに蓄積された複数のＴＸが確定する所要時間の実績を記憶することともいえる。なお、所要時間テーブル２６２のデータ構造の説明は、後述する。
【００３３】
統計情報テーブル２６３は、ＢＣごとに、統計情報を記憶する。例えば、統計情報テーブル２６３は、ＴＸキューに蓄積された複数のトランザクション（ＴＸ）のサイズ（ＴＸキューサイズ）に対するブロック生成の所要時間の平均を統計情報として記憶する。言い換えれば、統計情報テーブル２６３は、ＢＣごとに、ＴＸキューに蓄積された複数のトランザクション（ＴＸ）のサイズに対するＴＸ確定の所要時間の平均を統計情報として記憶することともいえる。ここでいう「ＴＸキューサイズ」とは、まだブロックに含まれないＴＸのサイズであって、ＴＸキューに蓄積されたＴＸのサイズのことをいう。なお、統計情報テーブル２６３のデータ構造の説明は、後述する。
【００３４】
要求受信部２１は、アプリケーション１０から、トランザクション（ＴＸ）の登録要求を受信する。
【００３５】
ＢＣ情報取得部２２は、トランザクション対象のＢＣごとに、ＢＣ情報を取得する。ＢＣ情報取得部２２は、トランザクション対象のＢＣごとに取得したＢＣ情報をＢＣ情報テーブル２６１に保存する。なお、ＢＣ情報取得部２２は、トランザクション対象の複数のＢＣから定期的にそれぞれＢＣ情報を取得すれば良い。
【００３６】
ここで、ＢＣ情報テーブル２６１のデータ構造の一例を、図４を参照して説明する。図４は、実施例に係るＢＣ情報テーブルのデータ構造の一例を示す図である。図４に示すように、ＢＣ情報テーブル２６１は、ＢＣ接続先識別子２６１ａ、ＴＸキューサイズ２６１ｂ、ブロックサイズ２６１ｃ、ブロック生成間隔２６１ｄを対応付けて記憶する。加えて、ＢＣ情報テーブル２６１は、最新ブロック生成日時２６１ｅおよび次回ブロック生成予測日時２６１ｆを対応付けて記憶する。
【００３７】
ＢＣ接続先識別子２６１ａは、ＢＣの接続先を一意に識別する識別子である。ＢＣ接続先識別子２６１ａには、例えば、ＩＰ（Internet  Protocol）アドレスが挙げられる。
【００３８】
ＴＸキューサイズ２６１ｂは、まだブロックに含まれないトランザクションのサイズであって、ＴＸキューに蓄積されたトランザクションのサイズである。ＴＸキューサイズ２６１ｂは、ＴＸキューに含まれるキューの個数（トランザクションの個数）であっても良いし、ＴＸキューに含まれるトランザクションの総量であっても良い。実施例では、ＴＸキューサイズ２６１ｂは、ＴＸキューに含まれるキューの個数（トランザクションの個数）であるとして説明する。
【００３９】
ブロックサイズ２６１ｃは、１ブロックのサイズである。言い換えれば、ブロックサイズ２６１ｃは、ＴＸキューに含まれるトランザクションをブロックとして確定するサイズである。ブロックサイズ２６１ｃは、１ブロックに含むことが可能なトランザクションの個数であっても良いし、１ブロックに含むことが可能なトランザクションの総量であっても良い。実施例では、ブロックサイズ２６１ｃは、１ブロックに含むことが可能なトランザクションの個数であるとして説明する。
【００４０】
ブロック生成間隔２６１ｄは、ブロックを生成する時間間隔である。言い換えれば、ブロック生成間隔２６１ｄは、ＴＸキューに含まれるトランザクションをブロックとして確定する時間間隔であるともいえる。
【００４１】
最新ブロック生成日時２６１ｅは、最新にブロックを生成した日時である。言い換えれば、最新ブロック生成日時２６１ｅは、最新にＴＸキューに含まれるトランザクションをブロックとして確定した日時であるともいえる。
【００４２】
次回ブロック生成予測日時２６１ｆは、次回にブロックを生成する予測日時である。なお、次回ブロック生成予測日時２６１ｆは、後述するＢＣ順序決定部２３によって算出される。
【００４３】
一例として、ＢＣ接続先識別子２６１ａが「Ｈｏｓｔ−ａ」である場合に、ＴＸキューサイズ２６１ｂとして「０．２ＭＢ」、ブロックサイズ２６１ｃとして「１ＭＢ」、ブロック生成間隔２６１ｄとして「６０秒」と記憶している。加えて、ＢＣ接続先識別子２６１ａが「Ｈｏｓｔ−ａ」である場合に、最新ブロック生成日時２６１ｅとして「１０：４０：３５」、次回ブロック生成予測日時２６１ｆとして「１０：４１：３５」と記憶している。
【００４４】
図１に戻って、例えば、ＢＣ情報取得部２２は、ＢＣ接続先識別子２６１ａとして「Ｈｏｓｔ−ａ」のミドルウェアから、ＴＸキューサイズ、ブロックサイズ、ブロック生成間隔、最新ブロック生成日時を取得すると、これらの情報を対応付けてＢＣ情報テーブル２６１に保存する。なお、ブロックサイズ２６１ｃおよびブロック生成間隔２６１ｄは、それぞれ予め運用時に設定される値であり、運用中に設定値が変更されない限り、ＢＣ情報取得時ごとに同じである。ＴＸキューサイズ２６１ｂおよび最新ブロック生成日時２６１ｅは、ＢＣ情報取得時ごとに異なる。
【００４５】
ＢＣ順序決定部２３は、同じトランザクションの対象となる複数のＢＣそれぞれについて、次のトランザクションの確定の時刻を予測する。なお、ＢＣ順序決定部２３は、予測部や決定部の一例である。
【００４６】
例えば、ＢＣ順序決定部２３は、ＢＣ情報テーブル２６１から、トランザクション対象のＢＣごとに、ＴＸキューサイズ２６１ｂ、ブロックサイズ２６１ｃ、ブロック生成間隔２６１ｄおよび最新ブロック生成日時２６１ｅを取得する。ＢＣ順序決定部２３は、ＢＣごとに、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さいか否かを判定する。
【００４７】
一例として、ＢＣ順序決定部２３が、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さい場合には、最新ブロック生成日時２６１ｅにブロック生成間隔２６１ｄを加算する。そして、ＢＣ順序決定部２３は、加算した日時を次回ブロック生成予測日時２６１ｆの欄に設定する。これは、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さい場合には、負荷が低く、ＴＸキューサイズ２６１ｂのＴＸが次のブロックに含まれるであろうと推定される。このため、ＢＣ順序決定部２３は、ブロック生成間隔２６１ｄを経過した時点を次回ブロック生成予測日時２６１ｆと推定する。なお、次回ブロック生成予測日時２６１ｆが過去の日時になる場合がある。例えば、前回のブロック生成日時にブロックを生成するトランザクションがなかったような場合である。かかる場合には、ＢＣ順序決定部２３は、現在の日時を超えるまで、次回ブロック生成予測日時２６１ｆにブロック生成間隔２６１ｄを繰り返し加算すれば良い。
【００４８】
また、一例として、ＢＣ順序決定部２３が、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃ以上である場合には、最新ブロック生成日時２６１ｅに、ＴＸキューサイズ２６１ｂに対応する平均ブロック生成所要時間を加算する。そして、ＢＣ順序決定部２３は、加算した日時を次回ブロック生成予測日時２６１ｆの欄に設定する。これは、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃ以上である場合には、負荷が高く、ＴＸキューサイズ２６１ｂの時点で実行したＴＸが次のブロックに含まれないであろうと推定される。このため、ＢＣ順序決定部２３は、ＴＸの総量（ＴＸキューサイズ）がブロックサイズ２６１ｃを超えた時点を次回ブロック生成予測日時２６１ｆと推定する。なお、平均ブロック生成所要時間は、後述する統計情報テーブル２６３から取得されれば良い。
【００４９】
また、ＢＣ順序決定部２３は、予測された時刻の昇順に、トランザクション対象の複数のＢＣそれぞれの次のトランザクションの実行順序を決定する。例えば、ＢＣ順序決定部２３は、ＢＣ情報テーブル２６１を参照して、トランザクション対象のＢＣごとに、次回ブロック生成予測日時２６１ｆを取得する。ＢＣ順序決定部２３は、トランザクション対象のＢＣごとに取得した次回ブロック生成予測日時２６１ｆの早い順に、それぞれの次のトランザクションの実行順序を決定する。
【００５０】
ＴＸ実行部２４は、ＢＣ順序決定部２３によって決定された実行順序に基づいて、トランザクション対象の複数のＢＣそれぞれに対して次のトランザクションを実行する。なお、ＴＸ実行部２４は、実行部の一例である。例えば、ＴＸ実行部２４は、実行順序が早いＢＣに対して次のトランザクションを実行する。ＴＸ実行部２４は、トランザクションの確定を受け付けると、トランザクションの実行開始から確定までの所要時間を算出し、算出した所要時間をＴＸキューサイズ２６１ｂおよびＢＣ接続先識別子２６１ａに対応付けて所要時間テーブル２６２に保存する。そして、ＴＸ実行部２４は、実行順序が次に早いＢＣに対して、次のトランザクションを実行する。そして、ＴＸ実行部２４は、実行順序が次に早いＢＣがなければ、ＴＸ実行処理を終了する。
【００５１】
ここで、実施例に係る所要時間テーブル２６２のデータ構造の一例を、図５を参照して説明する。図５は、実施例に係る所要時間テーブルのデータ構造の一例を示す図である。図５に示すように、所要時間テーブル２６２は、ＢＣ接続先識別子２６２ａ、ＴＸキューサイズ２６２ｂおよびブロック生成所要時間（実績）２６２ｃを対応付けて記憶する。
【００５２】
ＢＣ接続先識別子２６２ａは、ＢＣに対する接続先を一意に識別する識別子である。ＢＣ接続先識別子２６２ａは、ＢＣ情報テーブル２６１のＢＣ接続先識別子２６１ａに対応する。
【００５３】
ＴＸキューサイズ２６２ｂは、まだブロックに含まれないトランザクションのサイズであって、ＴＸキューに蓄積されたトランザクションのサイズである。ＴＸキューサイズ２６２ｂは、ＢＣ情報テーブル２６１のＴＸキューサイズ２６１ｂに対応するので、その説明を省略する。
【００５４】
ブロック生成所要時間（実績）２６２ｃは、ブロックを生成する所要時間の実績である。一例として、ブロック生成所要時間（実績）２６２ｃは、トランザクションの実行開始から確定までの所要時間の実績である。
【００５５】
一例として、ＢＣ接続先識別子２６２ａが「Ｈｏｓｔ−ａ」である場合に、ＴＸキューサイズ２６２ｂとして「２ＭＢ」、ブロック生成所要時間（実績）２６２ｃとして「３２秒」と記憶している。ＴＸキューサイズ２６２ｂとして「２ＭＢ」、ブロック生成所要時間（実績）２６２ｃとして「２８秒」と記憶している。ＴＸキューサイズ２６２ｂとして「５ＭＢ」、ブロック生成所要時間（実績）２６２ｃとして「１２秒」と記憶している。
【００５６】
図１に戻って、統計情報生成部２５は、所要時間テーブル２６２を用いて、ＢＣごとに、ＴＸキューサイズに対応するブロック生成所要時間（実績）２６２ｃの平均を統計情報として生成する。例えば、統計情報生成部２５は、所要時間テーブル２６２を参照して、ＢＣが示すＢＣ接続先識別子２６２ａごとに、ＴＸキューサイズ２６２ｂに対応するブロック生成所要時間（実績）２６２ｃを取得する。統計情報生成部２５は、取得したブロック生成所要時間（実績）２６２ｃを用いて、ブロック生成所要時間（実績）の平均を算出し、平均ブロック生成所要時間（予測）とする。そして、統計情報生成部２５は、ＢＣが示すＢＣ接続先識別子２６２ａごとに、ＴＸキューサイズ２６２ｂに対応する平均ブロック生成所要時間（予測）２６３ｃを統計情報テーブル２６３に保存する。なお、統計情報生成部２５は、予め定められた時点に実行されれば良い。
【００５７】
ここで、実施例に係る統計情報テーブル２６３のデータ構造の一例を、図６を参照して説明する。図６は、実施例に係る統計情報テーブルのデータ構造の一例を示す図である。図６に示すように、統計情報テーブル２６３は、ＢＣ接続先識別子２６３ａ、ＴＸキューサイズ２６３ｂおよび平均ブロック生成所要時間（予測）２６３ｃを対応付けて記憶する。
【００５８】
ＢＣ接続先識別子２６３ａは、ＢＣに対する接続先を一意に識別する識別子である。ＢＣ接続先識別子２６３ａは、ＢＣ情報テーブル２６１のＢＣ接続先識別子２６１ａに対応する。
【００５９】
ＴＸキューサイズ２６３ｂは、まだブロックに含まれないトランザクションのサイズであって、ＴＸキューに蓄積されたトランザクションのサイズである。ＴＸキューサイズ２６３ｂは、ＢＣ情報テーブル２６１のＴＸキューサイズ２６１ｂに対応するので、その説明を省略する。
【００６０】
平均ブロック生成所要時間（予測）２６３ｃは、ブロックを生成する所要時間の平均である。
【００６１】
一例として、ＢＣ接続先識別子２６３ａが「Ｈｏｓｔ−ａ」である場合に、ＴＸキューサイズ２６３ｂとして「２ＭＢ」、平均ブロック生成所要時間（予測）２６３ｃとして「３０秒」と記憶している。ＴＸキューサイズ２６３ｂとして「５ＭＢ」、平均ブロック生成所要時間（予測）２６３ｃとして「１２秒」と記憶している。
【００６２】
［ＢＣ順序決定の一例］
図７は、実施例に係るＢＣ順序決定の一例を示す図である。図７に示すように、トランザクション対象の複数のＢＣであるＢＣ−ＡおよびＢＣ−Ｂについて、それぞれのＢＣ情報がＢＣ情報テーブル２６１に記憶されている。ＢＣ−Ａについて、ＴＸキューサイズ２６１ｂは、０．２ＭＢである。ブロックサイズ２６１ｃは、１ＭＢである。ＢＣ−Ｂについて、ＴＸキューサイズ２６１ｂは、１．０ＭＢである。ブロックサイズ２６１ｃは、１０ＭＢである。
【００６３】
このような状況の下、ＢＣ順序決定部２３は、ＢＣごとに、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さいか否かを判定する。ここでは、ＢＣ−Ａについては、ＴＸキューサイズ２６１ｂが０．２ＭＢであり、ブロックサイズ２６１ｃが１ＭＢであるので、ＴＸキューサイズ２６１ｂは、ブロックサイズ２６１ｃより小さいと判定される。ＢＣ−Ｂについても、ＴＸキューサイズ２６１ｂが１．０ＭＢであり、ブロックサイズ２６１ｃが１０ＭＢであるので、ＴＸキューサイズ２６１ｂは、ブロックサイズ２６１ｃより小さいと判定される。
【００６４】
そして、ＢＣ順序決定部２３は、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さい場合には、最新ブロック生成日時２６１ｅにブロック生成間隔２６１ｄを加算し、加算した日時を次回ブロック生成予測日時２６１ｆの欄に設定する。これは、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さい場合には、負荷が低く、ＴＸキューサイズ２６１ｂのＴＸが次のブロックに含まれるであろうと推定される。このため、ＢＣ順序決定部２３は、ブロック生成間隔２６１ｄを経過した時点を次回ブロック生成予測日時２６１ｆと推定する。
【００６５】
ここでは、ＢＣ−Ａについては、最新ブロック生成日時２６１ｅである「１０：４０：３５」にブロック生成間隔２６１ｄである「６０秒」を加算した日時「１０：４１：３５」が、次回ブロック生成予測日時２６１ｆの欄に設定される。ＢＣ−Ｂについては、最新ブロック生成日時２６１ｅである「１０：４０：５８」にブロック生成間隔２６１ｄである「２０秒」を加算した日時「１０：４１：１８」が、次回ブロック生成予測日時２６１ｆの欄に設定される。
【００６６】
そして、ＢＣ順序決定部２３は、ＢＣ情報テーブル２６１を参照して、トランザクション対象の複数のＢＣ−Ａ，ＢＣ−Ｂに対応するそれぞれの次回ブロック生成予測日時２６１ｆの早い順に、それぞれの次のトランザクションの実行順序を決定する。ここでは、ＢＣ−Ａに対応する次回ブロック生成予測日時２６１ｆは、「１０：４１：３５」である。ＢＣ−Ｂに対応する次回ブロック生成予測日時２６１ｆは、「１０：４１：１８」である。したがって、ＢＣ順序決定部２３は、次回ブロック生成予測日時２６１ｆが早い順に、すなわち、ＢＣ−Ｂ，ＢＣ−Ａの順に、次のトランザクションの実行順序を決定する。
【００６７】
図８は、実施例に係るＢＣ順序決定の別の例を示す図である。図８に示すように、トランザクション対象の複数のＢＣであるＢＣ−ＡおよびＢＣ−Ｂについて、それぞれのＢＣ情報がＢＣ情報テーブル２６１に記憶されている。ＢＣ−Ａについて、ＴＸキューサイズ２６１ｂは、２ＭＢである。ブロックサイズ２６１ｃは、１ＭＢである。ＢＣ−Ｂについて、ＴＸキューサイズ２６１ｂは、５０ＭＢである。ブロックサイズ２６１ｃは、１０ＭＢである。
【００６８】
このような状況の下、ＢＣ順序決定部２３は、ＢＣごとに、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さいか否かを判定する。ここでは、ＢＣ−Ａについては、ＴＸキューサイズ２６１ｂが２ＭＢであり、ブロックサイズ２６１ｃが１ＭＢであるので、ＴＸキューサイズ２６１ｂは、ブロックサイズ２６１ｃより大きいと判定される。ＢＣ−Ｂについても、ＴＸキューサイズ２６１ｂが５０ＭＢであり、ブロックサイズ２６１ｃが１０ＭＢであるので、ＴＸキューサイズ２６１ｂは、ブロックサイズ２６１ｃより大きいと判定される。
【００６９】
そして、ＢＣ順序決定部２３は、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより大きい場合には、最新ブロック生成日時２６１ｅに、ＴＸキューサイズ２６１ｂに対応する平均ブロック生成所要時間（予測）を加算し、加算した日時を次回ブロック生成予測日時２６１ｆの欄に設定する。これは、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより大きい場合には、負荷が高く、ＴＸキューサイズ２６１ｂのＴＸが次のブロックに含まれないであろうと推定される。このため、ＢＣ順序決定部２３は、ＴＸの総量（ＴＸキューサイズ）がブロックサイズ２６１ｃを超えた時点を次回ブロック生成予測日時２６１ｆと推定する。
【００７０】
ここでは、ＢＣ−Ａについては、ＴＸキューサイズ２６１ｂ「２ＭＢ」に対応する平均ブロック生成所要時間（予測）２６３ｃが、統計情報テーブル２６３から「３０秒」と取得される。そして、最新ブロック生成日時２６１ｅである「１０：４０：３５」に、ＴＸキューサイズ２６１ｂ「２ＭＢ」に対応する平均ブロック生成所要時間（予測）２６３ｃ「３０秒」を加算した日時「１０：４１：０５」が、次回ブロック生成予測日時２６１ｆの欄に設定される。ＢＣ−Ｂについては、ＴＸキューサイズ２６１ｂ「１０ＭＢ」に対応する平均ブロック生成所要時間（予測）２６３ｃが、統計情報テーブル２６３から、「１０秒」と取得される。そして、最新ブロック生成日時２６１ｅである「１０：４０：５８」に、ＴＸキューサイズ２６１ｂ「１０ＭＢ」に対応する平均ブロック生成所要時間（予測）２６３ｃ「１０秒」を加算した日時「１０：４１：０８」が、次回ブロック生成予測日時２６１ｆの欄に設定される。
【００７１】
そして、ＢＣ順序決定部２３は、ＢＣ情報テーブル２６１を参照して、トランザクション対象の複数のＢＣ−Ａ，ＢＣ−Ｂに対応するそれぞれの次回ブロック生成予測日時２６１ｆの早い順に、それぞれの次のトランザクションの実行順序を決定する。ここでは、ＢＣ−Ａに対応する次回ブロック生成予測日時２６１ｆは、「１０：４１：０５」である。ＢＣ−Ｂに対応する次回ブロック生成予測日時２６１ｆは、「１０：４１：０８」である。したがって、ＢＣ順序決定部２３は、次回ブロック生成予測日時２６１ｆが早い順に、すなわち、ＢＣ−Ａ，ＢＣ−Ｂの順に、次のトランザクションの実行順序を決定する。
【００７２】
これにより、ＢＣ順序決定部２３は、複数のＢＣ間におけるデータのトランザクション確定の時間短縮を図ることができる。
【００７３】
［トランザクション制御処理のフローチャート］
図９は、実施例に係るトランザクション制御処理のフローチャートの一例を示す図である。
【００７４】
図９に示すように、要求受信部２１は、アプリケーション１０から送信された、トランザクション（ＴＸ）の登録要求を受信する（ステップＳ１１）。
【００７５】
すると、ＢＣ順序決定部２３は、トランザクション対象のＢＣに対するＴＸの実行順序を決定する（ステップＳ１２）。なお、ＢＣに対するＴＸの実行順序の決定処理のフローチャートは、ＢＣ順序決定処理として後述する。
【００７６】
そして、ＴＸ実行部２４は、決定されたＴＸの実行順序に従ってＴＸを実行する（ステップＳ１３）。なお、ＴＸ実行処理のフローチャートは、後述する。そして、トランザクション制御処理は、終了する。
【００７７】
［ＢＣ順序決定処理のフローチャート］
図１０は、実施例に係るＢＣ順序決定処理のフローチャートの一例を示す図である。なお、図１０のフローチャート内の「ｉ」は、ＢＣ情報テーブル２６１に保存されたＢＣ情報を指すインデックスであるとする。図１０のフローチャート内のｘｘ（ｉ）は、ｉ番目のＢＣ情報に対応する項目ｘｘであることを指す。また、ステップＳ２１〜ステップＳ２４は、複数のＢＣについて、非同期で実行される。
【００７８】
図１０に示すように、ＢＣ順序決定部２３は、ＢＣ情報テーブル２６１から、ｉ番目のＢＣのＢＣ情報を取得する（ステップＳ２１）。ＢＣ順序決定部２３は、ｉ番目のＢＣについて、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さいか否かを判定する（ステップＳ２２）。
【００７９】
ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃより小さいと判定した場合には（ステップＳ２２；Ｙｅｓ）、ＢＣ順序決定部２３は、最新ブロック生成日時２６１ｅにブロック生成間隔２６１ｄを加算する。ＢＣ順序決定部２３は、加算した日時を次回ブロック生成予測日時２６１ｆに設定する（ステップＳ２３）。なお、次回ブロック生成予測日時２６１ｆが過去の日時になる場合がある。例えば、前回のブロック生成日時にブロックを生成するトランザクションがなかったような場合である。かかる場合には、ステップＳ２３は、現在の日時を超えるまで、次回ブロック生成予測日時２６１ｆにブロック生成間隔２６１ｄを繰り返し加算すれば良い。そして、ＢＣ順序決定部２３は、ステップＳ２５に移行する。
【００８０】
一方、ＴＸキューサイズ２６１ｂがブロックサイズ２６１ｃ以上であると判定した場合には（ステップＳ２２；Ｎｏ）、ＢＣ順序決定部２３は、最新ブロック生成日時２６１ｅに、ＴＸキューサイズ２６１ｂに対応する平均ブロック生成所要時間（予測）を加算する。そして、ＢＣ順序決定部２３は、加算した日時を次回ブロック生成予測日時２６１ｆに設定する（ステップＳ２４）。なお、ＢＣ順序決定部２３は、平均ブロック生成所要時間（予測）を、統計情報テーブル２６３を用いて取得または算出すれば良い。例えば、統計情報テーブル２６３にＴＸキューサイズ２６１ｂと一致するＴＸキューサイズ２６３ｂが存在する場合には、ＢＣ順序決定部２３は、ＴＸキューサイズ２６３ｂに対応する平均ブロック生成所要時間（予測）２６３ｃを取得すれば良い。統計情報テーブル２６３にＴＸキューサイズ２６１ｂと一致するＴＸキューサイズ２６３ｂが存在しない場合には、ＢＣ順序決定部２３は、ＴＸキューサイズ２６１ｂの前後のＴＸキューサイズ２６３ｂと当該サイズに対応する平均ブロック生成所要時間（予測）２６３ｃとを用いて一次関数を生成し、生成した一次関数を用いてＴＸキューサイズ２６１ｂに対応するＴＸキューサイズを算出すれば良い。そして、ＢＣ順序決定部２３は、ステップＳ２５に移行する。
【００８１】
ステップＳ２５において、ＢＣ順序決定部２３は、非同期実行の完了を待ち合わせる（ステップＳ２５）。そして、ＢＣ順序決定部２３は、次回ブロック生成予測日時の昇順に、ＴＸの実行順序を決定する（ステップＳ２６）。そして、ＢＣ順序決定部２３は、ＢＣ順序決定処理を終了する。
【００８２】
［ＴＸ実行処理のフローチャート］
図１１は、実施例に係るＴＸ実行処理のフローチャートの一例を示す図である。なお、図１１のフローチャート内の「ｉ」は、ＢＣ情報テーブル２６１に保存されたＢＣ情報を指すインデックスであるとする。「ｉ」は、初期値を「１」とする。
【００８３】
図１１に示すように、ＴＸ実行部２４は、ｉ番目のＢＣ情報のＢＣに対してＴＸを実行する（ステップＳ３１）。そして、ＴＸ実行部２４は、ＴＸを実行した現在時刻をｓｔａｒｔに設定する。なお、ｓｔａｒｔは、記憶部２６の一時領域である。
【００８４】
ＴＸ実行部２４は、ＴＸが確定したか否かを判定する（ステップＳ３２）。ＴＸが確定していないと判定した場合には（ステップＳ３２；Ｎｏ）、ＴＸ実行部２４は、ＴＸが確定するのを待つべく、スリープする（ステップＳ３３）。そして、ＴＸ実行部２４は、ステップＳ３２に移行する。
【００８５】
ＴＸが確定したと判定した場合には（ステップＳ３２；Ｙｅｓ）、ＴＸ実行部２４は、現在時間からｓｔａｒｔに設定された時刻を引いた差分を所要時間に設定する（ステップＳ３４）。そして、ＴＸ実行部２４は、所要時間を、ｉ番目のＢＣ情報に対応するＴＸキューサイズ２６１ｂに対応付けて、所要時間テーブル２６２に保存する（ステップＳ３５）。
【００８６】
ＴＸ実行部２４は、ｉに設定された値を１加算する（ステップＳ３６）。そして、ＴＸ実行部２４は、トランザクション対象のＢＣの数がｉより小さいか否かを判定する（ステップＳ３７）。トランザクション対象のＢＣの数がｉ以上であると判定した場合には（ステップＳ３７；Ｎｏ）、ＴＸ実行部２４は、次のｉ番目のＢＣにＴＸを実行すべく、ステップＳ３１に移行する。
【００８７】
一方、トランザクション対象のＢＣの数がｉより小さいと判定した場合には（ステップＳ３７；Ｙｅｓ）、ＴＸ実行部２４は、ＴＸ実行処理を終了する。
【００８８】
［ＢＣ情報取得処理のフローチャート］
図１２は、実施例に係るＢＣ情報取得処理のフローチャートの一例を示す図である。
【００８９】
図１２に示すように、ＢＣ情報取得部２２は、ＢＣ情報の取得タイミングであるか否かを判定する（ステップＳ４１）。ＢＣ情報の取得タイミングでないと判定した場合には（ステップＳ４１；Ｎｏ）、ＢＣ情報取得部２２は、ＢＣ情報の取得タイミングになるまで、スリープし（ステップＳ４１Ａ）、判定処理を繰り返す。
【００９０】
一方、ＢＣ情報の取得タイミングであると判定した場合には（ステップＳ４１；Ｙｅｓ）、ＢＣ情報取得部２２は、トランザクション対象のＢＣからそれぞれ各種の設定値を取得する（ステップＳ４２）。例えば、ＢＣ情報取得部２２は、トランザクション対象の各ＢＣのミドルウェアから、ＴＸキューサイズ、ブロックサイズ、ブロック生成間隔、最新ブロック生成日時を取得する。
【００９１】
そして、ＢＣ情報取得部２２は、取得した各種の設定値をＢＣ情報として、ＢＣのＢＣ接続先識別子２６１ａに対応付けてＢＣ情報テーブル２６１に保存する（ステップＳ４３）。そして、ＢＣ情報取得部２２は、ＢＣ情報取得処理を終了する。
【００９２】
［統計情報生成処理のフローチャート］
図１３は、実施例に係る統計情報生成処理のフローチャートの一例を示す図である。
【００９３】
図１３に示すように、統計情報生成部２５は、統計情報の生成タイミングであるか否かを判定する（ステップＳ５１）。統計情報の生成タイミングでないと判定した場合には（ステップＳ５１；Ｎｏ）、統計情報生成部２５は、統計情報の生成タイミングになるまで、スリープし（ステップＳ５１Ａ）、判定処理を繰り返す。
【００９４】
一方、統計情報の生成タイミングであると判定した場合には（ステップＳ５１；Ｙｅｓ）、統計情報生成部２５は、所要時間テーブル２６２から、トランザクション対象のＢＣごとに、ＢＣに対応するＴＸキューサイズ２６２ｂとブロック生成所要時間（実績）２６２ｃとを組み合わせて取得する（ステップＳ５２）。
【００９５】
統計情報生成部２５は、トランザクション対象のＢＣごとに取得したＴＸキューサイズ２６２ｂとブロック生成所要時間（実績）２６２ｃとの組み合わせを用いて、ＢＣごとに、ＴＸキューサイズに対応するブロック生成所要時間の平均値を算出する（ステップＳ５３）。
【００９６】
そして、統計情報生成部２５は、トランザクション対象のＢＣと、ＴＸキューサイズと、算出したブロック生成所要時間の平均値とを対応付けて統計情報テーブル２６３に保存する（ステップＳ５４）。そして、統計情報生成部２５は、統計情報生成処理を終了する。
【００９７】
ところで、実施例に係るトランザクション制御装置１は、アプリケーション１０をライブラリ部２０とともに有する場合を説明した。しかしながら、アプリケーション１０をトランザクション制御装置１の外部装置に有するとしても良く、アプリケーション１０がネットワーク経由でトランザクション制御装置１に接続するようにしても良い。
【００９８】
［トランザクション制御装置の別の構成］
図１４は、実施例に係るトランザクション制御装置の別の構成を示す機能ブロック図である。なお、実施例の図１に示すトランザクション制御装置１と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。
【００９９】
図１と図１４とが異なるところは、アプリケーション１０をアプリケーション１０Ａに変更した点である。アプリケーション１０Ａは、ネットワーク経由でトランザクション制御装置１に接続する。そして、要求受信部２１が、アプリケーション１０Ａからトランザクション（ＴＸ）の登録要求を受信する。ＢＣ順序決定部２３が、トランザクション対象の複数のＢＣそれぞれについて、次のＴＸの確定の時刻を予測し、予測された時刻の昇順に、次のＴＸの実行順序を決定する。ＴＸ実行部２４は、決定された実行順序に基づいて、トランザクション対象の複数のＢＣそれぞれに対して次のＴＸを実行する。これにより、ＢＣ順序決定部２３は、複数のＢＣ間におけるＴＸ確定の時間短縮を図ることができる。
【０１００】
［応用例］
ところで、実施例では、トランザクション制御装置１は、同じトランザクションの対象となる複数のＢＣそれぞれについて、次のトランザクションの確定の時刻を予測し、予測した時刻が早いほうのＢＣから先にトランザクションを実行すると説明した。これにより、トランザクション制御装置１は、トランザクション対象の複数のＢＣ間におけるトランザクション確定の時間短縮を図ることができる。しかしながら、トランザクション制御装置１は、これに限定されず、この仕組みを応用することができる。トランザクション制御装置１は、トランザクション対象の複数のＢＣ間におけるデータの整合がとれていない時間の短縮を図ることができる。例えば、トランザクション制御装置１は、トランザクション対象の複数のＢＣそれぞれについて、次のトランザクションを実行した場合にＢＣ間でデータの不整合がある期間を予測し、予測した不整合がある期間が短くなるほうのＢＣから先にトランザクションを実行する。なお、かかる場合を実現するために、一例として、トランザクション制御装置１は、トランザクションの複数のＢＣそれぞれについて、次のトランザクションの確定の時刻を予測し、予測した時刻が遅いほうのＢＣから先にトランザクションを実行しても良い。データの整合がとれていない時間の短縮を図る場合を、図１５を参照して説明する。
【０１０１】
図１５は、実施例に係るトランザクション制御装置の処理の応用例を示す図である。なお、ＢＣ−Ａで表わされる１つのＢＣは、ブロック生成間隔を６０秒として、６０秒ごとに、トランザクション（ＴＸ）を確定するものとする。また、ＢＣ−Ｂで表わされる１つのＢＣは、ブロック生成間隔を２０秒として、２０秒ごとに、ＴＸを確定するものとする。
【０１０２】
図１５に示すように、トランザクション制御装置１は、ＢＣごとに、次のＴＸを実行した場合にデータの整合がとれていない期間を予測する。例えば、ＢＣ−ＡがＴＸの登録を実行する場合には、ＴＸの登録要求を受信した時点（ｔ２１）後、次の確定時点（ｔ２２）でＴＸを確定する。続いて、ＢＣ−ＢがＴＸの登録要求を受信した時点（ｔ２３）後、次の確定時点（ｔ２４）でＴＸを確定する。したがって、トランザクション制御装置１は、ＢＣ−Ａについて、データの整合がとれていない期間を（ｔ２４−ｔ２３）の期間と予測する。
【０１０３】
また、ＢＣ−ＢがＴＸの登録を実行する場合には、ＴＸの登録要求を受信した時点（ｔ３１）後、次の確定時点（ｔ３２）でＴＸを確定する。続いて、ＢＣ−ＡがＴＸの登録要求を受信した時点（ｔ３３）後、次の確定時点（ｔ３４）でＴＸを確定する。したがって、トランザクション制御装置１は、ＢＣ−Ｂについて、データの整合がとれていない期間を（ｔ３４−ｔ３２）の期間と予測する。
【０１０４】
そして、トランザクション制御装置１は、予測した整合がとれていない期間が短くなるほうのＢＣからＴＸの登録を実行する。図１５では、予測した整合がとれていない期間は、ＢＣ−ＢよりＢＣ−Ａの方が短い。したがって、トランザクション制御装置１は、予測した期間が短いＢＣ−ＡからＴＸの登録を実行すれば良い。これにより、トランザクション制御装置１は、複数のＢＣ間におけるデータの整合がとれていない時間の短縮を図ることができる。
【０１０５】
［実施例の効果］
上記実施例によれば、トランザクション制御装置１は、トランザクション対象の複数のＢＣそれぞれについて、次のトランザクションの確定の時刻を予測する。トランザクション制御装置１は、予測された時刻に基づいて、複数のＢＣそれぞれの次のトランザクションの実行順序を決定する。トランザクション制御装置１は、決定された実行順序に基づいて、複数のＢＣそれぞれの次のトランザクションを実行する。かかる構成によれば、トランザクション制御装置１は、複数のＢＣそれぞれの次のトランザクションの予測確定時刻に基づいて、次のトランザクションを実行することで、ＢＣ間におけるトランザクション確定の時間を短縮することができる。この結果、トランザクション制御装置１は、複数のＢＣでのトランザクション実行時に、利用者へのトランザクションのフィードバックを早期に返すことができる。
【０１０６】
また、上記実施例によれば、トランザクション制御装置１は、予測された時刻の早い順に、複数のＢＣそれぞれの次のトランザクションの実行順序を決定する。かかる構成によれば、複数のＢＣそれぞれの次のトランザクションの予測確定時刻の早い順に次のトランザクションを実行することで、ＢＣ間におけるトランザクション確定の時間を短縮することができる。
【０１０７】
また、上記実施例によれば、トランザクション制御装置１は、予測した次のトランザクションの確定の時刻に基づいて、次のトランザクションを実行した場合に複数のＢＣ間でデータの不整合がある期間を予測する。トランザクション制御装置１は、予測された不整合がある期間に基づいて、複数のＢＣそれぞれの次のトランザクションの実行順序を決定する。かかる構成によれば、トランザクション制御装置１は、複数のＢＣ間におけるデータの整合がとれていない時間の短縮を図ることができる。
【０１０８】
また、上記実施例によれば、トランザクション制御装置１は、複数のＢＣごとに、まだブロックに含まれないトランザクションのサイズを示すトランザクションキューサイズがブロックサイズより小さいか否かを判定する。トランザクション制御装置１は、複数のＢＣごとに、トランザクションキューサイズがブロックサイズより小さいと判定された場合には、直近のブロックが生成された時刻に、ＢＣごとに定められたブロックの生成間隔を加算し、次のトランザクションの確定時刻を予測する。トランザクション制御装置１は、複数のＢＣごとに、トランザクションキューサイズがブロックサイズ以上であると判定された場合には、直近のブロックが生成された時刻に、トランザクションキューサイズに対応する、予測されるブロック生成所要時間を加算し、次のトランザクションの確定時刻を予測する。かかる構成によれば、トランザクション制御装置１は、複数のＢＣの次のトランザクションの確定時刻を予測することで、複数のＢＣそれぞれの次のトランザクションの実行順序が昇順になるように決定することができる。
【０１０９】
また、上記実施例によれば、トランザクション制御装置１は、さらに、複数のＢＣごとに、実際にトランザクションを実行した際に要した所要時間をトランザクションキューサイズに対応付けて保存する。トランザクション制御装置１は、保存された情報を用いて、複数のＢＣごとに、トランザクションキューサイズに対応する、予測されるブロック生成所要時間を計算し、計算した時間を統計情報として保存する。かかる構成によれば、トランザクション制御装置１は、統計情報を用いて、トランザクションキューサイズに対応する、予測されるブロック生成所要時間を計算することができる。
【０１１０】
［その他］
なお、トランザクション制御装置１は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記したライブラリ部２０などの機能を搭載することによって実現することができる。
【０１１１】
また、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、要求受信部２１とＢＣ順序決定部２３とを１個の部として統合しても良い。一方、ＢＣ順序決定部２３を、ＢＣごとの次回ブロック生成予測日時を推定する推定部と、推定した情報を用いてＴＸ実行のＢＣの順序を決定する決定部とに分散しても良い。また、記憶部２６をトランザクション制御装置１の外部装置としてネットワーク経由で接続するようにしても良い。
【０１１２】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１に示したトランザクション制御装置１と同様の機能を実現するトランザクション制御プログラムを実行するコンピュータの一例を説明する。図１６は、トランザクション制御プログラムを実行するコンピュータの一例を示す図である。
【０１１３】
図１６に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０３と、ユーザからのデータの入力を受け付ける入力装置２１５と、表示装置２０９を制御する表示制御部２０７とを有する。また、コンピュータ２００は、記憶媒体からプログラムなどを読取るドライブ装置２１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部２１７とを有する。また、コンピュータ２００は、各種情報を一時記憶するメモリ２０１と、ＨＤＤ（Hard  Disk  Drive）２０５を有する。そして、メモリ２０１、ＣＰＵ２０３、ＨＤＤ２０５、表示制御部２０７、ドライブ装置２１３、入力装置２１５、通信制御部２１７は、バス２１９で接続されている。
【０１１４】
ドライブ装置２１３は、例えばリムーバブルディスク２１１用の装置である。ＨＤＤ２０５は、トランザクション制御プログラム２０５ａおよびトランザクション関連情報２０５ｂを記憶する。
【０１１５】
ＣＰＵ２０３は、トランザクション制御プログラム２０５ａを読み出して、メモリ２０１に展開し、プロセスとして実行する。かかるプロセスは、トランザクション制御装置１の各機能部に対応する。トランザクション関連情報２０５ｂは、ＢＣ情報テーブル２６１、所要時間テーブル２６２および統計情報テーブル２６３に対応する。そして、例えばリムーバブルディスク２１１が、トランザクション制御プログラム２０５ａなどの各情報を記憶する。
【０１１６】
なお、トランザクション制御プログラム２０５ａについては、必ずしも最初からＨＤＤ２０５に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＤＶＤ（Digital  Versatile  Disk）、光磁気ディスク、ＩＣ（Integrated  Circuit）カード等の「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ２００がこれらからトランザクション制御プログラム２０５ａを読み出して実行するようにしても良い。
【０１１７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１８】
（付記１）複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測する予測部と、
前記予測部によって予測された時刻に基づいて、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定する決定部と、
前記決定部によって決定された実行順序に基づいて、前記複数のブロックチェーンそれぞれについて、前記次のトランザクションを実行する実行部と、
を有することを特徴とするトランザクション制御装置。
【０１１９】
（付記２）前記決定部は、前記予測部によって予測された時刻の早い順に、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定する
ことを特徴とする付記１に記載のトランザクション制御装置。
【０１２０】
（付記３）前記予測部は、前記予測した次のトランザクションの確定の時刻に基づいて、次のトランザクションを実行した場合に前記複数のブロックチェーン間でデータの不整合がある期間を予測し、
前記決定部は、前記予測部によって予測された不整合がある期間に基づいて、複数のブロックチェーンそれぞれの次のトランザクションの実行順序を決定する、
ことを特徴とする付記１に記載のトランザクション制御装置。
【０１２１】
（付記４）前記予測部は、
前記複数のブロックチェーンごとに、まだブロックに含まれないトランザクションのサイズを示すトランザクションキューサイズがブロックサイズより小さいか否かを判定する判定部と、
前記複数のブロックチェーンごとに、前記判定部によって前記トランザクションキューサイズが前記ブロックサイズより小さいと判定された場合には、直近のブロックが生成された時刻に、ブロックチェーンごとに定められたブロックの生成間隔を加算し、前記次のトランザクションの確定時刻を予測する第１の予測部と、
前記複数のブロックチェーンごとに、前記判定部によって前記トランザクションキューサイズが前記ブロックサイズ以上であると判定された場合には、直近のブロックが生成された時刻に、前記トランザクションキューサイズに対応する、予測されるブロック生成所要時間を加算し、前記次のトランザクションの確定時刻を予測する第２の予測部と、
を含むことを特徴とする付記１ないし３のいずれか１つに記載のトランザクション制御装置。
【０１２２】
（付記５）前記実行部は、さらに、前記複数のブロックチェーンごとに、実際にトランザクションを実行した際に要した所要時間を前記トランザクションキューサイズに対応付けて保存し、
前記実行部によって保存された情報を用いて、前記複数のブロックチェーンごとに、前記トランザクションキューサイズに対応する、予測されるブロック生成所要時間を計算し、計算した時間を統計情報として保存する保存部と、
をさらに有することを特徴とする付記４に記載のトランザクション制御装置。
【０１２３】
（付記６）複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測し、
前記予測した時刻に基づいて、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定し、
前記決定した実行順序に基づいて、前記複数のブロックチェーンそれぞれについて、前記次のトランザクションを実行する、
処理をコンピュータに実行させることを特徴とするトランザクション制御プログラム。
【０１２４】
（付記７）前記決定する処理は、前記予測した時刻の早い順に、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定する、
処理をコンピュータに実行させることを特徴とする付記６に記載のトランザクション制御プログラム。
【０１２５】
（付記８）前記予測した次のトランザクションの確定の時刻に基づいて、次のトランザクションを実行した場合に前記複数のブロックチェーン間でデータの不整合がある期間を予測し、
前記予測し不整合がある期間に基づいて、前記複数のブロックチェーンそれぞれの次のトランザクションの実行順序を決定する、
処理をコンピュータに実行させることを特徴とする付記６に記載のトランザクション制御プログラム。
【０１２６】
（付記９）複数のブロックチェーンそれぞれについて、次のトランザクションの確定の時刻を予測し、
予測された時刻に基づいて、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定し、
決定された実行順序に基づいて、前記複数のブロックチェーンそれぞれについて、前記次のトランザクションを実行する、
処理をコンピュータが実行することを特徴とするトランザクション制御方法。
【０１２７】
（付記１０）前記決定する処理は、予測された時刻の早い順に、前記複数のブロックチェーンそれぞれの前記次のトランザクションの実行順序を決定する、
処理をコンピュータが実行することを特徴とする付記９に記載のトランザクション制御方法。
【０１２８】
（付記１１）予測された次のトランザクションの確定の時刻に基づいて、次のトランザクションを実行した場合に前記複数のブロックチェーン間でデータの不整合がある期間を予測し、
前記決定する処理は、予測された不整合がある期間に基づいて、前記複数のブロックチェーンそれぞれの次のトランザクションの実行順序を決定する、
処理をコンピュータが実行することを特徴とする付記９に記載のトランザクション制御方法。
【符号の説明】
【０１２９】
１  トランザクション制御装置
１０  アプリケーション
１１  要求送信部
２０  ライブラリ部
２１  要求受信部
２２  ＢＣ情報取得部
２３  ＢＣ順序決定部
２４  ＴＸ実行部
２５  統計情報生成部
２６  記憶部
２６１  ＢＣ情報テーブル
２６２  所要時間テーブル
２６３  統計情報テーブル
３０  通信部
【図１】
2020021186.tif 000003
【図２】
2020021186.tif 000004
【図３】
2020021186.tif 000005
【図４】
2020021186.tif 000006
【図５】
2020021186.tif 000007
【図６】
2020021186.tif 000008
【図７】
2020021186.tif 000009
【図８】
2020021186.tif 000010
【図９】
2020021186.tif 000011
【図１０】
2020021186.tif 000012
【図１１】
2020021186.tif 000013
【図１２】
2020021186.tif 000014
【図１３】
2020021186.tif 000015
【図１４】
2020021186.tif 000016
【図１５】
2020021186.tif 000017
【図１６】
2020021186.tif 000018