(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024161551
(43)【公開日】2024-11-19
(54)【発明の名称】複数インプットトランザクション
(51)【国際特許分類】
G06Q 20/38 20120101AFI20241112BHJP
H04L 9/32 20060101ALI20241112BHJP
G06F 21/64 20130101ALI20241112BHJP
【FI】
G06Q20/38 310
H04L9/32 200Z
G06F21/64
【審査請求】有
【請求項の数】22
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024139385
(22)【出願日】2024-08-21
(62)【分割の表示】P 2021567926の分割
【原出願日】2020-04-21
(31)【優先権主張番号】1907344.4
(32)【優先日】2019-05-24
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(72)【発明者】
【氏名】ジャーン,ウエイ
(72)【発明者】
【氏名】デイヴィーズ,ジャック
(72)【発明者】
【氏名】ライト,クレイグ
(57)【要約】 (修正有)
【課題】複数のユーザをメディアコンテンツのアイテムにアクセス可能にする方法を提供する。
【解決手段】方法は、ベンダが、第1トランザクションTx
1の初期テンプレートバージョンを策定し、それをアクセス可能なサーバ上にホスティングすることと、再度チャネルを介してユーザーから第1トランザクションに対するインプットを受信して、第1トランザクションに追加することと、第1トランザクションがターゲットT
mを満たすのに十分なインプットを有するかどうかをチェックすることと、第1トランザクション及び対応する第2トランザクションTx
2をネットワークにに発行し、シークレット鍵S
mを第2とトランザクションのアンロックスクリプトに含めることと、を含む。
【選択図】
図6
【特許請求の範囲】
【請求項1】
複数の第1パーティのうちの各第1パーティの各々のコンピュータ機器がメディアコンテンツのアイテムにアクセスすることを可能にする、コンピュータにより実施される方法であって、前記方法は、
第1トランザクションを提供するステップであって、前記第1トランザクションは、(i)第2パーティへ移転すべきデジタルアセットの額を指定する少なくとも第1アウトプットを含む1つ以上のアウトプット、及び(ii)最初に全部で0個以上のインプットであって、前記0個以上のインプットにより指される任意のソーストランザクションの任意のアウトプットの中で指定される前記デジタルアセットの合計インプット額は、前記1つ以上のアウトプットにより指定される前記デジタルアセットの合計アウトプット額より少なく、前記第1トランザクションの前記第1アウトプットは、前記第1アウトプットをアンロックするためにアンロックスクリプトにより満たされるべき条件を指定するロックスクリプトを含む、全部で0個以上のインプットと、を含む、ステップと、
前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器からインプットをオフチェーンで受信し、各々の受信したインプットを前記第1トランザクションに追加し、各々の受信したインプットは前記デジタルアセットの額を指定する各々のソーストランザクションのアウトプットを指す、ステップと、
ターゲットに達し、それにより前記第1トランザクションの前記インプットにより指される合計インプット額が前記合計アウトプット額に等しくなり又はそれを超えると、ブロックチェーンに記録されるように前記第1トランザクション及び第2トランザクションをブロックチェーンネットワーク上に発行させるステップであって、前記第2トランザクションは、前記第1トランザクションの前記第1アウトプットを指し及び前記条件を満たす前記アンロックスクリプトを含むインプットを含む、ステップと、
を含み、
前記ロックスクリプトにより指定される前記条件は、前記アンロックスクリプトが、前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器にメディアコンテンツの前記アイテムにアクセスできるようにするメディア鍵を含むことを要求する、方法。
【請求項2】
前記ターゲットは、前記合計インプット額が、マイニングしてブロックにするためにマイナーにより前記第1トランザクションを受け入れさせるための少なくとも十分なマイニング手数料だけ、前記合計アウトプット額を超えることを含む、請求項1に記載の方法。
【請求項3】
複数のデータアイテムの各々について、前記方法を繰り返すステップであって、コンテンツの各アイテムは、メディアコンテンツの部分のシーケンスのうちの異なる各々の1つを形成する、請求項1又は2に記載の方法。
【請求項4】
前記部分は、リアルタイムで前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器にストリーミングされる所与の1回分又は独立した番組若しくは映画のパケットである、請求項3に記載の方法。
【請求項5】
前記部分は、シリーズの中の異なる1回分である、請求項3に記載の方法。
【請求項6】
前記第1トランザクションにリンクされた指示は、前記第2パーティ及び前記第1パーティと独立した第3者のコンピュータ機器を使用して、前記第3者により運用されるデータベース内にリストされ、それにより、前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器が、前記第1トランザクションが前記メディア鍵を取得するための適法なメディアであることを検証できるようにする、請求項1~5のいずれかに記載の方法。
【請求項7】
前記0個以上の初期インプットは、前記第2パーティのコンピュータ機器により包含された少なくとも1つの初期インプットを含み、前記少なくとも1つの初期インプットは、各々のソーストランザクションのアウトプットをアンロックするためのアンロックスクリプトを含み、前記第2パーティの前記インプット内の前記アンロックスクリプトは、前記第2パーティの公開鍵、及び前記公開鍵に対応する前記第2パーティの秘密鍵を用いて形成された前記第2パーティの署名を含む、請求項1~6のいずれかに記載の方法。
【請求項8】
前記第1トランザクションにリンクされた指示は、前記第2パーティ及び前記第1パーティと独立した第3者のコンピュータ機器を使用して、前記第3者により運用されるデータベース内にリストされ、それにより、前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器が、前記第1トランザクションが前記メディア鍵を取得するための適法なメディアであることを検証できるようにし、
前記指示は、前記第2パーティの前記公開鍵のコピーを含み、それにより、前記第2パーティの前記初期インプットの前記アンロックスクリプト内の前記公開鍵をデータベース内の前記公開鍵のコピーと比較することにより、前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器が前記検証を実行できるようにする、請求項7に記載の方法。
【請求項9】
前記ターゲットに達するには未だ十分ではないが、前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器からの複数のインプットを受信した後に、前記第2パーティのコンピュータ機器が、少なくとも差分を形成するために更なるインプットを追加するステップ、を含む請求項1~8のいずれかに記載の方法。
【請求項10】
前記ターゲットを満たすのに必要なものより多くのデジタルアセットの額を指す超過インプットを前記第1パーティ及び/又は他のパーティのコンピュータ機器から受信することに応答して、前記第1トランザクションの新しいインスタンスを生成し、前記超過インプットを前記第1トランザクションの前記新しいインスタンスに追加するステップ、を含む請求項1~9のいずれかに記載の方法。
【請求項11】
前記メディア鍵は復号鍵を含み、少なくとも前記復号鍵を用いてメディアコンテンツのアイテムを復号することにより、前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器が前記メディアコンテンツのアイテムの前記アクセスを実行できるようにする、請求項1~10のいずれかに記載の方法。
【請求項12】
前記メディア鍵は、個別メディア鍵が前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器により計算できるようにするよう構成され、それにより、インプットを提供したパーティのコンピュータ機器のみがメディアコンテンツのアイテムにアクセスできるようにする、請求項1~11のいずれかに記載の方法。
【請求項13】
前記メディア鍵は復号鍵を含み、少なくとも前記復号鍵を用いてメディアコンテンツのアイテムを復号することにより、前記複数の第1パーティのうちの各第1パーティの前記各々のコンピュータ機器が前記メディアコンテンツのアイテムの前記アクセスを実行できるようにし、
各々の個別メディア鍵は個別復号鍵を含む、請求項12に記載の方法。
【請求項14】
前記第1パーティのインプットの各々は、各々のソーストランザクションのアウトプットをアンロックする各々のアンロックスクリプトを含み、前記各々のアンロックスクリプトは、前記各第1パーティの各々の公開鍵、及び前記各第1パーティの秘密鍵を用いて形成された前記各第1パーティの各々の署名を含む、請求項1~13のいずれかに記載の方法。
【請求項15】
各第1パーティの個別メディア鍵は、該各第1パーティから受信されたインプットから取り入れられた前記各第1パーティの各々の公開鍵に基づき生成される、請求項12又は13に従属する請求項14に記載の方法。
【請求項16】
コンピュータ可読記憶装置上に具現化され、第2パーティのコンピュータ機器上で実行されると請求項1~15のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
【請求項17】
第2パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは、前記処理機器上で実行すると、請求項1~15のうちの一項に記載の方法を実行するよう構成される、コンピュータ機器。
【請求項18】
オフチェーンデータソースの中で利用可能にされたメディアコンテンツのアイテムにアクセスする方法であって、前記方法は、複数の第1パーティのうちの第1パーティのコンピュータ機器により、
第1トランザクションにアクセスするステップであって、前記第1トランザクションは、(i)第2パーティへ移転すべきデジタルアセットの額を指定する少なくとも第1アウトプットを含む1つ以上のアウトプット、及び(ii)最初に全部で0個以上のインプットであって、前記0個以上のインプットにより指される任意のソーストランザクションの任意のアウトプットの中で指定される前記デジタルアセットの合計インプット額は、前記1つ以上のアウトプットにより指定される前記デジタルアセットの合計アウトプット額より少なく、前記第1トランザクションの前記第1アウトプットは、前記第1アウトプットをアンロックするためにアンロックスクリプトにより満たされるべき条件を指定するロックスクリプトを含む、全部で0個以上のインプットと、を含む、ステップと、
前記第2パーティへ、前記第1トランザクションに追加されるべき前記複数の第1パーティのコンピュータ機器により送信された複数のインプットの中の少なくとも1つのインプットをオフチェーンで送信し、各インプットは前記デジタルアセットの額を指定する各々のソーストランザクションのアウトプットを指し、それにより、ターゲットに達し、それにより前記第1トランザクションの前記インプットにより指される合計インプット額が前記合計アウトプット額に等しくなり又はそれを超えると、前記第2パーティのコンピュータ機器がブロックチェーンに記録されるように前記第1トランザクション及び第2トランザクションをブロックチェーンネットワーク上に発行できるようにするステップであって、前記第2トランザクションは、前記第1トランザクションの前記第1アウトプットを指し及び前記条件を満たす前記アンロックスクリプトを含むインプットを含む、ステップと、
を含み、
前記ロックスクリプトにより指定される前記条件は、前記アンロックスクリプトがメディア鍵を含むことを要求し、
前記方法は、前記メディアコンテンツのアイテムをアンロックするために前記メディア鍵を使用するステップ、を更に含む方法。
【請求項19】
コンピュータ可読記憶装置上に具現化され、第1パーティのコンピュータ機器上で実行すると請求項18に記載の方法を実行するよう構成される、コンピュータプログラム。
【請求項20】
第1パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは,
前記処理機器上で実行すると、請求項18に記載の方法を実行するよう構成される、コンピュータ機器。
【請求項21】
システムであって、請求項17に記載の第2パーティのコンピュータ機器と、請求項20に記載の第1パーティのコンピュータ機器と、を含むシステム。
【請求項22】
ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、1つ以上のコンピュータ可読データ媒体上に具現化され、
第1トランザクションであって、(i)ベンダへ移転すべきデジタルアセットの額を指定する少なくとも第1アウトプットを含む1つ以上のアウトプットと、(ii)複数の異なるユーザからの複数のインプットと、を含み、各インプットは前記デジタルアセットの額を指定する各々のソーストランザクションのアウトプットを指し、前記第1トランザクションのインプットにより指されるデジタルアセットの合計インプット額は、前記1つ以上のアウトプットにより指定される合計アウトプット額と等しく又はそれを超え、前記第1トランザクションの前記第1アウトプットは、前記第1アウトプットをアンロックするためにアンロックスクリプトにより満たされるべき条件を指定するロックスクリプトを含む、第1トランザクションと、
前記第1トランザクションの前記第1アウトプットを指すインプットを含む第2トランザクションであって、前記第2トランザクションのインプットは、前記条件を満たすアンロックスクリプトを含み、前記ロックスクリプトにより指定される前記条件は、前記アンロックスクリプトが、オフチェーンデータソースに格納されたメディアコンテンツのアイテムへのアクセスを可能にするメディア鍵を含むことを要求する、第2トランザクションと、
を含むトランザクションのセット。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ユーザにコンテンツを配信するためのメカニズムに関し、ブロックチェーンに基づくシステムの文脈でインプットレベルの適応性の概念、つまりトランザクションを無効にすることなくトランザクションのインプットを追加する(又は除去する)能力を利用する。
【背景技術】
【0002】
ブロックチェーンとは、分散型データ構造の形式を指し、ブロックチェーンの複製のコピーは、ピアツーピア(peer-to-peer(P2P))ネットワーク内の複数のノードのそれぞれにおいて維持される。ブロックチェーンは、データのブロックのチェーンを含み、各ブロックは1つ以上のトランザクションを含む。各トランザクションは、シーケンスの中の先行するトランザクションを指してよい。トランザクションは、新しいブロックに含まれるようネットワークへ提出され得る。新しいブロックは、「マイニング」として知られる処理により生成される。「マイニング」は、複数のマイニングノードの各々が「proof-of-work」を実行するために競争する、つまりブロックに含まれることを待っている保留中のトランザクションのプールに基づき、暗号パズルを解くことを含む。
【0003】
従来、ブロックチェーン内のトランザクションは、デジタルアセット、すなわち、価値のストアとして機能するデータを伝達するために使用される。しかし、ブロックチェーンの上に追加の機能を積み重ねるために、ブロックチェーンを利用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションのアウトプットに追加のユーザデータを格納することを可能にしてよい。現代のブロックチェーンは、単一トランザクション内に格納できる最大データ容量を増加させ、より複雑なデータを組み込むことを可能にしている。例えば、これは、ブロックチェーン内に電子ドキュメント(electronic document)、或いはオーディオ若しくはビデオデータを格納するために使用され得る。
【0004】
ネットワーク内の各ノードは、転送、マイニング、及び記憶のうちの任意の1、2、又は3つ全部の役割を有することができる。転送ノードは、それぞれ、(有効な)トランザクションを1つ以上の他のノードへ伝搬させる。従って、それらの間でネットワークのノードを通じてトランザクションを伝搬させる。マイニングノードは、それぞれ、トランザクションのマイニングを実行してブロックにするために競争する。記憶ノードは、それぞれ、ブロックチェーンのマイニングされたブロックの彼ら自身のコピーを格納する。トランザクションをブロックチェーンに記録させるために、パーティは、該トランザクションを、伝搬させるようにネットワークのノードのうちの1つへ送信する。トランザクションを受信したマイニングノードは、トランザクションをマイニングして新しいブロックにするよう競争してよい。各ノードは、トランザクションが有効であるための1つ以上の条件を含む同じノードプロトコルを尊重するよう構成される。無効なトランザクションは、伝搬されず、マイニングされてブロックにされることもない。トランザクションが検証され、それによってブロックチェーンに受け入れられたと仮定すると、(任意のユーザデータを含む)トランザクションは、従って、不変の公開レコードとしてP2Pネットワークの各ノードに格納されたままである。
【0005】
最新のブロックを生成するためにproof-of-workパズルを解くことに成功したマイナーは、標準的に、デジタルアセットの新しい額を生成する「生成トランザクション(generation transaction)」と呼ばれる新しいトランザクションにより報酬を受ける。トランザクションは、任意で、成功したマイナーのための追加マイニング手数料も指定してよい。proof-of-workは、ブロックをマイニングするために膨大な量の計算リソースを必要とするので、及び二重支払いの企てを含むブロックは他のノードにより受け入れられない可能性があるので、マイナーが、彼らのブロックに二重支払いトランザクションを含めることによりシステムを騙さないことを奨励し、
「アウトプットに基づく」モデル(UTXOに基づくモデルと呼ばれることもある)では、所与のトランザクションのデータ構造は、1つ以上のインプット及び1つ以上のアウトプットを含む。任意の使用可能アウトプットは、時にUTXO(「unspent transaction output(未使用トランザクションアウトプット)」)と呼ばれる、デジタルアセットの額を指定する要素を含む。アウトプットは、アウトプットを償還(redeem)するための条件を指定するロックスクリプトを更に含んでよい。各インプットは、先行するトランザクション内のそのようなアウトプットへのポインタを含み、ポイントされたアウトプットのロックスクリプトをアンロックするためのアンロックスクリプトを更に含んでよい。従って、トランザクションのペアを考えるとき、それらを、第1トランザクション及び第2トランザクションと呼ぶ。第1トランザクションは、デジタルアセットの額を指定する、及びアウトプットをアンロックする1つ以上の条件を定義するロックスクリプトを含む、少なくとも1つのアウトプットを含む。第2トランザクションは、第1トランザクションのアウトプットへのポインタと、第1トランザクションのアウトプットをアンロックするためのアンロックスクリプトと、を含む少なくとも1つのインプットを含む。
【0006】
このようなモデルでは、第2トランザクションが伝播されてブロックチェーンに記録されるようP2Pネットワークへ送信されると、各ノードにおいて適用される有効性のための基準のうちの1つは、アンロックスクリプトが第1トランザクションのロックスクリプト内で定義された要件を満たすことである。第2トランザクションが有効であるための別の条件は、第1トランザクションのアウトプットが、別の有効なトランザクションによって未だ償還されていないことである。これらの条件のうちのいずれかに従いターゲットトランザクションが無効であると分かった任意のノードは、該トランザクションを伝搬させず、ブロックチェーンに記録させるためにマイニングしてブロックに含めることもしない。別の条件は、標準的に、アウトプットにより指定されるデジタルアセットの合計額が、トランザクションのインプットにより指される合計額を超えないことである。これが当てはまらない場合を考えると、大部分のプロトコルでは、合計アウトプット額と合計インプット額との間の任意の正の差が、生成トランザクション内で与えられる額の上に追加マイニング手数料として自動的に残される。今日、実際には、有効である場合にも、合計インプット額は、トランザクションをマイナーに受け入れさせるために、十分なマイニング手数料だけ合計アウトプット額を超える必要がある(プロトコルは、標準的に、マイナーに彼らのプールに有効なトランザクションを受け入れさせることを強制せず、そうするよう奨励しなければならない)。
【0007】
ロックスクリプトの概念に戻ると、例えば、ターゲットトランザクションは、第1パーティ(「Alice」)から第2パーティ(「Bob」)へのデジタルアセット額を運ぶためのものである。先行する第1トランザクションのロックスクリプト内で定義された要件のうちの1つは、標準的に、第2トランザクションのアンロックスクリプトがAliceの暗号署名を含むことである。署名は、第2トランザクションの部分に署名するAliceにより生成されなければならない。これがどの部分であるかは、アンロックスクリプトにより柔軟に定義されてよく、又は使用されるプロトコルに依存して、ノードプロトコルの本来の特徴であってよい。しかしながら、署名されるべき部分は、標準的に、第2トランザクションの特定の他の部分、例えばアンロックスクリプト自体の一部又は全部を除く。
【0008】
これは、「適応性(malleability)」の可能性を生成する。つまり、マイニングの前に、署名されていない第2トランザクションの部分が、トランザクションを無効にすることなく、変更(「malleated」)可能である。適応性は、暗号法において知られている概念である。これは、通常、セキュリティ関心事として知られており、それによりメッセージが悪意を持って変更され得るが、依然として真正であるととして受け入れられる。ブロックチェーンの文脈では、適応性は、必ずしも関心事ではないが、単に奇妙なアーチファクトとして知られており、それにより、トランザクションの特定の部分が該トランザクションを無効にすることなく変更可能である。
【0009】
近年、トランザクションをメディアデータのキャリアとして使用するために、適応性を慎重に利用する提案が行われた。データコンテンツをトランザクションのアンロックスクリプトに含むことができ、このトランザクションは、次にサイドチャネルを介してパーティ間で送信される。パーティのうちの1つは、次に、トランザクションを変更して(malleate)データを除去し、変更したバージョンをマイニングされるようにP2Pネットワークへ向けて送信する(一方、データが除去されなかった場合、トランザクションは、ブロックチェーンを膨大にし、トランザクションを受け入れるためにマイナーにより要求される報酬は、トランザクションのデータサイズと共に標準的にスケーリングするので、標準的にはより高いマイニング手数料も要求する)。
【0010】
支払いチャネルのようなサイドチャネルは、トランザクションがブロックチェーンに記録されるようP2Pネットワークへブロードキャストされる前に、トランザクション又はトランザクションに関連するデータをパーティ間で「オフチェーン」で交換可能にする。サイドチャネルは、P2Pオーバレイネットワークと別個であり、従って、サイドチャネルを介して送信される任意のトランザクションは、パーティのうちの1つがそれをネットワークに発行することを選択するまで、(未だ)ブロックチェーンに記録するためにネットワークを通じて伝播されない。標準的な支払いチャネルは、「ファンディング(funding、資金供給)トランザクション」を要求し、それにより両方のパーティが彼らの資金を一緒に効率的にエスクローする。ファンディングトランザクションは、チャネルを設定するためにブロードキャストされ、次に、対象となるサービスが提供されると、チャネルを閉じるために精算(settlement)トランザクションがブロードキャストされ、ファンディングトランザクションを消費する。
【0011】
また、「微細支払い(micropayment)チャネル」についての、つまり、少額賦払でBobに支払う目的で1つのパーティ(「Alice」)から別のパーティ(「Bob」)へトランザクションのシーケンスを送信する、幾つかの既存の提案もある。これは、ファンディングトランザクションを必要としない。少なくとも1つの既存のプロトコルは、映画のデータをパケットでストリーミングするためにサイドチャネルを使用することである。BobはAliceにデータパケットのシーケンスを送信子、各パケットに応答して、Aliceはそれぞれのトランザクションを返し、Bobは次にそれをネットワークへブロードキャストして、映画のそれぞれのパケットに対する支払いを取得する。
【0012】
サイドチャネルの別の別個の知られている使用は、トランザクションのクラウドファンディングを可能にすることである。資金を上げるパーティ、例えばBobは、彼自身又は彼を代表して動作する第三者へ移転されるべき所望の額を指定する少なくとも1つのアウトプットを有するテンプレートトランザクションを生成する。しかしながら、このトランザクションは、ターゲット額に達するのに未だ十分なインプットを含まない。従って、テンプレートトランザクションは、そのインプットにより指されるデジタルアセットの合計額がそのアウトプット内で指定される合計支払いより少ないので、最初は無効である。Bobは、テンプレートトランザクションをサーバ上でオフチェーンで発行することにより、テンプレートトランザクションを公衆に利用可能にする。公衆のメンバは、次に、インプットを追加することによりサーバにあるテンプレートトランザクションを適応(malleate)できる。これは、トランザクションが有効になるまで、ターゲット額に向けて次第に加算していく。ターゲットに達すると、Bobは、それをマイニングさせてブロックにするために、それをP2Pネットワークへ発行する。実際には、ターゲットは、マイニング手数料をカバーするために、Bobへの指定された支払いを僅かに超える必要がある。
【発明の概要】
【0013】
微細支払いチャネルを介してユーザにコンテンツを配信する既存の方式に伴う問題は、それがストリーミングする側と個々のストリーミングされる側との間の1対1関係だけを可能にすることである。単一のユーザがストリーミングされるべき各データパケットに対して支払う必要があり、該パケットは次にサイドチャネルを介して特定の個別ユーザへ返される。別のユーザが同じコンテンツをストリーミングしたい場合、彼らは、ストリーミングする側によりこの処理を複製する必要があり、それぞれのパケット毎に再度ストリーミングする側にそれぞれ支払うトランザクションの彼ら自身のストリームを送信する。多くのユーザに渡り、これは、ネットワークに発行され及びブロックチェーンに記録される必要のある膨大な数のトランザクションにより、P2Pネットワーク上のネットワーク輻輳を増大させ、またブロックチェーンを膨大にする影響がある(パケット当たりユーザ当たり1つのトランザクション)。
【0014】
代替として、原則的に、クラウドファンディング技術は、複数のパーティが、それぞれ共通トランザクションにインプットを追加することにより、集合的にコンテンツのピースに資金供給することを可能にするために使用できる。これは、P2Pネットワークに発行される必要のあるトランザクションの数が、ユーザ毎ではなく、コンテンツのパケット又はチャンク毎にのみスケーリングすることを意味し、従って、ネットワーク輻輳及びブロックチェーンの膨大化の問題を軽減する。しかしながら、既存のクラウドファンディングの概念に伴う問題は、それが、クラウドファンディングターゲットに達すると、ユーザにコンテンツをリリースする統合されたメカニズムを提供しないことである。
【0015】
本開示は、クラウドファンディングされたコンテンツをユーザにリリースするための、オンチェーンの統合されたメカニズムを提供する。
【0016】
本明細書に開示される一態様によれば、複数のユーザがメディアコンテンツのアイテムにアクセスすることを可能にする、コンピュータにより実施される方法が提供される。前記方法は、メディアコンテンツのベンダにより、
第1トランザクションを提供するステップを含み、前記第1トランザクションは、(i)前記ベンダに移転すべきデジタルアセットの額を指定する少なくとも第1アウトプットを含む1つ以上のアウトプットと、(ii)最初に合計で0個以上のインプットと、を含み、前記0個以上のインプットにより指定される任意のソーストランザクションの任意のアウトプットの中で指定されるデジタルアセットの合計インプット額は、前記1つ以上のアウトプットにより指定されるデジタルアセットの合計アウトプット額より少ない。前記第1トランザクションの前記第1アウトプットは、前記第1アウトプットをアンロックするアンロックスクリプトにより満たされるべき条件を指定するロックスクリプトを含む。前記方法は、サイドチャネルを介して、前記複数のユーザの各々からインプットを受信するステップと、各受信したインプットを前記第1トランザクションに追加するステップと、を含み、各受信したインプットは前記デジタルアセットの額を指定するそれぞれのソーストランザクションのアウトプットを指す。ターゲットに達し、それにより前記第1トランザクションのインプットにより指される合計インプット額が前記アウトプット額に等しくなる又はそれを超えると、前記方法は、前記第1トランザクション及び第2トランザクションを、ブロックチェーンに記録されるようブロックチェーンネットワークへ発行させるステップ、を含み、前記第2トランザクションは、前記第1トランザクションの前記第1アウトプットを指すインプットを含み、前記条件を満たすアンロックスクリプトを含む。前記ロックスクリプトにより指定される条件は、アンロックスクリプトが、前記ユーザがメディアコンテンツのアイテムにアクセスすることを可能にするメディア鍵を含むことを要求する。
【0017】
前記第1トランザクションは、少なくとも前記ターゲットに達するまで、サーバにホスティングされ、前記ユーザから受信されたインプットは、前記サーバにおちえ受信され、前記サーバに格納される前記第1トランザクションに追加される(ここで、サーバは、1つ以上の地理的サイトにある1つ以上の物理ユニットに実装される任意のサービングコンピュータ機器を表してよい)。
【0018】
前記ターゲットトランザクションを含む複数のトランザクションの各々について、前記ネットワークの少なくとも幾つかのノードは、前記トランザクションが有効であることを条件として、各トランザクションを伝播させるよう構成され、少なくとも幾つかのノードは、前記トランザクションが有効であることを条件として、該ノードにある前記ブロックチェーンのコピーに各トランザクションを記録するよう構成される。前記第1トランザクションの有効性は、前記合計インプット額が少なくとも前記合計アウトプット額に等しいことを条件とする。これは、ターゲットを満たすために十分なインプットがユーザ(例えば、Alice、Adam、Agnes、等)から集められるまで、トランザクションが有効になれないことを意味する。更に、前記第2トランザクションの有効性は、アンロックスクリプトが前記第1トランザクションのアウトプットをアンロックすることを条件とする。これは、前記方法を実行するパーティ(例えばBob)がアウトプット額を請求したい場合に、彼がブロックチェーンにアンロック鍵を発行しなければならないことを意味する。鍵が公衆の検査可能なブロックチェーンに不変的に発行されると、これは、ユーザが、アンロック鍵を検索し、それを使用してオフチェーンデータソースから対象となるデータアイテムを消費できるようにする。任意で、Bobは、ユーザのうちの1人、一部、又は全部に、彼らがアンロック鍵をブロックチェーンから検索するよう要求する代わりに、サイドチャネルを介して直接に、アンロック鍵も送信してよい。しかし、それがブロックチェーン上で公開されなければならないという事実は、Bobがアンロック鍵をユーザに別個に送信しない場合に、ユーザが、アンロック鍵を彼ら自身でブロックチェーンから検索できるようにする。従って、Bobはシステムを騙すことができない。
【0019】
実施形態では、前記方法は、複数のデータアイテムの各々について、前記方法を繰り返すステップを含んでよく、コンテンツの各アイテムは、メディアコンテンツの部分のシーケンスのうちの異なるそれぞれの1つを形成する。例えば、メディアコンテンツ片は、テキスト、オーディオ、及び/又はビデオコンテンツを含んでよい。それは、例えば、TV若しくは話し言葉の番組のエピソード、映画、番組のエピソードのシリーズを含んでよい。実施形態では、部分は、ユーザにリアルタイムでストリーミングされる所与のエピソード、又は独立した番組又は映画、例えばTV番組又は話し言葉の番組のパケットであってよい。代替として、部分は、例えばシリーズの異なるエピソードであってよい。
【0020】
本開示の別の態様によると、ユーザのうちの1人により実行される対応する方法が提供される。
【0021】
本願明細書に開示される更なる態様によると、方法を実行するためのプログラム、及び/又はベンダ又はユーザの方法を実行するようプログラミングされたコンピュータ機器が提供される。
【図面の簡単な説明】
【0022】
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ、以下の添付の図面を参照する。
【
図1】ブロックチェーンを実装するためのシステムの概略ブロック図である。
【
図2】ブロックチェーンに記録されるトランザクションのいくつかの例を概略的に示している。
【
図3】ブロックチェーンを実装するための別のシステムの概略ブロック図である。
【
図4】ブロックチェーンを介して複数のユーザにクラウドファンディングコンテンツをリリースするシステムの概略ブロック図である。
【
図6】クラウドファンディングし及び複数のユーザにメディアコンテンツのアイテムをリリースする方法を示すフローチャートである。
【発明を実施するための形態】
【0023】
<システム概要>
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットのような広域インターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバレイネットワーク106を形成するように配置された複数のノード104を含む。各ノード104は、異なるピアに属する異なるノード104を有するピアのコンピュータ装置を含む。各ノード104は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はフィールドプログラマブルゲートアレイ(FPGA)を含む処理装置を含む。各ノードはまた、メモリ、すなわち、1つ以上の非一時的コンピュータ読取可能媒体の形態のコンピュータ読取可能記憶装置を備える。メモリは、1つ以上のメモリ媒体、例えば、ハードディスクなどの磁気媒体、固体ドライブ(solid-state drive (SSD))、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。
【0024】
ブロックチェーン150は、データのブロック151のチェーンを指し、ブロックチェーン150のそれぞれのコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク160内の複数のノードのそれぞれにおいて維持される。チェーン内の各ブロック151は、1つ以上のトランザクション152を含み、この文脈ではトランザクションは、一種のデータ構造を参照する。データ構造の性質は、トランザクションモデル又はスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、典型的には、全体を通して、1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各アウトプットは、そのアウトプットが暗号的にロックされている(アンロックされ、それによって償還又は使用されるために、そのユーザ103の署名を必要とする)ユーザに属するデジタルアセットの数量を表す額(amount)を指定する。各インプットは、先行するトランザクション152のアウトプットを逆にポイントし、それによってトランザクションをリンクする。
【0025】
ノード104の少なくとも幾つかは、トランザクション152を転送し、それによって伝搬する転送ノード104Fの役割を引き受ける。ノード104の少なくともいくつかは、ブロック151をマイニングするマイナー104Mの役割を担う。ノード104の少なくとも幾つかは、記憶ノード104S(「フル(full-copy)」ノードとも呼ばれる)の役割を引き受け、各ノードは、それぞれのメモリに同じブロックチェーン150のそれぞれのコピーを格納する。各マイナーノード104Mは、マイニングされてブロック151にされることを待ってるトランザクション152のプール154も維持する。所与のノード104は、転送ノード104、マイナー104M、記憶ノード104S、又はこれらの2つ若しくは全部の任意の組み合わせであり得る。
【0026】
所与の現在のトランザクション152jにおいて、インプット(又はそのそれぞれ)は、トランザクションのシーケンスの中の先行トランザクション152iのアウトプットを参照するポインタを含み、このアウトプットが現在のトランザクション152jにおいて償還されるか又は「消費される(spent)」ことを指定する。一般に、先行するトランザクションは、プール154又は任意のブロック151内の任意のトランザクションであり得る。先行するトランザクション152iは、必ずしも、現在のトランザクション152jが生成された又はネットワーク106へ送信されたときに存在する必要はないが、先行するトランザクション152iは、現在のトランザクションが結う意向であるために存在し検証されている必要がある。従って、本願明細書で「先行する」は、ポインタによりリンクされた論理的シーケンスの中で先行するものを表し、必ずしも時系列の中での生成又は送信の時間を表さない。従って、それは、必ずしも、トランザクション152i,152jが順不同で生成され又は送信されることを排除しない(以下の親のない(orphan)トランザクションに関する議論を参照する)。先行するトランザクション152iは、等しく、祖先(antecedent)又は先行(predecessor)トランザクションと呼ばれ得る。
【0027】
現在のトランザクション152jのインプットは、先行するトランザクション152iのアウトプットがロックされているユーザ103aの署名も含む。また、現在のトランザクション152jのアウトプットは、新しいユーザ103bに暗号的にロックできる。従って、現在のトランザクション152jは、先行するトランザクション152iのインプットで定義された量を、現在のトランザクション152jのアウトプットで定義された新しいユーザ103bに移転することができる。幾つかの場合には、トランザクション152が複数のアウトプットを有し、複数のユーザ間でインプット量を分割してよい(変更を行うために、そのうちの1人がオリジナルユーザとなる)。場合によっては、トランザクションが複数のインプットを有し、1つ以上の先行するトランザクションの複数のアウトプットから量をまとめ、現在のトランザクションの1つ以上のアウトプットに再分配することもできる。
【0028】
上記は「アウトプットベースの」トランザクションプロトコルと呼ばれることがあり、時には「未使用のトランザクションアウトプット(unspent transaction output (UTXO))タイプのプロトコル」(アウトプットはUTXOと呼ばれる)とも呼ばれる。ユーザの合計残高は、ブロックチェーンに格納されている1つの数値で定義されるのではなく、代わりに、ユーザは、ブロックチェーン151内の多くの異なるトランザクション152に分散されている該ユーザのすべてのUTXOの値を照合するために、特別な「ウォレット」アプリケーション105を必要とする。
【0029】
アカウントベースのトランザクションモデルの一部として、別のタイプのトランザクションプロトコルを「アカウントベース」のプロトコルと呼ぶことがある。アカウントベースの場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションのUTXOに戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。すべてのアカウントの現在の状態は、ブロックチェーンとは別個のマイナーによって格納され、絶えず更新される。本開示は、アカウントに基づくのではなくアウトプットに基づくモデルに関する。
【0030】
どちらのタイプのトランザクションプロトコルでも、ユーザ103が新しいトランザクション152jを実行したい場合、ユーザは、自分のコンピュータ端末102からP2Pネットワーク106のノードの1つ104(現在は、通常、サーバ又はデータセンタであるが、原則として、他のユーザ端末でもよい)に新しいトランザクションを送信する。このノード104は、各ノード104に適用されるノードプロトコルに従って、トランザクションが有効であるかどうかをチェックする。ノードプロトコルの詳細は、問題のブロックチェーン150で使用されているトランザクションプロトコルのタイプに対応し、全体のトランザクションモデルを一緒に形成する。ノードプロトコルは、典型的には、ノード104に、新しいトランザクション152j内の暗号署名が、トランザクション152の順序付けされたシーケンスの中の前のトランザクション152iに依存する、期待される署名と一致することをチェックすることを要求する。アウトプットベースの場合、これは、新しいトランザクション152jのインプットに含まれるユーザの暗号署名が、新しいトランザクションが消費する先行するトランザクション152jのアウトプットに定義された条件と一致することをチェックすることを含んでよく、この条件は、典型的には、新しいトランザクション152jのインプット内の暗号署名が、新しいトランザクションのインプットがポイントする前のトランザクション152iのアウトプットをアンロックすることを少なくともチェックすることを含む。いくつかのトランザクションプロトコルでは、条件は、少なくとも部分的に、インプット及び/又はアウトプットに含まれるカスタムスクリプトによって定義されてもよい。あるいは、単にノードプロトコルだけで固定することもできるし、あるいは、これらの組み合わせによることもある。いずれにせよ、新しいトランザクション152jが有効であれば、現在のノードは新しいトランザクションをP2Pネットワーク106内のノード104の1つ以上の他のノードに転送する。これらのノード104の少なくともいくつかは、同じノードプロトコルに従って同じテストを適用し、新しいトランザクション152jを1つ以上のさらなるノード104に転送するなど、転送ノード104Fとしても機能する。このようにして、新しいトランザクションは、ノード104のネットワーク全体に伝搬される。
【0031】
アウトプットベースのモデルでは、与えられたアウトプット(例えば、UTXO)が消費されるかどうかの定義は、ノードプロトコルに従って別の今後の(onward)トランザクション152jのインプットによって既に有効に償還されているかどうかである。トランザクションが有効であるための別の条件は、それが消費又は償還を試みる先行するトランザクション152iのアウトプットが、別の有効なトランザクションによって未だ消費/償還されていないことである。ここでも、有効でない場合、トランザクション152jは、ブロックチェーンに伝搬又は記録されない。これは、支払者が同じトランザクションのアウトプットを複数回消費しようとする二重支出を防ぐ。
【0032】
検証に加えて、ノード104Mのうちの少なくともいくつかは、「proof of work」に支えられているマイニングと呼ばれるプロセスで、トランザクションのブロックを最初に作成するために競合する。マイニングノード104Mでは、まだブロックに現れていない有効なトランザクションのプールに新しいトランザクションが追加される。そして、マイナーは、暗号パズルを解決しようと試みることにより、トランザクションのプール154からトランザクション152の新しい有効なブロック151を組み立てるために競争する。これは、典型的には、ノンスがトランザクションのプール154と連結され、ハッシュされるときに、ハッシュのアウトプットが所定の条件を満たすような「ノンス」値を探すことを含む。例えば、所定の条件は、ハッシュのアウトプットが、所定の数の先行ゼロを有することであってもよい。ハッシュ関数の特性は、インプットに関して予測不可能なアウトプットを持つことである。従って、この探索は、ブルートフォースによってのみ実行することができ、従って、パズルを解決しようとしている各ノード104Mにおいて、相当量の処理リソースを消費する。
【0033】
パズルを解く最初のマイナーノード104Mは、これをネットワーク106に通知し、その解を証明として提供する。この解は、ネットワーク内の他のノード104によって簡単にチェックすることができる(ハッシュが対する解が与えられれば、ハッシュのアウトプットが条件を満たすことを確認することは簡単である)。勝者がパズルを解いたトランザクションのプール154は、各ノードで勝者が発表した解をチェックしたことに基づいて、記憶ノード104Sとして機能するノード104のうちの少なくともいくつかによってブロックチェーン150の新しいブロック151として記録される。また、新しいブロック151nにはブロックポインタ155が割り当てられ、チェーン内で前に作成されたブロック151n-1を指すようになっている。proof-of-workは、新しいブロックを151作成するのに多大な労力を要し、二重の支出を含むブロックは他のノード104によって拒否される可能性が高く、従ってマイニングノード104Mが二重支払いを彼らのブロックに含まないようにするインセンティブが働くので、二重の支出のリスクを減じるのを助ける。一旦生成されると、ブロック151は、同じプロトコルに従ってP2Pネットワーク106内の各格納ノード104Siで認識され、維持されるため、変更することはできない。また、ブロックポインタ155は、ブロック151に順序を課す。トランザクション152は、P2Pネットワーク106内の各記憶ノード104Sで順序付けられたブロックに記録されるので、これはトランザクションの不変の公開台帳を提供する。
【0034】
パズルを解決するために常に競争している異なるマイナー104Mは、いつ解を探し始めたかによって、いつでもマイニングされていないトランザクションプール154の異なるスナップショットに基づいてパズルを解いているかもしれないことに留意する。パズルを解く者は誰でも、最初に次の新しいブロック151nに含まれるトランザクション152を定義し、現在のマイニングされていないトランザクションのプール154が更新される。そして、マイナー104Mは、新たに定義された未解決のプール154からブロックを作り出すために、競争を続ける。また、生じ得る「分岐(フォーク、fork)」を解決するためのプロトコルも存在する。これは、2人のマイナー104Mが互いに非常に短い時間内にパズルを解決し、ブロックチェーンの矛盾したビューが伝搬する場合である。要するに、分岐の枝が伸びるときは常に、最長のものが最終的なブロックチェーン150になる。
【0035】
ほとんどのブロックチェーンでは、勝ったマイナー104Mは、何も無いものから新しい量のデジタルアセットを生み出す特別な種類の新しいトランザクションによって自動的に報酬を受けている(通常のトランザクションでは、あるユーザから別のユーザにデジタルアセットの量を移転する)。したがって、勝ったノードは、ある量のデジタルアセットを「マイニング」したと言われる。この特殊なタイプのトランザクションは「生成(generation)」トランザクションと呼ばれることもある。それは自動的に新しいブロック151nの一部を形成する。この報酬は、マイナー104Mがproof-of-work競争に参加するインセンティブを与える。多くの場合、通常の(非生成)トランザクションは、そのトランザクションが含まれたブロック151nを生成した勝ったマイナー104Mにさらに報酬を与えるために、追加のトランザクション手数料をそのアウトプットの1つにおいて指定する。
【0036】
マイニングに含まれる計算リソースのために、典型的には、少なくともマイナーノード104Mの各々は、1つ以上の物理的サーバユニットを含むサーバ、又はデータセンタ全体の形態をとる。各転送ノード104M及び/又は記憶ノード104Sは、サーバ又はデータセンタの形態をとることもできる。しかしながら、原則として、任意の所与のノード104は、ユーザ端末又は互いにネットワーク接続されたユーザ端末のグループを含むことができる。
【0037】
各ノード104のメモリは、それぞれの1つ以上の役割を実行し、ノードプロトコルに従ってトランザクション152を処理するために、ノード104の処理装置上で動作するように構成されたソフトウェアを記憶する。ノード104に属するいずれの動作も、それぞれのコンピュータ装置の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。また、本明細書で使用される「ブロックチェーン」という用語は、一般的な技術の種類を指す一般的な用語であり、任意の特定の専有のブロックチェーン、プロトコル又はサービスに限定されない。
【0038】
また、ネットワーク101には、消費者ユーザの役割を果たす複数のパーティ103の各々のコンピュータ装置102も接続されている。これらは、トランザクションにおける支払人及び被支払人の役割を果たすが、他のパーティの代わりにトランザクションをマイニングし又は伝搬することに必ずしも参加しない。それらは必ずしもマイニングプロトコルを実行するわけではない。2つのパーティ103及びそれぞれの機器102は、説明のために示されており、第1パーティ103a及びそのそれぞれのコンピュータ機器102a、ならびに第2パーティ103b及びそのそれぞれのコンピュータ機器102bである。より多くのこのようなパーティ103及びそれらのそれぞれのコンピュータ機器102がシステムに存在し、参加することができるが、便宜上、それらは図示されていないことが理解されよう。各パーティ103は、個人又は組織であってもよい。純粋に例示として、第1パーティ103aは、本明細書においてアリスと称され、第2パーティ103bは、ボブと称されるが、これは限定的なものではなく、本明細書においてアリス又はボブという言及は、それぞれ「第1パーティ」及び「第2パーティ」と置き換えることができることは理解されるであろう。
【0039】
各パーティ103のコンピュータ機器102は、1つ以上のプロセッサ、例えば1つ以上のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はFPGAを備えるそれぞれの処理装置を備える。各パーティ103のコンピュータ機器102は、さらに、メモリ、すなわち、非一時的コンピュータ読取可能媒体又は媒体の形態のコンピュータ読取可能記憶装置を備える。このメモリは、例えば、ハードディスクなどの磁気媒体、SSD、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。各パーティ103のコンピュータ機器102上のメモリは、処理装置上で動作するように配置された少なくとも1つのクライアントアプリケーション105のそれぞれのインスタンスを含むソフトウェアを記憶する。所与のノード104に属するいずれの動作も、それぞれのコンピュータ機器102の処理装置上で実行されるソフトウェアを使用することにより実行され得ることが理解されよう。各パーティ103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えばデスクトップ又はラップトップコンピュータ、タブレット、スマートフォン、又はスマートウォッチのようなウェアラブルデバイスを備えている。所与のパーティ103のコンピュータ装置102は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースのような、1つ以上の他のネットワーク接続されたリソースを含んでもよい。
【0040】
クライアントアプリケーション又はソフトウェア105は、最初に、1つ以上の適切なコンピュータ読取可能な記憶媒体、例えばサーバからダウンロードされたもの、又はリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスク又はテープ、光ディスク、例えばCD又はDVD ROM、又はリムーバブル光学ドライブなどのリムーバブル記憶装置上で、任意の所与のパーティ103のコンピュータ機器102に提供され得る。
【0041】
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには主に2つの機能を有する。これらのうちの1つは、それぞれのユーザパーティ103が、ノード104のネットワーク全体にわたって伝搬され、それによってブロックチェーン150に含まれるトランザクション152を作成し、署名し、送信することを可能にすることである。もう1つは、現在所有しているデジタルアセットの量をそれぞれのパーティに報告することである。アウトプットベースのシステムでは、この第2の機能は、当該パーティに属するブロックチェーン150全体に散在する様々なトランザクション152のアウトプットの中で定義される量を照合することを含む。
【0042】
各コンピュータ機器102上のクライアントアプリケーション105のインスタンスは、P2Pネットワーク106の転送ノード104Fの少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能は、トランザクション152をネットワーク106に送信することができる。クライアント105は、また、記憶ノード104のうちの1つ、一部、又は全部にコンタクトして、それぞれのパーティ103が受領者である任意のトランザクションについてブロックチェーン150に問い合わせることができる(又は、実施形態では、ブロックチェーン150は、部分的にその公開視認性を通じてトランザクションの信頼を提供する公開的設備であるため、実際には、ブロックチェーン150内の他のパーティのトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルに従ってトランザクション152を形成し、送信するように構成される。各ノード104は、ノードプロトコルに従ってトランザクション152を検証するように構成されたソフトウェアを実行し、転送ノード104Fの場合は、ネットワーク106全体にトランザクション152を伝搬させるためにトランザクション152を転送する。トランザクションプロトコルとノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルと共に所与のトランザクションモデルを実装する。同じトランザクションプロトコルが、ブロックチェーン150内のすべてのトランザクション152に使用される(ただし、トランザクションプロトコルは、トランザクションの異なるサブタイプを許可することができる)。同じノードプロトコルは、ネットワーク106内のすべてのノード104によって使用される(ただし、多くのノードは、そのサブタイプに対して定義されたルールに従って異なるトランザクションのサブタイプを異なるように処理し、また、異なるノードは異なる役割を引き受け、従って、プロトコルの異なる対応する側面を実装することができる)。
【0043】
上述のように、ブロックチェーン150は、ブロック151のチェーンを含み、各ブロック151は、前述のように、proof-of-workプロセスによって作成された1つ以上のトランザクション152のセットを含む。各ブロック151は、また、ブロック151への逐次的順序を定義するように、チェーン内の先に生成されたブロック151を遡ってポイントするブロックポインタ155を含む。ブロックチェーン150はまた、proof-of-workプロセスによって新しいブロックに含まれることを待つ有効なトランザクション154のプールを含む。各トランザクション152は、トランザクションのシーケンスに順序を定義するために、前のトランザクションへのポインタを含む(注:トランザクション152のシーケンスは、分岐することが許される)。ブロック151のチェーンは、チェーンの最初のブロックであったジェネシスブロック(genesis block (Gb))153にまで戻る。チェーン150の初期に1つ以上のオリジナルトランザクション152は、先行するトランザクションではなくジェネシスブロック153を指し示した。
【0044】
所与のパーティ103、例えばAliceがブロックチェーン150に含まれる新たなトランザクション152jを送信したいと望む場合、彼女は関連するトランザクションプロトコルに従って(彼女のクライアントアプリケーション105のウォレット機能を使用して)新たなトランザクションを策定する(formulate)。次に、クライアントアプリケーション105からトランザクション152を、彼女が接続されている1つ以上の転送ノード104Fの1つに送信する。例えば、これは、Aliceのコンピュータ102に最も近いか又は最も良好に接続されている転送ノード104Fであってもよい。任意の所与のノード104が新しいトランザクション152jを受信すると、ノードプロトコル及びそのそれぞれの役割に従って、それを処理する。これは、最初に、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たしているかどうかをチェックすることを含み、その例については、簡単に詳述する。いくつかのトランザクションプロトコルでは、検証のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であってよい。あるいは、条件は単にノードプロトコルの組み込み機能であってもよく、あるいはスクリプトとノードプロトコルの組み合わせによって定義されてもよい。
【0045】
新たに受信されたトランザクション152jが、有効であると見なされるテストに合格したという条件で(すなわち、「有効である」という条件で)、トランザクション152jを受信した任意の記憶ノード104Sは、そのノード104Sに維持されているブロックチェーン150のコピー内のプール154に、新たに有効とされたトランザクション152を追加する。さらに、トランザクション152jを受信する任意の転送ノード104Fは、検証済みトランザクション152をP2Pネットワーク106内の1つ以上の他のノード104に伝搬する。各転送ノード104Fは同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、P2Pネットワーク106全体に間もなく伝搬されることを意味する。
【0046】
ひとたび1つ以上の記憶ノード104で維持されるブロックチェーン150のコピー内のプール154に入ると、マイナーノード104Mは、新しいトランザクション152を含むプール154の最新バージョンのproof-of-workパズルを解決するために競争を開始する(他のマイナー104Mは、依然として、プール154の古いビューに基づいてパズルを解決しようとしているが、そこに到達した者は誰でも、最初に、次の新しいブロック151が終了し、新しいプール154が開始する場所を定義し、最終的には、誰かが、Aliceのトランザクション152jを含むプール154の一部のパズルを解決する)。一旦、新しいトランザクション152jを含むプール154についてproof-of-workが行われると、ブロックチェーン150内のブロック151の1つの一部となる。各トランザクション152は、以前のトランザクションへのポインタを含むので、トランザクションの順序もまた、不変的に記録される。
【0047】
図2は、トランザクションプロトコルの例を示している。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と略す)は、ブロックチェーン150(各ブロック151は1つ以上のトランザクション152を含む)の基本的なデータ構造である。以下は、アウトプットベース又は「UTXO」ベースのプロトコルを参照して説明される。しかし、これは、全ての可能な実施形態に限定されるものではない。
【0048】
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つ以上のインプット202及び1つ以上のアウトプット203を含むデータ構造を含む。各アウトプット203は、未使用トランザクションアウトプット(UTXO)を含んでもよく、これは、別の新しいトランザクションのインプット202のソースとして使用することができる(UTXOがまだ償還されていない場合)。UTXOは、デジタルアセット(値のストア)の量を指定する。それは、情報の中でも特にその元となったトランザクションのトランザクションIDを含む。トランザクションデータ構造はまた、ヘッダ201も含んでよく、ヘッダ201は、インプットフィールド202及びアウトプットフィールド203のサイズの指示子を含んでもよいヘッダ201を含んでよい。ヘッダ201は、トランザクションのIDも含んでもよい。実施形態において、トランザクションIDは、トランザクションデータのハッシュ(トランザクションID自体を除く)であり、マイナー104Mに提出された未処理トランザクション152のヘッダ201に格納される。
【0049】
例えばAlice103aは、問題のデジタルアセットの量をBob103bに移転するトランザクション152jを作成したいと考えているとする。
図2において、Aliceの新しいトランザクション152jは「Tx
1」とラベル付けされている。これは、Aliceへのロックされているデジタルアセットの量を、シーケンス内の先行するトランザクション152iのアウトプット203に取り入れ、その少なくとも一部をBobに移転する。先行するトランザクション152iは、
図2において「Tx
0」とラベル付けされている。Tx0とTx1は、単なる任意のラベルである。これらは、必ずしも、Tx0がブロックチェーン151の最初のトランザクションであること、又は、Tx1がプール154の直ぐ次のトランザクションであることを意味しない。Tx
1は、まだAliceへのロックされた未使用アウトプット203を有する任意の先行する(つまり祖先)トランザクションのいずれかを指し示すことができる。
【0050】
先行するトランザクションTx0は、Aliceがその新しいトランザクションTx1を作成するとき、又は少なくとも彼女がそれをネットワーク106に送信するときまでに、既に検証され、ブロックチェーン150に含まれていてもよい。それは、その時点で既にブロック151のうちの1つに含まれていてもよく、あるいは、プール154内でまだ待機していてもよく、その場合、新しいブロック151にすぐに含まれることになる。あるいは、Tx0及びTx1が生成されネットワーク102に送信されることができ、あるいは、ノードプロトコルが「孤児(orphan)」トランザクションのバッファリングを許容する場合にはTx1の後にTx0が送信されることもできる。ここでトランザクションのシーケンスの文脈で使用される「先行する」及び「後の」という用語は、トランザクション内で指定されたトランザクションポインタ(どのトランザクションがどの他のトランザクションを指すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、「先行者」及び「相続者」又は「祖先」及び「子孫」、「親」及び「子」、等により、等しく置き換えられ得る。これは、必ずしも、それらが作成され、ネットワーク106に送られ、又は任意の所与のノード104に到達する順序を意味しない。それにもかかわらず、先行するトランザクション(祖先トランザクション又は「親」)を指す後続のトランザクション(子孫トランザクション又は「子」)は、親トランザクションが検証されない限り、検証されない。親の前にノード104に到着した子は孤児とみなされる。それは、ノードプロトコル及び/又はマイナーの行動に応じて、親を待つために特定の時間、破棄又はバッファリングされることがある。
【0051】
先行するトランザクションTx0の1つ以上のアウトプット203のうちの1つは、本明細書でUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタルアセットの量を指定する値と、後続のトランザクションが検証されるために、従ってUTXOが正常に償還されるために、後続のトランザクションのインプット202の中のアンロックスクリプトによって満たされなければならない条件を定義するロックスクリプトとを含む。典型的には、ロックスクリプトは、特定のパーティ(それが含まれているトランザクションの受益者)に量をロックする。すなわち、ロックスクリプトは、標準的に以下のようなアンロック条件を定義する:後続のトランザクションのインプット内のアンロックスクリプトは、先行するトランザクションがロックされたパーティの暗号署名を含む。
【0052】
ロックスクリプト(別名scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有の言語で書かれたコードの一部である。そのような言語の特定の例は、「スクリプト」(Script,capital S)と呼ばれる。ロックスクリプトは、トランザクションアウトプット203を消費するために必要な情報、例えば、Aliceの署名の必要条件を指定する。トランザクションのアウトプットには、アンロックスクリプトが現れる。アンロックスクリプト(別名:scriptSig)は、ロックスクリプトの基準を満たすために必要な情報を提供するドメイン固有の言語で書かれたコードの一部である。例えば、Bobの署名を含んでもよい。アンロックスクリプトは、トランザクションのインプット202に現れる。
【0053】
図示の例では、Tx0のアウトプット203のUTXO0は、ロックスクリプト[ChecksigPA]を含み、これは、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後続のトランザクションが有効であるために)、Aliceの署名SigPAを必要とする。[ChecksigPA]は、Aliceの公開鍵と秘密鍵のペアからの公開鍵PAを含む。Tx1のインプット202は、Tx1を指すポインタ(例えば、そのトランザクションID、実施形態ではトランザクションTx0全体のハッシュであるTxID0による)を含む。Tx1のインプット202は、Tx0の任意の他の可能なアウトプットの中でそれを識別するために、Tx0内のUTXO0を識別するインデックスを含む。Tx1のインプット202は、さらに、Aliceが鍵ペアからのAliceの秘密鍵をデータの所定の部分(暗号において「メッセージ」と呼ばれることもある)に適用することによって作成された、Aliceの暗号署名を含むアンロックスクリプト<SigPA>を含む。有効な署名を提供するためにAliceが署名する必要があるデータ(又は「メッセージ」)は、ロックスクリプトにより、又はノードプロトコルにより、又はこれらの組み合わせによって定義され得る。
【0054】
新しいトランザクションTx1がノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトとアンロックスクリプトを一緒に実行して、アンロックスクリプトがロックスクリプトで定義されている条件(この条件は1つ以上の基準を含むことができる)を満たしているかどうかをチェックすることを含む。実施形態では、これは、2つのスクリプトの連結を含む。
<SigPA> <PA> || [Checksig PA]
ここで、「||」は連結を表し、「<...>」はスタックにデータを配置することを意味し、「[...]」はアンロックスクリプトに含まれる機能である(本例では、スタックベースの言語)。同等に、スクリプトは。、スクリプトを連結するのではなく共通のスタックにより1つずつ実行されてよい。いずれの方法でも、一緒に実行する場合、スクリプトは、Tx0のアウトプット内のロックスクリプトに含まれるAliceの公開鍵PAを使用して、Tx1のインプット内のロックスクリプトが、データの期待部分に署名するAliceの署名を含むことを認証する。また、データの期待部分(「メッセージ」)も、この認証を実行するためにTx0に含まれる必要がある。実施形態において、署名されたデータは、Tx0の全体を含む(従って、別個の要素は、データの署名された部分がすでに本質的に存在するので、データの署名された部分の指定にクリアに含まれる必要がある)。
【0055】
公開-秘密暗号法による認証の詳細は、当業者には周知であろう。基本的に、Aliceが彼女の秘密鍵によりメッセージを暗号化することによってメッセージに署名した場合、Aliceの公開鍵とそのメッセージが明らか(暗号化されていないメッセージ)ならば、ノード104のような別のエンティティは、そのメッセージの暗号化されたバージョンがAliceによって署名されていなければならないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、署名としてメッセージのクリアなバージョンにこれをタグ付けすることによって、公開鍵の所有者が署名を認証することを可能にする。従って、実施形態では、特定のデータ片又はトランザクションの部分等に署名するという言及は、データ片又はトランザクションの部分のハッシュに署名することを意味し得る。
【0056】
Tx1内のアンロックスクリプトが、Tx0のロックスクリプトで指定された1つ以上の条件を満たす場合(示される例では、Aliceの署名がTx1内で提供され、認証されている場合)、ノード104は、Tx1が有効であるとみなす。それが記憶ノード104Sである場合、これは、proof-of-workを待つトランザクションのプール154にそれを追加することを意味する。それが転送ノード104Fである場合、それはトランザクションTx1をネットワーク106内の1つ以上の他のノード104に転送し、それによって、それがネットワーク全体に伝搬されることになる。一旦、Tx1が検証され、ブロックチェーン150に含まれると、これは、Tx0からのUTXO0を消費したものとして定義する。Tx1は、未使用トランザクションアウトプット203を使用する場合にのみ有効であることに留意されたい。別のトランザクション152によってすでに消費されたアウトプットを消費しようとする場合、Tx1は、たとえ他のすべての条件が満たされていても無効となる。従って、ノード104は、先行するトランザクションTx0において参照されたUTXOが既に使用されているかどうか(既に別の有効なトランザクションへの有効なインプットを形成しているかどうか)もチェックする必要がある。これが、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である理由の1つである。実際には、所与のノード104は、トランザクション152が消費されたUTXO203をマークする別個のデータベースを維持することができるが、最終的には、UTXOが消費されたかどうかを定義するのは、ブロックチェーン150内の別の有効なトランザクションへの有効なインプットを既に形成しているかどうかである。
【0057】
UTXOベースのトランザクションモデルでは、所定のUTXOを全体として使用する必要があることに注意する。UTXOで定義されている量のうち、別の分量が消費されている一方で、分量を「残しておく」ことはできない。ただし、UTXOからの量は、次のトランザクションの複数のアウトプットに分割できる。例えば、Tx0のUTXO0で定義された量は、Tx1の複数のUTXOに分割できる。したがって、AliceがBobにUTXO0で定義された量のすべてを与えることを望まない場合、彼女は残りの量を使って、Tx1の第2のアウトプットの中で自分自身にお釣りを与えるか、又は別のパーティに支払うことができる。
【0058】
実際には、Aliceは通常、勝ったマイナーのための手数料も含める必要がある。なぜなら、今日では、生成トランザクションの報酬だけでは、マイニングを動機づけるには通常十分ではないからである。Aliceがマイナーのための手数料を含まない場合、Tx0はマイナーのノード104Mによって拒否される可能性が高く、したがって、技術的には有効であるが、それは依然として伝搬されず、ブロックチェーン150に含まれない(マイナーのプロトコルは、マイナーが望まない場合には、マイナー104Mにトランザクション152を受け入れるよう強制しない)。一部のプロトコルでは、マイニング料金は、独自の別個のアウトプット203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、インプット202によって指される総量と、所与のトランザクション152のアウトプット203の中で指定される総量との間の差は、勝ったマイナー104に自動的に与えられる。例えば、UTXO0へのポインタがTx1への唯一のインプットであり、Tx1は1つのアウトプットUTXO1しか持っていないとする。UTXO0で指定されたデジタルアセットの量がUTXO1で指定された量より多い場合、その差は自動的に勝ったマイナー104Mへ行く。しかし、代替的又は追加的に、必ずしも、トランザクション152のUTXO203のうちの独自のものにおいて、マイナー手数料を明示的に指定できることは除外されない。
【0059】
所与のトランザクション152の全部のアウトプット203の中で指定された総量が全部のそのインプット202により指される総量より大きい場合、これは、殆どのトランザクションモデルにおいて無効の別の基礎であることに留意する。従って、このようなトランザクションは、伝搬されず、マイニングされてブロック151にされることもない。
【0060】
Alice及びBobのデジタルアセットは、ブロックチェーン150内の任意のトランザクション152の中で彼らへのロックされた未使用UTXOで構成されている。従って、典型的には、所与のパーティ103のアセットは、ブロックチェーン150を通して、様々なトランザクション152のUTXO全体に分散される。ブロックチェーン150内のどこにも、所与のパーティ103の総残高を定義する1つの数値は記憶されていない。各パーティへのロックされた、別の将来の(onward)トランザクションにまだ消費されていないすべての様々なUTXOの値をまとめることは、クライアントアプリケーション105におけるウォレット機能の役割である。これは、記憶ノード104Sのいずれかに記憶されたブロックチェーン150のコピーを、例えば、各パーティのコンピュータ機器02に最も近いか、又は最も良好に接続されている記憶ノード104Sに問い合わせることによって行うことができる。
【0061】
スクリプトコードは、概略的に表現されることが多い(すなわち、正確な言語ではない)ことに注意する。例えば、[Checksig PA]を[ChecksigPA]=OP_DUPOP_HASH160<H(PA)>OP_EQUALVERIFYOP_CHECKSIGを意味するように記述し得る。「OP_....」は、スクリプト言語の特定のオペコードを表す。OP_CHECKSIG(「Checksig」とも呼ばれる)は、2つのインプット(署名と公開鍵)を取り込み、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm (ECDSA))を使用して署名の妥当性を検証するスクリプトオペコードである。ランタイムでは、署名(「si」')の発生はすべてスクリプトから削除されるが、ハッシュパズルなどの追加要件は、「sig」インプットによって検証されるトランザクションに残る。別の例として、OP_RETURNは、トランザクション内にメタデータを格納することができ、それによってメタデータをブロックチェーン150に不変に記録することができるトランザクションの使用不可能アウトプットを生成するためのスクリプト言語のオペコードである。例えば、メタデータは、ブロックチェーンに格納することが望ましいドキュメントを含むことができる。
【0062】
署名PAは、デジタル署名である。実施形態において、これは楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータに署名する。実施形態では、所与のトランザクションについて、署名はトランザクションインプットの一部、及びトランザクションアウトプットの全部又は一部に署名する。署名するアウトプットの特定の部分はSIGHASHフラグに依存する。SIGHASHフラグは、署名の最後に含まれる4バイトのコードであり、どのアウトプットが署名されるかを選択する(従って、署名の時点で固定される)。
【0063】
ロックスクリプトは、それぞれのトランザクションがロックされているパーティの公開鍵を含んでいることを表す「scriptPubKey」と呼ばれることがある。アンロックスクリプトは、対応する署名を提供することを表す「scriptSig」と呼ばれることがある。しかし、より一般的には、UTXOが償還される条件が署名を認証することを含むことは、ブロックチェーン150のすべてのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語は、1つ以上の条件を定義するために使用され得る。したがって、より一般的な用語「ロックスクリプト」及び「アンロックスクリプト」が好ましい。
【0064】
図3は、ブロックチェーン150を実装するためのシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、
図1に関連して説明したものと実質的に同じである。Alice及びBobのコンピュータ機器102a、102bの各々に存在するクライアントアプリケーションは、それぞれ、追加通信機能を含む。つまり、それは、Alice103aが、(いずれかのパーティ又は第3者の勧誘で)Bob103bとの別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークと別個にデータの交換を可能にする。このような通信は、時に「オフチェーン」と呼ばれる。例えば、これは、パーティのうちの一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションがネットワークP2P106に(まだ)発行されることなく、又はチェーン150乗でそのようにすることなく、AliceとBobとの間でトランザクション152を交換するために使用されてよい。このようなサイドチャネル301は、時に、「支払いチャネル」と呼ばれる。
【0065】
サイドチャネル301は、P2Pオーバレイネットワーク106と同じパケット交換ネットワーク101を介して確立されてもよい。代替又は追加で、サイドチャネル301は、モバイルセルラネットワーク、又はローカル無線ネットワークのようなローカルエリアネットワーク、又はAliceとBobの装置102a、102bの間の直接有線若しくは無線リンクのような異なるネットワークを介して確立されてよい。一般に、本願明細書のどこかで言及されるサイドチャネル301は、「オフチェーン」で、つまりP2Pオーバレイネットワーク106と別個にデータを交換するための1つ以上のネットワーキング技術又は通信媒体を介する任意の1つ以上のリンクを含んでよい。1つより多くのリンクが使用されるとき、全体としてのオフチェーンリンクのバンドル又は集合がサイドチャネル301と呼ばれてよい。従って、Alice及びBobが特定の情報又はデータ片等をサイドチャネル301を介して交換すると言われる場合、これは、必ずしも全部のこれらのデータ片が正確に同じリンクまたは同じ種類のネットワークを介して送信される必要があることを意味しないことに留意する。
【0066】
<例示的な定義>
以下は、幾つかの実装において採用得る幾つかの例示的な定義である。これらは、全部の可能な実装を限定するものではなく、後述する例示的な使用例の幾つかの可能な実装において利用され得る特定の可能な実装の理解を助けるためだけに提供されることに留意する。
【0067】
定義1:トランザクション。トランザクションは、インプットとアウトプットとを含むメッセージである。それは、プロトコルバージョン番号及び/又はロックタイム(locktime)も含んでよい。プロトコルバージョンは、トランザクションプロトコルのバージョンを示す。ロックタイムは、後に個別に説明される。
【0068】
定義2:インプットトランザクションのインプットは、順序付きリストを形成する。リスト内の各エントリは、アウトプット(未使用トランザクションアウトプットの識別子)、及びscriptSig(アンロックスクリプト)を含む。それは、シーケンス番号も含んでよい。
【0069】
定義3:アウトプット:トランザクションのアウトプットは、順序付きリストを形成する。リスト内の各エントリは、値(その基本単位におけるデジタルアセットの量)、及びscriptPubKey(ロックスクリプト)を含む。
【0070】
定義4:アウトポイント。アウトポイントは、トランザクションID TxID、及びインデックス番号iによりユニークに定義される。トランザクションアウトプットTxIDのアウトプットの中のi番目のエントリを表し、未使用トランザクションアウトプット(UTXO)のユニークな位置を与える。用語「未使用(unspent)」は、本願明細書で、アウトポイントが任意の有効な後続のトランザクションの中に現れていないことを意味する。
【0071】
定義5:scriptSig。これは、所与のアウトポイントに対応するUTXOをアンロックする又は使用するために要求される情報である。標準的なトランザクションでは、この情報は通常ECDSA署名である。従って、スクリプトは「scriptSig」と呼ばれる。しかしながら、アウトポイントをアンロックするために必要な情報は、UTXOのロック条件を満たす任意のデータであり得る。
【0072】
定義6:scriptPubKey。これは、特定のUTXOに関連付けられた資金をロックするスクリプトである。scriptSigがscriptPubKeyに付加され、結合されたスクリプトの実行が真を与える場合に及びその場合にのみ、資金がアンロックされ、使用できる。そうでない場合には、トランザクションは無効であり、拒否される。これは、通常、標準的なトランザクションではECDSA公開鍵のハッシュ値を含むので、「scriptPubKey」と呼ばれる。
【0073】
次の定義では、インプット又はアウトプットへの署名が参照され、これは、scriptSig部分(定義2を参照)を除く1つ又は複数のインプットへの署名を意味する。
【0074】
定義7:SIGHASHフラグ。ECDSA署名を提供するとき、以下のSIGHASHフラグのうちの1つも付加する必要がある。
【表1】
【0075】
適応性を機能として議論するとき、トランザクション内で、ECDSA署名により署名されていない情報を探す。署名されるべきメッセージから除外され得るインプット及びアウトプットとは別に、scriptSigのコンテンツは常に除外される。これは、scriptSigが署名のプレースホルダーであるよう設計されるからである。
【0076】
定義8:ブロックチェーンタイムロック。一般に、トランザクション内で使用可能な2つのタイプのタイムロック:絶対的タイムロック及び相対的タイムロックがある。絶対的タイムロックは、その後に何かが「有効」であると考えられる特定の時点を指定する。一方で、相対的タイムロックは、何かが有効であると考えられる前に経過しなければならない期間を指定する。両方の場合に、ブロックチェーンタイムロックを使用するときの時間の代わりとして、ブロック高(マイニングされたブロックの数)又は経過時間(例えば、UNIX(登録商標)時間)を使用できる。
【0077】
ブロックチェーンタイムロックの別の特性は、それらが表れる場所であり、それらが適用されるトランザクションの態様である。ここでも、この意味でタイムロックの2つの分類:トランザクション全体をロックするトランザクションレベル、及び特定のアウトプットをロックするスクリプトレベルがある。これらのタイムロックは両方とも、絶対的タイムロック又は相対的タイムロックのいずれかを実装するために使用できる。以下の表は、これらの特性に基づき生成可能なタイムロックを実装する4つの可能なメカニズムを纏めたものである。
【表2】
【0078】
定義9:nLocktime。ロックタイム(nLocktime)は、ブロック高又はUNIX時間で特定の時間を表す負ではない整数である。それは、トランザクションが指定されたブロック又は指定された時間の後にのみブロックチェーンに追加できるという意味で、トランザクションレベルのタイムロックである。nLocktimeが500,000,000より小さく設定される場合、それはブロック高と考えられる。それが500,000,000以上に設定された場合、それはUNIX時間の表現と考えられる。それは、1970年1月1日の00:00:00の後の秒数である。
【0079】
例えば、現在のブロック高が3,000,000の高さであり、ロックタイムは4,000,000に設定される場合、トランザクションは、4百万番目のブロックがマイニングされるまで、マイナーにより検討されない。
【0080】
定義10:nSequence。シーケンス番号(nSequence)は、トランザクションのバージョンをメッセージとして示す。トランザクションに対する任意の変更は、シーケンス番号を1つ大きくインクリメントする。nSequenceの最大値は232-1であり、通常、シーケンス番号は、デフォルトでこの最大値に設定されてトランザクションが完了していることを示す。nSequence値は、トランザクションの各インプットについて定義され、インプットにより参照されるUTXOがブロックに含まれた後、有効なインプットとして使用可能になる前の時間期間を指定する。マイナーが同じインプットを有する2つのトランザクションを認識した場合、マイナーは、より大きなシーケンス番号を有するトランザクションを選択する。しかしながら、この特徴は、一般的に無効にされている。
【0081】
定義11:CheckLockTimeVerify (OP_CLTV).。オペコードOP_CHECKLOCKTIMEVERIFY (OP_CLTV)は、将来の何らかの特定の時間又はブロック高にトランザクションの特定のアウトプットをロックするために使用可能な絶対的スクリプトレベルのタイムロックである。UTXOがトランザクション内で参照される現在のUNIX時間又はブロック高が、UTXOが生成されたUNIX時間又はブロック高にOP_CLTVオペコードの前に指定されたパラメータを足したものを超える場合、支払いトランザクションについてのスクリプト実行は失敗する。
【0082】
定義12:CheckSequenceVerify (OP_CSV)。オペコードOP_CHECKSEQUENCEVERIFY (OP_CSV)は、将来の特定の時間期間又はブロック数についてトランザクションの特定のアウトプットをロックするために使用可能な相対的スクリプトレベルのタイムロックである。これはOP_CLTVと同様に動作するが、OP_CSVに提供されるパラメータが相対的時間を表すことが異なる。UTXOがトランザクション内で参照される現在のUNIX時間又はブロック高が、OP_CSVオペコードの前に指定されたパラメータだけ超える場合、支払いトランザクションについてのスクリプト実行は失敗する。
【0083】
定義13:適応性(Malleability)。一般に、ブロックチェーントランザクションにおいて可能な2つの広義の適応性がある。それらは両方とも、インプットの中で提供される署名を無効にすることなく、トランザクションの内容を変更できるようにする。
【0084】
両方の場合を説明するために、1つのインプットと、該インプットの中の1つの署名と、1つのアウトプットと、を有する初期トランザクションTxを考える。
【0085】
タイプ1:スクリプトレベルの適応性。このタイプの適応性は、スクリプトオペコードOP_CHECKSIGによりチェックされるべき署名が、トランザクション内の任意のインプットのスクリプトフィールドに署名しないという事実を利用する。この事実は、トランザクションTxに対する署名を生成し、インプットスクリプトを変更して、トランザクションTx'がTxと同一ではないが、依然としてTx’及びTxが両方とも、ブロックチェーン合意ルールの下で同じ署名により署名された有効なトランザクションメッセージと考えられることを可能にする。
【0086】
タイプ2:インプット及びアウトプットレベルの適応性。このタイプの適応性は、トランザクション内で利用されているSIGHASH ALL以外のSIGHASHフラグの使用に依存する。トランザクションTxが、5個の他のSIGHASHフラグの組合せのうちのいずれかを使用するインプット署名を有する場合、(1又は複数の)インプット又は(1又は複数の)アウトプットのいずれかが追加されて、同一ではないトランザクションTx'を生成できる。その結果、両者は、署名を変更する必要を伴わずに、合意に従い有効なトランザクションメッセージと考えられる。
【0087】
ユーザにコンテンツをリリースするオンチェーンメカニズム
以下は、クラウドファンディングターゲットに達するとコンテンツをユーザにリリースする統合されたオンチェーンメカニズムにより、インプットが複数のユーザによりトランザクション、所謂クラウドファンディングトランザクション、に追加されることに基づき、該複数のユーザにコンテンツをリリースする例示的なメカニズムを説明する。例えば、これは、マルチパーティのストリーミングを実施する新しい手段として使用されてよい。それにより、ストリーム内のメディアデータの各部分又は「チャンク」について新しいクラウドファンディングトランザクションが存在する。
【0088】
メディアコンテンツは、M個の部分D1,D2,…DMに分割され、M個のそれぞれのクラウドファンディングされるトランザクションが(望ましくは予め)生成され、複数の異なるユーザにアクセス可能な(例えば、一般的に公衆の)サーバ上にホスティングされる。これらのトランザクションの各々は、それぞれの部分についてコンテンツのベンダ(例えば、Bob)に支払うべきデジタルアセットの額を指定するアウトプットを有する。各トランザクションのアウトプット内のロックスクリプトは、該アウトプットを償還することを要求する第2トランザクションについて、該第2トランザクションのインプットが、それぞれのシークレット値Smを含まなければならないことを要求するスクリプトも含む。ここで、Smはメディアコンテンツのそれぞれの部分をリリースする(例えば、復号する)ための鍵として動作する。Smは、第2トランザクションの部分としてブロックチェーン150に発行されるまで秘密であり、その後、秘密ではなくなるという観点で、単にシークレットと呼ばれる。
【0089】
各部分m=1…Mについて、N人のユーザの各々は、サイドチャネル301を介して(つまりオフチェーンで)サーバにホスティングされたクラウドファンディングトランザクションにアクセスし、インプットを追加することによりそれを適応する。これは、資金供給ターゲットに適合するまで、つまりインプットが少なくともアウトプット額を形成するのに十分な合計額を指すまで(或いは、トランザクションが有効でなくなるまで)、行われ、実際には、マイニング手数料もカバーする(或いは、トランザクションは、技術的に有効であっても、マイニングするために任意のマイナー104Mにより受け入れられない)。
【0090】
「ストリーミング」は、次に、ベンダ(例えばBob)が支払いトランザクション内でP2PネットワークへシークレットSmをブロードキャストするように簡単である(1つのクラウドファンディングトランザクションのアウトプットを償還する1つの支払いトランザクションは、代わりに1つのシークレットSmを開示する)。幾つかの実施形態では、ベンダBobは、ブロックチェーン150上で発行することに加えて、各シークレットをユーザへサイドチャネル301を介して直接に別個に送信してよい。或いは、彼がそうしない場合、場合によってはユーザのうちの一部又は全部は、P2Pネットワークのピア(動作ノード104)であってもよい。この場合、彼らは、また、BobがP2Pネットワークにそれをブロードキャストすると、支払いトランザクションの中でそれを受信するだろう。これらのいずれも、情報を送信できるとの同じ速さで実行できるので、高速であるべきである。いずれにも該当しない場合、精算トランザクションがブロック151へとマイニングされると、シークレットSmは最終的にブロックチェーン150上にあり、ユーザの一部又は全部がそこからそれを検索できる。従って、ベンダBobは、支払いを取り入れるがシークレット鍵Smをリリースしないことにより、不正を行うことができない。
【0091】
このシークレット鍵Smは、ここでは、「メディア鍵」と呼ばれてよい。それは、鍵を取得したユーザが、オフチェーンデータソース401上にホスティングされているメディアデータコンテンツの対応する部分Dmをアンロックする(つまりアクセスする)ことを可能にする。実施形態では、メディア鍵Smは、少なくとも1つの復号鍵を含む。この場合、ユーザは、それを彼の/彼女のコンピュータ102にダウンロードし、復号鍵Smを用いてそれを復号することにより、メディアデータの部分にアクセスする。
【0092】
鍵Smについて少なくとも2つの可能なシナリオがある。シナリオ1:Smは、単に単一の共通鍵として動作してよく、全てのユーザ103aがコンテンツのそれぞれの部分をアンロックすることを直接可能にする。つまり、資金が上げられると、コンテンツはP2Pネットワーク106にアクセスできる者には誰にでも公開される(しかし、誰も貢献しない場合、コンテンツは誰にも示されない)。しかしながら、これは、資金供給に貢献しなかった場合でも公衆の任意の他のメンバにもコンテンツを取得できるようにするので、公平ではないと考えられる。
【0093】
従って、実施形態では、シナリオ2が使用される。Smは、ユーザの各々が、インプットに貢献した各ユーザn=1…Nについてそれぞれ1つの、彼ら自身の個別鍵sm,1…sm,N,を生成することを可能にするよう構成される。この場合、所与のユーザがコンテンツの部分Dmにアクセスするために(例えば、ユーザが該コンテンツを復号できるために)、ユーザは、彼らがSm及び該ユーザにとって個人的な何らかの情報に基づき生成した彼ら自身の個別鍵sm,nを適用する必要がある。それぞれの個別鍵sm,nは、従って、それぞれのユーザに結びつけられ、該ユーザのみが対象となるコンテンツにアクセスする(例えば、復号する)ことを可能にする。これを実施する例は、後述される。
【0094】
クラウドファンディングトランザクションのアウトプットが使用されるときに開示されるシークレット鍵(Sm)を処理に追加することにより、これは、何らかのオフチェーン処理又はイベントをクラウドファンディングするのではなく、シークレットのオンチェーンの開示をクラウドファンディングすることを可能にする。これは、有利なことに、クラウドファンディングの結果の実現をオンチェーンメカニズムに統合にする。
【0095】
幾つかの実施形態では、開示の処理は、単にコンテンツDの単一の独立部分をクラウドファンディングしリリースするために使用され得る。しかしながら、議論されるように、それは、部分Dmのシーケンス又はストリームをリリースするためにも使用できる。ここで、m=1...Mであり、それぞれ、それぞれの対応するクラウドファンディングトランザクションに基づく。これの利点はクラウドファンディングに粒度(granularity)を追加すること、及びコンテンツが部分的に一度に1つの部分をクラウドファンディングされ得ることである。例えば、TVシリーズがそのエピソードに分割される場合、ベンダ(Bob)は、人々にそれらにクラウドファンディングするよう依頼し、それらがクラウドファンディングされるのと同じ速さで1つのエピソードを公開できる。例えば、これは、OTT(over-the-top)ビデオストリーミングサービスにより使用され得る。サービスは、彼らが人気のあるシリーズに対する権利を有していること、及びそれぞれがユーザによりクラウドファンディングされると直ぐに彼らが各エピソードをリリースすることを広告する。実際にクラウドファンディングされたトランザクションに支払うユーザは、例えばエピソードへの早期のアクセスを得る。
【0096】
粒度は、各エピソードをより小さなパッケージ、例えば、秒毎に又は適切に分割することもできることを意味する。
【0097】
同様の技術は、「TVエピソード」を講義等により置き換えることにより、オンライン教育又は講義子リース又はラジオ番組のような多数の他のアプリケーションにも適用され得る。
【0098】
図4~6を参照して、例示的な実装を詳細に議論する。
【0099】
図4は、
図3の構成に対する拡張を示す。これにより、複数の第1ユーザ103a-1,103a-2,…103a-Nのそれぞれのコンピュータ機器102a-1,102a-2,…,102a-Nは、サイドチャネル301を介してBob103bのコンピュータ機器に接続するよう動作する。単に概略的な説明により、第1ユーザは、ここでは「A」で始まる所与の全て異なる名称、例えば、Alice、Adam、及びAgnesである。機器102a及び第1パーティ102aのクライアント105aに関して上述した事柄は、
図4のシナリオの第1ユーザの機器102a-1,102a-2,…,102a-Nのうちのいずれにも等しく適用されてよい。
【0100】
この例示的なシナリオでは、Bobは、メディアコンテンツのベンダの役割を果たす。Bobのコンピュータ機器102bは、サーバの役割で構成される。それは、1つ以上の地理的サイトにある1つ以上の専用サーバユニットのリソース、又はサーバの役割を果たす1つ以上のユーザ装置、又はこれらの任意の組合せを含んでよい。Bobの機器102bは、第1ユーザの機器102a-1,102a-2,…102a-Nの各々におけるように、P2Pネットワーク106のクライアント105bにもインストールされたままである。Bobの機器102b及びクライアント105aに関して前述した事柄、及びサイドチャネル301は、
図4のシナリオに等しく適用されてよい。また、ここでも、サイドチャネル301は必ずしも単一のリンク又は単一のアクセス技術を意味しないことに留意する。従って、実施形態では、
図4に関して議論されるサイドチャネル301は、1つ以上のタイプのアクセス技術を用いる、Bobの機器103bと異なる第1ユーザ102a,102a-2,…,102a-Nの機器103b-1,103b-2,103b-Nとの間のリンクの束を表してよい。
【0101】
システムは、オフチェーンデータソース401(つまり、ブロックチェーン150に記録されていないデータを格納し及びユーザ102aに利用可能にするソース)も含む。これは、
図4のBobの機器102bと別個に示されるが、Bobの機器102bの部分を形成し得る。代替として、実際に、Bobの機器102bと別個であってよく、例えば、Bobは、彼自身の代わりに第三者によりホスティングされるコンテンツを代表するベンダとして動作してよい。いずれの方法も、オフチェーンデータソース401は、クラウドファンディングされるべきメディアデータの1つ以上の部分D
mの各々を格納する。オフチェーンデータソース401は、ネットワークを介して、第1パーティの機器102a-1,102a-2,102a-Nの各々にあるクライアントソフトウェア105a-1,105a-2,…105a-Nにアクセスできる。ネットワークは、それを介してアクセス可能にされ、P2Pオーバレイネットワーク106が実装されるのと同じネットワーク101(例えばインターネット)、又はモバイルセルラネットワーク又は組織内のイントラネット等のような別個のネットワーク、又はこれらの任意の組合せであってよい。
【0102】
以下は、コンテンツが複数の部分(m=1….M)に分割される例に関連して説明される。しかしながら、データの単一部分をリリースするためにも同じメカニズムが使用され得ることが理解される。メディアデータ(コンテンツ)の各部分は、オーディオ又はビデオ番組のシリーズのエピソード全体、又は所与のエピソード若しくは独立した番組(例えば、映画)の部分を含んでよい。粒度は、パケット毎にクラウドファンディングされる番組の個別パッケージ又はパケットのレベル(例えば、秒毎又はそれより細かく)にまで低減されることもできる。
【0103】
図6は、本願明細書に開示される実施形態に従い使用するためのトランザクション152のセットを示す。各データ部分D
mについて、セットは複数の第0トランザクションTx
0、第1トランザクションTx
1-m、及び第2トランザクションTx
2-mを含む。これらの名称は単に便宜上のラベルであることに留意する。それらは、必ずしも、これらのトランザクションが直ちに1つずつブロック151又はブロックチェーン150内に置かれること、又は第0トランザクションがブロック151又はブロックチェーン150内の最初のトランザクションであることを意味しない。また、これらのラベルは、それらのトランザクションがネットワーク106へ送信される順序に関して何も示唆しない。それらは、単に、1つのトランザクションのアウトプットが次のトランザクションのインプットによりポイントされる論理的シリーズを表す。幾つかのシステムでは、親をその子の後にネットワーク106へ送信することが可能であることを思い出してほしい(この場合、「親のない」子がある期間の間、1つ以上のノード104においてバッファされ、その間、親が到着するのを待っている)。
【0104】
第0トランザクションTx0は、本発明の目的のためにソーストランザクションと呼ばれてもよく、第1トランザクションのデジタルアセットの額のソースとして機能する。第1トランザクションTx1-mは、本発明の目的のためにクラウドファンディングトランザクションと呼ばれてもよい。それは、メディアデータの部分Dmのリリースに資金供給するために、ソーストランザクションTx0からデジタルアセットの額を条件付きで移転するための仲介として機能する。第2トランザクションTx2-mは、支払いトランザクション又はターゲットトランザクションと呼ばれてもよく、第1トランザクション内の条件をアンロックし、ベンダBob(又は場合によっては、Bobが代表を務める受益者)への支払いを提供するトランザクションである。
【0105】
図6に示すように、各々の第0又はソーストランザクションTx
0は、デジタルアセットの額を指定する少なくとも1つのアウトプット203
0(例えば図中のoutput 0)を含み、更に、Alice103a又はAdam103b等のようなユー谷対してこのアウトプットをロックするロックスクリプトを含む。これは、ソーストランザクションTx
0のロックスクリプトが、条件が満たされることを要求することを意味する。この条件は、アウトプットをアンロックしようとする(従って、デジタルアセットの額を償還する)任意のトランザクションのインプットが、そのアンロックスクリプト内にユーザの暗号署名を含まなければならないことであり、該ユーザに対して該インプットがロックされ、署名は該ユーザの公開鍵を用いて生成されている。この意味で、Tx
0のアウトプット内で定義された額は、そのユーザ、例えばAlice又はAdam等により所有されていると言える。アウトプットは、 UTXOと呼ばれてよい。どの先行するトランザクションのアウトプットがソーストランザクションTx
0のインプットをポイントするかは(それらが、ソーストランザクションTx
0の合計アウトプットをカバーするのに十分である限り)、本発明の目的のために特に重要ではない。
【0106】
本発明の場合には、ソーストランザクションTx0のアウトプットをアンロックするトランザクションは、データ部分Dmのための第1又はクラウドファンディングトランザクションTx1-mである。従って、Tx1-mの最終的なインスタンスは、それぞれがソーストランザクションTx0のそれぞれの1つのそれぞれのアウトプットへのポインタを含む複数のインプット2021を有する。Tx1-mの各アウトプットは、少なくともそれぞれのユーザの署名を要求する、該アウトプットのロックスクリプト内で定義された条件に従いそれぞれのTx0のポイントされたアウトプットをアンロックするよう構成されるアンロックスクリプトを更に含む。Tx0のロックスクリプトにより要求される署名は、Tx1-mの何らかの部分に署名することを要求される。幾つかのプロトコルでは、署名される必要のあるTx1-mの部分は、Tx1-mのアンロックスクリプト内で定義された設定であり得る。例えば、これは、署名に付加される1バイトであるSIGHASHフラグにより設定されてよい。従って、データの観点では、アンロックスクリプトは次の通りである:<Sig PA><sighashflag><PA>代替として、署名される必要のあるの部分は、単にTx1-mの固定部分であってよい。いずれの方法も、署名されるべき部分は、標準的に、アンロックスクリプト自体を除き、及びTx1-mのインプットの一部又は全部を除いてよい。これは、Tx1-mのインプットが適応可能であることを意味し、ユーザがインプット2021を追加することを許容する。
【0107】
第1又は中間トランザクションTx1-mは、少なくとも1つのアウトプット2031(例えば、図中のTx1-mのoutput 0、ここでもアウトプットがUTXOと呼ばれてよい)を有する。このアウトプットは、転送されるべきデジタルアセットの額を指定し。該アウトプットは、該アウトプットをアンロックする、従って該額を償還するために要求される条件を定義するロックスクリプトを更に含む。この条件は、Tx1-m、この場合には第2トランザクションの第1バージョンTx2-m、をアンロックしようとするトランザクションのアンロックスクリプトが、自身のアンロックスクリプト内にBobの暗号署名及びBobが含めなければならないペイロードを含むことを要求する。以下に詳述するように、このペイロードは、ユーザ103a-1…103a-Nがコンテンツ片Dmをリリースできるようにするシークレット鍵Smを含む。ペイロードを含むという要件は、Tx1-mのロックスクリプトに含まれるハッシュチャレンジにより課されることができる。チャレンジは、ペイロードのハッシュ(ペイロード自体ではない)、及び(アンロックスクリプトと一緒にノード104上で実行すると)対応するアンロックスクリプト内で提供されるペイロードのハッシュがロックスクリプト内で提供されるハッシュ値と等しいかどうかをテストするよう構成されるスクリプト片を含む。署名に対する要件は、例えば上述のCheckSigにより課される。実施形態では、第1条件が、Aliceの署名がTx2-mのアンロックスクリプトに含まれることを要求しない.Bobにより署名される必要のあるTx2-mの部分は、Tx2-mのアンロックスクリプトの設定であってよく(例えば、SIGHASHフラグにより指定される)、又は固定されてよい。いずれの方法も、標準的には、少なくともアンロックスクリプトを除く。
【0108】
第2の、ターゲットトランザクションTx2-mは、少なくとも1つのインプット2022(例えば、Tx2-mのinput 0)を有し、該インプットは、Tx1-mの上述のアウトプット(図示の例ではTx1-mのoutpu 0)へのポインタを含み、Tx1-mのロックスクリプトの中で定義された条件を満たすことに基づきTx1-mの該アウトプットをアンロックするよう構成されるアンロックスクリプトも更に含む。第2トランザクションTx2-mは、少なくとも1つのアウトプット2032(例えば、Tx2-mのoutput 0)を有し、該アウトプットは、Bobへ移転すべきデジタルアセットの額を指定する。アウトプット2032は、Bobに対してこれをロックするロックスクリプトも含む(つまり、それは、使用すべきアンロックスクリプト内にBobの署名を含む更なる将来のトランザクションを要求する)。この意味で、ターゲットトランザクションTx2-mのアウトプットは、Bobにより所有されると言える。このアウトプットは、ここでもUTXOと呼ばれてよい。
【0109】
図6は、クラウドファンディングしデータのアイテムD
mを複数のユーザ103a-1…103a-Nにリリースするために、
図5に関連して説明したようなトランザクションのセットを使用する方法を示す。方法は、ベンダBob103bの観点から説明される。方法は、Bobの機器102b上で実行するソフトウェア105bにより実行されてよい。別の態様によると、Alice103a-1のようなユーザ103aの観点から該ユーザの機器102a上で実行するクライアントアプリケーション105aにより実行される対応する方法が提供されることが理解される。「Alice(又はユーザ)により」、「Bob(又はベンダ)により」、及び「第三者により」のような語句は、本願明細書では、それぞれ「ユーザ103aのコンピュータ機器102a上で実行するソフトウェア105aにより」、「ベンダ103bのコンピュータ機器102b上で実行するソフトウェア105bにより」、及び「第三者のコンピュータ機器上で実行するソフトウェアにより」の短縮表現として使用されることがある。また、所与のパーティの機器は、該パーティにより使用される1つ以上のユーザ装置、又は該パーティにより利用されるクラウドリソースのような幾つかのサーバリソース、又はそれらの任意の組合せを含み得ることに留意する。それは、必ずしも動作が単一のユーザ装置上で又は単一の物理位置で実行されることに限定しない。
【0110】
ステップS10で、ベンダ(Bob)は、Tx1-mの初期テンプレートバージョンを策定し、それを彼の機器102bのサーバ上にホスティングし、従って、サイドチャネル301を介して適応するために、Tx1-mをユーザ103a-1…103a-Nの任意の者に利用可能にする。上述のように、ベンダBobのサーバは、サーバの役割を果たす任意のサービングコンピュータ機器を含んでよく、1つ以上の専用サーバユニット(又はそのリソース)及び/又は1つ以上の地理的サイトに配置された1つ以上のユーザ装置を含んでよい。それは、P2Pオーバレイネットワークが実装される同じネットワーク101(例えばインターネット)、又は別個のネットワーク(例えば、モバイルセルラネットワークまたは組織内の内部イントラネット)又はこれらの任意の組合せを介して、ユーザ102a-1…102a-Nの機器103a-1…103a-Nにアクセス可能にされてよい。
【0111】
実施形態では、Bobは、シーケンス内の第1部分をリリースする前又はそれについて資金供給を受信する前に、メディアデータDmの全部の部分について、クラウドファンディングトランザクションTx1-m、m=1...Mの初期テンプレートフォームを策定し格納してよい。しかしながら、簡単のために、以下の方法は、メディアデータDmの部分のうちの所与の1つの部分、及びその対応するクラウドファンディングトランザクションTx1-mについて説明される。代替の実施形態では、クラウドファンディングトランザクションTx1-mのうちの1つ、一部、又は全部が、第三者によりBobのために策定され、彼のサービング機器102b上にホスティングするために彼に提供されることが可能であることにも留意する。以下は、Bobが各クラウドファンディングトランザクション(つまり第1トランザクション)Tx1-mを彼自身で策定するという観点で説明されるが、これが限定的ではないことが理解される。更に、ベンダ「Bob」は、実際には、個人ユーザではなく、1人より多くの人を含む組織であってよいことが理解される。
【0112】
ベンダBobにより最初に形成されたTx1-mは、少なくとも1つのアウトプット2031を含む。これは、メディアコンテンツDmのそれぞれの部分をリリースするために彼が受信したいと望むデジタルアセットの額を指定する値Xmを含む。Xmは、全てのm(つまりメディアDmの全部の部分)について同じであってよく、或いは、部分Dmの一部又は全部の間で異なってよい。Bobは、また、彼の機器102bに、メディアデータDmのそれぞれの部分をリリースするために要求されるターゲット値Tmを格納する。Tmは、マイニング手数料を要求しないシステム(例えば、コンソーシアムブロックチェーンシステム)においてはXmと等しくてよい。代替として、Tm=Xm+M、ここでMはマイニング手数料である。マイニング手数料Mは、現在価格に依存する時間tの関数であってよく、又は固定されてよい(例えば、ユーザ103a-a…103a-Nからの資金供給が期待される期間に渡る任意の妥当なマイニング手数料の変動をカバーする可能性のある十分高いマージンに設定される)。
【0113】
Tx1-mのアウトプット2021は、ロックスクリプトも含む。ロックスクリプトは、アウトプット2021を償還しようとするトランザクション、この場合にはTx2-m、のアンロックスクリプトが、メディアコンテンツDmのそれぞれの部分のシークレットアクセス鍵Sm(メディア鍵)を含むことを要求する。上述のように、この要件は、ハッシュチャレンジにより実装されてよい。つまり、ロックスクリプトは、メディア鍵を含むペイロードのハッシュを含み、スクリプト片は、アンロックスクリプトに含まれるペイロードの値をハッシングし、これをロックスクリプト内のハッシュの値と比較し、それらが一致するという条件で、アウトプットをアンロックするよう構成される。
【0114】
実施形態では、ベンダBobは、彼自身のインプット2021を、Bobにより最初に形成されたTx1-mのバージョンに含める。このインプットは、Bobに対してロックされたそれぞれのソーストランザクションTx0-m-Bのアウトプットをポイントする。このアウトプット内で指定されたデジタルアセットの額は、0又は(例えば、プロトコルが使用可能アウトプット内で0の量を許可しない場合には)公称(無視できる)額であってよい。Tx0-m-Bのアウトプットのロックスクリプトは、Bobの署名が、それをアンロックするトランザクションのインプット、この場合にはTx1-mのBobのインプット内のアンロックスクリプトに含まれることを要求する。従って、Tx1-m内のBobのインプットは、Tx1-mの部分に署名するBobの署名を含むアンロックスクリプト、及び更にBobの署名の検証を可能にするBobの公開鍵を含む。
【0115】
Tx1-mのこのインプットの目的は、ベンダBobに、トランザクションに署名する方法を提供し、従って彼がトランザクションを是認したことをシグナリングすることであってよい。及び/又は、クラウドファンディングトランザクションTx1-mは、望ましくは、アウトプット2031を保証する(署名する)ために少なくとも1つの初期インプットを有するべきである。インプットを有しないと、アウトプットは解放されて、誰もがアウトプットを置き換えることができる。しかし、アウトプット2031に署名する少なくとも1つのインプット2021が有る限り、アウトプットは変更できない。
【0116】
更に、実施形態では、Tx1-mへのベンダBobのインプットは、ユーザ103a-1,…103a-Nのうちの1人以上に、トランザクションに資金供給するために彼ら自身のインプット2021を追加する前に、トランザクションの真正さを検証する方法も提供する。例えば、システムは、ユーザの機器102a-1,…102a-Nのうちの1つ、一部、又は全部に対してアクセス可能にされた信頼できる第三者のデータベース402を含んでよい。それは、P2Pオーバレイネットワーク106が実装されるのと同じネットワーク1(例えばインターネット)01、又はモバイルセルラネットワーク又はイントラネット等のような別個のネットワーク、又はこれらの任意の組合せを介してアクセス可能にされてよい。データベース402は、信頼できる第三者により推奨される1つ以上のベンダの公開鍵のリストを含む。従って、データベース402にアクセスし、そこにリストされたBobの公開鍵を認める(つまり、値がTx1-mへのBobのインプットの中で見付かった公開鍵と一致することをチェックする)ことにより、彼らは、Bobが正当なベンダであるという信頼を得ることができる。
【0117】
しかしながら、ベンダBobのインプットは任意である。代替として、Bobにより最初に形成されたTx1-mは、インプット2021を含まない。
【0118】
ステップS20で、ベンダBobは、1人以上のユーザ103a-1…103a-Nからインプットを受信し始める。このようなユーザ103aの各々は、サイドチャネル301を介してBobのサーバにあるクラウドファンディングトランザクションTx1-mの現在バージョンにアクセスし、それにより、このトランザクションを適応して、彼女自身のそれぞれのインプット2021を追加する。これらのユーザ103a-nの各々により追加されたインプットは、それぞれのソーストランザクションTx0-m-nのアウトプットをポイントし、該アウトプットは、該ユーザ103a-nに対してロックされたデジタルアセットの額を指定し、該ユーザに対してそれぞれのアウトプットをロックするロックスクリプトを含む。つまり、Tx0-m-nのロックスクリプトは、それをアンロックするトランザクション、この場合にはTx1-m、のそれぞれのインプットのアンロックスクリプトが、それぞれのユーザ103a-nの署名を含むことを要求する。従って、Tx1-mへのユーザのインプットは、Tx1-mの部分に署名するユーザの署名を含むアンロックスクリプト、及び更に彼女の署名の検証を可能にするユーザの公開鍵を含む。
【0119】
1人以上のユーザ103aからの1つ以上のインプットを受信した後に、ステップS30で、ベンダBobは、Tx1-mが彼のターゲットTmを満たすのに十分なインプットを有するかどうかをチェックする。つまり、彼は、それまでに受信したインプットによりポイントされた、ソーストランザクションTx0-mのアウトプット2030内の額を加算し、それらが少なくともターゲット額Tmに等しいかどうかをチェックする。否の場合、方法は、ループバックし、ステップS20から継続する。
【0120】
Tx0-mのインプットによりポイントされた額が合計して少なくともターゲットTmにまでなると、ベンダBobは、ステップS40に進み、Tx1-m及び対応する支払いトランザクションTx2-mをネットワーク106に、P2Pネットワーク106に発行する。つまり、彼は、Tx1-m及びTx2-mの各々を、転送ノード104Fの少なくとも1つへ、そこからネットワーク106全体へ伝播されるように、送信する。これらのトランザクションの各々は、各ノード104で検証されて、マイニングノード104Mのうちの1つによりマイニングされてブロック151になり、そして、各記憶ノード104Sにおいて維持されるブロックチェーン150のコピーに記録される。代替として、彼は、これらのトランザクションTx1-m及びTx2-mのうちの一方又は両方を、ユーザ103aのうちの1人又は第三者へ送信し、彼らがネットワーク106へ転送するようにしてよい。いずれの方法も、ベンダBobは、従って、両方のトランザクションをネットワーク106のノード104を通じて伝播させ、ブロックチェーン150に公に記録させる。
【0121】
クラウドファンディングトランザクションTx1-mのアウトプット2031は、データ部分Dmに対するBobへの支払いXmを指定し、更にロックスクリプトを含む。支払いトランザクションTx2-mは、Tx1-mのアウトプットをポイントし及びロックスクリプトを含むインプット2022を含む。Tx2-mは、デジタルアセットの額を指定し及びこの額をBobに対してロックするロックスクリプトを含むアウトプット2032を含む。
【0122】
Tx1-mのアウトプット内のロックスクリプトは、それをアンロックするトランザクション、この場合にはTx2-m、のアンロックスクリプトが、指定されたペイロードを含むことを要求する。例えば、この要件は、上述のように、ロックスクリプト内のハッシュチャレンジにより課されてよい。このペイロードは、ユーザ103a-1,…,103a-Nがオフチェーンデータソース401からメディアコンテンツDmの対応する部分にアクセスする(例えば、復号する)ことを可能にするメディア鍵(例えば、復号鍵)Smを含む。ベンダBobが彼の支払いを請求するために、支払いトランザクションTx2-mはSmを含まなければならないので、これは、Bobが支払いを請求するとき、ブロックチェーン150上に公衆に見えるようにされなければならないことを意味する。
【0123】
各ユーザ103a-1,…,103a-Nは、従って、メディア鍵Smを検索するために、ブロックチェーン150を検査できる。彼らは、次に、メディア鍵Smを使用して、オフチェーンデータソース401からそれぞれのメディアデータ部分Dmを取得し消費できる。
【0124】
幾つかの場合には、ベンダBobは、任意で、ブロックチェーン150上でそれを発行することに加えて、サイドチャネル301を介してユーザ103aの1人以上又は全員にメディア鍵Smを送信してよい。及び/又は、ユーザ103aの1人以上がP2Pネットワーク106のピア104でもある場合、彼らは、支払いトランザクションTx2-mがネットワーク106を通じて伝播されるとき、任意的にはそれがマイニングされる前に、Smを受信する。別の可能性として、将来において、APIが利用可能になり、ユーザがマイニングノード104Mのプール154をクエリできるように、従って、ユーザが、保留中のトランザクションがマイニングされる前に、該トランザクション内のデータを観察できるようにしてよい。しかし、ユーザ103aが受信するメディアが何であれ、要点は、ベンダBobが、少なくとも1つのチャネル(ブロックチェーン150)により、メディア鍵Smがユーザ103aに利用可能になるのを防ぐことができないということである。従って、Bobは、支払いを取り入れるが対応するメディアコンテンツをリリースしないことによる不正を行うことができない。
【0125】
実施形態では、メディア鍵Smは、少なくとも1つの復号鍵を含む。この場合、ユーザ103aは、メディアデータDmの部分を彼/彼女のそれぞれのコンピュータ機器102aにダウンロードするために、オフチェーンデータソース401をクエリし、次に復号鍵を適用してメディアデータ部分Dmを復号し、従って、彼らのそれぞれのコンピュータ機器102aにデータの(クリアな)コピーを取得する。代替又は追加で、メディア鍵Smは、第1の場所にメディアデータの部分Dmをダウンロードするために必要なパスコードを含んでよい。この場合、ユーザは、パスコードSmをオフチェーンデータソース401に提出し、それに応答して、メディアデータ部分Dmを彼/彼女のそれぞれのコンピュータ機器102aにダウンロード又はストリーミングすることを許可される。幾つかの実施形態では、メディア鍵Smは、暗号鍵及びパスコードの両方を含んでよく、アクセスは両方のアプローチを結合してよい。
【0126】
幾つかの実施形態は、誰もがどこか他の場所にあるデータにアクセス可能な、たった1つの単一のパスコード又は包括的(generic)復号鍵を使用してよい。これは、実装が簡単であるが、コードが漏洩した場合には未払いユーザがデータにアクセスすることを許可してしまうので、望ましくない場合がある。よりセキュアな選択肢は、従って、グループに基づく公開鍵暗号方式の単一の公開鍵に基づくアプローチを使用することである(この公開鍵は、任意の選択されたグループに基づく公開鍵暗号方式、望ましくはECDSAを用いて生成できる)。コントリビュータ(Contributor)は、既に彼らの公開鍵、つまりPKiを、彼らのインプットの中で提供している。オーガナイザ(organiser)は秘密鍵Vを生成し、Sm=V・G、及びSm,i=V・PKiを計算する。Siは、オーガナイザとコントリビュータiとの間の共有シークレットである。値は、対称暗号方式のためのシークレット鍵を生成するためにハッシングされ得る。オーガナイザは、共有シークレットを使用して、各コントリビュータiのためにデータを暗号化する。この暗号化データは、望ましくはオフチェーンで通信される。今現在、コントリビュータはデータを復号できない。
【0127】
アンロックスクリプトの中で、オーガナイザはSmを発行する。各コントリビュータは、彼ら自身の秘密鍵を用いて共有シークレットを計算し、必要ならば復号鍵を導出することができる。これの欠点は、公衆が、ロックスクリプト内にあるオーガナイザにSmを開示することを実際に強制するものは何でも(Smのハッシュであってよい)信頼しなければならないことである。これは、例えばよく知られたOTTプロバイダにとっては問題がないかも知れない。また、実施形態では、方式は、更なる信頼のために信頼できるデータベース402と結合できる。
【0128】
従って、実施形態では、メディアデータDmの部分にアクセスするために、各ユーザ103a-nは、その特定のユーザに結びつけられたそれぞれの個別メディア鍵(例えば、復号鍵)sm,nを使用する必要がある。この場合、ベンダBobは、Tx1-mへの各ユーザ103a-nのそれぞれのインプットに含まれる各ユーザ103a-nの公開鍵に基づき、Tx1-mに含まれるメディア鍵Smを計算する。各ユーザ103a-nがSmを受信すると、彼らは、彼ら自身の個別メディア鍵sm,nを計算し、これを使用して、オフチェーンデータソース401からメディアコンテンツDmの対応する部分にアクセスする各ユーザの個別メディア鍵は、該ユーザにユニークである(ここで、「ユニーク」は、少なくとも衝突の可能性がほぼゼロに近く小さい程度であることを意味する)。
【0129】
これは、従来知られている種々の利用可能な鍵共有技術のうちの1つを使用することにより実施されてよい。各々の貢献するユーザ103a-1,…,103a-Nは、彼らそれぞれの公開鍵をTx1-mの彼らのインプットの中で開示する。ベンダBobは、各コントリビュータと共有するシークレットを生成するために、該公開鍵を鍵共有技術と共に使用できる。Bobは、次に、対称暗号鍵のような共有シークレットを使用して、メディアデータDmの部分を暗号化し、それを対象となる視聴者(貢献するユーザ103a-1,…,103a-N)へ送信させることができる。これは、データソース401がベンダBobの機器102bに実装される場合には、彼自身にそれを送信すること、又はデータソース401が他の場所に実装される場合には、第三者かr送信されるようトリガすることを含む。いずれの方法も、事実上、各コントリビュータ103a-nは、メディアデータコンテンツDmの部分のカスタマイズされた暗号化バージョンを受信する。BobがオンチェーンでSmを開示すると、各個人103a-nは、共有シークレットsm,nを導出することができる。各々は、異なる共有シークレットを有することに留意する(ここで「共有」は、異なるユーザ103a-1,…,102a-Nの間で共有されるのではなく、ベンダBobとそれぞれのユーザ103a-nとの間で共有されることを意味する)。インプット内で使用される公開鍵がユニークである限り、個別共有鍵はユニークである。
【0130】
例示的な実装は、以下の通りであり、これは標準的なDiffie Hellman鍵交換に基づく。
I.Aliceは貢献し(contribute)、彼女のインプットの中で彼女の公開鍵PK_Aを提供する。
II.ロックスクリプト内に、ハッシュチェックH(PK_B)がある。つまり、それをアンロックするために、BobはPK_Bを開示しなければならない。
III.Bobは、(skB・PKA)を計算し、それを対称暗号鍵として使用して、Aliceのためだけにデータを暗号化する。
IV.BobがPK_Bを開示すると、Aliceは(skA・PKB)を計算することにより、同じ対称鍵を計算することができる。
他の貢献するユーザAdam、Agnes等についても同様である。これは、標準的な鍵共有技術を用いて実装される多数の可能な実装のうちのほんの1つであることに留意する。
【0131】
例示的なシナリオとして、Bobがビデオをブロードキャストしたいとする。これは、講義、チュートリアル、又は一般的なイベントであってよい。
【0132】
このシナリオでは、Bobは彼がブロードキャストを開始したい時間を正確に知っているとする。彼は、彼のブロードキャストについて予め決定された価格も有する。ビデオデータは、チャンク毎に暗号化され、オフチェーンで送信される。部分シークレット値smは、Bobにより生成され、チャンク毎にオンチェーンで交換される。
【0133】
参加者は、次に、データを復号するために完全なシークレット鍵を導出する。
【0134】
【0135】
【0136】
【0137】
この処理は、インプットの値がアウトプットの値をカバーするまで又はタイムロックが終了するまで、続く。
【0138】
Bobが、彼のイベントの誤った広告により不正を行うことが可能な場合がある。しかしながら、イベントを公開鍵にリンクする公に検証可能なソースが存在することが要求されてよい。公開鍵は、TX1のインプット0で要求されるECDSA公開鍵であってよい。従って、関心のある参加者は、TX1が真正かどうかを教えることができる。
【0139】
十分なインプットが存在せず、Bobが更に先に進めたい場合、彼は価格のギャップを彼自身で埋めることができる。
【0140】
Bobが予想したよりも多くの関心があった場合、Bobは、別のトランザクションを生成するか、又は参加者がTX1からアウトプットをコピーして彼ら自身で新しいトランザクションを生成することを許可することができる。
【0141】
各参加者103aは、彼らのインプット2021内の彼らの公開鍵により識別される。公開鍵は、データを暗号化するためにカスタマイズされたシークレット鍵を計算するために使用される。Charlieがsmを開示すると、参加者は、彼らが受信したデータDmを復号するためのシークレット鍵を計算することができる。
【0142】
コンテンツを閲覧し続けるために、参加者103aは、単に後続のトランザクションに従い、インプット2021を満たす。
【0143】
上述のように、セキュリティの理由で、アウトプットは、ECDSA署名のような署名によりロックされなければならない。その結果、誰もアウトプットを変更できない。つまり、BobもAliceも(又は任意の他のユーザも)、彼らの変更アドレスをアウトプットに追加できない。従って、Alice又はBobは、彼らのUTXOが、彼らが支払いたい正確な額を提供することを保証しなければならない。
【0144】
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。より一般的には、以下のステートメントのいずれかに従う方法、プログラム、機器、又はトランザクションのセットが提供されてよい。全部の独立ステートメントは任意の特徴を定めることが理解される。
【0145】
(ステートメント1)本願明細書に開示される一態様によると、複数のユーザがメディアコンテンツのアイテムにアクセスすることを可能にする、コンピュータにより実施される方法であって、前記方法は、前記メディアコンテンツのベンダにより、
第1トランザクションを提供するステップであって、前記第1トランザクションは、(i)前記ベンダへ移転すべきデジタルアセットの額を指定する少なくとも第1アウトプットを含む1つ以上のアウトプット、及び(ii)最初に全部で0個以上のインプットであって、前記0個以上のインプットにより指される任意のソーストランザクションの任意のアウトプットの中で指定される前記デジタルアセットの合計インプット額は、前記1つ以上のアウトプットにより指定される前記デジタルアセットの合計アウトプット額より少なく、前記第1トランザクションの前記第1アウトプットは、前記第1アウトプットをアンロックするためにアンロックスクリプトにより満たされるべき条件を指定するロックスクリプトを含む、全部で0個以上のインプットと、を含む、ステップと、
サイドチャネルを解して、前記複数のユーザの各々からインプットを受信し、各々の受信したインプットを前記第1トランザクションに追加し、各々の受信したインプットは前記デジタルアセットの額を指定するそれぞれのソーストランザクションのアウトプットを指す、ステップと、
ターゲットに達し、それにより前記第1トランザクションの前記インプットにより指される合計インプット額が前記アウトプット額に等しくなり又はそれを超えると、ブロックチェーンに記録されるように前記第1トランザクション及び第2トランザクションをブロックチェーンネットワーク上に発行させるステップであって、前記第2トランザクションは、前記第1トランザクションの前記第1アウトプットを指し及び前記条件を満たす前記アンロックスクリプトを含む、ステップと、
を含み、
前記ロックスクリプトにより指定される前記条件は、前記アンロックスクリプトが、前記ユーザにメディアコンテンツの前記アイテムにアクセスできるようにするメディア鍵を含むことを要求する、方法が提供される。
【0146】
(ステートメント2)実施形態では、前記ターゲットは、前記合計インプット額が、マイニングしてブロックにするためにマイナーにより前記第1トランザクション受け入れさせるための少なくとも十分なマイニング手数料だけ、前記合計アウトプット額を超える、ステートメント1に記載の方法が提供されてよい。
【0147】
(ステートメント3)実施形態では、複数のデータアイテムの各々について、前記方法を繰り返すステップであって、コンテンツの各アイテムは、メディアコンテンツの部分のシーケンスのうちの異なるそれぞれの1つを形成する、ステートメント1又は2に記載の方法が提供されてよい。
【0148】
(ステートメント4)実施形態では、前記部分は、リアルタイムでユーザにストリーミングされる所与のエピソード又は独立した番組若しくは映画のパケットである、ステートメント3に記載の方法が提供されてよい。
【0149】
(ステートメント5)実施形態では、前記部分は、シリーズの中の異なるエピソードである、ステートメント3に記載の方法が提供されてよい。
【0150】
(ステートメント6)実施形態では、前記第1トランザクションにリンクされた指示は、前記ベンダ及びユーザと独立した第三者により運用されるデータベース内にリストされ、それにより、前記ユーザが、前記第1トランザクションが前記メディア鍵を取得するための適法なメディアであることを検証できるようにする、ステートメント1~5のいずれかに記載の方法が提供されてよい。
【0151】
(ステートメント7)実施形態では、前記0個以上の初期インプットは、前記ベンダにより包含された、それぞれのソーストランザクションのアウトプットをアンロックするためのアンロックスクリプトを含む少なくとも1つの初期インプットを含み、前記ベンダの前記インプット内の前記アンロックスクリプトは、前記ベンダの公開鍵、及び前記公開鍵に対応する前記ベンダの秘密鍵を用いて形成された前記ベンダの署名を含む、ステートメント1~6のいずれかに記載の方法が提供されてよい。
【0152】
(ステートメント8)実施形態では、前記指示は、コンテンツプロバイダの前記公開鍵のコピーを含み、それにより、前記ベンダの前記初期インプットの前記アンロックスクリプト内の前記公開鍵をデータベース内の前記公開鍵のコピーと比較することにより、前記ユーザが前記検証を実行できるようにする、ステートメント6及び7に記載の方法が提供されてよい。
【0153】
(ステートメント9)実施形態では、前記ターゲットに達するには未だ十分ではないが、前記ユーザからの複数のインプットを受信した後に、前記ベンダが、少なくとも差分を形成するために更なるインプットを追加するステップ、を含むステートメント1~8のいずれかに記載の方法が提供されてよい。
【0154】
(ステートメント10)実施形態では、前記ターゲットを満たすのに必要なものより多くのデジタルアセットの額を指す超過インプットをユーザから受信することに応答して、前記第1トランザクションの新しいインスタンスを生成し、前記超過インプットを前記第1トランザクションの前記新しいインスタンスに追加するステップ、を含むステートメント1~9のいずれかに記載の方法が提供されてよい。
【0155】
(ステートメント11)実施形態では、前記メディア鍵は復号鍵を含み、少なくとも前記復号鍵を用いてメディアコンテンツのアイテムを復号することにより、前記ユーザが前記メディアコンテンツのアイテムの前記アクセスを実行できるようにする、ステートメント1~10のいずれかに記載の方法が提供されてよい。
【0156】
(ステートメント12)前記メディア鍵は、個別メディア鍵が前記複数のユーザの各々により計算できるようにするよう構成され、それにより、インプットを提供したユーザのみがメディアコンテンツのアイテムへのアクセスできるようにする、ステートメント1~11のいずれかに記載の方法が提供されてよい。
【0157】
(ステートメント13)実施形態では、各々の個別メディア鍵は個別復号鍵を含む、ステートメント11及び12に記載の方法。が提供されてよい
(ステートメント14)実施形態では、前記ユーザのインプットの各々は、それぞれのソーストランザクションのアウトプットをアンロックするそれぞれのアンロックスクリプトを含み、前記それぞれのアンロックスクリプトは、前記ユーザのそれぞれの公開鍵、及び前記ユーザの秘密鍵を用いて形成された前記ユーザのそれぞれの署名を含む、ステートメント1~13のいずれかに記載の方法が提供されてよい。
【0158】
(ステートメント15)実施形態では、各ユーザの個別メディア鍵は、該ユーザから受信されたインプットから取り入れられた前記ユーザのそれぞれの公開鍵に基づき生成される、ステートメント12又は13に従属するステートメント14に記載の方法が提供される。
【0159】
(ステートメント16)本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され、ベンダのコンピュータ機器上で実行するとステートメント1~15のうちの一項に記載の方法を実行するよう構成される、コンピュータプログラムが提供される。
【0160】
(ステートメント17)本願明細書に開示される別の態様によると、ベンダのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードはステートメント1~15のうちの一項に記載の方法を実行するよう構成される、コンピュータ機器が提供される。
【0161】
(ステートメント18)本願明細書に開示される別の態様によると、オフチェーンデータソースの中で利用可能にされたメディアコンテンツのアイテムにアクセスする方法であって、前記方法は、ユーザにより、
第1トランザクションをホスティングするベンダのサーバにアクセスするステップであって、前記第1トランザクションは、(i)前記ベンダへ移転すべきデジタルアセットの額を指定する少なくとも第1アウトプットを含む1つ以上のアウトプット、及び(ii)最初に全部で0個以上のインプットであって、前記0個以上のインプットにより指される任意のソーストランザクションの任意のアウトプットの中で指定される前記デジタルアセットの合計インプット額は、前記1つ以上のアウトプットにより指定される前記デジタルアセットの合計アウトプット額より少なく、前記第1トランザクションの前記第1アウトプットは、前記第1アウトプットをアンロックするためにアンロックスクリプトにより満たされるべき条件を指定するロックスクリプトを含む、全部で0個以上のインプットと、を含む、ステップと、
サイドチャネルを介して前記サーバへ、前記第1トランザクションに追加されるべき前記複数のユーザにより送信された複数のインプットの中の少なくとも1つのインプットを送信し、各インプットは前記デジタルアセットの額を指定するそれぞれのソーストランザクションのアウトプットを指し、それにより、ターゲットに達し、それにより前記第1トランザクションの前記インプットにより指される合計インプット額が前記アウトプット額に等しくなり又はそれを超えると、前記ベンダがブロックチェーンに記録されるように前記第1トランザクション及び第2トランザクションをブロックチェーンネットワーク上に発行できるようにするステップであって、前記第2トランザクションは、前記第1トランザクションの前記第1アウトプットを指し及び前記条件を満たす前記アンロックスクリプトを含む、ステップと、
を含み、
前記ロックスクリプトにより指定される前記条件は、前記アンロックスクリプトがメディア鍵を含むことを要求し、
前記方法は、前記メディアコンテンツのアイテムをアンロックするために前記メディア鍵を使用するステップ、を更に含む方法が提供される。
【0162】
(ステートメント19)本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され、ユーザのコンピュータ機器上で実行するとステートメント18に記載の方法を実行するよう構成される、コンピュータプログラムが提供される。
【0163】
(ステートメント20)本願明細書に開示される別の態様によると、ユーザのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードはステートメント18に記載の方法を実行するよう構成される、コンピュータ機器が提供される。
【0164】
(ステートメント21)本願明細書に開示される別の態様によると、ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、1つ以上のコンピュータ可読データ媒体上に具現化され、
第1トランザクションであって、(i)ベンダへ移転すべきデジタルアセットの額を指定する少なくとも第1アウトプットを含む1つ以上のアウトプットと、(ii)複数の異なるユーザからの複数のインプットと、を含み、各インプットは前記デジタルアセットの額を指定するそれぞれのソーストランザクションのアウトプットを指し、前記第1トランザクションのインプットにより指されるデジタルアセットの合計インプット額は、前記1つ以上のアウトプットにより指定される合計アウトプット額と等しく又はそれを超え、前記第1トランザクションの前記第1アウトプットは、前記第1アウトプットをアンロックするためにアンロックスクリプトにより満たされるべき条件を指定するロックスクリプトを含む、第1トランザクションと、
前記第1トランザクションの前記第1アウトプットを指すインプットを含む第2トランザクションであって、前記第2トランザクションのインプットは、前記条件を満たすアンロックスクリプトを含み、前記ロックスクリプトにより指定される前記条件は、アンロックスクリプトが、オフチェーンデータソースに格納されたメディアコンテンツのアイテムへのアクセスを可能にするメディア鍵を含むことを要求する、第2トランザクションと、
を含むトランザクションのセットが提供される。
【0165】
開示された技術の他の変形例又は使用事例は、本明細書で開示されると、当業者に明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
【外国語明細書】