(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-24
(54)【発明の名称】イベントの順序付けられたシーケンスの証明および検証
(51)【国際特許分類】
H04L 9/32 20060101AFI20250117BHJP
【FI】
H04L9/32 200Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024542185
(86)(22)【出願日】2023-01-12
(85)【翻訳文提出日】2024-09-12
(86)【国際出願番号】 EP2023050653
(87)【国際公開番号】W WO2023135217
(87)【国際公開日】2023-07-20
(32)【優先日】2022-01-13
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】オーウェン・ヴォーン
(72)【発明者】
【氏名】メメット・サビル・キラズ
(57)【要約】
イベントの順序付けられたシーケンスの証明を提供する、コンピュータにより実施される方法であって、方法は、コンピューティングデバイス上で実行され、トランザクションを受信するステップと、さらなるコンピューティングデバイスに送信されるべきさらなるトランザクションを作成するステップと、トランザクションを備えるトランザクションチェーンの中の最初のトランザクションにさらなるトランザクションが結びつけられることの証明をさらなるコンピューティングデバイスに提供する、さらなるトランザクションに関連付けられた証明データを取得するステップであって、最初のトランザクションが、イベントの順序付けられたシーケンスの中の最初のイベントに関わり、証明データが、(i)証明と、(ii)トランザクションの識別子と、(iii)最初のトランザクションの一意な識別子とを備える、ステップと、さらなるトランザクションおよび証明データをさらなるコンピューティングデバイスに送信するステップとを備える。
【特許請求の範囲】
【請求項1】
イベントの順序付けられたシーケンスの証明を提供する、コンピュータにより実施される方法であって、前記方法がコンピューティングデバイス上で実行され、
トランザクションを受信するステップと、
さらなるコンピューティングデバイスに送信されるべきさらなるトランザクションを作成するステップと、
前記トランザクションを備えるトランザクションチェーンの中の最初のトランザクションに前記さらなるトランザクションが結びつけられることの証明を前記さらなるコンピューティングデバイスに提供する、前記さらなるトランザクションに関連付けられた証明データを取得するステップであって、前記最初のトランザクションが、前記イベントの順序付けられたシーケンスの中の最初のイベントに関わり、前記証明データが、(i)証明と、(ii)前記トランザクションの識別子と、(iii)前記最初のトランザクションの一意な識別子とを備える、ステップと、
前記さらなるトランザクションおよび前記証明データを前記さらなるコンピューティングデバイスに送信するステップと
を備える、方法。
【請求項2】
前記トランザクションが前記最初のトランザクションであり、
前記証明データを取得するステップが、前記証明を所定の証明値に設定するステップと、
前記トランザクションの前記識別子を所定の初期値に設定するステップと
を備える、請求項1に記載の方法。
【請求項3】
前記トランザクションが前記トランザクションチェーンの前記最初のトランザクションではなく、
前記方法が、前記トランザクションが少なくとも1つの所定の条件に適合することを検証するステップを備える、請求項1に記載の方法。
【請求項4】
前記少なくとも1つの所定の条件が、前記トランザクションが前記トランザクションチェーンの中の以前のトランザクションのトランザクション出力を消費することを指定する、請求項3に記載の方法。
【請求項5】
前記少なくとも1つの所定の条件が、前記トランザクションが前記トランザクションのトランザクション出力のインデックスを備えることを指定する、請求項3に記載の方法。
【請求項6】
前記証明データを取得するステップが、
前記トランザクションおよび証明鍵を使用して前記証明を生成するステップと、
前記トランザクションの前記識別子を計算するステップと
を備える、請求項3から5のいずれか一項に記載の方法。
【請求項7】
前記証明データを前記さらなるトランザクションに含めるステップを備える、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記証明データを前記さらなるトランザクションの消費可能な出力に含めるステップを備える、請求項7に記載の方法。
【請求項9】
前記証明データを前記さらなるトランザクションの消費不可能な出力に含めるステップを備える、請求項7に記載の方法。
【請求項10】
前記証明データが前記さらなるトランザクションに含まれず、
前記方法が、前記さらなるトランザクションおよび前記証明データを別々に前記さらなるコンピューティングデバイスに送信するステップを備える、請求項1から6のいずれか一項に記載の方法。
【請求項11】
前記トランザクションが、前記コンピューティングデバイスに関連付けられたユーザへのデジタル資産の所有権の移転を表し、
前記さらなるトランザクションが、前記さらなるコンピューティングデバイスに関連付けられたさらなるユーザへの前記デジタル資産の所有権の移転を表す、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記デジタル資産が非代替性トークンである、請求項11に記載の方法。
【請求項13】
前記トランザクションがイベントデータと関連付けられ、
前記イベントデータが前記イベントの順序付けられたシーケンスの中のあるイベントに関わり、
前記さらなるトランザクションが、前記イベントの順序付けられたシーケンスの中のより後のイベントに関するさらなるイベントデータと関連付けられる、請求項1から10のいずれか一項に記載の方法。
【請求項14】
前記イベントデータが、物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたデータ記録を備え、
前記さらなるイベントデータが、前記物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたさらなるデータ記録を備える、請求項13に記載の方法。
【請求項15】
前記イベントデータがユーザに関連付けられたデータ記録を備え、
前記さらなるイベントデータが前記ユーザに関連付けられたさらなるデータ記録を備える、請求項13に記載の方法。
【請求項16】
前記トランザクションが前記イベントデータの表現を備え、
前記さらなるトランザクションが前記さらなるイベントデータの表現を備える、請求項13から15のいずれか一項に記載の方法。
【請求項17】
前記イベントデータが前記トランザクションの前記識別子に関連付けて遠隔デバイスに記憶され、
前記方法が、前記さらなるトランザクションの識別子に関連付けて前記さらなるイベントデータを前記遠隔デバイスに記憶するステップを備える、請求項13から15のいずれか一項に記載の方法。
【請求項18】
前記トランザクションおよび前記さらなるトランザクションがブロックチェーントランザクションである、請求項1から17のいずれか一項に記載の方法。
【請求項19】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項1から18のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項20】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項1から18のいずれか一項に記載の方法を実行させるコンピュータ可読命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項21】
プロセッサおよびメモリを備えるコンピューティングデバイスであって、前記メモリが、前記プロセッサによって実行されると前記コンピューティングデバイスに請求項1から18のいずれか一項に記載の方法を実行させる命令を記憶する、コンピューティングデバイス。
【請求項22】
イベントの順序付けられたシーケンスを検証するコンピュータにより実施される方法であって、前記方法がコンピューティングデバイス上で実行され、
さらなるコンピューティングデバイスからトランザクションを受信するステップと、
前記さらなるコンピューティングデバイスから、前記トランザクションに関連付けられた証明データを受信するステップであって、前記証明データが、(i)証明と、(ii)前記トランザクションチェーンの中の以前のトランザクションの識別子と、(iii)前記トランザクションチェーンの最初のトランザクションの一意な識別子とを備え、前記最初のトランザクションが、前記イベントの順序付けられたシーケンスの中の最初のイベントに関する、ステップと、
前記証明、前記トランザクションチェーンの中の以前のトランザクションの前記識別子、前記最初のトランザクションの前記一意な識別子、および検証鍵を使用して、前記トランザクションが前記トランザクションチェーンの中の前記最初のトランザクションと結びつけられることを検証するステップと
を備える、方法。
【請求項23】
前記トランザクションが前記証明データを備える、請求項22に記載の方法。
【請求項24】
前記トランザクションが前記証明データを前記トランザクションの消費可能な出力に含める、請求項23に記載の方法。
【請求項25】
前記トランザクションが前記証明データを前記トランザクションの消費不可能な出力に含める、請求項23に記載の方法。
【請求項26】
前記証明データが前記トランザクションとは別に受信される、請求項22に記載の方法。
【請求項27】
前記トランザクションが前記トランザクションチェーンの中の前記最初のトランザクションと結びつけられることを検証するステップが、
前記最初のトランザクションを取得するステップと、
前記最初のトランザクションの一意な識別子を計算するステップと、
前記最初のトランザクションの前記計算された一意な識別子が前記証明データの中の前記最初のトランザクションの前記一意な識別子と一致することを検証するステップと
をさらに備える、請求項22から26のいずれか一項に記載の方法。
【請求項28】
前記トランザクションが、前記さらなるコンピューティングデバイスに関連付けられたユーザから前記コンピューティングデバイスに関連付けられたユーザへのデジタル資産の所有権の移転を表す、請求項22から27のいずれか一項に記載の方法。
【請求項29】
前記デジタル資産が非代替性トークンである、請求項28に記載の方法。
【請求項30】
前記トランザクションがイベントデータと関連付けられ、
前記イベントデータが前記イベントの順序付けられたシーケンスの中のあるイベントに関わり、
前記さらなるトランザクションが、前記イベントの順序付けられたシーケンスの中のより後のイベントに関するさらなるイベントデータと関連付けられる、請求項22から27のいずれか一項に記載の方法。
【請求項31】
前記イベントデータが物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたデータ記録を備え、
前記さらなるイベントデータが前記物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたさらなるデータ記録を備える、請求項30に記載の方法。
【請求項32】
前記イベントデータがユーザに関連付けられたデータ記録を備え、
前記さらなるイベントデータが前記ユーザに関連付けられたさらなるデータ記録を備える、請求項30に記載の方法。
【請求項33】
前記トランザクションがブロックチェーントランザクションである、請求項22から32のいずれか一項に記載の方法。
【請求項34】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項22から33のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項35】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項22から33のいずれか一項に記載の方法を実行させるコンピュータ可読命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項36】
プロセッサおよびメモリを備えるコンピューティングデバイスであって、前記メモリが、前記プロセッサによって実行されると、前記コンピューティングデバイスに請求項22から33のいずれか一項に記載の方法を実行させる命令を記憶する、コンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、イベントの順序付けられたシーケンスの証明を提供すること、およびイベントの順序付けられたシーケンスを検証することに関する。
【背景技術】
【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】
ビットコインは、データがトランザクションに挿入されブロックチェーンにイミュータブルに記憶されることを可能にする。トランザクションの完全性の簡潔な証明は、Simplified Payment Verificationとして知られているプロセスにより与えられる。しかしながら、トランザクション間の関係により、追加の情報も伝えられ得る。たとえば、トランザクションBがトランザクションAの出力の1つを消費する場合、プロトコルのルールにより、トランザクションBがトランザクションAの後に作成されたことがわかる。
【0010】
トランザクション順序付けの概念は、直線のトランザクションチェーンに拡張され得る。各トランザクションがチェーンの中の以前のトランザクションの出力を消費する場合、イミュータブルな順序付けが確立され得る。この順序付けは、トランザクション内のデータペイロードにより受け継がれ、それはプルーフオブワークによって支援される。
【0011】
現在、信用される第三者を使用することなく、トランザクチョンチェーンを通じて2つのトランザクションが結びつけられることを証明する簡潔な方法はない。代わりに、チェーンの中のすべてのトランザクションを特定し、各トランザクションが以前のトランザクションの出力を消費することを明確に確認しなければならない。これは多くの使用事例において効率的な方法であり得るが、チェーンの長さとともに線形にストレージ費用が増大する。100万個のトランザクションのチェーンでは、証明サイズは数百メガバイトである。ビットコインなどの手数料の高い台帳においても、このサイズのトランザクションチェーンは時間とともに大きくなり得る。
【発明の概要】
【課題を解決するための手段】
【0012】
本明細書で開示される一態様によれば、イベントの順序付けられたシーケンスの証明を提供する、コンピュータにより実施される方法が提供され、方法は、コンピューティングデバイス上で実行され、トランザクションを受信するステップと、さらなるコンピューティングデバイスに送信されるべきさらなるトランザクションを作成するステップと、トランザクションを備えるトランザクションチェーンの中の最初のトランザクションにさらなるトランザクションが結びつけられることの証明をさらなるコンピューティングデバイスに提供する、さらなるトランザクションに関連付けられた証明データを取得するステップであって、最初のトランザクションが、イベントの順序付けられたシーケンスの中の最初のイベントに関わり、証明データが、(i)証明と、(ii)トランザクションの識別子と、(iii)最初のトランザクションの一意な識別子とを備える、ステップと、さらなるトランザクションおよび証明データをさらなるコンピューティングデバイスに送信するステップとを備える。
【0013】
本明細書で開示される別の態様によれば、イベントの順序付けられたシーケンスを検証するコンピュータにより実施される方法が提供され、方法は、コンピューティングデバイス上で実行され、さらなるコンピューティングデバイスからトランザクションを受信するステップと、さらなるコンピューティングデバイスから、トランザクションに関連付けられた証明データを受信するステップであって、証明データが、(i)証明と、(ii)トランザクションチェーンの中の以前のトランザクションの識別子と、(iii)トランザクションチェーンの最初のトランザクションの一意な識別子とを備え、最初のトランザクションが、イベントの順序付けられたシーケンスの中の最初のイベントに関する、ステップと、証明、トランザクションチェーンの中の以前のトランザクションの識別子、最初のトランザクションの一意な識別子、および検証鍵を使用して、トランザクションがトランザクションチェーンの中の最初のトランザクションと結びつけられることを検証するステップとを備える。
【0014】
ゼロ知識証明(ZKP)は、証明者として知られている関係者が、検証者として知られている別の関係者に対して、ある陳述が真であるという事実以外のどのような情報も明らかにすることなく、その陳述が真であることを証明し得るような方法である。本開示の実施形態では、ZKPは、2つのトランザクションが壊れていないトランザクションチェーンを通じて結びつけられることの証明を提供するために生成される。
【0015】
本開示の実施形態には、いくつかの適用例がある。たとえば、本開示の実施形態を使用すると、わずか数キロバイトでビットコインネットワークの現在の状態を決定することができる。新しいブロックチェーンノードがビットコインネットワークに入ることを望む場合、数百ギガバイトのデータをダウンロードし、ジェネシスブロックからのすべてのトランザクションが本当に正しいことを検証することに直面する。本開示の実施形態を使用すると、単一の機能でビットコインブロックチェーンの全体を検証するための証明を構築することができる。これは、ブロックヘッダまたはトランザクションDAG自体のレベルで行われ得る。
【0016】
本開示の実施形態の理解を助けるために、およびそのような実施形態がどのように具体化され得るかを示すために、単なる例として、添付の図への参照が行われる。
【図面の簡単な説明】
【0017】
【
図1】ブロックチェーンを実装するためのシステムの概略ブロック図である。
【
図2】ブロックチェーンに記録され得るトランザクションのいくつかの例を概略的に示す図である。
【
図3A】クライアントアプリケーションの概略ブロック図である。
【
図3B】
図3Aのクライアントアプリケーションによって提示され得る例示的なユーザインターフェースの概略的なモックアップの図である。
【
図4】一次トランザクションチェーンを示す図である。
【
図5】典型的なビットコイントランザクションの概略的な表現の図である。
【
図6】ユーザコンピュータデバイス間で送信されるトランザクションチェーンのトランザクションを示す図である。
【
図7a】最初のトランザクションを受信したことに応答してイベントの順序付けられたシーケンスの証明を提供する方法を示す図である。
【
図7b】最初のトランザクションを受信したことに応答してイベントの順序付けられたシーケンスの証明を提供する方法を示す図である。
【
図8】イベントの順序付けられたシーケンスを検証する方法を示す図である。
【
図9a】トランザクションチェーンの最初のトランザクションではないトランザクションを受信したことに応答して、イベントの順序付けられたシーケンスの証明を提供する方法を示す図である。
【
図9b】トランザクションチェーンの最初のトランザクションではないトランザクションを受信したことに応答して、イベントの順序付けられたシーケンスの証明を提供する方法を示す図である。
【発明を実施するための形態】
【0018】
例示的なシステムの概要
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、通常はインターネットなどのワイドエリアインターネットワークである、パケット交換ネットワーク101を備え得る。パケット交換ネットワーク101は、パケット交換ネットワーク101内でピアツーピア(P2P)ネットワーク106を形成するように並べられ得る複数のブロックチェーンノード104を備える。示されていないが、ブロックチェーンノード104は準完全グラフとして並べられ得る。したがって、各ブロックチェーンノード104は、他のブロックチェーンノード104に高度に接続される。
【0019】
各ブロックチェーンノード104は、ピアのコンピュータ機器を備え、異なるノード104は異なるピアに属する。各ブロックチェーンノード104は、1つまたは複数のプロセッサ、たとえば1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)、ならびに特定用途向け集積回路(ASIC)などの他の機器を備える、処理装置を備える。各ノードはまた、メモリ、すなわち、非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、たとえば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリ、もしくはEEPROMなどの電子媒体、および/または高額ディスクドライブなどの光学媒体を利用する、1つまたは複数のメモリユニットを備え得る。
【0020】
ブロックチェーン150はデータのブロック151のチェーンを備え、ブロックチェーン150のそれぞれのコピーが、分散ネットワークまたはブロックチェーンネットワーク101の中の複数のブロックチェーンノード104の各々において維持される。上で言及されたように、ブロックチェーン150のコピーを維持することは、ブロックチェーン150を完全に記憶することを必ずしも意味しない。代わりに、ブロックチェーン150は、各ブロックチェーンノード150が各ブロック151のブロックヘッダ(以下で論じられる)を記憶する限り、データを枝刈りされ得る。チェーンの中の各ブロック151は1つまたは複数のトランザクション152を備え、この文脈においてトランザクションはある種のデータ構造を指す。データ構造の性質は、トランザクションモデルまたはスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、1つの特定のトランザクションプロトコルを全体で使用する。ある一般的なタイプのトランザクションプロトコルにおいて、各トランザクション152のデータ構造は、少なくとも1つの入力および少なくとも1つの出力を備える。各出力は、ある数量のデジタル資産を表す額を財産として指定し、その例は、出力が暗号によりにロックされる対象であるユーザ103である(ロック解除、および引き換えまたは消費のために、そのユーザの署名または他のソリューションを必要とする)。各入力は、先行するトランザクション152の出力を指し示し、それによりそれらのトランザクションをつなぐ。
【0021】
各ブロック151はまた、ブロック151に対する逐次的な順序を定義するために、チェーンの中の以前に作成されたブロック151を指し示すブロックポインタ155を備える。各トランザクション152(コインベーストランザクション以外)は、トランザクションのシーケンスに対する順序を定義するために、以前のトランザクションへのポインタを備える(トランザクション152のシーケンスは分岐することが許容されることに留意されたい)。ブロック151のチェーンは、チェーンにおいて最初のブロックであったジェネシスブロック(Gb)153まで戻る。チェーン150の初期の1つまたは複数の元のトランザクション152は、先行するトランザクションではなくジェネシスブロック153を指し示していた。
【0022】
ブロックチェーンノード104の各々は、トランザクション152を他のブロックチェーンノード104に転送し、それにより、トランザクション152がネットワーク106全体に広められるようにするように構成される。各ブロックチェーンノード104は、ブロック151を作成し、同じブロックチェーン150のそれぞれのコピーをそれぞれのメモリに記憶するように構成される。各ブロックチェーンノード104はまた、ブロック151へと組み込まれるのを待機しているトランザクション152の順序付けられたセット(または「プール」)154を維持する。順序付けられたプール154は、「メモリプール」と呼ばれることが多い。本明細書におけるこの用語は、任意の特定のブロックチェーン、プロトコル、またはモデルに限定することを意図しない。それは、ノード104が有効であるものとして受け入れた、かつ同じ出力を消費することを試みる他のトランザクションをノード104が受け入れることが義務付けられない、トランザクションの順序付けられたセットを指す。
【0023】
所与の現在のトランザクション152jにおいて、入力(または各入力)は、トランザクションのシーケンスの中の先行するトランザクション152iの出力を参照するポインタを備え、これは、この出力が現在のトランザクション152jにおいて引き換えられる、または「消費される」ことになることを指定する。一般に、先行するトランザクションは、順序付けられたセット154または任意のブロック151における任意のトランザクションであり得る。先行するトランザクション152iは、現在のトランザクション152iが作成される時点で、またはネットワーク106に送信される時点ですら、必ずしも存在する必要はないが、現在のトランザクションが有効になるためには、先行するトランザクション152iが存在して妥当性確認される必要がある。したがって、本明細書における「先行する」は、ポインタにより連結される論理シーケンスにおいて先行するものを指し、時間的な順序における作成または送信の時間を必ずしも指さず、したがって、トランザクション152i、152jが順不同で作成または送信されることを必ずしも排除しない(オーファントランザクションについての以下の議論を参照)。先行するトランザクション152iは同様に、祖先トランザクションまたは先行者トランザクションと呼ばれ得る。
【0024】
現在のトランザクション152jの入力はまた、入力承認、たとえば、先行するトランザクション152iの出力がロックされる対象であるユーザ103aの署名を備える。そして、現在のトランザクション152jの出力は、新しいユーザまたはエンティティ103bに暗号によりロックされ得る。したがって、現在のトランザクション152jは、現在のトランザクション152jの出力において定義されるような新しいユーザまたはエンティティ103bに、先行するトランザクション152iの入力において定義される額を移すことができる。いくつかの場合、トランザクション152は、複数のユーザまたはエンティティ(そのうちの1つは、残金を与えるために元のユーザまたはエンティティ103aであり得る)の間で入力の額を分割するために、複数の出力を有し得る。いくつかの場合、トランザクションはまた、1つまたは複数の先行するトランザクションの複数の出力からの額を一緒に集めて、現在のトランザクションの1つまたは複数の出力を再分配するために、複数の入力を有し得る。
【0025】
ビットコインなどの出力ベースのトランザクションプロトコルによれば、個々のユーザまたは組織などの関係者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のネットワーク全体に広められる。
【0026】
出力ベースのモデルにおいて、所与の出力(たとえば、UXTO)が割り当てられる(たとえば、消費される)かどうかの定義は、それがブロックチェーンノードプロトコルに従って別の前方のトランザクション152jの入力によりすでに有効に引き換えられているかどうかである。トランザクションが有効になるための別の条件は、そのトランザクションが割り当てることまたは引き換えることを試みる先行するトランザクション152iの出力が、別のトランザクションによってまだ引き換えられていないことである。やはり、有効ではない場合、トランザクション152jは、ブロックチェーン150において広められず(無効であるものとしてフラグを立てられて警告のために広められない限り)、または記録されない。これは、取引者が同じトランザクションの出力を一度より多く割り当てることを試みるような、二重消費から守る。一方、アカウントベースのモデルは、アカウント残高を維持することによって二重消費から守る。やはり、トランザクションの定められた順序があるので、アカウント残高は任意のある時間において単一の定められた状態を有する。
【0027】
トランザクションを検証することに加えて、ブロックチェーンノード104はまた、マイニングと一般に呼ばれるプロセスにおいて、トランザクションのブロックを最初に作成するのを競い、これは「プルーフオブワーク」により支援される。ブロックチェーンノード104において、新しいトランザクションは、ブロックチェーン150に記録されているブロック151にまだ表れていない有効なトランザクションの順序付けられたプール154に追加される。そして、ブロックチェーンノードは、暗号パズルを解こうとすることによって、トランザクションの順序付けられたセット154からトランザクション152の新しい有効なブロック151を競って組み立てる。通常、これは、「ノンス」が未処理のトランザクションの順序付けられたプール154の表現と連結されてハッシュされると、ハッシュの出力が所定の条件を満たすような、ノンス値を探すことを備える。たとえば、所定の条件は、ハッシュの出力がある定められた数の先頭の0を有するということであり得る。これは、プルーフオブワークパズルの1つの具体的なタイプにすぎず、他のタイプが排除されないことに留意されたい。ハッシュ関数の性質は、それがその入力に関して予測不可能な出力を有するというものである。したがって、この探索は、ブルートフォースによってのみ実行することができるので、パズルを解こうとしている各ブロックチェーンノード104において大量の処理リソースを消費する。
【0028】
パズルを解こうとする第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において順序付けられるブロックに記録されるので、これはトランザクションのイミュータブルな公開台帳を提供する。
【0029】
任意の所与の時間において競ってパズルを解く異なるブロックチェーンノード104は、それらのブロックチェーンノードがいつ解の探索を始めたか、またはトランザクションが受信された順序に応じて、任意の所与の時間におけるまだ公開されていないトランザクション154のプールの異なるスナップショットに基づいて、競ってパズルを解いていることがあることに留意されたい。それぞれのパズルを最初に解いた者が、どのトランザクション152が次の新しいブロック151nに含まれるか、およびどの順序で含まれるかを定義し、公開されていないトランザクションの現在のプール154は更新される。ブロックチェーンノード104は次いで、公開されていないトランザクション154の新しく定義された順序付けられたプールからブロックを競って作成し続け、以下同様である。生じ得るあらゆる「フォーク」を解決するためのプロトコルも存在し、これは、2つのブロックチェーンノード104が互いに非常に短い時間内にパズルを解き、その結果、ブロックチェーンの矛盾する景色がノード104間で広められるようになる状況である。つまり、フォークの先端がより長く成長した方が、最終的なブロックチェーン150になる。同じトランザクションが両方のフォークに現れるので、これはネットワークのユーザまたはエージェントに影響しないはずであることに留意されたい。
【0030】
ビットコインブロックチェーン(および大半の他のブロックチェーン)では、新しいブロック104の構築に成功するノードは、追加の定められた量のデジタル資産を分配する新しい特別な種類のトランザクション(あるエージェントまたはユーザから別の者にある額のデジタル資産を移転するエージェント間またはユーザ間トランザクションではなく)において、追加の受け入れられる額のデジタル資産を新しく割り当てるための能力を与えられる。この特別なタイプのトランザクションは通常、「コインベーストランザクション」と呼ばれるが、「開始トランザクション」または「生成トランザクション」とも呼ばれることがある。それは通常、新しいブロック151nの最初のトランザクションを形成する。プルーフオブワークは、この特別なトランザクションが後で引き換えられることを可能にするプロトコルルールに従うという、新しいブロックを構築するノードの意図を示すものである。ブロックチェーンプロトコルルールは、この特別なトランザクションを引き換えられるようになるまで、成熟期間、たとえば100ブロックを必要とし得る。しばしば、通常の(非生成)トランザクション152はまた、そのトランザクションが公開されたブロック151nを作成したブロックチェーンノード104にさらに報酬を与えるために、その出力の1つにおいて追加のトランザクションフィーを指定する。この料金は普通は「トランザクションフィー」と呼ばれ、以下で論じられる。
【0031】
トランザクションの妥当性確認および公開に関与するリソースにより、典型的にはブロックチェーンノード104の少なくとも各々が、1つまたは複数の物理サーバユニットを備えるサーバという形態をとり、またはデータセンター全体という形態すらとる。しかしながら、原理的には、あらゆる所与のブロックチェーンノード104は、一緒にネットワーク接続されたユーザ端末またはユーザ端末のグループという形態をとり得る。
【0032】
各ブロックチェーンノード104のメモリは、それぞれの役割を実行し、ブロックチェーンノードプロトコルに従ってトランザクション152を扱うように、ブロックチェーンノード104の処理装置上で実行するように構成される、ソフトウェアを記憶する。ブロックチェーンノード104に対する本明細書に起因するあらゆる活動が、それぞれのコンピュータ機器の処理装置で実行されるソフトウェアによって実施され得ることが理解されるだろう。ノードソフトウェアは、アプリケーション層における1つまたは複数のアプリケーションで、またはオペレーティングシステム層もしくはプロトコル層などのより低次の層で、またはこれらの任意の組合せで実装され得る。
【0033】
消費するユーザの役割を果たす複数の関係者103の各々のコンピュータ機器102も、ネットワーク101に接続される。これらのユーザは、ブロックチェーンネットワーク106と対話し得るが、トランザクションの検証またはブロックの構築には参加しない。これらのユーザまたはエージェント103の一部は、トランザクションにおいて送信者または受信者として活動し得る。他のユーザは、必ずしも送信者または受信者として活動することなく、ブロックチェーン150と対話し得る。たとえば、一部の関係者は、ブロックチェーン150のコピーを記憶する(たとえば、ブロックチェーンノード104からブロックチェーンのコピーを取得した)ストレージエンティティとして活動し得る。
【0034】
関係者103の一部またはすべてが、異なるネットワーク、たとえばブロックチェーンネットワーク106に重畳されるネットワークの一部として接続され得る。ブロックチェーンネットワークのユーザ(「クライアント」と呼ばれることが多い)は、ブロックチェーンネットワーク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の関係者」で置き換えられ得ることが理解されるだろう。
【0035】
各関係者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つまたは複数の他のネットワーク接続されたリソースを備え得る。
【0036】
クライアントアプリケーション105は最初に、たとえばサーバからダウンロードされる、あるいは、リムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスクもしくはテープ、CDもしくはDVD ROMなどの光学ディスク、またはリムーバブル光学ドライブなどの、リムーバブルストレージデバイス上で提供される、適切なコンピュータ可読記憶媒体上の任意の所与の関係者103のコンピュータ機器102に提供され得る。
【0037】
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには2つの主要な機能がある。これらのうちの1つは、それぞれの関係者103がトランザクション152を作成し、承認(たとえば署名)し、1つまたは複数のビットコインノード104に送信して、トランザクション152がブロックチェーンノード104のネットワーク全体に広められてブロックチェーン150に含まれるようにすることを可能にすることである。もう1つは、それぞれの関係者が現在所有するデジタル資産の額をそれぞれの関係者に報告することである。出力ベースのシステムでは、この第2の機能は、対象の関係者に属するブロックチェーン150全体に散在する様々なトランザクション152の出力において定義される額を照合することを備える。
【0038】
注意:様々なクライアント機能は所与のクライアントアプリケーション105へと統合されるものとして説明されることがあるが、これは必ずしも限定するものではなく、代わりに、本明細書において説明されるあらゆるクライアント機能は、一連の2つ以上の別個の適用例、たとえばAPIを介してインターフェースすること、または一方が他方へのプラグインであることにおいて実装され得る。より一般的には、クライアント機能は、アプリケーション層、またはオペレーティングシステムなどのより低次の層、またはこれらの任意の組合せにおいて実装され得る。以下は、クライアントアプリケーション105に関して説明されるが、それは限定するものではないことが理解されるだろう。
【0039】
各コンピュータ機器102上のクライアントアプリケーションまたはソフトウェア105のインスタンスは、ネットワーク106のブロックチェーンノード104のうちの少なくとも1つに動作可能に結合される。これは、クライアント105のウォレット機能がトランザクション152をネットワーク106に送信することを可能にする。クライアント105はまた、それぞれの関係者103が受信者であるあらゆるトランザクションについてブロックチェーン150にクエリするために、ブロックチェーンノード104に連絡することも可能である(または、実施形態では、ブロックチェーン150が、公的な存在であることにより一部トランザクションに信用をもたらす公的機関であるので、実際にブロックチェーン150における他の関係者のトランザクションを調査する)。各コンピュータ機器102のウォレット機能は、トランザクションプロトコルに従ってトランザクション152を編成して送信するように構成される。上で述べられたように、各ブロックチェーンノード104は、ブロックチェーンノードプロトコルに従ってトランザクション152を妥当性確認し、ブロックチェーンネットワーク106全体にトランザクション152を広めるためにそれらを転送するように構成される、ソフトウェアを実行する。トランザクションプロトコルおよびノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルを伴い、一緒に所与のトランザクションモデルを実装する。ブロックチェーン150の中のすべてのトランザクション152に対して、同じトランザクションプロトコルが使用される。同じノードプロトコルが、ネットワーク106の中のすべてのノード104によって使用される。
【0040】
所与の関係者103、たとえばAliceが、新しいトランザクション152jをブロックチェーン150に含まれるように送信することを望むとき、彼女は関連するトランザクションプロトコルに従って(彼女のクライアントアプリケーション105のウォレット機能を使用して)新しいトランザクションを編成する。彼女は次いで、クライアントアプリケーション105から、彼女が接続されている1つまたは複数のブロックチェーンノード104に、トランザクション152を送信する。たとえば、これは、Aliceのコンピュータ102に最善に接続されるブロックチェーンノード104であり得る。任意の所与のブロックチェーンノード104が新しいトランザクション152jを受信するとき、ブロックチェーンノード104は、ブロックチェーンノードプロトコルおよびそのそれぞれの役割に従って、新しいトランザクション152jを扱う。これは、新しく受信されたトランザクション152jが「有効」であるための何らかの条件を満たすかどうかをまず確かめることを備え、その例がまもなくより詳しく論じられる。一部のトランザクションプロトコルでは、妥当性確認のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であり得る。代替として、この条件は単に、ノードプロトコルの内蔵機能であってもよく、またはスクリプトとノードプロトコルの組合せによって定義されてもよい。
【0041】
新しく受信されるトランザクション152jが有効であるものとして見なされるように試験に合格する条件(すなわち、それが「妥当性確認される」条件)のもとで、トランザクション152jを受信する任意のブロックチェーンノード104が、新しい妥当性確認されたトランザクション152をそのブロックチェーンノード104に維持されているトランザクションの順序付けられたセット154に追加する。さらに、トランザクション152jを受信するあらゆるブロックチェーンノード104は、妥当性確認されたトランザクション152以降をネットワーク106の中の1つまたは複数の他のブロックチェーンノード104に広める。各ブロックチェーンノード104は同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、それがまもなくネットワーク106全体に広められることを意味する。
【0042】
所与のブロックチェーンノード104において維持される未処理のトランザクションの順序付けられたプール154の利用を認められると、そのブロックチェーンノード104は、新しいトランザクション152を含むそれぞれのプール154の最新のバージョンについてのプルーフオブワークパズルを競って解き始める(他のブロックチェーンノード104が、トランザクションの異なる順序付けられたセット154に基づいてパズルを解こうとしていることがあるが、最初にたどり着いた者が最新のブロック1511に含まれるトランザクションのセットを定義することを思い出されたい。最終的に、ブロックチェーンノード104は、Aliceのトランザクション152jを含む順序付けられたプール154の一部のためのパズルを解く)。プルーフオブワークが、新しいトランザクション152jを含むプール154に対して行われると、それはイミュータブルに、ブロックチェーン150の中のブロック151のうちの1つの一部になる。各トランザクション152は、より前のトランザクションへのポインタを備えるので、トランザクションの順序もイミュータブルに記録される。
【0043】
異なるブロックチェーンノード104は、所与のトランザクションの異なるインスタンスをまず受信するので、あるインスタンスが新しいブロック151において公開される前は、どのインスタンスが「有効」であるかについて矛盾した見方を有することがあり、それが公開される時点では、公開されるインスタンスが唯一の有効なインスタンスであることにすべてのブロックチェーンノード104が合意している。ブロックチェーンノード104があるインスタンスを有効であるものとして受け入れ、第2のインスタンスがブロックチェーン150に記録されていることを発見する場合、そのブロックチェーンノード104は、これを受け入れ、最初に受け入れたインスタンス(すなわち、ブロック151において公開されていないインスタンス)を廃棄する(すなわち、無効であるものとして扱う)。
【0044】
一部のブロックチェーンネットワークによって運用される代替のタイプのトランザクションプロトコルは、アカウントベースのトランザクションモデルの一部として、「アカウントベース」プロトコルと呼ばれることがある。アカウントベースの場合、各トランザクションは、過去のトランザクションのシーケンスの中の先行するトランザクションのUTXOを参照することによってではなく、絶対的なアカウント残高を参照することによって、移されるべき額を定義する。すべてのアカウントの現在の状態が、ブロックチェーンとは別に、そのネットワークのノードによって記憶され、定期的に更新される。そのようなシステムでは、トランザクションは、アカウントの実行中のトランザクションタリー(「ポジション」とも呼ばれる)を使用して順序付けられる。この値は、暗号署名の一部として送信者により署名され、トランザクション参照計算の一部としてハッシュされる。加えて、任意選択のデータフィールドはまた、署名されたトランザクションであってもよい。このデータフィールドは、たとえば以前のトランザクションIDがデータフィールドに含まれる場合、以前のトランザクションを指し示し得る。
【0045】
UTXOベースのモデル
図2は、例示的なトランザクションプロトコルを示す。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と省略される)は、ブロックチェーン150の基本データ構造である(各ブロック151は1つまたは複数のトランザクション152を備える)。以下は、出力ベースまたは「UTXO」ベースのプロトコルに言及して説明される。しかしながら、これはすべての可能な実施形態への限定ではない。例示的なUTXOベースのプロトコルはビットコインに言及して説明されるが、それは他の例示的なブロックチェーンネットワーク上で等しく実装され得ることに留意されたい。
【0046】
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に記憶される。
【0047】
Alice 103aが、対象のある額のデジタル資産をBob 103bに移すトランザクション152jを作成することを望んでいるとする。
図2において、Aliceの新しいトランザクション152jは「Tx
1」とラベリングされる。Tx
1は、シーケンスの中の先行するトランザクション152iの出力203においてAliceにロックされるデジタル資産の額をとり、その少なくとも一部をBobに移す。先行するトランザクション152iは、
図2では「Tx
0」とラベリングされる。Tx
0およびTx
1は任意のラベルにすぎない。それらは、Tx
0がブロックチェーン151の最初のトランザクションであることを必ずしも意味せず、Tx
1がプール154の中のすぐ次のトランザクションであることも意味しない。Tx
1は、Aliceにロックされている未消費の出力203をまだ有するあらゆる先行する(すなわち、祖先)トランザクションを指し示し得る。
【0048】
先行するトランザクションTx0は、Aliceが新しいトランザクションTx1を作成するとき、または少なくとも彼女がそれをネットワーク106に送信するときにはすでに、ブロックチェーン150のブロック151において妥当性確認されそれに含まれていることがある。それは、その時点ですでにブロック151のうちの1つに含まれていることがあり、または、順序付けられたセット154においてまだ待機していることがあり、その場合、それは新しいブロック151にまもなく含められる。代替として、Tx0およびTx1は、一緒に作成されてネットワーク106に送信されてもよく、または、ノードプロトコルが「オーファン」トランザクションのバッファリングを許容する場合、Tx0がTx1の後に送信されることすらあってもよい。トランザクションのシーケンスの文脈で本明細書において使用される「先行する」および「後続の」という用語は、トランザクションにおいて指定されるトランザクションポインタによって定義されるようなシーケンスにおけるトランザクションの順序を指す(どのトランザクションがどの他のトランザクションを指し示すか、など)。それらは、「先行者」および「後継者」、または「祖先」および「子孫」、「親」および「子」などにより等しく置き換えられ得る。これは、それらが作成される順序、ネットワーク106に送信される順序、または任意の所与のブロックチェーンノード104に到達する順序を必ずしも示唆しない。それでも、先行するトランザクション(祖先トランザクションまたは「親」)を指し示す後続のトランザクション(子孫トランザクションまたは「子」)は、親トランザクションが妥当性確認されるまでは、かつ妥当性確認されない限り、妥当性確認されない。親より前にブロックチェーンノード104に到達する子は、オーファンであると見なされる。それは、ノードプロトコルおよび/またはノード挙動に応じて、廃棄され、または親を待機するためにある時間の間バッファリングされ得る。
【0049】
先行するトランザクションTx0の1つまたは複数の出力203のうちの1つは、ここでUTXO0とラベリングされる特定のUTXOを備える。各UTXOは、UTXOによって表されるデジタル資産の額を指定する値と、後続のトランザクションが妥当性確認されるようにするために、したがってUTXOの引き換えが成功するために、後続のトランザクションの入力202におけるロック解除スクリプトによって満たされなければならない条件を定義するロックスクリプトとを備える。通常、ロックスクリプトは、額を特定の関係者(ロックスクリプトが含まれるトランザクションの受益者)にロックする。すなわち、ロックスクリプトはロック解除条件を定義し、その条件は通常、後続のトランザクションの入力におけるロック解除スクリプトが、先行するトランザクションがロックされる対象である関係者の暗号署名を備えるという条件を備える。
【0050】
ロックスクリプト(scriptPubKeyとしても知られている)は、ノードプロトコルによって認識される分野特有の言語で書かれるコードである。そのような言語の具体的な例は、ブロックチェーンネットワークによって使用される「Script」(大文字のS)と呼ばれる。ロックスクリプトは、トランザクション出力203を消費するためにどの情報が必要とされるか、たとえば、Aliceの署名の要件を指定する。ロック解除スクリプトは、トランザクションの出力に現れる。ロック解除スクリプト(scriptSigとしても知られている)は、ロックスクリプト基準を満たすために必要とされる情報を提供する分野特有の言語で書かれるコードである。たとえば、それはBobの署名を含み得る。ロック解除スクリプトはトランザクションの入力202に現れる。
【0051】
よって、示される例では、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により有効な署名を提供するために署名される必要のあるデータ(または「メッセージ」)は、ロックスクリプトによって、またはノードプロトコルによって、またはこれらの組合せによって定義され得る。
【0052】
新しいトランザクションTx1がブロックチェーンノード104に到達すると、ノードはノードプロトコルを適用する。これは、ロック解除スクリプトがロックスクリプトにおいて定義される条件(この条件は1つまたは複数の基準を備え得る)を満たすかどうかを確かめるために、ロックスクリプトおよびロック解除スクリプトを一緒に実行することを備える。実施形態では、これは2つのスクリプトを連結することを伴う。
<Sig PA><PA>||[Checksig PA]
ここで、「||」は連結を表し、「<...>」はスタックにデータを置くことを意味し、「[...]」はロックスクリプト(この例では、スタックベース言語)に含まれる関数である。等価的に、スクリプトを連結するのではなく、スクリプトは共通のスタックを用いて次々に実行されてもよい。いずれにしても、一緒に実行されると、スクリプトは、Tx0の出力の中のロックスクリプトに含まれるような、Aliceの公開鍵PAを使用して、Tx1の入力の中のロック解除スクリプトがデータの予想される部分に署名するAliceの署名を含むことを認証する。データ自体(「メッセージ」)の予想される部分も、この認証を実行するために含まれる必要がある。実施形態では、署名されたデータはTx1の全体を備える(よって、平文でデータの署名された部分を指定する別個の要素が含まれる必要がなく、それは、もともと存在していたからである)。
【0053】
公開-秘密暗号による認証の詳細は、当業者には馴染みがある。基本的に、Aliceが自身の秘密鍵を使用してメッセージに署名した場合、平文のAliceの公開鍵およびメッセージを与えられると、ノード104などの別のエンティティは、メッセージがAliceによって署名されたに違いないことを認証することが可能である。署名することは通常、メッセージをハッシュし、ハッシュに署名し、これを署名としてメッセージへとタグ付けすることで、公開鍵のあらゆる保有者が署名を認証することを可能にすることを備える。したがって、本明細書における、特定のデータまたはトランザクションの一部に署名することなどへのあらゆる言及は、実施形態では、そのデータまたはトランザクション一部のハッシュに署名することを意味することに留意されたい。
【0054】
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の中の別の有効なトランザクションへとすでに形成したかどうかである。
【0055】
所与のトランザクション152のすべての出力203において指定される総額が、すべてのその入力202によって指し示される総額より大きい場合、これもまた、大半のトランザクションモデルにおいて、無効であることの根拠になる。したがって、そのようなトランザクションは、広められず、ブロック151にも含められない。
【0056】
UTXOベースのトランザクションモデルにおいて、所与のUTXOは全体として消費される必要があることに留意されたい。それは、消費されるものとしてUTXOにおいて定義される額の一部を、別の一部が消費されながら「置き去りにする」ことができない。しかしながら、UTXOからの額は、次のトランザクションの複数の出力の間で分割され得る。たとえば、Tx0の中のUTXO0において定義される額は、Tx1の中の複数のUTXO間で分割され得る。したがって、AliceがUTXO0において定義される額のすべてをBobに与えることを望まない場合、彼女はリマインダーを使用してTx1の第2の出力の残金を自分に与え、または別の関係者に支払うことができる。
【0057】
実際には、Aliceは普通は、Aliceのトランザクション104をブロック151に含めることに成功するビットコインノード104に対する料金も含める必要がある。Aliceがそのような料金を含めない場合、Tx0はブロックチェーンノード104によって拒絶されてもよく、したがって、技術的には有効であっても、広められず、ブロックチェーン150に含められなくてもよい(ノードプロトコルは、ブロックチェーンノード104がトランザクション152を受け入れることを望まない場合、それを強いることはない)。一部のプロトコルでは、トランザクションフィーは、固有の別々の出力203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、入力202によって指し示される総額と所与のトランザクション152の出力203において指定される総額とのあらゆる差が、トランザクションを公開するブロックチェーンノード104に自動的に与えられる。たとえば、UTXO0へのポインタがTx1への唯一の入力であり、Tx1が唯一の出力UTXO1を有するとする。UTXO0において指定されるデジタル資産の額がUTXO1において指定される額より大きい場合、その差が、UTXO1を含むブロックを作成するために、プルーフオブワークの競争に勝利するノード104によって割り当てられ得る。しかしながら、代替または追加として、トランザクションフィーが、トランザクション152のUTXO203のうちの自身固有のUTXOにおいて明示的に指定され得ることは、必ずしも排除されない。
【0058】
AliceおよびBobのデジタル資産は、ブロックチェーン150のどこかにある任意のトランザクション152において彼らにロックされるUTXOからなる。したがって、通常は、所与の関係者103の資産は、ブロックチェーン150全体の、様々なトランザクション152のUTXO全体に分散している。所与の関係者103の総残高を定義する1つの数字が、ブロックチェーン150のどこかに保管されているということはない。それぞれの関係者にロックされており、別のその先のトランザクションにおいてまだ消費されていないすべての様々なUTXOの値を一緒に照合することが、クライアントアプリケーション150のウォレット機能の役割である。そのウォレット機能は、ビットコインノード104のいずれかに記憶されているようなブロックチェーン150のコピーをクエリすることによって、これを行うことができる。
【0059】
スクリプトコードはしばしば、概略的(すなわち、厳密な言語を使用せずに)に表現されることに留意されたい。たとえば、特定の関数を表すためにオペレーションコード(オペコード)を使用することがある。「OP_...」は、Script言語の特定のオペコードを指す。例として、OP_RETURNは、ロックスクリプトの最初おいてOP_FALSEが前にあるとトランザクション内のデータを記憶できるトランザクションの消費不可能な出力を生み出し、それによりブロックチェーン150にデータをイミュータブルに記録するような、Script言語のオペコードである。たとえば、データは、ブロックチェーンに記憶することが望まれる文書を備え得る。
【0060】
通常、トランザクションの入力は、公開鍵PAに対応するデジタル署名を含む。実施形態では、これは、楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は特定のデータに署名する。いくつかの実施形態では、所与のトランザクションに対して、署名はトランザクション入力の一部、およびトランザクション出力の一部またはすべてに署名する。署名する出力の具体的な部分は、SIGHASHフラグに依存する。SIGHASHフラグは普通は、どの出力が署名されるかを選択するために署名の最後に含まれる(したがって署名の時点で固定される)4バイトのコードである。
【0061】
ロックスクリプトは時々「scriptPubKey」と呼ばれ、それぞれのトランザクションがロックされる対象である関係者の公開鍵をロックスクリプトが通常は備えるという事実を指している。ロック解除スクリプトは時々「scriptSig」と呼ばれ、ロック解除スクリプトが対応する署名を通常は供給するという事実を指している。しかしながら、より一般的には、UTXOが引き換えられるようにするための条件が署名を認証することを備えることは、ブロックチェーン150のすべての適用例において必須ではない。より一般的には、スクリプト言語は、任意の1つまたは複数の条件を定義するために使用され得る。したがって、より一般的な用語「ロックスクリプト」および「ロック解除スクリプト」が好まれることがある。
【0062】
クライアントソフトウェア
図3Aは、ここで開示される方式の実施形態を実装するためのクライアントアプリケーション105の例示的な実装形態を示す。クライアントアプリケーション105は、トランザクションエンジン401およびユーザインターフェース(UI)層402を備える。トランザクションエンジン401は、上で論じられまもなくさらに詳しく論じられるような方式に従って、トランザクション152を編成すること、ブロックチェーンネットワーク106を通じて広められるようにトランザクションを1つまたは複数のノード104に送信することなどの、クライアント105の背後にあるトランザクション関連機能を実施することを行うように構成される。
【0063】
UI層402は、それぞれのユーザのコンピュータ機器102のユーザ出力手段を介してそれぞれのユーザ103に情報を出力すること、および機器102のユーザ入力手段を介してそれぞれのユーザ103から入力を受け取ることを含む、機器102のユーザ入力/出力(I/O)手段を介してユーザインターフェースをレンダリングすることを行うように構成される。たとえば、ユーザ出力手段は、視覚的な出力を提供するための1つまたは複数の表示画面(タッチスクリーンまたは非タッチスクリーン)、オーディオ出力を提供するための1つまたは複数のスピーカー、および/または触覚出力を提供するための1つまたは複数の触覚出力デバイスなどを備え得る。ユーザ入力手段は、たとえば、1つもしくは複数のタッチスクリーンの入力アレイ(出力手段に使用されるものと同じまたは異なる)、マウス、トラックパッド、もしくはトラックボールなどの1つもしくは複数のカーソルベースのデバイス、発話もしくは声の入力を受け取るための1つもしくは複数のマイクロフォンおよび発話もしくは声認識アルゴリズム、手もしくは体のジェスチャの形態で入力を受け取るための1つもしくは複数のジェスチャベースの入力デバイス、または、1つもしくは複数の機械的なボタン、スイッチ、もしくはジョイスティックなどを備え得る。
【0064】
注意:本明細書の様々な機能は、同じクライアントアプリケーション105へと統合されるものとして説明されることがあるが、これは必ずしも限定するものではなく、代わりにそれらは2つ以上の別個のアプリケーションのスイートにおいて実装されてもよく、たとえば、それらのアプリケーションは、一方が他方へのプラグインであり、またはAPI(アプリケーションプログラミングインターフェース)を介してインターフェースする。たとえば、トランザクションエンジン401の機能は、UI層402とは別のアプリケーションにおいて実装されてもよく、または、トランザクションエンジン401などの所与のモジュールの機能は、1つより多くのアプリケーション間で分割され得る。説明される機能の一部またはすべてが、たとえばオペレーティングシステム層において実装され得ることも排除されない。単一のまたは所与のアプリケーション105などへの言及が本明細書のどこかで行われる場合、それは例にすぎず、より一般的には、説明される機能は任意の形態のソフトウェアにおいて実装され得ることが理解されるだろう。
【0065】
図3Bは、Aliceの機器102aのクライアントアプリケーション105aのUI層402によってレンダリングされ得るユーザインターフェース(UI)500の例のモックアップを与える。同様のUIが、Bobの機器102bのクライアント105b、または任意の他の関係者のクライアントによってレンダリングされ得ることが理解されるだろう。
【0066】
例として、
図3BはAliceの視点からUI500を示す。UI500は、ユーザ出力手段を介して別個のUI要素としてレンダリングされる1つまたは複数のUI要素501、502、503を備え得る。
【0067】
たとえば、UI要素は1つまたは複数のユーザが選択可能な要素501を備えてもよく、これは、異なる画面上のボタン、またはメニューの中の異なるオプションなどであり得る。ユーザ入力手段は、UI要素を画面上でクリックもしくはタッチすること、または望まれるオプションの名前を話すことなどの、オプションの1つを選択することまたは別様に操作することをユーザ103(この場合Alice 103a)が行うことを可能にするようになされる(本明細書で使用される「手動」という用語は、自動と対比することのみが意図され、手を使用することに必ずしも限定されないことに留意されたい)。オプションは、ユーザ(Alice)がトランザクション152を編成し、ブロックチェーンネットワーク106を通じて広められるようにトランザクションを1つまたは複数のノード104へ送信することを可能にする。
【0068】
代替または追加として、UI要素は1つまたは複数のデータエントリフィールド502を備えてもよく、それを通じて、ユーザは、トランザクション152を編成し、ブロックチェーンネットワーク106を通じて広められるようにトランザクションを1つまたは複数のノード104に送信することができる。これらのデータエントリフィールドは、ユーザ出力手段を介して、たとえば画面上でレンダリングされ、データは、ユーザ入力手段、たとえばキーボードまたはタッチスクリーンを通じてフィールドへと入力され得る。代替として、データは、たとえば発話認識に基づいて、口頭で受信され得る。
【0069】
代替または追加として、UI要素は、ユーザに情報を出力するための1つまたは複数の情報要素503を備え得る。たとえば、これ/これらは、画面上に、または音でレンダリングされ得る。
【0070】
様々なUI要素をレンダリングし、オプションを選択し、データを入力する具体的な手段は、重要ではないことが理解されるだろう。これらのUI要素の機能は、まもなくより詳しく論じられる。
図3Bに示されるUI500は図式化されたモックアップにすぎず、実際には、簡潔にするために示されない1つまたは複数のさらなるUI要素を備え得ることも理解されるだろう。
【0071】
一次トランザクションチェーン
各トランザクションの第1の入力が以前のトランザクションの第1の出力を消費するようなトランザクションのシーケンスを考え、本明細書ではこれを一次トランザクションチェーンと呼び、これは
図4に示されている。
【0072】
証明者Aliceおよび検証者Bobがいるシナリオを考える。第1のトランザクションTx0は、AliceとBobの両方に知られている公開データである。Aliceは、トランザクションTxnを構築し、それをBobに送信する。これで、両者が2つのトランザクション(Tx0,Txn)を有する。
【0073】
Aliceは以下の陳述をBobに対して証明することを望む。陳述1:Tx0は一次トランザクションチェーンを通じてTxnと結びつけられる。BobがAliceの証明を受け入れる場合、Bobは組合せ((Tx0,Txn),proofn)を有する。
【0074】
ここで、第三者Charlieを考える。Bobは、第1の入力がTxnの第1の出力であるような新しいトランザクションTxn+1を作成する。Bobは、一次トランザクションチェーンを通じてTxn+1がTx0と結びつけられることの新しい証明を作成するために、Aliceの証明を修正する。Bobは((Tx0,Txn+1),proofn+1)をCharlieに送信する。
【0075】
この例では、Tx0がAlice、Bob、およびCharlieに知られている公開データに相当することを考えると、情報の流れは、AliceがTxn、proofnをBobに送信し、そしてBobがTxn+1、proofn+1をCharlieに送信するものとして見ることができる。
【0076】
Aliceは、チェーンの中の1つ1つのトランザクションをBobに送信することによって、陳述1を簡単に証明することができる。Bobは、各トランザクションの第1の入力が以前のトランザクションの第1の出力を消費することを明確に確認することができる。
【0077】
この方策にはいくつかの利点がある。
・設計および実装:概念的に単純であり、実装が簡単である。洗練された暗号アルゴリズムも関与しない。
・Aliceの計算コスト:Aliceに計算オーバーヘッドがない。
【0078】
しかしながら、この方策にはいくつかの欠点がある。
・通信コスト:トランザクションチェーンのサイズに比例する。Aliceは、トランザクションチェーン全体をBobに送信しなければならない。これは、大量のデータの転送を必要とし得る。典型的なトランザクションは200バイト前後を含み、一次トランザクションチェーンには長さの上限がない。100万個のトランザクションのチェーンは、約200MBになる。
・Bobの計算コスト:トランザクションが与えられると、Bobは、それがトランザクションチェーンの一部であるかどうかを確認する。Bobが最新のトランザクションのマークル根を有する場合、Bobは、マイナーが正しく妥当性確認したことも保証される。
・プライバシーコスト:すべてのトランザクションの中のデータがBobに与えられるので、プライバシーはない。これは、トランザクションの一部がまだビットコインネットワークに送信されていない場合には特に重要である。すべてのトランザクションがチェーン上にすでに現れている場合でも、Bobにトランザクションを直接与えれば、Bobが機密情報を特定するのがより容易になる。
・反復コスト:Bobが自分の新しい証明をCharlieに送信するとき、CharlieはBobと同じ計算を繰り返さなければならない。
【0079】
本開示の実施形態によれば、Aliceは、再帰zkSNARKsを使用して陳述1の正しさを証明し得る。Aliceは、トランザクションチェーン全体をBobに送信する必要はない。代わりに、Aliceは、陳述1の正しさについての証明を送信するだけである。
【0080】
この方策にはいくつかの利点がある。
・通信コスト:zkSNARKsの簡潔な証明サイズにより、少量のデータしかBobに送信されない。証明のサイズは非常に小さく、チェーンの中のトランザクションの数とは無関係である。たとえば、再帰zkSNARKでは、チェーンの中に100万個のトランザクションがある場合でも、128ビットのセキュリティに対して証明のサイズは約3.5kb前後である。これは、証明がトランザクションに挿入され得るほど小さい。たとえば、Aliceは、最後のトランザクションTxnまで、チェーンの中のトランザクションに自分の証明を再帰的に挿入することができる。
・Bobの計算コスト:Bobの検証時間が速い。Bobは証明を検証するだけでよい。
・プライバシーコスト:Aliceは、チェーンの中のすべてのトランザクションをBobに送信する必要がないので、プライバシーについてのより大きな管理権を有する。これは、Txnの中のデータの一部を不明瞭にすることなどの、他のプライバシーの管理権と組み合わせられ得る。
・反復コスト:証明は再帰的に構築され得る。Bobは、新しいトランザクションTxn+1をチェーンに追加し、新しい証明(これは以前の証明の妥当性確認も含む)を作成することができる。Bobは、Txnまで証明のための計算を繰り返す必要はない。Charlieは、この新しい証明を検証するだけでよい。Charlieは、Bobによって実行されるどのような計算も繰り返す必要がない。
【0081】
トランザクションおよびトランザクションチェーン
本開示のいくつかの実施形態では、トランザクションはブロックチェーントランザクション(すなわち、ブロックチェーンネットワーク106との対話によりブロックチェーン150にコミットされるトランザクション)である。
【0082】
典型的なビットコイントランザクション152の概略的な表現が、
図5に示されている。
【0083】
ビットコイントランザクション152は、トランザクションデータ(
図5のTxIDの下のすべてのフィールド)のdouble-SHA256をとることによって計算されるトランザクションID(TxID)201と呼ばれる一意な識別子を有する。TxIDは、トランザクション自体の一部であると見なされないことに留意されたい。
【0084】
トランザクション入力202は、以前のトランザクションID(PrevTxID)への参照および出力インデックスを含む。以前のトランザクションIDおよび出力インデックスの組合せは、出力点502と呼ばれ、PrevTxID||Indexと標識される(
図5参照)。
【0085】
すべてのビットコイントランザクションのセットが、エッジがあるトランザクションの出力点を別のトランザクションの入力に接続するような、有向非巡回グラフ(DAG)を形成する。このDAGは、ビットコイン台帳と呼ばれることがある。
【0086】
データは、いくつかの位置でトランザクションへと挿入され得る。
図5において、各出力ロックスクリプト504の中にデータペイロードがあり、これは、データを挿入するのに都合の良い位置である。これらのデータペイロードは、OP_RETURN陳述の後に各々位置するので、スクリプト実行において役割を果たさない。ロックスクリプト504は、Pay-to-Public-Key-Hash (P2PKH)スクリプトパターンおよびデータペイロードを含む。
【0087】
非常に高いレベルで、ビットコインはトランザクション生成ルーチンを次のように定義する。
【0088】
第1のステップにおいて、公開鍵および秘密鍵のペアが生成され、デスティネーションアドレスが公開鍵から導出される。
【0089】
第2のステップにおいて、新しいトランザクションが作成される。トランザクションの出力(264個に制限される)に対して、これは、デスティネーションアドレスを得ることと、各アドレスに対するロックスクリプトを作成することと、各アドレスに割り当てられるsatoshiの量を指定することとを伴う。トランザクションの入力(264個に制限される)に対して、これは、(i)入力UTXOを特定して、PrevTxIDと呼ばれるトランザクションID(および出力インデックス)を挿入することと、(ii)各入力UTXOに対してロック解除スクリプトを生成することとを伴う。これは通常、出力データおよび入力データ(ロック解除スクリプトを除く)にわたりデジタル署名を作成する(PKPKHにおけるように)ことを伴う。バージョン番号506、入力および出力カウント、ならびにロックタイム508などの、メタデータも生成される。最後に、トランザクションID201が計算され、TxID=SHA256d(Tx)であり、Tx(inputs,outputs,metadata)である。TxIDは、PrevTxIDを含むトランザクションデータの二重ハッシュであることに留意されたい。トランザクションIDは、トランザクションの識別子として使用され、それはトランザクション自体の一部ではない。
【0090】
第3のステップにおいて、トランザクションがビットコインネットワーク106にブロードキャストされる。これは、コンピュータ機器102が、トランザクションを得て、それをビットコインネットワーク106上の1つまたは複数のブロックチェーンノード104に送信することを伴う。ブロックチェーンノード104がトランザクションを受信すると、ブロックチェーンノード104は、トランザクションが妥当であり、入力のいずれもが以前に割り当てられていない(すなわち二重消費されない)ことを確認する。ブロックチェーンノード104は加えて、十分なトランザクションフィーが含まれているかどうかを確認する。トランザクションがこれらの確認に合格すると、ノードにより受け入れられ、ブロック151へ組み込まれるのを待機しているトランザクション152の順序付けられたプール154に置かれる。ブロックチェーンノード104はまた、トランザクションを他のブロックチェーンノードにブロードキャストする。トランザクションがビットコインネットワーク106上の十分な数のブロックチェーンノードによって受け入れられると、トランザクションは安全であると見なされてもよく、それは、二重消費が受け入れられることが可能ではないからである。
【0091】
第4のステップにおいて、ある期間(平均で10分)の後、ブロックチェーンノード104は、トランザクションを含むブロックを公開する。これは、トランザクションが二重消費されないことのさらなる保証を与える。
【0092】
トランザクションは、それ自体がビットコインルールセットを満たす場合、妥当である。これは、トランザクションが正しい構造を有し、ロック解除スクリプトが、たとえば妥当な署名を提供することによって出力点のロック解除に成功することを意味する。出力の値が入力を超えないことなどの、追加の一貫性の確認がある。
【0093】
妥当なトランザクションは、ビットコインネットワークにおいて受け入れられてブロックにおいて公開されることになる候補である。妥当なトランザクションは、その入力リストの中の以前のトランザクションを参照する。これらの以前のトランザクションは、妥当であることもまたは妥当でないこともある。しかしながら、トランザクションがビットコインネットワーク上のノードによって受け入れられる場合、すべての以前トランザクションが妥当であるはずである。
【0094】
各トランザクションがセットの中の先行するトランザクションの出力を消費するようなトランザクションの順序付けられたセットを、「トランザクションチェーン」と呼ぶ。ブロックチェーンプロトコルのルールにより、セットの中の各トランザクションは必ず、セットの中の先行するトランザクションよりも時間的に後に作成されなければならない。これは、チェーンの中のトランザクションの順序が、トランザクションが作成された時間の順序として理解され得ることを意味する。
【0095】
以下では、Txi.OutpointsがトランザクションTxiの出力点の順序付けられたセットとして定義されるような、「トランザクションチェーン」および「一次トランザクションチェーン」の数学的な定義を提供する。
【0096】
トランザクションチェーンの数学的な定義を最初に与える。TxSet=(Tx1,…Txn)を妥当なトランザクションの順序付けられたセットとし、TxIDi=SHA256d(Txi)である。そうすると、
【0097】
【0098】
である、導出されるシーケンス
【0099】
【0100】
は、各ji∈{2,…,n}に対して、
【0101】
【0102】
および
【0103】
【0104】
であるので、
【0105】
【0106】
である場合のトランザクションチェーンであり、i∈{1,…,n}であり、1≦k≦264である。
【0107】
トランザクションチェーンは、すでに知られているので、トランザクションIDの順序の違いを除いて一意であることに留意されたい。しかしながら、IDの衝突が起こる場合、
【0108】
【0109】
が結託IDを持つ最初のトランザクションである。したがって、トランザクションチェーンは、ハッシュ衝突が起こり得るので、必ずしも一意ではないことがある。
【0110】
次に、一次トランザクションチェーンの数学的な定義を与える。トランザクションチェーンTxChainが与えられると、各トランザクションの第1の入力が前のトランザクションの第1の出力を指す場合、本明細書ではこれを一次トランザクションチェーンと呼ぶ。一次トランザクションチェーンでは、各i∈{2,…,n}に対してTxi.Outpoints=(TxIDi-1||0,…)がある。
【0111】
ここで、第1の補題である補題1に言及する。
【0112】
補題1:SHA256が衝突に耐性があると仮定する(この特性は、SHA256の圧縮機能が衝突に耐性があるときに特に当てはまる)。任意のTxi∈TxChainが繰り返されるようなトランザクションチェーンTxChain=(Tx1,Tx2,…,Txn)を見つけるのは、計算的に不可能である。
【0113】
証明:TxChainは、各i∈{2,…,n}に対してTxIDi=SHA256d(…,TxIDi-1,…)であることを知っているトランザクションチェーンであるので、SHA256に基づくランダムなマッピングとして、あるTxIDi-1のTxIDiへのマッピングをモデル化することができる。これは、約2127のサイクル長を有することが予想される。
【0114】
補題1の結果の1つは、トランザクションチェーンがその要素に対して時間順序を課すということである。チェーンの中の次のトランザクションは、チェーンの中の以前のトランザクションの後に作成されなければならない。
【0115】
ここで、重要な理論(理論1)を提示する。これは、ビットコインノード104によって行われたトランザクション処理を活用できるので、有用である。それは、本開示の実施形態では、我々の再帰zkSNARKにおいて各トランザクションの妥当性を確認することが必要ではないことを意味する。最後のトランザクションがビットコインネットワーク106によって受け入れられる限り、および各トランザクションが正しい構造を有する限り、それらは妥当であるはずであることがわかる。
【0116】
理論1:TxSet=(Tx1,Tx2,…,Txn)を順序付けられたセットとし、TxIDi=SHA256d(Txi)とする。各要素Txiがビットコインルールセットに従った正しい位置にある出力点Txi.Outpointsの順序付けられたセットを有し、各i∈{2,…,n}に対して、および何らかのインデックスkに対して、Txi.Outpoints=(…,TxIDi-1||k,…)であると仮定する。最後のトランザクションTxnがビットコインネットワーク上のノードによって受け入れられる場合、各要素Txiは妥当なトランザクションであり、TxSetはトランザクションチェーンである。その上、TxSetが一次トランザクションチェーンである場合、それは一意である。
【0117】
証明:Txnがビットコインネットワーク上のノードAによって受け入れられる場合、すべての以前のトランザクションが妥当であり、ノードAによっても受け入れられている。具体的には、Txn-1は妥当なトランザクションであり、ノードAによって受け入れられている。この議論はTx1まで繰り返される。これは、各要素Txiが妥当なトランザクションであり、TxSetがトランザクションチェーンであることを証明する。
【0118】
ここで、TxSetが一次トランザクションチェーンであれば、それが一意であることを証明する。これを、長さN>1の一次トランザクションチェーンについて帰納により証明する。
【0119】
N=2:
2つの要素(Tx1,Tx2)をもつ一次トランザクションチェーンを考える。
【0120】
【0121】
であるような第2の一次トランザクションチェーン
【0122】
【0123】
があると仮定する。
【0124】
【0125】
であるので、
【0126】
【0127】
であり、したがって
【0128】
【0129】
である。
【0130】
ハッシュ関数の一方向性および衝突への耐性により、Tx1は
【0131】
【0132】
の第1の出力点における以前のトランザクションでなければならない。したがって、m=2であり両方の一次チェーンが同じであるか、または、第2の一次トランザクションチェーンが
【0133】
【0134】
という形態を有しなければならないかのいずれかである。Tx1は繰り返されるので、補題1と矛盾する。(Tx1,Tx2)は一意な一次トランザクションチェーンであると結論付ける。
【0135】
N=n-1
我々の帰納的仮説により、(Tx1,Tx2,…,Txn-1)は一意な一次トランザクションチェーンであると仮定する。
【0136】
要素(Txn-1,Txn)は、2つの要素の一次トランザクションチェーンを形成する。このチェーンは事例N=2の議論により一意である。
【0137】
2つの一意な一次トランザクションチェーン(Tx1,Tx2,…,Txn-1)および(Txn-1,Txn)が残る。したがって、組合せ(Tx1,Tx2,…,Txn)は一意な一次トランザクションチェーンを形成する。
【0138】
ゼロ知識証明
上で述べられたように、どのような秘密のデータも明らかにすることなく、秘密の知識を証明するためにゼロ知識証明(ZKP)が使用され得る。
【0139】
ゼロ知識証明は、何らかの非決定性多項式(NP)陳述に対する満足のいく証拠の知識を、その証拠について何も開示することなく示す。zkSNARKsは、証明者が証拠を実際に知っていることを検証者が確認することを可能にする論拠である、非対話型知識論拠を使用する。
【0140】
zkSNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)は、簡潔でありその証明が非常に短く検証が簡単である、非対話型ゼロ知識(NIZK)知識証明である。陳述は、陳述の証明を生成するために使用される論理回路に関して表現される。最も効率的な構築において、検証者は単に一定の数のグループ動作を実行する。zkSNARKは、所与の出力について任意の関数Fに対して秘密の入力
【0141】
【0142】
の知識を証明するために使用され得る。それは、双線形ペアリングおよび離散対数問題(DLP)に基づくゼロ知識技法と組み合わせて、線形確率証明を使用する。
【0143】
再帰zkSNARKSの概念は最初は、証明が計算の正しい実行を証明するだけではなく、以前の証明の妥当性も証明するような、Incrementally Verifiable Computation (IVC)で開始された。したがって、大量の、実質的に無限の量の計算を、単一の証明で簡単に検証することができる。
【0144】
汎用のzkSNARKの構築では、証明者は、算術回路Cによって指定される何らかの関係Rを満たす何らかの公開入力xおよび秘密入力wを知っていることの証明πを作成する。ブロックチェーンの世界におけるzkSNARK構築の使用事例の大半は、プライバシーではなくスケーラビリティに関係していることに留意されたい。この文脈において、zkSNARK構築は入力について柔軟であり、秘密入力は空であってもよく、すなわちw=⊥である。
【0145】
算術回路Cは、公開の入力および出力が与えられるとZKPが秘密入力を提供されるような関数Fを表現するために使用される。回路は、乗算および加算のゲートから構築される。回路全体の出力ではない乗算ゲートの出力は、補助変数と標識される。
【0146】
zkSNARKでは、証明πはR(x,w)=1であるという事実を証明し、陳述が本当に真であることを意味する。検証者は次いで、証明πおよび公開入力xを取り込み、証明が妥当である場合は1を出力する。しかしながら、この検証自体も関係R'として表現され得る。すなわち、検証者に対するすべての妥当な入力に対して、R'(x,π):=V(x,π)として表現することができる。したがって、他の証明の妥当性を証明する証明を作成することができる。再帰的な証明の組立の目標は、他のZKPを検証するZKPを構築することであり、これは証明の集約を可能にする。これは、以下でより詳しく説明されるように、本開示の実施形態において使用される。
【0147】
以下で表される理論(理論2)は、zkSNARK構築を前提として、再帰zkSNARKの存在を保証する。
【0148】
理論2:簡潔な証明を伴うzkSNARKがあり、それが適応的にセキュアである場合、再帰を使用してそれから証明を搬送するデータプリミティブを取得できるという意味で、それを再帰的に行うことができる。
【0149】
初期状態s0∈Sであるシステム状態のセットSを考えると、何らかのsiからsi+1への妥当な遷移が存在する場合にのみ、入力状態si(またはそれへのコミットメント)について1と評価される述語Πsを構築することができる。本開示の文脈では、トランザクションは状態であると見なされ、ΠiはTxi-1からTxiへの妥当な遷移について真であると評価される。
【0150】
証明搬送データ(PCD)システムは、以下の3つのアルゴリズムを備える。
【0151】
・セットアップ:Generate(ΠS,1k)鍵生成は、述語ΠSおよびセキュリティパラメータkを入力として取り込み(すなわち、システムはkビットのセキュリティを有する)、証明および検証鍵(pk,vk)を出力する。
・証明者:Prove(pk,si+1,TxSet,si,πi,wi)→πi+1。証明者は、証明鍵pk、現在の状態siおよび次の状態si+1、証拠wi、siが妥当な状態であることの証明πi(古い証明がすでに妥当であることを証明する)、ならびに妥当なトランザクションのセットt∈TxSetを入力として取り込み、si→si+1が妥当な状態遷移であることの証明πi+1を出力する。
・検証者:Verify(vk,Bi,πi)→Yes/No。検証鍵vk、証明πi、および状態siへのコミットメントBiが与えられると、検証者は、πiが、状態siが妥当であることの妥当な証明である場合には「Yes」を出力し、非常に高い確率でそうではない場合には「No」を出力する。
【0152】
証明および検証鍵(pk,vk)は、独立の信用される関係者により作成され得る。この関係者は信用される必要があり、それは、証明鍵pkの秘密鍵の知識があれば、偽の証明を生成できるからである。証明および検証鍵(pk,vk)の1つのセットだけが、1つのZKP回路に対して生成される必要がある。したがって、ZKP回路が特定の使用事例に対して一定である場合、この鍵生成プロセスは、一度しか実行されなくてもよい。いくつかの実装形態では、証明および検証鍵(pk,vk)は、鍵生成セレモニーの一部として複数の異なる関係者を伴い得る。
【0153】
証明生成の各反復において、証明者および検証者は異なり得ることに留意されたい。再帰的な証明の構築において、第2の証明者が証明者を信用する必要はなく、それは、第2の証明者が、現在の状態の新しい証明を生成する前に以前の証明を最初に検証するからである。これは、多くの異なるトークンプロセッサ(すなわち、NFTプロバイダなどのブロックチェーンサービスプロバイダ)が互いに信用する必要なく同じトークンプロトコルを使用できることを意味する。
【0154】
一般性を失うことなく、本開示の実施形態は、それからの異なるZKPの実装形態が使用され得るHaloフレームワーク(たとえば、Halo、Halo 2、Halo infinite)を参照して説明される。Halo構築は、証明および検証鍵を作成しながら「信用されるセットアップ」の必要をなくすzkSNARKsのトラストレス再帰バージョンである、Sonic ZKPを使用することにより特徴付けられる。Halo 2構築はPlonk ZKPを使用する。Haloは、任意のトランザクションチェーンを用いて証明を構築するために使用され得るStructured Reference String (SRS)を有する。すなわち、本開示の実施形態では、1つ1つの回路に対して信用されるセットアップパラメータ(特定の鍵)を生成することは必要ではない。
【0155】
しかしながら、本開示の実施形態は、HaloフレームワークのZKPに限定されず、他のタイプの再帰zkSNARKsを利用することができる。zkSNARKプロトコルのGroth16様の構築は、多項式コミットメントを使用しないので準同型ではないことに留意されたい。したがって、Groth16様の構築は、適切なランダムな点において開くことができず、累算方法を通じて再帰zkSNARKに変換することができない。しかしながら、それは、たとえば、ペアリングフレンドリー曲線のサイクルを通じて、他の方法で行われ得る。
【0156】
Halo構築を利用するとき、Structured Reference String (SRS)はセットアップの間に生成され、証明/検証鍵ペア(pk,vk)を含む。このセットアップは、単一の回路だけに限定されず、代わりに、SRSは汎用的であり、最大の所与のサイズまでの任意の回路に使用され得る。したがって、SRSは、任意のトランザクションチェーンを用いて証明を構築するために使用され得る。すなわち、1つ1つの回路に対して信用されるセットアップパラメータ(特定の鍵)を生成することは必要ではない。SRSは、マルチパーティセレモニー(これはシステムを一種のトラストレスシステムにする)を通じて計算されてもよく、回路のサイズに比例する。したがって、それは、回路のサイズに依存するが、反復の回数に依存しない。すなわち、本開示の実施形態における証明サイズおよび検証時間は、再帰の深さとともに増大しない。
【0157】
再帰的な証明の組立を達成するための一般的な手法は、算術回路の充足性についての非対話型知識論拠をまず取得することである。入力変数が1と評価されるように真の値(0または1)を入力変数に割り当てる方法がある場合、所与の回路は充足性がある。言い換えると、あらゆる変数の割り当てが0と評価される場合、それには充足性がない。公開入力xおよび証拠wに対して、C(x,w)=1とする。この論拠に対する検証アルゴリズムは、そのような算術回路へと符号化される。証明の検証回路が回路のサイズに対して劣線形であると仮定すると、上で説明された理論2により、wについてのどのような情報も開示することなく、C(x,w)=1であるような証明を再帰的に検証することが可能になる。この構築における回路Cは固定されており、証明者はシーケンスの中の複数の論拠に関わるために検証者と繰り返し対話する。
【0158】
M、Q、kを、d=4M=2kであり3Q<dであるような整数とする。Cを符号化する算術的制約系は、証明者だけに知られている証拠
【0159】
【0160】
および公開入力を符号化するいくつかのインスタンス
【0161】
【0162】
に対して満足される。この制約系は、i番目の制約がai・bi=ciという形態であるような、M個の乗算制約、および、q番目の制約が、i∈{1,…,M}、q∈{1,…,Q}として、Cを符号化するいくつかの固定された
【0163】
【0164】
に対して、
【0165】
【0166】
という形態であるような、Q個の線形制約からなる。
【0167】
Haloでは、この関係は、記述における特定の回路が各再帰とともに決して変化しないことを扱う。Halo構築は、証明搬送データではなく増分的に検証可能な計算である。Halo構築におけるコミットメントSoldおよびSnewは常に、制約を指定する同じ多項式Sへの、しかし異なる点における(すなわち、古い状態および新しい状態に対する)コミットメントであることに留意されたい。検証者側では、これは検証者が検証式においてSoldを使用するということに反映される。変数を入力として使用するには、Sを異なる回路となるように変更する必要がある。すなわち、異なるトランザクションチェーンルールセットは、異なるSのコミットメントをもたらす。一次トランザクションチェーンでは、検証されるべき機能は、Txi.PrevTxID==zi-1であるかどうかを確認することであり、zi-1=SHA256d(Txi-1)である。
【0168】
イベントの順序付けられたシーケンスの証明および検証
本開示の実施形態は、第1のトランザクションTx0(これはデジタル資産の表現も含み得る)を考え、Tx0より後の何らかの時間に起こった別のトランザクションTxnを考えたときに、Tx0をTxnに結びつけるトランザクションチェーン(たとえば、一次トランザクションチェーン)があることをどのように証明できるかという問題に対処する。既知の方策は、Tx0に由来するトランザクションのチェーンの履歴全体のダウンロードと、Txnまで各々の個別のトランザクションの妥当性確認とを必要とする。
【0169】
普通の、しかし非効率な方策は、各チェーンのつながり(Txi-1,Txi)に対する証明を生成して簡潔な検証を提供することを信用されない第三者にアウトソースすることによって、zkSNARKsを利用することであり得る。しかしながら、この方策では、ユーザは各証明をダウンロードして検証しなければならない。各トランザクションに対して証明を生成する代わりに、必要とされる計算が似たサイズであるトランザクションチェーン全体に対して単一の証明を生成するために、第三者を利用することが可能であり得る。
【0170】
しかしながら、本開示の実施形態では、証明コンピューティングデバイスは、すべての以前の証明が本当に妥当性確認されることを帰納的に示すために単一の証明を提供することができる。このようにして、ユーザは、トランザクションチェーンを検証するために、ネットワークの現在の状態(すなわち、トランザクションチェーンの最後にある最新のトランザクション)ならびにこの状態が正しいことの単一の証明に加えて、第1のトランザクションTx0(これはデジタル資産を含み得る)をダウンロードするだけでよい。
【0171】
図6は、ユーザコンピュータデバイス102間で送信されるトランザクションチェーンのトランザクションを示す。
【0172】
図6は、最初のトランザクションTX
0602で開始するトランザクションチェーンを示す。これを発行トランザクションと呼ぶ。発行トランザクション602のトランザクションID TxID
0は、トランザクションチェーンの一意な識別子として振る舞う。すなわち、発行トランザクションのトランザクションID(すなわち、TXID
0=SHA256d(Tx
0))は、トランザクションチェーン上で運ばれる識別子である。
【0173】
最初の例として、
図6は、トランザクションチェーンのトランザクションがデジタル資産の所有権の移転を表すような使用事例を示す。この例では、
図6に示されるように、発行トランザクション602は、デジタル資産(DA)を含むペイロードを含み得る。デジタル資産は、デジタル通貨、画像、音声ファイル、および/またはテキストであり得る。一例では、デジタル資産は非代替性トークン(NFT)である。具体的には、発行トランザクション602のペイロードは、NFTの一意な識別子(たとえば、シリアルナンバー)、トークン作成者の識別子、NFTの記憶位置の識別子、および/またはその最新の購入価格などを含み得る。いくつかの実装形態では、発行トランザクション602のペイロードはDAのハッシュダイジェストを含み得る。
【0174】
図6に示される発行トランザクション602では、発行者自体からのものであり得る署名がTx
0のロック解除スクリプトの中にあり、デジタル資産はOP_RETURN陳述の後に埋め込まれ得る。
図6に示されるように、Tx
0の第1の出力は、ユーザU
1の公開鍵とともにP2PKHロックスクリプトを含む。これは、デジタル資産の所有権をユーザU
1に割り当てる。
【0175】
図6に示されるように、発行トランザクション602は、ユーザU
1に関連付けられたコンピュータ機器102aに送信される。
【0176】
ユーザU
1がデジタル資産をユーザU
2に割り当てることを望み、新しいトランザクションTx
1604を作成することによりこれを行うと仮定する。本開示の実施形態では、ユーザU
1は、一度だけ実行される初期化プロセスを実行する(すなわち、トランザクションチェーンに関与する他のユーザは初期化プロセスを実行しない)。ユーザU
1によって実行されるステップは、
図7aおよび
図7bを参照して以下でより詳しく説明される。
【0177】
一次トランザクションチェーンの場合、トランザクションTx1604の第1の入力は、発行トランザクションTx0602の第1の出力を消費する。
【0178】
Tx1の第1の出力は、ユーザU2の公開鍵とともにP2PKHスクリプトを含む。トランザクションTx1604をユーザU2に関連付けられたコンピュータ機器102bに供給することに加えて、ユーザU1は、ユーザU2に関連付けられたコンピュータ機器102bに証明データも供給する。これは、後続のトランザクションにおいてユーザU2、U3、…をたどるとによって再帰的な証明が構築されることを可能にする。
【0179】
トランザクションTx
1604を受信すると、ユーザU
2に関連付けられたコンピュータ機器102bは、証明データにおいて提供される証明を検証する。トランザクションTx
i-1の受信の際にユーザU
iによって実行されるステップは、
図8を参照して以下でより詳しく説明される。
【0180】
ここで、ユーザU
2がデジタル資産をユーザU
3に移転することを望んでおり、新しいトランザクションTx
2606を作成することによってこれを行うと仮定する。本開示の実施形態では、ユーザU
2(および後でトランザクションチェーンに関与する任意の他のユーザ)が再帰プロセスを実行する。ユーザU
2によって実行されるステップは、
図9aおよび
図9bを参照して以下でより詳しく説明される。
【0181】
一次トランザクションチェーンの場合、トランザクションTx2606の第1の入力は、トランザクションTx1604の第1の出力を消費する。
【0182】
Tx2の第1の出力は、ユーザU3の公開鍵とともにP2PKHスクリプトを含む。トランザクションTx2606をユーザU3に関連付けられたコンピュータ機器102cに供給することに加えて、ユーザU2は、ユーザU3に関連付けられたコンピュータ機器102cに証明データも供給する。
【0183】
トランザクションの各々が、デジタル資産の所有権の移転に関するイベントデータを備える(ここで、この使用事例におけるイベントはユーザ間でデジタル資産が移転されることである)ことが、上記のことからわかる。
【0184】
図6は、発行トランザクション602にデジタル資産(またはそのハッシュダイジェスト)を埋め込むことを示す。後続のトランザクションもデジタル資産(またはそのハッシュダイジェスト)を備え得るが、これは任意選択である。実際には、デジタル資産(またはそのハッシュダイジェスト)を備えることは、トランザクションのいずれにとっても必須ではない。たとえば、データベースまたは遠隔デバイス上の他の記憶位置は、トランザクションチェーンの中の各トランザクションに関連付けられたイベントデータを記憶し得る。たとえば、デジタル資産がNFTである例では、遠隔デバイスは、トランザクションチェーンの中の各トランザクションのトランザクションIDを記憶し、トランザクションIDをデジタル資産の識別子と関連付け得る。デジタル資産がデジタル通貨である例では、遠隔デバイスは、トランザクションチェーンの中の各トランザクションのトランザクションIDを記憶し、トランザクションIDをそのトランザクションにより移されるデジタル通貨の額と関連付け得る。
【0185】
図6は、トランザクションチェーンのトランザクションがデジタル資産の所有権の移転を表すような使用事例を示すが、これは例にすぎない。
【0186】
他の実施形態では、トランザクションチェーンの中の各トランザクションは、物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたデータ記録の形態でイベントデータを備え得る。たとえば、トランザクションの中のイベントデータは、車(すなわち、物理的なオブジェクト)の製造ステップの完了を記録し、または、テキストドキュメント、スプレッドシート、もしくは他の電子ファイルなどの電子ファイル(すなわち、デジタルオブジェクト)への改訂を記録し得る。さらなる実施形態では、トランザクションチェーンの中の各トランザクションは、人物に関連付けられたデータ記録の形態でイベントデータを備え得る。たとえば、トランザクションの中のイベントデータは、オンラインカジノにおけるある人物の賭博活動を記録してもよく、または、トランザクションの中のイベントデータは、ある人物とその医師との間の通信を記録してもよい。トランザクションに関連付けられたデータ記録は、直前のトランザクションに関連付けられた以前のデータ記録の修正版(たとえば、データを追加し、削除し、または変更することによる)であり得る。代替として、トランザクションに関連付けられたデータ記録は、直前のトランザクションに関連付けられた以前のデータ記録のデータとは完全に異なるデータを備え得る。
【0187】
これらの他の実施形態では、トランザクションチェーンの中のトランザクションは、イベントデータを備えてもよく、または上で説明されたものに似た方式で、データベースもしくは遠隔デバイス上の他の記憶位置は、トランザクションチェーンの中の各トランザクションに関連付けられたイベントデータを記憶してもよい。たとえば、遠隔デバイスは、トランザクションチェーンの中の各トランザクションのトランザクションIDを記憶し、トランザクションIDをそれぞれのデータ記録と関連付け得る。
【0188】
図6において、ユーザ(U1、U2、U3、Un)は、たとえば、個々のユーザ、組織、または組織内の部門もしくは部署であり得る。
【0189】
いくつかの実施形態では、トランザクションチェーンのトランザクションは、トランザクションチェーンに関与するユーザのコンピュータ機器間で送信される。
【0190】
いくつかの実施形態では、トランザクションはブロックチェーントランザクション(すなわち、ブロックチェーンネットワーク106との対話によりブロックチェーン150にコミットされるトランザクション)である。これらの実施形態において、ユーザUiがトランザクションをさらなるユーザUi+1に送信するために、ユーザUiのコンピュータ機器は、トランザクションを1つまたは複数のブロックチェーンノード104に送信してもよく、そのトランザクションは次いで、ブロックチェーンノード104のネットワーク全体に広められ、それによりブロックチェーン150に含まれる。そうすると、ユーザUi+1のコンピュータ機器は、それをブロックチェーンから読み取ることによってトランザクションを受信することができる。代替として、ユーザUiのコンピュータ機器が、さらなるユーザUi+1のコンピュータ機器にトランザクションを送信してもよく、さらなるユーザUi+1のコンピュータ機器が次いで、トランザクションを1つまたは複数のブロックチェーンノード104に送信してもよく、そのトランザクションは次いで、ブロックチェーンノード104のネットワーク全体に広められ、それによりブロックチェーン150に含まれる。
【0191】
図6は証明データを備えるトランザクションを示すが、これは例にすぎず、証明データは、何らかの通信チャネルを通じて特定のユーザ間で広められる限り、トランザクションの外側にとどまり得る。
【0192】
図7aは、イベントの順序付けられたシーケンスの証明を提供する方法700を示す。方法700は、最初のトランザクションを受信したことに応答してコンピュータ機器によって実行される。たとえば、
図6を参照すると、方法700は、ユーザU
1に関連付けられたコンピュータ機器102aによって実行される。
【0193】
ステップS702において、コンピュータ機器102aは、最初のイベントに関する発行トランザクションTx0602を受信する。
【0194】
ユーザU1はさらなるイベントの記録を望む。ステップS704において、コンピュータ機器102aが、さらなるユーザに送信するための証明データを取得する。本開示の実施形態では、ユーザUiによって取得される証明データは、(i)証明値πi-1、(ii)発行トランザクション602のトランザクションID TxID0、および(iii)トランザクションチェーンの中の以前のトランザクションの識別子である識別子zi-1を備える。
【0195】
【0196】
ステップS752において、コンピュータ機器102aは、識別子z
0を所定の初期値に設定する。
図7bは識別子z
0を0に設定することを示すが、これは例にすぎず、以前のトランザクションが発行トランザクションTx0 602であるので、証明が「ヌル」証明であることを示すものとして他の値が使用されてもよい。
【0197】
ステップS754において、コンピュータ機器102aが、初期証明π0を所定の証明値に設定する。たとえば、証明がデフォルトで妥当であることを仮定するために、初期証明π0は1に設定され得る。
【0198】
ステップS756において、コンピュータ機器102aが、発行トランザクション602のトランザクションID TxID0を、発行トランザクション602からそれを読み取ることによって特定する。
【0199】
図7aに戻ると、コンピュータ機器102aがステップS704において証明データを取得すると、ステップS706において、コンピュータ機器102aが、ユーザU
2の公開鍵とともにP2PKHスクリプトを含む出力を備える新しいトランザクションTx
1604を作成する。
【0200】
ステップS708において、コンピュータ機器102aが、トランザクションTx1604および証明データをユーザU2に関連付けられたコンピュータ機器102bに送信する。証明データは、トランザクションTx1604を発行トランザクション602に結びつけるトランザクションチェーンがあることの証明をユーザU2に提供する。
【0201】
上で説明されたように、ステップS704において取得される証明データは、トランザクションTx1604のフィールド内で供給され得る。たとえば、証明データは、トランザクションTx1604の消費可能な出力に含まれ得る。代替として、証明データは、トランザクションTx1604の消費不可能な出力、たとえばOP_RETURNペイロードまたはOP_FALSE OP_RETURNペイロードに含まれ得る。
【0202】
代替として、ステップS704において取得される証明データおよびトランザクションTx1604は、コンピュータ機器102bに別々に送信され得る。
【0203】
図8は、イベントの順序付けられたシーケンスを検証する方法800を示す。方法800は、トランザクションチェーンの最初のトランザクションではないトランザクションを受信したことに応答して、コンピュータ機器によって実行される。すなわち、方法800は、i≧2であるとき、トランザクションTx
i-1を受信するとユーザU
iによって実行される。
【0204】
上で説明された
図6の例を参照すると、ユーザU
2に関連付けられたコンピュータ機器102b(およびトランザクションチェーンに関与する後続のユーザに関連付けられたコンピュータ機器102)は、方法800を実行する。
【0205】
ステップS802において、ユーザUiに関連付けられたコンピュータ機器が、Ui-1に関連付けられたさらなるコンピューティングデバイスからトランザクションTxi-1を受信する。すなわち、コンピュータ機器102bに関して、ユーザU2に関連付けられたコンピュータ機器102bは、ユーザU1に関連付けられたコンピュータ機器102aからトランザクションTx1604を受信する。
【0206】
ステップS804において、ユーザUiに関連付けられたコンピュータ機器は証明データを受信する。ユーザUiによって受信される証明データは、(i)証明値πi-2、(ii)発行トランザクション602のトランザクションID TxID0、および(iii)以前のトランザクションの識別子zi-2(すなわち、Ui-1に関連付けられたさらなるコンピューティングデバイスによって受信されるトランザクションの識別子)を備える。通常(i≧3に対して)、zi-2は、Ui-1に関連付けられたコンピュータ機器によって受信されるトランザクションチェーンの中のトランザクションのトランザクションIDに対応するが、上で説明されたように、識別子z0が所定の初期値に設定されるような、ユーザU2に対する固有の事例がある。
【0207】
すなわち、コンピュータ機器102bに関して、ユーザU2に関連付けられたコンピュータ機器102bは、初期証明π0、発行トランザクション602のトランザクションID TxID0、および識別子z0を受信する。
【0208】
上で説明されたように、証明データは、トランザクションTx1604に挿入され、またはトランザクションTx1604の外部で送信され得る。
【0209】
ステップS806において、証明πi-2を検証するために、ユーザUiに関連付けられたコンピュータ機器は、証明πi-2、識別子zi-2、発行トランザクション602のトランザクションID TxID0、および検証鍵vkを、証明検証プロセスへの入力として供給する。証明検証プロセスは、証明が妥当であると判明するかまたは不当であると判明するかに応じて、受入または拒絶の決断を出力する。
【0210】
vk、TxID0、Txi-1、およびTxi(ユーザUiによって作成され、πi-1、zi-1をすでに含む)を仮定すると、(Tx0,…,Txi-1)は、証明πi-1が検証される場合、新しい所有者Ui+1によってトランザクションチェーンとして受け入れられる。元のトランザクションTx0がデジタル資産を含む場合、この証明はTxiの所有者の所有権の証明も保証する。
【0211】
検証者は、発行トランザクションTx
0が所与の最後のトランザクションと結びつけられることを確認する。したがって、最後の検証ステップは、最初の証明が元のトランザクションで開始したことを保証する。また、
図6に示されるようなOP_RETURNペイロードを伴う発行トランザクションの場合、所有権の移転の証明が妥当性確認されると、受信者は、証明を受け入れ、資産の元の発行者の署名Sig
issuerを検証し得る。
【0212】
図9aおよび
図9bは、イベントの順序付けられたシーケンスの証明を提供する方法900を示す。方法900は、トランザクションチェーンの最初のトランザクションではないトランザクションを受信したことに応答して、コンピュータ機器によって実行される。
【0213】
たとえば、
図6を参照すると、方法900は、ユーザU
2がさらなるイベントを記録することを望む場合(たとえば、ユーザU
2がトランザクションTx
2606を生成することによってデジタル資産をU
3に移転することを望む場合)、ユーザU
2に関連付けられたコンピュータ機器102bによって実行され、イベントを記録することを望むトランザクションチェーンの中の任意の後続のユーザによっても実行される。
【0214】
ステップS902において、ユーザUiに関連付けられたコンピュータ機器102は、受信されたトランザクションTxi-1が少なくとも1つの所定の条件を満たすことを検証する。
【0215】
すなわち、コンピュータ機器102bに関して、ユーザU2に関連付けられたコンピュータ機器102bは、受信されたトランザクションTx1604が少なくとも1つの所定の条件を満たすことを検証する。
【0216】
少なくとも1つの所定の条件は、トランザクションチェーンの中の以前のトランザクション(直前のトランザクション)のトランザクション出力をトランザクションが消費することを指定し得る。
【0217】
追加または代替として、少なくとも1つの所定の条件は、トランザクションがトランザクションのトランザクション出力のインデックスを備えることを指定し得る。たとえば、少なくとも1つの所定の条件は、トランザクションのトランザクション入力がトランザクションのトランザクション出力のインデックスを備える(このトランザクション出力はイベントデータを記憶し得る)ことを指定し得る。
【0218】
追加または代替として、少なくとも1つの所定の条件は、トランザクションの第1の入力がトランザクションチェーンの中の以前のトランザクション(直前のトランザクション)の第1の出力を消費すること、すなわち、受信されたトランザクションが一次トランザクションチェーンの一部であることを指定し得る。Tx0,…,Txnを、複数の入力UTXOおよび複数の出力UTXOを伴う妥当なブロックチェーントランザクションであるとする。(Tx0,…,Txn)もトランザクションチェーンとする。Tx0の第1の出力のロックスクリプトは、デジタル資産も含み得ることに留意されたい。所定の条件は、xSet=(Tx0,Tx1,…,Txn)の中の第1の出力のセットが一次トランザクションチェーンであることを保証し得る。すなわち、所与の(0,Txn)に対して、受信されたトランザクション(たとえば、所有権移転を備える)は、TxChainSetの中のすべてのトランザクションがトランザクションTx0,Tx1,…,Txnの最初のインデックスである場合にのみ受け入れられる。
【0219】
追加または代替として、少なくとも1つの所定の条件は、一意なトークンID(UTID)が受信されたトランザクションに記録されることを指定し得る。
【0220】
追加または代替として、少なくとも1つの所定の条件は、トランザクションチェーンシーケンス番号iがチェーンの中の各トランザクションに記録されることを指定し得る。
【0221】
追加または代替として、少なくとも1つの所定の条件は、受信されたトランザクションが入力の所与のセットに対する所定のプログラムの結果を記録することを指定し得る。入力の一部は、トランザクションチェーンの中の以前のトランザクションからの計算の結果であってもよく、一部は新しい入力であってもよい。発行トランザクションは、所定のコードおよび入力の初期セットを含み得る。そのようなルールセットは、プログラムの実行が各段階において独立に検証され得ることを保証する。
【0222】
各トランザクションは、Deterministic Finite Automata (DFA)の状態を記録してもよく、少なくとも1つの所定の条件は、正しい状態遷移が行われることを強制し得る。
【0223】
少なくとも1つの所定の条件は、上で言及された例の1つまたは任意の組合せを備え得ることが理解されるだろう。
【0224】
ステップS904において、コンピュータ機器102bは、さらなるユーザへの送信のために証明データを取得する。上で説明されたように、本開示の実施形態において、ユーザUiによって取得される証明データは、(i)証明値πi-1、(ii)発行トランザクション602のトランザクションID TxID0、および(iii)トランザクションチェーンの中の以前のトランザクションの識別子である識別子zi-1を備える。
【0225】
【0226】
ステップS952において、ユーザUiに関連付けられたコンピュータ機器が、トランザクションTxi-1の二重ハッシュをとることによって識別子zi-1を計算する。すなわち、コンピュータ機器102bに関して、ユーザU2に関連付けられたコンピュータ機器102bは、トランザクションTx1604の二重ハッシュをとることによって識別子z1を計算する。
【0227】
ステップS954において、ユーザUiに関連付けられたコンピュータ機器が、証明鍵pkおよびトランザクションTxi-1(トランザクションTxi-1内にあり得る、またはトランザクションTxi-1とは別に送信され得る、トランザクションTxi-1に関連付けられた証明データを含む)を使用して、証明πi-1を構築する。すなわち、コンピュータ機器102bに関して、ユーザU2に関連付けられたコンピュータ機器102bは、証明鍵pkおよびトランザクションTx1604(トランザクションTx1604に関連付けられた証明データを含む)を、証明生成プロセスへの入力として供給することによって、証明π1を構築する。証明πi-1は、トランザクションTxi-2とトランザクションTxi-1との間のつながりを証明する。
【0228】
ステップS956において、ユーザUiに関連付けられたコンピュータ機器が、トランザクションチェーンの発行トランザクションのトランザクションID TxID0を特定する。ステップ956は、いくつかの異なる方法で実行され得る。一例では、ユーザUiは、発行トランザクションのトランザクションID TxID0を、それをトランザクションTxi-1から読み取ることによって特定し得る。すなわち、コンピュータ機器102bに関して、ユーザU2に関連付けられたコンピュータ機器102bは、発行トランザクション602のトランザクションID TxID0を特定する。
【0229】
図9aに戻ると、コンピュータ機器がステップS904において証明データを取得すると、ステップS906において、コンピュータ機器が、ユーザU
i+1の公開鍵とともにP2PKHスクリプトを含む出力を備える新しいトランザクションTx
iを作成する。したがって、ステップS906において、コンピュータ機器102bは、ユーザU
3の公開鍵とともにP2PKHスクリプトを含む出力を備える新しいトランザクションTx
2606を作成する。
【0230】
ステップS908において、コンピュータ機器102bが、トランザクションTx2606および証明データをユーザU3に関連付けられたコンピュータ機器102cに送信する。証明データは、トランザクションTx2606を発行トランザクション602と結びつけるトランザクションチェーンがあることの証明をユーザU3に提供する。
【0231】
上で説明されたように、ステップS904において取得される証明データは、トランザクションTx2606のフィールド内で供給され得る。たとえば、証明データは、トランザクションTx2606の消費可能な出力に含まれ得る。代替として、証明データは、トランザクションTx2606の消費不可能な出力に、たとえば、OP_RETURNペイロードまたはOP_FALSE OP_RETURNペイロードに含まれ得る。
【0232】
代替として、ステップS904において取得される証明データおよびトランザクションTx2606は、コンピュータ機器102cに別々に送信され得る。
【0233】
本開示の実施形態では、証明サイズは約3.5kbであり、チェーンの中のトランザクションの数に依存しない。証明は再帰的であり、これは、追加のトランザクションがトランザクションチェーンに追加される場合に、どのような計算も繰り返すことなく証明が更新され得ることを意味する。
【0234】
証明搬送データは、各トランザクションの中のOP_RETURN陳述に含められるのに十分小さい。これは、この方策が、発行まで逆に追跡する必要をなくすオンチェーントークンプロトコルとなることを可能にする。このアーキテクチャでは、ブロックチェーンネットワーク106は、二重消費保護のために、および証明搬送データを記憶するために使用される。ブロックチェーンノード104は、証明構築または検証において役割を果たさない。
【0235】
結論
証明コンピュータ機器によって実施される証明生成プロセスに関与するステップは、実施されているZKPの具体的なタイプに依存し、そのようなステップは当業者に知られていることを、当業者は理解するだろう。同様に、検証者コンピュータ機器によって実施される証明検証プロセスに関与するステップは、実施されているZKPの具体的なタイプに依存し、そのようなステップは当業者に知られていることを、当業者は理解するだろう。
【0236】
開示される技法の他の変形または使用事例は、本明細書の開示を与えられれば当業者に明らかになり得る。本開示の範囲は、説明される実施形態ではなく、添付の特許請求の範囲だけによって限定される。
【0237】
上のいくつかの実施形態は、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104に関して説明されている。しかしながら、ビットコインブロックチェーンはブロックチェーン150の1つの特定の例であり、上の説明はあらゆるブロックチェーンに一般に当てはまり得ることが理解されるだろう。すなわち、本発明は、決してビットコインブロックチェーンに限定されない。より一般的には、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104への上記のあらゆる言及は、それぞれ、ブロックチェーンネットワーク106、ブロックチェーン150、およびブロックチェーンノード104に関して置き換えられ得る。ブロックチェーン、ブロックチェーンネットワーク、および/またはブロックチェーンノードは、上で説明されたような、ビットコインブロックチェーン150、ビットコインネットワーク106、およびビットコインノード104の説明された性質の一部またはすべてを共有し得る。
【0238】
本発明の好ましい実施形態では、ブロックチェーンネットワーク106はビットコインネットワークであり、ビットコインノード104は、ブロックチェーン150のブロック151を作成し、公開し、広め、記憶するという説明された機能の少なくともすべてを実行する。これらの機能のすべてではなく1つまたは一部だけを実行する他のネットワークエンティティ(またはネットワーク要素)があり得ることは排除されない。すなわち、ネットワークエンティティは、ブロックを作成して公開することなく、ブロックを広めるおよび/または記憶する機能を実行し得る(これらのエンティティは好ましいビットコインネットワーク106のノードであるとは考えられないことを思い出されない)。
【0239】
本発明の他の実施形態では、ブロックチェーンネットワーク106はビットコインネットワークではないことがある。これらの実施形態では、ノードが、ブロックチェーン150のブロック151を作成し、公開し、広め、記憶する機能のすべてではなく、少なくとも1つまたは一部を実行し得ることは排除されない。たとえば、それらの他のブロックチェーンネットワークでは、「ノード」は、ブロック151を作成して公開するが、それらのブロック151を記憶せず、かつ/または他のノードに広めないように構成される、ネットワークエンティティを指すために使用されることがある。
【0240】
またさらに一般的には、上記の「ビットコインノード」104という用語へのあらゆる言及は、「ネットワークエンティティ」または「ネットワーク要素」という用語で置き換えられてもよく、そのようなエンティティ/要素は、ブロックを作成し、公開し、広め、記憶する役割の一部またはすべてを実行するように構成される。そのようなネットワークエンティティ/要素の機能は、ブロックチェーンノード104に関して上で説明されたのと同じ方法でハードウェアにおいて実装され得る。
【0241】
上記の実施形態は、単なる例として説明されたことが理解されるだろう。より一般的には、以下の陳述の任意の1つまたは複数に従った方法、装置、またはプログラムが提供され得る。
【0242】
本開示の態様は、以下の条項を参照して以下で定義される。
【0243】
1. イベントの順序付けられたシーケンスの証明を提供する、コンピュータにより実施される方法であって、方法がコンピューティングデバイス上で実行され、
トランザクションを受信するステップと、
さらなるコンピューティングデバイスに送信されるべきさらなるトランザクションを作成するステップと、
トランザクションを備えるトランザクションチェーンの中の最初のトランザクションにさらなるトランザクションが結びつけられることの証明をさらなるコンピューティングデバイスに提供する、さらなるトランザクションに関連付けられた証明データを取得するステップであって、最初のトランザクションが、イベントの順序付けられたシーケンスの中の最初のイベントに関わり、証明データが、(i)証明と、(ii)トランザクションの識別子と、(iii)最初のトランザクションの一意な識別子とを備える、ステップと、
さらなるトランザクションおよび証明データをさらなるコンピューティングデバイスに送信するステップとを備える、方法。
【0244】
2. トランザクションが最初のトランザクションであり、証明データを取得するステップが、証明を所定の証明値に設定するステップと、トランザクションの識別子を所定の初期値に設定するステップとを備える、条項1の方法。
【0245】
3. トランザクションがトランザクションチェーンの最初のトランザクションではなく、方法が、トランザクションが少なくとも1つの所定の条件に適合することを検証するステップを備える、条項1の方法。
【0246】
4. 少なくとも1つの所定の条件が、トランザクションがトランザクションチェーンの中の以前のトランザクションのトランザクション出力を消費することを指定する、条項3の方法。
【0247】
5. 少なくとも1つの所定の条件が、トランザクションがトランザクションのトランザクション出力のインデックスを備えることを指定する、条項3の方法。
【0248】
6. 証明データを取得するステップが、
トランザクションおよび証明鍵を使用して証明を生成するステップと、
トランザクションの識別子を計算するステップとを備える、条項3から5のいずれかの方法。
【0249】
7. 証明データをさらなるトランザクションに含めるステップを備える、任意の先行する条項の方法。
【0250】
8. 証明データをさらなるトランザクションの消費可能な出力に含めるステップを備える、条項7の方法。
【0251】
9. 証明データをさらなるトランザクションの消費不可能な出力に含めるステップを備える、条項7の方法。
【0252】
10. 証明データがさらなるトランザクションに含まれず、方法が、さらなるトランザクションおよび証明データを別々にさらなるコンピューティングデバイスに送信するステップを備える、条項1から6のいずれかの方法。
【0253】
11. トランザクションが、コンピューティングデバイスに関連付けられたユーザへのデジタル資産の所有権の移転を表し、さらなるトランザクションが、さらなるコンピューティングデバイスに関連付けられたさらなるユーザへのデジタル資産の所有権の移転を表す、任意の先行する条項の方法。
【0254】
12. デジタル資産が非代替性トークンである、条項11の方法。
【0255】
13. トランザクションがイベントデータと関連付けられ、イベントデータがイベントの順序付けられたシーケンスの中のあるイベントに関わり、さらなるトランザクションが、イベントの順序付けられたシーケンスの中のより後のイベントに関するさらなるイベントデータと関連付けられる、条項1から10のいずれかの方法。
【0256】
14. イベントデータが、物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたデータ記録を備え、さらなるイベントデータが、物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたさらなるデータ記録を備える、条項13の方法。
【0257】
15. イベントデータがユーザに関連付けられたデータ記録を備え、さらなるイベントデータがユーザに関連付けられたさらなるデータ記録を備える、条項13の方法。
【0258】
16. トランザクションがイベントデータの表現を備え、さらなるトランザクションがさらなるイベントデータの表現を備える、条項13から15のいずれかの方法。
【0259】
17. イベントデータがトランザクションの識別子に関連付けて遠隔デバイスに記憶され、方法が、さらなるトランザクションの識別子に関連付けてさらなるイベントデータを遠隔デバイスに記憶するステップを備える、条項13から15のいずれかの方法。
【0260】
18. トランザクションおよびさらなるトランザクションがブロックチェーントランザクションである、任意の先行する条項の方法。
【0261】
19. コンピューティングデバイスによって読み取られると、コンピューティングデバイスに任意の先行する条項の方法を実行させる、コンピュータプログラム。
【0262】
20. コンピューティングデバイスによって読み取られると、コンピューティングデバイスに条項1から18のいずれかの方法を実行させるコンピュータ可読命令を備える、非一時的コンピュータ可読記憶媒体。
【0263】
21. プロセッサおよびメモリを備えるコンピューティングデバイスであって、メモリが、プロセッサによって実行されるとコンピューティングデバイスに条項1から18のいずれかの方法を実行させる命令を記憶する、コンピューティングデバイス。
【0264】
22. イベントの順序付けられたシーケンスを検証するコンピュータにより実施される方法であって、方法がコンピューティングデバイス上で実行され、
さらなるコンピューティングデバイスからトランザクションを受信するステップと、
さらなるコンピューティングデバイスから、トランザクションに関連付けられた証明データを受信するステップであって、証明データが、(i)証明と、(ii)トランザクションチェーンの中の以前のトランザクションの識別子と、(iii)トランザクションチェーンの最初のトランザクションの一意な識別子とを備え、最初のトランザクションが、イベントの順序付けられたシーケンスの中の最初のイベントに関する、ステップと、
証明、トランザクションチェーンの中の以前のトランザクションの識別子、最初のトランザクションの一意な識別子、および検証鍵を使用して、トランザクションがトランザクションチェーンの中の最初のトランザクションと結びつけられることを検証するステップとを備える、方法。
【0265】
23. トランザクションが証明データを備える、条項22の方法。
【0266】
24. トランザクションが証明データをトランザクションの消費可能な出力に含める、条項23の方法。
【0267】
25. トランザクションが証明データをトランザクションの消費不可能な出力に含める、条項23の方法。
【0268】
26. 証明データがトランザクションとは別に受信される、条項22の方法。
【0269】
27. トランザクションがトランザクションチェーンの中の最初のトランザクションと結びつけられることを検証するステップがさらに、
最初のトランザクションを取得するステップと、
最初のトランザクションの一意な識別子を計算するステップと、
最初のトランザクションの計算された一意な識別子が証明データの中の最初のトランザクションの一意な識別子と一致することを検証するステップとを備える、条項22から26のいずれかの方法。
【0270】
28. トランザクションが、さらなるコンピューティングデバイスに関連付けられたユーザからコンピューティングデバイスに関連付けられたユーザへのデジタル資産の所有権の移転を表す、条項22から27のいずれかの方法。
【0271】
29. デジタル資産が非代替性トークンである、条項28の方法。
【0272】
30. トランザクションがイベントデータと関連付けられ、イベントデータがイベントの順序付けられたシーケンスの中のあるイベントに関わり、さらなるトランザクションが、イベントの順序付けられたシーケンスの中のより後のイベントに関するさらなるイベントデータと関連付けられる、条項22から27のいずれかの方法。
【0273】
31. イベントデータが物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたデータ記録を備え、さらなるイベントデータが物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたさらなるデータ記録を備える、条項30の方法。
【0274】
32. イベントデータがユーザに関連付けられたデータ記録を備え、さらなるイベントデータがユーザに関連付けられたさらなるデータ記録を備える、条項30の方法。
【0275】
33. トランザクションがブロックチェーントランザクションである、条項22から32のいずれかの方法。
【0276】
34. コンピューティングデバイスによって読み取られると、コンピューティングデバイスに条項22から33のいずれかの方法を実行させる、コンピュータプログラム。
【0277】
35. コンピューティングデバイスによって読み取られると、コンピューティングデバイスに条項22から33のいずれかの方法を実行させるコンピュータ可読命令を備える、非一時的コンピュータ可読記憶媒体。
【0278】
命令は、ディスク、CD-ROM、またはDVD-ROMなどの担体、読取り専用メモリなどのプログラムされたメモリ(ファームウェア)、または光信号もしくは電気信号の担体などのデータ担体上で提供され得る。本開示の実施形態を実装するための命令は、Cもしくはアセンブリコードなどの従来のプログラミング言語(インタプリタ型またはコンパイル型)でのソースコード、オブジェクトコード、もしくは実行可能コード、ASIC(特定用途向け集積回路)もしくはFPGA(フィールドプログラマブルゲートアレイ)を設定もしくは制御するためのコード、またはハードウェア記述言語のためのコードを備え得る。
【符号の説明】
【0279】
101 パケット交換ネットワーク
102 コンピュータ機器
103 関係者
104 ブロックチェーンノード
105 クライアントアプリケーション
106 ブロックチェーンネットワーク
150 ブロックチェーン
151 ブロック
152 トランザクション
153 ジェネシスブロック
154 順序付けられたセット
155 ブロックポインタ
201 ヘッダ
202 入力フィールド
203 出力フィールド
502 出力点
504 ロックスクリプト
506 バージョン番号
508 ロックタイム
602 発行トランザクション
604 トランザクション
606 トランザクション
【手続補正書】
【提出日】2024-09-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
イベントの順序付けられたシーケンスの証明を提供する、コンピュータにより実施される方法であって、前記方法がコンピューティングデバイス上で実行され、
トランザクションを受信するステップと、
さらなるコンピューティングデバイスに送信されるべきさらなるトランザクションを作成するステップと、
前記トランザクションを備えるトランザクションチェーンの中の最初のトランザクションに前記さらなるトランザクションが結びつけられることの証明を前記さらなるコンピューティングデバイスに提供する、前記さらなるトランザクションに関連付けられた証明データを取得するステップであって、前記最初のトランザクションが、前記イベントの順序付けられたシーケンスの中の最初のイベントに関わり、前記証明データが、(i)証明と、(ii)前記トランザクションの識別子と、(iii)前記最初のトランザクションの一意な識別子とを備える、ステップと、
前記さらなるトランザクションおよび前記証明データを前記さらなるコンピューティングデバイスに送信するステップと
を備える、方法。
【請求項2】
前記トランザクションが前記最初のトランザクションであり、
前記証明データを取得するステップが、前記証明を所定の証明値に設定するステップと、
前記トランザクションの前記識別子を所定の初期値に設定するステップと
を備える、請求項1に記載の方法。
【請求項3】
前記トランザクションが前記トランザクションチェーンの前記最初のトランザクションではなく、
前記方法が、前記トランザクションが少なくとも1つの所定の条件に適合することを検証するステップを備える、請求項1に記載の方法。
【請求項4】
前記少なくとも1つの所定の条件が、前記トランザクションが前記トランザクションチェーンの中の以前のトランザクションのトランザクション出力を消費することを指定する、請求項3に記載の方法。
【請求項5】
前記少なくとも1つの所定の条件が、前記トランザクションが前記トランザクションのトランザクション出力のインデックスを備えることを指定する、請求項3に記載の方法。
【請求項6】
前記証明データを取得するステップが、
前記トランザクションおよび証明鍵を使用して前記証明を生成するステップと、
前記トランザクションの前記識別子を計算するステップと
を備える、請求項
3に記載の方法。
【請求項7】
前記証明データを前記さらなるトランザクションに含めるステップを備える、請求項
1に記載の方法。
【請求項8】
前記証明データを前記さらなるトランザクションの消費可能な出力に含めるステップを備える、請求項7に記載の方法。
【請求項9】
前記証明データを前記さらなるトランザクションの消費不可能な出力に含めるステップを備える、請求項7に記載の方法。
【請求項10】
前記証明データが前記さらなるトランザクションに含まれず、
前記方法が、前記さらなるトランザクションおよび前記証明データを別々に前記さらなるコンピューティングデバイスに送信するステップを備える、請求項
1に記載の方法。
【請求項11】
前記トランザクションが、前記コンピューティングデバイスに関連付けられたユーザへのデジタル資産の所有権の移転を表し、
前記さらなるトランザクションが、前記さらなるコンピューティングデバイスに関連付けられたさらなるユーザへの前記デジタル資産の所有権の移転を表す、請求項
1に記載の方法。
【請求項12】
前記デジタル資産が非代替性トークンである、請求項11に記載の方法。
【請求項13】
前記トランザクションがイベントデータと関連付けられ、
前記イベントデータが前記イベントの順序付けられたシーケンスの中のあるイベントに関わり、
前記さらなるトランザクションが、前記イベントの順序付けられたシーケンスの中のより後のイベントに関するさらなるイベントデータと関連付けられる、請求項
1に記載の方法。
【請求項14】
前記イベントデータが、物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたデータ記録を備え、
前記さらなるイベントデータが、前記物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたさらなるデータ記録を備える、請求項13に記載の方法。
【請求項15】
前記イベントデータがユーザに関連付けられたデータ記録を備え、
前記さらなるイベントデータが前記ユーザに関連付けられたさらなるデータ記録を備える、請求項13に記載の方法。
【請求項16】
前記トランザクションが前記イベントデータの表現を備え、
前記さらなるトランザクションが前記さらなるイベントデータの表現を備える、請求項
13に記載の方法。
【請求項17】
前記イベントデータが前記トランザクションの前記識別子に関連付けて遠隔デバイスに記憶され、
前記方法が、前記さらなるトランザクションの識別子に関連付けて前記さらなるイベントデータを前記遠隔デバイスに記憶するステップを備える、請求項
13に記載の方法。
【請求項18】
前記トランザクションおよび前記さらなるトランザクションがブロックチェーントランザクションである、請求項
1に記載の方法。
【請求項19】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項1から18のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項20】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項1から18のいずれか一項に記載の方法を実行させるコンピュータ可読命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項21】
プロセッサおよびメモリを備えるコンピューティングデバイスであって、前記メモリが、前記プロセッサによって実行されると前記コンピューティングデバイスに請求項1から18のいずれか一項に記載の方法を実行させる命令を記憶する、コンピューティングデバイス。
【請求項22】
イベントの順序付けられたシーケンスを検証するコンピュータにより実施される方法であって、前記方法がコンピューティングデバイス上で実行され、
さらなるコンピューティングデバイスからトランザクションを受信するステップと、
前記さらなるコンピューティングデバイスから、前記トランザクションに関連付けられた証明データを受信するステップであって、前記証明データが、(i)証明と、(ii
)トランザクションチェーンの中の以前のトランザクションの識別子と、(iii)前記トランザクションチェーンの最初のトランザクションの一意な識別子とを備え、前記最初のトランザクションが、前記イベントの順序付けられたシーケンスの中の最初のイベントに関する、ステップと、
前記証明、前記トランザクションチェーンの中の以前のトランザクションの前記識別子、前記最初のトランザクションの前記一意な識別子、および検証鍵を使用して、前記トランザクションが前記トランザクションチェーンの中の前記最初のトランザクションと結びつけられることを検証するステップと
を備える、方法。
【請求項23】
前記トランザクションが前記証明データを備える、請求項22に記載の方法。
【請求項24】
前記トランザクションが前記証明データを前記トランザクションの消費可能な出力に含める、請求項23に記載の方法。
【請求項25】
前記トランザクションが前記証明データを前記トランザクションの消費不可能な出力に含める、請求項23に記載の方法。
【請求項26】
前記証明データが前記トランザクションとは別に受信される、請求項22に記載の方法。
【請求項27】
前記トランザクションが前記トランザクションチェーンの中の前記最初のトランザクションと結びつけられることを検証するステップが、
前記最初のトランザクションを取得するステップと、
前記最初のトランザクションの一意な識別子を計算するステップと、
前記最初のトランザクションの前記計算された一意な識別子が前記証明データの中の前記最初のトランザクションの前記一意な識別子と一致することを検証するステップと
をさらに備える、請求項
22に記載の方法。
【請求項28】
前記トランザクションが、前記さらなるコンピューティングデバイスに関連付けられたユーザから前記コンピューティングデバイスに関連付けられたユーザへのデジタル資産の所有権の移転を表す、請求項
22に記載の方法。
【請求項29】
前記デジタル資産が非代替性トークンである、請求項28に記載の方法。
【請求項30】
前記トランザクションがイベントデータと関連付けられ、
前記イベントデータが前記イベントの順序付けられたシーケンスの中のあるイベントに関わり、
さらなるトランザクションが、前記イベントの順序付けられたシーケンスの中のより後のイベントに関するさらなるイベントデータと関連付けられる、請求項
22に記載の方法。
【請求項31】
前記イベントデータが物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたデータ記録を備え、
前記さらなるイベントデータが前記物理的なオブジェクトまたはデジタルオブジェクトに関連付けられたさらなるデータ記録を備える、請求項30に記載の方法。
【請求項32】
前記イベントデータがユーザに関連付けられたデータ記録を備え、
前記さらなるイベントデータが前記ユーザに関連付けられたさらなるデータ記録を備える、請求項30に記載の方法。
【請求項33】
前記トランザクションがブロックチェーントランザクションである、請求項
22に記載の方法。
【請求項34】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項22から33のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項35】
コンピューティングデバイスによって読み取られると、前記コンピューティングデバイスに請求項22から33のいずれか一項に記載の方法を実行させるコンピュータ可読命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項36】
プロセッサおよびメモリを備えるコンピューティングデバイスであって、前記メモリが、前記プロセッサによって実行されると、前記コンピューティングデバイスに請求項22から33のいずれか一項に記載の方法を実行させる命令を記憶する、コンピューティングデバイス。
【国際調査報告】