JP7016389B1 - システム及びプログラム - Google Patents

システム及びプログラム Download PDF

Info

Publication number
JP7016389B1
JP7016389B1 JP2020132481A JP2020132481A JP7016389B1 JP 7016389 B1 JP7016389 B1 JP 7016389B1 JP 2020132481 A JP2020132481 A JP 2020132481A JP 2020132481 A JP2020132481 A JP 2020132481A JP 7016389 B1 JP7016389 B1 JP 7016389B1
Authority
JP
Japan
Prior art keywords
node
log
nodes
transactions
logs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020132481A
Other languages
English (en)
Other versions
JP2022029244A (ja
Inventor
倫太郎 尾根田
佳紀 秋田
勇貴 宮澤
拓人 小倉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MUFG Bank Ltd
Original Assignee
MUFG Bank Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MUFG Bank Ltd filed Critical MUFG Bank Ltd
Priority to JP2020132481A priority Critical patent/JP7016389B1/ja
Priority to PCT/JP2021/024467 priority patent/WO2022030144A1/ja
Priority to JP2021157144A priority patent/JP2022029453A/ja
Application granted granted Critical
Publication of JP7016389B1 publication Critical patent/JP7016389B1/ja
Publication of JP2022029244A publication Critical patent/JP2022029244A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/02Banking, e.g. interest calculation or account maintenance

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】分散型台帳技術において、取引要求に対する処理の高速化又は複数のノード間において整合性を確保するシステム及びプログラムを提供する。【解決手段】分散型台帳システム10において、台帳を分散して記録する複数のノード100~103のうち1つの第1ノードは、複数のノードのうち第1ノードとは異なる複数の第2ノードに、クライアント端末から受信した複数のトランザクションに基づく複数のログの合計を送信する。第1ノードは、複数の第2ノードに対して、複数のログを送信せずに複数のログの合計を送信してもよい。【選択図】図2

Description

本発明は、分散型台帳技術に関するシステム及びプログラムに関する。
ブロックチェーンを用いた分散型台帳技術が、ビットコイン等の暗号資産(仮想通貨)を管理する方法として用いられている。近年では、これらの技術は、このような暗号資産だけではなく、様々な資産を管理したり移動したりする方法として用いることも検討されている(例えば、特許文献1)。
特開2018-196150号公報
特許文献1に示した分散型台帳技術では、P2P(Peer to Peer)によって接続された複数のノード(1つのリーダノード及びその他の複数のフォロワノード)によって分散台帳ネットワークが形成され、当該分散台帳ネットワークにおける複数のノードによって台帳が分散して記録される。
上記のような従来の分散型台帳技術においては、クライアント端末からの取引要求に対する処理の高速化及び複数のノード間における整合性の確保は重要な課題である。
本発明の目的の一つは、分散型台帳技術において、取引要求に対する処理の高速化又は複数のノード間において整合性を確保することである。
本発明の一実施形態に係るシステムは、台帳を分散して記録する複数のノードのうち1つの第1ノードが、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに、クライアント端末から受信した複数のトランザクションに基づく複数のログの合計を送信する。
前記第1ノードは前記複数の第2ノードに対して、前記複数のログを送信せずに前記複数のログの合計を送信させてもよい。
前記第1ノードは、前記クライアント端末から前記複数のトランザクションを含むブロック単位で前記複数のトランザクションを受信し、前記ブロックに含まれる前記複数のトランザクションに基づいて前記複数のログを生成し、前記複数の第2ノードに対して複数の前記ブロックに含まれる前記複数のログを合計した結果を送信してもよい。
前記第1ノードは前記複数のログを記憶してもよい。
本発明の一実施形態に係るプログラムは、台帳を分散して記録する複数のノードのうち1つの第1ノードに対して、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに、クライアント端末から受信した複数のトランザクションに基づく複数のログの合計を送信することを実行させる。
前記第1ノードに対して、前記複数の第2ノードへ前記複数のログを送信させずに前記複数のログの合計を送信させてもよい。
前記第1ノードに、前記クライアント端末から前記複数のトランザクションを含むブロック単位で前記複数のトランザクションを受信させ、前記ブロックに含まれる前記複数のトランザクションに基づいて前記複数のログを生成させ、前記複数の第2ノードに対して複数の前記ブロックに含まれる前記複数のログを合計した結果を送信させてもよい。
前記第1ノードに前記複数のログを記憶させてもよい。
本発明の一実施形態によれば、分散型台帳技術において、取引要求に対する処理の高速化又は複数のノード間において整合性を確保することができる。
本発明の一実施形態に係る分散型台帳システムの概要を示す図である。 本発明の一実施形態に係る分散型台帳システムの概要を示す図である。 本発明の一実施形態に係る分散型台帳システムの概要を示す図である。 本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。 本発明の一実施形態に係る分散型台帳システムにおけるトランザクション及びログの具体例を示す図である。 本発明の一実施形態に係る分散型台帳システムにおけるログの断面及びログの最終断面の具体例を示す図である。 本発明の一実施形態に係る分散型台帳システムに用いられるクライアント端末の機能構成を示すブロック図である。 本発明の一実施形態に係る分散型台帳システムに用いられるフォロワノードの機能構成を示すブロック図である。 本発明の一実施形態に係る分散型台帳システムの動作を示すシーケンスを示す図である。 本発明の一実施形態に係る分散型台帳システムの動作を示すフローチャートを示す図である。 本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。 本発明の一実施形態に係る分散型台帳システムに用いられるクライアント端末の機能構成を示すブロック図である。 本発明の一実施形態に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。 本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。 本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。 本発明の一実施形態に係る分散型台帳システムにおけるデータ同期アルゴリズムの動作を示すフローチャートを示す図である。
以下、本発明の一実施形態について、図面を参照しながら詳細に説明する。以下に示す実施形態は本発明の実施形態の一例であって、本発明はこの実施形態に限定して解釈されるものではない。すなわち、以下に説明する複数の実施形態に公知の技術を適用して変形をして、様々な態様で実施をすることが可能である。なお、本実施の形態で参照する図面において、同一部分又は同様な機能を有する部分には同一の符号又は同一の符号の後にアルファベットを付し、その繰り返しの説明は省略する。
以下の説明において、トランザクション(TX)は、クライアント端末(ClientMachine;CM)が要求する取引の内容を含む情報である。トランザクションは、互いに関連又は依存する複数の処理によって構成され、当該複数の処理は一体不可分の処理単位として扱われる。具体的には、当該複数の処理の全てが成功した場合には当該トランザクションに関連する取引が成立したと判断され、当該複数の処理の一部が失敗した場合には当該トランザクションに関連する取引が失敗したと判断される。換言すると、トランザクションを構成する複数の処理は、「すべて成功」又は「すべて失敗」のいずれかの結果になることが保証される。例えば、コンピュータ間で入出金処理が行われる場合、入金処理及び出金処理は「どちらも成功」又は「どちらも失敗」であることが要求される。
ログ(又はトランザクションログ)は、複数のトランザクションが整列された情報である。具体的には、ログは、複数のトランザクションに基づいてデータベースの更新が行われる順番を記録したものである。ログは、トランザクションによって規定されたデータの追加、更新、削除などの更新内容を時系列に記録する。システム障害などで処理が中断又は取り消されると、分散型台帳システムは、ログの記録を参照して更新済みのデータを元に戻し、トランザクション開始前の状態に戻す。
以下の実施形態では、分散型台帳システムに含まれるリーダノード(LeaderNode;LN)及びフォロワノード(FollowerNode;FN)として、例えばサーバのような固定された情報処理装置が用いられた構成を例示するが、この構成に限定されない。また、特に技術的な矛盾が生じない限り、異なる実施形態間の技術を組み合わせることができる。
〈第1実施形態〉
[1-1.システムの概要]
図1~図10を用いて、本発明の第1実施形態に係る分散型台帳システム10、分散型台帳システム10を構成する情報処理装置(ノード100)、及びノード100に接続されるクライアント端末400、並びに、これらを動作させるためのプログラムについて説明する。図1~図3は、本発明の一実施形態に係る分散型台帳システムの概要を示す図である。
図1に示すように、分散型台帳システム10は日本全国各地に台帳(データベース;DB)が配置されており、これらの台帳は互いに同期している。つまり、各クライアントは日本全国のどの台帳からでも分散型台帳システム10にアクセスして取引を要求することができ、取引によって更新されたデータは各台帳で同期して格納される。例えば、北海道に配置された台帳31(この例におけるリーダノード)に対してクライアント端末41から「再配達の費用請求」の取引要求(トランザクション)があった場合、台帳31によって当該取引の順序を示す情報(ログ)が生成され、当該ログは他の台帳32~38(この例におけるフォロワノード)に送信され、当該ログに応じたデータ更新が各台帳31~38で行われる。このようにして、台帳31に対して要求された取引に基づいて日本全国各地に配置された台帳31~38の同期処理が行われる。
図1に示すように、分散型台帳システム10は、従来の仮想通貨や資産管理のように人が主体となって取引要求を行うシステムに適用することができる。例えば、分散型台帳システム10が、上記のクライアント端末41を用いた「再配達の費用請求」やクライアント端末42を用いた「部屋の貸し出し」などのシステムに適用されてもよい。また、分散型台帳システム10は、例えばIoT(Internet of Things;モノのインターネット)のように端末が主体となって取引要求を行うシステムに適用することもできる。例えば、分散型台帳システム10が、コンテンツの視聴に係る自動課金(例えば、クライアント端末43による時間課金)、電子書籍の通読に係る自動課金(例えば、クライアント端末44によるページ課金)、及びクライアント端末45による臨時の充電により発生する自動課金など、1円単位又は1円未満の費用請求(マイクロペイメント)が発生しうるサービスに適用されてもよい。また、分散型台帳システム10は、複数の独立した機能を組み合わせることで実現されるマイクロサービスに適用されてもよい。
図2に示すように、クライアント端末400とノード100とは、ネットワーク500を介して通信可能に接続されている。また、各ノード100は、専用ネットワーク600を介して通信可能に接続されている。各ノード100は、台帳(データベース)を分散して記録するノードである。なお、本実施形態では、3つのノード101、102、103を特に区別する必要がない場合、単にノード100という。また、3つのクライアント端末401、402、403を特に区別する必要がない場合、単にクライアント端末400という。
ノード101、102、103は、それぞれサーバ111、112、113及びデータベース121、122、123を含む。これらのサーバ及びデータベースを特に区別する必要がない場合、単にサーバ110及びデータベース120という。サーバ110はデータベース120に対してデータの記録処理及び読み出し処理(データ更新)を実行する。サーバ110は、中央演算処理装置(CPU)及び記憶装置(メモリ)を有しており、これらが協働することで、以下に説明する各種機能を実現する。具体的には、記憶装置に格納されたプログラムをCPUが実行することで、サーバ110の各種機能が実現される。記憶装置は一時的な記憶を行う揮発性の記憶装置であってもよく、不揮発性の記憶装置であってもよく、これらの記憶装置を組み合わせたものであってもよい。
各クライアント端末400から送信されたトランザクションは、ネットワーク500を介して、例えばサーバ111によって受信される。サーバ111において、受信したトランザクションに応じてログの生成が行われる。生成されたログはサーバ111に接続されたデータベース121に格納される。
サーバ111は、専用ネットワーク600を介して、上記ログをサーバ112、113に送信する。ログを受信したサーバ112、113は、当該ログをそれぞれのサーバ112、113に接続されたデータベース122、123に格納すると、ログを適正に受信し格納したことを示す応答をサーバ111に送信する。この動作を「合意」又は「合意形成」という。サーバ111は、サーバ112、113からの合意形成が確認されると、ログの複製が正常に行われたと判断する。ログの複製が正常に行われると、当該ログに基づいて各サーバ111、112、113に接続されたデータベース121、122、123の更新が行われる。このようにして、クライアント端末400から1つのノード101に送信されたトランザクションに基づくデータ更新が各ノードで同期して行われる。
なお、データベース121に格納されたログは、後の工程でデータの不整合が発生した場合に、誤ったデータが格納されたデータベースを修正するために用いられる。
ネットワーク500は、一般的なWorld Wide Web(WWW)のようなインターネット、WAN(Wide Area Network)、又は社内LANなどのLAN(Local Area Network)である。
専用ネットワーク600は、ネットワーク500とは異なり、分散型台帳システム10の専用のネットワークである。つまり、専用ネットワーク600は、クライアント端末400がアクセスすることができないネットワークである。
図1及び図2では説明を省略したが、図2に示す各ノード100は、図3に示すように、1つのリーダノード200と複数のフォロワノード300として機能する。リーダ選出によって複数のノード100から選出された1つのノード100がリーダノード200として機能し、その他のノード100はフォロワノード300として機能する。リーダノード200としての機能は、定期的に又はイベント発生をトリガとして次のノード100に引き継がれる。ただし、リーダノード200は固定されていてもよい。なお、図3のリーダノード200及びフォロワノード300は、それぞれサーバ及びデータベースを有しており、図2のノード100のように動作する。
図3に示すように、リーダノード200には複数のクライアント端末400が接続されている。複数のクライアント端末400の各々は、例えば、サービス提供事業者の通信端末であり、例えば、携帯通信端末サービス、自動車サービス、IoTサービスなどのサービスを提供する事業者が有する情報処理装置(ハードウェア)である。各クライアント端末400において、複数のクライアントプロセス(ClientProcess)410(ソフトウェア)が起動している。例えば、一般的に、情報処理装置として使用されるコンピュータには複数のCPUコアが搭載されているため、処理の並列度を向上させるためにCPUコアの数だけ以下のクライアントプロセス410を起動してもよい。ただし、上記のサービス提供事業者は単なる一例であり、上記以外の様々なサービス提供事業者に適用することができる。また、複数のクライアントプロセス410は単一のCPUによって実現されてもよい。
クライアントプロセス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という。
複数のクライアントプロセス410の各々は、各ユーザによって使用されるユーザ端末から取引要求を受け付け、当該取引要求に対応するトランザクションを生成してリーダノード200に送信する。本実施形態では、クライアントプロセス410は、ユーザ端末からの取引要求毎にトランザクションをリーダノード200に送信するが、ユーザ端末からの複数の取引要求に対応する複数のトランザクションを蓄積してから、これら複数のトランザクションを1回の通信でまとめてリーダノード200に送信してもよい。詳細は後述するが、複数のトランザクションを1回の通信でまとめて送信する場合、リーダノード200にまとめて送信される複数のトランザクションはブロック単位で扱われる。
図3の例では、クライアント端末401のクライアントプロセス411-1は、トランザクションTX1~TX149をリーダノード200に送信する。クライアント端末401のクライアントプロセス411-2は、トランザクションTX150~TX500をリーダノード200に送信する。クライアント端末402のクライアントプロセス412-1は、トランザクションTX501~TX1000をリーダノード200に送信する。上記の各トランザクションは、クライアントプロセス410とリーダノード200との間の各々の通信で、クライアントプロセス410からリーダノード200に送信される。
リーダノード200は、例えば、各クライアント端末400から受信した複数のトランザクションTX1~TX1000を順に整列させる。つまり、データ更新を行う処理順を決定する。このように複数のトランザクションTX1~TX1000及びそれらが整列した順序に基づいて、それぞれログが生成される。ログは各トランザクションTXに対応して生成される。つまり、トランザクションTX1に対してログ1が生成される。また、上記と同様に、複数のトランザクションTX1~TX1000に基づいて、複数のログ1~ログ1000が生成される。
リーダノード200は、上記のようにして生成されたログ1~1000の各々のログを個別に各フォロワノード301、302、303、304に送信するのではなく、これらのログに基づいて、各ログに対する計算を行い、当該計算の結果に基づくログの合計を各フォロワノード301、302、303、304に送信する。ここで、上記の複数のフォロワノードを特に区別する必要がない場合、単にフォロワノード300という。各ログに対する計算結果を「ログの断面」という場合、ログ1~1000の全てのログに対する計算結果(ログの合計)を「ログの最終断面」ということができる。この場合、リーダノード200はフォロワノード300に、ログ1~1000の最終断面のみを送付する、ということができる。
フォロワノード300は、リーダノード200から上記のログの最終断面を受信して格納すると、合意形成したことをリーダノード200に返信する。リーダノード200は、フォロワノード300からの合意形成を確認すると、フォロワノード300によってログの最終断面の複製が正常に行われたと判断する。なお、ログの最終断面の正常な複製を判断する具体的な手法については、後述する。
リーダノード200がログの最終断面の正常な受信が行われたと判断すると、リーダノード200は、当該ログの最終断面に基づいて、リーダノード200のデータ更新を行う。そして、フォロワノード300は、リーダノード200と同様に上記ログの最終断面に基づいてデータの更新を行う。リーダノード200がデータ更新を行うタイミングとフォロワノード300がデータ更新を行うタイミングは同じでなくてもよい。例えば、リーダノード200がデータ更新を行った後に、次のサイクルでリーダノード200からフォロワノード300にログを送信するタイミングで、フォロワノード300がリーダノード200の状態を参照してリーダノード200と同様のデータ更新を行ってもよい。
このデータ更新の後に、各フォロワノード300において更新されたデータ間の整合性の評価が行われる。各フォロワノード300間で更新後のデータに不整合があった場合は、当該不整合を修正するための修正処理が行われる。このような処理によって、各フォロワノード300間の同期が取られる。
従来の仮想通貨や資産管理の取引では、個々の取引の処理速度が重要であり、各トランザクションに応じたログ毎に処理が行われていた。つまり、リーダノード200からフォロワノード300に送信される個々のログに対する処理速度を向上させることを目的としていた。一方、第1実施形態に係る分散型台帳システム10では、個々のログに対する処理速度を向上させるのではなく、複数のログを合計して処理を行うことで、総合的な処理速度を向上させることを目的としている。
[1-2.リーダノード200の機能]
図4を用いて、本実施形態に係る分散型台帳システム10のリーダノード200の機能を説明する。図4は、本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。図4に示すように、リーダノード200は、CM通信部210、TX受信部220、整列処理部230、ログ生成部240、最終断面計算部245、分散処理部250、及びデータ更新部260を有する。これらの機能部は通信バス290によって互いに通信可能に接続されている。これらの機能部の機能は、リーダノード200に備えられた記憶装置に格納されたプログラムをCPUが実行することで実現される。
CM通信部210は、各クライアント端末400から通信確立要求を受信すると、クライアント端末400とリーダノード200との通信を確立する機能を有する。なお、当該通信の確立及び終了のプロトコルとして、例えばTCPを利用することができる。
TX受信部220は、CM通信部210によって上記の通信が確立されると、クライアント端末400から各トランザクション(例えば、TX1~TX1000)を受信する。
整列処理部230は、TX受信部220が受信した複数のトランザクションに対して順に整列する処理を行う。整列処理部230は、TX受信部220が受信した順にトランザクションを整列してもよく、ある特定の規則に従ってトランザクションを整列してもよい。
ログ生成部240は、整列処理部230によって整列された複数のトランザクションの処理内容及び順序を記録したログを生成する。なお、リーダノード200のログ生成部240によって生成されたログ(マスターログ)は、リーダノード200の記憶装置に格納される。マスターログがリーダノード200に格納されていることで、リーダノード200とフォロワノード300との間、又は複数のフォロワノード300間で不整合が発生した場合に、マスターログを用いてログの最終断面を計算し直すことができる。
最終断面計算部245は、ログ生成部240によって生成された各ログの断面に基づいて、ログの最終断面を計算する。具体的には、最終断面計算部245は、データ更新を行う更新対象(例えば、口座番号)毎にデータ更新内容(例えば、振込金額)に基づく計算を行うことで、各更新対象における最終的な更新内容の合計を算出する。最終断面計算部245は、所定の期間に生成されたログに対して最終断面を計算してもよく、生成されたログの数がしきい値に達した場合に、しきい値に達するまでの間に生成されたログに対して最終断面を計算してもよい。
分散処理部250は、最終断面計算部245によって生成されたログの最終断面を複数のフォロワノード300に送信(分散処理)する。例えば、分散処理部250は、[AppendEntries PRC]を使って、生成された全てのログの最終断面を複数のフォロワノード300に送信する。分散処理部250は、フォロワノード300からログの最終断面を正常に格納したことを確認すると、ログの最終断面の複製が正常に行われたと判断する。
データ更新部260は、分散処理部250によってログの最終断面の複製が正常に行われたと判断されると、リーダノード200のデータベースに対してログの最終断面に応じたデータ更新を実行する。そして、データ更新が完了したことをクライアントプロセス410に応答する。なお、この段階では、フォロワノード300のデータベースに対してデータ更新が実行されていないが、リーダノード200のデータ更新と共にフォロワノード300のデータ更新が行われてもよい。
[1-3.トランザクション及びログの具体例]
図5は、本発明の一実施形態に係る分散型台帳システムにおけるトランザクション及びログの具体例を示す図である。図5に示すように、トランザクションTX1は、口座番号AAAから口座番号BBBに10万円移動する、という取引要求に基づくトランザクションである。トランザクションTX2は、口座番号BBBから口座番号CCCに20万円移動する、という取引要求に基づくトランザクションである。
複数のトランザクションTX1、TX2は、同一のクライアントプロセス411-1から送信される。そのため、図5のように、複数のトランザクションTX1、TX2の両方が同一の更新対象である口座番号BBBに対する更新処理の要求を含む場合がある。したがって、これらのトランザクション間で不整合が起きないように、TX1、TX2の順で整列させる。そして、TX1、TX2の順で、それぞれのトランザクションに応じたログ1、ログ2が生成される。なお、図5では、複数のトランザクションが同一の更新対象に対する更新処理を要求する場合を含む構成が例示されているが、複数のトランザクションが同一の更新対象に対する更新処理を要求してなくてもよい。
なお、TX1は、具体的には以下(1)~(6)の処理を含む。
(1)口座番号AAAの残高を取得する(口座番号AAAの残高は100万円)。
(2)口座番号BBBの残高を取得する(口座番号BBBの残高は1000万円)。
(3)口座番号AAAから10万円引いた場合の金額を計算する(90万円)。
(4)口座番号BBBに10万円足した場合の金額を計算する(1010万円)。
(5)口座番号AAAに90万円と書き込む。
(6)口座番号BBBに1010万円と書き込む。
TX1の(1)~(6)の処理は一体不可分として扱われる。つまり、(1)~(6)の処理が全て成功した場合にTX1が成立したと判断され、(1)~(6)の少なくともいずれか一つの処理が失敗した場合はTX1が失敗したと判断される。TX2に関してもTX1の場合と同様に扱われる。
[1-4.ログの最終断面の具体例]
「ログの断面」及び「ログの最終断面」について、具体的な例を用いて説明する。図6は、本発明の一実施形態に係る分散型台帳システムにおけるログの断面及びログの最終断面の具体例を示す図である。図6では、ログ1~1000のうち、ログ1、ログ150、及びログ1000の処理内容が示されている。
ログ1の断面には、口座AAAに10万円と書き込む処理(例えば、残高が0円の口座AAAに10万円を振り込む処理)、及び口座BBBに100万円と書き込む処理(例えば、残高が0円の口座BBBに100万円を振り込む処理)が記録されている。ログ150の断面には、口座AAAに20万円と書き込む処理(例えば、残高が10万円の口座AAAに10万円を振り込む処理)、及び口座BBBに100万円と書き込む処理(例えば、残高が0円の口座CCCに100万円を振り込む処理)が記録されている。ログ1000の断面には、口座AAAに30万円と書き込む処理(例えば、残高が20万円の口座AAAに10万円を振り込む処理)、及び口座BBBに50万円と書き込む処理(例えば、残高が100万円の口座BBBから他の口座に50万円を振り込む処理)が記録されている。
従来は各ログがリーダノード200からフォロワノード300に送信されていたが、本実施形態では、リーダノード200においてログ1~1000の各断面が合計され、最終的な、口座AAAに30万円と書き込み、口座BBBに50万円と書き込み、口座CCCに100万円と書き込むという、ログ1~1000の最終断面が計算される。そして、当該最終断面だけがリーダノード200からフォロワノード300に送信される。つまり、リーダノード200は、複数のログの代わりに、複数のログの最終断面をフォロワノード300に送信する。
[1-5.クライアント端末400の機能]
図7を用いて、本実施形態に係る分散型台帳システム10のクライアント端末400の機能を説明する。図7は、本発明の一実施形態に係る分散型台帳システムに用いられるクライアント端末の機能構成を示すブロック図である。図7に示すように、クライアント端末400は、取引要求受信部420、TX生成部430、LN通信部450、及びTX送信部460を有する。これらの機能部は通信バス490によって互いに通信可能に接続されている。これらの機能部の機能は、クライアント端末400に備えられた記憶装置に格納されたプログラムをCPUが実行することで実現される。なお、上記の各機能部は、クライアント端末400の各クライアントプロセス410によって実行される。
取引要求受信部420は、クライアントプロセス410に接続されるユーザ端末から取引要求を受信する。取引要求受信部420は、同一のユーザ端末から取引要求を受信してもよく、異なるユーザ端末から取引要求を受信してもよい。
TX生成部430は、取引要求受信部420が受信した取引要求の内容に応じたトランザクションTXを生成する。トランザクションTXは、取引要求毎に生成される。
LN通信部450は、リーダノード200のCM通信部210に通信確立要求を送信する。LN通信部450は、TX生成部430によってトランザクションTXが生成される度に通信確立要求をCM通信部210に送信する。
TX送信部460は、LN通信部450によって通信が確立されると、TX生成部430によって生成されたトランザクションTXをリーダノード200のTX受信部220に送信する。
[1-6.フォロワノード300の機能]
図8を用いて、本実施形態に係る分散型台帳システム10のフォロワノード300の機能を説明する。図8は、本発明の一実施形態に係る分散型台帳システムに用いられるフォロワノードの機能構成を示すブロック図である。図8に示すように、フォロワノード300は、断面受信部310、断面格納部320、合意形成部330、及びデータ更新部340を有する。これらの機能部は通信バス390によって互いに通信可能に接続されている。これらの機能部の機能は、フォロワノード300に備えられた記憶装置に格納されたプログラムをCPUが実行することで実現される。
断面受信部310は、分散処理部250によって送信されたログの最終断面を受信する。断面格納部320は、断面受信部310によって受信されたログの最終断面をフォロワノード300に備えられた記憶装置又はデータベースに格納する。合意形成部330は、断面格納部320によってログの最終断面の格納が正常に行われた場合に、合意形成したことをリーダノード200に返信する。データ更新部340は、断面受信部310がログの最終断面を受信する際にリーダノード200のデータを確認し、リーダノード200のデータに応じてフォロワノード300のデータベースに対してログの最終断面に応じたデータ更新を実行する。
[1-7.分散型台帳システム10の動作]
図9は、本発明の一実施形態に係る分散型台帳システムの動作を示すシーケンスを示す図である。まず、クライアント端末400においてユーザ端末からの取引要求に応じたトランザクションTXが生成される(ステップS701)。生成されたトランザクションTXはリーダノード200に送信される(ステップS702)。
リーダノード200において、トランザクションTXが受信されると(ステップS711)、受信されたトランザクションTXは、例えば受信された順に整列される(ステップS712)。そして、整列されたトランザクションTXの処理内容及び順序に基づいてログが生成される(ステップS713)。生成されたログの数がしきい値に到達すると(ステップS714)、しきい値に達するまでの間に生成されたログに対してログの最終断面の計算が行われる(ステップS715)。計算されたログの最終断面はリーダノード200から複数のフォロワノード301、302に送信される(ステップS716)。
フォロワノード301、302において、リーダノード200から送信されたログの最終断面が受信されると、各々のフォロワノードにログの最終断面を格納する処理が行われる(ステップS721、S731)。ログの最終断面の格納が正常に行われると、合意形成したことをリーダノード200に返信する(ステップS722、S732)。リーダノード200は、合意形成を確認することで、フォロワノード301、302においてログの最終断面が正常に複製されたと判断し、データ更新を行う(ステップS717)。そして、リーダノード200はデータ更新が正常に行われたことをクライアント端末400に通知する(ステップS718、S703)。
なお、図9では、フォロワノード301、302において、ログの最終断面に基づくデータ更新が行われていないが、次のサイクルでログの最終断面がリーダノード200からフォロワノード301、302に送信されるタイミングで、フォロワノード301、302がリーダノード200の状態を参照してリーダノード200と同様に前のサイクルで受信したログの最終断面に基づいてデータ更新を行う。ただし、フォロワノード301、302のログの最終断面に基づくデータ更新は、リーダノード200のデータ更新と同じタイミングで行われてもよい。
図10は、本発明の一実施形態に係る分散型台帳システムの動作を示すフローチャートを示す図である。図10のフローチャートにおいて、図9のシーケンスと同様のステップには図9と同じ符号を付した。動作フローが開始し、トランザクションTXが発生(ステップS701)してからログの生成(ステップS713)が行われるまでのフローは図9と同じなので、説明を省略する。
S713のログ生成の後に、ログの最終断面を計算する条件が整っているかどうかの判定が行われる(ステップS802)。S802において、ログの最終断面を計算する条件が整っていないと判定された場合(ステップS802の「No」)、S701まで戻り、次のトランザクションTXの発生を待つ。一方、S802において、ログの最終断面を計算する条件が整っていると判定された場合(ステップS802の「Yes」)、ログの最終断面の計算が行われる(ステップS715)。S802において、例えば生成されたログの数がしきい値に到達しているか否かを判定する。この場合、生成されたログの数がしきい値に到達している場合、ログの最終断面を計算する条件が整っていると判定する。そして、S715で計算されたログの最終断面はリーダノード200からフォロワノード300に送信される(ステップS716)。
S716の後に、リーダノード200によって合意形成の確認が行われる(ステップS803)。S803において、全てのフォロワノード300から合意形成の確認が取れない場合(ステップS803の「No」)、S716→S803のステップを繰り返す。一方、全てのフォロワノード300から合意形成が確認されると(ステップS803の「Yes」)、リーダノード200においてデータ更新(ステップS717)及び完了通知(ステップS718)が行われる。続いて、フォロワノード300においてS717と同様のデータ更新が行われる(ステップS804)。
従来の分散型台帳技術では、クライアント端末によって要求される個々の取引を迅速に処理することが要求されていた。そのため、当該取引に関連するトランザクションに基づいてログが生成される度に、個々のログがリーダノードからフォロワノードに送信されていた。しかし、ログの送信を行う度にリーダノードとフォロワノードとの通信を確立する必要があるため、複数のログを送信するための時間が長くなってしまい、スループットが低下してしまうという問題があった。
しかし、本実施形態に係る分散型台帳システム10によると、リーダノード200とフォロワノード300との1回の通信の確立において、複数のログが合計されたログの最終断面をリーダノード200からフォロワノード300に送信することができる。したがって、分散台帳ネットワークにおけるノード間の同期処理におけるスループットを向上させることができる。
〈第2実施形態〉
図11~図16を用いて、本発明の第2実施形態に係る分散型台帳システム10Aについて説明する。以下の説明において、分散型台帳システム10Aの構成のうち、第1実施形態に係る分散型台帳システム10と同様の特徴を有する構成には、分散型台帳システム10と同様の符号の後にアルファベット「A」を付して、詳細な説明を省略する場合がある。なお、第1実施形態の図面等を参照しながら第2実施形態に係る分散型台帳システム10Aを説明する場合、図1~図10に記載された符号に対してアルファベット「A」を付して説明する。以下の分散型台帳システム10Aの説明において、主に分散型台帳システム10と異なる点について説明する。
[2-1.システムの概要]
第2実施形態に係る分散型台帳システム10Aの概要は第1実施形態に係る分散型台帳システム10とほぼ同様なので、説明を省略する。分散型台帳システム10Aでは、クライアントプロセス410Aからリーダノード200Aに送信されるトランザクションがブロック単位でまとめて送信される点、複数のトランザクションが排他制御によって整列される点、及びログの最終断面がデータ同期アルゴリズムによってリーダノード200Aからフォロワノード300Aに送信される点において、第1実施形態に係る分散型台帳システム10と相違する。
図3を参照して説明すると、分散型台帳システム10Aでは、クライアントプロセス410Aは、ユーザ端末からの取引要求毎にトランザクションをリーダノード200Aに送信するのではなく、ユーザ端末からの複数の取引要求に対応する複数のトランザクションを蓄積してから、これら複数のトランザクションを1回の通信でまとめてリーダノード200Aに送信する。リーダノード200Aにまとめて送信される複数のトランザクションはブロック単位で扱われる。
トランザクションはクライアントプロセス410A毎にまとめられる。つまり、クライアントプロセス411A-1は、例えばトランザクションTX1~TX149を1回の通信でまとめてリーダノード200Aに送信する。同様に、クライアントプロセス411A-2は例えばトランザクションTX150~TX500を、クライアントプロセス412A-1は例えばトランザクションTX501~TX1000を、それぞれ1回の通信でまとめてリーダノード200Aに送信する。また、トランザクションTX1~TX1000に基づいて生成されるログ1~ログ1000もブロック単位で生成される。つまり、ログ1~ログ149、ログ150~ログ500、及びログ501~ログ1000の各々がブロック単位で生成される。
異なるブロック間には境界が定義される。具体的には、トランザクションTX1~TX149には、各トランザクションが例えば第1ブロックに属していることを示すブロック識別子が付与される。同様に、トランザクションTX150~TX500には、各トランザクションが第2ブロックに属していることを示すブロック識別子が付与される。同様に、トランザクションTX501~TX1000には、各トランザクションが第3ブロックに属していることを示すブロック識別子が付与される。これらのブロック識別子はリーダノード200Aによって付される。ただし、ブロック識別子がクライアントプロセス410Aによって付されてもよい。なお、上記のようにトランザクションにブロック識別子を付す以外に、個々のトランザクションTXと各トランザクションTXが属するブロックとを管理するテーブルが設けられていてもよい。
[2-2.リーダノード200Aの機能]
図11を用いて、本実施形態に係る分散型台帳システム10Aのリーダノード200Aの機能を説明する。図11は、本発明の一実施形態に係る分散型台帳システムに用いられるリーダノードの機能構成を示すブロック図である。図11に示すリーダノード200Aの各機能部は、図4のリーダノード200の各機能部に類似しているが、整列処理部230A及び分散処理部250Aの構成が図4の整列処理部230及び分散処理部250と相違する。また、TX受信部220Aの機能が図4のTX受信部220の機能と相違する。
まず、TX受信部220Aは、CM通信部210Aによって確立された1回の通信の間に、クライアント端末400Aから複数のトランザクションを受信する。当該通信の確立及び終了のプロトコルとして、例えばTCPを利用することができる。なお、TCPのデータ部には、ブロック識別子、当該ブロック識別子に関連付けられたトランザクション数(ブロックに含まれるトランザクションの数)、及びトランザクションの内容(データ更新対象のキー及びデータ更新の値を含む)が含まれる。なお、TX受信部220Aは、上記のように複数のトランザクションをブロック単位で受信する。TX受信部220Aは、トランザクションと共に、ブロックを定義する情報を受信する。つまり、TX受信部220Aは、異なるブロックの境界を定義する情報を受信する。
また、図11に示すように、整列処理部230Aは排他制御機能231Aを有している。排他制御機能231Aは、データ更新の衝突を防ぐため、直列に整列された各トランザクションに対して順にデータ更新を行う制御(排他制御)をログに追加する機能を有している。排他制御機能231Aとして、例えばストリクトツーフェーズロック(S2PL)プロトコルを採用することができる。最終断面計算部245Aは、このように排他制御の機能が追加されたログを用いてログの最終断面を計算する。
分散処理部250Aはデータ同期アルゴリズム機能251Aを有している。データ同期アルゴリズム機能251Aは、リーダノード200Aから複数のフォロワノード300Aにログの最終断面を送付するアルゴリズムであり、後から複数のフォロワノード300A間で不整合が起きないように複数のフォロワノード300A間で同期を取るアルゴリズムである。データ同期アルゴリズム機能251Aは、分散合意アルゴリズム(Raft)であってもよく、その一部の機能であってもよい。
ログをブロック単位で生成する場合、整列処理部230Aは、各ブロックの中だけでトランザクションの整列処理を行い、異なるブロック間でトランザクションの入れ替えは行わない。一方、ログをブロック単位で生成しない(つまり、ブロックの境界を解除した)場合、整列処理部230Aは、ブロック間に跨がるトランザクションの整列処理を行う。つまり、この場合、整列処理部230Aは、異なるブロックのトランザクションを入れ替えることができる。ログをブロック単位で生成する場合は、ブロックの境界を定義した情報をログにも引き継ぐ。一方、ログをブロック単位で生成しない場合、ブロックの境界を定義した情報は削除される又は無効化される。
分散処理部250Aは、過半数のフォロワノード300Aにおいてログの最終断面の複製が正常に行われたことを確認した場合に、ログの最終断面の複製が完了したと見なす。一方、ログの最終断面の複製が正常に行われたことを示すフォロワノード300Aの数が半数以下の場合、その数が過半数に達するまで分散処理をリトライする、又は待機する。
[2-3.クライアント端末400Aの機能]
図12を用いて、本実施形態に係る分散型台帳システム10Aのクライアント端末400Aの機能を説明する。図12は、本発明の一実施形態に係る分散型台帳システムに用いられるクライアント端末の機能構成を示すブロック図である。図12に示すクライアント端末400Aの各機能部は、図7のクライアント端末400の各機能部に類似しているが、TXバッファリング部440Aが設けられている点において、クライアント端末400の各機能部とは相違する。
TXバッファリング部440Aは、TX生成部430Aによって生成されたトランザクションTXをバッファリングする。つまり、TXバッファリング部440Aは一時的な記憶装置を有しており、当該記憶装置にトランザクションTXを一時的に格納する。TXバッファリング部440Aには、バッファリングするトランザクションTXの数に対するしきい値が設定されている。TXバッファリング部440Aは、バッファリングするトランザクションTXの数がしきい値に達した場合に、トリガ信号を生成する。例えば、TXバッファリング部440Aは、バッファリングするトランザクションTXの数が100個に達したらトリガ信号を生成する。又は、TXバッファリング部440Aは、上記しきい値の設定の代わりに、所定の期間を計測する機能が備えられていてもよい。この場合、TXバッファリング部440Aは、所定の期間が経過する度にトリガ信号を生成する。例えば、TXバッファリング部440Aは、0.1秒毎にトリガ信号を生成する。ただし、上記の数値はあくまで一例であり、上記の値に限定されない。
なお、LN通信部450Aは、TXバッファリング部440Aによって生成されたトリガ信号に基づいて通信確立要求をCM通信部210Aに送信する。
TX送信部460Aは、LN通信部450Aによって確立された1回の通信の間に、リーダノード200AのTX受信部220Aに対して、前のサイクルでトランザクションをリーダノード200Aに送信してから現在のサイクルでトリガ信号が生成されるまでの間に生成された複数のトランザクションを1ブロックにまとめて送信する。TX送信部460Aがトリガ信号に応じて複数のトランザクションを送信すると、TXバッファリング部440Aに一時的に格納されていたトランザクションTXは削除され、次のサイクルのトランザクションTXのバッファリングを開始する。
[2-4.排他制御機能]
排他制御の具体的なシーケンスを図13に示す。図13は、本発明の一実施形態に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。図13に示すように、リーダノード200Aが複数のトランザクションを含むブロックを受信する(ステップS810A)と、整列処理部230Aによって、トランザクションTX1、TX2の順で整列される。排他制御機能231Aは、トランザクションTX1の処理(ステップS812A)が行われる前に各ノードのデータ更新に対してロックをかける処理を追加する(ステップS811A)。S811A及びS812Aの後に、各ノードにおいて更新されたデータを永続化する(ステップS813A)。具体的には、S813Aでは、S812Aによって規定された内容で各ノードのデータ更新(データベースの書き換え)を行う。S813Aの後にS811Aでかけたロックを解除する(ステップS814A)。ロックの解除後は、トランザクションTX2に対する処理(ステップS815A~S818A)が行われる。なお、トランザクションTX2の処理内容はトランザクションTX1の処理内容と同じなので、詳細な説明は省略する。なお、この場合、トランザクションTX1とTX2とは順序が逆になってもよい。
上記の構成を換言すると、上記の排他制御は、複数のトランザクションのうちの1つの対象トランザクション(例えば、TX1)に対して、当該対象トランザクションの処理の前に各ノード(台帳)に対する更新処理をロックし、各ノード(台帳)に対して、当該対象トランザクションに応じた更新処理を行い、当該更新処理の後にロックを解除する制御である。
図14は、本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。図14に示す例は、複数のブロックを受信した場合に、ブロック単位で排他制御を行う場合の一例である。図14では、2つのブロックを受信した場合について例示するが、受信するブロックの数は3つ以上であってもよい。図14では、ブロックBL1がトランザクションTX1~TX149を含み、ブロックBL2がトランザクションTX150~TX500を含む。図14では、ブロックBL1は整列処理部230Aによって、トランザクションTX1~TX149の順で整列される。同様に、ブロックBL2はトランザクションTX150~TX500の順で整列される。図示しないが、もちろんこれらの処理の後にトランザクションTX501~1000が順に整列されてもよい。
排他制御機能231Aは、ブロックBL1、BL2を受信する(ステップS820A-1~S820A-2)と、トランザクションTX1~TX149の処理(ステップS822A~S823A)が行われる前に各ノードのデータ更新に対してロックをかける処理を追加する(ステップS821A)。S822A~S823Aの後に、各ノードにおいて更新されたデータを永続化する(ステップS824A)。具体的には、S824Aでは、S822A~S823Aによって規定された内容で各ノードのデータ更新を行う。S822A~S823Aの後にS821Aでかけたロックを解除する(ステップS825A)。ロックの解除後は、ブロックBL2のトランザクションTX150~TX500に対する処理(ステップS826A~S830A)が行われる。なお、トランザクションTX150~TX500の処理内容はトランザクションTX1~TX149の処理内容と同じなので、詳細な説明は省略する。なお、この場合、ブロックBL1内のトランザクションTX1~TX149の処理順、ブロックBL2内のトランザクションTX150~TX500の処理順の入れ替えはできないが、ブロックBL1とBL2とは順序が逆になってもよい。
図15は、本発明の一実施形態の変形例に係る分散型台帳システムにおける排他制御の動作を示すシーケンスを示す図である。図15に示す例は、複数のブロックを受信した場合に、ブロック間の境界を解消したうえで各ブロックに含まれる複数のトランザクションに対して排他制御を行う場合の一例である。図15では、2つのブロック(BL1、BL2)を受信した場合について例示するが、受信するブロックの数は3つ以上であってもよい。図15では、ブロックBL1がトランザクションTX1~TX149を含み、ブロックBL2がトランザクションTX150~TX500を含む。図15の例では、TX受信部220AがブロックBL1、BL2を受信するとそれぞれのブロックの境界を解消し、これらのブロックに含まれていた各トランザクションは独立に扱われる。そして、図15に示すように、各ブロック間に跨がるように、整列処理部230AによってTX1、TX500、TX149、TX150の順で整列される。
具体的には、図15に示すように、排他制御機能231Aは、ブロックBL1、BL2を受信する(ステップS840A-1~S840A-2)と、各ブロック間に跨がるように、トランザクションTX1(ステップS841A~S844A)、TX500(ステップS845A~S848A)、TX149(ステップS849A~S852A)、TX150(ステップS853A~S856A)の順で図13と同様の処理を行う。
図14及び図15の場合において、リーダノード200Aは、ブロックBL1及びブロックBL2に含まれるトランザクションTX1~TX500に基づいて複数のログ1~ログ500を生成し、フォロワノード300Aに対して、生成された複数のログ1~ログ500を合計した結果(最終断面)を送信する。
[2-5.データ同期アルゴリズム機能]
データ同期アルゴリズムの具体的なシーケンスを図16に示す。図16は、本発明の一実施形態に係る分散型台帳システムにおけるデータ同期アルゴリズムの動作を示すフローチャートを示す図である。図16のフローチャートは、図10のフローチャートと類似しているが、図16のフローチャートは、トランザクションTXの数がしきい値に到達した場合に通信確立が行われる点、フォロワノード300Aの合意形成を確認する際、全てのフォロワノード300Aのうち過半数の合意が確認された場合にログの最終断面の複製が完了したと見なす点、及びフォロワノード300Aのデータの整合性確認を行う点において、図10のフローチャートと相違する。以下の説明において、図10と同様の構成については説明を省略し、主に図10の構成と異なる点について説明する。
まず、クライアント端末400AにおいてトランザクションTXが発生すると(S701A)、トランザクションTXが発生する度にトランザクションTXを送信する条件を満たしているか否かの確認が行われる(ステップS805A)。S701Aにおいて、トランザクションTXを送信する条件が満たされていると判定された場合(S701Aの「Yes」)、クライアント端末400Aからリーダノード200Aへ通信確立要求が送信される(ステップS801A)。一方、S701Aにおいて、トランザクションTXを送信する条件が満たされていないと判定された場合(S701Aの「No」)、S701Aまで戻り、次のトランザクションTXの発生を待つ。
また、S803Aにおいて、全てのフォロワノード300Aの過半数(例えば2/3以上)から合意形成の確認が取れない場合(ステップS803Aの「No」)、S716A→S803Aのステップを繰り返す。一方、全てのフォロワノード300Aの過半数(例えば2/3以上)から合意形成が確認されると(ステップS803Aの「Yes」)、リーダノード200Aにおいてデータ更新(ステップS717A)及び完了通知(ステップS718A)が行われる。
また、S804Aのデータ更新の後に、フォロワノード300A間におけるデータの整合性確認が行われる(ステップS806A)。S806Aにおいて、フォロワノード300Aの一部にデータの不整合が確認された場合(ステップS806Aの「No」)、フォロワノード300Aデータの修正が行われる(ステップS807A)。
ここで、S803Aで過半数の合意形成が確認されているので、S807Aにおいて、フォロワノード300Aのうち過半数のフォロワノード300Aで同一のデータを有している。つまり、同一のデータを有する過半数のフォロワノード300Aのデータが正しいデータである蓋然性が高いので、その他のフォロワノード300Aのデータを修正する。具体的には、リーダノード200Aに格納されていたログの最終断面をその他のフォロワノード300Aに再送信し、フォロワノード300Aにおいてそのログの最終断面に基づくデータ更新を行う。なお、S807Aのデータ修正が行われた後に、再度S806Aの整合性確認が行われる。
本実施形態に係る分散型台帳システム10Aによると、リーダノード200Aが受信した複数のトランザクションに対して排他制御を行うログを形成し、さらにそのログを用いて生成したログの最終断面を、データ同期アルゴリズムを用いて複数のフォロワノード300Aに送信することで、各ノードにおける整合性を確保したまま各ノード間の同期を取ることができる。特に、クライアント端末400Aからリーダノード200Aに、複数のトランザクションがブロック単位で送信される場合、複数のトランザクションが同一の更新対象に対する更新処理の要求を含む場合が想定されるが、そのような場合であっても、データ更新の衝突を発生させることなく、複数のノード間の不整合を抑制することができる。
以上、本発明の一実施形態について図面を参照しながら説明したが、本発明は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施形態の分散型台帳システムを基にして、当業者が適宜構成要素の追加、削除もしくは設計変更を行ったものも、本発明の要旨を備えている限り、本発明の範囲に含まれる。さらに、上述した各実施形態は、相互に矛盾がない限り適宜組み合わせが可能であり、各実施形態に共通する技術事項については、明示の記載がなくても各実施形態に含まれる。
上述した各実施形態の態様によりもたらされる作用効果とは異なる他の作用効果であっても、本明細書の記載から明らかなもの、又は、当業者において容易に予測し得るものについては、当然に本発明によりもたらされるものと解される。
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:専用ネットワーク

Claims (8)

  1. 台帳を分散して記録する複数のノードのうち1つの第1ノードを選出し、前記第1ノードから、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに、クライアント端末から受信した複数のトランザクションに基づき所定の閾値で生成された複数のログの合計を送信するシステム。
  2. 台帳を分散して記録する複数のノードのうち1つの第1ノードは前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに対して、クライアント端末から受信した複数のトランザクションに基づき所定の閾値で生成された複数のログを送信せずに前記複数のログの合計を送信するシステム。
  3. 前記第1ノードは、
    前記クライアント端末から前記複数のトランザクションを含むブロック単位で前記複数のトランザクションを受信し、
    前記ブロックに含まれる前記複数のトランザクションに基づいて前記複数のログを生成し、
    前記複数の第2ノードに対して複数の前記ブロックに含まれる前記複数のログを合計した結果を送信する、
    請求項1又は2に記載のシステム。
  4. 前記第1ノードは前記複数のログを記憶する、請求項1乃至3のいずれか一に記載のシステム。
  5. 台帳を分散して記録する複数のノードから選出された1つの第1ノードに対して、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードに、クライアント端末から受信した複数のトランザクションに基づき所定の閾値で生成された複数のログの合計を送信することを実行させるためのプログラム。
  6. 台帳を分散して記録する複数のノードのうち1つの第1ノードに対して、前記複数のノードのうち前記第1ノードとは異なる複数の第2ノードへクライアント端末から受信した複数のトランザクションに基づき所定の閾値で生成された複数のログを送信せずに前記複数のログの合計を送信することを実行させるためのプログラム。
  7. 前記第1ノードに、
    前記クライアント端末から前記複数のトランザクションを含むブロック単位で前記複数のトランザクションを受信させ、
    前記ブロックに含まれる前記複数のトランザクションに基づいて前記複数のログを生成させ、
    前記複数の第2ノードに対して複数の前記ブロックに含まれる前記複数のログを合計した結果を送信させる、
    請求項5又は6に記載のプログラム。
  8. 前記第1ノードに前記複数のログを記憶させる、請求項5乃至7のいずれか一に記載のプログラム。
JP2020132481A 2020-08-04 2020-08-04 システム及びプログラム Active JP7016389B1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020132481A JP7016389B1 (ja) 2020-08-04 2020-08-04 システム及びプログラム
PCT/JP2021/024467 WO2022030144A1 (ja) 2020-08-04 2021-06-29 システム及び記録媒体
JP2021157144A JP2022029453A (ja) 2020-08-04 2021-09-27 ノード

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020132481A JP7016389B1 (ja) 2020-08-04 2020-08-04 システム及びプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021157144A Division JP2022029453A (ja) 2020-08-04 2021-09-27 ノード

Publications (2)

Publication Number Publication Date
JP7016389B1 true JP7016389B1 (ja) 2022-02-04
JP2022029244A JP2022029244A (ja) 2022-02-17

Family

ID=80117982

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020132481A Active JP7016389B1 (ja) 2020-08-04 2020-08-04 システム及びプログラム
JP2021157144A Pending JP2022029453A (ja) 2020-08-04 2021-09-27 ノード

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021157144A Pending JP2022029453A (ja) 2020-08-04 2021-09-27 ノード

Country Status (2)

Country Link
JP (2) JP7016389B1 (ja)
WO (1) WO2022030144A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005235003A (ja) 2004-02-20 2005-09-02 Bank Of Tokyo-Mitsubishi Ltd 金融取引情報加工装置及びプログラム
JP2020067805A (ja) 2018-10-24 2020-04-30 株式会社 みずほ銀行 清算システム及び清算方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2746446C2 (ru) * 2016-11-10 2021-04-14 Свирлдз, Инк. Способы и устройство для распределенной базы данных, содержащей анонимные входные данные
US11281644B2 (en) * 2017-07-28 2022-03-22 Hitachi, Ltd. Blockchain logging of data from multiple systems
JP7187894B2 (ja) * 2018-08-30 2022-12-13 富士通株式会社 プログラム,情報処理システム及び情報処理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005235003A (ja) 2004-02-20 2005-09-02 Bank Of Tokyo-Mitsubishi Ltd 金融取引情報加工装置及びプログラム
JP2020067805A (ja) 2018-10-24 2020-04-30 株式会社 みずほ銀行 清算システム及び清算方法

Also Published As

Publication number Publication date
WO2022030144A1 (ja) 2022-02-10
JP2022029244A (ja) 2022-02-17
JP2022029453A (ja) 2022-02-17

Similar Documents

Publication Publication Date Title
AU2019203861B2 (en) System and method for ending view change protocol
AU2019203865B2 (en) Consensus system downtime recovery
US10671599B2 (en) Consensus system and method
US7636868B2 (en) Data replication in a distributed system
AU2019203864B2 (en) Consensus system downtime recovery
CN109493223B (zh) 一种记账方法及装置
WO2019042101A1 (zh) 一种跨链交易方法及装置
US7613751B2 (en) Well-known transactions in data replication
CN111400112B (zh) 分布式集群的存储***的写入方法、装置及可读存储介质
US20210233068A1 (en) Settlement system, settlement method, user device, and settlement program
US10938750B2 (en) Consensus system downtime recovery
CN102012944B (zh) 一种提供复制特性的分布式nosql数据库的实现方法
US20220269670A1 (en) Data processing method and apparatus, computer device, and storage medium
Schintke et al. Enhanced paxos commit for transactions on dhts
AU2019380380B2 (en) Taking snapshots of blockchain data
US20160285969A1 (en) Ordered execution of tasks
JP7016389B1 (ja) システム及びプログラム
CN111813795B (zh) 在区块链网络中确认交易的方法及装置
WO2022030204A1 (ja) システム、端末、及び記録媒体
US11860828B2 (en) Methods, devices and systems for writer pre-selection in distributed data systems
JP7308887B2 (ja) システム及びプログラム
JP7319564B2 (ja) データ共有システム、管理端末、データ共有方法、および、データ共有プログラム
US20230325407A1 (en) Blockchain Blocks Storage Management
CN115796863A (zh) 区块链***的共识方法及相关设备
JP2019021022A (ja) 負荷分散装置、負荷分散方法、および、負荷分散プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200805

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200805

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20200825

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20200825

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210401

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210927

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210927

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20211005

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20211012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220125

R150 Certificate of patent or registration of utility model

Ref document number: 7016389

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150