(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024095433
(43)【公開日】2024-07-10
(54)【発明の名称】取引処理プログラム、取引処理方法および情報処理装置
(51)【国際特許分類】
G06Q 20/38 20120101AFI20240703BHJP
G06Q 20/40 20120101ALI20240703BHJP
【FI】
G06Q20/38 310
G06Q20/40 300
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022212717
(22)【出願日】2022-12-28
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】西間木 哲
【テーマコード(参考)】
5L020
5L055
【Fターム(参考)】
5L020AA72
5L055AA72
(57)【要約】
【課題】特定の時間を指定した取引を適正に行う。
【解決手段】取引処理プログラムは、金融資産の分散台帳を管理する各ノードのコンピュータに、金融資産の移転元アカウントからの要求に基づき、金融資産の移転を承認する承認トランザクションを分散台帳に登録する処理と、登録された承認トランザクションの中の、自ノードが移転先アカウントを管理する承認トランザクションについて、自ノードが管理する管理時刻が承認トランザクションに含まれる移転時刻に到達後、承認トランザクションの検証を第1の他ノードに依頼し、第1の他ノードの検証結果に基づいて承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行する処理と、第2の他ノードから承認トランザクションの検証依頼を受け付けた場合、承認トランザクションに含まれる移転時刻が管理時刻より後であるか否かの検証結果を第2の他ノードに返信する処理とを実行させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
金融資産にかかる分散台帳を管理する各ノードのコンピュータに、
前記金融資産の移転元アカウントからの要求に基づき、前記移転元アカウントと、移転先アカウントと、前記金融資産の移転量と、前記金融資産の移転時刻とを含む、前記金融資産の移転を承認する承認トランザクションを前記分散台帳に登録し、
前記登録された承認トランザクションの中の、自ノードが前記移転先アカウントを管理する承認トランザクションについて、前記自ノードが管理する管理時刻が前記承認トランザクションに含まれる移転時刻に到達後、前記承認トランザクションの検証を第1の他ノードに依頼し、当該第1の他ノードの検証結果に基づいて前記承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行し、
第2の他ノードから前記承認トランザクションの検証依頼を受け付けた場合、当該承認トランザクションに含まれる移転時刻が前記管理時刻より後であるか否かの検証結果を前記第2の他ノードに返信する、
処理を実行させることを特徴とする取引処理プログラム。
【請求項2】
前記発行する処理は、前記第1の他ノードの検証結果に基づいて前記要求トランザクションの発行を否定した場合、所定時間経過後に、前記承認トランザクションの検証を再依頼する、
ことを特徴とする請求項1に記載の取引処理プログラム。
【請求項3】
前記発行する処理は、前記登録された承認トランザクションの中の、第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、前記管理時刻が前記承認トランザクションに含まれる移転時刻に到達してから所定時間経過後に当該承認トランザクションにかかる要求トランザクションが発行されていない場合、前記承認トランザクションの検証を第4の他ノードに依頼し、当該第4の他ノードの検証結果に基づいて前記承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする請求項1に記載の取引処理プログラム。
【請求項4】
前記発行する処理は、前記登録された承認トランザクションの中の、前記自ノードと同一のグループに属する前記第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、当該承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする請求項3に記載の取引処理プログラム。
【請求項5】
前記発行する処理は、前記検証を複数の前記第1の他ノードに依頼し、複数の前記第1の他ノードの検証結果に基づいて前記要求トランザクションを発行する、
ことを特徴とする請求項1に記載の取引処理プログラム。
【請求項6】
金融資産にかかる分散台帳を管理する各ノードのコンピュータが、
前記金融資産の移転元アカウントからの要求に基づき、前記移転元アカウントと、移転先アカウントと、前記金融資産の移転量と、前記金融資産の移転時刻とを含む、前記金融資産の移転を承認する承認トランザクションを前記分散台帳に登録し、
前記登録された承認トランザクションの中の、自ノードが前記移転先アカウントを管理する承認トランザクションについて、前記自ノードが管理する管理時刻が前記承認トランザクションに含まれる移転時刻に到達後、前記承認トランザクションの検証を第1の他ノードに依頼し、当該第1の他ノードの検証結果に基づいて前記承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行し、
第2の他ノードから前記承認トランザクションの検証依頼を受け付けた場合、当該承認トランザクションに含まれる移転時刻が前記管理時刻より後であるか否かの検証結果を前記第2の他ノードに返信する、
処理を実行することを特徴とする取引処理方法。
【請求項7】
金融資産にかかる分散台帳を管理する情報処理装置であって、
前記金融資産の移転元アカウントからの要求に基づき、前記移転元アカウントと、移転先アカウントと、前記金融資産の移転量と、前記金融資産の移転時刻とを含む、前記金融資産の移転を承認する承認トランザクションを前記分散台帳に登録し、
前記登録された承認トランザクションの中の、自ノードが前記移転先アカウントを管理する承認トランザクションについて、前記自ノードが管理する管理時刻が前記承認トランザクションに含まれる移転時刻に到達後、前記承認トランザクションの検証を第1の他ノードに依頼し、当該第1の他ノードの検証結果に基づいて前記承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行し、
第2の他ノードから前記承認トランザクションの検証依頼を受け付けた場合、当該承認トランザクションに含まれる移転時刻が前記管理時刻より後であるか否かの検証結果を前記第2の他ノードに返信する、
処理を実行する演算装置を含むことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、取引処理プログラム、取引処理方法および情報処理装置に関する。
【背景技術】
【0002】
近年、銀行や証券会社が仲介を行う中央集権的な金融とは異なる分散型金融のDeFi(Decentralized Finance)が注目されている。DeFiでは、中央管理者を置かずに、コミュニティ全体で取引の安全性を保証する仕組みのため、取引仲介の無人化や自律運用による市場流動性の向上が期待されている。
【0003】
DeFiのシステム構築にあたっては、ブロックチェーン(以下、「BC」、「分散台帳」とも称する)の適用が考えられており、その一つの取り組みとして、BC上で発行されるトークンを用いた金融システム(以下、「取引システム」とも称する)の実現に向けた検討が始まっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2022/0058641号明細書
【特許文献2】特表2019-514089号公報
【特許文献3】特表2020-524425号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般に、金融システムでは、債券の償還や配当の支払いなどで日時を指定し、金銭と債券の移転が行われる。一方、ブロックチェーン(BC)は、複数ノードが非同期に処理を実行することが前提となっているため、特定の時間を指定した処理や取引を適正に行うことが難しいといった点に、BCを用いた金融システム実現への障壁がある。
【0006】
1つの側面では、特定の時間を指定した取引を適正に行うことを可能とする取引処理プログラム、取引処理方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの案では、取引処理プログラムは、金融資産にかかる分散台帳を管理する各ノードのコンピュータに、登録する処理と、発行する処理と、返信する処理とを実行させる。登録する処理は、金融資産の移転元アカウントからの要求に基づき、移転元アカウントと、移転先アカウントと、金融資産の移転量と、金融資産の移転時刻とを含む、金融資産の移転を承認する承認トランザクションを分散台帳に登録する。発行する処理は、登録された承認トランザクションの中の、自ノードが移転先アカウントを管理する承認トランザクションについて、自ノードが管理する管理時刻が承認トランザクションに含まれる移転時刻に到達後、承認トランザクションの検証を第1の他ノードに依頼し、第1の他ノードの検証結果に基づいて承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行する。返信する処理は、第2の他ノードから承認トランザクションの検証依頼を受け付けた場合、承認トランザクションに含まれる移転時刻が管理時刻より後であるか否かの検証結果を第2の他ノードに返信する。
【発明の効果】
【0008】
特定の時間を指定した取引を適正に行うことができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態の概要を説明する説明図である。
【
図2】
図2は、トークン移転方法の一例を説明する説明図である。
【
図3】
図3は、実施形態にかかる情報処理装置のハードウェア構成例を示すブロック図である。
【
図4】
図4は、実施形態にかかる取引システムの全体構成例を説明する説明図である。
【
図5】
図5は、BC台帳に登録されたデータの一例を説明する説明図である。
【
図6A】
図6Aは、引き出し登録にかかる処理の一例を示すフローチャートである。
【
図6B】
図6Bは、引き出し登録にかかる処理の一例を示すフローチャートである。
【
図7】
図7は、BC台帳に登録されたデータの一例を説明する説明図である。
【
図8】
図8は、BC台帳に登録されたデータの一例を説明する説明図である。
【
図9A】
図9Aは、引き出し待機・引き出し実行にかかる処理の一例を示すフローチャートである。
【
図9B】
図9Bは、引き出し待機・引き出し実行にかかる処理の一例を示すフローチャートである。
【
図10】
図10は、BC台帳に登録されたデータの一例を説明する説明図である。
【
図11】
図11は、引き出し要求が失敗するケースの一例を示すフローチャートである。
【
図12A】
図12Aは、引き出し要求の再送にかかる処理の一例を示すフローチャートである。
【
図12B】
図12Bは、引き出し要求の再送にかかる処理の一例を示すフローチャートである。
【
図13】
図13は、BC台帳に登録されたデータの一例を説明する説明図である。
【
図14】
図14は、BC台帳に登録されたデータの一例を説明する説明図である。
【
図15A】
図15Aは、引き出し登録にかかる処理の一例を示すフローチャートである。
【
図15B】
図15Bは、引き出し登録にかかる処理の一例を示すフローチャートである。
【
図16】
図16は、BC台帳に登録されたデータの一例を説明する説明図である。
【
図17A】
図17Aは、引き出し待機・引き出し実行にかかる処理の一例を示すフローチャートである。
【
図17B】
図17Bは、引き出し待機・引き出し実行にかかる処理の一例を示すフローチャートである。
【
図18】
図18は、BC台帳に登録されたデータの一例を説明する説明図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施形態にかかる取引処理プログラム、取引処理方法および情報処理装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する取引処理プログラム、取引処理方法および情報処理装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【0011】
(従来技術と課題)
ブロックチェーンにおける時間を指定した取引の仕組みとしてEthereum Alarm Clock(https://www.ethereum-alarm-clock.com/)がある。このEthereum Alarm Clockでは、まず時間指定のトランザクションを管理するTimeノードに取引を登録する。その後、Timeノードで逐次、現在時刻と取引リストを確認し、指定時間となった取引のトランザクションを発行することで、指定時間に取引を実行する。
【0012】
また、ブロックチェーンにおける時間を指定した取引の仕組みにおいては、時間暗号を用いたスケジュール実行方式(特表2020-524425号公報、"ブロックチェーンネットワーク上のタイムリリース暗号化のためのコンピュータにより実施されるシステム及び方法")がある。この方式は、トークンの受け手に対して、復号化に一定時間を要するタイムロックパズルを解かせ、その暗号が復号化できた時に、トークン移転のトランザクション発行に必要な秘密鍵を公開し、資金の移動を可能にする。
【0013】
上記のブロックチェーンにおける時間を指定した取引の仕組みでは、ブロックチェーンの内外にトランザクションの発行を管理するスケジューリング機能を持たせることで、指定時間での取引を実現している。スケジューリング機能により、処理を実行することは計算機処理では一般的であるが、スケジューリング機能により実行された時間を信頼することが前提の処理となる。そのため、スケジューリング機能を悪意のあるユーザに攻撃された際に、他ノードは、その取引が指定時間になっていなくてもトランザクションの処理を履行し、取引が承認されてしまうことがある。
【0014】
ここでの問題点は、トリガとなった時刻データを全面的に信用した処理のため、取引するBCのノードでの時間の検証ができていないことにある。特定のノードが持つ時間情報の信用を前提とした取引は脆弱性が高まるため、BC全体として取引を判定することが望ましい。
【0015】
上記の問題点から、「ブロックチェーンにおける時間指定取引において、指定時間外にトランザクションが発行された場合の取引を棄却し、指定した時間指定時間での取引の実行と結果を保証すること」が本実施形態が解決する課題の一つである。
【0016】
トランザクションを検証するノードで取引を実行する時間を検証する点においては、US2022-0058641,"DEVICE AND METHOD FOR PROCESSING DATA OF TRANSACTIONS BASED ON BLOCK CHAIN, AND STORAGE MEDIUM "のように、ブロックデータの最新のタイムスタンプを用いて検証する従来技術がある。
【0017】
しかしながら、ブロックデータのタイムスタンプは、マイナーがブロックデータを記録した時間であり、そのタイムスタンプの記録における検証では、前のブロックのタイムスタンプよりも後の時刻か否かの判定にとどまる。ブロックチェーンの種類により、前のブロックのタイムスタンプよりも一定時間以上の差がないことなどの検証がされる場合もあるが、正確性の面では、十分な検証はない。そのため、ブロックデータのタイムスタンプと現在の時刻では大幅にずれが生じ、本来実行したい時刻にトランザクションが実行されることを十分に保証できない点で、本実施形態が解決する課題の一つを解決するものではない。
【0018】
ここで、ブロックチェーンのおける時間情報の扱い方について説明する。ブロックチェーンに参加しているノードは、それぞれがタイムサーバーと同期する等により、現在の時間を設定している。
【0019】
そのため、多くのノードは比較的正確な時間で動作している(完全に正確な時間ではないが、ミリ秒~数秒程度のずれの範疇で正確な時間を設定しいている)。ただし、完全にノード同士の時刻が同期されているわけではないため、各々のノードで多少の時刻のずれが発生している。
【0020】
また、悪意のあるユーザなどは、あえて時間をずらして設定することもありえる。Bitcoinの場合は、マイナーが故意に時間をずらしたとしても、よほどシステム上で異常な時間で設定されていない限りはそのブロックは容認されてしまう(なぜなら時間のずれがあることが前提のため、どのノードも正確であることを保証できないため)。
【0021】
以上のことからブロックチェーンにおいては、共通の時間情報を参照して処理を実行することは難しい。上記のUS2022-0058641のように、ブロックデータのタイムスタンプは、全ノードで共有された時間情報であるが、その時間が正確である保証はない点で、送り手の指示した時間通りに取引が実行されない可能性がある。
【0022】
(実施形態の概要)
図1は、実施形態の概要を説明する説明図である。
図1に示すように、実施形態にかかる取引システムは、金融資産(以下、「トークン」とも称する)に関するBC台帳を共有して管理する複数のBCノード1a~1dを有する。このBCノード1a~1dそれぞれは、特定の時間を指定したトランザクションに基づく取引を実行する時間取引実行部10を有する。なお、以下の説明において、BCノード1a~1dそれぞれを特に区別しない場合は、単にBCノード1と表記する。
【0023】
BCノード1aは、金融資産の移転元アカウント(以下、「送り手」とも称する)の一例である「userA」のアカウントを管理するノード(以下、「送り手ノード」とも称する)である。BCノード1bは、金融資産の移転先アカウント(以降、「受け手」とも称する)の一例である「userB」のアカウントを管理するノード(以下、「受け手ノード」とも称する)である。BCノード1c、1dは、「userA」、「userB」以外のアカウントを管理するノードである。
【0024】
実施形態にかかる取引システムにおいて、トークンの移転処理は、ブロックチェーン技術を活用したスマートコントラクトにより実現され、ブロックチェーンネットワークに参加したBCノード1a~1dの全ノードで実行および結果の検証が可能である。
【0025】
まず、送り手ノードのBCノード1aでは、送り手(userA)の要求にもとづいて、金融資産の移転を承認(許可)するトランザクション(時間指定引き出し許可)を発行する(S1)。この発行されたトランザクションは、各BCノードで承認された後に各BCノードのBC台帳に登録される(S2)。
【0026】
この時間指定の引き出し許可(approve())には、送り手のアカウントの「from」、受け手のアカウントの「to」、引き出し許可するトークン量(移転量)の「amount」、引き出しが可能になる時間(移転時刻)の「date」が含まれる。この時間指定の引き出し許可では、「date」の時間以降に引き出し可能となることを表し、「date」の時間以前では、引き出しの取引は失敗することを表す。
【0027】
受け手ノードのBCノード1bでは、自ノードが管理する受け手(userB)に該当する時間指定の引き出し許可の取引に関して、自ノードのシステム時刻(管理時刻)が「date」の時間以後に、他ノードに対して時間指定の引き出し許可の取引の検証を依頼する。BCノード1bでは、この検証結果にもとづいて引き出し要求のトランザクションを発行する(S3)。
【0028】
この引き出し要求のトランザクションには、引き出しを行う受け手のアカウントを表す「account」が含まれる。引き出し要求のトランザクションは、「account」のアカウントが現時点で引き出しが可能なトークンを検索し、トークン移転を実行するためのトランザクションとなる。
【0029】
時間指定の引き出し許可の取引について検証を行うノード(BCノード1a、1c、1d)は、引き出し要求を基に、時間指定引き出し許可のリスト(引き出し要求に含まれる「account」に該当する時間指定の引き出し許可)をBC台帳より抽出する。ついで、BCノード1a、1c、1dは、抽出した時間指定の引き出し許可をもとに下記の判定を行い、検証結果としてBCノード1bへ返信する(S4)。
・指定時間がノードのシステム時刻以降の引き出し許可がない場合は、引き出し要求のトランザクションは破棄(取引NG)とする。
・指定時間がノードのシステム時刻以降の引き出し許可がある場合は、引き出し許可の情報に基づいてトークンを移転(取引OK)とする。
【0030】
このように、実施形態にかかる取引システムでは、ブロックチェーンのトランザクションの検証の過程で取引の可否を各ノードの検証結果をもとに決定することで、指定時間外での取引は実行せず、指定の時間以降にトークンが移転できることを保証する。これらにより、実施形態にかかる取引システムでは、課題の一つである「ブロックチェーンにおける時間指定取引において、指定時間外にトランザクションが発行された場合の取引を棄却し、指定した時間指定時間での取引の実行と結果を保証すること」を解決し、時間を指定した安全な取引を実現する。
【0031】
なお、トークン移転の方法は、大きく分けて2つある。
図2は、トークン移転方法の一例を説明する説明図である。
【0032】
図2に示すように、ケースC1は、送り手(userA)が送金トランザクションを実行する方法であり、ケースC2は、受け手(userB)が送金トランザクションを実行する方法である。
【0033】
ケースC1は、送り手がトランザクションを実行したタイミングですぐに送金が実行されるもので、店舗で支払いをするといった通常の送金では、その場で送金するため、こちらの方法が一般的に使われる。一方、ケースC2は、まず送り手側で引き出し可能なトークン量を指定する。その後、受け手側で引き出し許可された分だけトークンを移転するという方法である。引き出し許可という形で、トークンを予約状態にすることで、特定の条件を満たした時に受け手が引き出せるといった、条件付き送金に用いることが可能である。実施形態にかかる取引システムでは、ケースC2のやり方を基に実現する点が従来技術と異なる。
【0034】
(実施形態)
図3は、実施形態にかかる情報処理装置のハードウェア構成例を示すブロック図である。
図3に示すように、情報処理装置100は、PC(Personal Computer)等の一般的なコンピュータと同等のハードウェア構成であり、取引システムにおける各ノード、ホスト端末等に相当する。
【0035】
具体的には、情報処理装置100は、CPU(Central Processing Unit)等の演算装置101、RAM(Random Access Memory)等の主記憶装置102、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の補助記憶装置103、ネットワークインターフェース104を有する。これら演算装置101、主記憶装置102、補助記憶装置103およびネットワークインターフェース104は、データバス105を介して接続されている。
【0036】
補助記憶装置103は、演算装置101と、演算装置101が実行時に参照する各種設定やBC台帳などの各種データ102bとが格納される。情報処理装置100の各種機能は、プログラム102aとして記述されている。演算装置101は、プログラム102aを主記憶装置102にロードして順次実行することで、各種機能を提供する。また、情報処理装置100の各種機能は、クラウドコンピューティングにより、複数のコンピュータが協働して提供してもよい。また、情報処理装置100は、ネットワークNに接続されたネットワークインターフェース104を介して、ユーザ(またはユーザが操作するアプリ)や通信装置とメッセージを送受信することができる。
【0037】
なお、プログラム102aは、補助記憶装置103に記憶されていなくてもよい。例えば、情報処理装置100が読み取り可能な記憶媒体に記憶されたプログラム102aを読み出して実行するようにしてもよい。情報処理装置100が読み取り可能な記憶媒体は、例えば、CD-ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、ネットワークNに接続された外部装置にプログラム102aを記憶させておき、情報処理装置100がネットワークインターフェース104を介して外部装置からプログラム102aを読み出して実行するようにしてもよい。
【0038】
図4は、実施形態にかかる取引システムの全体構成例を説明する説明図である。
図4に示すように、実施形態にかかる取引システムは、前述したBCノード1a~1dの他、ホスト端末2a~2dおよびブロック生成ノード3を有する。この取引システムにおいて、BCノード1a~1d、ホスト端末2a~2dおよびブロック生成ノード3は、LAN(Local Area Network)、インターネット等のネットワークNを介して互いに通信可能に接続されている。
【0039】
なお、以下の説明において、ホスト端末2a~2dそれぞれを特に区別しない場合は、単にホスト端末2と表記する。図中のホスト端末2a~2dに記載された[]内の表記は、所有者(アカウント)が誰であるのかを示している。具体的には、ホスト端末2aは、送り手H1」が所有する端末である。ホスト端末2bは、受け手H2が所有する端末である。ホスト端末2c、2dは、送り手H1および受け手H2以外のアカウントである参加者H3が所有する端末である。
【0040】
同様に、図中のBCノード1a~1dに記載された[]内の表記は、各ノードがどのアカウントを管理しているかを示している。具体的には、BCノード1aは、送り手H1を管理するノードである。BCノード1bは、受け手H2を管理するノードである。BCノード1c、1dは、参加者H3を管理するノードである。
【0041】
ホスト端末2は、送信部20、受信部21および操作・表示部22を有する。送信部20は、ネットワークNを介してBCノード1に各種データを送信する処理部である。例えば、送信部20は、送り手H1による金融資産の移転要求などの指示をBCノード1に通知する。
【0042】
受信部21は、ネットワークNを介してBCノード1から送信された各種データを受信する処理部である。例えば、受信部21は、送り手H1による金融資産の移転要求等に対する応答をBCノード1より受信する。
【0043】
操作・表示部22は、ユーザ(送り手H1、受け手H2、参加者H3)の操作入力の受け付けやユーザへの表示出力を行う処理部である。例えば、操作・表示部22は、送り手H1による金融資産の移転内容を受け付ける。また、操作・表示部22は、送り手H1より受け付けた移転内容に基づいた移転要求に対するBCノード1からの応答を表示出力する。
【0044】
BCノード1は、時間取引実行部10、トランザクション/ブロック処理部11、システム時間管理部12、受信部13、送信部14およびBC台帳15を有する。
【0045】
時間取引実行部10は、前述した時間指定の引き出し許可に関する取引を実行する処理部である。トランザクション/ブロック処理部11は、ブロックチェーン(BC)におけるトランザクションの発行やブロックの検証等の処理を行う処理部である。この時間取引実行部10、トランザクション/ブロック処理部11に関する処理の詳細は後述する。
【0046】
システム時間管理部12は、BCノード1のシステム時刻を管理する処理部である。具体的には、システム時間管理部12は、RTC(Real Time Clock)等の計時機能を有し、NTP(Network Time Protocol)サーバ等と同期させたシステム時刻を計時している。システム時間管理部12は、時間取引実行部10等の要求に応じて計時しているシステム時刻を通知する。
【0047】
受信部13は、時間取引実行部10、トランザクション/ブロック処理部11等の要求に応じて、ネットワークNを介して他のノード(BCノード、ブロック生成ノード3)等に各種データを受信する処理部である。送信部14は、ネットワークNを介して、ホスト端末2、他のノード(BCノード、ブロック生成ノード3)等から通知されたデータを送信する処理部である。
【0048】
BC台帳15は、ブロックチェーンに関するデータであり、各BCノード1が共有して管理する金融資産に関する分散台帳である。
【0049】
ブロック生成ノード3は、発行されたトランザクションをブロック化し、各ノードに送信する処理を担当するノードである。ブロック生成ノード3は、送信部30、受信部31、システム時間管理部32およびブロック生成部33を有する。
【0050】
送信部30は、ネットワークNを介してBCノード1に各種データを送信する処理部である。受信部31は、ネットワークNを介してBCノード1から通知されたデータを受信する処理部である。システム時間管理部32は、BCノード1のシステム時間管理部12と同様、ブロック生成ノード3のシステム時刻を管理する処理部である。
【0051】
ブロック生成部33は、ブロックチェーンのブロックを生成する処理部である。例えば、ブロック生成部33は、Bitcoinにおけるマイニングノードや、コンソーシアム型ブロックチェーンのOSSであるHyperledger(登録商標) FabricのOrdering Service(The Ordering Service, Hyperledger Fabric, “https://hyperledger-fabric.readthedocs.io/en/release-2.0/orderer/ordering_service.html”)等の公知の技術をもとに、ブロックチェーンのブロックを生成する。
【0052】
次に、指定した時間に送金の取引を実行する場合の以下の手順について詳細説明する。
0.初期状態
1.引き出し許可登録
2.引き出し待機・引き出し実行
【0053】
(0.初期状態)
図5は、BC台帳15に登録されたデータの一例を説明する説明図であり、より具体的には、BC台帳15に登録されたデータの初期状態を示している。
図5に示すように、BC台帳15に登録されたデータには、トークン残高データD1と、引き出し許可データD2とが含まれる。
【0054】
トークン残高データD1のaccountは、ユーザのアカウントアドレス、balanceはトークンの残高、reserved tokenは引き出し許可により送金が予約されたトークン量を表す。
【0055】
本実施形態では、わかりやすさのためにアカウントごとのトークンの残高を管理するアカウント型のトークン管理手法で説明するが、UTXO型の手法でも同様に実施可能である。図示例(初期状態)において、トークン残高データD1には、0x1234[送り手]のアカウントについて、100のトークンの残高と、引き出し許可により送金が予約されたトークン量が0であることが登録されている。また、0x2345[受け手]のアカウントについて、0のトークンの残高と、引き出し許可により送金が予約されたトークン量が0であることが登録されている。
【0056】
引き出し許可データD2は、
図1で説明した時間指定の引き出し許可(approve())に関するデータである。図示例において、引き出し許可データD2は空で、初期状態でまだ取引が登録されていない状態である。
【0057】
(1.引き出し許可登録)
図6A、
図6Bは、引き出し登録にかかる処理の一例を示すフローチャートである(
図6Bは、
図6Aの処理の続きを示す)。
【0058】
図6Aに示すように、BCノード1a[送り手]は、ホスト端末2a[送り手]からの時間指定取引登録に関するトランザクション発行要求を受け付ける(S11)。具体的には、BCノード1aは、[送り手]、[受け手]のアドレス(from,to)と、送金するトークン量(amount)と、引き出しが可能になる時刻(date)とが指定されたトランザクション発行要求を受け付ける。実施形態上は時間の指定方法は問わないが、電子計算機で比較のできる形式が望ましい。たとえば、協定世界時をミリ秒に変換した値などがある。本稿で時間情報は、ISO8601のフォーマットで表記する。この要求内容に基づき、BCノード1aは、引き出しが可能になる時刻を含んだトランザクションを発行する(S12~S21)。
【0059】
具体的には、トランザクション/ブロック処理部11は、要求内容に基づいてトランザクション作成・署名付与を行い(S12)、作成したトランザクションの検証依頼を他のノード(BCノード1b~1d)に通知する(S13、S14)。
【0060】
トランザクションの検証依頼を受信したBCノード1c、1dのトランザクション/ブロック処理部11は、トランザクションデータの検証を行った後に署名付与を行い(S15)、トランザクションの検証結果をBCノード1aに返信する(S16)。トランザクションの検証依頼を受信したBCノード1bのトランザクション/ブロック処理部11も同様、トランザクションデータの検証を行った後に署名付与を行い(S17)、トランザクションの検証結果をBCノード1aに返信する(S18)。
【0061】
このように、実施形態の取引システムでは、発行されたトランザクションデータは、発行したノード(1a)とは別ノード(1b~1d)で、実行結果が検証される。
【0062】
トランザクションデータの検証方法は、ブロックチェーンごとに種類があるが、本実施形態では、Hyperledger FabricでのTransaction Flow(Transaction Flow, Hyperledger Fabric, “https://hyperledger-fabric.readthedocs.io/ja/latest/txflow.html”)に基づき、ブロック化される前に各ノードでトランザクションデータを検証する方法で説明を行う。Ethereum等の他のブロックチェーンの場合でも、発行したノード以外でトランザクションを検証する点、また実行後でもその結果を検証できる点で、同様の検証が可能である。
【0063】
ついで、BCノード1aのトランザクション/ブロック処理部11は、実行結果を検証したトランザクションを発行し、発行したトランザクションをブロック生成ノード3へ通知する(S19)。ブロック生成ノード3は、通知されたトランザクションに関する完了通知をBCノード1aへ返信する(S20)。BCノード1aのトランザクション/ブロック処理部11は、ブロック生成ノード3からの完了通知をホスト端末2aへ通知する(S21)。
【0064】
また、ブロック生成ノード3は、マイニングなどによりBCのブロック生成を行い(S22)、通知されたトランザクションがブロックデータとしてまとめられる。
【0065】
図6Bに示すように、ついで、ブロック生成ノード3は、通知されたトランザクションを含むブロックをBCノード1a~1dに配布し(S23~S25)、ブロックチェーン上で全参加者(BCノード1a~1d全て)に共有される。
【0066】
具体的には、BCノード1aのトランザクション/ブロック処理部11は、ブロック生成ノード3より配布されたブロックを検証した上でBC台帳15へ記入し(S26、S27)、BC台帳15への記入済み完了を取得する(S28)。
【0067】
このように取引が登録されると、引き出しが許可した分の情報が更新されることから、BCノード1aの時間取引実行部10は、BC台帳15を参照して引き出し許可データD2を取得し(S29)、引き出し許可リストを更新する(S30)。
【0068】
また、BCノード1c、1dのトランザクション/ブロック処理部11も同様に、ブロック生成ノード3より配布されたブロックを検証した上でBC台帳15へ記入し(S31、S32)、BC台帳15への記入済み完了を取得する(S33)。
【0069】
このように取引が登録されると、引き出しが許可した分の情報が更新されることから、BCノード1c、1dの時間取引実行部10は、BC台帳15を参照して引き出し許可データD2を取得し(S34)、引き出し許可リストを更新する(S35)。
【0070】
また、BCノード1bのトランザクション/ブロック処理部11も同様に、ブロック生成ノード3より配布されたブロックを検証した上でBC台帳15へ記入し(S36、S37)、BC台帳15への記入済み完了を取得する(S38)。
【0071】
このように取引が登録されると、引き出しが許可した分の情報が更新されることから、BCノード1bの時間取引実行部10は、BC台帳15を参照して引き出し許可データD2を取得し(S39)、引き出し許可リストを更新する(S40)。ここで、引き出し許可リストには、自ノードが管理するアカウントである[受け手]の時間指定引き出し許可が新たに含まれていることから、時間取引実行部10は、この時間指定引き出し許可をイベント登録する(S41)。
【0072】
図7は、BC台帳15に登録されたデータの一例を説明する説明図であり、より具体的には、ブロック配布による更新後のBC台帳15の状態を例示している。例えば、
図5と
図7とを比較すれば明らかなように、
図7では、reserved tokenの値が変化している。
図7に示すように、各ノードの時間取引実行部10は、引き出し許可データD2の更新を監視している。そして、各ノードの時間取引実行部10は、自ノードに関連するアカウントの情報に更新(時間指定引き出し許可の追加)があった場合は、更新された時間指定引き出し許可をイベント登録し(S41)、引き出しの待機状態に移行する。
【0073】
図8は、BC台帳15に登録されたデータの一例を説明する説明図であり、より具体的には、
図7の引き出し許可データD2に引き出し時間の異なる取引をもう一つ登録した状態を例示している。
図8の例では、引き出し許可データD2のパラメータを”(from:0x1234,to:0x2345,amount:10,date:20221001T120000)”とする取引についで、2度目の取引が登録されている。具体的には、1度目の登録との差分として、amountが20、dateが20221001T130000とする取引が、1度目に加えて更に登録されている。時間取引実行部10は、このように登録された取引ごとに、自ノードに関連するアカウントを「to」とする取引であるか否かを判定し、「to」とする取引である場合はイベント登録する。
【0074】
(2.引き出し待機・引き出し実行)
図9A、
図9Bは、引き出し待機・引き出し実行にかかる処理の一例を示すフローチャートである(
図9Bは、
図9Aの処理の続きを示す)。
【0075】
図9Aに示すように、S41の後に待機状態になったBCノード1bの時間取引実行部10は、自ノードのシステム時間管理部12より取得した現在時刻データ(システム時刻)に基づいて、イベント登録された時間指定引き出し許可の指定時間まで処理を待機する(S51、S52)。
【0076】
ついで、BCノード1bの時間取引実行部10は、システム時刻が指定時間を経過した後に、引き出しを実行するトランザクションの発行要求をトランザクション/ブロック処理部11へ通知する(S53)。ここでは、現在時刻が2022年10月1日12時になったものとする。このため、時間取引実行部10は、dateが” 20221001T120000”の引き出し要求のトランザクションについて、発行要求をトランザクション/ブロック処理部11へ通知する。
【0077】
ついで、BCノード1bのトランザクション/ブロック処理部11は、発行要求を受けたトランザクションについて、トランザクション作成・署名付与を行い(S54)、トランザクションの検証依頼を他のノード(BCノード1a、1c、1d)に通知する(S55)。
【0078】
トランザクションの検証依頼を受信したBCノード1a、1c、1dのトランザクション/ブロック処理部11は、トランザクションデータの検証を行った後に(S56)、システム時間管理部12より現在時刻データ(システム時刻)を取得する(S57、S58)。ついで、BCノード1a、1c、1dのトランザクション/ブロック処理部11は、システム時刻がトランザクションの指定時刻より後である否かの検証結果(取引OK/取引NG)をBCノード1bへ通知する(S59)。
【0079】
取引OKの通知を受けたBCノード1bのトランザクション/ブロック処理部11は、発行要求を受けたトランザクションを発行し、発行したトランザクションをブロック生成ノード3へ通知する(S60)。ブロック生成ノード3は、通知されたトランザクションに関する完了通知をBCノード1bへ返信する(S61)。BCノード1bのトランザクション/ブロック処理部11は、ブロック生成ノード3からの完了通知を時間取引実行部10へ通知する(S62)。なお、取引NGの通知を受けたBCノード1bのトランザクション/ブロック処理部11は、発行要求を受けたトランザクションを破棄する。
【0080】
また、ブロック生成ノード3は、マイニングなどによりBCのブロック生成を行い(S63)、通知されたトランザクションがブロックデータとしてまとめられる。
【0081】
図9Bに示すように、ついで、ブロック生成ノード3は、通知されたトランザクションを含むブロックをBCノード1a~1dに配布する(S64、S65)。これにより、通知されたトランザクションを含むブロックは、ブロックチェーン上で全参加者(BCノード1a~1d全て)に共有される。
【0082】
BCノード1bのトランザクション/ブロック処理部11は、ブロック生成ノード3より配布されたブロックを検証した上でBC台帳15へ記入し(S66、S67)、BC台帳15への記入済み完了を取得する(S68)。同様に、BCノード1a、1c、1dのトランザクション/ブロック処理部11は、ブロック生成ノード3より配布されたブロックを検証した上でBC台帳15へ記入し(S69、S70)、BC台帳15への記入済み完了を取得する(S71)。
【0083】
このように、発行要求を受けたトランザクションは、トランザクションを検証する他のノードが持つシステム時刻を基に引き出し可能な取引の有無を確認する。引き出し許可がある場合は、BCノード1bのトランザクション/ブロック処理部11は、その取引で許可されているトークン量を送り手のアカウントから受け手のアカウントに移転する。引き出し許可がない場合、BCノード1bのトランザクション/ブロック処理部11は、その取引は実行できないものとし、引き出しのトランザクションを破棄する。
【0084】
本実施形態では、取引OKが過半数ノード以上の場合にトランザクションの取引が実行され、過半数より少ない場合は、取引が失敗しトークンは移転されないものとする(どの程度のノード数が取引OKの判定の場合に取引を実行するかは、そのブロックチェーンのポリシーにより決定してよい)。
【0085】
図示例では、3ノードすべてでシステム時刻が2022年10月1日12時以降となっているため、引き出し可能な取引として、dateが” 20221001T120000”のものが該当するため、取引実行を承認する取引OKの結果をBCノード1bへ返している。したがって、BCノード1bのトランザクション/ブロック処理部11は、amountに設定されている10トークンを送り手から受け手に移転する。本実施形態では、該当する取引が1つのみであったが、該当する取引が複数ある場合は、それらをまとめてトークン移転を実行することも可能である。
【0086】
上記のトランザクションにより引き出しの取引が実行されると、移転を実行した引き出し許可データの取引は削除され、reserved tokenの値を減少させる。したがって、取引実行後のBC台帳15の状態は更新される。
【0087】
図10は、BC台帳15に登録されたデータの一例を説明する説明図であり、より具体的には
図8に例示したBC台帳15の更新後の内容を示している。
図10に示すように、更新後のBC台帳15では、2022年10月1日12時以降において、
図8に例示した引き出し許可データD2の一番目の取引が実行されている。すなわち、0x1234[送り手]から0x2345[受け手]に対して10のamountが移転している。
すなわち、トークン残高データD1における0x1234[送り手]のbalanceは90となり、0x2345[受け手]のbalanceは10となっている。
【0088】
なお、2022年10月1日12時の時点において、まだ指定時間になっていない取引(dateが” 20221001T130000”の20トークンの移転)は実行されていない。以上のように、本実施形態では、時間指定の引き出し許可に基づいて各ノードが取引を検証し、時間になった取引のみを実行することができるため、上述した課題の一つが解決されている。
【0089】
(引き出し要求が失敗した場合)
ブロックチェーン(BC)では、各ノードが持つシステム時刻は同期していないことが前提となる。そのため、トランザクションを発行したノードのシステム時刻上は、指定時刻になっていたとしても、実際の時刻とは誤差が生じており、必ずしも取引を実行できるとは限らない。そこで、そういった引き出しの要求が失敗の際に、取引を保証する処理を示す。
【0090】
(0.初期状態)
初期状態は、前述したケースと同様に、
図5の状態とする。つまりは、初期状態でのそれぞれのアカウントのトークン残高データD1は、0x1234(送り手)が100トークン、0x2345(受け手)が0トークンの状態である。また、引き出し許可データD2は空で、初期状態でまだ取引が登録されていない状態である。
【0091】
(1.引き出し許可登録)
引き出し許可登録は、前述したケースと同様に実施する(フローチャートは
図6A、
図6Bと同様)。更新後の引き出し許可データD2の状態は、
図7にように1つの引き出し許可が登録された状態となる。
【0092】
(2.引き出し待機・引き出し実行)
まずは、1度目では引き出し要求が失敗するケースを説明する。
図11は、引き出し要求が失敗するケースの一例を示すフローチャートである。
【0093】
図11に示すように、前述したケースと同様の処理が行われ(S81~S84)、指定時刻になったことを契機にBCノード1bのトランザクション/ブロック処理部11が、トランザクション検証依頼を各ノードに送信する(S85、S86)。
【0094】
しかし、今回のケースでは、受け手ノードのシステム時刻に誤差が生じており、実際の時刻よりも早く引き出し要求されている。具体的には、現在時刻は、2022年10月1日11時59分であるが、受け手のノードのシステム時刻は現在時刻が2022年10月1日12時になっているものとする。また、システム時刻の誤差は、悪意のあるユーザによる外部的な要因でも良いし、内部的な要因で偶発的に起こる場合や、故意に発生させた場合も問わない。
【0095】
トランザクション検証を依頼されたBCノード1c、1a、1dは、前述したケースと同様、それぞれのシステム時刻に基づいて引き出しの可否を判定し、トランザクション結果をBCノード1bへ返信する(S87~S94)。
【0096】
受け手ノード同様に、時刻が早いノードは取引OKと返してしまう場合もあるが、大半のノードはより正確な時刻で動作しているため、取引NGとして結果が返される。図示例では、BCノード1cが取引OK、BCノード1a、1dが取引NGを返している。
【0097】
本実施形態のポリシーでは、過半数のノードで取引OKの結果を得られない場合には、取引を実行できないため、BCノード1bのトランザクション/ブロック処理部11は、このトランザクションの取引は失敗とする結果を時間取引実行部10に返す(S95)。取引失敗の結果を受けたBCノード1の時間取引実行部10は、再び待機状態に移行する(S96)。
【0098】
ブロックチェーンの形態によっては、本実施形態のように、明示的にトランザクション検証の結果を受け取れない場合がある。その場合でも、時間取引実行部10が、BC台帳15を監視し、発行したトランザクションの成功の可否を確認することで同様の処理が可能である。その場合、一定時間経過してもトークンが移転されないことをもって、取引失敗と判定し、時間取引実行部10は再び待機状態に移行する。
【0099】
次に、1度目に失敗した引き出し要求を再送するケースを説明する。
図12A、
図12Bは、引き出し要求の再送にかかる処理の一例を示すフローチャートである(
図12Bは、
図12Aの処理の続きを示す)。
【0100】
図11のS96において待機状態に移行したBCノード1bの時間取引実行部10は、一定時間、たとえば1分などの待ち時間を待機した後(S101)、S53~S71と同様の処理を行う。
【0101】
具体的には、BCノード1bのトランザクション/ブロック処理部11は、再び引き出しのためのトランザクションを発行するため、トランザクション検証依頼を各ノードに送信する(S104、S105)。1度目と同様に、トランザクション検証を依頼されたBCノード1c、1a、1dのトランザクション/ブロック処理部11は、それぞれのシステム時刻に基づいて、引き出しの可否を判定する。ここで、一定時間の待機を行ったことで、先ほどは指定時間前であったノードも、システム時刻が指定時間を経過し、取引OKの判定を返す。
【0102】
この結果、過半数の取引OKの結果を得られたため、BCノード1bのトランザクション/ブロック処理部11は、ブロック生成ノード3にトランザクション発行を送信し(S114)、ブロックチェーン上で全参加者に共有され、引き出しの取引が実行される。
【0103】
引き出しの取引が実行されると、移転を実行した引き出し許可データの取引は削除され、reserved tokenの値を減少させる。
【0104】
図13は、BC台帳15に登録されたデータの一例を説明する説明図である。
図13に示すように、1度目は、指定時刻前で取り下げられた取引が2度目の再送により、指定時間とブロックチェーン上の各ノードで認められ、10トークン移転が実行されている。
【0105】
以上のように、実施形態にかかる取引システムでは、ノードごとにシステム時刻のずれがあった場合でも、ブロックチェーン上でのノード間で時間を検証し、かつ、失敗した取引の再送を制御することで、指定時間での取引結果を保証することができる。
【0106】
(引き出し要求するノードを冗長化させる場合)
以下のケースでは、受け手のノードで何かしらの問題が発生し、指定時間にトランザクションが発行できない場合について説明する。
【0107】
上記のケースでは、それぞれ受け手ノードを起点に、引き出し要求のトランザクションが指定時間通りに実行されたものかを検証していたが、起点となるノードがエラーになると、それ以降の処理も実行ができず、時間指定の取引が実行されることを保証できない。そこで今回のケースでは、トランザクションを発行するノードの冗長化を行うことで、受け手ノードが引き出し要求トランザクションを発行できない場合でも指定時間での取引を保証する。
【0108】
(0.初期状態)
図14は、BC台帳15に登録されたデータの一例を説明する説明図であり、より具体的には、今回のケースにおいてBC台帳15に登録されたデータの初期状態を示す。
【0109】
図14に示すように、トークン残高データD1において、それぞれのアカウントのトークン残高は、0x1234(送り手)が100トークン、0x2345(受け手1)、0x3456(受け手2)はそれぞれ0トークンの状態である。また、引き出し許可データは空である。引き出し許可データD2は、初期状態でまだ取引が登録されていない状態である。
【0110】
また、今回のケースでは、BC台帳15において、新たにグループデータD3が追加されている。グループデータD3は、冗長化を行う上でのグループを定義するデータで、ノードごとにグループが指定されている。また、各アカウントにも、グループ情報が付与されており、各ノードは同じグループに所属する時間指定の取引に関しては、自身アカウントの取引同様に監視を行い、必要に応じて、代替のトランザクションを発行する。
【0111】
具体的には、グループデータD3では、[受け手]のBCノード1bと[参加者]のBCノード1cとが同一のグループ「G1」に属していることが定義されている。また、グループデータD3では、[送り手]のBCノード1aと、[参加者]のBCノード1dとが同一のグループ「G2」に属していることが定義されている。
【0112】
【0113】
具体的には、実行行結果を検証したトランザクションは、ブロック生成ノード3で、ブロックデータとしてまとめられ、ブロックチェーン上で全参加者に共有される。BC台帳15に取引が登録されると、引き出しが許可した分の情報が更新される。
【0114】
図16は、BC台帳15に登録されたデータの一例を説明する説明図であり、より具体的にはブロック配布(S143~S145)による更新後のBC台帳15の状態を例示している。
図16に示すように、更新後のBC台帳15には、引き出し許可データD2のパラメータを”(from:0x1234,to:0x2345,amount:10,date:20221001T120000)”とする取引が登録されている。ここで、この取引の[受け手]と同一のグループである「G1」に属するアカウントはBCノード1cに属する[参加者]となる。
【0115】
各ノードの時間取引実行部10は、引き出し許可データD2の更新を監視しており、自ノードに関連するアカウントの情報に更新があった場合は、引き出しの待機状態に移行する。前回までのケースでは、自ノードで管理するアカウントのみに絞って、取引を確認していたが、今回のケースでは、同じグループに所属するアカウントを含めて確認を行う。すなわち、時間取引実行部10は、アカウント0x2345はG1のグループに所属しているため、BCノード1b、1cがそれぞれ待機状態に移行する。
【0116】
(2.引き出し待機・引き出し実行)
図17A、
図17Bは、引き出し待機・引き出し実行にかかる処理の一例を示すフローチャートである(
図17Bは、
図17Aの処理の続きを示す)。
【0117】
図17Aに示すように、今回のケースでは、受け手のBCノード1bの時間取引実行部10が待機状態(S171、S172)であるとともに、G1のグループに所属しているBCノード1cも、BCノード1cと同様に待機状態(S173、S174)となっている。
【0118】
ついで、BCノード1cのトランザクション/ブロック処理部11は、BCノード1bと同様、指定時間になったことを契機に、引き出しを実行するトランザクションを発行する(S175~S190)。
【0119】
ここでは、2022年10月1日12時になったものとし、dateが”20221001T120000”の引き出し許可のトランザクションが発行される。本来であれば、受け手のアカウントが所有するBCノード1bがトランザクションを発行するべきであるが、ここでは、何かしら問題によりBCノード1bのシステム時刻が大幅にずれており、何もしないものとする。BCノード1bがトランザクションを発行しない場合は、同じグループに所属し、待機状態になっているBCノード1cが引き出し要求をするために動作(S175以降)を開始する。
【0120】
具体的には、BCノード1cの時間取引実行部10は、自ノードのシステム時刻に基づいて、指定時間まで待機する(S173、S174)。そして、指定時間になった時に、引き出しを実行するトランザクションを発行する。ここで、本来実行するノードと競合が発生しないように、冗長化されたノードであるBCノード1cは、指定時間よりも一定時間、たとえば1分など待機した後に、動作を開始するものとする。
【0121】
ついで、BCノード1cの時間取引実行部10は、本来実行するノード(BCノード1b)がトランザクションを発行していないことを確認するために、BC台帳15のデータを取得し、時間指定取引の状態を見る(S175~S177)。これら処理を経て、受け手のノードが動いていないと判定されると、時間取引実行部10は、冗長化されたノードが代わりに引き出し要求を行う(S178)。
【0122】
発行されたトランザクションは、トランザクションを検証するノードが持つシステム時刻を基に引き出し可能な取引の有無を確認する(S180~S189)。今回は、3つのノードのうち、2つのノードはdateが” 20221001T120000”の取引が引き出し可能となっているため(受け手のBCノード1bの時刻がずれているため)、取引実行を承認する取引OKの結果を返し、amountに設定されている10トークンを送り手から受け手に移転する。
【0123】
引き出しの取引が実行されると、移転を実行した引き出し許可データの取引は削除され、reserved tokenの値を減少させる。
【0124】
図18は、BC台帳に登録されたデータの一例を説明する説明図であり、より具体的には、引き出しの取引後のBC台帳15の状態を例示する。
図18に示すように、冗長化されたノード(BCノード1c)により引き出しの取引が行われることから、本来実行すべき受け手ノードが正常に動作できない場合でも、冗長化されたノードにより、指定時間に取引を実行することが保証できる。
【0125】
なお、グループの設定情報はBC台帳15で管理する以外の形態でも構わない。例えば、Hyperledger FabricのMembership Service Providers(Membership Service Providers, Hyperledger Fabric, “https://hyperledger-fabric.readthedocs.io/ja/latest/msp.html”)などを用いて、ノードが所属する組織を冗長化の単位としてもよい。また、本実施形態のように、あらかじめグループの設定が困難な場合は動的にグループを作成することにより、同様の処理を実現することができる。
【0126】
以上のように、BC台帳15を管理する各ノードは、金融資産の移転元アカウントからの要求に基づき、移転元アカウントと、移転先アカウントと、金融資産の移転量と、金融資産の移転時刻とを含む、金融資産の移転を承認する承認トランザクションをBC台帳15に登録する。各ノードは、登録された承認トランザクションの中の、自ノードが移転先アカウントを管理する承認トランザクションについて、自ノードが管理する管理時刻が承認トランザクションに含まれる移転時刻に到達後、承認トランザクションの検証を他ノードに依頼し、他ノードの検証結果に基づいて承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行する。各ノードは、他ノードから承認トランザクションの検証依頼を受け付けた場合、承認トランザクションに含まれる移転時刻が管理時刻より後であるか否かの検証結果を他ノードに返信する。
【0127】
これにより、BC台帳15を管理する各ノードで構成される取引システムでは、ブロックチェーンによる安全な時間指定の取引を実現できる。その結果、ブロックチェーン上のトークンを用いて、債券同様の時間を指定した取引の実行が可能となり、DeFiでのファイナンスシステムの実現に寄与する。また、引き出し許可によるトークンの移転管理は、実際に引き出しがされてトークンが移転されるまでは、トークンは送り手の元にあり、移転されていない。そのため、引き出し許可された残高を基に戻すのみで指定時間前の取り消しができ、エスクローを使って一度、別のアカウント移動する方式などに比べて、時間前の取引の取り消しが容易となり、ユーザビリティが向上する。
【0128】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
【0129】
(付記1)金融資産にかかる分散台帳を管理する各ノードのコンピュータに、
前記金融資産の移転元アカウントからの要求に基づき、前記移転元アカウントと、移転先アカウントと、前記金融資産の移転量と、前記金融資産の移転時刻とを含む、前記金融資産の移転を承認する承認トランザクションを前記分散台帳に登録し、
前記登録された承認トランザクションの中の、自ノードが前記移転先アカウントを管理する承認トランザクションについて、前記自ノードが管理する管理時刻が前記承認トランザクションに含まれる移転時刻に到達後、前記承認トランザクションの検証を第1の他ノードに依頼し、当該第1の他ノードの検証結果に基づいて前記承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行し、
第2の他ノードから前記承認トランザクションの検証依頼を受け付けた場合、当該承認トランザクションに含まれる移転時刻が前記管理時刻より後であるか否かの検証結果を前記第2の他ノードに返信する、
処理を実行させることを特徴とする取引処理プログラム。
【0130】
(付記2)前記発行する処理は、前記第1の他ノードの検証結果に基づいて前記要求トランザクションの発行を否定した場合、所定時間経過後に、前記承認トランザクションの検証を再依頼する、
ことを特徴とする付記1に記載の取引処理プログラム。
【0131】
(付記3)前記発行する処理は、前記登録された承認トランザクションの中の、第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、前記管理時刻が前記承認トランザクションに含まれる移転時刻に到達してから所定時間経過後に当該承認トランザクションにかかる要求トランザクションが発行されていない場合、前記承認トランザクションの検証を第4の他ノードに依頼し、当該第4の他ノードの検証結果に基づいて前記承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする付記1に記載の取引処理プログラム。
【0132】
(付記4)前記発行する処理は、前記登録された承認トランザクションの中の、前記自ノードと同一のグループに属する前記第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、当該承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする付記3に記載の取引処理プログラム。
【0133】
(付記5)前記発行する処理は、前記検証を複数の前記第1の他ノードに依頼し、複数の前記第1の他ノードの検証結果に基づいて前記要求トランザクションを発行する、
ことを特徴とする付記1に記載の取引処理プログラム。
【0134】
(付記6)金融資産にかかる分散台帳を管理する各ノードのコンピュータが、
前記金融資産の移転元アカウントからの要求に基づき、前記移転元アカウントと、移転先アカウントと、前記金融資産の移転量と、前記金融資産の移転時刻とを含む、前記金融資産の移転を承認する承認トランザクションを前記分散台帳に登録し、
前記登録された承認トランザクションの中の、自ノードが前記移転先アカウントを管理する承認トランザクションについて、前記自ノードが管理する管理時刻が前記承認トランザクションに含まれる移転時刻に到達後、前記承認トランザクションの検証を第1の他ノードに依頼し、当該第1の他ノードの検証結果に基づいて前記承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行し、
第2の他ノードから前記承認トランザクションの検証依頼を受け付けた場合、当該承認トランザクションに含まれる移転時刻が前記管理時刻より後であるか否かの検証結果を前記第2の他ノードに返信する、
処理を実行することを特徴とする取引処理方法。
【0135】
(付記7)前記発行する処理は、前記第1の他ノードの検証結果に基づいて前記要求トランザクションの発行を否定した場合、所定時間経過後に、前記承認トランザクションの検証を再依頼する、
ことを特徴とする付記6に記載の取引処理方法。
【0136】
(付記8)前記発行する処理は、前記登録された承認トランザクションの中の、第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、前記管理時刻が前記承認トランザクションに含まれる移転時刻に到達してから所定時間経過後に当該承認トランザクションにかかる要求トランザクションが発行されていない場合、前記承認トランザクションの検証を第4の他ノードに依頼し、当該第4の他ノードの検証結果に基づいて前記承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする付記6に記載の取引処理方法。
【0137】
(付記9)前記発行する処理は、前記登録された承認トランザクションの中の、前記自ノードと同一のグループに属する前記第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、当該承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする付記8に記載の取引処理方法。
【0138】
(付記10)前記発行する処理は、前記検証を複数の前記第1の他ノードに依頼し、複数の前記第1の他ノードの検証結果に基づいて前記要求トランザクションを発行する、
ことを特徴とする付記6に記載の取引処理方法。
【0139】
(付記11)金融資産にかかる分散台帳を管理する情報処理装置であって、
前記金融資産の移転元アカウントからの要求に基づき、前記移転元アカウントと、移転先アカウントと、前記金融資産の移転量と、前記金融資産の移転時刻とを含む、前記金融資産の移転を承認する承認トランザクションを前記分散台帳に登録し、
前記登録された承認トランザクションの中の、自ノードが前記移転先アカウントを管理する承認トランザクションについて、前記自ノードが管理する管理時刻が前記承認トランザクションに含まれる移転時刻に到達後、前記承認トランザクションの検証を第1の他ノードに依頼し、当該第1の他ノードの検証結果に基づいて前記承認トランザクションにかかる金融資産の移転を要求する要求トランザクションを発行し、
第2の他ノードから前記承認トランザクションの検証依頼を受け付けた場合、当該承認トランザクションに含まれる移転時刻が前記管理時刻より後であるか否かの検証結果を前記第2の他ノードに返信する、
処理を実行する演算装置を含むことを特徴とする情報処理装置。
【0140】
(付記12)前記発行する処理は、前記第1の他ノードの検証結果に基づいて前記要求トランザクションの発行を否定した場合、所定時間経過後に、前記承認トランザクションの検証を再依頼する、
ことを特徴とする付記11に記載の情報処理装置。
【0141】
(付記13)前記発行する処理は、前記登録された承認トランザクションの中の、第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、前記管理時刻が前記承認トランザクションに含まれる移転時刻に到達してから所定時間経過後に当該承認トランザクションにかかる要求トランザクションが発行されていない場合、前記承認トランザクションの検証を第4の他ノードに依頼し、当該第4の他ノードの検証結果に基づいて前記承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする付記11に記載の情報処理装置。
【0142】
(付記14)前記発行する処理は、前記登録された承認トランザクションの中の、前記自ノードと同一のグループに属する前記第3の他ノードが前記移転先アカウントを管理する承認トランザクションについて、当該承認トランザクションにかかる要求トランザクションを前記第3の他ノードを代理して発行する、
ことを特徴とする付記13に記載の情報処理装置。
【0143】
(付記15)前記発行する処理は、前記検証を複数の前記第1の他ノードに依頼し、複数の前記第1の他ノードの検証結果に基づいて前記要求トランザクションを発行する、
ことを特徴とする付記11に記載の情報処理装置。
【符号の説明】
【0144】
1、1a~1d…BCノード
2、2a~2d…ホスト端末
3…ブロック生成ノード
10…時間取引実行部
11…トランザクション/ブロック処理部
12…システム時間管理部
13…受信部
14…送信部
15…BC台帳
20…送信部
21…受信部
22…操作・表示部
30…送信部
31…受信部
32…システム時間管理部
33…ブロック生成部
100…情報処理装置
101…演算装置
102…主記憶装置
102a…プログラム
102b…各種データ
103…補助記憶装置
104…ネットワークインターフェース
105…データバス
C1、C2…ケース
D1…トークン残高データ
D2…引き出し許可データ
D3…グループデータ
H1…送り手
H2…受け手
H3…参加者
N…ネットワーク