(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024085345
(43)【公開日】2024-06-26
(54)【発明の名称】懸賞システムサーバ、懸賞実施方法、及びプログラム
(51)【国際特許分類】
G06Q 50/10 20120101AFI20240619BHJP
【FI】
G06Q50/10
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022199847
(22)【出願日】2022-12-14
(71)【出願人】
【識別番号】522246016
【氏名又は名称】株式会社プレイシンク
(74)【代理人】
【識別番号】100130982
【弁理士】
【氏名又は名称】黒瀬 泰之
(72)【発明者】
【氏名】西窪 洋平
(72)【発明者】
【氏名】大橋 寛史
【テーマコード(参考)】
5L049
5L050
【Fターム(参考)】
5L049CC19
5L050CC19
(57)【要約】
【課題】抽選を他社に依存することなく、抽選の透明性を確保できるようにする。
【解決手段】懸賞システムサーバは、順序付けられた抽選結果を定義するボックス12、及び、ボックス12を用いて抽選を行う懸賞処理プログラム11を含む懸賞実行用スマートコントラクト10を、ボックス12に関する情報のうち未抽選の抽選結果を除く部分、及び、懸賞処理プログラム11のソースコードを公開情報としてブロックチェーンに記録し、抽選リクエストに応じて懸賞処理プログラム11を動作させることにより、該抽選リクエストに対する抽選結果を取得する。
【選択図】
図3
【特許請求の範囲】
【請求項1】
順序付けられた抽選結果を定義するボックス、及び、前記ボックスを用いて抽選を行う懸賞処理プログラムを含むスマートコントラクトを、前記ボックスに関する情報のうち未抽選の前記抽選結果を除く部分、及び、前記懸賞処理プログラムのソースコードを公開情報としてブロックチェーンに記録し、
抽選リクエストに応じて前記懸賞処理プログラムを動作させることにより、該抽選リクエストに対する抽選結果を取得する、
懸賞システムサーバ。
【請求項2】
前記ボックスは、順序付けられた複数のレコードを含む配列を含み、
前記複数のレコードはそれぞれ賞品を示す情報を含む、
請求項1に記載の懸賞システムサーバ。
【請求項3】
前記ボックスに関する情報のうち未抽選の前記抽選結果を除く部分は、現在までの抽選数、残りの抽選数、賞品の種類の配列、賞品の種類ごとの個数の配列、抽選済みの前記抽選結果を含む、
請求項1に記載の懸賞システムサーバ。
【請求項4】
前記賞品はNFT(Non-Fungible Token)であり、
前記賞品を示す情報は、対応するNFTを含むNFTコントラクトのトークンIDである、
請求項2又は3に記載の懸賞システムサーバ。
【請求項5】
順序付けられた抽選結果を定義するボックス、及び、前記ボックスを用いて抽選を行う懸賞処理プログラムを含むスマートコントラクトを、前記ボックスに関する情報のうち未抽選の前記抽選結果を除く部分、及び、前記懸賞処理プログラムのソースコードを公開情報としてブロックチェーンに記録するステップと、
抽選リクエストに応じて前記懸賞処理プログラムを動作させることにより、該抽選リクエストに対する抽選結果を取得するステップと、
を含む懸賞実施方法。
【請求項6】
順序付けられた抽選結果を定義するボックス、及び、前記ボックスを用いて抽選を行う懸賞処理プログラムを含むスマートコントラクトを、前記ボックスに関する情報のうち未抽選の前記抽選結果を除く部分、及び、前記懸賞処理プログラムのソースコードを公開情報としてブロックチェーンに記録するステップ、及び、
抽選リクエストに応じて前記懸賞処理プログラムを動作させることにより、該抽選リクエストに対する抽選結果を取得するステップ、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、懸賞システムサーバ、懸賞実施方法、及びプログラムに関する。
【背景技術】
【0002】
企業のプロモーション活動などで用いられる懸賞や各種のくじは、申し込み、抽選、賞品又は賞金の授与という一連の流れに沿って実行される。しかしながら、このうち特に「抽選」の部分について、以前より透明性に欠けるとの指摘があり、改善が必要とされている。
【0003】
詳しく説明すると、懸賞や各種のくじを実現する懸賞処理システムは、ソフトウェアを用いて製作されている。ソフトウェアには、ソースコードが公開されているオープンソースソフトウェアと、ソースコードが公開されていないプロプライエタリソフトウェアとがあるが、いずれを用いて懸賞処理システムを製作したとしても、ユーザーは、懸賞処理システムを動かしているソフトウェアのソースコードを知ることができない。これは、そもそもソースコードが公開されていないプロプライエタリソフトウェアでは当然のことであるが、ソースコードが公開されているオープンソースソフトウェアであっても、実際に懸賞処理システムを動かしているバイナリコードと、公開されているソースコードとが同一であることをユーザーが確認するのは不可能であることによる。懸賞処理システムが遠くのサーバ内にあってユーザーの手元にない場合、この確認はさらに困難になる。ソースコードが分からない以上、懸賞処理システムによって行われる抽選をユーザーが全面的に信用することは不可能である。
【0004】
ギャンブルの例であるが、米国においては、ギャンブルを実現するためのシステムには、州政府によって管理される乱数発生器の利用が義務付けられている。また、日本では、パチンコ台の動作を制御しているソフトウェアが改ざんされないように、パチンコ台に封印シールを貼付することが義務付けられている。これらの事実は、ソフトウェアによって行われる抽選が信用できないものであることを示唆している。
【0005】
特許文献1には、ソフトウェアによって行われる抽選の透明性を確保するための技術の一例が開示されている。この技術においては、広告くじへの申し込み時に、ロト6(登録商標)やミニロト(登録商標)などの申込数字と同じ構造の番号である「広告くじ識別情報」が割り当てられる。そして、ロト6(登録商標)やミニロト(登録商標)の当選番号と同じ「広告くじ識別情報」を割り当てられた申し込みが当選となる。こうすることで、広告くじ主催者による恣意的な抽選が防止されるので、広告くじの透明性が向上することになる。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1の技術では、抽選を他社に依存していることから、独自のくじを行っているとは言い難い状況になってしまっている。
【0008】
したがって、本発明の目的の一つは、抽選を他社に依存することなく、抽選の透明性を確保できる懸賞システムサーバ、懸賞実施方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0009】
本発明による懸賞システムサーバは、順序付けられた抽選結果を定義するボックス、及び、前記ボックスを用いて抽選を行う懸賞処理プログラムを含むスマートコントラクトを、前記ボックスに関する情報のうち未抽選の前記抽選結果を除く部分、及び、前記懸賞処理プログラムのソースコードを公開情報としてブロックチェーンに記録し、抽選リクエストに応じて前記懸賞処理プログラムを動作させることにより、該抽選リクエストに対する抽選結果を取得する、懸賞システムサーバである。
【0010】
本発明による懸賞実施方法は、順序付けられた抽選結果を定義するボックス、及び、前記ボックスを用いて抽選を行う懸賞処理プログラムを含むスマートコントラクトを、前記ボックスに関する情報のうち未抽選の前記抽選結果を除く部分、及び、前記懸賞処理プログラムのソースコードを公開情報としてブロックチェーンに記録するステップと、抽選リクエストに応じて前記懸賞処理プログラムを動作させることにより、該抽選リクエストに対する抽選結果を取得するステップと、を含む懸賞実施方法である。
【0011】
本発明によるプログラムは、順序付けられた抽選結果を定義するボックス、及び、前記ボックスを用いて抽選を行う懸賞処理プログラムを含むスマートコントラクトを、前記ボックスに関する情報のうち未抽選の前記抽選結果を除く部分、及び、前記懸賞処理プログラムのソースコードを公開情報としてブロックチェーンに記録するステップ、及び、抽選リクエストに応じて前記懸賞処理プログラムを動作させることにより、該抽選リクエストに対する抽選結果を取得するステップ、をコンピュータに実行させるためのプログラムである。
【発明の効果】
【0012】
本発明によれば、何人もボックス及び懸賞処理プログラムを改ざんできないことが明確になり、しかも、未抽選の抽選結果を除いてそれらの内容を誰でも確認できるので、抽選を他社に依存することなく、抽選の透明性を確保することが可能になる。
【図面の簡単な説明】
【0013】
【
図1】本発明の実施の形態による懸賞処理システム1を含むシステムの構成を示す図である。
【
図2】ユーザー端末2、懸賞提供者サーバ3、及び懸賞システムサーバ4のハードウェア構成の一例を示す図である。
【
図3】(a)は、懸賞実行用スマートコントラクト10の構造を示す図であり、(b)は、ボックス12の中身の具体的な例を示す図である。
【
図4】懸賞処理プログラム11によって用いられる変数等の一覧を示す図である。
【
図5】新たな懸賞を生成するために実行される処理のシーケンス図である。
【
図6】
図5の処理によって発行された懸賞実行用スマートコントラクトの内容をユーザーが確認する処理を示すシーケンス図である。
【
図7】ユーザーによる懸賞の応募にかかる処理と、該応募に対して抽選を実行し、賞品を払い出す処理とを示すシーケンス図である。
【
図8】ユーザーによる懸賞の応募にかかる処理と、該応募に対して抽選を実行し、賞品を払い出す処理とを示すシーケンス図である。
【発明を実施するための形態】
【0014】
以下、添付図面を参照しながら、本発明の実施の形態について詳細に説明する。
【0015】
図1は、本実施の形態による懸賞処理システム1を含むシステムの構成を示す図である。懸賞処理システム1は、非代替性トークン(NFT:Non-Fungible Token。以下「NFT」という)を賞品とする懸賞を実現するためのシステムであり、同図に示すように、ユーザー端末2、懸賞提供者サーバ3、懸賞システムサーバ4、及び、ブロックチェーンネットワーク5がネットワーク6を介して相互に接続された構成を有している。
【0016】
ユーザー端末2は、懸賞への応募を行うユーザーによって使用される端末であり、例えばスマートフォンによって構成される。ただし、タブレット端末やパーソナルコンピュータなど、スマートフォン以外のコンピュータによってユーザー端末2を構成することとしてもよいのは勿論である。ユーザー端末2は、ブロックチェーンネットワーク5に記録されている情報を確認する用途でも用いられ得る。
【0017】
懸賞提供者サーバ3は、懸賞を企画し、ユーザーに対して提供する懸賞提供者のコンピュータである。典型的な例では、懸賞提供者は、BtoCビジネスを行っている企業である。懸賞提供者サーバ3は、懸賞への応募を受け付けるためのWEBサイト(以下「懸賞サイト」と称する)を提供するWebサーバとしての機能を有して構成される。
【0018】
ユーザーは、懸賞提供者サーバ3に予めユーザー登録した状態で、上記懸賞サイトにて懸賞への応募を行う。ユーザー登録をしようとするユーザーは、ユーザー端末2から懸賞サイトにアクセスし、懸賞サイトの一部を構成する登録画面を開く。そして、開いた登録画面に必要な情報を入力し、登録ボタンを押下することによって、ユーザー登録を実行する。登録画面への入力が必要となる情報には、賞品としてのNFTの移転先となるユーザーのウォレットアドレス(後述する外部所有アカウントのアドレス)が含まれる。ユーザーが登録ボタンを押下すると、懸賞提供者サーバ3は、ユーザーに対して懸賞サイトにアクセスするための情報(例えば、ログインID及びパスワード。以下「ログイン情報」という)を発行し、登録画面において入力された情報とともに記憶することにより、ユーザー登録を完了する。
【0019】
懸賞システムサーバ4は、懸賞処理システム1の管理者のコンピュータである。懸賞システムサーバ4は、懸賞提供者サーバ3からのリクエストを受けて新たな懸賞のためのスマートコントラクトをブロックチェーンネットワーク5にミント(記録)するとともに、ミントしたスマートコントラクトに抽選を実行させる役割を果たす。また、懸賞システムサーバ4は、賞品としてのNFTを新たに発行する役割も果たす。
【0020】
図2は、ユーザー端末2、懸賞提供者サーバ3、及び懸賞システムサーバ4のハードウェア構成の一例を示す図である。ユーザー端末2、懸賞提供者サーバ3、及び懸賞システムサーバ4はそれぞれ、図示した構成を有するコンピュータ100によって構成され得る。なお、懸賞提供者サーバ3及び懸賞システムサーバ4を構成するコンピュータ100は、複数のコンピュータの結合によって構成されるコンピュータであってもよい。
【0021】
図2に示すように、コンピュータ100は、CPU(Central Processing Unit)101、記憶装置102、入力装置103、出力装置104、及び通信装置105がバス106を介して相互に接続された構成を有している。
【0022】
CPU101は、コンピュータ100の各部を制御するとともに、記憶装置102に記憶される各種のプログラムを読み出して実行する装置である。また、記憶装置102は、DRAM(Dynamic Random Access Memory)などの主記憶装置と、ハードディスクなどの補助記憶装置とを含み、コンピュータ100のオペレーティングシステムや各種のアプリケーションを実行するための各種のプログラム、及び、これらのプログラムによって利用されるデータを記憶する役割を果たす装置である。後述する各種シーケンス図に示す処理は、ユーザー端末2、懸賞提供者サーバ3、及び懸賞システムサーバ4それぞれのCPU101が、それぞれの記憶装置102の中に記憶されているプログラムを実行することによって実現される。
【0023】
入力装置103は、外部からの入力を受け付けてCPU101に供給する装置であり、例えばキーボード、マウス、タッチパネルを含んで構成される。出力装置104は、CPU101の処理結果を外部に出力する装置であり、例えばディスプレイ、スピーカーを含んで構成される。
【0024】
通信装置105は、外部の装置と通信するための装置であり、CPU101の指示にしたがってデータの送受信を行う。ユーザー端末2、懸賞提供者サーバ3、及び懸賞システムサーバ4はそれぞれ、この通信装置105を用いて、
図1に示したブロックチェーンネットワーク5及びネットワーク6を含む他の装置との間で通信を行うよう構成される。
【0025】
図1に戻る。ブロックチェーンネットワーク5は、ピアツーピアによって接続された複数のコンピュータのネットワークである。ブロックチェーンには、特定の管理者がいないパブリックチェーン、単一の組織により管理されているプライベートチェーン、複数の組織により管理されているコンソーシアムチェーンの3種類があるが、ブロックチェーンネットワーク5はこれらのいずれであってもよい。典型的な例では、ブロックチェーンネットワーク5は、パブリックチェーンに分類されるイーサリアムネットワーク又はポリゴンネットワーク、或いは、プライベートチェーンに分類されるLINEブロックチェーンであり得る。
【0026】
ユーザーは、外部所有アカウント(Externally Owned Account)と呼ばれるアカウントを介して、ブロックチェーンネットワーク5の利用を行う。また、ブロックチェーンネットワーク5は、スマートコントラクトと呼ばれるプログラムを記録可能に構成される。外部所有アカウントは「ウォレットアドレス」により、スマートコントラクトは「アカウントコントラクトアドレス」によりそれぞれ識別される。外部所有アカウント及びスマートコントラクトはともに、NFTの所有主体になることができる。
【0027】
NFTは、スマートコントラクトのうち、NFTの標準仕様に準拠して実装されブロックチェーン上に配備されたものによって、生成・管理されるデータである。以下では、この種のスマートコントラクトを「NFTコントラクト」と称する。1つのNFTコントラクトは複数のNFTを含むことができ、個々のNFTは、NFTコントラクトのアカウントコントラクトアドレス(以下「トークンID」という)と、NFTコントラクト内における個々のNFTの識別情報とによって特定される。
【0028】
ブロックチェーンネットワーク5は、各種のトランザクションをブロックチェーンにミント可能に構成される。この各種のトランザクションには、アカウント又はスマートコントラクトを新たに発行するための発行トランザクション、NFTの所有権を移転するための移転トランザクションなどが含まれる。
【0029】
ブロックチェーンネットワーク5にトランザクションをミントする処理は、ブロックチェーンネットワーク5に接続されたいくつかのコンピュータ(以下、「マイナー」と称する)によって実行される。具体的に説明すると、ブロックチェーンを構成する各ブロックは、ブロックヘッダと、トランザクションの具体的な内容を示すデータ(取引データ)とを含んで構成される。このうちブロックヘッダには、取引データのサイズを圧縮してなるデータであるマークルルートと、1つ前のブロックのハッシュ値と、任意の文字列であるナンス値とが含まれる。ブロックチェーンネットワーク5においては、新たなブロックをブロックチェーンに接続するには、そのブロックのハッシュ値が所定の条件(例えば、「000」で始まる値である、という条件)を満たしていなければならないというルールが定められている。そこで、ブロックチェーンにあるブロックを記録しようとするマイナーは、そのブロックのブロックヘッダのハッシュ値が上記所定の条件を満たすこととなるよう、総当たり的にナンス値を見つける作業(マイニング)を行う。この作業の結果として、最も早くナンス値の発見に成功したマイナーがそのブロックをブロックチェーンに連結することによって、トランザクションのブロックチェーンへのミントが完了する。
【0030】
ブロックチェーンネットワーク5がイーサリアムネットワーク又はポリゴンネットワークである場合、トランザクションをブロックチェーンにミントしようとする者は、「ガス」と呼ばれる手数料を仮想通貨によって支払う必要がある。ガスは、ブロックの連結に成功したマイナーに対し、報酬として支払われる。
【0031】
ブロックチェーンネットワーク5には、ブロックチェーンに記録されている情報を確認するためのブロックチェーン・エクスプローラが実装される。例えばイーサリアムネットワークであるブロックチェーンネットワーク5のブロックチェーン・エクスプローラは、「イーサスキャン」という名称で知られている。ブロックチェーン・エクスプローラはネットワーク6上に公開されており、ブロックチェーンネットワーク5内のブロックチェーンに記録されている情報は、ブロックチェーン・エクスプローラを用いることにより、原則として誰でも閲覧することができる。ただし、ブロックチェーンに情報をミントする際、そのうちの一部又は全部を非公開に設定することも可能であり、非公開設定された情報については、ミントを実行したアカウントが閲覧する場合を除き、ブロックチェーン・エクスプローラを用いても閲覧することができない。
【0032】
懸賞システムサーバ4によってブロックチェーンネットワーク5にミントされるスマートコントラクトには、懸賞ごとにミントされるスマートコントラクトと、このスマートコントラクトに関する処理を行うためのスマートコントラクトとが含まれる。以下、前者のスマートコントラクトを「懸賞実行用スマートコントラクト」といい、後者のスマートコントラクトを「バックグラウンド処理用スマートコントラクト」という。懸賞実行用スマートコントラクトは、ユーザーからの応募に応じて抽選を実行する役割を果たし、バックグラウンド処理用スマートコントラクトは、新たな懸賞実行用スマートコントラクト及び賞品としてのNFTを含むNFTコントラクトをブロックチェーンネットワーク5にミントする役割を果たす。
【0033】
図3(a)は、懸賞実行用スマートコントラクト10の構造を示す図である。同図に示すように、懸賞実行用スマートコントラクト10は、懸賞処理プログラム11と、ボックス12とを含んで構成される。
【0034】
ボックス12は、順序付けられた抽選結果を定義するためのデータの集合であり、順序付けられた複数のレコードを含む配列を含んで構成される。複数のレコードのそれぞれには、賞品を示す情報(以下「賞品情報」という)が含まれる。各レコードに設定する賞品情報の具体的な内容は懸賞提供者サーバ3によって設計され、懸賞システムサーバ4を介してバックグラウンド処理用スマートコントラクトに通知される。バックグラウンド処理用スマートコントラクトは、通知された内容に基づいてボックス12を生成する処理を行う。ボックス12の中身を見ると将来の抽選結果が分かってしまうことから、バックグラウンド処理用スマートコントラクトは、ボックス12を非公開情報としてブロックチェーンにミントする。
【0035】
図3(b)は、ボックス12の中身の具体的な例を示す図である。同図に示すように、ボックス12は、抽選順及び賞品情報をそれぞれ含む複数のレコードを含んで構成される。抽選順は、抽選の順番を示す数値情報である。あるレコードの抽選順がn(nは自然数)であることは、n番目に抽選を行ったユーザーに対して付与される賞品がそのレコードに含まれる賞品情報により示される賞品になることを意味している。賞品情報は、賞品の具体的な内容を示す情報である。本実施の形態ではNFTが賞品であることから、賞品情報には、賞品としてのNFTを含むNFTコントラクトを特定するトークンIDが設定される。
【0036】
図3(a)に戻り、懸賞処理プログラム11は、ボックス12を用いて抽選を行うためのプログラムである。懸賞処理プログラム11は、懸賞システムサーバ4からの要求に応じて動作し、必要な抽選処理を行うように構成される。懸賞処理プログラム11のソースコードは、公開情報としてブロックチェーンに記録される。
【0037】
懸賞処理プログラム11は、動作のために必要となる各種の定数、変数、配列(以下、まとめて「変数等」という)を保持可能に構成される。懸賞処理プログラム11は、懸賞システムサーバ4から抽選リクエストを受信すると、これらの変数等を用いつつ、現在の抽選順に対応する賞品を払い出す処理を実行するよう構成される。
【0038】
図4は、懸賞処理プログラム11によって用いられる変数等の一覧を示す図である。同図に示すように、懸賞処理プログラム11によって用いられる変数等には、定数prizeContractAddress、定数uri、変数currntPrizeIndex、変数remains、配列prizes、配列tokenIDs、配列tokenAmounts、配列currentResults、定数isDrawable、及び、変数isSoldOutが含まれる。
【0039】
定数prizeContractAddressは、当該ボックス12を含むNFTコントラクトのアカウントコントラクトアドレスであり、定数uriは、ネットワーク6上で当該懸賞実行用スマートコントラクト10にアクセスするためのアドレス情報である。これらはいずれも、懸賞実行用スマートコントラクト10の発行時にバックグラウンド処理用スマートコントラクトによって設定され、変更不可かつ公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0040】
変数currntPrizeIndexは、現在までの抽選数を示す変数である。変数currntPrizeIndexには、懸賞実行用スマートコントラクト10の発行時に、バックグラウンド処理用スマートコントラクトによって0が設定される。その後は、抽選が1回行われる都度、懸賞処理プログラム11によって1ずつインクリメントされる。変数currntPrizeIndexは、公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0041】
変数remainsは、残りの抽選数を示す変数である。変数remainsには、懸賞実行用スマートコントラクト10の発行時に、バックグラウンド処理用スマートコントラクトによってボックス12のレコード数が設定される。その後は、抽選が1回行われる都度、懸賞処理プログラム11によって1ずつデクリメントされる。変数remainsも、公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0042】
配列prizesは、ボックス12と同じ内容が設定される配列である。バックグラウンド処理用スマートコントラクトは、ボックス12を生成する際に、その内容を配列prizesにも設定するよう構成される。ブロックチェーンに記録されるボックス12が変更不可であり、かつ、非公開情報であることから、配列prizesも変更不可かつ非公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0043】
配列tokenIDsは、賞品の種類の配列である。具体的な例では、配列tokenIDsは、賞品情報としてボックス12に含まれるトークンIDのユニークな(すなわち、重複を排除した)配列となる。また、配列tokenAmountsは、賞品の種類ごとの個数の配列である。具体的な例では、配列tokenAmountsは、配列tokenIDsに含まれるトークンIDごとのNFTの発行数(すなわち、トークンIDによって特定されるNFTコントラクトに含まれるNFTの数)の配列となる。これらはいずれも、懸賞実行用スマートコントラクト10の発行時にバックグラウンド処理用スマートコントラクトによって設定され、変更不可かつ公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0044】
配列currentResultsは、配列prizesのうち抽選済みとなったレコード(抽選済みの抽選結果)を抜き出してなる配列である。配列currentResultsには、懸賞実行用スマートコントラクト10の発行時に、バックグラウンド処理用スマートコントラクトによってヌルが設定される。その後は、抽選が1回行われる都度、懸賞処理プログラム11によって、1行ずつレコードが追加される。配列currentResultsは、公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0045】
定数isDrawableは、このボックス12が抽選の用に供されるか否かを示すブール型の変数である。懸賞提供者は、ボックス単位でユーザーに販売するためのボックス12を生成することも可能であり、その場合、定数isDrawableには抽選の用に供されないことを示す値が設定される。バックグラウンド処理用スマートコントラクトは、ボックス12を生成する際に、懸賞提供者サーバ3から指定された値を定数isDrawableに設定するよう構成される。定数isDrawableは、変更不可かつ公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0046】
変数isSoldOutは、すべての抽選が終了したか否かを示すブール型の変数である。バックグラウンド処理用スマートコントラクトは、懸賞実行用スマートコントラクト10を発行する際に、終了していないことを示す値を変数isSoldOutに設定し、変数remainsに0を設定する際に、終了したことを示す値を変数isSoldOutに設定する。変数isSoldOutは、公開情報として懸賞実行用スマートコントラクト10内に保持される。
【0047】
ここまでで説明したように、懸賞処理プログラム11が利用する各変数等のうち非公開のものは配列prizesのみであり、その他の変数等は、配列prizesのうち抽選済みとなったレコードを抜き出してなる配列currentResultsを含め、すべて公開情報とされる。したがって、何人も、ブロックチェーン・エクスプローラを用いることにより、ボックス12に関する情報のうち未抽選の抽選結果を除く部分を確認できることになる。
【0048】
以下、懸賞処理システム1で実行される処理のシーケンス図を参照しながら、本実施の形態による懸賞処理システム1の動作について、詳細に説明する。
【0049】
図5は、新たな懸賞を生成するために実行される処理のシーケンス図である。同図に示すように、この処理は、懸賞提供者が懸賞生成リクエストを生成したことによって開始される(ステップS1)。懸賞生成リクエストには、
図3(b)に例示したボックス12を生成するために必要な情報、例えば、賞品の総数(ボックス12のレコード数)、賞品としてのNFTを発行するために必要な情報(NFTの種類、種類ごとの発行数)、最後のレコード(ラストワン)内に配置するNFTの種類を指定する情報、変数isDrawableの値の他、懸賞提供者によって指定される任意の文字列(懸賞の名称など)が含まれ得る。懸賞提供者による懸賞生成リクエストの生成が完了すると、懸賞提供者サーバ3から懸賞システムサーバ4に対し、生成された懸賞生成リクエストが送信される(ステップS2)。
【0050】
懸賞生成リクエストを受信した懸賞システムサーバ4は、その中に含まれる情報に基づいて、ボックス12の内容を定義するボックス定義を生成する(ステップS3)。具体的には、賞品の総数に対応する数のレコードを生成し、発行予定の複数のNFTを各レコード内にランダムに配置すること(ただし、最後のレコードについては、指定されたNFTを配置すること)によって、ボックス定義の生成を行う。懸賞システムサーバ4は、こうして生成したボックス定義を含む懸賞実行用スマートコントラクトの生成リクエストを、バックグラウンド処理用スマートコントラクトに対して送信する(ステップS4)。
【0051】
懸賞実行用スマートコントラクトの生成リクエストを受信したバックグラウンド処理用スマートコントラクトは、まず初めに、ボックス定義内に含まれる1以上のNFTを新たに発行するための発行トランザクション(NFTコントラクトの発行トランザクション)を生成し、ブロックチェーンにミントする(ステップS5)。ボックス定義内に複数の種類のNFTが含まれる場合、このミントはNFTの種類ごと(すなわち、NFTコントラクトごと)に実行される。ミントが完了すると、ブロックチェーンからバックグラウンド処理用スマートコントラクトに対し、トランザクション完了通知が送信される(ステップS6)。このトランザクション完了通知には、ステップS5でミントした1以上のNFTコントラクトそれぞれのアカウントコントラクトアドレス(=トークンID)が含まれる。
【0052】
トランザクション完了通知を受け取ったバックグラウンド処理用スマートコントラクトは、発行したNFTコントラクトのトークンIDと、懸賞システムサーバ4から受信したボックス定義とに基づいて、
図3(b)に例示したボックス12を生成する(ステップS7)。そして、生成したボックス12と、予め記憶している懸賞処理プログラム11とを含む懸賞実行用スマートコントラクトを新たに発行するための発行トランザクションを生成し、ブロックチェーンにミントする(ステップS8)。ミントが完了すると、ブロックチェーンネットワーク5からバックグラウンド処理用スマートコントラクトに対し、再度トランザクション完了通知が送信される(ステップS9)。このトランザクション完了通知には、ステップS8でミントした懸賞実行用スマートコントラクトのアカウントコントラクトアドレスが含まれる。
【0053】
ステップS9でトランザクション完了通知を受信したバックグラウンド処理用スマートコントラクトは、通知されたアカウントコントラクトアドレスを懸賞処理プログラム11の定数prizeContractAddressに設定するとともに、懸賞システムサーバ4に対し、懸賞実行用スマートコントラクトの生成が完了したことを示すスマートコントラクト生成完了通知を送信する(ステップS10)。懸賞実行用スマートコントラクトのアカウントコントラクトアドレスは、このスマートコントラクト生成完了通知にも含まれる。
【0054】
ここで、ステップS5~S9の処理(破線で囲んだ範囲の処理)は、ブロックチェーンネットワーク5内において一体的に処理される。ブロックチェーンネットワーク5は、途中で1つでも失敗した場合、すべての処理を取り消す。この場合のステップS10においては、スマートコントラクト生成完了通知に代え、処理失敗を示す通知が懸賞システムサーバ4に対して送信される。
【0055】
スマートコントラクト生成完了通知を受信した懸賞システムサーバ4は、まず初めに、新たに生成した懸賞に関する各種の情報(以下「懸賞情報」という)を、懸賞提供者と対応付けて記憶する(ステップS11)。ここで記憶する懸賞情報には、スマートコントラクト生成完了通知に含まれるアカウントコントラクトアドレスの他、ステップS2で受信した懸賞生成リクエストに含まれていた任意の文字列(懸賞の名称など)が含まれ得る。続いて懸賞システムサーバ4は、記憶した懸賞情報を含む懸賞生成完了通知を懸賞提供者サーバ3に対して送信する(ステップS12)。懸賞提供者サーバ3は、受信した懸賞生成完了通知に含まれる懸賞情報を記憶する(ステップS13)。これ以降、懸賞提供者サーバ3は、新たに生成した懸賞をユーザーに対して提供することが可能になる。
【0056】
図6は、
図5の処理によって発行された懸賞実行用スマートコントラクトの内容をユーザーが確認する処理を示すシーケンス図である。同図に示すように、ユーザーはまず、懸賞提供者サーバ3から、確認の対象である懸賞実行用スマートコントラクトのアカウントコントラクトアドレスを取得する(ステップS20)。続いてユーザーは、ブラウザなどを用いてブロックチェーン・エクスプローラにアクセスし(ステップS21)、ステップS20で取得したアカウントコントラクトアドレスを指定する(ステップS22)。
【0057】
その後、ユーザーが所定のソースコード確認操作を行うと(ステップS23)、ユーザー端末2からブロックチェーンネットワーク5に対し、ソースコードの確認リクエストが送信される(ステップS24)。この確認リクエストには、ステップS22で指定されたアカウントコントラクトアドレスが含まれる。ソースコードの確認リクエストを受信したブロックチェーンネットワーク5は、対応する懸賞実行用コントラクトに含まれる懸賞処理プログラム11のソースコードをブロックチェーンから取得し、返送する(ステップS25)。これによりユーザーは、懸賞処理プログラム11のソースコードを確認することが可能になる。
【0058】
また、ユーザーが所定のボックス確認操作を行うと(ステップS26)、ユーザー端末2からブロックチェーンネットワーク5に対し、ボックス12の確認リクエストが送信される(ステップS27)。この確認リクエストにも、ステップS22で指定されたアカウントコントラクトアドレスが含まれる。ボックス12の確認リクエストを受信したブロックチェーンネットワーク5は、対応する懸賞実行用コントラクトに含まれる懸賞処理プログラム11が保持している各変数等(
図4に示したもの。配列prizesを除く)の値をブロックチェーンから取得し、ボックス12の内容を示すボックス情報として返送する(ステップS28)。これによりユーザーは、ボックス12の内容(未抽選の抽選結果を除く)と、抽選の現状(残りの抽選数など)とを確認することが可能になる。
【0059】
図7及び
図8は、ユーザーによる懸賞の応募にかかる処理と、該応募に対して抽選を実行し、賞品を払い出す処理とを示すシーケンス図である。初めに
図7を参照すると、ユーザー端末2から懸賞提供者サーバ3に対し、ユーザーの操作に応じて、懸賞サイトの表示リクエストが送信される(ステップS30)。この操作は要するに、懸賞サイトへのリンクをブラウザ上でクリックする操作である。表示リクエストを受信した懸賞提供者サーバ3は、懸賞サイトをユーザー端末2に返信する(ステップS31)。これにより、ユーザー端末2のディスプレイに懸賞サイトが表示される。
【0060】
次に、懸賞サイトに含まれるログイン画面(図示せず)においてユーザーが上述したログイン情報を入力すると、ユーザー端末2は懸賞サイトへのログインを行う(ステップS32)。懸賞提供者サーバ3は、ログイン情報を認証することによりログインを許可すると、ユーザー端末2に対してログイン完了を返送する(ステップS33)。
【0061】
続いて、懸賞サイトに含まれるボックスの一覧表示ボタン(図示せず)をユーザーがクリックすると、ユーザー端末2から懸賞提供者サーバ3に対し、ボックスの表示リクエストが送信される(ステップS34)。この表示リクエストを受信した懸賞提供者サーバ3は、受信した表示リクエストを懸賞システムサーバ4に転送する(ステップS35)。
【0062】
ボックスの表示リクエストを受信した懸賞システムサーバ4は、
図5のステップS11で記憶した懸賞情報の中から、該表示リクエストを転送してきた懸賞提供者サーバ3の管理者である懸賞提供者に対応付けて記憶しているものを抽出する(ステップS36)。ただし、変数isDrawableにボックス単位でのまとめ売りを示す情報が設定されている懸賞に関する懸賞情報、及び、変数isSoldOutに売り切れを示す値が設定されている懸賞に関する懸賞情報は、ここでの抽出対象から除外される。1以上の懸賞情報を抽出した懸賞システムサーバ4は、抽出した1以上の懸賞情報にかかる懸賞の一覧を懸賞提供者サーバ3に返送する(ステップS37)。懸賞提供者サーバ3は、返送された懸賞一覧を選択可能な形態で懸賞サイト内に表示することにより、懸賞一覧をユーザー端末2に転送する(ステップS38)。
【0063】
表示された懸賞一覧を見たユーザーがその中の1つ(以下「懸賞A」とする)を選択すると、ユーザー端末2から懸賞システムサーバ4に対し、懸賞提供者サーバ3を介して、懸賞Aが選択されたことを示す情報が送信される(ステップS39,S40)。この情報を受信した懸賞システムサーバ4は、ブロックチェーンネットワーク5に対し、懸賞Aにかかるボックス12の内容を示すボックス情報の送信をリクエストする(ステップS41)。
【0064】
ボックス情報の送信リクエストを受信したブロックチェーンネットワーク5は、懸賞Aにかかる懸賞処理プログラム11が保持している各変数等(
図4に示したもの。配列prizesを除く)の値をブロックチェーンから取得し、ボックス情報として返送する(ステップS42)。懸賞システムサーバ4は、返送されたボックス情報を懸賞提供者サーバ3に転送する(ステップS43)。
【0065】
懸賞提供者サーバ3は、転送されたボックス情報を懸賞サイト内に表示するとともに、その近傍に応募ボタンを表示することにより、懸賞Aのボックス情報及び応募ボタンをユーザー端末2に対して送信する(ステップS44)。応募ボタンは懸賞Aに応募するためのボタンであり、ユーザーがこの応募ボタンを押下すると、懸賞Aへの応募が完了し、抽選が行われることになる。
【0066】
図8に移り、ユーザーが応募ボタンを押下すると(ステップS50)、ユーザー端末2から懸賞提供者サーバ3に対し、懸賞Aへの応募リクエストが送信される(ステップS51)。この応募リクエストを受信した懸賞提供者サーバ3は、懸賞Aを示す情報(例えば、懸賞Aのための懸賞実行用スマートコントラクトのアカウントコントラクトアドレス)及びログイン中ユーザーのウォレットアドレスを含む抽選リクエストを生成し、懸賞システムサーバ4に対して送信する(ステップS52)。この抽選リクエストを受信した懸賞システムサーバ4は、対応する懸賞実行用スマートコントラクト10に対し、受信した抽選リクエストを転送する(ステップS53)。これにより、懸賞Aの懸賞処理プログラム11による抽選処理が開始される。
【0067】
懸賞処理プログラム11はまず、変数currntPrizeIndex(現在までの抽選数を示すインデクス値)の値を確認することにより、受信した抽選リクエストの抽選順を決定する(ステップS54)。通常、ここで決定される抽選順は、変数currntPrizeIndexの値に1を足した値となる。
【0068】
次に懸賞処理プログラム11は、ボックス12又は配列prizesを確認することにより、ステップS54で決定した抽選順に対応するトークンIDを読み出し、読み出したトークンIDにより特定されるNFTを賞品として決定する(ステップS55)。
【0069】
続いて懸賞処理プログラム11は、決定したトークンIDにより特定されるNFTのオーナーをユーザーのウォレットアドレスに移転するための移転トランザクションを生成し、ブロックチェーンへの記録をリクエストする(ステップS56)。このとき懸賞処理プログラム11は、対応するNFTコントラクトの中に複数のNFTが含まれる場合には、他のユーザーのウォレットアドレスに移転していないものを今回の移転の対象とする。このリクエストが完了すると、ブロックチェーンから懸賞処理プログラム11に対し、移転完了通知が返送される(ステップS57)。移転完了通知を受信した懸賞処理プログラム11は、保持している変数等(具体的には、変数currntPrizeIndex、変数remains、配列currentResults、変数isSoldOut)の値を必要に応じて更新した後(ステップS58)、懸賞システムサーバ4に対して抽選完了通知を送信する(ステップS59)。抽選完了通知には、当選した賞品であるNFTを示す情報(トークンID、対応する画像など)が含まれ得る。
【0070】
ここで、ステップS54~S58の処理(破線で囲んだ範囲の処理)は、ブロックチェーンネットワーク5内において一体的に処理される。ブロックチェーンネットワーク5は、途中で1つでも失敗した場合、すべての処理を取り消す。この場合のステップS59においては、抽選完了通知に代え、処理失敗を示す通知が懸賞システムサーバ4に対して送信される。
【0071】
抽選完了通知を受信した懸賞システムサーバ4は、懸賞提供者サーバ3に対して抽選完了通知を転送する(ステップS60)。抽選完了通知を受信した懸賞提供者サーバ3は、当選したNFTを懸賞サイト内に表示することにより、ユーザー端末2に対して抽選結果を通知する(ステップS61)。この後、ユーザー端末2のユーザーは、自身のウォレットを確認することにより、賞品としてのNFTが自身に移転されていることを確認できることになる。
【0072】
以上説明したように、本実施の形態による懸賞処理システム1によれば、何人もボックス12及び懸賞処理プログラム11を改ざんできないことが明確になり、しかも、未抽選の抽選結果を除いてそれらの内容を誰でも確認できるので、抽選を他社に依存することなく、抽選の透明性を確保することが可能になる。
【0073】
より詳しく説明すると、本実施の形態による懸賞処理システム1は、スマートコントラクトという、ブロックチェーン上に改竄不可能なかたちで処理系そのものを保存し、すべての利用者がそのソースコードを照会でき、そのソースコード通りの処理が行われることが担保される体系を用いることで、抽選(くじ引き)の順番と結果のテーブル(ボックス12)と、同テーブルを用いて抽選を行うプログラムとが改変不可能であることを担保している。また、本実施の形態による懸賞処理システム1は、同テーブルを初期には非公開とする一方、抽選済みの結果だけを公開することで、利用者が既に当てられた賞品と残りの賞品とを知ることができるようにし、すべての抽選が終了した際には、(結果として)テーブルの全体を公開している。したがって、ユーザーは懸賞処理システム1によって行われる抽選を(ブロックチェーンの信頼が維持される限り)全面的に信用することができるので、本実施の形態による懸賞処理システム1によれば、抽選の透明性を確保することが可能になる。
【0074】
また、本実施の形態による懸賞処理システム1によれば、懸賞の賞品としてNFTを採用することが可能になる。ただし、本発明は、NFT以外の賞品を採用する例にも好適に適用可能である。この場合、ボックス12の賞品情報欄には、NFT以外の賞品を特定する情報を記載すればよい。また、ユーザーが懸賞提供者サーバ3にユーザー登録する際、ユーザーのウォレットアドレスに代えて賞品の種類に応じた賞品送付先の情報(メールアドレス、住所など)を登録させ、登録された賞品送付先に対して相応の通信手段(電子メール、郵便など)を用いて、当選した賞品を送付することとすればよい。
【0075】
以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。
【符号の説明】
【0076】
1 懸賞処理システム
2 ユーザー端末
3 懸賞提供者サーバ
4 懸賞システムサーバ
5 ブロックチェーンネットワーク
6 ネットワーク
10 懸賞実行用スマートコントラクト
10 スマートコントラクト
11 懸賞処理プログラム
12 ボックス
100 コンピュータ
101 CPU
102 記憶装置
103 入力装置
104 出力装置
105 通信装置
106 バス