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

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

▶ 富士通株式会社の特許一覧

特開2024-179711情報処理プログラム、情報処理装置および情報処理方法
<>
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図1
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図2
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図3
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図4
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図5
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図6
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図7
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図8
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図9
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図10
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図11
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図12
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図13
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図14
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図15
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図16
  • 特開-情報処理プログラム、情報処理装置および情報処理方法 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024179711
(43)【公開日】2024-12-26
(54)【発明の名称】情報処理プログラム、情報処理装置および情報処理方法
(51)【国際特許分類】
   G06F 9/48 20060101AFI20241219BHJP
【FI】
G06F9/48 300Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023098763
(22)【出願日】2023-06-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】石原 俊
(72)【発明者】
【氏名】森永 正信
(57)【要約】
【課題】BCでのトランザクションの実行時にオーバーヘッドを回避する。
【解決手段】情報処理装置1は、ブロックチェーンを跨ぐ取引を、取引に含まれる処理群と処理毎に異なる実行パラメータとに分ける。そして、情報処理装置1は、ブロックチェーンを対象とする複数の処理を同一時間帯で実行するようにグループを生成する際に、実行パラメータの内容が同一である処理がグループに含まれないように処理群をスケジューリングする。これにより、情報処理装置1は、例えば、BCを跨ぐ資産の取引等の処理のスケジューリングを行うサービスに適用することができる。
【選択図】図11
【特許請求の範囲】
【請求項1】
ブロックチェーンを対象とする処理群のうち同一時間帯に実行される複数の処理を含むグループを生成する際に、前記実行パラメータの内容が同一である処理が前記グループに含まれないように処理群をスケジューリングする
処理をコンピュータに実行させる情報処理プログラム。
【請求項2】
前記スケジューリングする処理は、
同一のブロックチェーンを対象とする複数の処理を同一時間帯で実行するためのスケジューリングを実施してスケジューリングの結果を前記グループに生成し、
前記実行パラメータの内容が同一である複数の処理が前記グループに含まれる場合には、当該複数の処理のうち1つの処理を除く処理を前記グループから分離し、
分離した処理を再スケジューリングする
ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記スケジューリングする処理は、さらに、処理を分離した前記グループに上限数を超える数の複数の処理が含まれていないかを検証し、前記グループに前記上限数を超える数の複数の処理が含まれている場合には、超過分の処理を前記グループから分離し、
分離した処理を再スケジューリングする
ことを特徴とする請求項1または請求項2に記載の情報処理プログラム。
【請求項4】
前記スケジューリングする処理によってスケジューリングされた結果に基づいて、各グループに含まれる処理群をそれぞれ対象のブロックチェーンに送信し、
前記対象のブロックチェーンから、処理に対応する実行結果を含むブロックを受信し、
超過分の処理を前記グループから分離する処理は、
前記グループに含まれる実行結果の数を用いて、前記対象のブロックチェーンに対応する前記グループの前記上限数を推定し、
処理を分離した前記グループに推定した前記上限数を超える数の複数の処理が含まれていないかを検証する
ことを特徴とする請求項3に記載の情報処理プログラム。
【請求項5】
前記上限数を推定する処理は、
前記ブロックに含まれる実行結果の数および前記実行結果を蓄積する際の時刻を用いて、直近一定時間内の前記ブロックに含まれる実行結果の数の平均値を算出し、
該算出した平均値を、前記対象のブロックチェーンに対応するグループの上限数として推定する
ことを特徴とする請求項4に記載の情報処理プログラム。
【請求項6】
ブロックチェーンを対象とする処理群のうち同一時間帯に実行される複数の処理を含むグループを生成する際に、前記実行パラメータの内容が同一である処理が前記グループに含まれないように処理群をスケジューリングするスケジューリング部
を有することを特徴とする情報処理装置。
【請求項7】
ブロックチェーンを対象とする処理群のうち同一時間帯に実行される複数の処理を含むグループを生成する際に、前記実行パラメータの内容が同一である処理が前記グループに含まれないように処理群をスケジューリングする
処理をコンピュータが実行する情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラムなどに関する。
【背景技術】
【0002】
ブロックチェーン間連携ミドルウェア(以降、BC間連携MW)が知られている。BC間連携MWとは、アプリケーションからの要求に応じて複数のブロックチェーン(以降、BC)を跨ぐ取引を実行する機能を持つソフトウェアのことをいう。
【0003】
図17は、BC間連携MWの典型例を示す参考図である。図17に示すように、ユーザアプリケーションから事前に定義された取引シナリオを指定した取引実行要求を受信したBC間連携MWでは、連携プロセスが、指定された取引シナリオを永続化ストレージから取得する(a1,a2)。そして、連携プロセスは、取得した取引シナリオに記述された連携先BCへトランザクションを送信し(a3)、トランザクションの実行結果を永続化ストレージのシナリオ実行証跡に書き込む(a4)。ここでいう取引シナリオとは、例えば、あるBCの暗号資産を別の暗号資産と交換するシナリオのことをいう。ユーザアプリケーションは、事前に定義された取引シナリオを指定して取引の実行要求を行うだけで、BC固有の処理を実行することなく複数のBCを跨ぐ取引を実行できる。
【0004】
ところが、図17で示したBC間連携MWでは、連携プロセスが単一であるため、取引処理性能や可用性を向上させることができない。取引シナリオは複数のBCへのトランザクション送信処理を含むため、取引シナリオを処理する連携プロセスは、例えば、現在どの取引シナリオのどのトランザクション送信を実行しているのかを示す取引シナリオの処理状況(ステート)を持つので、多重化できない。連携プロセスを多重化するには、取引シナリオの処理状況(ステート)を連携プロセスの外に出して、処理状況(ステート)のない構成にする必要がある。
【0005】
連携プロセスを処理状況(ステート)のない構成にする手法として、シーケンシャルなコンボイパターンの手法が利用できる(例えば、非特許文献1参照)。シーケンシャルなコンボイパターンとは、プロセスが順序性のあるメッセージ群を処理する際に、メッセージ群毎にメッセージキュー内の異なるカテゴリに格納し、メッセージキュー内のメッセージの処理を複数の後続のプロセスに分散させる技術である。しかしながら、取引実行要求をそのままメッセージ化するだけでは、大量のトランザクションを送信する多くのプロセスが必要となる。
【0006】
そこで、必要なプロセス数を削減する改善策として、ジョブショップスケジューリングの手法が利用できる(例えば、非特許文献2参照)。ジョブショップスケジューリングとは、順序性のあるメッセージ群の集まりを複数のマシンで実行する際の実行スケジュールを最適化するアルゴリズムである。シーケンシャルなコンボイパターンをジョブショップスケジューリングと組み合わせて、トランザクションの送信を同時に並列実行するようスケジューリングしてからメッセージキューに格納する手法が考えられる。しかしながら、従来のジョブショップスケジューリングでは、BCで行われるトランザクションの実行時にオーバーヘッドが発生し得る。ここでいうオーバーヘッドには、例えば、BCで同時に実行する際に発生し得る、同一アドレスに対するトランザクションの衝突や、BCで同時に実行可能なトランザクションの数の超過が挙げられる。
【0007】
そこで、BCで行われるトランザクションの実行時のオーバーヘッドを抑止可能なスケジューリング手法として、BC送信前のトランザクションを事前に解析し、トランザクション内の属性情報から実行順序を決定する手法が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】米国特許出願公開第2018/0158034号明細書
【非特許文献】
【0009】
【非特許文献1】Microsoft.2022. シーケンシャルなコンボイパターン,https://learn.microsoft.com/ja-jp/azure/architecture/patterns/sequential-convoy
【非特許文献2】Google.2023. The Job Shop Problem,https://developers.google.com/optimization/scheduling/job_shop
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、従来技術では、事前にトランザクションを解析できないBCの場合には、BCでのトランザクションの実行時にオーバーヘッドを回避することができないという問題がある。
【0011】
従来技術では、BC送信前のトランザクションを事前に解析し、トランザクションの実行順序を決定する手法では、トランザクションの実行順序を最適化できるが、事前にトランザクションを解析するため、適用対象が一部のBCに限定される。したがって、事前にトランザクションを解析できないBCの場合には、BCでのトランザクションの実行時にオーバーヘッドを回避することができない。
【0012】
本発明は、1つの側面では、BCでのトランザクションの実行時にオーバーヘッドを回避することを目的とする。
【課題を解決するための手段】
【0013】
1つの態様では、情報処理プログラムは、ブロックチェーンを対象とする処理群のうち同一時間帯に実行される複数の処理を含むグループを生成する際に、前記実行パラメータの内容が同一である処理が前記グループに含まれないように処理群をスケジューリングする、処理をコンピュータに実行させる。
【発明の効果】
【0014】
1実施態様によれば、BCでのトランザクションの実行時にオーバーヘッドを回避できる。
【図面の簡単な説明】
【0015】
図1図1は、プロセスが多重化されたBC間連携MWの構成の一例を示す図である。
図2図2は、取引シナリオとトピックとの対応を示す図である。
図3図3は、トピック群のスケジューリング結果の一例を示す図である。
図4図4は、実施例に係るBC間連携MWの構成の一例を示す図である。
図5図5は、実施例に係る取引シナリオの一例を示す図である。
図6図6は、実施例に係る取引実行要求の一例を示す図である。
図7図7は、実施例に係るトピックデータの一例を示す図である。
図8図8は、実施例に係るスケジューリング結果の一例を示す図である。
図9図9は、実施例に係るシナリオ実行証跡の一例を示す図である。
図10図10は、実施例に係るブロック内Tx数の一例を示す図である。
図11図11は、実施例に係るBC間連携MWの全体の流れを示す図である。
図12図12は、実施例に係るフロントプロセス処理のフローチャートの一例を示す図である。
図13図13は、実施例に係るスケジューリングプロセス処理のフローチャートの一例を示す図である。
図14図14は、実施例に係るスケジューリングプロセス処理の一例を示す図である。
図15図15は、実施例に係るワーカープロセス処理のフローチャートの一例を示す図である。
図16図16は、ハードウェア構成例を説明する図である。
図17図17は、BC間連携MWの典型例を示す参考図である。
【発明を実施するための形態】
【0016】
以下に、本願の開示する情報処理プログラム、情報処理装置および情報処理方法の実施例を図面に基づいて詳細に説明する。なお、本発明は、実施例により限定されるものではない。
【0017】
まず、典型的なBC間連携MWに、シーケンシャルなコンボイパターンとジョブショップスケジューリングとを適用する構成について説明する。ここでいうBC間連携MWとは、ユーザアプリケーションからの要求に応じて複数のブロックチェーン(以降、BC)を跨ぐ取引を実行する機能を持つソフトウェアのことをいう。また、ここでいうシーケンシャルなコンボイパターンとは、プロセスが順序性のあるメッセージ群を処理する際に、メッセージ群毎にメッセージキュー内の異なるカテゴリ(トピック)に格納し、メッセージキュー内のメッセージの処理を複数の後続のプロセスに分散させる技術である。BC間連携MWにシーケンシャルなコンボイパターンを適用することにより、メッセージキュー内にメッセージ群を格納するプロセス(フロントプロセス)と、メッセージキュー内のメッセージを処理するプロセス(ワーカープロセス)とが、それぞれ、メッセージの処理状況(ステート)を持たないので、多重化が可能となる。なお、カテゴリ(トピック)の数が多い場合に、メッセージを処理するワーカープロセスが大量に必要となる。
【0018】
そこで、シーケンシャルなコンボイパターンでワーカープロセスの数を削減するためには、ワーカープロセスの処理前にトピックを圧縮(並列実行できるようにトピック同士を結合)する必要がある。トピックの圧縮に適用可能なアルゴリズムの1つとして、ジョブショップスケジューリングが存在する。ここでいうジョブショップスケジューリングとは、順序性のあるメッセージ群の集まりを複数のマシンで実行する際の実行スケジュールを最適化するアルゴリズムである。各メッセージは特定のマシンでのみ実行可能であるという制約を持つ。なお、ジョブショップスケジューリングをBC間連携MWへ適用するには、メッセージを連携先BCへのトランザクションに読み替え、マシンを特定の連携先BC専用のワーカープロセスに読み替えることで、適用が可能となる。
【0019】
ここで、典型的なBC間連携MWにシーケンシャルなコンボイパターンとジョブショップスケジューリングとを適用し、プロセスを多重化した構成を、図1を参照して説明する。図1は、プロセスが多重化されたBC間連携MWの構成の一例を示す図である。BC間連携MW10は、フロントプロセス11と、メッセージキュー(一次キュー)12と、スケジューリングプロセス13と、メッセージキュー(二次キュー)14と、ワーカープロセス15と、永続化ストレージ16とを有する。フロントプロセス11、スケジューリングプロセス13およびワーカープロセス15は、それぞれ複数存在する。また、永続化ストレージ16は、取引シナリオ161と、シナリオ実行証跡162とを記憶する。そして、各ワーカープロセス15は、各担当の連携先BCと接続する。
【0020】
フロントプロセス11は、取引実行要求を受け付け、取引で実行すべき処理(ステップ)群を一纏めにしてトピックを作成し、一次キュー12に格納する。取引実行要求は、事前に定義された取引シナリオ161を特定する識別子と、取引シナリオ161中の実行パラメータに対応する値(内容)とを含む。
【0021】
ここで、取引シナリオ161とトピックとの対応例を、図2に示す。図2は、取引シナリオとトピックとの対応を示す図である。図2に示す取引シナリオ161は、BCを跨ぐ取引を定型化したシナリオである。言い換えれば、取引シナリオ161は、取引実行要求から指定された識別子に対応する取引シナリオであり、複数の処理(ステップ)を備える。ここでは、各ステップ内の「1)」、「2)」の数字が、ある取引シナリオ161に含まれるステップの番号に対応する。ステップ内のX、Yは、実行パラメータに対応する。
【0022】
フロントプロセス11は、取引実行要求を受ける度に、取引実行要求に含まれる識別子に対応する取引シナリオ161を取得し、トピックを作成し、一次キュー12に格納する。作成されたトピックは、取引シナリオ161に実行パラメータを付加したものである。一例として、取引シナリオ161が「1)連携先BC<1>の口座Xから139円を出金 2)連携先BC<2>の口座Yに1ドルを入金」である場合には、トピックは、以下となる。一次キュー12に記憶されたトピックとして、「1)連携先BC<1>の口座Xから139円を出金(X=3181) 2)連携先BC<2>の口座Yに1ドルを入金(Y=9261)」が格納される。「X」が実行パラメータに対応し、「3181」がその値である。「Y」が実行パラメータに対応し、「9261」がその値である。
【0023】
図1に戻って、そして、スケジューリングプロセス13が、一定時間毎に一次キュー12の全データを対象にジョブショップスケジューリングによる実行スケジューリングを実施し、スケジューリング結果を二次キュー14に格納する。また、スケジューリングプロセス13は、二次キュー14への格納完了後に、一次キュー12からスケジューリング対象となったトピックを削除する。
【0024】
ここで、図2で示したトピックを含むトピック群の場合のスケジューリング結果を、図3に示す。図3は、トピック群のスケジューリング結果の一例を示す図である。図3に示すように、スケジューリング結果には、ワーカープロセス15の連携先BC<1>用のグループに「1-1:口座Xから139円を出金(X=3181) 2-1:口座Xから1ドルを出金(X=8364)・・・」が格納される。また、スケジューリング結果には、ワーカープロセス15の連携先BC<2>用のグループに「1-2:口座Yに1ドルを入金(Y=9261) 2-2:口座Yに139円を入金(Y=1139)・・・」が格納される。グループ内の各ステップの「N-M」は、トピックNのステップMであることを示す。
【0025】
図1に戻って、そして、ワーカープロセス15が、二次キュー14からスケジューリング結果を取得し、ステップ群を並列実行する。図3の例では、連携先BC<1>担当のワーカープロセス15が、二次キュー14からスケジューリング結果を取得し、ステップ群を並列送信する。個々のステップは、それぞれトランザクションを示す。その後、連携先BC<2>担当のワーカープロセス15が、二次キュー14からスケジューリング結果を取得し、ステップ群を並列送信する。すなわち、ワーカープロセス15は、連携先BCと1対1で対応し、同一の連携先BCへのトランザクション送信を並列で実行する。このため、トピック数(取引実行要求数)が多い場合であっても、ワーカープロセス15は大量に必要とされない。そして、ワーカープロセス15は、実行完了後に、二次キュー14から実行済みのデータを削除する。
【0026】
図1で示すBC間連携MW10の構成は、ワーカープロセス15の数を削減する一方で、スケジューリング結果を実行する際に発生し得るBC特有のオーバーヘッドを回避できない。ここでいうオーバーヘッドとは、(a)BCで複数のトランザクションを同時に処理する際に発生し得る、同一アドレスに対するトランザクションの衝突や、(b)BCで、1つのブロックで処理可能なトランザクションの数の超過が挙げられる。
【0027】
(a)が発生した場合、衝突したトランザクションのうちいずれかのトランザクションが実行に失敗する。かかる場合、失敗したトランザクションの同一トピック内の後続ステップも併せて実行スケジュールを変更する必要が生じ、全体の実行時間が遅延する。また、(b)が発生した場合、超過分のトランザクションに対するコンセンサスやブロック配布の時間が発生する。このため、ワーカープロセス15は、超過分のトランザクションに対する待ち時間の間、後続のステップを実行できないため、全体の実行時間が遅延する。
【0028】
オーバーヘッドを回避するアプローチとして、BC送信前のトランザクションを事前に解析し、トランザクション内の属性情報から実行順序を決定する手法が存在する。ところが、かかる手法の適用範囲は、トランザクションを事前に解析可能な特定種類のBCのみを扱うシステムに限定される。BC間連携MW10は、トランザクション構造が異なる複数種類のBCを扱うため、オーバーヘッドを回避するアプローチとしてかかる手法を利用できない。
【0029】
そこで、以降の実施例では、特定のBCやトランザクション構造に依存しないでオーバーヘッドを回避する手法について説明する。
【実施例0030】
図4は、実施例に係るBC間連携MWの構成の一例を示す図である。なお、図1に示すBC間連携MW10と同一の構成については同一符号を示すことで、その説明を略記する。図1で示したBC間連携MW10と図4で示したBC間連携MW10とが異なるところは、フロントプロセス11をフロントプロセス11Aに変更した点にある。メッセージキュー(一次キュー)12をメッセージキュー(一次キュー)12Aに変更した点にある。また、スケジューリングプロセス13をスケジューリングプロセス13Aに変更した点にある。また、メッセージキュー(二次キュー)14をメッセージキュー(二次キュー)14Aに変更した点にある。また、ワーカープロセス15をワーカープロセス15Aに変更した点にある。また、永続化ストレージ16を永続化ストレージ16Aに変更した点にある。
【0031】
図4に示すように、BC間連携MW10は、例えば、情報処理装置1に搭載される。BC間連携MW10は、フロントプロセス11A、メッセージキュー(一次キュー)12A、スケジューリングプロセス13A、メッセージキュー(二次キュー)14A、ワーカープロセス15Aおよび永続化ストレージ16Aを有する。なお、フロントプロセス11Aは、管理部の一例である。スケジューリングプロセス13Aは、スケジューリング部の一例である。
【0032】
永続化ストレージ16Aは、取引シナリオ161、シナリオ実行証跡162およびブロック内Tx数163を記憶する。ここでいうTxとは、トランザクションのことをいう。以降、「トランザクション」のことを「Tx」という場合がある。
【0033】
取引シナリオ161は、BCを跨ぐ取引を定型化したシナリオであり、予め定義される。言い換えれば、取引シナリオ161は、取引実行要求から指定された識別子に対応する情報であり、複数のステップからなる。取引シナリオ161には、実行パラメータが設定される。ここで、取引シナリオ161の一例を、図5を参照して説明する。
【0034】
図5は、実施例に係る取引シナリオの一例を示す図である。図5に示すように、取引シナリオ161は、シナリオID、ステップ番号、処理内容および処理対象を対応付けて記憶する。シナリオIDは、取引シナリオ161を一意に識別する識別子であり、取引実行要求から指定される識別子に対応する。ステップ番号は、取引シナリオ161のステップごとにシーケンシャルに振られた番号である。処理内容は、処理の内容であり、共通処理に対応する。処理内容には、実行パラメータが設定される。処理対象には、処理を実行する対象のBCが設定される。
【0035】
一例として、シナリオIDが「SC001」である場合に、ステップ番号が2つ記憶されている。ステップ番号が「1」である場合に、処理内容として「口座Xから139円を出金」、処理対象として「BC<1>」が記憶されている。ステップ番号が「2」である場合に、処理内容として「口座Yに1ドルを入金」、処理対象として「BC<2>」が記憶されている。処理内容のX、Yは、実行パラメータである。
【0036】
図4に戻って、シナリオ実行証跡162は、取引実行要求に対するシナリオの実行結果を保持する。シナリオ実行証跡162は、対象の取引シナリオの各ステップの実行結果を格納する構造を持つ。なお、シナリオ実行証跡162の一例は、後述する。
【0037】
ブロック内Tx数163は、連携先BC毎に、各連携先BCから受信するブロックに含まれるTx(トランザクション)の数を時系列に保持する。ブロック内Tx数163は、連携先BC毎に、同一時間帯にスケジューリングされるステップ群の上限値を検証する際に使用される。なお、ここでいうステップは、Tx(トランザクション)と同義である。また、ブロック内Tx数163の一例は、後述する。
【0038】
フロントプロセス11Aは、取引実行要求を受け付け、取引で実行すべき処理(ステップ)群を一纏めにしてトピックを生成し、一次キュー12のトピックデータ121に格納する。取引実行要求は、事前に定義された取引シナリオ161を特定するシナリオIDと、取引シナリオ161中の実行パラメータに対応する値(内容)とを含む。例えば、フロントプロセス11Aは、取引実行要求を受け付けると、取引実行要求に含まれるシナリオIDに対応する取引シナリオ161を取得する。そして、フロントプロセス11Aは、取引シナリオ161の各ステップと、取引実行要求に含まれる実行パラメータとを組み合わせたトピックを生成する。そして、フロントプロセス11Aは、生成したトピックをメッセージキュー(一次キュー)12Aのトピックデータ121に格納する。ここで、取引実行要求、メッセージキュー(一次キュー)12Aに記憶されるトピックデータ121の一例を、それぞれ図6図7を参照して説明する。
【0039】
図6は、実施例に係る取引実行要求の一例を示す図である。図6に示すように、取引実行要求は、取引実行ID、シナリオIDおよび実行パラメータを対応付けた情報である。取引実行IDは、取引実行要求を一意に識別するIDである。シナリオIDは、取引シナリオ161を一意に識別する識別子である。実行パラメータは、取引の対象となるユーザを特定する識別子である。実行パラメータには、取引シナリオ161の処理内容に含まれる実行パラメータに対応する値(内容)が含まれる。実行パラメータには、一例として、BCの種別によりウォレットアドレスや通番等のBC内で一意に識別できる値が含まれる。ウォレットアドレスは、例えば、銀行口座番号に相当する。
【0040】
一例として、取引実行IDが「20230322-001」である場合に、シナリオIDとして「SC001」、実行パラメータとして「X=3181,Y=9814」が表されている。
【0041】
図7は、実施例に係るトピックデータの一例を示す図である。図7に示すように、トピックデータ121は、トピックID、ステップ番号、処理内容、処理対象および実行パラメータを対応付けて記憶する。トピックIDは、トピックを一意に識別するIDである。ステップ番号、処理内容および処理対象は、トピックIDが示すトピックを生成する際に用いられるシナリオに対応付けられたステップ番号、処理内容および処理対象に対応する。ステップ番号、処理内容および処理対象は、取引シナリオ161での説明と同様であるので、その説明を省略する。実行パラメータは、取引の対象となるユーザを特定する識別子であり、取引実行要求の実行パラメータに対応する。
【0042】
一例として、図5の取引シナリオ161および図6の取引実行要求に対応するトピックデータ121が以下のように生成される。トピックIDが「20230322-001」である場合に、ステップ番号が2つ記憶されている。ステップ番号が「1」である場合に、処理内容として「口座Xから139円を出金」、処理対象として「BC<1>」、実行パラメータとして「X=3181」が記憶されている。ステップ番号が「2」である場合に、処理内容として「口座Yに1ドルを入金」、処理対象として「BC<2>」、実行パラメータとして「Y=9814」が記憶されている。処理内容のX、Yは、実行パラメータの変数である。
【0043】
図4に戻って、スケジューリングプロセス13Aは、スケジューリング部131、パラメータ検証部132、上限数検証部133および再スケジューリング部134を有する。
【0044】
スケジューリング部131は、一定時間毎に、一次キュー12Aのトピックデータ121に蓄積される全トピックを対象にジョブショップスケジューリングによる実行スケジューリングを実施する。例えば、スケジューリング部131は、一次キュー12Aのトピックデータ121から各ステップを取得し、各ステップの共通処理の対象BCを基準にジョブショップスケジューリングによりTx送信をするためのスケジューリングを実施する。ここでいう共通処理とは、処理対象(連携先BC)に対して共通に行われる処理内容のことをいう。そして、スケジューリング部131は、仮のスケジューリング結果を一時的な記憶領域に保持する。これにより、スケジューリング部131は、ジョブショップスケジューリングを用いることで、一定時間帯における同一連携先BCへのTx(トランザクション)を同時に並列して送信することが可能になる。
【0045】
パラメータ検証部132は、仮のスケジューリング結果に対して、同一連携先BCの同一実行パラメータ値を対象として、複数のステップが同一時間帯にスケジューリングされていないかの検証を実施する。そして、パラメータ検証部132は、同一連携先BCの同一実行パラメータの値を対象として、複数のステップが同一時間帯にスケジューリングされている場合には、当該複数のステップのうち該当する1つのステップを残してそれ以外のステップを仮のスケジューリング結果から分離する。このとき、パラメータ検証部132は、分離したステップと同じトピックの後続ステップも含めて仮のスケジューリング結果から分離する。同一実行パラメータ値の検証は、例えば、仮のスケジューリング結果に含まれる各ステップの実行パラメータの値、または、トピックデータ121に含まれる各ステップの実行パラメータの値を利用すれば良い。
【0046】
上限数検証部133は、仮のスケジューリング結果に対して、同一連携先BCの同一時間帯にスケジューリングされたステップの総数を集計する。そして上限数検証部133は、ブロック内Tx数163を参照し、集計した総数が対象のBCに対応する上限数を超えるか否かの検証を実施する。上限数検証部133は、集計した総数が対象のBCに対応する上限数を超える場合には、超過分のステップを同じトピックの後続ステップも含めて仮のスケジューリング結果から分離する。対象のBCに対応する上限数は、ブロック内Tx数163に記憶された対象のBCに対応する時系列のTx数の一定時間平均値を利用すれば良い。
【0047】
再スケジューリング部134は、分離したステップ群を対象に、再びジョブショップスケジューリングによる実行スケジューリングを実施する。そして、再スケジューリング部134は、全ての仮のスケジューリング結果をマージする。再スケジューリング部134は、マージした結果を示すスケジューリング結果141をメッセージキュー(二次キュー)14Aに格納する。そして、再スケジューリング部134は、二次キュー14Aへの格納完了後に、一次キュー12Aからスケジューリング対象となったトピックを削除する。
【0048】
ワーカープロセス15Aは、二次キュー14Aからスケジューリング結果141を取得し、自身が対象とする連携先BCのステップ群を並列実行する。すなわち、ワーカープロセス15Aは、連携先BCと1対1で対応し、担当する連携先BCへのトランザクション送信(Tx送信)を並列で実行する。このため、トピック数(取引実行要求数)が多い場合であっても、ワーカープロセス15Aは連携先BCの数だけあれば良く、大量に必要とされない。そして、ワーカープロセス15Aは、実行完了後に、二次キュー14Aから実行済みのデータを削除する。
【0049】
また、ワーカープロセス15Aは、各連携先BCにおけるTx(トランザクション)の実行結果をブロックで受信する。そして、ワーカープロセス15Aは、ブロックからTxの実行結果を抽出する。そして、ワーカープロセス15Aは、抽出したTxの実行結果に加えてブロック内のTx数を永続化ストレージ16Aに格納する。例えば、ワーカープロセス15Aは、抽出したTxの実行結果をシナリオ実行証跡162に格納する。そして、ワーカープロセス15Aは、ブロック内のTx数および現在の日時を対象のBCに対応付けてブロック内Tx数163に格納する。
【0050】
ここで、スケジューリング結果141の一例を、図8を参照して説明する。図8は、実施例に係るスケジューリング結果の一例を示す図である。図8に示すように、スケジューリング結果141は、処理対象、通番、処理内容および取引実行IDを対応付けて記憶する。処理対象は、トピックデータ121に含まれる各ステップの処理対象に対応する。処理対象には、処理を実行する対象のBCが設定される。通番は、例えば、並列送信する順番を表すシーケンシャルな番号である。処理内容は、並列送信する処理内容であり、処理内容に実行パラメータおよびその値を付加した情報である。取引実行IDは、取引実行を識別するIDである。取引実行IDは、1つのトピックに対する取引実行のIDである。
【0051】
一例として、処理対象がBC<1>であって通番が「1」である場合に、処理内容として3つのステップ群が記憶されている。1ステップには、処理内容として「口座Xから139円を出金(X=3181)」、取引実行IDとして「20230322-001」が記憶されている。2ステップには、処理内容として「口座Xから139円を出金(X=7194)」、処理実行IDとして「20230322-002」が記憶されている。3ステップには、処理内容として「口座Xから139円を出金(X=8364)」、処理実行IDとして「20230322-003」が記憶されている。
【0052】
次に、シナリオ実行証跡162の一例を、図9を参照して説明する。図9は、実施例に係るシナリオ実行証跡の一例を示す図である。図9に示すように、シナリオ実行証跡162は、取引実行ID、ステップ番号、処理内容および処理結果を対応付けて記憶する。取引実行IDは、取引実行を識別するIDである。取引実行IDは、1つのシナリオ(トピック)に対する取引実行IDであり、スケジューリング結果141の取引実行IDに対応する。ステップ番号は、取引シナリオ161およびトピックデータ121のステップごとにシーケンシャルに振られた番号に対応する。処理内容は、処理内容に実行パラメータおよびその値を付加した情報である。処理内容は、スケジューリング結果141に含まれる1ステップの処理内容に対応する。処理結果は、BCから送信された実行結果である。処理結果には、一例として、実行が成功したことを示す「OK」、実行が失敗したことを示す「NG」が含まれる。
【0053】
一例として、取引実行IDが「20230322-001」である場合に、ステップが2つ記憶されている。ステップ番号が「1」である場合に、処理内容として「口座Xから139円を出金(X=3181)」、処理結果として「・・・;“OK”」が記憶されている。ステップ番号が「2」である場合に、処理内容として「口座Yに1ドルを入金(Y=9261)」、処理結果として「・・・;“OK”」が記憶されている。
【0054】
次に、ブロック内Tx数163の一例を、図10を参照して説明する。図10は、実施例に係るブロック内Tx数の一例を示す図である。ブロック内Tx数は、連携先BC、記録日時およびTx数を対応付けて記憶する。連携先BCは、連携先のBCである。記録日時は、Tx数を記録した日時である。Tx数は、連携先BCから送信されたブロックに含まれるTxの数である。
【0055】
一例として、連携先BCがBC<1>である場合に、記録日時として「2023-03-23T03:13:00」、Tx数として「35」が記憶されている。
【0056】
[BC間連携MWの全体の流れ]
ここで、実施例に係るBC間連携MWの全体の流れを、図11を参照して説明する。図11は、実施例に係るBC間連携MWの全体の流れを示す図である。
【0057】
図11に示すように、フロントプロセス11Aは、取引実行要求から、取引で実行すべき処理(ステップ)群を一纏めにしてトピックを生成し、一次キュー12Aのトピックデータ121に格納する(b1,b2)。例えば、フロントプロセス11Aは、取引実行要求に含まれるシナリオIDに対応する取引シナリオ161の共通処理(各ステップ)と、取引実行要求に含まれる実行パラメータ(およびその値)とを組み合わせたトピックを生成し、一次キュー12Aのトピックデータ121に格納する。
【0058】
次に、スケジューリングプロセス13Aは、一次キュー12Aのトピックデータ121から各トピックに含まれる各ステップを取得し、各ステップの共通処理を用いてジョブショップスケジューリングによりスケジューリングを実施する(b3)。そして、スケジューリングプロセス13Aは、仮のスケジューリング結果を一次的な記憶領域に保持する。
【0059】
そして、スケジューリングプロセス13Aは、同一アドレスをチェックする検証処理<1>を実施する(b4)。すなわち、スケジューリングプロセス13Aは、仮のスケジューリング結果に対して、同一連携先BCの同一実行パラメータ値を対象として、複数のステップが同一時間帯にスケジューリングされていないかの検証を実施する。例えば、スケジューリングプロセス13Aは、一次キュー12Aのトピックデータ121から取得される各ステップの実行パラメータおよびその値を用いて、同一連携先BCおよび同一時間帯の同一アドレスをチェックする。
【0060】
そして、スケジューリングプロセス13Aは、同一連携先BCの同一実行パラメータ値を対象として、複数のステップが同一時間帯にスケジューリングされている場合には、複数のステップのうち該当する1つのステップを残してそれ以外のステップを仮のスケジューリング結果から分離する。このとき、スケジューリングプロセス13Aは、分離したステップと同じトピックの後続ステップも含めて仮のスケジューリング結果から分離する。
【0061】
次に、スケジューリングプロセス13Aは、ブロック内Tx数163を用いて、Tx上限数をチェックする検証処理<2>を実施する(b5)。例えば、スケジューリングプロセス13Aは、仮のスケジューリング結果に対して、同一連携先BCの同一時間帯にスケジューリングされたステップ群の総数を集計する。そして、スケジューリングプロセス13Aは、ブロック内Tx数163を参照し、集計した総数が対象のBCに対応する上限数を超えるか否かの検証を実施する。対象のBCに対応する上限数は、例えば、ブロック内Tx数163に記憶された対象のBCに対応する時系列のTx数の一定時間平均値を使用する。
【0062】
そして、スケジューリングプロセス13Aは、集計した総数が対象のBCに対応する上限数を超える場合には、超過分のステップを同じトピックの後続ステップも含めて仮のスケジューリング結果から分離する。
【0063】
次に、スケジューリングプロセス13Aは、分離したステップ群を対象に、ジョブショップスケジューリングによる再スケジューリングを実施する(b6)。そして、スケジューリングプロセス13Aは、再スケジューリングした結果について、検証処理<1>、検証処理<2>を実施する。そして、スケジューリングプロセス13Aは、分離したステップ群があれば、再スケジューリングを実施し、分離したステップ群がなければ、全ての仮のスケジューリング結果をマージし、マージした結果を示すスケジューリング結果141をメッセージキュー(二次キュー)14Aに格納する(b7)。
【0064】
次に、ワーカープロセス15Aは、二次キュー14Aからスケジューリング結果141を取得する(b8)。そして、ワーカープロセス15Aは、スケジューリング結果141に基づいて、同一の連携先BCへのTx送信を並列で実行する(b9)。そして、ワーカープロセス15Aは、各連携先BCにおけるTxの実行結果をブロックで受信する(b10)。そして、ワーカープロセス15Aは、受信したブロックからTxの実行結果を抽出するとともに、ブロック内のTx数を計数する(b11)。そして、ワーカープロセス15Aは、Txの実行結果を永続化ストレージ16Aのシナリオ実行証跡162に格納するとともに、ブロック内のTx数および現在の日時を対象のBCに対応付けて永続化ストレージ16Aのブロック内Tx数163に格納する(b12)。
【0065】
なお、スケジューリングプロセス13Aは、同一アドレスをチェックする検証処理<1>と、Tx上限数をチェックする検証処理<2>を、この順番で実施すると説明した。しかしながら、スケジューリングプロセス13Aは、逆の順番で実施しても良いし、検証処理<1および検証処理<2>のどちらか一方を実施しても良い。これにより、スケジューリングプロセス13Aは、BCでのトランザクションの実行時にオーバーヘッドを低減することができる。
【0066】
[フロントプロセス処理のフローチャート]
次に、フロントプロセス11Aが実行するフロントプロセス処理のフローチャートについて説明する。図12は、実施例に係るフロントプロセス処理のフローチャートの一例を示す図である。
【0067】
図12に示すように、フロントプロセス11Aは、ユーザアプリケーションから取引実行要求を受信する(ステップS11)。かかる取引実行要求には、取引シナリオ識別子と実行パラメータ群が含まれる。実行パラメータ群の各実行パラメータには、実行パラメータおよびその値が含まれる。そして、フロントプロセス11Aは、受信した取引実行要求に含まれる取引シナリオ識別子に対応する取引シナリオ161を取得する(ステップS12)。
【0068】
そして、フロントプロセス11Aは、取引シナリオ161の各ステップと実行パラメータとを組み合わせたデータセット群(トピック)を生成する(ステップS13)。
【0069】
そして、フロントプロセス11Aは、生成したデータセット群(トピック)を一次キュー12Aのトピックデータ121に新規トピックとして格納する(ステップS14)。そして、フロントプロセス11Aは、フロントプロセス処理を終了する。
【0070】
[スケジューリングプロセス処理のフローチャート]
次に、スケジューリングプロセス13Aが実行するスケジューリングプロセス処理のフローチャートについて説明する。図13は、実施例に係るスケジューリングプロセス処理のフローチャートの一例を示す図である。なお、かかる説明では、適宜、図14に示すスケジューリングプロセス処理の一例を参照しながら説明する。図14は、実施例に係るスケジューリングプロセス処理の一例を示す図である。
【0071】
図13に示すように、スケジューリングプロセス13Aは、一次キュー12Aのトピックデータ121に記憶されたトピックからジョブショップスケジューリングによるスケジューリングを実施する(ステップS21)。
【0072】
ここでは、図14の符号e1に示すように、トピックデータ121には、3回の取引実行要求により生成された3つのトピック群が記憶されている。各トピックは、BC<1>に対するTx送信と、BC<2>に対するTx送信との2つのステップから構成される。例えば、トピック「1」には、「1-1;X=A@BC<1>」および「1-2;Y=J@BC<2>」が記憶されている。ここでいう「1-1」は、トピック「1」のステップ「1」であることを示す。「1-2」は、トピック「1」のステップ「2」であることを示す。「X=A」、「Y=J」は、実行パラメータであり、「A」、「J」は、実行パラメータ値である。「BC<1>」、「BC<2>」は、対象のBCである。トピック「2」、トピック「3」も、トピック「1」と同様の形式で記憶される。この3つのトピック群をジョブショップスケジューリングに従いスケジューリングした結果が、符号e2で示される仮のスケジューリング結果である。
【0073】
続いて、スケジューリングプロセス13Aは、仮のスケジューリング結果を参照し、同一BC、同一時間内にスケジューリングされたステップ群の中でパラメータ値が同一のものがあるか否かを判定する(ステップS22)。すなわち、スケジューリングプロセス13Aは、同一アドレスをチェックする検証処理を実行する。同一BC、同一時間内にスケジューリングされたステップ群の中でパラメータ値が同一のものがないと判定した場合には(ステップS22;No)、スケジューリングプロセス13Aは、ステップS24に移行する。一方、同一BC、同一時間内にスケジューリングされたステップ群の中でパラメータ値が同一のものがあると判定した場合には(ステップS22;Yes)、スケジューリングプロセス13Aは、1つのステップを残し、残りのステップを後続のステップも含めて分離する(ステップS23)。そして、スケジューリングプロセス13Aは、ステップS24に移行する。
【0074】
ここでは、図14に示すように、符号e2で示される仮のスケジューリング結果では、時間「0」~「1」にスケジューリングされたステップ群のうち「1-1」および「3-1」の2つのステップは、実行パラメータ値が同一(X=A)であるため、分離対象と判定される。スケジューリングプロセス13Aは、このステップ群のうち例えば「3-1」のステップを、トピック3の後続の「3-2」のステップも含めて分離対象とする。そして、スケジューリングプロセス13Aは、「3-1」のステップおよび「3-2」のステップを元の形式、すなわちトピックデータ121に記憶された形式に戻した結果を保持する。元の形式に戻した結果が、符号e3に示す内容である。なお、分離後の仮のスケジューリング結果は、符号e2´で示す内容となる。
【0075】
そして、ステップS24において、スケジューリングプロセス13Aは、同一BC、同一時間内にスケジューリングされたステップ群の総数を集計する(ステップS24)。そして、スケジューリングプロセス13Aは、ブロック内Tx数163を参照し、集計した総数が対象BCの上限値を超えるか否かを判定する(ステップS25)。すなわち、スケジューリングプロセス13Aは、Tx上限数をチェックする検証処理を実行する。集計した総数が対象BCの上限値を超えないと判定した場合には(ステップS25;No)、スケジューリングプロセス13Aは、ステップS27に移行する。
【0076】
一方、集計した総数が対象BCの上限値を超えると判定した場合には(ステップS25;Yes)、スケジューリングプロセス13Aは、以下の処理を行う。スケジューリングプロセス13Aは、総数を集計したステップ群から「総数-上限数」個のステップを無作為に選択し、選択したステップを後続のステップも含めて分離する(ステップS26)。そして、スケジューリングプロセス13Aは、ステップS27に移行する。
【0077】
ここでは、BC<1>、BC<2>のTx上限値は、それぞれ「2」であるとする。すると、図14に示すように、符号e2´で示す仮のスケジューリング結果では、同一BC、同一時間内にスケジューリングされたステップ群の総数はTx上限値を超えないので、スケジューリングプロセス13Aは、分離処理を行わない。
【0078】
続いて、スケジューリングプロセス13Aは、分離したステップがあるか否かを判定する(ステップS27)。分離したステップがあると判定した場合には(ステップS27;Yes)、スケジューリングプロセス13Aは、分離したステップを再スケジューリングする(ステップS28)。ここでは、図14に示すように、符号e3に示す分離ステップを再スケジューリングした結果が、符号e4で示す結果となる。
【0079】
そして、スケジューリングプロセス13Aは、分離ステップを再スケジューリングした結果について、同一アドレスをチェックする検証処理およびTx上限数をチェックする検証処理を実行すべく、ステップS22に移行する。ここでは、図14に示すように、分離ステップを再スケジューリングした結果(符号e4)は、同一アドレスをチェックする検証処理およびTx上限数をチェックする検証処理により分離対象と判断されるステップ群を含まない。
【0080】
そして、ステップS27において、分離したステップがないと判定した場合には(ステップS27;No)、スケジューリングプロセス13Aは、以下の処理を行う。スケジューリングプロセス13Aは、全てのスケジューリング結果をマージし、二次キュー14Aのスケジューリング結果141に格納する(ステップS29)。
【0081】
ここでは、図14に示すように、仮のスケジューリング結果(符号e2´)と再スケジューリングした結果(符号e4)とがマージされる。そしてマージされた結果が、二次キュー14Aのスケジューリング結果141に格納される。
【0082】
[ワーカープロセス処理のフローチャート]
次に、ワーカープロセス15Aが実行するワーカープロセス処理のフローチャートについて説明する。図15は、実施例に係るワーカープロセス処理のフローチャートの一例を示す図である。
【0083】
図15に示すように、ワーカープロセス15Aは、二次キュー14Aのスケジューリング結果141から自身が対象とするBCの先頭の時間帯のステップ群を取得できるか否かを判定する(ステップS31)。自身が対象とする連携先BCの先頭の時間帯のステップ群を取得できると判定した場合には(ステップS31;Yes)、ワーカープロセス15Aは、当該ステップ群を取得する(ステップS32)。そして、ワーカープロセス15Aは、二次キュー14Aのスケジューリング結果141から、取得されたステップ群を削除する。
【0084】
そして、ワーカープロセス15Aは、取得されたステップの数が「0」であるか否かを判定する(ステップS33)。取得されたステップの数が「0」であると判定した場合には(ステップS33;Yes)、ワーカープロセス15Aは、別のワーカープロセス15Aが同時間帯で処理するステップの完了を待機する(ステップS34)。そして、ワーカープロセス15Aは、別のワーカープロセス15Aの処理が完了すると、次の時間帯の処理を行うべく、ステップS31に移行する。
【0085】
一方、取得されたステップの数が「0」でないと判定した場合には(ステップS33;No)、ワーカープロセス15Aは、取得されたステップ群からTx群を生成して対象のBCに送信する(ステップS35)。
【0086】
そして、ワーカープロセス15Aは、送信したTx群に対応するブロック群の受信を待機する(ステップS36)。そして、ワーカープロセス15Aは、受信したブロック群から各ブロックに含まれるTx実行結果と各ブロック内のTx数を抽出して、永続化ストレージ16Aに記録する(ステップS37)。例えば、ワーカープロセス15Aは、抽出したブロックに含まれるTx実行結果をシナリオ実行証跡162に格納する。また、ワーカープロセス15Aは、各ブロック内のTx数および現在の日時を、対象のBCに対応付けてブロック内Tx数163に格納する。そして、ワーカープロセス15Aは、次の時間帯の処理を行うべく、ステップS31に移行する。
【0087】
ステップS31において、自身が対象とするBCの先頭の時間帯のステップ群を取得できないと判定した場合には(ステップS31;No)、ワーカープロセス15Aは、ワーカープロセス処理を終了する。
【0088】
[実施例の効果]
上記実施例によれば、情報処理装置1は、ブロックチェーンを対象とする処理群のうち同一時間帯に実行される複数の処理を含むグループを生成する際に、実行パラメータの内容が同一である処理がグループに含まれないように処理群をスケジューリングする。かかる構成によれば、情報処理装置1は、特定種類のブロックチェーンに依存しないで、同じ実行パラメータが同一グループに存在することにより、同一グループ内の処理が再実行となることを回避できる。つまり、情報処理装置1は、トランザクションをブロックチェーンへ送信する前に解析可能な特定種類のブロックチェーンに依存しないで、ブロックチェーンでのトランザクションの実行時にオーバーヘッドを回避できる。
【0089】
また、上記実施例によれば、情報処理装置1は、スケジューリングする処理について、同一のブロックチェーンを対象とする複数の処理を同一時間帯で実行するためのスケジューリングを実施してスケジューリングの結果をグループに生成する。そして、情報処理装置1は、実行パラメータの内容が同一である複数の処理がグループに含まれる場合には、当該複数の処理のうち1つの処理を除く処理をグループから分離する。そして、情報処理装置1は、分離した処理を再スケジューリングする。かかる構成によれば、情報処理装置1は、同じ実行パラメータが同一グループに存在することによる衝突を回避できる。
【0090】
また、上記実施例によれば、情報処理装置1は、スケジューリングする処理について、さらに、処理を分離したグループに上限数を超える数の複数の処理が含まれていないかを検証し、グループに上限数を超える数の複数の処理が含まれている場合には、超過分の処理をグループから分離する。そして、情報処理装置1は、分離した処理を再スケジューリングする。かかる構成によれば、情報処理装置1は、上限数を超える数の処理が同一グループに存在することにより発生する待ち時間を回避できる。つまり、情報処理装置1は、ブロックチェーンでのトランザクションの実行時にオーバーヘッドを回避できる。
【0091】
また、上記実施例によれば、情報処理装置1は、スケジューリングする処理によってスケジューリングされた結果に基づいて、各グループに含まれる処理群をそれぞれ対象のブロックチェーンに送信する。そして、情報処理装置1は、対象のブロックチェーンから、処理に対応する実行結果を含むブロックを受信する。そして、情報処理装置1は、ブロックに含まれる実行結果の数を用いて、対象のブロックチェーンに対応するグループの上限数を推定する。かかる構成によれば、情報処理装置1は、ブロックチェーンの種類に応じて変動するブロックチェーンごとのブロックの上限数を推定できる。
【0092】
また、上記実施例によれば、情報処理装置1は、上限数を推定する処理について、ブロックに含まれる実行結果の数および実行結果を蓄積する際の時刻を用いて、直近一定時間内のブロックに含まれる実行結果の数の平均値を算出する。そして、情報処理装置1は、算出した平均値を、対象のブロックチェーンに対応するグループの上限数として推定する。かかる構成によれば、情報処理装置1は、ブロックチェーンの種類およびシステム状況に応じて変動するブロックチェーンごとのブロックの上限数をリアルタイムに推定できる。
【0093】
[その他]
なお、上記実施例では、BC間連携MW10は、例えば、情報処理装置1に搭載されると説明した。しかしながら、BC間連携MW10は、全機能を1台の情報処理装置1に搭載されなくても良く、各機能を複数の情報処理装置1に分散して搭載しても良い。例えば、フロントプロセス11A、一次キュー14A、スケジューリングプロセス13A、二次キュー14Aおよびワーカープロセス15Aおよび永続化ストレージ16Aは、それぞれ異なる情報処理装置1に搭載しても良い。各機能を分散して搭載することで、可用性をより向上させることができる。
【0094】
また、上記実施例では、図示した情報処理装置1の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、情報処理装置1の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成しても良い。また、永続化ストレージ16Aを情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
【0095】
また、図4で示す情報処理装置1にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0096】
図16は、ハードウェア構成例を説明する図である。図16に示すように、情報処理装置1は、通信装置100、HDD(Hard Disk Drive)110、メモリ120、プロセッサ130を有する。また、図16に示した各部は、バス等で相互に接続される。
【0097】
通信装置100は、ネットワークインタフェースカード等であり、他の装置との通信を行う。HDD110は、図4に示した機能を動作させるプログラムやDBを記憶する。
【0098】
プロセッサ130は、キャッシュメモリを搭載し、図4に示した各処理部と同様の処理を実行するプログラムをHDD110等から読み出してメモリ120に展開することで、図4等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、情報処理装置1が有する各処理部と同様の機能を実行する。具体的には、プロセッサ130は、BC間連携MW10などと同様の機能を有するプログラムをHDD110等から読み出す。そして、プロセッサ130は、BC間連携MW10などと同様の処理を実行するプロセスを実行する。
【0099】
このように、情報処理装置1は、プログラムを読み出して実行することで管理処理を実行する装置として動作する。また、情報処理装置1は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置1によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【0100】
このプログラムは、インターネット等のネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【0101】
また、上記実施例で説明したBC間連携MW10は、例えば、BCを跨ぐ資産の取引や展開における処理のスケジューリングを行うサービスに適用することができる。
【符号の説明】
【0102】
1 情報処理装置
10 BC間連携MW
11,11A フロントプロセス
12,12A メッセージキュー(一次キュー)
121 トピックデータ
13,13A スケジューリングプロセス
131 スケジューリング部
132 パラメータ検証部
133 上限数検証部
134 再スケジューリング部
14,14A メッセージキュー(二次キュー)
141 スケジューリング結果
15,15A ワーカープロセス
16,16A 永続化ストレージ
161 取引シナリオ
162 シナリオ実行証跡
163 ブロック内Tx数
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17