<1.ノンファンジブルトークン生成システム及びノンファンジブルトークン生成システムによって実行される方法の概要>
(1)実施形態に係るノンファンジブルトークン生成システム(以下、単に「システム」ということがある)は、ノンファンジブルトークンを生成するよう構成されている。ノンファンジブルトークン及びファンジブルトークンは、ブロックチェーンにおいて取引が記録され得る。ノンファンジブルトークンの所有者は、ブロックチェーンにおいて記録され得る。ブロックチェーンにおいて記録されたノンファンジブルトークンは、ブロックチェーンにおいて公開され得るものであって、参照可能であり得る。ノンファンジブルトークンは、例えば、コンピュータゲームにおいて取引されるアイテム若しくはキャラクタ、デジタルトレーディングカード、デジタルチケット、デジタル証書又はその他のデジタルデータとして用いられ得る。デジタルトレーディングカードは、デジタルコレクタブルカードとも呼ばれる。ノンファンジブルトークンは、一例として、Ethereum Request for Comments(ERC)721規格に従って発行されたトークンであり得る。ノンファンジブルトークンは、他のノンファンジブルトークンとは区別される独自の価値を有することがある。このため、ノンファンジブルトークンは、他のノンファンジブルトークンとの区別を可能にするための固有の識別子を有する。NFTの識別子は、例えば、ブロックチェーンにおいてノンファンジブルトークンを示すアドレス又はその他の識別子である。NFTの識別子は、NFT-IDとも呼ばれる。
実施形態に係るシステムは、一つのコンピュータによって構成されてもよいし、複数のコンピュータからなるコンピュータネットワークによって構成されていてもよい。コンピュータネットワークは、例えば、インターネットであり得る。コンピュータネットワークは、P2Pコンピュータネットワークであり得る。P2Pコンピュータネットワークは、例えば、インターネットによって複数のコンピュータが接続されたネットワークである。システムは、ブロックチェーンを構成するコンピュータネットワークを含み得る。
システムによるノンファンジブルトークンの提供は、例えば、ノンファンジブルトークンの販売、譲渡、又は他のノンファンジブルトークンとの交換のために行われる。販売、譲渡、又は交換等のために、システムから提供されるノンファンジブルトークンを、目的ノンファンジブルトークンという。システムが目的ノンファンジブルトークンを送信することで、目的ノンファンジブルトークンが提供される。
実施形態に係るシステムは、一例として、ノンファンジブルトークン要求を受信し、前記ノンファンジブルトークン要求に応じた目的ノンファンジブルトークンを生成し、前記目的ノンファンジブルトークンを送信する、ことを実行するよう構成され得る。生成される目的ノンファンジブルトークンは、1個でもよいし、複数でも良い。システムは、ノンファンジブルトークン要求を受信したことをトリガとして、目的ノンファンジブルトークンを生成することができる。システムは、ノンファンジブルトークン要求を受信する度に、ノンファンジブルトークン要求に応じた目的ノンファンジブルトークンを生成することができる。システムは、ノンファンジブルトークン要求を受信する前の時点において、ノンファンジブルトークン要求に応じた目的ノンファンジブルトークンを非保有でよい。すなわち、システムは、提供すべき目的ノンファンジブルトークンの在庫を保有する必要がない。
前記ノンファンジブルトークン要求は、例えば、目的ノンファンジブルトークンの送信をシステムに要求するコマンドである。前記ノンファンジブルトークン要求は、例えば、目的ノンファンジブルトークンの購入又は譲受の希望を示すコマンド、又は、あるノンファンジブルトークンから目的ノンファンジブルトークンへの交換の希望を示すコマンドである。ノンファンジブルトークン要求は、目的ノンファンジブルトークンの送信をシステムに対して明示的に要求するものであってもよいし、明示的な要求を示してはいないが、システムが、その受信に対する応答として、目的ノンファンジブルトークンの送信が必要であると判断し得るコマンドであってもよい。例えば、システムは、トークンの受信をノンファンジブルトークン要求であるとみなすように構成されていていてもよい。ノンファンジブルトークン要求であるとみなされるトークンを「要求送信トークン」という。要求送信トークンは、例えば、ファンジブルトークン又はノンファンジブルトークンである。また、ノンファンジブルトークン要求は、要求送信トークンと、トークン以外の情報と、を含んでも良い。要求送信トークンは、ノンファンジブルトークン要求としてのコマンドととともに送信されてもよい。
前記ノンファンジブルトークン要求は、ネットワークを介して、システムへ送信され得る。ノンファンジブルトークン要求の送信元は、例えば、目的ノンファンジブルトークンの提供を受けるユーザの端末、目的ノンファンジブルトークンの提供を受けるユーザのために動作する第三者のコンピュータ、その他目的ノンファンジブルトークンを受信することになるコンピュータである。前記ノンファンジブルトークン要求の送信が、要求送信トークンの送信を含む場合、その要求送信トークンの送信元は、要求送信トークンの所有者であるユーザのアカウント(ブロックチェーンにおけるユーザのアドレス)である。なお、目的ノンファンジブルトークンの送信先は、ノンファンジブルトークン要求の送信元であってもよいし、ノンファンジブルトークン要求の送信元以外であってもよい。目的ノンファンジブルトークンの送信先は、例えば、要求送信トークンの所有者であるユーザのアカウント(ブロックチェーンにおけるユーザのアドレス)であり得る。
システムは、一つのノンファンジブルトークン要求に応じて、一つの目的ノンファンジブルトークンを生成し、送信し得る。また、システムは、一つのノンファンジブルトークン要求に応じて、複数の目的ノンファンジブルトークンを生成し、送信し得る。この場合、システムは、複数の目的ノンファンジブルトークンを一括提供できる。
システムは、複数の種類の目的ノンファンジブルトークンを生成可能である。この場合、システムは、様々な種類の目的ノンファンジブルトークンを提供できる。また、システムは、一つのノンファンジブルトークン要求に応じて、複数の種類の目的ノンファンジブルトークンを生成し得る。この場合、システムは、複数の種類の目的ノンファンジブルトークンを一括提供し得る。目的ノンファンジブルトークンの種類(タイプ)は、例えば、後述の目的ノンファンジブルトークンのNFTのタイプのほか、目的ノンファンジブルトークンのカテゴリ又はジャンルであってもよい。目的ノンファンジブルトークンの種類は、システムによって識別され得る。カテゴリは、例えば、後述のカードNFTに設定された区分を示す。タイプは、例えば、後述のカードNFT、パックNFT、ボックスNFTといった区分を示す。目的ノンファンジブルトークンの種類は、後述のチケットNFTの種類であってもよいし、後述の証書NFTの種類であってもよい。
なお、ここでの「種類」は、ノンファンジブルである一つ一つのノンファンジブルトークンの違いによって区別されるものであってもよいが、好ましくは、2以上のノンファンジブルトークンに共通する性質としてシステムによって識別され得るものである。複数のノンファンジブルトークンにおいて、ノンファンジブルトークンの種類が同じである場合、ノンファンジブルトークンを構成する構成データの少なくとも一部が共通であり得る。逆に、ノンファンジブルトークンの種類が異なる場合、目的ノンファンジブルトークンを構成する構成データが異なり得る。
前記ノンファンジブルトークン要求は、識別情報を有することができる。識別情報は、生成すべき目的ノンファンジブルトークンの種類を識別するために用いられ得る。ノンファンジブルトークン要求が前記識別情報を有することで、システムは、ノンファンジブルトークン要求を受信すると、生成すべき目的ノンファンジブルトークンの種類を識別し、要求に応じた適切な目的ノンファンジブルトークンを生成することができる。したがって、ノンファンジブルトークン要求を受信するシステムは、自律的に、適切な種類の目的ノンファンジブルトークンを生成できる。
前記識別情報は、ノンファンジブルトークン要求自体であり得る。例えば、ノンファンジブルトークン要求のためのコマンドが、目的ノンファンジブルトークンの複数の種類に応じて、複数用意されている場合、ノンファンジブルトークン要求自体が、目的ノンファンジブルトークンの種類を識別するために用いられ得る。
前記識別情報は、ノンファンジブルトークン要求に含まれる情報であり得る。例えば、複数の種類の目的ノンファンジブルトークン要求のために共通して用いられるコマンドが、目的ノンファンジブルトークンの種類を示すパラメータを含んでいても良い。
前記識別情報は、ノンファンジブルトークン要求とともに送信された情報であり得る。例えば、ノンファンジブルトークン要求とともに送信さる情報は、例えば、目的ノンファンジブルトークンに交換されるノンファンジブルトークン、ファンジブルトークン、又はその他のデジタルデータである。ここで、「ノンファンジブルトークン要求とともに送信」とは、ノンファンジブルトークン要求と完全に同時に送信される必要はなく、多少時間が前後しても、ノンファンジブルトークン要求と関連付け又は対応付けられており、ノンファンジブルトークン要求とともに送信されたと実質的にみなせる情報であれば足りる。前記識別情報は、前記要求送信トークンの数又は種類であり得る。
ノンファンジブルトークン要求が要求送信トークンを含む場合、前記識別情報は、例えば、要求送信トークンの数であってもよい。要求送信トークンは、例えば、目的ノンファンジブルトークンを購入するための対価として用いられるファンジブルトークンである。この場合、要求送信トークンとしてのファンジブルトークンの数に応じて、目的ノンファンジブルトークンの種類が識別され得る。要求送信トークンとしてのノンファンジブルトークンの数は、目的ノンファンジブルトークンの値段に相当し得る。なお、前記識別情報は、要求送信トークンとしてのノンファンジブルトークンの数であってもよい。前記識別情報は、要求送信トークンの種類であってもよい。要求送信トークンは、例えば、目的ノンファンジブルトークンと交換される他のノンファンジブルトークンである。この場合、要求送信トークンとしてのノンファンジブルトークンの種類に応じて、目的ノンファンジブルトークンの種類が識別され得る。前記識別情報は、前記要求送信トークンがノンファンジブルトークンであるか、ファンジブルトークンであるか、の違いで示される情報あってもよい。この場合、例えば、前記要求送信トークンがノンファンジブルトークンである場合には、目的ノンファンジブルトークンが第1の種類であると識別され、前記要求送信トークンがファンジブルトークンであるか場合には、目的ノンファンジブルトークンが第2の種類であると識別され得る。
前記識別情報は、前述した識別情報のいずれか1つ単独又は2つ以上の組み合わせであってもよい。2つ以上の情報の組み合わせを用いることで、様々な種類の中から、適切な種類を識別するのが容易になる。
前記目的ノンファンジブルトークンを生成することは、前記識別情報に基づいて識別された種類の前記目的ノンファンジブルトークンを生成することを備え得る。この場合、システムは、ノンファンジブルトークン要求が有する識別情報に基づいて識別された適切な種類の目的ノンファンジブルトークンを生成することができる。したがって、システムは、種類毎の目的ノンファンジブルトークンを予め保有しておく必要がない。システムは、ノンファンジブルトークン要求を受信する前から、システムが有している素材データを用いてノンファンジブルトークンを生成することができる。システムは、ノンファンジブルトークン生成に用いられる素材データを、識別情報に基づいて決定することができる。
(2)前記ノンファンジブルトークン要求を受信することは、ファンジブルトークン又はノンファンジブルトークンである要求送信トークンを受信することを含み、前記目的ノンファンジブルトークンの種類は、前記要求送信トークンの数又は種類を前記識別情報として用いて識別されるのが好ましい。
(3)システムは、前記要求送信トークンとしてファンジブルトークン及びノンファンジブルトークンのいずれも受信可能に構成されているのが好ましい。前記要求送信トークンとして前記ファンジブルトークンを受信した場合、前記目的ノンファンジブルトークンの種類は、前記要求送信トークンとして受信した前記ファンジブルトークンの数に基づいて識別され、前記要求送信トークンとして前記ノンファンジブルトークンを受信した場合、前記目的ノンファンジブルトークンの種類は、前記要求送信トークンとして受信した前記ノンファンジブルトークンの種類に基づいて識別されるのが好ましい。
(4)システムは、ブロックチェーンにおけるスマートコントラクトを実行するコントラクトコンピュータを備えることができる。スマートコントラクトは、ブロックチェーンを構成するコンピュータによって実行されるソフトウェア(コンピュータプログラム)である。スマートコントラクトは、例えば、システムの管理者によって、ブロックチェーンにおいて実行されるように、ブロックチェーンに実装される。コントラクトコンピュータは、ブロックチェーンを構成するコンピュータネットワークシステムを構成するいずれかのコンピュータである。ブロックチェーンを構成するコンピュータネットワークを構成する複数のコンピュータのうち、コントラクトコンピュータとして機能するコンピュータは、動的に変動し得る。
前記スマートコントラクトは、前記識別情報を有するノンファンジブルトークン要求を受信し、前記ノンファンジブルトークン要求が有する前記識別情報に基づいて、生成すべき前記目的ノンファンジブルトークンの種類を識別し、識別された種類の前記目的ノンファンジブルトークンを生成し、生成された前記目的ノンファンジブルトークンを送信する、ことを前記コントラクトコンピュータに実行させるよう構成されているのが好ましい。前記コントラクトコンピュータは、複数の種類の目的ノンファンジブルトークンを生成可能であるのが好ましい。システムにおいては、ユーザの選択操作を受け付けるユーザ用コンピュータが利用され得る。前記ユーザ用コンピュータは、前記ユーザの前記選択操作による選択に応じて前記要求送信トークンの数又は種類を特定し、特定された数又は種類の前記要求送信トークンを前記スマートコントラクトへ送信させるよう構成されているのが好ましい。この場合、ユーザの選択操作に応じた要求送信トークンの数又は種類が特定され、その要求送信トークンの数又は種類が前記識別情報となり得る。要求送信トークンの送信元は、例えば、前記ブロックチェーンにおける前記ユーザのアカウント(ブロックチェーンにおけるユーザのアドレス)であり、この場合、ユーザ用コンピュータは、ユーザのために、要求送信トークンの送信処理を実行することになる。なお、ユーザ用コンピュータは、例えば、後述のサーバ350又はユーザ端末300である。ユーザ用コンピュータは、ユーザのために動作するコンピュータであれば足り、ユーザによって所有されている必要はない。つまり、ユーザ用コンピュータは、ユーザ端末300である必要はなく、ユーザ以外の者(例えば、システムの管理者)によって所有又は管理されているサーバであってもよい。
(5)前記ノンファンジブルトークンを生成することは、複数の素材データの中から、受信した前記識別情報に基づいて選択されたデータを用いて、前記目的ノンファンジブルトークンを生成することを含むのが好ましい。前記識別情報に基づいて選択されたデータを用いることは、選択された素材データ自体を用いることであってもよいし、選択された素材データの複製データを用いることであってもよい。前記ノンファンジブルトークンを生成することは、ブロックチェーンにおけるノンファンジブルトークン発行処理を実行することで発行される初期ノンファンジブルトークンに、構成データを組み込むことを備えるのが好ましい。前記構成データは、前記識別情報に基づいて生成されるのが好ましい。なお、素材データは、システムにおいて、識別情報に対応付けて保存されているか、識別情報に基づいて識別される種類に対応付けて保存されているのが好ましい。
ブロックチェーンにおけるノンファンジブルトークン発行処理は、例えば、ノンファンジブルトークン発行のためのコマンドを実行することによって行われる。ノンファンジブルトークン発行のためのコマンドは、例えば、ノンファンジブルトークンが発行されるブロックチェーンにおいて用意されている。ノンファンジブルトークン発行処理は、ブロックチェーンを構成するコンピュータにおいて実行される。ノンファンジブルトークン発行処理によって発行されたノンファンジブルトークンには、ノンファンジブルトークンの識別子(NFT-ID)が付与される。ノンファンジブルトークンの識別子は、ノンファンジブルトークンをユニークに識別するためにノンファンジブルトークン毎に付与される。ノンファンジブルトークンの識別子は、ブロックチェーンにおけるノンファンジブルトークンのアドレスであってもよいし、それ以外の識別子であってもよい。システムは、発行されたノンファンジブルトークンの識別子を取得し得る。
初期ノンファンジブルトークンは、ノンファンジブルトークン発行処理によって発行されるトークンであり、構成データが組み込まれていない状態の未完成のノンファンジブルトークンであり得る。初期ノンファンジブルトークンに構成データが組み込まれて、目的ノンファンジブルトークンが完成する。初期ノンファンジブルトークンは、少なくとも、ノンファンジブルトークンの識別子を有している。初期ノンファンジブルトークンは、識別子以外に、その他の必要な情報を含んでも良い。構成データの組み込みは、初期ノンファンジブルトークンの発行とほぼ同時に行われても良いし、初期ノンファンジブルトークンの発行後に行われても良い。
前記構成データは、例えば、画像データ、音データ、及び文字データの少なくともいずれか一つである。前記構成データは、一つのデータであってもよいし、複数のデータの組み合わせであってもよい。画像データ及び文字データは、ノンファンジブルトークンを保有するユーザ又は第三者の端末において、保有するノンファンジブルトークンを画面表示するために用いられ得る。音データは、ノンファンジブルトークンを保有するユーザ又は第三者の端末において、画像データ又は文字データの表示とともに、出力され得る。画像データは、動画データであってもよいし、静止画データであってもよい。画像データは、後述のトレーディングカードにおける題材、後述のチケットの内容、又は後述の保証証書の内容若しくは保証対象の製品に対応したものであってもよい。
前記構成データは、前記識別情報に基づいて識別された前記種類に基づいて生成され得るため、前記種類に応じた適切な構成データが、初期ノンファンジブルトークンに組み込まれ得る。同じ種類の目的ノンファンジブルトークンには、その種類に対応した少なくとも1つの共通データが前記構成データとして組み込まれ得る。つまり、複数の目的ノンファンジブルトークンが同じ種類である場合、それらの目的ノンファンジブルトークンは、少なくとも1つの共通する構成データを有し得る。また、複数の目的ノンファンジブルトークンが異なる種類である場合、それらの目的ノンファンジブルトークンには、種類の違いに応じた構成データの違いが存在し得る。このような目的ノンファンジブルトークンの種類の違いがあっても、システムは、ノンファンジブルトークン要求から種類を識別して、適切な構成データを決定し得る。
(6)前記目的ノンファンジブルトークンは、選択された前記データの複製データを示す識別子を有するのが好ましい。
前記複製データを示す識別子は、前記複製データを示すユニフォームリソースアイデンティファイアであるのが好ましい。なお、前記ノンファンジブルトークン発行処理は、前記ノンファンジブルトークン要求を受信した後に行われるのが好ましい。この場合、初期ノンファンジブルトークンをノンファンジブルトークン要求の受信前に発行しておいて予め在庫として準備しておく必要がない。前記構成データは、他の構成データの生成にも用いられ得る複数の素材データの中から前記識別情報を用いて決定された素材データを用いて、前記目的ノンファンジブルトークンのためのユニークなデータとして生成されるのが好ましい。この場合、目的ノンファンジブルトークンに組み込まれた構成データは、個々の目的ノンファンジブルトークンについてユニークなデータとなり、稀少価値を生じさせ易い。構成データは、他の構成データの生成にも共通して用いられる素材データを複製して生成され得る。ある構成データは、他の構成データとは異なるファイル名で保存又は他の構成データとは異なる位置に保存されることで、仮にそのデータ内容が同じであっても、他の構成データとは区別し得るユニークなものとなる。構成データは、素材データを複製して得られたものに、シリアル番号・その他の文字若しくは記号又は画像データなどのデータが付加されていることで、他の構成データと区別がより容易なものとなる。前記初期ノンファンジブルトークンに前記構成データを組み込むことは、前記初期ノンファンジブルトークンに、前記構成データの識別子を対応付けることを備えるのが好ましい。前記構成データの識別子は、例えば、前記構成データのユニフォームリソースアイデンティファイア(URI)である。URIは、例えば、ユニフォームリソースロケータ(URL)である。生成された構成データは、例えば、インターネット上のデータサーバに格納され、URI又はURLは、そのデータサーバに格納された構成データを示す識別子として機能し得る。なお、URIは、ユニフォームリソースネーム(URN)であってもよい。
(8)前記システムは、前記識別情報に基づいて、生成すべき前記目的ノンファンジブルトークンの個数を識別することを更に実行するよう構成されているのが好ましい。この場合、前記識別情報は、生成すべき目的ノンファンジブルトークンの個数を識別するための情報としても用いられる。
システムは、第1コンピュータと、第2コンピュータと、を備えて構成されていてもよい。第1コンピュータ及び第2コンピュータは、それぞれ、1台のコンピュータによって構成されていてもよいし、ネットワークを介して接続された複数のコンピュータによって構成されていてもよい。第1コンピュータは、ブロックチェーンを構成するコンピュータネットワークシステムであってもよい。前記第1コンピュータと第2コンピュータとは、ネットワークを介して接続されているのが好ましい。第2コンピュータは、前記構成データの候補又は元となる複数の素材データを備えているのが好ましい。
前記第1コンピュータは、前記ノンファンジブルトークン要求を受信し、前記ノンファンジブルトークン要求が有する前記情報を用いて前記種類を識別し、前記ノンファンジブルトークン発行処理を実行することで、前記初期ノンファンジブルトークンを発行する、ことを少なくとも備える第1処理を実行するよう構成されているのが好ましい。第1処理は、ブロックチェーンにおけるノンファンジブルトークン発行処理を備えるため、ブロックチェーンに実装されたスマートコントラクトによって実行されるのが好ましい。
前記第2コンピュータは、前記第1コンピュータが識別した前記種類に応じて、前記複数の素材データの中から前記構成データとなる素材データを選択する第2処理を実行するよう構成されているのが好ましい。第2処理は、選択された素材データの複製を前記構成データとして保存することを更に含んでも良い。保存された前記構成データを示すURI(URL)は、第2コンピュータから、スマートコントラクト(第1コンピュータ)に与えられ、スマートコントラクト(第1コンピュータ)は、そのURI(URL)を初期ノンファンジブルトークンに対応付けることができる。第2コンピュータは、ブロックチェーンとは別に設けられたコンピュータであるのが好ましい。第2コンピュータは、例えば、システムの管理者によって管理されるサーバコンピュータである。
第1処理と第2処理とを別々のコンピュータで実行することにより、それぞれの処理を分けて管理でき、管理が容易になる。特に、第2処理は、多種多様になり得る素材データを扱うため、第1処理とは分離することで、素材データの変更等があっても、第1処理側の変更を回避、又は、変更を少なくできる。また、スマートコントラクトは、記述できるプログラムコード量(記述できる工程数)に制約が設けられていることがあるため、第1処理がスマートコントラクトによって実行される場合、第1処理と第2処理とを分離しておくことで、第1処理の工程数の増大を回避するのが容易である。
前記第2処理は、前記第1コンピュータが前記初期ノンファンジブルトークンを発行したことを、前記第2コンピュータが検出した場合に実行されるのが好ましい。この場合、前記第1コンピュータが前記初期ノンファンジブルトークンを発行したことをトリガとして、第2処理を開始することができる。第2コンピュータは、第1コンピュータが初期ノンファンジブルトークンを発行したことを、第1コンピュータからの通知の受信によって検出してもよい。また、第2コンピュータは、第1コンピュータ(第1処理を実行するスマートコントラクト)の挙動を監視し、初期ノンファンジブルトークンが発行されたことを、第1コンピュータからの通知なしで第2コンピュータが自発的に検出してもよい。なお、ノンファンジブルトークンの発行及び発行されたノンファンジブルトークンの内容は、ブロックチェーンにおいて参照可能に記録されているため、第2コンピュータは、ブロックチェーンにおけるノンファンジブルトークン発行状況及びその内容を確認することで、第1コンピュータによる初期ノンファンジブルトークンの発行を検出してもよい。
第1コンピュータ(スマートコントラクト)は、目的ノンファンジブルトークンの種類を示す情報を有する初期ノンファンジブルトークンを発行してもよい。この場合、第2コンピュータは、ブロックチェーンにおいて、発行された初期ノンファンジブルトークンが有する情報を参照し、目的ノンファンジブルトークンの種類を識別し、その種類に応じた適切な構成データを決定し、その構成データを初期ノンファンジブルトークンに組み込むことができる。
前記第2コンピュータは、前記第1コンピュータから、前記目的ノンファンジブルトークンの前記種類を示す情報を備える生成条件を取得するよう構成されていてもよい。
(9)前記ノンファンジブルトークン要求を受信することは、ノンファンジブルトークンである要求送信トークンを受信することを含むことができる。前記要求送信トークンであるノンファンジブルトークンは、生成すべき前記目的ノンファンジブルトークンの種類を識別するために用いられる前記識別情報を有するのが好ましい。前記要求送信トークンであるノンファンジブルトークンが有する前記識別情報は、例えば、前記要求送信トークンであるノンファンジブルトークンの種類を示す情報である。システムは、前記要求送信トークンであるノンファンジブルトークンが有する前記識別情報に基づいて、生成すべき目的ノンファンジブルトークンを識別することができる。前記識別情報は、前記目的ノンファンジブルトークンに組み込まれる構成データとして用いられる情報を有していても良い。この場合、システムは、前記要求送信トークンであるノンファンジブルトークンが有する情報を、目的ノンファンジブルトークンに組み込まれる構成データの少なくとも一部として用いて、目的ノンファンジブルトークンを生成できる。
(10)前記ノンファンジブルトークン要求が有する前記識別情報は、前記複数の素材データのいずれかを示すデータを含むのが好ましい。前記システムは、前記目的ノンファンジブルトークンを生成するための生成用プライベートキーを備え、前記生成用プライベートキーを用いて前記目的ノンファンジブルトークンを生成するよう構成されているのが好ましい。
実施形態に係る方法は、ノンファンジブルトークン生成システムによって実行されるノンファンジブルトークン生成方法であり得る。前記方法は、識別情報を有するノンファンジブルトークン要求を受信し、前記ノンファンジブルトークン要求が有する前記識別情報に基づいて識別された種類の目的ノンファンジブルトークンを生成し、生成された前記目的ノンファンジブルトークンを送信する、ことを備える。また、実施形態に係る方法は、ノンファンジブルトークン生成システムによって実行されるノンファンジブルトークン生成方法であって、前記ノンファンジブルトークン生成システムは、複数の素材データを備えるデータベースを備え得る。前記方法は、識別情報を有するノンファンジブルトークン要求を受信し、前記データベースが備える複数の素材データの中から、受信した前記識別情報に基づいて選択されたデータを用いて、ノンファンジブルトークンを生成する、ことを備え得る。実施形態に係るシステムは、ノンファンジブルトークンを生成する処理を実行するよう構成されたノンファンジブルトークン生成システムであって、複数の素材データを備えるデータベースを備え得る。前記ノンファンジブルトークンを生成する前記処理は、識別情報を有するノンファンジブルトークン要求を受信し、前記データベースが備える複数の素材データの中から、受信した前記識別情報に基づいて選択されたデータを用いて、ノンファンジブルトークンを生成する、ことを備え得る。前記システムは、前記ノンファンジブルトークンを生成するための生成用プライベートキーを備え、前記プライベートキーを用いて前記ノンファンジブルトークンを生成するよう構成されているのが好ましい。
実施形態に係るコンピュータプログラムは、開示の処理のすくなくともいずれか1つをプロセッサに実行させる。コンピュータプログラムは、コンピュータ読み取り可能な、非一時的な記憶媒体に格納される。
<2.ノンファンジブルトークン生成システム及びノンファンジブルトークン生成システムによって実行される方法の例>
以下、図面を参照して、好適な実施形態を説明する。以下の説明は、好適な実施形態の一例を示すものであり、本発明を限定するものではない。
<2.1 第1実施形態:カードNFT生成システム>
図1は、第1実施形態に係るノンファンジブルトークン生成システム10(NFT生成システム)の一例を示している。第1実施形態に係るシステム10は、ブロックチェーン等のコンピュータネットワークシステム100に実装されたスマートコントラクト101を備え得る。スマートコントラクト101は、ブロックチェーン等のコンピュータネットワークシステム100(第1コンピュータ)に実装されたソフトウェア(コンピュータプログラム)であり、所定のプロトコルを自動的に実行する。実施形態に係るスマートコントラクト101は、ブロックチェーンにおけるアドレスであるコントラクトアドレスを有する。スマートコントラクト101は、コントラクトアドレスに格納されている。スマートコントラクト101は、他のコンピュータによって呼び出されることで実行される。スマートコントラクト101を呼び出すコンピュータは、例えば、ユーザのために動作するサーバ350、又は、ユーザ端末300である。サーバ350は、例えば、ユーザ端末300によってアクセスされるアプリケーションサーバである。サーバ350は、システム10を構成し得る。サーバ350は、インターネット等のネットワーク上に設けられ得る。スマートコントラクト101は、実施形態に係るNFT生成処理(第1処理)を実行するよう構成されている。ブロックチェーンは、図1に示すように、複数のコンピュータが相互に接続されたP2Pのコンピュータネットワークによって構成されている。スマートコントラクト101は、コンピュータネットワークシステム100を構成する複数のコンピュータのいずれかによって実行され得る。
第1実施形態に係るシステム10は、サーバ200(第2コンピュータ)を備える。サーバ200は、例えば、スマートコントラクト101における処理(第1処理;NFT生成処理)処理を補助する。サーバ200は、後述のユーザ端末300における処理を補助してもよい。サーバ200は、その他、システム10の管理のための処理を行っても良い。システム10は、前述のサーバ350を、システム10の構成要素の一つとして備えても良い。
サーバ200(第2コンピュータ)は、インターネット等のネットワークを介して、スマートコントラクト101が実装されたコンピュータネットワークシステム100(第1コンピュータ)と接続されている。サーバ200とスマートコントラクト101とは相互に通信可能である。
サーバ200は、プロセッサ210及びメモリ220を備えるコンピュータによって構成されている。前述のサーバ350も同様である。サーバ200及びサーバ350は複数のコンピュータによって構成されてもよい。メモリ220は、プロセッサ210に接続されている。メモリ220は、例えば、一次記憶装置及び二次記憶装置を備える。一次記憶装置は、例えば、RAMである。二次記憶装置は、例えば、ハードディスクドライブ(HDD)又はソリッドステートドライブ(SSD)である。メモリ220は、プロセッサ210によって実行されるコンピュータプログラム260を備える。プロセッサ210は、メモリ220に格納されたコンピュータプログラム260を読み出して実行する。コンピュータプログラム260は、サーバ200が実行する処理のためのプログラムコードを有する。サーバ200が実行する処理は、例えば、後述のNFT構成データ組込処理212(第2処理)を含む。
メモリ220は、データベース230を備える。データベース230は、例えば、NFT用素材データ240(素材データのデータベース)を備える。データベース230は、複数の素材データを備える。システム10は、複数の素材データの中から選択されたデータを用いて、ノンファンジブルトークンを生成し得る。データベース230は、さらに、NFT生成規則250を備え得る。NFT用素材データ240及びNFT生成規則250については後述される。データベース230は、後述のノンファンジブルトークン要求(NFT要求)を受信する前から、素材データを備える。したがって、システム10は、NFTの生成の際に、既に有している素材データを、システム10外部から、受信する必要がない。
第1実施形態に係るシステム10は、デジタルカードNFTの販売及び交換サービスを提供するため、デジタルカードNFTを生成する。システム10は、デジタルカードNFTを無償配布するサービスを提供してもよい。システム10は、デジタルカードNFTの購入又は交換を希望するユーザが有する端末300(ユーザ端末)との間で、ネットワークを介して、通信可能である。ユーザ端末300は、例えば、ユーザが有するスマートフォン、タブレット、ウェアラブルデバイス、パーソナルコンピュータ、又はその他のコンピュータである。第1実施形態に係るシステム10は、複数の種類のNFT(デジタルカードNFT;目的NFT)を生成可能に構成されている。第1実施形態に係るシステム10は、NFTの取得を希望するユーザの操作に基づいて生成されたノンファンジブルトークン要求を受信すると、NFTを生成し、生成したNFTの所有者が前記ユーザであることをブロックチェーンに記録する処理を実行するよう構成されている。例えば、第1実施形態に係るシステム10は、複数の種類のNFTの中からユーザが選択した種類のNFTを生成し、ユーザ(ブロックチェーンにおけるユーザアカウント)へ送信する。データベース230は、複数の種類それぞれに対応した素材データを備え得る。システム10は、データベース230が備える複数の素材データの中から、作成すべきNFTの種類に対応した素材データを選択し、選択されたデータを用いて、NFTを生成し得る。なお、システム10は、素材データのほか、システム10外部から受信したデータも用いてNFTを生成してもよい。
第1実施形態に係るシステム10によって提供されるデジタルカードNFTは、例えば、デジタルトレーディングカードをNFT化したものである。NFT化とは、データ又はデータを直接的又は間接的に示すURI等の識別子をブロックチェーンにおけるトークンとして記録することである。デジタルカードは、デジタル化されたトレーディングカードである。デジタルトレーディングカードは、コンピュータ画面上に表示される。以下では、デジタルカードNFTを、カードNFT(cardNFT)という。カードNFTは、任意の第三者との間で、取引可能である。カードNFTの取引記録及び過去及び現在のカードNFTの所有者は、ブロックチェーンにおいて記録される。カードNFT及びその他のNFTは、システム10外の取引所コンピュータにおいても取引可能である。
トレーディングカードは、コレクタブルカードとも呼ばれる。トレーディングカードは、そのトレーディングカードにおける題材に対応した様々な画像を有し、収集又は交換のために、販売される。題材となる画像は、例えば、芸能人、歌手、スポーツ選手、その他著名人、漫画・ゲーム・アニメーションなどのキャラクタ、ゲームのアイテム、乗物、機械、器具、動物、植物などの画像である。画像は、カードNFTの表示のため、カードNFTの保有者のコンピュータ又はそのカードNFTを参照できる第三者のコンピュータの画面に表示される。トレーディングカードは、題材となる画像等によって、異なる価値を有することがある。発行数の少ないトレーディングカードは、稀少価値を有することがある。
図2に示すように、実施形態に係るカードNFTには、カードNFTの題材となる画像データD1,D2,D3等が組み込まれて構成されている。また、実施形態に係るカードNFTには、複数のカテゴリC1,C2,C3が設定されている。カテゴリC1,C2,C3は、システム管理者によって設定されたカードNFTの種類であり、カードNFTのランク、ジャンル、又は性質などを示す。同じ画像データD1,D2,D3を有するカードNFTであっても、そのカードに付与されたカテゴリC1,C2,C3が異なれば、異なる種類のカードNFTとして扱われる。したがって、カテゴリの数がM個であり、システム10に用意された題材となる画像データの数がN個である場合、カードNFTの種類はM×Nとなり得る。したがって、非常に多種類のカードNFTが存在し得ることになり、ユーザによるカードNFTの収集・交換の楽しみが増加する。
実施形態において、カードNFTは、パック(pack)と呼ばれる単位で販売又は取引され得る。1個のパックは、システム10を利用することで、1又は複数のカードNFTと交換可能である。つまり、パックの保有者は、パックを1又は複数のカードNFTと引き換える権利を有する。ただし、ユーザは、パックがどのようなカードNFTと交換されるかは、実際に交換されるまで知り得ない。第1実施形態においては、パックもNFT化されている。NFT化されたパックをパックNFT(packNFT)という。
実施形態において、パックNFTは、1又は複数のカードNFTと交換可能であることを示すだけであり、交換される前の時点においては、そのパックNFTが実際にどのようなカードNFTと交換されるかを示さない。また、パックNFTは、そのパックNFTと交換されるカードNFTを備えているわけではなく、そのパックNFTと交換されるカードNFTに関する情報を有しているわけではない。したがって、ユーザは、パックNFTを保有していても、そのパックNFTがどのようなカードNFTと交換されるかは、実際に交換されるまで知り得ない。この結果、パックNFTを保有するユーザは、現物の未開封パックを有しているのと同様の体験(Experience)が得られる。すなわち、現物のトレーディングカードが封入された現物の未開封パックは、開封するまで、どのようなトレーディングカードがはいっているかわからないという楽しみがある。同様に、パックNFTにおいてもカードNFTに交換するまで、どのようなカードNFTが得られるかわからないという楽しみが得られる。
パックNFTは、任意の第三者との間で、取引可能である。取引記録及び過去及び現在のカードNFTの所有者は、ブロックチェーンにおいて記録される。パックNFTも取引可能であるため、パックNFTの転売も可能である。特定の種類のパックNFTが限定販売である場合、稀少価値が期待できる。
図2に示すように、パックNFTとしては、一例として、6枚のカードNFTと交換されるpack6NFTと、3枚のカードNFTと交換されるpack3NFTと、がある。複数の種類のパックNFTが容易されていることでユーザの利便性が向上する。
実施形態において、パックNFTは、ボックス(box)と呼ばれる単位で販売又は取引され得る。1個のボックスは、システムを利用することで、複数のパックNFTと交換される。ここでは、一例として、図2に示すように、1個のボックスは、6個のpack6NFTと交換される。つまり、ボックスの保有者は、ボックスを6個のパックと引き換える権利を有する。第1実施形態においては、ボックスもNFT化されている。NFT化されたボックスをボックスNFT(boxNFT)という。
実施形態において、ボックスNFTは、複数のパックNFTと交換可能であることを示すだけであり、交換される前の時点においては、そのボックスNFTが実際にどのパックNFTと交換されるかを示さない。また、ボックスNFTは、そのボックスNFTと交換されるパックNFTを備えているわけではなく、そのボックスNFTと交換されるパックNFTに関する情報を有しているわけではない。
ボックスNFTは、任意の第三者との間で、取引可能である。取引記録及び過去及び現在のボックスNFTの所有者は、ブロックチェーンにおいて記録される。ボックスNFTも取引可能であるため、ボックスNFTの転売も可能である。特定の種類のボックスNFTが限定販売である場合、稀少価値が期待できる。
以上のように、第1実施形態に係るシステム10によって提供されるNFTには、カードNFT、パックNFT、ボックスNFTの3つのタイプがある。すなわち、第1実施形態に係るシステム10によって提供されるNFTには、少なくとも3つの種類がある。また、第1実施形態に係るシステム10によって提供されるカードNFTには、M個のカテゴリがある。すなわち、第1実施形態に係るシステム10によって提供されるカードNFTには、少なくともM個の種類がある。このように、第1実施形態に係るシステム10は、複数の種類のNFTをユーザに提供できる。実施形態において、各NFTに設定された種類(タイプ又はカテゴリ)は、各NFTが有する識別情報によって、システム10によって識別され得る。識別情報は、各NFTが有する画像データであってもよく、この場合、画像データの種類が、NFTの種類を表す。また、識別情報は、その識別情報を有するNFTの種類を表す文字又は記号であってもよい。なお、要求送信トークンであるNFTが、そのNFTの種類を示す識別情報を有することで、要求送信トークンであるNFT自体を、目的NFTの種類を識別するための識別情報として用いることができる。具体的には、要求送信トークンであるNFTが有する識別情報が、生成すべき目的ノンファンジブルトークンの種類を識別するための識別情報として用いられ得る。
また、カードNFTに組み込まれる画像データの種類がNであれば、第1実施形態に係るシステム10によって提供されるカードNFTには、少なくともN個の種類がある。さらに、カードNFTのカテゴリ及びカードNFTに組み込まれる画像データの種類を総合すると、カードNFTには、M×N個の種類があり得る。なお、パックNFT及びボックスNFTにも、複数の種類があってもよい。種類に応じて、交換により得られるカードNFT及びパックNFTに違いを設けることもできる。
ボックスNFT及びパックNFTは、システム10によって、目的ノンファンジブルトークンに交換され得る要求送信トークン(要求送信ノンファンジブルトークン)として機能し得る。すなわち、システム10が受信した要求送信トークンが、ボックスNFT及びパックNFTによって、生成される目的ノンファンジブルトークンの種類が異なるものとなる。
図3は、システム10によって実行されるNFT生成処理の流れを示している。なお、図3に示すNFT生成処理は、スマートコントラクト101によって実行されるが、サーバ200が、その処理の一部(第2処理)を担う。NFT生成処理のうち、スマートコントラクト101(第1コンピュータ;コントラクトコンピュータ)によって実行される処理を第1処理といい、サーバ200(第2コンピュータ)によって実行される処理を第2処理という。なお、ここで説明するスマートコントラクト101とサーバ200との役割分担の仕方は、一例であり、役割分担の仕方が特に限定されるわけではなく、役割分担されなくてもよい。
図3に示すNFT生成処理においては、まず、ユーザ端末300などのコンピュータから、ノンファンジブルトークン要求(NFT要求)が、システム10へ送信される(ステップS11)。NFT要求は、例えば、スマートコントラクト101によって受信される(ステップS21)。NFT要求は、サーバ350からスマートコントラクト101へ送信されてもよいし、ユーザ端末300からサーバ350を介してスマートコントラクト101へ送信されてもよい。なお、ユーザは、ブロックチェーンを利用するためブロックチェーンアドレスを有する。ブロックチェーンアドレスは、例えば、0x00000のように表記され得る。ブロックチェーンアドレスは、ブロックチェーンアカウントとも呼ばれる。ユーザは、ブロックチェーンアカウントに対応するプライベートキー(秘密鍵)を有する。プライベートキーは、例えば、ユーザ端末300又は他の装置に保存される。プライベートキーは、ブロックチェーンに記録されるトランザクションの電子署名に用いられる。
図4は、ユーザ端末300(ユーザ用コンピュータ)におけるNFT要求のための操作画面310を示している。ユーザ端末300には、NFTの購入・交換・管理のためのユーザ用アプリケーションプログラムがインストールされている。図4に示す操作画面310は、ユーザ用アプリケーションプログラムによってユーザ端末300のディスプレイに表示される。なお、ユーザ用アプリケーションプログラムは、ユーザが保有するNFT又は購入・交換しようとするNFTを、ユーザ端末300に画面表示することもできる。図4に示す操作画面310は、ユーザ端末300がアクセスしたサーバ350(ユーザ用コンピュータ)によってユーザ端末300のディスプレイに表示されてもよい。
図4に示すように、操作画面310は、ボタン311,312,313,314,315を備える。ボタン311は、パック6個入りのボックス(ボックスNFT)購入操作を受け付ける。ボタン312は、カード6枚入りパック(pack6NFT)購入操作を受け付ける。ボタン313は、カード3枚入りパック(pack3NFT)購入操作を受け付ける。ボタン314は、ボックスNFTをカード6枚入りパック(pack6NFT)に交換する操作を受け付ける。ボックスNFTをカード6枚入りパック(pack6NFT)に交換する操作は、ボックスNFTの開封操作(openbox操作)と呼んでも良い。ボタン315は、パックNFT(pack6NFT又はpack3NFT)を、6枚又は3枚のカードNFTに交換する操作である。
ここでは、操作画面310において、ユーザがボタン311を選択する操作を「第1タイプ要求の操作」といい、ボタン312を選択する操作を「第2タイプ要求の操作」といい、ボタン313を選択する操作を「第3タイプ要求の操作」といい、ボタン314を選択する操作を「第4タイプ要求の操作」といい、ボタン315を選択する操作を「第5タイプ要求の操作」という。このように、ユーザは、操作画面310において、ボタン311,312,313,314,315の選択操作をすることができる。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、ユーザの選択操作を受け付けることができる。
第1実施形態において、第1タイプ要求はボックスNFTの要求であり、第2タイプ要求はpack6NFTの要求であり、第3タイプ要求はpack3NFTの要求であり、第4タイプ要求はpack6NFTの要求であり、第5タイプ要求はカードNFTの要求である。なお、ここでの要求は、システム10に対して、NFTの送信を要求することである。
第1タイプ要求は、必要数のファンジブルトークンとボックスNFTとの交換要求でもある。ファンジブルトークンは、例えば、イーサリアム又はビットコインのような暗号資産(仮想通過)である。以下では、ファンジブルトークンを「FT」ともいう。
第2タイプ要求は、必要数のFTとpack6NFTとの交換要求でもある。第3タイプ要求は、必要数のFTとpack3NFTとの交換要求でもある。FTの必要数は、交換されるNFTの種類によって異なり得る。このように、要求は、FTと引き換えにNFTの提供をシステム10に求めるものであってもよい。
第4タイプ要求は、ボックスNFTとpack6NFTとの交換要求でもある。第5タイプ要求は、pack6NFT又はpack3NFTとカードNFTとの交換要求でもある。このように、要求は、ある種類のNFTをシステム10に渡す代わりに、他の種類のNFTの提供をシステム10求めるものであってもよい。この場合、システム10から提供されるNFTの種類は、システム10に渡されるNFTの種類によって決まり得る。
前述のように、実施形態においては、ユーザ用コンピュータであるユーザ端末300又はサーバ350は、ユーザのボタン選択操作による選択に応じて要求送信トークンとして送信すべきファンジブルトークン数又はノンファンジブルトークンの種類を特定し、特定された数又は種類の要求送信トークンをスマートコントラクト101へ送信させるよう構成されている。
実施形態において、スマートコントラクト101は、一例として、所定の数のトークン又は所定の種類のトークン(要求送信トークン)を受信したときだけ目的ノンファンジブルトークンの生成・送信を実行するよう構成されている。すなわち、スマートコントラクト101は、所定の数以外の数のトークンを受信しても目的ノンファンジブルトークンの生成・送信をしないよう構成され、所定の種類以外のトークンを受信しても目的ノンファンジブルトークンの生成・送信を実行しないよう構成されている。そこで、ユーザ用コンピュータであるユーザ端末300又はサーバ350は、ユーザの選択操作による選択に応じて、適切な要求送信トークンだけをスマートコントラクト101へ送信するよう機能する。
図5は、ユーザ端末300におけるNFT要求のための操作及びNFT要求のための手順を示している。なお、図5に示す手順の一部又は全部は、ユーザ端末300がアクセスしたサーバ350によって実行されてもよい。ユーザは、ボックスNFTの購入を希望する場合、ボタン311を選択する操作、すなわち、第1タイプ要求の操作を行う(ステップS51)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、第1タイプ要求の操作を受け付けると、第1タイプ要求をスマートコントラクト101へ送信する(図3のステップS11参照)。第1タイプ要求の操作が行われた場合、NFT要求の送信は、スマートコントラクト101において第1タイプ要求に対応する第1モジュール111(図7参照)を呼び出すとともに、ボックスNFTを取得するため必要な数のFTを、スマートコントラクト101へ送信することを含む(図5のステップS56)。FTの送信は、例えば、ブロックチェーンにおけるユーザのアドレス(ブロックチェーンにおけるユーザアカウント)からスマートコントラクト101のコントラクトアドレスへ、FTを送信することによって行われる。ユーザアカウントからスマート01へのFTの送信は、例えば、サーバ350によって実行され得る。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、操作画面310におけるユーザの選択(ボタン311の選択)に応じて、送信すべきトークン(要求送信トークン)がFTであること、及びそのFTの必要数を特定し、特定された数のFTをスマートコントラクト101へ送信させる。
ユーザは、pack6NFTの購入を希望する場合、ボタン312を選択する操作、すなわち、第2タイプ要求の操作を行う(ステップS52)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、第2タイプ要求の操作を受け付けると、第2タイプ要求をスマートコントラクト101へ送信する(図3のステップS11参照)。第2タイプ要求の操作が行われた場合、NFT要求の送信は、スマートコントラクト101において第2タイプ要求に対応する第2モジュール112(図7参照)を呼び出すとともに、pack6NFTを取得するために必要な数のFTをスマートコントラクト101へ送信することを含む(図5のステップS56)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、ユーザがボタン312を選択したことに応じて、送信すべきトークン(要求送信トークン)がFTであること、及びそのFTの必要数を特定し、特定された数のFTをスマートコントラクト101へ送信させる。
ユーザは、pack3NFTの購入を希望する場合、ボタン313を選択する操作、すなわち、第3タイプ要求の操作を行う(ステップS53)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、第3タイプ要求の操作を受け付けると、第3タイプ要求をスマートコントラクト101へ送信する(図3のステップS11参照)。第3タイプ要求の操作が行われた場合、NFT要求の送信は、スマートコントラクト101において第3タイプ要求に対応する第3モジュール113(図7参照)を呼び出すとともに、pack3NFTを取得するために必要な数のFTをスマートコントラクト101へ送信することを含む(図5のステップS56)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、ユーザがボタン313を選択したことに応じて、送信すべきトークン(要求送信トークン)がFTであること、及びそのFTの必要数を特定し、特定された数のFTをスマートコントラクト101へ送信させる。
ユーザは、ボックスNFTからpack6NFTへの交換を希望する場合、ボタン314を選択する操作、すなわち、第4タイプ要求の操作を行う(ステップS54)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、第4タイプ要求の操作を受け付けると、第4タイプ要求をスマートコントラクト101へ送信する(図3のステップS11参照)。第4タイプ要求の操作が行われた場合、NFT要求の送信は、スマートコントラクト101において第4タイプ要求に対応する第4モジュール114(図7参照)を呼び出すとともに、ボックスNFTをスマートコントラクト101へ送信することを含む(図5のステップS57)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、ユーザがボタン314を選択したことに応じて、送信すべきトークン(要求送信トークン)の種類がボックスNFTであることを特定し、特定されたボックスNFTをスマートコントラクト101へ送信させる。
ユーザは、pack6NFT又はpack3NFTからカードNFTへの交換を希望する場合、ボタン315を選択する操作、すなわち、第5タイプ要求の操作を行う(ステップS55)。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、第5タイプ要求の操作を受け付けると、第5タイプ要求をスマートコントラクト101へ送信する(図3のステップS11参照)。第5タイプ要求の操作が行われた場合、NFT要求の送信は、スマートコントラクト101において第5タイプ要求に対応する第5モジュール115(図7参照)を呼び出すとともに、pack6NFT又はpack3NFTをスマートコントラクト101へ送信することである(図5のステップS58)。pack6NFT及びpack3NFTのうち、いずれが送信されるかは、ユーザの選択操作によって選択され得る。なお、第5タイプ要求の操作は、ユーザが所有するpack6NFT又はpack3NFTを選択する操作であってもよい。ユーザ用コンピュータであるユーザ端末300又はサーバ350は、ユーザの選択操作に応じて、送信すべきトークン(要求送信トークン)の種類がpack6NFT及びpack3NFTであることを特定し、特定されたpack6NFT及びpack3NFTをスマートコントラクト101へ送信させる。
図3に戻り、システム10は、ユーザ端末300から送信されたNFT要求を受信すると(ステップS21)、NFT要求に応じて、目的ノンファンジブルトークン(目的NFT)を生成する(ステップS22)。システム10は、目的NFTを生成するために用いられる生成用プライベートキー(秘密鍵)を有し、その生成用プライベートキーを用いて、目的NFTを生成する。例えば、システム10は、生成用プライベートキーを用いて、目的NFT生成のためのトランザクションに電子署名する。電子署名が付加されたトランザクションは、ブロックチェーンに記録される。システム10は、生成用プライベートキーを有しているため、目的NFTを取得することになるユーザのプライベートキーを用いなくても、当該ユーザが取得するNFTを生成できる。そして、システム10は、生成した目的NFTを、ユーザ端末300(ユーザアカウント)へ送信する(ステップS23)。送信された目的NFTはユーザ端末300によって受信される(ステップS12)。なお、目的NFTの送信は、ブロックチェーンにおいて、目的NFTの所有者がユーザに変更され、ユーザのアカウントに目的NFTが保有されている状態にする操作であれば足りる。すなわち、システム10は、生成した目的NFTの所有者が前記ユーザであることをブロックチェーンに記録するよう構成されていれば足りる。
つまり、目的NFTは、ユーザ端末300という特定の装置に向けて現実に送信される必要はなく、ユーザが端末300を介してアクセスできるユーザアカウント(ユーザのブロックチェーンアドレス)に送信されれば足りる。ユーザアカウントは、例えば、ブロックチェーンにおけるアカウントであり、そのようなアカウントは、ブロックチェーンにおけるユニークなアドレスによって識別され得る。ユーザアカウントへ送信された目的NFTの所有者は、当該ユーザとなり、当該ユーザは、目的NFTをユーザ端末300に表示させて参照できる。なお、システム10は、NFT要求の送信元を、前述のようなユーザアカウントによって認識してもよく、目的NFTの送信先も、前述のようなユーザアカウントによって認識し得る。システム10は、NFT要求の送信元を、目的NFTの送信先として認識し得る。つまり、システム10は、目的NFTを、NFT要求の送信元へ送信し得る。システム10は、目的NFTの送信先を示すデータを、NFT要求を受信すると同時に取得してもよいし、NFT要求を受信した後に取得してもよい。
図6は、前述の目的NFTを生成する処理(ステップS22)を示している。システム10は、受信したNFT要求が有する情報(識別情報)を用いて、生成すべき目的NFTの種類を識別する(ステップS61)。ここでは、目的NFTの種類を識別するために用いられる「識別情報」は、NFT要求自体である。つまり、NFT要求の種類が、第1タイプ要求、第2タイプ要求、第3タイプ要求、第4タイプ要求、及び第5タイプ要求のいずれかであるかによって、生成すべき目的NFTの種類が識別される。また、「識別情報」は、要求送信トークンの数又は種類であってもよく、要求送信トークンの数又は種類によって、生成すべき目的NFTの種類が識別され得る。「識別情報」は、NFT要求が有するその他のデータであってもよい。
また、システム10は、識別された種類に応じて、目的NFTの生成条件決定する(ステップS61)。生成条件は、目的NFTの生成の際に用いられる。生成条件は、例えば、どのような目的NFTが生成されるべきかを示す。生成条件は、生成される目的NFTの個数(発行数)を示してもよい。前述の「識別情報」は、生成される目的NFTの個数を示し得る。生成条件については後述される。
システム10は、生成条件に従って、初期NFTを発行する(ステップS62)。例えば、システム10は、生成条件が示す発行数に応じた数の初期NFTを発行する。初期NFTの発行は、システム10によって用いられるブロックチェーンにおいて用意されたNFT発行コマンドを実行することによって達成される。ブロックチェーンにおいてNFT発行コマンドが実行されると、ブロックチェーンを構成するコンピュータは、NFT発行コマンドを受け付けると、ブロックチェーンにおけるNFTの発行の処理を実行する。発行されたNFTは、ブロックチェーンにおける台帳に記録され、その記録は公開される。ブロックチェーンにおいて発行されたNFTには、そのNFTにユニークな識別子(NFTのアドレス又はNFT-ID)が付与される。システム10は、初期NFT発行のためのNFT発行コマンドの実行後、ブロックチェーンにおいて初期NFTの発行がなされるまで待機する。その待機時間は、ブロックチェーンにおいて異なるが、短い方が好ましい。待機時間を経て、システム10は、発行された初期NFTの識別子を取得することができる。
続いて、システム10は、NFT構成データ組込処理212を実行する(図2及び図6参照)。NFT構成データ組込処理212は、目的NFTの生成条件及び初期NFTの識別子を取得し、初期NFTの識別子に、生成条件(例えば、目的NFTの種類)に応じたNFT構成データを対応付ける。NFT構成データの候補となる複数のNFT用素材データ240は、データベース230に格納されている。NFT構成データ組込処理212において、システム10は、生成条件に従って、複数のNFT用素材データ240の中から、目的NFTの種類に応じたものを決定し、その素材データを用いて構成データを生成する。なお、決定された素材データをそのまま構成データとして用いても良い。構成データは、例えば、画像データ及び文字データである。システム10は、生成した構成データを、初期NFTの識別子と対応付ける処理を行う。これによって、初期NFTと構成データとが一体化され、目的NFTが生成される。以上によって目的NFTの生成が完了する(ステップS63)。なお、組込処理212は、スマートコントラクト101(スマートコントラクト101を実行するコントラクトコンピュータ;第1コンピュータ)によって実行されてもよいし、サーバ200(第2コンピュータ)によって実行されてもよい。
なお、ここでは、一例として、ステップS21,S22,S23を第1処理といい、処理212を第2処理という。一例として、第1処理は、図1におけるスマートコントラクト101(第1コンピュータ)によって実行され、第2処理は、サーバ200(第2コンピュータ)によって実行される。また、ここでは、一例として、目的NFTを生成する処理(ステップS22)のうち、ステップS61,S62,S63は、第1処理であり、組込処理212は、第2処理である。
NFT構成データ組込処理212は、サーバ200が、スマートコントラクト101による初期NFTの発行を検出した場合に、実行される。NFTの発行の検出は、例えば、スマートコントラクト101におけるNFT発行イベントの発生を、サーバ200が監視することによって行われる。すなわち、処理212は、イベントドリブン型の処理である。NFT発行イベントは、例えば、スマートコントラクト101がNFT発行コマンドを実行することによってスマートコントラクト101に生じる動作である。
サーバ200は、NFT発行コマンドの発生を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得する。生成条件及び初期NFTの識別子は、スマートコントラクト101から取得され得る。サーバ200は、取得した生成条件にしたがって、複数のNFT用素材データ240の中から、目的NFTの種類に応じたものを決定し、構成データを生成する。サーバ200は、生成した構成データを、スマートコントラクト101によって保有されている初期NFTの識別子に対応付ける処理を実行し、目的NFTを完成させる。つまり、システム10は、複数の素材データ240の中から、識別情報に基づいて選択されたデータを用いて、目的NFTを生成する。識別情報に基づいてデータを選択することは、識別情報に基づいて識別された目的NFTの種類に基づいてデータを選択することを含み得る。生成した目的NFTには、構成データが組み込まれている。構成データが組み込まれたNFTは、例えば、構成データを示すユニフォームリソースアイデンティファイア(URI)を有する。ここで、構成データを示すURIは、NFTのメタデータに備えられていてもよい。また、メタデータを示すURIは、NFTのインデックスデータに備えられていてもよい。なお、初期NFTの発行(ステップS62)と組込処理212とは、別々に行われる必要はなく、ステップS62において、構成データが組み込まれたNFTを生成してもよい。サーバ200は、処理212が完了すると、組込完了通知をスマートコントラクト101へ送信する。スマートコントラクト101は、組込完了通知を受信すると、目的NFTの生成が完了(ステップS63)したことを認識し、目的NFTを送信する(図3のステップS23)。目的NFTの送信は、目的NFTの新たな所有者が送信先(ユーザアカウント)になるように、ブロックチェーンにおいて所有者を記録する動作を伴う。つまり、目的NFTの送信は、目的NFTの譲渡又は販売となる。
実施形態においては、一例として、スマートコントラクト101は、図1及び図7に示すように、第1スマートコントラクト110と、第2スマートコントラクト120と、を備える。すなわち、実施形態においては、第1スマートコントラクト110を構成するソフトウェア及び第2スマートコントラクトを構成するソフトウェアそれぞれが、ブロックチェーンのためのコンピュータネットワークシステムにおいて実行されるように、ブロックチェーンに実装されている。第1スマートコントラクト110及び第2スマートコントラクト120は互いに通信可能である。
図7に示す第1スマートコントラクト110は、一例として、第1モジュール111、第2モジュール112、第3モジュール113、第4モジュール114、ファンジブルトークン数判定モジュール116(FT数判定モジュール)、及びNFTタイプ判定モジュール117を備える。図7に示す第2スマートコントラクト120は、一例として、第5モジュール115を備える。なお、ここでの「モジュール」は、ソフトウェアとしてのモジュールであり得る。「モジュール」は、例えば、コンピュータプログラム上で定義される関数、プロシージャ又はサブルーチンである。各モジュールは、ブロックチェーンを構成するコンピュータネットワークにおけるいずれかのコンピュータによって実行され得る。
第1モジュール111は、ボックスNFT購入のための処理が規定されたboxNFT購入モジュールである。第2モジュール112は、pack6NFT購入のための処理が規定されたpack6NFT購入モジュールである。第3モジュール113は、pack3NFT購入のための処理が規定されたpack6NFT購入モジュールである。第4モジュール114は、ボックスNFTをカード6枚入りパック(pack6NFT)に交換する処理が規定されたボックス交換モジュールである。第5モジュール115は、パックNFT(pack6NFT又はpack3NFT)を、6枚又は3枚のカードNFTに交換する処理が規定されたバック交換モジュールである。
FT数判定モジュール116は、スマートコントラクト101(第1スマートコントラクト110)が受信したFTの数が、目的NFT購入のためのFT必要数と一致するか否かを判定する際に呼び出されるモジュールである。NFTタイプ判定モジュール117は、スマートコントラクト101(第1スマートコントラクト110又は第2スマートコントラクト120)が受信したNFTのタイプ(種類)を判定する際に呼び出されるモジュールである。NFTタイプ判定モジュール117は、受信したトークンがFTであるかNFTであるかといったトークンの種類を判定するトークン判定モジュールとして機能してもよい。
実施形態においては、NFT要求が第1タイプ要求であれば第1モジュール111が呼び出され、第2タイプ要求であれば第2モジュール112が呼び出され、第3タイプ要求であれば第3モジュール113が呼び出され、第4タイプ要求であれば第4モジュール114が呼び出され、第5タイプ要求であれば第5モジュール115が呼び出される。つまり、NFT要求の種類に応じて、呼び出されるモジュールが決まる。また、スマートコントラクト101へ送信された要求送信トークンの数又は種類に応じて、呼び出されるモジュールが決まっても良い。このように、システム10は、NFT要求の種類を識別し、実行されるモジュール111,112,113,114,115を選択する。システム10は、NFT要求が第1タイプ要求であれば第1モジュール111を実行し、第2タイプ要求であれば第2モジュール112を実行し、第3タイプ要求であれば第3モジュール113を実行し、第4タイプ要求であれば第4モジュール114を実行し、第5タイプ要求であれば第5モジュール115を実行する。
図8は、第1モジュール111(ボックスNFT購入モジュール)における処理手順を示している。まず、第1スマートコントラクト110は、ユーザ用コンピュータであるユーザ端末300又はサーバ350から第1タイプ要求を受信する。第1タイプ要求とともに、必要数のFTも受信される。ボックスNFTのための必要数のFTの受信をしたことが第1タイプ要求の受信とみなされてもよい。第1モジュール111及び他のモジュール112,113へのFTの送信は、FTの所有者を送信元(ユーザアカウント)からスマートコントラクト101又はスマートコントラクト101の管理者のアカウントへ変更する操作を伴う。つまり、FTが、ユーザから支払われたことになる。所有者変更はブロックチェーンにおいて記録される。
第1タイプ要求は、第1モジュール111の呼び出しであるため、第1モジュール111が動作開始される。第1モジュール111における処理においては、まず、第1タイプ要求とともに受信したFTの数量が、ボックスNFT購入の必要数に合致しているか否かが判定される(ステップS81)。この判定は、FT数判定モジュール116によって行われる。なお、ボックスNFT購入の必要数は、予めユーザ端末へ通知されている。
FTの数量が、ボックスNFT購入の必要数に合致していない場合、その旨をユーザ端末300へ通知するなどのエラー処理が行われる(ステップS82)。この場合、第1モジュール111における処理は終了する。スマートコントラクト101は、ボックスNFTを取得するための必要数のFTを受信したことで、動作開始すべきモジュールが第1モジュール111であることを特定し、特定された第1モジュール111を動作開始させてもよい。つまり、FTの数が、識別情報を表し、識別情報としてのFTの数が生成条件を決定する。この場合、ステップS81,S82は省略可能であり、ステップS83から実行される。また、実施形態のように、スマートコントラクト101がFT及びNFTのいずれも受信可能である場合、スマートコントラクト101は、受信したトークン(要求送信トークン)が、FTであるかNFTであるかを判別する機能を有していても良い。
FTの数量が、ボックスNFT購入の必要数に合致している場合、続いて、目的NFTの生成条件が決定される(ステップS83)。ここでは、生成条件として、目的NFTの発行数P=1、及び、目的NFTの種類T=第1タイプ(box)が決定される。この生成条件は、目的NFTとして、第1タイプであるボックスNFTが1個発行されるべきことを示す。生成条件は、受信したFTの数に応じて決定され得る。
続いて、生成条件に従って、P個(1個)の初期NFT発行処理が実行され、初期NFTの識別子が得られる(ステップS84)。発行される初期NFTに、目的NFTの種類T=第1タイプ(box)などの生成条件を示すデータが含まれるように、初期NFTの発行処理が行われても良い。
サーバ200は、初期NFT発行を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得し、NFT構成データ組込処理を実行し、目的NFTであるボックスNFTを生成する(ステップS85)。サーバ200は、ブロックチェーンにおける初期NFTの記録を参照することで、「初期NFTの種類T」などの生成条件を取得してもよい。
NFT構成データ組込処理では、目的NFTの種類T=第1タイプ(box)に従い、複数のNFT用素材データ240の中から、ボックスNFTのための構成データ(例えば、ボックスNFTのための画像データ、ボックスNFTの名称等を示す文字データ)が選択される。データベース230が備える複数の素材データ240は、第1タイプ(box)であるボックスNFTのための素材データを含む。システム10は、受信した識別情報に基づいて識別された種類Tに基づいて、構成データとなる素材データを選択し得る。素材データ240以外のその他のデータ(例えば、ボックスNFTのシリアル番号)が構成データに付加されてもよい。そして、ボックスNFTのための構成データが初期NFTに組み込まれ、ボックスNFTが完成する。なお、構成データは初期NFTの発行時に組み込まれてもよい。ボックスNFTが完成すると、サーバ200は、完了通知をスマートコントラクト101へ送信する。スマートコントラクト101は、組込完了通知を受信すると、ボックスNFTの生成の完了を認識し(ステップS86)、ボックスNFTを、FTの送信元であるユーザアカウントへ送信する(ステップS87)。
以上のようにして、ユーザは、FTの支払いと引き換えに、ボックスNFTを入手できる。実施形態に係るシステム10は、FTが支払われた後にボックスNFTを生成するため、FTが支払われる前において、ユーザに渡すべきボックスNFTを保有する必要がない。システム10が生成すべきNFTが、ボックスNFTであることは、スマートコントラクト101へ送信されたFTの数によって識別され得る。
図9は、第2モジュール112(pack6NFT購入モジュール)における処理手順を示している。まず、第1スマートコントラクト110は、ユーザ用コンピュータであるユーザ端末300又はサーバ350から第2タイプ要求を受信する。第2タイプ要求とともに、必要数のFTも受信される。pack6NFTのための必要数のFTの受信をしたことが第2タイプ要求の受信とみなされてもよい。
第2タイプ要求は、第2モジュール112の呼び出しであるため、第2モジュール112が動作開始される。第2モジュール112における処理においては、まず、第2タイプ要求とともに受信したFTの数量が、pack6NFT購入の必要数に合致しているか否かが判定される(ステップS91)。この判定は、FT数判定モジュール116によって行われる。なお、pack6NFT購入の必要数は、予めユーザ端末へ通知されている。
FTの数量が、pack6NFT購入の必要数に合致していない場合、その旨をユーザ端末300へ通知するなどのエラー処理が行われる(ステップS92)。この場合、第2モジュール112における処理は終了する。スマートコントラクト101は、pack6NFTを取得するための必要数のFTを受信したことで、動作開始すべきモジュールが第2モジュール112であることを特定し、特定された第2モジュール112を動作開始させてもよい。つまり、FTの数が、識別情報を表し、識別情報としてのFTの数が生成条件を決定する。この場合、ステップS91,S92は省略可能であり、ステップS93から実行される。
FTの数量が、pack6NFT購入の必要数に合致している場合、続いて、目的NFTの生成条件が決定される(ステップS93)。ここでは、生成条件として、目的NFTの発行数P=1、及び、目的NFTの種類T=第2タイプ(pack6)が決定される。この生成条件は、目的NFTとして、第2タイプであるpack6NFTが1個発行されるべきことを示す。生成条件は、受信したFTの数に応じて決定され得る。
続いて、生成条件に従って、P個(1個)の初期NFT発行処理が実行され、初期NFTの識別子が得られる(ステップS94)。発行される初期NFTに、目的NFTの種類T=第2タイプ(pack6)などの生成条件を示すデータが含まれるように、初期NFTの発行処理が行われても良い。
サーバ200は、初期NFT発行を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得し、NFT構成データ組込処理を実行し、目的NFTであるpack6NFTを生成する(ステップS95)。サーバ200は、ブロックチェーンにおける初期NFTの記録を参照することで、「目的NFTの種類T」などの生成条件を取得してもよい。NFT構成データ組込処理では、目的NFTの種類T=第2タイプ(pack6)に従い、複数のNFT用素材データ240の中から、pack6NFTのための構成データ(例えば、pack6NFTのための画像データ、pack6NFTの名称等を示す文字データ)が選択される。データベース230が備える複数の素材データ240は、第2タイプ(pack6)であるpack6NFTのための素材データを含む。システム10は、受信した識別情報に基づいて識別された種類Tに基づいて、構成データとなる素材データを選択し得る。素材データ240以外のその他のデータ(例えば、pack6NFTのシリアル番号)が構成データに付加されてもよい。そして、pack6NFTのための構成データが初期NFTに組み込まれ、pack6NFTが完成する。なお、構成データは初期NFTの発行時に組み込まれてもよい。pack6NFTが完成すると、サーバ200は、完了通知をスマートコントラクト101へ送信する。スマートコントラクト101は、組込完了通知を受信すると、pack6NFTの生成の完了を認識し(ステップS96)、pack6NFTを、FTの送信元であるユーザアカウントへ送信する(ステップS97)。
以上のようにして、ユーザは、FTの支払いと引き換えに、pack6NFTを入手できる。実施形態に係るシステム10は、FTが支払われた後にpack6NFTを生成するため、FTが支払われる前において、ユーザに渡すべきpack6NFTを保有する必要がない。システム10が生成すべきNFTが、pack6NFTであることは、スマートコントラクト101へ送信されたFTの数によって識別され得る。
図10は、第3モジュール113(pack3NFT購入モジュール)における処理手順を示している。まず、第1スマートコントラクト110は、ユーザ用コンピュータであるユーザ端末300又はサーバ350から第3タイプ要求を受信する。第3タイプ要求とともに、必要数のFTも受信される。pack3NFTのための必要数のFTの受信をしたことが第3タイプ要求の受信とみなされてもよい。
第3タイプ要求は、第3モジュール113の呼び出しであるため、第3モジュール113が動作開始される。第3モジュール113における処理においては、まず、第3タイプ要求とともに受信したFTの数量が、pack3NFT購入の必要数に合致しているか否かが判定される(ステップS101)。この判定は、FT数判定モジュール116によって行われる。なお、pack3NFT購入の必要数は、予めユーザ端末へ通知されている。
FTの数量が、pack3NFT購入の必要数に合致していない場合、その旨をユーザ端末300へ通知するなどのエラー処理が行われる(ステップS102)。この場合、第3モジュール113における処理は終了する。スマートコントラクト101は、pack3NFTを取得するための必要数のFTを受信したことで、動作開始すべきモジュールが第3モジュール113であることを特定し、特定された第3モジュール113を動作開始させてもよい。つまり、FTの数が、識別情報を表し、識別情報としてのFTの数が生成条件を決定する。この場合、ステップS101,S102は省略可能であり、ステップS103から実行される。
FTの数量が、pack3NFT購入の必要数に合致している場合、続いて、目的NFTの生成条件が決定される(ステップS103)。ここでは、生成条件として、目的NFTの発行数P=1、及び、目的NFTの種類T=第3タイプ(pack3)が決定される。この生成条件は、目的NFTとして、第3タイプであるpack3NFTが1個発行されるべきことを示す。生成条件は、受信したFTの数に応じて決定され得る。
続いて、生成条件に従って、P個(1個)の初期NFT発行処理が実行され、初期NFTの識別子が得られる(ステップS104)。発行される初期NFTに、目的NFTの種類T=第3タイプ(pack3)などの生成条件を示すデータが含まれるように、初期NFTの発行処理が行われても良い。
サーバ200は、初期NFT発行を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得し、NFT構成データ組込処理を実行し、目的NFTであるpack3NFTを生成する(ステップS105)。サーバ200は、ブロックチェーンにおける初期NFTの記録を参照することで、「目的NFTの種類T」などの生成条件を取得してもよい。NFT構成データ組込処理では、目的NFTの種類T=第3タイプ(pack3)に従い、複数のNFT用素材データ240の中から、pack3NFTのための構成データ(例えば、pack3NFTのための画像データ、pack3NFTの名称等を示す文字データ)が選択される。データベース230が備える複数の素材データ240は、第3タイプ(pack3)であるpack3NFTのための素材データを含む。システム10は、受信した識別情報に基づいて識別された種類Tに基づいて、構成データとなる素材データを選択し得る。素材データ240以外のその他のデータ(例えば、pack3NFTのシリアル番号)が構成データに付加されてもよい。そして、pack3NFTのための構成データが初期NFTに組み込まれ、pack3NFTが完成する。なお、構成データは初期NFTの発行時に組み込まれてもよい。pack3NFTが完成すると、サーバ200は、完了通知をスマートコントラクト101へ送信する。スマートコントラクト101は、組込完了通知を受信すると、pack3NFTの生成の完了を認識し(ステップS106)、pack3NFTを、FTの送信元であるユーザアカウントへ送信する(ステップS107)。
以上のようにして、ユーザは、FTの支払いと引き換えに、pack3NFTを入手できる。実施形態に係るシステム10は、FTが支払われた後にpack3NFTを生成するため、FTが支払われる前において、ユーザに渡すべきpack3NFTを保有する必要がない。システム10が生成すべきNFTが、pack3NFTであることは、スマートコントラクト101へ送信されたFTの数によって識別され得る。
図11は、第4モジュール114(ボックス交換モジュール)における処理手順を示している。まず、第1スマートコントラクト110は、ユーザ用コンピュータであるユーザ端末300又はサーバ350から第4タイプ要求を受信する。第4タイプ要求とともに、NFT(ボックスNFT)も受信される。第4モジュール114のボックスNFTの送信は、ボックスNFTの所有者を送信元(ユーザアカウント)からスマートコントラクト101又はスマートコントラクト101の管理者のアカウントへ変更する操作を伴う。つまり、ボックスNFTが、ユーザからスマートコントラクトへ譲渡されたことになる。NFTの所有者の変更は、ブロックチェーンにおいて記録される。ボックスNFTをしたことが第4タイプ要求の受信とみなされてもよい。
第4タイプ要求は、第4モジュール114の呼び出しであるため、第4モジュール114が動作開始される。第4モジュール114における処理においては、まず、第4タイプ要求とともに受信したNFTの種類が、ボックスNFTであるか否かが判定される(ステップS111)。この判定は、NFTタイプ判定モジュール117によって行われる。なお、NFTの種類の判定は、例えば、判定対象のNFTに含まれる種類Tを示す情報、又はブロックチェーンにおける判定対象NFTの記録が示す種類Tに基づいて行われる。
受信したNFTの種類が、ボックスNFTではない場合、その旨をユーザ端末300へ通知するなどのエラー処理が行われる(ステップS112)。この場合、第4モジュール114における処理は終了する。スマートコントラクト101は、ボックスNFTを受信したことで、動作開始すべきモジュールが第4モジュール114であることを特定し、特定された第4モジュール114を動作開始させてもよい。つまり、受信したNFTの種類(ボックスNFT)が、識別情報を表し、識別情報としてのNFTの種類が生成条件を決定する。この場合、ステップS111,S112は省略可能であり、ステップS113から実行される。
受信したNFTの種類が、ボックスNFTである場合、続いて、目的NFTの生成条件が決定される(ステップS113)。ここでは、生成条件として、目的NFTの発行数P=6、及び、目的NFTの種類T=第2タイプ(pack6)が決定される。この生成条件は、目的NFTとして、第2タイプであるpack6NFTが6個発行されるべきことを示す。つまり、ボックスNFTは、6個のpack6NFTと交換される。生成条件は、受信したNFTの種類がボックスNFTであることに応じて決定され得る。
続いて、生成条件に従って、P個(6個)の初期NFT発行処理が実行され、初期NFTの識別子が得られる(ステップS114)。発行される初期NFTに、目的NFTの種類T=第2タイプ(pack6)などの生成条件を示すデータが含まれるように、初期NFTの発行処理が行われても良い。
サーバ200は、初期NFT発行を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得し、NFT構成データ組込処理を実行し、目的NFTであるpack6NFTを生成する(ステップS115)。サーバ200は、ブロックチェーンにおける初期NFTの記録を参照することで、「目的NFTの種類T」などの生成条件を取得してもよい。NFT構成データ組込処理では、目的NFTの種類T=第2タイプ(pack6)に従い、複数のNFT用素材データ240の中から、pack6NFTのための構成データ(例えば、pack6NFTのための画像データ、pack6NFTの名称等を示す文字データ)が選択される。データベース230が備える複数の素材データ240は、第2タイプ(pack6)であるpack6NFTのための素材データを含む。システム10は、受信した識別情報に基づいて識別された種類Tに基づいて、構成データとなる素材データを選択し得る。素材データ240以外のその他のデータ(例えば、pack6NFTのシリアル番号)が構成データに付加されてもよい。構成データは、6個のNFT分生成される。そして、6個の初期NFTそれぞれに、pack6NFTのための構成データが組み込まれ、6個のpack6NFTが完成する。なお、構成データは初期NFTの発行時に組み込まれてもよい。6個のpack6NFTが完成すると、サーバ200は、完了通知をスマートコントラクト101へ送信する。スマートコントラクト101は、組込完了通知を受信すると、6個のpack6NFTの生成の完了を認識し(ステップS116)、pack6NFTを、ボックスNFTの送信元であるユーザアカウントへ送信する(ステップS117)。
以上のようにして、ユーザは、ボックスNFTを引き渡す代わりに、6個のpack6NFTを入手できる。つまり、ユーザは、6個のpackが含まれるボックスを開封したのと同様の体験が得られる。実施形態に係るシステム10は、ボックスNFTが引き渡された後にpack6NFTを生成するため、ボックスNFTが引き渡される前において、ユーザに渡すべきpack6NFTを保有する必要がない。システム10が生成すべきNFTが、pack6NFTであることは、スマートコントラクト101へ送信されたNFTの種類がボックスNFTであることによって識別され得る。
図12は、第5モジュール115(パック交換モジュール)における処理手順を示している。まず、第1スマートコントラクト110は、ユーザ用コンピュータであるユーザ端末300又はサーバ350から第5タイプ要求を受信する。第5タイプ要求とともに、NFT(pack6NFT又はpack3NFT)も受信される。第5モジュール115のパックNFTの送信は、パックNFTの所有者を送信元(ユーザアカウント)からスマートコントラクト101又はスマートコントラクト101の管理者のアカウントへ変更する操作を伴う。つまり、パックNFTが、ユーザからスマートコントラクトへ譲渡されたことになる。NFTの所有者の変更は、ブロックチェーンにおいて記録される。pack6NFT又はpack3NFTをしたことが第5タイプ要求の受信とみなされてもよい。
また、第5タイプ要求の送信の際には、送信されるpack6NFT又はpack3NFTと交換される複数のcardNFTそれぞれのカテゴリC1,C2,C3,・・・の組み合わせを示す情報(組み合わせ情報)も送信される。
実施形態においては、サーバ200は、pack6NFT又はpack3NFTと交換される複数のcardNFTの種類を決定するためのNFT生成規則250を備える。NFT生成規則250は一例として、pack6NFT又はpack3NFTと交換される複数のcardNFTそれぞれのカテゴリC1,C2,C3,・・・の組み合わせである。カテゴリC1,C2,C3の組み合わせパターンが、NFT生成規則250が多数設定されている。例えば、pack6NFTのための組み合わせパターンの一例は、カテゴリC1のカードNFTが2枚、カテゴリC3のカードNFTが2枚、カテゴリC4のカードNFTが1枚、カテゴリC6のカードNFTが1枚である。pack3NFTのための組み合わせパターンの一例は、カテゴリC2のカードNFTが1枚、カテゴリC4のカードNFTが1枚、カテゴリC5のカードNFTが1枚である。NFT生成規則250において発生頻度の低いカテゴリのカードNFTは、レアカードとして扱われる可能性がある。
実施形態においては、一例として、ユーザ端末300(のアプリケーションプログラム)又はサーバ350は、第5タイプ要求を送信する際に、サーバ200にアクセスし、pack6NFT又はpack3NFTと交換される複数のcardNFTそれぞれのカテゴリC1,C2,C3,・・・の組み合わせを示す情報(組み合わせ情報)を取得する。取得した組み合わせ情報は、目的NFTの種類を識別するために用いられる情報として、第5タイプ要求とともに、スマートコントラクト101へ送信される。
第5タイプ要求は、第2スマートコントラクト120における第5モジュール115の呼び出しであるため、スマートコントラクト101が第5タイプ要求を受信すると、第5モジュール115が動作開始される。第5モジュール115における処理においては、まず、第5タイプ要求とともに受信したNFTの種類が、pack6NFT又はpack3NFTであるか否かが判定される(ステップS121)。この判定は、NFTタイプ判定モジュール117によって行われる。
受信したNFTの種類が、pack6NFT又はpack3NFTではない場合、その旨をユーザ端末300へ通知するなどのエラー処理が行われる(ステップS122)。この場合、第5モジュール115における処理は終了する。スマートコントラクト101は、pack6NFT又はpack3NFTを受信したことで、動作開始すべきモジュールが第5モジュール115であることを特定し、特定された第5モジュール115を動作開始させてもよい。つまり、受信したNFTの種類(pack6NFT又はpack3NFT)が、識別情報を表し、識別情報としてのNFTの種類が生成条件を決定する。この場合、ステップS121,S122は省略可能であり、ステップS213から実行される。
受信したNFTの種類が、pack6NFT又はpack3NFTである場合、受信したNFTの種類及び組み合わせ情報に応じて、目的NFTの生成条件が決定される(ステップS123)。ここでは、受信したNFTが、pack6NFTである場合、NFT生成条件として、目的NFTの発行数P=6、及び、目的NFTの種類T=第4タイプ(card)、生成される目的カードNFTのカテゴリと枚数、が決定される。生成されるカードNFTのカテゴリと枚数は、受信した組み合わせ情報のとおり決定される。この生成条件は、目的NFTとして、第4タイプであるcardNFTが6個発行されるべきことを示す。つまり、pack6NFTは、6個のcardNFTと交換される。また、この生成条件は、生成される6個のcardNFTのカテゴリとカテゴリ毎の枚数を示す。カテゴリとカテゴリ毎の枚数は、例えば、前述のとおり、カテゴリC1のカードNFTが2枚、カテゴリC3のカードNFTが2枚、カテゴリC4のカードNFTが1枚、カテゴリC6のカードNFTが1枚である。
受信したNFTが、pack3NFTである場合、NFT生成条件として、目的NFTの発行数P=3、及び、目的NFTの種類T=第4タイプ(card)、生成されるカードNFTのカテゴリと枚数、が決定される。この生成条件は、目的NFTとして、第4タイプであるcardNFTが3個発行されるべきことを示す。つまり、pack3NFTは、3個のcardNFTと交換される。また、この生成条件は、生成される6個のcardNFTのカテゴリとカテゴリ毎の枚数を示す。カテゴリとカテゴリ毎の枚数は、例えば、前述のとおり、カテゴリC2のカードNFTが1枚、カテゴリC4のカードNFTが1枚、カテゴリC5のカードNFTが1枚である。
なお、生成される目的カードNFTのカテゴリと枚数は、スマートコントラクト120が、サーバ200から取得してもよい。
続いて、生成条件に従って、P個(6個又は3個)の初期NFT発行処理が実行され、P個の初期NFTの識別子が得られる(ステップS124)。発行される初期NFTそれぞれに、目的NFTの種類T=第4タイプ(card)及びカテゴリなどの生成条件を示すデータが含まれるように、初期NFTの発行処理が行われても良い。
サーバ200は、初期NFT発行を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得し、NFT構成データ組込処理を実行し、目的NFTであるcardNFTを生成する(ステップS125)。サーバ200は、ブロックチェーンにおける初期NFTそれぞれの記録を参照することで、各初期NFTの「目的NFTの種類T」及び「カテゴリ」などの生成条件を取得してもよい。NFT構成データ組込処理では、目的NFTの種類T=第4タイプ(card)及び「カテゴリ」に従い、複数のNFT用素材データ240の中から、cardNFTのための構成データが選択される。データベース230が備える複数の素材データ240は、第4タイプ(card)であるcardNFTのための素材データを含む。システム10は、受信した識別情報に基づいて識別された種類Tに基づいて、構成データとなる素材データを選択し得る。cardNFTのための構成データは、例えば、cardNFTのカテゴリC1,C2,C3,・・を示す画像データ、cardNFTのカテゴリ名称を示す文字データ、cardNFTの題材に応じた画像データD1,D2,D3,・・・などを含む。カテゴリの名称は、例えば、プラチナ、ゴールド、又はシルバーといったランクを示す。
cardNFTのカテゴリC1,C2,C3,・・を示す画像データ、及び、cardNFTのカテゴリ名称を示す文字データは、生成条件が示す「カテゴリ」に従って、複数のNFT用素材データ240の中から選択される。cardNFTの題材に応じた画像データD1,D2,D3,・・・は、例えば、cardNFTの題材に応じた画像データの候補となる素材データの中から、サーバ200によってランダムに決定される。例えば、cardNFTの題材が、あるスポーツチームの選手である場合、そのスポーツチームに所属する複数の選手の画像データが、cardNFTの題材に応じた画像データD1,D2,D3の候補として、登録されている。サーバ200は、その候補の中から、ランダムに、cardNFTの題材に応じた画像データを決定する。なお、cardNFTの題材は、pack6又はpack3の種類に応じて決定されてもよい。例えば、チームAの選手のカードNFTと交換されるチームA用pack6NFTと、チームBの選手のカードNFTと交換されるチームB用pack6NFTと、が存在してもよい。この場合、システム10は、チームA用pack6NFTを受信した場合、チームAの選手の複数の画像データの中から選択された画像データを用いて、チームAに属するある選手のカードNFTを生成し得る。また、システム10は、チームB用pack6NFTを受信した場合、チームBの選手の複数の画像データの中から選択された画像データを用いて、チームBに属するある選手のカードNFTを生成し得る。
実施形態においては、題材に応じた画像データとは別に、カテゴリに応じた画像データも、カードNFTに付与されるため、カードNFTのバリエーションが多くなり、収集の楽しみが大きくなっている。例えば、同じ選手の画像データが付与されたcardNFTであっても、カテゴリC1の画像が付与されたものと、カテゴリC2の画像が付与されたものとでは、異なる種類のものとして認識され得る。例えば、ある選手の同じ画像データを有する複数のcardNFTであっても、カテゴリC1である「プラチナ」を示す文字及び「プラチナ」に関する画像を有するものと、カテゴリC2である「ゴールド」を示す文字及び「ゴールド」に関する画像を有するものとでは、異なる種類のものとして認識され得る。同じ選手の画像データを有するcardNFTであっても、カテゴリが異なるため、cardNFTの価値は異なり得る。
このようにして、P個(6個又は3個)のNFT分の構成データが生成される。そして、P個の初期NFTそれぞれに、cardNFTのための構成データが組み込まれ、P個(6個又は3個)のcardNFTが完成する。なお、構成データは初期NFTの発行時に組み込まれてもよい。P個のcardNFTが完成すると、サーバ200は、完了通知をスマートコントラクト101へ送信する。スマートコントラクト101は、組込完了通知を受信すると、P個のcardNFTの生成の完了を認識し(ステップS126)、cardNFTを、パックNFTの送信元であるユーザアカウントへ送信する(ステップS127)。なお、構成データは、cardNFTのシリアル番号など、個々のcardNFTを、他のcardNFTから区別してユニークにするための識別情報を含んでも良い。cardNFTをユニークにするための識別情報を有していることで、あるcardNFTが、他のcardNFTにも用いられ得る共通の素材データを有していても、稀少価値を高め得る。
以上のようにして、ユーザは、ボックスNFTを引き渡す代わりに、P個のcardNFTを入手できる。つまり、ユーザは、6枚又は3枚のカードが含まれるパックを開封したのと同様の体験が得られる。実施形態に係るシステム10は、パックNFTが引き渡された後にcardNFTを生成するため、パックNFTが引き渡される前において、ユーザに渡すべきcardNFTを保有する必要がない。特に、実施形態に係るシステム10においては、M×N個(カテゴリの数M×題材に応じた画像データN)という多くの種類のcardNFTが存在し得るが、そのような多種類のcardNFTを予め生成し、システム10に保有させておく必要がない。
また、実施形態に係るシステム10では、cardNFTと交換されるpack6NFT又はpack3NFTは、どのような種類のcardNFTと交換されるかは、予め決まっていない。したがって、販売される多数のpack6NFT又はpack3NFTそれぞれに、交換されるcardNFTを予め割り当てておく作業が不要である。システム10が生成すべきNFTが、cardNFTであることは、スマートコントラクト101へ送信されたNFTの種類がpack6NFT又はpack3NFTであることによって識別され得る。また、実施形態のスマートコントラクト101は、受信した要求送信トークンの数又は種類によって、どのような目的ノンファンジブルトークンを生成すべきかを識別して、適切な目的ノンファンジブルトークンを生成することができる。
以上のように、実施形態に係るスマートコントラクト101は、受信した要求送信トークンとして何を受信したかによって、どのような目的NFTを生成して送信するかが設定されている。そして、実施形態においては、スマートコントラクト101の動作開始(アクティブ化)の契機は、ユーザがスマートコントラクト101に何かを送ったことである。より具体的には、スマートコントラクト101の動作開始(アクティブ化)の契機は、ユーザがスマートコントラクト101に何らかのトークン(要求送信トークン)を送信したことである。
<2.2 第2実施形態:チケットNFT生成システム>
図13は、第2実施形態に係るシステム20の一例を示している。第2実施形態において特に説明しない点については、第1実施形態に係るシステム10と同様である。
第2実施形態に係るシステム20は、ブロックチェーン等のコンピュータネットワークシステムに実装されたスマートコントラクト102と、サーバ200と、を備える。第2実施形態に係るシステム20は、デジタルチケットNFTの販売又は発行サービスを提供するため、デジタルチケットNFTを生成する。システム20は、デジタルチケットNFTの購入又は発行を希望するユーザが有する端末300(ユーザ端末)との間で、ネットワークを介して、通信可能である。
第2実施形態に係るスマートコントラクト102は、チケットNFT生成処理を実行するよう構成されている。第2実施形態に係るサーバ200は、NFT構成データ組込処理212を実行するよう構成されている。また、第2実施形態に係るサーバ200は、チケットNFT発行のため、ユーザからの予約受付処理215を実行し得る。
第2実施形態に係るシステム20によって提供されるデジタルチケットNFTは、チケットをNFT化したものである。デジタルチケットNFTは、コンピュータ画面上に表示される。以下では、デジタルチケットNFTを、チケットNFTという。チケットNFTも、任意の第三者との間で、取引可能である。
チケットは、例えば、コンサート・ライブ・劇・映画・セミナーなどのイベントへの参加のためのチケット、美術館・博物館などの施設への入場のためのチケット、鉄道・飛行機・バスなどの交通機関を利用するためのチケットで、商品・サービスの提供を受けるための引換チケット又は商品券である。チケットは、商品・サービス購入のための割引クーポンを含み得る。
実施形態に係るチケットNFTは、ブロックチェーンにおいて発行されたNFTに、チケットであることを示す画像データ又は文字データなどの構成データを組み込んで構成されている。構成データが組み込まれたNFTは、例えば、構成データ自体又は構成データを示す直接的又は間接的に示すURIを有する。URIは、構成データを直接的に示してもよいし間接的に示してもよい。例えば、イベントのためのチケットNFTであれば、イベントのための画像データ又は文字データが組み込まれている。チケットNFTに組み込まれる構成データは、チケットNFTの目的(例えば、特定のイベント)毎に異なり得る。したがって、チケットNFTの種類は、複数存在し得る。
第2実施形態に係るシステム20は、イベントの種類・目的等に応じた種類のチケットNFTを生成して、ユーザに提供できる。図13に示すように、第2実施形態に係るシステム20は、ユーザ用コンピュータであるユーザ端末300等からのチケットNFT要求(NFT要求)を受信し、目的NFTとして、チケットNFTをユーザのアカウントへ送信する。ここでのチケットNFT要求は、チケット発行スマートコントラクト102の呼び出しとして行われる。チケット発行スマートコントラクト102は、呼び出されると、チケットNFT生成処理を実行する。
図14は、チケット発行スマートコントラクト102におけるチケットNFT生成処理の手順を示している。まず、スマートコントラクト102は、ユーザ用コンピュータであるユーザ端末300等から、NFT要求を受信する。NFT要求は、ユーザ用コンピュータであるサーバから受信してもよい。ここでのNFT要求は、チケットNFTの発行の要求である。NFT要求のため、チケットNFT購入代金としてのFTが受信される。FTの送信は、FTの所有者を送信元(ユーザアカウント)からスマートコントラクト101又はスマートコントラクト101の管理者のアカウントへ変更する操作を伴う。つまり、チケットNFT購入代金としてのFTが、ユーザから支払われたことになる。所有者変更はブロックチェーンにおいて記録される。チケットNFT要求の受信は、チケットNFTと交換されるNFT(チケット引き換えNFT)の受信として行われても良い。チケット引き換えNFTは、後述のチケット情報を有していてもよい。スマートコントラクト102は、チケット引き換えNFTが有するチケット情報を用いて、チケットNFTを生成することができる。
また、スマートコントラクト102は、NFT要求とともに、チケット情報も受信する。チケット情報は、例えば、チケット番号、イベント名、予約された座席情報、イベントの日付、イベントの名前等を含む。チケット情報は、例えば、サーバ200の予約受付処理215によって生成され、予約受付成立によって生成されたチケット情報が、ユーザ端末のチケット予約アプリケーションプログラムへ送信される。チケット予約アプリケーションプログラムは、受信したチケット情報とともにNFT要求をスマートコントラクト102へ送信する処理を、ユーザ用コンピュータであるユーザ端末300(コンピュータ)等に実行させることができる。チケット情報は、目的NFTであるチケットNFTの種類を識別するための識別情報として用いられ得る。生成すべきチケットNFTの種類は、スマートコントラクト102が受信した要求送信トークンとしてのFT又はNFT(チケット引き換えNFT)の数又は種類によって表されても良い。
スマートコントラクト102は、NFT要求を受信すると、受信したFTの数量が、要求されたチケットNFT購入の必要数に合致しているか否かを判定する(ステップS141)。この判定は、FT数判定モジュール116によって行われる。なお、チケットNFT購入の必要数は、予めユーザ端末へ通知されている。
FTの数量が、チケットNFT購入の必要数に合致していない場合、その旨をユーザ端末300へ通知するなどのエラー処理が行われる(ステップS142)。この場合、チケット発行処理は終了する。
FTの数量が、チケットNFT購入の必要数に合致している場合、続いて、目的NFTの生成条件が決定される(ステップS143)。ここでは、生成条件として、受信したチケット情報に基づき、目的NFTの発行数P=1、及び、目的NFTの種類T=Eイベントが決定される。この生成条件は、目的NFTとして、EイベントのためのチケットNFTが1個発行されるべきことを示す。生成条件は、スマートコントラクト102が受信した要求送信トークンとしてのFT又はNFT(チケット引き換えNFT)の数又は種類によって決定されてもよい。
続いて、生成条件に従って、P個(1個)の初期NFT発行処理が実行され、初期NFTの識別子が得られる(ステップS144)。発行される初期NFTに、目的NFTの種類T=Eイベントなどの生成条件を示すデータが含まれるように、初期NFTの発行処理が行われても良い。
サーバ200は、初期NFT発行を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得し、NFT構成データ組込処理を実行し、目的NFTであるチケットNFTを生成する(ステップS145)。サーバ200は、ブロックチェーンにおける初期NFTの記録を参照することで、「初期NFTの種類T」などの生成条件を取得してもよい。
NFT構成データ組込処理では、目的NFTの種類T=Eイベントに従い、複数のNFT用素材データ240の中から、Eイベントのための構成データ(例えば、Eイベントのための画像データ、Eイベントの名称、チケット番号、座席、日付等を示す文字データ)が選択される。データベース230が備える複数の素材データ240は、イベントの種類が複数あることに応じて、複数の素材データを有する。つまり、データベース230は、Eイベントのための素材データを備える。システム20は、受信した識別情報に基づいて識別された種類Tに基づいて、複数の素材データの中から、構成データとなる素材データを選択し得る。ここでは、識別情報として受信したチケット情報(Eイベント)は、複数の素材データのいずれかを示すため、システム20は、識別情報(Eイベント)に基づいて、複数の素材データの中から、NFTに組み込まれるデータを選択できる。そして、Eイベントのための構成データが初期NFTに組み込まれ、EイベントのためのチケットNFTが完成する。Eイベントの名称等は、他の構成データの生成にも用いられ得る共通の素材データであり、チケット番号等は、構成データを、ユニークなデータとするための情報である。なお、構成データは初期NFTの発行時に組み込まれてもよい。システム20は、チケットNFTを生成するために用いられるプライベートキーを有し、そのプライベートキーを用いて、チケットNFTを生成する。システム10は、NFT生成用のプライベートキーを有しているため、ユーザのプライベートキーを用いなくても、チケットNFTを生成できる。チケットNFTが完成すると、サーバ200は、完了通知をスマートコントラクト102へ送信する。スマートコントラクト102は、組込完了通知を受信すると、チケットNFTの生成の完了を認識し(ステップS146)、チケットNFTを、FTの送信元であるユーザアカウントへ送信する(ステップS147)。
以上のようにして、ユーザは、FTの支払いと引き換えに、チケットNFTを入手できる。実施形態に係るシステム20は、FTが支払われた後にチケットNFTを生成するため、FTが支払われる前において、ユーザに渡すべき様々な種類のチケットNFTを保有する必要がない。なお、チケットNFT要求は、チケットNFT購入代金の支払いを伴わなくてもよい。
<2.3 第3実施形態:証書NFT生成システム>
図15は、第3施形態に係るシステム30の一例を示している。第3実施形態において特に説明しない点については、第1実施形態に係るシステム10及び第2実施形態に係るシステム20と同様である。
第3実施形態に係るシステム30は、ブロックチェーン等のコンピュータネットワークシステムに実装されたスマートコントラクト103と、サーバ200と、を備える。第3実施形態に係るシステム30は、保証証書NFTなどの証書NFTを提供するため、証書NFTを生成する。システム30は、証書NFTの発行を希望するユーザが有する端末300(ユーザ端末)等のユーザ用コンピュータとの間で、ネットワークを介して、通信可能である。
第3実施形態に係るスマートコントラクト103は、証書NFT生成処理を実行するよう構成されている。第2実施形態に係るサーバ200は、NFT構成データ組込処理212を実行するよう構成されている。
第3実施形態に係るシステム30によって提供される証書NFTは、保証証書などの証書をNFT化したものである。証書NFTは、コンピュータ画面上に表示される。証書NFTも、任意の第三者との間で、取引可能である。
保証証書は、例えば、日用品、宝飾品、電気製品、電子製品、機械製品、その他の商品、サービス又は権利関係(権利、義務、又は責任)についての何らかの保証を証明する文書である。証書は、前述の保証又はその他の事実を証明する文書である。
実施形態に係る保証証書NFTは、ブロックチェーンにおいて発行されたNFTに、保証証書であることを示す画像データ又は文字データなどの構成データを組み込んで構成されている。構成データが組み込まれたNFTは、例えば、構成データ自体又は構成データを示すURIを有する。URIは、構成データを直接的に示してもよいし間接的に示してもよい。例えば、家電製品などの製品の不完全性・欠陥・故障についての修理等を保証する保証証書として機能する保証証書NFTであれば、その家電製品の画像データ及び保証内容を示す文字データが組み込まれている。証書NFTに組み込まれる構成データは、証書としての種類毎に異なり得る。したがって、保証証書NFTの種類は、複数存在し得る。
第3実施形態に係るシステム30は、保証対象の製品の種類に応じた保証証書NFTを生成して、ユーザに提供できる。図15に示すように、第3実施形態に係るシステム30は、ユーザ端末300からの証書NFT要求を受信し、目的NFTとして、保証証書NFTを生成し、ユーザ端末300(ユーザアカウント)へ送信する。保証対象の製品の保証期間は、製品の購入日を起算日(保証の起算日)としてもよいが、保証証書NFTをブロックチェーンにおいて発行した日を起算日(保証の起算日)としてもよい。
図16は、保証証書発行スマートコントラクト103における保証証書発行処理の手順を示している。まず、スマートコントラクト103は、ユーザ端末300から、NFT要求を受信する。ここでのNFT要求は、保証証書NFTの発行の要求である。スマートコントラクト103は、NFT要求とともに、保証対象製品の製品情報も受信する。製品情報は、製品名、製品の購入日時、製品の購入場所、及び製品固有記号(製品固有識別子)等の少なくとのもいずれか1つを含む。製品情報は、例えば、製品又は製品に付属した書類その他の物体に付された、機械読み取り可能なコード(例えば、2次元コード)に記録されているのが好ましい。例えば、ユーザ端末300のカメラ(コード読み取り器)によって、2次元コードなどを読み取ることで、ユーザ端末300は、製品情報を得られる。製品情報は、機械読み取り可能なコードによって示されるURI(Uniform Resource Identifier)によって示される、ネットワーク上のコンピュータ(例えば、サーバ200)に格納された電子データとして存在してもよい。この場合、ユーザ端末300のカメラによってコードを読み取って、そのコードが示すURIへネットワークアクセスすることで、製品情報が得られる。
製品情報は、目的NFTである保証証書NFTの種類を識別するために用いられる。
スマートコントラクト103は、NFT要求を受信すると、受信した製品情報の適否を判定する(ステップS161)。この判定は、例えば、製品固有記号が、実際に存在するか否かの判定である。
FTの数量が、製品情報が不適である場合、その旨をユーザ端末300へ通知するなどのエラー処理が行われる(ステップS162)。この場合、保証証書発行処理は終了する。
製品情報が適切である場合、続いて、目的NFTの生成条件が決定される(ステップS163)。ここでは、生成条件として、受信した製品情報に基づき、目的NFTの発行数P=1、及び、目的NFTの種類T=G製品が決定される。この生成条件は、目的NFTとして、G製品のための保証証書NFTが1個発行されるべきことを示す。
続いて、生成条件に従って、P個(1個)の初期NFT発行処理が実行され、初期NFTの識別子が得られる(ステップS164)。発行される初期NFTに、目的NFTの種類T=G製品などの生成条件を示すデータが含まれるように、初期NFTの発行処理が行われても良い。
サーバ200は、初期NFT発行を検出すると、目的NFTの生成条件及び初期NFTの識別子を取得し、NFT構成データ組込処理を実行し、目的NFTである保証証書NFTを生成する(ステップS165)。サーバ200は、ブロックチェーンにおける初期NFTの記録を参照することで、「初期NFTの種類T」などの生成条件を取得してもよい。
NFT構成データ組込処理では、目的NFTの種類T=G製品に従い、複数のNFT用素材データ240の中から、G製品のための構成データ(例えば、G製品のための画像データ、G製品の名称、G製品の購入日時、G製品の購入場所、及び製品固有記号(製品固有識別子)、保証期間を示す文字データ)が選択される。データベース230が備える複数の素材データ240は、製品の種類が複数あることに応じて、複数の素材データを有する。つまり、データベース230は、G製品のための素材データを備える。システム30は、受信した識別情報に基づいて識別された種類Tに基づいて、複数の素材データの中から、構成データとなる素材データを選択し得る。ここでは、識別情報として受信した製品情報(G製品)は、複数の素材データのいずれかを示すため、システム30は、識別情報(G製品)に基づいて、複数の素材データの中から、NFTに組み込まれるデータを選択できる。そして、G製品のための構成データが初期NFTに組み込まれることで、G製品のための保証証書NFTが完成する。なお、構成データは初期NFTの発行時に組み込まれてもよい。システム30は、保証書NFTを生成するために用いられるプライベートキーを有し、そのプライベートキーを用いて、保証書NFTを生成する。システム10は、NFT生成用のプライベートキーを有しているため、ユーザのプライベートキーを用いなくても、保証書NFTを生成できる。保証証書NFTが完成すると、サーバ200は、完了通知をスマートコントラクト103へ送信する。スマートコントラクト103は、組込完了通知を受信すると、保証証書NFTの生成の完了を認識し(ステップS166)、保証証書NFTを、NFT要求の送信元であるユーザアカウントへ送信する(ステップS167)。G製品の名称等は、他の構成データの生成にも用いられ得る共通の素材データであり、製品固有記号等は、構成データを、ユニークなデータとするための情報である。
以上のようにして、ユーザは、保証証書NFTを入手できる。実施形態に係るシステム30は、NFT要求を受信した後に、保証証書NFTを生成するため、NFT要求前(例えば、製品を製造してから販売されるまでの間)において、保証証書NFTを準備する必要がなく、販売されていない製品のための保証証書NFT作成の手間を省略できる。
<2.4 第4実施形態:構成データの保存と参照>
図17は、前述及び後述の各実施形態において利用し得る、構成データの保存と参照方法を示している。素材データのデータベース240には、複数の素材データが格納されている。例えば、複数の素材データは、第1素材データを含み、第1素材データは、あるタレントの画像データであるとする。第1素材データは複製されて、第1構成データとしてサーバ200の構成データのデータベース245に保存される。つまり、第1構成データは、第1素材データの複製データである。第1構成データは、第1素材データとは異なるファイル名を有すること又は異なる位置に保存されることで、第1素材データとは別個のデータとして存在する。インターネット等のネットワークにおける第1構成データは第1URI(第1ユニフォームリソースアイデンティファイア)によって示される。第1構成データが第1初期NFTに組み込まれることで、第1目的NFTが生成される。
また、第1素材データは、複製されて、第2構成データとしてサーバ200の構成データのデータベース245に保存される。つまり、第2構成データは、第1素材データの複製データである。第2構成データは、第1素材データ及び第1構成データとは異なるファイル名を有すること又は異なる位置に保存されることで、第1素材データ及び第1構成データとは別個のデータとして存在する。インターネット等のネットワークにおける第2構成データは、第1URIとは異なる第2URI(第2ユニフォームリソースアイデンティファイア)によって示される。第2構成データが、第1初期NFTとは異なる第2初期NFTに組み込まれることで、第2目的NFTが生成される。
したがって、第1目的NFT及び第2目的NFTは、同じタレントの同じ画像データを構成データとして有している。つまり、第1目的NFTが有する第1構成データは、第2目的NFTが有する第2構成データの生成にも用いられた第1素材データから生成されている。しかし、構成データのデータベース245に保存された第1構成データ及び第2構成データは、それぞれ別個のデータである。つまり、第1構成データは、第1目的NFTのためのユニークなデータであり、第1目的NFT以外のNFTに組み込まれることはない。同様に、第2構成データは、第2目的NFTのためのユニークなデータであり、第2目的NFTに組み込まれることはない。したがって、第1目的NFT及び第2目的NFTそれぞれを唯一無二のものとすることができる。したがって、例えば、第1目的NFTには、タレントのサイン画像を付加することで、第2目的NFTとの価値の相違を生じさせることができる。また、第1目的NFTの所有者履歴によって、第2目的NFTとの価値の相違を生じさせることができる。
第1目的NFTになる第1初期NFTに第1構成データを組み込むことは、例えば、第1初期NFTに、第1URI又は第1URIに対応付けられた識別子を書き込むことであってもよい。第1URIは、複製データである第1構成データを示す。第1目的NFTが第1URIを有することで、サーバ200は、第1URIによるネットワークアクセスを受け付け、第1構成データを第1目的NFTの所有者の端末等に表示させることができる。第1URIに対応付けられた識別子は、例えば、サーバ200が、第1URIを認識するために用いられる情報であれば足りる。又第1目的NFTが第1URIに対応付けられた識別子を有することで、サーバ200は、第1URIに対応付けられた識別子を用いたネットワークアクセスを受け付け、その識別子から第1URIを特定し、その第1URIが示す第1構成データを第1目的NFTの所有者の端末等に表示させることができる。第2目的NFTについても同様である。
また、第1目的NFTになる第1初期NFTに、第1構成データを組み込むには、サーバ200に、第1目的NFT(第1初期NFT)の識別子(NFT-ID)と、第1URIと、の対応関係を設定することであってもよい。サーバ200は、第1目的NFTの識別子(NFT-ID)を用いたネットワークアクセスを受け付け、第1目的NFTの識別子(NFT-ID)から第1URIを特定し、その第1URIが示す第1構成データを第1目的NFTの所有者の端末等に表示させることができる。第2NFTについても同様である。
データベース246は、一例として、IPFS(InterPlanetary File System)によって構成され得る。IPFSは、P2P(Peer to Peer)分散ファイルシステムの一例である。IPFSにおいて、保存されたデータ(コンテンツ)は、そのデータから求められたハッシュ値を用いたURIによって指定される。このURIは、構成データを示す識別子であり、コンテンツ識別子とも呼ばれる。NFTに構成データを組み込むには、例えば、IPFSに保存された構成データ(コンテンツ)を指定するURIをNFTに書き込めばよい。すなわち、NFTは、IPFSに保存された構成データを示すURIを有し得る。なお、NFTは、構成データ(コンテンツ)と、構成データ(コンテンツ)を示すURIを含むメタデータと、メタデータを示すURIを含むインデックスデータと、を備え得る。インデックスデータは、NFTの識別子(NFT-ID;トークン識別子)及びNFTの所有者(所有者ブロックチェーンアドレス)を含み得る。一例として、インデックスデータは、ブロックチェーンに記録され、構成データ及びメタデータは、IPFSに記録され得る。前述の初期NFTは、インデックスデータを有し、メタデータ及び構成データを有していてなくてもよい。メタデータ及び構成データは、構成データの組込処理によって、NFTに付加され得る。ブロックチェーンに記録されたインデックスデータは、IPFS等のブロックチェーン外に保存された構成データを直接的に示すURIを有していてもよいし、構成データを直接的に示すURIを含むメタデータを示すURIのように、間接的に構成データを示すURIを有していてもよい。このように、NFTは、その全てがブロックチェーンに記録されている必要はなく、インデックスデータなどの少なくとも一部のデータがブロックチェーンに記録されていれば足りる。
<2.5 第5実施形態>
図18は、第5実施形態に係るシステムシステム50の一例を示している。第5実施形態において特に説明しない点については、前述の実施形態に係るシステム10,20,30と同様である。
システム50は、端末300等のコンピュータから、画像P1を示すコードC1を有するNFT要求を受信し得る(ステップS181A)。コードC1は、目的NFTの種類をシステム50が識別するための識別情報であり得る。システム50が備えるデータベース230は、複数の素材データP1,P2,P3を備え、各素材データP1,P2,P3にはコードC1,C2,C3が対応付けられている。素材データP1,P2,P3に対応付けられたコードC1は、対応する素材データP1,P2,P3を示す。システム50は、ステップS181Aにおいて受信したコードC1に対応する第1素材データP1を選択し、選択された第1素材データP1を用いて、目的NFTを生成する(ステップS182)。第1素材データP1を用いて生成された目的NFTは、「画像P1を有する」という種類のNFTであり得る。第1素材データP1を用いて生成された目的NFTは、例えば、第1素材データの識別子(例えば、URI)、又は、第1素材データの複製データの識別子(例えば、URI)を備え得る。
また、システム50は、端末300等のコンピュータから、画像P2を示すコードC2を有するNFT要求を受信し得る(ステップS181B)。コードC2は、目的NFTの種類をシステム50が識別するための識別情報であり得る。システム50は、ステップS181Bにおいて受信したコードC2に対応する第2素材データP2を選択し、選択された第2素材データP2を用いて、目的NFTを生成する(ステップS182)。第2素材データP2を用いて生成された目的NFTは、「画像P2を有する」という種類のNFTであり得る。第2素材データP2を用いて生成された目的NFTは、例えば、第2素材データの識別子(例えば、URI)、又は、第2素材データの複製データの識別子(例えば、URI)を備え得る。
システム50は、NFTの生成に用いられる画像など素材データを有しているため、端末300などの外部のコンピュータから、NFTの生成に用いられる素材データを取得しなくても、NFTを生成できる。ただし、システム50は、NFTの生成に用いられる素材データの一部を外部のコンピュータから取得してもよい。システム50は、NFT要求を受信する(ステップS181A,S181B)前から有している素材データP1,P2,P3を少なくとも用いて、NFTを生成することができる。
<2.6 第6実施形態>
図19は、第6実施形態に係るシステムシステム60の一例を示している。第6実施形態において特に説明しない点については、前述の実施形態に係るシステム10,20,30,50と同様である。
システム60は、図示しない端末300等のコンピュータから、NFT要求を受信し得る(ステップS191)。NFT要求は、生成される目的NFTのタイプを示すデータを有する。タイプを示すデータは、目的NFTの種類をシステム50が識別するための識別情報であり得る。システム60が備えるデータベース230は、複数のタイプに応じた素材データを備える。例えば、図19に示すデータベース230は、第1タイプ(TYPE_A)のための複数の素材データP11,P12,P13を備えるとともに、第2タイプ(TYPE_B)のための複数の素材データP21,P22,P23を備える。
システム60は、第1タイプ(TYPE_A)を示すデータを識別情報として有するNFT要求を受信すると(ステップS191A)、そのNFT要求に基づいてタイプが第1タイプ(TYPE_A)であることを識別する。さらに、システム60は、識別したタイプに応じた複数の素材データP11,P12,P13の中から、目的NFTの生成に用いられる素材データ(例えば、画像P12)を選択する。目的NFTの生成に用いられる素材データは、識別されたタイプ(TYPE_A)に応じた複数の素材データP11,P12,P13の中から、所定の規則又はランダムに選択される。システム60は、選択された素材データを用いて、目的NFTを生成する(ステップS192)。生成された目的NFTは、TYPE_Aという種類のNFTであり得る。
システム60は、第2タイプ(TYPE_B)を示すデータを識別情報として有するNFT要求を受信すると(ステップS191B)、そのNFT要求に基づいてタイプが第2タイプ(TYPE_B)であることを識別する。さらに、システム60は、識別したタイプに応じた複数の素材データP21,P22,P23の中から、目的NFTの生成に用いられる素材データ(例えば、画像P23)を選択する。目的NFTの生成に用いられる素材データは、識別されたタイプ(TYPE_B)に応じた複数の素材データP21,P22,P23の中から、所定の規則又はランダムに選択される。システム60は、選択された素材データを用いて、目的NFTを生成する(ステップS192)。生成された目的NFTは、TYPE_Bという種類のNFTであり得る。
<2.7 第7実施形態>
図20は、第7実施形態に係るシステムシステム70の一例を示している。第7実施形態において特に説明しない点については、前述の実施形態に係るシステム10,20,30,50,60と同様である。
システム70は、図示しないユーザ端末300から、NFT要求を受信し得る(ステップS191)。NFT要求は、コードを有し得る。コードは、NFTの取得を希望するユーザに付与又は通知されたデータである。コードは、ユーザがNFTを取得するための資格情報であり得る。例えば、第1ユーザは、第1ユーザに付与又は通知された第1コードをシステム70に送信することで、NFTを受信することができる。また、第2ユーザは第2ユーザに付与又は通知された第2コードをシステム70に送信することで、NFTを受信することができ、第3ユーザは、第3ユーザに付与又は通知された第3コードをシステム70に送信することで、NFTを受信することができる。
コードは、目的NFTの種類をシステム70が識別するための識別情報であり得る。コードは、システム70が素材データのタイプを識別するためのデータであり得る。システム70が備えるデータベース230は、複数のタイプに応じた素材データを備える。例えば、図20に示すデータベース230は、第1タイプ(TYPE_A)のための複数の素材データP11,P12,P13を備えるとともに、第2タイプ(TYPE_B)のための複数の素材データP21,P22,P23を備える。
システム70は、受信する可能性のあるコードの一覧を示すコードリスト(図示省略)を有し得る。コードリストに含まれる複数のコードそれぞれには、タイプが対応付けられている。一例として、システム70においては、第1コード及び第2コードは第1タイプ(TYPE_A)に対応付けられており、第3コードは、第2タイプ(TYPE_B)に対応付けられている。この場合、システム70は、第1コードを有するNFT要求を受信した場合(ステップS201A)、又は、第2コードを有するNFT要求を受信した場合(ステップS201B)、受信したコードに基づいて、素材データのタイプが第1タイプ(TYPE_A)であることを識別する。システム70は、第1タイプ(TYPE_A)用素材データP11,P12,P13の中から、目的NFTの生成に用いられる素材データ(例えば、画像P11)を選択する。目的NFTの生成に用いられる素材データは、識別されたタイプ(TYPE_A)に応じた複数の素材データP11,P12,P13の中から、所定の規則又はランダムに選択される。システム70は、選択された素材データを用いて、目的NFTを生成する(ステップS202)。生成された目的NFTは、TYPE_Aという種類のNFTであり得る。
システム70は、第3コードを有するNFT要求を受信した場合(ステップS201C)、受信したコードに基づいて、素材データのタイプが第2タイプ(TYPE_B)であることを識別する。システム70は、第2タイプ(TYPE_B)用素材データP21,P22,P23の中から、目的NFTの生成に用いられる素材データ(例えば、画像P22)を選択する。目的NFTの生成に用いられる素材データは、識別されたタイプ(TYPE_B)に応じた複数の素材データP21,P22,P23の中から、所定の規則又はランダムに選択される。システム70は、選択された素材データを用いて、目的NFTを生成する(ステップS202)。生成された目的NFTは、TYPE_Bという種類のNFTであり得る。
なお、NFT要求が、コードなどの識別情報を有しない場合、システム10,20,30,50,60,70は、NFT要求を受信すると、目的NFTの生成に用いられる素材データを、複数の識別データの中から、所定の規則に従って又はランダムに選択することができる。
<2.7 第7実施形態:プライベートキーの利用>
図21は、プライベートキーの取り扱いに関する技術を示している。図21に示す技術は、第1実施形態のシステム10及び他の実施形態のシステムにおいて採用可能である。NFT要求(ステップS212)を受信したスマートコントラクト110,120は、スマートコントラクト110,120のサーバ200が有する1又は複数のプライベートキーKey1,Key2,Key3のいずれかを用いて、NFT生成のためのトランザクションに電子署名する(ステップS213)。電子署名されたトランザクションは、ブロックチェーンに記録される。これによりNFTが生成される(ステップS214)。第三者から参照可能なブロックチェーン上のスマートコントラクト110,120は、第三者が参照可能なため、プライベートキーを有していると、第三者にプライベートキーが知られるおそれがある。サーバ200などの外部のコンピュータが、NFT生成用プライベートキーKey1,Key2,Key3を有していることで、プライベートキーKey1,Key2,Key3を安全に保管できる。
スマートコントラクト110,120は、NFT生成(ステップS214)の必要が生じた場合、その旨をサーバ200へ通知し、電子署名のためのプライベートキーを取得する。サーバ200は、複数のプライベートキーKey1,Key2,Key3の中からNFT生成に用いられる一つのプライベートキーを適宜選択し、スマートコントラクト110,120に提供する。スマートコントラクト110,120は、取得したプライベートキーを用いて電子署名をする。すなわち、システム10は、スマートコントラクト110,120によってNFTを生成するが、スマートコントラクト110,120の外部のコンピュータ200に保管されているプライベートキーを用いて、NFTを生成する。なお、電子署名は、サーバ200がおこなってもよい。
図21において、スマートコントラクト110,120は、Webサーバ350から、NFT要求を受信し得る(ステップS212)。Webサーバ350は、図1に示すユーザ用コンピュータの一例である。Webサーバ350は、ユーザインターフェースをユーザ端末300に提供し得る。ユーザインターフェースは、例えば、NFT化される画像を表示するとともに、NFTの取得のためのユーザ操作を受け付けるWebサイトである。ユーザは、ユーザ端末300を利用して、Webサイトにサインインし得る(ステップS211)。サインインには、ユーザのプライベートキー301が用いられる。ユーザは、プライベートキー301に対応するブロックチェーンアドレス302を有する。図21において、ユーザのブロックチェーンアドレス302は、一例として、0x13579である。ブロックチェーンアドレス302は、プライベートキー301から生成され得る。
ユーザは、プライベートキー301を用いてWebサイトにサインインすることで、Webサイトを介して、ブロックチェーンの操作が可能となる。すなわち、Webサーバ350は、Webサイトにサインインしたユーザのために、ブロックチェーンに記録されるトランザクションにプライベートキー301を用いて電子署名することができる。なお、電子署名は、ユーザ端末300が行ってもよい。
Webサーバ350によるブロックチェーンの操作は、一例として、スマートコントラクト1110,120の呼び出しである(ステップS212)。ここでのスマートコントラクトの呼び出しは、スマートコントラクトへのNFT要求の送信でもある。
スマートコントラクト110,120の呼び出しの際には、ユーザのブロックチェーンアドレス302がスマートコントラクト110,120へ送信される。スマートコントラクト302は、生成したNFTを、受信したブロックチェーンアドレス302へ送信する。このように、スマートコントラクト110,120は、NFT要求と生成したNFTの送信先アドレス302とを受信し得る。なお、ブロックチェーンアドレス302は、スマートコントラクト110,120が呼び出された後に、スマートコントラクト110,120へ送信されてもよい。
図21に示す技術によると、ユーザは、生成されたNFTの送信先となるブロックチェーンアドレス302をシステム10(例えば、スマートコントラクト110,120)に提供すればよく、ユーザは、NFT生成のため、自身のプライベートキー301をシステム10(例えば、スマートコントラクト110,120)に提供する必要がない。したがって、ユーザのプライベートキー301の秘匿性を確保しやすい。
NFTの生成に用いられるプライベートキーが、ユーザが有するプライベートキー301ではなく、システム10が有するプライベートキーKey1,Key2,Key3であるため、NFTを生成した時点において、NFTの所有者はシステム10である。しかし、NFTは生成された後、ユーザのアドレス302へ送信されるため、生成されたNFTの所有者はユーザになる。
本発明は、上記実施形態に限定されるものではなく、様々な変形が可能である。
実施形態に係るシステムは、次のとおりであってもよい。すなわち、実施形態に係るシステムは、ノンファンジブルトークンを生成する処理を実行するよう構成されたノンファンジブルトークン生成システムであって、複数の素材データを備えるデータベースを備え得る。前記ノンファンジブルトークンを生成する前記処理は、ノンファンジブルトークン要求を受信すると、前記データベースが備える複数の素材データの中から、所定の規則に従って又はランダムに、データを選択し、選択された前記データを用いて、ノンファンジブルトークンを生成する、ことを備え得る。
実施形態に係る方法は、次のとおりであってもよい。すなわち、実施形態に係る方法は、ノンファンジブルトークン生成システムによって実行されるノンファンジブルトークン生成方法であって、前記ノンファンジブルトークン生成システムは、複数の素材データを備えるデータベースを備え得る。前記方法は、ノンファンジブルトークン要求を受信すると、前記データベースが備える複数の素材データの中から、所定の規則に従って又はランダムに、データを選択し、選択された前記データを用いて、ノンファンジブルトークンを生成する、ことを備え得る。