以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴は任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
<第1の実施形態>
以下、本実施形態に係る電子通貨管理システムについて説明する。本実施形態に係る電子通貨管理システム1は、管理サーバ10、発行体装置11、運用事業者装置12、および利用者装置13を含む。管理サーバ10、発行体装置11、運用事業者装置12、利用者装置13はネットワークを介して通信可能に接続される。
管理サーバ10は、発行体、運用事業者、および利用者の登録を行う登録処理、発行体または運用事業者からの要求に応じた電子通貨の発行処理、発行体、運用事業者、および利用者のいずれか要求に応じた電子通貨の移転処理を行うための情報処理装置である。管理サーバ10は、運用事業者から発行の要求を受け付け、電子通貨の発行免許を有する発行体から発行の要求に対する承認を受け付けた場合に電子通貨を発行することで、運用事業者および発行体が簡便に電子通貨を発行するサービスを提供する。
発行体装置11は、発行体によって操作されるパソコン、スマートフォン、タブレットなどの情報処理装置である。本実施形態において、発行体とは電子通貨の発行免許を有する銀行などの事業者である。運用事業者装置12は、運用事業者によって操作されるパソコン、スマートフォン、タブレットなどの情報処理装置である。本実施形態において、運用事業者とは、運用事業者の経済圏で利用者に商品またはサービスを提供するために電子通貨の運用を希望する事業者である。本実施形態では、運用事業者は、電子通貨の発行免許を有していないものとして説明を行う。しかしながら、運用事業者が電子通貨の発行免許を有していてもよく、その場合は発行体と運用事業者が同一であってもよい。利用者装置13は、運用事業者の経済圏で、商品またはサービスの提供を受ける対価として電子通貨を支払う利用者(消費者)が操作するパソコン、スマートフォン、タブレットなどの情報処理装置である。
なお、図1の例において、電子通貨管理システム1は、管理サーバ10、発行体装置11、運用事業者装置12、および利用者装置13をそれぞれ1つずつ含むものとして説明を行うが、管理サーバ10、発行体装置11、運用事業者装置12、および利用者装置13の少なくともいずれかが複数存在してもよい。また、本明細書では、発行体、運用事業者、および利用者をユーザと称する。
次に、図2を参照して、管理サーバ10のハードウェア構成の一例について説明する。管理サーバ10は、プロセッサ201、メモリ202、ストレージ203、ネットワークインタフェース(I/F)204、および入出力I/F205を備える。
プロセッサ201は、管理サーバ10の全体を制御する制御部である。プロセッサ201は、ストレージ203に格納されたプログラムまたはオペレーティングシステム(OS)を実行するCPU(Central Processing Unit)、GPU(Graphics Processing Unit)、およびマイクロコントローラの少なくとも何れかを含む。メモリ202は、プロセッサ201のワークメモリとして用いられるDRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)などで構成される。
ストレージ203は、プロセッサ101が実行するプログラム、OS、並びにプログラムによって使用されるデータテーブルおよび設定値の少なくとも何れかを格納するHDD(Hard Disk Drive)、SSD(Solid State Drive)を含む。入出力I/F205は、ユーザ操作を受け付けるためのキーボード、タッチパネル、およびマイクの少なくともいずれかを含む入力機器、ならびにディスプレイ、スピーカー、およびLEDの少なくともいずれかを含む出力機器を含むユーザインタフェースである。なお、本明細書では発行体装置11、運用事業者装置12、および利用者装置13も、管理サーバ10と同様のハードウェア構成であるものとして説明を行う。
また、管理サーバ10のストレージ203は、発行体情報データベース(DB)、運用事業者情報DB、利用者情報DB、電子通貨情報DB、ウォレット情報DB、供託情報DBを格納するものとして説明を行う。しかしながら、発行体情報DB、運用事業者情報DB、利用者情報DB、電子通貨情報DB、ウォレット情報DB、および供託情報DBの少なくともいずれかは、外部のストレージデバイスに記憶されてもよいし、複数のデバイスに分散して記憶される分散型DBであってもよい。一例では、発行体情報データベースDB、運用事業者情報DB、利用者情報DB、電子通貨情報DB、ウォレット情報DB、および供託情報DBの少なくともいずれかは、ブロックチェーン上に台帳の形式として保存されてもよい。これによって、データ改ざんに対する耐性を向上することができる。発行体情報DB、運用事業者情報DB、利用者情報DB、電子通貨情報DB、ウォレット情報DB、および供託情報DBのデータ構造については後述する。
続いて、図3を参照して、管理サーバ10のソフトウェア構成の一例について説明する。図3に示す機能は、ストレージ203に記憶されたプログラムをメモリ202に展開してプロセッサ201が実行することによって実現される。管理サーバ10は、発行体情報管理部301、運用事業者情報管理部302、利用者情報管理部303、通貨情報管理部304、ウォレット情報管理部305、認証部306、通貨発行部307、通貨移転部308、通貨償却部309、および供託情報管理部310を備える。
発行体情報管理部301は、発行体から受け付けた登録要求に応じて発行体情報DBに新たな発行体情報を登録する。本実施形態では、発行体情報DBに発行体情報を登録することを、「発行体のアカウントを作成する」と称する。ここで、図7を参照して発行体情報DBが有するデータ構造の一例について説明する。
図7の発行体情報は、識別子(ID)701、パスワード702、名称703、事業体識別番号704、および所在地705を含む。
ID701は、発行体のアカウントに関連付けられた一意の識別子である。パスワード702は、発行体装置11から管理サーバ10に発行体情報の登録要求、発行体情報の更新要求、通貨発行要求などの後述する操作を要求するために必要な認証情報である。名称703は、発行体の名称であり、例えば「株式会社xxxxxx」といった文字列である。事業体識別番号704は、例えばD−U−N−S番号などの企業識別コードである。所在地705は発行体の所在地を示す文字列である。
また、発行体情報管理部301は、発行体から受け付けた更新要求に応じて発行体情報DBに登録された発行体情報を更新する。これらの発行体情報の登録処理、更新処理については後述する。
運用事業者情報管理部302は、運用事業者から受け付けた登録要求に応じて運用事業者情報を運用事業者情報DBに登録する。本実施形態では、運用事業者情報DBに運用事業者情報を登録することを、「運用事業者のアカウントを作成する」ここで、図8を参照して運用事業者情報DBが有するデータ構造の一例について説明する。
図8の運用事業者情報は、識別子(ID)801、パスワード802、名称803、事業体識別番号804、所在地805、および発行体ID806を含む。
ID801は、運用事業者のアカウントに関連付けられた一意の識別子である。パスワード802は、運用事業者装置12から管理サーバ10に運用事業者情報の登録要求、運用事業者情報の更新要求、電子通貨の移転要求などの後述する操作を要求するために必要な認証情報である。名称803は、運用事業者の名称である。事業体識別番号804は、例えばD−U−N−S番号などの企業識別コードである。所在地805は運用事業者の所在地を示す文字列であり、発行体ID806は、運用事業者が電子通貨の発行を依頼する発行体のIDであり、発行体情報DBの発行体情報のID701に対応する。
また、運用事業者情報管理部302は、運用事業者から受け付けた更新要求に応じて運用事業者情報DBに登録された運用事業者情報を更新する。これらの運用事業者情報の登録処理、更新処理については後述する。
利用者情報管理部303は、電子通貨の利用者から受け付けた登録要求に応じて利用者情報を利用者情報DBに登録する。ここで、図9を参照して利用者情報DBが有するデータ構造の一例について説明する。
図9の利用者情報は、ID901、パスワード902、名称903、所在地904、および状態905を含む。
ID901は、利用者のアカウントに関連付けられた一意の識別子である。パスワード702は、利用者装置13から管理サーバ10に利用者情報の登録要求、利用者情報の更新要求、通貨移転要求などの後述する操作を要求するために必要な認証情報である。名称903は、利用者の名称であり、利用者が個人である場合には氏名である。所在地904は利用者の所在地を示す住所などの文字列である。状態905は、運用事業者によって利用者の本人確認が完了して電子通貨が利用可能であるか(valid)、本人確認が完了していないか(invalid)を示す。
また、利用者情報管理部303は、利用者から受け付けた更新要求に応じて利用者情報DBに登録された利用者情報を更新する。これらの利用者情報の登録処理、更新処理については後述する。
通貨情報管理部304は、発行予定、または既に発行された電子通貨に関する電子通貨情報を管理する。ここで、図10を参照して電子通貨情報DBが有するデータ構造の一例について説明する。
図10の電子通貨情報は、ID1001、名称1002、ペッグペア1003、レート1004、有効期間1005、状態1006、供託ID1007、残高1008、シンボル名称1009、および運用事業者ID1010を含む。
ID1001は、電子通貨に関連付けられた一意の識別子である。名称1002は、発行体または運用事業者によって付けられた電子通貨の名称である。ペッグペア1003は、電子通貨との為替レートを一定に保つための特定の通貨であり、例えば日本円(JPY)、米国ドル(USD)などである。レート1004は、電子通貨の単位当たりのペッグペアの数量を示す。例えば、ペッグペア1003が「日本円」で、レート1004が「2」である場合、その電子通貨は日本円で2円の価値を有することを示す。有効期間1005は、電子通貨の有効期間を示す。例えば、期間を限定して電子通貨を流通させたい場合に、発行体または運用事業者によって設定される。これによって、運用事業者の要求に応じて、電子通貨の流通開始や流通終了をスケジューリングすることができる。状態1006は、登録された電子通貨情報に対して発行体からの承認を受けたか(Acknowledged)否か(Unacknowledged)を判定可能な情報を格納する。供託ID1007は、後述する供託情報DBのIDに対応する。残高1008は、供託によって移転可能な状態になった電子通貨の残量を示す。シンボル名称1009は、通貨記号や略称など、通貨の名前を省略して表記するための情報を示す。運用事業者ID1010は、電子通貨の登録を依頼した運用事業者のIDを示し、図8のID801に対応する。
また、通貨情報管理部304は、ユーザから受け付けた更新要求に応じて通貨情報DBに登録された電子通貨情報を更新する。これらの電子通貨情報の登録処理、更新処理については後述する。
ウォレット情報管理部305は、発行体、運用事業者、および利用者によって作成され、それぞれのユーザが保有する電子通貨の残高を管理するためのウォレット情報DBを管理する。ここで、図11を参照してウォレット情報DBのデータ構造の一例について説明する。
図11のウォレット情報は、ID1101、アカウント1102、残高1103を含む。
ID1101は、ウォレットに関連付けられた一意の識別子である。アカウント1102は、ウォレットの所有者のアカウントに関する情報である。例えば、利用者によってウォレットが作成された場合、当該ウォレットは利用者のIDに関連付けられる。すなわち、アカウント1102は、発行体のID701、運用事業者のID801、および利用者のID901の少なくともいずれかに対応し得る。残高1103は、ウォレットの所有者が有する電子通貨の残高である。一例では、ウォレット情報の残高1103は、電子通貨のIDと、残高との組み合わせからなる情報であってもよい。また、ウォレットが複数種類の電子通貨の残高を有する場合には、電子通貨のIDと残高との組み合わせを複数含んでもよい。
ウォレット情報管理部305は、ユーザから受け付けた更新要求に応じてウォレット情報DBに登録されたウォレット情報を更新する。これらのウォレット情報の登録処理、更新処理については後述する。
認証部306は、ユーザから操作を受け付けるためにユーザ認証を行う。例えば、認証部306は、ユーザからIDとパスワードの組み合わせ(ID701およびパスワード702、ID801およびパスワード802、またはID901およびパスワード902)を受け付け、発行体情報DB、運用事業者情報DB、および利用者情報DBからIDとパスワードの組み合わせが有効であると判断すると、応答としてアクセストークンを送信する。アクセストークンを受け取ったユーザは、アクセストークンの有効期間内にアクセストークンを使用することで管理サーバ10に操作を要求することができる。
通貨発行部307は、運用事業者装置12から受け付けた電子通貨の登録処理、発行体装置11から受け付けた電子通貨の承認処理、供託物の確認処理を行い、電子通貨を移転可能な状態にする。本実施形態では、登録された電子通貨を移転可能な状態となった場合に、「電子通貨が発行された」と表現する。通貨移転部308は、発行された電子通貨の移転要求に応じてウォレットからウォレットへと移転する。通貨償却部309は、発行体または運用事業者からの要求に応じて発行した電子通貨を移転不可能な状態にする。本実施形態では、発行された電子通貨が移転不可能な状態となった場合に、「電子通貨が償却された」と表現する。
供託情報管理部310は、承認された電子通貨について、流通させるにあたって発行体から受領した供託物に関する情報を管理する。ここで、ここで、図14を参照して供託情報DBが有するデータ構造の一例について説明する。
図14の供託情報は、ID1401、発行体ID1402、運用事業者ID1403、供託種別1404、受領日1405、受領者名1406、受領量1407、評価額1408、評価者名1409、評価日1410、状態1411を含む。
ID1401は、供託情報に関連付けられた一意の識別子である。発行体ID1402は、運用事業者から供託物を受領した発行体のIDに対応し、運用事業者ID1403は、供託した運用事業者のIDに対応する。供託種別1404は、供託物として発行体が受領した日本円などの通貨、不動産、株券などの資産の種別を示す。受領日1405は発行体が運用事業者から供託物を受領した日時を示し、受領者名1406は運用事業者から供託物を受領した発行体の担当者名を示す。受領量1407は通貨や株券など数量を有する資産が供託されている場合の供託された数量を示す。評価額1408は、供託物の評価額を示し、評価者名1409は評価額を決定した評価者の名称を示す。評価日1410は評価額を決定した日時を示す。状態1411は、未受領であるか(Pending)、受領済みであるか(Evaluation_Pending)、受領済みかつ評価済みであるか(Evaluated)を示す供託の状態を示す。
続いて、図4を参照して、発行体装置11のソフトウェア構成の一例について説明する。図4に示す機能は、発行体装置11のストレージ203に記憶されたプログラムをメモリ202に展開してプロセッサ201が実行することによって実現される。発行体装置11は、発行体登録部401、運用事業者登録部402、電子通貨承認部403、供託情報提供部404、および認証部405を有する。
発行体登録部401は、管理サーバ10に発行体のアカウント登録を要求する。運用事業者登録部402は、発行体に電子通貨の依頼を要求した運用事業者に関する情報を登録する。電子通貨承認部403は、運用事業者装置12によって登録された電子通貨について、ユーザからの承認操作に応じて管理サーバ10に電子通貨の承認を行う。供託情報提供部404は、運用事業者から受領した供託物に関する情報を管理サーバ10に提供する。認証部405は、管理サーバ10との通信を行うために管理サーバ10の認証部306と認証情報の送受信を行う。
続いて、図5を参照して、運用事業者装置12のソフトウェア構成の一例について説明する。図5に示す機能は、運用事業者装置12のストレージ203に記憶されたプログラムをメモリ202に展開してプロセッサ201が実行することによって実現される。運用事業者装置12は、運用事業者情報提供部501、電子通貨登録要求部502、電子通貨情報提供部503、供託情報提供部504、残高生成要求部505、ウォレット生成要求部506、移転要求部507、償却要求部508、および認証部509を有する。
運用事業者情報提供部501は、発行体装置11の運用事業者登録部402によって管理サーバ10に登録された運用事業者情報を更新する情報を提供する。電子通貨登録要求部502は、発行体に発行を依頼する電子通貨を管理サーバ10に登録するよう要求する。電子通貨情報提供部503は、電子通貨登録要求部502からの要求に応じて管理サーバ10に登録された電子通貨に関する情報を更新する。供託情報提供部504は、電子通貨を発行するために運用事業者から発行体に受け渡した供託物についての情報を管理サーバ10に提供する。残高生成要求部505は、電子通貨承認部403によって承認された電子通貨について管理サーバ10に残高を生成するよう要求する。ウォレット生成要求部506は、運用事業者のアカウントに関連付けられたウォレットを生成するよう管理サーバに要求する。移転要求部507は、運用事業者のウォレットから利用者のウォレットへ、または利用者のウォレット間での電子通貨の移転を要求する。償却要求部508は、残高を生成した電子通貨について、移転不可能な状態に設定するよう管理サーバ10に要求する。認証部509は、管理サーバ10との通信を行うために管理サーバ10の認証部306と認証情報の送受信を行う。
続いて、図6を参照して、利用者装置13のソフトウェア構成の一例について説明する。図6に示す機能は、利用者装置13のストレージ203に記憶されたプログラムをメモリ202に展開してプロセッサ201が実行することによって実現される。利用者装置13は、登録要求部601、ウォレット生成要求部602、移転要求部603、および認証部604を有する。
登録要求部601は、管理サーバ10に利用者のアカウントの登録を要求する。ウォレット生成要求部602は、登録要求部601で登録した利用者のアカウントに関連付けられたウォレットの生成を管理サーバ10に要求する。移転要求部603は、ウォレット生成要求部602で生成したウォレットと、他の利用者または運用事業者のウォレットとの間での電子通貨の移転を管理サーバ10に要求する。認証部604は、管理サーバ10との通信を行うために管理サーバ10の認証部306と認証情報の送受信を行う。
続いて、図12を参照して、電子通貨管理システムが実行するユーザ登録処理の一例を説明する。図12のシーケンスでは、管理サーバ10、発行体装置11、および運用事業者装置12のプロセッサが、それぞれのストレージに記憶されたプログラムを実行することで実現される。
まず、S1201で、運用事業者装置12は管理サーバ10に対して、運用事業者および発行体の一時アカウント作成要求を送信する。一例では、一時アカウント作成要求とともに、運用事業者装置12は、管理サーバ10から発行体装置11および運用事業者装置12に情報を通知するためのメールアドレスなどの情報を送信する。一例では、一時アカウント作成要求には、発行体の名称、発行体の事業者識別番号、運用事業者の名称、および運用事業者の事業者識別番号の少なくともいずれかを含んでもよい。なお、一例では、S1201では運用事業者または管理サーバ10の管理者が管理サーバ10の入出力I/F205を介して、管理サーバ10に一時アカウント作成要求を入力してもよい。
一時アカウント作成要求を受信した管理サーバ10は、発行体および運用事業者のそれぞれのIDおよびパスワードが発行体情報DBおよび運用事業者情報DBに記憶されていなければ、新規に登録し(S1202)、一時アカウント作成要求に対する応答として、発行体装置11に割り当てられたIDおよびパスワードを含むアカウント情報を通知し(S1203)、運用事業者装置12に割り当てられたIDおよびパスワードを含むアカウント情報を通知する(S1204)。発行体装置11および運用事業者装置12は、通知されたIDおよびパスワードをストレージに記憶する、または発行体装置11および運用事業者12それぞれのユーザに通知する。これによって、発行体装置11および運用事業者装置12が、後述するアカウントの有効化を要求することができる。
続いて、発行体装置11は、通知されたIDおよびパスワードを使用して管理サーバ10の認証部306との認証を行う(S1205)。S1205で受信したIDおよびパスワードが発行体情報DBに格納されている、すなわち発行体装置11の認証が成功すると、管理サーバ10は発行体装置11にアクセストークンを送信する(S1206)。
続いて、発行体装置11は受信したアクセストークンを使用して発行体アカウントの有効化を要求する(S1207)。S1207において、発行体装置11は、発行体の名称、所在地、および識別番号の少なくともいずれかを含む発行体情報を管理サーバ10に送信してもよい。例えば、発行体のIDを含む「https://.../issuers/(発行体ID)」のように管理サーバ10にHTTPSのPOSTリクエストPUTリクエスト、またはGETリクエストを送信するとともに、リクエストに上述した発行体の名称、所在地、および識別番号の少なくともいずれかを含むパラメータを設定することでS1207の処理が行われてもよい。
続いて、管理サーバ10はS1207で受信した発行体アカウントの要求に応じて、発行体情報管理部301によって発行体情報DBを更新する(S1208)。これによって発行体のアカウントを有効化することができる。続いて、管理サーバ10はS1207への応答として発行体アカウントのID(図7のID701)を発行体装置11に送信する(S1209)。一例では、発行体装置11は、運用事業者装置12に発行体IDを通知してもよい。
続いて、発行体装置11は受信したアクセストークンを使用して運用事業者アカウントの有効化を要求する(S1210)。S1210において、発行体装置11は運用事業者の名称、所在地、および識別番号の少なくともいずれかを含む運用事業者情報を管理サーバ10に送信する。これによって、管理サーバ10は、有効化すべき運用事業者を特定することができる。しかしながら、一例では、S1204でIDおよびパスワードを受信した運用事業者装置12はIDを発行体装置11に送信し、発行体装置11はS1210において運用事業者アカウントのIDを用いて運用事業者アカウントの有効化を要求してもよい。また、S1207と同様に、例えば、発行体のIDを含む「https://.../issuers/(発行体ID)」のように管理サーバ10にHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを送信するとともに、リクエストに上述した運用事業者の名称、所在地、および識別番号の少なくともいずれかを含むパラメータを設定することでS1210の処理が行われてもよい。
なお、S1207の発行体アカウントの有効化と、S1210の運用事業者アカウントの有効化とは連続せずに行われてもよい。そのような場合は、発行体装置11は、S1210の運用事業者アカウントの有効化の前にもS1205と同様の認証処理を行い、アクセストークンを受信しなおしてもよい。
続いて、管理サーバ10はS1210で受信した運用事業者アカウントの要求に応じて、運用事業者情報管理部302によって運用事業者情報DBを更新する(S1211)。これによって運用事業者アカウントを有効化することができる。続いて、管理サーバ10はS1210への応答として運用事業者アカウントのID(図8のID801)を発行体装置11に送信する(S1212)。一例では、発行体装置11は、運用事業者装置12に発行体IDを通知してもよい。
以上の処理によって、発行体装置11および運用事業者装置12によって管理サーバ10の発行体情報DBおよび運用事業者情報DBにアカウントを登録することができる。
続いて、図13を参照して、電子通貨管理システムが実行する電子通貨を発行する処理の一例を説明する。図13のシーケンスでは、管理サーバ10、発行体装置11、および運用事業者装置12のプロセッサが、それぞれのストレージに記憶されたプログラムを実行することで実現される。
まず、運用事業者装置12は運用事業者に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1301)、アクセストークンを受け取る(S1302)。S1301およびS1302の処理はS1205およびS1206と同様のため説明を省略する。
続いて、運用事業者装置12はアクセストークンを使用して管理サーバ10に、発行体ID、運用事業者IDとともに電子通貨の登録要求を送信する(S1303)。例えば、S1303では、電子通貨の名称、シンボル名称、ペッグペア、交換レート、および有効期間の少なくともいずれかを含む電子通貨情報を管理サーバ10に送信してもよい。一例では、S1303では、運用事業者装置12は、発行体IDおよび運用事業者IDを含む「https://.../tokenSpec/(発行体ID)/(運用事業者ID)」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。電子通貨の登録要求を受信した管理サーバ10は、アクセストークンの認証に成功すると、通貨情報管理部304によって電子通貨情報DBに受け取った情報を登録するとともに電子通貨のIDを生成し(S1304)、運用事業者装置12に電子通貨IDを通知する(S1305)。電子通貨IDを受信した運用事業者装置12は、電子通貨IDを発行体装置11に通知する(S1306)。なお、一例では、S1306の処理は省略され、運用事業者装置12のユーザが、発行体装置11のユーザに伝える、または発行体装置11に入力してもよい。一方、S1306の処理によってユーザ負荷を抑えてさらに簡便に電子通貨の発行処理を進めることができる。
続いて、運用事業者装置12は、管理サーバ10に、アクセストークンを使用して発行体ID、運用事業者ID、およびS1305で通知された電子通貨IDとともに、電子通貨の承認処理の開始を要求する(S1307)。例えば、S1303では、承認要求を送信した運用事業者の担当者名などの付加的な情報を管理サーバ10に送信してもよい。一例では、S1307では、運用事業者装置12は、発行体ID、運用事業者ID、および電子通貨IDを含む「https://.../tokenSpec/(発行体ID)/(運用事業者ID)/(電子通貨ID)」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。電子通貨の承認要求を受信した管理サーバ10は、アクセストークンの認証に成功すると、登録されている電子通貨情報に基づいて電子通貨を発行するための条件を満たしているか否かを判断する。例えば、電子通貨情報に名称1002、ペッグペア1003およびレート1004が登録されていることなどの所定の条件を満たすと判断した場合に、管理サーバ10は電子通貨情報が電子通貨を発行するための条件を満たしていると判断する。電子通貨情報が電子通貨を発行するための条件を満たしていないと判断した場合は、管理サーバ10は運用事業者装置12にエラー通知を行う。電子通貨情報が電子通貨を発行するための条件を満たしていると判断した場合は、管理サーバ10は運用事業者装置12に肯定応答(ACK)を送信して以降の処理に進むよう通知を行う(S1308)。
S1309で通知を受けた運用事業者装置12は、アクセストークンを使用して運用事業者からの承認を管理サーバ10に通知する(S1309)。一例では、S1309では、運用事業者装置12は、「https://.../tokenSpec/(発行体ID)/(運用事業者ID)/(電子通貨ID)」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。管理サーバ10は、アクセストークンの認証に成功し、S1309の運用事業者からの承認を受信すると、電子通貨情報DBの状態1006を「承認済み」に設定し(S1310)、S1311で処理結果(肯定応答または否定応答)を運用事業者装置12に送信する。一例では、管理サーバ10は、発行体装置11に承認の要求を送信してもよい。別の例では、運用事業者装置12から発行体装置11に承認要求を電子メールなどの形式で送信してもよい。
続いて、発行体装置11は発行体に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1312)、アクセストークンを受け取る(S1313)。S1312およびS1313の処理はS1205およびS1206と同様のため説明を省略する。
続いて、発行体装置11はアクセストークンを使用して管理サーバ10に、発行体ID、運用事業者ID、および電子通貨IDを含む発行体の承認情報を送信する(S1314)。例えば、S1313では、承認した発行体の担当者名などの付加情報を管理サーバ10に送信してもよい。一例では、S1313では、発行体装置11は、発行体IDおよび運用事業者IDを含む「https://.../tokenSpec/(発行体ID)/(運用事業者ID)/(電子通貨ID)」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。発行体側の承認情報を受信した管理サーバ10は、電子通貨情報DBの状態1006を「承認済み」に設定するとともに、肯定応答を発行体装置11に送信する(S1315)。
続いて、運用事業者装置12は、運用事業者に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1316)、アクセストークンを受け取る(S1317)。S1316およびS1317の処理はS1205およびS1206と同様のため説明を省略する。
続いて、運用事業者装置12はアクセストークンを使用して管理サーバ10に、発行体ID、運用事業者IDとともに供託情報を送信する(S1318)。例えば、S1318では、供託の種別や、供託量を管理サーバ10に送信する。一例では、S1318では、発行体装置11は、発行体IDおよび運用事業者IDを含む「https://.../deposits/(発行体ID)/(運用事業者ID)」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。このリクエストのパラメータとして供託の種別や、供託量を管理サーバ10に送信してもよい。
続いて、管理サーバ10は受信した供託情報に基づいて供託情報DBに供託情報の登録を行い(S1319)、供託情報DBのID1401を送信する(S1320)。
そして、運用事業者は、送信した供託情報に対応する供託物とともに供託IDを発行体に受け渡す。発行体が供託物を受領すると、発行体による操作に応じて発行体装置11は、発行体に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1321)、アクセストークンを受け取る(S1322)。S1321およびS1322の処理はS1205およびS1206と同様のため説明を省略する。
続いて、発行体装置11は、アクセストークンと、発行体ID、運用事業者ID、電子通貨IDおよび供託IDとを使用して供託物の受領を管理サーバ10に報告する(S1323)。例えば、S1323では受領報告は受領者名1406、受領日1405、および受領量1407の情報を含む。例えば、発行体装置11は「https://.../deposits/(発行体ID)/(運用事業者ID)/(電子通貨ID)/(供託ID)」のように管理サーバ10にHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを送信するとともに、リクエストに上述した受領者名1406、受領日1405、および受領量1407、並びに供託物の状態(Evaluation_Pending)の情報を含むパラメータを設定することでS1323の処理が行われてもよい。
S1323で供託物の受領報告を受けた管理サーバ10は、アクセストークンの認証に成功すると受領報告に含まれる供託IDに対応する供託情報DBの状態を、供託物を受領したことを示す「Evaluation_Pending」に設定し、受領者名1406、受領日1405、および受領量1407などの情報を受信した情報に基づいて供託情報DBの更新を行う(S1324)。そして供託情報DBの更新に成功した場合はS1321で肯定応答をS1325で運用事業者装置12に送信する。発行体ID、運用事業者ID、電子通貨ID、および供託IDの組み合わせに誤りがある、またはアクセストークンの認証に失敗した場合は、管理サーバ10は否定応答をS1325で運用事業者装置12に送信する。
続いて、発行体による供託物の評価が完了すると、発行体装置11は、アクセストークンと、発行体ID、運用事業者ID、電子通貨IDおよび供託IDとを使用して供託物の評価完了を管理サーバ10に報告する(S1326)。例えば、S1326では評価完了報告は供託種別1404、評価者名1409、評価日1410、および評価額1408の情報を含んでもよい。例えば、発行体装置11は「https://.../deposits/(発行体ID)/(運用事業者ID)/(電子通貨ID)/(供託ID)」のように管理サーバ10にHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを送信するとともに、リクエストに上述した評価者名1409、評価日1410、および評価額1408、並びに供託のステータス(Evaluated)の情報を含むパラメータを設定することでS1326の処理が行われてもよい。
S1326で供託物の受領報告を受けた管理サーバ10は、アクセストークンの認証に成功すると受領報告に含まれる供託IDに対応する供託情報DBの状態を、供託を受領したことを示す「Evaluated」に設定し、受信した評価者名1409、評価日1410、および評価額1408に関する情報に基づいて供託情報DBの更新を行う(S1327)。そして供託情報DBの更新に成功した場合はS1328で肯定応答を運用事業者装置12に送信し、発行体ID、運用事業者ID、電子通貨ID、および供託IDの組み合わせに誤りがある、またはアクセストークンの認証に失敗した場合に否定応答をS1328で運用事業者装置12に送信する。
以上の図13の処理によって、発行体と運用事業者とが承認した電子通貨であって、発行体と運用事業者との間で送受された供託物の評価が完了している電子通貨を、移転可能な状態にする、すなわち発行することができる。
続いて、図15を参照して、電子通貨管理システム1が実行する電子通貨移転処理の一例を説明する。図15のシーケンスでは、管理サーバ10、発行体装置11、および運用事業者装置12のプロセッサが、それぞれのストレージに記憶されたプログラムを実行することで実現される。
まず運用事業者装置12は、運用事業者に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1501)、アクセストークンを受け取る(S1502)。S1501およびS1502の処理はS1205およびS1206と同様のため説明を省略する。
続いて、S1503で、運用事業者装置12は管理サーバ10に対して、アクセストークンを使用して電子通貨の残高生成要求を送信する。残高生成要求は発行体ID、運用事業者ID、電子通貨IDを含む。一例では、運用事業者装置12は、残高生成要求とともに、発行数量を指定する情報を送信してもよい。運用事業者装置12は、発行数量を指定する情報を入力I/Fを介して取得してもよい。別の例では、残高生成要求を受け付けた管理サーバが、供託された評価額に基づいて発行可能な量の残高の電子通貨を生成する場合には発行数量の指定を受信しなくてもよい。一例では、S1503では、運用事業者装置12は、「https://.../tokenSpec/(発行体ID)/(運用事業者ID)/(電子通貨ID)/mint」のような形式のHTTPSのPOSTリクエストPUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。このリクエストに含まれる「mint」の文字列によって、管理サーバ10は残高生成要求であると判断することができる。
続いて、管理サーバ10は、S1504で、受信した残高生成要求に基づいて残高が生成可能か否かを判断する。例えば、管理サーバ10は、残高生成要求に含まれる運用事業者IDに対応する供託の状態が「Evaluated」である場合に、残高が生成可能であると判断してもよい。あるいは、管理サーバ10は、残高生成要求に含まれる運用事業者IDに対応する供託の状態が「Evaluated」であって、残高生成要求に含まれる発行数量×運用事業者に対応する電子通貨情報のレート1004×ペッグペア1003より、運用事業者に対応する供託情報の評価額1408の方が大きい場合に残高が生成可能であると判断してもよい。
S1504で残高が生成可能であると判断すると、管理サーバ10は、電子通貨情報DBの残高1008に生成した残高の量を設定し(S1505)、生成した電子通貨の残高を運用事業者装置12にS1503への応答として送信する(S1506)。
続いて、S1507で、運用事業者装置12は管理サーバ10に対して、アクセストークンを使用してウォレットの生成要求を送信する。一例では、S1509では、運用事業者装置12は、「https://.../wallets/(発行体ID)/(運用事業者ID)/(電子通貨ID)」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。この「wallets」に対応する電子通貨IDが電子通貨情報DBに含まれていないと判断した場合、管理サーバ10はウォレットの生成要求であると判断することができる。
ウォレットの生成要求を受信した管理サーバ10は、S1508においてウォレット情報管理部305でウォレット情報DBに運用事業者IDに関連付けてウォレット情報を登録する。そして、ウォレットのID1101を運用事業者装置12に送信する(S1509)。
なお、S1507〜S1509の処理は、S1501〜S1506の前に実行されてもよい。この場合、管理サーバ10は、S1501〜S1506で生成した残高を運用事業者IDに対応するウォレットの残高に生成した電子通貨を追加してもよい。
続いて、S1510で、利用者装置13は運用事業者装置12にアクセスし、利用契約を行う。S1510では、利用者装置13は運用事業者装置12に、銀行口座や住所などの本人確認(Know Your Customer)が可能な情報を送信する。
続いて、利用者装置13は、管理サーバ10にアクセスし、利用者アカウントの生成要求を行う(S1511)。本実施形態では、生成要求は、利用者が希望するIDおよびパスワードに関する情報を含むものとする。また、この際、利用者装置13は、利用者の名称903および所在地904などの付加情報を送信してもよい。なお、管理サーバ10は、生成要求に含まれるIDがすでに利用者情報DBに登録されている場合には、変更するよう要求してもよい。
続いて、管理サーバ10は利用者情報管理部303で利用者情報DBにID901およびパスワード902を登録する(S1512)。また、ウォレット情報DBに、S1512で生成したID901に対応するウォレットを生成し(S1513)、生成したウォレットのウォレット情報に含まれるID1101をS1511への応答として送信する(S1514)。これによって、利用者のアカウントおよびウォレットを生成することができる。
なお、本実施形態において、利用者は、運用事業者が提供するサービスを受けることを意図して管理サーバ10にウォレットの生成を要求する。したがって、利用者装置13は、利用を希望する電子通貨または運用事業者に関する情報を利用者アカウントの生成要求に含めてもよい。この場合、管理サーバ10は、利用者のウォレット情報の残高1103に、利用を希望する電子通貨を示す情報を含めてもよい。例えば、上述したようにウォレット情報の残高1103が電子通貨のIDと残高との組み合わせを含む場合、新規に利用を希望する電子通貨に対応する電子通貨IDをウォレット情報の残高1103に追加し、当該電子通貨IDの残高を例えば0などの値に設定してもよい。
また、本実施形態に係る電子通貨管理システムは、複数種類の電子通貨を扱うことができる。このため、例えばすでにある電子通貨を利用している利用者が別の電子通貨の利用を希望する際、利用者装置13は、電子通貨の利用要求をS1512と同様に電子通貨の利用要求を送信してもよい。この場合、管理サーバ10は、利用要求に含まれるID、パスワードがすでに利用者情報DBに登録されていると判断し、利用者IDに基づいて利用者のウォレットを特定し、ウォレットの残高1103に利用を希望する電子通貨の電子通貨IDを追加してもよい。
続いて、運用事業者装置12はS1205およびS1206と同様に、運用事業者に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1515)、アクセストークンを受け取る(S1516)。
運用事業者は、S1510で受け取った情報に基づいて、利用者の身元確認を行い、電子通貨を利用可能な顧客であるか否かを判断する。運用事業者が利用者による電子通貨の利用が可能であると判断すると、運用事業者は運用事業者装置12を操作して管理サーバ10に確認完了を通知する(S1517)。例えば、S1517では、運用事業者装置12は、「https://.../wallets/(発行体ID)/(運用事業者ID)/(利用者のウォレットID)」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。このリクエストのパラメータとして本人確認種類の種別などの付加情報を管理サーバ10に送信してもよい。これによって管理サーバ10が利用者のウォレットを利用であると設定することができる。管理サーバ10は利用者が電子通貨の移転が可能な状態であることを示す情報(valid)を利用者情報DBの状態905に設定して利用者情報DBを更新し(S1518)、運用事業者装置12に肯定応答を送信する(S1519)。
続いて、運用事業者装置12または利用者装置13による移転要求の一例について説明する。ここでは、運用事業者装置12からの要求に応じて電子通貨を移転する例について説明するが、利用者装置13からの要求に応じて電子通貨を移転する場合も同様に適用可能である。例えば、利用者が運用事業者の銀行口座に振り込みを行うことによって、管理サーバ10は運用事業者装置12から利用者アカウントに電子通貨を移転すると判断することができる。また、利用者間で電子通貨の送受を行うために利用者装置13から移転要求を送信することで管理サーバ10は電子通貨を移転すると判断することができる。
まず、運用事業者装置12はS1205およびS1206と同様に、運用事業者に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1520)、アクセストークンを受け取る(S1521)。
続いて、運用事業者装置12は、管理サーバ10に移転を要求する(S1522)。例えば、S1512では、運用事業者装置12は、「https://.../wallets/(発行体ID)/(運用事業者ID)/(電子通貨ID)/(移転元のウォレットID)/transfer」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。このリクエストのパラメータとして、移転先のウォレットID、移転する数量、移転方法(単純移転またはスマートコントラクト)などの付加情報を管理サーバ10に送信する。
管理サーバ10は、S1522で受信した移転要求から、移転元のウォレットID、移転先のウォレットID,および移転させる電子通貨の量を取得する(S1523)。S1523では、移転させる電子通貨の種類をさらに特定してもよい。S1523で電子通貨の移転に必要な情報を取得した管理サーバ10は、取得した情報に基づいてウォレット情報DBを更新する(S1524)。具体的には、管理サーバ10は、移転元のウォレットIDに含まれる残高から、指定された電子通貨IDの移転する数量分だけ減らし、移転先のウォレットIDに含まれる残高から、指定された電子通貨IDの移転する数量分だけ増やす。なお、移転元のウォレットIDに含まれる残高が、指定された移転する数量よりも少ない場合は、管理サーバ10は、運用事業者装置12にエラー通知を行ってもよい。移転に成功した場合には、管理サーバ10は移転を要求元である運用事業者装置12に肯定応答を送信する(S1525)。一例では、移転元と移転先のアカウントにも移転が完了した旨を通知する。
続いて、図16を参照して、電子通貨を償却する処理について説明する。例えば、電子通貨情報DBに登録された電子通貨の有効期間になった場合や、電子通貨の提供を終了すると判断した運用事業者が操作する運用事業者装置12からの償却要求を受け付けた場合に、管理サーバ10が電子通貨を償却すると判断する。図16の例では、運用事業者装置12からの償却要求を受け付けて電子通貨を償却する処理について説明する。
まず、運用事業者装置12はS1205およびS1206と同様に、運用事業者に割り当てられたIDおよびパスワード使用して管理サーバ10との認証を行い(S1601)、アクセストークンを受け取る(S1602)。
続いて、運用事業者装置12はアクセストークンを使用して、管理サーバ10に電子通貨の償却要求を送信する(S1603)。一例では、S1603では、運用事業者装置12は、「https://.../tokenSpec/(発行体ID)/(運用事業者ID)/(電子通貨ID)/burn」のような形式のHTTPSのPOSTリクエスト、PUTリクエスト、またはGETリクエストを管理サーバ10に送信してもよい。このリクエスト内に含まれる「burn」という文字列によって、管理サーバ10は電子通貨の償却要求であると判断することができる。一例では、償却要求は償却数量を指定する情報を含んでもよい。これによって、管理サーバ10は、電子通貨の全量ではなく、一部を償却して、経済圏で流通させる電子通貨の数量を調整することができる。
償却要求を受信した管理サーバ10は、電子通貨情報DBから、指定された電子通貨IDの残高を0にする、または状態1006を「移転不可」などに設定するよう電子通貨情報DBを更新する(S1604)。一例では、運用事業者装置12は、続いて、管理サーバ10は電子通貨の償却が完了を運用事業者装置12に通知する(S1605)。一例では、管理サーバ10は、運用事業者への供託物の払い渡しを発行体装置11に通知してもよい。
以上説明したように、本実施形態に係る電子通貨管理システムは、運用事業者から発行すべき電子通貨に関する電子通貨情報を取得し、電子通貨情報の発行の要求を運用事業者から受け付け、受け付けた要求に対する承認を発行体から受け付けた場合に電子通貨を発行する。これによって、発行権限を有しない運用事業者であっても、電子通貨の発行を発行体に依頼することで電子通貨を発行することができる。また、運用事業者と発行体との両方にとって、電子通貨の発行を行うシステムの構築に必要な費用および時間を大きく節約することができ、電子通貨を発行するための利便性を向上することができる。電子通貨管理サーバ10が運用事業者に対し金融ライセンス無しで電子通貨を発行することで、独自の経済圏構築や拡大の一助となることができる。
また、電子通貨管理システムは、運用事業者から発行体に預けられた供託物に関する情報を取得する。これによって、発行体の承認と、経済的な担保を確認した後に電子通貨を発行することができるため、安全に電子通貨を発行することができる。
また、電子通貨管理システムは、Hypertext Transfer Protocol(HTTP)のPOSTメソッド、GETメソッド、およびPUTメソッドの少なくともいずれかを使用して、電子通貨の発行要求や要求に対する承認を送受信する。これによって、webブラウザを介して電子通貨管理システムの利用が可能となり、電子通貨管理システムの利便性が向上する。
また、電子通貨管理システムは、運用事業者によって電子通貨の移転可能な期間を設定することができる。これによって、運用事業者はイベントなどの所定期間に応じて電子通貨を発行し、利用を停止することができ、電子通貨の利便性が向上する。
また、電子通貨管理システムは、ユーザに対して電子通貨を管理するためのウォレットを提供する。また、ウォレットは、複数種類の電子通貨の残高を管理することができる。これによって、ユーザが有する複数種類の電子通貨の残高をユーザがまとめて把握または管理することができ、ユーザにとっての利便性が向上する。
また、電子通貨管理システムは、電子通貨を、現金通貨の種類と、その種類の現金通貨とのレートとが関連付けられた電子通貨情報を管理する。これによって、電子通貨の現金通貨での価値を保証することができる。また、電子通貨を償却する際に、現金通貨への変換が容易となり、現金通貨を管理する利便性を向上することができる。
<その他の実施形態>
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
本実施形態では、管理サーバが1種類の電子通貨の発行、移転、償却を行う例について説明を行った。しかしながら、上述したように、管理サーバ10は複数種類の電子通貨を発行、移転、償却を行ってもよい。また、管理サーバ10は、複数種類の電子通貨について、それぞれの電子通貨情報のペッグペア1003、レート1004を用いて、複数種類の電子通貨の交換レートを決定することで、電子通貨と現金通貨との交換だけではなく、複数種類の電子通貨間の交換を行ってもよい。例えば、電子通貨Aが単位量当たり日本円で1円であり、電子通貨Bが単位量あたり米国ドルで1ドルである場合、管理サーバ10は、日本円と米国ドルとの為替レートを取得することで、電子通貨Aと電子通貨Bとの交換レートを判断することができる。これによって、複数種類の電子通貨の相互運用性を実現することができ、複数種類の電子通貨の経済圏を共有することが可能となる。
また、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。