(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-20
(54)【発明の名称】プライバシー保護状態参照
(51)【国際特許分類】
H04L 9/32 20060101AFI20240912BHJP
【FI】
H04L9/32 200C
H04L9/32 200Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024512135
(86)(22)【出願日】2022-07-07
(85)【翻訳文提出日】2024-02-22
(86)【国際出願番号】 IB2022056263
(87)【国際公開番号】W WO2023041995
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】デ カロ、アンジェロ
(72)【発明者】
【氏名】エル キヤウイ、カウタル
(72)【発明者】
【氏名】アンドロウラキ、エリ
(72)【発明者】
【氏名】カランタイドゥ、イオアンナ
(57)【要約】
例示の動作は、未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する段階、前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する段階、前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する段階;及び前記UTXOがトランザクションの前記第1及び第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションをブロックチェーンピアを介して前記ブロックチェーン台帳にコミットする段階のうちの1つ又は複数を備えてよい。
【特許請求の範囲】
【請求項1】
ブロックチェーン台帳を記憶するように構成されたメモリ;及び
プロセッサであって、
未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信すること;
前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定すること;
前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定すること;及び
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションを前記ブロックチェーン台帳にコミットすること
を行うように構成された、プロセッサ
を備える、装置。
【請求項2】
トランザクションの前記第1のサブセットは、ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの前に前記ブロックチェーン台帳上に記憶されたブロックの第1のサブセット内に含まれる、請求項1に記載の装置。
【請求項3】
トランザクションの前記第2のサブセットは、ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの後に前記ブロックチェーン台帳上に記憶されたブロックの第2のサブセット内に含まれる、請求項1に記載の装置。
【請求項4】
トランザクションの前記第1のサブセットは、前記ブロックチェーン台帳上のトランザクションの前記第2のサブセットから相互に排他的である、請求項1に記載の装置。
【請求項5】
前記ハッシュ値は、事前定義されたハッシュ関数を用いて前記状態参照に割り当てられたシリアルナンバーのハッシュを介して作成される、請求項1に記載の装置。
【請求項6】
前記プロセッサは、前記ブロックチェーン台帳上に記憶されている使用済みトランザクションプールからトランザクションの前記第2のサブセットによって消費される入力UTXOに割り当てられた複数のシリアルナンバーを索出するように更に構成されている、請求項5に記載の装置。
【請求項7】
前記プロセッサは、前記事前定義されたハッシュ関数に基づいて前記複数のシリアルナンバーをハッシュ化して複数のハッシュ化された比較を生成し、前記ハッシュ値が前記ハッシュ化されたシリアルナンバーのうちのいずれかに等しいか否かを決定するように更に構成されている、請求項6に記載の装置。
【請求項8】
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれかに含まれると決定することに応答して、前記プロセッサは、前記ブロックチェーントランザクションが無効であると決定し、前記ブロックチェーントランザクションを識別する情報を、前記ブロックチェーン台帳上で無効として記憶するように更に構成されている、請求項1に記載の装置。
【請求項9】
未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する段階;
前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する段階;
前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する段階;及び
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションをブロックチェーンピアを介して前記ブロックチェーン台帳にコミットする段階
を備える、方法。
【請求項10】
トランザクションの前記第1のサブセットは、前記ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの前に前記ブロックチェーン台帳上に記憶されたブロックの第1のサブセット内に含まれる、請求項9に記載の方法。
【請求項11】
トランザクションの前記第2のサブセットは、前記ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの後に前記ブロックチェーン台帳上に記憶されたブロックの第2のサブセット内に含まれる、請求項9に記載の方法。
【請求項12】
トランザクションの前記第1のサブセットは、前記ブロックチェーン台帳上のトランザクションの前記第2のサブセットから相互に排他的である、請求項9に記載の方法。
【請求項13】
前記ハッシュ値は、事前定義されたハッシュ関数を用いて前記状態参照に割り当てられたシリアルナンバーをハッシュ化することによって作成される、請求項9に記載の方法。
【請求項14】
前記方法は、前記ブロックチェーン台帳上に記憶されている使用済みトランザクションプールからトランザクションの前記第2のサブセットによって消費される入力UTXOに割り当てられた複数のシリアルナンバーを索出する段階を更に備える、請求項13に記載の方法。
【請求項15】
前記方法は、前記事前定義されたハッシュ関数に基づいて前記複数のシリアルナンバーをハッシュ化して複数のハッシュ化された比較を生成する段階、及び前記ハッシュ値が前記ハッシュ化されたシリアルナンバーのうちのいずれかに等しいか否かを決定する段階を更に備える、請求項14に記載の方法。
【請求項16】
前記方法は、前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれかに含まれると決定することに応答して、前記ブロックチェーントランザクションが無効であると決定する段階、及び前記ブロックチェーントランザクションを識別する情報を、前記ブロックチェーン台帳上で無効として記憶する段階を更に備える、請求項9に記載の方法。
【請求項17】
プロセッサによって実行されると、コンピュータに、
未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する手順;
前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する手順;
前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する手順;及び
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションをブロックチェーンピアを介して前記ブロックチェーン台帳にコミットする手順
を備える方法を実行させる命令を備える非一時的コンピュータ可読媒体。
【請求項18】
トランザクションの前記第1のサブセットは、前記ブロックチェーン台帳上のトランザクションの前記第2のサブセットから相互に排他的である、請求項17に記載の非一時的コンピュータ可読媒体。
【請求項19】
前記ハッシュ値は、事前定義されたハッシュ関数を用いて前記状態参照に割り当てられたシリアルナンバーをハッシュ化することによって作成される、請求項17に記載の非一時的コンピュータ可読媒体。
【請求項20】
前記方法は、前記ブロックチェーン台帳上に記憶されている使用済みトランザクションプールからトランザクションの前記第2のサブセットによって消費される入力UTXOに割り当てられた複数のシリアルナンバーを索出する手順、事前定義されたハッシュ関数に基づいて前記複数のシリアルナンバーをハッシュ化して複数のハッシュ化された比較を生成する手順、及び前記ハッシュ値が前記ハッシュ化されたシリアルナンバーのうちのいずれかに等しいか否かを決定する手順を更に備える、請求項17に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
中央集権型プラットフォームは、データを単一のロケーションに記憶及び維持する。このロケーションは、多くの場合、中央コンピュータ、例えば、クラウドコンピューティング環境、ウェブサーバ、メインフレームコンピュータ等である。中央集権型プラットフォーム上に記憶された情報は、典型的には、複数の異なるポイントからアクセス可能である。複数のユーザ又はクライアントワークステーションが、例えば、クライアント/サーバ構成に基づいて、中央集権型プラットフォーム上で同時に作業することができる。中央集権型プラットフォームは、その単一のロケーションに起因して、特にセキュリティの目的で、管理、維持、及び制御することが容易である。中央集権型プラットフォーム内では、全てのデータの単一の記憶場所は、データの所与のセットが1つのプライマリレコードしか有しないことも示唆するため、データ冗長性は最小化される。
【発明の概要】
【0002】
1つの例示の実施形態は、ブロックチェーン台帳を記憶するように構成されたメモリ;及びプロセッサであって、未使用トランザクション出力(UTXO)に対する状態参照(state reference)を含むブロックチェーントランザクションを受信すること;前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定すること;前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定すること;及び前記UTXOがトランザクションの前記第1及び第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションを前記ブロックチェーン台帳にコミットすることのうちの1つ又は複数を行うように構成された、プロセッサを備える、装置を提供する。
【0003】
別の例示の実施形態は、未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する段階;前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する段階;前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する段階;及び前記UTXOがトランザクションの前記第1及び第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションをブロックチェーンピアを介して前記ブロックチェーン台帳にコミットする段階のうちの1つ又は複数を備える、方法を提供する。
【0004】
更なる例示の実施形態は、プロセッサによって読み出されると、プロセッサに、未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する手順;前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する手順;前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する手順;及び前記UTXOがトランザクションの前記第1及び第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションをブロックチェーンピアを介して前記ブロックチェーン台帳にコミットする手順のうちの1つ又は複数を実行させる命令を備える非一時的コンピュータ可読媒体を提供する。
【図面の簡単な説明】
【0005】
【
図1A】例示の実施形態に係るブロックチェーンネットワークを示す図である。
【0006】
【
図1B】例示の実施形態に係る、未使用トランザクション出力(UTXO)モデルに従って生成されるブロックチェーントランザクションを示す図である。
【0007】
【
図1C】例示の実施形態に係る、状態参照を含むブロックチェーントランザクションを示す図である。
【0008】
【
図2A】例示の実施形態に係る例示のブロックチェーンアーキテクチャ構成を示す図である。
【0009】
【
図2B】例示の実施形態に係る、ノード間のブロックチェーントランザクションフローを示す図である。
【0010】
【
図3A】例示の実施形態に係る許可型ネットワークを示す図である。
【0011】
【
図3B】例示の実施形態に係る別の許可型ネットワークを示す図である。
【0012】
【
図3C】例示の実施形態に係る自由参加型ネットワークを示す図である。
【0013】
【
図4A】例示の実施形態に係る、プライバシー保護状態参照を生成するプロセスを示す図である。
【0014】
【
図4B】例示の実施形態に係る、
図4Aの状態参照とともに含まれるデータ値の一例を示す図である。
【0015】
【
図4C】例示の実施形態に係る、ブロックチェーントランザクションを処理するタイムラインを示す図である。
【0016】
【
図4D】例示の実施形態に係る、プライバシー保護検索プロセスを示す図である。
【0017】
【
図5】例示の実施形態に係る、ブロックチェーントランザクション内の状態参照を検証する方法を示す図である。
【0018】
【
図6A】例示の実施形態に係る、本明細書において説明される1つ又は複数の動作を実行するように構成された例示のシステムを示す図である。
【0019】
【
図6B】例示の実施形態に係る、本明細書において説明される1つ又は複数の動作を実行するように構成された別の例示のシステムを示す図である。
【0020】
【
図6C】例示の実施形態に係る、スマートコントラクトを利用するように構成された更なる例示のシステムを示す図である。
【0021】
【
図6D】例示の実施形態に係る、ブロックチェーンを利用するように構成された更に別の例示のシステムを示す図である。
【0022】
【
図7A】例示の実施形態に係る、新たなブロックが分散台帳に追加されるプロセスを示す図である。
【0023】
【
図7B】例示の実施形態に係る、新たなデータブロックのデータコンテンツを示す図である。
【0024】
【
図7C】例示の実施形態に係る、デジタルコンテンツのためのブロックチェーンを示す図である。
【0025】
【
図7D】例示の実施形態に係る、ブロックチェーンにおけるブロックの構造を表し得るブロックを示す図である。
【0026】
【
図8A】例示の実施形態に係る、機械学習(人工知能)データを記憶する例示のブロックチェーンを示す図である。
【0027】
【
図8B】例示の実施形態に係る、例示の量子セキュアブロックチェーンを示す図である。
【0028】
【
図9】例示の実施形態のうちの1つ又は複数をサポートする例示のシステムを示す図である。
【発明を実施するための形態】
【0029】
本明細書において概して説明され、図示されるような本コンポーネントは、多種多様な異なる構成で配置及び設計され得ることが容易に理解されるであろう。それゆえ、添付の図において表されるような、方法、装置、非一時的コンピュータ可読媒体及びシステムのうちの少なくとも1つの実施形態の以下の詳細な説明は、特許請求される本出願の範囲を限定することを意図するものではなく、単に選択された実施形態を代表するものである。
【0030】
本明細書全体を通して説明されるような本特徴、構造、又は特性は、1つ又は複数の実施形態において任意の適した方法で組み合わされるか又は除去され得る。例えば、本明細書全体を通した「例示の実施形態」、「幾つかの実施形態」という語句、又は他の同様の文言の使用は、実施形態に関連して説明された特定の特徴、構造、又は特性が、少なくとも1つの実施形態に含まれ得ることを指す。それゆえ、本明細書全体を通した「例示の実施形態」、「幾つかの実施形態では」、「他の実施形態では」という語句、又は他の同様の文言の出現は、必ずしも全てが実施形態の同じグループを指すわけではなく、説明された特徴、構造、又は特性が、1つ又は複数の実施形態において任意の適した方法で組み合わされるか又は除去され得る。さらに、図面において、要素間の任意の接続は、示されている接続が1方向又は2方向の矢印の場合であっても、1方向及び/又は2方向通信を許容することができる。また、図面において示される任意のデバイスは、異なるデバイスとすることができる。例えば、モバイルデバイスが情報を送信しているものと示される場合、有線デバイスを使用して情報を送信することもできる。
【0031】
加えて、「メッセージ」という用語が実施形態の説明において使用されている場合があるが、本出願は、多くのタイプのネットワーク及びデータに適用され得る。さらに、例示的な実施形態において、特定のタイプの接続、メッセージ、及びシグナリングが示されている場合があるが、本出願は、特定のタイプの接続、メッセージ、及びシグナリングに限定されるものではない。
【0032】
例示の実施形態は、ブロックチェーントランザクション内に記憶された状態参照(例えば、UTXOに対する1つ又は複数の参照等)のためのプライバシー保護プロセスを対象とする、方法、システム、コンポーネント、非一時的コンピュータ可読媒体、デバイス、及び/又はネットワークを提供する。
【0033】
1つの実施形態では、本出願は、互いに通信する複数のノードを備える分散記憶システムである非中央集権型データベース(ブロックチェーン等)を利用する。非中央集権型データベースは、相互に信頼されていない当事者間のレコードを維持することが可能な分散台帳に似た、アペンド専用不変データ構造を含む。信頼されていない当事者は、本明細書において、ピア又はピアノードと称される。各ピアは、データベースレコードのコピーを維持し、分散したピア間でコンセンサスに達することなくいずれの単一のピアもデータベースレコードを修正することはできない。例えば、ピアは、コンセンサスプロトコルを実行して、ブロックチェーンストレージトランザクションをバリデートし、ストレージトランザクションを複数のブロックにグループ化し、ブロックにわたってハッシュチェーンを構築し得る。このプロセスは、一貫性のために、必要に応じてストレージトランザクションを順序付けすることによって台帳を形成する。様々な実施形態において、許可型及び/又は自由参加型ブロックチェーンを使用することができる。パブリック又は自由参加型ブロックチェーンでは、誰でも具体的なアイデンティティを伴うことなく参加することができる。パブリックブロックチェーンは、ネイティブの暗号通貨を含み、プルーフオブワーク(PoW)等の様々なプロトコルに基づいてコンセンサスを使用することができる。他方、許可型ブロックチェーンデータベースは、資金、品物、情報等を交換するビジネス等の、共通の目的を共有するが、互いを完全には信頼していないエンティティのグループの中でのセキュアなインタラクションを提供する。
【0034】
本出願は、非中央集権型ストレージ方式に合わせて調整され、「スマートコントラクト」又は「チェーンコード」と称される任意のプログラマブルロジックを動作させるブロックチェーンを利用することができる。幾つかのケースでは、システムチェーンコードと称される管理機能及びパラメータのために特殊化されたチェーンコードが存在し得る。本出願は、ブロックチェーンデータベースの改ざん防止特性、及びエンドースメント又はエンドースメントポリシーと称されるノード間の基礎となる合意を活用する信頼された分散アプリケーションであるスマートコントラクトを更に利用することができる。このアプリケーションに関連付けられたブロックチェーントランザクションは、ブロックチェーンにコミットされる前に「承認」することができ、一方、承認されていないトランザクションは無視される。エンドースメントポリシーは、チェーンコードが、エンドースメントのために必要であるピアノードのセットの形式でトランザクションのためのエンドーサを指定することを可能にする。クライアントがトランザクションをエンドースメントポリシーで指定されたピアに送信すると、トランザクションが実行されて、トランザクションがバリデートされる。バリデーション後、トランザクションは、順序付けフェーズに入り、ここでは、コンセンサスプロトコルが使用されて、複数のブロックにグループ化された承認されたトランザクションの順序付きシーケンスが生成される。
【0035】
本出願は、ブロックチェーンシステムの通信エンティティであるノードを利用することができる。「ノード」は、異なるタイプの複数のノードが同じ物理サーバ上で実行され得るという意味で、論理機能を実行し得る。ノードは、トラストドメインにおいてグループ化され、様々な方法でそれらを制御する論理エンティティに関連付けられる。ノードは、エンドーサ(例えば、ピア)にトランザクション呼び出しをサブミットし、順序付けサービス(例えば、順序付けノード)にトランザクション提案をブロードキャストするクライアント又はサブミット側クライアントノード等の異なるタイプを含み得る。別のタイプのノードは、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーントランザクションの台帳の状態及びコピーを維持することができるピアノードである。ピアは、エンドーサの役割を有することもできるが、これは要件ではない。順序付けサービスノード又はオーダラは、全てのノードのために通信サービスを実行するノードであり、トランザクションにコミットし、通常は制御及びセットアップ情報を含む初期ブロックチェーントランザクションの別名であるブロックチェーンのワールド状態を修正するときにシステムにおけるピアノードの各々へのブロードキャスト等の配信保証を実装する。
【0036】
本出願は、ブロックチェーンの全ての状態遷移のシーケンス化された改ざん耐性のあるレコードである台帳を利用することができる。状態遷移は、参加当事者(例えば、クライアントノード、順序付けノード、エンドーサノード、ピアノード等)によってサブミットされたチェーンコード呼び出し(すなわち、トランザクション)からもたらされ得る。各参加当事者は、台帳のコピーを維持することができる。トランザクションは、アセットキー値ペアのセットが、作成、更新、削除等のような1つ又は複数のオペランドとして台帳にコミットされることをもたらし得る。台帳は、不変シーケンス化レコードをブロックに記憶するのに使用されるブロックチェーン(チェーンとも称される)を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。
【0037】
本出願は、ハッシュリンクされたブロックとして構造化されているトランザクションログであるチェーンを利用することができ、各ブロックは、N個のトランザクションのシーケンスを含み、ここで、Nは、1に等しいか又はこれよりも大きい。ブロックヘッダは、ブロックのトランザクションのハッシュ、及び先行ブロックのヘッダのハッシュを含む。このようにして、台帳上の全てのトランザクションがシーケンス化され、ともに暗号的にリンクされ得る。したがって、ハッシュリンクを破壊することなく台帳データを改ざんすることは可能ではない。直近で追加されたブロックチェーンブロックのハッシュは、その前に到来したチェーン上の全てのトランザクションを表し、全てのピアノードが一貫しておりかつ信頼された状態にあることを保証することを可能にする。チェーンは、ピアノードファイルシステム(すなわち、ローカル、アタッチトストレージ、クラウド等)上に記憶されてよく、ブロックチェーンワークロードのアペンド専用の性質が効率的にサポートされる。
【0038】
不変台帳の現在の状態は、チェーントランザクションログに含まれる全てのキーの最新値を表す。現在の状態はチャネルに既知の最新キー値を表すので、時としてワールド状態と称される。チェーンコード呼び出しは、台帳の現在状態データに対してトランザクションを実行する。これらのチェーンコードインタラクションを効率的にするために、キーの最新値は、状態データベースに記憶され得る。状態データベースは、単にチェーンのトランザクションログへのインデックス付きビューであり得、したがって、それは、任意の時点においてチェーンから再生成することができる。状態データベースは、ピアノードのスタートアップ時であって、かつトランザクションが受け入れられる前に、自動で回復(又は必要であれば生成)されてよい。
【0039】
様々なブロックチェーンフレームワーク、例えば、BITCOIN(コピーライト)及び他のものは、未使用トランザクション出力(UTXO)モデルに従う。ブロックチェーントランザクションがサブミットされるとき、トランザクションは、1つ又は複数の入力及び1つ又は複数の出力を含んでよい。出力は、入力が何らかの方法において、例えば、加算、減算、乗算、除算等を介して混合されることからもたらされる。出力は、UTXOと称される。各UTXOは、暗号通貨トランザクションを実行した後に残るデジタル通貨の量を表すデジタルトークンである。幾つかのケースでは、複数の出力(UTXO)は、単一のトランザクションからもたらされ得る。各UTXOは、ブロックチェーンアドレスにおいて記憶され、ブロックチェーントランザクションを識別する識別子及びそのトランザクション内のそれぞれのUTXOを識別するインデックスを含む。例えば、トランザクション#500が2つの出力(UTXO1及びUTXO2)を含み、これら2つの出力の識別子は、以下のとおりであり得る:
UTXO1=<ID=500,インデックス=0>
UTXO2=<ID=500,インデックス=1>
【0040】
UTXOは、ブロックチェーントランザクションへの入力としても機能する。各UTXOは、デジタルトークンとして具現化されてよい。また、各UTXOは一度のみ使用され得る。UTXOを消費するために、1つ又は複数の新たなUTXOは、初期UTXOから作成されなければならない。例えば、100コインをユーザAからユーザBに移転するトランザクションにおいて、トランザクションは、ユーザAが200コインの価値の第1のUTXOを入力UTXOとして選択することを含んでよい。ここで、トランザクションは、100コインを含み、ユーザBに送信される第2のUTXO及び残りの100コイン(すなわち、200-100=100)を含み、ユーザAに送信される第3のUTXOを含む2つの新たなUTXOを作成してよい。
【0041】
UTXOの二重使用を防止するために、利用可能なUTXO(すなわち、入力としてまだ使用されていないUTXO)の識別子が、ブロックチェーン台帳からのコンテンツに基づいてブロックチェーンピアによって構築されるもののプールに記憶されてよい。プールそれ自体は、ブロックチェーン台帳上ではなく、ブロックチェーンピア上に局所的に記憶されてよい。ブロックチェーントランザクションの検証プロセス中、ブロックチェーンピア(例えば、マイニングノード、コミットノード等)は、プールに、例えば、アプリケーションプログラミングインターフェース(API)、スマートコントラクト等を介して、利用可能な未使用UTXOのリストについてクエリし、ブロックチェーントランザクションの入力UTXOが未使用UTXOのプール内に含まれることを検証してよい。幾つかの実施形態では、各未使用UTXOは、これに割り当てられる一意のシリアルナンバーを含んでもよい。シリアルナンバーがUTXOに割り当てられる方法は、使用されるUTXOモデルの特定の実装に依存してよい。シリアルナンバーは、ブロックチェーン上の他のUTXOに対して一意であってよく、それによって、UTXOがUTXOの所有者の公開鍵(ブロックチェーンアドレス)ではなく、シリアルナンバーによって別個に識別されることが可能になる。幾つかの実施形態では、サービスは、シリアルナンバーの、UTXOへのマッピング等を保持してよい。ここで、ブロックチェーンピアは、サービスに、シリアルナンバーについてクエリしてよい。別の例として、各ピアは、シリアルナンバーの、UTXOへのそれ自体のマッピングを保持してよい。
【0042】
プライバシーを保護するために、特定のブロックチェーンネットワークは、UTXOの代わりにシリアルナンバーのチェックを実行してよい。前述で留意されたように、ブロックチェーントランザクションは、1つ又は複数の入力UTXO及び1つ又は複数の異なる出力UTXOを含んでよい。入力UTXOは、ブロックチェーントランザクションによって消費される。消費されたUTXOに割り当てられたシリアルナンバーは、使用済み(すなわち、使用されたUTXO)のプールに追加される。これらのシリアルナンバーの公開は、それらが関連付けられたUTXOにリンクされ得ないので問題がない。したがって、攻撃者がシリアルナンバーを取得しようとしても、シリアルナンバーは、暗号通貨トランザクションのために使用され得ない。
【0043】
しかしながら、幾つかのケースでは、ブロックチェーントランザクションは、ブロックチェーントランザクションによって消費されておらず、単に更なる検証、セキュリティ等のような任意の所望の目的でクライアント/ユーザによって追加されているUTXOに対する参照を含んでもよい。この参照は、状態参照と称され得る。状態参照UTXOは、シリアルナンバーも割り当てられるが、トランザクションによっては消費されず、したがって、依然として実行可能なUTXOである。BITCOIN(登録商標)等の現在のブロックチェーンプラットフォームは、参照UTXOに割り当てられるシリアルナンバーがセキュリティ目的で公開されることを要求する。
【0044】
例示の実施形態は、UTXOモデルに従うブロックチェーントランザクション内の状態参照UTXOのプライバシーを保護することによって関連技術の欠点を克服する。特に、例示の実施形態は、ブロックチェーントランザクションをサブミットするときに状態参照にゼロ知識証明(ZKP)及びハッシュ値の両方を追加する。ZKPは、何も明らかにすることなく、ブロックチェーントランザクションがブロックチェーンネットワークにサブミットされる時点において、トランザクションが有効であること、入力UTXOが未使用トークンのプール内に存在すること、及び対応するシリアルナンバーが使用済みシリアルナンバーのプール内に存在しないことを保証する。しかしながら、追加のトランザクションが、ブロックチェーントランザクションがサブミットされるとき及びブロックチェーントランザクションが最終的にコミットされるとき(すなわち、マイニング動作等のようなコンセンサスプロセスの後)の間にブロックチェーン台帳上に記憶されてよい。この遅延は、介入トランザクションが台帳に追加される時間を可能にし、これらはいずれも、状態参照を入力UTXO(すなわち、消費されている)として消費し得る。状態参照が介入トランザクションによって消費される場合、そのシリアルナンバーは、使用済みシリアルナンバーのプールに追加されることになる。しかし、クライアントは、このシリアルナンバーを公開することを望まない。
【0045】
このケースでは、単にサブミッションの時点においてシリアルナンバーが有効であるというゼロ知識証明を提供することは十分ではなく、これはなぜならば、ブロックチェーンネットワークは、ブロックチェーントランザクションがサブミットされて以降、状態参照が任意の介入トランザクションによって消費されたシリアルナンバーを含まないことを検証する必要があるためである。これに対処するために、クライアントは、シリアルナンバー及びランダム値「R」を入力として取り込む2方向ユニバーサルハッシュ関数を使用してシリアルナンバーのハッシュを生成し、両方の入力に対して2方向ユニバーサルハッシュ関数を計算して、ハッシュ化されたシリアルナンバーを生成する。ハッシュ化されたシリアルナンバーは、その後、実際のシリアルナンバーの代わりにブロックチェーントランザクションに記憶される。
【0046】
ここで、マイナーノード(例えば、BITCOIN(登録商標)又はコミットノード等の別のタイプのブロックチェーンノードは、状態参照を有するブロックチェーントランザクションがマイニング/ストレージのためにサブミットされて以降シリアルナンバーのプールに記憶された各シリアルナンバーを識別することができる。プール内で発見される各シリアルナンバーについて、ブロックチェーンノードは、同じ2方向ユニバーサルハッシュ関数を使用してSN+Rのハッシュ(既知のランダム文字列)を実行し、それを、ブロックチェーントランザクションに記憶された状態参照のシリアルナンバーのハッシュと比較して、プール内のシリアルナンバーが状態参照のシリアルナンバーに等しいか否かを決定してよい。ブロックチェーンノードが状態参照のシリアルナンバーのハッシュに等しい使用済みシリアルナンバーのハッシュを発見した場合、ブロックチェーンノードは、介入トランザクションが状態参照を入力UTXOとして消費したことを検出し、二重使用の可能性が生じる。したがって、ブロックチェーンノードは、状態参照の無効性を検出し、ブロックチェーンを介して無効性に関する情報を記憶することができる。また、ブロックチェーンノードは、トランザクションを拒絶し、トランザクションをサブミットしたユーザに、状態参照が介入トランザクションによって消費/使用されたのでそれがもはや有効ではないことを通知するための追加の段階を取ることができる。
【0047】
図1Aは、例示の実施形態に係るブロックチェーンネットワーク100を示している。
図1Aを参照すると、ブロックチェーンネットワーク100は、ブロックチェーン台帳110を介して暗号通貨トランザクション(例えば、BITCOIN(登録商標)等)を管理するネットワークであってよい。ここで、ブロックチェーンネットワーク100は、ブロックチェーン台帳110を管理する複数のブロックチェーンピア111~114を備えてよい。複数のブロックチェーンピア111-114の中の各ピアは、ブロックチェーン台帳110のコピーを記憶してよい。さらに、各ピアは、マイニング、エンドースメント、コンセンサス等のような役割を果たしてよい。
【0048】
図1Aの例では、2つのクライアント120及び130は、何らかの方法において暗号通貨を交換するために互いに取引することを望む。ここで、クライアント120は、ブロックチェーンピア111~114のうちの任意のものにブロックチェーントランザクションをサブミットしてよい。これに応答して、ブロックチェーントランザクションは、当該技術分野において知られているようにマイニングされ、マイニング動作の成功の後にブロックチェーン台帳110にコミットされてよい。ブロックチェーントランザクションがブロックチェーン台帳110にマイニングされると、クライアント120及び130のそれぞれのウォレットアカウント(ブロックチェーンウォレット等)は、クライアント120及び130の間の暗号通貨トランザクションの結果としてバランスにおける変化を反映するように更新されてよい。
【0049】
図1Bは、例示の実施形態に係る、未使用トランザクション出力(UTXO)モデルに従って生成されるブロックチェーントランザクションの一例を示している。
図1Bは、UTXOがトランザクション1及びトランザクション2によって消費されるにつれて未使用UTXOプールを管理するプロセス140を示している。
図1Bを参照すると、トランザクション0は、トランザクション0によって作成される2つの出力UTXO141及び142を含む。
図1Bにおいて示されていないが、UTXO141及び142の両方が使用するために利用可能であり、両方のUTXO141の識別子は、トランザクション0の後に未使用UTXOのプールに追加されてよい。しかしながら、プールは、簡潔性のためにトランザクション0の後に示されていない。
【0050】
トランザクション0に後続する何らかの時点において、トランザクション1がサブミットされる。ここで、トランザクション1は、UTXO141を入力として受信する。したがって、UTXO141の識別子は、利用可能な(未使用)UTXOのプール170aから除去することができる。一方、UTXO142の識別子は、トランザクション1の下に示されているように、未使用UTXOのプール170a内に維持され得る。ここで、トランザクション1の出力は、2つの新たなUTXO151及び152である。また、これらのUTXO151及び152の各々の識別子は、トランザクション1の終了時に、未使用UTXOのプール170aに追加することができる。
【0051】
後続の時点において、トランザクション2が、ブロックチェーンネットワークにサブミットされる。トランザクション2は、UTXO152及びUTXO142を入力として受信し、3つの新たなUTXO161、162、及び163を出力として生成する。したがって、UTXO152及び142の識別子は、未使用UTXOのプール170bから除去することができ、一方、新たなUTXO161、162、及び163の識別子は、未使用UTXOのプール170bに追加することができる。このプロセスは、新たなトランザクションがブロックチェーン台帳110に記憶されるにつれて同時に実行されてよい。
【0052】
図1Cは、例示の実施形態に係る、状態参照181を含むブロックチェーントランザクション(すなわち、トランザクション2)を示している。さらに、この例では、UTXOは、シリアルナンバー(一意)を割り当てられる。ここで、ブロックチェーンネットワークは、使用済みシリアルナンバーのプール182及び未使用UTXOのプール170を管理する。
図1Cを参照すると、UTXOが入力として消費されるにつれて、それらのシリアルナンバーは、使用済みシリアルナンバーのプールに追加される。例えば、
図1Cでは、トランザクション1は、UTXO141を消費する。したがって、UTXO141に割り当てられたシリアルナンバーは、使用済みシリアルナンバーのプール182aに追加される。一方、トランザクション2は、2つのUTXO152及び142を消費する。ここで、2つのUTXO152及び142に割り当てられたシリアルナンバーは、使用済みシリアルナンバーのプール182bに追加される。
【0053】
しかしながら、
図1Cでは、状態参照UTXO181は、トランザクション2によって消費されるのではなく、代わりに、単に参照としてクライアントによって追加される。このケースでは、UTXO181は、そのシリアルナンバーを含めて公開される。結果として、攻撃者は、シリアルナンバーを取得し、それを後続のトランザクションにおいて使用することができる。例示の実施形態は、センシティブな情報のそのような公開を克服することができるメカニズムを提供する。特に、シリアルナンバーは、ハッシュ化することができ、それによって、別のエンティティ(攻撃者等)がシリアルナンバーを学習することが防止される。さらに、
図4A~
図4Dの例において更に説明されるように、シリアルナンバーが使用済みシリアルナンバーのプール180内にないことを保証するプロセスを実行することができる。したがって、追加のセキュリティを、トランザクションの一部として状態参照を伴う従来的な暗号通貨トランザクションに追加することができる。さらに、二重使用は、以下の
図4A~
図4Dの例において説明される検証プロセスに基づいて依然として防止することができる。
【0054】
図2Aは、例示の実施形態に係るブロックチェーンアーキテクチャ構成200を示している。
図2Aを参照すると、ブロックチェーンアーキテクチャ200は、特定のブロックチェーン要素、例えば、ブロックチェーンノード202のグループを含んでよい。ブロックチェーンノード202は、1つ又は複数のノード204~210を含んでよい(これらの4つのノードが単に例として示されている)。これらのノードは、ブロックチェーントランザクション追加及びバリデーションプロセス(コンセンサス)等の複数のアクティビティに参加する。ブロックチェーンノード204~210のうちの1つ又は複数は、エンドースメントポリシーに基づいてトランザクションを承認してよく、アーキテクチャ200内の全てのブロックチェーンノードのために順序付けサービスを提供してよい。ブロックチェーンノードは、ブロックチェーン認証を開始し、ブロックチェーン層216に記憶されたブロックチェーン不変台帳への書き込みを求めてよく、そのコピーも、基礎となる物理インフラストラクチャ214上に記憶されてよい。ブロックチェーン構成は、1つ又は複数のアプリケーション224を含んでよく、これらは、記憶されたプログラム/アプリケーションコード220(例えば、チェーンコード、スマートコントラクト等)にアクセスし、それを実行するためにアプリケーションプログラミングインターフェース(API)222にリンクされ、そのプログラム/アプリケーションコードは、参加者によって求められるカスタマイズされた構成に従って作成され得、それら自体の状態を維持し、それら自体のアセットを制御し、外部情報を受信することができる。これをトランザクションとして展開し、分散台帳にアペンドすることを介して、全てのブロックチェーンノード204~210上にインストールすることができる。
【0055】
ブロックチェーンベース又はプラットフォーム212は、様々な層のブロックチェーンデータ、サービス(例えば、暗号信用サービス、仮想実行環境等)、及び新たなトランザクションを受信及び記憶し、データエントリにアクセスしようとしているオーディタへのアクセスを提供するのに使用され得る基礎となる物理コンピュータインフラストラクチャを含んでよい。ブロックチェーン層216は、プログラムコードを処理し、物理インフラストラクチャ214に従事するために必要な仮想実行環境へのアクセスを提供するインターフェースを公開してよい。暗号信用サービス218は、アセット交換トランザクション等のトランザクションを検証し、情報をプライベートに保つのに使用されてよい。
【0056】
図2Aのブロックチェーンアーキテクチャ構成は、ブロックチェーンプラットフォーム212によって公開される1つ又は複数のインターフェース及び提供されるサービスを介してプログラム/アプリケーションコード220を処理及び実行してよい。コード220は、ブロックチェーンアセットを制御してよい。例えば、コード220は、データを記憶及び転送することができ、条件又はその実行の対象となる他のコード要素でスマートコントラクト及び関連付けられたチェーンコードの形式においてノード204~210によって実行されてよい。非限定的な例として、スマートコントラクトは、リマインダ、更新、及び/又は、変更、更新等の対象となる他の通知を実行するように作成されてよい。スマートコントラクトは、それ自体、認可及びアクセス要件及び台帳の使用に関連付けられたルールを識別するのに使用することができる。例えば、スマートコントラクト(又はスマートコントラクトのロジックを実行するチェーンコード)は、ブロックチェーン層216に含まれる1つ又は複数の処理エンティティ(例えば、仮想マシン)によって処理され得るブロックチェーンデータ226を読み出して、複雑なサービスシナリオ内で、アラート、責任の決定等を含む結果228を生成してよい。物理インフラストラクチャ214は、本明細書において説明されるデータ又は情報のうちの任意のものを索出するために利用されてよい。
【0057】
スマートコントラクトは、高水準アプリケーション及びプログラミング言語を介して作成され、その後、ブロックチェーン内のブロックに書き込まれてよい。スマートコントラクトは、ブロックチェーン(例えば、ブロックチェーンピアの分散ネットワーク)を用いて登録、記憶、及び/又は複製される実行可能コードを含んでよい。トランザクションは、スマートコントラクトに関連付けられた条件が満たされていることに応答して実行することができるスマートコントラクトロジックの実行である。スマートコントラクトの実行は、デジタルブロックチェーン台帳の状態に対する信頼された修正をトリガしてよい。スマートコントラクト実行によって引き起こされたブロックチェーン台帳に対する修正は、1つ又は複数のコンセンサスプロトコルを通して、ブロックチェーンピアの分散ネットワーク全体にわたって自動的に複製されてよい。
【0058】
スマートコントラクトは、キー値ペアのフォーマットにおいてデータをブロックチェーンに書き込んでよい。さらに、スマートコントラクトコードは、ブロックチェーンに記憶された値を読み出し、これらをアプリケーション動作において使用することができる。スマートコントラクトコードは、様々な論理演算の出力をブロックチェーン内の1つ又は複数のブロック内に書き込むことができる。コードは、仮想マシン又は他のコンピューティングプラットフォームにおいて、一時的データ構造を作成するのに使用されてよい。ブロックチェーンに書き込まれたデータは、公開することもできるし、及び/又は暗号化してプライベートに維持することもできる。スマートコントラクトによって使用/生成された一時的データは、供給された実行環境によってメモリに保持され、その後、ブロックチェーンのために必要なデータが識別されると削除される。
【0059】
チェーンコードは、スマートコントラクトのコード解釈(例えば、ロジック)を含んでよい。例えば、チェーンコードは、スマートコントラクト内のロジックのパッケージ化された展開可能なバージョンを含んでよい。本明細書において説明されるように、チェーンコードは、コンピューティングネットワーク上に展開されたプログラムコードであってよく、ここで、それは、コンセンサスプロセス中にともにチェーンバリデータによって実行及びバリデートされる。チェーンコードは、ハッシュを受信し、以前に記憶された特徴抽出器を使用して作成されたデータテンプレートに関連付けられたハッシュをブロックチェーンから索出してよい。ハッシュ識別子のハッシュ及び記憶された識別子テンプレートデータから作成されたハッシュが一致する場合、チェーンコードは、リクエストされたサービスに認可キーを送信する。チェーンコードは、暗号ディテールに関連付けられたブロックチェーンデータに書き込まれてよい。
【0060】
図2Bは、例示の実施形態に係る、ブロックチェーンのノード間のブロックチェーントランザクションフロー250の一例を示している。
図2Bを参照すると、トランザクションフローは、クライアントノード260がエンドーシングピアノード281にトランザクション提案291を送信することを含んでよい。エンドーシングピア281は、クライアント署名を検証し、トランザクションを開始するためにチェーンコード関数を実行してよい。出力は、チェーンコードの結果、チェーンコードにおいて読み出されたキー/値バージョンのセット(読み出しセット)、及びチェーンコードに書き込まれたキー/値のセット(書き込みセット)を含んでよい。ここで、エンドーシングピア281は、トランザクション提案を承認するか否かを決定してよい。提案応答292は、承諾された場合、エンドースメント署名とともにクライアント260に返送される。クライアント260は、エンドースメントをトランザクションペイロード293にアセンブルし、それを順序付けサービスノード284にブロードキャストする。その後、順序付けサービスノード284は、順序付けされたトランザクションをブロックとして、チャネル上の全てのピア281~283に送達する。ブロックチェーンにコミットする前に、各ピア281~283は、トランザクションをバリデートしてよい。例えば、ピアは、指定されたピアの正しい割り当てが結果に署名しており、トランザクションペイロード293に対して署名を認証したことを保証するために、エンドースメントポリシーをチェックしてよい。
【0061】
再び
図2Bを参照すると、クライアントノードは、リクエストを構築し、エンドーサであるピアノード281に送信することによってトランザクション291を開始する。クライアント260は、利用可能なAPIを利用してトランザクション提案を生成するサポートされたソフトウェア開発キット(SDK)を活用するアプリケーション含んでよい。提案は、データを台帳から読み出し、及び/又は台帳に書き込む(すなわち、アセットのための新たなキー値ペアを書き込む)ことができるように、チェーンコード関数を呼び出すリクエストである。SDKは、トランザクション提案を適切に設計されたフォーマット(例えば、リモートプロシージャコール(RPC)に対するプロトコルバッファ)にパッケージ化し、トランザクション提案のための一意の署名を生成するために、クライアントの暗号クレデンシャルを取得するシムとして機能してよい。
【0062】
これに応答して、エンドーシングピアノード281は、(a)トランザクション提案が整形式であること、(b)トランザクションが、過去に既にサブミットされていないこと(反射攻撃保護)、(c)署名が有効であること、及び(d)サブミッタ(本例では、クライアント260)がそのチャネル上で提案される動作を実行するように適切に認可されていることを検証してよい。エンドーシングピアノード281は、トランザクション提案入力を、呼び出されるチェーンコード関数に対する引数として取得してよい。その後、チェーンコードは、現在状態データベースに対して実行されて、応答値、読み出しセット、及び書き込みセットを含むトランザクション結果が生成される。しかしながら、この時点では台帳は更新されない。292において、値のセットは、エンドーシングピアノード281の署名とともに、アプリケーションが消費するペイロードをパースするクライアント260のSDKに提案応答292として返される。
【0063】
これに応答して、クライアント260のアプリケーションは、エンドーシングピアの署名を検査/検証し、提案応答が同じあるか否かを決定するために当該提案応答を比較する。チェーンコードが台帳にクエリしたのみである場合、アプリケーションは、クエリ応答を検査し、典型的にはトランザクションを順序付けノードサービス284にサブミットしない。クライアントアプリケーションが、台帳を更新するために、トランザクションを順序付けノードサービス284にサブミットすることを意図する場合、アプリケーションは、サブミットする前に、指定されたエンドースメントポリシーが満たされているか否か(すなわち、トランザクションのために必要な全てのピアノードがトランザクションを承認したか)を決定する。ここで、クライアントは、トランザクションに対する複数の当事者のうちの1つのみを含んでよい。このケースでは、各クライアントは、それら自体のエンドーシングノードを有してよく、各エンドーシングノードは、トランザクションを承認する必要がある。このアーキテクチャは、アプリケーションが応答を検査しないことを選択するか、又はそうでなければ、承認されていないトランザクションを転送する場合であっても、エンドースメントポリシーがピアによって依然として実施され、コミットバリデーションフェーズにおいて維持されるようになっている。
【0064】
検査に成功した後、段階293において、クライアント260は、エンドースメントをトランザクション提案にアセンブルし、トランザクションメッセージ内のトランザクション提案及び応答を順序付けノード284にブロードキャストする。トランザクションは、読み出し/書き込みセット、エンドーシングピア署名及びチャネルIDを含んでよい。順序付けノード284は、その動作を実行するためにトランザクションのコンテンツ全体を検査する必要はなく、その代わりに、順序付けノード284は、単にネットワーク内の全てのチャネルからトランザクションを受信し、これらをチャネルごとに時系列に順序付けし、チャネル当たりのトランザクションのブロックを作成してよい。
【0065】
ブロックは、順序付けノード284からチャネル上の全てのピアノード281~283に送達される。エンドースメントポリシーが満たされていることを保証するため、及び読み出しセットがトランザクション実行によって生成されて以降、読み出しセット変数について台帳状態が変更されていないことを保証するために、ブロック内のデータセクションがバリデートされてよい。さらに、段階295において、各ピアノード281~283は、ブロックをチャネルのチェーンにアペンドし、各有効なトランザクションについて、書き込みセットは、現在状態データベースにコミットされる。トランザクション(呼び出し)が不変にチェーンにアペンドされたことをクライアントアプリケーションに通知するために、及びトランザクションがバリデートされたか又は無効化されたかを通知するために、イベントが発行され得る。
【0066】
図2Bの例では、クライアントノード260及びブロックチェーンピア281~284の各々は、署名として検証可能クレデンシャルを使用してよい。トランザクションが
図2Bの異なる段階を通して移動するにつれて、クライアントノード260及びブロックチェーンピア281~284の各々は、それらが実行した段階にそれらのそれぞれのVCをアタッチしてよい。この例では、ブロックチェーンピア281~284の各々は、ブロックチェーンピア281~284に関連付けられたアイデンティティ及びメンバーシップ情報を提供するVC(例えば、1つ又は複数のVC)のセットを含んでよい。例えば、クライアントノード260は、クライアントをブロックチェーン上で取引するためのメンバーとして識別するブロックチェーンネットワークのMSPによって発行されるクレームを有する検証可能証明書を含んでよい。別の例として、ブロックチェーンピア281~283は、ブロックチェーンのエンドーシングピアとしてブロックチェーンピア281~283を識別するVCを含んでよい。一方、ブロックチェーンピア284は、ブロックチェーンの順序付けノードとしてブロックチェーンピア284を識別するVCを含んでよい。他の多くのVCが可能である。例えば、ブロックチェーン上の特定のチャネル(例えば、同じ台帳上の異なるブロックチェーン)は、クライアント、ピア、エンドーサ、及びオーダラ等として機能するために異なるVCを要求してよい。別の例として、異なるタイプのトランザクション及び/又はチェーンコードは、クライアント、ピア等によって別個のVCを要求してよい。例えば、クライアントは、クライアントが特定のチェーンコードを使用する権限を有することを識別するVCをクライアントが有する場合、そのようなチェーンコードを呼び出すために単にトランザクションをサブミットしてよい。
【0067】
図3Aは、分散非中央集権型ピアツーピアアーキテクチャを特徴とする、許可型ブロックチェーンネットワーク300の一例を示している。この例では、ブロックチェーンユーザ302は、許可型ブロックチェーン304に対するトランザクションを開始してよい。この例では、トランザクションは、展開、呼び出し、又はクエリであり得、SDKを活用するクライアント側アプリケーションを通して、APIを直接通して等で発行されてよい。ネットワークは、オーディタ等のレギュレータ306へのアクセスを提供してよい。ブロックチェーンネットワークオペレータ308は、レギュレータ306を「オーディタ」として登録し、ブロックチェーンユーザ302を「クライアント」として登録する等のメンバー許可を管理する。オーディタは、台帳のクエリのみに制限することができる一方で、クライアントは、特定のタイプのチェーンコードを展開、呼び出し、及びクエリするように認可することができる。
【0068】
ブロックチェーンデベロッパ310は、チェーンコード及びクライアント側アプリケーションを書き込むことができる。ブロックチェーンデベロッパ310は、インターフェースを通してネットワークに直接チェーンコードを展開することができる。従来的なデータソース312からのクレデンシャルをチェーンコードに含めるために、デベロッパ310は、帯域外接続を使用してデータにアクセスすることができる。この例では、ブロックチェーンユーザ302は、ピアノード314を通して許可型ブロックチェーン304に接続する。任意のトランザクションに進む前に、ピアノード314は、ユーザの役割及び許可を管理する認証局316からユーザの登録及びトランザクション証明書を索出する。幾つかのケースでは、ブロックチェーンユーザは、許可型ブロックチェーン304上で取引するために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用することを試みるユーザは、自身のクレデンシャルを従来的なデータソース312に対して検証することが要求され得る。ユーザの認可を確認するために、チェーンコードは、従来的な処理プラットフォーム318を通したこのデータへの帯域外接続を使用することができる。
【0069】
図3Bは、分散非中央集権型ピアツーピアアーキテクチャを特徴とする、許可型ブロックチェーンネットワーク320の別の例を示している。この例では、ブロックチェーンユーザ322は、トランザクションを許可型ブロックチェーン324にサブミットしてよい。この例では、トランザクションは、展開、呼び出し、又はクエリであり得、SDKを活用するクライアント側アプリケーションを通して、APIを直接通して等で発行されてよい。ネットワークは、オーディタ等のレギュレータ326へのアクセスを提供してよい。ブロックチェーンネットワークオペレータ328は、レギュレータ326を「オーディタ」として登録し、ブロックチェーンユーザ322を「クライアント」として登録する等のメンバー許可を管理する。オーディタは、台帳のクエリのみに制限することができる一方で、クライアントは、特定のタイプのチェーンコードを展開、呼び出し、及びクエリするように認可することができる。
【0070】
ブロックチェーンデベロッパ330は、チェーンコード及びクライアント側アプリケーションを書き込む。ブロックチェーンデベロッパ330は、インターフェースを通してネットワークに直接チェーンコードを展開することができる。従来的なデータソース332からのクレデンシャルをチェーンコードに含めるために、デベロッパ330は、帯域外接続を使用してデータにアクセスすることができる。この例では、ブロックチェーンユーザ322は、ピアノード334を通してネットワークに接続する。任意のトランザクションを進める前に、ピアノード334は、認証局336からユーザの登録及びトランザクション証明書を索出する。幾つかのケースでは、ブロックチェーンユーザは、許可型ブロックチェーン324上で取引するために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用することを試みるユーザは、自身のクレデンシャルを従来的なデータソース332に対して検証することが要求され得る。ユーザの認可を確認するために、チェーンコードは、従来的な処理プラットフォーム338を通したこのデータへの帯域外接続を使用することができる。
【0071】
幾つかの実施形態では、本明細書におけるブロックチェーンは、自由参加型ブロックチェーンであってよい。参加するために許可を要求する許可型ブロックチェーンとは対照的に、誰でも自由参加型ブロックチェーンに参加することができる。例えば、自由参加型ブロックチェーンに参加するために、ユーザは、個人アドレスを作成し、トランザクションをサブミットし、したがって台帳にエントリを追加することによって、ネットワークとのインタラクトを開始してよい。加えて、全ての当事者は、システム上でノードを実行し、トランザクションを検証するのに役立つマイニングプロトコルを利用する選択肢を有する。
【0072】
図3Cは、複数のノード354を含む自由参加型ブロックチェーン352によって処理されるトランザクションのプロセス350を示している。送信者356は、自由参加型ブロックチェーン352を介して受信者358に支払い又は他の何らかの形式の値(例えば、証書、医療記録、契約書、品物、サービス、又はデジタルレコードにカプセル化することができる他の任意のアセット)を送信することを望む。1つの実施形態では、送信者デバイス356及び受信者デバイス358の各々は、ユーザインターフェース制御及びトランザクションパラメータの表示を提供する(ブロックチェーン352に関連付けられた)デジタルウォレットを有してよい。これに応答して、トランザクションは、ブロックチェーン352全体を通してノード354にブロードキャストされる。ブロックチェーン352のネットワークパラメータに依存して、ノードは、自由参加型ブロックチェーン352の作成者によって確立されたルール(事前定義されるか又は動的に割り当てられ得る)に基づいてトランザクションを検証する(360)。例えば、これは、関与する当事者のアイデンティティを検証すること等を含んでよい。トランザクションは、即座に検証され得るか、又は他のトランザクションとともにキューに入れられ得、ノード354はネットワークルールのセットに基づいてトランザクションが有効であるか否かを決定する。
【0073】
構造362において、有効なトランザクションは、ブロックに形成され、ロック(ハッシュ)を用いてシールされる。このプロセスは、ノード354の中のマイニングノードによって実行されてよい。マイニングノードは、自由参加型ブロックチェーン352のためのブロックをマイニング及び作成するために特別に追加のソフトウェアを利用してよい。各ブロックは、ネットワークによって合意されたアルゴリズムを使用して作成されたハッシュ(例えば、256ビット数等)によって識別されてよい。各ブロックは、ヘッダ、チェーン内の先行ブロックのヘッダのハッシュへのポインタ又は参照、及び有効なトランザクションのグループを含んでよい。先行ブロックのハッシュへの参照は、ブロックのセキュアで独立したチェーンの作成に関連付けられている。
【0074】
ブロックをブロックチェーンに追加することができる前に、ブロックはバリデートされなければならない。自由参加型ブロックチェーン352のためのバリデーションは、ブロックのヘッダから導出されるパズルへの解であるプルーフオブワーク(PoW)を含んでよい。
図3Cの例では示されていないが、ブロックをバリデートする別のプロセスはプルーフオブステークである。アルゴリズムが数学的問題を解いたマイナーに報酬を与えるプルーフオブワークとは異なり、プルーフオブステークでは、新たなブロックの作成者は、「ステーク」とも定義されるその富に依存して決定論的な方法において選択される。その後、選択された/選ばれたノードによって同様の証明が実行される。
【0075】
マイニング364では、ノードは、解がネットワークワイドターゲットを満たすまで、1つの変数に増分的な変更を加えることによって、ブロックを解くことを試みる。これにより、PoWが作成され、それによって、正解が保証される。換言すれば、潜在的な解は、コンピューティングリソースが問題を解くために枯渇したことを証明しなければならない。幾つかのタイプの自由参加型ブロックチェーンでは、マイナーは、ブロックを正しくマイニングすることに対して値(例えば、コイン等)の報酬を受け得る。
【0076】
ここで、PoWプロセスは、ブロックをチェーンにしながら、攻撃者が1つのブロックの修正が受け入れられるようにするために全ての後続ブロックを修正しなければならないので、ブロックチェーンの修正を極めて困難にする。さらに、新たなブロックがマイニングされるにつれて、ブロックを修正することの困難さが高まり、後続ブロックの数が増加する。分散366では、バリデートに成功したブロックが自由参加型ブロックチェーン352を通して分散され、全てのノード354がブロックを自由参加型ブロックチェーン352の監査可能な台帳である多数派チェーンに追加する。さらに、送信者356によってサブミットされたトランザクションの値は、受信者デバイス358のデジタルウォレットに入金又は別様に移転される。
【0077】
図4Aは、例示の実施形態に係る、プライバシー保護状態参照410を生成するプロセス400を示しており、
図4Bは、例示の実施形態に係る、
図4Aの状態参照410とともに含まれるデータ値の一例を示している。
図4A及び
図4Bを参照すると、状態参照410が、
図1Cにおける例と同様にブロックチェーントランザクション402(すなわち、トランザクション2)に追加される。しかしながら、この例では、状態参照410に割り当てられたシリアルナンバーを記憶するのではなく、クライアントは、UTXOのコンテンツ416とともに、ゼロ知識証明(ZKP)値412及びハッシュ値414を記憶する。すなわち、この例では、シリアルナンバーは、状態参照410に含まれていない。ZKP値412は、ブロックチェーントランザクション402がブロックチェーン台帳にサブミットされる時点において使用済みシリアルナンバーのプール182aに対してZKPアルゴリズムを実行することによって作成されてよい。ZKP値412は、状態参照410UTXOが、ブロックチェーントランザクション402のサブミッションの前の任意のトランザクションにおける入力ではないことを検証/証明するのに使用することができる。
【0078】
しかしながら、前述で留意されたように、介入トランザクションは、状態参照410を有するブロックチェーントランザクション402がサブミットされるとき及びそれがブロックチェーン台帳に最終的にコミットされるときの間にブロックチェーン台帳上に記録されてよい。様々な実施形態によれば、ハッシュ値414は、これらの介入トランザクションが状態参照410を入力UTXOとして含まないことを保証するのに使用することができる。
【0079】
特に、ハッシュ値414は、状態参照410に割り当てられたシリアルナンバー及びランダム文字列(R)の組み合わせをハッシュ化することによって作成することができる。その結果はシリアルナンバーの知識を有しない者に対してシリアルナンバーを隠すハッシュ値414であり、これは、ブロックチェーン参加者間で事前に、例えば、登録中等にのみ共有されてよい。トランザクション402は、状態参照410を消費するのではなく、その代わりに、単に、ビジネス目的、セキュリティ、検証等のような任意の所望の目的でこのUTXOを参照することに留意されたい。
【0080】
図4Cは、例示の実施形態に係る、ブロックチェーントランザクションを処理するタイムライン430を示している。
図4Cを参照すると、ブロックチェーン台帳432は、ブロックチェーン台帳432に記録されるブロックのシーケンス、及びそれらがコミットされる順序を示している。この例では、ブロックチェーントランザクション402は、直近で記憶されたブロックチェーントランザクションがトランザクション1である第1の時点においてサブミットされる。しかしながら、ブロックチェーントランザクション402は、マイニング、エンドースメント、コンセンサス等を伴い得るコンセンサスプロセスを経なければならない。ここで、ブロックチェーントランザクション402は、直近で記録されたトランザクションが今やトランザクション1ではなくトランザクション4である第2の時点まで、ブロックチェーンにコミットされない。それゆえ、2つの介入トランザクション(トランザクション3及びトランザクション4)がブロックチェーン台帳432にコミット/記録されている。
【0081】
図4Dに関して以下で更に説明されるように、ZKP値412は、状態参照410が、トランザクション1までブロックチェーン台帳432にコミットされたトランザクションのうちの任意のものにおける入力UTXOではないことを検証するのに使用されてよい。一方、ハッシュ値414は、状態参照410が、ブロックチェーントランザクション402がサブミットされた後であるが、それがコミットされる前に、ブロックチェーン台帳432にコミットされた介入トランザクション(例えば、トランザクション3及び4)のうちの任意のものにおける入力UTXOではないことを検証するのに使用することができる。
【0082】
図4Dは、例示の実施形態に係る、プライバシー保護検索プロセス440を示している。
図4Dを参照すると、ブロックチェーントランザクション402は、サブミットされており、現在、ブロックチェーンノード460によってマイニング/コミットされている。ここで、ブロックチェーン台帳432上の直近で記憶されたトランザクションは、トランザクション4である。トランザクション4の下には、使用済みシリアルナンバーのプールを2つのサブセットに分割するライン455を含む当該使用済みシリアルナンバーのプール450の図がある。第1のサブセット(上半分)は、ブロックチェーントランザクション402がサブミットされたときにプール450内に既に含まれていた使用済みシリアルナンバーを指す。したがって、ブロックチェーントランザクション402がサブミットされるまで状態参照410がブロックチェーン台帳上の任意のトランザクションにおける入力UTXOではないことをZKP値412が証明するため、シリアルナンバーの第1のサブセットは回避され得る。これは、上半分が、ブロックチェーントランザクション402がサブミットされる前に使用されたシリアルナンバーを指すためである。
【0083】
一方、使用済みシリアルナンバーのプール450の下半分は、ブロックチェーントランザクション402がサブミットされて以降、ただしそれがコミットされる前に追加されたシリアルナンバーを含む。ここで、シリアルナンバー451、452、453、及び454は、
図4Cにおいて示されている介入トランザクション3及びトランザクション4によって入力として消費されるUTXOに対応する。UTXOの第2のサブセットは、ZKP値412によってカバーされない。このケースでは、ブロックチェーンノード460は、状態参照410からハッシュ値414を索出することができる。
【0084】
さらに、ブロックチェーンノード460は、シリアルナンバー451、452、453、及び454のハッシュを作成することができる。例えば、ブロックチェーンノード460は、ハッシュ値414を生成するときにクライアントによって実行される同じハッシュプロセスを実行してよい。ここで、ブロックチェーンノード460は、シリアルナンバーの各々にランダム文字列を追加し、シリアルナンバー451~454のハッシュを作成するために同じハッシュ関数を使用してよい。さらに、ブロックチェーンノード460は、ハッシュ化されたシリアルナンバー451~454をハッシュ化された値414と比較することができる。ハッシュ化された値414がハッシュ化されたシリアルナンバー451~454のいずれかに等しい場合、状態参照410は、介入トランザクション3又は4のうちの1つにおける入力UTXOとして既に消費されている。しかしながら、ハッシュ化された値414がハッシュ化されたシリアルナンバー451~454のいずれにも等しくない場合、ブロックチェーンノード460は、状態参照410がUTXO入力として消費されておらず、したがって、依然として有効なUTXOであることの検証に成功する。
【0085】
状態参照410が消費されていないことをブロックチェーンノード460が検証することが可能である場合、二重使用は問題ではない。しかしながら、状態参照410が消費されている(すなわち、ハッシュ値414がハッシュ化されたシリアルナンバー451~454のうちの1つに等しいことが発見された)場合、二重使用の可能性が存在し、ブロックチェーンノード460は、トランザクション402が状態参照410のその使用に起因して無効であることを検出することができる。したがって、ブロックチェーンノード460は、トランザクションを拒絶し、ユーザ/クライアントに通知を送信し、状態参照410及び/又はトランザクション402の無効化に関する情報をブロックチェーン台帳上に記憶する等を行うことができる。
【0086】
したがって、ブロックチェーンノード/ネットワークは、状態参照が、状態参照を含むブロックチェーントランザクションのサブミッションの前にサブミットされる任意のブロックチェーントランザクションにおける入力UTXOではないことを検証すること、及び状態参照が、ブロックチェーントランザクションがサブミットされた後にコミットされる任意の後続の介入トランザクションにおける入力UTXOではないことを検証することによって、状態参照が二重使用ではないことを検証することができる。しかしながら、シリアルナンバーは、検証プロセス全体の間、攻撃者に対して隠された状態を維持し、それによって、状態参照のシリアルナンバーのプライバシーが保護される。
【0087】
図5は、例示の実施形態に係る、ブロックチェーントランザクション内の状態参照を検証する方法500を示している。例えば、方法500は、ブロックチェーンピア、マイニングノード、スマートコントラクト等によって実行されてよい。
図5を参照して、510において、方法は、未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する段階を備えることができる。520において、方法は、状態参照内に含まれるゼロ知識(ZK)証明に基づいて、UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する段階を備えてよい。530において、方法は、状態参照内に含まれるハッシュ値に基づいて、UTXOがブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する段階を備えてよい。540において、方法は、UTXOがトランザクションの第1及び第2のサブセットのいずれにおいても含まれていないと決定することに応答して、状態参照を含むブロックチェーントランザクションをブロックチェーンピアを介してブロックチェーン台帳にコミットする段階を備えてよい。
【0088】
幾つかの実施形態では、トランザクションの第1のサブセットは、ブロックチェーンピアへのブロックチェーントランザクションのサブミッションの前にブロックチェーン台帳上に記憶されたブロックの第1のサブセット内に含まれる。幾つかの実施形態では、トランザクションの第2のサブセットは、ブロックチェーンピアへのブロックチェーントランザクションのサブミッションの後にブロックチェーン台帳上に記憶されたブロックの第2のサブセット内に含まれる。幾つかの実施形態では、トランザクションの第1のサブセットは、ブロックチェーン台帳上のトランザクションの第2のサブセットから相互に排他的である。幾つかの実施形態では、ハッシュ値は、事前定義されたハッシュ関数を用いて状態参照に割り当てられたシリアルナンバーをハッシュ化することによって作成される。
【0089】
幾つかの実施形態では、方法は、ブロックチェーンピア上に記憶されている使用済みトランザクションプールからトランザクションの第2のサブセットによって消費される入力UTXOに割り当てられた複数のシリアルナンバーを索出する段階を更に備えてよい。幾つかの実施形態では、方法は、事前定義されたハッシュ関数(例えば、ユニバーサル2方向ハッシュ関数等)に基づいて複数のシリアルナンバーをハッシュ化して複数のハッシュ化された比較を生成する段階、及びハッシュ値がハッシュ化されたシリアルナンバーのうちのいずれかに等しいか否かを決定する段階を更に備えてよい。幾つかの実施形態では、方法は、UTXOがトランザクションの第1及び第2のサブセットのいずれかに含まれると決定することに応答して、ブロックチェーントランザクションが無効であると決定する段階、及びブロックチェーントランザクションを識別する情報を、ブロックチェーン台帳上で無効として記憶する段階を更に備えてよい。
【0090】
図6Aは、例示の実施形態に係る、様々な動作を実行するように構成された物理インフラストラクチャ610を備える例示のシステム600を示している。
図6Aを参照すると、物理インフラストラクチャ610は、モジュール612及びモジュール614を含む。モジュール614は、ブロックチェーン620及びスマートコントラクト630(これは、ブロックチェーン620上に存在し得る)を含み、これは、例示の実施形態のうちの任意のものに含まれる(モジュール612における)動作段階608のうちの任意のものを実行してよい。段階/動作608は、説明又は図示された実施形態のうちの1つ又は複数を含んでよく、1つ又は複数のスマートコントラクト630及び/又はブロックチェーン620に書き込まれるか又はこれらから読み出される出力又は書き込まれた情報を表してよい。物理インフラストラクチャ610、モジュール612、及びモジュール614は、1つ又は複数のコンピュータ、サーバ、プロセッサ、メモリ及び/又は無線通信デバイスを含んでよい。さらに、モジュール612及びモジュール614は、同じモジュールであってよい。
【0091】
図6Bは、例示の実施形態に係る、様々な動作を実行するように構成された別の例示のシステム640を示している。
図6Bを参照すると、システム640は、モジュール612及びモジュール614を含む。モジュール614は、ブロックチェーン620及びスマートコントラクト630(これは、ブロックチェーン620上に存在し得る)を含み、これは、例示の実施形態のうちの任意のものに含まれる(モジュール612における)動作段階608のうちの任意のものを実行してよい。段階/動作608は、説明又は図示された実施形態のうちの1つ又は複数を含んでよく、1つ又は複数のスマートコントラクト630及び/又はブロックチェーン620に書き込まれるか又はこれらから読み出される出力又は書き込まれた情報を表してよい。物理インフラストラクチャ610、モジュール612、及びモジュール614は、1つ又は複数のコンピュータ、サーバ、プロセッサ、メモリ及び/又は無線通信デバイスを含んでよい。さらに、モジュール612及びモジュール614は、同じモジュールであってよい。
【0092】
図6Cは、例示の実施形態に係る、コントラクト当事者間でスマートコントラクト構成を利用するように構成された例示のシステム、及びブロックチェーン上でスマートコントラクト条項を実施するように構成された仲介サーバを示している。
図6Cを参照すると、構成650は、1つ又は複数のユーザデバイス652及び/又は656を明示的に識別するスマートコントラクト630によって駆動される、通信セッション、アセット移転セッション又はプロセス又は手順を表してよい。スマートコントラクト実行の実行、動作及び結果は、サーバ654によって管理されてよい。スマートコントラクト630のコンテンツは、スマートコントラクトトランザクションに対する当事者であるエンティティ652及び656のうちの1つ又は複数によるデジタル署名を要求してよい。スマートコントラクト実行の結果は、ブロックチェーントランザクションとしてブロックチェーン620に書き込まれてよい。スマートコントラクト630は、1つ又は複数のコンピュータ、サーバ、プロセッサ、メモリ及び/又は無線通信デバイス上に存在し得るブロックチェーン620上に存在する。
【0093】
図6Dは、例示の実施形態に係る、ブロックチェーンを含むシステム660を示している。
図6Dの例を参照すると、アプリケーションプログラミングインターフェース(API)ゲートウェイ662は、ブロックチェーンロジック(例えば、スマートコントラクト630又は他のチェーンコード)及びデータ(例えば、分散台帳等)にアクセスするための共通インターフェースを提供する。この例では、APIゲートウェイ662は、1つ又は複数のエンティティ652及び656をブロックチェーンピア(すなわち、サーバ654)に接続することによって、ブロックチェーン上でトランザクション(呼び出し、クエリ等)を実行するための共通インターフェースである。ここで、サーバ654は、クライアント652及び656がワールド状態に対するデータをクエリするとともに、スマートコントラクト630及びエンドースメントポリシーに依存して、エンドーシングピアがスマートコントラクト630を実行するブロックチェーンネットワークにトランザクションをサブミットすることを可能にする、ワールド状態及び分散台帳のコピーを保持するブロックチェーンネットワークピアコンポーネントである。
【0094】
上記の実施形態は、ハードウェアにおいて、プロセッサによって実行されるコンピュータプログラムにおいて、ファームウェアにおいて、又は上記の組み合わせにおいて実装されてよい。コンピュータプログラムは、記憶媒体等のコンピュータ可読媒体上で具現化されてよい。例えば、コンピュータプログラムは、ランダムアクセスメモリ(「RAM」)、フラッシュメモリ、リードオンリメモリ(「ROM」)、消去可能プログラマブルリードオンリメモリ(「EPROM」)、電気的消去可能プログラマブルリードオンリメモリ(「EEPROM」)、レジスタ、ハードディスク、取り外し可能ディスク、コンパクトディスクリードオンリメモリ(「CD-ROM」)、又は当該技術分野において既知である他の任意の形式の記憶媒体において存在してよい。
【0095】
例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、記憶媒体に情報を書き込み得るように、プロセッサに結合されてよい。代替形態では、記憶媒体は、プロセッサに一体化されてよい。プロセッサ及び記憶媒体は、特定用途向け集積回路(「ASIC」)内に存在してよい。代替形態では、プロセッサ及び記憶媒体は、別個のコンポーネントとして存在してよい。
【0096】
図7Aは、例示の実施形態に係る、新たなブロックが分散台帳720に追加されるプロセス700を示しており、
図7Bは、例示の実施形態に係る、ブロックチェーンのための新たなデータブロック構造730のコンテンツを示している。
図7Aを参照すると、クライアント(図示せず)は、トランザクションをブロックチェーンノード711、712、及び/又は713にサブミットしてよい。クライアントは、任意のソースから受信される、ブロックチェーン720上でアクティビティを施行する命令であってよい。一例として、クライアントは、ブロックチェーンにトランザクションを提案するように、デバイス、人物又はエンティティ等のリクエスタを代表して機能するアプリケーションであってよい。複数のブロックチェーンピア(例えば、ブロックチェーンノード711、712、及び713)は、ブロックチェーンネットワークの状態及び分散台帳720のコピーを維持してよい。クライアントによって提案されたトランザクションをシミュレート及び承認するエンドーシングピア、及びエンドースメントを検証し、トランザクションをバリデートし、トランザクションを分散台帳720にコミットするコミッティングピアを含む、異なるタイプのブロックチェーンノード/ピアが、ブロックチェーンネットワーク内に存在してよい。この例では、ブロックチェーンノード711、712、及び713は、エンドーサノード、コミッタノード、又はその両方の役割を果たし得る。
【0097】
分散台帳720は、不変シーケンス化レコードをブロックに記憶するブロックチェーン、ブロックチェーン722の現在の状態を維持する状態データベース724(現在のワールド状態)を備える。チャネルごとに1つの分散台帳720が存在してよく、各ピアは、それらがメンバーであるチャネルごとに分散台帳720のそれ自体のコピーを維持する。ブロックチェーン722は、各ブロックがN個のトランザクションのシーケンスを含むハッシュリンクされたブロックとして構造化されたトランザクションログである。ブロックは、
図7Bにおいて示されているもの等の様々なコンポーネントを含んでよい。ブロックのリンク付け(
図7Aにおける矢印によって示されている)は、現在のブロックのブロックヘッダ内に先行ブロックのヘッダのハッシュを追加することによって生成されてよい。このようにして、ブロックチェーン722上の全てのトランザクションは、シーケンス化されてともに暗号的にリンクされ、ハッシュリンクを破壊することなくブロックチェーンデータを改ざんすることを防止する。さらに、リンクに起因して、ブロックチェーン722内の最新ブロックは、その前に到来する全てのトランザクションを表す。ブロックチェーン722は、アペンド専用ブロックチェーンワークロードをサポートするピアファイルシステム(ローカル又はアタッチトストレージ)上に記憶されてよい。
【0098】
ブロックチェーン722及び分散台帳722の現在の状態は、状態データベース724に記憶されてよい。ここで、現在状態データは、ブロックチェーン722のチェーントランザクションログにこれまでに含まれている全てのキーの最新値を表す。チェーンコード呼び出しは、状態データベース724内の現在の状態に対してトランザクションを実行する。これらのチェーンコードインタラクションを極めて効率的にするために、全てのキーの最新値は、状態データベース724に記憶される。状態データベース724は、ブロックチェーン722のトランザクションログへのインデックス付きビューを含んでよく、したがって、それは、任意の時点においてチェーンから再生成することができる。状態データベース724は、ピアのスタートアップ時であって、トランザクションが受け入れられる前に、自動で回復(又は必要であれば生成)されてよい。
【0099】
エンドーシングノードは、クライアントからトランザクションを受信し、シミュレートされた結果に基づいてトランザクションを承認する。エンドーシングノードは、トランザクション提案をシミュレートするスマートコントラクトを保持する。エンドーシングノードがトランザクションを承認するとき、エンドーシングノードは、シミュレートされたトランザクションのエンドースメントを示す、エンドーシングノードからクライアントアプリケーションへの署名付き応答であるトランザクションエンドースメントを作成する。トランザクションを承認する方法は、チェーンコード内で指定され得るエンドースメントポリシーに依存する。エンドースメントポリシーの一例は、「エンドーシングピアの過半数がトランザクションを承認しなければならない」である。異なるチャネルは、異なるエンドースメントポリシーを有してよい。承認されたトランザクションは、クライアントアプリケーションによって順序付けサービス710に転送される。
【0100】
順序付けサービス710は、承認されたトランザクションを受け入れ、これらを順序付けてブロックにし、ブロックをコミッティングピアに配信する。例えば、順序付けサービス710は、トランザクションの閾値に達した場合、タイマがタイムアウトした場合、又は別の条件で、新たなブロックを開始してよい。
図7Aの例では、ブロックチェーンノード712は、ブロックチェーン720上への記憶のために新たなデータの新たなデータブロック730を受信したコミッティングピアである。ブロックチェーン内の第1のブロックは、ブロックチェーン、そのメンバー、その中に記憶されたデータ等に関する情報を含むジェネシスブロックと称され得る。
【0101】
順序付けサービス710は、オーダラのクラスタから構成されてよい。順序付けサービス710は、トランザクション、スマートコントラクトを処理せず、又は共有された台帳を維持しない。むしろ、順序付けサービス710は、承認されたトランザクションを受け入れ、それらのトランザクションが分散台帳720にコミットされる順序を指定してよい。ブロックチェーンネットワークのアーキテクチャは、「順序付け」の具体的な実装(例えば、Solo、Kafka、BFT等)がプラグ可能なコンポーネントとなるように設計されてよい。
【0102】
トランザクションは、一貫した順序において分散台帳720に書き込まれる。トランザクションの順序は、状態データベース724に対する更新がネットワークにコミットされるときにそれらの更新が有効であることを保証するために確立される。順序付けが暗号パズルを解くこと又はマイニングを通して行われる暗号通貨ブロックチェーンシステム(例えば、ビットコイン等)とは異なり、この例では、分散台帳720の当事者は、そのネットワークに最も良好に適合する順序付けメカニズムを選択してよい。
【0103】
順序付けサービス710が新たなデータブロック730を初期化すると、新たなデータブロック730は、コミッティングピア(例えば、ブロックチェーンノード711、712、及び713)にブロードキャストされてよい。これに応答して、各コミッティングピアは、読み出しセット及び書き込みセットが状態データベース724における現在のワールド状態に依然として一致することを確実にするようにチェックすることによって、新たなデータブロック730内のトランザクションをバリデートする。具体的には、コミッティングピアは、エンドーサがトランザクションをシミュレートしたときに存在した読み出しデータが、状態データベース724における現在のワールド状態と同一であるか否かを決定することができる。コミッティングピアがトランザクションをバリデートするとき、トランザクションは、分散台帳720上のブロックチェーン722に書き込まれ、状態データベース724は、読み出し-書き込みセットからの書き込みデータで更新される。トランザクションが失敗した場合、すなわち、コミッティングピアが、読み出し-書き込みセットが状態データベース724における現在のワールド状態に一致しないことを発見した場合、順序付けされてブロックにされたトランザクションは依然としてそのブロックに含まれるが、無効としてマーキングされ、状態データベース724は更新されない。
【0104】
図7Bを参照すると、分散台帳720のブロックチェーン722上に記憶される新たなデータブロック730(データブロックとも称される)は、ブロックヘッダ740、ブロックデータ750(ブロックデータセクション)、及びブロックメタデータ760等の複数のデータセグメントを含んでよい。
図7Bにおいて示された、新たなデータブロック730及びそのコンテンツ等の様々な図示されるブロック及びそれらのコンテンツは、単なる例であり、例示の実施形態の範囲を限定することを意図されないことが理解されるべきである。従来的なブロックでは、データセクションは、ブロックデータ750内にN個のトランザクション(例えば、1つ、10個、100個、500個、1000個、2000個、3000個等)のトランザクション情報を記憶してよい。
【0105】
新たなデータブロック730は、(例えば、
図7Aにおけるブロックチェーン722上の)先行ブロックへのリンクをブロックヘッダ740内に含んでよい。特に、ブロックヘッダ740は、先行ブロックのヘッダのハッシュを含んでよい。ブロックヘッダ740は、一意のブロック番号、新たなデータブロック730のブロックデータ750のハッシュ等を含んでもよい。新たなデータブロック730のブロック番号は、一意であり、0から開始する増分的/シーケンシャル順序等の様々な順序で割り当てられてよい。
【0106】
様々な実施形態によれば、ブロックデータ750は、トランザクションが状態参照を含むことを示す識別子でフラグ付けされたトランザクション、及びZKPを含む状態参照の有効性情報、ハッシュ値等を含み得る状態参照データ752を記憶してよい。状態参照データ752は、分散台帳720上のブロック(ブロックチェーン722)の不変ログに記憶することができる。ブロックチェーン上に状態参照データ752を記憶する利益のうちの幾つかが、本明細書において開示及び図示される様々な実施形態に反映されている。
図7Bにおいて、状態参照データ752はブロックデータ750において示されているが、他の実施形態では、状態参照データ752は、ブロックヘッダ740又はブロックメタデータ760に記憶されてよい。
【0107】
ブロックメタデータ760は、メタデータの複数のフィールドを(例えば、バイトアレイ等として)記憶してよい。メタデータフィールドは、ブロック作成に対する署名、最後の構成ブロックへの参照、ブロック内の有効及び無効トランザクションを識別するトランザクションフィルタ、ブロックを順序付けた順序付けサービスの最後の持続したオフセット等を含んでよい。署名、最後の構成ブロック、及びオーダラメタデータは、順序付けサービス710によって追加されてよい。一方、ブロックのコミッタ(ブロックチェーンノード712等)は、エンドースメントポリシー、読み出し/書き込みセットの検証等に基づいて、有効性/無効性情報を追加してよい。トランザクションフィルタは、ブロックデータ750内に含まれるトランザクションの数に等しいサイズのバイトアレイ、及びトランザクションが有効/無効であったかを識別するバリデーションコードを含んでよい。
【0108】
図7Cは、本明細書において説明される実施形態に係る、デジタルコンテンツのためのブロックチェーン770の一実施形態を示している。デジタルコンテンツは、1つ又は複数のファイル及び関連付けられた情報を含んでよい。ファイルは、メディア、画像、ビデオ、オーディオ、テキスト、リンク、グラフィックス、アニメーション、ウェブページ、ドキュメント、又は他のデジタルコンテンツの形式を含んでよい。ブロックチェーンの不変のアペンド専用の態様は、デジタルコンテンツの完全性、有効性、及び真正性を保護するためのセーフガードとして機能し、許容ルールが適用される法的手続き、又は証拠が考慮に入れられるか、又はデジタル情報の提示及び使用が他の点で関心のある他の設定で適切に使用される。このケースでは、デジタルコンテンツは、デジタルエビデンスと称され得る。
【0109】
ブロックチェーンは、様々な方法において形成されてよい。1つの実施形態では、デジタルコンテンツは、ブロックチェーンそれ自体内に含まれ、ブロックチェーンそれ自体からアクセスされてよい。例えば、ブロックチェーンの各ブロックは、関連付けられたデジタルコンテンツに沿って、参照情報(例えば、ヘッダ、値等)のハッシュ値を記憶してよい。その後、ハッシュ値及び関連付けられたデジタルコンテンツは、ともに暗号化されてよい。それゆえ、各ブロックのデジタルコンテンツは、ブロックチェーン内の各ブロックを解読することによってアクセスされてよく、各ブロックのハッシュ値は、先行ブロックを参照するための基礎として使用されてよい。これは、以下のように示され得る:
ブロック1 ブロック2 .......ブロックN
ハッシュ値1 ハッシュ値2 ハッシュ値N
デジタルコンテンツ1 デジタルコンテンツ2 デジタルコンテンツN
【0110】
1つの実施形態では、デジタルコンテンツはブロックチェーン内に含まれなくてよい。例えば、ブロックチェーンは、デジタルコンテンツのいずれも伴うことなく、各ブロックのコンテンツの暗号化されたハッシュを記憶してよい。デジタルコンテンツは、元のファイルのハッシュ値に関連付けて別のストレージエリア又はメモリアドレスに記憶されてよい。他のストレージエリアは、ブロックチェーンを記憶するのに使用される同じストレージデバイスであってもよいし、又は、異なるストレージエリア又は更には別個の関係データベースであってもよい。各ブロックのデジタルコンテンツは、関心ブロックのハッシュ値を取得又はクエリし、その後、実際のデジタルコンテンツに対応付けて記憶されているストレージエリア内の値を有するものをルックアップすることによって、参照又はアクセスされてよい。この動作は、例えば、データベースゲートキーパによって実行されてよい。これは、以下のように示され得る:
ブロックチェーン ストレージエリア
ブロック1ハッシュ値 ブロック1ハッシュ値...コンテンツ
. .
. .
. .
ブロックNハッシュ値 ブロックNハッシュ値...コンテンツ
【0111】
図7Cの例示の実施形態では、ブロックチェーン770は、順序付きシーケンスにおいて暗号的にリンクされた複数のブロック778
1、778
2、...778
Nを含み、ここでN≧1である。ブロック778
1、778
2、...778
Nをリンクするのに使用される暗号化は、複数の鍵付き又は鍵なしハッシュ関数のいずれかであってよい。1つの実施形態では、ブロック778
1、778
2、...778
Nは、ブロックにおける情報に基づく入力からnビット英数字出力(ここで、nは、256又は別の数)を生成するハッシュ関数の対象となる。そのようなハッシュ関数の例としては、SHAタイプ(SHAは、セキュアハッシュアルゴリズムを表す)アルゴリズム、マークル-ダンガードアルゴリズム、HAIFAアルゴリズム、マークル-ツリーアルゴリズム、ノンスベースアルゴリズム、及び非衝突困難PRFアルゴリズムが挙げられるが、これらに限定されるものではない。別の実施形態では、ブロック778
1、778
2、...、778
Nは、ハッシュ関数とは異なる関数によって暗号的にリンクされてよい。図示の目的で、以下の説明は、ハッシュ関数、例えば、SHA-2を参照して行われる。
【0112】
ブロックチェーン内のブロック7781、7782、...778Nの各々は、ヘッダ、ファイルのバージョン、及び値を含む。ヘッダ及び値は、ブロックチェーン内のハッシュ化の結果として、各ブロックについて異なる。1つの実施形態では、値は、ヘッダ内に含まれてよい。以下でより詳細に説明されるように、ファイルのバージョンは、元のファイルであってもよいし、又は元のファイルの異なるバージョンであってもよい。
【0113】
ブロックチェーン内の第1のブロック7781は、ジェネシスブロックと称され、ヘッダ7721、元のファイル7741、及び初期値7761を含む。ジェネシスブロック及び実際の全ての後続ブロックのために使用されるハッシュ化スキームは、異なってよい。例えば、第1のブロック7781内の全ての情報がともに一度にハッシュ化されてもよいし、又は、第1のブロック7781内の情報の各々又は一部が別個にハッシュ化されてもよく、その後、別個にハッシュ化された一部のハッシュが実行されてよい。
【0114】
ヘッダ7721は、1つ又は複数の初期パラメータを含んでよく、これは、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、コンセンサスプロトコル、継続時間、メディアフォーマット、ソース、記述キーワード、及び/又は元のファイル7741及び/又はブロックチェーンに関連付けられた他の情報を含んでよい。ヘッダ7721は、(例えば、ソフトウェアを管理するブロックチェーンネットワークによって)自動で、又はブロックチェーン参加者によって手動で生成されてよい。ブロックチェーン内の他のブロック7782~778N内のヘッダとは異なり、ジェネシスブロック内のヘッダ7721は、単に先行ブロックが存在しないので、先行ブロックを参照しない。
【0115】
ジェネシスブロック内の元のファイル7741は、例えば、ブロックチェーンに含める前に処理を伴う又は伴わない、デバイスによって捕捉されたようなデータであってよい。元のファイル7741は、デバイス、メディアソース、又はノードから、システムのインターフェースを通して受信される。元のファイル7741は、メタデータに関連付けられており、これは、例えば、手動又は自動のいずれかで、ユーザ、デバイス、及び/又はシステムプロセッサによって生成されてよい。メタデータは、元のファイル7741に関連付けて第1のブロック7781内に含められてよい。
【0116】
ジェネシスブロック内の値7761は、元のファイル7741の1つ又は複数の一意の属性に基づいて生成される初期値である。1つの実施形態では、1つ又は複数の一意の属性は、元のファイル7741のためのハッシュ値、元のファイル7741のためのメタデータ、及びファイルに関連付けられた他の情報を含んでよい。1つの実装では、初期値7761は、以下の一意の属性に基づいてよい:
1)元のファイルのためのSHA-2計算ハッシュ値
2)送信元デバイスID
3)元のファイルのための開始タイムスタンプ
4)元のファイルの初期記憶ロケーション
5)元のファイル及び関連付けられたメタデータを現在制御するソフトウェアのためのブロックチェーンネットワークメンバID
【0117】
ブロックチェーン内の他のブロック7782~778Nもまた、ヘッダ、ファイル、及び値を有する。しかしながら、第1のブロック7721とは異なり、他のブロック内のヘッダ7722~772Nの各々は、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、単に先行ブロックのヘッダのハッシュであってもよいし、又は、先行ブロック全体のハッシュ値であってもよい。先行ブロックのハッシュ値を残りのブロックの各々に含めることによって、監査可能で不変な証拠保全を確立するために、矢印780によって示されているように第Nのブロックからジェネシスブロック(及び関連付けられた元のファイル)まで戻るトレースをブロック単位で実行することができる。
【0118】
また、他のブロック内のヘッダ7722~772Nの各々は、他の情報、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、コンセンサスプロトコル、及び/又は対応するファイル及び/又はブロックチェーン全般に関連付けられた他のパラメータ又は情報を含んでよい。
【0119】
他のブロック内のファイル7742~774Nは、例えば、実行される処理のタイプに依存して、元のファイルに等しくてもよいし、又はジェネシスブロック内の元のファイルの修正されたバージョンであってもよい。実行される処理のタイプは、ブロックごとに異なってよい。処理は、例えば、情報の編集又はさもなければファイルのコンテンツの変更、ファイルからの情報の除去、又はファイルへの情報の追加又はアペンド等の、先行ブロック内のファイルの任意の修正を伴い得る。
【0120】
加えて、又は代替的に、処理は、先行ブロックからのファイルの単なるコピー、ファイルの記憶ロケーションの変更、1つ又は複数の先行ブロックからのファイルの分析、1つのストレージ又はメモリロケーションから別のものへのファイルの移動、又はブロックチェーン及び/又はその関連付けられたメタデータのファイルに対するアクションの実行を伴ってよい。ファイルの分析を伴う処理は、例えば、様々なアナリティクス、統計、又はファイルに関連付けられた他の情報のアペンド、包含、又はさもなければ関連付けを含んでよい。
【0121】
他のブロックにおける他のブロック7762~776Nの各々における値は、一意の値であり、実行される処理の結果として全て異なる。例えば、いずれか1つのブロックにおける値は、先行ブロックにおける値の更新されたバージョンに対応する。更新は、値が割り当てられるブロックのハッシュに反映される。したがって、ブロックの値は、ブロックにおいてどの処理が実行されたかのインジケーションを提供し、また、ブロックチェーンを通して元のファイルまで戻るトレーシングを可能にする。この追跡は、ブロックチェーン全体を通してファイルの証拠保全を確認する。
【0122】
例えば、ファイル内に示されている人物のアイデンティティを保護するために、先行ブロック内のファイルの一部が編集、ブロックアウト、又はピクセル化されているケースを検討する。このケースでは、編集されたファイルを含むブロックは、例えば、いかに編集が実行されたか、誰が編集を実行したか、編集が行われたタイムスタンプ等の、編集されたファイルに関連付けられたメタデータを含む。メタデータは、値を形成するようにハッシュ化されてよい。ブロックのためのメタデータは、先行ブロックにおける値を形成するようにハッシュ化された情報とは異なるので、これらの値は、互いに異なり、解読されるときに回復されてよい。
【0123】
1つの実施形態では、以下のうちのいずれか1つ又は複数が行われたときに、先行ブロックの値が更新されて(例えば、新たなハッシュ値が計算されて)、現在のブロックの値が形成されてよい。新たなハッシュ値は、この例示の実施形態では、以下に示されている情報の全て又は一部をハッシュ化することによって計算されてよい。
a)ファイルが任意の方法において処理されている場合(例えば、ファイルが編集、コピー、変更、アクセスされたか、又は他の何らかのアクションが行われた場合)、新たなSHA-2計算ハッシュ値
b)ファイルのための新たな記憶ロケーション
c)ファイルに関連付けられて識別された新たなメタデータ
d)1つのブロックチェーン参加者から別のブロックチェーン参加者へのファイルのアクセス又は制御の移転。
【0124】
図7Dは、1つの実施形態に係る、ブロックチェーン790におけるブロックの構造を表し得るブロックの一実施形態を示している。ブロック、すなわちBlock
iは、ヘッダ772
i、ファイル774
i、及び値776
iを含む。
【0125】
ヘッダ772iは、先行ブロックBlocki-1のハッシュ値、及び、例えば、本明細書において論述される情報(例えば、参照、特性、パラメータ等を含むヘッダ情報)のタイプのうちの任意のものであり得る、更なる参照情報を含む。全てのブロックは、当然ながら、ジェネシスブロックを除いて、先行ブロックのハッシュを参照する。先行ブロックのハッシュ値は、単に、先行ブロック内のヘッダのハッシュ、又はファイル及びメタデータを含む先行ブロック内の情報の全て又は一部のハッシュであってよい。
【0126】
ファイル774iは、データ1、データ2、...、データN等の複数のデータをシーケンスにおいて含む。データは、データに関連付けられたコンテンツ及び/又は特性を記述するメタデータ1、メタデータ2、...、メタデータNをタグ付けされる。例えば、各データのためのメタデータは、データのためのタイムスタンプを示し、データ、データ内に示されている人物又は他のコンテンツを示すキーワード、及び/又はファイルの全体としての有効性及びコンテンツを確立するのに有用であり得る他の特徴、及び特にその使用、例えば、以下で論述される実施形態に関連して説明されるようなデジタルエビデンスを処理するための情報を含んでよい。メタデータに加えて、各データは、改ざん、ファイル内のギャップ、及びファイルを通したシーケンシャル参照を防止するために、先行データへの参照REF1、REF2、...、REFNをタグ付けされてよい。
【0127】
メタデータが(例えば、スマートコントラクトを通して)データに割り当てられると、メタデータは、無効化のために容易に識別することができるハッシュの変化を伴わずに変更することができない。それゆえ、メタデータは、ブロックチェーン内の参加者による使用のためにアクセスされ得る情報のデータログを作成する。
【0128】
値776iは、ハッシュ値、又は前述で論述された情報のタイプのうちの任意のものに基づいて計算される他の値である。例えば、任意の所与のブロックBlockiについて、そのブロックのための値は、そのブロックについて実行された処理、例えば、新たなハッシュ値、新たな記憶ロケーション、関連付けられたファイルのための新たなメタデータ、制御又はアクセスの移転、識別子、又は追加される他のアクション又は情報を反映するように更新されてよい。各ブロック内の値は、ファイルのデータのためのメタデータ及びヘッダとは別個であるように示されているが、別の実施形態では、値は、部分的に又は全体的にこのメタデータに基づいてよい。
【0129】
ブロックチェーン770が形成されると、任意の時点において、ブロックにわたる値のトランザクション履についてブロックチェーンにクエリすることによって、ファイルのための不変な証拠保全が取得されてよい。このクエリ、又は追跡手順は、直近に含められたブロック(例えば、最後(第Nの)のブロック)の値を解読し、その後、ジェネシスブロックに達するとともに元のファイルが回復されるまで他のブロックの値の解読を続けることから開始してよい。解読は、各ブロックにおけるヘッダ及びファイル及び関連付けられたメタデータを解読することも伴ってよい。
【0130】
解読は、各ブロックにおいて行われた暗号化のタイプに基づいて実行される。これは、プライベート鍵、公開鍵、又は公開鍵-プライベート鍵ペアの使用を伴ってよい。例えば、非対称暗号化が使用される場合、ネットワーク内のブロックチェーン参加者又はプロセッサは、所定のアルゴリズムを使用して公開鍵及びプライベート鍵ペアを生成してよい。公開鍵及びプライベート鍵は、何らかの数学的関係を通して互いに関連付けられている。公開鍵は、他のユーザ、例えばIPアドレス又はホームアドレスからメッセージを受信するためのアドレスとして機能するように、パブリックに分散されてよい。プライベート鍵は、秘密に保たれ、他のブロックチェーン参加者に送信されたデジタル署名メッセージに対して使用される。署名は、受信者が送信者の公開鍵を使用して検証することができるように、メッセージ内に含まれる。このようにして、受信者は、送信者のみがこのメッセージを送信することができたことを確実にすることができる。
【0131】
キーペアの生成は、ブロックチェーン上でのアカウントの作成と類似であってよいが、実際にどこにも登録する必要はない。また、ブロックチェーン上で実行される全てのトランザクションは、自身のプライベート鍵を使用して送信者によってデジタルで署名される。この署名は、アカウントの所有者のみが、(スマートコントラクトによって決定される許可の範囲内であれば)ブロックチェーンのファイルを追跡及び処理することができることを保証する。
【0132】
図8A及び
図8Bは、本明細書において組み込まれて使用され得るブロックチェーンのためのユースケースの追加の例を示している。特に、
図8Aは、機械学習(人工知能)データを記憶するブロックチェーン810の一例800を示している。機械学習は、新たなデータに対する正確な予測のための予測モデルを構築するために、膨大な量の履歴データ(又はトレーニングデータ)に依拠する。機械学習ソフトウェア(例えば、ニューラルネットワーク等)は、多くの場合、何百万ものレコードを選り分けて、直観的ではないパターンを発見することができる。
【0133】
図8Aの例では、ホストプラットフォーム820は、アセット830の予測モニタリングのための機械学習モデルを構築及び展開する。ここで、ホストプラットフォーム820は、クラウドプラットフォーム、産業サーバ、ウェブサーバ、パーソナルコンピュータ、ユーザデバイス等であってよい。アセット830は、航空機、機関車、タービン、医療機械及び機器、石油機器及びガス機器、ボート、船舶、車両等のような任意のタイプのアセット(例えば、機械又は機器等)とすることができる。別の例として、アセット830は、株式、通貨、デジタルコイン、保険等のような無形アセットであってよい。
【0134】
ブロックチェーン810を使用して、機械学習モデルのトレーニングプロセス802、及びトレーニングされた機械学習モデルに基づく予測プロセス804の両方を大幅に改善することができる。例えば、802において、データサイエンティスト/エンジニア又は他のユーザがデータを収集することを要求するのではなく、アセット830自体によって(又は図示されていない仲介者を通して)履歴データがブロックチェーン810上に記憶されてよい。これは、予測モデルトレーニングを実行するときにホストプラットフォーム820によって必要とされる収集時間を大幅に削減することができる。例えば、スマートコントラクトを使用すると、データを、その元の場所からブロックチェーン810に直接かつ確実に転送することができる。収集されたデータのセキュリティ及び所有権を確実にするためにブロックチェーン810を使用することによって、スマートコントラクトは、機械学習モデルを構築するためにデータを使用する個人にアセットからのデータを直接送信してよい。これにより、アセット830間でデータを共有することが可能になる。
【0135】
収集されたデータは、コンセンサスメカニズムに基づいてブロックチェーン810に記憶されてよい。コンセンサスメカニズムは、記録されているデータが検証され、正確であることを確実にするために(許可されたノード)を取り込む。記録されたデータは、タイムスタンプ付与され、暗号で署名され、不変である。したがって、それは、監査可能で、透過的で、かつセキュアである。ブロックチェーンに直接書き込むIoTデバイスを追加することは、特定のケース(すなわち、サプライチェーン、ヘルスケア、ロジスティクス等)では、記録されているデータの周波数及び正確性の両方を高める。
【0136】
さらに、収集されたデータに対する機械学習モデルのトレーニングは、ホストプラットフォーム820による改良及びテストのラウンドを取ってよい。各ラウンドは、追加のデータ、又は機械学習モデルの知識を拡大するのに役立つと以前には考慮されていなかったデータに基づき得る。802において、ホストプラットフォーム820によって、異なるトレーニング及びテスト段階(及びそれに関連付けられたデータ)は、ブロックチェーン810上に記憶されてよい。機械学習モデルの各改良(例えば、変数、重み等の変更)は、ブロックチェーン810上に記憶されてよい。これは、いかにモデルがトレーニングされたか及びいずれのデータがモデルをトレーニングするのに使用されたかの検証可能な証拠を提供する。さらに、ホストプラットフォーム820が最終的にトレーニングされたモデルを達成したとき、結果として得られるモデルはブロックチェーン810上に記憶されてよい。
【0137】
モデルがトレーニングされた後、それは最終的にトレーニングされた機械学習モデルの実行に基づいて予測/決定を行うことができるライブ環境に展開されてよい。例えば、804において、機械学習モデルは、航空機、風力タービン、医療機械等のようなアセットの状態基準保全(CBM)のために使用されてよい。この例では、アセット830からフィードバックされたデータは、機械学習モデルに入力され、失敗イベント、エラーコード等のようなイベント予測を行うために使用されてよい。ホストプラットフォーム820における機械学習モデルの実行によってなされた決定は、ブロックチェーン810上に記憶されて、監査可能/検証可能な証拠が提供されてよい。1つの非限定的な例として、機械学習モデルは、アセット830の一部に対する将来の故障/失敗を予測し、当該一部を交換するためのアラート又は通知を作成してよい。この判断の基となるデータは、ブロックチェーン810上のホストプラットフォーム820によって記憶されてよい。1つの実施形態では、本明細書において説明及び/又は図示される特徴及び/又はアクションは、ブロックチェーン810上で又はブロックチェーン810に関して行うことができる。
【0138】
ブロックチェーンのための新たなトランザクションを新たなブロック内にまとめて、既存のハッシュ値に追加することができる。これは、その後暗号化されて、新たなブロックのための新たなハッシュが作成される。これは、トランザクションが暗号化されたとき等に、トランザクションの次のリストに追加される。結果は、全ての先行ブロックのハッシュ値を各々含むブロックのチェーンである。これらのブロックを記憶するコンピュータは、それらのハッシュ値を定期的に比較して、それらが全て一致していることを確実にする。一致しない任意のコンピュータは、問題を引き起こしているレコードを破棄する。この手法は、ブロックチェーンの改ざん防止を確実にするために十分であるが、完全ではない。
【0139】
このシステムの抜け穴を悪用する1つの方法は、不正なユーザが、自身が有利になるようにトランザクションのリストを変更して、ハッシュを変更しないままにする方法である。これは、ブルートフォースによって、換言すれば、レコードを変更し、結果を暗号化し、ハッシュ値が同じであるか否かを確認することによって行うことができる。同じではない場合、一致するハッシュを発見するまで繰り返し試行する。ブロックチェーンのセキュリティは、通常のコンピュータが、宇宙の年齢等の完全に非現実的な時間スケールにわたってでしかこの種類のブルートフォース攻撃を実行することができないという考えに基づいている。対照的に、量子コンピュータは、はるかに高速(数千倍の速さ)であり、したがって、はるかに大きな脅威を課す。
【0140】
図8Bは、量子コンピューティング攻撃から保護するために量子鍵配布(QKD)を実装する量子セキュアブロックチェーン852の一例850を示している。この例では、ブロックチェーンユーザは、QKDを使用して互いのアイデンティティを検証することができる。これは、盗聴者が破壊せずにコピーすることはできない、光子等の量子粒子を使用して情報を送信する。このようにして、ブロックチェーンを通した送信者及び受信者は、互いのアイデンティティを確認することができる。
【0141】
図8Bの例では、854、856、858、及び860の4人のユーザが存在する。ユーザのペアの各々は、自身達の間で秘密鍵862(すなわち、QKD)を共有してよい。この例では4つのノードがあるので、ノードの6つのペアが存在し、したがって、QKD
AB、QKD
AC、QKD
AD、QKD
BC、QKD
BD、及びQKD
CDを含む6つの異なる秘密鍵862が使用される。各ペアは、盗聴者が破壊せずにコピーすることはできない、光子等の量子粒子を使用して情報を送信することによってQKDを作成することができる。このようにして、ユーザのペアは互いのアイデンティティを確認することができる。
【0142】
ブロックチェーン852の動作は、(i)トランザクションの作成、及び(ii)新たなトランザクションを集約するブロックの構築の2つの手順に基づく。新たなトランザクションは、従来のブロックチェーンネットワークと同様に作成されてよい。各トランザクションは、送信者、受信者、作成時点、移転される金額(又は値)、送信者が動作のための資金を持っていることを正当化する参照トランザクションのリスト等に関する情報を含んでよい。このトランザクションレコードは、その後、他の全てのノードに送信され、ここで、それは、未確認トランザクションのプールに入れられる。ここで、2つの当事者(すなわち、854~860の中からのユーザのペア)が、それらの共有秘密鍵862(QKD)を提供することによってトランザクションを認証する。この量子署名は、全てのトランザクションにアタッチすることができ、改ざんは極めて困難になる。各ノードは、ブロックチェーン852のローカルコピーに関して自身のエントリをチェックして、各トランザクションが十分な資金を有していることを検証する。しかしながら、トランザクションはまだ確認されていない。
【0143】
ブロックに対して従来のマイニングプロセスを実行するのではなく、ブロードキャストプロトコルを使用して非中央集権方式でブロックが作成されてよい。所定の期間(例えば、秒、分、時間等)において、ネットワークは、ブロードキャストプロトコルを任意の未確認トランザクションに適用し、それによって、トランザクションの正しいバージョンに関するビザンチン合意(コンセンサス)が達成され得る。例えば、各ノードは、プライベート値(その特定のノードのトランザクションデータ)を所有してよい。第1のラウンドにおいて、ノードは、自身のプライベート値を互いに送信する。後続のラウンドにおいて、ノードは、先行ラウンドにおいて他のノードから受信した情報を通信する。ここでは、正直なノードが新たなブロック内にトランザクションの完全なセットを作成することが可能である。この新たなブロックは、ブロックチェーン852に追加することができる。1つの実施形態では、本明細書において説明及び/又は図示される特徴及び/又はアクションは、ブロックチェーン852上で又はブロックチェーン852に関して行うことができる。
【0144】
図9は、本明細書において説明及び/又は図示される例示の実施形態のうちの1つ又は複数をサポートする例示のシステム900を示している。システム900は、多数の他の汎用又は専用コンピューティングシステム環境又は構成とともに動作可能であるコンピュータシステム/サーバ902を備える。コンピュータシステム/サーバ902との使用に適し得る周知のコンピューティングシステム、環境及び/又は構成の例としては、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、及び上記のシステム又はデバイス等のうちの任意のものを含む分散クラウドコンピューティング環境が挙げられるが、これらに限定されるものではない。
【0145】
コンピュータシステム/サーバ902は、プログラムモジュール等の、コンピュータシステムによって実行されるコンピュータシステム実行可能命令の一般的な文脈で説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するか、又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造等を含んでよい。コンピュータシステム/サーバ902は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される分散クラウドコンピューティング環境において実践されてよい。分散クラウドコンピューティング環境では、メモリ記憶デバイスを含むローカル及びリモートの両方のコンピュータシステム記憶媒体にプログラムモジュールが配置されてよい。
【0146】
図9において示されているように、クラウドコンピューティングノード900におけるコンピュータシステム/サーバ902は、汎用コンピューティングデバイスの形式で示されている。コンピュータシステム/サーバ902のコンポーネントは、1つ又は複数のプロセッサ又は処理ユニット904、システムメモリ906、及びシステムメモリ906を含む様々なシステムコンポーネントをプロセッサ904に結合するバスを含んでよいが、これらに限定されるものではない。
【0147】
バスは、メモリバス又はメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックスポート、及び多様なバスアーキテクチャのうちの任意のものを使用するプロセッサ又はローカルバスを含む、幾つかのタイプのバス構造のうちの任意のもののうちの1つ又は複数を表す。限定ではなく例示として、そのようなアーキテクチャは、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、及びペリフェラルコンポーネントインターコネクト(PCI)バスを含む。
【0148】
コンピュータシステム/サーバ902は、典型的には、多様なコンピュータシステム可読媒体を含む。そのような媒体は、コンピュータシステム/サーバ902によってアクセス可能である任意の利用可能な媒体であってよく、それは、揮発性媒体及び不揮発性媒体の両方、取り外し可能及び取り外し不能媒体を含む。システムメモリ906は、1つの実施形態では、他の図のフロー図を実装する。システムメモリ906は、ランダムアクセスメモリ(RAM)910及び/又はキャッシュメモリ912等の揮発性メモリの形式のコンピュータシステム可読媒体を含むことができる。コンピュータシステム/サーバ902は、他の取り外し可能/取り外し不能、揮発性/不揮発性コンピュータシステム記憶媒体を更に含んでよい。単なる例示として、記憶システム914が、取り外し不能不揮発性磁気媒体(示されておらず、典型的には「ハードドライブ」と呼ばれる)に対して読み出し及び書き込みを行うために提供され得る。示されていないが、取り外し可能不揮発性磁気ディスク(例えば、「フロッピーディスク」)に対して読み出し及び書き込みを行うための磁気ディスクドライブ、及びCD-ROM、DVD-ROM又は他の光学媒体等の取り外し可能不揮発性光学ディスクに対して読み出し又は書き込みを行うための光学ディスクドライブが提供され得る。そのような事例では、各々を1つ又は複数のデータ媒体インターフェースによってバスに接続することができる。以下で更に図示及び説明されるように、メモリ906は、アプリケーションの様々な実施形態の機能を実行するように構成されているプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでよい。
【0149】
プログラムモジュール918のセット(少なくとも1つ)を有するプログラム/ユーティリティ916は、限定ではなく例示として、メモリ906に記憶されてよく、また、オペレーティングシステム、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータも同様である。オペレーティングシステム、1つ又は複数のアプリケーションプログラム、他のプログラムモジュール、及びプログラムデータの各々又はこれらの何らかの組み合わせは、ネットワーキング環境の実装を含んでよい。プログラムモジュール918は、概して、本明細書において説明されるようにアプリケーションの様々な実施形態の機能及び/又は方法論を実行する。
【0150】
当業者によって理解されるように、本出願の態様は、システム、方法、又はコンピュータプログラム製品として具現化されてよい。したがって、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)の実施形態、又は本明細書において全て「回路」、「モジュール」、又は「システム」と総称され得るソフトウェア及びハードウェアの態様を組み合わせた実施形態の形式を取ってよい。さらに、本出願の態様は、コンピュータ可読プログラムコードが具現化された1つ又は複数のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形式を取ってよい。
【0151】
コンピュータシステム/サーバ902はまた、キーボード、ポインティングデバイス、ディスプレイ922等のような1つ又は複数の外部デバイス920;ユーザがコンピュータシステム/サーバ902とインタラクトすることを可能にする1つ又は複数のデバイス;及び/又はコンピュータシステム/サーバ902が1つ又は複数の他のコンピューティングデバイスと通信することを可能にする任意のデバイス(例えば、ネットワークカード、モデム等)と通信してよい。そのような通信は、I/Oインターフェース924を介して行うことができる。さらになお、コンピュータシステム/サーバ902は、ローカルエリアネットワーク(LAN)、一般的なワイドエリアネットワーク(WAN)、及び/又はパブリックネットワーク(例えば、インターネット)等の1つ又は複数のネットワークと、ネットワークアダプタ926を介して通信することができる。示されているように、ネットワークアダプタ926は、バスを介してコンピュータシステム/サーバ902の他のコンポーネントと通信する。示されていないが、他のハードウェア及び/又はソフトウェアコンポーネントは、コンピュータシステム/サーバ902と併せて使用することができることが理解されるべきである。例としては、マイクロコード、デバイスドライバ、冗長処理ユニット、外部ディスクドライブアレイ、RAIDシステム、テープドライブ、及びデータアーカイブ記憶システム等が挙げられるが、これらに限定されるものではない。
【0152】
システム、方法、及び非一時的コンピュータ可読媒体のうちの少なくとも1つの例示的な実施形態が、添付の図面に示され、前述の詳細な説明に説明されているが、本出願は、開示される実施形態に限定されず、以下の特許請求の範囲に記載及び定義される多数の再構成、修正、及び置換が可能であることが理解されるであろう。例えば、様々な図のシステムの機能は、本明細書において説明されるモジュール又はコンポーネントのうちの1つ又は複数によって、又は分散アーキテクチャにおいて実行することができ、送信機、受信機、又は両方のペアを含んでよい。例えば、個別のモジュールによって実行される機能の全て又は一部は、これらのモジュールのうちの1つ又は複数によって実行されてよい。さらに、本明細書において説明される機能は、モジュール又はコンポーネントの内部又は外部の様々なイベントに関連して、様々な時点において実行されてよい。また、様々なモジュール間で送信される情報は、データネットワーク、インターネット、音声ネットワーク、インターネットプロトコルネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、及び/又は複数のプロトコルを介してモジュール間で送信することができる。また、モジュールのうちの任意のものによって送信又は受信されるメッセージは、直接及び/又は他のモジュールのうちの1つ又は複数を介して送信又は受信されてよい。
【0153】
当業者であれば、「システム」がパーソナルコンピュータ、サーバ、コンソール、携帯情報端末(PDA(登録商標))、携帯電話、タブレットコンピューティングデバイス、スマートフォン又は他の任意の適したコンピューティングデバイス、又はデバイスの組み合わせとして具現化することができることを理解するであろう。上記で説明された機能を「システム」によって実行されるものとして提示することは、本出願の範囲を決して限定することを意図するものではなく、多くの実施形態の1つの例を提供することを意図するものである。実際、本明細書において開示される方法、システム及び装置は、コンピューティング技術と一貫する局所的及び分散的な形式で実装されてよい。
【0154】
本明細書において説明されるシステム特徴の一部は、それらの実装の独立性をより具体的に強調するために、モジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタム超大規模集積(VLSI)回路又はゲートアレイ、論理チップ、トランジスタ、又は他の別個のコンポーネント等の既製の半導体を含むハードウェア回路として実装されてよい。モジュールはまた、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、プログラマブルロジックデバイス、グラフィックス処理ユニット等のようなプログラマブルハードウェアデバイスにおいて実装されてよい。
【0155】
モジュールはまた、様々なタイプのプロセッサによる実行のために、ソフトウェアにおいて少なくとも部分的に実装されてよい。例えば、実行可能コードの識別されたユニットは、例えば、オブジェクト、手順、又は機能として編成され得るコンピュータ命令の1つ又は複数の物理又は論理ブロックを含んでよい。それにもかかわらず、識別されたモジュールの実行可能ファイルは、物理的にともに配置する必要はないが、異なるロケーションに記憶された異種の命令を有してよく、これらは、論理的にともに結合されたときに、モジュールを有し、モジュールの規定の目的を達成する。さらに、モジュールは、例えば、ハードディスクドライブ、フラッシュデバイス、ランダムアクセスメモリ(RAM)、テープ、又はデータを記憶するために使用される他の任意のそのような媒体であり得るコンピュータ可読媒体上に記憶されてよい。
【0156】
実際、実行可能コードのモジュールは、単一の命令、又は多くの命令とすることができ、幾つかの異なるコードセグメントにわたって、異なるプログラム間で、及び幾つかのメモリデバイスにわたっても分散されることさえあり得る。同様に、動作データは、本明細書においてモジュール内で識別及び示されてよく、任意の適した形式において具現化され、任意の適したタイプのデータ構造内に編成されてよい。動作データは、単一のデータセットとして収集されてもよく、又は異なるストレージデバイスを含む異なるロケーションに分散されてもよく、少なくとも部分的に、システム又はネットワーク上の電子信号としてのみ存在してもよい。
【0157】
本明細書において概して説明され、図示されるような本出願のコンポーネントは、多種多様な異なる構成において配置及び設計され得ることが容易に理解されるであろう。それゆえ、実施形態の詳細な説明は、特許請求される本出願の範囲を限定することを意図するものではなく、本出願の選択された実施形態を単に代表するものである。
【0158】
当業者であれば、上記が、異なる順序の段階で、及び/又は開示されたものとは異なる構成のハードウェア要素で実践され得ることを容易に理解するであろう。したがって、本出願はこれらの好ましい実施形態に基づいて説明されてきたが、特定の修正、変形、及び代替構成が明らかであることは当業者には明らかであろう。
【0159】
本出願の好ましい実施形態が説明されてきたが、説明された実施形態は例示にすぎず、本出願の範囲は、実施形態に対する均等物及び修正物(例えば、プロトコル、ハードウェアデバイス、ソフトウェアプラットフォーム等)の全範囲を考慮した場合、添付の特許請求の範囲によってのみ定義されるべきであることが理解されるべきである。
【手続補正書】
【提出日】2024-04-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ブロックチェーン台帳を記憶するように構成されたメモリ;及び
プロセッサであって、
未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信すること;
前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定すること;
前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定すること;及び
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションを前記ブロックチェーン台帳にコミットすること
を行うように構成された、プロセッサ
を備える、装置。
【請求項2】
トランザクションの前記第1のサブセットは、ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの前に前記ブロックチェーン台帳上に記憶されたブロックの第1のサブセット内に含まれる、請求項1に記載の装置。
【請求項3】
トランザクションの前記第2のサブセットは、ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの後に前記ブロックチェーン台帳上に記憶されたブロックの第2のサブセット内に含まれる、請求項
1又は2に記載の装置。
【請求項4】
トランザクションの前記第1のサブセットは、前記ブロックチェーン台帳上のトランザクションの前記第2のサブセットから相互に排他的である、請求項
1又は2に記載の装置。
【請求項5】
前記ハッシュ値は、事前定義されたハッシュ関数を用いて前記状態参照に割り当てられたシリアルナンバーのハッシュを介して作成される、請求項
1又は2に記載の装置。
【請求項6】
前記プロセッサは、前記ブロックチェーン台帳上に記憶されている使用済みトランザクションプールからトランザクションの前記第2のサブセットによって消費される入力UTXOに割り当てられた複数のシリアルナンバーを索出するように更に構成されている、請求項5に記載の装置。
【請求項7】
前記プロセッサは、前記事前定義されたハッシュ関数に基づいて前記複数のシリアルナンバーをハッシュ化して複数のハッシュ化された比較を生成し、前記ハッシュ値が前記ハッシュ化されたシリアルナンバーのうちのいずれかに等しいか否かを決定するように更に構成されている、請求項6に記載の装置。
【請求項8】
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれかに含まれると決定することに応答して、前記プロセッサは、前記ブロックチェーントランザクションが無効であると決定し、前記ブロックチェーントランザクションを識別する情報を、前記ブロックチェーン台帳上で無効として記憶するように更に構成されている、請求項
1又は2に記載の装置。
【請求項9】
未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する段階;
前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する段階;
前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する段階;及び
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションをブロックチェーンピアを介して前記ブロックチェーン台帳にコミットする段階
を備える、方法。
【請求項10】
トランザクションの前記第1のサブセットは、前記ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの前に前記ブロックチェーン台帳上に記憶されたブロックの第1のサブセット内に含まれる、請求項9に記載の方法。
【請求項11】
トランザクションの前記第2のサブセットは、前記ブロックチェーンピアへの前記ブロックチェーントランザクションのサブミッションの後に前記ブロックチェーン台帳上に記憶されたブロックの第2のサブセット内に含まれる、請求項
9又は10に記載の方法。
【請求項12】
トランザクションの前記第1のサブセットは、前記ブロックチェーン台帳上のトランザクションの前記第2のサブセットから相互に排他的である、請求項
9又は10に記載の方法。
【請求項13】
前記ハッシュ値は、事前定義されたハッシュ関数を用いて前記状態参照に割り当てられたシリアルナンバーをハッシュ化することによって作成される、請求項
9又は10に記載の方法。
【請求項14】
前記方法は、前記ブロックチェーン台帳上に記憶されている使用済みトランザクションプールからトランザクションの前記第2のサブセットによって消費される入力UTXOに割り当てられた複数のシリアルナンバーを索出する段階を更に備える、請求項13に記載の方法。
【請求項15】
前記方法は、前記事前定義されたハッシュ関数に基づいて前記複数のシリアルナンバーをハッシュ化して複数のハッシュ化された比較を生成する段階、及び前記ハッシュ値が前記ハッシュ化されたシリアルナンバーのうちのいずれかに等しいか否かを決定する段階を更に備える、請求項14に記載の方法。
【請求項16】
前記方法は、前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれかに含まれると決定することに応答して、前記ブロックチェーントランザクションが無効であると決定する段階、及び前記ブロックチェーントランザクションを識別する情報を、前記ブロックチェーン台帳上で無効として記憶する段階を更に備える、請求項
9又は10に記載の方法。
【請求項17】
コンピュータに、
未使用トランザクション出力(UTXO)に対する状態参照を含むブロックチェーントランザクションを受信する手順;
前記状態参照内に含まれるゼロ知識(ZK)証明に基づいて、前記UTXOがブロックチェーン台帳上のトランザクションの第1のサブセット内に含まれるか否かを決定する手順;
前記状態参照内に含まれるハッシュ値に基づいて、前記UTXOが前記ブロックチェーン台帳上のトランザクションの第2のサブセット内に含まれるか否かを決定する手順;及び
前記UTXOがトランザクションの前記第1のサブセット及び前記第2のサブセットのいずれにおいても含まれていないと決定することに応答して、前記状態参照を含む前記ブロックチェーントランザクションをブロックチェーンピアを介して前記ブロックチェーン台帳にコミットする手順
を実行させ
るためのコンピュー
タプログラム。
【請求項18】
トランザクションの前記第1のサブセットは、前記ブロックチェーン台帳上のトランザクションの前記第2のサブセットから相互に排他的である、請求項17に記載
のコンピュー
タプログラム。
【請求項19】
前記ハッシュ値は、事前定義されたハッシュ関数を用いて前記状態参照に割り当てられたシリアルナンバーをハッシュ化することによって作成される、請求項1
7又は18に記載
のコンピュー
タプログラム。
【請求項20】
前
記コンピュータに、
前記ブロックチェーン台帳上に記憶されている使用済みトランザクションプールからトランザクションの前記第2のサブセットによって消費される入力UTXOに割り当てられた複数のシリアルナンバーを索出する手順、
事前定義されたハッシュ関数に基づいて前記複数のシリアルナンバーをハッシュ化して複数のハッシュ化された比較を生成する手順、及び
前記ハッシュ値が前記ハッシュ化されたシリアルナンバーのうちのいずれかに等しいか否かを決定する手順を更
に実行させる、請求項1
7又は18に記載
のコンピュー
タプログラム。
【国際調査報告】