(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024095330
(43)【公開日】2024-07-10
(54)【発明の名称】電子通貨システム、情報処理装置、支払処理方法およびプログラム
(51)【国際特許分類】
G06Q 20/38 20120101AFI20240703BHJP
【FI】
G06Q20/38 310
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022212539
(22)【出願日】2022-12-28
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】奥田 哲矢
(72)【発明者】
【氏名】齋藤 恆和
(72)【発明者】
【氏名】阿部 正幸
(72)【発明者】
【氏名】荒川 幸寛
【テーマコード(参考)】
5L020
5L055
【Fターム(参考)】
5L020AA71
5L055AA71
(57)【要約】
【課題】電子通貨システムにおいて、流通する電子通貨に含まれる署名数を小さくする。
【解決手段】複数の利用者端末を備える電子通貨システムであって、前記複数の利用者端末に含まれる利用者端末は、通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる他の利用者端末に要求する支払要求部を備え、前記他の利用者端末は、前記複数の利用者端末に含まれる前記利用者端末から支払の要求を受け付ける支払受付部を備える電子通貨システムである。
【選択図】
図14
【特許請求の範囲】
【請求項1】
複数の利用者端末を備える電子通貨システムであって、
前記複数の利用者端末に含まれる利用者端末は、
通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる他の利用者端末に要求する支払要求部を備え、
前記他の利用者端末は、前記複数の利用者端末に含まれる前記利用者端末から支払の要求を受け付ける支払受付部を備える、
電子通貨システム。
【請求項2】
前記支払要求部は、前記通貨の選択において、動的計画法によって通貨の枚数が少なくなる組み合わせとなるように通貨を選択する、
請求項1に記載の電子通貨システム。
【請求項3】
前記電子通貨システムは、金融機関サーバをさらに備え、
前記支払要求部は、通貨の枚数が多くなる組み合わせの通貨であって、署名数が多い順または署名数が一定以上の通貨を選択し、選択された前記通貨による支払の処理を、前記金融機関サーバに要求する、
請求項1に記載の電子通貨システム。
【請求項4】
前記金融機関サーバは、
署名数が多い順または署名数が一定以上の通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる利用者端末に要求する支払要求部を備える、
請求項3に記載の電子通貨システム。
【請求項5】
前記電子通貨システムは、発行銀行サーバをさらに備え、
前記金融機関サーバは、
通貨の枚数が多くなる組み合わせの通貨であって、署名数が多い順または署名数が一定以上の通貨を選択し、選択された前記通貨による還収の処理を、前記発行銀行サーバに要求する還収要求部をさらに備える、
請求項3に記載の電子通貨システム。
【請求項6】
通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、他の情報処理装置に要求する支払要求部と、
他の情報処理装置から支払の要求を受け付ける支払受付部と、を備える、
情報処理装置。
【請求項7】
複数の利用者端末を備える電子通貨システムが実行する支払処理方法であって、
前記複数の利用者端末に含まれる利用者端末は、
通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる他の利用者端末に要求し、
前記他の利用者端末は、前記複数の利用者端末に含まれる前記利用者端末から支払の要求を受け付ける、
支払処理方法。
【請求項8】
コンピュータを、請求項6に記載の情報処理装置における各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子通貨システム、情報処理装置、支払処理方法およびプログラムに関する。
【背景技術】
【0002】
電子通貨については長年研究が行われている。日本銀行等の法定通貨の発行銀行が電子通貨、いわゆる中央銀行デジタル通貨(CBDC:Central Bank Digital Currency)を発行し、金融機関を通じてインターネット上で流通させる実験が行われている。
【0003】
トークン型電子現金方式のCBDCは、オフライン決済が可能で利便性が高い技術として期待されている。例えば、非特許文献1には、自律的なエージェントによる相互作用の結果が得られる手法であるMulti-Agent Simulation用に簡易に設計されたトークン型電子現金方式のCBDCについて開示されている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】荒川幸寛,奥田哲矢,齋藤恆和,ティブシ・メディ,阿部正幸,"トークン型電子現金方式のCentral Bank Digital Currency(CBDC)への適用可能性に関する初期検討",SCIS2022,3E2-3,2022
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、従来の技術では、通貨毎および取引毎に署名が付与されるため、ユーザ間の転々流通を許容する場合、累積的に署名数が増えるという問題がある。流通する電子通貨に含まれる署名数が増えると、流通する署名データのサイズが大きくなり、それによって必要な通信ネットワーク帯域が大きくなったり、署名検証コストが大きくなったりする虞がある。
【0006】
開示の技術は、電子通貨システムにおいて、流通する電子通貨に含まれる署名数を小さくすることを目的とする。
【課題を解決するための手段】
【0007】
開示の技術は、複数の利用者端末を備える電子通貨システムであって、前記複数の利用者端末に含まれる利用者端末は、通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる他の利用者端末に要求する支払要求部を備え、前記他の利用者端末は、前記複数の利用者端末に含まれる前記利用者端末から支払の要求を受け付ける支払受付部を備える電子通貨システムである。
【発明の効果】
【0008】
電子通貨システムにおいて、流通する電子通貨に含まれる署名数を小さくすることができる。
【図面の簡単な説明】
【0009】
【
図1】電子通貨システムのシステム構成の一例を示す図である。
【
図7】通貨発行処理の流れの一例を示すシーケンス図である。
【
図8】引出処理の流れの一例を示すシーケンス図である。
【
図9】支払処理の流れの一例を示すシーケンス図である。
【
図10】両替処理の流れの一例を示すシーケンス図である。
【
図11】与信処理の流れの一例を示すシーケンス図である。
【
図12】預入処理の流れの一例を示すシーケンス図である。
【
図13】還収処理の流れの一例を示すシーケンス図である。
【
図14】通貨選択処理の流れの一例を示すシーケンス図である。
【
図15】通貨決定方法について説明するための図である。
【
図16】コンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0011】
(電子通貨システムの概要)
本実施の形態に係る電子通貨システムは、中央銀行デジタル通貨(CBDC;Central Bank Digital Currency)等のように、特定の発行銀行(CBDCの場合は中央銀行であり、円の場合には日本銀行)にて発行する電子通貨のシステムである。電子通貨の価値は法定通貨と同じ価値が保証されるものが提唱されている。以下、日本円と同価値の電子通貨を例に説明するが、これに限られず、他の国に法定通貨と同価値の電子通貨であっても良いし、CBDCのような法定通貨と同価値の電子通貨でなくても良い。
【0012】
本実施形態に係る電子通貨システムでは、発行銀行が管理するサーバが、あらかじめ定められた電子通貨単位(例えば1,000円等)ごとに署名をして電子通貨(以下、単に通貨という)を発行する。また、発行銀行以外の金融機関(CBDCの場合は市中銀行)にて取引の履歴データを管理する。また、利用者同士の取引では、お互いの利用者の端末同士が直接通信して、取引のための処理を実行する。
【0013】
図1は、電子通貨システムのシステム構成の一例を示す図である。電子通貨システム1は、発行銀行サーバ10と、ルート認証局サーバ11と、金融機関サーバ20と、中間認証局サーバ25と、利用者端末30と、を備える。これらの各装置は、インターネット等の通信ネットワークを介して、互いに通信可能に接続されている。
【0014】
発行銀行サーバ10は、通貨を発行する発行銀行(例えば日本銀行等の中央銀行)が管理する情報処理装置である。発行銀行サーバ10は、通貨の発行を示すメッセージデータに署名データを付加して金融機関サーバ20に送信する。他に、発行銀行サーバ10は、金融機関サーバ20からの還収の要求を受け付ける機能を有する。
【0015】
ルート認証局サーバ11は、暗号通信におけるルート認証局の機能を有する情報処理装置である。ルート認証局サーバ11は、発行銀行サーバ10と同一のハードウェアによって実現されても良く、発行銀行によって管理されることを想定するが、それに限られない。
【0016】
ルート認証局サーバ11は、通貨の発行の準備段階として、ルート認証鍵を生成してルート証明書を発行し、中間認証局サーバ25に送信する。また、ルート認証局サーバ11は、各金融機関を認証し、金融機関公開鍵証明書発行情報を生成し、生成された金融機関公開鍵証明書発行情報を発行銀行サーバ10に送信する。
【0017】
金融機関サーバ20は、金融機関(例えば市中銀行)が管理する情報処理装置である。金融機関サーバ20は、ルート認証局サーバ11による認証を受けて、発行銀行サーバ10から通貨の発行を受け付ける。
【0018】
また、金融機関サーバ20は、利用者端末30から、引出、両替、預入、与信などの取引の要求を受け付ける。さらに、金融機関サーバ20は、発行銀行サーバ10に還収を要求する。
【0019】
なお、以下の説明において各金融機関サーバ20を区別する時は、各金融機関サーバ20を金融機関サーバ20-1、金融機関サーバ20-2等のように記載する。
【0020】
中間認証局サーバ25は、暗号通信における中間認証局の機能を有する情報処理装置である。中間認証局サーバ25は、金融機関サーバ20と同一のハードウェアによって実現されても良く、金融機関によって管理されることを想定するが、それに限られない。
【0021】
中間認証局サーバ25は、通貨の発行の準備段階として、中間認証鍵を生成して中間証明書を発行し、利用者端末30に送信する。また、中間認証局サーバ25は、各利用者を認証し、利用者公開鍵証明書発行情報を生成する。
【0022】
なお、以下の説明において各中間認証局サーバ25を区別する時は、各中間認証局サーバ25を中間認証局サーバ25-1、中間認証局サーバ25-2等のように記載する。
【0023】
利用者端末30は、通貨を利用する利用者(個人消費者、店舗等)が利用する情報処理装置である。利用者端末30は、取引を開始する前に、中間認証局サーバ25による認証を受ける。また、利用者端末30は、引出、両替、預入、与信などの取引を金融機関サーバ20に要求する。
【0024】
なお、以下の説明において各利用者端末30を区別する時は、各利用者端末30を利用者端末30-1、利用者端末30-2等のように記載する。
【0025】
利用者端末30(例えば利用者端末30-1)は、他の利用者端末30(例えば利用者端末30-2)に支払を要求したり、支払の要求を受け付けたりする。ここで、支払の要求とは、利用者が相手方に支払う「支払」取引の実行を受け付けるように要求することであり、相手方に利用者への支払いを要求することではない。
【0026】
(各装置の機能構成例)
次に、各装置の機能構成例について説明する。
【0027】
図2は、発行銀行サーバの機能構成図である。発行銀行サーバ10は、通貨発行鍵生成部101と、通貨発行証明書発行部102と、金融機関公開鍵証明書発行情報取得部103と、通貨発行部104と、還収受付部105と、通貨発行鍵記憶部106と、還収済通貨記憶部107と、を備える。
【0028】
通貨発行鍵生成部101は、通貨の発行を示すメッセージデータ(以下、通貨発行メッセージという)の正当性を保証するための暗号鍵データ(以下、通貨発行鍵という)を生成する。通貨発行鍵は、秘密鍵と公開鍵とを含む。
【0029】
通貨発行証明書発行部102は、通貨発行鍵の公開鍵を証明するための証明書を示すデータ(以下、通貨発行証明書という)を生成して、生成された通貨発行証明書を各金融機関サーバ20および各利用者端末30に送信する。
【0030】
金融機関公開鍵証明書発行情報取得部103は、ルート認証局サーバ11から金融機関公開鍵証明書発行情報を取得する。金融機関公開鍵証明書発行情報については、後述する。
【0031】
通貨発行部104は、通貨発行鍵および金融機関公開鍵証明書発行情報を使用して、通貨発行メッセージを生成し、生成した通貨発行メッセージを金融機関サーバ20に送信する。
【0032】
還収受付部105は、金融機関サーバ20から還収を受け付けて、還収済通貨記憶部107に還収された通貨を格納する。還収とは、各金融機関が当面使用しない通貨を発行銀行に預け入れて、流通に戻す取引である。
【0033】
通貨発行鍵記憶部106は、通貨発行鍵生成部101によって生成された通貨発行鍵を記憶する。
【0034】
還収済通貨記憶部107は、還収受付部105が還収を受け付けた通貨(以下、還収済通貨という)を記憶する。
【0035】
図3は、ルート認証局サーバの機能構成図である。ルート認証局サーバ11は、ルート認証鍵生成部111と、ルート証明書発行部112と、金融機関認証部113と、金融機関公開鍵証明書発行情報送信部114と、ルート認証鍵記憶部115と、金融機関公開鍵証明書発行情報記憶部116と、を備える。
【0036】
ルート認証鍵生成部111は、ルート認証局の正当性を保証するための暗号鍵データ(以下、ルート証明鍵という)を生成する。ルート証明鍵は、秘密鍵と公開鍵とを含む。
【0037】
ルート証明書発行部112は、中間認証局の正当性を保証するための証明書データ(以下、中間証明書)の正当性を保証するための証明書データ(以下、ルート証明書という)を発行して、各中間認証局サーバ25に送信する。
【0038】
金融機関認証部113は、金融機関サーバ20から各金融機関の正当性を保証するための暗号鍵データ(以下、金融機関鍵という)を受信して、認証の要求を受け付ける。そして、金融機関認証部113は、金融機関鍵の公開鍵を証明するための証明書を示すデータ(以下、金融機関公開鍵証明書という)を生成し、生成された金融機関公開鍵証明書を、認証を要求した金融機関サーバ20に送信する。さらに、金融機関認証部113は、金融機関公開鍵証明書の発行を示す情報(以下、金融機関公開鍵証明書発行情報という)を、生成する。
【0039】
金融機関公開鍵証明書発行情報送信部114は、生成された金融機関公開鍵証明書発行情報を、発行銀行サーバ10に送信する。なお、発行銀行サーバ10とルート認証局サーバ11とが同一のハードウェアによって実現される場合には、金融機関公開鍵証明書発行情報送信部114は不要である。
【0040】
ルート認証鍵記憶部115は、ルート認証鍵生成部111によって生成されたルート認証鍵を記憶する。
【0041】
金融機関公開鍵証明書発行情報記憶部116は、金融機関認証部113によって生成された金融機関公開鍵証明書発行情報を記憶する。
【0042】
図4は、金融機関サーバの機能構成図である。金融機関サーバ20は、通貨発行証明書発行受付部201と、金融機関鍵生成部202と、金融機関認証要求部203と、通貨発行受付部204と、引出受付部205と、更新処理部206と、両替・預入受付部207と、支払要求部208と、支払受付部209と、与信受付部210と、還収要求部211と、通貨発行証明書記憶部212と、金融機関鍵記憶部213と、金融機関公開鍵証明書記憶部214と、未使用通貨記憶部215と、使用中通貨記憶部216と、更新済通貨記憶部217と、使用済通貨記憶部218と、を備える。
【0043】
通貨発行証明書発行受付部201は、発行銀行サーバ10から通貨発行証明書の発行を受け付ける。
【0044】
金融機関鍵生成部202は、金融機関鍵を生成する。金融機関鍵は、秘密鍵と公開鍵とを含む。
【0045】
金融機関認証要求部203は、ルート認証局サーバ11に、金融機関鍵を送信して金融機関の認証を要求し、ルート認証局サーバ11から金融機関公開鍵証明書を受信する。
【0046】
通貨発行受付部204は、発行銀行サーバ10から通貨の発行を受け付ける。具体的には、通貨発行受付部204は、発行銀行サーバ10から通貨発行メッセージを受信し、受信した通貨発行メッセージの署名を、通貨発行証明書に含まれる公開鍵を用いて検証する。
【0047】
引出受付部205は、利用者端末30から引出の要求を受け付けて、利用者端末30に通貨を送信する。
【0048】
更新処理部206は、利用者端末30からの引出の要求に対して、必要に応じて使用済みの通貨(以下、使用済通貨という)を更新する。具体的には、更新処理部206は、使用済通貨に付加された情報(通貨付加情報)を削除する。なお、通貨付加情報は、後述する支払の取引によって付加される。引出受付部205は、未使用の通貨(以下、未使用通貨という)または更新処理部206によって更新された通貨を利用者端末30に送信する。
【0049】
両替・預入受付部207は、利用者端末30から両替または預入の要求を受け付ける。具体的には、両替・預入受付部207が、利用者端末30から両替の要求を受け付けると、支払受付部209が、両替する額面の支払を受け付けて、支払要求部208が、合計が両替する額面となる複数の支払いを要求する。また、両替・預入受付部207が、預入の要求を受け付けると、支払受付部209が、預け入れる額面の支払を受け付ける。
【0050】
与信受付部210は、利用者端末30から通貨を受信して与信の要求を受け付ける。与信受付部210は、通貨が使用中の通貨(以下、使用中通貨という)であるか否かを判定し、判定結果を利用者端末30に送信する。
【0051】
還収要求部211は、発行銀行サーバ10に通貨を送信して、還収を要求する。
【0052】
通貨発行証明書記憶部212は、通貨発行証明書発行受付部201が発行を受け付けた通貨発行証明書を記憶する。
【0053】
金融機関鍵記憶部213は、金融機関鍵生成部202が生成した金融機関鍵を記憶する。
【0054】
金融機関公開鍵証明書記憶部214は、金融機関認証要求部203がルート認証局サーバ11から受信した金融機関公開鍵証明書を記憶する。
【0055】
未使用通貨記憶部215は、通貨発行受付部204が発行を受け付けた通貨を未使用通貨として記憶する。
【0056】
使用中通貨記憶部216は、引出受付部205が引出を受け付けた通貨を使用中通貨として記憶する。
【0057】
更新済通貨記憶部217は、更新処理部206によって更新された通貨(以下、更新済通貨という)を更新前の状態で記憶する。
【0058】
使用済通貨記憶部218は、使用された通貨であって、使用中でない通貨を記憶する。具体的には、使用済通貨記憶部218は、両替・預入受付部207が両替または預入の要求を受け付けて、支払受付部209によって支払を受け付けて受信した通貨を、使用済通貨として記憶する。
【0059】
図5は、中間認証局サーバの機能構成図である。中間認証局サーバ25は、中間認証鍵生成部251と、中間証明書発行部252と、利用者認証部253と、中間認証鍵記憶部254と、利用者公開鍵証明書発行情報記憶部255と、を備える。
【0060】
中間認証鍵生成部251は、中間認証局の正当性を保証するための暗号鍵データ(以下、中間認証鍵という)を生成する。中間認証鍵は、秘密鍵と公開鍵とを含む。
【0061】
中間証明書発行部252は、中間証明書を発行して、各利用者端末30に送信する。
【0062】
利用者認証部253は、利用者端末30から各利用者の正当性を保証するための暗号鍵データ(以下、利用者鍵という)を受信して、認証の要求を受け付ける。そして、利用者認証部253は、利用者鍵の公開鍵を証明するための証明書を示すデータ(以下、利用者公開鍵証明書という)を生成し、生成された利用者公開鍵証明書を、認証を要求した利用者端末30に送信する。さらに、利用者認証部253は、利用者公開鍵証明書の発行を示す情報(以下、利用者公開鍵証明書発行情報という)を、生成する。
【0063】
中間認証鍵記憶部254は、中間認証鍵生成部251が生成した中間認証鍵を記憶する。
【0064】
利用者公開鍵証明書発行情報記憶部255は、利用者認証部253が生成した利用者公開鍵証明書発行情報を記憶する。
【0065】
図6は、利用者端末の機能構成図である。利用者端末30は、通貨発行証明書発行受付部301と、中間証明書発行受付部302と、利用者鍵生成部303と、利用者認証要求部304と、引出要求部305と、支払要求部306と、支払受付部307と、両替・預入要求部308と、与信要求部309と、通貨発行証明書記憶部310と、中間証明書記憶部311と、利用者鍵記憶部312と、利用者公開鍵証明書記憶部313と、利用者通貨記憶部314と、を備える。
【0066】
通貨発行証明書発行受付部301は、発行銀行サーバ10から通貨発行証明書の発行を受け付ける。
【0067】
中間証明書発行受付部302は、中間認証局サーバ25から中間証明書の発行を受け付ける。
【0068】
利用者鍵生成部303は、利用者鍵を生成する。利用者鍵は、秘密鍵と公開鍵とを含む。
【0069】
利用者認証要求部304は、中間認証局サーバ25に、利用者鍵を送信して利用者の認証を要求し、中間認証局サーバ25から利用者公開鍵証明書を受信する。
【0070】
引出要求部305は、額面を指定して金融機関サーバ20に引出を要求する。引出要求部305は、金融機関サーバ20から引き出された通貨を受信する。
【0071】
支払要求部306は、支払う通貨を送信して、金融機関サーバ20または他の利用者端末30に支払を要求する。
【0072】
支払受付部307は、支払われる通貨を受信して、金融機関サーバ20または他の利用者端末30から支払を受け付ける。
【0073】
両替・預入要求部308は、金融機関サーバ20に両替または預入を要求する。具体的には、両替・預入要求部308が両替を要求し、金融機関サーバ20が受け付けると、支払要求部306が、両替する額面の通貨を送信して、金融機関サーバ20に支払を要求し、支払受付部307が、合計が両替する額面となる複数の支払いを金融機関サーバ20から受け付ける。また、両替・預入要求部308が預入を要求し、金融機関サーバ20が受け付けると、支払要求部306が、預け入れる通貨を送信して、金融機関サーバ20に支払を要求する。
【0074】
与信要求部309は、通貨を送信して金融機関サーバ20に与信を要求し、与信結果を受信する。
【0075】
通貨発行証明書記憶部310は、通貨発行証明書発行受付部301が発行を受け付けた通貨発行証明書を記憶する。
【0076】
中間証明書記憶部311は、中間証明書発行受付部302が発行を受け付けた中間証明書を記憶する。
【0077】
利用者鍵記憶部312は、利用者鍵生成部303によって生成された利用者鍵を記憶する。
【0078】
利用者公開鍵証明書記憶部313は、利用者認証要求部304が受信した利用者公開鍵証明書を記憶する。
【0079】
利用者通貨記憶部314は、利用者が使用中の通貨を記憶する。具体的には、利用者通貨記憶部314は、引出要求部305が金融機関サーバ20から受信した通貨と、支払受付部307が金融機関サーバ20または他の利用者端末30から受信した通貨と、を記憶する。
【0080】
(電子通貨システムの動作)
次に、電子通貨システム1の動作について説明する。以下、発行銀行をB0、各金融機関をBi(B0,B1,・・・)、ルート認証局をA0、各中間証明局をAi(A0,A1,・・・)、各利用者をUj(U0,U1,・・・)、という記号で概念を示しながら説明する。
【0081】
図7は、通貨発行処理の流れの一例を示すシーケンス図である。通貨発行処理は、定期的に、または担当者の操作等を受けて開始される。
【0082】
発行銀行サーバ10の通貨発行鍵生成部101は、通貨発行鍵を生成する(ステップS101)。具体的には、通貨発行鍵生成部101は、発行年yと発行額vに対応する通貨発行鍵のペア(秘密鍵skB0vyおよび公開鍵pkB0vy)を生成する。
【0083】
そして、通貨発行証明書発行部102は、公開鍵pkB0vyを証明する通貨発行証明書CERT(pkB0vy)を各金融機関サーバ20に送信し(ステップS102)、各利用者端末30に送信する(ステップS103)。各金融機関サーバ20の通貨発行証明書発行受付部201は、通貨発行証明書CERT(pkB0vy)を受信して、通貨発行証明書記憶部212に記憶させる。また、各利用者端末30の通貨発行証明書発行受付部301は、通貨発行証明書CERT(pkB0vy)を受信して、通貨発行証明書記憶部310に記憶させる。
【0084】
発行額vは、1円未満でも良い。例えば、2021年に0.1円の通貨を発行する場合、通貨発行証明書発行部102は、通貨発行証明書CERT(pkB0(0.1円)(2021年))を各金融機関サーバ20および各利用者端末30に送信する。
【0085】
なお、通貨発行証明書発行部102は、通貨発行証明書CERT(pkB0vy)を直接に各金融機関サーバ20および各利用者端末30に送信しなくても良く、例えば、通信ネットワークで公開されているサーバ装置等にアップロードし、各金融機関サーバ20および各利用者端末30にダウンロードさせるようにしても良い。
【0086】
次に、ルート認証局サーバ11のルート認証鍵生成部111は、ルート認証鍵を生成する(ステップS104)。ルート認証鍵は、秘密鍵skA0および公開鍵pkA0を含む。続いて、ルート証明書発行部112は、秘密鍵skA0で署名してルート証明書Auth(pkA0)を生成し、各金融機関サーバ20に送信する(ステップS105)。
【0087】
なお、ルート証明書発行部112は、直接にルート証明書Auth(pkA0)を各金融機関サーバ20に送信しなくても良く、例えば、通信ネットワークで公開されているサーバ装置等にアップロードし、各金融機関サーバ20にダウンロードさせるようにしても良い。
【0088】
続いて、中間認証局サーバ25の中間認証鍵生成部251は、中間認証鍵を生成する(ステップS106)。中間認証鍵は、秘密鍵skAiおよび公開鍵pkAiを含む。
【0089】
次に、中間証明書発行部252は、秘密鍵skAiで署名し、ルート証明書Auth(pkA0)を使用して中間証明書Auth(pkAi,pkA0)を生成する。以下、中間証明書Auth(pkAi,pkA0)はAuth(pkAi)と表記する。そして、中間証明書発行部252は、生成した中間証明書Auth(pkAi)を各利用者端末30に送信する(ステップS107)。各利用者端末30の中間証明書発行受付部302は、中間証明書Auth(pkAi)を受信して、中間証明書記憶部311に記憶させる。
【0090】
なお、中間証明書発行部252は、直接に中間証明書Auth(pkAi)を各利用者端末30に送信しなくても良く、例えば、通信ネットワークで公開されているサーバ装置等にアップロードし、各利用者端末30にダウンロードさせるようにしても良い。
【0091】
続いて、利用者端末30の利用者鍵生成部303は、利用者鍵を生成する(ステップS108)。利用者鍵は、秘密鍵skUjおよび公開鍵pkUjを含む。次に、利用者認証要求部304は、公開鍵pkUjを送信して、利用者認証を中間認証局サーバ25に要求する(ステップS109)。
【0092】
中間認証局サーバ25の利用者認証部253は、ルート証明書Auth(pkA0)および中間証明書Auth(pkAi)を用いて、利用者公開鍵証明書Auth(pkUj,pkAi,pkA0)を生成する(ステップS110)。以下、利用者公開鍵証明書Auth(pkUj,pkAi,pkA0)はAuth(pkUj)と表記する。利用者認証部253は、生成した利用者公開鍵証明書Auth(pkUj)を利用者端末30に送信する(ステップS111)。
【0093】
さらに、利用者認証部253は、利用者公開鍵証明書発行情報(Uj,pkUj,Auth(pkUj))を生成し、利用者公開鍵証明書発行情報記憶部255に記憶させる。利用者公開鍵証明書発行情報(Uj,pkUj,Auth(pkUj))は、利用者の個人情報Ujを含んでいる。
【0094】
次に、金融機関サーバ20の金融機関鍵生成部202は、金融機関鍵を生成する(ステップS112)。金融機関鍵は、秘密鍵skBiおよび公開鍵pkBiを含む。次に、金融機関認証要求部203は、公開鍵pkBiを送信して、金融機関認証をルート認証局サーバ11に要求する(ステップS113)。
【0095】
ルート認証局サーバ11の金融機関認証部113は、ルート証明書Auth(pkA0)を用いて、金融機関公開鍵証明書Auth(pkBi,pkA0)を生成する(ステップS114)。以下、金融機関公開鍵証明書Auth(pkBi,pkA0)はAuth(pkBi)と表記する。金融機関認証部113は、生成した金融機関公開鍵証明書Auth(pkBi)を金融機関サーバ20に送信する(ステップS115)。
【0096】
さらに、金融機関認証部113は、金融機関公開鍵証明書発行情報(Bi,pkBi,Auth(pkBi))を生成し、金融機関公開鍵証明書発行情報記憶部116に記憶させる。なお、金融機関公開鍵証明書発行情報(Bi,pkBi,Auth(pkBi))は、金融機関についての機関情報Biを含んでいる。そして、金融機関公開鍵証明書発行情報送信部114は、金融機関公開鍵証明書発行情報(Bi,pkBi,Auth(pkBi))を発行銀行サーバ10に送信する(ステップS116)。
【0097】
発行銀行サーバ10の金融機関公開鍵証明書発行情報取得部103は、金融機関公開鍵証明書発行情報(Bi,pkBi,Auth(pkBi))を取得して、金融機関公開鍵証明書発行情報記憶部116に記憶させる。
【0098】
なお、ステップS108からステップS111までの処理と、ステップS112からステップS116までの処理の順序は一例であって、逆でも良い。ステップS108からステップS111までの処理は、各利用者端末30によってそれぞれ個別に実行される。またステップS112からステップS116までの処理は、各金融機関サーバ20によってそれぞれ個別に実行される。
【0099】
また、利用者端末30は、利用者鍵を追加するため、ステップS108からステップS111までの処理を複数回実行しても良い。
【0100】
次に、発行銀行サーバ10の通貨発行部104は、金融機関公開鍵証明書発行情報記憶部116に記憶された金融機関公開鍵証明書発行情報(Bi,pkBi,Auth(pkBi))を使用し、発行額v、発行年y、金融機関Biを指定した通貨発行メッセージ(v,y,Bi,pkBi)を生成する(ステップS117)。ここで、通貨発行部104は、通貨発行鍵記憶部106に記憶された通貨発行鍵の秘密鍵skB0vyを使用して署名する。通貨発行部104は、署名S0が付加された通貨発行メッセージ(v,y,Bi,pkBi)を、金融機関サーバ20に送信する(ステップS118)。
【0101】
金融機関サーバ20の通貨発行受付部204は、署名S0が付加された通貨発行メッセージ(v,y,Bi,pkBi)を、受信して、通貨発行証明書記憶部212に記憶された通貨発行証明書CERT(pkB0vy)に含まれる公開鍵pkB0vyを使用して署名S0を検証する。そして、通貨発行受付部204は、通貨T0:=(v,y,Bi,pkBi,S0)を生成して未使用通貨記憶部215に記憶させる。
【0102】
図8は、引出処理の流れの一例を示すシーケンス図である。引出処理は、利用者U
jの引出を指示する操作に応じて開始される。
【0103】
利用者端末30の引出要求部305は、引出の額面vを示す額面情報と、利用者鍵記憶部312に記憶された利用者鍵の公開鍵pkUjと、を送信して、金融機関サーバ20に引出を要求する(ステップS201)。
【0104】
金融機関サーバ20の引出受付部205は、引出を受け付ける(ステップS202)。具体的には、引出受付部205は、未使用通貨記憶部215から額面vに一致する未使用通貨T0を切り取って、通貨付加情報T1:=(pkUj,S1)を付加した使用中通貨(T1,T0)として、使用中通貨記憶部216に記憶させる。S1は、金融機関鍵の秘密鍵skBiを用いた署名データである。
【0105】
続いて、引出受付部205は、使用中通貨(T1,T0)の通貨データと、金融機関公開鍵証明書Auth(pkBi)とを利用者端末30に送信する(ステップS203)。利用者端末30の引出要求部305は、使用中通貨(T1,T0)の通貨データと、金融機関公開鍵証明書Auth(pkBi)とを検証し、使用中通貨(T1,T0)を利用者通貨記憶部314に記憶させる。
【0106】
なお、ステップS202において、引出受付部205は、必要に応じて、未使用通貨記憶部215に記憶された未使用通貨ではなく使用済通貨記憶部218に記憶された使用済通貨を使用しても良い。この場合、更新処理部206が、使用済通貨を更新し、通貨付加情報が削除された通貨に更新する。引出受付部205は、使用済通貨を使用するか否かを、あらかじめ定められた条件にしたがって決定する。例えば、引出受付部205は、使用済通貨が閾値以上のデータ量になった場合に、使用済通貨を使用するようにしても良い。
【0107】
例えば、引出受付部205が使用済通貨(Tn,・・・,T0)を引出に対して利用する場合、更新処理部206は、更新前の状態の通貨(Tn,・・・,T0)を更新済通貨記憶部217に記憶させる。そして、更新処理部206は、使用済通貨(Tn,・・・,T0)を、通貨付加情報(Tn,・・・,T1)が削除された通貨T0に更新する。そして、引出受付部205は、更新された通貨T0に通貨付加情報Tn+1:=(pkUj,Sn+1)を付加した使用中通貨(Tn+1,T0)を、使用中通貨記憶部216に記憶させる。
【0108】
続いて、引出受付部205は、使用中通貨(Tn+1,T0)の通貨データと、金融機関公開鍵証明書Auth(pkBi)とを利用者端末30に送信する(ステップS203)。利用者端末30の引出要求部305は、使用中通貨(Tn+1,T0)の通貨データと、金融機関公開鍵証明書Auth(pkBi)とを検証し、使用中通貨(Tn+1,T0)を利用者通貨記憶部314に記憶させる。
【0109】
また、更新処理部206は、すでに1回以上更新された通貨を再度更新しても良い。この場合、更新処理部206は、以前の更新前の状態の通貨(Tn,・・・T1,T0)に、今回の更新前の状態の通貨(Tn+k,・・・,Tn+1,T0)を結合した通貨(Tn+k,・・・,T1,T0)を更新済通貨記憶部217に記憶させる。
【0110】
図9は、支払処理の流れの一例を示すシーケンス図である。支払処理は、送金側の利用者U
jによる着金側の利用者U
kへの支払を指示する操作に応じて開始される。
【0111】
利用者端末30-1は、送金側の利用者Ujが操作する利用者端末30である。利用者端末30-2は、着金側の利用者Ukが操作する利用者端末30である。利用者端末30-1の支払要求部306は、支払い額vの通貨(Tn-1,・・・,T0)から通貨付加情報を除く通貨データである通貨T0と、利用者公開鍵証明書Auth(pkUj)とを送信して、支払を利用者端末30-2に要求する(ステップS301)。
【0112】
利用者端末30-2の支払受付部307は、支払を受け付ける(ステップS302)。具体的には、支払受付部307は、通貨T0と利用者公開鍵証明書Auth(pkUj)とを検証する。ここで、支払受付部307は、通貨の検証においては、通貨に含まれる署名データを検証する。例えば、支払受付部307は、通貨T0:=(v,y,Bi,pkBi,S0)の署名S0を検証する。
【0113】
次に、支払受付部307は、利用者端末30-2の利用者鍵記憶部312に記憶された利用者鍵の公開鍵pkUkを利用者端末30-1に送信する(ステップS303)。利用者端末30-1の支払要求部306は、受信した公開鍵pkUkに、利用者端末30-1の利用者鍵記憶部312に記憶された利用者鍵の秘密鍵skUjを使用して署名し、通貨付加情報Tn:=(pkUk,Sn)を生成する(ステップS304)。
【0114】
支払要求部306は、通貨付加情報(Tn-1,・・・,T1)に、生成した通貨付加情報Tn:=(pkUk,Sn)を付加した通貨付加情報(Tn,・・・,T1)を、利用者端末30-2に送信する(ステップS305)。
【0115】
利用者端末30-2の支払受付部307は、通貨付加情報(Tn,・・・,T1)を検証する。具体的には、支払受付部307は、通貨付加情報に含まれるそれぞれの署名データを検証する。例えば、支払受付部307は、通貨付加情報Tn-1:=(pkUj,Snー1)の署名Snー1を検証する。支払受付部307は、受信した通貨T0に通貨付加情報(Tn,・・・,T1)を付加した通貨(Tn,・・・,T0)を、利用者端末30-2の利用者通貨記憶部314に記憶させる。
【0116】
図10は、両替処理の流れの一例を示すシーケンス図である。両替処理は、利用者U
jの両替を指示する操作に応じて開始される。
【0117】
利用者端末30の両替・預入要求部308は、両替の額面vを示す額面情報と、利用者鍵記憶部312に記憶された利用者鍵の公開鍵pkUjと、を送信して、金融機関サーバ20に両替を要求する(ステップS401)。
【0118】
金融機関サーバ20の両替・預入受付部207は、両替を受け付ける(ステップS402)。両替・預入受付部207は、両替の受付を示す両替受付情報を利用者端末30に送信する(ステップS403)。
【0119】
利用者端末30の両替・預入要求部308が、両替受付情報を受信すると、支払要求部306は、
図9に示される支払処理にしたがって、金融機関サーバ20に支払を要求する(ステップS404)。
【0120】
また、金融機関サーバ20の支払要求部208は、合計して両替額vとなる額v
1,・・・,v
xに両替する場合、v
1,・・・,v
xのそれぞれについて、
図9に示される支払処理にしたがって利用者端末30に支払を要求する(ステップS405-1,S405-2)。
【0121】
図11は、与信処理の流れの一例を示すシーケンス図である。与信処理は、利用者U
jの与信を指示する操作に応じて開始される。
【0122】
利用者端末30の与信要求部309は、利用可否を確認したい通貨T0を送信して、金融機関サーバ20に与信を要求する(ステップS501)。金融機関サーバ20の与信受付部210は、与信を受け付ける(ステップS502)。具体的には、与信受付部210は、通貨T0を使用中通貨記憶部216から検索して、T0をふくむレコード、例えば(T1,T0)が存在すれば、与信成功ackを示す与信結果を利用者端末30に送信する(ステップS503)。
【0123】
図12は、預入処理の流れの一例を示すシーケンス図である。預入処理は、利用者U
jの預入を指示する操作に応じて開始される。
【0124】
利用者端末30の両替・預入要求部308は、預入の額面vを示す額面情報と、利用者鍵記憶部312に記憶された利用者鍵の公開鍵pkUjと、を送信して、金融機関サーバ20に預入を要求する(ステップS601)。
【0125】
金融機関サーバ20の両替・預入受付部207は、預入を受け付ける(ステップS602)。両替・預入受付部207は、預入の受付を示す預入受付情報を利用者端末30に送信する(ステップS603)。
【0126】
利用者端末30の両替・預入要求部308が、預入受付情報を受信すると、支払要求部306は、
図9に示される支払処理にしたがって、金融機関サーバ20に支払を要求する(ステップS604)。
【0127】
図13は、還収処理の流れの一例を示すシーケンス図である。還収処理は、金融機関B
iの還収を指示する操作に応じて開始される。
【0128】
金融機関サーバ20の還収要求部211は、還収する通貨データを送信して、発行銀行サーバ10に還収を要求する(ステップS701)。還収する通貨データは、未使用通貨でも使用済通貨でも良い。未使用通貨を還収する場合は、還収要求部211は、未使用通貨T0を未使用通貨記憶部215から抜き出して、発行銀行サーバ10に送信する。
【0129】
また、使用済通貨を還収する場合は、還収要求部211は、使用済通貨(Tn,・・・,T0)を使用済通貨記憶部218から抜き出して、発行銀行サーバ10に送信する。また、使用済通貨(Tm,・・・,Tk+1,T0)が更新済みである場合には、還収要求部211は、更新済通貨記憶部217から更新前の通貨付加情報(Tk,・・・,T1)を読み出して、使用済通貨(Tm,・・・,Tk+1,T0)に結合し、結合された通貨(Tm,・・・,T0)を発行銀行サーバ10に送信する。
【0130】
発行銀行サーバ10の還収受付部105は、還収を受け付ける(ステップS702)。具体的には、還収受付部105は、受信した通貨データを還収済通貨記憶部107に記憶させる。
【0131】
(従来の問題点)
ここで、従来の問題点について説明する。従来の技術では、通貨毎および取引毎に署名が付与されるため、ユーザ間の転々流通を許容する場合、累積的に署名数が増えるという問題がある。流通する電子通貨に含まれる署名数が増えると、流通する署名データのサイズが大きくなり、それによって必要な通信ネットワーク帯域が大きくなったり、署名検証コストが大きくなったりする虞がある。
【0132】
(本実施の形態の概要)
そこで、本実施の形態では、なるべく市場に流通する通貨の合計署名数が小さくなるように、通貨選択アルゴリズムをエンティティ毎に選択可能として、市場全体として最適化する例について説明する。
【0133】
例えば、利用者端末30は、銀行が介在しない取引(ユーザ間)では、なるべく取引時において送受信および検証される合計署名数が小さくなるように通貨を選択する。これによって、送受信および検証される電子通貨に含まれる署名数を小さく抑えることができ、必要な通信ネットワーク帯域を削減するとともに、ユーザの待ち時間を低減することができる。
【0134】
また、ユーザから市中銀行に通貨が送信される処理、または市中銀行から発行銀行に通貨が送信される処理では、利用者端末30または金融機関サーバ20は、なるべく送信する合計署名数が大きくなるように通貨を選択する。これによって、市中に流通する通貨の署名数を小さくし、署名検証コストを小さくすることができる。
【0135】
さらに、市中銀行からユーザに通貨が送信される処理、または発行銀行から市中銀行に通貨が送信される処理では、金融機関サーバ20または発行銀行サーバ10は、通貨発行枚数の額面ごとの統計などを参考に、署名数が最小の新規通貨を発行するか、または合計署名数が小さくなるように通貨を選択する。これによって、市中に流通する通貨の署名数の合計数を小さくし、市中全体における署名検証コストを小さくすることができる。
【0136】
具体的には、利用者端末30-1の支払要求部306は、
図9に示される支払処理のステップS301において、通貨の枚数が最小となる組み合わせとなるように通貨を選択し、さらに同じ額面の中では署名数が少ない順に通貨を選択する。
【0137】
ここで、支払要求部306は、動的計画法(DP:Dynamic Programming)(例えば参考文献[1])を用いて通貨を選択してもよい。
【0138】
図14は、通貨選択処理の流れの一例を示すシーケンス図である。支払要求部306は、
図9に示される支払処理のステップS301の処理を開始する前に、
図14に示される通貨選択処理を呼び出して実行し、当該通貨選択処理から返された通貨idのリストに基づいて、ステップS301の処理を実行する。
【0139】
支払要求部306は、所持金額が送金額t以上であるか否かを判定する(ステップS801)。支払要求部306は、所持金額が送金額t以上でないと判定すると(ステップS801:NO)、支払要求を中止する(ステップS802)。
【0140】
他方、支払要求部306は、所持金額が送金額t以上であると判定すると(ステップS801:YES)、変数i=1として(ステップS803)、i円を送金する通貨額面と枚数の組み合わせを決定し、配列dp[i]に記録する(ステップS804)。
【0141】
続いて、支払要求部306は、送金額tが変数iよりも大きいか否かを判定する(ステップS805)。支払要求部306は、送金額tが変数iよりも大きいと判定すると(ステップS805:YES)、i=i+1として(ステップS806)、ステップS804の処理に戻る。
【0142】
他方、支払要求部306は、送金額tが変数iよりも大きくないと判定すると(ステップS805:NO)、決定された送金額tにおける通貨額面と枚数の組み合わせ(dp[t])に基づいて、送金する通貨idを選択する(ステップS807)。ここで選択される1または複数の通貨idの総額は、送金額tと同額かまたはそれ以上の額である。
【0143】
次に、支払要求部306は、送金額tと同額の通貨idを選択したか否かを判定する(ステップS808)。支払要求部306は、送金額tと同額の通貨idを選択していない(すなわち、通貨idの総額が送金額t以上の額)と判定すると(ステップS808:NO)、お釣りの枚数が最小になるように通貨を選択する(ステップS809)。
【0144】
他方、支払要求部306は、送金額tと同額の通貨idを選択したと判定すると(ステップS808:YES)、ステップS809の処理をスキップする。
【0145】
そして、支払要求部306は、送金する通貨idのリスト(1または複数の通貨id)を返す(ステップS810)。
【0146】
上述したように動的計画法による通貨選択処理は、通貨の額面と枚数のペアを、DPを用いて決定する第一の処理と、通貨idを決定する第二の処理と、を含む。例えば、第一の処理では、15円を送金するために、10円通貨1枚と5円通貨1枚が選択される。第二の処理では、通貨id=2の10円通貨と通貨id=4の5円通貨が選択される。
【0147】
第一の処理は、
図14のステップS803からS806までの処理に相当する。第二の処理は、ステップS807の処理に相当する。
【0148】
以下、通貨選択処理の詳細について、具体例を挙げて説明する。支払要求部306は、第一の処理において、利用者が保有する通貨から送金する額面と枚数の組み合わせを動的計画法(DP)によって1円から目的額(送金額t)まで探索する。
【0149】
具体的には、支払要求部306は、1円から送金額tまで繰り返し処理を行い、その時のループ変数をi、保有している通貨の額面をv、通貨の組み合わせを記録するDP配列をdpとすると、i円の通貨の組み合わせdp[i]の合計枚数を以下の式(1)に基づいて決定する。
【0150】
sum(dp[i])=sum(dp[i-v])+1・・・(1)
【0151】
支払要求部306は、保有する全ての通貨で式(1)を計算し、i円に対して複数の通貨の組み合わせが存在する場合は合計枚数が少ない組み合わせをdp[i]に記録する。そして、i=tまで繰り返し処理した後のdp[t]が送金する通貨の額面と枚数の組み合わせとなる。
【0152】
例えば、利用者端末30-1が保有している通貨が{5円=>2枚,1円=>5枚}であって、送金額tが5円の場合、dp[i]は以下のようになる。
(a)i=0(円):
dp[0]={1万円=>0枚,・・・,1円=>0枚}
(b)i=1(円):
dp[1]=dp[0]+{1円=>1枚}={1円=>1枚}
(c)i=2(円):
dp[2]=dp[1]+{1円=>1枚}={1円=>2枚}
(d)i=3(円):
dp[3]=dp[2]+{1円=>1枚}={1円=>3枚}
(e)i=4(円):
dp[4]=dp[3]+{1円=>1枚}={1円=>4枚}
(f-1)i=5(円):
dp[5]=dp[4]+{1円=>1枚}={1円=>5枚}
【0153】
なお、支払要求部306は、組み合わせが複数存在する場合は合計枚数が少ないものをdp[i]に記録してもよい。
(f-2)i=5(円):
dp[5]=dp[0]+{5円=>1枚}={5円=>1枚}
【0154】
このようにして決定された送金額の額面および枚数の組み合わせは、dp[5]={5円=>1枚}となる。
【0155】
次に、第二の処理において、支払要求部306は、第一の処理で決定した通貨の額面と枚数の組み合わせを元に送金する通貨のidを決定する。ここで、支払要求部306は、同じ額面の通貨が複数存在する場合は、通貨に付加された署名の個数が少ないものから優先的に選択する。
【0156】
図15は、通貨決定方法について説明するための図である。支払要求部306は、
図15に示される通貨の中から5円1枚の通貨idを決定する場合は、署名数が少ない通貨id=3の通貨を選択する。
【0157】
なお、上述したアルゴリズムでは、処理の簡略化のため、枚数をDPにより最小化した範囲内で署名が最小になるように計算する例を示した。しかし、支払要求部306は、署名数が本当に最小化されるように、枚数と署名数を同時にDPで最小化するようにしてもよい。手持ち通貨が多い銀行等では、DPの総額×通貨種別の通貨枚数を事前に計算しておいてもよい。これによって、都度最適化問題を解く必要がなくなり処理を高速化できる。
【0158】
また、利用者端末30の支払要求部306は、
図10に示される両替処理のステップS404において、または
図12に示される預入処理のステップS604において、通貨の枚数が最大となる組み合わせとなるように通貨を選択する。これによって、ユーザの手持ち通貨の枚数を低減させることができ、上述したDPによる計算処理の負荷を軽減し、ユーザの待ち時間を減らすことができる。
【0159】
なお、支払要求部306は、署名数が一定以上(例えば5以上)の通貨を選択してもよく、同じ額面の中では署名数が多い順に通貨を選択してもよい。これによって、なるべく署名数が多い通貨(古い通貨)を市場から還収させることができる。
【0160】
発行銀行サーバ10の通貨発行部104は、
図7に示される通貨発行処理のステップS817において、額面ごとの統計などの情報に基づいて、署名数が最小の新規通貨(例えば署名S
0およびS
1が付加された通貨発行メッセージ、署名数=2)を発行する。これによって、署名数の少ない通貨を市場に流通させることができる。
【0161】
金融機関サーバ20の引出受付部205は、
図8に示される引出処理のステップS202において、利用者端末30から引出を受け付けると、通貨発行枚数の額面ごとの統計などを参考に、署名数が少ない順に、すなわち合計の署名数がなるべく小さくなるように通貨を選択してもよい。これによって、署名数の少ない通貨を市場に流通させることができる。
【0162】
同様に、金融機関サーバ20の支払要求部208は、
図10に示される両替処理のステップS405-1,S405-2において、通貨発行枚数の額面ごとの統計などを参考に、署名数が少ない順に、すなわち合計の署名数がなるべく小さくなるように通貨を選択してもよい。これによって、署名数の少ない通貨を市場に流通させることができる。
【0163】
金融機関サーバ20の還収要求部211は、
図13に示される還収処理のステップS701において、通貨の枚数が最大となる組み合わせとなるように通貨を選択する。これによって、市中銀行の手持ち通貨の枚数を低減させることができ、上述したDPによる計算処理の負荷を軽減し、ユーザの待ち時間を減らすことができる。
【0164】
なお、還収要求部211は、署名数が一定以上(例えば5以上)の通貨を選択してもよく、同じ額面の中では署名数が多い順に通貨を選択してもよい。これによって、なるべく署名数が多い通貨(古い通貨)を市場から還収させることができる。
【0165】
上述した通貨の選択方法についてまとめると、以下の表のようになる。
【0166】
【0167】
すなわち、電子通貨システム1は、ユーザ間の送金の場合、枚数が最小で署名数が少ない順となるように通貨を選択し、例えばDPによる組み合わせの選択を行ってもよい。したがって、電子通貨システム1は、枚数と署名数の掛け算で、ユーザの待ち時間を低減させることができる。
【0168】
電子通貨システム1は、ユーザから市中銀行への送金の場合、枚数が最大で署名数が多い順となるように通貨を選択する。したがって、電子通貨システム1は、ユーザの手持ち枚数を低減することによって、DPによる計算処理の負荷を低減させ、ユーザの待ち時間を低減させることができる。
【0169】
また、電子通貨システム1は、ユーザから市中銀行への送金の場合、枚数が最大で署名数が一定以上(例えば5以上)の通貨を選択してもよい。これによって、電子通貨システム1は、なるべく署名数の多い通貨(古い通貨)を市場から還収することができる。これによって、市中でオフライン取引多数の古い通貨が中々還収されない現象に対応することができる。
【0170】
電子通貨システム1は、市中銀行からユーザへの送金の場合、額面毎の統計を参考に枚数を決定し、署名数が少ない順になるように通貨を選択する。これによって、電子通貨システム1は、なるべく署名数の少ない通貨を市場に流通させることができる。
【0171】
電子通貨システム1は、市中銀行から発行銀行への送金の場合、署名数が一定以上(例えば5以上)の通貨を選択する。これによって、電子通貨システム1は、なるべく署名数の多い通貨(古い通貨)を市場から還収することができる。
【0172】
また、電子通貨システム1は、市中銀行から発行銀行への送金の場合、枚数が最大になるように通貨を選択してもよい。これによって、電子通貨システム1は、市中銀行の手持ち枚数を低減して(お釣りの)DPによる計算処理の負荷を低減させ、ユーザの待ち時間を低減させることができる。これによって、市中銀行に小さな通貨が増える現象に対応することができる。
【0173】
電子通貨システム1は、発行銀行から市中銀行への送金の場合、額面毎の統計を参考に決定し、署名数が最小(=2(S0,S1))となるように通貨を選択する。これによって、電子通貨システム1は、署名数が少ない通貨を市場に流通させることができる。
【0174】
(変形例)
上述した本実施の形態において、電子通貨システム1は、リフレッシュ機能を有していてもよい。リフレッシュ機能は、オンラインになったときに署名数が多い通貨を少ない通貨に交換する機能である。
【0175】
例えば、電子通貨システム1は、より市場に流通する合計署名数を低減するため、電子通貨がオンライン時に、署名の個数が多い通貨を署名の少ない通貨に交換する。
【0176】
具体的には、金融機関サーバ20の与信受付部210は、
図11に示される与信処理のステップS502において与信を受け付けると、各通貨の署名数の「リフレッシュ」操作を行ってもよい。
【0177】
オンラインとオフラインのハイブリッド型である場合、銀行側のトランザクションの負荷は高くなる。そこで、電子通貨がオンラインとオフラインのハイブリッド型である場合に、電子通貨の真正性を銀行側で判定する「与信」機能と合わせて、「リフレッシュ」機能が追加されることによって、オンラインでの与信、二重使用の検知およびオンラインでの通貨の洗替を1回の処理で完結させることができる。
【0178】
また、上述した本実施の形態において、電子通貨システム1は、オートチャージ機能および自動預金機能を有していてもよい。オートチャージ機能は、手持ちの通貨が少なくなった時に自動的に一定額まで増やす機能である。自動預金機能は、一定額を超えた分の通貨を銀行に預金する機能である。
【0179】
具体的には、利用者端末30-1の支払要求部306は、
図9に示される支払処理のステップS301において、ユーザ(例えば、店舗と消費者とを含む)の所持する電子通貨が一定金額になるように、支払い時の金額不足の対応のために、オートチャージを実行する。これによって、手持ちの電子通貨が一定金額以下になった際に、不足金を補うようにする。
【0180】
また、利用者端末30は、格納される電子通貨の上限金額が設定される。両替・預入要求部308は、所持金額が上限金額を超えると、
図12に示される預入処理を開始してもよい。これによって、利用者端末30は、上限金額を超えた場合に銀行に自動で預金することができる。
【0181】
また、上述した本実施の形態において、金融機関サーバ20の更新処理部206は、更新の際に古い通貨(=署名数の多い通貨)の「処分」操作を追加してもよい。これによって、署名数の多い通貨を市場から還収させることができる。
【0182】
(参考文献)
[1]On the Fine-grained Complexity of One-Dimensional Dynamic Programming, Kunnemann, Marvin and Paturi, Ramamohanand Schneider, Stefan, arXiv, 2017
【0183】
(本実施の形態に係るハードウェア構成例)
電子通貨システム1の備える各装置は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。なお、この「コンピュータ」は、物理マシンであってもよいし、クラウド上の仮想マシンであってもよい。仮想マシンを使用する場合、ここで説明する「ハードウェア」は仮想的なハードウェアである。
【0184】
上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【0185】
図16は、上記コンピュータのハードウェア構成例を示す図である。
図16のコンピュータは、それぞれバスBで相互に接続されているドライブ装置1000、補助記憶装置1002、メモリ装置1003、CPU1004、インタフェース装置1005、表示装置1006、入力装置1007、出力装置1008等を有する。
【0186】
当該コンピュータでの処理を実現するプログラムは、例えば、CD-ROM又はメモリカード等の記録媒体1001によって提供される。プログラムを記憶した記録媒体1001がドライブ装置1000にセットされると、プログラムが記録媒体1001からドライブ装置1000を介して補助記憶装置1002にインストールされる。但し、プログラムのインストールは必ずしも記録媒体1001より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置1002は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0187】
メモリ装置1003は、プログラムの起動指示があった場合に、補助記憶装置1002からプログラムを読み出して格納する。CPU1004は、メモリ装置1003に格納されたプログラムに従って、当該装置に係る機能を実現する。インタフェース装置1005は、ネットワークに接続するためのインタフェースとして用いられる。表示装置1006はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置1007はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。出力装置1008は演算結果を出力する。なお、上記コンピュータは、CPU1004の代わりにGPU(Graphics Processing Unit)またはTPU(Tensor processing unit)を備えていても良く、CPU1004に加えて、GPUまたはTPUを備えていても良い。その場合、例えばニューラルネットワーク等の特殊な演算が必要な処理をGPUまたはTPUが実行し、その他の処理をCPU1004が実行する、というように処理を分担して実行しても良い。
【0188】
(実施の形態のまとめ)
本明細書には、少なくとも下記の各項に記載した電子通貨システム、情報処理装置、支払処理方法およびプログラムが記載されている。
(第1項)
複数の利用者端末を備える電子通貨システムであって、
前記複数の利用者端末に含まれる利用者端末は、
通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる他の利用者端末に要求する支払要求部を備え、
前記他の利用者端末は、前記複数の利用者端末に含まれる前記利用者端末から支払の要求を受け付ける支払受付部を備える、
電子通貨システム。
(第2項)
前記支払要求部は、前記通貨の選択において、動的計画法によって通貨の枚数が少なくなる組み合わせとなるように通貨を選択する、
第1項に記載の電子通貨システム。
(第3項)
前記電子通貨システムは、金融機関サーバをさらに備え、
前記支払要求部は、通貨の枚数が多くなる組み合わせの通貨であって、署名数が多い順または署名数が一定以上の通貨を選択し、選択された前記通貨による支払の処理を、前記金融機関サーバに要求する、
第1項または第2項に記載の電子通貨システム。
(第4項)
前記金融機関サーバは、
署名数が多い順または署名数が一定以上の通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる利用者端末に要求する支払要求部を備える、
第3項に記載の電子通貨システム。
(第5項)
前記電子通貨システムは、発行銀行サーバをさらに備え、
前記金融機関サーバは、
通貨の枚数が多くなる組み合わせの通貨であって、署名数が多い順または署名数が一定以上の通貨を選択し、選択された前記通貨による還収の処理を、前記発行銀行サーバに要求する還収要求部をさらに備える、
第3項または第4項に記載の電子通貨システム。
(第6項)
通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、他の情報処理装置に要求する支払要求部と、
他の情報処理装置から支払の要求を受け付ける支払受付部と、を備える、
情報処理装置。
(第7項)
複数の利用者端末を備える電子通貨システムが実行する支払処理方法であって、
前記複数の利用者端末に含まれる利用者端末は、
通貨の枚数が少なくなる組み合わせの通貨であって、署名数が少ない順に通貨を選択し、選択された前記通貨による支払の処理を、前記複数の利用者端末に含まれる他の利用者端末に要求し、
前記他の利用者端末は、前記複数の利用者端末に含まれる前記利用者端末から支払の要求を受け付ける、
支払処理方法。
(第8項)
コンピュータを、第6項に記載の情報処理装置における各部として機能させるためのプログラム。
【0189】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0190】
1 電子通貨システム
10 発行銀行サーバ
11 ルート認証局サーバ
20 金融機関サーバ
25 中間認証局サーバ
30 利用者端末
101 通貨発行鍵生成部
102 通貨発行証明書発行部
103 金融機関公開鍵証明書発行情報取得部
104 通貨発行部
105 還収受付部
106 通貨発行鍵記憶部
107 還収済通貨記憶部
111 ルート認証鍵生成部
112 ルート証明書発行部
113 金融機関認証部
114 金融機関公開鍵証明書発行情報送信部
115 ルート認証鍵記憶部
116 金融機関公開鍵証明書発行情報記憶部
201 通貨発行証明書発行受付部
202 金融機関鍵生成部
203 金融機関認証要求部
204 通貨発行受付部
205 引出受付部
206 更新処理部
207 両替・預入受付部
208 支払要求部
209 支払受付部
210 与信受付部
211 還収要求部
212 通貨発行証明書記憶部
213 金融機関鍵記憶部
214 金融機関公開鍵証明書記憶部
215 未使用通貨記憶部
216 使用中通貨記憶部
217 更新済通貨記憶部
218 使用済通貨記憶部
251 中間認証鍵生成部
252 中間証明書発行部
253 利用者認証部
254 中間認証鍵記憶部
255 利用者公開鍵証明書発行情報記憶部
301 通貨発行証明書発行受付部
302 中間証明書発行受付部
303 利用者鍵生成部
304 利用者認証要求部
305 引出要求部
306 支払要求部
307 支払受付部
308 両替・預入要求部
309 与信要求部
310 通貨発行証明書記憶部
311 中間証明書記憶部
312 利用者鍵記憶部
313 利用者公開鍵証明書記憶部
314 利用者通貨記憶部
1000 ドライブ装置
1001 記録媒体
1002 補助記憶装置
1003 メモリ装置
1004 CPU
1005 インタフェース装置
1006 表示装置
1007 入力装置
1008 出力装置