(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-26
(54)【発明の名称】コンピュータで実施される方法およびシステム
(51)【国際特許分類】
G06Q 40/06 20120101AFI20241219BHJP
【FI】
G06Q40/06
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024538183
(86)(22)【出願日】2022-09-01
(85)【翻訳文提出日】2024-06-21
(86)【国際出願番号】 EP2022074396
(87)【国際公開番号】W WO2023031368
(87)【国際公開日】2023-03-09
(32)【優先日】2021-09-02
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2022-05-06
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】アンドリュー・ジェームズ・ミー
(72)【発明者】
【氏名】リッキー・チャールズ・ランド
(72)【発明者】
【氏名】ポール・クラーク
(72)【発明者】
【氏名】アレックス・ウッズ
(72)【発明者】
【氏名】ジャック・オーウェン・デイヴィーズ
(72)【発明者】
【氏名】ウェイ・ジャン
【テーマコード(参考)】
5L040
【Fターム(参考)】
5L040BB57
(57)【要約】
ブロックチェーン上で、資産と対話する少なくとも2つのクライアントを追跡するためのコンピュータで実施される方法であって、ブロックチェーンは、資産に関連するトランザクションのセットと、各クライアントに関連するトランザクションのセットとを備える。資産の追跡は、資産対話イベントに関連する少なくとも2つのクライアントに基づくデータおよび資産を示すデータを備える資産対話イベント要求を受信することと、資産に関連するトランザクションのセットへの参照および少なくとも2つのクライアントに関連するトランザクションのセットへの参照に基づいてイベントトランザクションを生成することと、イベントトランザクションをブロックチェーンに出すこととを備える。
【特許請求の範囲】
【請求項1】
ブロックチェーン上で、資産と対話する少なくとも2つのクライアントを追跡するためのコンピュータで実施される方法であって、前記ブロックチェーンが、前記資産に関連するトランザクションのセット、前記少なくとも2つのクライアントのうちの第1のクライアントに関連するトランザクションの第1のセット、および前記少なくとも2つのクライアントのうちの第2のクライアントに関連するトランザクションの第2のセットを備え、前記方法が、
資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび前記資産を示すデータを備える資産対話イベント要求を受信するステップと、
前記資産に関連するトランザクションの前記セットへの少なくとも1つの参照、
前記第1のクライアントに関連するトランザクションの前記セットへの少なくとも1つの参照、および
前記第2のクライアントに関連するトランザクションの前記セットへの少なくとも1つの参照
に基づいてイベントトランザクションを生成するステップと、
前記イベントトランザクションを前記ブロックチェーンに出すステップとを備える、方法。
【請求項2】
前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照のうちの第1の参照が、前記資産に関連するトランザクションの前記セットに関連する資産トランザクション出力点を備える、請求項1に記載の方法。
【請求項3】
前記資産トランザクション出力点が、前記資産に関連するトランザクションの前記セットの中の次のトランザクションを指す、請求項2に記載の方法。
【請求項4】
前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照の第2の参照が、前記資産に関連するトランザクションの前記セットの中の最新のトランザクションに記憶されているデータを備える、請求項1から3のいずれかに記載の方法。
【請求項5】
前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照の前記第2の参照が、前記資産に関連するトランザクションの前記セットの中の前記最新のトランザクションの前記記憶されているデータペイロードの一部である、請求項4に記載の方法。
【請求項6】
前記第1のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照のうちの第1の参照および前記第2のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照のうちの第1の参照の各々が、第1のクライアントに関連するトランザクションの前記セットおよび前記第2のクライアントに関連するトランザクションの前記セットの各々に関連するトランザクション出力点を備える、請求項1から5のいずれかに記載の方法。
【請求項7】
各トランザクション出力点が、前記クライアントに関連するトランザクションの各々のそれぞれのセットの中の次のトランザクションを指す、請求項6に記載の方法。
【請求項8】
前記資産に関連するトランザクションの前記セットが、前記資産に関連するイベントストリームに関し、前記少なくとも2つのクライアントの中の所与のクライアントに関連するトランザクションの各セットが、前記所与のクライアントに関連するイベントストリームに関する、請求項1から7のいずれか一項または複数項に記載の方法。
【請求項9】
各イベントストリームが、前記イベントストリームがスマートコントラクトに関連するイベントのシーケンスを追跡するように、それぞれのスマートコントラクトを表す、請求項8に記載の方法。
【請求項10】
前記イベントトランザクションが、前記資産対話イベントに基づくデータを備える、請求項1から9のいずれかに記載の方法。
【請求項11】
前記資産対話イベントを示す前記データが、前記イベントトランザクションの消費不可能な出力に記憶される、請求項10に記載の方法。
【請求項12】
前記資産が曲であり、および/または、前記資産対話イベントが前記少なくとも2つのクライアントの間で前記資産の所有権を交換することである、請求項1から11のいずれかに記載の方法。
【請求項13】
前記資産に関連するトランザクションの前記セットへの参照を取得するステップと、
前記資産対話イベントに関連する前記クライアントに関連するトランザクションの各セットへの参照を取得するステップとをさらに備える、請求項1から12のいずれかに記載の方法。
【請求項14】
前記イベントトランザクションが、前記イベントトランザクションが属すトランザクションの各セットのためのペイロードを備える、請求項1から13のいずれかに記載の方法。
【請求項15】
前記イベントトランザクションが、前記資産に関連するトランザクションの前記セットに関連する第1のペイロード、前記第1のクライアントに関連するトランザクションの前記セットに関連する第2のペイロード、および前記第2のクライアントに関連するトランザクションの前記セットに関連する第3のペイロードを備える、請求項14に記載の方法。
【請求項16】
前記第1のペイロードが前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照に基づき、前記第2のペイロードが前記第1のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照に基づき、前記第3のペイロードが前記第2のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照に基づく、請求項15に記載の方法。
【請求項17】
前記第1のペイロード、前記第2のペイロード、および前記第3のペイロードがマークル木根であり、前記方法がさらに、各マークル木を生成するステップと、各々の生成されたマークル木に基づいて各マークル木根を計算するステップとを備える、請求項15または16に記載の方法。
【請求項18】
前記ペイロードが各々前記イベントトランザクションの出力に記憶される、請求項15から17のいずれか一項に記載の方法。
【請求項19】
前記資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび前記資産を示すデータに基づいてデータペイロードを生成するステップをさらに備える、請求項1から18のいずれかに記載の方法。
【請求項20】
前記データペイロードがマークル木根である、請求項19に記載の方法。
【請求項21】
前記データペイロードを生成する前記ステップが、前記資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび前記資産を示すデータを備えるマークル木を生成するステップを備える、請求項20に記載の方法。
【請求項22】
前記データペイロードが前記イベントトランザクションの出力に記憶される、請求項21に記載の方法。
【請求項23】
前記資産に関連するトランザクションのセットを作成するための作成要求を受信するステップと、
前記資産に関連するトランザクションの前記セットに関連する、および前記少なくとも2つのクライアントのうちの第1のクライアントに関連するトランザクションのセットに関連する、第1の所有権トランザクションを生成して前記ブロックチェーンに出すステップとをさらに備える、請求項1から23のいずれかに記載の方法。
【請求項24】
前記第1の所有権トランザクションが、前記資産を一意に識別するデジタルフィンガープリントを備える、請求項23に記載の方法。
【請求項25】
前記資産対話イベントが、前記少なくとも2つのクライアントのうちの前記第1のクライアントから前記少なくとも2つのクライアントのうちの前記第2のクライアントへの前記資産の所有権の移転を示す情報を備える所有権更新要求である、請求項1から24のいずれかに記載の方法。
【請求項26】
前記イベントトランザクションが、前記第1のクライアントが前記第2のクライアントに所有権を移転することに基づくデータを備える、請求項25に記載の方法。
【請求項27】
前記所有権移転に基づく前記データが、前記更新トランザクションの消費不可能な出力に記憶される、請求項26に記載の方法。
【請求項28】
前記イベントトランザクションが、前記資産を使用する前記第1のクライアントに基づくデータを備える、請求項26に記載の方法。
【請求項29】
請求項1から28のいずれか一項または複数項に記載の方法を実行するように構成される、デバイス。
【請求項30】
請求項29に記載のデバイスによるサーバと、
前記サーバへの前記資産対話イベント要求の送信を調整するように構成される、第1のクライアントデバイスおよび第2のクライアントデバイスとを備える、システム。
【請求項31】
ブロックチェーン上で資産の所有権および使用を追跡するためのコンピュータで実施される方法であって、
前記ブロックチェーン上で資産を第1の所有者と関連付けるための作成要求を受信するステップと、
前記資産を使用するユーザを示すデータを備える少なくとも1つの使用メッセージを受信し、各使用メッセージを受信すると、
使用トランザクションを前記ブロックチェーンに出すステップであって、前記使用トランザクションが、使用される前記資産および前記資産を使用するユーザに基づくデータを備える、ステップと、
第2の所有者を示す情報を備える所有権更新要求を受信し、前記所有権更新要求を受信すると、
更新トランザクションを前記ブロックチェーンに出すステップであって、前記更新トランザクションが、前記資産、前記第1の所有者、および前記第2の所有者に基づく情報を備える、ステップと
を備える、方法。
【請求項32】
前記ブロックチェーンが、前記資産に関連するトランザクションのセット、前記ユーザに関連するトランザクションのセット、前記第1の所有者に関連するトランザクションのセット、および前記第2の所有者に関連するトランザクションのセットのうちの任意の1つまたは複数を備える、請求項31に記載の方法。
【請求項33】
前記資産に関連するトランザクションの前記セットが前記資産に関連するスマートコントラクトと関連付けられ、前記第1の所有者に関連するトランザクションの前記セットが前記第1の所有者に関連するスマートコントラクトと関連付けられ、前記第2のユーザに関連するトランザクションの前記セットが前記第2のユーザに関連するスマートコントラクトと関連付けられ、前記ユーザに関連するトランザクションの前記セットが前記ユーザに関連するスマートコントラクトと関連付けられる、請求項32に記載の方法。
【請求項34】
前記資産に関連するトランザクションの前記セットが前記資産に関連するイベントストリームに関し、前記ユーザに関連するトランザクションの前記セットが前記ユーザに関連するイベントストリームに関し、前記第1の所有者に関連するトランザクションの前記セットが前記第1の所有者に関連するイベントストリームに関し、前記第2の所有者に関連するトランザクションの前記セットが前記第2の所有者に関連するイベントストリームに関する、請求項32に記載の方法。
【請求項35】
各イベントストリームが、前記イベントストリームがスマートコントラクトに関連するイベントのシーケンスを追跡するように、スマートコントラクトを表す、請求項34に記載の方法。
【請求項36】
前記使用トランザクションが、前記資産に関連するトランザクションの前記セットへの少なくとも1つの参照に基づくデータを備える第1のデータペイロードと、前記ユーザに関連するトランザクションの前記セットへの少なくとも1つの参照に基づくデータを備える第2のデータペイロードとを備える、請求項32から35のいずれか一項または複数項に記載の方法。
【請求項37】
前記資産に関連するトランザクションの前記セットが、前記資産の所有権の履歴を備え、示し、またはそれに基づく、請求項32から36のいずれか一項に記載の方法。
【請求項38】
前記更新トランザクションが、前記資産に関連するトランザクションの前記セットからのトランザクションへの第3の参照に基づくデータを備える第3のデータペイロード、前記第1の所有者に関連するトランザクションの前記セットからのトランザクションへの第4の参照に基づくデータを備える第4のデータペイロード、および前記第2の所有者に関連するトランザクションの前記セットからのトランザクションへの第5の参照に基づくデータを備える第5のデータペイロードを備える、請求項32から37のいずれか一項に記載の方法。
【請求項39】
前記ブロックチェーンへの前記更新トランザクションが確認されると、前記資産の所有権が前記第1の所有者から前記第2の所有者に移転されると見なされる、請求項38に記載の方法。
【請求項40】
前記資産への参照を備える履歴要求を要求者から受信し、前記履歴要求の受信に応答して、
前記資産の使用の履歴を前記要求者に提供するステップをさらに備え、前記資産の前記使用の前記履歴が、前記資産に関連するトランザクションの前記セットからの情報を備え、かつ/または、前記資産に関連するトランザクションの前記セットからの情報を使用して検証される、請求項32から39のいずれか一項または複数項に記載の方法。
【請求項41】
前記使用メッセージがユーザによる前記資産の使用に基づくデータを備え、前記使用トランザクションが前記資産の使用を示すデータを備える、請求項31から40のいずれか一項または複数項に記載の方法。
【請求項42】
前記資産が曲であり、使用を示す前記データが、ユーザが前記曲を聴いた回数および/または時間の長さを備える、請求項1から41のいずれかに記載の方法。
【請求項43】
請求項31から41のいずれか一項または複数項に記載の方法を実行するように構成される、デバイス。
【請求項44】
請求項43に記載のデバイスによるサーバと、
前記サーバへの更新メッセージの送信を調整するように構成される、第1の所有権デバイスおよび第2の所有権デバイスとを備える、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、分散型台帳、すなわち複数のユーザおよび所有者のためのブロックチェーンに関連する1つまたは複数のサービスのプラットフォームを実装するための方法およびシステムに関する。より具体的には、本開示は、限定はされないが、ブロックチェーンに関連する資産(asset)の提供および資産のイベント管理を実現する。
【背景技術】
【0002】
ブロックチェーンとは、ある形式の分散型データ構造を指し、ブロックチェーンの複製は、分散型ピアツーピア(P2P)ネットワーク(以下では「ブロックチェーンネットワーク」と呼ばれる)の中の複数のノードの各々において維持され、広く公開される。ブロックチェーンは、データのブロックのチェーンを備え、各ブロックは、1つまたは複数のトランザクションを備える。いわゆる「コインベーストランザクション」以外の各トランザクションは、1つまたは複数のコインベーストランザクションまでの1つまたは複数のブロックにまたがり得るシーケンスの中の先行するトランザクションを指し示す。コインベーストランザクションは以下で論じられる。ブロックチェーンネットワークに出されるトランザクションは、新しいブロックに含まれる。新しいブロックは「マイニング」と呼ばれることが多い処理により作成され、これは、複数のノードの各々が競争して「プルーフオブワーク」を実行すること、すなわち、ブロックチェーンの新しいブロックに含められることを待機している、順序付けられ妥当性確認された未処理のトランザクションの定められたセットの表現に基づいて、暗号パズルを解くことを伴う。ブロックチェーンはノードにおいて枝刈りされてもよく、ブロックの公開はブロックヘッダだけの公開により達成され得ることに留意されたい。
【0003】
ブロックチェーンにおけるトランザクションは、デジタル資産(すなわち、ある数のデジタルトークン)を運ぶこと、仮想化された台帳もしくは登録簿の仕訳のセットを順序付けること、タイムスタンプエントリを受信して処理すること、および/またはインデックスポインタを時間的に順序付けることのうちの、1つまたは複数を実行するために使用される。ブロックチェーンは、ブロックチェーンに追加の機能を重ねるためにも利用され得る。ブロックチェーンプロトコルは、トランザクションにおける追加のユーザデータまたはデータに対するインデックスの記憶を可能にし得る。単一のトランザクションに記憶され得る最大のデータ容量にはあらかじめ指定された限界はないので、ますます複雑になるデータを組み込むことができる。たとえば、これは、ブロックチェーンの中の電子文書、またはオーディオデータもしくはビデオデータを記憶するために使用され得る。
【0004】
ブロックチェーンネットワークのノード(「マイナー」と呼ばれることが多い)は、以下で詳しく説明される、分散型のトランザクションの登録および検証のプロセスを実行する。要約すると、この処理の間に、ノードはトランザクションを妥当性確認し、それらをブロックテンプレートに挿入し、ノードはそのブロックテンプレートについて有効なプルーフオブワークの解を特定することを試みる。有効な解が見つかると、新しいブロックがネットワークの他のノードに広められるので、各ノードがブロックチェーンに新しいブロックを記録することを可能にする。トランザクションがブロックチェーンに記録されるようにするために、ユーザ(たとえば、ブロックチェーンクライアントアプリケーション)は、トランザクションが広められるように、それをネットワークのノードのうちの1つに送信する。トランザクションを受信するノードは競って、妥当性確認されたトランザクションを新しいブロックへ組み込むプルーフオブワークの解を見つけることができる。各ノードは同じノードプロトコルを実施するように構成され、これは、トランザクションが有効になるための1つまたは複数の条件を含む。無効なトランザクションは、広められることも、ブロックに組み込まれることもない。トランザクションが妥当性確認され、それによりブロックチェーン上で受け入れられると仮定すると、トランザクション(あらゆるユーザデータを含む)は、イミュータブルな公開記録としてブロックチェーンネットワークの中のノードの各々において登録されインデクシングされたままになる。
【0005】
最新のブロックを作成するためにプルーフオブワークパズルを解くことに成功したノードは通常、ある額のデジタル資産、すなわちある数のトークンを分配する「コインベーストランザクション」と呼ばれる新しいトランザクションにより報酬を受ける。無効なトランザクションの検出および拒絶は、ネットワークのエージェントとして活動し不正を報告して阻止する動機のある、競合するノードの活動によって実施される。情報を広く公開することで、ユーザはノードの実績を継続的に監査することが可能になる。ブロックヘッダのみの公開により、参加者はブロックチェーンの完全性が継続中であることを確実にすることが可能になる。
【0006】
「出力ベース」モデル(UTXOベースのモデルと呼ばれることがある)では、所与のトランザクションのデータ構造は、1つまたは複数の入力および1つまたは複数の出力を備える。あらゆる消費可能な出力は、トランザクションの先行するシーケンスから導出可能であるデジタル資産の額を指定する要素を備える。消費可能な出力は、UTXO(「未消費トランザクション出力」)または「出力」と呼ばれることがある。出力はさらに、出力のさらなる引き換えのための条件を指定するロッキングスクリプトを備え得る。ロッキングスクリプトは、デジタルトークンまたは資産を妥当性確認して移すために必要な条件を定義する述部である。トランザクション(コインベーストランザクション以外)の各入力は、先行するトランザクションにおけるそのような出力へのポインタ(すなわち、参照)を備え、指し示された出力のロッキングスクリプトをアンロックするためのアンロッキングスクリプトをさらに備え得る。よって、トランザクションのペアを考え、それらを第1のトランザクションおよび第2のトランザクション(または「標的」トランザクション)と呼ぶ。第1のトランザクションは、デジタル資産の額を指定し、出力をアンロッキングする1つまたは複数の条件を定義するロッキングスクリプトを備える、少なくとも1つの出力を備える。第2の標的トランザクションは、第1のトランザクションの出力へのポインタと、第1のトランザクションの出力をアンロックするためのアンロッキングスクリプトとを備える、少なくとも1つの入力を備える。
【0007】
そのようなモデルでは、第2の標的トランザクションが、ブロックチェーンにおいて広められて記録されるようにブロックチェーンネットワークに送信されるとき、各ノードにおいて適用される有効性の基準の1つは、アンロッキングスクリプトが第1のトランザクションのロッキングスクリプトにおいて定義される1つまたは複数の条件のすべてを満たすというものである。別の基準は、第1のトランザクションの出力が別のより前の有効なトランザクションによってまだ引き換えられていないということである。これらの条件のいずれかに従って標的トランザクションが無効であることを見出したいずれのノードも、トランザクションを広めず(場合によっては無効なトランザクションを登録するために有効なトランザクションとして広めない)、またブロックチェーンに記録されるべき新しいブロックにトランザクションを含めない。
【0008】
代替的なタイプのトランザクションモデルは、アカウントベースモデルである。この場合、各トランザクションは、過去のトランザクションのシーケンスの中の先行するトランザクションのUTXOを参照することによってではなく、絶対的なアカウント残高を参照することによって、移されるべき額を定義する。すべてのアカウントの現在の状態が、ブロックチェーンとは別のノードによって記憶され、定期的に更新される。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】英国特許出願第2102314.8号
【特許文献2】英国特許出願第2020279.2号
【特許文献3】英国特許出願第2002285.1号
【発明の概要】
【課題を解決するための手段】
【0010】
第1の態様によれば、ブロックチェーン上で資産の所有権および使用を追跡するためのコンピュータで実施される方法は、ブロックチェーン上で資産を第1の所有者と関連付けるための作成要求を受信するステップと、資産を使用するユーザを示すデータを備える少なくとも1つの使用メッセージを受信し、各使用メッセージを受信すると、使用トランザクションをブロックチェーンに出すステップであって、使用トランザクションが、使用される資産および資産を使用するユーザに基づくデータを備える、ステップと、第2の所有者を示す情報を備える所有権更新要求を受信し、所有権更新要求を受信すると、更新トランザクションをブロックチェーンに出すステップであって、更新トランザクションが、資産、第1の所有者、および第2の所有者に基づく情報を備える、ステップとを備える。
【0011】
第2の態様によれば、本開示は、第1の態様の方法を実行するように構成されるデバイスと、第1の態様の方法を実行するように構成されるサーバを備えるシステムと、サーバへの更新メッセージの送信を調整するように構成される第1の所有権デバイスおよび第2の所有権デバイスとを提供する。
【0012】
第3の態様によれば、本開示は、ブロックチェーン上で、資産と対話する少なくとも2つのクライアントを追跡するためのコンピュータで実施される方法を提供し、ブロックチェーンは、資産に関連するトランザクションのセットと、少なくとも2つのクライアントのうちの第1のクライアントに関連するトランザクションの第1セットと、少なくとも2つのクライアントのうちの第2のクライアントに関連するトランザクションの第2のセットとを備え、方法は、資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび資産を示すデータを備える資産対話イベント要求を受信するステップと、資産に関連するトランザクションのセットへの少なくとも1つの参照、第1のクライアントに関連するトランザクションのセットへの少なくとも1つの参照、および第2のクライアントに関連するトランザクションのセットへの少なくとも1つの参照に基づいてイベントトランザクションを生成するステップと、イベントトランザクションをブロックチェーンに出すステップとを備える。
【0013】
第4の態様によれば、本開示は、第3の態様の方法を実行するように構成されるデバイスと、第3の態様の方法を実行するように構成されるサーバを備えるシステムと、サーバへの資産対話イベント要求の送信を調整するように構成される第1のクライアントデバイスおよび第2のクライアントデバイスとを提供する。
【0014】
第5の態様によれば、本開示は、ブロックチェーン上で資産のイベントを追跡するためのコンピュータで実施される方法を提供し、この方法は、資産に関連するトランザクションのセットを作成するための作成要求を受信するステップと、資産に関連するトランザクションのセットに関連し、第1の所有者と関連付けられるトランザクションのセットに関連する、第1の所有権トランザクションを生成してブロックチェーンに出すステップと、第2の所有者を示す情報を備える所有権更新要求を受信し、所有権更新要求を受信すると、更新トランザクションを生成してブロックチェーンに出すステップであって、更新トランザクションが、第1の資産、第1の所有者、および第2の所有者を示す情報を備える、ステップとを備える。
【0015】
第6の態様によれば、本開示は、第5の態様の方法を実行するように構成されるデバイスと、第5の態様の方法を実行するように構成されるサーバを備えるシステムと、サーバへの所有権更新要求の送信を調整するように構成される第1の所有者デバイスおよび第2のクライアントデバイスとを提供する。
【0016】
ここで、開示される方法のいくつかの特定の構成要素および実施形態が、添付の図面を参照して例示として説明され、同様の参照番号は同様の特徴を指す。
【図面の簡単な説明】
【0017】
【
図1】ブロックチェーンを実装するための例示的なシステムを示す図である。
【
図2】例示的なトランザクションプロトコルを示す図である。
【
図3A】クライアントアプリケーションおよびそのインターフェースの例示的な実装形態を示す図である。
【
図3B】クライアントアプリケーションおよびそのインターフェースの例示的な実装形態を示す図である。
【
図4】ネットワークの各ブロックチェーンノード上で実行されるノードソフトウェアの例を示す図である。
【
図5】プラットフォームプロセッサと、ブロックチェーンネットワークと、クライアントとの間の対話を示す概略図である。
【
図6A】イベントおよび資産との対話を記録するための例示的な方法を示す図である。
【
図6B】イベントおよび資産との対話を記録するための例示的な方法を示す図である。
【
図6C】イベントおよび資産との対話を記録するための例示的な方法を示す図である。
【
図7】トランザクションの例示的なセットおよびそれらに含まれるトランザクションを示す概略図である。
【
図8】例示的なトランザクションフォーマットを示す図である。
【
図9】トランザクションの複数のセットに関連するトランザクションの例示的なトランザクションフォーマットを示す図である。
【
図10A】例示的なデータフォーマットおよび前記例示的なデータフォーマットに関連するトランザクションフォーマットを示す図である。
【
図10B】例示的なデータフォーマットおよび前記例示的なデータフォーマットに関連するトランザクションフォーマットを示す図である。
【
図10C】例示的なデータフォーマットおよび前記例示的なデータフォーマットに関連するトランザクションフォーマットを示す図である。
【
図10D】例示的なデータフォーマットおよび前記例示的なデータフォーマットに関連するトランザクションフォーマットを示す図である。
【
図11】ある態様による、ブロックチェーンに関連する複数のサービスのためのプラットフォームの概要を示す概略図である。
【
図12】ある態様による、ブロックチェーンに関連する複数のサービスのプラットフォームのコンポーネントを示す概略図である。
【
図13】本開示の様々な態様および実施形態が実装され得るコンピューティング環境を示す概略図である。
【発明を実施するための形態】
【0018】
したがって、あらゆるクライアントが、その計算能力が高いかどうかにかかわらず、計算的におよび機能的に負担の少ない簡単で、高速で、正確で、信頼性のあるセキュアな方式で、ブロックチェーンに関連する有用なアプリケーションに瞬時にアクセスしてそれと対話することを可能にする、セキュアな、複雑ではない、ユーザフレンドリーな、効率的な、かつロバストな技法を実装することに対する要望がある。より具体的には、資産に関連する使用および所有権の移転を含むイベント(および他の技術的なおよび現実世界の対話)のセキュアで、簡単で、高速で、正確で、同期された追跡を実現することに対する要望がある。
【0019】
そのような改善された解決策が考案された。本開示は、複数のユーザおよびクライアントにまたがる現実世界のイベントおよび資産との対話が、簡単に、セキュアに、順序通りに、および/もしくは瞬時に記録され、または、前記資産に利害関係または関心をもつ前記クライアントによってブロックチェーンから取得され得るような、1つまたは複数の技法を提案することによって、上記の技術的な問題に対処する。方法、デバイス、およびシステムは、そのようなクライアントが、ブロックチェーンを使用するためのどのような処理または機能を実装する必要も、ユーザ管理のためのどのような処理または機能を実装する必要もなく、それでも、ブロックチェーンに関連するすべての利点を利用することが可能であるような、ブロックチェーンに関連する1つまたは複数のサービスのためのアプリケーションプログラミングインターフェース(API)を提供する。
【0020】
第1の態様によれば、本開示は、ブロックチェーン上で資産の所有権および使用を追跡するためのコンピュータで実施される方法を提供し、この方法は、ブロックチェーン上で資産を第1の所有者と関連付けるための作成要求を受信するステップと、資産を使用するユーザを示すデータを備える少なくとも1つの使用メッセージを受信し、各使用メッセージを受信すると、使用トランザクションをブロックチェーンに出すステップであって、使用トランザクションが、使用される資産および資産を使用するユーザに基づくデータを備える、ステップと、第2の所有者を示す情報を備える所有権更新要求を受信し、所有権更新要求を受信すると、更新トランザクションをブロックチェーンに出すステップであって、更新トランザクションが、資産、第1の所有者、および第2の所有者に基づく情報を備える、ステップとを備える。
【0021】
有利には、ブロックチェーンおよびブロックチェーントランザクションの使用は、本態様およびあらゆる関連する態様に対して、イミュータビリティ、セキュリティ、および監査可能性をもたらす。これは、本態様のユーザが、イベントの耐改竄性のある記録もしくはログ、またはイベントの逐次的な発生を確認する証明書を、確立および/または維持/更新することを可能にする技術的な特徴を提供するので、特に重要であり、本態様におけるイベントとは、資産の使用および/または所有権の移転である。
【0022】
任意選択で、ブロックチェーンは、資産に関連するトランザクションのセット、ユーザに関連するトランザクションのセット、第1の所有者に関連するトランザクションのセット、および第2の所有者に関連するトランザクションのセットのうちの任意の1つまたは複数を備える。
【0023】
有利には、トランザクションのセットは、資産、所有者、およびユーザの各々の、ブロックチェーンベースのデータ表現を提供する。これはさらに、本態様に関連するあらゆる関係者(すなわち、監査者、所有者、ユーザ、または他)が、資産、所有者、ユーザなどに関連するあらゆるデータ関連の行動を効率的かつ簡単に分類し、追加し、検索し、または実行することを可能にする。終始提示されるように、これらのデータ関連の行動は、所有権の移転などの資産を監査するときまたは資産と対話するときに使用される。また、本明細書において論じられるように、イベントの分類は、特にダスト消費関係のチェーンの使用を通じて、ブロックチェーンの技術的な特徴の結果として維持される。また、ダスト消費関係のチェーンの結果として、あらゆる追加動作が、ブロックチェーンに順序通りに自動的に記録される。
【0024】
任意選択で、資産に関連するトランザクションのセットは、資産に関連するスマートコントラクトと関連付けられ、第1の所有者に関連するトランザクションのセットは、第1の所有者に関連するスマートコントラクトと関連付けられ、第2のユーザに関連するトランザクションのセットは、第2のユーザに関連するスマートコントラクトと関連付けられ、ユーザに関連するトランザクションのセットは、ユーザに関連するスマートコントラクトと関連付けられる。
【0025】
任意選択で、資産に関連するトランザクションのセットは、資産に関連するイベントストリームに関係し、ユーザに関連するトランザクションのセットは、ユーザに関連するイベントストリームに関係し、第1の所有者に関連するトランザクションのセットは、第1の所有者に関連するイベントストリームに関係し、第2の所有者に関連するトランザクションのセットは、第2の所有者に関連するイベントストリームに関係する。好ましくは、各イベントストリームは、イベントストリームがスマートコントラクトに関連するイベントのシーケンスを追跡するように、スマートコントラクトを表す。
【0026】
有利には、本態様は、イベントストリームに関連するイベントの耐改竄性のある記録もしくはログ、またはイベントの逐次的な発生を確認する証明書を、確立および/または維持/更新することを可能にし、イベントは、所与のスマートコントラクトのための、そのスマートコントラクトの実行のための受信されたクライアント入力に基づく。したがって、本実施形態は、イベントストリームESを処理すること、すなわち、作成し、更新し、および/または終了することを可能にするための、方法、デバイス、およびシステムを提案し、これは、ブロックチェーンを使用して実装され、イベントストリームESに関係するスマートコントラクトSCに関連するイベントの耐改竄性のあるログもしくは記録を自動的に作成する。
【0027】
任意選択で、使用トランザクションは、資産に関連するトランザクションのセットへの少なくとも1つの参照に基づくデータを備える第1のデータペイロードと、ユーザに関連するトランザクションのセットからのあるトランザクションへの少なくとも1つの参照に基づくデータを備える第2のデータペイロードとを備える。好ましくは、第1のデータペイロードおよび第2のデータペイロードの各々は、第1の参照および第2の参照に基づく。より好ましくは、第1の参照は次のトランザクションへの参照であり、第2の参照はトランザクションのセットの中の前のトランザクションへの参照である。さらにより好ましくは、第2の参照は前のトランザクションに記憶されているデータを備える参照であり、第1の参照は次のトランザクションが消費する(または消費するであろう)出力点である。より好ましくは、各データペイロードはマークル木根(Merkle tree)である。
【0028】
任意選択で、資産に関連するトランザクションのセットは、資産の所有権の履歴を備え、示し、またはそれに基づく。
【0029】
任意選択で、更新トランザクションは、資産に関連するトランザクションのセットからのあるトランザクションへの第3の参照に基づくデータを備える第3のデータペイロード、第1の所有者に関連するトランザクションのセットからのあるトランザクションへの第4の参照に基づくデータを備える第4のデータペイロード、および第2の所有者に関連するトランザクションのセットからのあるトランザクションへの第5の参照に基づくデータを備える第5のデータペイロードを備える。好ましくは、ブロックチェーンへの更新トランザクションを確認すると、資産の所有権は第1の所有者から第2の所有者に移転されると見なされる。
【0030】
任意選択で、第3のペイロード、第4のペイロード、および第5のペイロードの各々は、トランザクションのそれぞれのセットの中のトランザクションへの2つの参照に基づく。好ましくは、2つの参照は、前のトランザクション参照と次のトランザクション参照である。さらにより好ましくは、前のトランザクション参照は前のトランザクションに記憶されているデータを備える参照であり、次のトランザクション参照は次のトランザクションが消費する(または消費するであろう)出力点である。より好ましくは、各ペイロードはマークル木根である。
【0031】
任意選択で、本態様はさらに、資産への参照を備える履歴要求を要求者から受信するステップと、履歴要求の受信に応答して、資産の使用の履歴を要求者に提供するステップとを備え、資産の使用の履歴は、資産に関連するトランザクションのセットからの情報を備え、かつ/または、資産に関連するトランザクションのセットからの情報を使用して検証される。
【0032】
有利には、マークル木根およびマークル木証明の使用を通じて、資産履歴が、検証可能でありながらも選択的に公開可能になり、より粒度が高くセキュアなデータの制御が可能になる。
【0033】
任意選択で、使用メッセージはユーザによる資産の使用を示すデータを備え、使用トランザクションは資産の使用を示すまたは資産の使用に基づくデータを備える。有利には、これは、ある人物がそれらの使用を監査して確認することを可能にする技術的な特徴を提供する。
【0034】
任意選択で、資産は、pay-per-use型の交換不可能な商品、製品、またはサービスである。好ましくは、資産は曲であり、使用を示すデータは、ユーザがその曲を聞いた回数および/または時間の長さを備える。
【0035】
第2の態様によれば、本開示は、第1の態様の方法を実行するように構成されるデバイスと、第1の態様の方法を実行するように構成されるサーバを備えるシステムと、サーバへの更新メッセージの送信を調整するように構成される第1の所有権デバイスおよび第2の所有権デバイスとを提供する。
【0036】
第3の態様によれば、本開示は、ブロックチェーン上で、資産と対話する少なくとも2つのクライアントを追跡するためのコンピュータで実施される方法を提供し、ブロックチェーンは、資産に関連するトランザクションのセットと、少なくとも2つのクライアントのうちの第1のクライアントに関連するトランザクションの第1セットと、少なくとも2つのクライアントのうちの第2のクライアントに関連するトランザクションの第2のセットとを備え、方法は、資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび資産を示すデータを備える資産対話イベント要求を受信するステップと、資産に関連するトランザクションのセットへの少なくとも1つの参照、第1のクライアントに関連するトランザクションのセットへの少なくとも1つの参照、および第2のクライアントに関連するトランザクションのセットへの少なくとも1つの参照に基づくデータを備えるイベントトランザクションを生成するステップと、イベントトランザクションをブロックチェーンに出すステップとを備える。
【0037】
任意選択で、それは、資産に関連するトランザクションのセットへの参照を取得するステップと、資産対話イベントに関連するクライアントに関連するトランザクションの各セットへの参照を取得するステップとをさらに備える。
【0038】
任意選択で、資産に関連するトランザクションのセットへの少なくとも1つの参照のうちの第1の参照は、資産に関連するトランザクションのセットに関連する資産トランザクション出力点を備え、またはその資産トランザクション出力点である。好ましくは、資産トランザクション出力点は、資産に関連するトランザクションのセットの中の次のトランザクションを指し示す。
【0039】
任意選択で、資産に関連するトランザクションのセットへの少なくとも1つの参照のうちの第2の参照が、資産に関連するトランザクションのセットの中の最新のトランザクションに記憶されているデータを備える。好ましくは、資産に関連するトランザクションのセットへの少なくとも1つの参照のうちの第2の参照は、資産に関連するトランザクションのセットの中の最新のトランザクションに記憶されているデータペイロードの一部である。
【0040】
有利には、ブロックチェーントランザクションの異なる性質に基づいて2つの参照(すなわちトランザクション出力点およびトランザクション出力点に記憶されているデータ)を記憶することは、トランザクションのセットのセキュリティを向上させる。
【0041】
任意選択で、少なくとも2つのクライアントに関連するトランザクションのセットへの参照の各々は、少なくとも2つのクライアントに関連するトランザクションのセットの各々に関連するトランザクション出力点を備える。好ましくは、各トランザクション出力点は、クライアントに関連するトランザクションの各々のそれぞれのセットの中の最新のトランザクションを指し示す。
【0042】
任意選択で、イベントトランザクションがブロックチェーン上で確認されると、イベントトランザクションは、資産に関連するトランザクションのセットおよび少なくとも2つのクライアントに関連するトランザクションのセットの各々の一部であると見なされる。
【0043】
任意選択で、資産に関連するトランザクションのセットは、資産に関連するイベントストリームに関係し、少なくとも2つのクライアントのうちのある所与のクライアントに関連するトランザクションの各セットは、前記所与のクライアントに関連するイベントストリームに関係する。すなわち、少なくとも2つのクライアントの第1のクライアントに関連するトランザクションのセットは、第1のクライアントに関連するイベントストリームに関係し、少なくとも2つのクライアントの第2のクライアントに関連するトランザクションのセットは、第2のクライアントに関連するイベントストリームに関係する。好ましくは、各イベントストリームは、イベントストリームがスマートコントラクトに関連するイベントのシーケンスを追跡するように、それぞれのスマートコントラクトを表す。任意選択で、トランザクションの各セットは、それぞれのスマートコントラクトを表す。代替として、本実施形態では、イベントストリームのすべてに関連する1つのスマートコントラクトがある。この1つのスマートコントラクトは、複数のイベントストリームを更新する。
【0044】
任意選択で、イベントトランザクションは、資産対話イベントに基づくデータを備える。好ましくは、資産対話イベントに基づくデータは、イベントトランザクションの消費不可能な出力に記憶される。より好ましくは、消費不可能な出力はOP_RETURNオペコードを備える。
【0045】
任意選択で、資産は、pay-per-use型の交換不可能な商品、製品、またはサービスである。好ましくは、資産は曲であり、および/または、資産対話イベントは、少なくとも2つのクライアント間での資産の所有権を交換することである。
【0046】
任意選択で、方法はさらに、資産に関連するトランザクションのセットを作成するための作成要求を受信するステップと、資産に関連するトランザクションのセットに関連する、および少なくとも2つのクライアントの第1のクライアントに関連するトランザクションのセットに関連する、第1の所有権トランザクションを生成してブロックチェーンに出すステップとを備える。好ましくは、第1の所有権トランザクションは、資産を一意に識別するデジタルフィンガープリントに基づくデータを備える。
【0047】
任意選択で、イベントトランザクションは、イベントトランザクションが属すトランザクションの各セットのためのペイロードを備える。好ましくは、イベントトランザクションは、資産に関連するトランザクションのセットに関連する第1のペイロード、第1のクライアントに関連するトランザクションのセットに関連する第2のペイロード、および第2のクライアントに関連するトランザクションのセットに関連する第3のペイロードを備える。より好ましくは、第1のペイロードは資産に関連するトランザクションのセットへの少なくとも1つの参照に基づき、第2のペイロードは第1のクライアントに関連するトランザクションのセットへの少なくとも1つの参照に基づき、第3のペイロードは第2のクライアントに関連するトランザクションのセットへの少なくとも1つの参照に基づく。任意選択で、第1のペイロード、第2のペイロード、および第3のペイロードはマークル木根であり、方法はさらに、各マークル木を生成するステップと、マークル木根を計算するステップとを備える。任意選択で、ペイロードはイベントトランザクションの出力に各々記憶される。
【0048】
任意選択で、方法はさらに、資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび資産を示すデータに基づいてデータペイロードを生成するステップを備える。好ましくは、データペイロードはマークル木根である。より好ましくは、データペイロードを生成するステップは、資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび資産を示すデータを備えるマークル木を生成するステップを備える。さらにより好ましくは、データペイロードはイベントトランザクションの出力に記憶される。
【0049】
任意選択で、資産対話イベントは、少なくとも2つのクライアントの第1のクライアントから少なくとも2つのクライアントの第2のクライアントへの資産の所有権の移転を示す情報を備える、所有権更新要求である。好ましくは、イベントトランザクションは、第1のクライアントが所有権を第2のクライアントに移転することに基づくデータを備える。
【0050】
第4の態様によれば、本開示は、第3の態様の方法を実行するように構成されるデバイスと、第3の態様の方法を実行するように構成されるサーバを備えるシステムと、サーバへの資産対話イベント要求の送信を調整するように構成される第1のクライアントデバイスおよび第2のクライアントデバイスとを提供する。
【0051】
これらの第3および第4の態様によるいくつかの実施形態が、第1および/または第2の態様を参照して説明されたものと同じまたは同様の利点を提供することを、当業者は理解するだろう。
【0052】
第5の態様によれば、または代替として、第3の態様のさらなる実施形態として、本開示は、資産に関連するトランザクションのセットを作成するための作成要求を受信するステップと、資産に関連するトランザクションのセットに関連し、第1の所有者に関連するトランザクションのセットに関連する、第1の所有権トランザクションを生成してブロックチェーンに出すステップと、第2の所有権を示す情報を備える所有権更新要求を受信するステップと、所有権更新要求を受信すると、更新トランザクションを生成してブロックチェーンに出すステップとを備える、ブロックチェーン上で資産のイベントを追跡するためのコンピュータで実施される方法を提供し、更新トランザクションは、資産、第1の所有者、および第2の所有者に基づくデータを備える。
【0053】
任意選択で、上記が第3の態様の実施形態として提示される場合、所有者の各々は、先行する態様の中のクライアントの各々と同義であると見なされ得る。
【0054】
任意選択で、資産に基づくデータは資産に関連するトランザクションのセットへの参照であり、第1の所有者に基づくデータは第1の所有者に関連するトランザクションのセットへの参照であり、第2の所有者に基づくデータは第2の所有者に関連するトランザクションのセットへの参照である。好ましくは、参照は、トランザクションの同じセットの中の前のトランザクションに記憶されているデータに基づき、かつ/または、トランザクションの同じセットの一部であるトランザクションに資金提供するトランザクション出力点に基づく。
【0055】
任意選択で、トランザクションのセットへの参照は、トランザクションのセットの中のトランザクションを参照する出力点であり、またはその出力点である。好ましくは、出力点はトランザクションの各セットの中の次のトランザクションを参照する。すなわち、好ましくは、資産に関連するトランザクションのセットへの参照は、資産に関連するトランザクションのセットの中のトランザクションの出力点を備え、またはその出力点であり、第1の所有者に関連するトランザクションのセットへの参照は、第1の所有者に関連するトランザクションのセットの中のトランザクションの出力点を備え、またはその出力点であり、第2の所有者に関連するトランザクションのセットへの参照は、第2の所有者に関連するトランザクションのセットの中のトランザクションの出力点を備え、またはその出力点である。
【0056】
任意選択で、資産に関連するトランザクションのセットは、資産に関連するトランザクションのイベントストリームに関係し、第1の所有者に関連するトランザクションのセットは、第1の所有者に関連するイベントストリームに関係し、第2の所有者に関連するトランザクションのセットは、第2の所有者に関連するイベントストリームに関係する。
【0057】
任意選択で、各イベントストリームは、イベントストリームが前記それぞれのスマートコントラクトに関連するイベントのシーケンスを追跡するように、それぞれのスマートコントラクトを表す。代替として、本実施形態では、イベントストリームのすべてに関連する1つのスマートコントラクトがある。この1つのスマートコントラクトは、複数のイベントストリームを更新する。
【0058】
任意選択で、初期トランザクションは、資産を一意に識別するデジタルフィンガープリントに基づくデータを備える。
【0059】
任意選択で、更新トランザクションは、第1の所有者が所有権を第2の所有者に移転することに基づくデータを備える。好ましくは、所有権の移転に基づくデータは、更新トランザクションの消費不可能な出力に記憶される。より好ましくは、消費不可能な出力はOP_RETURNオペコードを備える。任意選択で、消費不可能な出力は加えて、OP_0オペコードを備える。
【0060】
任意選択で、資産は、pay-per-use型の交換不可能な商品、製品、またはサービスである。好ましくは、資産は曲である。
【0061】
第6の態様によれば、本開示は、第5の態様の方法を実行するように構成されるデバイスと、第5の態様の方法を実行するように構成されるサーバを備えるシステムと、サーバへの所有権更新要求の送信を調整するように構成される第1の所有者デバイスおよび第2のクライアントデバイスとを提供する。
【0062】
この第4の態様によるいくつかの実施形態が、第1、第2、および/または第3の態様を参照して説明されたものと同じまたは同様の利点を提供することを、当業者は理解するだろう。
【0063】
さらなる態様によれば、先行する態様のいずれかの方法を実行するように構成されるデバイスが提供される。
【0064】
有利には、上で説明された態様を使用して、第1の所有者は、所有する資産に関連するイベントを追跡することが可能である。この追跡は、セキュアであり、イミュータブルであり、発生している他のイベントに関して順序通りであることが知られている。本明細書において説明されるように、イベントは資産の現実世界の使用に関係し得る。資産との対話および/または資産の状態に関するイベントを追跡することは、所有者/所有者のデバイスにとって特に関心の対象であり、それは、それがさらなる必要な修復を引き起こし得るから、および、イベントのシーケンス(資産を使用した最後のユーザを含む)が、状態のそのような変化を引き起こした可能性のあるユーザと、あらゆる必要とされる修復を適切に関連付けるからである。
【0065】
資産が、pay-per-use型の交換不可能な商品、製品、またはサービスである場合、本態様は、資産の使用、所有権、または任意の他の種類の対話、ならびに、資産の劣化および/または資産の価値低下などの対話に関連するあらゆる他の効果を追跡するという利点を提供する。これらの現実世界の対話を追跡するための実施形態の技術的な特徴は、より合理的で、瞬時の、セキュアな追跡システムを可能にする。
【0066】
有利には、トランザクションのセットの使用は、ブロックチェーンに記憶されているイベントデータへのプライバシーを保護する読み取りアクセスを実現することができる。ブロックチェーン上で追跡されている資産のイベント履歴を調べることを望む潜在的な所有者または他の監査者は、資産の生涯にわたる資産に関連するトランザクションのセットのみを見ることができる。同様に、資産のユーザは、トランザクションの自身のセットのみを調査することによって、ならびに/または、提供されたマークル証明の使用およびオンチェーンで記憶されているマークル木根に対する検証を通じて、異なる資産の自身の使用を監査することができる。任意選択で、そのようなプライバシー機能は、ブロックチェーンへの提出の前にイベントデータを暗号化し、および/またはブロックチェーンに存在証明を記憶しながら、イベントデータ自体をオフチェーンに保ち公に読めないようにすることに由来し得る。このデータは、要求されると、ブロックチェーンに記憶されている存在証明が実際のデータと調和していることを(マークル木証明の使用などを通じて)監査者が確認するために提供され得る。
【0067】
先行する態様のいずれの実施形態においても、デバイス(たとえば資産の潜在的な購入者により操作される)は、資産履歴要求を送信することができる。そのような要求を受信すると、資産の使用についてのデータが要求者に提供される。好ましくは、使用についてのデータは、資産に関連するトランザクションのセットを調査し、かつ/またはそれにアクセスすることによって得られる。好ましくは、使用についてのデータは、資産に関連するトランザクションのセットを使用して検証される。
【0068】
例示的なシステムの概要
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、通常はインターネットなどのワイドエリアインターネットワークである、パケット交換ネットワーク101からなり得る。パケット交換ネットワーク101は、パケット交換ネットワーク101内でピアツーピア(P2P)ネットワーク106を形成するように並べられ得る複数のブロックチェーンノード104を備える。示されていないが、ブロックチェーンノード104は準完全グラフとして並べられ得る。したがって、各ブロックチェーンノード104は、他のブロックチェーンノード104に高度に接続される。
【0069】
各ブロックチェーンノード104は、ピアのコンピュータ機器を備え、異なるノード104は異なるピアに属する。各ブロックチェーンノード104は、1つまたは複数のプロセッサ、たとえば1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)、ならびに特定用途向け集積回路(ASIC)などの他の機器を備える、処理装置を備える。各ノードはまた、メモリ、すなわち、非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、たとえば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリ、もしくはEEPROMなどの電子媒体、および/または高額ディスクドライブなどの光学媒体を利用する、1つまたは複数のメモリユニットを備え得る。
【0070】
ブロックチェーン150はデータのブロック151のチェーンを備え、ブロックチェーン150のそれぞれのコピーが、分散ネットワークまたはブロックチェーンネットワーク160の中の複数のブロックチェーンノード104の各々において維持される。上で言及されたように、ブロックチェーン150のコピーを維持することは、ブロックチェーン150を完全に記憶することを必ずしも意味しない。代わりに、ブロックチェーン150は、各ブロックチェーンノード150が各ブロック151のブロックヘッダ(以下で論じられる)を記憶する限り、データを枝刈りされ得る。チェーンの中の各ブロック151は1つまたは複数のトランザクション152を備え、この文脈においてトランザクションはある種のデータ構造を指す。データ構造の性質は、トランザクションモデルまたはスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、1つの特定のトランザクションプロトコルを全体で使用する。ある一般的なタイプのトランザクションプロトコルにおいて、各トランザクション152のデータ構造は、少なくとも1つの入力および少なくとも1つの出力を備える。各出力は、ある数量のデジタル資産を表す額を財産として指定し、その例は、出力が暗号によりにロックされる対象であるユーザ103である(アンロック、および引き換えまたは消費のために、そのユーザの署名または他のソリューションを必要とする)。各入力は、先行するトランザクション152の出力を指し示し、それによりそれらのトランザクションをつなぐ。任意選択で、入力はトランザクション出力点を参照し、出力点は、トランザクションidおよび参照されている出力のインデックスである。
【0071】
各ブロック151はまた、ブロック151に対する逐次的な順序を定義するために、チェーンの中の以前に作成されたブロック151を指し示すブロックポインタ155を備える。各トランザクション152(コインベーストランザクション以外)は、トランザクションのシーケンスに対する順序を定義するために、以前のトランザクションへのポインタを備える(トランザクション152のシーケンスは分岐することが許容されることに留意されたい)。ブロック151のチェーンは、チェーンにおいて最初のブロックであったジェネシスブロック(Gb)153まで戻る。チェーン150の初期の1つまたは複数の元のトランザクション152は、先行するトランザクションではなくジェネシスブロック153を指し示していた。
【0072】
ブロックチェーンノード104の各々は、トランザクション152を他のブロックチェーンノード104に転送し、それにより、トランザクション152がネットワーク106全体に広められるようにするように構成される。各ブロックチェーンノード104は、ブロック151を作成し、同じブロックチェーン150のそれぞれのコピーをそれぞれのメモリに記憶するように構成される。各ブロックチェーンノード104はまた、ブロック151へと組み込まれるのを待機しているトランザクション152の順序付けられたセット154を維持する。順序付けられたセット154は、「メモリプール」と呼ばれることが多い。本明細書におけるこの用語は、任意の特定のブロックチェーン、プロトコル、またはモデルに限定することを意図しない。それは、ノード104が有効であるものとして受け入れた、かつ同じ出力を消費することを試みる他のトランザクションをノード104が受け入れることが義務付けられない、トランザクションの順序付けられたセットを指す。
【0073】
所与の現在のトランザクション152jにおいて、入力(または各入力)は、トランザクションのシーケンスの中の先行するトランザクション152iの出力を参照するポインタを備え、これは、この出力が現在のトランザクション152jにおいて引き換えられる、または「消費される」ことになることを指定する。一般に、先行するトランザクションは、順序付けられたセット154または任意のブロック151における任意のトランザクションであり得る。先行するトランザクション152iは、現在のトランザクション152iが作成される時点で、またはネットワーク106に送信される時点ですら、必ずしも存在する必要はないが、現在のトランザクションが有効になるためには、先行するトランザクション152iが存在して妥当性確認される必要がある。したがって、本明細書における「先行する」は、ポインタにより連結される論理シーケンスにおいて先行するものを指し、時間的な順序における作成または送信の時間を必ずしも指さず、したがって、トランザクション152i、152jが順不同で作成または送信されることを必ずしも排除しない(オーファントランザクションについての以下の議論を参照)。先行するトランザクション152iは同様に、祖先トランザクションまたは先行者トランザクションと呼ばれ得る。
【0074】
現在のトランザクション152jの入力はまた、入力承認、たとえば、先行するトランザクション152iの出力がロックされる対象であるユーザ103aの署名を備える。そして、現在のトランザクション152jの出力は、新しいユーザまたはエンティティ103bに暗号によりロックされ得る。したがって、現在のトランザクション152jは、現在のトランザクション152jの出力において定義されるような新しいユーザまたはエンティティ103bに、先行するトランザクション152iの入力において定義される額を移すことができる。いくつかの場合、トランザクション152は、複数のユーザまたはエンティティ(そのうちの1つは、残金を与えるために元のユーザまたはエンティティ103aであり得る)の間で入力の額を分割するために、複数の出力を有し得る。いくつかの場合、トランザクションはまた、1つまたは複数の先行するトランザクションの複数の出力からの額を一緒に集めて、現在のトランザクションの1つまたは複数の出力を再分配するために、複数の入力を有し得る。
【0075】
ビットコインなどの出力ベースのトランザクションプロトコルによれば、ユーザまたは機械などのエンティティ103が新しいトランザクション152jを実施することを望むとき、エンティティはそのコンピュータ端末102から受信者に新しいトランザクションを送信する。エンティティまたは受信者は最終的に、このトランザクションをネットワーク106のブロックチェーンノード104(これは今日では通常はサーバまたはデータセンターであるが、原理的には他のユーザ端末であってもよい)のうちの1つまたは複数に送信する。新しいトランザクション152jを実施するエンティティ103がトランザクションをブロックチェーンノード104のうちの1つまたは複数に送信でき、いくつかの例では受信者に送信できないことも、排除されない。トランザクションを受信するブロックチェーンノード104は、ブロックチェーンノード104の各々において適用されるブロックチェーンノードプロトコルに従って、トランザクションが有効であるかどうかを確認する。ブロックチェーンノードプロトコルは通常、新しいトランザクション152jの中の暗号署名が予想される署名と一致することをブロックチェーンノード104が確かめることを必要とし、予想される署名は、トランザクション152の順序付けられたシーケンスの中の以前のトランザクション152iに依存する。そのような出力ベースのトランザクションプロトコルでは、これは、新しいトランザクション152jの入力に含まれるエンティティ103の暗号署名または他の承認が、新しいトランザクションが割り当てる先行するトランザクション152iの出力において定義される条件と一致することを確かめることを備えることがあり、この条件は通常、新しいトランザクション152jの入力の中の暗号署名または他の承認が、新しいトランザクションの入力がつなげられる以前のトランザクション152iの出力をアンロックすることを、少なくとも確かめることを備える。この条件は、先行するトランザクション152iの出力に含まれるスクリプトによって少なくとも部分的に定義され得る。代替として、それは単純にブロックチェーンノードプロトコルだけによって固定されてもよく、または、それはこれらの組合せによるものであってもよい。いずれにしても、新しいトランザクション152jが有効である場合、ブロックチェーンノード104は、それをブロックチェーンネットワーク106の中の1つまたは複数の他のブロックチェーンノード104に転送する。これらの他のブロックチェーンノード104は、同じブロックチェーンノードプロトコルに従って同じ試験を適用し、新しいトランザクション152jを1つまたは複数のさらなるノード104に転送するなどする。このようにして、新しいトランザクションが、ブロックチェーンノード104のネットワーク全体に広められる。
【0076】
出力ベースのモデルにおいて、所与の出力(たとえば、UXTO)が割り当てられるかどうかの定義は、それがブロックチェーンノードプロトコルに従って別の前方のトランザクション152jの入力によりすでに有効に引き換えられているかどうかである。トランザクションが有効になるための別の条件は、そのトランザクションが割り当てることまたは引き換えることを試みる先行するトランザクション152iの出力が、別のトランザクションによってまだ割り当てられていない/引き換えられていないことである。やはり、有効ではない場合、トランザクション152jは、ブロックチェーン150において広められず(無効であるものとしてフラグを立てられて警告のために広められない限り)、または記録されない。これは、取引者が同じトランザクションの出力を一度より多く割り当てることを試みるような、二重消費から守る。一方、アカウントベースのモデルは、アカウント残高を維持することによって二重消費から守る。やはり、トランザクションの定められた順序があるので、アカウント残高は任意のある時間において単一の定められた状態を有する。
【0077】
トランザクションを検証することに加えて、ブロックチェーンノード104はまた、マイニングと一般に呼ばれるプロセスにおいて、トランザクションのブロックを最初に作成するのを競い、これは「プルーフオブワーク」により支援される。ブロックチェーンノード104において、新しいトランザクションは、ブロックチェーン150に記録されているブロック151にまだ表れていない有効なトランザクションの順序付けられたセット154に追加される。そして、ブロックチェーンノードは、暗号パズルを解こうとすることによって、トランザクションの順序付けられたセット154からトランザクション152の新しい有効なブロック151を競って組み立てる。通常、これは、「ノンス」がトランザクションの順序付けられたセット154の表現と連結されてハッシュされると、ハッシュの出力が所定の条件を満たすような、ノンス値を探すことを備える。たとえば、所定の条件は、ハッシュの出力がある定められた数の先頭の0を有するということであり得る。これは、プルーフオブワークパズルの1つの具体的なタイプにすぎず、他のタイプが排除されないことに留意されたい。ハッシュ関数の性質は、それがその入力に関して予測不可能な出力を有するというものである。したがって、この探索は、ブルートフォースによってのみ実行することができるので、パズルを解こうとしている各ブロックチェーンノード104において大量の処理リソースを消費する。
【0078】
パズルを解こうとする第1のブロックチェーンノード104は、これをネットワーク106に告知し、ネットワークの中の他のブロックチェーンノード104によって容易に確かめられ得る証明として解を提供する(ハッシュへの解が与えられると、それによりハッシュの出力が条件を満たすようになることを確かめるのは単純である)。第1のブロックチェーンノード104は、ブロックを受け入れしたがってプロトコルルールを実施する、他のノードの閾値コンセンサスにブロックを広める。トランザクションの順序付けられたセット154は次いで、ブロックチェーンノード104の各々によってブロックチェーン150の中の新しいブロック151として記録されるようになる。ブロックポインタ155はまた、チェーンの中の以前に作成されたブロック151n-1を指し示す新しいブロック151nに割り当てられる。プルーフオブワークの解を作成するために必要とされる、たとえばハッシュの形式の大量の労力は、ブロックチェーンプロトコルのルールに従うという第1のノードの104の意図を示すものである。そのようなルールは、以前に妥当性確認されたトランザクションと同じ出力を割り当てる場合(これは別様に二重消費として知られている)、有効であるものとしてトランザクションを受け入れないことを含む。作成されると、ブロック151を改変することはできず、それは、ブロック151が、ブロックチェーンネットワーク106の中のブロックチェーンノード104の各々において認識され維持されるからである。ブロックポインタ155はまた、逐次的な順序をブロック151に課す。トランザクション152は、ネットワーク106の中の各ブロックチェーンノード104において順序付けられるブロックに記録されるので、これはトランザクションのイミュータブルな公開台帳を提供する。
【0079】
任意の所与の時間において競ってパズルを解く異なるブロックチェーンノード104は、それらのブロックチェーンノードがいつ解の探索を始めたか、またはトランザクションが受信された順序に応じて、任意の所与の時間におけるまだ公開されていないトランザクション154の順序付けられたセットの異なるスナップショットに基づいて、競ってパズルを解いていることがあることに留意されたい。それぞれのパズルを最初に解いた者が、どのトランザクション152が次の新しいブロック151nに含まれるか、およびどの順序で含まれるかを定義し、公開されていないトランザクションの現在のセット154は更新される。ブロックチェーンノード104は次いで、公開されていないトランザクション154の新しく定義された傑出した順序付けられたセットからブロックを競って作成し続け、以下同様である。生じ得るあらゆる「フォーク」を解決するためのプロトコルも存在し、これは、2つのブロックチェーンノード104が互いに非常に短い時間内にパズルを解き、その結果、ブロックチェーンの矛盾する景色がノード104間で広められるようになる状況である。つまり、フォークの先端がより長く成長した方が、最終的なブロックチェーン150になる。同じトランザクションが両方のフォークに現れるので、これはネットワークのユーザまたはエージェントに影響しないはずであることに留意されたい。
【0080】
ビットコインブロックチェーン(および大半の他のブロックチェーン)によれば、新しいブロック104を構築することに成功するノードは、(あるエージェントまたはユーザから別のエージェントまたはユーザにある額のデジタル資産を移す、エージェント間またはユーザ間のトランザクションとは対照的に)定められた数量のデジタル資産を分配する新しい特別な種類のトランザクションにおいて、許容される額のデジタル資産を割り当てる能力を与えられる。この特別なタイプのトランザクションは普通、「コインベーストランザクション」と呼ばれるが、「開始トランザクション」とも呼ばれ得る。それは通常、新しいブロック151nの最初のトランザクションを形成する。プルーフオブワークは、この特別なトランザクションが後で引き換えられることを可能にするプロトコルルールに従うという、新しいブロックを構築するノードの意図を示すものである。ブロックチェーンプロトコルルールは、この特別なトランザクションを引き換えられるようになるまで、成熟期間、たとえば100ブロックを必要とし得る。しばしば、通常の(非生成)トランザクション152はまた、そのトランザクションが公開されたブロック151nを作成したブロックチェーンノード104にさらに報酬を与えるために、その出力の1つにおいて追加のトランザクションフィーを指定する。この料金は普通は「トランザクションフィー」と呼ばれ、以下で論じられる。
【0081】
トランザクションの妥当性確認および公開に関与するリソースにより、典型的にはブロックチェーンノード104の少なくとも各々が、1つまたは複数の物理サーバユニットを備えるサーバという形態をとり、またはデータセンター全体という形態すらとる。しかしながら、原理的には、あらゆる所与のブロックチェーンノード104は、一緒にネットワーク接続されたユーザ端末またはユーザ端末のグループという形態をとり得る。
【0082】
各ブロックチェーンノード104のメモリは、それぞれの役割を実行し、ブロックチェーンノードプロトコルに従ってトランザクション152を扱うように、ブロックチェーンノード104の処理装置上で実行するように構成される、ソフトウェアを記憶する。ブロックチェーンノード104に対する本明細書に起因するあらゆる活動が、それぞれのコンピュータ機器の処理装置で実行されるソフトウェアによって実施され得ることが理解されるだろう。ノードソフトウェアは、アプリケーション層における1つまたは複数のアプリケーションで、またはオペレーティングシステム層もしくはプロトコル層などのより低次の層で、またはこれらの任意の組合せで実装され得る。
【0083】
消費するユーザの役割を果たす複数の関係者103の各々のコンピュータ機器102も、ネットワーク101に接続される。これらのユーザは、ブロックチェーンネットワークと対話し得るが、トランザクションおよびブロックの検証、構築、または伝播には参加しない。これらのユーザまたはエージェント103の一部は、トランザクションにおいて送信者または受信者として活動し得る。他のユーザは、必ずしも送信者または受信者として活動することなく、ブロックチェーン150と対話し得る。たとえば、一部の関係者は、ブロックチェーン150のコピーを記憶する(たとえば、ブロックチェーンノード104からブロックチェーンのコピーを取得した)ストレージエンティティとして活動し得る。
【0084】
関係者103の一部またはすべてが、異なるネットワーク、たとえばブロックチェーンネットワーク106に重畳されるネットワークの一部として接続され得る。ブロックチェーンネットワークのユーザ(「クライアント」と呼ばれることが多い)は、ブロックチェーンネットワークを含むシステムの一部であると言われることがある。しかしながら、これらのユーザはブロックチェーンノード104ではなく、それは、ブロックチェーンノードに必要とされる役割を実行しないからである。代わりに、各関係者103は、ブロックチェーンネットワーク106と対話し、それにより、ブロックチェーンノード106に接続する(すなわち、それと通信する)ことによって、ブロックチェーン150を利用し得る。第1の関係者103aおよびそのそれぞれのコンピュータ機器102a、ならびに第2の関係者103bおよびそのそれぞれのコンピュータ機器102bという、2名の関係者103および彼らのそれぞれの機器102が例示を目的に示されている。より多くのそのような関係者103およびそれぞれのコンピュータ機器102が、システム100において存在して参加していてもよいが、便宜的にそれらは示されていないことが理解されるだろう。各関係者103は、個人または組織であり得る。純粋に例示として、第1の関係者103aはAliceと本明細書では呼ばれ、第2の関係者103bはBobと呼ばれるが、これは限定するものではなく、本明細書でのAliceまたはBobへのあらゆる言及は、それぞれ「第1の関係者」および「第2の関係者」で置き換えられ得ることが理解されるだろう。
【0085】
各関係者103のコンピュータ機器102は、1つまたは複数のプロセッサ、たとえば1つまたは複数のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、および/またはFPGAを備える、それぞれの処理装置を備える。各関係者103のコンピュータ機器102はさらに、非一時的コンピュータ可読媒体の形式のメモリ、すなわちコンピュータ可読ストレージを備える。このメモリは、1つまたは複数のメモリ媒体、たとえばハードディスクなどの磁気媒体、SSD、フラッシュメモリ、もしくはEEPROMなどの電子媒体、および/または光学ディスクドライブなどの光学媒体を利用する、1つまたは複数のメモリユニットを備え得る。各関係者103のコンピュータ機器102のメモリは、処理装置上で実行するようになされる少なくとも1つのクライアントアプリケーション105のそれぞれのインスタンスを備えるソフトウェアを記憶する。所与の関係者103に対する本明細書に起因するあらゆる活動は、それぞれのコンピュータ機器102の処理装置上で実行されるソフトウェアを使用して実行され得ることが理解されるだろう。各関係者103のコンピュータ機器102は、少なくとも1つのユーザ端末、たとえばデスクトップもしくはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを備える。所与の関係者103のコンピュータ機器102はまた、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなどの、1つまたは複数の他のネットワーク接続されたリソースを備え得る。
【0086】
クライアントアプリケーション105は最初に、たとえばサーバからダウンロードされる、あるいは、リムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスクもしくはテープ、CDもしくはDVD ROMなどの光学ディスク、またはリムーバブル光学ドライブなどの、リムーバブルストレージデバイス上で提供される、適切なコンピュータ可読記憶媒体上の任意の所与の関係者103のコンピュータ機器102に提供され得る。
【0087】
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには2つの主要な機能がある。これらのうちの1つは、それぞれの関係者103がトランザクション152を作成し、承認(たとえば署名)し、1つまたは複数のビットコインノード104に送信して、トランザクション152がブロックチェーンノード104のネットワーク全体に広められてブロックチェーン150に含まれるようにすることを可能にすることである。もう1つは、それぞれの関係者が現在所有するデジタル資産の額をそれぞれの関係者に報告することである。出力ベースのシステムでは、この第2の機能は、対象の関係者に属するブロックチェーン150全体に散在する様々な152トランザクションの出力において定義される額を照合することを備える。
【0088】
注意:様々なクライアント機能は所与のクライアントアプリケーション105へと統合されるものとして説明されることがあるが、これは必ずしも限定するものではなく、代わりに、本明細書において説明されるあらゆるクライアント機能は、一連の2つ以上の別個の適用例、たとえばAPIを介してインターフェースすること、または一方が他方へのプラグインであることにおいて実装され得る。より一般的には、クライアント機能は、アプリケーション層、またはオペレーティングシステムなどのより低次の層、またはこれらの任意の組合せにおいて実装され得る。以下は、クライアントアプリケーション105に関して説明されるが、それは限定するものではないことが理解されるだろう。
【0089】
各コンピュータ機器102上のクライアントアプリケーションまたはソフトウェア105のインスタンスは、ネットワーク106のブロックチェーンノード104のうちの少なくとも1つに動作可能に結合される。これは、クライアント105のウォレット機能がトランザクション152をネットワーク106に送信することを可能にする。クライアント105はまた、それぞれの関係者103が受信者であるあらゆるトランザクションについてブロックチェーン150にクエリするために、ブロックチェーンノード104に連絡することも可能である(または、実施形態では、ブロックチェーン150が、公的な存在であることにより一部トランザクションに信用をもたらす公的機関であるので、実際にブロックチェーン150における他の関係者のトランザクションを調査する)。各コンピュータ機器102のウォレット機能は、トランザクションプロトコルに従ってトランザクション152を編成して送信するように構成される。上で述べられたように、各ブロックチェーンノード104は、ブロックチェーンノードプロトコルに従ってトランザクション152を妥当性確認し、ブロックチェーンネットワーク106全体にトランザクション152を広めるためにそれらを転送するように構成される、ソフトウェアを実行する。トランザクションプロトコルおよびノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルを伴い、一緒に所与のトランザクションモデルを実装する。ブロックチェーン150の中のすべてのトランザクション152に対して、同じトランザクションプロトコルが使用される。同じノードプロトコルが、ネットワーク106の中のすべてのノード104によって使用される。
【0090】
所与の関係者103、たとえばAliceが、新しいトランザクション152jをブロックチェーン150に含まれるように送信することを望むとき、彼女は関連するトランザクションプロトコルに従って(彼女のクライアントアプリケーション105のウォレット機能を使用して)新しいトランザクションを編成する。彼女は次いで、クライアントアプリケーション105から、彼女が接続されている1つまたは複数のブロックチェーンノード104に、トランザクション152を送信する。たとえば、これは、Aliceのコンピュータ102に最善に接続されるブロックチェーンノード104であり得る。任意の所与のブロックチェーンノード104が新しいトランザクション152jを受信するとき、ブロックチェーンノード104は、ブロックチェーンノードプロトコルおよびそのそれぞれの役割に従って、新しいトランザクション152jを扱う。これは、新しく受信されたトランザクション152jが「有効」であるための何らかの条件を満たすかどうかをまず確かめることを備え、その例がまもなくより詳しく論じられる。一部のトランザクションプロトコルでは、妥当性確認のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であり得る。代替として、この条件は単に、ノードプロトコルの内蔵機能であってもよく、またはスクリプトとノードプロトコルの組合せによって定義されてもよい。
【0091】
新しく受信されるトランザクション152jが有効であるものとして見なされるように試験に合格する条件(すなわち、それが「妥当性確認される」条件)のもとで、トランザクション152jを受信する任意のブロックチェーンノード104が、新しい妥当性確認されたトランザクション152をそのブロックチェーンノード104に維持されているトランザクションの順序付けられたセット154に追加する。さらに、トランザクション152jを受信するあらゆるブロックチェーンノード104は、妥当性確認されたトランザクション152以降をネットワーク106の中の1つまたは複数の他のブロックチェーンノード104に広める。各ブロックチェーンノード104は同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、それがまもなくネットワーク106全体に広められることを意味する。
【0092】
所与のブロックチェーンノード104において維持されるトランザクションの順序付けられたセット154の利用を認められると、そのブロックチェーンノード104は、新しいトランザクション152を含むトランザクションのそれぞれの順序付けられたセット154の最新のバージョンについてのプルーフオブワークパズルを競って解き始める(他のブロックチェーンノード104が、トランザクションの異なる順序付けられたセット154に基づいてパズルを解こうとしていることがあるが、最初にたどり着いた者が最新のブロック151に含まれるトランザクションの順序付けられたセットを定義することを思い出されたい。最終的に、ブロックチェーンノード104は、Aliceのトランザクション152jを含む順序付けられたセット154の一部のためのパズルを解く)。プルーフオブワークが、新しいトランザクション152jを含む順序付けられたセット154に対して行われると、それはイミュータブルに、ブロックチェーン150の中のブロック151のうちの1つの一部になる。各トランザクション152は、より前のトランザクションへのポインタを備えるので、トランザクションの順序もイミュータブルに記録される。
【0093】
異なるブロックチェーンノード104は、所与のトランザクションの異なるインスタンスをまず受信するので、あるインスタンスが新しいブロック151において公開される前は、どのインスタンスが「有効」であるかについて矛盾した見方を有することがあり、それが公開される時点では、公開されるインスタンスが唯一の有効なインスタンスであることにすべてのブロックチェーンノード104が合意している。ブロックチェーンノード104があるインスタンスを有効であるものとして受け入れ、第2のインスタンスがブロックチェーン150に記録されていることを発見する場合、そのブロックチェーンノード104は、これを受け入れ、最初に受け入れたインスタンス(すなわち、ブロック151において公開されていないインスタンス)を廃棄する(すなわち、無効であるものとして扱う)。
【0094】
一部のブロックチェーンネットワークによって運用される代替のタイプのトランザクションプロトコルは、アカウントベースのトランザクションモデルの一部として、「アカウントベース」プロトコルと呼ばれることがある。アカウントベースの場合、各トランザクションは、過去のトランザクションのシーケンスの中の先行するトランザクションのUTXOを参照することによってではなく、絶対的なアカウント残高を参照することによって、移されるべき額を定義する。すべてのアカウントの現在の状態が、ブロックチェーンとは別に、そのネットワークのノードによって記憶され、定期的に更新される。そのようなシステムでは、トランザクションは、アカウントの実行中のトランザクションタリー(「ポジション」とも呼ばれる)を使用して順序付けられる。この値は、暗号署名の一部として送信者により署名され、トランザクション参照計算の一部としてハッシュされる。加えて、任意選択のデータフィールドはまた、署名されたトランザクションであってもよい。このデータフィールドは、たとえば以前のトランザクションIDがデータフィールドに含まれる場合、以前のトランザクションを指し示し得る。
【0095】
UTXOベースのモデル
図2は、例示的なトランザクションプロトコルを示す。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と省略される)は、ブロックチェーン150の基本データ構造である(各ブロック151は1つまたは複数のトランザクション152を備える)。以下は、出力ベースまたは「UTXO」ベースのプロトコルに言及して説明される。しかしながら、これはすべての可能な実施形態への限定ではない。例示的なUTXOベースのプロトコルはビットコインに言及して説明されるが、それは他の例示的なブロックチェーンネットワーク上で等しく実装され得ることに留意されたい。
【0096】
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つまたは複数の入力202および1つまたは複数の出力203を備えるデータ構造を備える。各出力203は、未消費のトランザクション出力(UTXO)を備えてもよく、これは、別の新しいトランザクションの入力202のソースとして使用され得る(UTXOがまだ引き換えられていない場合)。UTXOは、デジタル資産の額を指定する値を含む。これは、分散型台帳上のある設定された数のトークンを表す。UTXOはまた、情報の中でもとりわけ、UTXOの由来であるトランザクションのトランザクションIDを含み得る。トランザクションデータ構造はヘッダ201も備えることがあり、これは入力フィールド202および出力フィールド203のサイズのインジケータを備えることがある。ヘッダ201はまた、トランザクションのIDを含むことがある。実施形態では、トランザクションIDは、トランザクションデータ(トランザクションID自体を除く)のハッシュであり、ノード104に出される生のトランザクション152のヘッダ201に記憶される。
【0097】
Alice 103aが、対象のある額のデジタル資産をBob 103bに移すトランザクション152jを作成することを望んでいるとする。
図2において、Aliceの新しいトランザクション152jは「Tx1」とラベリングされる。Tx1は、シーケンスの中の先行するトランザクション152iの出力203においてAliceにロックされるデジタル資産の額をとり、その少なくとも一部をBobに移す。先行するトランザクション152iは、
図2では「Tx0」とラベリングされる。Tx0およびTx1は任意のラベルにすぎない。それらは、Tx0がブロックチェーン151の最初のトランザクションであることを必ずしも意味せず、Tx1がプール154の中のすぐ次のトランザクションであることも意味しない。Tx1は、Aliceにロックされている未消費の出力203をまだ有するあらゆる先行する(すなわち、祖先)トランザクションを指し示し得る。
【0098】
先行するトランザクションTx0は、Aliceが新しいトランザクションTx1を作成するとき、または少なくとも彼女がそれをネットワーク106に送信するときにはすでに、ブロックチェーン150のブロック151において妥当性確認されそれに含まれていることがある。それは、その時点ですでにブロック151のうちの1つに含まれていることがあり、または、順序付けられたセット154においてまだ待機していることがあり、その場合、それは新しいブロック151にまもなく含められる。代替として、Tx0およびTx1は、一緒に作成されてネットワーク106に送信されてもよく、または、ノードプロトコルが「オーファン」トランザクションのバッファリングを許容する場合、Tx0がTx1の後に送信されることすらあってもよい。トランザクションのシーケンスの文脈で本明細書において使用される「先行する」および「後続の」という用語は、トランザクションにおいて指定されるトランザクションポインタによって定義されるようなシーケンスにおけるトランザクションの順序を指す(どのトランザクションがどの他のトランザクションを指し示すか、など)。それらは、「先行者」および「後継者」、または「祖先」および「子孫」、「親」および「子」などにより等しく置き換えられ得る。これは、それらが作成される順序、ネットワーク106に送信される順序、または任意の所与のブロックチェーンノード104に到達する順序を必ずしも示唆しない。それでも、先行するトランザクション(祖先トランザクションまたは「親」)を指し示す後続のトランザクション(子孫トランザクションまたは「子」)は、親トランザクションが妥当性確認されるまでは、かつ妥当性確認されない限り、妥当性確認されない。親より前にブロックチェーンノード104に到達する子は、オーファンであると見なされる。それは、ノードプロトコルおよび/またはノード挙動に応じて、廃棄され、または親を待機するためにある時間の間バッファリングされ得る。
【0099】
先行するトランザクションTx0の1つまたは複数の出力203のうちの1つは、ここでUTXO0とラベリングされる特定のUTXOを備える。各UTXOは、UTXOによって表されるデジタル資産の額を指定する値と、後続のトランザクションが妥当性確認されるようにするために、したがってUTXOの引き換えが成功するために、後続のトランザクションの入力202におけるアンロッキングスクリプトによって満たされなければならない条件を定義するロッキングスクリプトとを備える。通常、ロッキングスクリプトは、額を特定の関係者(ロッキングスクリプトが含まれるトランザクションの受益者)にロックする。すなわち、ロッキングスクリプトはアンロッキング条件を定義し、その条件は通常、後続のトランザクションの入力におけるアンロッキングスクリプトが、先行するトランザクションがロックされる対象である関係者の暗号署名を備えるという条件を備える。
【0100】
ロッキングスクリプト(scriptPubKeyとしても知られている)は、ノードプロトコルによって認識される分野特有の言語で書かれるコードである。そのような言語の具体的な例は、ブロックチェーンネットワークによって使用される「Script」(大文字のS)と呼ばれる。ロッキングスクリプトは、トランザクション出力203を消費するためにどの情報が必要とされるか、たとえば、Aliceの署名の要件を指定する。アンロッキングスクリプトは、トランザクションの出力に現れる。アンロッキングスクリプト(scriptSigとしても知られている)は、ロッキングスクリプト基準を満たすために必要とされる情報を提供する分野特有の言語で書かれるコードである。たとえば、それはBobの署名を含み得る。アンロッキングスクリプトはトランザクションの入力202に現れる。
【0101】
よって、示される例では、Tx0の出力203におけるUTXO0は、UXTO0が引き換えられるようにするために(厳密には、UTXO0を引き換えようとする後続のトランザクションが有効になるために)Aliceの署名SIG PAを必要とするロッキングスクリプト[Checksig PA]を備える。[Checksig PA]は、Aliceの公開-秘密鍵のペアからの公開鍵PAの表現(すなわち、ハッシュ)を含む。Tx1の入力202は、Tx1を指し示す(たとえば、そのトランザクションIDであるTxID0によって指し示す、TxID0は実施形態ではトランザクション全体Tx0のハッシュである)ポインタを備える。Tx1の入力202は、Tx0のあらゆる他のあり得る出力の中からUTXO0を特定するために、Tx0内でUTXO0を特定するインデックスを備える。Tx1の入力202はさらに、Aliceが鍵のペアからの自身の秘密鍵をデータのあらかじめ定められた部分(暗号学では「メッセージ」と呼ばれることがある)に適用することによって作成される、Aliceの暗号署名を備えるアンロッキングスクリプト<Sig PA>を備える。Aliceにより有効な署名を提供するために署名される必要のあるデータ(または「メッセージ」)は、ロッキングスクリプトによって、またはノードプロトコルによって、またはこれらの組合せによって定義され得る。
【0102】
新しいトランザクションTx1がブロックチェーンノード104に到達すると、ノードはノードプロトコルを適用する。これは、アンロッキングスクリプトがロッキングスクリプトにおいて定義される条件(この条件は1つまたは複数の基準を備え得る)を満たすかどうかを確かめるために、ロッキングスクリプトおよびアンロッキングスクリプトを一緒に実行することを備える。実施形態では、これは2つのスクリプトを連結することを伴う。
<Sig PA><PA>||[Checksig PA]
ここで、「||」は連結を表し、「<...>」はスタックにデータを置くことを意味し、「[...]」はロッキングスクリプト(この例では、スタックベース言語)に含まれる関数である。より好ましくは、「<…>」はPUSHDATA符号化されたデータを指す。等価的に、スクリプトを連結するのではなく、スクリプトは共通のスタックを用いて次々に実行されてもよい。いずれにしても、一緒に実行されると、スクリプトは、Tx0の出力の中のロッキングスクリプトに含まれるような、Aliceの公開鍵PAを使用して、Tx1の入力の中のアンロッキングスクリプトがデータの予想される部分に署名するAliceの署名を含むことを認証する。データ自体(「メッセージ」)の予想される部分も、この認証を実行するために含まれる必要がある。実施形態では、署名されたデータはTx1の全体を備える(よって、平文でデータの署名された部分を指定する別個の要素が含まれる必要がなく、それは、もともと存在していたからである)。
【0103】
公開-秘密暗号による認証の詳細は、当業者には馴染みがある。基本的に、Aliceが自身の秘密鍵を使用してメッセージに署名した場合、平文のAliceの公開鍵およびメッセージを与えられると、ノード104などの別のエンティティは、メッセージがAliceによって署名されたに違いないことを認証することが可能である。署名することは通常、メッセージをハッシュし、ハッシュに署名し、これを署名としてメッセージへとタグ付けすることで、公開鍵のあらゆる保有者が署名を認証することを可能にすることを備える。したがって、本明細書における、特定のデータまたはトランザクションの一部に署名することなどへのあらゆる言及は、実施形態では、そのデータまたはトランザクション一部のハッシュに署名することを意味することに留意されたい。
【0104】
Tx1におけるアンロッキングスクリプトがTx0のロッキングスクリプトにおいて指定される1つまたは複数の条件を満たす場合(よって示される例では、Aliceの署名がTx1において提供されて認証される場合)、ブロックチェーンノード104はTx1を有効であると見なす。これは、ブロックチェーンノード104がTx1をトランザクションの順序付けられたセット154に追加することを意味する。ブロックチェーンノード104はまた、ネットワーク106の中の1つまたは複数の他のブロックチェーンノード104にトランザクションTx1を転送するので、それは、ネットワーク106全体に広められる。Tx1がブロックチェーン150において妥当性確認され含められると、これは消費されるものとしてTx0からのUTXO0を定義する。Tx1は、未消費のトランザクション出力203を消費する場合にのみ、有効であり得ることに留意されたい。別のトランザクション152によってすでに消費されている出力を消費しようとする場合、Tx1は、すべての他の条件が満たされている場合でも無効になる。したがって、ブロックチェーンノード104は、先行するトランザクションTx0の中の参照されるUTXOがすでに消費されているかどうか(すなわち、すでに有効な入力を別の有効なトランザクションへと形成したかどうか)を確かめる必要もある。これは、トランザクション152に定められた順序を課すことがブロックチェーン150にとって重要である1つの理由である。実際には、所与のブロックチェーンノード104は、トランザクション152がその中で消費されたどのUTXO203をマークする別個のデータベースを維持してもよいが、究極的には、UTXOが消費されたかどうかを定義するものは、UTXOが有効な入力をブロックチェーン150の中の別の有効なトランザクションへとすでに形成したかどうかである。
【0105】
所与のトランザクション152のすべての出力203において指定される総額が、すべてのその入力202によって指し示される総額より大きい場合、これもまた、大半のトランザクションモデルにおいて、無効であることの根拠になる。したがって、そのようなトランザクションは、広められず、ブロック151にも含められない。
【0106】
UTXOベースのトランザクションモデルにおいて、所与のUTXOは全体として消費される必要があることに留意されたい。それは、消費されるものとしてUTXOにおいて定義される額の一部を、別の一部が消費されながら「置き去りにする」ことができない。しかしながら、UTXOからの額は、次のトランザクションの複数の出力の間で分割され得る。たとえば、Tx0の中のUTXO0において定義される額は、Tx1の中の複数のUTX0間で分割され得る。したがって、AliceがUTXO0において定義される額のすべてをBobに与えることを望まない場合、彼女はリマインダーを使用してTx1の第2の出力の残金を自分に与え、または別の関係者に支払うことができる。
【0107】
実際には、Aliceは普通は、自分のトランザクション104を公開するビットコインノードに対する料金を含める必要がある。Aliceがそのような料金を含めない場合、Tx0はブロックチェーンノード104によって拒絶されてもよく、したがって、技術的には有効であっても、広められず、ブロックチェーン150に含められなくてもよい(ノードプロトコルは、ブロックチェーンノード104がトランザクション152を受け入れることを望まない場合、それを強いることはない)。一部のプロトコルでは、トランザクションフィーは、固有の別々の出力203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、入力202によって指し示される総額と所与のトランザクション152の出力203において指定される総額とのあらゆる差が、トランザクションを公開するブロックチェーンノード104に自動的に与えられる。たとえば、UTXO0へのポインタがTx1への唯一の入力であり、Tx1が唯一の出力UTXO1を有するとする。UTXO0において指定されるデジタル資産の額がUTXO1において指定される額より大きい場合、その差は、UTXO1を含むブロックを公開するノード104によって割り当てられ得る。しかしながら、代替または追加として、トランザクションフィーが、トランザクション152のUTXO203のうちの自身固有のUTXOにおいて明示的に指定され得ることは、必ずしも排除されない。
【0108】
AliceおよびBobのデジタル資産は、ブロックチェーン150のどこかにある任意のトランザクション152において彼らにロックされるUTXOからなる。したがって、通常は、所与の関係者103の資産は、ブロックチェーン150全体の、様々なトランザクション152のUTXO全体に分散している。所与の関係者103の総残高を定義する1つの数字が、ブロックチェーン150のどこかに保管されているということはない。それぞれの関係者にロックされており、別のその先のトランザクションにおいてまだ消費されていないすべての様々なUTXOの値を一緒に照合することが、クライアントアプリケーション150のウォレット機能の役割である。そのウォレット機能は、ビットコインノード104のいずれかに記憶されているようなブロックチェーン150のコピーをクエリすることによって、これを行うことができる。
【0109】
スクリプトコードはしばしば、概略的(すなわち、厳密な言語を使用せずに)に表現されることに留意されたい。たとえば、特定の関数を表すためにオペレーションコード(オペコード)を使用することがある。「OP_...」は、Script言語の特定のオペコードを指す。例として、OP_RETURNは、ロッキングスクリプトの最初おいてOP_FALSEが前にあるとトランザクション内のデータを記憶できるトランザクションの消費不可能な出力を生み出し、それによりブロックチェーン150にデータをイミュータブルに記録するような、Script言語のオペコードである。たとえば、データは、ブロックチェーンに記憶することが望まれる文書を備え得る。
【0110】
このようにOP_RETURNを使用することは、ビットコインベースのブロックチェーンシステム上で使用するために、証明可能で消費不可能なスクリプトを使用する具体的な例である。任意選択で、OP_0がOP_RETURNに加えて使用される。異なるブロックチェーンシステムは異なる機構を有し、スクリプトが消費不可能であることを確実にするための、および/またはトランザクションにデータを記憶するためのデータフォーマットを有することを、当業者は理解するだろう。
【0111】
通常、トランザクションの入力は、公開鍵PAに対応するデジタル署名を含む。実施形態では、これは、楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は特定のデータに署名する。いくつかの実施形態では、所与のトランザクションに対して、署名はトランザクション入力の一部、およびトランザクション出力の一部またはすべてに署名する。署名する出力の具体的な部分は、SIGHASHフラグに依存する。SIGHASHフラグは普通は、どの出力が署名されるかを選択するために署名の最後に含まれる(したがって署名の時点で固定される)4バイトのコードである。
【0112】
ロッキングスクリプトは時々「scriptPubKey」と呼ばれ、それぞれのトランザクションがロックされる対象である関係者の公開鍵をロッキングスクリプトが通常は備えるという事実を指している。アンロッキングスクリプトは時々「scriptSig」と呼ばれ、アンロッキングスクリプトが対応する署名を通常は供給するという事実を指している。しかしながら、より一般的には、UTXOが引き換えられるようにするための条件が署名を認証することを備えることは、ブロックチェーン150のすべての適用例において必須ではない。より一般的には、スクリプト言語は、任意の1つまたは複数の条件を定義するために使用され得る。したがって、より一般的な用語「ロッキングスクリプト」および「アンロッキングスクリプト」が好まれることがある。
【0113】
図1に示されるように、AliceおよびBobのコンピュータ機器102a、120bの各々のクライアントアプリケーションは、それぞれ、追加の通信機能を備え得る。この追加の機能は、Alice 103aがBob 103bとの別個のサイドチャネル301を確立する(いずれかの関係者または第三者の教唆により)ことを可能にする。サイドチャネル301は、ブロックチェーンネットワークとは別にデータの交換を可能にする。そのような通信は、「オフチェーン」通信と呼ばれることがある。たとえば、これは、AliceおよびBobの一方がトランザクション152をネットワーク106にブロードキャストすることを選ぶまで、トランザクション152がブロックチェーンネットワーク106に(まだ)登録されることなく、またはチェーン150に向かって進むことなく、AliceとBobとの間でトランザクション152を交換するために使用され得る。このようにトランザクションを共有することは、「トランザクションテンプレート」の共有と呼ばれることがある。トランザクションテンプレートは、完全なトランザクションを形成するために必要とされる1つまたは複数の入力および/または出力を欠いていることがある。代替または追加として、サイドチャネル301は、鍵、交渉される額または条項、データコンテンツなどの、任意の他のトランザクション関連データを交換するために使用され得る。
【0114】
サイドチャネル301は、ブロックチェーンネットワーク106と同じパケット交換ネットワーク101を介して確立され得る。代替または追加として、サイドチャネル301は、モバイルセルラーネットワークなどの異なるネットワーク、またはローカルワイヤレスネットワークなどのローカルエリアネットワーク、または、Aliceのデバイス102aとBobのデバイス102bとの間の直接の有線もしくはワイヤレスリンクすらも介して確立され得る。一般に、本明細書の他の箇所において言及されるサイドチャネル301は、「オフチェーン」で、すなわちブロックチェーンネットワーク106とは別にデータを交換するための、1つまたは複数のネットワーキング技術または通信媒体を介した、任意の1つまたは複数のリンクを備え得る。1つより多くのリンクが使用される場合、オフチェーンリンクの束または集合体は全体として、サイドチャネル301と呼ばれ得る。したがって、AliceおよびBobがいくつかの情報またはデータなどを、サイドチャネル301を介して交換すると言われる場合、これは必ずしも、すべてのこれらのデータが厳密に同じリンクで送信されなければならないこと、または同じタイプのネットワークで送信されなければならないことすらも示唆しない。
【0115】
クライアントソフトウェア
図3Aは、ここで開示される方式の実施形態を実装するためのクライアントアプリケーション105の例示的な実装形態を示す。クライアントアプリケーション105は、トランザクションエンジン351およびユーザインターフェース(UI)層352を備える。トランザクションエンジン351は、上で論じられた方式に従って、かつまもなくさらに詳しく論じられるように、トランザクション152を編成すること、サイドチャネル301を介してトランザクションおよび/もしくは他のデータを受信および/もしくは送信すること、ならびに/または、ブロックチェーンネットワーク106を通じて広められるようにトランザクションを1つまたは複数のノード104に送信することなどの、クライアント105の背後にあるトランザクション関連の機能を実装するように構成される。本明細書において開示される実施形態によれば、各クライアント105のトランザクションエンジン351は機能353を備える。
【0116】
UI層352は、機器102のユーザ出力手段を介して情報をそれぞれのユーザ103に出力すること、および機器102のユーザ入力手段を介してそれぞれのユーザ103から入力を受信することを含めて、それぞれのユーザのコンピュータ機器102のユーザ入力/出力(I/O)手段を介してユーザインターフェースをレンダリングするように構成される。たとえば、ユーザ出力手段は、視覚的な出力を提供するための1つもしくは複数の表示画面(タッチスクリーンまたは非タッチスクリーン)、オーディオ出力を提供するための1つもしくは複数のスピーカー、および/または触覚出力を提供するための1つもしくは複数の触覚出力デバイスなどを備え得る。ユーザ入力手段は、たとえば、1つもしくは複数のタッチスクリーン(出力手段のために使用されるものと同じまたは異なる)の入力アレイ、マウス、トラックパッド、もしくはトラックボールなどの1つもしくは複数のカーソルベースのデバイス、発話もしくは音声入力を受けるための1つもしくは複数のマイクロフォンおよび発話もしくは音声認識アルゴリズム、手もしくは体のジェスチャという形態の入力を受けるための1つもしくは複数のジェスチャベースの入力デバイス、または、1つもしくは複数の機械的ボタン、スイッチ、もしくはジョイスティックなどを備え得る。
【0117】
注意:本明細書において様々な機能は同じクライアントアプリケーション105に統合されるものとして説明されることがあるが、これは必ずしも限定するものではなく、代わりに、それらは一連の2つ以上の別個のアプリケーションにおいて、たとえば一方が他方へのプラグインとなるように、またはAPI(アプリケーションプログラミングインターフェース)を介したインターフェーシングにより実装され得る。たとえば、トランザクションエンジン351の機能は、UI層352とは別のアプリケーションで実装されてもよく、または、トランザクションエンジン351などの所与のモジュールの機能は、1つより多くのアプリケーションの間で分割されてもよい。説明される機能の一部またはすべてが、たとえばオペレーティングシステム層において実装され得ることも、排除されない。本明細書においてどこかで単一のまたは所与のアプリケーション105などへの言及が行われる場合、これは単なる例であり、より一般的には、説明される機能は任意の形態のソフトウェアで実装されてもよいことが理解されるだろう。
【0118】
図3Bは、Aliceの機器102a上のクライアントアプリケーション105aのUI層352によってレンダリングされ得るユーザインターフェース(UI)360の例のモックアップを与える。同様のUIが、Bobの機器102b上のクライアント105b、または任意の他の関係者の機器のクライアントによってレンダリングされ得ることが理解されるだろう。
【0119】
例示として、
図3BはAliceの視点からのUI360を示す。UI360は、ユーザ出力手段を介して別個のUI要素としてレンダリングされる1つまたは複数のUI要素362、362、363を備え得る。
【0120】
たとえば、UI要素は、1つまたは複数のユーザ選択可能要素362を備えてもよく、これは、様々なオンスクリーンボタン、またはメニューの中の様々なオプションなどであってもよい。ユーザ入力手段は、ユーザ103(この場合はAlice 103a)が、画面上のUI要素をクリックもしくはタッチすること、または望ましいオプションの名前を話すことなどによって、オプションのうちの1つを選択し、または別様に操作することを可能にするようになされる(本明細書において使用される「手動の」という用語は、自動であることと対比させることのみを意図しており、手を使用することに必ずしも限定しない)。
【0121】
代替または追加として、UI要素は1つまたは複数のデータエントリフィールド362を備えてもよく、ユーザはそれを通じて...ことができる。これらのデータエントリフィールドは、たとえば画面上の、ユーザ出力手段を介してレンダリングされ、データは、ユーザ入力手段、たとえばキーボードまたはタッチスクリーンを通じて、フィールドに入力され得る。代替として、データは、口頭で、たとえば発話認識に基づいて受信され得る。
【0122】
代替または追加として、UI要素は、情報をユーザに出力するための、1つまたは複数の情報要素363の出力を備え得る。たとえば、これ/これらは、画面上で、または可聴にレンダリングされ得る。
【0123】
様々なUI要素をレンダリングし、オプションを選択し、データを入力する特定の手段は、有形ではないことが理解されるだろう。これらのUI要素の機能は、まもなくより詳しく論じられる。
図3に示されるUI360は、概略的なモックアップにすぎず、実際には、それは1つまたは複数のさらなるUI要素を備えてもよく、これは簡潔にするために示されていないことも理解されるだろう。
【0124】
ノードソフトウェア
図4は、UTXOベースまたは出力ベースのモデルの例では、ネットワーク106の各ブロックチェーンノード104で実行されるノードソフトウェア450の例を示す。別のエンティティは、ネットワーク106のノード104として分類されることなく、すなわち、ノード104に必要とされる活動を実行することなく、ノードソフトウェア450を実行し得ることに留意されたい。ノードソフトウェア450は、限定はされないが、プロトコルエンジン451、スクリプトエンジン452、スタック453、アプリケーションレベル決定エンジン454、および1つまたは複数のブロックチェーン関連機能モジュール455のセットを含み得る。各ノード104は、コンセンサスモジュール455C(たとえば、プルーフオブワーク)、伝播モジュール455P、および記憶モジュール455S(たとえば、データベース)の3つすべてを含むがそれらに限定されない、ノードソフトウェアを実行し得る。プロトコルエンジン351は通常、トランザクション152の様々なフィールドを認識し、ノードプロトコルに従ってそれらを処理するように構成される。別の先行するトランザクション152i(Tx
m-1)の出力(たとえば、UXTO)を指し示す入力を有するトランザクション152j(Tx
j)が受信されるとき、プロトコルエンジン451は、Tx
jにおいてアンロッキングスクリプトを特定し、それをスクリプトエンジン452に渡す。プロトコルエンジン451はまた、Tx
jの入力の中のポインタに基づいて、Tx
iを特定して取り出す。Tx
iはブロックチェーン150上で公開されてもよく、この場合、プロトコルエンジンは、ノード104に記憶されているブロックチェーン150のブロック151のコピーからTx
iを取り出し得る。代替として、Tx
iはまだブロックチェーン150上で公開されていないことがある。その場合、プロトコルエンジン451は、ノード104によって維持される公開されていないトランザクションの順序付けられたセット154からTx
iを取り出し得る。いずれにしても、スクリプトエンジン451は、Tx
iの参照された出力においてロッキングスクリプトを特定し、これをスクリプトエンジン452に渡す。
【0125】
したがって、スクリプトエンジン452は、Tx
iのロッキングスクリプトおよびTx
iの対応する入力からのアンロッキングスクリプトを有する。たとえば、Tx
0およびTx
1とラベリングされたトランザクションが
図2に示されているが、同じことがトランザクションの任意のペアに当てはまり得る。スクリプトエンジン452は、前に論じられたように2つのスクリプトを一緒に実行し、これは、使用されているスタックベースのスクリプト言語(たとえば、Script)に従って、データをスタック453に置き、スタック453からデータを取り出すことを含む。
【0126】
スクリプトを一緒に実行することによって、スクリプトエンジン452は、ロッキングスクリプトにおいて定義される1つまたは複数の基準をアンロッキングスクリプトが満たすかどうか、すなわち、ロッキングスクリプトが含まれる出力をアンロッキングスクリプトが「アンロック」するかどうかを決定する。スクリプトエンジン452は、この決定の結果をプロトコルエンジン451に返す。アンロッキングスクリプトが対応するロッキングスクリプトにおいて指定される1つまたは複数の基準を満たすとスクリプトエンジン452が決定する場合、それは「真」という結果を返す。それ以外の場合、それは「偽」という結果を返す。
【0127】
出力ベースのモデルにおいて、スクリプトエンジン452からの「真」という結果は、トランザクションが有効であるための条件の1つである。通常、やはり満たされなければならないプロトコルエンジン451により評価される1つまたは複数のさらなるプロトコルレベル条件もある。それは、Txjの出力において指定されるデジタル資産の総額が入力によって指し示される総額を超えないこと、およびTxiの指し示される出力が別の有効なトランザクションによってまだ消費されていないことなどである。プロトコルエンジン451は、スクリプトエンジン452からの結果を1つまたは複数のプロトコルレベル条件と一緒に評価して、それらがすべて真である場合にのみ、トランザクションTxjを妥当性確認する。プロトコルエンジン451は、トランザクションが有効であるかどうかの標示を、アプリケーションレベル決定エンジン454に出力する。Txjが実際に妥当性確認されるという条件のもとで、決定エンジン454は、Txjに関してそれぞれのブロックチェーン関連機能を実行するようにコンセンサスモジュール455Cと伝播モジュール455Pの両方を制御することを選び得る。これは、コンセンサスモジュール455Cが、ブロック151に組み込むためにTxjをトランザクションのノードのそれぞれの順序付けられたセット154に追加することと、伝播モジュール455Pが、Txjをネットワーク106の中の別のブロックチェーンノード104に転送することとを備える。任意選択で、実施形態では、アプリケーションレベル決定エンジン454は、これらの機能のいずれかまたは両方を起動する前に、1つまたは複数の追加の条件を適用し得る。たとえば、決定エンジンは、トランザクションが有効でありかつ十分なトランザクションフィーを残すという条件のもとでのみ、トランザクションを公開することを選び得る。
【0128】
本明細書における「真」および「偽」という用語は、単一の二値の桁(ビット)のみの形式で表される結果を返すことに必ずしも限定しないが、それは当然1つのあり得る実装形態であることにも留意されたい。より一般的には、「真」は成功したまたは肯定的な結果を示す任意の状態を指すことができ、「偽」は不成功のまたは否定的な結果を示す任意の状態を指すことができる。たとえば、アカウントベースのモデルでは、「真」という結果は、署名の暗黙的なプロトコルレベルの妥当性確認と、スマートコントラクトの追加の肯定的な出力との組合せによって示され得る(両方の個々の結果が真であれば、全体の結果が真を示すものと見なされる)。
【0129】
開示される技法の他の変形または使用事例は、本明細書の開示を与えられれば当業者に明らかになり得る。本開示の範囲は、説明される実施形態ではなく、添付の特許請求の範囲だけによって限定される。
【0130】
たとえば、上のいくつかの実施形態は、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104に関して説明されている。しかしながら、ビットコインブロックチェーンはブロックチェーン150の1つの特定の例であり、上の説明はあらゆるブロックチェーンに一般に当てはまり得ることが理解されるだろう。すなわち、本発明は、決してビットコインブロックチェーンに限定されない。より一般的には、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104への上記のあらゆる言及は、それぞれ、ブロックチェーンネットワーク106、ブロックチェーン150、およびブロックチェーンノード104に関して置き換えられ得る。ブロックチェーン、ブロックチェーンネットワーク、および/またはブロックチェーンノードは、上で説明されたような、ビットコインブロックチェーン150、ビットコインネットワーク106、およびビットコインノード104の説明された性質の一部またはすべてを共有し得る。
【0131】
本発明の好ましい実施形態では、ブロックチェーンネットワーク106はビットコインネットワークであり、ビットコインノード104は、ブロックチェーン150のブロック151を作成し、公開し、広め、記憶するという説明された機能の少なくともすべてを実行する。これらの機能のすべてではなく1つまたは一部だけを実行する他のネットワークエンティティ(またはネットワーク要素)があり得ることは排除されない。すなわち、ネットワークエンティティは、ブロックを作成して公開することなく、ブロックを広めるおよび/または記憶する機能を実行し得る(これらのエンティティは好ましいビットコインネットワーク106のノードであるとは考えられないことを思い出されない)。
【0132】
本発明の好ましくない実施形態では、ブロックチェーンネットワーク106はビットコインネットワークではないことがある。これらの実施形態では、ノードが、ブロックチェーン150のブロック151を作成し、公開し、広め、記憶する機能のすべてではなく、少なくとも1つまたは一部を実行し得ることは排除されない。たとえば、それらの他のブロックチェーンネットワークでは、「ノード」は、ブロック151を作成して公開するが、それらのブロック151を記憶せず、かつ/または他のノードに広めないように構成される、ネットワークエンティティを指すために使用されることがある。
【0133】
またさらに一般的には、上記の「ビットコインノード」104という用語へのあらゆる言及は、「ネットワークエンティティ」または「ネットワーク要素」という用語で置き換えられてもよく、そのようなエンティティ/要素は、ブロックを作成し、公開し、広め、記憶する役割の一部またはすべてを実行するように構成される。そのようなネットワークエンティティ/要素の機能は、ブロックチェーンノード104に関して上で説明されたのと同じ方法でハードウェアにおいて実装され得る。
【0134】
資産およびイベント追跡
図5は、好ましくはブロックチェーン101に関連する複数のサービスを提供するプラットフォームプロセッサ504の一部としての、資産516に関連するイベントのブロックチェーンベースの、同期された、順序通りの、イミュータブルなログの提供のための、本開示の第1の態様によるシステム500に関する。好ましくは、イベントとは、資産の使用を含む資産との対話を指す。プラットフォームプロセッサ504は任意選択で、
図10および
図11に関して以下でより詳しく説明されるようなプラットフォームである。プラットフォームプロセッサ504は、ブロックチェーン101、資産所有者502、資産ユーザ506、および/もしくは資産516と通信し、ならびに/または別様に対話するように構成される。プラットフォームプロセッサ504は、例示を簡単にするためにモノリシックサーバとして本明細書では説明される。「クライアント」、「ユーザ」、または同様の用語が使用される場合、これは、前記クライアントまたはユーザによって所有および/または管理されるデバイスを指し得ることが理解されるだろう。プラットフォームプロセッサ504は、単一のサーバ、メインフレーム、サーバの集合体、マイクロサービス、マイクロサービスの集合体、クラウドサービス、前述のおよび/または他の1つまたは複数のコンピューティングプラットフォームのあらゆる組合せとして実装され得ることを、当業者は理解するだろう。
【0135】
この例は、1つの資産が追跡されることを規定するが、プラットフォームサービス504は、資産の所有者が同じでありもしくは異なる、および/または複数いる、複数の資産を追跡するように構成され得ることを、当業者は理解するだろう。好ましくは、資産516の少なくとも1名のユーザ506がいる。
【0136】
この例のシステム500は、第1の所有者502および第2の所有者(
図5に示されない)を備える。所有者は、資産を所有し、ならびに/または、資産516の使用および/もしくは資産516との間で行われる対話に関心および/もしくは利害関係を有する。
【0137】
好ましくは、所有者502、ユーザ506、および資産516の各々は、プラットフォームプロセッサがイベントを処理して記録できるように、イベントデータをプラットフォームプロセッサ504に送信するように構成される。好ましくは、イベントデータは、イベントおよび誰がイベントに関わったかを示すデータを備え、そのイベントが発生した時間などの他のメタデータを任意選択で含む。好ましくは、イベントデータは、
図10および
図11を参照して以下で説明されるようにAPI要求を介して送信される。イベント、または少なくともイベントの一部の表現は、ブロックチェーン101に記録される。ブロックチェーンにイベント自体を記憶することの代替となるものは、前記イベントの存在証明を記憶することである。存在証明は好ましくは、イベントデータのハッシュである。イベントの証明を記憶してイベント自体は記憶しないことによって、ブロックチェーン上の記憶空間を減らすことができ、トランザクションフィーがより低くなる可能性が高く、イベントのプライバシーがオンチェーンで保護されながら、それでも、イミュータブルな、順序通りの、ブロックチェーンベースのログに関連する同じ利点のすべてが維持される。
【0138】
任意選択で、イベントデータが、代表的なイベントデータを生成するために処理される。代表的なイベントデータは、イベントデータに基づくものとして見られ得る。したがって、代表的なイベントデータは、改変されていないイベントデータ自体、イベントデータのハッシュ、イベントデータを備える暗号構造のルートハッシュ、または別のデータ処理ステップの出力の任意の1つまたは複数を含み得る。
【0139】
代表的なイベントデータは、好ましくはトランザクションの一部としてブロックチェーンに記憶される。代表的なイベントデータは、トランザクションの消費不可能なOP_RETURN出力に保持される。これは、ブロックチェーンに任意のデータを書き込むために、かつまた、無効であるものとしてトランザクション出力をマークするために使用され得る、Scriptオペコードである。別の例として、OP_RETURNは、トランザクション内のメタデータなどのデータを記憶し、それによりブロックチェーン101にメタデータをイミュータブルに記録できる、トランザクションの消費不可能な出力を作成するためのScript言語のオペコードである。任意選択で、OP_0がOP_RETURNに加えて使用される。
【0140】
好ましくは、ブロックチェーン101は、所有者502、ユーザ506、および資産516の各々に関連するトランザクションのセットを備える。トランザクションの各セットは、適切な所有者、ユーザ、もしくは資産に関連するイベントの同期された、順序通りの、イミュータブルなログを表し、またはそれと関連付けられる。より好ましくは、トランザクションのセットは、「Event Streams」の見出しのもとで以下で説明されるようなイベントストリームと関連付けられる。またより好ましくは、イベントストリームは、それが表している所有者、ユーザ、または資産に関連するスマートコントラクトと関連付けられる。トランザクションのセットの中の各トランザクションは好ましくは、プラットフォームプロセッサ504によって作成されてブロックチェーンに出される。
【0141】
本明細書において使用されるイベントは、本明細書において提供される例に固有ではなく、より広範であるものと理解される。システム500内の異なる所有者502、ユーザ506、または資産516は、それらに関連する異なるタイプのイベントを有する。たとえば、所有者502に関連するイベントは、
・資産の購入および/または作成、
・資産の使用、
・資産の価値低下、
・資産の売却、ならびに
・資産の更新および/または修復
のうちの任意の1つまたは複数であり得る。
【0142】
たとえば、資産516に関連するイベントは、
・資産を使用すること、
・資産が化学製品製造の工程における成分である場合、臨界温度に達したこと、
・資産の構成要素が壊れかけているまたは壊れていること、
・資産が車である場合、速度または距離を超過したこと、および
・所与の期間において資産が使用された回数
のうちの任意の1つまたは複数であり得る。
【0143】
たとえば、ユーザ506に関連するイベントは、
・ある時間の長さ、回数、または他の使用尺度とともに資産を使用すること、
・使用中に(特に資産が正しく動作していない場合)資産の状況を記録すること、および
・資産の状況または状態の確認とともに資産を返す/譲渡すること
のうちの任意の1つまたは複数であり得る。
【0144】
他のイベントがあり得ることを、当業者は理解するだろう。イベントがブロックチェーン101に記憶されることに言及される場合、イベントが上で論じられたような代表的なイベントデータとしてブロックチェーンに記憶されることが好ましい。この代表的なイベントデータは、イベントが何であったかを記述するテキストに基づいてもよく、温度、使用期間、電圧、暗号鍵、および他のものなどの、あらゆる関連する変数を含んでもよい。記憶されているデータのタイプおよびフォーマットは、イベントに依存し得る。異なるイベントは、それらを表すために異なるデータタイプを必要とすることを、当業者は理解するだろう。
【0145】
これらのイベントの数は、所有者502、ユーザ506、および/または資産516の2つ以上と関連付けられることに留意されたい。これらの場合、各所有者、ユーザ、または資産に関連するトランザクションの各セットは、新しいイベントを備えるトランザクションを用いて更新される必要がある。好ましくは、トランザクションの各セットは、アトミックに(トランザクションの1つのセットだけがイベントを備える新しいトランザクションを得ないように、すなわち、すべてのセットがイベントを受信するか、またはどのセットもイベントを受信しないかのいずれかとなるように)および/または同期して(複数の所有者、ユーザ、または資産に関わるこの現在のイベントの前に発生したイベントが、トランザクションのいずれのセットに関しても順序に反してトランザクションのセットに追加されないように)更新される。好ましくは、トランザクションのセットは、他のイベントに関して、アトミックにかつ同期して更新される。
【0146】
好ましくは、イベントに関連するトランザクションの各セットは、イベントに関連する所有者、ユーザ、または資産に関連するトランザクションのセットのすべてに属す単一のトランザクションの使用を通じて、アトミックに更新される。たとえば、資産が第1の所有者によって第2の所有者に売却された場合、単一のトランザクションは、(i)資産に関連するトランザクションのセット、(ii)第1の所有者に関連するトランザクションのセット、および(iii)第2の所有者に関連するトランザクションのセットのすべてに属す。
図9、10C、または10Dに関する以下のさらなる説明は、そのようなトランザクションがトランザクションの2つ以上のセットとどのように関連付けられ得るかの例を提供する。
【0147】
システム500は好ましくは、所有者502および/またはユーザ506がプラットフォームプロセッサ504によって記憶されているあらゆるイベントデータを読み取るための能力をさらに提供する。イベントデータのこの読み取りは好ましくは、要求をプラットフォームプロセッサ504に出すことによって行われる。代替または追加として、データはブロックチェーン101から直接取得され得る。
【0148】
図6A~
図6Cは、異なるタイプのイベントがトランザクションにおいてブロックチェーンへの記録のために出される、例示的な方法600、610、620を示す。各トランザクションは、イベントに関連する所有者、ユーザ、および/または資産の各々に関連するトランザクションのセットと関連付けられる。
図7は、いくつかのイベントが発生した後のトランザクションのセットの状況を示す。いくつかのトランザクション702~722が、トランザクション740~748の異なるセットに関連付けられるものとして示されている。トランザクション740~748の各セットは、図面において下に向かう垂直な線として図示されており、ここで、垂直な線上のブロックを備える1つ1つのトランザクション702~722は、前記線に関連するトランザクションのセットの一部であるトランザクションである。
【0149】
この例では、トランザクション740~748のセットは、これの前にすでに確立されている。任意選択で、資産740に関連するトランザクションのセットは、作成トランザクション702において作成される。好ましくは、この作成トランザクション702は、シリアル番号またはデジタル証明書などの資産を一意に識別するための情報を備える。資産が曲である場合、作成トランザクション702は、曲を一意に識別するためのデジタルフィンガープリントを備える。同様に、トランザクションの各々の他のセットは、作成トランザクション(図示せず)を備える。これらは、ユーザの公開鍵および/またはデジタル署名などの識別情報も備える。
【0150】
図6Aおよび
図6Bの方法600、610は、2つの固有のタイプのイベントが記録されることを説明する。好ましくは、プラットフォームプロセッサ504は、両方の方法600、610を引き受けるように構成される。所有権移転方法600は、トランザクションの3つのセットが更新されるような例を提供し、資産ユーザイベント方法610は、トランザクションの2つのセットが更新されるような例を提供する。これらは、ブロックチェーンへ出すための資産関連のイベントの具体的な例であり、イベントトランザクションの他の例が可能であり、トランザクションの異なるセットが同期される必要があることを、当業者は理解するだろう。
【0151】
図6Aで開始すると、資産の所有権の移転が記録される方法600が示されている。この方法は好ましくは、プラットフォームプロセッサ504によって行われる。
【0152】
示される方法の前に、資産を第1の所有者と関連付けるために、好ましくは作成要求が受信される。好ましくは、資産に関連するトランザクションのセットと第1の所有者に関連するトランザクションのセットのいずれかまたは両方も、それらがまだ作成されていない場合は同時に作成される。より好ましくは、トランザクションは、資産とトランザクションの第1の所有者セットの両方に関連するブロックチェーンに出される。
図7において、そのようなトランザクションの例を、第1のトランザクション702として見ることができる。
【0153】
まず、資産の所有権を更新するための要求が受信される(602)。この要求は好ましくは、資産の第1の所有者、または第2の所有者のいずれかによって生成される。
【0154】
この要求は、資産と、第1の所有者と第2の所有者の両方が所有権の移転に同意したという情報とを識別するための、データを備える。任意選択で、そのようなデータは、第1の所有者と第2の所有者の両方の暗号署名である。
【0155】
次に、資産、第1の所有者、および第2の所有者を示すデータに基づく、所有権更新トランザクションが生成される。好ましくは、所有権更新トランザクションは、資産740に関連するトランザクションのセット、第1の所有者742に関連するトランザクションのセット、および第2の所有者748に関連するトランザクションのセットに属す。
【0156】
より好ましくは、資産を示すデータは、所有権更新トランザクションを資産740に関連するトランザクションのセットと関連付けるために使用される。これは、第1および第2の所有者に関するデータ、ならびにトランザクションのそれらの所有者のそれぞれのセット742、748に同様に適用される。
【0157】
所有権更新トランザクションがブロックチェーンに出される(606)。
【0158】
図7を参照すると、例示的な第1の所有権更新トランザクション702および第2の所有権更新トランザクション712が示されている。これらのトランザクション702、712において、資産はまず、第1の所有者によって所有されるものとして記録され(第1の所有権更新トランザクション702が資産セット740と第1の所有者セット742の両方の中にあることにより示されるように)、次いで移転される(第2の所有権更新トランザクションがトランザクションの資産セット740、第1の所有者セット742、および第2の所有者セット748のすべての中にあることにより示されるように)。第1の所有権更新トランザクション702は、ブロックチェーン上で作成されている資産(または資産に関連するトランザクションのセット)を表す。前記トランザクション702は、資産740に関連するトランザクションのセットと第1の所有者742に関連するトランザクションのセットの両方に存在する(または属す)。したがって、1つのアトミックなトランザクションにおいて、トランザクションのセットの両方が一緒に更新される。任意選択で、資産に関連するトランザクションのセットと第1の所有者に関連するトランザクションのセットの両方が、第1の所有権更新トランザクション702が出されると作成される。
【0159】
次に、第2の更新所有権トランザクション712は、資産の所有権が第1の所有者から第2の所有者に移転されることを表す。このトランザクション712は、どの所有者が所有権を失っているか、およびどの所有者が所有権を得ているかを示すデータに基づく(任意選択で、これは、たとえば第1の所有者が所有権の50%を第2の所有者に移転することを望んだ場合、百分率でも行われ得る)。以上のように、トランザクション702、712はアトミックであるので、各資産および所有者740、742、748を表すトランザクションのセットのすべてが同時に更新される。これは、ブロックチェーントランザクションの技術的な特徴、具体的には、ブロックチェーンネットワークの中の不正なノードすらもトランザクションを改変できないようにすることによるものである。(たとえば、第2の所有者に基づくあらゆるデータを削除することによって)トランザクションを改変することは、そのトランザクションを無効にし、したがってそのトランザクションがブロックチェーンに記憶されることを不可能にする。
【0160】
トランザクションがブロックチェーンに出されると、それは、それが参照するトランザクションのセットのイミュータブルな部分であると見なされ得る。
図6Aのこの例を続けると、所有権更新トランザクションが(ブロックへのマイニングが成功するトランザクションを介して)ブロックチェーンに出されると、それは、資産に関連するトランザクションのセット、第1の所有者に関連するトランザクションのセット、および第2の所有者に関連するトランザクションのセットにイミュータブルに属す。これは、
図6Bの資産ユーザイベントトランザクションおよび
図6Cのイベント対話トランザクションを含む、本明細書において説明される他のイベントトランザクションに同様に適用される。
【0161】
任意選択で、トランザクションがブロックチェーンに出された後、ブロックへのマイニングに成功したことの標示が受信される。これは、上で言及されたように、トランザクションがここで、資産およびイベントに関わるあらゆる他のユーザ、所有者、またはクライアントに関連するトランザクションのセットへとイミュータブルに含められることを示す。この標示を用いて、このイベントのオフチェーン表現は、イベントがブロックチェーンへの記録に成功したこと、およびイベントがトランザクションの適切なセットとイミュータブルに関連付けられることを確認するように更新される。
【0162】
図6Bは、ユーザと資産との間でイベントが発生するような方法610を示す。この対話は、資産を使用するユーザであり得る。
【0163】
まず、資産に関連するイベントおよびユーザを記録するための要求が受信される(612)。資産イベント要求612は、関連する資産および関連するユーザを識別するためのデータを備える。資産ユーザイベント要求は好ましくは、イベントに関するデータをさらに備える。たとえば、イベントが30分間資産を使用するユーザである場合、資産イベント要求はさらに、資産が30分間使用されたことを示すためのデータを備える。
【0164】
次に、資産およびユーザを示すデータに基づく、資産ユーザイベントトランザクションが生成される(614)。資産イベントトランザクションは、受信された資産イベント要求に基づいて生成される(614)。好ましくは、資産ユーザイベントトランザクションは、資産740に関連するトランザクションのセットおよびユーザ744に関連するトランザクションのセットに属す。
【0165】
上で説明された所有権更新方法600のように、資産を示すデータは好ましくは、トランザクションを資産740に関連するトランザクションのセットと関連付けるために使用される。これは、第1のユーザに関するデータおよび第1のユーザ744に関連するトランザクションのセットに同様に適用される。
【0166】
資産ユーザイベントトランザクションがブロックチェーンに出される(616)。
【0167】
図7を参照すると、資産ユーザイベントトランザクション704、706、708、710、714、716、718、720、722が示されている。これらの資産ユーザイベントトランザクションにおいて、資産は、資産740に関連するトランザクションのセットと第1のユーザ744に関連するトランザクションのセットの両方、または資産740に関連するトランザクションのセットと第2のユーザ746に関連するトランザクションのセットの両方のいずれかに、これらの資産ユーザイベントトランザクションが属すことにより立証されるように、第1のユーザおよび第2のユーザによって使用されている。好ましくは、これらの資産ユーザイベントトランザクションはさらに、イベントについての情報を備える。
【0168】
図6Cを参照すると、イベント対話要求を処理することに関する方法620が示されている。この方法620は、
図6Aおよび
図6Bにおいて説明される方法600、610の抽象化されたバージョンであるものと見なされ得る。
【0169】
まず、イベント対話要求が受信される(622)。イベント対話要求は、対話されている資産、どの所有者またはユーザが資産と対話しているか、および対話のタイプ(これは、
図6Aおよび
図6Bで提供される例において上で論じられたような、資産を使用することまたは資産の所有権を移転することであり得る)を識別するための情報を備える。
【0170】
次に、イベントに関連する所有者またはユーザ(本明細書では、任意選択で「クライアント」と記述される)を示すデータが取得される(628)。好ましくは、イベントに関連するクライアントが受信されたイベント対話要求に基づいて識別され、各クライアントに関連するトランザクションのセットが識別される。追加または代替として、イベントに関連するクライアントは、要求がどこから送信されたかに基づいて識別される。ここで、イベントに関連するクライアントを示すデータは、クライアントに関連するトランザクションのセットへの参照であり、またはそれを備える。
【0171】
好ましくは、トランザクションへの参照は、トランザクションに記憶されているデータへの参照および/もしくはトランザクションの適切なセットに関連するトランザクション出力点(ここで、トランザクション出力点はトランザクションidおよび出力インデックスである)であり、またはそれらを備える。より好ましくは、クライアントに関連するトランザクションのセットへの第1の参照は、適切なクライアントに関連するトランザクションのセットの中の次のトランザクションのトランザクション出力点である。またさらにより好ましくは、適切なクライアントに関連するトランザクションのセットの中の最新のトランザクションへの第2の参照は、最新のトランザクションに記憶されているデータに基づく。
【0172】
追加または代替として、イベントに関連するクライアントを示すデータは、イベント対話要求にすでに存在している。追加または代替として、要求が1つまたは複数のイベントストリーム識別子を備える場合、イベントに関連するクライアントは、1つまたは複数のイベントストリーム識別子に基づいて決定される。
【0173】
「最新のトランザクション」または「トランザクションのセットの中の最新のトランザクション」は好ましくは、現在生成および/または提出されているトランザクションの直前のトランザクションを指す。任意選択で、すべてのイベントがブロックチェーン上に記録されることになる場合、最新のトランザクションは、オンチェーンで表されている現在のイベントに先行するイベントを表すトランザクションを指す。
【0174】
好ましくは、資産に関連するトランザクションのセットへの参照は、クライアントの場合と同様に取得される。
【0175】
次に、イベント対話トランザクションが生成される(624)。イベント対話トランザクションは、どのクライアントがイベントに関わるかを示すデータ、およびイベントを示すデータに基づく。好ましくは、イベント対話トランザクションは、イベントに関わるクライアントに基づく代表的なイベントデータを備えるので、イベント対話トランザクションは、イベントに関わるクライアントに関連するトランザクションの各セットに属し、またはそれに関連付けられる。
【0176】
最後に、イベント対話トランザクションがブロックチェーンに出される(626)。
【0177】
図8を参照すると、トランザクションのセットがどのように構築および/または定義されるかについての実施形態が示されている。好ましくは、トランザクションのセットは、各セットの中のトランザクションの少なくともサブセット間に消費関係があるように定義される。より好ましくは、イベントの各々は、イベントが発生した関連する順序/時間を有するので、各イベントに関連するトランザクション間の消費関係は、(時間的に)より早いイベントを表すトランザクション800aが、次のイベントを表すトランザクション800bがその入力のうちの1つ802bで消費する出力804aを備えるように構築される。したがって、トランザクションのセットは、各々がイベントを表すトランザクションのチェーンとして見られ得る。
【0178】
好ましくは、トランザクションのセットにおける消費関係を定義するこれらの入力802a,bおよび出力804a,bは、「ダスト」を消費している。ダスト出力は、トランザクションに対する定められた限界を下回る、または定められた最低値を有する(デジタル資産)値と関連付けられる。
【0179】
トランザクションにおける入力/出力のこのチェーンの使用は、順序付けられた追加のみのイベントログのために(および特に以下で説明されるようなEvent Streamのために)トランザクションが発生するにつれてすべてのトランザクションのイミュータブルで逐次的な記録を維持するために、有利であり重要である。その理由は、トランザクションをブロックチェーンに投稿することによって、すべてのブロックチェーントランザクションはタイムスタンプを押され、ブロックチェーン上で確認されるとまたはブロックチェーンに追加されると特定の順序にとどまるが、これは、それらの逐次的な順序の保存を保証しないからである。これは、トランザクションが異なる時間にブロックへとマイニングされることがあるから、および/または、同じブロック内であってもトランザクションの順序が異なっているからである。シーケンスの中の次のトランザクションの最初の入力によって消費されるダスト出力を使用することで、有利には、トランザクションの順序が経時的に追跡され、イベント自体とイベントの逐次的な順序の両方の耐改竄性のある記録が作成されることが確実になる。これは、ブロックへとマイニングされると、シーケンスの中の前のトランザクションから次のトランザクションへのダストの支払いが、ビットコインプロトコルルールに従って、ペイロードと呼ばれ以下で論じられるような埋め込まれたデータ搬送要素のシーケンスを並べ替えることができずそして挿入または削除が起こり得ないことを確実にするからであり、そのような並べ替え、挿入または削除は、イベントストリームが危険にさらされていることが即座に明白になることなくシーケンスを変更する可能性がある。いくつかの実施形態では、ビットコインプロトコルに内在する二重消費防止機構が、異なるトランザクション入力と出力との間での暗号通貨(たとえば、ダスト)の移動がトポロジカルな順序にとどまることを確実にする。ダストトランザクションのチェーン形成は、トポロジカルな順序付けを利用して、ブロック間およびブロック内のトランザクション(およびしたがって関連するイベントおよびデータ)の順序の保存をもたらす。したがって、これは、トランザクションのセットおよびそれらに関連するデータの統合を改善する。
【0180】
任意選択で、追加または代替として、トランザクションのセットは第2の参照タイプにも基づく。この第2の参照タイプに基づくデータは、トランザクションの1つの出力に記憶されてもよく、参照は、トランザクションのセットの中の先行するトランザクション、または任意選択で次のトランザクションを参照してもよい。どのような出力を消費することにも関与しない参照は、ブロックチェーンの祖先制限に達するのを防ぐ。好ましくは、この第2の消費しない参照は、それらの間に消費関係を有するトランザクションのサブセット間で使用される。任意選択で、第2の参照は、トランザクションの同じセットの中のトランザクションのトランザクションidであるか、または、トランザクションの同じセットの中のトランザクションの1つが消費する、もしくは消費するであろう出力点のセットであるかのいずれかである。そのような参照についてのさらなる詳細は、英国特許出願第2102314.8号(2021年2月18日にnChain Holdings Limitedの名義で出願された)において論じられる。これらの参照は、前記英国特許出願においてチェンジアウトおよびチェンジイン参照/トランザクションとして説明されている。そのような参照についてのさらなる詳細は、英国特許出願第2204293.1号(2022年3月25日にnChain Holdings Limitedの名義で出願された)においても論じられる。
【0181】
任意選択で、追加または代替として、トランザクションのセットは、第3の参照タイプによって定義される。この参照タイプは好ましくは、それのすぐ前にあるイベントおよび/またはトランザクションを指す。この参照は、前にあるイベントおよび/またはトランザクションの一部のハッシュを備え、またはそのハッシュである。好ましくは、参照は、イベントデータまたは前にあるトランザクションのデータセクションのハッシュである。このハッシュは、イベントストリームおよび/またはトランザクションのセットに耐改竄性をもたらす。この第3の参照タイプが前のトランザクションに記憶されているイベントデータのハッシュである場合、以前のイベントデータのあらゆる改変がハッシュも改変するので、過去にデータを改変しようとしたあらゆる試みが、あらゆる未来の異なるトランザクションにおいて異なるハッシュによって検出される。そのような参照についてのさらなる詳細が、同じ前述の英国特許出願第2102314.8号(2021年2月18日にnChain Holdings Limitedの名義で出願された)において論じられている。これらの参照は、前記英国特許出願の
図6Aに関して、第3の後方参照として説明されている。そのような参照についてのさらなる詳細は、英国特許出願第2204293.1号(2022年3月25日にnChain Holdings Limitedの名義で出願された)においても論じられる。
【0182】
上で論じられたようなトランザクションのセットとの消費関係への例外は、トランザクションのセットの最初と最後のトランザクションのためのものである。上で論じられたように、トランザクションのどのセットが関連付けられるかを識別するための情報を任意選択で備える最初のトランザクションは、以前のイベントがないので、以前のイベントからのトランザクションを消費しない。同様に、トランザクションのセットの中の最後のトランザクションは、それを消費するためのさらなるイベントがないので、いずれの他のトランザクションによっても消費されない。
【0183】
各イベントトランザクションは好ましくは、ペイロード806a,bを備える。上で説明されたように、ペイロードは、それを消費不可能にしてトランザクションがデータを記憶することを可能にするための、OP_RETURNコード(および任意選択でOP_0コード)を備える。
【0184】
使用可能残高に基づいて、デジタル資産に関連する他の入力もあり得る。この残高は、プラットフォームプロセッサによって制御され得る。デジタル資産変更出力である他の出力がトランザクションの中にあることも可能である。好ましくは、イベントトランザクション800a,bはさらに、資金提供入力808a,bおよび残金出力810a,bを備える。資金提供入力の全体の値は、マイナーが確実にトランザクションを選んでそれをブロックに含めるのを助けるために、トランザクションフィー(マイナーの料金と呼ばれることがある)を含むように選択される。資金提供サービスは、全体の値が入力であるが十分であることを確実にするために、1つまたは複数の入力を提供し得る。トランザクションフィーは可変であり、ネットワークの負荷に依存する。トランザクションフィーは、バイト毎サトシ(またはブロックチェーンシステムが使用する任意のコイン/トークン)を単位とし得る(サトシは1ビットコインの1億分の1である)。したがって、ペイロードが大きい場合、料金も大きくなければならず、資金提供入力はそれに従って調整される。UTXOモデルの結果として、支払われる全体の料金は、入力において参照されるUTXOと、出力のUTXOの両方の値によって左右される。任意選択で、トランザクションフィーを含めることによる残高が、これらのトランザクションを管理し、作成し、ブロックチェーンに出す同じコンピューティングデバイスへ戻される。資金提供入力および前記資金提供入力に起因する残金は、浮動残高として機能し、前記資金提供サービスによって管理される。
【0185】
ダスト構築のチェーンはトランザクション間の後方参照を提供するので、ブロックチェーンへのアクセス権を持つ関係者が、トランザクションのこれらのあらゆるセットを前方または後方に調査できることを、当業者は理解するだろう。有利には、この調査は、ブロックチェーン上に存在する情報以外のどのような情報も伴わずに行われ得る。
【0186】
所与のトランザクションからの前方への調査は、どの出力インデックスが次のトランザクションによって消費されるか(たとえば
図8および
図9における第0の出力)を決定することによって行われる。好ましくは、システムおよび方法は、トランザクションのすべてのセットに対して同じ出力インデックスを一貫して使用し、または、少なくとも出力インデックスは調査の前に決定され得る。したがって、消費されるべき出力点は、所与のトランザクションのidおよびインデックスとることによって構築される。この出力点を消費するトランザクションをブロックチェーンの入力の1つにおいて見つけるために、ブロックチェーンが検索される。最後のトランザクションが見つかるまで、出力点を見つけることができないので調査が最新のイベントトランザクションを見つけるまで、および/または、調査者が探していたトランザクションに到達するまで、このプロセスは繰り返される。
【0187】
所与のトランザクションからの後方への調査が同様に行われる。出力は決定された入力(たとえば、
図8および
図9における第0の入力)から取得される。調査すべき前のトランザクションは、出力点のトランザクションidを有する。次いで、そのidを伴うトランザクションを求めてブロックチェーンが検索される。次いで、トランザクションのセットの始点に到達するまで、および/または調査者が探していたトランザクションに達するまで、プロセスは繰り返される。
【0188】
新しいトランザクション/イベントをトランザクションのセットに追加するためのダストのチェーンの中の関連する出力点は普通は、トランザクションのセットの中の最新のトランザクションの出力点である。好ましくは、新しいイベントのためのトランザクションを生成するデバイスは、以前のイベントトランザクションを生成したのと同じデバイスであるので、このことからすでに記憶された出力点を有する。代替として、ダストのチェーンは最新のトランザクションまで調査され、次いで、トランザクションidおよびダスト出力のインデックスが、関連する出力点を生成するために使用される。
【0189】
図9を参照すると、トランザクションがトランザクションの複数のセットに属すように、またはそれらと関連付けられるように、トランザクションがどのように構築および/または定義されるかの、ある実施形態が示されている。ここで、トランザクションの3つのセットL、M、およびNが、トランザクションL、M、Nの3つすべてのセットに含まれる(またはそれらと関連付けられる)1つのマルチセットトランザクション902とともに示されている。3つのセットは例としてのみ与えられる。提示されるデータ構造のわずかな改変のみによって、異なる数のトランザクションのセットも使用され得ることを、当業者は理解するだろう。A、B、およびCと標識される3つのダストのチェーンが示されており、ここで、マルチセットトランザクション902を除き、第0の入力(0と標識される)はダスト入力であり、第0の出力(0と標識される)は
図8を参照して説明されたようなダスト出力である。(マルチセットトランザクション902を除き)トランザクションの第1の出力(1と標識される)はペイロードを備える。資金提供入力および出力も、「フロート」インおよび「チェンジ」アウトにより標識されていることがわかる。これらの入力および出力の順序は例にすぎず、他の順序が使用されてもよいことを、当業者は理解するだろう。
【0190】
マルチセットトランザクション902は、ダストA、B、Cの3つのチェーンのすべての一部であるものとして示されているので、前記トランザクション902は、トランザクションL、M、Nの各セットの一部である(またはそれらと関連付けられる)と見なされる。マルチセットトランザクション902はまた、「アトミックトランザクション」または「ランデブートランザクション」とも記述され得る。
【0191】
図6Aおよび
図7の方法600において説明されたような資産所有権の移転の例を続けると、トランザクションの第1のセットLは資産に関連し、トランザクションの第2のセットMは第1の所有者に関連し、トランザクションの第3のセットNは第2の所有者に関連する。ここで、この例のマルチセットトランザクション902は、上で説明されたような所有権更新トランザクション712と同じである。資産所有権トランザクションは次いで、資産を示すデータ、第1の所有者を示すデータ、および第2の所有者を示すデータを備えることがわかる。このデータはペイロードに含まれてもよく、または代替として、このデータは所有権更新トランザクションの消費関係に含まれ、すなわち、これは、所有権更新トランザクションが、資産、第1の所有者、および第2の所有者の各々に関連するトランザクションのセットからの出力を消費していると仮定した場合である。
【0192】
したがって、アトミックブロックチェーントランザクションまたはランデブーブロックチェーントランザクションは、トランザクションの複数(M個)のセットにわたるトランザクションであり、トランザクションの各セットは、所有者、ユーザ、資産、または他のものと関連付けられる。アトミックトランザクションは、第1の入力として複数のM個のセットのうちのトランザクションの所与のセットに対してそれぞれ、複数のダストチェーンを構築することを伴う。したがって、アトミックトランザクションは、
・n=M個の入力、各入力は複数のセットの中のトランザクションのそれぞれのセットと関連付けられ、各々の第nの入力はトランザクションのそれぞれのセットの前のトランザクションTXn-1に関連するダスト出力を消費し、
・n個の入力の各々に対する、トランザクションのそれぞれのセットに関連するアトミックトランザクションTXnのための第nのダスト出力であるそれぞれの未消費トランザクション出力(UTXOn_dust)、および
・現在のイベントを表すイベントデータに関連する未消費トランザクション出力(UTXOn_data)、すなわちデータキャリア
を備える。
【0193】
ネットワークマイニングフィーを適宜カバーするための資金提供入力などの追加の入力があってもよく、アトミックトランザクションのための各イベントストリームに関連するOP_RETURNなどの変更出力またはデータキャリア出力などの、他の出力もあってもよい。
【0194】
上で説明されたように、ダスト入力および出力は、ブロックチェーンネットワークのセキュリティ、イミュータビリティ、および二重消費の防止を活用して、ログにおけるエントリの並べ替えを防ぐために、事後の挿入/削除、フォーク、すなわち代替のタイムラインなどを防ぐために使用される。一連のデータキャリアトランザクション上の第nの入力/出力ペアによって形成されるダストのこのチェーンは、集合的にトランザクションのそれぞれの単一のセット(または好ましくは、それぞれの単一のイベントストリームESn)をセキュアにする。
【0195】
ランデブートランザクションのさらなる詳細(特にEvent Streamsの文脈におけるランデブートランザクション)は、英国特許出願第2020279.2号(2020年12月21日にnChain Holdings Limitedの名義で出願された)において論じられている。
【0196】
図10Aおよび
図10Bを参照すると、トランザクション1022、1026a、1028a、およびデータ構造1000が示されている。トランザクションおよびデータ構造は、トランザクションのセットを構築および/または定義する追加または代替の例示的な方法を記述する。
【0197】
好ましくは、データ構造1000は、マークル木または他の同様の暗号データ構造である。データ構造は、根「S」1008、中間ノード、葉ノード、およびデータを備え、葉ノードは、1002、1004、1006に基づく。根Sは、イベントストリームの現在の状態のダイジェストを表すことができるので、「状態ダイジェスト」と記述され得る。
【0198】
葉ノードは、それらのそれぞれの入力に基づいて生成される。好ましくは、葉ノードは、それらのそれぞれの入力データを2回ハッシュすることに基づき(1010)、図においてH2()で表される。この例では、葉ノードは、PREV1002、HD'1004、およびNEXT1006に基づく。この例示的なマークル木は、各ノードが2つの子を持つ(葉を除く)ようなバイナリ木として構築される。奇数個の入力データアイテム(および奇数個の葉)があるので、最後のペアになっていない葉ノードは二重にされる。この提示されるマークル木の形式に厳格に従うことは必要ではなく、同様に機能し得る他の形式があることを、当業者は理解するだろう。
【0199】
ある好ましい実施形態において、マークル木は前のトランザクション参照(PREV)、次のトランザクション参照(NEXT)、および状態クライアントデータダイジェスト(HD')に基づく。
【0200】
任意選択で、状態クライアントデータダイジェスト(HD')は、受信されたイベントデータのハッシュ(HDn)、ならびに任意選択でイベントおよび/またはイベントストリームに関連する任意のメタデータに基づく。好ましくは、状態クライアントデータダイジェストは、受信されたイベントデータのハッシュ(HDn)および任意のさらなるメタデータを備える、マークル木のマークル木根である。好ましくは、このイベントが関係する対話に関わるあらゆる関係者の署名が、関連する状態クライアントデータダイジェストマークル木に記憶される。
【0201】
したがって、状態ダイジェスト(S)は、以下の式に従って(例示的な前のトランザクション参照、状態クライアントデータダイジェスト(HD')、および次のトランザクション参照を用いて)記述され得る。
S:=Merklize({PREV, HD', NEXT})
【0202】
ここで、「Merklize」関数は、データ要素の順序付けられたセットからマークル根を葉として生成し、{PREV, HD', NEXT}は要素に基づく葉の順序付けられたセットである。葉の各々は、Merklize関数において最初に二重ハッシュされる。ハッシュおよびマークル木が機能する原理により、マークル木への入力のセットの順序が重要であるので、入力の順序は、同じ木(およびしたがって同じ状態ダイジェスト)が同じ入力データに対して生成されるように、マークル木が作成され、再作成され、または検証されるときにはいつでも同じでなければならないことに留意されたい。
【0203】
任意選択で、{PREV, HD', NEXT}の各々はソルトされる。任意選択で、各アイテムをハッシュする前にソルトをプリペンドすることによって、ソルトが行われる。
【0204】
マークル木構造の代替として、状態ダイジェストは原像をハッシュすることによって生成されてもよく、原像は、状態データが根拠とするオブジェクトを連結することによって構築される。したがって、状態ダイジェストが前のトランザクション参照、状態クライアントデータダイジェスト、および次のトランザクション参照に基づく例では、式は以下の形式であり得る。
S:=H(PREV||HD'||NEXT)
【0205】
任意選択で、ソルトは原像にも組み込まれ得る。たとえば、ソルトは、原像の始めまたは終わりに連結され得る。
【0206】
マークル木根のさらなる代替として、状態ダイジェストは、ハッシュチェーンを使用することによって生成され得る。ハッシュチェーンは、状態ダイジェストの根拠であるアイテムにより各中間ハッシュ結果がプリペンドされるように構築される。たとえば、状態ダイジェストは、前のトランザクション参照、状態クライアントデータダイジェスト(HD')、および次のトランザクション参照に基づき、式は以下の形式であり得る。
S:=H(PREV||H(HD'||H(NEXT)))
【0207】
任意選択で、ソルトはハッシュチェーンにも組み込まれ得る。任意選択で、ソルトは、各中間原像にソルトをプリペンドすることによって組み込まれる。
【0208】
マークル木構造の代替として、PREV、NEXT、およびHD'(またはHD)のすべてが、ハッシュまたは処理されることなくブロックチェーンに記憶される。
【0209】
前のトランザクション参照(PREV)
上で論じられたように、状態ダイジェストは、好ましくは前のトランザクションへの参照に基づく。好ましくは、トランザクションのセットの中の前のトランザクションへの参照は、前記前のトランザクションの状態データが参照されることに基づく。より好ましくは、前のトランザクションへの参照は、前記前のトランザクションの状態データが、ブロックチェーンに記憶されているので参照されることである。前のトランザクション参照は任意選択で親トランザクション参照と呼ばれ、現在のトランザクションはその子である。
【0210】
次のトランザクション参照(NEXT)
上で論じられたように、状態ダイジェストは好ましくは、次のトランザクションへの参照に基づく。好ましくは、トランザクションのセットの中の次のトランザクションへの参照は、次のトランザクションへの入力に基づく。有利には、次のトランザクションのコンポーネントの多くは知られておらず(その存在が未来にあり、クライアントにより出されるデータに基づくことの結果として)、したがって前記未知のコンポーネントを参照として使用できないが、トランザクションに資金提供するために使用される入力UTXOまたはUTXOは、事前に決定されることが可能であり、そのトランザクションがブロックチェーンにコミットされるときはそのブロックチェーンだけに固有である。好ましくは、入力UTXOは出力点によって参照される。出力点は、UTXOが属すトランザクションのトランザクションid(TxIDと呼ばれる)、および前記参照されるトランザクション上の出力のインデックス(voutと呼ばれる)を備える。次のトランザクション参照は任意選択で子トランザクション参照と呼ばれ、現在のトランザクションは親である。
【0211】
図10Bを参照すると、トランザクションのセットの3つの例示的なトランザクション1022、1026a、1028aが示されている。トランザクションTxIDn1022は、資金提供入力1038およびデータペイロード1024aを備え、データペイロードはデータダイジェスト(H
Dn)および状態ダイジェスト(Sn)1030aを備え、状態ダイジェストは、前のトランザクション1026aへの参照1032a、状態クライアントデータダイジェスト(H
D')1036a、および次のトランザクション1028aへの参照1034aに基づく木のマークル木根である。状態クライアントデータダイジェスト(H
D')1036は、データダイジェスト(HDn)、ソルト(SALT)、コミットメントのチェーンの中の最初のトランザクションのTxID(TxIDcreate)(これは、イベント、イベントストリーム、および/またはトランザクションのセットの例示的なメタデータである)、および「…」によって表されるような他のメタデータに基づくマークル木のマークル木根である。
【0212】
前のトランザクション1032aへの参照は、前のトランザクション1026aの状態ダイジェスト(S)である。次のトランザクション1034aへの参照は、次のトランザクション1028aへの資金提供入力の出力点である。
【0213】
したがって、現在のトランザクション1022は、状態ダイジェスト(S)を備えるものとして見られ得る。任意選択で、トランザクションは、イベントデータHDnのハッシュも備える。したがって、トランザクションおよび/またはトランザクションに含まれるデータは、少なくとも、イベントデータ、トランザクションのセットの中の前のトランザクションへの参照、およびトランザクションのセットの中の次のトランザクションへの参照に基づくことがわかる。
【0214】
図10BのトランザクションTxIDnは、例としてのみ提示される。関連するトランザクション(前方または後方のいずれかの)のセットを確立するには、1つの参照しか必要とされないことを、当業者は理解するだろう。クライアントデータのハッシュは任意選択で、トランザクションTxIDnのペイロードに記憶されることも、当業者は理解するだろう。
【0215】
図10Cを参照すると、トランザクションがトランザクション1040の複数のセットに属すように、またはそれらと関連付けられるように、トランザクションがどのように構築および/または定義されるかの実施形態が示されている。ここで、トランザクションn1、n2、およびnkの3つのセットが、トランザクションn1、n2、nkのすべての3つのセットに含まれる(またはそれと関連付けられる)1つのマルチセットトランザクション1042とともに示されている。3つのセットは例としてのみ与えられる。提示されるデータ構造をわずかに変えるだけで、トランザクションの異なる数のセットも使用できることを、当業者は理解するだろう。
【0216】
マルチセットトランザクション1042は、トランザクションの3つのセットn1、n2、nkのすべての一部であるものとして示されている。マルチセットトランザクション1042は、「アトミックトランザクション」または「ランデブートランザクション」とも記述され得る。
【0217】
ランデブートランザクションがその一部であるトランザクションのセットごとに、1つの出力1044、1046、1048が使用されることがわかる。たとえば、ランデブートランザクションがトランザクションの3つのセットの一部である場合、ランデブートランザクションは3つの出力を備える。各トランザクション出力は、トランザクションのそれぞれのセットに関するペイロードを備える。
【0218】
好ましくは、ランデブートランザクションの各出力1044、1046、1048は、出力がデータダイジェストおよび状態ダイジェスト(S)を備える(状態ダイジェストは、チェーンの中の前および次のトランザクションへの参照、ならびに状態クライアントデータに基づく)という点で、
図10Aおよび
図10Bを参照して説明されたような非ランデブートランザクションを参照して上で説明されたものと形式が同じである。
【0219】
ランデブートランザクションの各出力1044、1046、1048は、対応する資金提供入力も有する。任意選択で、この資金提供入力は、
図10Aおよび
図10Bを参照して説明されたような非ランデブートランザクションと形式および量が同じである。有利には、同じUXTO資金提供入力参照方法を使用することによって、非ランデブートランザクションは、さらなる改変なしで、次のトランザクション参照の中のランデブートランザクションを依然として参照することができる(ランデブートランザクションは参照すべき資金提供入力を依然として有するので)。同様に、ランデブートランザクションは、各出力についての状態ダイジェスト(S)を依然として備えるので、ランデブートランザクションを参照するコミットメントのチェーンの中の次のトランザクションは、同じ好ましい前のトランザクション参照を依然として使用することができる。
【0220】
したがって、図においてわかるように、各ランデブートランザクション出力1044、1046、1048は、状態ダイジェスト(Sn1-1、Sn2-1、Snk-1)の使用を通じて、その対応する前の非ランデブートランザクション1050、1052、1054への参照に基づく。また、各ランデブートランザクション出力は、次の非ランデブートランザクション参照(On1+1、On2+1、Onk+1)の資金提供入力参照を使用して、その対応する次の非ランデブートランザクション1056、1058、1060への参照に基づくことがわかる。
【0221】
有利には、同じUXTO資金提供入力参照方法を使用することによって、非ランデブートランザクションは、さらなる改変なしで、次のトランザクション参照の中のランデブートランザクションを依然として参照することができる(ランデブートランザクションは参照すべき資金提供入力を依然として有するので)。同様に、ランデブートランザクションは、各出力についての状態ダイジェスト(S)を依然として備えるので、ランデブートランザクションを参照するコミットメントのチェーンの中の次のトランザクションは、同じ好ましい前のトランザクション参照を依然として使用することができる。
【0222】
図10Dを参照すると、ランデブートランザクションを構築する代替の方法が示されている。ここでは、(
図10Cに示されるような)TxIDiが属すコミットメントのチェーンごとの異なる入力および出力ではなく、単一のトランザクション入力および出力が使用される。
【0223】
TxIDiのデータダイジェスト(HD)は代わりに、異なるチェーンのすべてにわたって出されるクライアントデータDのすべてに基づく。好ましくは、データダイジェストはマークル木根であり、マークル木は生成される、各葉ノードは各チェーンのクライアントにより出されたデータに基づく。好ましくは、各クライアントデータのハッシュが使用される。このようにして、ブロックチェーンに記憶されるようなデータダイジェストのサイズは、トランザクションTxIDiがその一部であるコミットメントのチェーンの数とは無関係に同じままになる。
【0224】
同様に、状態ダイジェストは、前のトランザクション参照のすべてならびに次のトランザクション参照のすべてに基づく。PREV、HD、およびNEXTのみを葉ノードへの原像として備えるマークル木の代わりに、コミットメントの異なるチェーンにわたるPREV参照のすべて、コミットメントの異なるチェーンにわたるHDのすべて、およびコミットメントの異なるチェーンのすべてにわたるNEXT参照のすべてが、葉ノードである。これは、かなり量が多い可能性のあるデータに基づきながらも、TxIDiの単一の出力のサイズが増大しないという同様の利点をもたらす。
【0225】
前の2つの段落において説明されたようなマークル木の代替として、コミットメントの異なるチェーンにわたる受信されたクライアントデータのすべてが、最終的な状態ダイジェストを与えるために連結されてハッシュされ、コミットメントのすべての異なるチェーンにわたるPREV、HD、およびNEXTのすべてが、最終的な状態ダイジェストを与えるために連結されてハッシュされる。
【0226】
図6Aおよび
図7の方法600において説明されたような資産所有権の移転の例について続けると、トランザクションの第1のセットn1は資産と関連付けられ、トランザクションの第2のセットn2は第1の所有者と関連付けられ、トランザクションの第3のセットnkは第2の所有者と関連付けられる。ここで、この例でのマルチセットトランザクション1042は、上で説明されたような所有権更新トランザクション712と同じである。そうすると、資産所有権トランザクションは、資産を示すデータ、第1の所有者を示すデータ、および第2の所有者を示すデータに基づくデータを備えるものとして見られ得る。
【0227】
そのような
図10A~
図10Dのデータ構造およびトランザクションレイアウトについてのさらなる詳細は、英国特許出願第2204293.1号(2022年3月25日にnChain Holdings Limitedの名義で出願された)において論じられる。
【0228】
マークル木根がブロックチェーンに記憶されると、マークル木根に関連するマークル木の構築においてあるデータが使用されたことを証明するために、マークル木証明を使用することができる。
【0229】
好ましくは、検証要求が受信されると、検証応答を提供するために、プラットフォームプロセッサ(または元のマークル木を構築するために使用されたデータへのアクセス権を持つ他のデバイス)が構成され、検証応答はマークル木証明を備える。より好ましくは、検証要求は、検証されるべきデータのラベルを備え、検証応答は、検証されるべきデータのラベルに基づくイベントデータおよび/またはイベントに関連するデータ、ならびに、ブロックチェーンに記憶されているマークル木根に関連するマークル木の構築において前記イベントデータおよび/またはイベントに関連するデータが使用されたことを証明するように構成されるマークル木証明を備える。代替として、検証応答は、マークル木を構築するために使用されるデータのすべてを備え、検証応答の受信者は、一致するマークル木根(それが有効である場合にのみ一致する)を取得するためにマークル木を自身で構築する。HD'(根Sを備えるマークル木の作成において使用される)もマークル木根であるので、マークル木証明は、マークル木のあらゆる任意のデータが作成された元のマークル木根の一部であったと証明され得るように、生成され得ることに留意されたい。たとえば、第三者が、イベントデータ自体ではなく、イベントに関連するメタデータにアクセスするのを望むことがある。マークル木証明は、要求されたメタデータだけが明らかにされ、マークル木を構築するために使用される他の特徴が何ら明らかにされないように構築され得る。
【0230】
有利には、マークル木の一部を選択的に公開できることは、とりわけ、機密情報が資産の購入者に開示されることなく、購入者が購入を望んでいる資産の何らかの特徴を購入者が尋ねられるようにすることを、資産の売却者に対して可能にする。開示されるべき情報の量は、何がマークル木証明に含まれるかを選択することによって、資産の所有者(または資産に関連するイベントストリームの管理者)によって設定可能である。
【0231】
ブロックチェーンにおけるそのような選択的な開示を実施するための例示的な機構は、nChain Holdings Limitedによって2022年5月6日に出願された英国特許出願第2206682.3号に記載されている。
【0232】
イベントデータおよび/または少なくとも1つの参照(および好ましくは2つの参照)に基づくマークル木根のみを記憶することによって、いくつかの利点が見られ得る。具体的には、マークル木根は、ブロックチェーン自体にイベントデータを記憶する必要なく、イベントデータの存在証明として活動することができ、それによりブロックチェーン上の空間を節約する。さらに、既知のサイズであるマークル木根を使用することで、トランザクション全体のサイズを既知かつ一定にすることができ、それにより、ブロックチェーンに記憶されているトランザクションの資金提供を簡略化されたものにする。またさらに、ブロックチェーンにマークル木根だけを記憶することによって、不正な第三者が、さらなる情報(マークル木根証明など)なしでトランザクションのセットを調査することができない。オンチェーンでは、マークル木根は、他のハッシュされたデータと同じに見えるので、特徴の中でもとりわけ、トランザクションがトランザクションのセットに追加される率が隠され、それにより記憶されるデータのセキュリティが向上する。
【0233】
任意選択で、
図8および
図9のトランザクションセット参照例と、
図10A~
図10Cのトランザクションセット参照例の両方が一緒に使用される。この実施形態では、消費関係の使用を通じていくつかの参照が構築されてもよく、前のトランザクションおよび/または次のトランザクションを示すデータを備えるマークル木の使用を通じて他の参照が構築されてもよい。たとえば、トランザクションの資産セットが消費関係および他のユーザの対話のチェーンの使用を通じて維持され、種々のデータがマークル木データ構造を通じて維持される。この特定の例は、資産との対話の数が公に入手可能であるが、それらの対話が何であるかが隠される(それらが使用であるか、所有権移転か、または他のものであるかにかかわらず)ので有利であり得る。
【0234】
好ましくは、
図6A~
図6Cを参照して説明されたような実施形態において生成され(604、614、624)出される(606、616、626)トランザクションは、
図9ならびに/または
図10Cおよび
図10Dを参照して説明されたような上で説明された「ランデブートランザクション」形式である。
【0235】
ブロックチェーンがUTXOベースのシステムではない(Ethereumで使用されるものなどのアカウントベースのシステムであり得る)場合、トランザクションをアトミックに/同期して関連付けるための代替の方法も使用され得る。たとえば、資産に関連するウォレットおよび任意の他のクライアント(所有者またはユーザなど)から消費することに対する許可を伴うEthereumブロックチェーン上でのスマートコントラクトは、1つまたは複数のクライアントが資産と対話するときに、トランザクションが資産に関連する第1のアドレスから資産に関連する第2のアドレスに向かって消費するように、かつ資産と対話するあらゆるクライアントについて同様に消費するように、トランザクションが作成されるように、確立され得る。可能な場合、単一のトランザクションにおいて消費する資産およびクライアントの資産を消費する単一のトランザクションが生成され、または別のアトミックな機構も使用されてもよい。
【0236】
これらのウォレットアドレスは任意選択で、決定論的に決定される。任意選択で、ウォレットは、BIP-32もしくはBIP-44または他の適切な階層型決定性方法に従って生成される。
【0237】
ウォレットのための決定論的に生成されるアドレスを用いて、たとえば資産に関連するトランザクションのセットは、あり得るウォレットアドレスのリストを決定し、次いで決定されたあり得るウォレットアドレスのいずれかとの間のあらゆるトランザクションについてブロックチェーンをスキャンすることによって、決定され得る。この階層型決定性ウォレット構成は、UTXOモデルにも使用され得る。有利には、この構成は、公開の鍵および署名が異なる鍵に対して異なるため、送信しているエンティティが受信しているエンティティと同じであると決定するのがより難しいので、トランザクションのクライアントの関連するセットにさらなるプライバシーをもたらし得る。
【0238】
Event Streams
本実施形態では、異なる所有者、ユーザ、資産、または他のものと関連付けられるトランザクションのセットは、イベントストリームを表すために使用される。Event Streams ESは、好ましくはスマートコントラクトSCに固有であり、スマートコントラクトSCの状態を表す(したがって、資産、所有者、およびユーザの各々がすべてスマートコントラクトを用いて追跡される)。ブロックチェーンにおいてイベントストリームを実装するための例示的な機構は、nChain Holdings Limitedにより2020年2月19日に出願された英国特許出願第2002285.1号に記載されている。イベントストリームは、順序通りに実行されるイベントの厳密なシーケンスのログを提供し、ブロックチェーン上で実装される。スマートコントラクトSCに関係するイベントストリームESは、ブロックチェーンから直接取得されてもよく、または、これは、ブロックチェーン上のイベントストリームを複製するオフチェーンログまたはデータベースから取得されてもよい。たとえば、プラットフォームプロセッサ(または他のデバイス)は、任意の所与の時間においてブロックチェーンの中のそれぞれのイベントストリームESに記録されるような、スマートコントラクトSCの現在の状態を提供または指示するように構成される、スナップショットインスタンスデータベースと関連付けられ得る。複数のクライアントのうちの所与のクライアントに関連する、スマートコントラクト当たり1つだけのイベントストリームがある。いくつかの実施形態では、複数のクライアントの中の各クライアントは、それぞれのクライアントと関連付けられる特定のスマートコントラクトSCを識別するために使用され得る、アカウントまたは識別子と関連付けられ得る。
【0239】
いくつかの実施形態では、複数のイベントストリームと関連付けられる1つのスマートコントラクトがあり得る。任意選択で、1つのスマートコントラクトは複数の異なるイベントストリームを更新し、各イベントストリームはそれでも、異なる資産、ユーザ、所有者、またはクライアントを表す。
【0240】
上で言及されたように、いくつかの実施形態では、イベントストリームは、状態機械に関係し、ブロックチェーンにおいて有限状態機械として実装される機械可読契約またはスマートコントラクトを表す。有限状態機械(FSM)は、よく知られている計算の数学的モデルである。それは、任意の所与の時間における有限の数の状態のうちの厳密に1つの状態にあり得る抽象機械である。FSMは、何らかの外部入力に応答してある状態から別の状態に変化することができ、ある状態から別の状態への変化は遷移と呼ばれる。FSMは、状態のリスト、初期状態、および各遷移の条件によって定義され得る。Bitcoin SVブロックチェーンでは、UTXOセットは状態機械であると考えられてもよく、所与の出力の消費状態は、トランザクション(機械)への以前の入力の関数である。したがって、すべてのトランザクションをリプレイすることによって、あらゆる出力の現在の消費状態、およびUTXOセットの現在の内容が、ブロックチェーンを使用して決定論的に確立され得る。したがって、いくつかの実施形態では、要求は、ブロックチェーンにおいてイベントストリームESとして実装される、スマートコントラクトの現在の状態を変更するための要求であると考えられ得る。
【0241】
ブロックチェーン上の現在の状態までの、イベントストリームES(または一般には単にトランザクションのセット)のイミュータブルで逐次的なログまたは記録を確立するための技法が、本明細書で説明された。いくつかの実施形態では、ログは(ブロックチェーンに記憶されることに加えて)、上で言及されたようにオフチェーンで提供または記憶され得る。イベントストリームは、FSM、DFAなどを使用して実装されるスマートコントラクトに適用される逐次的な入力を表し得る。
【0242】
有利には、本開示の方法により実装されるような、イベントストリームおよびブロックチェーンに関連するトランザクションのセットの実装形態は、イベントのイミュータビリティおよびイベントシーケンシングのイミュータビリティに関する保証を提供する。書き込まれると、以下の方法のいずれかによるイベントストリームの改竄のあらゆる試みが、防止されるか、または明らかにされるかのいずれかである。
・イベントの内容の変更
・イベントの並べ替え
・ストリームの最初または中間へのイベントの挿入
・ストリームの中のどこかからのイベントの削除
【0243】
言い換えると、本明細書において説明される方法は、イベントストリームに関する以下の特性を証明可能にする。
・イベントストリームの中の個々のエントリが、それらが書き込まれてから改変されていない
・以前の連続するエントリ間にエントリが挿入されていない
・エントリが削除されていない
・エントリが並べ替えられていない
【0244】
これらの特性および利点には、監査/法令遵守の記録から、状態機械の複製、すべてのクライアントのためにブロックチェーンからデータを読み取りブロックチェーンにデータを書き込むためのより効率的で、耐改竄性があり、正確な方法に至るまで、多くの実用的な用途がある。
【0245】
例示的な使用事例
本明細書において説明される方法およびシステムの例示的な使用法は、pay-per-use式の交換不可能な商品、製品、またはサービスの所有権および使用を追跡することである。具体的な例として、資産は、pay-per-listen型の音楽ストリーミングモデルの文脈における音楽トラックまたは曲である。この例の音楽トラックは、本明細書において説明される態様の資産と等価である。
【0246】
この例では、ユーザが曲を聴くとき、資産対話要求がプラットフォームプロセッサに提供される。プラットフォームプロセッサは次いで、
図6Bにおいて説明されるような方法610を引き受け、この聴取イベントを表すトランザクションをブロックチェーンに出す。トランザクションは任意選択で曲が聴かれた回数を備え、または、トランザクションは任意選択で曲が聴かれた回数に基づくデータを備える。好ましくは、トランザクションは、音楽トラックに関連するトランザクションのセットおよび聴取者に関連するトランザクションのセットに属す。このトランザクションの効果は、この特定の曲をこの特定の聴取者が聴いたことを表すことであり、すなわち、この情報は、曲に関連するトランザクションのセットとユーザに関連するトランザクションのセットの両方に存在する。
【0247】
同様に、音楽トラックの所有権は、
図6Aを参照して説明されたように方法600を使用して変更され得る。この場合、資産、第1の所有者、および第2の所有者に関連するトランザクションのセットと関連付けられるトランザクションが生成され、ブロックチェーンに出される。
【0248】
好ましくは、音楽トラックに関連するトランザクションのセットは、曲を一意に特定することが可能なデータを備えるトランザクションを備える(またはデータに基づく)。好ましくは、曲を識別するためのデータは、デジタルフィンガープリントである。
【0249】
有利には、この例において使用されている、本明細書において説明される方法およびシステムは、音楽トラックの権利の購入候補者が、曲が収録されてからの売上履歴を、ブロックチェーンを使用して検証できるようにする。これは、潜在的な購入者が音楽トラックの価値を公平に評価できるようにする。
【0250】
有利には、聴取者/ユーザは、自身の完全な聴取情報および履歴を検証することができるので、自身の課金履歴を検証することができる。
【0251】
有利には、曲の所有者は、曲により生み出された売上について確信を持つことができる。
【0252】
上で提供される利点は、あらゆる他のpay-per-use型の交換不可能な商品、製品、またはサービスに等しく当てはまる。
【0253】
プラットフォームサービス
ある態様によれば、先行する態様に関連する、資産対話の追跡および/またはトランザクションのセットの、いずれの1つまたは複数も、ここで説明されるようなプラットフォームプロセッサとともに使用され得る。好ましくは、プラットフォームプロセッサは、資産対話情報を受信し、API1508により提供されるアクセスを通じて、データサービス1502、計算サービス1504、および/またはコマースサービス1506を提供するように構成される。具体的には、データサービス1502の態様は、イベントデータの記憶のために提供される。本態様は、BSVブロックチェーンなどのブロックチェーンネットワークを使用して、ソフトウェアで制御される技術システムまたはスマートコントラクトの管理などの、現実世界での有用なビジネスおよび技術への応用を迅速に行うことを有利に可能にする、Platform as a Service (Paas)およびSoftware as a Service (Saas)の提供であり得る。
【0254】
システムの高水準の概略図を示す、プラットフォームサービスの概要を
図11において見ることができる。プラットフォームサービスは、API1508を提供するプラットフォームプロセッサ1500を有し、サービスはAPI1508を介して1つまたは複数のクライアントによってアクセスされ得る。
【0255】
この
図11に示されるようなプラットフォームサービス1500は、3つの群のサービスからなり、ユーザおよび組織が、クライアント側でブロックチェーンベースのソフトウェア、知識、またはライブラリを実際に実装することなく、ブロックチェーンの固有の性質によりもたらされる利点を簡単にかつセキュアに利用することを可能にすることを目的とする。
・チェーンの用途を商品データ台帳として簡略化することを目的とするデータサービス1502。好ましくは、データサービスは、ブロックチェーンへのデータの書き込みおよびブロックチェーンからのデータの読み取りを実施するために、本明細書において提供されるデータ構造および方法を使用する。
・ビットコインSVなどのデジタル資産によって裏付けられる一般化された計算ネットワークを提供することを目的とする計算サービス1504。
・ビットコインSVなどのデジタル資産を使用してトランザクションを行うための企業クラスの能力を提供するコマースサービス1506。
【0256】
APIはウェブサービスとして実装されるので、APIにおいてクライアントからHTTPSプロトコルを介して、またはそれを使用して、要求が受信され得る。要求されるサービスは次いで、背後のソフトウェア1510を使用して1つまたは複数のサービスモジュールまたは処理リソース1502~1506によって実装され、そのような背後のソフトウェア1510は、ブロックチェーンに関連し、すなわち、ブロックチェーンに関連するトランザクションを作成し、処理し、出すための、リソース、ライブラリ、および/またはキー管理ウォレットの実装形態を実装するためのものである。処理されると、トランザクションは、(任意のそのような機能またはトランザクションライブラリを実装するクライアントの代わりに)ブロックチェーンネットワーク1512に出され得る。最大で、クライアントは、暗号通貨もしくは何らかの他のデジタル資産に関連するデジタルウォレットなどを実装することがあり、または実装することができるが、これは必須ではなく、それは、プラットフォームサービス1500は、クライアントのためのデジタル資産を提供して管理することも可能であり得るからである。
【0257】
図12は、ブロックチェーンに関連する複数のサービスのより粗い概略図を提供し、これは、提供されるサービスの1つまたは複数にそれを介してアクセスすることができるAPIに関連するプラットフォーム1600によって実装され得る。この
図12において見られるように、データサービス1602は、データ書き込みサービス1602aおよびデータ読み取りサービス1602bを含み得る。データ書き込みサービス1602aは、簡単で、セキュアで、最適化された方式で、クライアントがブロックチェーンへとデータを書き込むことを可能にする。データ読み取りサービス1602bは、クライアントがクエリを送信することを可能にし、これはブロックチェーンに記憶されているデータを返す。これは、クライアントがアドホックにもしくは定期的に、すなわちある時間枠内にブロックチェーンから読み取ることを望むデータのタイプを、または、ブロックチェーン1610において処理される関係するもしくは関係しないイベントもしくは文書に関連するデータのタイプをあらかじめ定義できるような、フィルタリングされたストリームを使用することであり得る。データアーカイブ機能が、指定されたイベントまたは契約のための以前のトランザクションのログへのアクセスを可能にする。
【0258】
プラットフォーム1600の計算サービス1606は、スマートコントラクトに関連するアプリケーション1606aおよびフレームワーク1606bを含み、これらは、いくつかの実施形態では、ブロックチェーン1610においてステートマシンとして表され得る。計算サービス1606はデータサービス1602と相互作用し、それは、データが入力される必要があり、結果があらゆるそのような計算のためにクライアントに提供される必要があるからである。
【0259】
コマースサービス1604は、ベストインクラスのセキュリティの実践および技術に基づく、ブロックチェーン1610を調査するための企業ウォレット1604aを介した企業クラスの能力の提供を担う。たとえば、いくつかの実施形態では、企業ウォレットは、1より多くの人物、ユーザまたはアカウントが、定められた基準、すなわちあらかじめ定められた限界を超える大きい値の暗号通貨に関連する基準を満たすトランザクションを承認する必要があり得るとき、ブロックチェーントランザクション処理を可能にするための機能を実装し得る。企業ウォレットはまた、別のリソースを表す暗号通貨またはトークンなどの大量のデジタル資産を移動するための、署名の閾値の数および/または署名のタイプを実装するための機能を含み得る。次いで、これらの資産の移動は、そのような企業ウォレットの実装形態によって適用される基準に基づく処理に従って、ブロックチェーン上で表現され得る。
【0260】
SPVサービス1608(簡略化された支払検証)は、マイナーノードを実行しないのでブロックチェーンからの情報を必要とするがそれへの直接のリンクを含まない、適用例である。そのようなSPVサービス1608は、軽量のクライアントが、ブロックチェーン1610全体をダウンロードすることなく、トランザクションがブロックチェーンに含まれることを検証することを可能にする。
【0261】
プラットフォームデバイス
ここで
図13を見ると、本開示の少なくとも一実施形態を実践するために使用され得るコンピューティングデバイス2600の例示的な簡略化されたブロック図が提供される。様々な実施形態において、コンピューティングデバイス2600は、上で示され説明されたシステムまたは方法のいずれかを実装するために使用され得る。たとえば、コンピューティングデバイス2600は、
図5の前に説明されたシステム500において1つまたは複数のコンポーネントとして使用されるように構成され得る。コンピューティングデバイス2600は、所与のユーザと関連付けられるクライアントエンティティであるように構成されてもよく、クライアントエンティティは、プラットフォームプロセッサに対してデータベース要求および/または提出を行う。コンピューティングデバイス2600は、委任されたユーザであるように構成され得る。委任されたユーザは、委任された承認トークンを受け取ると、プラットフォームプロセッサへのデータ要求および/または提出を行い得る。したがって、コンピューティングデバイス2600は、ポータブルコンピューティングデバイス、パーソナルコンピュータ、または任意の電子コンピューティングデバイスであり得る。
図12に示されるように、コンピューティングデバイス2600は、メインメモリ2608および永続的ストレージ2610を含むストレージサブシステム2606と通信するように構成され得る、1つまたは複数のレベルのキャッシュメモリおよびメモリコントローラ(集合的に2602とラベリングされる)を伴う1つまたは複数のプロセッサを含み得る。メインメモリ2608は、示されるようなダイナミックランダムアクセスメモリ(DRAM)2618および読み取り専用メモリ(ROM)2620を含み得る。ストレージサブシステム2606およびキャッシュメモリ2602は、本開示において説明されるようなトランザクションおよびブロックに関連する詳細などの、情報の記憶のために使用され得る。プロセッサ2602は、本開示において説明されるような任意の実施形態のステップまたは機能を提供するために利用され得る。
【0262】
プロセッサ2602はまた、1つまたは複数のユーザインターフェース入力デバイス2612、1つまたは複数のユーザインターフェース出力デバイス2614、およびネットワークインターフェースサブシステム2616と通信することができる。
【0263】
バスサブシステム2604は、コンピューティングデバイス2600の様々な構成要素およびサブシステムが意図されたように互いに通信することを可能にするための機構を提供し得る。バスサブシステム2604は単一のバスとして概略的に示されているが、バスサブシステムの代替の実施形態は複数のバスを利用してもよい。
【0264】
ネットワークインターフェースサブシステム2616は、他のコンピューティングデバイスおよびネットワークへのインターフェースを提供し得る。ネットワークインターフェースサブシステム2616は、コンピューティングデバイス2600からの他のシステムからデータを受信し、それにデータを送信するための、インターフェースとして働き得る。たとえば、ネットワークインターフェースサブシステム2616は、データ技術者がデータセンターなどの遠隔の位置にいる間にデータをデバイスに送信してデータをデバイスから受信することが可能になり得るように、データ技術者がデバイスをネットワークに接続することを可能にし得る。
【0265】
ユーザインターフェース入力デバイス2612は、キーボード、統合されたマウス、トラックボール、タッチパッド、またはグラフィクスタブレットなどのポインティングデバイス、スキャナ、バーコードスキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどのオーディオ入力デバイス、および他のタイプの入力デバイスなどの1つまたは複数のユーザ入力デバイスを含み得る。一般に、「入力デバイス」という用語の使用は、情報をコンピューティングデバイス2600に入力するためのすべてのあり得るタイプのデバイスおよび機構を含むことが意図されている。
【0266】
1つまたは複数のユーザインターフェース出力デバイス2614は、ディスプレイサブシステム、プリンタ、またはオーディオ出力デバイスなどの非視覚的ディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、もしくはプロジェクションなどのフラットパネルデバイス、または他のディスプレイデバイスであり得る。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス2600から情報を出力するための任意の可能なタイプのデバイスおよび機構を含むことが意図される。1つまたは複数のユーザインターフェース出力デバイス2614は、たとえば、説明されるプロセスおよびその変形を実行するアプリケーションとのユーザ対話を、そのような対話が適切であり得るときに支援するための、ユーザインターフェースを提示するために使用され得る。
【0267】
ストレージサブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供し得る基本的なプログラミングおよびデータ構築物を記憶するための、コンピュータ可読記憶媒体を提供し得る。アプリケーション(プログラム、コードモジュール、命令)は、1つまたは複数のプロセッサによって実行されると、本開示の1つまたは複数の実施形態の機能を提供してもよく、ストレージサブシステム2606に記憶されてもよい。これらのアプリケーションモジュールまたは命令は、1つまたは複数のプロセッサ2602によって実行され得る。ストレージサブシステム2606は、本開示に従って使用されるデータを記憶するためのリポジトリを追加で提供し得る。たとえば、メインメモリ2608およびキャッシュメモリ2602は、プログラムおよびデータのための揮発性ストレージを提供し得る。永続的ストレージ2610は、プログラムおよびデータのための永続的(不揮発性)ストレージを提供することができ、フラッシュメモリ、1つまたは複数のソリッドステートドライブ、1つまたは複数の磁気ハードディスクドライブ、関連するリムーバブルメディアを伴う1つまたは複数のフロッピーディスクドライブ、関連するリムーバブルメディアを伴う1つまたは複数の光学ドライブ(たとえば、CD-ROMまたはDVDまたはBlue-Ray)、および他の同様の記憶媒体を含み得る。そのようなプログラムおよびデータは、本開示において説明されるような1つまたは複数の実施形態のステップを実行するためのプログラム、ならびに本開示において説明されるようなトランザクションおよびブロックに関連するデータを含み得る。
【0268】
コンピューティングデバイス2600は、ポータブルコンピュータデバイス、タブレットコンピュータ、ワークステーション、または以下で説明される任意の他のデバイスを含む、様々なタイプであり得る。加えて、コンピューティングデバイス2600は、1つまたは複数のポート(たとえば、USB、ヘッドフォンジャック、Lightningコネクタなど)を通じてコンピューティングデバイス2600に接続され得る別のデバイスを含み得る。コンピューティングデバイス2600に接続され得るデバイスは、光ファイバコネクタを受け入れるように構成される複数のポートを含み得る。したがって、このデバイスは、処理のために、デバイスをコンピューティングデバイス2600に接続するポートを通じて送信され得る電気信号に、光信号を変換するように構成され得る。コンピュータおよびネットワークの変化し続ける性質により、
図13に示されるコンピューティングデバイス2600の説明は、デバイスの好ましい実施形態を示すことが目的の具体的な例として意図されているにすぎない。
図13に示されるシステムより多数または少数の構成要素を有する多くの他の構成が可能である。
【0269】
上で説明された様々な方法は、コンピュータプログラムによって実装され得る。コンピュータプログラムは、上で説明された様々な方法のうちの1つまたは複数の機能を実行するようにコンピュータに命令するようになされるコンピュータコードを含み得る。そのような方法を実行するためのコンピュータプログラムおよび/またはコードは、1つまたは複数のコンピュータ可読媒体、またはより一般的にはコンピュータプログラム製品で、コンピュータなどの装置に提供され得る。コンピュータ可読媒体は、一時的または非一時的であり得る。1つまたは複数のコンピュータ可読媒体は、データ送信のために、たとえばインターネットを介したコードのダウンロードのために、たとえば、電子的な、磁気的な、光学的な、電磁的な、赤外線の、もしくは半導体のシステム、または伝播媒体であり得る。代替として、1つまたは複数のコンピュータ可読媒体は、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、固い磁気ディスク、および、CD-ROM、CD-R/W、またはDVDなどの光学ディスクなどの、1つまたは複数の物理的コンピュータ可読媒体の形式をとり得る。
【0270】
ある実装形態では、本明細書において説明されるモジュール、コンポーネント、および他の特徴は、ディスクリートコンポーネントとして実装されてもよく、または、ASIC、FPGA、DSP、もしくは同様のデバイスなどの、ハードウェアコンポーネントの機能に統合されてもよい。
【0271】
「ハードウェアコンポーネント」または「ハードウェアモジュール」は、ある動作を実行することが可能な有形の(たとえば、非一時的な)物理コンポーネント(たとえば、1つまたは複数のプロセッサのセット)であり、ある物理的な方式で構成または配置され得る。ハードウェアコンポーネントは、ある動作を実行するように恒久的に構成される専用の回路または論理を含み得る。ハードウェアコンポーネントは、フィールドプログラマブルゲートアレイ(FPGA)もしくはASICなどの専用プロセッサであってもよく、またはそれを含んでもよい。ハードウェアコンポーネントは、ある動作を実行するようにソフトウェアによって一時的に構成されるプログラマブル論理または回路も含み得る。
【0272】
したがって、「ハードウェアコンポーネント」または「ハードウェアモジュール」という語句は、ある方式で動作するように、または本明細書において説明されるある動作を実行するように、物理的に構築され、恒久的に構成され(たとえば、ハードワイヤリングされ)、または一時的に構成される(たとえば、プログラムされる)ことがある、有形のエンティティを包含するものと理解されるべきである。
【0273】
加えて、モジュールおよびコンポーネントは、ファームウェアとして、またはハードウェアデバイス内の機能回路として実装され得る。さらに、モジュールおよびコンポーネントは、ハードウェアデバイスおよびソフトウェアコンポーネントの任意の組合せで、またはソフトウェアのみで(たとえば、機械可読媒体または送信媒体に記憶される、または別様に具現化されるコード)実装され得る。
【0274】
特に別様に述べられない限り、以下の議論から明らかなように、説明全体で、「決定する」、「提供する」、「算出する」、「計算する」、「特定する」、「組み合わせる」、「送信する」、「受信する」、「記憶する」、「推定する」、「確かめる」、「生成する」、「取得する」などの語を利用した議論は、コンピュータシステムのレジスタおよびメモリ内の物理(電気的な)量として表されるデータを、コンピュータシステムメモリまたはレジスタまたは他のそのような情報の記憶、送信、もしくは表示デバイス内の物理量として同様に表される他のデータへと操作して変換する、コンピュータシステムまたは同様の電子コンピューティングデバイスの活動および処理を指すことが理解されるだろう。
【0275】
本明細書および特許請求の範囲において使用される「備える(comprising)」という用語は、「少なくとも一部~からなる」を意味する。「備える」という用語を含む本明細書および特許請求の範囲における各々の陳述を解釈するとき、その用語の後にあるもの以外の特徴も存在していてもよい。「備える(comprise)」および「備える(comprises)」などの関連する用語も、同じように解釈されるべきである。
【0276】
本明細書において使用される場合、「および/または」という用語は、「および」もしくは「または」または両方を意味する。
【0277】
本明細書において使用される場合、名詞の後の「(s)」は、名詞の複数形および/または単数形を意味する。
【0278】
単数形での要素の言及は、複数形でそのような要素に言及することを排除せず、その逆も当てはまる。
【0279】
上記の説明は、限定的ではなく例示的であることが意図されていることを理解されたい。上記の説明を読んで理解すれば、多くの他の実装形態が当業者に明らかになるだろう。本開示は、特定の例示的な実装形態を参照して説明されたが、本開示は、説明された実装形態に限定されず、添付の特許請求の範囲内の修正および変更とともに実践され得ることが認識されるだろう。したがって、明細書および図面は、限定するものではなく例示するものであると見なされるべきである。したがって、本開示の範囲は、添付の特許請求の範囲に関連して、そのような請求項が権利を与えられる均等物の完全な範囲とともに決定されるべきである。
【符号の説明】
【0280】
100 システム
101 ブロックチェーンパケット交換ネットワーク、インターネット
102 コンピュータ機器、コンピュータ端末
102a Aliceのコンピュータ機器、Aliceのデバイス
102b Bobのコンピュータ機器、Bobのデバイス
103 ユーザ、エンティティ、関係者、エージェント
103a ユーザ、エンティティ、第1の関係者、Alice
103b ユーザ、エンティティ、第2の関係者、Bob
104 ブロックチェーンノード、第1のノード、ビットコインノード、トランザクション
105 クライアントアプリケーション、ソフトウェア、クライアント
105a クライアントアプリケーション
105b クライアント
106 ブロックチェーンネットワーク、ビットコインネットワーク
150 ブロックチェーン、クライアントアプリケーション、ビットコインブロックチェーン
151 ブロック、ブロックチェーン
151n-1 ブロック
151n ブロック
152 トランザクション
152i トランザクション
152j トランザクション
153 ジェネシスブロック(Gb)
154 順序付けられたセット、トランザクション、プール
155 ブロックポインタ
160 ブロックチェーンネットワーク
201 ヘッダ
202 入力、入力フィールド
203 出力フィールド、トランザクション出力、UTXO
301 サイドチャネル
351 トランザクションエンジン、プロトコルエンジン
352 ユーザインターフェース(UI)層
353 機能
360 ユーザインターフェース(UI)
362 UI要素、ユーザ選択可能要素、データエントリフィールド
363 UI要素、情報要素
450 ノードソフトウェア
451 プロトコルエンジン
452 スクリプトエンジン
453 スタック
454 アプリケーションレベル決定エンジン
455 ブロックチェーン関連機能モジュール
455C コンセンサスモジュール
455P 伝播モジュール
455S 記憶モジュール
500 システム
502 資産所有者
504 プラットフォームプロセッサ
506 資産ユーザ
516 資産
740 資産
742 第1の所有者
744 第1のユーザ
746 第2のユーザ
748 第2の所有者
800a イベントトランザクション
800b イベントトランザクション
802a ダスト入力
802b ダスト入力
804a ダスト出力
804b ダスト出力
806a ペイロード
806b ペイロード
808a 資金提供入力
808b 資金提供入力
810a 残金出力
810b 残金出力
1000 データ構造
1002 PREV
1004 HD'
1006 NEXT
1008 根
1024 データペイロード
1030 データダイジェストおよび状態ダイジェスト
1034 参照
1036 状態クライアントデータダイジェスト
1038 資金提供入力
1042 マルチセットトランザクション
1044 出力
1046 出力
1048 出力
1500 プラットフォームサービス
1502 データサービス
1504 計算サービス
1506 コマースサービス
1508 API、プラットフォームAPI
1510 ブロックチェーンノードソフトウェア
1512 ブロックチェーンネットワーク
1600 プラットフォーム
1602 データサービス
1602a データ書き込みサービス、データライタ
1602b データ読み取りサービス、データリーダ
1604 コマースサービス
1604a 企業ウォレット
1606 計算サービス
1606a アプリケーション、スマートコントラクトアプリケーション
1606b フレームワーク、スマートコントラクトフレームワーク
1608 SPVサービス
1610 ブロックチェーン、ブロックチェーンネットワーク
2600 コンピューティングデバイス
2602 キャッシュメモリおよびメモリコントローラ、プロセッサ
2604 バスサブシステム
2606 ストレージサブシステム
2608 メインメモリ、メモリサブシステム
2610 永続的ストレージ、ファイルストレージサブシステム
2612 ユーザインターフェース入力デバイス
2614 ユーザインターフェース出力デバイス
2616 ネットワークインターフェースサブシステム
2618 ダイナミックランダムアクセスメモリ(DRAM)
2620 読み取り専用メモリ(ROM)
2624 クロック
【手続補正書】
【提出日】2024-07-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ブロックチェーン上で、資産と対話する少なくとも2つのクライアントを追跡するためのコンピュータで実施される方法であって、前記ブロックチェーンが、前記資産に関連するトランザクションのセット、前記少なくとも2つのクライアントのうちの第1のクライアントに関連するトランザクションの第1のセット、および前記少なくとも2つのクライアントのうちの第2のクライアントに関連するトランザクションの第2のセットを備え、前記方法が、
資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび前記資産を示すデータを備える資産対話イベント要求を受信するステップと、
前記資産に関連するトランザクションの前記セットへの少なくとも1つの参照、
前記第1のクライアントに関連するトランザクションの前記セットへの少なくとも1つの参照、および
前記第2のクライアントに関連するトランザクションの前記セットへの少なくとも1つの参照
に基づいてイベントトランザクションを生成するステップと、
前記イベントトランザクションを前記ブロックチェーンに出すステップとを備える、方法。
【請求項2】
前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照のうちの第1の参照が、前記資産に関連するトランザクションの前記セットに関連する資産トランザクション出力点を備える、請求項1に記載の方法。
【請求項3】
前記資産トランザクション出力点が、前記資産に関連するトランザクションの前記セットの中の次のトランザクションを指す、請求項2に記載の方法。
【請求項4】
前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照の第2の参照が、前記資産に関連するトランザクションの前記セットの中の最新のトランザクションに記憶されているデータを備える、請求項
1に記載の方法。
【請求項5】
前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照の前記第2の参照が、前記資産に関連するトランザクションの前記セットの中の前記最新のトランザクションの前記記憶されているデータペイロードの一部である、請求項4に記載の方法。
【請求項6】
前記第1のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照のうちの第1の参照および前記第2のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照のうちの第1の参照の各々が、第1のクライアントに関連するトランザクションの前記セットおよび前記第2のクライアントに関連するトランザクションの前記セットの各々に関連するトランザクション出力点を備える、請求項
1に記載の方法。
【請求項7】
各トランザクション出力点が、前記クライアントに関連するトランザクションの各々のそれぞれのセットの中の次のトランザクションを指す、請求項6に記載の方法。
【請求項8】
前記資産に関連するトランザクションの前記セットが、前記資産に関連するイベントストリームに関し、前記少なくとも2つのクライアントの中の所与のクライアントに関連するトランザクションの各セットが、前記所与のクライアントに関連するイベントストリームに関する、請求項
1に記載の方法。
【請求項9】
各イベントストリームが、前記イベントストリームがスマートコントラクトに関連するイベントのシーケンスを追跡するように、それぞれのスマートコントラクトを表す、請求項8に記載の方法。
【請求項10】
前記イベントトランザクションが、前記資産対話イベントに基づくデータを備える、請求項
1に記載の方法。
【請求項11】
前記資産対話イベントを示す前記データが、前記イベントトランザクションの消費不可能な出力に記憶される、請求項10に記載の方法。
【請求項12】
前記資産が曲であり、および/または、前記資産対話イベントが前記少なくとも2つのクライアントの間で前記資産の所有権を交換することである、請求項
1に記載の方法。
【請求項13】
前記資産に関連するトランザクションの前記セットへの参照を取得するステップと、
前記資産対話イベントに関連する前記クライアントに関連するトランザクションの各セットへの参照を取得するステップとをさらに備える、請求項
1に記載の方法。
【請求項14】
前記イベントトランザクションが、前記イベントトランザクションが属すトランザクションの各セットのためのペイロードを備える、請求項
1に記載の方法。
【請求項15】
前記イベントトランザクションが、前記資産に関連するトランザクションの前記セットに関連する第1のペイロード、前記第1のクライアントに関連するトランザクションの前記セットに関連する第2のペイロード、および前記第2のクライアントに関連するトランザクションの前記セットに関連する第3のペイロードを備える、請求項14に記載の方法。
【請求項16】
前記第1のペイロードが前記資産に関連するトランザクションの前記セットへの前記少なくとも1つの参照に基づき、前記第2のペイロードが前記第1のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照に基づき、前記第3のペイロードが前記第2のクライアントに関連するトランザクションの前記セットへの前記少なくとも1つの参照に基づく、請求項15に記載の方法。
【請求項17】
前記第1のペイロード、前記第2のペイロード、および前記第3のペイロードがマークル木根であり、前記方法がさらに、各マークル木を生成するステップと、各々の生成されたマークル木に基づいて各マークル木根を計算するステップとを備える、請求項1
5に記載の方法。
【請求項18】
前記ペイロードが各々前記イベントトランザクションの出力に記憶される、請求項1
5に記載の方法。
【請求項19】
前記資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび前記資産を示すデータに基づいてデータペイロードを生成するステップをさらに備える、請求項
1に記載の方法。
【請求項20】
前記データペイロードがマークル木根である、請求項19に記載の方法。
【請求項21】
前記データペイロードを生成する前記ステップが、前記資産対話イベントに関連する少なくとも2つのクライアントを示すデータおよび前記資産を示すデータを備えるマークル木を生成するステップを備える、請求項20に記載の方法。
【請求項22】
前記データペイロードが前記イベントトランザクションの出力に記憶される、請求項21に記載の方法。
【請求項23】
前記資産に関連するトランザクションのセットを作成するための作成要求を受信するステップと、
前記資産に関連するトランザクションの前記セットに関連する、および前記少なくとも2つのクライアントのうちの第1のクライアントに関連するトランザクションのセットに関連する、第1の所有権トランザクションを生成して前記ブロックチェーンに出すステップとをさらに備える、請求項
1に記載の方法。
【請求項24】
前記第1の所有権トランザクションが、前記資産を一意に識別するデジタルフィンガープリントを備える、請求項23に記載の方法。
【請求項25】
前記資産対話イベントが、前記少なくとも2つのクライアントのうちの前記第1のクライアントから前記少なくとも2つのクライアントのうちの前記第2のクライアントへの前記資産の所有権の移転を示す情報を備える所有権更新要求である、請求項
1に記載の方法。
【請求項26】
前記イベントトランザクションが、前記第1のクライアントが前記第2のクライアントに所有権を移転することに基づくデータを備える、請求項25に記載の方法。
【請求項27】
前記所有権
の移転に基づく前記データが
、更新トランザクションの消費不可能な出力に記憶される、請求項26に記載の方法。
【請求項28】
前記イベントトランザクションが、前記資産を使用する前記第1のクライアントに基づくデータを備える、請求項26に記載の方法。
【請求項29】
請求項1から28のいずれか一
項に記載の方法を実行するように構成される、デバイス。
【請求項30】
請求項29に記載のデバイスによるサーバと、
前記サーバへの前記資産対話イベント要求の送信を調整するように構成される、第1のクライアントデバイスおよび第2のクライアントデバイスとを備える、システム。
【請求項31】
ブロックチェーン上で資産の所有権および使用を追跡するためのコンピュータで実施される方法であって、
前記ブロックチェーン上で資産を第1の所有者と関連付けるための作成要求を受信するステップと、
前記資産を使用するユーザを示すデータを備える少なくとも1つの使用メッセージを受信し、各使用メッセージを受信すると、
使用トランザクションを前記ブロックチェーンに出すステップであって、前記使用トランザクションが、使用される前記資産および前記資産を使用するユーザに基づくデータを備える、ステップと、
第2の所有者を示す情報を備える所有権更新要求を受信し、前記所有権更新要求を受信すると、
更新トランザクションを前記ブロックチェーンに出すステップであって、前記更新トランザクションが、前記資産、前記第1の所有者、および前記第2の所有者に基づく情報を備える、ステップと
を備える、方法。
【請求項32】
前記ブロックチェーンが、前記資産に関連するトランザクションのセット、前記ユーザに関連するトランザクションのセット、前記第1の所有者に関連するトランザクションのセット、および前記第2の所有者に関連するトランザクションのセットのうちの任意の1つまたは複数を備える、請求項31に記載の方法。
【請求項33】
前記資産に関連するトランザクションの前記セットが前記資産に関連するスマートコントラクトと関連付けられ、前記第1の所有者に関連するトランザクションの前記セットが前記第1の所有者に関連するスマートコントラクトと関連付けられ
、第2のユーザに関連するトランザクションの前記セットが前記第2のユーザに関連するスマートコントラクトと関連付けられ、前記ユーザに関連するトランザクションの前記セットが前記ユーザに関連するスマートコントラクトと関連付けられる、請求項32に記載の方法。
【請求項34】
前記資産に関連するトランザクションの前記セットが前記資産に関連するイベントストリームに関し、前記ユーザに関連するトランザクションの前記セットが前記ユーザに関連するイベントストリームに関し、前記第1の所有者に関連するトランザクションの前記セットが前記第1の所有者に関連するイベントストリームに関し、前記第2の所有者に関連するトランザクションの前記セットが前記第2の所有者に関連するイベントストリームに関する、請求項32に記載の方法。
【請求項35】
各イベントストリームが、前記イベントストリームがスマートコントラクトに関連するイベントのシーケンスを追跡するように、スマートコントラクトを表す、請求項34に記載の方法。
【請求項36】
前記使用トランザクションが、前記資産に関連するトランザクションの前記セットへの少なくとも1つの参照に基づくデータを備える第1のデータペイロードと、前記ユーザに関連するトランザクションの前記セットへの少なくとも1つの参照に基づくデータを備える第2のデータペイロードとを備える、請求項3
2に記載の方法。
【請求項37】
前記資産に関連するトランザクションの前記セットが、前記資産の所有権の履歴を備え、示し、またはそれに基づく、請求項3
2に記載の方法。
【請求項38】
前記更新トランザクションが、前記資産に関連するトランザクションの前記セットからのトランザクションへの第3の参照に基づくデータを備える第3のデータペイロード、前記第1の所有者に関連するトランザクションの前記セットからのトランザクションへの第4の参照に基づくデータを備える第4のデータペイロード、および前記第2の所有者に関連するトランザクションの前記セットからのトランザクションへの第5の参照に基づくデータを備える第5のデータペイロードを備える、請求項3
2に記載の方法。
【請求項39】
前記ブロックチェーンへの前記更新トランザクションが確認されると、前記資産の所有権が前記第1の所有者から前記第2の所有者に移転されると見なされる、請求項38に記載の方法。
【請求項40】
前記資産への参照を備える履歴要求を要求者から受信し、前記履歴要求の受信に応答して、
前記資産の使用の履歴を前記要求者に提供するステップをさらに備え、前記資産の前記使用の前記履歴が、前記資産に関連するトランザクションの前記セットからの情報を備え、かつ/または、前記資産に関連するトランザクションの前記セットからの情報を使用して検証される、請求項3
2に記載の方法。
【請求項41】
前記使用メッセージがユーザによる前記資産の使用に基づくデータを備え、前記使用トランザクションが前記資産の使用を示すデータを備える、請求項3
1に記載の方法。
【請求項42】
前記資産が曲であり、使用を示す前記データが、ユーザが前記曲を聴いた回数および/または時間の長さを備える、請求項1から28および31から41のいずれかに記載の方法。
【請求項43】
請求項31から41のいずれか一
項に記載の方法を実行するように構成される、デバイス。
【請求項44】
請求項43に記載のデバイスによるサーバと、
前記サーバへの更新メッセージの送信を調整するように構成される、第1の所有権デバイスおよび第2の所有権デバイスとを備える、システム。
【国際調査報告】