(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-06
(45)【発行日】2023-07-14
(54)【発明の名称】同時取引を容易にするための方法、取引管理装置及びコンピュータ読み取り可能な媒体
(51)【国際特許分類】
G06Q 20/38 20120101AFI20230707BHJP
【FI】
G06Q20/38
(21)【出願番号】P 2021564452
(86)(22)【出願日】2019-05-02
(86)【国際出願番号】 SG2019050249
(87)【国際公開番号】W WO2020222701
(87)【国際公開日】2020-11-05
【審査請求日】2022-04-13
(73)【特許権者】
【識別番号】598023436
【氏名又は名称】シンガポール エアラインズ リミテッド
(74)【代理人】
【識別番号】100081455
【氏名又は名称】橘 哲男
(74)【代理人】
【識別番号】100170966
【氏名又は名称】藤本 正紀
(72)【発明者】
【氏名】シャンムガム、アルン サバリラジャン
(72)【発明者】
【氏名】ウィーラセカラ、ディヌーシャ
(72)【発明者】
【氏名】カンダチェリ、ランジート
(72)【発明者】
【氏名】タン、シアクチュア
【審査官】塩田 徳彦
(56)【参考文献】
【文献】米国特許出願公開第2018/0060860(US,A1)
【文献】中国特許出願公開第107358420(CN,A)
【文献】特開2004-118590(JP,A)
【文献】特表2019-508951(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
トークン残高を有するそれぞれのユーザブロックチェーンアカウントを備える取引システムにおいて、複数のユーザによる同時ブロックチェーン取引を容易にするための方法であって、
ブロックチェーンネットワークにおいてトークン残高を有するアグリゲータアカウントを提供し、
前記アグリゲータアカウントの複数の子アカウントを生成し、
前記ブロックチェーンネットワークにおいて前記アグリゲータアカウントから前記複数の子アカウントにトークンを転送するために複数のトップアップ取引を定期的に開始し、
前記ブロックチェーンネットワークにおいて前記複数の子アカウントから前記ユーザブロックチェーンアカウントにトークンを転送するために複数のユーザトップアップ取引を開始することで前記複数のユーザのそれぞれのトークン残高を同時に増加させることを特徴とする方法。
【請求項2】
前記子アカウントは、前記取引システムの負荷に応じて生成されることを特徴とする請求項1記載の方法。
【請求項3】
1つ以上の選択基準に従って、前記ユーザトップアップ取引のための子アカウントを選択することを特徴とする請求項1又は2記載の方法。
【請求項4】
前記1つ以上の選択基準は、ラウンドロビンの選択基準、最長未使用時間(LRU方式)による子アカウントの選択、又は、最も高い残高を有する子アカウントの選択を含むことを特徴とする請求項3記載の方法。
【請求項5】
前記方法は、前記ユーザの各々によって開始された取引に署名するための秘密鍵を保管する鍵保管庫から隔離して前記ユーザのユーザカウントデータを格納する取引管理装置において、少なくとも部分的に実行されることを特徴とする請求項1から4のいずれか1項に記載の方法。
【請求項6】
トークン残高を有するそれぞれのユーザブロックチェーンアカウントを備える取引システムにおいて、複数のユーザによる同時ブロックチェーン取引を容易にするための取引管理装置であって、
前記取引管理装置は、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサと通信するコンピュータ読み取り可能な記憶媒体とを備え、前記少なくとも1つのプロセッサに、
ブロックチェーンネットワークにおいてトークン残高を有するアグリゲータアカウントを生成し、
前記アグリゲータアカウントの複数の子アカウントを生成し、
前記ブロックチェーンネットワークにおいて前記アグリゲータアカウントから前記複数の子アカウントにトークンを転送するために複数のトップアップ取引を定期的に開始し、
前記ブロックチェーンネットワークにおいて前記複数の子アカウントから前記ユーザブロックチェーンアカウントにトークンを転送するために複数のユーザトップアップ取引を開始することで前記複数のユーザのそれぞれのトークン残高を同時に増加させる命令が前記コンピュータ読み取り可能な記憶媒体に格納されていることを特徴とする取引管理装置。
【請求項7】
前記子アカウントは、前記取引システムの負荷に応じて生成されることを特徴とする請求項6記載の取引管理装置。
【請求項8】
前記命令は、さらに、前記少なくとも1つのプロセッサに、1つ以上の選択基準に従って、前記ユーザトップアップ取引のための子アカウントを選択させることを特徴とする請求項6又は7記載の取引管理装置。
【請求項9】
前記1つ以上の選択基準は、ラウンドロビンの選択基準、最長未使用時間(LRU方式)による子アカウントの選択、又は、最も高い残高を有する子アカウントの選択を含むことを特徴とする請求項8記載の取引管理装置。
【請求項10】
前記ユーザのユーザカウントデータを格納するユーザデータベースと、前記ユーザの各々によって開始された取引に署名するための秘密鍵を保管する鍵保管庫と、をさらに備え、
前記ユーザデータベースは、前記鍵保管庫から隔離されていることを特徴とする請求項6から9のいずれか1項に記載の取引管理装置。
【請求項11】
少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに請求項1から5のいずれか1項に記載の方法を実行させるコンピュータ読み取り可能な命令を格納した1つ以上の非一時的なコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ブロックチェーンベースの取引システムにおける同時取引を容易にするための方法、取引管理装置及びコンピュータ読み取り可能な媒体に関するものである。
【背景技術】
【0002】
ブロックチェーンは、デジタル資産の所有権を分散型台帳で追跡するための有効な手段を提供するものである。ブロックチェーンのデータ構造は、一般的に、暗号技術を用いてリンクされ、保護されたレコード(又は「ブロック」)のリストとして実装される。各ブロックは、そのブロックを定義する記録データに加えて、前のブロックの暗号ハッシュを含んでいる。ブロックチェーン構造の管理では、新しいブロックの生成と検証を行い、新しく生成されたブロックを既存のブロックのチェーンに追加することで、データを検証可能且つ永続的に記録する。
【0003】
ブロックチェーンは、その特性から、当事者間で行われた資産の交換を示す取引を記録するのに特に適している。取引は、データ構造のそれぞれのブロック内に一括して保存されるため、永続的且つ容易にアクセス可能な取引行動の記録を提供する。
【0004】
ブロックチェーン構造の安全性、ひいては取引を記録するためのメカニズムとしての適合性は、データ構造を維持・更新するシステムの分散化された性質に依拠するものである。具体的には、ブロックチェーン取引処理システムは、データ構造のコピーを保持するように構成された地理的に分散されたコンピューティングデバイスの形をした複数のノードを含み、ブロック生成と検証のプロセスを分散して実行することで構造を修正する。
【0005】
従来のブロックチェーン取引処理システムは、要求者により発行される取引のブロックやセットを完全に順序付けすることで、ビザンチン・フォールト・トレラント性の複製状態マシン(RSM)の実現を目指している。具体的には、取引データを含む新しいブロックを生成し、新しく生成されたそれぞれのブロックをチェーン構造に追加して取引を承認(又は拒否)する(又はしない)決定プロセス(ブロックを「決定」するプロセス)によって、ブロックへの取引の総合的な順序付けを実現する。ブロックチェーンの構造が分散型であるため、取引処理には、システムのノード間でコンセンサスを得て、新しいブロックの形式と構造(どの取引データを含めるか)を決定する必要がある。パーミッションレス・ブロックチェーンでは、システムのどのノードも新しい取引ブロックの決定者となることができるが、パーミッション付きシステムでは、決定権はあらかじめ決められた一定のノードに限定される。また、取引データ自体も、承認(ブロック内でチェーンに追加すること)する前に、チェーンの整合性が保たれるように、正しいかどうかを検証する必要がある。
【0006】
ブロックチェーンベースの取引システムの主要な特徴は、二重支出の防止である。例えば、Ethereum(イーサリアム)のネットワークでは、それぞれのアカウントには、アカウント・ナンス(取引ナンスとも呼ばれる)が関連付けられている。これは、アカウントが取引を要求する度に増加されるカウンターである。アカウントによって発行された取引要求は、ユニークで連続したものでない限り、ネットワーク内のノードによって検証されない。つまり、ナンスがNである取引要求は、N-1までのナンスを持つすべての要求が検証されるまで検証されない。
【0007】
ブロックチェーンの特定のアプリケーションでは、参加者が非暗号通貨で相互に取引できるようにすることが望まれるが、安全性と整合性の目的でブロックチェーンを使用している。このような場合、特にEthereum(イーサリアム)ベースのネットワークでは、従来の決済システムやロイヤルティ・報酬システムをブロックチェーンと連携させる際に問題が生じることがある。特に、取引速度は、典型的に遅すぎるため、POS(ポイントオブセールス)のアプリケーションでは満足できない。
【0008】
したがって、ブロックチェーンネットワーク上での同時取引の容易化を支援することができる方法及びシステムを提供することが望まれる。
【発明の概要】
【0009】
本明細書には、トークン残高を有するそれぞれのユーザブロックチェーンアカウントを備える取引システムにおいて、複数のユーザによる同時ブロックチェーン取引を容易にするための方法であって、ブロックチェーンネットワークにおいてトークン残高を有するアグリゲータアカウントを提供し、前記アグリゲータアカウントの複数の子アカウントを生成し、前記ブロックチェーンネットワークにおいて前記アグリゲータアカウントから前記複数の子アカウントにトークンを転送するために複数のトップアップ取引を定期的に開始し、前記ブロックチェーンネットワークにおいて前記複数の子アカウントから前記ユーザブロックチェーンアカウントにトークンを転送するために複数のユーザトップアップ取引を開始することで前記複数のユーザのそれぞれのトークン残高を同時に増加させる方法が開示されている。
【0010】
前記子アカウントは、前記取引システムの負荷に応じて生成するようにしてもよい。
【0011】
前記方法は、1つ以上の選択基準に従って、前記ユーザトップアップ取引のための子アカウントを選択するようにしてもよい。
【0012】
前記1つ以上の選択基準は、ラウンドロビンの選択基準、最近使用された子アカウントの選択、又は、最も高い残高を有する子アカウントの選択を含んでいてもよい。
【0013】
この方法は、ユーザの各々によって開始された取引に署名するための秘密鍵を保管する鍵保管庫から隔離してユーザのユーザアカウントデータを格納する取引管理装置で少なくとも部分的に実行されるようにするとよい。
【0014】
また、本明細書には、トークン残高を有するそれぞれのユーザブロックチェーンアカウントを備える取引システムにおいて、複数のユーザによる同時ブロックチェーン取引を容易にするための取引管理装置であって、前記取引管理装置は、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサと通信するコンピュータ読み取り可能な記憶媒体とを備え、前記少なくとも1つのプロセッサに、ブロックチェーンネットワークにおいてトークン残高を有するアグリゲータアカウントを生成し、前記アグリゲータアカウントの複数の子アカウントを生成し、前記ブロックチェーンネットワークにおいて前記アグリゲータアカウントから前記複数の子アカウントにトークンを転送するために複数のトップアップ取引を定期的に開始し、前記ブロックチェーンネットワークにおいて前記複数の子アカウントから前記ユーザブロックチェーンアカウントにトークンを転送するために複数のユーザトップアップ取引を開始することで前記複数のユーザのそれぞれのトークン残高を同時に増加させる命令が前記コンピュータ読み取り可能な記憶媒体に格納されていることを特徴とする取引管理装置が開示されている。
【0015】
前記コンピュータ読み取り可能な記憶媒体は、前記少なくとも1つのプロセッサに、前記取引システムの負荷に応じて前記子アカウントを生成する処理を実行させる命令を記憶するようにするとよい。
【0016】
前記命令は、さらに、前記少なくとも1つのプロセッサに、1つ以上の選択基準に従って前記ユーザトップアップ取引のための子アカウントを選択させるようにするとよい。前記1つ以上の選択基準は、ラウンドロビンの選択基準、最近使用された子アカウントの選択、又は、最も高い残高を有する子アカウントの選択を含むようにするとよい。
【0017】
前記取引管理装置は、前記ユーザのユーザカウントデータを格納するユーザデータベースと、前記ユーザの各々によって開始された取引に署名するための秘密鍵を保管する鍵保管庫と、をさらに備え、前記ユーザデータベースは、前記鍵保管庫から隔離されているとよい。
【0018】
また、本明細書には、少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに本明細書で開示されている方法を実行させるコンピュータ読み取り可能な命令を格納した1つ以上の非一時的なコンピュータ読み取り可能な媒体が開示されている。
【図面の簡単な説明】
【0019】
本教示に従って、同時ブロックチェーン取引を容易にするための方法及びシステムのいくつかの実施形態について、非限定的な例示のみによって、添付図面を参照しながら説明する。
【0020】
【
図1】
図1は、ブロックチェーンベースの取引管理システムのブロック図である。
【0021】
【
図2】
図2は、
図1のシステムにおけるアカウント生成処理を模式的に示す図である。
【0022】
【
図3】
図3は、同時進行のブロックチェーン取引を容易にするための例示的な処理フロー図である。
【0023】
【
図4】
図4は、アカウントトップアップ処理のフロー図である。
【0024】
【0025】
【
図6】
図6は、本開示の実施形態で使用するのに適したユーザモバイルコンピューティングデバイスのブロック図である。
【0026】
【
図7】
図7は、特定の実施形態に従った取引管理コンピューティングデバイスのブロック図である。
【0027】
図1を参照すると、インターネットなどの通信システム110を介して複数のユーザ100、101と通信している取引管理装置20を含む取引システム10が示されている。一部のユーザ100は、物理的な店舗又はオンライン環境のいずれかで、商品又はサービスを販売のために提供することができる業者である。他のユーザ101は、業者100から商品やサービスを購入しようとする消費者であり、また、状況によっては、他のユーザ101に通貨を送金したり、他のユーザ101から通貨を受け取ったりする。
【0028】
ユーザ100、101は、それぞれ取引管理装置20によって保持されるアカウントを有しており、アカウントデータは、ユーザデータベース102に格納されるようにしてもよい。ユーザデータベース102は、取引管理装置20にローカル保存されてもよく、リモートでアクセス可能なデータベースであってもよい。
【0029】
取引管理装置20は、1つ以上のロイヤルティシステム104とも通信している。それぞれのロイヤルティシステム104は、ユーザに代わってロイヤルティプログラムアカウントを保持し、ユーザは、業者100などとの間で行われた取引に応じて、アカウントにポイント合計を蓄積することができる。ポイントの加算率は、ロイヤルティプログラムによって異なる場合がある。したがって、取引システム10は、消費者ユーザ101がユーザデータベース102の自分のアカウントにロイヤルティプログラム識別子を関連付け、自分のロイヤルティプログラムアカウントから蓄積されたポイントを、消費者ユーザ101が以前に登録されていない業者を含む業者100との取引に使用できる共通トークンに移行することを可能にする交換コンポーネント105を含んでいてもよい。共通トークンは、取引システム10における交換媒体を表すデータオブジェクトである。
【0030】
取引管理装置20に登録されているそれぞれの消費者ユーザ101は、自分のアカウントに関連付けられたデジタルウォレットを持っており、業者100との取引で使用するトークンを格納している。デジタルウォレットは、ウェブブラウザ又はスマートフォンや他のポータブルコンピューティングデバイス12上で実行されるアプリ618(
図6のApp)などの専用アプリケーションを介してアクセスすることができる。業者100との取引に加えて、デジタルウォレットには、消費者ユーザ101がロイヤルティプログラムポイントやフィアット通貨などの様々な手段でトークンアカウントの残高を補充するための機能が含まれていてもよい。ロイヤルティプログラムポイントがトップアップに使用される場合、交換コンポーネント105によって、現行の為替レートに応じてまずトークン価値に変換される。
【0031】
アカウントのトップアップやその他の取引を含む取引システム10における価値の転送は、ブロックチェーンネットワーク107を介して行われる。そのために、取引管理装置20は、消費者ユーザ101及び業者100の秘密鍵を保管する鍵保管庫103も含む。秘密鍵は、ブロックチェーンネットワーク107を利用した取引に署名するために使用されるが、ユーザ100、101が直接アクセスすることはない。その代わり、ユーザ100、101は、例えば、アカウント識別子と対応するパスワードを介して、取引管理装置20の自分のアカウントにサインインする。例えば、ロイヤルティシステム104のユーザ101は、ロイヤルティアカウント識別子及びパスワードを用いてロイヤルティシステム104に対して自らを認証することにより、取引セッションを作成することができる。次に、ロイヤルティシステム104は、取引管理装置20にアクセストークンを提供し、これにより、取引管理装置20は、ユーザのセッションがアクティブである間、取引で使用するために鍵保管庫103内のユーザ101の鍵にアクセスし、ユーザ101のウォレットの詳細を取得することができる。
【0032】
好適には、ユーザデータベース102とは別に鍵保管庫103で保持するのでデバイス上でユーザの秘密鍵の保存を回避することにより、取引システム10は、悪い行為者がユーザの秘密鍵を取得することに起因して発生し得るユーザの損失を回避することができる。
【0033】
ブロックチェーン107は、許可されたEthereum(イーサリアム)ベースのブロックチェーンネットワークのようなプライベートブロックチェーンであってもよい。あるいは、パブリックブロックチェーンであってもよい。
【0034】
取引管理装置20は、一方で業者100とユーザ101の間、他方ではブロックチェーンネットワーク107の間の中間層として機能し、業者100とユーザ101からの入力を受け取り、その入力を適切な形式でブロックチェーンネットワーク107に提出できる生取引(raw transactions)に変換する。
【0035】
ここで
図2を参照すると、取引システム10におけるブロックチェーンアカウントの例示的な階層が示されている。アカウントは、アグリゲータアカウント201を含むシステムアカウント200と、アグリゲータアカウント201によって供給される一連のサブアカウント(子アカウント)202とからなる。
図2には、3つのサブアカウントが示されているが、サブアカウントの数は2つと少なくてもよいし、例えば取引システム10内のユーザ数に比例して増加するなど、3つ以上であってもよい。
【0036】
アグリゲータアカウント201は、典型的には取引システム10の開始時に1回のプロセスで鋳造されたトークンを保持し(ただし、ユーザ数及び/又はロイヤルティプログラムの数が一定の閾値を超えて増加した場合には、追加のトークンが鋳造されることがある)、サブアカウント202がユーザアカウント210と取引できるように、トークンをサブアカウント202.1、202.2、202.3(以下、簡略化のためにまとめて202と表示する)に分配する。特に、ユーザアカウント210は、ロイヤルティポイント又は不換通貨を合意された交換レートでトークンと交換することにより、サブアカウント202の1つからトークンを購入することができる。各ユーザアカウント210は、そのような交換によってトークンがトップアップされるウォレットに関連付けられている。システムアカウント200及びユーザアカウント210のそれぞれは、ブロックチェーンネットワーク107上のアカウントの一意の識別子である40文字の16進法のアドレスを構成してもよい。
【0037】
ウォレットをトップアップするそれぞれの要求は、ユーザアカウント210とサブアカウント202の1つとの間でのブロックチェーン取引である。すなわち、ウォレットをトップアップするというユーザ要求は、取引管理装置20に要求として提出され、サブアカウント202の1つからユーザアカウント210にトークンを転送する取引要求を形成し、その取引要求をブロックチェーンネットワーク107に送信する。
【0038】
原理的には、ユーザアカウント210がアグリゲータアカウント201から直接トークンを購入することは可能であるが、同時にウォレットを補充しようとするユーザが多数いる場合、例えば、二重支出を防止するために取引ナンスを使用するブロックチェーンネットワーク107の場合には問題が生じる可能性がある。このような場合、ブロックチェーンネットワーク107に複数の同時取引が送信されると、競合状態(レースコンディション)が発生する可能性が高くなる。トークンを複数のサブアカウント202に分配し、そのサブアカウント202が、ロイヤルティシステム104とブロックチェーンネットワーク107上のユーザアカウント210との間の仲介者として機能することで、競合状態を少なくなるか又は解消される。さらに、複数のトップアップ取引が並行して実行される可能性があるため、ユーザ101の応答時間が大幅に改善される。
【0039】
ユーザアカウント210に関連付けられたウォレットにトークンがロードされると、ユーザは、サブアカウント202のいずれかを経由することなく、取引管理装置20に保持されたアカウントを有する他のユーザと直接取引を行うことができる。例えば、アカウント210.1を保有する消費者ユーザ101は、転送コンポーネント106を経由するなどして、取引管理装置20に取引要求を提出することにより、アカウント210.3を保有する業者100にトークンを送信することができる。転送コンポーネント106は、鍵保管庫103から消費者ユーザ101の秘密鍵を取得し、消費者ユーザ101のアカウント識別子、業者100のアカウント識別子及び転送するトークンの数を含む取引要求を生成するようにしてもよい。取引要求は、消費者ユーザ101の秘密鍵によって署名され、検証のためにブロックチェーンネットワーク107に提出される。
【0040】
ここで
図3を参照すると、同時進行のブロックチェーン取引を容易にするためのプロセス300がより詳細に示されている。
【0041】
プロセス300は、ブロック310において、取引管理装置20がアグリゲータアカウント201を生成することによって開始する。取引管理装置20は、アグリゲータアカウント201のオフチェーン識別子を含むアグリゲータアカウント201のためのエントリーをユーザデータベース102に作成してもよく、ブロックチェーンネットワーク107に1以上のAPI呼び出しを行ってブロックチェーンアカウント識別子及び秘密鍵を生成するようにしてもよい。ブロックチェーンアカウント識別子及び秘密鍵は、鍵保管庫103に保管するようにするとよい。取引要求を処理するために秘密鍵とアグリゲータアカウント201との関連付けを可能にするため、ブロックチェーンアカウント識別子は、ユーザデータベース102に格納されていてもよく、オフチェーン識別子は、ブロックチェーンアカウント識別子と関連して鍵保管庫103に保管するようにしてもよい。
【0042】
プロセス300は、ブロック320において、ブロックチェーンネットワーク107にミントAPIコール(minting API call)を行うことでトークンを鋳造し、アグリゲータアカウント201は、鋳造されたトークンが割り当てられる対象アカウントとなる。
【0043】
ブロック330では、複数のサブアカウント202が生成される。アグリゲータアカウント201については、オフチェーンアカウント識別子がユーザデータベース102に格納され、ブロックチェーンアカウント識別子及び秘密鍵がブロックチェーンネットワーク107への1以上のAPIコールを介して生成される。サブアカウントのブロックチェーンアカウント識別子と秘密鍵は、鍵保管庫103に保管される。また、サブアカウントブロックチェーンアカウント識別子は、ユーザデータベース102に格納されてもよく、或いはオフチェーンサブアカウント識別子は、サブアカウントブロックチェーンアカウント識別子と関連付けて鍵保管庫に格納するようにしてもよい。これは、生成されるサブアカウント毎に行われる。生成されるサブアカウントの数は、例えば、取引システム10に最初に登録されたユーザの数であり、したがって、所望される同時取引の数に依存してもよい。
【0044】
任意で、サブアカウント202の生成中に、初期トップアップ処理を実行して、アグリゲータアカウント201のトークンの少なくとも一部をサブアカウントに転送することができる。例えば、アグリゲータアカウント内のトークン総数の10%などの一定割合をサブアカウントに均等に分配し、各サブアカウントが初期トップアップ量を受け取るようにしてもよい。初期トップアップ処理は、一連のブロックチェーン取引を含み、それぞれの取引要求は、アグリゲータアカウント201のブロックチェーン識別子、それぞれのサブアカウント202のブロックチェーン識別子及び転送するトークンの量(これは初期トップアップ量である)を含み、アグリゲータアカウント201の秘密鍵によって署名される。
【0045】
ブロック340において、取引管理装置20は、システム負荷をチェックし、負荷(例えば、所定の時間ウィンドウ内で発生した同時取引の数)に基づいて、さらに子アカウントが必要かどうかを判断する(ブロック350)。さらに子アカウントが必要な場合、プロセスは、ブロック330に戻ってサブアカウントを生成する。そうでなければ、プロセス300は、ブロック360へ進む。
【0046】
ブロック360において、取引管理装置20は、サブアカウント202のトークン残高を増加する必要があるかどうかを決定する。この決定は、例えば、トップアップが定期的(例えば、1日1回)にトリガされるような時間ベースのものであってもよい。或いは、サブアカウント202の1つ以上が一定の残高を下回った時点でトップアップがトリガされるようにしてもよい。
【0047】
最初のトップアップ処理がブロック330の一部として実行されなかった場合、トークンの残高はゼロとなり、したがって、ブロック360において、取引管理装置20は、トップアップ処理が必要であるということを結果として判断することができる。
【0048】
1つ以上のサブアカウントのトップアップ処理が必要な場合、ブロック370において、取引管理装置20は、1つ以上のブロックチェーン取引を実行してアグリゲータアカウント201から1つ以上のサブアカウントにトークンを分配する。例えば、取引管理装置20は、サブアカウント毎に初期トップアップ額とサブアカウントの現在の残高との差分であるトップアップ額を決定し、ブロックチェーンネットワーク107において、トップアップ額をアグリゲータアカウントからそれぞれのサブアカウントに送金する取引を要求するようにしてもよい。
【0049】
好適には、サブアカウント202とユーザアカウント210との間における複数の転送を許可するには、サブアカウント202を適切なバランスに保つため散発的にのみ実施される必要があるから、アグリゲータアカウント201とサブアカウント202との間では、比較的に少数の取引が要求される。したがって、トップアップ処理は、単一のブロックチェーンアカウントが複数の取引要求を同時に出そうとすることに起因して発生する可能性のある障害(ボトルネック)を回避する。
【0050】
次に
図4を見ると、取引管理装置20によって、例えば転送コンポーネント106により任意に交換コンポーネント105と連携して実行されるユーザアカウントのトップアップ処理400の一例が示されている。
【0051】
ブロック410において、取引管理装置20は、ユーザ101から、例えば、ユーザのモバイルデバイス12上で実行されるウォレットアプリケーションからトップアップ要求を受信する。この要求は、不換通貨の金額及び/又はそれぞれのロイヤルティプログラムからの1以上のロイヤルティポイントの金額を含んでいてもよい。交換コンポーネント105は、適切な為替レートに従って、フィアット通貨及び/又はロイヤルティポイントの金額をトークン値に変換してもよい。例えば、第1のロイヤルティシステムからの1つのロイヤルティポイントは、1トークンに相当し、第2のロイヤルティシステムからの1つのロイヤルティポイントは、0.5トークンに相当するものである。次に、要求されたトークン総量は、例えばウォレットアプリケーションによって取引管理装置20に提供される可能性のあるユーザの識別子と共に、転送コンポーネント106に渡される。
【0052】
ブロック420において、転送コンポーネント106は、ユーザ識別子及び要求されたトークン総量を受け取り、ユーザのブロックチェーンアカウント210にトークンをトップアップするために使用されるサブアカウントをサブアカウント202から選択する。例えば、転送コンポーネント106は、サブアカウントをランダムに選択しても、又は、ラウンドロビンベースで選択してもよい。或いは、最近使用されたサブアカウントを選択するか、現在のトークン残高が最も多いサブアカウントを選択するようにしてもよい。また、これらの選択方法を組み合わせて使用してもよい。
【0053】
サブアカウントが選択されると、転送コンポーネント106は、要求されたトークン総量がサブアカウントの現在の残高を超えていないことをチェックするようにするとよい。そうでない場合、転送コンポーネント106は、ブロック430において、サブアカウントのブロックチェーンアカウント識別子、ユーザのブロックチェーンアカウント識別子(例えば、ユーザデータベース102又は鍵保管庫103から取得される)、及び要求されたトークン総量を含む取引要求を形成するようにし、選択されたサブアカウントの秘密鍵で取引要求に署名してもよい。署名された取引要求は、ブロックチェーンネットワーク107に提出される。
【0054】
取引要求の検証が成功した場合、取引が成功したことを示す検証応答メッセージが転送コンポーネント106から交換コンポーネント105に送信される。これにより、交換コンポーネント105は、トップアップ要求の一部としてユーザによって提出された金額によってアカウント残高(例えば、銀行口座残高及び/又はロイヤルティシステムポイント残高)を減少するよう促される。その後、ユーザのアカウント残高は、要求されたトークン総量だけ増加し、サブアカウントの残高は同じ額だけ減少する。
【0055】
次に
図5を見ると、取引処理500の一例が示されている。
【0056】
ブロック510において、例えばウォレットアプリケーションを実行しているユーザデバイス12が、業者識別子、トークンによる取引額及びオプションとして製品情報などの他の情報を取得するために、業者QRコード(登録商標)を(カメラ622を使用して)スキャンする。業者QRコード(登録商標)は、例えば、決済端末の画面上に表示される。ある実施例では、業者QRコード(登録商標)は、取引額をエンコード(符号化)せずに業者識別子のみを含み、ユーザは、デバイス12で取引額をマニュアル入力することができる。また、ある実施例では、業者及び取引情報は、代わりに、NFCタグ又は他のコンピュータが読取可能なコンポーネントのように、代替形態でエンコードされるようにしてもよい。
【0057】
任意であるが、ブロック515において、ウォレットアプリケーションは、例えば、確認ボタンをクリックするか、又は、ユーザ識別データ(デバイス12のPIN又は指紋などのバイオメトリック情報など)を入力することで、ユーザに取引の確認を要求することができる。
【0058】
ブロック520において、ウォレットアプリケーションは、少なくともユーザ識別子、業者識別子及び取引額を含む取引要求メッセージを形成する。それから、ユーザデバイス12は、取引要求メッセージを取引管理装置20へ送信する。
【0059】
ブロック530において、取引管理装置20は、取引要求メッセージを受信し、ブロック535において、取引の詳細を解析して(例えば、転送コンポーネント106を使用して)、ユーザ識別子、業者識別子及び取引量を取得する。任意で、取引管理装置20は、ユーザ識別子及び業者識別子が正しい形式であり、ユーザデータベース102に登録されていることを確認するなど、取引の詳細について検証ステップを実行するようにしてもよい。
【0060】
ブロック540において、取引管理装置20は、ブロックチェーン取引要求を生成する。ユーザデータベース102のデータベースルックアップにより、ユーザ識別子がユーザのブロックチェーンアカウント識別子にマッピングされ、業者識別子が業者のブロックチェーンアカウント識別子にマッピングされる。それぞれのブロックチェーンアカウント識別子と取引額を含む取引要求メッセージが形成され、(鍵保管庫103から取引管理装置20によって取得された)ユーザの秘密鍵で署名される。次に、ブロック545において、署名された取引要求がブロックチェーンネットワーク107に提出される。ブロックチェーンネットワーク107は、送信者の公開鍵を用いて署名を検証することにより、署名された取引要求を検証する。
【0061】
ブロック550において、取引管理装置20は、取引が検証されたという確認を受信し、その確認をユーザデバイス12へ送信する。ユーザデバイス12は、ブロック560で確認を受信し、ブロック565でそれを表示する。また、ユーザデバイス12は、更新された口座の残高を表示するようにしてもよい。
【0062】
「モバイルコンピューティングデバイス12」
図6は、本発明の実施形態が適用される例示的なユーザデバイス12を示すブロック図である。ユーザデバイス12は、スマートフォン、パーソナルデータアシスタント(PDA)、パームトップコンピュータ、マルチメディアインターネット対応の携帯電話などのモバイルコンピューティングデバイスであってもよい。説明を簡単にするため、以下では、非限定的な例として、Apple
TM, Inc.製のiPhone
TM、又は、LG
TM、HTC
TM、Samsung
TM製のモバイルデバイスを参照して、ユーザデバイス12を説明する。
【0063】
図示されているように、ユーザデバイス12は、バス606を介して電子通信している以下のコンポーネントを含むものである。
ディスプレイ602
不揮発性(非一過性)メモリ604
ランダムアクセスメモリ(「RAM」)608
N処理コンポーネント610
N個のトランシーバを含むトランシーバコンポーネント612
ユーザコントロール614
セキュアエレメント(SE)616
NFCコントローラ620
カメラ622
【0064】
図6に示されるコンポーネントは、物理的なコンポーネントを表すものであるが、
図6は、ハードウェア図であることを意図するものではない。したがって、
図6に示される構成要素の多くは、共通の構成要素によって実現してもよいし、追加の物理的構成要素に分散されていてもよい。さらに、
図6を参照して説明した機能コンポーネントを実装するために、他の既存の物理コンポーネント、まだ開発されていない物理コンポーネント及びアーキテクチャを利用することも可能である。
【0065】
ディスプレイ602は、一般的に、コンテンツをユーザに提示するように動作し、様々なディスプレイ(例えば、CRT、LCD、FIDMI、マイクロプロジェクタ、OLEDディスプレイ)のいずれかによって実現されてもよい。
【0066】
一般的に、不揮発性データストレージ604(不揮発性メモリとも呼ばれる)は、データ及び実行可能コードを格納する(例えば、永続的に格納する)ように機能する。
【0067】
例えば、ある実施形態では、不揮発性メモリ604は、ブートローダコード、モデムソフトウェア、オペレーティングシステムコード、ファイルシステムコード、及び実装コンポーネントを容易にするコードを含むことは当業者によく知られているが、これらは簡略化のために描かれておらず、説明もされていない。
【0068】
多くの実装において、不揮発性メモリ604は、フラッシュメモリ(例えば、NAND又はONENANDメモリ)によって実現されるが、他のメモリタイプも同様に利用され得ることが確実に意図されている。不揮発性メモリ604からコードを実行することも可能であるが、不揮発性メモリ604内の実行可能なコードは、典型的には、RAM608にロードされ、1つ以上のN処理コンポーネント610によって実行される。
【0069】
RAM608に関連するN処理コンポーネント610は、一般的に、不揮発性メモリ604に格納された命令を実行するように動作する。当業者であれば理解できるように、N処理コンポーネント610は、ビデオプロセッサ、モデムプロセッサ、DSP、グラフィック処理ユニット(GPU)、及び他の処理コンポーネントを含んでいてもよい。
【0070】
トランシーバコンポーネント612は、N個のトランシーバチェーンを含み、これらは、無線ネットワークを介して外部デバイスと通信するために使用されてもよい。N個のトランシーバチェーンのそれぞれは、特定の通信方式に関連するトランシーバを表してもよい。例えば、各トランシーバは、ローカルエリアネットワーク、セルラーネットワーク(例えば、CDMAネットワーク、GPRSネットワーク、UMTSネットワーク)、及び他のタイプの通信ネットワークに固有のプロトコルに対応してもよい。
【0071】
ユーザデバイス12は、モバイルアプリケーションを実行することができる。デジタルウォレットアプリケーション618は、モバイルアプリケーション、Webページアプリケーション、又はコンピュータアプリケーションであり得る。デジタルウォレットアプリケーション618は、モバイルコンピュータデバイス12、コンピューティングデバイス20、又はスマートウォッチなどのウェアラブルデバイスのようなコンピューティングデバイスによってアクセスされ得る。デジタルウォレットアプリケーション618は、セキュアエレメント616上に常駐するものとして示されているが、代わりにメモリ604上に格納されていてもよいことが理解される。
【0072】
図6は単に例示されたものにすぎず、1以上の例示的な実施形態において、本明細書に記載された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実装されてもよいものと認識されるべきものである。ソフトウェアで実装される場合、その機能は、非一過性のコンピュータ読み取り可能な媒体604にコード化された1つ以上の命令やコードとして送信又は記憶されていてもよい。非一過性のコンピュータ読み取り可能な媒体604は、コンピュータ記憶媒体と、コンピュータプログラムのある場所から別の場所への転送を容易にする任意の媒体を含む通信媒体と、の両方を含むものである。記憶媒体は、コンピュータによってアクセス可能な任意の利用可能な媒体であってもよい。
【0073】
「取引管理装置20」
図7は、取引システム10の取引管理装置を実現することができる例示的なコンピューティングデバイス20を示すものである。ある実施形態では、取引管理装置は、複数のこのようなコンピューティングデバイス20で構成されていてもよい。
【0074】
コンピューティングデバイス20のコンポーネントは、様々な方法で構成することができる。構成要素は、標準的なコンピュータサーバハードウェア上で実行されるソフトウェアによって完全に実装することができ、このハードウェアは、1つのハードウェアユニット又は様々な場所に分散した異なるコンピュータハードウェアユニットで構成され、これらはネットワークを介して通信することができる。また、構成要素又はその一部は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイによって実装することもできる。
【0075】
図7に示される例において、コンピューティングデバイス20は、32ビット又は64ビットのインテルアーキテクチャに基づく市販のサーバコンピュータシステムであり、コンピューティングデバイス20によって実行される処理及び/又は方法は、コンピューティングデバイス20に関連付けられた不揮発性(例えば、ハードディスク)コンピュータ読み取り取可能な記憶媒体724に格納された1以上のソフトウェアコンポーネント又はソフトウェアモジュール722のプログラミング命令の形で実装される。
【0076】
ソフトウェアモジュール722の少なくとも一部は、代替的に、特定用途向け集積回路(ASIC)及び/又はフィールドプログラマブルゲートアレイ(FPGA)などの1つ以上の専用ハードウェアコンポーネントとして実装され得る。
【0077】
コンピューティングデバイス20は、バス735によってすべて相互に接続された以下の標準的な商業的に入手可能なコンピュータコンポーネントの少なくとも1つ又は複数を含む。
ランダムアクセスメモリ(RAM)726
少なくとも1つのコンピュータプロセッサ728
外部コンピュータインターフェース730
・ユニバーサル・シリアル・バス(USB)インターフェース730a(そのうちの少なくとも1つは、キーボード、ポインティング・デバイス(例えば、マウス732又はタッチパッド)などの1つ以上のユーザー・インターフェース・デバイスに接続されている)
・コンピューティングデバイス20をインターネットなどのデータ通信ネットワークに接続するネットワークインターフェースコネクタ(NIC)730b
・LCD(Liquid-Crystal Display)パネル装置などの表示装置734に接続されるディスプレイアダプタ730c
【0078】
コンピューティングデバイス20は、以下のような複数の標準的なソフトウェアモジュールを含む。
・オペレーティングシステム(O/S)736(例えば、Linux(登録商標)又はMicrosoft Windows)
・構造化問い合わせ言語(SQL)モジュール742(例えば、http://www.mysql.com から入手可能なMySQL)で、SQLデータベース102にデータを保存したり、そこからデータを取得/アクセスしたりすることができる。
【0079】
また、コンピューティングデバイス20は、ブロックチェーンネットワーク107を利用する取引に署名するために使用されるユーザ101(及び業者100)の秘密鍵を格納する鍵保管庫103を含む。鍵保管庫103は、鍵保管庫103内のデータにアクセスするために別のアクセス認証情報のセットが必要となるように、ユーザデータベース102から隔離されている。
【0080】
好適に、ユーザデータベース102は、コンピュータ読み取り取可能なデータ記憶媒体724の一部を形成する。或いは、ユーザデータベース102は、
図7に示す取引管理装置20から隔離された場所に配置される。
【0081】
ソフトウェアモジュール722におけるモジュールとコンポーネントとの境界は例示的なものであり、代替的な実施形態では、モジュールを統合したり、モジュール機能を別の方法で分解したりすることも可能である。例えば、本明細書で説明したモジュールは、複数のコンピュータプロセスとして、任意に複数のコンピュータ上で実行されるようにサブモジュールに分解してもよい。さらに、代替的な実施形態では、特定のモジュール又はサブモジュールの複数のインスタンスを組み合わせてもよい。さらに、本発明に従って、動作を組み合わせたり、動作の機能を追加の動作に分散させたりしてもよい。或いは、このような動作は、複合命令セットコンピュータ(CISC)のマイクロコード、プログラマブルデバイス又は消去可能/プログラマブルデバイスにプログラムされたファームウェア、フィールドプログラマブルゲートアレイ(FPGA)の構成、ゲートアレイ又はフルカスタム特定用途向け集積回路(ASIC)の設計など、このような機能を実装する回路の構造で具現化されてもよい。
【0082】
コンピューティングデバイス20のプロセスを示すフロー図におけるそれぞれのブロックは、(ソフトウェアモジュール722の)モジュール又はモジュールの一部によって実行されてもよい。プロセスは、方法を実行するためにコンピュータシステムを構成するための、非一過性のコンピュータ読み取り可能な媒体及び/又はコンピュータ読み取り可能な媒体に具現化されてもよい。ソフトウェアモジュールは、モジュールの機能を実行するようにコンピュータシステムを構成するために、コンピュータシステムのメモリ内に格納及び/又はコンピュータシステムのメモリに送信されてもよい。ソフトウェアモジュール722は、例えば、交換コンポーネント105及び転送コンポーネント106を構成するようにしてもよい。また、ソフトウェアモジュール722は、コンピューティングデバイス20によって実行されるプロセスにおいて、暗号化されたデータを暗号化、復号化及び検証するため、又、鍵保管庫103に格納されたデータにアクセスするための暗号モジュールを構成するようにしてもよい。
【0083】
ある実施形態において、鍵保管庫103は、安全な環境で実行されるプロセスによってのみアクセス可能にしてもよい。例えば、鍵保管庫103は、1以上のプロセッサ728の専用の安全な暗号プロセッサ、又は、1以上のプロセッサ728の信頼された実行環境(TEE)で実行する暗号モジュール又はその一部によってのみアクセス可能であってもよい。
【0084】
コンピューティングデバイス20は、プログラム(特定のアプリケーションプログラムやオペレーティングシステムなど、内部に格納された命令のリスト)に従って情報を規範的に処理し、入出力デバイス730を介して結果として出力情報を生成する。コンピュータプロセスは、通常、実行(動作)中のプログラム又はプログラムの一部、現在のプログラム値、状態情報、及びプロセスの実行を管理するためにオペレーティングシステムによって使用されるリソースを含むものである。親プロセスは、親プロセスの全体的な機能を実行するために、他の子プロセスを生成することができる。親プロセスは、親プロセスの全体的な機能の一部を実行するために子プロセスを特別に生成するため、子プロセス(及び孫プロセスなど)によって実行される機能は、親プロセスによって実行されると説明されることがある。
【0085】
本発明から逸脱することなく種々の修正及び変形がなされ得ることは当業者には明らかであろう。
【0086】
本明細書を通じて、文脈上他に要求されない限り、「comprise(含む、備える、構成する等)」の用語や、「comprises」や「comprising」などの変形は、記載された完全体又はステップ又は完全体のグループ又は複数のステップを含むものであるが、任意の他の完全体やステップや完全体のグループや複数のステップを排除しないことを意味するものと理解される。