(57)【特許請求の範囲】
【請求項１】
端末装置からトランザクションの実行指示と該トランザクションを一意に区別できる識別情報とに基づいて要求されたトランザクションを実行するトランザクション処理装置であって、
上記端末装置からのトランザクションの実行指示と識別情報に基づいて実行したトランザクションの実行結果および該トランザクションの実行を開始したことを示す開始情報と該トランザクションの実行結果の上記端末装置への送信が完了して該トランザクションの処理が正常に終了したか否かを示す完了情報を、上記トランザクションの実行指示と識別情報に対応付けた履歴情報を記憶装置に順次に記録する履歴情報格納手段と、
上記端末装置からのトランザクションの実行指示と識別情報に一致し、かつ、上記完了情報が正常終了を示したトランザクションの実行結果の有無を上記履歴情報格納手段で記録した履歴情報を探索して判別する履歴確認手段と、
上記端末装置からのトランザクションの実行指示と識別情報に一致し、かつ、上記完了情報が正常終了を示したトランザクションの実行結果があれば該トランザクションの実行結果を読み出して上記端末装置に出力する履歴取得手段と、
上記端末装置からのトランザクションの実行指示と識別情報に一致し、かつ、上記完了情報が正常終了を示したトランザクションの実行結果がなければ、上記端末装置からのトランザクションの実行指示と識別情報に基づくトランザクションを実行し、該トランザクションの実行結果を上記端末装置に出力するトランザクション実行手段とを有し、
該トランザクション実行手段によるトランザクションの実行結果および該トランザクションに対する上記開始情報と上記完了情報を上記履歴情報格納手段により上記履歴情報として上記記憶装置に記録することを特徴とするトランザクション処理装置。
【請求項２】
端末装置からトランザクションの実行指示と該トランザクションを一意に区別できる識別情報とに基づいて要求されたトランザクションを実行するトランザクション処理装置のトランザクション処理方法であって、
上記端末装置からのトランザクションの実行指示と識別情報に基づいて実行したトランザクションの実行結果および該トランザクションの実行を開始したことを示す開始情報と該トランザクションの実行結果の上記端末装置への送信が完了して該トランザクションの処理が正常に終了したか否かを示す完了情報を、上記トランザクションの実行指示と識別情報に対応付けた履歴情報を記憶装置に順次に記録する第１のステップと、
上記端末装置からのトランザクションの実行指示と識別情報に一致し、かつ、上記完了情報が正常終了を示したトランザクションの実行結果の有無を上記第１のステップで上記記録装置に記録した履歴情報を探索して判別する第２のステップと、
上記端末装置からのトランザクションの実行指示と識別情報に一致し、かつ、上記完了情報が正常終了を示したトランザクションの実行結果があれば該トランザクションの実行結果を読み出して上記端末装置に出力する第３のステップと、
上記端末装置からのトランザクションの実行指示と識別情報に一致し、かつ、上記完了情報が正常終了を示したトランザクションの実行結果がなければ、上記端末装置からのトランザクションの実行指示と識別情報に基づくトランザクションを実行し、該トランザクションの実行結果を上記端末装置に出力する第４のステップとを有し、
該第４のステップでの処理によるトランザクションの実行結果および該トランザクションに対する上記開始情報と上記完了情報を上記第１のステップでの処理により上記履歴情報として上記記憶装置に記録することを特徴とするトランザクション処理方法。
【請求項３】
端末装置からトランザクションの実行指示と該トランザクションを一意に区別できる識別情報とに基づいて要求されたトランザクションを実行するトランザクション処理機能を具備したＩＣカードであって、
上記端末装置からのトランザクションの実行指示と識別情報に基づいて実行したトランザクションの実行結果および該トランザクションの実行を開始したことを示す開始情報と該トランザクションの実行結果の上記端末装置への送信が完了して該トランザクションの処理が正常に終了したか否かを示す情報を、上記トランザクションの実行指示と識別情報に対応付けた履歴情報を記憶装置に順次に記録する履歴情報格納手段と、
上記端末装置からのトランザクションの実行指示と識別情報に一致しかつ上記完了情報が正常終了を示したトランザクションの実行結果の有無を、上記履歴情報格納手段で記録した履歴情報を探索して判別する履歴確認手段と、
上記端末装置からのトランザクションの実行指示と識別情報に一致しかつ上記完了情報が正常終了を示したトランザクションの実行結果があれば該トランザクションの実行結果を読み出して上記端末装置に出力する履歴取得手段と、
上記端末装置からのトランザクションの実行指示と識別情報に一致しかつ上記完了情報が正常終了を示したトランザクションの実行結果がなければ、上記端末装置からのトランザクションの実行指示と識別情報に基づくトランザクションを実行し、該トランザクションの実行結果を上記端末装置に出力するトランザクション実行手段とを有し、
該トランザクション実行手段によるトランザクションの実行結果および該トランザクションに対する上記開始情報と上記完了情報を上記履歴情報格納手段により上記履歴情報として上記記憶装置に記録することを特徴とするトランザクション処理機能付きＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＣカード（Integrated Circuitカード）を用いた電子マネー取引システム等におけるトランザクション処理技術に係り、特に、トランザクション処理の信頼性向上と性能の向上を図るの好適なトランザクション処理装置と方法およびトランザクション処理機能付きＩＣカードに関するものである。
【０００２】
【従来の技術】
コンピュータを利用して商取引を行う電子商取引（エレクトロニック・コマース、ＥＣ：Electronic Commerce）等におけるトランザクション処理、例えば、ＩＣカードをトラベラーズチェックとして利用して支払いを行う場合、ＩＣカードと、店舗に設置された端末装置との間で、以下のようなトランザクション処理が行われる。
【０００３】
トランザクション処理装置としてのＩＣカードは、店舗側の端末装置から、金額Ｗの支払要求（トランザクションの実行指示Ｔ）と当該トランザクションを一意に区別できる識別情報ＩＤ（端末装置で生成される乱数Ｒ）とを入力し、予め記録している残金Ｗｒ（データ項目Ｓ）を参照して、実行指示Ｔによって指示されたトランザクション（金額Ｗの支払）を実行し、データ項目Ｓ（残金Ｗｒ）を更新する。そして、店舗側の端末装置に、予め記憶した鍵情報Ｋとこの鍵情報Ｋで暗号化した署名Ｓおよびトラベラーズチェックの総額（電子マネーデータＣ）等を、トランザクションの実行結果として出力する。
【０００４】
店舗側の端末装置では、このようにＩＣカード（トランザクション処理装置）から出力されてきた電子マネーデータＣを確認し、かつ、鍵情報Ｋを使って、同じくＩＣカードから出力されてきた署名Ｓを検証し、両方とも正常であればトランザクション処理（支払い処理）の完了とする。
【０００５】
このような処理を行なうために、トランザクション処理装置には、データ項目Ｓ１,Ｓ２,…,Ｓｎをそれぞれ記録する記憶部Ｍ１,Ｍ２,…,Ｍｎと、トランザクションの実行結果を記録する記憶部ＭＲとが設けられている。そして、トランザクション実行開始時には、まず、記憶部ＭＲの内容（前回の実行結果）を一旦消去し、次に、記憶部Ｍ１,Ｍ２,…,Ｍｎに格納されているデータ項目Ｓ１,Ｓ２,…,Ｓｎの値を用いてトランザクションを実行する。さらに、その実行後、更新されたＳ１,Ｓ２,…,Ｓｎの値を記憶部Ｍ１,Ｍ２,…,Ｍｎに記録し、また、新たな実行結果を記憶部ＭＲに記録した後、その実行結果を端末装置に出力している。
【０００６】
しかし、このようなトランザクション処理システムにおいては、種々の不具合が発生する。例えば、第1の不具合として次のものがある。すなわち、トランザクション処理装置において、トランザクション処理が成功したにもかかわらず、記憶部Ｍ１,Ｍ２,…,Ｍｎへトランザクション実行後のデータ項目Ｓ１,Ｓ２,…,Ｓｎの値を格納する途中で、装置の動作に問題が生じて、この記憶部Ｍ１,Ｍ２,…,Ｍｎへのデータ項目の書込みが不完全に終わった場合、もしくは、記憶部ＭＲへトランザクション実行結果の値を格納する途中で問題が生じて実行結果の書き込みが不完全に終わった場合で、かつ、実行結果の端末装置への送信が不完全に終わった場合がある。
【０００７】
このような場合には、トランザクション処理装置のデータの一貫性が失われる。すなわち、記憶部Ｍ１,Ｍ２,…,Ｍｎに格納されているデータ項目Ｓ１,Ｓ２,…,Ｓｎ、および、記憶部ＭＲに格納されている実行結果の値には、トランザクションの実行に基づく更新が完了したものと完了していないものが混在してしまい、データ項目間の一貫性が失われる。さらに、この場合、値をトランザクションの実行の前の状態に戻すことができなくなってしまう。また、記憶部ＭＲには、そのトランザクションの実行結果が完全に記録されていないため、端末装置側では、トランザクション処理装置の記憶部ＭＲの内容を読み出しても実行結果を取得することができない。
【０００８】
また、第２の不具合として次のものがある。すなわち、端末装置側では、トランザクション処理装置からの実行結果の値を受信できなかった場合、記憶部ＭＲに当該トランザクションの実行結果が記録されているかどうかを調べ、その結果により、トランザクション実行装置から記憶部ＭＲの値を読み出させるべきか、再度トランザクションの実行指示Ｔおよび識別情報ＩＤを与えて実行結果を得るべきかを判断する必要があり、それに伴い、端末装置側に特別の機能を設ける必要がある。
【０００９】
端末装置においてこのような判断を行うことなく、再度、トランザクションの実行をトランザクション処理装置へ指示してしまうと、トランザクション処理装置内では、場合によっては同一トランザクションが２度重複して行われてしまうことになる。この場合、端末装置上ではトランザクションを１度しか実行していないため、一貫性が失われる。
【００１０】
さらに、第３の不具合としては次のものがある。すなわち、トランザクション処理装置において、記憶部ＭＲはトランザクションを実行するたびに内容（実行結果）が消去され、新しいものに書きかえられていくため、直前に実行したトランザクションの実行結果しか端末装置は取得できない。そのため、端末装置が複数台存在する場合において、ある端末装置に対するトランザクション実行結果の送信が失敗したにもかかわらず、他の端末装置に対してトランザクションを実行してしまうと、前者の端末装置へ実行結果を再度送信することができなくなってしまう。
【００１１】
また、従来技術の不具合として以下のケースもある。すなわち、１回のトランザクションのためにトランザクション装置内では、記憶部ＭＲの消去、記憶部Ｍ１,Ｍ２,…,Ｍｎの書き換え、さらに記憶部ＭＲの書き込みという操作が必要である。このことは、トランザクション処理にＩＣカードを用いる場合に不都合である。
【００１２】
なぜなら、ＩＣカードでは、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）と呼ばれるタイプの記憶装置を一般に用いられているが、このＥＥＰＲＯＭでは、書込み操作毎に書込みデータ量に関わらず固定的な所要時間が必要となり、この所要時間は代表的なＩＣカードの場合で約５５ミリ秒程度である。データの書込み速度が１バイト当り１５マイクロ秒程度であることと比較すると、この所要時間は大きな負担である。
【００１３】
このような問題に対処するため、実際の記憶装置上の記憶領域（記憶部Ｍ１,Ｍ２,…,Ｍｎおよび記憶部ＭＲ）の配置順序を適正化し、これらの値の書き換えを一度の書込み操作で済むように最適化することができる。しかし、このような最適化を行ったとしてもなお、記憶部ＭＲの消去という操作が必要であるため、記憶装置（ＥＥＰＲＯＭ）への操作回数は最低でも２回必要となる。
【００１４】
【発明が解決しようとする課題】
解決しようとする問題点は、従来の技術では、トランザクション処理装置と端末装置との間の通信の途絶やトランザクション処理装置の処理途中での動作停止が起きた場合には、トランザクション処理装置に格納されている内部データの一貫性の喪失を確実に防止できない点と、トランザクション処理装置内部の記憶手段への操作回数を削減することができない点である。
【００１５】
本発明の目的は、これら従来技術の課題を解決し、トランザクション処理の信頼性向上と処理速度の向上を図ることを可能とするトランザクション処理装置と方法およびトランザクション処理機能付きＩＣカードを提供することである。
【００１６】
【課題を解決するための手段】
上記目的を達成するため、本発明のトランザクション処理装置と方法およびトランザクション処理機能付きＩＣカードでは、実行したトランザクションに関して、要求された実行指示Ｔと識別情報ＩＤに対応付けて、実行結果を、正常に処理完了したか否かを示す指標（開始フラグと完了フラグ等）を付与し、履歴情報として記録しておく。その後、端末装置からトランザクション実行指示Ｔと識別情報ＩＤとが入力されると、これらの情報に基づき、記録した履歴情報を検索して、入力された実行指示Ｔと識別情報ＩＤとに対応する正常終了した実行結果の有無を判別する。あれば、当該実行結果を読み出して端末装置に出力し、なければ、入力された実行指示Ｔと識別情報ＩＤとに基づく新規のトランザクションを実行し、その実行結果を端末装置に出力すると共に、新たな履歴情報として記録する。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態を、図面により詳細に説明する。
図１は、本発明に係るトランザクション処理装置の構成例を示すブロック図であり、図２は、図１におけるトランザクション処理装置の本発明に関わる処理動作例を示すフローチャートである。
【００１８】
図１に示すトランザクション処理装置は、電子マネー支払い装置を例にしており、この電子マネー支払い装置は、図示していない電子マネー端末装置からの支払い要求に対応して電子マネー支払い処理（トランザクション処理）を行う。
【００１９】
本例の電子マネー支払い装置は、入力端１（図中「ＩＷ」と記載）、入力端２（図中「ＩＲ」と記載）、トランザクション実行部３、出力端４（図中「ＯＫ」と記載）、出力端５（図中「ＯＣ」と記載）、出力端６（図中「ＯＳ」と記載）、そして、履歴管理部７を有している。
【００２０】
入力端１には、電子マネー端末装置からトランザクションの実行指示Ｔとして要求された電子マネー支払い金額Ｗ（１ａ）が入力され、また、入力端２には、個々の電子マネー支払いの度に電子マネー端末装置において生成されるトランザクション識別情報ＩＤとしての乱数Ｒ（２ａ）が入力される。
【００２１】
トランザクション実行部３は、残高確認部３ａ、署名生成部３ｂ、出力処理部３ｃを有し、従来のトランザクション処理を行なう。また、履歴管理部７は、履歴確認部７ａ、履歴取得部７ｂ、履歴情報格納処理部７ｃ、履歴情報８を有し、本発明に係る処理を行なう。
【００２２】
この履歴情報８は、過去に実行された支払い処理（トランザクション処理）の履歴を示すものであり、電子マネー端末装置から要求された支払金額Ｗとトランザクション識別情報ＩＤとしての乱数Ｒを、実行結果としての署名Ｓや、各支払い処理後の残高Ｗｒ等の情報に対応付けたものである。
【００２３】
以下、このような構成からなる電子マネー支払い装置の処理動作例を図２に基づき説明する。
図１における電子マネー支払い装置では、電子マネー端末装置から入力端１，２に、トランザクションの実行指示Ｔとしての支払い金額Ｗ（１ａ）と、トランザクションを一意に区別できる識別情報ＩＤとしての乱数Ｒ（２ａ）とが入力されると（ステップ２０１）、履歴管理部７における履歴確認部７ａにより、支払い金額Ｗと乱数Ｒ（識別情報ＩＤ）をキーにして、履歴情報８を検索し（ステップ２０２）、同一の金額Ｗと乱数Ｒに対応する正常に終了した電子マネー支払い処理が過去に行われているかどうかを確認する（ステップ２０３）。
【００２４】
正常終了した支払いが過去に行われていることが確認された場合には、履歴取得部７ｂを起動し、履歴情報８から過去の実行結果を取得し（ステップ２０４）、そうでない場合には、トランザクション実行部３の残高確認部３ａを起動して従来のトランザクション処理を実行させる（ステップ２０６）。
すなわち、ステップ２０４においては、履歴取得部７ｂは、入力された支払い金額Ｗと乱数Ｒ（識別情報ＩＤ）が同一の署名Ｓを履歴情報８から読み出し、この署名Ｓを、出力処理部３ｃに渡す。
【００２５】
出力処理部３ｃは、予め用意された鍵情報Ｋ（４ａ）と、電子マネーデータＣ（５ａ）（ここでは電子マネー支払い装置に予め付与された総額）を有しており、これらの鍵情報Ｋ（４ａ）、電子マネーデータＣ（５ａ）と、履歴取得部７ｂから受け取った署名Ｓとを、実行結果として、出力端４〜６を介して電子マネー端末装置に送出する（ステップ２０５）。
【００２６】
また、ステップ２０６においては、まず、トランザクション実行部３における残高確認部３ａを起動して、電子マネー端末装置から入力端１，２に入力されたトランザクションの実行指示Ｔとしての支払い金額Ｗ（１ａ）と、トランザクションを一意に区別できる識別情報ＩＤとしての乱数Ｒ（２ａ）とに対応して、履歴情報８において記録されている残高（Ｗｒ）の値に基づき、要求されたトランザクション（支払い処理）を実行し、次に、署名生成部３ｂを起動し、署名生成部３ｂにより、予め用意された鍵情報Ｋ（４ａ）を用いて乱数Ｒ（２ａ）に対する署名Ｓ（６ａ）を生成する。
【００２７】
このような残高確認部３ａと署名生成部３ｂによる従来のトランザクション処理が正常に終了すると、その実行結果に基づき、履歴管理部７における履歴情報格納処理部７ｃにより、新たな履歴情報８を生成して登録する（ステップ２０７）。
この新たな履歴情報８における署名生成部３ｂで生成された署名Ｓは、出力処理部３ｃに渡され、予め用意された鍵情報Ｋ（４ａ）と電子マネーデータＣ（５ａ）と共に、実行結果として、出力端４〜６を介して電子マネー端末装置に送出される（ステップ２０５）。
【００２８】
尚、電子マネー端末装置では、このように電子マネー支払い装置から出力されてきた電子マネーデータＣを確認し、かつ、鍵情報Ｋを使って、同じく電子マネー支払い装置から出力されてきた署名Ｓを検証し、両方とも正常であればトランザクション処理（支払い処理）の完了とする。
【００２９】
次に、図３、図４を用いて、本発明に係わる他の例を説明する。
図３は、本発明に係るトランザクション処理装置の他の構成例を示すブロック図であり、図４は、図３におけるトランザクション処理装置で生成される履歴情報の構成例を示す説明図である。
【００３０】
図３に示すトランザクション処理装置は、電子マネー支払い装置を、ＩＣカード１０を用いて実現したものであり、さらに、本ＩＣカード１０は、トラベラーズチェックとして用いられ、図示していない電子マネー端末装置からの支払い要求に対応して電子マネー支払い処理（トランザクション処理）を行う。
【００３１】
まず、本ＩＣカード１０をトラベラーズチェックとして用いての具体的な取引例について説明する。例えば、トラベラーズチェックの額面を１００００円とし、商店からの支払い（要求）金額Ｗが２０００円とすると、トラベラーズチェックの利用者は、この額面１００００円のトラベラーズチェックを商店に提示し、その内２０００円を商店に支払うと表明するが、これと同様に、本例では、額面１００００円の電子マネーデータＣを有するＩＣカード１０を商店に提示し、その内２０００円を支払うと表明するために、商店の電子マネー端末装置から指示された乱数Ｒに対して、予め用意された鍵情報Ｋを用いてデジタル署名Ｓを生成する。
【００３２】
尚、実際には、乱数Ｒと支払い要求金額（Ｗ）の２０００円の両方を結合したデータに対してデジタル署名Ｓを生成するものであるが説明を簡単にするために、本例では、乱数Ｒに対してのみデジタル署名Ｓを生成するものとする。
以下、図３に基づき、このようなトラベラーズチェックとして利用されるＩＣカード１０について説明する。
【００３３】
本例のトラベラーズチェックとしてのＩＣカード１０は、受信バッファ１１（図中「ＩＮＢＵＦ」と記載）、処理部１２、送信バッファ１３（図中「ＯＵＴＢＵＦ」と記載）、そして、ＥＥＰＲＯＭ１４を有している。
【００３４】
受信バッファ１１には、電子マネー端末装置から入力された、トランザクションの実行指示Ｔとして要求された電子マネー支払い金額Ｗ（１１ａ）と、個々の電子マネー支払いの度に電子マネー端末装置において生成されたトランザクション識別情報ＩＤとしての乱数Ｒ（１１ｂ）とが格納される。
【００３５】
処理部１２は、ＣＰＵ（Central Processing Unit）や主メモリ等からなりコンピュータ処理を行うものであり、本発明に係る処理を行なう履歴確認部１２ａ、判定部１２ｂ、履歴取得部１２ｃ、履歴情報格納処理部１２ｆと、従来のトランザクション処理を行なう残高確認部１２ｄ、署名生成部１２ｅとを具備している。
【００３６】
送信バッファ１３には、予め用意された鍵情報Ｋ（１３ａ）とトラベラーズチェックの総額（１００００円）としての電子マネーデータＣ（１３ｂ）、および、署名生成部１２ｅで鍵情報Ｋ（１３ａ）を用いて生成される署名Ｓ（１３ｃ）が格納され、これらの情報が、電子マネー端末装置に送信される。
【００３７】
ＥＥＰＲＯＭ１４は、不揮発性記憶装置であり、残高確認部１２ｄと署名生成部１２ｅでのトランザクション処理（マネー支払い処理）結果に基づき履歴情報格納処理部１２ｆで生成される履歴情報１４ａを格納する。
【００３８】
この履歴情報１４ａは、図４に示すように、履歴情報テーブル１４ｂとして、図３のＥＥＰＲＯＭ１４上の記憶領域に格納されている。すなわち、履歴情報テーブル１４ｂは、各レコードを識別するためのインデックス番号、実行開始を示す開始フラグ（図中「ＦＳ」と記載）、端末装置から要求された支払金額を示す金額Ｗ、支払い実行後の残金を示す残高Ｗｒ、端末装置から入力されたトランザクション識別情報ＩＤを示す乱数Ｒ、実行結果を示す署名Ｓ、実行完了を示す完了フラグ（図中「ＦＥ」と記載）の各項目からなり、図３におけるＩＣカード１０で過去に行われた各電子マネー支払いに関する情報を登録する。
【００３９】
本履歴情報テーブル１４ｂにおいては、各項目の初期値は「０」とし、レコード数は固定でｎ個とし、インデックス番号には、「０」から順に「ｎ−１」までが付与される。
また、開始フラグ（ＦＳ）および完了フラグ（ＦＥ）は「０」から「ｎ＋１」までの値を取る。
【００４０】
一般にＩＣカード１０上のＥＥＰＲＯＭ１４の記憶容量は、高々十数ＫＢ程度であり、全ての履歴情報１４ａを格納するには不充分であるため、本例では、履歴情報テーブル１４ｂに割り当てられた領域を使い尽くすと、再度、履歴情報テーブル１４ｂの先頭から順次書き換えて使用するものとする。
【００４１】
図４に示す履歴情報テーブル１４ｂの例では、インデックス番号＃０のレコードにおいては、開始フラグと完了フラグの両方に「１」が、また、金額Ｗとして「１０００（円）」、残高Ｗｒとして「９０００（円）」、乱数Ｒとして「５２３１１」、署名Ｓとして「ＢｃＤｘｗ」が登録され、インデックス番号＃１のレコードにおいては、開始フラグと完了フラグの両方に「２」が、金額Ｗとして「２０００（円）」、残高Ｗｒとして「７０００（円）」、乱数Ｒとして「８４２３３」、署名Ｓとして「ＹｏｎＰＱ」が登録されている。
【００４２】
本例では、このように、開始フラグと完了フラグの両方に同じ番号が登録されていることにより、当該インデックス番号のレコードに関する支払い処理（トランザクション）が正常に完了したことを示している。そして、支払い処理（トランザクション）が正常に完了しなかった場合には、当該レコードにおける完了フラグ（ＦＥ）に、開始フラグ（ＦＳ）と異なる値が書き込まれることになる。このように開始フラグ（ＦＳ）と完了フラグ（ＦＥ）の値が異なる場合には、履歴情報の読み出し時に、記録中の何らかの異常により記録が不完全であることを検出でき、その記録を無効として排除し、完全な記録のみを最後に記録された履歴情報から順に過去に遡って読み出すことができる。
【００４３】
図３におけるＩＣカード１０では、受信バッファ１１に、電子マネー端末装置から、トランザクションの実行指示Ｔとしての支払い金額Ｗ（１１ａ）の要求と、トランザクションを一意に区別できる識別情報ＩＤ（乱数Ｒ１１ｂ）とが入力されると、処理部１２における履歴確認部１２ａにより、支払い金額Ｗと乱数Ｒ（識別情報ＩＤ）をキーにして、図４に示す履歴情報テーブル１４ｂを検索し、そして、判定部１２ｂにより、同一の支払い金額Ｗと乱数Ｒに対する正常終了した電子マネー支払い処理が過去に行われているかどうかを確認する。
【００４４】
ここでは、図４に示す履歴情報テーブル１４ｂに、金額Ｗと乱数Ｒが等しく、かつ、開始フラグ（ＦＳ）と完了フラグ（ＦＥ）の値が等しいという条件を満たす内容であるかどうかを確認する。条件を満たし、同一の支払いが過去に正常に行われていることが確認された場合には、履歴取得部１２ｃを起動し、そうでない場合には、残高確認部１２ｄを起動して従来のトランザクション処理を実行させる。
【００４５】
まず、履歴取得部１２ｃでは、上記条件を満たした図４に示す履歴情報テーブル１４ｂにおけるレコードから署名Ｓを読み出し、送信バッファ１３に格納する。
また、残高確認部１２ｄでは、受信バッファ１１に格納された支払い金額Ｗ（１１ａ）と乱数Ｒ（１１ｂ）とに対応する支払い処理（トランザクション処理）を行う。
【００４６】
この際、残高確認部１２ｄは、図４の履歴情報テーブル１４ａにおいて最後に記録された電子マネー支払い履歴情報のレコードから順に遡って記録（レコード）を読み出し、要求された支払い金額Ｗと、このレコードに記録されている現在残高（Ｗｒ）とを比較し、支払い金額Ｗが現在残高（Ｗｒ）を下回っていることを確認する。
【００４７】
尚、レコードに一度も履歴情報を記録した形跡がなければ、現在残高Ｗｒは、電子マネーデータＣの額面（トラベラーズチェックの総額としての１００００円）と等しいものとなる。
また、この残高確認部１２ｄによる、レコードに最後に記録された電子マネー支払い履歴情報のインデックス番号の取得は、以下のようにして行う。
【００４８】
まず、仮のインデックス番号として末尾のレコードのインデックス番号を設定した上で、先頭レコードから順に、開始フラグ（ＦＳ）と完了フラグ（ＦＥ）を読み出し、両フラグがともに「０」である、もしくは、両フラグの間で値が異なる、もしくはフラグの値から１減じた値(減じた結果が「０」の場合は「ｎ＋１」と読み替える)と直前のレコード(先頭レコードの場合は末尾のレコード)の開始フラグ（ＦＳ）の値が等しくない、のいずれかの場合には、現在の仮のインデックス値を、最後に書き込まれたレコードのインデックス番号とし、さもなくば現在のレコードのインデックス値を仮のインデックス値に設定し、次のレコードに対して同様の処理を行う。
【００４９】
この処理を繰り返してレコードの末尾に達した場合には、その末尾のレコードを、最後に書き込まれたレコードであるとする。
このようにして、残高確認部１２ｄの処理が終了すると、署名生成部１２ｅにより、予め登録された鍵情報Ｋ（１３ａ）を用いて、乱数Ｒ（１１ｂ）に対する署名Ｓ（１３ｃ）を生成し、送信バッファ１３に格納する。
【００５０】
尚、図３のＩＣカード１０においては、図示していない実行結果生成部により、予め記録しておいた電子マネーデータＣ（額面１００００円）と鍵情報Ｋ、および、この鍵情報Ｋを用いて署名生成部１２で生成された、あるいは、履歴取得部１２ｃで取得された署名Ｓとをあわせて送信データを完成させ、送信バッファ１３に格納する。
【００５１】
この送信データは、送信バッファ１３から電子マネー端末装置に送信され、電子マネー端末装置では、このようにＩＣカード１０から出力されてきた電子マネーデータＣを確認し、かつ、鍵情報Ｋを用いて、同じくＩＣカード１０から出力されてきた署名Ｓを検証し、両方が正常であればトランザクション処理（支払い処理）の完了とする。
【００５２】
上述のようにして残高確認部１２ｄと署名生成部１２ｅとによる実行処理が終了すると、次にＩＣカード１０は、履歴情報格納処理部１２ｆにより、実行処理に基づき履歴情報１４ａを生成し、図４における履歴情報テーブル１４ｂに記録する。
【００５３】
すなわち、履歴情報格納処理部１２ｆは、支払い金額Ｗ、支払い直後の現在残高Ｗｒ、電子マネー端末装置より受信した乱数Ｒ、署名生成部１２ｅにより生成された署名Ｓからなる電子マネー支払い履歴情報を、残高確認部１２ｄで読み出したレコードの次のレコードに記録する。
【００５４】
この際、履歴情報格納処理部１２ｆは、残高確認部１２ｄで読み出したレコードの開始フラグ（ＦＳ）の値に「１」加えたもの(加えた結果がｎ＋１を超えた場合は「１」に読み替える)を、このレコードの開始フラグ（ＦＳ）および完了フラグ（ＦＥ）に設定する。
尚、ＩＣカード上のＥＥＰＲＯＭ１４におけるレコードの記憶領域は限られており、残高確認部１２ｄで読み出したレコードが末尾レコードであれば、履歴情報格納処理部１２ｆは、先頭レコードに対して記録を行う。このようにすることで、限られたレコードの記憶領域を繰り返し使用することができる。
【００５５】
このように、限られたレコードの記憶領域を繰り返し使用する動作を、図５〜図７に示す具体的な例を用いて説明する。
図５は、図３における履歴情報を登録した履歴情報テーブルの第１の構成例を示す説明図であり、図６は、図３における履歴情報を登録した履歴情報テーブルの第２の構成例を示す説明図、図７は、図３における履歴情報を登録した履歴情報テーブルの第３の構成例を示す説明図である。
【００５６】
本例では、登録可能なレコード数を「４」としており、図５（ａ）の履歴情報テーブル１４ｃは、３回の書き込みが行われた例を示している。この状態で４回目の書き込みを行うには、先頭から順に開始フラグ（ＦＳ）と完了フラグ（ＦＥ）を検索する。ここでは、インデックス番号３のレコードにおける開始フラグ（ＦＳ）と完了フラグ（ＦＥ）が「０」となっており、このことから、インデックス番号２のレコードが、最後に書き込まれたレコードであることが分かる。従って、４回目の書き込みは、インデックス番号３のレコードに対して行う。
この結果が、図６の履歴情報テーブル１４ｄに示す状態である。
【００５７】
この状態で、さらに、５回目の書き込みを行う場合、同様に、先頭のレコードから順に開始フラグ（ＦＳ）と完了フラグ（ＦＥ）を検索するが、ここでは、「両フラグ共に０、もしくは両フラグの値が異なる、もしくは、両フラグの値から１減じた値と直前のレコードのフラグの値とが異なる」という条件に合致するものがない。従って、インデックス番号３のレコードが最後に書き込まれたものとして判断し、先頭のインデックス番号０のレコードに対して書き込みを行う。
この結果が、図７の履歴情報テーブル１４ｅに示す状態である。
【００５８】
この状態で、さらに、６回目の書き込みを行う場合、同様に、先頭のレコードから順に開始フラグ（ＦＳ）と完了フラグ（ＦＥ）を検索するが、ここでは、インデックス番号１のレコードに対する検索の時点で、「フラグの値から１減じた値と直前のレコードのフラグの値とが異なる」という条件に合致するので、インデックス番号０のレコードが最後に書き込まれたものとして判断でき、インデックス番号１のレコードに対して書き込みを行う。
【００５９】
このような、図５〜図７に示す各履歴情報テーブル１４ｃ〜１４ｅにおいて、書き込みが不完全で処理が途中で停止された場合、開始フラグ（ＦＳ）と完了フラグ（ＦＥ）の値は異なるものが書き込まれており、このことにより、各インデックス番号におけるレコードに対する処理が不完全かどうかの判定を行うことができる。
【００６０】
以上、図３における例では、履歴情報を記録する記録装置に十分な記憶容量がない場合で説明したが、大容量の記憶装置を内蔵したＩＣカードなどを用いる場合には、履歴情報の記憶領域に十分な空間が用意でき、テーブル領域を繰り返し使用する必要がなくなる。この場合、図３の履歴確認部１２ａにおいて、履歴情報１４として最後に記録された電子マネー支払履歴情報のレコードのインデックス番号を得るには以下のように２分木探索法を用いて行う。
【００６１】
ここで、開始フラグ（ＦＳ）および完了フラグ（ＦＥ）の値は「０」もしくは「１」のいずれかであり、この値が「０」の場合は、このレコードには何も記録されていないと判断する。
まず、二つの変数Ａ,Ｂを用意し、変数Ａに、先頭レコードのインデックスの値、変数Ｂには末尾レコードのインデックスに「１」を加えた値で初期化する。
【００６２】
「値（Ａ＋Ｂ)÷２」で指し示されるレコードの開始フラグ（ＦＳ）および完了フラグ（ＦＥ）の値が互いに異なる、もしくは「値（Ａ＋Ｂ)÷２」で指し示されるレコードの両フラグが「１」であり、かつその次のレコードの両フラグがともに「０」であるかどうかを検査し、そのような条件に合致した場合、変数Ａが最後に記録されたレコードのインデックスである。さもなくば、「値（Ａ＋Ｂ)÷２」で指し示されるレコードの両フラグが「１」の場合は変数Ａに「値（Ａ＋Ｂ)÷２」を、また、両フラグが「０」の場合は変数Ｂに「値（Ａ＋Ｂ)÷２」を代入して、再度前述の検査を行う。
【００６３】
変数Ａ,Ｂの値がレコードの末尾に達した場合には、その末尾のレコードこそが、最後に書き込まれたレコードであるとする。
このようにして履歴確認部１２ａで読み出した最後に書き込まれたレコードの次のレコード（最後に書き込まれたレコードが末尾のレコードであれば先頭のレコード）に、電子マネー支払い履歴情報を記録する際に、このレコードの開始フラグ（ＦＳ）および完了フラグ（ＦＥ）には値「１」を設定する。
【００６４】
本例では、図３〜図７を用いて説明した例のように限られた記憶領域を繰り返し使用することはできないので、全ての領域を使い尽くした場合には、一旦記憶内容を全て消去し、開始フラグ（ＦＳ）および完了フラグ（ＦＥ）の値を「０」に設定する必要がある。
【００６５】
以上、図１〜図７を用いて説明したように、本例のトランザクション処理装置と方法およびトランザクション処理機能付きＩＣカードでは、実行したトランザクションに関して、実行指示Ｔ（支払い金額Ｗ）と識別情報ＩＤ（乱数Ｒ）に対応付けて、その実行結果（署名Ｓ）を、正常に処理完了したか否かを示す指標（開始フラグ（ＦＳ）と完了フラグ（ＦＥ））を付与し、履歴情報として、ＥＥＰＲＯＭ等の記憶装置に記録しておく。
【００６６】
そして、端末装置から入力されるトランザクションの実行指示Ｔ（支払い金額Ｗ）と識別情報ＩＤ（乱数Ｒ）とに基づき、記録されている実行履歴情報を検索して、同一の支払い金額Ｗ（実行指示Ｔ）と乱数Ｒ（識別情報ＩＤ）とに対応する正常終了した実行結果（署名Ｓ）の有無を判別する。あれば、当該実行結果（署名Ｓ）を記憶装置から読み出して端末装置に出力し、なければ、入力された実行指示Ｔ（支払い金額Ｗ）と識別情報ＩＤ（乱数Ｒ）とに基づく新規のトランザクションを実行して、その実行結果（署名Ｓ）を端末装置に出力すると共に、その新規のトランザクションに関しての履歴情報を生成して記憶装置に記録する。
【００６７】
このように、本例では、履歴情報の記録が行われた全てのトランザクションの履歴情報が記録されるが、正常に終了したトランザクション処理結果のみがトランザクション実行指示Ｔおよび識別情報ＩＤに基づき参照可能となっており、記録が不完全に行われた履歴情報は読み出されないようになっている。
【００６８】
このことにより、トランザクション処理装置が何らかの理由により、トランザクションの実行動作が成功したにもかかわらず、そのトランザクション実行後のデータや実行結果の記録が不完全に終わり、かつ、実行結果の端末装置への送信が不完全に終わった場合には、端末装置から再度、同一のトランザクション実行指示Ｔと識別情報ＩＤが入力されても、対応するトランザクションと同一のものは過去に実行されていないものと判断され、全く新規のトランザクションが要求されたものとして、トランザクションを実行して、実行結果を端末装置へ出力するので、従来技術で発生していた、データ項目の一貫性が失われるという問題を回避できる。
【００６９】
また、本例においては、端末装置は、トランザクション処理装置から出力されたトランザクション実行結果の受信に失敗した場合、再度同一のトランザクション実行指示Ｔおよび識別情報ＩＤをトランザクション処理装置へ入力し、出力される実行結果を受信すれば良く、また、トランザクション処理装置上では、同一のトランザクション実行指示Ｔおよび識別情報ＩＤに対するトランザクションは、高々１度しかトランザクション処理装置内で発生しないため、従来は端末装置に特別の手段が必要になるという問題や、データ項目の一貫性が失われるという問題を回避できる。
【００７０】
また、本例においては、複数のトランザクションの実行結果を記録し読み出せるようになっているので、従来のように、トランザクションを実行する度にトランザクションの実行結果が消去されて新しいものに書き換えられ、直前に実行したトランザクションの実行結果しか端末装置は取得できず、例えば、端末装置が複数あり、ある端末装置に対するトランザクション実行結果の送信が失敗したにも係わらず、他の端末装置に対してトランザクションを実行してしまうと、前者の端末装置へ実行結果を再度送信することができなくなってしまうといった問題を回避できる。
【００７１】
さらに、本例では、各トランザクション実行毎の実行指示Ｔや識別情報ＩＤ、データ項目等の情報と共に、実行結果を記憶装置へ書き込むので、実行結果の消去操作が不要であり、例えば、各情報の書込み操作を一度の書込み操作で済むように最適化することにより、ＥＥＰＲＯＭ等の記憶装置への操作回数は１回で済むことになる。これにより固定的な所要時間を大幅に削減できる。
【００７２】
尚、本発明は、図１〜図７を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、トラベラーズチェックとして利用されるＩＣカード等を用いた電子マネー支払いに係わるトランザクション処理を例に説明したが、電子カード（財布機能）などの他の電子マネー技術等にも適用可能である。
【００７３】
【発明の効果】
本発明によれば、ＩＣカード等からなるトランザクション処理装置とそれを制御する端末装置との間の通信の途絶や、トランザクション処理装置の処理途中での動作停止が起きた場合にも、トランザクション処理装置に格納されている内部データの一貫性の喪失を確実に防止でき、さらにトランザクション処理装置内部のＥＥＰＲＯＭ等からなる記憶装置への操作回数を削減することができ、トランザクション処理時間の短縮を図ることが可能である。
【図面の簡単な説明】
【図１】本発明に係るトランザクション処理装置の構成例を示すブロック図である。
【図２】図１におけるトランザクション処理装置の本発明に関わる処理動作例を示すフローチャートである。
【図３】本発明に係るトランザクション処理装置の他の構成例を示すブロック図である。
【図４】図３におけるトランザクション処理装置で生成される履歴情報の構成例を示す説明図である。
【図５】図３における履歴情報を登録した履歴情報テーブルの第１の構成例を示す説明図である。
【図６】図３における履歴情報を登録した履歴情報テーブルの第２の構成例を示す説明図である。
【図７】図３における履歴情報を登録した履歴情報テーブルの第３の構成例を示す説明図である。
【符号の説明】
１：入力端１（「ＩＷ」）、１ａ：支払い金額Ｗ、２：入力端（「ＩＲ」）、２ａ：乱数Ｒ、３：トランザクション実行部、３ａ：残高確認部、３ｂ：署名生成部、３ｃ：出力処理部、４：出力端（「ＯＫ」）、４ａ：鍵情報Ｋ、５：出力端（「ＯＣ」）、５ａ：電子マネーデータＣ、６：出力端（「ＯＳ」）、６ａ：署名Ｓ、７：履歴管理部、７ａ：履歴確認部、７ｂ：履歴取得部、７ｃ：履歴情報格納処理部、８：履歴情報、１０：ＩＣカード、１１：受信バッファ（「ＩＮＢＵＦ」）、１１ａ：支払い金額Ｗ、１１ｂ：乱数Ｒ、１２：処理部、１２ａ：履歴確認部、１２ｂ：判別部、１２ｃ：履歴取得部、１２ｄ：残高確認部、１２ｅ：署名生成部、１２ｆ：履歴情報格納処理部、１３：送信バッファ（「ＯＵＴＢＵＦ」）、１３ａ：鍵情報Ｋ、１３ｂ：電子マネーデータＣ、１３ｃ：署名Ｓ、１４：ＥＥＰＲＯＭ、１４ａ：履歴情報、１４ｂ〜１４ｅ：履歴情報テーブル。
【図１】
0003752937.tif 000002
【図２】
0003752937.tif 000003
【図３】
0003752937.tif 000004
【図４】
0003752937.tif 000005
【図５】
0003752937.tif 000006
【図６】
0003752937.tif 000007
【図７】
0003752937.tif 000008