(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-09-24
(45)【発行日】2024-10-02
(54)【発明の名称】トークン残高管理システムおよびプログラム
(51)【国際特許分類】
G06Q 20/38 20120101AFI20240925BHJP
【FI】
G06Q20/38 310
(21)【出願番号】P 2023144042
(22)【出願日】2023-09-05
【審査請求日】2023-09-13
(73)【特許権者】
【識別番号】596108508
【氏名又は名称】株式会社大和総研
(74)【代理人】
【識別番号】100114638
【氏名又は名称】中野 寛也
(72)【発明者】
【氏名】桑木 大輔
【審査官】深津 始
(56)【参考文献】
【文献】特開2022-068758(JP,A)
【文献】特開2022-138078(JP,A)
【文献】特許第6629908(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 -G06Q 99/00
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンを用いて移転することが可能なセキュリティトークンの残高データを管理するコンピュータにより構成されたトークン残高管理システムであって、
ブロックチェーンシステムの外部で、各アカウントについての各セキュリティトークンの残高データを、各アカウントを識別するアカウント情報に関連付けて記憶するトークン残高データベースと、
このトークン残高データベースに記憶された各アカウントの前記残高データの毎回の更新時に、前記ブロックチェーンシステムを構成するノードから通信回線を介して最新のブロックについてのブロック番号を取得する最新ブロック番号取得手段と、
この最新ブロック番号取得手段により取得した前記ブロック番号を記憶するブロック番号記憶手段と、
このブロック番号記憶手段に記憶されている前回の残高更新時点で取得した前回のブロック番号の次のブロック番号から、前記最新ブロック番号取得手段により今回の残高更新時点で取得した今回のブロック番号までの各ブロックに含まれる移転データを、前記ノードから通信回線を介して取得する移転データ取得手段と、
この移転データ取得手段により取得した前記移転データから、
前記移転データの中に含まれていることにより残高更新の
対象となったセキュリティトークンとしての対象セキュリティトークンの移転元および移転先の各アカウントのアカウント情報を抽出し、抽出したアカウント情報を用いて、前記ノードから通信回線を介して前記移転元および前記移転先の各アカウントについての前記対象セキュリティトークンの残高データを取得する残高データ取得手段と、
この残高データ取得手段により取得した前記残高データを用いて、前記トークン残高データベースに記憶されている前記移転元および前記移転先の各アカウントのみについての前記対象セキュリティトークンの残高データを更新する残高更新手段と、
前記トークン残高データベースに記憶されている残高更新されたアカウントを含む各アカウントについての各セキュリティトークンの最新の残高データを用いて、残高一覧を出力する出力手段と
を備えたことを特徴とするトークン残高管理システム。
【請求項2】
(1)前記移転データ取得手段により取得した前記移転データから、前記対象セキュリティトークンの前記移転元のアカウントから前記移転先のアカウントへの移転数量を抽出し、前記残高データ取得手段により取得した前記移転元のアカウントについての前記対象セキュリティトークンの残高データに前記移転数量を加えた算出移転前残高データと、前記トークン残高データベースに記憶されている前記移転元のアカウントについての前記対象セキュリティトークンの更新直前の残高データとが一致するか否かを判断するとともに、前記残高データ取得手段により取得した前記移転先のアカウントについての前記対象セキュリティトークンの残高データから前記移転数量を減じた算出移転前残高データと、前記トークン残高データベースに記憶されている前記移転先のアカウントについての前記対象セキュリティトークンの更新直前の残高データとが一致するか否かを判断し、前記移転元または前記移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを報知する移転前残高ベース比較処理を実行するか、または、
(2)前記移転データ取得手段により取得した前記移転データから、前記対象セキュリティトークンの前記移転元のアカウントから前記移転先のアカウントへの移転数量を抽出し、前記トークン残高データベースに記憶されている前記移転元のアカウントについての前記対象セキュリティトークンの更新直前の残高データから、前記移転数量を減じた算出移転後残高データと、前記残高データ取得手段により取得した前記移転元のアカウントについての前記対象セキュリティトークンの残高データとが一致するか否かを判断するとともに、前記トークン残高データベースに記憶されている前記移転先のアカウントについての前記対象セキュリティトークンの更新直前の残高データに前記移転数量を加えた算出移転後残高データと、前記残高データ取得手段により取得した前記移転先のアカウントについての前記対象セキュリティトークンの残高データとが一致するか否かを判断し、前記移転元または前記移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを報知する移転後残高ベース比較処理を実行する不一致エラー報知手段を備え、
前記残高更新手段は、
前記不一致エラー報知手段による処理後に、前記残高データ取得手段により取得した前記残高データを用いて、前記トークン残高データベースに記憶されている前記移転元および前記移転先の各アカウントのみについての前記対象セキュリティトークンの残高データを更新する構成とされている
ことを特徴とする請求項1に記載のトークン残高管理システム。
【請求項3】
前回以前の各回の残高更新時に取得したブロック番号とともに、またはこのブロック番号および前回以前の各回の残高更新時点を示す情報とともに、各アカウントについての各セキュリティトークンの前回以前の過去の残高更新時点の更新後の残高データを、各アカウントを識別するアカウント情報に関連付けて記憶する過去残高記憶手段と、
前記不一致エラー報知手段による前記不一致エラーの報知後に、前記対象セキュリティトークンを取り扱う金融機関の担当者による前記トークン残高データベースの再構築の指示を受け付ける再構築手段とを備え、
この再構築手段は、
各回の過去の残高更新時に取得したブロック番号のうちの任意のブロック番号、若しくは、各回の過去の残高更新時点のうちの任意の残高更新時点を選択指定することによる前記担当者による再構築開始時点の指示入力を受け付ける再構築開始時点受付手段と、
この再構築開始時点受付手段により受け付けたブロック番号の次のブロック番号からか、若しくは、受け付けた過去の残高更新時点に対応するブロック番号の次のブロック番号から、前記不一致エラーの報知に係る今回の残高取得時点で取得したブロック番号までか、または、前記最新ブロック番号取得手段により前記ノードから通信回線を介して再取得したブロック番号までの各ブロックに含まれる移転データを、前記ノードから通信回線を介して取得する移転データ再取得手段と、
この移転データ再取得手段により取得した前記移転データから、残高再更新の対象セキュリティトークンの移転元および移転先の各アカウントのアカウント情報を抽出し、抽出したアカウント情報を用いて、前記ノードから通信回線を介して前記移転元および前記移転先の各アカウントについての前記対象セキュリティトークンの残高データを取得する残高データ再取得手段と、
この残高データ再取得手段により取得した前記残高データを用いて、前記過去残高記憶手段に記憶されている前回以前の過去の残高更新時点の更新後の各アカウントの残高データのうち、前記再構築開始時点受付手段により受け付けた前記担当者による指示入力で選択指定されたブロック番号に対応する残高更新時点または選択指定された残高更新時点の各アカウントの残高データについて、前記移転元および前記移転先の各アカウントのみについての前記対象セキュリティトークンの残高データを更新し、前記トークン残高データベースに記憶させる残高再更新手段とを含んで構成されている
ことを特徴とする請求項2に記載のトークン残高管理システム。
【請求項4】
前記再構築手段は、不一致エラー再報知手段を含んで構成され、
この不一致エラー再報知手段は、
(1)前記移転データ再取得手段により再取得した前記移転データから、前記対象セキュリティトークンの前記移転元のアカウントから前記移転先のアカウントへの移転数量を抽出し、前記残高データ再取得手段により取得した前記移転元のアカウントについての前記対象セキュリティトークンの残高データに前記移転数量を加えた算出移転前残高データと、前記過去残高記憶手段に記憶されている前記移転元のアカウントについての前記対象セキュリティトークンの前記再構築開始時点の更新後の残高データとが一致するか否かを判断するとともに、前記残高データ再取得手段により取得した前記移転先のアカウントについての前記対象セキュリティトークンの残高データから前記移転数量を減じた算出移転前残高データと、前記過去残高記憶手段に記憶されている前記移転先のアカウントについての前記対象セキュリティトークンの前記再構築開始時点の更新後の残高データとが一致するか否かを判断し、前記移転元または前記移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを再報知する移転前残高ベース比較処理を実行するか、または、
(2)前記移転データ再取得手段により再取得した前記移転データから、前記対象セキュリティトークンの前記移転元のアカウントから前記移転先のアカウントへの移転数量を抽出し、前記過去残高記憶手段に記憶されている前記移転元のアカウントについての前記対象セキュリティトークンの前記再構築開始時点の更新後の残高データから、前記移転数量を減じた算出移転後残高データと、前記残高データ再取得手段により取得した前記移転元のアカウントについての前記対象セキュリティトークンの残高データとが一致するか否かを判断するとともに、前記過去残高記憶手段に記憶されている前記移転先のアカウントについての前記対象セキュリティトークンの前記再構築開始時点の更新後の残高データに前記移転数量を加えた算出移転後残高データと、前記残高データ再取得手段により取得した前記移転先のアカウントについての前記対象セキュリティトークンの残高データとが一致するか否かを判断し、前記移転元または前記移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを再報知する移転後残高ベース比較処理を実行し、
さらに前記不一致エラーを再報知した場合には、前記再構築開始時点受付手段に対し、新たな再構築開始時点の指示入力を受け付ける処理を実行させるための指令を送る構成とされている
ことを特徴とする請求項3に記載のトークン残高管理システム。
【請求項5】
前記最新ブロック番号取得手段は、
最新のブロック番号の毎回の取得時に、取得した最新のブロック番号と、前記ブロック番号記憶手段に記憶されている前回の残高更新時点で取得した前回のブロック番号とを比較することにより、番号が増えているか否かを判断し、増えていない場合には、前記ノードを含む前記ブロックチェーンシステムに異常が発生している可能性がある旨を報知する異常報知処理を実行する構成とされている
ことを特徴とする請求項1に記載のトークン残高管理システム。
【請求項6】
前記残高データ取得手段より、前記移転データから抽出した前記移転元のアカウントのアカウント情報が、前記トークン残高データベースに存在しないアカウントのアカウント情報であると判断された場合に、他の金融機関が管理するアカウントからの移転があった旨を自社の担当者に通知する通知手段を備えた
ことを特徴とする請求項1に記載のトークン残高管理システム。
【請求項7】
請求項1~6のいずれかに記載のトークン残高管理システムとして、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーンを用いて移転することが可能なセキュリティトークンの残高データを管理するコンピュータにより構成されたトークン残高管理システムおよびプログラムに係り、例えば証券会社等の金融機関が、自社の顧客が保有するセキュリティトークンの残高管理を行う場合に利用できる。
【背景技術】
【0002】
近年、ブロックチェーンシステム上で発行され、管理されるセキュリティトークン(デジタル化された有価証券)が普及し始めている。ブロックチェーンシステムにおいて、銀行口座に相当する概念のものはアカウントと呼ばれ、ブロックチェーンシステム上で発行されている〇〇トークン(△△コイン等も含む。)は、その残高をトークン毎で、かつ、アカウント毎に管理されている。
【0003】
ブロックチェーンに記録されている残高データは、ブロックチェーンシステムを構成するノードを介して1件ずつしか取得することができない。例えば、投資家AのアカウントにトークンXおよびトークンYの各残高がある場合に、ノードに対し、双方の残高の取得要求を1つの問合せリクエストとして、まとめて送信することはできず、トークンXの残高問合せと、トークンYの残高問合せとの2回の問合せを行う必要がある。投資家B,C,D,…のアカウントについても同様である。
【0004】
従来の個人によるトークンの取引においては、あくまでも自分が保有するトークンの残高のみが分かればよいので、問合せの件数も限られており、パフォーマンスの懸念はなく、効率化の要請が生じる余地は無かった。
【0005】
一方、セキュリティトークン(ブロックチェーンを使って発行された有価証券)の場合には、証券会社が全投資家(自社の全顧客)のアカウントおよび保有トークンを預かる形になるので、トークン数およびアカウント数の双方ともに膨大な数となる。従って、残高帳票作成時など、全顧客の全トークンの保有残高をブロックチェーンシステムから取得する必要がある場合には、各顧客のアカウント毎で、かつ、トークン毎に、1件ずつノードへの問合せを行って取得しなければならない。
【0006】
なお、ブロックチェーンシステムやスマートコントラクトを使ったトークン取引に関する技術としては、例えば、スマートコントラクトの制御により、出資者の所有トークン数に応じた額を、出資者のそれぞれへ支払可能にする分配金支払システムが知られている(特許文献1参照)。
【0007】
また、本願出願人による技術として、ポーリングにより、ブロックチェーンシステムから取引データを取得し、P2P(ピア・ツー・ピア)ネットワークの構成ノードの分散型台帳と、P2P以外のネットワークに接続されたシステムのデータベースとを同期させる技術が知られている(特許文献2参照)。
【先行技術文献】
【特許文献】
【0008】
【文献】特開2022-138078号公報
【文献】特許第6629908号掲載公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
前述したように、従来の個人ベースで行われていた自己保有のトークンについての残高問合せ方法を、ブロックチェーンシステム上のセキュリティトークンの残高をブロックチェーンシステムの外部でも管理する証券会社システム(=ウォレット)に適用すると、トークンの銘柄数および投資家のアカウント数の双方ともに膨大な数となり、そのような状況の中で、全残高をトークン毎で、かつ、アカウント毎に、1件ずつ取得することになるので、非常に時間がかかる。
【0010】
また、残高の取得に時間がかかれば、各アカウントの各トークンの残高を、残高一覧として、画面に表示し、帳票ファイルに出力し、または帳票印刷するまでに、待ち時間が発生し、業務が停滞する。
【0011】
従って、セキュリティトークンの残高データ取得方法として、従来のトークンについての残高問合せ方法とは異なる効率のよい方法が必要となる。
【0012】
本発明の目的は、セキュリティトークンの残高データを効率よく取得することができるトークン残高管理システムおよびプログラムを提供するところにある。
【課題を解決するための手段】
【0013】
本発明は、ブロックチェーンを用いて移転することが可能なセキュリティトークンの残高データを管理するコンピュータにより構成されたトークン残高管理システムであって、
ブロックチェーンシステムの外部で、各アカウントについての各セキュリティトークンの残高データを、各アカウントを識別するアカウント情報に関連付けて記憶するトークン残高データベースと、
このトークン残高データベースに記憶された各アカウントの残高データの毎回の更新時に、ブロックチェーンシステムを構成するノードから通信回線を介して最新のブロックについてのブロック番号を取得する最新ブロック番号取得手段と、
この最新ブロック番号取得手段により取得したブロック番号を記憶するブロック番号記憶手段と、
このブロック番号記憶手段に記憶されている前回の残高更新時点で取得した前回のブロック番号の次のブロック番号から、最新ブロック番号取得手段により今回の残高更新時点で取得した今回のブロック番号までの各ブロックに含まれる移転データを、ノードから通信回線を介して取得する移転データ取得手段と、
この移転データ取得手段により取得した移転データから、残高更新の対象セキュリティトークンの移転元および移転先の各アカウントのアカウント情報を抽出し、抽出したアカウント情報を用いて、ノードから通信回線を介して移転元および移転先の各アカウントについての対象セキュリティトークンの残高データを取得する残高データ取得手段と、
この残高データ取得手段により取得した残高データを用いて、トークン残高データベースに記憶されている移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新する残高更新手段と、
トークン残高データベースに記憶されている各アカウントについての各セキュリティトークンの最新の残高データを用いて、残高一覧を出力する出力手段と
を備えたことを特徴とするものである。
【0014】
ここで、「残高データ取得手段」における「残高更新の対象セキュリティトークン」は、ブロックチェーンシステムから取得した移転データの中に含まれていたので、残高更新の対象となったセキュリティトークンという意味である。従って、残高更新の対象として本システム上で予め定められているセキュリティトークンという意味ではない。但し、トークン残高管理システムを設置・運営する金融機関が取り扱っていないセキュリティトークンは、そもそも残高更新の対象セキュリティトークンにはならないので、当該金融機関が取り扱っているセキュリティトークンのうち、移転データの中に含まれていたセキュリティトークンということになる。なお、当該金融機関が取り扱うセキュリティトークンが1しかない場合も、本発明から排除されるものではなく、本発明の効果を享受することができ、この場合、本願の請求項や明細書の説明で「各セキュリティトークン」と記載しているのは、その唯一のセキュリティトークンを指すことになる。
【0015】
また、「出力手段」における「残高一覧」には、アカウント毎の残高一覧(任意の1人の投資家の保有する全てのセキュリティトークンの残高の一覧)、セキュリティトークン毎の残高一覧(任意の1つのセキュリティトークンを保有する全ての投資家のアカウントの残高の一覧)、これらを複合させた残高一覧(アカウント情報に対応する投資家の名前等と、トークンIDに対応するトークンの名称等と、残高数量とを各行に並べた一覧)のいずれも含まれる。
【0016】
さらに、「トークン残高データベース」は、アカウント情報(アドレスまたはその代替情報)と、トークンIDと、残高データとを各行に含むテーブルで構成してもよく、あるいは、セキュリティトークン毎にテーブル(アカウント情報と、残高データとを各行に含むテーブル)を設けてもよい。
【0017】
このような本発明のトークン残高管理システムにおいては、残高更新をする前に、移転データ取得手段により、ブロックチェーンシステムからノードを介して移転データを取得し、その移転データから、残高データ取得手段により、残高更新の対象セキュリティトークンの移転元および移転先の各アカウントのアカウント情報を抽出し、その抽出情報を用いて、ブロックチェーンシステムからノードを介して移転に関与した移転元および移転先の各アカウントの対象セキュリティトークンの残高データのみを取得し、残高更新手段により、トークン残高データベースに記憶されている移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新する。
【0018】
このため、前回の残高更新時点から今回の残高更新時点までの間に、移転に関与しなかったアカウントやセキュリティトークンの残高データについては、ブロックチェーンシステムから取得することはなく、残高更新も行わないので、全アカウントについての全セキュリティトークンの残高データを、効率よく更新していくことが可能となり、これにより前記目的が達成される。
【0019】
<不一致エラー報知手段を備えた構成>
【0020】
また、前述したトークン残高管理システムにおいて、
(1)移転データ取得手段により取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出し、残高データ取得手段により取得した移転元のアカウントについての対象セキュリティトークンの残高データに移転数量を加えた算出移転前残高データと、トークン残高データベースに記憶されている移転元のアカウントについての対象セキュリティトークンの更新直前の残高データとが一致するか否かを判断するとともに、残高データ取得手段により取得した移転先のアカウントについての対象セキュリティトークンの残高データから移転数量を減じた算出移転前残高データと、トークン残高データベースに記憶されている移転先のアカウントについての対象セキュリティトークンの更新直前の残高データとが一致するか否かを判断し、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを報知する移転前残高ベース比較処理を実行するか、または、
(2)移転データ取得手段により取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出し、トークン残高データベースに記憶されている移転元のアカウントについての対象セキュリティトークンの更新直前の残高データから、移転数量を減じた算出移転後残高データと、残高データ取得手段により取得した移転元のアカウントについての対象セキュリティトークンの残高データとが一致するか否かを判断するとともに、トークン残高データベースに記憶されている移転先のアカウントについての対象セキュリティトークンの更新直前の残高データに移転数量を加えた算出移転後残高データと、残高データ取得手段により取得した移転先のアカウントについての対象セキュリティトークンの残高データとが一致するか否かを判断し、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを報知する移転後残高ベース比較処理を実行する不一致エラー報知手段を備え、
残高更新手段は、
不一致エラー報知手段による処理後に、残高データ取得手段により取得した残高データを用いて、トークン残高データベースに記憶されている移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新する構成としてもよい。
【0021】
このように不一致エラー報知手段を備えた構成とした場合には、トークン残高データベースの予期せぬ更新等の異常の検知が可能となり、例えば、不正行為によるデータ改竄や、システムエラーの検知が可能となる。
【0022】
<再構築手段を備えた構成>
【0023】
さらに、前述した不一致エラー報知手段を備えた構成とした場合において、
前回以前の各回の残高更新時に取得したブロック番号とともに、またはこのブロック番号および前回以前の各回の残高更新時点を示す情報とともに、各アカウントについての各セキュリティトークンの前回以前の過去の残高更新時点の更新後の残高データを、各アカウントを識別するアカウント情報に関連付けて記憶する過去残高記憶手段と、
不一致エラー報知手段による不一致エラーの報知後に、対象セキュリティトークンを取り扱う金融機関の担当者によるトークン残高データベースの再構築の指示を受け付ける再構築手段とを備え、
この再構築手段は、
各回の過去の残高更新時に取得したブロック番号のうちの任意のブロック番号、若しくは、各回の過去の残高更新時点のうちの任意の残高更新時点を選択指定することによる担当者による再構築開始時点の指示入力を受け付ける再構築開始時点受付手段と、
この再構築開始時点受付手段により受け付けたブロック番号の次のブロック番号からか、若しくは、受け付けた過去の残高更新時点に対応するブロック番号の次のブロック番号から、不一致エラーの報知に係る今回の残高取得時点で取得したブロック番号までか、または、最新ブロック番号取得手段によりノードから通信回線を介して再取得したブロック番号までの各ブロックに含まれる移転データを、ノードから通信回線を介して取得する移転データ再取得手段と、
この移転データ再取得手段により取得した移転データから、残高再更新の対象セキュリティトークンの移転元および移転先の各アカウントのアカウント情報を抽出し、抽出したアカウント情報を用いて、ノードから通信回線を介して移転元および移転先の各アカウントについての対象セキュリティトークンの残高データを取得する残高データ再取得手段と、
この残高データ再取得手段により取得した残高データを用いて、過去残高記憶手段に記憶されている前回以前の過去の残高更新時点の更新後の各アカウントの残高データのうち、再構築開始時点受付手段により受け付けた担当者による指示入力で選択指定されたブロック番号に対応する残高更新時点または選択指定された残高更新時点の各アカウントの残高データについて、移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新し、トークン残高データベースに記憶させる残高再更新手段とを含んで構成されていることが望ましい。
【0024】
このように再構築手段を備えた構成とした場合には、不一致エラー報知手段による不一致エラーの報知の原因となったアカウントの残高データ以外にも、トークン残高データベースに不具合・不整合な状態が生じているときに、その不具合・不整合な状態を正すことが可能となる。すなわち、不一致エラー報知手段による不一致エラーの報知が行われた場合でも、結局、残高更新手段により、残高データ取得手段によりブロックチェーンシステムから取得した残高データを用いて、トークン残高データベースに記憶されている移転元および移転先の各アカウントについての対象セキュリティトークンの残高データを更新する処理が行われるので、それらのアカウントの残高データについては、更新後に正しい状態となる。しかし、そこで更新されなかった他のアカウント(移転元および移転先の各アカウント以外のアカウント、すなわち、前回の残高更新時点から今回の残高更新時点までの間に、移転への関与がなかったアカウント)については、残高データが正しい状態か否かが不明である。そこで、金融機関の担当者は、正しい状態であることに疑義がある場合には、再構築手段により、過去の残高更新時点に遡って、トークン残高データベースを再構築することが可能となる。
【0025】
また、金融機関の担当者は、各回の過去の残高更新時に取得したブロック番号のうちの任意のブロック番号、若しくは、各回の過去の残高更新時点のうちの任意の残高更新時点を選択指定することにより、再構築開始時点の指示入力を行うことができる。このため、やり直しが必要な時点まで戻ればよいので、全てのアカウントが空の状態(残高がゼロの状態)である初期状態まで戻って、トークン残高データベースを再構築する必要がなくなるため、再構築に要する時間を短縮することが可能となる。
【0026】
<不一致エラー再報知手段を備えた構成>
【0027】
そして、前述した再構築手段を備えた構成とした場合において、
再構築手段は、不一致エラー再報知手段を含んで構成され、
この不一致エラー再報知手段は、
(1)移転データ再取得手段により再取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出し、残高データ再取得手段により取得した移転元のアカウントについての対象セキュリティトークンの残高データに移転数量を加えた算出移転前残高データと、過去残高記憶手段に記憶されている移転元のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データとが一致するか否かを判断するとともに、残高データ再取得手段により取得した移転先のアカウントについての対象セキュリティトークンの残高データから移転数量を減じた算出移転前残高データと、過去残高記憶手段に記憶されている移転先のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データとが一致するか否かを判断し、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを再報知する移転前残高ベース比較処理を実行するか、または、
(2)移転データ再取得手段により再取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出し、過去残高記憶手段に記憶されている移転元のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データから、移転数量を減じた算出移転後残高データと、残高データ再取得手段により取得した移転元のアカウントについての対象セキュリティトークンの残高データとが一致するか否かを判断するとともに、過去残高記憶手段に記憶されている移転先のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データに移転数量を加えた算出移転後残高データと、残高データ再取得手段により取得した移転先のアカウントについての対象セキュリティトークンの残高データとが一致するか否かを判断し、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを再報知する移転後残高ベース比較処理を実行し、
さらに不一致エラーを再報知した場合には、再構築開始時点受付手段に対し、新たな再構築開始時点の指示入力を受け付ける処理を実行させるための指令を送る構成とされていることが望ましい。
【0028】
このように不一致エラー再報知手段を備えた構成とした場合には、金融機関の担当者が、一旦、再構築開始時点の指示入力を行い、再構築手段による処理を行っても、不一致エラーが再報知される結果となってしまうこともあり得るので、そのようなときに、新たな再構築開始時点(通常は、最初に指示入力した再構築開始時点よりも過去の時点とする。)の指示入力を受け付け、再構築手段による処理をやり直すことが可能となる。
【0029】
すなわち、金融機関の担当者は、最初に再構築開始時点の指示入力を行うときは、不一致エラーの発生原因や発生時点(例えば、不正アクセスが確認された時点や、システムエラーが確認された時点)を特定し、その特定した時点よりも前の時点を選択指定して再構築手段による処理を実行させる場合が多い。しかし、そのような特定作業を行わずに、とりあえず適当な過去の時点を指示入力して再構築手段による処理を実行する場合や、特定した時点よりも更に前の時点にも、不一致エラーの発生原因が存在する場合もあり、そのような場合には、不一致エラーの再報知が行われることもあるので、そうなったときに、再構築開始時点を変更してトークン残高データベースの再構築をやり直すことが可能となる。
【0030】
<最新ブロック番号取得手段が異常報知処理を実行する構成>
【0031】
また、前述したトークン残高管理システムにおいて、
最新ブロック番号取得手段は、
最新のブロック番号の毎回の取得時に、取得した最新のブロック番号と、ブロック番号記憶手段に記憶されている前回の残高更新時点で取得した前回のブロック番号とを比較することにより、番号が増えているか否かを判断し、増えていない場合には、ノードを含むブロックチェーンシステムに異常が発生している可能性がある旨を報知する異常報知処理を実行する構成としてもよい。
【0032】
このように最新ブロック番号取得手段が異常報知処理を実行する構成とした場合には、ノードを含むブロックチェーンシステムに異常が発生している可能性がある旨が報知されるので、金融機関の担当者は、例えば、自社の設置したノードに不具合が発生しているときに、それを早期に把握し、その対処を迅速に行うことが可能となる。
【0033】
<通知手段を備えた構成>
【0034】
さらに、前述したトークン残高管理システムにおいて、
残高データ取得手段より、移転データから抽出した移転元のアカウントのアカウント情報が、トークン残高データベースに存在しないアカウントのアカウント情報であると判断された場合に、他の金融機関が管理するアカウントからの移転があった旨を自社の担当者に通知する通知手段を備えた構成としてもよい。
【0035】
このように通知手段を備えた構成とした場合には、他社から自社へのトークンの移転が行われたことがわかるので、例えば、相続に伴う移転や、他社から自社への証券会社の乗換えによる移転が行われたときに、必要な手続に漏れがないように、金融機関(自社)の担当者に通知することが可能となる。
【0036】
<プログラムの発明>
【0037】
そして、本発明のプログラムは、以上に述べたトークン残高管理システムとして、コンピュータを機能させるためのものである。
【0038】
なお、上記のプログラムまたはその一部は、例えば、光磁気ディスク(MO)、コンパクトディスク(CD)、デジタル・バーサタイル・ディスク(DVD)、フレキシブルディスク(FD)、磁気テープ、読出し専用メモリ(ROM)、電気的消去および書換可能な読出し専用メモリ(EEPROM)、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、フラッシュディスク等の記録媒体に記録して保存や流通等させることが可能であるとともに、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等の有線ネットワーク、あるいは無線通信ネットワーク、さらにはこれらの組合せ等の伝送媒体を用いて伝送することが可能であり、また、搬送波に載せて搬送することも可能である。さらに、上記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。
【発明の効果】
【0039】
以上に述べたように本発明によれば、トークン残高データベースの残高更新を行う際に、ブロックチェーンシステムから移転データを取得し、その移転データから、移転に関与したアカウントやセキュリティトークンの情報を抽出し、その抽出情報を用いて、ブロックチェーンシステムから、移転に関与した各アカウントの対象セキュリティトークンの残高データのみを取得するので、セキュリティトークンの残高データを効率よく取得することができるという効果がある。
【図面の簡単な説明】
【0040】
【
図1】本発明の一実施形態のトークン残高管理システムの全体構成図。
【
図2】前記実施形態の毎回の残高更新時点で取得する最新のブロック番号と移転データとの関係を示す説明図。
【
図3】前記実施形態の取得した移転データ、トークン残高の更新、ブロック番号の更新の例示図。
【
図4】前記実施形態の分散型台帳記憶手段の構成図。
【
図5】前記実施形態の分散型台帳記憶手段内のステートルート算出用データ保存領域の構成図。
【
図6】前記実施形態の毎回の残高更新の流れを示すフローチャートの図。
【
図7】前記実施形態のトークン残高データベースの再構築の流れを示すフローチャートの図。
【発明を実施するための形態】
【0041】
以下に本発明の一実施形態について図面を参照して説明する。
図1には、本実施形態のトークン残高管理システム10の全体構成が示されている。
図2は、毎回の残高更新時点で取得する最新のブロック番号と移転データとの関係を示す説明図であり、
図3は、取得した移転データ、トークン残高の更新、ブロック番号の更新の例示図である。また、
図4には、分散型台帳記憶手段60の構成が示され、
図5には、分散型台帳記憶手段60内のステートルート算出用データ保存領域62の構成が示されている。さらに、
図6には、毎回の残高更新の流れがフローチャートで示され、
図7には、トークン残高データベース41の再構築の流れがフローチャートで示されている。
【0042】
<トークン残高管理システム10の全体構成>
【0043】
図1において、トークン残高管理システム10は、証券会社等の金融機関が設置・運営する金融機関サーバ20と、この金融機関サーバ20と通信回線1を介して接続されたノード50とを備えている。また、金融機関サーバ20には、P2P(ピア・ツー・ピア)以外のネットワーク2を介して、当該金融機関(自社)の担当者が操作する担当者端末70と、当該金融機関(自社)の顧客(投資家)が操作する顧客端末71とが接続されている。
【0044】
ノード50は、当該金融機関(自社)が設置したノードであり、他の証券会社等の金融機関(他社)が設置した複数のノード80とP2Pネットワーク3で接続され、自社のノード50と、他社の複数のノード80とにより、ブロックチェーンシステム90が構成されている。
【0045】
ここで、通信回線1は、例えばLANやイントラネット等の内部ネットワークであるが、一旦、外部を経由する外部ネットワークとしてもよい。また、ネットワークではなく、専用線としてもよい。さらに、金融機関サーバ20と、ノード50とが、同じコンピュータ内に一体化されて構築されている場合には、この通信回線1は不要であるが、請求項における「通信回線」の解釈上、コンピュータ内のバスであると考えてもよい。
【0046】
ネットワーク2は、P2Pネットワークではなく(ネットワーク2内のコンピュータは、P2P接続されていない。)、主としてインターネットにより構成された外部ネットワークであり、インターネットと、LANやイントラネット等の内部ネットワークとの組合せでもよく、有線であるか無線であるか、さらには有線および無線の混在型であるかは問わず、要するに、複数地点(距離の長短は問わない。)間で、ある程度の速度をもって情報を伝送することができるものであればよい。
【0047】
ネットワーク3は、分散型台帳形成用(ブロックチェーンシステム90の構成用)のP2Pネットワークであり、分散型台帳への参加者ノード50,80は、P2P接続されることになる。具体的には、ネットワーク3は、例えばインターネットや通信事業者が提供する各種のサービス網等の公衆ネットワークを使って形成された仮想的なネットワーク(インターネット上にVPN(バーチャル・プライベート・ネットワーク)を用いて構築されたイントラネットを含む。)などである。従って、ネットワーク3は、物理的には、ネットワーク2(P2P以外)と同じ通信回線を使用していてよい。
【0048】
金融機関サーバ20は、1台または複数台のコンピュータにより構成され、セキュリティトークンの残高管理を含む各種処理を実行する処理手段20Aと、この処理手段20Aに接続されたトークン残高データベース41、ブロック番号記憶手段42、および過去残高記憶手段43とを備えて構成されている。
【0049】
処理手段20Aは、最新ブロック番号取得手段21と、移転データ取得手段22と、残高データ取得手段23と、残高更新手段24と、ブロック番号更新手段25と、出力手段26と、不一致エラー報知手段27と、再構築手段28と、通知手段29と、トランザクション管理手段30とを含んで構成されている。なお、トランザクション管理手段30が、点線で記載されているのは、セキュリティトークンの残高管理の処理を行うものではなく、トークン残高管理システム10の構成要素ではないからである。
【0050】
再構築手段28は、再構築開始時点受付手段28Aと、移転データ再取得手段28Bと、残高データ再取得手段28Cと、残高再更新手段28Dと、不一致エラー再報知手段28Eとを含んで構成されている。
【0051】
ここで、処理手段20Aに含まれる各手段21~30は、金融機関サーバ20の内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段21~30の詳細は後述する。
【0052】
トークン残高データベース41、ブロック番号記憶手段42、および過去残高記憶手段43としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。これらのトークン残高データベース41、ブロック番号記憶手段42、および過去残高記憶手段43の詳細は後述する。
【0053】
ノード50は、1台または複数台のコンピュータにより構成され、セキュリティトークンの取引や残高管理に関する各種処理を実行する処理手段50Aと、この処理手段50Aに接続された分散型台帳記憶手段60とを備えている。
【0054】
処理手段50Aは、ブロック番号取得要求応答手段51と、移転データ取得要求応答手段52と、残高データ取得要求応答手段53と、トランザクション記録手段54とを含んで構成されている。なお、トランザクション記録手段54が、点線で記載されているのは、セキュリティトークンの残高管理の処理を行うものではなく、トークン残高管理システム10の構成要素ではないからである。
【0055】
ここで、処理手段50Aに含まれる各手段51~54は、ノード50の内部に設けられた中央演算処理装置(CPU)、およびこのCPUの動作手順を規定する1つまたは複数のプログラム、並びに主メモリやキャッシュメモリ等の作業用メモリにより実現される。これらの各手段51~54の詳細は後述する。
【0056】
なお、処理手段50Aの機能には、ブロックチェーンが有する基本的な機能と、スマートコントラクトにより実現される機能とがあるが、これらの機能は、いずれも本発明のために特別に設けた機能ではなく、自社のノード50および他社の複数のノード80に共通の機能であるという点で、区別する必要はない。
【0057】
分散型台帳記憶手段60としては、例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)等の不揮発性メモリを採用することができる。この分散型台帳記憶手段60の詳細は後述する。
【0058】
担当者端末70および顧客端末71は、コンピュータにより構成されている。また、これらの端末70,71は、例えば、スマートフォンやタブレット端末等の携帯機器であってもよい。
【0059】
ノード80は、1台または複数台のコンピュータにより構成され、ノード50と同様な構成および機能を備えている。
【0060】
<金融機関サーバ20/処理手段20A/最新ブロック番号取得手段21の構成>
【0061】
最新ブロック番号取得手段21は、トークン残高データベース41に記憶された各アカウントについての各セキュリティトークンの残高データの毎回(例えば、毎営業日、毎週、毎月など)の更新時に、ブロックチェーンシステム90を構成するノード50から、通信回線1を介して最新のブロックについてのブロック番号を取得する処理を実行するものである。より詳細には、最新ブロック番号取得手段21は、ノード50に対し、通信回線1を介してブロック番号取得要求信号を送信した後、ノード50から通信回線1を介して送信されてくる最新のブロックについてのブロック番号を受信する。
【0062】
なお、本実施形態では、ブロック番号記憶手段42には、最新のブロックについてのブロック番号を上書き保存していくので、この最新ブロック番号取得手段21により取得したブロック番号は、直ぐにブロック番号記憶手段42に上書き保存せずに、主メモリに記憶させておき、あとでブロック番号更新手段25によりブロック番号記憶手段42に保存する。ブロック番号記憶手段42に前回の残高更新時に保存されたブロック番号が記憶されていて、それを移転データ取得手段22で読み込んで使用するからである。
【0063】
また、最新ブロック番号取得手段21は、最新のブロック番号の毎回の取得時に、取得した最新のブロック番号と、ブロック番号記憶手段42に記憶されている前回の残高更新時点で取得した前回のブロック番号とを比較することにより、番号が増えているか否かを判断し、増えていない場合には、ノード50を含むブロックチェーンシステム90に異常が発生している可能性がある旨を報知する異常報知処理を実行する。この異常報知は、担当者端末70に対して行う。
【0064】
<金融機関サーバ20/処理手段20A/移転データ取得手段22の構成:
図2>
【0065】
移転データ取得手段22は、ブロック番号記憶手段42に記憶されている前回の残高更新時点で取得した前回のブロック番号を読み込み、読み込んだブロック番号の次のブロック番号(1を足した番号)から、最新ブロック番号取得手段21により今回の残高更新時点で取得した今回のブロック番号までの各ブロック61(
図4参照)に含まれる移転データを、ノード50から通信回線1を介して取得する処理を実行するものである。より詳細には、移転データ取得手段22は、ノード50に対し、通信回線1を介して移転データ取得要求信号(前回のブロック番号の次のブロック番号と、今回のブロック番号とを含む。)を送信した後、ノード50から通信回線1を介して送信されてくる移転データを受信する。
【0066】
具体的には、例えば、
図2に示すように、今回の残高取得時点T(n)で最新ブロック番号取得手段21により取得した現在における最新のブロックについてのブロック番号=114であったとする。また、前回の残高取得時点T(n-1)で最新ブロック番号取得手段21により取得した前回における最新のブロックについてのブロック番号=110であったとする。このとき、移転データ取得手段22は、前回のブロック番号(=110)の次のブロック番号=111から、今回のブロック番号=114までの間のブロック61(
図4参照)に含まれる全ての移転データを、今回の残高更新時点T(n)での取得対象の移転データとする。なお、前回の残高更新時点T(n-1)で取得対象とした移転データは、前々回のブロック番号(=104)の次のブロック番号=105から、前回のブロック番号=110までの間のブロック61に含まれる全ての移転データである。
【0067】
移転データには、
図4に示すように、トークンID、移転元および移転先の各アカウントのアカウント情報(アドレス)、移転数量が含まれている。
【0068】
<金融機関サーバ20/処理手段20A/残高データ取得手段23の構成>
【0069】
残高データ取得手段23は、移転データ取得手段22により取得した移転データ(
図4参照)から、残高更新の対象セキュリティトークン(トークンIDで特定する。)の移転元および移転先の各アカウントのアカウント情報(アドレス)を抽出し、抽出したアカウント情報(アドレス)およびトークンIDを用いて、ノード50から通信回線1を介して移転元および移転先の各アカウントについての対象セキュリティトークンの残高データを取得する処理を実行するものである。より詳細には、残高データ取得手段23は、ノード50に対し、通信回線1を介して残高データ取得要求信号(移転元および移転先の各アカウントのアカウント情報(アドレス)と、残高更新の対象セキュリティトークンのトークンIDとを含む。)を送信した後、ノード50から通信回線1を介して送信されてくる残高データを受信する。
【0070】
<金融機関サーバ20/処理手段20A/残高更新手段24の構成:
図3>
【0071】
残高更新手段24は、残高データ取得手段23により取得した残高データを用いて、トークン残高データベース41に記憶されている移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新する処理を実行するものである。
【0072】
この際、残高更新手段24は、不一致エラー報知手段27による処理後に、残高データ取得手段23により取得した残高データを用いて、トークン残高データベース41に記憶されている移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新する。
【0073】
具体的には、例えば、
図3に示すように、移転データ取得手段22により取得した移転データを「トークンX、アカウントBからC、移転数量=5」、「トークンX、アカウントCからD、移転数量=10」、「トークンY、アカウントAからF、移転数量=2000」とする。
【0074】
このとき、残高データ取得手段23は、トークンXについては、アカウントB,C,Dが移転に関与したアカウントと判断し、アカウントB,C,DについてのトークンXの残高データ=5,15,40をそれぞれ個別に取得する。従って、残高更新手段24は、これらの残高データを用いて、アカウントB,C,DについてのトークンXの残高データを更新する。その他のアカウントA,E,F,G,H,I,JについてのトークンXの残高データは更新しない。
【0075】
また、残高データ取得手段23は、トークンYについては、アカウントA,Fが移転に関与したアカウントと判断し、アカウントA,FについてのトークンYの残高データ=8000,2000をそれぞれ個別に取得する。従って、残高更新手段24は、これらの残高データを用いて、アカウントA,FについてのトークンYの残高データを更新する。その他のアカウントB,C,D,E,G,H,I,JについてのトークンYの残高データは更新しない。
【0076】
なお、トークンXについては、アカウントBの残高データは、前回の数量=10から、移転数量=5だけ減って、今回の更新後の数量=10-5=5となる。アカウントCの残高データは、前回の数量=20から、移転数量=5だけ増え、かつ、別の移転数量=10だけ減って、今回の更新後の数量=20+5-10=15となる。カウントDの残高データは、前回の数量=30から、移転数量=10だけ増えて、今回の更新後の数量=30+10=40となる。
【0077】
また、トークンYについては、アカウントAの残高データは、前回の数量=10000から、移転数量=2000だけ減って、今回の更新後の数量=10000-2000=8000となる。アカウントFの残高データは、前回の数量=0から、移転数量=2000だけ増えて、今回の更新後の数量=0+2000=2000となる。
【0078】
そして、トークン残高データベース41の残高更新は、ブロックチェーンシステム90から取得した残高データを用いて行われるので、このような計算により求めた数量で残高を更新するわけではないが、このような計算による確認は、不一致エラー報知手段27により実行される。
【0079】
<金融機関サーバ20/処理手段20A/ブロック番号更新手段25の構成:
図3>
【0080】
ブロック番号更新手段25は、トークン残高データベース41の毎回の残高更新後に、最新ブロック番号取得手段21により毎回の残高更新時点で取得した最新のブロックについてのブロック番号を、ブロック番号記憶手段42に上書き保存していく処理を実行するものである。この上書き保存の処理により、ブロック番号記憶手段42に記憶されているブロック番号は、前回の残高取得時点T(n-1)で取得したブロック番号から、今回の残高取得時点T(n)で取得したブロック番号に更新される。例えば、
図2に示すように、T(n-1)のブロック番号=110、T(n)のブロック番号=114であれば、
図3に示すように、ブロック番号記憶手段42に記憶されるブロック番号は、110から114に更新される。
【0081】
<金融機関サーバ20/処理手段20A/出力手段26の構成>
【0082】
出力手段26は、トークン残高データベース41に記憶されている各アカウントについての各セキュリティトークンの最新の残高データ(つまり、更新し続けている残高データ)を用いて、残高一覧を出力する処理を実行するものである。この出力処理には、担当者端末70や顧客端末71からの出力要求に応じ、残高一覧をこれらの端末70,71に画面表示する処理、残高一覧を帳票ファイル(例えばPDFファイル)として出力する処理、残高一覧を紙の帳票としてプリンタで印刷する処理、他のコンピュータへの残高一覧データの送信処理が含まれる。
【0083】
出力する残高一覧には、アカウント毎の残高一覧(任意の1人の投資家(顧客)の保有する全てのセキュリティトークンの残高の一覧)が含まれる。同じアカウント情報に紐付く全てのセキュリティトークンの残高データを用いて残高一覧データが作成される。例えば、顧客による顧客端末71からの出力要求の場合には、出力要求を行った顧客のアカウント情報に紐付く全てのセキュリティトークンの残高データを用いて、当該顧客が保有する全てのセキュリティトークンの残高一覧データが作成される。金融機関の担当者が、担当者端末70から特定の顧客についての残高一覧の出力要求を行う場合は、その特定の顧客のアカウント情報に紐付く全てのセキュリティトークンの残高データを用いて、当該特定の顧客が保有する全てのセキュリティトークンの残高一覧データが作成される。また、証券会社等の金融機関から全顧客に向けて個別に送信する帳票ファイルや、全顧客に向けて個別に送付する紙の帳票を作成する場合は、それぞれの顧客のアカウント情報に紐付く全てのセキュリティトークンの残高データを用いて、それぞれの顧客が保有する全てのセキュリティトークンの残高一覧データが顧客毎に作成される。
【0084】
また、出力する残高一覧には、セキュリティトークン毎の残高一覧(任意の1つのセキュリティトークンを保有する全ての投資家(顧客)のアカウントの残高の一覧)も含まれる。担当者端末70からの出力要求が行われた場合に、出力対象のセキュリティトークンについての全ての顧客のアカウント情報に紐付く残高データを用いて、当該セキュリティトークンを保有する全ての顧客の残高一覧データが作成される。
【0085】
さらに、出力する残高一覧には、上述したアカウント毎の残高一覧と、セキュリティトークン毎の残高一覧とを複合させた残高一覧も含まれる。例えば、トークン残高データベース41に、アカウント情報と、トークンIDと、残高データとを各行に並べたテーブルが存在する場合には、金融機関の担当者が、担当者端末70から出力要求を行ったときに、アカウント情報に対応する投資家(顧客)の名前等と、トークンIDに対応するトークンの名称等と、残高数量とを各行に並べた残高一覧データが作成される。
【0086】
<金融機関サーバ20/処理手段20A/不一致エラー報知手段27の構成>
【0087】
不一致エラー報知手段27は、移転データ取得手段22により取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出し、抽出した移転数量を用いて、残高データ取得手段23によりブロックチェーンシステム90のノード50から取得した移転元および移転先の残高データと、トークン残高データベース41に記憶されている移転元および移転先の残高データ(正しい状態ではない場合もあり得る)との間の残高数量の差異(トークン残高データベース41に記憶されている残高データが正しい状態であれば、当然に生じるべき残高数量の差異)を調整した後、両者の残高数量が一致するか否かを判断し、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを報知する処理を実行するものである。この不一致エラーの報知は、担当者端末70に対して行われる。
【0088】
この際、不一致エラー報知手段27は、両者の残高数量を、(1)移転前の残高数量ベースで比較する移転前残高ベース比較処理と、(2)移転後の残高数量ベースで比較する移転後残高ベース比較処理とを実行することができる。なお、いずれか一方の処理しかできない構成としてもよい。
【0089】
(1)移転前残高ベース比較処理は、次の通りである。先ず、不一致エラー報知手段27は、移転データ取得手段22により取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出する。次に、不一致エラー報知手段27は、残高データ取得手段23により取得した移転元のアカウントについての対象セキュリティトークンの残高データ(移転が行われて既に移転数量を減じた状態になっている)に移転数量を加えた算出移転前残高データ(移転前に戻した状態)と、トークン残高データベース41に記憶されている移転元のアカウントについての対象セキュリティトークンの更新直前の残高データとが一致するか否かを判断する。また、不一致エラー報知手段27は、残高データ取得手段23により取得した移転先のアカウントについての対象セキュリティトークンの残高データ(移転が行われて既に移転数量を加えた状態になっている)から移転数量を減じた算出移転前残高データ(移転前に戻した状態)と、トークン残高データベース41に記憶されている移転先のアカウントについての対象セキュリティトークンの更新直前の残高データとが一致するか否かを判断する。そして、不一致エラー報知手段27は、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを報知する。
【0090】
(2)移転後残高ベース比較処理は、次の通りである。先ず、不一致エラー報知手段27は、移転データ取得手段22により取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出する。次に、不一致エラー報知手段27は、トークン残高データベース41に記憶されている移転元のアカウントについての対象セキュリティトークンの更新直前の残高データ(未だ移転数量を減じていない移転前の状態)から、移転数量を減じた算出移転後残高データ(仮想した移転後の状態)と、残高データ取得手段23により取得した移転元のアカウントについての対象セキュリティトークンの残高データ(移転が行われて既に移転数量を減じた状態になっている)とが一致するか否かを判断する。また、不一致エラー報知手段27は、トークン残高データベース41に記憶されている移転先のアカウントについての対象セキュリティトークンの更新直前の残高データ(未だ移転数量を加えていない移転前の状態)に移転数量を加えた算出移転後残高データ(仮想した移転後の状態)と、残高データ取得手段23により取得した移転先のアカウントについての対象セキュリティトークンの残高データ(移転が行われて既に移転数量を加えた状態になっている)とが一致するか否かを判断する。そして、不一致エラー報知手段27は、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを報知する。
【0091】
また、同じアカウントが、複数件の移転取引における移転元になっている場合や、複数件の移転取引における移転先になっている場合には、それらの複数件の移転取引における移転数量を加算して1件の移転数量とみなして上記の処理を行う。同じアカウントが、少なくとも1件の移転取引における移転元になり、かつ、少なくとも1件の移転取引における移転先になっている場合には、それらの複数件の移転数量を相殺し、相殺した結果、そのアカウントから出ていく数量が多いときには、移転元とみなし、そのアカウントに入ってくる数量が多いときには、移転先とみなし、相殺した移転数量で上記の処理を行う。なお、相殺した結果、移転数量がゼロになった場合には、移転元または移転先のいずれとみなしてもよい。
【0092】
<金融機関サーバ20/処理手段20A/再構築手段28の構成:
図2、
図7>
【0093】
再構築手段28は、不一致エラー報知手段27による不一致エラーの報知後に、金融機関の担当者による担当者端末70からのトークン残高データベース41の再構築の指示を受け付け、過去残高記憶手段43に記憶されている前回以前の各回の残高更新時点で取得したブロック番号およびそれらの時点の残高データを用いて、トークン残高データベース41の再構築処理を実行するものである。
【0094】
再構築開始時点受付手段28Aは、過去(前回以前の各回)の残高更新時に取得したブロック番号のうちの任意のブロック番号を選択指定するか、若しくは、過去(前回以前の各回)の残高更新時点のうちの任意の残高更新時点を選択指定することによる金融機関の担当者による再構築開始時点の指示入力を受け付ける処理を実行するものである。
【0095】
移転データ再取得手段28Bは、再構築開始時点受付手段28Aにより受け付けたブロック番号の次のブロック番号からか、若しくは、受け付けた過去の残高更新時点に対応するブロック番号の次のブロック番号から、不一致エラーの報知に係る今回の残高取得時点で取得したブロック番号までか、または、最新ブロック番号取得手段21によりノード50から通信回線1を介して再取得したブロック番号までの各ブロック61(
図4参照)に含まれる移転データを、ノード50から通信回線1を介して取得する処理を実行するものである。この移転データ再取得手段28Bは、取得対象の移転データを指定するためのブロック番号(何番から何番まで)が異なる点を除き、移転データ取得手段22と同様な処理を行う。
【0096】
具体的には、例えば、
図2に示すように、不一致エラー報知手段27による不一致エラーの報知を受け、金融機関の担当者が、再構築開始時点受付手段28Aにより再構築開始時点として前々回の残高更新時点T(n-2)を選択指定したとすると、このT(n-2)に対応するブロック番号(=104)の次のブロック番号=105が、移転データ再取得手段28Bによる移転データの再取得対象となるブロック番号の開始点となる。一方、移転データの再取得対象となるブロック番号の終了点については、(α)不一致エラーの報知に係る今回の残高更新時点T(n)に取得したブロック番号=114までとするか、または、(β)最新ブロック番号取得手段21によりノード50から通信回線1を介して再取得したブロック番号(
図2の例では、点線で示すブロック番号=115)までとするかを担当者が選択することができる。従って、移転データの再取得対象となるブロック番号は、(α)を選択した場合には、105~114となり、(β)を選択した場合には、105~115となる。
【0097】
上記のように、金融機関の担当者が、再構築開始時点受付手段28Aにより再構築開始時点として前々回の残高更新時点T(n-2)を選択指定する場合は、例えば、次のような場合である。前回の残高更新時点T(n-1)から今回の残高更新時点T(n)までの間に、トークンZについては、アカウントA,B,C,D,E,F,G,H,I,Jのうち、AからBへの移転取引、およびCからDへの移転取引だけがあったものとし、このとき、今回の残高更新時点T(n)における不一致エラー報知手段27による処理で、Bの残高が不一致となり、一方、A,C,Dの残高は一致したとする。従って、不一致エラーの報知が行われる。
【0098】
その後、残高更新手段24により、トークン残高データベース41におけるアカウントA,B,C,Dの残高データは更新されるが、ブロックチェーンシステム90から取得した残高データを用いて更新されるので、正しい状態となる。続いて、不一致エラー報知手段27による不一致エラーの報知を受け、金融機関の担当者は、A,B,C,D以外のアカウント、すなわち、アカウントE,F,G,H,H,I,Jの残高データは、正しい状態であるか否か不明であるため、調査をした。調査をした結果、T(n-1)からT(n)までの間には、不正アクセス行為やシステムエラーの痕跡は見つからなかったので、少なくともアカウントBの残高データの不一致の原因は、T(n-1)よりも前の時間帯で発生したと考えた。そして、前回の残高更新時点T(n-1)で不一致エラーの報知が無かったのは、T(n-2)からT(n-1)までの間に、Bが関与する移転取引が無かったため、不一致エラー報知手段27による処理が行われなかったからだと考えた。そして、担当者は、さらに遡って調査し、T(n-2)からT(n-1)までの間に、不正アクセス行為またはシステムエラーの痕跡を見つけたので、T(n-2)から、トークン残高データベース41の残高データの更新をやり直そうと考えた。また、金融機関の担当者は、T(n-2)からの再構築を行うにあたり、T(n-2)の更新後の残高データが正しい状態であるか否かを、PDFファイルの帳票データや紙の帳票を使って確認してもよい。このような場合に、担当者は、T(n-2)を再構築開始時点として選択指定することができる。
【0099】
残高データ再取得手段28Cは、移転データ再取得手段28Bにより取得した移転データから、残高再更新の対象セキュリティトークンの移転元および移転先の各アカウントのアカウント情報を抽出し、抽出したアカウント情報を用いて、ノード50から通信回線1を介して移転元および移転先の各アカウントについての対象セキュリティトークンの残高データを再取得する処理を実行するものである。この残高データ再取得手段28Cは、残高データ取得手段23と同様な処理を行う。
【0100】
残高再更新手段28Dは、残高データ再取得手段28Cにより取得した残高データを用いて、過去残高記憶手段43に記憶されている過去(前回以前の各回)の残高更新時点の更新後の各アカウントの各セキュリティトークンの残高データのうち、再構築開始時点受付手段28Aにより受け付けた金融機関の担当者による指示入力で選択指定されたブロック番号に対応する残高更新時点または選択指定された残高更新時点の各アカウントの各セキュリティトークンの残高データについて、移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新し、更新したアカウントの残高データおよび更新しなかったアカウントの残高データの全部を、トークン残高データベース41に記憶させる処理を実行するものである。
【0101】
不一致エラー再報知手段28Eは、移転データ再取得手段28Bにより再取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出し、抽出した移転数量を用いて、残高データ再取得手段28Cによりブロックチェーンシステム90のノード50から取得した移転元および移転先の残高データと、過去残高記憶手段43に記憶されている再構築開始時点の更新後の移転元および移転先の残高データ(正しい状態ではない場合もあり得る)との間の残高数量の差異(過去残高記憶手段43に記憶されている再構築開始時点の更新後の残高データが正しい状態であれば、当然に生じるべき残高数量の差異)を調整した後、両者の残高数量が一致するか否かを判断し、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを再報知する処理を実行するものである。この不一致エラーの再報知は、担当者端末70に対して行われる。この不一致エラー再報知手段28Eは、トークン残高データベース41に記憶されている更新直前の残高データの代わりに、過去残高記憶手段43に記憶されている再構築開始時点の更新後の残高データを用いる点を除き、不一致エラー報知手段27と同様な処理を行う。
【0102】
この際、不一致エラー再報知手段28Eは、両者の残高数量を、(1)移転前の残高数量ベースで比較する移転前残高ベース比較処理と、(2)移転後の残高数量ベースで比較する移転後残高ベース比較処理とを実行することができる。なお、いずれか一方の処理しかできない構成としてもよい。
【0103】
(1)移転前残高ベース比較処理は、次の通りである。先ず、不一致エラー再報知手段28Eは、移転データ再取得手段28Bにより再取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出する。次に、不一致エラー再報知手段28Eは、残高データ再取得手段28Cにより取得した移転元のアカウントについての対象セキュリティトークンの残高データ(移転が行われて既に移転数量を減じた状態になっている)に移転数量を加えた算出移転前残高データ(移転前に戻した状態)と、過去残高記憶手段43に記憶されている移転元のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データとが一致するか否かを判断する。また、不一致エラー再報知手段28Eは、残高データ再取得手段28Cにより取得した移転先のアカウントについての対象セキュリティトークンの残高データ(移転が行われて既に移転数量を加えた状態になっている)から移転数量を減じた算出移転前残高データ(移転前に戻した状態)と、過去残高記憶手段43に記憶されている移転先のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データとが一致するか否かを判断する。そして、不一致エラー再報知手段28Eは、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを再報知する。
【0104】
(2)移転後残高ベース比較処理は、次の通りである。先ず、不一致エラー再報知手段28Eは、移転データ再取得手段28Bにより再取得した移転データから、対象セキュリティトークンの移転元のアカウントから移転先のアカウントへの移転数量を抽出する。次に、不一致エラー再報知手段28Eは、過去残高記憶手段43に記憶されている移転元のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データ(未だ移転数量を減じていない移転前の状態)から、移転数量を減じた算出移転後残高データ(仮想した移転後の状態)と、残高データ再取得手段28Cにより取得した移転元のアカウントについての対象セキュリティトークンの残高データとが一致するか否かを判断する。また、不一致エラー再報知手段28Eは、過去残高記憶手段43に記憶されている移転先のアカウントについての対象セキュリティトークンの再構築開始時点の更新後の残高データ(未だ移転数量を加えていない移転前の状態)に移転数量を加えた算出移転後残高データ(仮想した移転後の状態)と、残高データ再取得手段28Cにより取得した移転先のアカウントについての対象セキュリティトークンの残高データ(移転が行われて既に移転数量を加えた状態になっている)とが一致するか否かを判断する。そして、不一致エラー再報知手段28Eは、移転元または移転先の少なくとも一方で一致しない場合には、不一致である旨を示す不一致エラーを再報知する。
【0105】
さらに、不一致エラー再報知手段28Eは、(1)移転前残高ベース比較処理または(2)移転後残高ベース比較処理を行って不一致エラーを再報知した場合には、再構築開始時点受付手段28Aに対し、新たな再構築開始時点の指示入力を受け付ける処理を実行させるための指令を送る。
【0106】
<金融機関サーバ20/処理手段20A/通知手段29の構成>
【0107】
通知手段29は、残高データ取得手段23より、移転データから抽出した移転元のアカウントのアカウント情報が、トークン残高データベース41に存在しないアカウントのアカウント情報であると判断された場合に、他の金融機関が管理するアカウントからの移転があった旨を自社の担当者に通知する処理を実行するものである。この通知は、担当者端末70に対して行う。
【0108】
<金融機関サーバ20/処理手段20A/トランザクション管理手段30の構成>
【0109】
トランザクション管理手段30は、トランザクションデータ(ここでは、移転データ)を作成し、作成したトランザクションデータ(移転データ)とともにトランザクション記録要求信号を、通信回線1を介してノード50に送信する処理を実行するものである。なお、このトランザクション管理手段30は、トークン残高管理システム10の構成要素ではないので、点線の表記としている。
【0110】
<金融機関サーバ20/トークン残高データベース41の構成>
【0111】
トークン残高データベース41は、アカウント情報(アドレスまたはその代替情報)と、トークンIDと、残高データとを各行に含むテーブルで構成してもよく、あるいは、セキュリティトークン毎にテーブル(アカウント情報と、残高データとを各行に含むテーブル)を設けてもよい。後者の場合は、
図3の例に示したように、トークンXのテーブル、トークンYのテーブル、トークンZのテーブル、…を設ける。
【0112】
なお、アカウント情報(アドレス)に対応する秘密鍵、顧客の名前、住所、電話番号、電子メールアドレス、証券総合口座の口座番号等は、別途に設けた顧客情報記憶手段(不図示)に記憶されている。アカウントには、証券会社等の金融機関(自社および他社)のアカウントも存在する。また、トークンIDに対応するトークンの名称等も、別途に設けたトークン情報記憶手段(不図示)に記憶されている。
【0113】
<金融機関サーバ20/ブロック番号記憶手段42の構成>
【0114】
ブロック番号記憶手段42は、最新ブロック番号取得手段21により毎回の残高更新時点で取得した最新のブロックについてのブロック番号を記憶するものである。本実施形態では、
図3に示すように、毎回、取得したブロック番号を上書き保存するものとする。なお、このブロック番号の上書き保存(更新処理)は、ブロック番号更新手段25により、トークン残高データベース41の残高更新後に実行される(
図6のステップS9参照)。
【0115】
<金融機関サーバ20/過去残高記憶手段43の構成>
【0116】
過去残高記憶手段43は、
図7に示すように、前回以前の各回の残高更新時点T(n-1),T(n-2),T(n-3),…で取得したブロック番号とともに、または、このブロック番号および前回以前の各回の残高更新時点T(n-1),T(n-2),T(n-3),…を示す情報(年月日や時分秒、第何週など)とともに、各アカウントについての各セキュリティトークンの前回以前の過去の残高更新時点T(n-1),T(n-2),T(n-3),…の更新後の残高データを、各アカウントを識別するアカウント情報(アドレスまたはその代替情報)に関連付けて記憶するものである。
【0117】
この過去残高記憶手段43は、トークン残高データベース41のようにデータベースとしてもよく、あるいは、記憶させる前回以前の各回の残高更新時点の更新後の残高データは、更新するものではなく、そのままの状態で長期間保存するものなので、ファイル(CSVファイル等)としてもよい。
【0118】
また、各回の残高更新時点について個別に、アカウント情報(アドレスまたはその代替情報)と、トークンIDと、残高データとを各行に含むテーブルを設けるか、または、それに対応するファイル(CSVファイル等)を作成してもよく、あるいは、セキュリティトークン毎にテーブル(アカウント情報と、残高データとを各行に含むテーブル)を設けるか、または、それに対応するファイル(CSVファイル等)を作成してもよい。
図7の例では、過去残高記憶手段43には、過去の残高更新時点を示す情報と、過去の残高更新時点で取得したブロック番号と、各トークンの各アカウントの過去の残高更新時点の更新直後の残高データの格納場所(ファイルのパス)とを対応付けたインデックス部と、複数のファイルとが記憶され、各ファイルには、アカウント情報(アドレスまたはその代替情報)と、トークンIDと、残高データとが対応付けて書き込まれている。
【0119】
さらに、ブロック番号または残高更新時点を示す情報と、アカウント情報(アドレスまたはその代替情報)と、トークンIDと、残高データとを各行に含むテーブルを設けるか、または、それに対応するファイル(CSVファイル等)を作成することにより、前回以前の各回をまとめたテーブルやファイル(CSVファイル等)を用意してもよい。
【0120】
<ノード50/処理手段50A/ブロック番号取得要求応答手段51の構成:
図4>
【0121】
ブロック番号取得要求応答手段51は、金融機関サーバ20の最新ブロック番号取得手段21により通信回線1を介して送信されてくるブロック番号取得要求信号を受信し、分散型台帳記憶手段60に記憶されている複数のブロック61(
図4参照)のうちの最新のブロック61についてのブロック番号を取得し、取得したブロック番号を、通信回線1を介して金融機関サーバ20の最新ブロック番号取得手段21に送信する処理を実行するものである。この機能は、ブロックチェーンの基本的な機能である。
【0122】
<ノード50/処理手段50A/移転データ取得要求応答手段52の構成:
図4>
【0123】
移転データ取得要求応答手段52は、金融機関サーバ20の移転データ取得手段22により通信回線1を介して送信されてくる移転データ取得要求信号(前回の残高更新時に取得した前回のブロック番号の次のブロック番号と、今回の残高更新時に取得した今回のブロック番号とを含む。)を受信し、分散型台帳記憶手段60に記憶されている複数のブロック61(
図4参照)のうちの移転データ取得要求信号で指定されたブロック61(前回のブロック番号の次のブロック番号から、今回のブロック番号までの間のブロック61)に含まれる全ての移転データを取得し、取得した全ての移転データを、通信回線1を介して金融機関サーバ20の移転データ取得手段22に送信する処理を実行するものである。この機能は、ブロックチェーンの基本的な機能である。
【0124】
<ノード50/処理手段50A/残高データ取得要求応答手段53の構成:
図4、
図5>
【0125】
残高データ取得要求応答手段53は、金融機関サーバ20の残高データ取得手段23により通信回線1を介して送信されてくる残高データ取得要求信号(移転元および移転先の各アカウントのアカウント情報(アドレス)と、残高更新の対象セキュリティトークンのトークンIDとを含む。)を受信し、分散型台帳記憶手段60内のステートルート算出用データ保存領域62(
図4、
図5参照)に記憶されている取得要求に係る残高データを取得し、取得した残高データを、通信回線1を介して金融機関サーバ20の残高データ取得手段23に送信する処理を実行するものである。この機能は、スマートコントラクトにより実現される機能である(
図5参照)。
【0126】
<ノード50/処理手段50A/トランザクション記録手段54の構成>
【0127】
トランザクション記録手段54は、金融機関サーバ20のトランザクション管理手段30により通信回線1を介して送信されてくるトランザクション記録要求信号およびトランザクションデータ(ここでは、移転データ)を受信し、受信したトランザクションデータ(移転データ)を含むブロック61(
図4参照)を生成し、生成したブロック61をP2Pネットワーク3内で承認して分散型台帳記憶手段60に追加する。この機能は、ブロックチェーンの基本的な機能である。
【0128】
また、トランザクション記録手段54は、受信した移転データに含まれるトークンID、移転元および移転先の各アカウントのアカウント情報、並びに移転数量を用いて、ステートルート算出用データ保存領域62(
図4、
図5参照)に記憶されている移転元および移転先の各アカウントについての対象セキュリティトークンの残高データを更新する。この機能は、スマートコントラクトにより実現される機能である。なお、移転元のアカウントのアカウント情報(アカウントを特定するための情報)については、トランザクションデータ(ここでは、移転データ)に付された移転元のアカウントの秘密鍵を用いた署名(従って、署名がアカウント情報として機能する。)から移転元のアカウントのアドレスを演算処理で割り出す場合(移転元のアカウントの所有者自身が、署名を行って送信者になる場合)と、トランザクションデータ(ここでは、移転データ)に移転元のアカウントのアドレスがアカウント情報として含まれている場合(移転元および移転先の各アカウント以外のアカウントの所有者が、移転の権限を委譲された第三者としてその第三者のアカウントの秘密鍵を用いて署名を行って送信者になる場合)とがある。
【0129】
なお、このトランザクション記録手段54は、トークン残高管理システム10の構成要素ではないので、点線の表記としている。
【0130】
<ノード50/分散型台帳記憶手段60の構成:
図4、
図5>
【0131】
分散型台帳記憶手段60は、
図4に示すように、P2Pネットワーク3内の各ノード50,80で共有する複数のブロック61を記憶するとともに、ステートルート算出用データ保存領域62を備えている。このステートルート算出用データ保存領域62は、ブロック外の保存領域であり、P2Pネットワーク3内の各ノード50,80は同じスマートコントラクトを使用し、同じ機能を有するので、いずれのノード50,80も、同じステートルート算出用データ保存領域62を備えている。
【0132】
ブロック61内には、ブロックヘッダ(Block Header)と、ブロックボディ(Block Body)とが設けられている。ブロックヘッダには、チェーン形成用情報(本実施形態では、前のブロックのハッシュ値)、ステートルート(stateRoot)、ブロック番号、タイムスタンプ等が含まれる。また、ブロックボディには、トランザクションリスト(transaction list)が含まれ、トランザクションリストには、少なくとも1つの移転データが含まれている。
【0133】
また、ブロック外の保存領域には、ステートルート算出用データ保存領域62の他に、ブロック61内のブロックヘッダに含まれるトランザクションルート(transactionsRoot:不図示)の算出用データの保存領域として、トランザクションツリー(Transactions Trie)があり、また、ブロック61内のブロックヘッダに含まれるレシートルート(receiptsRoot:不図示)の算出用データの保存領域として、レシートツリー(Receipts Trie)があるが、これらの木構造の保存領域は、本発明の機能説明に必要ないため、
図4での図示は省略されている。
【0134】
図5において、ステートルート算出用データ保存領域62は、ブロック61内のステートルート(stateRoot)を算出するためのワールドステートツリー(World State Trie)により構成され、この木構造のワールドステートツリーの頂上部分のルートハッシュ値(root hash)が、ステートルート(stateRoot)に格納されるようになっている。
【0135】
ワールドステートツリーの最下層のデータは、アカウントステート(Account State)であり、最下層のアカウントステートから始めて、2つのデータのハッシュ値(hash)を積み上げていくことにより、木構造の頂上部分のルートハッシュ値(root hash)が算出されるようになっている。
【0136】
そして、ワールドステートツリーの最下層のアカウントステート(Account State)の1つ1つも、複数のデータの保存領域であり、最下層には、通常のアカウント(投資家のアカウントA,B,C,…)のアカウントステートと、セキュリティトークン(トークンX,Y,Z,…)用のスマートコントラクトのアカウントステートとが混在している。従って、通常のアカウントA,B,C,…も、トークンX,Y,Z,…用のスマートコントラクトも、独自のデータ保存領域を持ち、両方とも同じ木構造の中で「アカウント」として管理されている。後者のアカウントのことを「コントラクトアカウント」と呼んで区別することもある。
【0137】
セキュリティトークン用のスマートコントラクト(
図5の拡大例では、トークンY用のスマートコントラクト)のアカウントステート(Account State)は、ナンス(nonce)と、バランス(balance)と、ストーレッジルート(storageRoot)と、コードハッシュ(codeHash)とにより構成される。これらのうちのストーレッジルートには、アカウントストーレッジツリー(Account Storage Trie)のルートハッシュ値(root hash)が格納されるようになっている。また、コードハッシュ(codeHash)には、トークンY用のスマートコントラクトのプログラムのハッシュ値が格納されるようになっている。
【0138】
アカウントストーレッジツリーの最下層のデータは、セキュリティトークン(
図5の拡大例では、トークンY)の各アカウントA,B,C,D,…の残高データであり、最下層の各アカウントA,B,C,D,…の残高データから始めて、2つのデータのハッシュ値(hash)を積み上げていくことにより、木構造の頂上部分のルートハッシュ値(root hash)が算出されるようになっている。
【0139】
一方、通常のアカウント(
図5の拡大例では、アカウントC)のアカウントステート(Account State)も、ナンス(nonce)と、バランス(balance)と、ストーレッジルート(storageRoot)と、コードハッシュ(codeHash)とにより構成される。しかし、コントラクトアカウントではない通常のアカウントは、スマートコントラクトやそれに紐づくデータを持たないので、ストーレッジルート(storageRoot)、コードハッシュ(codeHash)の2つの項目のデータは空の状態となっている。
【0140】
<トークン残高管理システム10による残高更新の処理の流れ:
図6>
【0141】
このような本実施形態においては、以下のようにしてトークン残高管理システム10により、トークン残高データベース41の残高データの更新処理が行われる。
【0142】
最初に、毎回(例えば、毎営業日、毎週、毎月など)の残高更新を行う前に、空の状態のトークン残高データベース41を用意する。すなわち、証券会社等の金融機関(自社)が取り扱う全てのセキュリティトークンについて、全ての投資家(自社の顧客)のアカウントおよび証券会社等の金融機関(自社および他社)のアカウントを用意し、それらの各アカウントのアカウント情報と関連付けられた残高データをゼロにしておく。
【0143】
なお、毎回の残高更新を開始した後も、新規顧客の登録があれば、そのアカウントを用意し、空の状態(残高データ=ゼロ)にしておく。また、相続や、他社から自社への証券会社等の金融機関の乗換え等により、自社へのトークンの移転流入が予定される投資家についても、当該移転の前に予めアカウントを用意し、空の状態(残高データ=ゼロ)にしておく。
【0144】
そして、毎回の残高更新を開始する。例えば、日々の営業時間が終了するタイミングでトークン残高データベース41の残高更新を行う場合には、日中に、投資家(自社の顧客)や証券会社等の金融機関のアカウント間で売買(セキュリティトークンの移転)が実行され、ブロックチェーンシステム90を構成するノード50の分散型台帳記憶手段60に、移転データを含むブロック61(
図4参照)が記録されるので(他のノード80にも記録される。)、営業時間終了後に、以下に示すトークン残高データベース41の残高更新のための処理を実行する。なお、移転データを含むブロック61の記録は、金融機関サーバ20のトランザクション管理手段30およびノード50のトランザクション記録手段54により実行される。
【0145】
先ず、移転データ取得手段22により、ブロック番号記憶手段42に記憶されている前回の残高更新時点で取得したブロック番号を読み込む(ステップS1)。
【0146】
次に、最新ブロック番号取得手段21により、通信回線1を介してノード50から最新のブロック番号を取得する(ステップS2)。ノード50側の処理は、ブロック番号取得要求応答手段51により実行される。
【0147】
続いて、移転データ取得手段22により、ステップS1で読み込んだ前回の残高更新時のブロック番号の次の番号から、ステップS2で最新ブロック番号取得手段21により取得した最新のブロック番号までの各ブロック61に含まれる全ての移転データを、通信回線1を介してノード50から取得する(ステップS3)。ノード50側の処理は、移転データ取得要求応答手段52により実行される。
【0148】
それから、残高データ取得手段23により、ステップS3で取得した移転データから、移転元および移転先の各アカウントのアカウント情報(アドレス)およびトークンIDを抽出し、抽出したアカウント情報およびトークンIDを用いて、ノード50から移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを取得する(ステップS4)。ノード50側の処理は、残高データ取得要求応答手段53により実行される。
【0149】
さらに、不一致エラー報知手段27により、ステップS4で残高データ取得手段23によりブロックチェーンシステム90のノード50から取得した移転元および移転先の残高データと、トークン残高データベース41に記憶されている移転元および移転先の残高データとの間の残高数量の差異を、移転データから抽出した移転数量を用いて調整した後、両者の残高数量が一致するか否かを判断し(ステップS5)、不一致があった場合(ステップS6)には、不一致エラーを報知する(ステップS7)。
【0150】
その後、不一致エラーが報知されなかった場合、および報知された場合のいずれの場合でも、残高更新手段24により、ステップS4で取得した各アカウントについての対象セキュリティトークンの残高データを用いて、トークン残高データベース41において、それらのアカウントのみの残高データを更新する(ステップS8)。
【0151】
続いて、ブロック番号更新手段25により、ステップS2で今回の残高更新時に取得したブロック番号を保存する(ステップS9)。すなわち、ブロック番号記憶手段42に記憶されているブロック番号を上書き保存により更新する。
【0152】
それから、ステップS6における不一致エラー報知手段27による不一致エラーの報知を受け、金融機関の担当者は、トークン残高データベース41の再構築を行うか否かを判断し(ステップS10)、再構築を行う場合には、再構築手段28による処理(詳細な流れは、
図7参照)を実行する(ステップS11)。
【0153】
そして、担当者端末70や顧客端末71からの出力要求を受け、出力手段26により、トークン残高データベース41に記憶された各アカウントの各セキュリティトークンの残高データを用いて、帳票出力を行う(ステップS12)。
【0154】
<再構築手段28によるトークン残高データベース41の再構築処理の流れ:
図7>
【0155】
図7において、先ず、再構築開始時点受付手段28Aにより、金融機関の担当者による再構築開始時点の指示入力を受け付ける(ステップS1101)。すなわち、各回の過去の残高更新時に取得したブロック番号のうちの任意のブロック番号、若しくは、各回の過去の残高更新時点のうちの任意の残高更新時点の選択指定を受け付ける。
【0156】
次に、移転データ再取得手段28Bにより、ステップS1101で指示入力されたブロック番号の次のブロック番号からか、若しくは、ステップS1101で指示入力された過去の残高更新時点に対応するブロック番号の次のブロック番号から、
図6のステップS2で(不一致エラーの報知に係る今回の残高取得時点T(n)で)取得したブロック番号までか、または、最新ブロック番号取得手段21によりノード50から再取得したブロック番号までの各ブロック61に含まれる全ての移転データを再取得する(ステップS1102)。
【0157】
続いて、残高データ再取得手段28Cにより、ステップS1102で再取得した移転データから、移転元および移転先の各アカウントのアカウント情報およびトークンIDを抽出し、抽出したアカウント情報およびトークンIDを用いて、通信回線1を介してノード50から移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを再取得する(ステップS1103)。
【0158】
それから、不一致エラー再報知手段28Eにより、ステップS1103で残高データ再取得手段28Cによりブロックチェーンシステム90のノード50から取得した移転元および移転先の残高データと、過去残高記憶手段43に記憶されている再構築開始時点の更新後の移転元および移転先の残高データとの間の残高数量の差異を、移転データから抽出した移転数量を用いて調整した後、両者の残高数量が一致するか否かを判断し(ステップS1104)、不一致があった場合(ステップS1105)には、不一致エラーを再報知し(ステップS1106)、前述したステップS1101の再構築開始時点受付手段28Aによる処理に戻る。
【0159】
一方、上記のステップS1105で不一致がなかった場合には、残高再更新手段28Dにより、過去残高記憶手段43に記憶されている各アカウントの各セキュリティトークンの残高データについて、ステップS1103で取得した各アカウントについての対象セキュリティトークンの残高データを用いて、それらのアカウントのみについての対象セキュリティトークンの残高データを更新し、更新したアカウントの残高データおよび更新しなかったアカウントの残高データの全部を、トークン残高データベース41に記憶させる(ステップS1107)。
【0160】
続いて、前述したステップS1102で、最新ブロック番号取得手段21によりブロック番号の再取得をしている場合には、ブロック番号更新手段25により、その再取得したブロック番号を保存する(ステップS1108)。すなわち、ブロック番号記憶手段42に記憶されているブロック番号を上書き保存により更新する。
【0161】
<本実施形態の効果>
【0162】
このような本実施形態によれば、次のような効果がある。すなわち、トークン残高管理システム10では、残高更新をする前に、移転データ取得手段22により、ブロックチェーンシステム90からノード50を介して移転データを取得し、その移転データから、残高データ取得手段23により、残高更新の対象セキュリティトークンの移転元および移転先の各アカウントのアカウント情報を抽出し、その抽出情報を用いて、ブロックチェーンシステム90からノード50を介して移転に関与した移転元および移転先の各アカウントの対象セキュリティトークンの残高データのみを取得し、残高更新手段24により、トークン残高データベース41に記憶されている移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新することができる。
【0163】
このため、前回の残高更新時点から今回の残高更新時点までの間に、移転に関与しなかったアカウントやセキュリティトークンの残高データについては、ブロックチェーンシステム90から取得することはなく、残高更新も行わないので、全アカウントについての全セキュリティトークンの残高データを、効率よく更新していくことができる。
【0164】
また、トークン残高管理システム10は、不一致エラー報知手段27を備えているので、トークン残高データベース41の予期せぬ更新等の異常の検知を行うことができ、例えば、不正行為によるデータ改竄や、システムエラーの検知を行うことができる。
【0165】
さらに、トークン残高管理システム10は、再構築手段28を備えているので、不一致エラー報知手段27による不一致エラーの報知の原因となったアカウントの残高データ以外にも、トークン残高データベース41に不具合・不整合な状態が生じているときに、その不具合・不整合な状態を正すことができる。すなわち、不一致エラー報知手段27による不一致エラーの報知が行われた場合でも、結局、残高更新手段24により、残高データ取得手段23によりブロックチェーンシステム90から取得した残高データを用いて、トークン残高データベース41に記憶されている移転元および移転先の各アカウントについての対象セキュリティトークンの残高データを更新する処理が行われるので、それらのアカウントの残高データについては、更新後に正しい状態となる。しかし、そこで更新されなかった他のアカウント(移転元および移転先の各アカウント以外のアカウント、すなわち、前回の残高更新時点から今回の残高更新時点までの間に、移転への関与がなかったアカウント)については、残高データが正しい状態か否かが不明である。そこで、金融機関の担当者は、正しい状態であることに疑義がある場合には、再構築手段28により、過去の残高更新時点に遡って、トークン残高データベース41を再構築することができる。
【0166】
また、金融機関の担当者は、再構築開始時点受付手段28Aにより、各回の過去の残高更新時に取得したブロック番号のうちの任意のブロック番号、若しくは、各回の過去の残高更新時点のうちの任意の残高更新時点を選択指定することにより、再構築開始時点の指示入力を行うことができる。このため、やり直しが必要な時点まで戻ればよいので、全てのアカウントが空の状態(残高がゼロの状態)である初期状態まで戻って、トークン残高データベース41を再構築する必要がなくなるため、再構築に要する時間を短縮することができる。
【0167】
さらに、再構築手段28は、不一致エラー再報知手段28Eを備えているので、再構築手段28による処理をやり直すことができる。すなわち、金融機関の担当者が、一旦、再構築開始時点の指示入力を行い、再構築手段28による処理を行っても、不一致エラーが再報知される結果となってしまうこともあり得るので、そのようなときに、再構築開始時点受付手段28Aにより、新たな再構築開始時点(通常は、最初に指示入力した再構築開始時点よりも過去の時点とする。)の指示入力を受け付け、再構築手段28による処理をやり直すことができる。
【0168】
より詳細には、金融機関の担当者は、最初に再構築開始時点の指示入力を行うときは、不一致エラーの発生原因や発生時点(例えば、不正アクセスが確認された時点や、システムエラーが確認された時点)を特定し、その特定した時点よりも前の時点を選択指定して再構築手段28による処理を実行させる場合が多い。しかし、そのような特定作業を行わずに、とりあえず適当な過去の時点を指示入力して再構築手段28による処理を実行する場合や、特定した時点よりも更に前の時点にも、不一致エラーの発生原因が存在する場合もあり、そのような場合には、不一致エラーの再報知が行われることもあるので、そうなったときに、再構築開始時点を変更してトークン残高データベース41の再構築をやり直すことができる。
【0169】
また、最新ブロック番号取得手段21は、異常報知処理を実行する構成とされているので、ノード50を含むブロックチェーンシステム90に異常が発生している可能性がある旨の報知を行うことができる。このため、金融機関の担当者は、例えば、自社の設置したノード50に不具合が発生しているときに、それを早期に把握し、その対処を迅速に行うことができる。
【0170】
さらに、トークン残高管理システム10は、通知手段29を備えているので、例えば、相続に伴う移転や、他社から自社への証券会社の乗換えによる移転が行われたときに、必要な手続に漏れがないように、金融機関(自社)の担当者に通知することができる。
【0171】
<変形の形態>
【0172】
なお、本発明は前記実施形態に限定されるものではなく、本発明の目的を達成できる範囲内での変形等は本発明に含まれるものである。
【0173】
例えば、前記実施形態のトークン残高管理システム10は、再構築手段28を備えていたが、この再構築手段28の設置を省略してもよい。但し、トークン残高データベース41に予期せぬ異常が発生した場合に、迅速に対応することが可能になるという点で、再構築手段28を設けておくことが好ましい。
【産業上の利用可能性】
【0174】
以上のように、本発明のトークン残高管理システムおよびプログラムは、例えば証券会社等の金融機関が、自社の顧客が保有するセキュリティトークンの残高管理を行う場合に用いるのに適している。
【符号の説明】
【0175】
1 通信回線
10 トークン残高管理システム
21 最新ブロック番号取得手段
22 移転データ取得手段
23 残高データ取得手段
24 残高更新手段
26 出力手段
27 不一致エラー報知手段
28 再構築手段
28A 再構築開始時点受付手段
28B 移転データ再取得手段
28C 残高データ再取得手段
28D 残高再更新手段
28E 不一致エラー再報知手段
29 通知手段
41 トークン残高データベース
42 ブロック番号記憶手段
43 過去残高記憶手段
50 ノード
90 ブロックチェーンシステム
【要約】
【課題】セキュリティトークンの残高データを効率よく取得することができるトークン残高管理システムを提供する。
【解決手段】トークン残高管理システム10では、移転データ取得手段22によりブロックチェーンシステム90のノード50から移転データを取得し、残高データ取得手段23により、その移転データから残高更新の対象セキュリティトークンの移転元および移転先の各アカウント情報を抽出し、その抽出情報を用いてノード50から移転に関与した移転元および移転先の各アカウントの対象セキュリティトークンの残高データのみを取得し、残高更新手段24によりトークン残高データベース41に記憶されている移転元および移転先の各アカウントのみについての対象セキュリティトークンの残高データを更新する。
【選択図】
図1