添付図面を参照して、本発明の好適な実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
第1実施形態について説明する。図1に第1実施形態に係るチャレンジ支援システムを示す。チャレンジ支援システム1は、資金提供者端末10、挑戦者端末20、応援者端末30,30A、運営者端末40、インターネット50、ブロックチェーンネットワーク55及び判定用データ送信端末60を備える。
資金提供者端末10、挑戦者端末20、応援者端末30,30A、運営者端末40、及び判定用データ送信端末60がネットワークNを介して接続されるようにして、インターネット50が構成される。ブロックチェーンネットワーク55はインターネット50に繋がっている。
ブロックチェーンネットワーク55は、トランザクションが記録された台帳を複数の端末が共有して管理するシステムである。ブロックチェーンは、時系列にそって複数のブロックがチェーン状に繋がったデータであり、各ブロックは、一定期間におけるトランザクションのデータを含む。ブロックチェーンの技術では、複数のブロックが過去の情報を保持した状態で追加されるので、履歴の改ざんが困難であるという特徴がある。
本実施形態では、ブロックチェーンネットワーク55として、スマートコントラクトを実現することが可能なイーサリアム(Ethereum)を用いるものとする。スマートコントラクトを実現できる他のブロックチェーンネットワークを用いてもよい。
図2に、資金提供者端末10のブロック図を示す。資金提供者端末10は、ネットワークNを介して運営者端末40、インターネット50及びブロックチェーンネットワーク55と通信を行う機能を備えた情報処理端末である。例えば、スマートフォン、PC、タブレット等が挙げられるが、これらに限られない。
資金提供者端末10は、入力部111、表示部112、通信部113、制御部114、記憶部115、及び撮像部116を備える。
入力部111は、ユーザからの操作を受け付ける。表示部112は、ユーザに対して情報を表示する。入力部111及び表示部112は、タッチパネル等のように一体となっていてもよい。通信部113は、ネットワークNを介して外部の端末と通信を行う。記憶部115にはチャレンジアプリ80が記憶される。撮像部116は、画像の取得などに用いられる。
入力部111を通じて入力された情報に基づいて、チャレンジアプリ80のユーザアカウント及びパスワードが記憶部115に保存される。資金提供者端末10は、保存されたユーザアカウントに関するユーザ識別情報を運営者端末40へと送信する。
ユーザ識別情報は、例えばチャレンジアプリ80のインストール時や起動時にユーザに入力させることで取得した会員情報の一部又は全部を使用して生成した情報である。ユーザ識別情報には、氏名、性別、生年月日、アカウント名、ユーザが使用する判定用データ送信端末の公開アドレス等が含まれる。
制御部114は、CPU及びメモリを含む。制御部114は、記憶部115に記憶されているチャレンジアプリ80(プログラム)がRAMに読み出され、CPUによって実行されることで、鍵生成部121、アドレス生成部122、アドレス取得部123、ウォレット部124、トランザクション生成部125、チャレンジ設定部126、及びコントラクト情報生成部127として機能する。
鍵生成部121は、資金提供者端末10のユーザ毎に一意な秘密鍵と公開鍵のペアを生成する。生成された秘密鍵は、記憶部115に保存される。秘密鍵はトランザクションをブロックチェーンネットワーク55に送信する際の電子署名に用いられる。秘密鍵は、オフライン時に生成され、通常はオフラインで保存され、必要に応じて接続可能とされることが望ましい。
アドレス生成部122は、鍵生成部121により生成された公開鍵に基づいて、ブロックチェーンネットワーク55における公開アドレスを生成する。生成された資金提供者の公開アドレスは記憶部115に保存される。公開アドレスは、ブロックチェーンネットワーク55のユーザを識別するために用いられる。ブロックチェーンネットワーク55において、イーサリアムにおける仮想通貨であるイーサ及び他のトークンのトランザクションによる送付先は公開アドレスとなる。以降、イーサをETHERと表記する。ETHERの略称はETHである。
アドレス生成部122は、生成された公開アドレスをユーザ識別情報と対応付けて、後述する運営者端末40へと送信する。公開アドレスとユーザ識別情報とを対応付けることによって、ブロックチェーンネットワーク55における、ある公開アドレスが、チャレンジ支援システム1の利用者であることを確認できる。
アドレス取得部123は、ブロックチェーンネットワーク55における他の公開アドレスを、運営者端末40又は他の端末から取得する。運営者端末40から他の公開アドレスを取得する場合、アドレス取得部123は、ネットワークNを介して運営者端末40と通信を行い、運営者端末40に記憶された他の公開アドレスを取得する。
他の端末から他の公開アドレスを取得する場合は、例えば、公開アドレスを示す二次元バーコード等の画像を撮像部116により読み取ることで取得する。あるいは、他の端末が生成した画像やテキストによって表された公開アドレスを、ネットワークNを介して取得することによって、他の公開アドレスを取得する。アドレス取得部123により取得された公開アドレスは記憶部115に保存される。
アドレス取得部123は、運営者端末40又は他の端末から取得した公開アドレスに、他の端末に記憶されたチャレンジアプリ80と同種のアプリによって生成されたユーザ識別情報がある場合は、ユーザ識別情報も取得可能である。取得されたユーザ識別情報は記憶部115に保存される。
アドレス取得部123は、ブロックチェーンネットワーク55におけるチャレンジに関連するスマートコントラクトのコントラクトアドレスを、運営者端末40又は他の端末から取得可能である。
ウォレット部124は、仮想通貨の残高を管理する機能を有する。第1実施形態における仮想通貨は、ETHERや、ブロックチェーンネットワーク55にて独自に発行されるトークンである。ウォレット部124は、仮想通貨の残高を、ブロックチェーンネットワーク55に記録されるトランザクションの履歴から取得する。取得された残高は表示部112に表示されることでユーザが確認可能である。
ウォレット部124は、送金先の公開アドレス又は送金先の公開アドレスに対応するアカウント名と、送金額と、を含む資金支払データを生成する。例えば、ウォレット部124は、入力部111を介してユーザから指定されたアカウントと送金額とを含む資金支払データを生成する。なお、送金及び資金という言葉は、仮想通貨の移動に関する意味で用いており、移動する対象は、ETHERに限られず、他のトークンも含まれる。
トランザクション生成部125は、記憶部115に保存された秘密鍵により署名したトランザクションを生成し、ブロックチェーンネットワーク55に送信する。例えば、トランザクション生成部125はウォレット部124によって生成された資金支払データに基づいて、記憶部115に保存された秘密鍵で署名したトランザクションを生成し、ブロックチェーンネットワーク55に送信する。トランザクションがブロックチェーンネットワーク55において承認されると、そのトランザクションに基づいた資金の移動がブロックチェーンネットワーク55に保存される。
ウォレット部124は、運営者端末40から、後述するチャレンジコントラクトの一覧を取得して、ユーザに選択可能な形式で表示してもよい。また、チャレンジコントラクトの一覧を取得する際、ウォレット部124が記憶部115の公開アドレスを送信することで、当該ユーザが資金提供者として運営者端末40に登録されているチャレンジコントラクトのコントラクトアドレスの一覧を取得できるようにしてもよい。
チャレンジ設定部126は、資金提供者が作成するチャレンジに関する設定をユーザから取得し、設定データを生成する。設定データには、資金提供者の公開アドレス、チャレンジに挑戦する挑戦者の公開アドレス、運営者の公開アドレス、資金額、チャレンジ開始期限、チャレンジ期間等の情報が含まれる。また、チャレンジを達成するためのチャレンジの具体的な内容、チャレンジの達成条件、チャレンジ成功時の資金の配分設定、及びチャレンジ失敗時の資金の配分設定等の契約条件が含まれる。
コントラクト情報生成部127は、チャレンジ設定部126が生成した設定データに基づいて、Solidity言語で記述された、コントラクト・コードをsolcによりコンパイルし、コンパイル済コントラクト・コードを生成する。
トランザクション生成部125が、コントラクト情報生成部127によって生成されたコンパイル済コントラクト・コードを、ブロックチェーンネットワーク55にトランザクションとして送信する。トランザクションがブロックチェーンネットワーク55において承認されると、図7に示すように、スマートコントラクトであるチャレンジコントラクト501がブロックチェーンネットワーク55に生成される。チャレンジコントラクト501については後述する。なお、資金提供者端末10が用いる言語はSolidity言語に限定されず、スマートコントラクトをブロックチェーンネットワーク55に生成可能な他の言語を用いることができる。
ブロックチェーンネットワーク55に生成されたチャレンジコントラクト501は、ブロックチェーンネットワーク55におけるコントラクトアドレスを有する。チャレンジコントラクト501のコントラクトアドレスに資金提供者が供託する資金が送付され保持される。チャレンジコントラクト501のコントラクトアドレスは、チャレンジコントラクト501が生成された際に、ブロックチェーンネットワーク55から資金提供者端末10へと送信され取得するか、資金提供者端末10がブロックチェーンネットワーク55から取得する。取得されたチャレンジコントラクト501のコントラクトアドレスは、チャレンジ設定部126が生成した設定データと共に、資金提供者端末10から運営者端末40へと送信される。
図3に挑戦者端末20のブロック図を示す。挑戦者端末20は、ネットワークNを介して運営者サーバ及びブロックチェーンネットワーク55と通信を行う機能を備えた情報処理端末である。例えば、スマートフォン、PC、タブレット等が挙げられるが、これらに限られない。
挑戦者端末20は、入力部211、表示部212、通信部213、制御部214、記憶部215、及び撮像部216を備える。
入力部211、表示部212、通信部213、及び撮像部216に関しては、入力部111、表示部112、通信部113、及び撮像部116と同様である。挑戦者端末20は、自身のユーザ識別情報を運営者端末40へと送信する。記憶部215には、チャレンジアプリ80が記憶される。
制御部214は、CPU及びメモリを含む。制御部214は、記憶部215に記憶されているチャレンジアプリ80(プログラム)がRAMに読み出され、CPUによって実行されることで、鍵生成部221、アドレス生成部222、アドレス取得部223、ウォレット部224、トランザクション生成部225、判定用データ取得部226、及びトークン発行情報生成部227として機能する。
鍵生成部221、アドレス生成部222、アドレス取得部223、ウォレット部224、及びトランザクション生成部225は、鍵生成部121、アドレス生成部122、アドレス取得部123、ウォレット部124、及びトランザクション生成部125と同様の機能を有する。
鍵生成部221によって生成される秘密鍵は、記憶部215に保存される。アドレス生成部222によって生成される挑戦者の公開アドレスは、記憶部215に保存される。
判定用データ取得部226は、契約条件が満たされたか否かを判定するために用いる判定用データを、入力部211にて入力された情報あるいは挑戦者端末20にて記憶部215に記録される情報から取得する。記憶部215に記録される情報には、例えば、スマートフォンの歩数計機能によって集計され、記憶部215に記録された歩数等の運動情報がある。あるいは、通信部213を介して外部の歩数を計測可能な端末から記憶部215に記録される歩数等の運動情報がある。
判定用データには、チャレンジを達成するための活動のエビデンスとなるデータや、チャレンジの「成功」又は「失敗」のいずれかを含むデータ等、任意のデータを用いることができる。
判定用データは、チャレンジの「中断」を示すデータを含むことができる。チャレンジの「中断」を示すデータが、ブロックチェーンネットワーク55に送信された場合には、チャレンジコントラクト501が所定の処理を行うように設定することができる。
判定用データは、チャレンジの成功、失敗を決定づける終了判定データを含む。終了判定データとは、例えば、複数日にまたがるチャレンジにおいて、最終日の結果である。また、終了判定データとは、チャレンジの期限を徒過したかを判定するための日時に関する情報でもよい。
トランザクション生成部225は、判定用データをスマートコントラクトに送信するために、記憶部215に保存された秘密鍵で署名されたトランザクションを生成する。トランザクション生成部225は、判定用データに関するトランザクションをスマートコントラクトに送信する。トランザクションがブロックチェーンネットワーク55において承認されると、トランザクションの宛先であるスマートコントラクトのデータが更新される。宛先は、例えば、チャレンジコントラクト501のコントラクトアドレスである。
判定用データ取得部226によって取得した判定用データが、スマートコントラクトへと送信される場合、トランザクション生成部225は、運営者端末40からスマートコントラクトのコントラクトアドレスを取得し、トランザクションの宛先として、ユーザに選択可能な形式で表示してもよい。
また、スマートコントラクトのコントラクトアドレスを取得する際、アドレス取得部223が、挑戦者の公開アドレスを送信することで、当該ユーザが挑戦者として運営者端末40に登録されているスマートコントラクトのコントラクトアドレスの一覧を取得できるようにしてもよい。
なお、判定用データを裏付ける画像等のコンテンツについては、判定用データ取得部226は、コンテンツを一意に識別するハッシュ値を生成し、当該生成したハッシュ値だけをトランザクションとしてブロックチェーンネットワーク55に送信する。実際のコンテンツについては、ハッシュ値と共に運営者端末40に送信する。画像には、例えば、挑戦者が撮影した食事画像、挑戦者が撮影した身体測定結果画像等が含まれる。ハッシュ値を用いることで、ブロックチェーンネットワーク55に直接サイズが大きく、コスト(GAS代)が多く発生するようなコンテンツを記録する必要がなくなる。
トークン発行情報生成部227は、ブロックチェーンネットワーク55におけるトークンを発行するためのトークン発行情報を生成する。
トークン発行情報には、トークンの総発行数、トークンの名称、トークンの単位表記等が含まれる。トークン発行情報生成部227は入力部211からのユーザの入力に基づいて、これらの情報を取得しトークン発行情報を生成する。
トランザクション生成部225がトークン発行情報に基づいて、ブロックチェーンネットワーク55へトランザクションを送信する。トランザクションがブロックチェーンネットワーク55において承認されると、ブロックチェーンネットワーク55に、トークンコントラクトが生成される。トークンの残高を管理するためのスマートコントラクトであるトークンコントラクトが生成されるということが、トークンが発行されるということである。
トークンコントラクトは、ブロックチェーンネットワーク55におけるコントラクトアドレスを有する。トークンコントラクトは、発行されたトークンを所有する公開アドレスとその公開アドレスに対するトークンの残高の状態を記録することによって、ブロックチェーンネットワーク55におけるトークンの残高を管理する。
第1実施形態では、図7に示されるように、トークンコントラクトとしてサンクストークンコントラクト502が生成される。サンクストークンコントラクト502については後述する。
挑戦者端末20におけるチャレンジアプリ80は、資金提供者端末10におけるチャレンジ設定部126及びコントラクト情報生成部127を実現可能であってもよい。資金提供者端末10におけるチャレンジアプリ80は挑戦者端末20における判定用データ取得部226及びトークン発行情報生成部227を実現可能であってもよい。すなわち、資金提供者端末10と挑戦者端末20は資金提供者という立場と挑戦者という立場によって区別されているが、両者の区別は任意に入れ替えることが可能である。また、資金提供者と挑戦者が同一人物であってもよい。
図4に応援者端末30のブロック図を示す。応援者端末30は、ネットワークNを介して運営者サーバ及びブロックチェーンネットワーク55と通信を行う機能を備えた情報処理端末である。例えば、スマートフォン、PC、タブレット等が挙げられるが、これらに限られない。
応援者端末30は、入力部311、表示部312、通信部313、制御部314、記憶部315、撮像部316を備える。
入力部311、表示部312、通信部313、及び撮像部316に関しては、入力部111、表示部112、通信部113、及び撮像部116と同様である。応援者端末30は、自身のユーザ識別情報を運営者端末40へと送信する。記憶部315には、チャレンジアプリ80が記憶される。
制御部314は、CPU及びメモリを含む。制御部314は、記憶部315に記憶されているチャレンジアプリ80(プログラム)がRAMに読み出され、CPUによって実行されることで、鍵生成部321、アドレス生成部322、アドレス取得部323、ウォレット部324、トランザクション生成部325として機能する。
鍵生成部321、アドレス生成部322、アドレス取得部323、ウォレット部324、及びトランザクション生成部325は、鍵生成部121、アドレス生成部122、アドレス取得部123、ウォレット部124、及びトランザクション生成部125と同様の機能を有する。
アドレス生成部322によって生成される応援者の公開アドレスは、記憶部315に保存される。応援者端末30は、ブロックチェーンネットワーク55において、仮想通貨の送受信が可能な端末として機能する。応援者端末30Aについては、応援者端末30と同様である。
応援者端末30におけるチャレンジアプリ80は、資金提供者端末10におけるチャレンジ設定部126及びコントラクト情報生成部127又は、挑戦者端末20における判定用データ取得部226及びトークン発行情報生成部227を実現可能であってもよい。すなわち、資金提供者端末10、挑戦者端末20、及び応援者端末30は、チャレンジに応じて互いの区別を任意に入れ替えることが可能である。
運営者端末40は、入力部411、通信部413、制御部414、及び記憶部415を備える。例えば、運営者端末40はサーバ装置である。入力部411及び通信部413に関しては、入力部111及び通信部113と同様である。
記憶部415には、データベース(DB)としてチャレンジDB4151、会員DB4152、コンテンツDB4153が保存される。
制御部414は、CPU及びメモリを含む。制御部414は、記憶部415に記憶されているプログラムがRAMに読み出され、CPUによって実行されることで、鍵生成部421、アドレス生成部422、アドレス取得部423、ウォレット部424、トランザクション生成部425、チャレンジ設定部426、コントラクト情報生成部427、トークン発行情報生成部428、サイト提供部431、会員登録部432、及びコンテンツ受信部433として機能する。
チャレンジDB4151には、チャレンジに関する情報が保存されている。第1実施形態では、チャレンジDB4151には、チャレンジ支援システム1のユーザが挑戦するチャレンジに関する情報が各チャレンジ毎に保存される。チャレンジに関する情報には、チャレンジを規定するチャレンジコントラクト501のコントラクトアドレス、契約条件等が含まれる。
会員DB4152には、チャレンジ支援システム1の会員に関する情報が保存されている。第1実施形態では、図6に示されるように、会員DB4152には、氏名、性別、生年月日、アカウント名等のユーザ識別情報、各ユーザの公開アドレス、会員が関連する関連チャレンジ情報等が登録されていることが望ましい。なお、図6に示す各公開アドレスは、説明のための架空のアドレスであり、イーサリアムで使用される実際のアドレスとはアドレスの桁数が異なっている。他の図においても同様である。
ユーザがブロックチェーンネットワーク55にサンクストークンコントラクト502を有している場合は、サンクストークンコントラクト502のコントラクトアドレスが登録されていてもよい。
関連チャレンジ情報には、ユーザが関連付けられているチャレンジを規定するスマートコントラクトのコントラクトアドレスと、キャンペーンへの参加属性とが保存される。参加属性には、例えば、チャレンジの作成者であることを示す「資金提供者」、チャレンジの挑戦者であることを示す「挑戦者」等が設定される。なお、関連チャレンジ情報には、ユーザが関連付けられている任意のチャレンジに関する情報を保存することができる。
コンテンツDB4153には、チャレンジ支援システム1のチャレンジを達成するための活動のエビデンスとなる画像や音声等のコンテンツに関する情報が保存されている。第1実施形態では、コンテンツDB4153にはコンテンツ、コンテンツから生成したハッシュ値が保存されていることが望ましい。ハッシュ値は、コンテンツを一意に識別する情報である。ハッシュ値を用いることで、ブロックチェーンネットワーク55に画像ファイル等を記録する必要がなくなる。よって、コンテンツそのものはブロックチェーンネットワーク55によって公開されることなく、秘匿される。なおブロックチェーンネットワーク55に記録されるデータからコンテンツを一意に識別可能であれば、ハッシュ値とは異なるデータを用いてもよい。
鍵生成部421、アドレス生成部422、アドレス取得部423、ウォレット部424及びトランザクション生成部425は、鍵生成部121、アドレス生成部122、アドレス取得部123、ウォレット部124、及びトランザクション生成部125と同様の機能を有する。
鍵生成部421によって生成される秘密鍵は、記憶部415に保存される。アドレス生成部422によって生成される運営者の公開アドレスは、記憶部415に保存される。運営者の公開アドレスは、資金提供者端末10のアドレス取得部123によって、資金提供者端末10が取得可能である。
チャレンジ設定部426及びコントラクト情報生成部427は、チャレンジ設定部126及びコントラクト情報生成部127と同様である。チャレンジ設定部426及びコントラクト情報生成部427は、運営者によるチャレンジの作成を可能とする。なお、チャレンジの作成にあたって、運営者端末40が、外部で生成されたコントラクト情報を受信し、コントラクト生成トランザクションをブロックチェーンネットワーク55に送信することで、チャレンジを作成してもよい。
トークン発行情報生成部428は、トークン発行情報生成部227と同様に、運営者によるブロックチェーンネットワーク55におけるトークンの発行を可能とする。なお、トークンの発行にあたって、運営者端末40が、外部で生成されたトークン発行情報を受信し、ブロックチェーンネットワーク55に送信することで、トークンを発行してもよい。
サイト提供部431は、チャレンジ支援システム1を利用するためのウェブサイトをネットワークN上で提供する。当該サイトにおいて、資金提供者や挑戦者、資金の還付先となる還付者が会員登録をしたりすることができる。このためにサイト提供部431は、HTML(HyperText Markup Language)等で記述されたウェブページを、ユーザの使用する端末へ送信すると共に、ユーザによる入力結果等を、端末から受信する。
会員登録部432は、ユーザの端末からユーザ識別情報を受信して、会員DB4152に登録する。第1実施形態では、サイト提供部431が提供する会員登録画面でのユーザの操作に応じて端末から会員情報が送信されると、会員登録部432は、受信したユーザ識別情報に基づいて会員DB4152にデータを登録する。
会員登録部432は、チャレンジアプリ80をダウンロードした端末から公開アドレスをユーザ識別情報と共に受信すると、ユーザ識別情報によって特定された会員DB4152に公開アドレスを保存する。
コンテンツ受信部433は、挑戦者端末20又は後述する判定用データ送信端末60から、画像データや音声データ等のコンテンツを受信してコンテンツDB4153に保存する。コンテンツ受信部433は、コンテンツを一意に識別するハッシュ値をコンテンツと共に受信して、受信したハッシュ値及びコンテンツをコンテンツDB4153に保存する。
ブロックチェーンネットワーク55には、チャレンジコントラクト501、サンクストークンコントラクト502、及びチアリングトークンコントラクト503が設けられる。
チャレンジコントラクト501は、資金提供者端末10のコントラクト情報生成部127又は運営者端末40のコントラクト情報生成部427が生成したコントラクト情報に基づいて生成されるスマートコントラクトである。
サンクストークンコントラクト502は、挑戦者端末20のトークン発行情報生成部227が生成したトークン発行情報に基づいて生成されるスマートコントラクトである。
チアリングトークンコントラクト503は、運営者端末40のトークン発行情報生成部428が生成したトークン発行情報に基づいて生成されるスマートコントラクトである。
ブロックチェーンネットワーク55上に設けられるチャレンジコントラクト501、サンクストークンコントラクト502、及びチアリングトークンコントラクト503によって、あるチャレンジをユーザに達成させる可能性を高めるという機能を持つdapp(Decentralized application)が構成される。ユーザは、資金提供者端末10、挑戦者端末20等のクライアント端末を経由し、所定の使用料を支払うことで、dappを利用する。イーサリアムにおける使用料はGASである。
判定用データ送信端末60は、入力部611、表示部612、通信部613、制御部614、記憶部615、及び撮像部616を備える。
入力部611、表示部612、通信部613、及び撮像部616に関しては、入力部111、表示部112、通信部113、及び撮像部116と同様である。判定用データ送信端末60は、保存されたユーザ識別情報を運営者端末40へと送信する。記憶部615には、チャレンジアプリ81が記憶される。
制御部614は。CPU及びメモリを含む。制御部614は、記憶部615に記憶されているチャレンジアプリ81(プログラム)がRAMに読み出され、CPUによって実行されることで、鍵生成部621、アドレス生成部622、アドレス取得部623、ウォレット部624、トランザクション生成部625、判定用データ取得部626、及び鍵秘匿部627として機能する。
鍵生成部621、アドレス生成部622、アドレス取得部623、及びトランザクション生成部625は、鍵生成部121、アドレス生成部122、アドレス取得部123、及びトランザクション生成部125と同様の機能を有する。判定用データ取得部626は、判定用データ取得部226と同様の機能を有する。
鍵秘匿部627は、判定用データ送信端末60のユーザが鍵生成部621によって生成される秘密鍵を、他の端末に移転できないようにする機能を有する。仮想通貨の一般的なウォレットは、秘密鍵の移転やバックアップのために必要な情報をユーザに対して表示する機能を有する。例えば、ウォレットは秘密鍵を画像として表示したり、ニーモニック(Mnemonic)を表示する。鍵秘匿部627は、秘密鍵の移転や、秘密鍵のバックアップのために必要な情報をユーザに対して表示する機能を制限することによって、秘密鍵の移転を制限する。
秘密鍵の移転を制限する理由について説明する。ブロックチェーンネットワーク55において送信者が本当に送ったトランザクションであるかどうかの識別は、トランザクションが送信者の秘密鍵により署名されているかどうかをブロックチェーンネットワーク55の各ノードが検証されることにより行われる。送信者の秘密鍵によってトランザクションに署名を行うということが、そのトランザクションの送信が所有者本人によってなされたということを示すことになる。
秘密鍵を移転すれば、判定用データを、他の端末やソフトウェアを使ってチャレンジコントラクト501に送ることができる。他の端末やソフトウェアを使って、自身の秘密鍵で署名をした判定用データを送れば、チャレンジコントラクト501において、判定用データは、ユーザが保有する端末からのデータなのか、他の端末やソフトウェアからのデータなのかという区別がつかない。
判定用データ送信端末60では、鍵秘匿部627によって秘密鍵の移転を制限することによって、判定用データが判定用データ送信端末60以外の端末から送信されるような事態を避けることが可能となる。よって、判定用データ送信端末60の秘密鍵を用いて署名された判定用データは、判定用データ送信端末60から送られることをスマートコントラクトが確認できる。
図9及び図10のシーケンス図と図11から図21を参照しつつ、チャレンジ支援システム1の動作について説明する。
ステップS101において、運営者端末40がブロックチェーンネットワーク55へ、チアリングトークンコントラクト503を生成するトランザクションを送信する。
ステップS102にて、ブロックチェーンネットワーク55によってトランザクションが承認され、ブロックチェーンネットワーク55にチアリングトークンコントラクト503が生成される。
ステップS103において、ブロックチェーンネットワーク55は、チアリングトークンコントラクト503のコントラクトアドレスCA3を運営者端末40へと送信する。
ブロックチェーンネットワーク55に生成されたチアリングトークンコントラクト503の初期の例を図11に示す。チアリングトークンの通貨単位は「CT」とする。「0x69d…」の公開アドレスはチアリングトークンコントラクト503のコントラクトアドレスCA3である。「0xe33…」の公開アドレスは運営者端末40に保存される秘密鍵に対応する運営者の公開アドレスである。
チアリングトークンコントラクト503は、他のユーザに対して、ETHERと交換するようにして、チアリングトークンを配分する。チアリングトークンの配分が行われた場合、チアリングトークンコントラクト503は図12に示すように、チアリングトークンの保有者の公開アドレスを追加し、その公開アドレスについてチアリングトークンの残高を管理する。
ステップS104において、挑戦者端末20が、ブロックチェーンネットワーク55へ、サンクストークンコントラクト502を生成するトランザクションを送信する。
ステップS105において、ブロックチェーンネットワーク55によりトランザクションが承認され、ブロックチェーンネットワーク55にサンクストークンコントラクト502が生成される。
ブロックチェーンネットワーク55に生成されたサンクストークンコントラクト502の初期の例を図13に示す。チアリングトークンの通貨単位は「TT」とする。「0x202…」の公開アドレスはサンクストークンコントラクト502のコントラクトアドレスCA2である。「0xb2f…」の公開アドレスは、挑戦者端末20に保存される秘密鍵に対応する挑戦者の公開アドレスA2である。ここでは、「0xb2f…」の公開アドレスを有するユーザをユーザAとする。
ステップS106において、ブロックチェーンネットワーク55は、サンクストークンコントラクト502のコントラクトアドレスCA2を挑戦者端末20へと送信する。
ステップS107において、挑戦者端末20は、コントラクトアドレスCA2、挑戦者のユーザ識別情報、及び挑戦者の公開アドレスA2を運営者端末40へ送信する。
ステップS108において、運営者端末40は、コントラクトアドレスCA2、挑戦者のユーザ識別情報及び公開アドレスA2を、資金提供者端末10へ送信する。この処理により、資金提供者端末10が、サンクストークンコントラクト502のコントラクトアドレスCA2と挑戦者の公開アドレスA2を対応付けて記憶することができる。資金提供者端末10には、図14に示すようにアカウント名と公開アドレスが対応付けて記憶される。図14では、公開アドレスに対応するサンクストークンコントラクトがない場合は、サンクストークンコントラクトの公開アドレスは空欄となっている。
ステップS109において、資金提供者端末10は、コントラクトアドレスCA2、挑戦者のユーザ識別情報、公開アドレスA2、契約条件等に基づいて、コントラクト情報を生成する。この時生成されるコントラクト情報の一例を図15に示す。
図15に示されるコントラクト情報は、ユーザAが、自身で一日に一定以上の歩数を歩くチャレンジであるチャレンジAを作成した場合のコントラクト情報である。コントラクト情報の内容は以下の通りである。
挑戦者は、2019年7月1日から2019年7月31日までの期間にチャレンジを行うことができる。目標歩数は、一日あたり8000歩である。挑戦者は、期間の中から任意の20日間を選ぶ。挑戦者が、そのうち連続でも断続的でもよい10日以上の日数において一日当たり8000歩を歩くことでチャレンジが達成される。供託金額は1ETHである。
チャレンジの成功、失敗の判定には、歩数データが用いられる。歩数データは、スマートコントラクトに保存される。
コントラクト情報には、「判定用データ送信端末公開アドレス」の項目が設けられる。この項目に対応する公開アドレスは、判定用データ送信端末60の公開アドレスに対応する。判定用データ送信端末60の公開アドレスは、挑戦者のユーザ識別情報に含まれている場合や、資金提供者のユーザ識別情報に含まれる場合等がある。判定用データ送信端末60を用いない場合は、特段の設定は行われない。
チャレンジ情報には、「チャレンジ開始日」及び「チャレンジ終了期限」の項目が設けられる。チャレンジ開始日とは、挑戦者がチャレンジにとりかかった日である。チャレンジ開始日は、例えば、判定用データの最初の送信が行われた日などとすることができる。
チャレンジ終了期限は、チャレンジを終了しなければならない期限である。図15では、チャレンジ開始日から20日でチャレンジを達成しなければならない。仮に2019年7月5日がチャレンジ開始日である場合、チャレンジ終了期限は、2019年7月24日となる。
コントラクト情報には、「チャレンジ達成度」の項目が設けられる。この項目は、チャレンジコントラクト501が、チャレンジ過程において、歩数データ及び目標歩数からチャレンジの達成度を算出し、記憶するために設けられる。達成度は、例えば、チャレンジにおいて達成すべき目標歩数に対する現在の歩数の割合として算出することができる。
チャレンジが成功した場合、失敗した場合のそれぞれに対して決められた配分先に、供託金が配分設定に基づいて配分される。配分先や配分量は自由に設定できる。配分量は供託金額に対するパーセンテージで設定してもよい。配分量は配分するETHERの量を直接設定してもよい。運営者の手数料は、例えば供託金の2パーセントのようにして、差し引かれる。
配分先を指定する際は、配分先の公開アドレスを直接指定することができる。例えば、資金提供者端末10の撮像部116によって読み取った画像から公開アドレスを取得し、配分先とすることができる。図14に示されるように資金提供者端末10の記憶部115に記憶される公開アドレスを用いることも可能である。
資金の配分状態にはそれぞれ、還付、寄付及び没収が含まれ、資金提供者端末10からは、還付、寄付及び没収で指定した金額の合計が資金額と一致するように指定された配分設定が送られる。還付には、イーサリアムの公開アドレスを保持している任意の還付先及び任意の金額を指定することができる。寄付には、イーサリアムの公開アドレスを保持している任意の寄付先及び任意の金額を指定することができる。チャレンジ成功時・失敗時・中断時に運営者には運営者手数料が支払われるようにしてもよい。
記憶部115に記憶される公開アドレスは、運営者端末40に記憶されるユーザ識別情報と同期可能であり、他のユーザのアドレスが変わった場合には、自動的にその新しいアドレスを取得することができる。
チャレンジ作成時に、チャレンジの中断を示す情報に基づいてチャレンジを中断することが可能か否かを決めることができる。
チャレンジの中断には、ギブアップによる中断と自己解体による中断がある。ギブアップによる中断は、資金提供者や挑戦者がチャレンジの達成を諦め、チャレンジの中断を示す情報をトランザクションとしてスマートコントラクトに送信することによる中断である。
自己解体による中断は、何らかの事情でチャレンジコントラクト501から資金が出ない等のトラブルが発生し、運営者が利用者からのリクエストによりチャレンジコントラクト501を自己解体させる場合や、警察、法令、裁判所又は政府機関の命令、要求又は要請があった場合、又は運営者が独自に必要と判断した場合がある。自己解体による中断の場合、運営者はチャレンジコントラクト501を自己解体させるトランザクションをチャレンジコントラクト501に送信する。
ギブアップした場合において、供託金の配分は、運営者の手数料を差し引いた残りが事前に決められた配分先に供託金が配分されるギブアップパターンAや、ギブアップするまでのチャレンジの達成度を考慮し、チャレンジ成功時と同じ配分先に供託金が配分され、運営者の手数料を差し引いた残りが資金提供者に戻されるギブアップパターンB等がある。
チャレンジコントラクト501を自己解体させる場合において、供託金の配分は、資金提供者に資金を一部返還する自己解体モードAや、運営者に全額送金される自己解体モードB等がある。
ステップS110において、資金提供者端末10は、ブロックチェーンネットワーク55へ、コントラクト情報に基づいて、チャレンジコントラクト501を生成するためのコントラクト生成トランザクションを送信する。
ステップS111において、ブロックチェーンネットワーク55によってコントラクト生成トランザクションが承認され、ブロックチェーンネットワーク55にチャレンジコントラクト501が生成される。生成されたチャレンジコントラクト501は、図15で説明したコントラクト情報に加えて、図16において「0x202…」で示されるチャレンジコントラクト501のコントラクトアドレスCA1及びチャレンジ結果のデータを含む。チャレンジ結果は、成功、失敗、ギブアップパターンA、ギブアップパターンB、自己解体モードA、又は自己解体モードBのいずれの結果に従って供託金の配分が行われるかを示す情報である。
ステップS112―1において、ブロックチェーンネットワーク55はチャレンジコントラクト501のコントラクトアドレスCA1を資金提供者端末10へ送信する。ステップS112-2において、資金提供者端末10は、コントラクトアドレスCA1を宛先として、チャレンジコントラクト501に供託金額を送金する。チャレンジコントラクト501は、供託金額をコントラクトアドレスCA1に紐づいた残高として保持する。
ステップS113において、資金提供者端末10は運営者端末40へコントラクト情報及びコントラクトアドレスCA1を送信する。運営者端末40は、図17に示されるように、各チャレンジについての情報をチャレンジDB4151へと記録する。なお、「配分金受取者」の項目に記憶される情報には、チャレンジコントラクト501等のスマートコントラクトが含まれていてもよい。また、「配分金受取者公開アドレス」の項目に記憶される情報には、スマートコントラクトのコントラクトアドレスが含まれていてもよい。また、運営者端末40は、図18に示されるように、ユーザ毎に、ユーザのユーザ識別情報及びユーザが関連するチャレンジを、会員DB4152へと記録する。
ステップS114において、運営者端末40は挑戦者端末20へ、コントラクト情報及びコントラクトアドレスCA1を含むチャレンジ情報を送信する。これにより、挑戦者は、チャレンジの内容や、どのコントラクトアドレスへと判定用データを送信すべきかについての情報を得ることができる。
図10に示されるステップS121にて、挑戦者はチャレンジ期間中に、挑戦者端末20からチャレンジコントラクトへと判定用データを送信する。判定用データの送信には、必ずしも挑戦者端末20を用いなくともよい。ステップS122のように、判定用データ送信端末60を用いて判定用データをチャレンジコントラクトへ送信してもよい。
挑戦者端末20からチャレンジコントラクトに送信される判定用データの一例は図19に示される。図20には、挑戦者端末20からチャレンジコントラクトに送信される判定用データ、送信されたトランザクションにより、チャレンジコントラクト501に保存されるデータ構造が示されている。データの投稿日時として、トランザクションが格納されるブロックチェーンネットワーク55のブロックの生成日時が、図19のデータに加えられている。また、チャレンジコントラクト501によって達成日数の数が記録されている。
ステップS123において、挑戦者は、自身のチャレンジに対する応援を行う応援者に対して、サンクストークンを配分するトランザクションをサンクストークンコントラクトへ送信する。
挑戦者は、図21に示されるように、応援者端末30にチャレンジアプリ81をインストールしているチャレンジ支援システム1の利用者のアドレスを運営者端末40から取得し、記憶している。挑戦者は、各アドレスに対してサンクストークンを配分することができる。
ステップS124において、ブロックチェーンネットワーク55によってトランザクションが承認されることで、サンクストークンコントラクト502の残高が更新される。サンクストークンコントラクト502の残高の更新によってサンクストークンの応援者への配分が行われる。
挑戦者からサンクストークンを配分された応援者は、他の応援者に対して、サンクストークンを再配分することができる。サンクストークンを再配分する場合は、再配分を行う元の応援者のみが再配分送付先の公開アドレスを知っていればよい。つまり、サンクストークンは転々流通することが可能である。
サンクストークンの配分並びに再配分が行われた後のサンクストークンコントラクト502の残高の一例を示す。挑戦者であるユーザAの残高は0となっている。図22に示されるように、挑戦者端末20はユーザD、ユーザE、ユーザFについて、それぞれの公開アドレスを取得しており、それぞれに対してサンクストークンを配分した。ユーザAはユーザDに20TT、ユーザEに50TT、ユーザFに30TTの配分を行った。その結果、サンクストークンの残高は、図22にてサンクストークン残高(1)で示されるようになる。その後、ユーザAが当初は把握していない応援者端末30Aを有するユーザGに、ユーザFから10TTが再配分された結果が図22のサンクストークン残高(2)である。
ステップS125において、挑戦者端末20はチャレンジコントラクト501へ終了判定データを送信する。終了判定データは、ステップS126のように判定用データ送信端末60から送信されてもよい。また、ステップS127のように運営者端末40から送信されてもよい。
終了判定データはチャレンジコントラクト501がチャレンジの成功、失敗を判断するために用いられる。例えば、図15のコントラクト情報に従って、7月5日から7月24日までの20日間のうち10日間、一日当たり8000歩以上歩くというチャレンジがあるとする。この時7月5日から7月13日までの9日間は8000歩以上歩いているとする。この場合、7月14日の歩数データとして10000歩を送ったときにチャレンジ成功が終了判定となる。
7月14日の10000歩のデータが、「終了判定歩数データ」となる。終了判定歩数データを送信するトランザクションがブロックチェーンネットワーク55に承認された時点でチャレンジ成功が確定する。
また、上記と同じ条件のチャレンジにおいて、7月5日から7月13日までの9日間は8000歩以上歩いているとする。その後、7月14日から7月23日までは8000歩未満しか歩いていない場合、挑戦者が7月24日の歩数として5000歩を送ると、この5000歩が、「終了判定歩数データ」となり、チャレンジ失敗が終了判定となる。
挑戦者が、7月24日の5000歩のデータを送ることをためらったり、忘れたりする場合、チャレンジコントラクト501はチャレンジの成功、失敗を判断できない。
スマートコントラクトが、ブロックチェーンネットワーク55におけるブロックをマイニングしたマイナーが記録するブロックタイムによる日付情報を取り込んでもよい。その他のブロックチェーンネットワークが有する機能を用いて日付情報を取り込んでもよい。第1実施形態におけるスマートコントラクトは、外部からの何らかの日付に関する情報を必要とする。そのため、チャレンジコントラクト501において、7月24日を過ぎても歩数データが送られてこない場合はチャレンジ失敗とみなすという設定は行えないからである。資金提供者や運営者等の関係者がスマートコントラクトに対して日付に関する情報をトランザクションとして送ってもよい。
前述の例で、7月24日の5000歩のデータが送られない場合、7月25日や26日に運営者が資金提供者や挑戦者等に対して、歩数データが送られていないことをメールやアプリ上のお知らせ等によって知らせてもよい。運営者は、チャレンジコントラクト501におけるデータの状態をアプリからの情報又はチャレンジコントラクト501を直接参照することによって知ることができる。挑戦者は、本来チャレンジ期間中の歩数を適切なタイミングで全部送信することが求められるが、それを履行しない場合は、チャレンジ期間終了後一定の猶予期間を経た後、後述のようにその未送信の歩数はゼロであるとチャレンジコントラクト501に取り扱いされることになる。前述のお知らせメールを受け取った資金提供者が、チャレンジコントラクト501に対して「本日は7月26日」という日付データをトランザクションとして送ると、チャレンジコントラクト501は挑戦者からの未送信の7月24日の歩数をゼロとして取り扱うので、チャレンジコントラクト501は、チャレンジ失敗と判定する。この場合、資金提供者からの日付に関する情報が、「終了判定日付データ」となっている。
上記のように誰かが「終了判定データ」を送信し、「終了判定データ」がブロックチェーンネットワーク55に取り込まれると、自動的にチャレンジコントラクト501が事前に決められた通りに動き始める。
終了判定データがチャレンジコントラクト501へ送られることでチャレンジ達成判定が可能となる。ステップS128において、ブロックチェーンネットワーク55のチャレンジコントラクト501がチャレンジ達成判定処理を行う。
ステップS129において、判定結果に基づいて、チャレンジコントラクト501がETHERの配分処理を行う。
チャレンジコントラクト501によるETHERの配分処理は、イーサリアムでは、インターナルトランザクションをチャレンジコントラクト501が生成することによって行われる。イーサリアムにおけるインターナルトランザクションは、挑戦者等から受け取ったトランザクションをトリガーにしてスマートコントラクトが生成するトランザクションである。
ステップS130において、チャレンジコントラクト501からETHERが配分されたサンクストークンコントラクト502によって、サンクストークンの残高に基づいた、応援者へのETHERの配分処理が行われる。
サンクストークンの残高に基づいたETHERの配分について、図22のサンクストークン残高(2)に基づく場合を例に説明する。チャレンジコントラクト501が供託金を1ETH保有するとする。1ETHの供託金のうち、0.8ETHがサンクストークンコントラクト502へと配分されるとする。この場合、ユーザD、ユーザE、ユーザF、ユーザGそれぞれのサンクストークンの持分に従って0.8ETHが配分される。ユーザDに対しては、0.16ETH、ユーザEに対しては0.4ETH、ユーザFに対しては0.16ETH、ユーザGに対しては0.08ETHが配分される。
サンクストークンコントラクト502は、ETHERだけでなく、各種トークンがサンクストークンコントラクト502に送られてきたときも同様に配分してよい。
資金提供者がチャレンジコントラクト501へと供託する仮想通貨ベースの供託金額の価格変動リスクヘッジのため、チャレンジコントラクト501の作成に当たり、常に同じレートで法定通貨に交換できる、価値が変動しない仮想通貨を用いて今回のチャレンジ支援システム1を作ってもよい。
チャレンジコントラクト501が規定するチャレンジは、歩数に関するチャレンジとは異なる他の種類のチャレンジとしてもよい。図23から図26を参照して、チャレンジのバリエーションについて説明する。
図23には、安全運転チャレンジについての、スマートコントラクトの内容が示される。判定用データは、自動車や、運転者が保有するスマートフォンから、自動車の速度、シートベルト着用の有無、急ブレーキ、急発進の情報である。判定用データの取得及び送信に、ウォレット機能を持ったIoTデバイスを使ってもよい。IoTデバイスからスマートフォン等に情報を転送し、スマートフォンに内蔵するアプリのウォレットの秘密鍵で署名したトランザクションをブロックチェーンネットワークに送ってもよい。運送会社が、トラックドライバーに対して、1日の運転で判定条件が満たされたらETHERやトークンを自動的に送るチャレンジに関するスマートコントラクトを作ってもよい。
図24には、血糖値スパイク予防チャレンジについての、スマートコントラクトの内容が示される。血糖値が急激に上昇する血糖値スパイクが問題となっている。例えば朝食を抜いて、昼食に大量の糖質を摂取すると血糖値スパイクが起こる。野菜や海藻などを食事の最初に食べる、長時間空腹が続くようにしない等の工夫を行うことで血糖値スパイクを予防することができる。腕に取り付けることで継続的に血糖値を測定することができる機器からの血糖値データを、スマートフォン等に転送し、スマートフォンに内蔵するアプリのウォレットの秘密鍵で署名したトランザクションをブロックチェーンネットワークに送ってもよい。保険会社が保険加入者に対して、血糖値を急激に上昇させないライフスタイルを勉強してもらうために図24のようなスマートコントラクトを作ってもよい。加入者は短期的に経済的な見返りがないと真剣にやらない。まず、血糖値スパイクを起こさない方法のレクチャーを行いチャレンジを開始するとよい。
図25には、子供勉強チャレンジについての、スマートコントラクトの内容が示される。子供がIoTデバイスを取り付けたえんぴつを使用して勉強をすると、IoTデバイスからスマートコントラクトに対して一定時間勉強した情報が送信され、IoTデバイスのウォレット又は、子供専用のウォレットにご褒美としてETHERやオンラインゲームで使用できるトークン等が送られる。IoTデバイスにETHERが送られた場合、貯まったETHERに応じてIoTデバイスの色が変化し、子供はその色の変化を見て勉強を沢山するとお小遣いが増えることを意識し、勉強に対するモチベーションが高まる。親の経済レベルに合わせて、ご褒美の金額は調整するとよい。成功時に兄弟にも一部ETHERを送ることで、勉強の邪魔をしなくなる。
図26には、禁煙チャレンジについての、スマートコントラクトの内容が示される。保険適用の治療ではなく、自費治療を想定する。禁煙を希望する患者に対して、医師が60万円の禁煙チャレンジを院内処方する。患者は、病院に対して60万円を支払う。病院は、利益と経費5万円を差し引いた、55万円分のETHERを使って禁煙チャレンジスマートコントラクトを作る。患者の禁煙が達成されたかどうかは、呼気中のCOを測定する機器を使って医師が判定してもよい。CO測定のIoTデバイスで呼気中のCOを測定し、そのデータをIoTデバイスに内蔵したウォレットからスマートコントラクトに送ってスマートコントラクトが禁煙チャレンジの成功・失敗を判定してもよい。より高額の禁煙チャレンジを処方してもよい。
チャレンジ支援システム1が稼働するにあたって、ブロックチェーンネットワーク55における、チャレンジコントラクト501等の各種スマートコントラクトの生成及び各種トランザクションの送信、供託金の供託には、仮想通貨が必要となる。資金提供者等は仮想通貨取引所等から仮想通貨を購入する。仮想通貨の購入方法の他の例について説明する。
資金提供者、挑戦者、応援者等は仮想通貨やトークンを、コンビニ等で購入してもよい。購入者は、仮想通貨やトークンの情報を持つギフト券を購入する。そのギフト券の一部を削ると、二次元バーコードが出てくる。二次元バーコードは、ギフト券ウォレットの秘密鍵である。ギフト券の発行者は、あらかじめこのギフト券ウォレットの公開アドレスにギフト券に記載されたものと同額の仮想通貨やトークンを送付しておく。ギフト券の発行者はギフト券の秘密鍵情報は一切保管せず、ギフト券の公開アドレスのみを保管して管理するものとする。
購入者は自身のアプリで二次元バーコードを読み取り、アプリ内にギフト券ウォレットを取り込む。ユーザはギフト券ウォレットの秘密鍵の情報を取得することとなるので、ギフト券ウォレットを自由に使うことができる。
又は、購入者がコンビニのATM画面でギフト券を選択し、入金すると、上記と同じ秘密鍵である二次元バーコードが発行される。その場でアプリを使用し、二次元バーコードを読み取ることで、アプリ内にギフト券ウォレットを取り込んでもよい。
この場合、ギフト券発行者は、ATMからリクエストされたときだけ秘密鍵を作成し、それに対応する公開アドレスに送金すればよい。紙等のギフト券の場合は、事前にギフト券ウォレットに送金しておかなければならない。二次元バーコードには、秘密鍵情報が入っており実質的に金券と同じような価値があるので取り扱いに注意が必要である。
ギフト券ウォレットの秘密鍵を読み取った時点で、購入者のアプリ内には、元々所有していたウォレットと、ギフト券ウォレットの2つが存在することになる。言い換えると、仮想通貨を管理する秘密鍵を2つ所有するということである。購入者は、ギフト券ウォレットの残高を全て元々所有していたウォレットに送信し、ギフト券ウォレットを削除する。
又は、購入者がコンビニのレジに行き、仮想通貨、トークンが欲しいと店員に伝える。現金を支払うと、店員は購入者のアプリの中に元々あったウォレットの二次元バーコードを読み取る。これは、購入者の公開アドレスである。コンビニが自身の仮想通貨、トークンをその公開アドレスに直接送るようにしてもよい。
又は、ギフト券発行者が作成したスマートコントラクトに対して、コンビニ端末から仮想通貨と購入者の公開アドレスをトランザクションとして送ると、スマートコントラクトから直接購入者のウォレットに仮想通貨やトークンが送信されるようにしてもよい。
チャレンジアプリ80によるチャレンジコントラクトの生成における、チャレンジアプリ80がインストールされる端末に表示される画面の遷移について、図27から図33を参照しつつ説明する。
図27の画面801には、チャレンジ欄8011、資金提供者欄8012、挑戦者欄8013、供託金額欄8014が設けられる。チャレンジ欄8011には、チャレンジ名が入力される。資金提供者欄8012、挑戦者欄8013には、資金提供者のアカウント名が表示される。資金提供者欄8012、挑戦者欄8013がそれぞれ有するボタンBT1又はBT2が選択されると、図28に示される画面802が表示される。
画面802には、端末に記憶されるアカウント名と公開アドレスが対応付けられて表示される。ユーザは、各行を選択することによって、資金提供者及び挑戦者を選択することができる。ユーザは図28のボタンBT4を選択することによって、アカウント名及びアドレスの組を追加可能である。
図27の供託金額欄8014には、資金提供者が供託する供託金額が入力される。ユーザが画面801のボタンBT3を選択することで、図29の画面803が表示される。
画面803には、期限欄8031及び条件欄8032が設けられる。期限欄8031にはチャレンジの開始可能期間及び終了可能期間が入力される。条件欄8032には、チャレンジの種類、チャレンジ実行日数、歩数、達成すべき日数が入力される。
ユーザが画面803のボタンBT5を選択することによって、図30の画面804が表示される。
画面804には成功時配分欄8041、失敗時配分欄8042、GAS手数料欄8043が設けられる。
成功時配分欄8041には、成功時に資金を受け取るユーザのアカウント名及び、受け取る額が入力される。また、供託金額の2パーセントの資金が運営者手数料として配分される。運営者手数料は自由に設定してよい。失敗時配分欄8042についても同様である。挑戦者宛GAS手数料欄には、挑戦者が歩数情報をスマートコントラクトに送信するときに必要なGAS手数料を補助する金額が入力される。
ユーザが画面804のボタンBT6を選択すると、図31の画面805が表示される。画面805は、ギブアップ選択欄8051及びギブアップパターン選択欄8052を有する。ユーザは、ギブアップ選択欄8051の項目を選択することで、ギブアップを可能とするかを選択できる。ユーザは、ギブアップパターン選択欄8052の項目を選択することで、ギブアップ時の供託金の配分方法を選択できる。
ユーザが画面805のボタンBT6を選択すると、図32の画面806が表示される。画面806には、ここまでに設定した条件が一覧として表示される。
ユーザは画面805のボタンBT7を選択することによって、当該チャレンジを管理するチャレンジコントラクトをブロックチェーンネットワーク55に生成するトランザクションがブロックチェーンネットワーク55へと送信される。
また、画面805のボタンBT8を選択することによって、図33に示されるような、作成するチャレンジの情報を他の端末で読み取折り可能とするための画面806を生成することができる。生成された画像を他の端末が読み取ることによって、チャレンジに関する情報を他の端末が取得可能となる。
第1実施形態において説明してきたプログラムは、記憶媒体に格納することができる。当該プログラムを格納した記憶媒体は、非一時的な記憶媒体(Non―transitory computer readable medium)であってもよい。非一時的な記憶媒体は特に限定されないが、例えば、USBメモリ又はCD-ROM等の記憶媒体であってもよい。
第1実施形態では、資金提供者端末10は、チャレンジコントラクト501を生成するとしたが、チャレンジ支援にあたって作成されるスマートコントラクトは複数であってもよい。複数のスマートコントラクトが連携した処理を行うようにスマートコントラクトを構築し、より複雑な条件が設定されたチャレンジを作成することができる。
第2実施形態について説明する。第2実施形態以降の実施形態では第1実施形態と共通の事柄についての記述を省略し、異なる点についてのみ説明する。
第2実施形態に係るチャレンジ支援システム1Aは、図34に示されるように協賛企業端末70をさらに備える。協賛企業端末は、ブロックチェーンネットワーク55Aにおけるアカウント及び公開アドレスを有する。
協賛企業は例えば、飲料メーカーであるとする。挑戦者は、協賛企業の飲料メーカーの飲料を購入する。飲料にはウェブサイトのアドレスを示す画像が添付される。飲料に添付された画像を読み取り、運営者又は協賛企業のウェブサイトにアクセスが可能となる。ウェブサイトにおいて、挑戦者に関する情報として、氏名、年齢、居住地、自身の公開アドレス、チャレンジコントラクトのコントラクトアドレス、サンクストークンコントラクトのコントラクトアドレス等を入力する。
協賛企業は、チャレンジコントラクトに対して、ETHERや、協賛企業がブロックチェーンネットワーク55Aにおいて発行する製品交換トークン、チアリングトークン等を送付する。チャレンジコントラクトに送られた製品交換トークン等は、チャレンジの達成度に応じて段階的に有効化されてもよい。
製品交換トークンは、協賛企業の飲料と交換できる。製品交換トークンの価値は、製品交換トークンと交換可能な本数、有効期限、利用可能地域を自由に設計できる。例えば、交換は1対1でなくても良く、1つの製品交換トークンに対して5本の飲料と交換してもよい。
製品交換トークンの実際の使われ方について一例を説明する。製品交換トークンはユーザのウォレットで管理される。ユーザはコンビニに行き、レジ横に置かれたコンビニが保有するトークン受け取り用公開アドレスをアプリで読み取る等して取得する。ユーザは、そのアドレス宛に製品交換トークンを送付する。コンビニは、コンビニが保有するトークン受け取り用公開アドレスで受けとった製品交換トークンが有効かどうかを確認する。
コンビニは受け取った製品交換トークンの対価として飲料をユーザに渡す。コンビニは後日製品交換トークンを運営者又は協賛企業との間で清算する。ユーザに手間をかけさせないために、コンビニは、自身の端末によって、コンビニがユーザの製品交換トークンのウォレットの公開アドレスを取得し、ユーザからコンビニへ製品交換トークンを送付するトランザクションを生成する。生成されたトランザクションの確認画面をユーザのアプリ内に表示させ、ユーザがその内容を承認し、トランザクションとして送信するとユーザの製品交換トークンはコンビニに渡される。
第2実施形態のように、チャレンジコントラクト501、サンクストークンコントラクト502、及びチアリングトークンコントラクト503によるトークンの配分に加えて、製品交換トークンを組み合わせることによって構成されるdappによって、家族や友人だけでなく、企業の支援を受けながらユーザがチャレンジを達成する可能性をより高めることができる。
第3実施形態について説明する。第3実施形態に係るチャレンジ支援システム1Bでは、図35に示されるように、ブロックチェーンネットワーク55Bに、サンクストークンコントラクト502A、サンクストークンコントラクト502B、及びサンクストークンコントラクト502Cが設けられる点が異なる。
サンクストークンコントラクト502A及びサンクストークンコントラクト502Cは、第1実施形態におけるサンクストークンコントラクト502と同様にチャレンジ毎に挑戦者が応援者の応援に対して配分するトークンの残高を管理するスマートコントラクトである。
また、サンクストークンコントラクト502Cは、サンクストークンコントラクト502Aが関係するチャレンジとは別のチャレンジに関係する。
サンクストークンコントラクト502Bは、挑戦者に対する継続的な応援の貢献を表すものである。サンクストークンコントラクト502Bは、サンクストークンコントラクト502Aに基づいて残高が更新される。サンクストークンコントラクト502Bはサンクストークンコントラクト502Aとは異なるトークンの残高を管理する。トークンの通貨単位は、サンクストークンコントラクト502AはTTA、サンクストークンコントラクト502BはTTB、サンクストークンコントラクト502CはTTCとする。
図36に示されるように、TTBの初期の残高はユーザAからユーザDまで0であるとする。あるチャレンジに対する、サンクストークンコントラクト502Aによるトークンの配分が図37に示されるようになったとする。サンクストークンコントラクト502Bの残高の加算量は、サンクストークンコントラクト502Aのトークンの残高に基づいて決定される。
サンクストークンコントラクト502Bにおける加算量は、サンクストークンコントラクト502Aの各ユーザについて、発行済みトークンに対する割合に難易度係数をかけ合わせた量である。サンクストークンコントラクト502Aが関係するチャレンジの難易度は難易度係数が0.8である。
あるチャレンジに対する、サンクストークンコントラクト502Cによるトークンの配分が、図38に示されるようになったとする。サンクストークンコントラクト502Aにおける場合と同様に、サンクストークンコントラクト502Bの残高の加算量は、サンクストークンコントラクト502Cの残高に基づいて決定される。
サンクストークンコントラクト502Bにおける加算量は、サンクストークンコントラクト502Cの各ユーザについて、発行済みトークンに対する割合に難易度係数をかけ合わせた量である。サンクストークンコントラクト502Cが関係するチャレンジの難易度は難易度係数が0.2である。
サンクストークンコントラクト502A及びサンクストークンコントラクト502Cによるトークンの配分に基づいて決定された加算量によって、サンクストークンコントラクト502Bの残高が図39のように更新される。
あるチャレンジだけの応援者の貢献度を管理するサンクストークンコントラクト502A又はサンクストークンコントラクト502Cによるトークンの管理に基づいて、サンクストークンコントラクト502Bのように挑戦者の一生ものの応援者の貢献度を管理することで、長期的な応援が可能となる。
健康保険組合や保険会社等が、一時的な応援者に対するサンクストークンコントラクト502Aではなく、サンクストークンコントラクト502Bに対して、インセンティブを支払う方が、組合員・加入者に対する継続的な応援が行われる可能性がある。また、サンクストークンコントラクト502Bが管理するトークンは他の人に譲渡できないようにトークン設計をしてもよい。
第4実施形態について説明する。第4実施形態では、図40に示されるように、ブロックチェーンネットワーク55Cが、チャレンジアンドサンクストークンコントラクト504を有する点が第1実施形態とは異なる。
チャレンジアンドサンクストークンコントラクト504は、第1実施形態におけるチャレンジコントラクト501とサンクストークンコントラクト502を兼ねるものである。チャレンジアンドサンクストークンコントラクト504は、図41に示されるトークン残高5041のように、それぞれのチャレンジ結果に対応した3種類のトークンをチャレンジ開始時に各関係者に配分する。
各トークンは、チャレンジ結果が成功、失敗又はギブアップのいずれか一つに決定した後に結果に対応するトークンが有効になるものとする。
挑戦者は図42に示されるように、自身の成功に期待して、自己のトークンを下請けに対して送付できる。チャレンジ成功時の配分金受取者も同様に、下請けに対してトークンを配分できる。
チャレンジが成功すれば、成功時のトークンが有効になるので、トークンを配分された下請けは挑戦者をより積極的に応援する。
チャレンジが失敗した場合は、成功時トークンは無効となり、失敗時のトークンが有効となる。ギブアップ時も同様である。
チャレンジアンドサンクストークンコントラクト504は、図43に示されるトークン残高5041Aのように、1種類のトークンについて管理するものであってもよい。
1種類のトークンについて管理する場合、チャレンジ開始時に初期配分として各関係者にトークンが配布される。トークンを受け取った人は、それを下請けに出して協力を得ることができる。例えば、挑戦者が下請けに0.2トークン渡したとする。チャレンジが成功した場合、下請けは、成功時配分に従うと、挑戦者のトークンが60倍されるため、0.2トークンの60倍の12トークンを保有することになる。
第4実施形態では、チャレンジ中に挑戦者や配分金受取者等の手元にトークンを与え、チャレンジ結果に応じて、トークンに価値が生じる。これによって、サンクストークンが分配用の媒介物として機能するのではなく、トークンそれ自体に価値を与えつつ、チャレンジが行われるようにすることができる。
第5実施形態について説明する。第5実施形態では、図44に示されるように、ブロックチェーンネットワーク55Dが、予想コントラクト505を有する点が、第1実施形態と異なる。予想コントラクト505は挑戦者によるチャレンジの過程、成功、失敗に対して、予想を行い、チアリングトークンで賭金を支払う。
予想コントラクト505は、応援者等からのチアリングトークンを受け取り次第、自動的に予想コントラクトの作成者に一定の手数料を支払う。また、チャレンジコントラクト501に対してもチアリングトークンを送付する。チャレンジコントラクト501に集積され、保持されたチアリングトークンは、例えば、チャレンジが成功したときに、チャレンジ成功の配分と同じ条件で関係者に配分される。チャレンジコントラクト501に送られるこのチアリングトークンは、自分や人のお金を供託してまでリスクを取って自身の歩行等のチャレンジに挑戦することに対するインセンティブとなる。
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。