(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-20
(45)【発行日】2022-09-29
(54)【発明の名称】システム及びプログラム
(51)【国際特許分類】
G06Q 20/10 20120101AFI20220921BHJP
G06F 9/46 20060101ALI20220921BHJP
G06F 16/182 20190101ALI20220921BHJP
G06Q 20/38 20120101ALI20220921BHJP
H04L 9/32 20060101ALI20220921BHJP
【FI】
G06Q20/10 320
G06F9/46 430
G06F16/182
G06Q20/38 370
H04L9/32 200Z
(21)【出願番号】P 2020132607
(22)【出願日】2020-08-04
【審査請求日】2020-08-05
【審判番号】
【審判請求日】2021-07-12
【早期審査対象出願】
(73)【特許権者】
【識別番号】598049322
【氏名又は名称】株式会社三菱UFJ銀行
(74)【代理人】
【識別番号】110000408
【氏名又は名称】弁理士法人高橋・林アンドパートナーズ
(72)【発明者】
【氏名】尾根田 倫太郎
(72)【発明者】
【氏名】秋田 佳紀
(72)【発明者】
【氏名】宮澤 勇貴
(72)【発明者】
【氏名】小倉 拓人
【合議体】
【審判長】角田 慎治
【審判官】林 毅
【審判官】富澤 哲生
(56)【参考文献】
【文献】中国特許出願公開第110930149(CN,A)
【文献】特開2012-18449(JP,A)
【文献】特開2019-110511(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q20/10
G06F9/46
G06F16/182
G06Q20/38
H04L9/32
(57)【特許請求の範囲】
【請求項1】
分散された台帳に口座情報を記録する複数のノードのうち1つの第1ノードが、クライアント端末から、前記台帳への
口座情報の更新を要求する複数のトランザクションを、前記複数のトランザクションを含むブロック単位で受信するシステムであって、
前記ブロックに
含まれる前記複数のトランザクション
の各々は、異なる口座間の
取引の処理を要求する処理要求データであって、一体不可分の処理単位として扱われ、互いに関連又は依存する複数の処理要求データを含み、前記複数のトランザクションの各々に対して、
前記クライアント端末によって付された識別子であって、前記複数のトランザクションが属するブロックを特定する識別子が付される、システム。
【請求項2】
前記第1ノードは、前記第1ノードと前記クライアント端末との1回の通信の確立で、前記複数のトランザクションを受信する、請求項1に記載のシステム。
【請求項3】
前記第1ノードは、前記ブロック単位で前記複数のトランザクション
の処理内容及び順序を記録した複数のログを前記台帳に記録する、請求項1に記載のシステム。
【請求項4】
分散された台帳に口座情報を記録する複数のノードのうち1つの第1ノードに、クライアント端末から、前記台帳への
口座情報の更新を要求する複数のトランザクションを、前記複数のトランザクションを含むブロック単位で受信することを実行させるためのプログラムであって、
前記ブロックに
含まれる前記複数のトランザクション
の各々は、異なる口座間の
取引の処理を要求する処理要求データであって、一体不可分の処理単位として扱われ、互いに関連又は依存する複数の処理要求データを含み、前記複数のトランザクションの各々に対して、
前記クライアント端末によって付された識別子であって、前記複数のトランザクションが属するブロックを特定する識別子を付す、プログラム。
【請求項5】
前記第1ノードと前記クライアント端末との1回の通信の確立で、前記複数のトランザクションを受信することを前記第1ノードに実行させるための、請求項4に記載のプログラム。
【請求項6】
前記第1ノードは、前記ブロック単位で前記複数のトランザクション
の処理内容及び順序を記録した複数のログを前記台帳に記録する、請求項4に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散型台帳技術に関するシステム、端末、及びプログラムに関する。
【背景技術】
【0002】
ブロックチェーンを用いた分散型台帳技術が、ビットコイン等の暗号資産(仮想通貨)を管理する方法として用いられている。近年では、これらの技術は、このような暗号資産だけではなく、様々な資産を管理したり移動したりする方法として用いることも検討されている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に示した分散型台帳技術では、P2P(Peer to Peer)によって接続された複数のノード(1つのリーダノード及びその他の複数のフォロワノード)によって分散台帳ネットワークが形成され、当該分散台帳ネットワークにおける複数のノードによって台帳が分散して記録される。
【0005】
上記のような従来の分散型台帳技術においては、クライアント端末からの取引要求に対する処理の高速化及び複数のノード間における整合性の確保は重要な課題である。
【0006】
本発明の目的の一つは、分散型台帳技術において、取引要求に対する処理の高速化又は複数のノード間において整合性を確保することである。
【課題を解決するための手段】
【0007】
本発明の一実施形態に係るシステムは、台帳を分散して記録する複数のノードのうち1つの第1ノードが、クライアント端末から複数のトランザクションを、前記複数のトランザクションを含むブロック単位で受信する。
【0008】
前記第1ノードは、前記第1ノードと前記クライアント端末との1回の通信の確立で、前記複数のトランザクションを受信してもよい。
【0009】
前記第1ノードは、前記複数のトランザクションの各々に対して、前記複数のトランザクションが属するブロックを特定する識別子を付してもよい。
【0010】
前記第1ノードは、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに、前記クライアント端末から前記ブロック単位で受信した前記複数のトランザクションを排他制御によって整列した複数のログをまとめて送信してもよい。
【0011】
本発明の一実施形態に係る端末は、台帳を分散して記録する複数のノードのうち1つの第1ノードに、複数のトランザクションを、前記複数のトランザクションを含むブロック単位で送信する。
【0012】
前記端末は、前記第1ノードとの1回の通信の確立で、前記複数のトランザクションを送信してもよい。
【0013】
前記端末は、前記複数のトランザクションの各々に対して、前記複数のトランザクションが属するブロックを特定する識別子を付してもよい。
【0014】
前記端末は、前記複数のトランザクションの数がしきい値に達した場合に、前記複数のトランザクションを前記ブロック単位で送信してもよい。
【0015】
前記端末は、所定の期間に発生した前記複数のトランザクションを前記ブロック単位で送信してもよい。
【0016】
本発明の一実施形態に係るプログラムは、台帳を分散して記録する複数のノードのうち1つの第1ノードに、クライアント端末から複数のトランザクションを、前記複数のトランザクションを含むブロック単位で受信することを実行させる。
【0017】
前記プログラムは、前記第1ノードと前記クライアント端末との1回の通信の確立で、前記複数のトランザクションを受信することを前記第1ノードに実行させてもよい。
【0018】
前記プログラムは、前記複数のトランザクションの各々に対して、前記複数のトランザクションが属するブロックを特定する識別子を付してもよい。
【0019】
前記プログラムは、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに、前記クライアント端末から前記ブロック単位で受信した前記複数のトランザクションを排他制御によって整列した複数のログをまとめて送信することを前記第1ノードに実行させてもよい。
【0020】
本発明の一実施形態に係るプログラムは、端末に、台帳を分散して記録する複数のノードのうち1つの第1ノードに、複数のトランザクションを、前記複数のトランザクションを含むブロック単位で送信することを実行させる。
【0021】
前記プログラムは、前記端末と前記第1ノードとの1回の通信の確立で、前記複数のトランザクションを送信することを前記端末に実行させてもよい。
【0022】
前記プログラムは、前記複数のトランザクションの各々に対して、前記複数のトランザクションが属するブロックを特定する識別子を付してもよい。
【0023】
前記プログラムは、前記複数のトランザクションの数がしきい値に達した場合に、前記複数のトランザクションを前記ブロック単位で送信することを前記端末に実行させてもよい。
【0024】
前記プログラムは、所定の期間に発生した前記複数のトランザクションを前記ブロック単位で送信することを前記端末に実行させてもよい。
【0025】
本発明の一実施形態に係るシステムは、台帳を分散して記録する複数のノードのうち1つの第1ノードが、複数のトランザクションに対して排他制御を行うログを生成し、データ同期アルゴリズムを用いて、前記第1ノードから、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに前記ログを送信する。
【0026】
前記排他制御は、前記複数のトランザクションの各々に対して、前記複数のトランザクションの各々の処理の前に前記台帳に対する更新処理をロックし、前記台帳に対して前記複数のトランザクションの各々に応じた更新処理を行い、前記更新処理の後に前記ロックを解除してもよい。
【0027】
前記排他制御は、ストリクトツーフェーズロックプロトコルを含んでもよい。
【0028】
前記第1ノードは、クライアント端末から前記複数のトランザクションを、前記複数のトランザクションを含むブロック単位で受信し、前記ブロックに含まれる前記複数のトランザクションに基づく前記ログを生成してもよい。
【0029】
前記第1ノードは、前記複数の第2ノードの過半数から合意が得られた場合に、前記ログの複製が完了したと判断してもよい。
【0030】
前記複数の第2ノード間で、前記ログに基づいて更新処理されたデータに不整合がある場合、過半数の前記第2ノードに共通する前記データを正しいデータとして、前記正しいデータとは異なる他の前記第2ノードの前記データを修正してもよい。
【0031】
前記データ同期アルゴリズムは、分散合意アルゴリズムの一部であってもよい。
【0032】
本発明の一実施形態に係るシステムは、台帳を分散して記録する複数のノードのうち1つの第1ノードが、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに、クライアント端末から受信した複数のトランザクションが整列した複数のログをまとめて送信する。
【0033】
前記第1ノードは、前記複数のログを含むグループ単位で、前記複数のログを前記複数の第2ノードに送信してもよい。
【0034】
前記第1ノードは、前記第1ノードと前記第2ノードとの1回の通信の確立で、前記複数のログを送信してもよい。
【0035】
前記第1ノードは、前記クライアント端末から前記複数のトランザクションを含むブロック単位で前記複数のトランザクションを受信し、前記ブロック単位で前記複数のログを生成し、前記複数の第2ノードに対して複数の前記ブロックを含むブロックグループ単位で前記複数のログを送信してもよい。
【0036】
前記第1ノードは、前記クライアント端末に接続した、互いに異なるユーザによって使用される複数のユーザ端末による取引要求に対する前記複数のトランザクションに基づく前記複数のログをまとめて前記第2ノードに送信してもよい。
【0037】
前記第1ノードは、異なる前記クライアント端末から受信した前記複数のトランザクションに基づく前記複数のログをまとめて前記第2ノードに送信してもよい。
【発明の効果】
【0038】
本発明の一実施形態によれば、分散型台帳技術において、取引要求に対する処理の高速化又は複数のノード間において整合性を確保する。
【図面の簡単な説明】
【0039】
【
図1】本発明の一実施形態に係る分散型台帳システムの概要を示す図である。
【
図2】本発明の一実施形態に係る分散型台帳システムの概要を示す図である。
【
図3】本発明の一実施形態に係る分散型台帳システムの概要を示す図である。
【
図4】本発明の一実施形態に係る分散型台帳システムにおけるブロックの概念図である。
【
図5】本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。
【
図6】本発明の一実施形態に係る分散型台帳システムにおけるトランザクション及びログの具体例を示す図である。
【
図7】本発明の一実施形態に係る分散型台帳システムに用いられるクライアント端末の機能構成を示すブロック図である。
【
図8】本発明の一実施形態に係る分散型台帳システムに用いられるフォロワノードの機能構成を示すブロック図である。
【
図9】本発明の一実施形態に係る分散型台帳システムの動作を示すシーケンスを示す図である。
【
図10】本発明の一実施形態に係る分散型台帳システムの動作を示すフローチャートを示す図である。
【
図11】本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。
【
図12】本発明の一実施形態に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。
【
図13】本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。
【
図14】本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。
【
図15】本発明の一実施形態に係る分散型台帳システムにおけるデータ同期アルゴリズムの動作を示すフローチャートを示す図である。
【
図16】本発明の一実施形態に係る分散型台帳システムにおけるグループの概念図である。
【
図17】本発明の一実施形態に係る分散型台帳システムにおけるグループの概念図である。
【発明を実施するための形態】
【0040】
以下、本発明の一実施形態について、図面を参照しながら詳細に説明する。以下に示す実施形態は本発明の実施形態の一例であって、本発明はこの実施形態に限定して解釈されるものではない。すなわち、以下に説明する複数の実施形態に公知の技術を適用して変形をして、様々な態様で実施をすることが可能である。なお、本実施の形態で参照する図面において、同一部分又は同様な機能を有する部分には同一の符号又は同一の符号の後にアルファベットを付し、その繰り返しの説明は省略する。
【0041】
以下の説明において、トランザクション(TX)は、クライアント端末(ClientMachine;CM)が要求する取引の内容を含む情報である。トランザクションは、互いに関連又は依存する複数の処理によって構成され、当該複数の処理は一体不可分の処理単位として扱われる。具体的には、当該複数の処理の全てが成功した場合には当該トランザクションに関連する取引が成立したと判断され、当該複数の処理の一部が失敗した場合には当該トランザクションに関連する取引が失敗したと判断される。換言すると、トランザクションを構成する複数の処理は、「すべて成功」又は「すべて失敗」のいずれかの結果になることが保証される。例えば、コンピュータ間で入出金処理が行われる場合、入金処理及び出金処理は「どちらも成功」又は「どちらも失敗」であることが要求される。
【0042】
ログ(又はトランザクションログ)は、複数のトランザクションが整列された情報である。具体的には、ログは、複数のトランザクションに基づいてデータベースの更新が行われる順番を記録したものである。ログは、トランザクションによって規定されたデータの追加、更新、削除などの更新内容を時系列に記録する。システム障害などで処理が中断又は取り消されると、分散型台帳システムは、ログの記録を参照して更新済みのデータを元に戻し、トランザクション開始前の状態に戻す。
【0043】
以下の実施形態では、分散型台帳システムに含まれるリーダノード(LeaderNode;LN)及びフォロワノード(FollowerNode;FN)として、例えばサーバのような固定された情報処理装置が用いられた構成を例示するが、この構成に限定されない。また、特に技術的な矛盾が生じない限り、異なる実施形態間の技術を組み合わせることができる。
【0044】
〈第1実施形態〉
[1-1.システムの概要]
図1~
図10を用いて、本発明の第1実施形態に係る分散型台帳システム10、分散型台帳システム10を構成する情報処理装置(ノード100)、及びノード100に接続されるクライアント端末400、並びに、これらを動作させるためのプログラムについて説明する。
図1~
図3は、本発明の一実施形態に係る分散型台帳システムの概要を示す図である。
【0045】
図1に示すように、分散型台帳システム10は日本全国各地に台帳(データベース;DB)が配置されており、これらの台帳は互いに同期している。つまり、各クライアントは日本全国のどの台帳からでも分散型台帳システム10にアクセスして取引を要求することができ、取引によって更新されたデータは各台帳で同期して格納される。例えば、北海道に配置された台帳31(この例におけるリーダノード)に対してクライアント端末41から「再配達の費用請求」の取引要求(トランザクション)があった場合、台帳31によって当該取引の順序を示す情報(ログ)が生成され、当該ログは他の台帳32~38(この例におけるフォロワノード)に送信され、当該ログに応じたデータ更新が各台帳31~38で行われる。このようにして、台帳31に対して要求された取引に基づいて日本全国各地に配置された台帳31~38の同期処理が行われる。
【0046】
図1に示すように、分散型台帳システム10は、従来の仮想通貨や資産管理のように人が主体となって取引要求を行うシステムに適用することができる。例えば、分散型台帳システム10が、上記のクライアント端末41を用いた「再配達の費用請求」やクライアント端末42を用いた「部屋の貸し出し」などのシステムに適用されてもよい。また、分散型台帳システム10は、例えばIoT(Internet of Things;モノのインターネット)のように端末が主体となって取引要求を行うシステムに適用することもできる。例えば、分散型台帳システム10が、コンテンツの視聴に係る自動課金(例えば、クライアント端末43による時間課金)、電子書籍の通読に係る自動課金(例えば、クライアント端末44によるページ課金)、及びクライアント端末45による臨時の充電により発生する自動課金など、1円単位又は1円未満の費用請求(マイクロペイメント)が発生しうるサービスに適用されてもよい。また、分散型台帳システム10は、複数の独立した機能を組み合わせることで実現されるマイクロサービスに適用されてもよい。
【0047】
図2に示すように、クライアント端末400とノード100とは、ネットワーク500を介して通信可能に接続されている。また、各ノード100は、専用ネットワーク600を介して通信可能に接続されている。各ノード100は、台帳(データベース)を分散して記録するノードである。なお、本実施形態では、3つのノード101、102、103を特に区別する必要がない場合、単にノード100という。また、3つのクライアント端末401、402、403を特に区別する必要がない場合、単にクライアント端末400という。
【0048】
ノード101、102、103は、それぞれサーバ111、112、113及びデータベース121、122、123を含む。これらのサーバ及びデータベースを特に区別する必要がない場合、単にサーバ110及びデータベース120という。サーバ110はデータベース120に対してデータの記録処理及び読み出し処理(データ更新)を実行する。サーバ110は、中央演算処理装置(CPU)及び記憶装置(メモリ)を有しており、これらが協働することで、以下に説明する各種機能を実現する。具体的には、記憶装置に格納されたプログラムをCPUが実行することで、サーバ110の各種機能が実現される。記憶装置は一時的な記憶を行う揮発性の記憶装置であってもよく、不揮発性の記憶装置であってもよく、これらの記憶装置を組み合わせたものであってもよい。
【0049】
各クライアント端末400から送信されたトランザクションは、ネットワーク500を介して、例えばサーバ111によって受信される。サーバ111において、受信したトランザクションに応じてログの生成が行われる。生成されたログはサーバ111に接続されたデータベース121に格納される。
【0050】
サーバ111は、専用ネットワーク600を介して、上記ログをサーバ112、113に送信する。ログを受信したサーバ112、113は、当該ログをそれぞれのサーバ112、113に接続されたデータベース122、123に格納すると、ログを適正に受信し格納したことを示す応答をサーバ111に送信する。この動作を「合意」又は「合意形成」という。サーバ111は、サーバ112、113からの合意形成が確認されると、ログの複製が正常に行われたと判断する。ログの複製が正常に行われると、当該ログに基づいて各サーバ111、112、113に接続されたデータベース121、122、123の更新が行われる。このようにして、クライアント端末400から1つのノード101に送信されたトランザクションに基づくデータ更新が各ノードで同期して行われる。
【0051】
なお、データベース121に格納されたログは、後の工程でデータの不整合が発生した場合に、誤ったデータが格納されたデータベースを修正するために用いられる。
【0052】
ネットワーク500は、一般的なWorld Wide Web(WWW)のようなインターネット、WAN(Wide Area Network)、又は社内LANなどのLAN(Local Area Network)である。
【0053】
専用ネットワーク600は、ネットワーク500とは異なり、分散型台帳システム10の専用のネットワークである。つまり、専用ネットワーク600は、クライアント端末400がアクセスすることができないネットワークである。
【0054】
図1及び
図2では説明を省略したが、
図2に示す各ノード100は、
図3に示すように、1つのリーダノード200と複数のフォロワノード300として機能する。リーダ選出によって複数のノード100から選出された1つのノード100がリーダノード200として機能し、その他のノード100はフォロワノード300として機能する。リーダノード200としての機能は、定期的に又はイベント発生をトリガとして次のノード100に引き継がれる。ただし、リーダノード200は固定されていてもよい。なお、
図3のリーダノード200及びフォロワノード300は、それぞれサーバ及びデータベースを有しており、
図2のノード100のように動作する。
【0055】
図3に示すように、リーダノード200には複数のクライアント端末400が接続されている。複数のクライアント端末400の各々は、例えば、サービス提供事業者の通信端末であり、例えば、携帯通信端末サービス、自動車サービス、IoTサービスなどのサービスを提供する事業者が有する情報処理装置(ハードウェア)である。各クライアント端末400において、複数のクライアントプロセス(ClientProcess)410(ソフトウェア)が起動している。例えば、一般的に、情報処理装置として使用されるコンピュータには複数のCPUコアが搭載されているため、処理の並列度を向上させるためにCPUコアの数だけ以下のクライアントプロセス410を起動してもよい。ただし、上記のサービス提供事業者は単なる一例であり、上記以外の様々なサービス提供事業者に適用することができる。また、複数のクライアントプロセス410は単一のCPUによって実現されてもよい。
【0056】
クライアントプロセス411-1、411-2、・・・、411-nは、クライアント端末401上で動作する。クライアントプロセス412-1、412-2、・・・、412-nは、クライアント端末402上で動作する。クライアントプロセス413-1、413-2、・・・、413-nは、クライアント端末403上で動作する。クライアントプロセス414-1、414-2、・・・、414-nは、クライアント端末404上で動作する。上記の複数のクライアントプロセスを特に区別する必要がない場合、単にクライアントプロセス410という。
【0057】
複数のクライアントプロセス410の各々は、各ユーザによって使用されるユーザ端末から取引要求を受け付け、当該取引要求に対応するトランザクションを生成してリーダノード200に送信する。なお、クライアントプロセス410は、ユーザ端末からの取引要求毎にトランザクションをリーダノード200に送信するのではなく、ユーザ端末からの複数の取引要求に対応する複数のトランザクションを蓄積してから、これら複数のトランザクションを1回の通信でまとめてリーダノード200に送信する。リーダノード200にまとめて送信される複数のトランザクションはブロック単位で扱われる。
【0058】
例えば、
図3に示すように、クライアント端末401のクライアントプロセス411-1は、複数のトランザクションTX1-1、TX1-2、・・・、TX1-i(以下、「TX1-1~TX1-i」と表現する)をリーダノード200に送信する。同様に、クライアント端末401のクライアントプロセス411-2は、複数のトランザクションTX2-1、TX2-2、・・・、TX2-j(以下、「TX2-1~TX2-j」と表現する)をリーダノード200に送信する。
【0059】
この場合、
図4に示すように、複数のトランザクションTX1-1~TX1-iは1つのブロックBL1を形成し、複数のトランザクションTX2-1~TX2-jは1つのブロックBL2を形成する。ブロックBL1はTX1-1~TX1-iが一つのまとまりであり、ブロックBL2はTX2-1~TX2-jが一つのまとまりであり、それらのブロックの間には境界が定義される。具体的には、トランザクションTX1-1~TX1-iには、各トランザクションがブロックBL1に属していることを示すブロック識別子が付される。同様に、トランザクションTX2-1~TX2-jには、各トランザクションがブロックBL2に属していることを示すブロック識別子が付される。ブロック識別子はリーダノード200によって付される。ただし、ブロック識別子がクライアントプロセス410によって付されてもよい。なお、上記のようにトランザクションにブロック識別子を付す以外に、個々のトランザクションが属するブロックを管理するテーブルが設けられていてもよい。複数のトランザクションTX1-1~TX1-iの各々は、クライアントプロセス411-1に接続された同一のユーザ端末からの取引要求に対応するトランザクションであってもよく、クライアントプロセス411-1に接続された異なるユーザ端末からの取引要求に対応するトランザクションであってもよい。
【0060】
リーダノード200は、例えば、各クライアント端末400からブロック単位で受信した複数のトランザクションTX1-1~TX1-iを順に整列させる。つまり、データ更新を行う処理順を決定する。このように複数のトランザクションTX1-1~TX1-i及びそれらが整列した順序に基づいて、それぞれログが生成される。ログは各トランザクションTXに対応して生成される。つまり、トランザクションTX1-1に対してログ1-1が生成される。また、上記と同様に、複数のトランザクションTX2-1~TX2-jに基づいて、それぞれログが生成される。本実施形態の場合、ログはブロック単位で生成される。つまり、ブロックBL1、BL2に基づいて生成された2つのグループのログの間には、ブロックBL1、BL2と同様の境界が定義されている。
【0061】
ただし、ログはブロック単位で生成されなくてもよい。つまり、ブロックBL1に含まれる複数のトランザクションTX1-1~TX1-i及びブロックBL2に含まれる複数のトランザクションTX2-1~TX2-jの各々が、リーダノード200によって受信された後に、トランザクションTX1-1~TX1-i及びTX2-1~TX2-jがそれぞれ独立に扱われてもよい。つまり、これらのトランザクションに基づいて生成された複数のログの間に境界が定義されていなくてもよい。
【0062】
リーダノード200は、上記のようにして生成したログを各フォロワノード301、302、303、304に送信する。上記の複数のフォロワノードを特に区別する必要がない場合、単にフォロワノード300という。
【0063】
フォロワノード300は、リーダノード200から上記のログを受信して格納すると、合意形成したことをリーダノード200に返信する。リーダノード200は、フォロワノード300からの合意形成を確認すると、フォロワノード300によってログの複製が正常に行われたと判断する。なお、ログの正常な複製を判断する具体的な手法については、後述する。
【0064】
リーダノード200が、ログの正常な受信が行われたと判断すると、リーダノード200は、当該ログに基づいて、リーダノード200のデータ更新を行う。そして、フォロワノード300は、リーダノード200と同様に上記ログに基づいてデータの更新を行う。リーダノード200がデータ更新を行うタイミングとフォロワノード300がデータ更新を行うタイミングは同じでなくても良い。例えば、リーダノード200がデータ更新を行った後に、次のサイクルでリーダノード200からフォロワノード300にログを送信するタイミングで、フォロワノード300がリーダノード200の状態を参照してリーダノード200と同様のデータ更新を行ってもよい。
【0065】
このデータ更新の後に、各フォロワノード300において更新されたデータ間の整合性の評価が行われる。各フォロワノード300間で更新後のデータに不整合があった場合は、当該不整合を修正するための修正処理が行われる。このような処理によって、各フォロワノード300間の同期が取られる。
【0066】
従来の仮想通貨や資産管理の取引では、個々の取引の処理速度が重要であり、各取引によって生じたトランザクション毎に処理が行われていた。つまり、クライアント端末400からリーダノードに送信される個々のトランザクションの処理速度を向上させることを目的としていた。一方、第1実施形態に係る分散型台帳システム10では、個々のトランザクションの処理速度を向上させるのではなく、複数のトランザクションをまとめて処理することで、総合的な処理速度を向上させることを目的としている。
【0067】
[1-2.リーダノード200の機能]
図5を用いて、本実施形態に係る分散型台帳システム10のリーダノード200の機能を説明する。
図5は、本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。
図5に示すように、リーダノード200は、CM通信部210、TX受信部220、整列処理部230、ログ生成部240、分散処理部250、及びデータ更新部260を有する。これらの機能部は通信バス290によって互いに通信可能に接続されている。これらの機能部の機能は、リーダノード200に備えられた記憶装置に格納されたプログラムをCPUが実行することで実現される。
【0068】
CM通信部210は、各クライアント端末400から通信確立要求を受信すると、クライアント端末400とリーダノード200との通信を確立する機能を有する。当該通信の確立及び終了のプロトコルとして、例えばTCPを利用することができる。なお、TCPのデータ部には、ブロック識別子、当該ブロック識別子に関連付けられたトランザクション数(ブロックに含まれるトランザクションの数)、及びトランザクションの内容(データ更新対象のキー及びデータ更新の値を含む)が含まれる。
【0069】
TX受信部220は、CM通信部210によって確立された1回の通信の間に、クライアント端末400から複数のトランザクションを受信する。なお、TX受信部220は、上記のように複数のトランザクションをブロック単位で受信する。TX受信部220は、トランザクションと共に、ブロックを定義する情報を受信する。つまり、TX受信部220は、異なるブロックの境界を定義する情報を受信する。
【0070】
整列処理部230は、TX受信部220が受信した複数トランザクションに対して順に整列する処理を行う。整列処理部230は、TX受信部220が受信した順にトランザクションを整列してもよく、ある特定の規則に従ってトランザクションを整列してもよい。ログをブロック単位で生成する場合、整列処理部230は、各ブロックの中だけでトランザクションの整列処理を行い、異なるブロック間でトランザクションの入れ替えは行わない。一方、ログをブロック単位で生成しない(つまり、ブロックの境界を解除した)場合、整列処理部230は、ブロック間に跨がるトランザクションの整列処理を行う。つまり、この場合、整列処理部230は、異なるブロックのトランザクションを入れ替えることができる。
【0071】
ログ生成部240は、整列処理部230によって整列した複数のトランザクションの処理内容及び順序を記録したログを生成する。なお、リーダノード200のログ生成部240によって生成されたログ(マスターログ)は、リーダノード200の記憶装置に格納される。ログをブロック単位で生成する場合は、ブロックの境界を定義した情報をログにも引き継ぐ。一方、ログをブロック単位で生成しない場合、ブロックの境界を定義した情報は削除される又は無効化される。
【0072】
分散処理部250は、ログ生成部240によって生成されたログを複数のフォロワノード300に送信(分散処理)する。例えば、分散処理部250は、[AppendEntries PRC]を使って、生成された全てのログを複数のフォロワノード300に送信する。分散処理部250は、フォロワノード300からログを正常に格納したことを確認すると、ログの複製が正常に行われたと判断する。
【0073】
データ更新部260は、分散処理部250によってログの複製が正常に行われたと判断されると、リーダノード200のデータベースに対してログに応じたデータ更新を実行する。そして、データ更新が完了したことをクライアントプロセス410に応答する。なお、この段階では、フォロワノード300のデータベースに対してデータ更新が実行されていないが、リーダノード200のデータ更新と共にフォロワノード300のデータ更新が行われてもよい。
【0074】
[1-3.トランザクション及びログの構成]
図6は、本発明の一実施形態に係る分散型台帳システムにおけるトランザクション及びログの具体例を示す図である。
図6に示すように、トランザクションTX1-1は、口座番号AAAから口座番号BBBに10万円移動する、という取引要求に基づくトランザクションである。トランザクションTX1-2は、口座番号BBBから口座番号CCCに20万円移動する、という取引要求に基づくトランザクションである。
【0075】
本実施形態では、複数のトランザクションTX1-1、TX1-2がブロック単位で送信される。さらに、複数のトランザクションTX1-1、TX1-2は、同一のクライアントプロセス411-1から送信される。そのため、上記のように、複数のトランザクションTX1-1、TX1-2の両方が同一のキーである口座番号BBBに対する更新処理の要求を含む場合が想定される。トランザクションTX1-1、TX1-2は、1つのブロックとして並行して送信される。したがって、これらのトランザクション間で不整合が起きないように、TX1-1、TX1-2の順で整列させる。そして、TX1-1、TX1-2の順で、それぞれのトランザクションに応じたログ1-1、ログ1-2が生成される。なお、
図6では、複数のトランザクションが同一のキーに対する更新処理を要求する場合を含む構成が例示されているが、複数のトランザクションが同一のキーに対する更新処理を要求してなくてもよい。
【0076】
なお、TX1-1は、具体的には以下(1)~(6)の処理を含む。
(1)口座番号AAAの残高を取得する(口座番号AAAの残高は100万円)。
(2)口座番号BBBの残高を取得する(口座番号BBBの残高は1000万円)。
(3)口座番号AAAから10万円引いた場合の金額を計算する(90万円)。
(4)口座番号BBBに10万円足した場合の金額を計算する(1010万円)。
(5)口座番号AAAに90万円と書き込む。
(6)口座番号BBBに1010万円と書き込む。
【0077】
TX1-1の(1)~(6)の処理は一体不可分として扱われる。つまり、(1)~(6)の処理が全て成功した場合にTX1-1が成立したと判断され、(1)~(6)の少なくともいずれか一つの処理が失敗した場合はTX1-1が失敗したと判断される。TX1-2に関してもTX1-1の場合と同様に扱われる。
【0078】
[1-4.クライアント端末400の機能]
図7を用いて、本実施形態に係る分散型台帳システム10のクライアント端末400の機能を説明する。
図7は、本発明の一実施形態に係る分散型台帳システムに用いられるクライアント端末の機能構成を示すブロック図である。
図7に示すように、クライアント端末400は、取引要求受信部420、TX生成部430、TXバッファリング部440、LN通信部450、及びTX送信部460を有する。これらの機能部は通信バス490によって互いに通信可能に接続されている。これらの機能部の機能は、クライアント端末400に備えられた記憶装置に格納されたプログラムをCPUが実行することで実現される。なお、上記の各機能部は、クライアント端末400の各クライアントプロセス410によって実行される。
【0079】
取引要求受信部420は、クライアントプロセス410に接続されるユーザ端末から取引要求を受信する。取引要求受信部420は、同一のユーザ端末から取引要求を受信してもよく、異なるユーザ端末から取引要求を受信してもよい。
【0080】
TX生成部430は、取引要求受信部420が受信した取引要求の内容に応じたトランザクションTXを生成する。トランザクションTXは、取引要求毎に生成される。
【0081】
TXバッファリング部440は、TX生成部430によって生成されたトランザクションTXをバッファリングする。つまり、TXバッファリング部440は一時的な記憶装置を有しており、当該記憶装置にトランザクションTXを一時的に格納する。TXバッファリング部440には、バッファリングするトランザクションTXの数に対するしきい値が設定されている。TXバッファリング部440は、バッファリングするトランザクションTXの数がしきい値に達した場合に、トリガ信号を生成する。例えば、TXバッファリング部440は、バッファリングするトランザクションTXの数が100個に達したらトリガ信号を生成する。又は、TXバッファリング部440は、上記しきい値の設定の代わりに、所定の期間を計測する機能が備えられていてもよい。この場合、TXバッファリング部440は、所定の期間が経過する度にトリガ信号を生成する。例えば、TXバッファリング部440は、0.1秒毎にトリガ信号を生成する。ただし、上記の数値はあくまで一例であり、上記の値に限定されない。
【0082】
LN通信部450は、リーダノード200のCM通信部210に通信確立要求を送信する。なお、LN通信部450は、TXバッファリング部440によって生成されたトリガ信号に基づいて通信確立要求をCM通信部210に送信する。
【0083】
TX送信部460は、LN通信部450によって確立された1回の通信の間に、リーダノード200のTX受信部220に対して、前のサイクルでトランザクションをリーダノード200に送信してから現在のサイクルでトリガ信号が生成されるまでの間に生成された複数のトランザクションを1ブロックにまとめて送信する。TX送信部460がトリガ信号に応じて複数のトランザクションを送信すると、TXバッファリング部440に一時的に格納されていたトランザクションTXは削除され、次のサイクルのトランザクションTXのバッファリングを開始する。
【0084】
上記のように、クライアントプロセス410は、例えばトランザクションTXを100個ずつ1つのブロックにまとめて、又は0.1秒間に生成されたトランザクションTXを1つのブロックにまとめてリーダノード200に送信する。
【0085】
[1-5.フォロワノード300の機能]
図8を用いて、本実施形態に係る分散型台帳システム10のフォロワノード300の機能を説明する。
図8は、本発明の一実施形態に係る分散型台帳システムに用いられるフォロワノードの機能構成を示すブロック図である。
図8に示すように、フォロワノード300は、ログ受信部310、ログ格納部320、合意形成部330、及びデータ更新部340を有する。これらの機能部は通信バス390によって互いに通信可能に接続されている。これらの機能部の機能は、フォロワノード300に備えられた記憶装置に格納されたプログラムをCPUが実行することで実現される。
【0086】
ログ受信部310は、分散処理部250によって送信されたログを受信する。ログ格納部320は、ログ受信部310によって受信されたログをフォロワノード300に備えられた記憶装置又はデータベースに格納する。合意形成部330は、ログ格納部320によってログの格納が正常に行われた場合に、合意形成したことをリーダノード200に返信する。データ更新部340は、ログ受信部310がログを受信する際にリーダノード200のデータを確認し、リーダノード200のデータに応じてフォロワノード300のデータベースに対してログに応じたデータ更新を実行する。
【0087】
[1-6.分散型台帳システム10の動作]
図9は、本発明の一実施形態に係る分散型台帳システムの動作を示すシーケンスを示す図である。まず、クライアント端末400においてユーザ端末からの取引要求に応じたトランザクションTXが生成される(ステップS701~S702)。生成されたトランザクションTXは、上記のTXバッファリング部440によってバッファリングされる。そして、バッファリングされたトランザクションTXの数がしきい値に達した場合に(ステップS703)、バッファリングされたトランザクションTXが1つのブロックにまとめられてリーダノード200に送信される(ステップS704)。
【0088】
リーダノード200において、1つのブロックとして送信された複数のトランザクションTXが受信されると(ステップS711)、複数のトランザクションTXに対して整列処理が行われる(ステップS712)。そして、整列されたトランザクションTXの処理内容及び順序に基づいてログが生成される(ステップS713)。生成されたログはリーダノード200から複数のフォロワノード301、302に送信される(ステップS714)。
【0089】
フォロワノード301、302において、リーダノード200から送信されたログが受信されると、各々のフォロワノードにログを格納する処理が行われる(ステップS721、S731)。ログの格納が正常に行われると、合意形成したことをリーダノード200に返信する(ステップS722、S732)。リーダノード200は、合意形成を確認することで、フォロワノード301、302においてログが正常に複製されたと判断し、データ更新を行う(ステップS715)。そして、リーダノード200はデータ更新が正常に行われたことをクライアント端末400に通知する(ステップS716、S705)。
【0090】
なお、
図9では、フォロワノード301、302において、ログに基づくデータ更新が行われていないが、次のサイクルでログがリーダノード200からフォロワノード301、302に送信されるタイミングで、フォロワノード301、302がリーダノード200の状態を参照してリーダノード200と同様に前のサイクルで受信したログに基づいてデータ更新を行う。ただし、フォロワノード301、302のログに基づくデータ更新は、リーダノード200のデータ更新と同じタイミングで行われてもよい。
【0091】
図10は、本発明の一実施形態に係る分散型台帳システムの動作を示すフローチャートを示す図である。
図10のフローチャートにおいて、
図9のシーケンスと同様のステップには
図9と同じ符号を付した。動作フローが開始し、クライアント端末400において、トランザクションTXが発生すると(ステップS701)、トランザクションTXが発生する度にトランザクションTXを送信する条件を満たしているか否か(トリガ信号)の確認が行われる(ステップS801)。S801でトリガ信号が確認されない場合(ステップS801の「No」)、S701→S801のステップを繰り返す。一方、トリガ信号が確認されると(ステップS801の「Yes」)、クライアント端末400からリーダノード200へ通信確立要求が送信される(ステップS802)。
【0092】
S802の通信が確立されると、TX送信(ステップS704)、TX整列処理(ステップS712)、ログ生成(ステップS713)、及びログ送信(ステップS714)が行われる。そして、S714のログ送信の後に、リーダノード200によって合意形成の確認が行われる(ステップS803)。S803において、全てのフォロワノード300から合意形成の確認が取れない場合(ステップS803の「No」)、S714→S803のステップを繰り返す。一方、全てのフォロワノード300から合意形成が確認されると(ステップS803の「Yes」)、リーダノード200においてデータ更新(ステップS715)及び完了通知(ステップS716)が行われる。続いて、フォロワノード300においてS714と同様のデータ更新が行われる(ステップS804)。
【0093】
従来の分散型台帳技術では、クライアント端末によって要求される個々の取引を迅速に処理することが要求されていた。そのため、当該取引に関する情報を記したトランザクションは、クライアント端末からリーダノードにトランザクション単位で送信されていた。しかし、トランザクションの送信を行う度にクライアント端末とリーダノードとの通信を確立する必要があるため、複数のトランザクションを送信するための時間が長くなってしまい、スループットが低下してしまう問題があった。
【0094】
しかし、本実施形態に係る分散型台帳システム10によると、クライアント端末400とリーダノード200との1回の通信の確立において、複数のトランザクションをブロック単位でクライアント端末400からリーダノード200に送信することができる。したがって、クライアント端末から分散台帳ネットワークへの複数のトランザクションの送信におけるスループットを向上させることができる。
【0095】
〈第2実施形態〉
図11~
図15を用いて、本発明の第2実施形態に係る分散型台帳システム10Aについて説明する。以下の説明において、分散型台帳システム10Aの構成のうち、第1実施形態に係る分散型台帳システム10と同様の特徴を有する構成には、分散型台帳システム10と同様の符号の後にアルファベット「A」を付して、詳細な説明を省略する場合がある。以下の分散型台帳システム10Aの説明において、主に分散型台帳システム10と異なる点について説明する。
【0096】
[2-1.システムの概要]
第2実施形態に係る分散型台帳システム10Aの概要は第1実施形態に係る分散型台帳システム10とほぼ同様なので、説明を省略する。なお、第2実施形態において、第1実施形態と同様の構造及び機能を有する構成要素は、
図1~
図10を参照し、これらの図に示された各構成要素の符号の後ろにアルファベット「A」を付して説明する。
【0097】
[2-2.リーダノード200Aの機能]
図11を用いて、本実施形態に係る分散型台帳システム10Aのリーダノード200Aの機能を説明する。
図11は、本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。
図11に示すリーダノード200Aの各機能部は、
図5のリーダノード200の各機能部に類似しているが、整列処理部230A及び分散処理部250Aの構成が
図5の整列処理部230及び分散処理部250と相違する。
【0098】
図11に示すように、整列処理部230Aは排他制御機能231Aを有している。また、分散処理部250Aはデータ同期アルゴリズム機能251Aを有している。排他制御機能231Aは、データ更新の衝突を防ぐため、直列に整列された各トランザクションに対して順にデータ更新を行う制御(排他制御)をログに追加する機能を有している。排他制御機能231Aとして、例えばストリクトツーフェーズロック(S2PL)プロトコルを採用することができる。データ同期アルゴリズム機能251Aは、リーダノード200Aから複数のフォロワノード300Aにログを送付するアルゴリズムであり、後から複数のフォロワノード300A間で不整合が起きないように複数のフォロワノード300A間で同期を取るアルゴリズムである。データ同期アルゴリズム機能251Aは、分散合意アルゴリズム(Raft)であってもよく、その一部の機能であってもよい。
【0099】
分散処理部250Aは、過半数のフォロワノード300Aにおいてログの複製が正常に行われたことを確認した場合に、ログの複製が完了したと見なす。一方、ログの複製が正常に行われたことを示すフォロワノード300Aの数が半数以下の場合、その数が過半数に達するまで分散処理をリトライする、又は待機する。
【0100】
[2-3.排他制御機能]
排他制御の具体的なシーケンスを
図12に示す。
図12は、本発明の一実施形態に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。
図12に示すように、リーダノード200Aが複数のトランザクションを含むブロックを受信する(ステップS810A)と、整列処理部230Aによって、トランザクションTX1-1、TX1-2の順で整列される。排他制御機能231Aは、トランザクションTX1-1の処理(ステップS812A)が行われる前に各ノードのデータ更新に対してロックをかける処理を追加する(ステップS811A)。S811A及びS812Aの後に、各ノードにおいて更新されたデータを永続化する(ステップS813A)。具体的には、S813Aでは、S812Aによって規定された内容で各ノードのデータ更新(データベースの書き換え)を行う。S813Aの後にS811Aでかけたロックを解除する(ステップS814A)。ロックの解除後は、トランザクションTX1-2に対する処理(ステップS815A~S818A)が行われる。なお、トランザクションTX1-2の処理内容はトランザクションTX1-1の処理内容と同じなので、詳細な説明は省略する。なお、この場合、トランザクションTX1-1とTX1-2とは順序が逆になってもよい。
【0101】
上記の構成を換言すると、上記の排他制御は、複数のトランザクションの各々(例えば、TX1-1、・・・、TX1-i、・・・、TX2-1、・・・、TX2-jの各々)に対して、各トランザクションの処理の前に各ノード(台帳)に対する更新処理をロックし、各ノード(台帳)に対して、各トランザクションに応じた更新処理を行い、当該更新処理の後にロックを解除する制御である。
【0102】
図13は、本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。
図13に示す例は、複数のブロックを受信した場合に、ブロック単位で排他制御を行う場合の一例である。
図13では、2つのブロックを受信した場合について例示するが、受信するブロックの数は3つ以上であってもよい。
図13では、
図4と同様に、ブロックBL1がトランザクションTX1-1~TX1-iを含み、ブロックBL2がトランザクションTX2-1~TX2-jを含む。
図13では、ブロックBL1は整列処理部230Aによって、トランザクションTX1-1~TX1-iの順で整列される。同様に、ブロックBL2はトランザクションTX2-1~TX2-jの順で整列される。
【0103】
排他制御機能231Aは、ブロックBL1、BL2を受信する(ステップS820A-1~S820A-2)と、トランザクションTX1-1~TX1-iの処理(ステップS822A~S823A)が行われる前に各ノードのデータ更新に対してロックをかける処理を追加する(ステップS821A)。S822A~S823Aの後に、各ノードにおいて更新されたデータを永続化する(ステップS824A)。具体的には、S824Aでは、S822A~S823Aによって規定された内容で各ノードのデータ更新を行う。S822A~S823Aの後にS821Aでかけたロックを解除する(ステップS825A)。ロックの解除後は、ブロックBL2のトランザクションTX2-1~TX2-jに対する処理(ステップS826A~S830A)が行われる。なお、トランザクションTX2-1~TX2-jの処理内容はトランザクションTX1-1~TX1-iの処理内容と同じなので、詳細な説明は省略する。なお、この場合、ブロックBL1内のトランザクションTX1-1~TX1-iの処理順、ブロックBL2内のトランザクションTX2-1~TX2-jの処理順の入れ替えはできないが、ブロックBL1とBL2とは順序が逆になってもよい。
【0104】
図14は、本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。
図14に示す例は、複数のブロックを受信した場合に、ブロック間の境界を解消したうえで各ブロックに含まれる複数のトランザクションに対して排他制御を行う場合の一例である。
図14では、2つのブロックを受信した場合について例示するが、受信するブロックの数は3つ以上であってもよい。
図14では、
図4と同様に、ブロックBL1がトランザクションTX1-1~TX1-iを含み、ブロックBL2がトランザクションTX2-1~TX2-jを含む。
図14の例では、TX受信部220AがブロックBL1、BL2を受信するとそれぞれのブロックの境界を解消し、これらのブロックに含まれていた各トランザクションは独立に扱われる。そして、
図14に示すように、各ブロック間に跨がるように、整列処理部230AによってTX1-1、TX2-1、TX1-i、TX2-jの順で整列される。
【0105】
具体的には、
図14に示すように、排他制御機能231Aは、ブロックBL1、BL2を受信する(ステップS840A-1~S840A-2)と、各ブロック間に跨がるように、トランザクションTX1-1(ステップS841A~S844A)、TX2-1(ステップS845A~S848A)、TX1-i(ステップS849A~S852A)、TX2-j(ステップS853A~S856A)の順で
図12と同様の処理を行う。
【0106】
[2-4.データ同期アルゴリズム機能]
データ同期アルゴリズムの具体的なシーケンスを
図15に示す。
図15は、本発明の一実施形態に係る分散型台帳システムにおけるデータ同期アルゴリズムの動作を示すフローチャートを示す図である。
図15のフローチャートは、
図10のフローチャートと類似しているが、
図15のフローチャートは、フォロワノード300Aの合意形成を確認する際に、全てのフォロワノード300Aのうち過半数の合意が確認された場合に、ログの複製が完了したと見なす点、及びフォロワノード300Aのデータの整合性確認を行う点において、
図10のフローチャートと相違する。以下の説明において、
図10と同様の構成については説明を省略し、主に
図10の構成と異なる点について説明する。
【0107】
図15では、S803Aにおいて、全てのフォロワノード300Aの過半数(例えば2/3以上)から合意形成の確認が取れない場合(ステップS803Aの「No」)、S714A→S803Aのステップを繰り返す。一方、全てのフォロワノード300Aの過半数(例えば2/3以上)から合意形成が確認されると(ステップS803Aの「Yes」)、リーダノード200Aにおいてデータ更新(ステップS715A)及び完了通知(ステップS716A)が行われる。
【0108】
また、S804Aのデータ更新の後に、フォロワノード300A間におけるデータの整合性確認が行われる(ステップS805A)。S805Aにおいて、フォロワノード300Aの一部にデータの不整合が確認された場合(ステップS805Aの「No」)、フォロワノード300Aデータの修正が行われる(ステップS806A)。
【0109】
ここで、S803Aで過半数の合意形成が確認されているので、S806Aにおいて、フォロワノード300Aのうち過半数のフォロワノード300Aで同一のデータを有している。つまり、同一のデータを有する過半数のフォロワノード300Aのデータが正しいデータである蓋然性が高いので、その他のフォロワノード300Aのデータを修正する。具体的には、リーダノード200Aに格納されていたログをその他のフォロワノード300Aに再送信し、フォロワノード300Aにおいてそのログに基づくデータ更新を行う。なお、S806Aのデータ修正が行われた後に、再度S805Aの整合性確認が行われる。
【0110】
従来の分散型台帳技術では、クライアント端末からリーダノードに送信された複数のトランザクションに基づく取引処理を行う場合、これらの取引処理に基づく台帳のデータ更新の衝突が発生してしまうという問題があった。さらに、データ更新が衝突しない形で整列されたログをリーダノードからフォロワノードに送付する必要があるが、複数のフォロワノード間で完全な同期を取ることが難しいという問題があった。
【0111】
しかし、本実施形態に係る分散型台帳システム10Aによると、リーダノード200Aが受信した複数のトランザクションに対して排他制御を行うログを形成し、データ同期アルゴリズムを用いて、当該ログを複数のフォロワノード300Aに送信することで、各ノードにおける整合性を確保したまま各ノード間の同期を取ることができる。特に、クライアント端末400Aからリーダノード200Aに、複数のトランザクションがブロック単位で送信される場合、複数のトランザクションが同一のキーに対する更新処理の要求を含む場合が想定されるが、そのような場合であっても、データ更新の衝突を発生させることなく、複数のノード間の不整合を抑制することができる。
【0112】
〈第3実施形態〉
図16~
図17を用いて、本発明の第3実施形態に係る分散型台帳システム10Bについて説明する。以下の説明において、分散型台帳システム10Bの構成のうち、第1実施形態に係る分散型台帳システム10と同様の特徴を有する構成には、分散型台帳システム10と同様の符号の後にアルファベット「B」を付して、詳細な説明を省略する場合がある。以下の分散型台帳システム10Bの説明において、主に分散型台帳システム10と異なる点について説明する。
【0113】
[3-1.システムの概要]
第3実施形態に係る分散型台帳システム10Bの概要は第1実施形態に係る分散型台帳システム10とほぼ同様なので、説明を省略する。なお、第3実施形態において、第1実施形態と同様の構造及び機能を有する構成要素は、
図1~
図10を参照し、これらの図に示された各構成要素の符号の後ろにアルファベット「B」を付して説明する。
【0114】
[3-2.リーダノード200Bの機能]
第3実施形態に係る分散型台帳システム10Bのリーダノード200Bの機能は、第1実施形態に係る分散型台帳システム10と類似しているが、リーダノード200Bは、複数のフォロワノード300Bにログを送信する際に、複数のログをグループ単位にまとめて送信する点において、リーダノード200と相違する。以下、リーダノード200Bの機能について
図5を参照して説明する。ただし、上記のように、以下の説明では、
図5に示す符号の後にアルファベット「B」付した。
【0115】
リーダノード200BのCM通信部210B、TX受信部220B、整列処理部230B、及びログ生成部240Bは、それぞれリーダノード200の各機能部と同様の特徴を有するため、説明を省略する。
【0116】
分散処理部250Bは、複数のフォロワノード300Bに、ログ生成部240Bによって生成された複数のログを、リーダノード200Bとフォロワノード300Bとの間で確立された1回の通信の間にまとめて送信する。なお、分散処理部250Bは、複数のログを含むグループ単位で、当該複数のログを複数のフォロワノード300Bに送信する。
【0117】
例えば、第1実施形態のように、クライアント端末400Bからリーダノード200Bに複数のトランザクションがブロック単位で送信された場合、
図16に示すように、複数のブロックBL1~BL3をまとめて1つのグループGLとして、リーダノード200Bから複数のフォロワノード300Bに送信する。なお、
図16において、ブロックBL1の「ログ1-1~ログ1-i」、ブロックBL2の「ログ2-1~ログ2-j」、ブロックBL3の「ログ3-1~ログ3-k」は、それぞれ「TX1-1~TX1-i」、「TX2-1~TX2-j」、「TX3-1~TX3-k」に対応するログである。第1実施形態のブロックと同様に、グループGL内のブロック間にも境界が定義される。また、
図16に示すようにログがブロックBL1~BL3の各々の境界を維持する場合、例えば
図13に示すような処理が行われる。ただし、
図13の処理に限定されない。
【0118】
上記のように、グループGLには、クライアントプロセス411B-1から受信したトランザクションTX1-1に基づくログ1-1と、クライアントプロセス411B-2から受信したトランザクションTX2-1に基づくログ2-1と、クライアントプロセス414B-nから受信したトランザクションTX3-1に基づくログ3-1と、を有する。つまり、グループGLには、異なるクライアントプロセス410B又は異なるクライアント端末400Bから受信したトランザクションに基づく複数のログが含まれている。上記の場合、グループGLに含まれる複数のログに関連するトランザクションは、クライアント端末400Bに接続した互いに異なる複数のユーザ端末による取引要求に対応するトランザクションである。
【0119】
又は、
図17に示すように、ブロックBL1~BL3の各々の境界が解消された状態で「ログ1-1~ログ1-i」、「ログ2-1~ログ2-j」、「ログ3-1~ログ3-k」が1つのグループGLとしてリーダノード200Bから複数のフォロワノード300Bに送信されてもよい。このように各ブロックの境界が解消される場合、例えば
図14のような処理が行われる。ただし、この場合、クライアント端末400Bからリーダノード200Bに複数のトランザクションが、ブロック単位ではなく個々に送信されてもよい。
【0120】
従来の分散型台帳技術では、リーダノードによって生成されたログをフォロワノードに送信する際に、ログ単位で送信されていた。しかし、ログの送信を行う度にリーダノードとフォロワノードとの通信を確立する必要があるため、複数のログを送信するための時間が長くなってしまい、スループットが低下してしまう問題があった。
【0121】
しかし、本実施形態に係る分散型台帳システム10Bによると、リーダノード200Bとフォロワノード300Bとの1回の通信の確立において、複数のログをグループ単位でリーダノード200Bからフォロワノード300Bに送信することができるため、複数のログに送信におけるスループットを向上させることができる。
【0122】
以上、本発明の一実施形態について図面を参照しながら説明したが、本発明は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施形態の分散型台帳システムを基にして、当業者が適宜構成要素の追加、削除もしくは設計変更を行ったものも、本発明の要旨を備えている限り、本発明の範囲に含まれる。さらに、上述した各実施形態は、相互に矛盾がない限り適宜組み合わせが可能であり、各実施形態に共通する技術事項については、明示の記載がなくても各実施形態に含まれる。
【0123】
上述した各実施形態の態様によりもたらされる作用効果とは異なる他の作用効果であっても、本明細書の記載から明らかなもの、又は、当業者において容易に予測し得るものについては、当然に本発明によりもたらされるものと解される。
【符号の説明】
【0124】
10:分散型台帳システム、 31~38:台帳、 41~47:クライアント端末、 100~103:ノード、 110~113:サーバ、 120~123:データベース、 200:リーダノード、 220:受信部、 230:整列処理部、 231A:排他制御機能、 240:ログ生成部、 250:分散処理部、 251A:データ同期アルゴリズム機能、 260:データ更新部、 290:通信バス、 300~304:フォロワノード、 310:ログ受信部、 320:ログ格納部、 330:合意形成部、 340:データ更新部、 390:通信バス、 400~404:クライアント端末、 410~414:クライアントプロセス、 420:取引要求受信部、 430:生成部、 440:バッファリング部、 450:通信部、 460:送信部、 490:通信バス、 500:ネットワーク、 600:専用ネットワーク