しかしながら、特許文献1に開示されるようなシステムでは大掛かりになるため、システムを構築するのに費用がかかり、コンテンツの利用料(例えば視聴料)に上乗せされ、その結果、コンテンツの利用料が高額になることがあった。このような理由は一例であるが、従来、コンテンツの投稿者は、例えば自ら作成したコンテンツの投稿により簡易に、且つ効率良く収入を得ることは容易ではなかった。
本発明は、以上の点に鑑みてなされたものであり、投稿者がコンテンツの投稿により簡易に、且つ効率良く収入を得ることを可能とする情報処理装置、コンテンツ配信システム、情報処理方法、及びプログラムを提供する。
上記課題を解決するために、請求項1に記載の発明は、通信手段を備える複数のノードが参加するP2Pネットワークであって、前記複数のノード間で仮想通貨アドレスを用いて仮想通貨の取引を行うように構成されたP2Pネットワークに前記ノードとして参加可能な情報処理装置であって、前記P2Pネットワークに前記ノードとして参加可能な投稿者端末からコンテンツの投稿を受け付ける受付手段と、前記投稿されたコンテンツと、前記投稿されたコンテンツの利用に要する仮想通貨の価額と、前記投稿者端末のユーザに固有の仮想通貨アドレスであって前記仮想通貨の価額の受取用の仮想通貨アドレスとを対応付けて登録する登録手段と、前記P2Pネットワークに前記ノードとして参加可能な利用者端末からの要求に応じて、前記登録されたコンテンツの一部を示す情報と、前記コンテンツに対応付けて登録された前記仮想通貨の価額及び前記受取用の仮想通貨アドレスとを表示する画面を構成する画面データを前記利用者端末へ送信する送信手段と、前記画面データを受信した前記利用者端末により生成され前記P2Pネットワークに投入された取引データであって、前記画面データが示すコンテンツの利用に要する仮想通貨の価額の支払い先として前記投稿者端末のユーザに固有の前記受取用の仮想通貨アドレスを含む前記取引データを、前記P2Pネットワークを介して取得する取得手段と、前記取得手段により取得された取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、前記利用者端末のユーザに対して前記コンテンツの利用を許可する許可手段と、を備えることを特徴とする。
請求項2に記載の発明は、請求項1に記載の情報処理装置において、前記P2Pネットワークに参加する前記ノードは、前記P2Pネットワークに投入された取引データが正当であるかを検証するものであって、前記取得手段は、前記検証前の前記取引データを、前記P2Pネットワークを介して取得し、前記許可手段は、前記取得手段により取得された前記検証前の前記取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、前記利用者端末のユーザに対して前記コンテンツの利用を仮許可し、前記情報処理装置は、前記利用者端末に対して、前記利用が仮許可された前記コンテンツの配信を開始する配信手段を備えることを特徴とする。
請求項3に記載の発明は、請求項2に記載の情報処理装置において、前記取得手段は、前記検証前の前記取引データの取得後に、正当であると検証された前記取引データを、前記P2Pネットワークを介して取得し、前記許可手段は、前記取得手段により取得された前記検証された前記取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できない場合、前記利用者端末のユーザに対して前記コンテンツの利用を不許可とし、前記配信手段は、前記利用が不許可された前記コンテンツの配信を停止することを特徴とする。
請求項4に記載の発明は、請求項1に記載の情報処理装置において、前記P2Pネットワークに参加する前記ノードは、前記P2Pネットワークに投入された取引データが正当であるかを検証するものであって、前記取得手段は、前記検証前の前記取引データを、前記P2Pネットワークを介して取得し、前記許可手段は、前記取得手段により取得された前記検証前の前記取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、前記利用者端末のユーザに対して前記コンテンツの利用を仮許可し、前記情報処理装置は、前記利用が仮許可された前記コンテンツを、このコンテンツの途中まで前記利用者端末へ配信する配信手段を備えることを特徴とする。
請求項5に記載の発明は、請求項4に記載の情報処理装置において、前記取得手段は、前記検証前の前記取引データの取得後に、正当であると検証された前記取引データを、前記P2Pネットワークを介して取得し、前記許可手段は、前記取得手段により取得された前記検証された前記取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、前記利用者端末のユーザに対して前記コンテンツの利用を正許可し、前記配信手段は、前記利用が正許可された前記コンテンツを、このコンテンツの最後まで前記利用者端末へ配信することを特徴とする。
請求項6に記載の発明は、請求項1乃至5の何れか一項に記載の情報処理装置において、前記情報処理装置は、前記受付手段により前記投稿者端末からコンテンツの投稿が受け付けられたときに、前記投稿されたコンテンツに対して1対1で対応付けられる仮想通貨アドレスであって前記投稿者端末のユーザに固有の前記受取用の仮想通貨アドレスを生成する生成手段を更に備えることを特徴とする。
請求項7に記載の発明は、請求項6に記載の情報処理装置において、前記送信手段は、前記受付手段により前記投稿者端末からコンテンツの投稿が受け付けられたときに、前記投稿されたコンテンツの一部を示す情報を表示し、且つ前記生成手段により生成された前記受取用の仮想通貨アドレスを表示する画面を構成する画面データを前記投稿者端末へ送信することを特徴とする。
請求項8に記載の発明は、請求項7に記載の情報処理装置において、前記画面は、前記受取用の仮想通貨アドレスの2次元バーコードを表示することを特徴とする。
請求項9に記載の発明は、請求項1乃至5の何れか一項に記載の情報処理装置において、前記送信手段は、前記受付手段により前記投稿者端末からコンテンツの投稿が受け付けられたときに、前記投稿されたコンテンツの一部を示す情報を表示し、且つ前記受取用の仮想通貨アドレスを入力するための入力欄が設けられた画面を構成する画面データを前記投稿者端末へ送信することを特徴とする。
請求項10に記載の発明は、通信手段を備える複数のノードが参加するP2Pネットワークであって、前記複数のノード間で仮想通貨アドレスを用いて仮想通貨の取引を行うように構成されたP2Pネットワークに前記ノードとして参加可能な配信サーバを備えるコンテンツ配信システムであって、前記配信サーバは、前記P2Pネットワークに前記ノードとして参加可能な投稿者端末からコンテンツの投稿を受け付ける受付手段と、前記投稿されたコンテンツと、前記投稿されたコンテンツの利用に要する仮想通貨の価額と、前記投稿者端末のユーザに固有の仮想通貨アドレスであって前記仮想通貨の価額の受取用の仮想通貨アドレスとを対応付けて登録する登録手段と、前記P2Pネットワークに前記ノードとして参加可能な利用者端末からの要求に応じて、前記登録されたコンテンツの一部を示す情報と、前記コンテンツに対応付けて登録された前記仮想通貨の価額及び前記受取用の仮想通貨アドレスとを表示する画面を構成する画面データを前記利用者端末へ送信する送信手段と、前記画面データを受信した前記利用者端末により生成され前記P2Pネットワークに投入された取引データであって、前記画面データが示すコンテンツの利用に要する仮想通貨の価額の支払い先として前記投稿者端末のユーザに固有の前記受取用の仮想通貨アドレスを含む前記取引データを、前記P2Pネットワークを介して取得する取得手段と、前記取得手段により取得された取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、前記利用者端末のユーザに対して前記コンテンツの利用を許可する許可手段と、前記許可手段により前記利用が許可された前記コンテンツを前記利用者端末へ配信する配信手段と、を備え、前記利用者端末は、前記配信サーバから配信されたコンテンツを受信して再生することを特徴とする。
請求項11に記載の発明は、通信手段を備える複数のノードが参加するP2Pネットワークであって、前記複数のノード間で仮想通貨アドレスを用いて仮想通貨の取引を行うように構成されたP2Pネットワークに前記ノードとして参加可能なコンピュータにより実行される情報処理方法であって、前記P2Pネットワークに前記ノードとして参加可能な投稿者端末からコンテンツの投稿を受け付ける受付ステップと、前記投稿されたコンテンツと、前記投稿されたコンテンツの利用に要する仮想通貨の価額と、前記投稿者端末のユーザに固有の仮想通貨アドレスであって前記仮想通貨の価額の受取用の仮想通貨アドレスとを対応付けて登録する登録ステップと、前記P2Pネットワークに前記ノードとして参加可能な利用者端末からの要求に応じて、前記登録されたコンテンツの一部を示す情報と、前記コンテンツに対応付けて登録された前記仮想通貨の価額及び前記受取用の仮想通貨アドレスとを表示する画面を構成する画面データを前記利用者端末へ送信する送信ステップと、前記画面データを受信した前記利用者端末により生成され前記P2Pネットワークに投入された取引データであって、前記画面データが示すコンテンツの利用に要する仮想通貨の価額の支払い先として前記投稿者端末のユーザに固有の前記受取用の仮想通貨アドレスを含む前記取引データを、前記P2Pネットワークを介して取得する取得ステップと、前記取得ステップにより取得された取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、前記利用者端末のユーザに対して前記コンテンツの利用を許可する許可ステップと、を含むことを特徴とする。
請求項12に記載の発明は、通信手段を備える複数のノードが参加するP2Pネットワークであって、前記複数のノード間で仮想通貨アドレスを用いて仮想通貨の取引を行うように構成されたP2Pネットワークに前記ノードとして参加可能なコンピュータに、前記P2Pネットワークに前記ノードとして参加可能な投稿者端末からコンテンツの投稿を受け付ける受付ステップと、前記投稿されたコンテンツと、前記投稿されたコンテンツの利用に要する仮想通貨の価額と、前記投稿者端末のユーザに固有の仮想通貨アドレスであって前記仮想通貨の価額の受取用の仮想通貨アドレスとを対応付けて登録する登録ステップと、前記P2Pネットワークに前記ノードとして参加可能な利用者端末からの要求に応じて、前記登録されたコンテンツの一部を示す情報と、前記コンテンツに対応付けて登録された前記仮想通貨の価額及び前記受取用の仮想通貨アドレスとを表示する画面を構成する画面データを前記利用者端末へ送信する送信ステップと、前記画面データを受信した前記利用者端末により生成され前記P2Pネットワークに投入された取引データであって、前記画面データが示すコンテンツの利用に要する仮想通貨の価額の支払い先として前記投稿者端末のユーザに固有の前記受取用の仮想通貨アドレスを含む前記取引データを、前記P2Pネットワークを介して取得する取得ステップと、前記取得ステップにより取得された取引データに基づいて前記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、前記利用者端末のユーザに対して前記コンテンツの利用を許可する許可ステップと、を実行させることを特徴とする。
請求項1、10〜12に記載の発明によれば、投稿者がコンテンツの投稿により簡易に、且つ効率良く収入を得ることができる。
請求項2に記載の発明によれば、投稿されたコンテンツの配信を迅速に開始することができる。
請求項3に記載の発明によれば、投稿されたコンテンツの不正な利用を防止することができ、本システムの信頼性を向上させることができる。
請求項4に記載の発明によれば、投稿されたコンテンツの配信を迅速に開始することができる。
請求項5に記載の発明によれば、投稿されたコンテンツの不正な利用を防止することができ、本システムの信頼性を向上させることができる。
請求項6に記載の発明によれば、投稿されたコンテンツの利用に対して支払われる仮想通貨の価額をコンテンツ毎に固有の仮想通貨アドレスにより効率良く管理することができる。
請求項7に記載の発明によれば、情報処理装置の生成手段により生成された受取用の仮想通貨アドレスを投稿者に提供することができる。
請求項8に記載の発明によれば、情報処理装置の生成手段により生成された受取用の仮想通貨アドレスを投稿者に容易に取得させることができる。
請求項9に記載の発明によれば、投稿者が既に保有している仮想通貨アドレスを、投稿されたコンテンツの利用に要する仮想通貨の価額の受取用の仮想通貨アドレスとして流用することができる。
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施形態は、ネットワーク通信システムに対して本発明を適用した場合の実施の形態である。
[1.ネットワーク通信システムSの構成及び動作概要]
初めに、図1等を参照して、本発明の実施形態のネットワーク通信システムSの構成及び動作概要について説明する。図1は、本実施形態のネットワーク通信システムSの概要構成例を示す図である。図1に示すネットワーク通信システムSは、クライアント端末T1〜T10及びサーバSA1〜SA4がネットワークNWに接続されて構成される。ネットワークNWは、例えば、インターネット、専用通信回線(例えば、CATV(Community Antenna Television)回線)、移動体通信網(基地局等を含む)、及びゲートウェイ等により構成される。なお、図1に示すクライアント端末及びサーバの数はあくまでも一例である。サーバSA1〜SA4は、それぞれ、例えばWebサーバの機能を有し、クライアント端末T1〜T10からの要求に応じて所定のサービスを提供するサーバコンピュータである。クライアント端末T1〜T10の例として、パーソナルコンピュータ、携帯情報端末(スマートフォンやタブレット等)が挙げられる。
また、図1に示すP2P仮想通貨ネットワーク(P2Pネットワークの一例)は、複数のノードの参加により構成される。図1の例では、クライアント端末T1〜T7及びサーバSA1〜SA3が、それぞれ、ノードN1〜N10としてP2P仮想通貨ネットワークに参加している。クライアント端末T1〜T7及びサーバSA1〜SA3には、それぞれ、仮想通貨財布ソフトウェア(財布ソフト)がインストールされており、例えば、仮想通貨財布ソフトウェアが起動されることでP2P仮想通貨ネットワークに参加するようになっている。例えば、クライアント端末は、仮想通貨財布ソフトウェアを起動すると、P2P仮想通貨ネットワークに参加しているノードを検索して接続を確立することでP2P仮想通貨ネットワークに参加して最新の情報を取得する。P2P仮想通貨ネットワークでは、それぞれのノードが幾つかのノードと繋がっており、複数のノード間で仮想通貨アドレスを用いて仮想通貨の取引を行うように構成されている。なお、例えばノードの電源が切られるなどで仮想通貨財布ソフトウェアの実行が停止されると、そのノードはP2P仮想通貨ネットワークから脱退する。
ここで、仮想通貨は、P2P仮想通貨ネットワークにおいて、金融機関を介さずにノード間で交換可能なデジタル通貨である。仮想通貨の一例として、ビットコインまたはライトコインなどが挙げられる。仮想通貨アドレスは、P2P仮想通貨ネットワークに参加するノードのユーザ毎に固有に生成される。仮想通貨アドレスは、各ユーザが自身の例えば銀行口座やクレジットカード番号等を保有することと同じように、各ユーザにより保有される。仮想通貨アドレスには、仮想通貨の残高が対応付けられる(紐付けられる)。つまり、仮想通貨アドレスで仮想通貨の残高が管理される。また、仮想通貨アドレスは、各ノードが保持する電子財布で保管(概念的には、電子財布に仮想通貨アドレスを入れて管理)することができる。電子財布は、例えば、仮想通貨取引ソフトウェアに組み込まれる財布モジュールである。また、仮想通貨アドレスは、1人のユーザに対して複数生成可能であり、仮想通貨の取引毎に新しく生成することもできる。仮想通貨アドレスの生成時には、公開鍵と秘密鍵との鍵ペアが生成される。秘密鍵は、仮想通貨アドレスを保有することになるユーザ(つまり、仮想通貨アドレスの持ち主となるユーザ)のノードが保持する電子財布で保管され、第三者から秘匿される。一方、第三者が知り得る公開鍵は、仮想通貨アドレスの生成に用いられる。
P2P仮想通貨ネットワークにおける仮想通貨の取引は、あるユーザのノードにおいて生成された取引データ(Transaction)がP2P仮想通貨ネットワークに投入されることで行われる。P2P仮想通貨ネットワークへの投入とは、例えば、あるノードで生成された取引データがP2P仮想通貨ネットワークに参加している全てのノードへブロードキャストで伝送されることを意味する(つまり、あるノードが発生させた新たな取引データは全てのノードに行き渡るまで再転送される)。取引データは、例えばユーザU2がユーザU1に幾らの価額を支払ったかを示すデータ(送金データともいう)である。取引データには、例えば、取引対象となる仮想通貨の価額と、この価額の支払い先となる受取用の仮想通貨アドレス(例えば、ユーザU1に固有の仮想通貨アドレス)と、この価額の支払い元となる支払い用の仮想通貨アドレス(例えば、ユーザU2に固有の仮想通貨アドレス)またはこの仮想通貨アドレスの生成に用いられた公開鍵(支払元の公開鍵)と、取引データの生成日時と、原資となる取引データのハッシュ値とが含まれる。ここで、P2P仮想通貨ネットワーク内(つまり、P2P仮想通貨ネットワークに参加しているノード)には、過去に投入された取引データが記録されている。原資となる取引データとは、例えばユーザU2がユーザU1に価額を支払うための原資となる価額を示す取引データ(つまり、この価額以上が(今回の取引とは無関係に)ユーザUXからユーザU2に対して過去に支払われたことを示す取引データ)である。原資となる取引データは、後述するデータブロックから取得される。
以上のように構成されたネットワーク通信システムSにおいて、コンテンツを配信するコンテンツ配信システムが提供される。サーバSA1(配信サーバの一例)は、コンテンツ配信システムの構成要素として動作し、コンテンツ投稿サイトをネットワークNW上で提供する。そして、サーバSA1は、クライアント端末T1(投稿者端末の一例)からコンテンツの投稿を受け付けて登録し、クライアント端末T2(利用者端末の一例)からの要求に応じて、そのユーザに対して利用を許可したコンテンツをクライアント端末T2へ配信するコンテンツ登録・配信制御処理を行う。ここで、コンテンツの利用は、登録されたコンテンツの利用に要する仮想通貨の価額の支払いが確認された場合に許可される。なお、コンテンツは、例えば動画データにより構成され、音声データやテキストデータが含む場合もある。
図2(A)は、サーバSA1の概要構成例を示すブロック図である。サーバSA1は、図2(A)に示すように、制御部1、記憶部2、及びインターフェース部3等を備えて構成される。これらの構成要素は、バス4に接続されている。インターフェース部3は、ネットワークNWに接続される。制御部1は、コンピュータとしてのCPU(Central Processing Unit)、ROM(Read Only Memory)、及びRAM(Random Access Memory)等により構成される。記憶部2は、例えばハードディスクドライブにより構成される。記憶部2には、アカウントデータベース、及び投稿データベースが構築されている。アカウントデータベースには、ユーザのアカウントID、及びパスワード等がユーザ毎に対応付けられて登録される。投稿データベースには、投稿されたコンテンツが格納される動画ファイルと、そのメタ情報とがコンテンツ毎に対応付けられて登録されている。また、記憶部2には、クライアント端末へ提供されるWebページを構成する構造化文書(例えば、HTML(Hyper Text Markup Language)文書やXHTML文書等)ファイル、及び画像ファイル等が記憶されている。また、記憶部2には、OS(Operating System)、及びコンテンツ登録・配信制御プログラム(本発明のプログラムを含む)、及び上述した仮想通貨財布ソフトウェア等が記憶されている。コンテンツ登録・配信制御プログラムは、コンピュータとしての制御部1に、コンテンツ登録・配信制御処理を実行させるプログラムである。なお、コンテンツ登録・配信制御プログラムは、アプリケーションとして、所定のサーバからダウンロードされてもよいし、CD、DVD等の記録媒体に記憶されて提供されてもよい。制御部1は、コンテンツ登録・配信制御処理において、本発明における受付手段、生成手段、登録手段、送信手段、取得手段、許可手段、及び配信手段等として機能する。
ここで、図2(B)を参照して、コンテンツ登録・配信制御処理の概要について説明する。図2(B)は、コンテンツの投稿から配信までの流れを示す概略図である。図2(B)に示すように、先ず、クライアント端末T1は、投稿者であるユーザU1の指示に応じて、ビデオカメラにより被写体が撮影された動画データを含むコンテンツをサーバSA1へアップロードして投稿する(1)。サーバSA1は、クライアント端末T1からコンテンツの投稿を受け付け、少なくとも、投稿されたコンテンツと、投稿されたコンテンツの利用に要する仮想通貨の価額と、仮想通貨の価額の受取用の仮想通貨アドレス(ユーザU1に固有の仮想通貨アドレス)とを対応付けて投稿データベースに登録する。図2(B)の例では、投稿されたコンテンツが格納される動画ファイルと、そのメタ情報とが対応付けられて投稿データベースに登録されている。このメタ情報には、例えば、ユーザU1のアカウントID、コンテンツを識別するコンテンツID、コンテンツのタイトル、コンテンツの投稿日時、コンテンツの再生回数、受取用の仮想通貨アドレス、及びコンテンツの利用に要する仮想通貨の価額(利用料)が含まれる。
次に、サーバSA1は、視聴者(利用者)であるユーザU2のクライアント端末T2からの要求に応じて、投稿データベースに登録された(例えばユーザU1により投稿された)コンテンツの一部を示す情報と、コンテンツに対応付けて登録された仮想通貨の価額及び受取用の仮想通貨アドレスとを表示する画面を構成するWebページ(画面データの一例)をクライアント端末T2へ送信する。ここで、コンテンツの一部を示す情報には、例えばコンテンツのタイトル及び動画データ中の一画像フレームなどが含まれる。クライアント端末T2は、サーバSA1から受信したWebページの画面を表示する。ユーザU2がWebページに示されるコンテンツを視聴する場合、クライアント端末T2は、ユーザU2の指示に応じて、仮想通貨財布ソフトウェアにより、Webページが示すコンテンツの利用に要する仮想通貨の価額の支払い先としてユーザU1に固有の受取用の仮想通貨アドレスを含む取引データを生成する。そして、P2P仮想通貨ネットワークにノードとして参加したクライアント端末T2は、生成した取引データをP2P仮想通貨ネットワークに投入(言い換えれば、送金)することで、ユーザU2はユーザU1へ仮想通貨の価額を支払う(2)。なお、P2P仮想通貨ネットワークに参加するノードは、P2P仮想通貨ネットワークに投入された取引データが正当であるかを検証し、検証により正当であると判断した取引データをブロックという単位で記録する。つまり、取引データは、各ノードが保持するデータブロックに登録される。
次に、P2P仮想通貨ネットワークにノードとして参加したサーバSA1は、クライアント端末T2によりP2P仮想通貨ネットワークに投入された取引データを、P2P仮想通貨ネットワークを介して取得する。そして、サーバSA1は、取得した取引データに基づいて、上記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合(3)、クライアント端末T2のユーザU2に対してコンテンツの利用を許可する。そして、サーバSA1は、利用を許可したコンテンツをクライアント端末T2へ配信(例えば、ストリーミング配信)する(4)。こうして、クライアント端末T2は、サーバSA1からのコンテンツをストリーミング再生する。これにより、ユーザU2は、ユーザU1により投稿されたコンテンツを視聴することができる。以上のように、本実施形態のコンテンツ配信システムでは、コンテンツの投稿者と視聴者間で送受金を直接に行わせ、システム運営者(サーバSA1)側はその確認を行うようになっている。
ここで、図3を参照して、取引データが登録されるデータブロックについて説明する。図3は、ノードにより生成される取引データ及び取引データが登録されるデータブロックの一例を示す図である。図3の例では、取引データには、この取引データを生成したノードが保管する秘密鍵により署名がなされている。ここで、署名とは、取引データのハッシュ値を、この取引データを生成したノードが保管する秘密鍵で暗号化し、この暗号化した署名データを取引データに付加することをいう。なお、図3の例では、価額の支払い元となる支払い用の仮想通貨アドレスは、原資となる取引データのハッシュ値を辿れば明らかになるのでこの取引データには記述されていない。そして、1つのデータブロックには、例えば検証により正当であると判断された取引データが例えば数十〜数百個登録される。図3に示すように、過去から現在に至るまでに生成されたデータブロックは、チェーン状に順次繋がっており、このように繋がったデータブロック全体をブロックチェーンという。ブロックチェーンは、各データブロックが前回のデータブロックのハッシュ値を含むことで連続性が保たれている。P2P仮想通貨ネットワークにおいて、採掘者と呼ばれる各ノードは、検証を終えた取引データを新しいデータブロックに登録し、これを数十〜数百個繰り返し、最後に改ざんを難しくする目的でナンス値(調整値)をこのデータブロックに挿入し、このデータブロックを所定のハッシュ関数に通すことでデータブロックのハッシュ値を算出する。このとき、採掘者と呼ばれる各ノードは、採掘(検証)ソフトウェアにより、データブロックのハッシュ値の先頭にゼロが所定数連続するようなナンス値(正解のナンス値)を探すという探索問題を解く。これにより、何れか1つのノードにより正解のナンス値が発見された場合、このデータブロックはブロードキャストされて、全てのノードに行き渡り、以後、このデータブロックには、新たなデータブロックを繋げることが可能となる。これにより、各ノードに記憶されるブロックチェーンは更新され続けていくことになる。
[2.ネットワーク通信システムSの動作]
次に、図4及び図5等を参照して、本実施形態のネットワーク通信システムSで実施される動作例について説明する。図4及び図5は、コンテンツの投稿から配信までの流れを示すシーケンス図である。なお、以下の動作の前提として、サーバSA1、クライアント端末T1、クライアント端末T2は、それぞれ、仮想通貨財布ソフトウェアが起動されることでP2P仮想通貨ネットワークに参加しているものとする。
[2−1.アカウント作成時の動作]
先ず、クライアント端末T2は、アカウントを作成するために、ユーザU2の操作に従って例えばWebブラウザによりサーバSA1にアクセスして、図4に示すように、アカウント作成画面要求をサーバSA1へ送信する(ステップS1)。サーバSA1は、クライアント端末T2からのアカウント作成画面要求を受信すると、アカウント作成画面を構成するWebページ(以下、「アカウント作成ページ」という)を記憶部2から取得し(ステップS2)、取得したアカウント作成ページをクライアント端末T2へ送信する(ステップS3)。
クライアント端末T2は、サーバSA1から受信したアカウント作成ページの画面を例えばWebブラウザで表示する(ステップS4)。図6(A)は、アカウント作成ページの画面例を示す図である。図6(A)に示す画面には、メールアドレス入力欄51、パスワード入力欄52、支払い用の仮想通貨アドレス入力欄53、及び登録ボタン54が設けられている。このような表示状態において、ユーザU2の操作により、例えばメールアドレス、パスワード、及び支払い用の仮想通貨アドレスが入力された後、登録ボタン54が押下(例えば、クリックまたはタップなど、以下同様)されると、クライアント端末T2は、入力されたメールアドレス、パスワード、及び支払い用の仮想通貨アドレスを含む登録要求をサーバSA1へ送信する(ステップS5)。
サーバSA1は、クライアント端末T2からのアカウント作成画面要求を受信すると、登録要求からメールアドレス、パスワード、及び支払い用の仮想通貨アドレスを取得する。そして、サーバSA1は、取得したメールアドレスをアカウントID(ログインID)としてアカウントデータベースに登録すると共に、このアカウントIDに対応付けてパスワード、及び支払い用の仮想通貨アドレスをアカウントデータベースに登録する(ステップS6)。なお、支払い用の仮想通貨アドレスは、クライアント端末T2の仮想通貨財布ソフトウェアにより生成されるものであるが、アカウント作成ページの画面に入力されてアカウントデータベースに登録されなくともよい。また、上記ステップS1〜S6の処理は、クライアント端末T1においても同じように行われる。
[2−2.コンテンツ投稿時の動作]
次に、クライアント端末T1は、コンテンツを投稿するために、ユーザU1の操作に従って例えばWebブラウザによりサーバSA1にアクセスして、図4に示すように、ログイン要求をサーバSA1へ送信する(ステップS7)。ログイン要求には、ユーザU1のアカウントID及びパスワードが含まれる。サーバSA1は、クライアント端末T1からのログイン要求を受信すると、ログイン要求からアカウントID及びパスワードを取得してアカウント照合を実行する(ステップS8)。取得されたアカウントIDとパスワードの組がアカウントデータベースに登録されている場合、アカウント照合が成功となり、ユーザU1のログインが完了する。一方、取得されたアカウントIDとパスワードの組がアカウントデータベースに登録されていない場合、アカウント照合が失敗となり、クライアント端末T1へエラーメッセージが送信される。サーバSA1は、このアカウント照合が成功した場合、コンテンツのアップロード画面を構成するWebページ(以下、「アップロードページ」という)を記憶部2から取得し(ステップS9)、取得したアップロードページをクライアント端末T1へ送信する(ステップS10)。
クライアント端末T1は、サーバSA1から受信したアップロードページの画面を例えばWebブラウザで表示する(ステップS11)。この画面(図示せず)には、動画ファイル指定欄、タイトル入力欄、有償/無償設定欄、及び投稿ボタンが設けられている。このような表示状態において、ユーザU1の操作により、例えば投稿対象となる動画ファイル(クライアント端末T1中に記憶されている動画ファイル)が指定され、コンテンツのタイトルが入力され、有償または無償が設定された後、投稿ボタンが押下される。これにより、クライアント端末T1は、指定された動画ファイルをコンテンツとしてサーバSA1へアップロードすると共に、そのコンテンツのタイトル及び有償/無償設定情報を含む投稿要求をサーバSA1へ送信する(ステップS12)。なお、コンテンツのアップロードは、例えばファイル転送プロトコルにより実施される。
サーバSA1は、クライアント端末T1からのコンテンツ及び投稿要求を受信すると、投稿要求からコンテンツのタイトル及び有償/無償設定情報を取得する。そして、サーバSA1は、アップロードされたコンテンツにコンテンツIDを配番し、このコンテンツ(動画ファイル)とメタ情報とを対応付けて投稿データベースに登録する(ステップS13)。ここで、メタ情報には、コンテンツを投稿したユーザU1のアカウントID、配番されたコンテンツID、コンテンツのタイトル、及び投稿日時が含まれる(有償/無償設定情報が含まれてもよい)。次いで、サーバSA1は、取得した有償/無償設定情報に基づいて、投稿されたコンテンツが有償設定であるか否かを判定する(ステップS14)。サーバSA1は、投稿されたコンテンツが有償設定でないと判定した場合(ステップS14:NO)、処理を終了する。一方、サーバSA1は、投稿されたコンテンツが有償設定であると判定した場合(ステップS14:YES)、ステップS15へ進む。
ステップS15では、サーバSA1は、仮想通貨財布ソフトウェアにより、ユーザU1に対して発行する公開鍵と秘密鍵との鍵ペアと、ステップS13で登録されたコンテンツに対して1対1で対応付けられる仮想通貨アドレスとを生成する。ここで生成される仮想通貨アドレスは、ユーザU1に固有の受取用の仮想通貨アドレスである。つまり、この例では、サーバSA1は、コンテンツの投稿が受け付けられたときに、投稿されたコンテンツに対して1対1で対応付けられる仮想通貨アドレスを生成する。このように、仮想通貨アドレスは、コンテンツ一つ一つに対して個別に割り振られるので、投稿されたコンテンツの利用に対して支払われる仮想通貨の価額をコンテンツ毎に固有の仮想通貨アドレスにより効率良く管理することができる。
ここで、鍵ペアと仮想通貨アドレスの生成についての具体例を説明する。サーバSA1の制御部1は、先ず、例えば256bitの乱数を秘密鍵として生成する。例えば、秘密鍵(256bit)は、 「3074020101042047bbafd0147b4285b07c8971412f65a3cd20c6d335d266f087」となる。次に、制御部1は、生成した秘密鍵からペアとなる公開鍵(同様に256bit)を生成する。暗号化アルゴリズムには、例えば楕円曲線暗号(Elliptic Curve Digital Signature Algorithm)形式等が用いられる。例えば、公開鍵(256bit)は、「15aaf9f5316efea00706052b8104000aa14403420004f066718f7cf3734d9901」となる。なお、上述した取引データを秘密鍵と共に上記暗号化アルゴリズムに通すと暗号化データ(つまり、署名データ)が得られる。この署名データを公開鍵と共に暗号化アルゴリズム(復号アルゴリズム)に通すと、元の取引データに戻る。公開鍵から秘密鍵を逆算することは不可能であるため、公開鍵を含む取引データに署名データを付加して送信すると、秘密鍵を持ったユーザがデータを作成し、改ざんが無かったことを証明できるので、署名検証に用いることができる。次に、制御部1は、得られた公開鍵を、所定のハッシュ関数に通してハッシュ値(160bit)を算出する。例えば、公開鍵のハッシュ値(160bit)は、「3d6a5cc374cd32e2853c6dd76469f07c5af0568d」となる。次に、制御部1は、算出したハッシュ値にチェックサム(ハッシュ関数を2回通した値の先頭のみ32bit)を追加(160+32=192bitとなる)することで仮想通貨アドレスを生成する。なお、ハッシュ関数のアルゴリズムにはSHA160(Secure Hash Algorithm)等が用いられる。こうして生成された仮想通貨アドレスは、仮想通貨の価額の支払い先(送金先)であり、データの誤りによるミスを防ぐために、上記チェックサムが付与されている。
次いで、サーバSA1は、コンテンツの有償設定画面を構成するWebページ(以下、「有償設定ページ」という)及び有償設定ページに組み込む情報を記憶部2から取得し(ステップS16)、取得した有償設定ページをクライアント端末T1へ送信する(ステップS17)。送信される有償設定ページには、投稿されたコンテンツの一部を示す情報(例えばコンテンツのタイトル及び動画データ中の一画像フレームなど)、ユーザU1が投稿したコンテンツのコンテンツID、及びステップS15で生成された秘密鍵及び仮想通貨アドレス等が組み込まれる。つまり、サーバSA1は、クライアント端末T1からコンテンツの投稿が受け付けられたときに、投稿されたコンテンツの一部を示す情報を表示し、且つ受取用の仮想通貨アドレスを表示する画面を構成する有償設定ページをクライアント端末T1へ送信する。これにより、サーバSA1により生成された受取用の仮想通貨アドレスをユーザU1に提供することができる。なお、送信される有償設定ページには、秘密鍵の文字列と、受取用の仮想通貨アドレスの文字列とが組み込まれてもよく、また、秘密鍵の2次元バーコード(例えば、QRコード(登録商標))と、受取用の仮想通貨アドレスの2次元バーコードとが組み込まれてもよい。
クライアント端末T1は、サーバSA1から受信した有償設定ページの画面を例えばWebブラウザで表示する(ステップS18)。図6(B)は、有償設定ページの画面例を示す図である。図6(B)に示す画面には、コンテンツの一部を示す情報61、受取用の仮想通貨アドレスの文字列62と仮想通貨アドレスの2次元バーコード63、及び秘密鍵の文字列64と秘密鍵の2次元バーコード65が表示されている。ここで、受取用の仮想通貨アドレスと秘密鍵は、例えば、BASE58(デジタルデータの58種類文字化)アルゴリズムで文字列変換(サーバSA1またはクライアント端末T1により文字列変換)されて(つまり、文字数が縮小されて)表示されている。受取用の仮想通貨アドレスと秘密鍵は桁の大きな数字であるが、上記文字列変換によりこれらを文字列62,64で表示させるので、ユーザU1は、画面上で容易にこれらの文字列62,64をリンクまたはコピー&ペーストすることができる。同時に、受取用の仮想通貨アドレスの2次元バーコード63と秘密鍵の2次元バーコード65とが表示されるので、ユーザU1は、画面から容易にこれらの2次元バーコード63,65をカメラで取り込むことができる。クライアント端末T1は、コンテンツの投稿主であるユーザU1の操作に従って、これらの文字列62,64をコピー&ペーストするか、これらの2次元バーコード63,65をカメラで取り込むかのいずれかの方法で取得して、受取用の仮想通貨アドレスと秘密鍵を電子財布に取り込み、保管することになる。これにより、ユーザU1は、以後、自身が投稿したコンテンツを利用(例えば視聴)するユーザがこのコンテンツの有料視聴を行った場合の利用料を、仮想通貨の価額で受け取ることができるようになる。さらに、図6(B)に示す画面には、利用料入力欄66、及び設定ボタン67が設けられている。このような表示状態において、ユーザU1の操作により、コンテンツの利用料入力欄66にコンテンツの利用料として仮想通貨の価額が入力された後、設定ボタン67が押下される。これにより、クライアント端末T1は、入力された仮想通貨の価額、及びユーザU1が投稿したコンテンツのコンテンツIDを含む設定要求をサーバSA1へ送信する(ステップS19)。なお、上記利用料は、例えばシステム運営者側で設定されてもよく、この場合、コンテンツの利用料入力欄66には予め設定された利用料が表示され、ユーザU1は、コンテンツの利用料入力欄66に表示された利用料を承認する意味で設定ボタン67を押下することになる。
サーバSA1は、クライアント端末T1からの設定要求を受信すると、設定要求からコンテンツID、及び仮想通貨の価額を取得し、且つ、取得したコンテンツIDに対応するメタ情報を投稿データベースから取得し、ステップS15で生成した秘密鍵を消去する。このように、サーバSA1は、秘密鍵を消去するので、コンテンツの利用に要する仮想通貨の価額を受け取ることができるのは、そのコンテンツを投稿したユーザU1だけになる。そして、サーバSA1は、取得したメタ情報中に、ステップS15で生成した受取用の仮想通貨アドレスと設定要求から取得した仮想通貨の価額とを追加設定することでメタ情報を更新し、更新したメタ情報を投稿データベースに登録する(ステップS20)。
なお、上記例では、サーバSA1が、公開鍵と秘密鍵との鍵ペアと受取用の仮想通貨アドレスとを生成するように構成したが、別の例として、クライアント端末T1が仮想通貨財布ソフトウェアにより、ユーザU1に固有の鍵ペアと受取用の仮想通貨アドレスとを生成するように構成してもよい。これにより、ユーザU1が既に保有している仮想通貨アドレスを、投稿されたコンテンツの利用に要する仮想通貨の価額の受取用の仮想通貨アドレスとして流用することができる。この場合、上記ステップS17において、サーバSA1からクライアント端末T1へ送信される有償設定ページの画面には、受取用の仮想通貨アドレスを入力するための入力欄が設けられるが、上述した仮想通貨アドレスと秘密鍵の文字列及び2次元バーコードは表示されない。この場合、クライアント端末T1の仮想通貨財布ソフトウェアにより予め生成された受取用の仮想通貨アドレスと、仮想通貨の価額とが入力された後、設定ボタンが押下されると、クライアント端末T1は、入力された受取用の仮想通貨アドレス、仮想通貨の価額、及びコンテンツIDを含む設定要求をサーバSA1へ送信することになる。そして、サーバSA1は、クライアント端末T1からの設定要求を受信すると、コンテンツIDに対応するメタ情報中に、設定要求から取得した受取用の仮想通貨アドレスと仮想通貨の価額とを追加することでメタ情報を更新し、更新したメタ情報を投稿データベースに登録することになる。
[2−3.コンテンツ配信時の動作]
次に、クライアント端末T2は、コンテンツの配信を受けるために、ユーザU2の操作に従って例えばWebブラウザによりサーバSA1にアクセスして、図5に示すように、コンテンツ一覧要求をサーバSA1へ送信する(ステップS21)。サーバSA1は、クライアント端末T2からのコンテンツ一覧要求を受信すると、コンテンツ一覧画面を構成するWebページ(以下、「コンテンツ一覧ページ」という)及びコンテンツ一覧ページに組み込む情報を記憶部2から取得し(ステップS22)、取得したコンテンツ一覧ページをクライアント端末T2へ送信する(ステップS23)。なお、送信されるコンテンツ一覧ページには、投稿データベースに登録されているコンテンツのうち、所定数のコンテンツの一部を示す情報が組み込まれる。
クライアント端末T2は、サーバSA1から受信したコンテンツ一覧ページの画面を例えばWebブラウザで表示する(ステップS24)。この画面(図示せず)には、例えば、投稿された複数のコンテンツの一部を示す情報(例えばコンテンツのタイトル及び動画データ中の一画像フレームなど)が選択可能に一覧表示(例えば、サムネイル表示)されている。このような表示状態において、ユーザU2の操作により、何れかのコンテンツが選択(例えば、表示された画像フレームが押下)されると、クライアント端末T2は、選択されたコンテンツ(例えば、上述したように、ユーザU1により投稿されたコンテンツ)のコンテンツIDを含む配信要求をサーバSA1へ送信する(ステップS25)。サーバSA1は、クライアント端末T2からの配信要求を受信すると、配信要求からコンテンツIDを取得する。そして、サーバSA1は、取得したコンテンツIDに対応するコンテンツ(動画ファイル)及びメタ情報を投稿データベースから取得する(ステップS26)。なお、ユーザがコンテンツの選択を行うことなく、例えばシステム運営者側で推奨するコンテンツ及びメタ情報が取得されてもよい。次いで、サーバSA1は、ステップS26で取得したコンテンツのストリーミング配信を開始する(ステップS27)。これにより、クライアント端末T2は、サーバSA1からストリーミング配信されたコンテンツをストリーミング再生する(ステップS28)。なお、このストリーミング配信は、コンテンツの先頭位置から所定秒間(例えば10秒間)の無償配信である。このため、10秒間以内に、クライアント端末T2のユーザU2による上記価額の支払いを確認できなければ、ストリーミング配信は停止する。
次いで、サーバSA1は、ステップS26で取得したコンテンツが有償設定されているか否かを判定する。例えば、サーバSA1は、ステップS26で取得したコンテンツのメタ情報中に、仮想通貨アドレス及び仮想通貨の価額が含まれている場合、コンテンツが有償設定されていると判定される。或いは、ステップS26で取得したコンテンツのメタ情報に有償/無償設定情報が含まれる場合、この有償/無償設定情報が有償を示すときにコンテンツが有償設定されていると判定される。サーバSA1は、ステップS26で取得したコンテンツが有償設定されていると判定した場合(ステップS29:YES)、ステップS31へ進む。一方、サーバSA1は、ステップS26で取得したコンテンツが有償設定されていないと判定した場合(ステップS29:NO)、コンテンツの最後(終了位置)までストリーミング配信を継続する(ステップS30)。
ステップS31では、サーバSA1は、支払い画面を構成するWebページ(以下、「支払いページ」という)及び支払いページに組み込む情報を記憶部2から取得し、取得した支払いページをクライアント端末T1へ送信する(ステップS32)。送信される支払いページには、ステップS26で取得したコンテンツの一部を示す情報(例えばコンテンツのタイトル及び動画データ中の一画像フレームなど)、及びステップS26で取得したコンテンツのメタ情報に含まれる仮想通貨の価額及び受取用の仮想通貨アドレス(つまり、支払い先の仮想通貨アドレスとなる)等が組み込まれる。つまり、サーバSA1は、クライアント端末T2からの配信要求に応じて、ステップS26で取得したコンテンツの一部を示す情報と、このコンテンツに対応付けて登録された仮想通貨の価額及び受取用の仮想通貨アドレスとを表示する画面を構成する支払いページをクライアント端末T2へ送信する。なお、送信される支払いページには、受取用の仮想通貨アドレスの文字列が組み込まれてもよく、また、受取用の仮想通貨アドレスの2次元バーコードが組み込まれてもよい。
クライアント端末T2は、サーバSA1から受信した支払いページの画面を例えばWebブラウザで表示する(ステップS33)。図6(C)は、支払いページの画面例を示す図である。図6(C)に示す画面には、コンテンツの一部を示す情報71、支払い先の仮想通貨アドレスの文字列72と仮想通貨アドレスの2次元バーコード73、及び仮想通貨の価額74が表示されている。ここで、支払い先の仮想通貨アドレスは、例えば、BASE58アルゴリズムで文字列変換されて表示されている。このため、ユーザU2は、画面上で容易に文字列72をリンクまたはコピー&ペーストすることができる。同時に、支払い先の仮想通貨アドレスの2次元バーコード73が表示されるので、ユーザU2は、画面から容易にこれらの2次元バーコード73をカメラで取り込むことができる。クライアント端末T2は、コンテンツの視聴者(利用者)であるユーザU2の操作に従って、文字列72をコピー&ペーストするか、2次元バーコード73をカメラで取り込むかのいずれかの方法で取得し、支払い先の仮想通貨アドレスを得ると共に、上記画面に表示された仮想通貨の価額74を得る。そして、クライアント端末T2は、ユーザU2の操作に従って、支払い先の仮想通貨アドレス及び仮想通貨の価額等を仮想通貨財布ソフトウェアにより取り込み、この仮想通貨の価額及び支払い先の仮想通貨アドレスを含む取引データを生成し、生成した取引データ(以下、「ユーザU2の取引データ」という)をP2P仮想通貨ネットワークに投入する(ステップS34)。なお、図6(C)に示す画面には、支払い完了(つまり、取引データの投入)ボタン75が設けられている。取引データのP2P仮想通貨ネットワークへの投入後、ユーザU2の操作により、支払い完了ボタン75が押下されると、クライアント端末T2は、支払い確認要求をサーバSA1へ送信してもよい。
サーバSA1は、P2P仮想通貨ネットワークのノードとして、P2P仮想通貨ネットワークを介して次々に送信されてくる新取引データを受信する(ステップS35)。サーバSA1は、例えば、支払いページをクライアント端末T2へ送信してから所定時間(例えば、60秒)、またはクライアント端末T2から支払い確認要求を受信してから所定時間(例えば、60秒)、P2P仮想通貨ネットワークを介して取得した新取引データの中から、クライアント端末T2により生成されたユーザU2の取引データを検索する。例えば、サーバSA1は、例えば、ユーザU2のアカウントIDに対応付けられて登録されている支払い用の仮想通貨アドレス(支払い元の仮想通貨アドレス)と、上述した支払いページに組み込まれた受取用の仮想通貨アドレス(支払い先の仮想通貨アドレス)とをキーにしてユーザU2の取引データを検索する。例えば、サーバSA1は、受信した新取引データに含まれる公開鍵から上述したハッシュ関数のアルゴリズムを用いて支払い元の仮想通貨アドレスを再生成する。そして、サーバSA1は、再生成した支払い元の仮想通貨アドレスと、ユーザU2のアカウントIDに対応付けられて登録されている支払い用の(支払い元の)仮想通貨アドレスとが一致し、且つ、上記受信した新取引データに含まれる支払い先の仮想通貨アドレスと、上記支払いページに組み込まれた支払い先の仮想通貨アドレスとが一致するか否かを判定する。そして、サーバSA1は、支払い元の仮想通貨アドレスと支払い先の仮想通貨アドレスの双方が一致する場合、その新取引データをユーザU2の取引データとして抽出する。一方、サーバSA1は、支払い元の仮想通貨アドレスと支払い先の仮想通貨アドレスの何れかが一致しない場合、上記双方が一致する新取引データが抽出されるまで上記検索を所定時間繰り返すことになる。サーバSA1は、このような検索により抽出したユーザU2の取引データ(検証前の取引データ)を取得する(ステップS36)。なお、所定時間繰り返してもユーザU2の取引データが抽出できない場合、コンテンツのストリーミングを停止する。
次いで、サーバSA1は、ステップS36で取得したユーザU2の取引データ(検証前の取引データ)に基づいて、ステップS26で取得したコンテンツの利用に要する仮想通貨の価額の支払いを確認できたか否かを判定する(ステップS37)。例えば、ステップS36で取得したユーザU2の取引データに含まれる仮想通貨の価額が、上記支払いページに組み込まれた仮想通貨の価額以上である場合(或いは、双方の価額が一致する場合)、仮想通貨の価額の支払いが確認できたと判定される。或いは、ユーザU2の取引データに含まれる仮想通貨の価額が支払いページに組み込まれた仮想通貨の価額以上であり(或いは、双方の価額が一致し)、且つ、ユーザU2の取引データの署名検証ができた場合に限り、仮想通貨の価額の支払いが確認できたと判定されるように構成すれば、より効果的である。ここで、「署名検証ができた」とは、ユーザU2の取引データに付加された署名データがこの取引データに含まれる公開鍵で復号でき、且つ復号されたデータと、ユーザU2の取引データのハッシュ値とが一致したことを意味する。これにより、取引データがユーザU2により作成され、且つ改ざんが無かったことを証明することができる。
サーバSA1は、ステップS26で取得したコンテンツの利用に要する仮想通貨の価額の支払いを確認できたと判定した場合(ステップS37:YES)、ユーザU2に対して上記コンテンツの利用を仮許可し、ステップS38に進む。ステップS38では、サーバSA1は、仮許可されたコンテンツの途中(例えば、コンテンツの先頭位置から5分間)までストリーミング配信を継続し、後述するステップS42で参照されるリトライ回数を0に初期化する。なお、ステップS36で取得したユーザU2の取引データは、検証前の取引データであるが、ユーザU2のアカウントIDはサーバSA1により管理されていることから、この取引データが悪意を持ってなされた不正である可能性は低い(単純なミスはありうる)と考えられる。さらに、上述したように署名検証ができた取引データであれば、不正である可能性はさらに低いと考えられる。このため、検証前の取引データで仮想通貨の価額の支払いを確認できた場合、コンテンツの利用を仮許可してストリーミング配信を継続するのである。これにより、コンテンツの先頭位置から所定秒間(例えば10秒間)の無償配信から、ストリーミング配信をスムーズに継続することができる。つまり、後述するように、正当であると検証された取引データに基づいて仮想通貨の価額の支払いを確認できたか否かの判定には、ある程度の時間を要するので、この判定結果がでるまでの間に、ストリーミング配信をスムーズに継続することができる。一方、サーバSA1は、ステップS26で取得したコンテンツの利用に要する仮想通貨の価額の支払いを確認できないと判定した場合(ステップS37:NO)、ユーザU2に対して上記コンテンツの利用を不許可とし、利用が不許可されたコンテンツのストリーミング配信を停止する(ステップS43)。
一方、P2P仮想通貨ネットワークのノード(例えば採掘者)は、P2P仮想通貨ネットワークを介して次々に送信されてくる新取引データを受信する(ステップS101)。そして、P2P仮想通貨ネットワークのノードは、新取引データが正当であるかを検証する(ステップS102)。例えば、(i)新取引データに含まれる仮想通貨の価額(送金額)がその原資となる取引データに含まれる仮想通貨の価額(受金額)以下(原資となる送金が存在)であり、且つ、(ii)新取引データに含まれる公開鍵から再生成された支払い元の仮想通貨アドレスとその原資となる取引データに含まれる支払い先の仮想通貨アドレスとが一致(今回の送金元が過去の送金先と一致)し、且つ、(iii)署名検証ができた場合、新取引データが正当であると検証される。ここで、新取引データの原資となる取引データは、新取引データに含まれる原資となる取引データのハッシュ値に基づいてブロックチェーンの中から検索される。上記(i),(ii)により、仮想通貨の価額の支払い元が保有する仮想通貨の残高以上に送金している場合、または同じ原資から2重に送金している場合の不正を防ぐことができる。次いで、P2P仮想通貨ネットワークのノードは、新取引データが正当であると判断した場合(ステップS103:YES)、この新取引データ(検証により正当であると判断した取引データ)をデータブロックに登録する(ステップS104)。一方、P2P仮想通貨ネットワークのノードは、新取引データが正当でないと判断した場合(ステップS103:NO)、この新取引データを破棄する(ステップS105)。P2P仮想通貨ネットワークのノードは、所定数の新取引データに対して以上のステップS101〜S104(またはS105)の処理を行い、これが完了すると(ステップS106)、ステップS107へ進む。ステップS107では、P2P仮想通貨ネットワークのノードは、上述した正解のナンス値の探索を行う(探索問題を解く)。そして、P2P仮想通貨ネットワークのノードは、正解のナンス値を発見した場合、新データブロック(新ブロック)をP2P仮想通貨ネットワークの他のノードへ送信する(ステップS108)。これにより、新データブロックはP2P仮想通貨ネットワークにおいてブロードキャストされる。
一方、サーバSA1は、P2P仮想通貨ネットワークのノードとして、P2P仮想通貨ネットワークを介して送信されてくる新データブロックを受信する(ステップS39)。次いで、サーバSA1は、P2P仮想通貨ネットワークを介して取得した新データブロックの中から、クライアント端末T2により生成されたユーザU2の取引データを検索する。この検索は、上述したステップS36における検索と同様である。そして、サーバSA1は、この検索により抽出したユーザU2の取引データ(正当であると検証された取引データ)を取得する(ステップS40)。
次いで、サーバSA1は、ステップS40で取得したユーザU2の取引データ(正当であると検証された取引データ)に基づいて、ステップS26で取得したコンテンツの利用に要する仮想通貨の価額の支払いを確認できたか否かを判定する(ステップS41)。例えば、ステップS40で取得したユーザU2の取引データに含まれる仮想通貨の価額が、上記支払いページに組み込まれた仮想通貨の価額以上である(或いは、双方の価額が一致し)場合、仮想通貨の価額の支払いが確認できたと判定される。
サーバSA1は、ステップS26で取得したコンテンツの利用に要する仮想通貨の価額の支払いを確認できたと判定した場合(ステップS41:YES)、ユーザU2に対して上記コンテンツの利用を正許可し、コンテンツの最後(終了位置)までストリーミング配信を継続する(ステップS30)。このように、正当であると検証された取引データに基づいて、コンテンツの利用に要する仮想通貨の価額の支払いが確認されるため、コンテンツの不正な利用を防止することができ、本システムの信頼性を向上させることができる。一方、サーバSA1は、ステップS26で取得したコンテンツの利用に要する仮想通貨の価額の支払いを確認できないと判定した場合(ステップS41:NO)、ステップS42へ進む。ステップS42では、サーバSA1は、リトライ回数が許容値以内であるか否かを判定する。なお、許容値は、例えば1〜5回程度に設定される。サーバSA1は、リトライ回数が許容値以内であると判定した場合(ステップS42:YES)、リトライ回数に1を加算し、ステップS39に戻り、支払い確認処理のリトライを実行する。なお、リトライは実行されないように構成してもよい。一方、サーバSA1は、リトライ回数が許容値以内でないと判定した場合(ステップS42:NO)、ユーザU2に対して上記コンテンツの利用を不許可とし、利用が不許可されたコンテンツのストリーミング配信を停止する(ステップS43)。このようにして、あるユーザが、ある投稿コンテンツに対して設定された仮想通貨の価額の支払いを行った場合においてのみコンテンツの全体を配信することができる。
なお、図5に示す例は、コンテンツの利用に要する仮想通貨の価額の支払いが確認できたか否かに関わらず、コンテンツの先頭位置から所定秒間(例えば10秒間)の無償配信を行う構成を例にとって説明したが、このような無償配信を行わないように構成してもよい。この場合、ステップS27でストリーミング配信は開始されずにステップS29へ進み、これ以降は上記と同様に処理が進む。そして、ステップS37で、サーバSA1は、検証前の取引データに基づいてコンテンツの利用に要する仮想通貨の価額の支払いを確認できたと判定した場合(ステップS37:YES)、ユーザU2に対して上記コンテンツの利用を仮許可し、仮許可されたコンテンツのストリーミング配信を開始する(ステップS38)。これにより、投稿されたコンテンツの配信を迅速に開始することができる。その後、ステップS41で、サーバSA1は、正当であると検証された取引データに基づいてコンテンツの利用に要する仮想通貨の価額の支払いを確認できたと判定した場合(ステップS41:YES)、ユーザU2に対して上記コンテンツの利用を正許可し、正許可されたコンテンツの最後までストリーミング配信を継続する(ステップS30)。一方、サーバSA1は、正当であると検証された取引データに基づいてコンテンツの利用に要する仮想通貨の価額の支払いを確認できないと判定した場合(ステップS41:NO)、ステップS42へ進む。ステップS42では、サーバSA1は、リトライ回数が許容値以内であるか否かを判定し、リトライ回数が許容値以内でないと判定した場合(ステップS42:NO)、ユーザU2に対して上記コンテンツの利用を不許可とし、利用が不許可されたコンテンツのストリーミング配信を停止する(ステップS43)。これにより、投稿されたコンテンツの不正な利用を防止することができ、本システムの信頼性を向上させることができると共に、仮想通貨の支払確認に掛かる待ち時間を隠ぺいして迅速にコンテンツを視聴することができる。
以上説明したように、上記実施形態によれば、サーバSA1は、投稿者のクライアント端末T1からコンテンツの投稿を受け付け、少なくとも、投稿されたコンテンツと、投稿されたコンテンツの利用に要する仮想通貨の価額と、仮想通貨の価額の受取用の仮想通貨アドレスとを対応付けて登録し、視聴者(利用者)のクライアント端末T2からの要求に応じて、登録されたコンテンツの一部を示す情報と、コンテンツに対応付けて登録された仮想通貨の価額及び受取用の仮想通貨アドレスとを表示する画面を構成するWebページをクライアント端末T2へ送信する。そして、サーバSA1は、クライアント端末T2によりP2P仮想通貨ネットワークに投入された取引データを、P2P仮想通貨ネットワークを介して取得し、取得した取引データに基づいて、上記コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、クライアント端末T2のユーザU2に対してコンテンツの利用を許可するように構成したので、投稿者がコンテンツの投稿により簡易に、且つ効率良く収入を得ることができる。例えば、上記実施形態によれば、プロではない一般の人々が手持ちの撮影機材やパーソナルコンピュータで作成したコンテンツについて、そのシステムに対する信用度を維持または向上しつつ、容易にマネタイズして対価を得ることが可能となる。
なお、上記実施形態において、コンテンツの利用に対する支払いを過去に一度でも行っていれば、そのアカウントからは何度でも、そのコンテンツを再生可能としてもよいし、或いは、取引データには日時情報も含まれているので、そのコンテンツの再生回数や再生期間を制限するように構成してもよい。また、上記実施形態においては、検証前の取引データに基づいてコンテンツの利用に要する仮想通貨の価額の支払いを確認するように構成したが、例えば、特にコンテンツを迅速に配信することが求められないようなシステムでは、検証前の取引データに基づいてコンテンツの利用に要する仮想通貨の価額の支払いの確認を行わない(言い換えれば、正当であると検証された取引データのみに基づいてコンテンツの利用に要する仮想通貨の価額の支払いの確認を行う)ように構成してもよい。この場合、ステップS35〜S38の処理は行われない。また、上記実施形態は、少なくとも動画データを含むコンテンツを配信するシステムに対して適用したが、例えば楽曲データからなるコンテンツを配信するシステムに対しても適用可能である。