IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特表2024-502784ブロックチェーン関連の検証方法およびシステム
<>
  • 特表-ブロックチェーン関連の検証方法およびシステム 図1
  • 特表-ブロックチェーン関連の検証方法およびシステム 図2
  • 特表-ブロックチェーン関連の検証方法およびシステム 図3
  • 特表-ブロックチェーン関連の検証方法およびシステム 図4
  • 特表-ブロックチェーン関連の検証方法およびシステム 図5
  • 特表-ブロックチェーン関連の検証方法およびシステム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-23
(54)【発明の名称】ブロックチェーン関連の検証方法およびシステム
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240116BHJP
【FI】
H04L9/32 200Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023539024
(86)(22)【出願日】2021-12-14
(85)【翻訳文提出日】2023-08-22
(86)【国際出願番号】 EP2021085663
(87)【国際公開番号】W WO2022136022
(87)【国際公開日】2022-06-30
(31)【優先権主張番号】2020599.3
(32)【優先日】2020-12-24
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】クレイグ・スティーヴン・ライト
(72)【発明者】
【氏名】リュウシュアン・パン
(72)【発明者】
【氏名】オーウェン・ヴォーン
(57)【要約】
第三者が、第1の当事者と第2の当事者との間でトランザクションされるブロックチェーントランザクションのセットのメンバーシップについて第1の当事者と第2の当事者が合意するかどうかを決定できるようにする方法、システム、およびプログラム。
【特許請求の範囲】
【請求項1】
第1の当事者と第2の当事者との間でトランザクションされるブロックチェーントランザクションのセットのメンバーシップについて前記第1の当事者と第2の当事者が合意するかどうかを決定するコンピュータ実装方法であって、第三者によって、
前記第1の当事者から、前記セット内の少なくとも前記ブロックチェーントランザクションを含む、前記第1の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第1の報告を受信するステップであって、前記第1の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップと、
前記第2の当事者から、前記セット内の前記ブロックチェーントランザクションの少なくとも一部または全部を含む、前記第2の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第2の報告を受信するステップであって、前記第2の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップと、
少なくとも1つの第1のブロックチェーントランザクションにおいて前記第1の当事者によって記録された第1の証明をブロックチェーン上で観察するステップであって、前記第1の証明が、前記第1の報告において報告された前記指示に第1の変換を適用した前記第1の当事者から導出された第1の証明値を備える、ステップと、
第2のブロックチェーントランザクションにおいて前記第2の当事者によって記録された第2の証明をブロックチェーン上で観察するステップであって、前記第2の証明が、前記第2の報告において報告された前記指示に第2の変換を適用した前記第2の当事者から導出された第2の証明値を備え、前記第1および第2のブロックチェーントランザクションが前記セットとは別個である、ステップと、
前記第1の報告において報告された前記指示に前記第1の変換を適用し、前記ブロックチェーンからの前記第1の証明と比較することによって、前記第1の報告が前記第1の証明と一致していることをチェックするステップと、
前記第2の報告において報告された前記指示に前記第2の変換を適用し、前記ブロックチェーンからの前記第2の証明と比較することによって、前記第2の報告が前記第2の証明と一致していることをチェックするステップと、
前記第1の報告における前記指示が前記第2の報告における前記指示と同じメンバーの前記セットを示しているかどうかを決定するステップと
を備える、コンピュータ実装方法。
【請求項2】
前記第1および第2の証明値の各々がハッシュ値を備え、前記第1および第2の変換の各々が少なくとも1つのハッシュ関数を備える、請求項1に記載の方法。
【請求項3】
前記第1の証明値が第1のハッシュツリーのルートを備え、前記第1の報告において報告される前記指示の各々が前記第1のハッシュツリーのリーフである、および/または、
前記第2の証明値が第2のハッシュツリーのルートを備え、前記第2の報告において報告される前記指示の各々が前記第2のハッシュツリーのリーフである
のうちの一方または両方である、請求項2に記載の方法。
【請求項4】
前記第1および第2の変換が同じ形式の変換である、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記第1および第2の報告における前記指示が、それぞれ前記第1および第2の報告において報告された前記トランザクションのトランザクションIDを備える、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記第1および第2のトランザクションの各々が、前記第三者の公開鍵にアドレス指定される、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記第1および第2のトランザクションの各々が、ロックスクリプトを備える出力を備え、前記ロックスクリプトが、前記第三者の公開鍵に基づくアドレスを含めることによって前記第三者にアドレス指定され、ロックを解除するためには前記第三者の対応する署名を必要とする、請求項6に記載の方法。
【請求項8】
前記第1の当事者と第2の当事者との間の前記トランザクションが、前記第1の当事者から前記第2の当事者へのトランザクションを行う少なくともいくつかのトランザクションを備え、それぞれのトランザクションが、前記第2の当事者のそれぞれの子公開鍵に基づくアドレスを備え、各子鍵が、導出関数によって前記第2の当事者のマスタ公開鍵に関連付けられ、前記導出関数がそれぞれの導出情報によってパラメータ化される、請求項1から7のいずれか一項に記載の方法。
【請求項9】
各子鍵の前記それぞれの導出情報が、前記それぞれのトランザクションのそれぞれの請求書、販売注文、または領収書を備える、請求項8に記載の方法。
【請求項10】
前記導出情報が、前記子公開鍵に共通のチェーンコードを備える、請求項8または9に記載の方法。
【請求項11】
各子鍵の前記導出情報が、それぞれのインデックス値を備える、請求項8、9、または10のいずれか一項に記載の方法。
【請求項12】
前記第2の当事者の前記マスタ公開鍵が、デジタル認証局によって前記第2の当事者の公開アイデンティティにリンクされる、請求項8から11のいずれか一項に記載の方法。
【請求項13】
前記第1の当事者から、前記セット内の前記ブロックチェーントランザクションのうちの少なくとも1つについての前記それぞれの導出情報を受信するステップと、
前記第1および第2の報告が前記セットの異なるメンバーシップを示しているとの決定に応じて、前記第2の当事者の前記子公開鍵を決定し、それによってそれぞれのアドレスが前記第2の当事者の前記マスタ公開鍵にリンクされていることを検証するために、前記導出関数、前記第2の当事者の前記マスタ公開鍵、および前記受信した導出情報を使用するステップと
をさらに備える、請求項8から12のいずれか一項に記載の方法。
【請求項14】
前記それぞれの導出情報を受信する前記ステップがまた、前記第1および第2の報告がセットの異なるメンバーシップを示しているとの決定に応答して実行される、請求項13に記載の方法。
【請求項15】
前記第2の当事者の前記公開鍵が、デジタル認証局によって前記第2の当事者の公開アイデンティティにリンクされており、決定する前記ステップが、前記第2の当事者の前記公開アイデンティティ(ID)を検証するために、前記マスタ公開鍵と、前記認証局によって発行されたデジタル証明書を使用するステップをさらに備える、請求項13または14に記載の方法。
【請求項16】
前記第1の報告が、異なる時点において受信された複数の第1の報告メッセージを備え、各第1の報告メッセージが、前記第1の当事者に関係する前記ブロックチェーントランザクションのうちの異なるそれぞれの1つを報告し、前記第1の証明値が、時間枠内の前記第1の当事者に関係するブロックチェーントランザクションを組み合わせた定期的な証明のインスタンスであり、および/または、
前記第2の報告が、異なる時点において受信された複数の第2の報告メッセージを備え、各第2の報告メッセージが、前記第2の当事者に関係する前記ブロックチェーントランザクションのうちの異なるそれぞれの1つを報告し、前記第2の証明値が、時間枠内の前記第2の当事者に関係するブロックチェーントランザクションに対する定期的な証明のインスタンスである
のうちの一方または両方である、請求項1から15のいずれか一項に記載の方法。
【請求項17】
前記第1の報告および/または第2の報告における前記指示が、前記第1の当事者、第2の当事者、および第三者以外の1人または複数のさらなる当事者とトランザクションする1つまたは複数のさらなるブロックチェーントランザクションの各々の指示をさらに含み、前記セットが、前記第1、および第2の当事者が関係するトランザクションの交差点である、請求項1から16のいずれか一項に記載の方法。
【請求項18】
第1の証明値がハッシュツリーのルートを備え、前記第1の報告において報告される前記指示の各々が前記ハッシュツリーのリーフになり、
前記第1および第2の報告が前記セットの異なるメンバーシップを示しているとの決定に応じて、前記第1の報告において示されているが、前記第2の報告においては示されていない、少なくとも1つのブロックチェーントランザクションの存在を識別するステップと、
前記第2の当事者が虚偽の証明を行ったという証拠を生成するために、前記ハッシュツリールート、および前記ルートと失われたトランザクションを表す前記指示の間のハッシュツリーパスを使用するステップと、
前記ハッシュツリーのルートとパスの使用に基づいて、前記さらなる当事者の前記トランザクションの前記指示を前記第4の当事者に開示することなく、第4の当事者に前記証拠を提示するステップと
を備える、請求項17に記載の方法。
【請求項19】
前記証拠が、前記第2の当事者の前記公開アイデンティティ(ID)への前記リンクの前記検証をさらに含む、少なくとも請求項15に依存する請求項18に記載の方法。
【請求項20】
前記第三者が税務当局である、請求項1から19のいずれか一項に記載の方法。
【請求項21】
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置であって、前記メモリが、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードが、前記処理装置上にある時に請求項1から20のいずれか一項に記載の方法を実行するように構成される、処理装置と
を備える、コンピュータ機器。
【請求項22】
コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、請求項1から20のいずれか一項に記載の方法を実行するように構成された、コンピュータプログラム。
【請求項23】
前記第1の当事者と第2の当事者の間で行われたブロックチェーントランザクションのセットを証明するために、第1の当事者によって実行されるコンピュータ実装方法であって、
ブロックチェーントランザクションの前記セットの各々について、前記それぞれのブロックチェーントランザクションを形成するために、オフチェーンサイドチャネルを介して前記第2の当事者とのプロトコルを実行するステップであって、前記それぞれのブロックチェーントランザクションが、一旦形成されると、前記第2の当事者のそれぞれの子公開鍵に基づくアドレスを備え、前記子公開鍵が導出関数によって前記第2の当事者のマスタ公開鍵に関連付けられ、前記導出関数がそれぞれの導出情報によってパラメータ化され、前記プロトコルが前記第2の当事者から前記導出情報および子公開鍵を受信するステップを備える、ステップと、
第三者からの要求に応じて、前記それぞれの導出情報を前記第三者に報告し、それによって前記第三者が前記マスタ公開鍵と前記第2の当事者の前記子公開鍵との間のリンクを実証できるようにするステップと
を備え、
ブロックチェーントランザクションの前記セットの各々が、一旦形成されると、ブロックチェーンに記録され、
前記方法が、ブロックチェーントランザクションの前記セットの証明を備える少なくとも1つの別個のブロックチェーントランザクションをブロックチェーン上に記録するために送信するステップをさらに備え、前記証明が前記セットの前記指示の変換を備える、コンピュータ実装方法。
【請求項24】
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置であって、前記メモリが、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードが、前記処理装置上にある時に請求項23に記載の方法を実行するように構成される、処理装置と
を備える、コンピュータ機器。
【請求項25】
コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、請求項23に記載の方法を実行するように構成された、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンを介して行われるトランザクションの記録を検証する方法に関する。
【背景技術】
【0002】
ブロックチェーンは、分散データ構造の形式を指し、ブロックチェーンの複製コピーが分散ピアツーピア(P2P)ネットワーク(以下では、「ブロックチェーンネットワーク」と呼ばれる)内の複数のノードの各々において維持され、広く宣伝される。ブロックチェーンはデータのブロックのチェーンを備え、各ブロックは1つまたは複数のトランザクションを備える。いわゆる「コインベーストランザクション」以外の各トランザクションは、1つまたは複数のコインベーストランザクションに戻る1つまたは複数のブロックにまたがり得るシーケンス内の先行するトランザクションを指す。コインベーストランザクションについては、以下でさらに説明する。ブロックチェーンネットワークに提出されるトランザクションは、新しいブロックに含まれる。新しいブロックは、多くの場合「マイニング(mining)」と呼ばれるプロセスによって作成され、このプロセスは、複数のノードの各々が「プルーフオブワーク(proof-of-work)」を実施するために競合すること、すなわち、ブロックチェーンの新しいブロックに含まれることを待っている、順序付けされ検証された保留中のトランザクションの定義されたセットの表現に基づいて暗号パズルを解くことを含む。ブロックチェーンはいくつかのノードにおいて取り除かれる可能性があり、ブロックの公開は単なるブロックヘッダの公開を通じて実現できる点に留意されたい。
【0003】
ブロックチェーン内のトランザクションは、デジタル資産(すなわち、多数のデジタルトークン)を伝達するため、仮想化された台帳またはレジストリ内のエントリのセットを順序付けるため、タイムスタンプエントリを受信して処理するため、および/またはインデックスポインタを時間順にするための目的のうちの1つまたは複数のために使用され得る。ブロックチェーンはまた、ブロックチェーンの上に追加の機能を重ねるために利用することができる。たとえば、ブロックチェーンプロトコルは、追加のユーザデータまたはトランザクション内のデータのインデックスを記憶できる場合がある。単一のトランザクション内に記憶できる最大データ容量には事前に指定された制限がなく、したがって、ますます複雑なデータを組み込むことができる。たとえば、これは電子ドキュメントをブロックチェーンに記憶すること、あるいはオーディオデータまたはビデオデータを記憶することを行うために使用され得る。
【0004】
ブロックチェーンネットワークのノード(「マイナ」と呼ばれることが多い)は、分散トランザクションの登録および検証プロセスを実施し、これについては後で詳しく説明する。要約すると、このプロセス中に、ノードはトランザクションを検証し、有効なプルーフオブワーク解を識別しようとするブロックテンプレートにトランザクションを挿入する。有効な解が見つかると、新しいブロックがネットワークの他のノードに伝搬され、したがって、各ノードが新しいブロックをブロックチェーンに記録できるようになる。トランザクションをブロックチェーンに記録するために、ユーザ(ブロックチェーンクライアントアプリケーションなど)が、伝搬させるためにトランザクションをネットワークのノードのうちの1つに送信する。トランザクションを受信するノードは、検証されたトランザクションを新しいブロックに組み込むプルーフオブワーク解を見つけるために競合する可能性がある。各ノードは、トランザクションを有効にするための1つまたは複数の条件を含む同じノードプロトコルを強制するように構成されている。無効なトランザクションは伝搬されず、ブロックに組み込まれない。トランザクションが検証され、それによってブロックチェーン上で受け入れられると仮定すると、トランザクション(ユーザデータを含む)は、不変の公開記録としてブロックチェーンネットワーク内のノードの各々において登録され、インデックス付けされたままになる。
【0005】
最新のブロックを作成するためにプルーフオブワークパズルを解決したノードは通常、ある額のデジタル資産、すなわち多数のトークンを分散する「コインベーストランザクション」と呼ばれる新しいトランザクションで報酬を与えられる。無効なトランザクションの検出と拒否は、ネットワークのエージェントとして機能する競合ノードのアクションによって強制され、不正行為を報告してブロックするよう促される。情報が広範に公開されるため、ユーザはノードのパフォーマンスを継続的に監査できるようになる。単なるブロックヘッダを公開することにより、参加者はブロックチェーンの継続的な整合性を確保できるようになる。
【0006】
「出力ベース」モデル(UTXOベースのモデルとも呼ばれる)では、所与のトランザクションのデータ構造は1つまたは複数の入力と1つまたは複数の出力を備える。使用可能な出力は、トランザクションの進行シーケンスから導き出されるデジタル資産の額を指定する要素を備える。使用可能出力は、UTXO(「未使用トランザクション出力(unspent transaction output)」)と呼ばれることもある。出力は、将来の出力の引換えのための条件を指定するロックスクリプトをさらに備え得る。ロックスクリプトは、デジタルトークンまたは資産を検証および転送するために必要な条件を定義する述語である。トランザクション(コインベーストランザクション以外)の各入力は、先行するトランザクションにおけるそのような出力へのポインタ(すなわち、参照)を備え、さらに、示された出力のロックスクリプトのロックを解除するためのロック解除スクリプトを備え得る。したがって、トランザクションのペアを考えると、それらを第1のトランザクションおよび第2のトランザクション(または「ターゲット」トランザクション)と呼ぶ。第1のトランザクションは、デジタル資産の額を指定する少なくとも1つの出力を備え、出力のロックを解除する1つまたは複数の条件を定義するロックスクリプトを備える。第2のターゲットトランザクションは、第1のトランザクションの出力へのポインタを備える少なくとも1つの入力と、第1のトランザクションの出力のロックを解除するためのロック解除スクリプトとを備える。
【0007】
そのようなモデルでは、第2のターゲットトランザクションが、ブロックチェーンに伝搬および記録されるためにブロックチェーンネットワークに送信されるとき、各ノードに適用される有効性の基準のうちの1つは、ロック解除スクリプトが、第1のトランザクションのロックスクリプトにおいて定義された1つまたは複数の条件をすべて満たすことである。もう1つは、第1のトランザクションの出力が別の以前の有効なトランザクションによってまだ償還されていないことである。これらの条件のいずれかに従ってターゲットトランザクションが無効であると判断したノードは、そのトランザクションを(有効なトランザクションとして、ただし無効なトランザクションを登録するために)伝搬したり、ブロックチェーンに記録するために新しいブロックに含めたりすることはない。
【0008】
別のタイプのトランザクションモデルは、アカウントベースのモデルである。この場合、各トランザクションは、過去のトランザクションのシーケンスにおける先行するトランザクションのUTXOを参照することによってではなく、絶対的なアカウント残高を参照することによって転送される額を定義する。すべてのアカウントの現在の状態は、ブロックチェーンとは別のノードによって記憶され、絶えず更新される。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本明細書では、第1の当事者(first party)(「アリス(Alice)」)と第2の当事者(「ボブ(Bob)」)が、アリスとボブとの間で行われるブロックチェーントランザクションのセットのメンバーシップに同意する(すなわち、どのブロックチェーントランザクションがセットの一部であるかに同意する)かどうかを決定するために役立つシナリオが多数あることが識別されている。当事者のうちの一方がセットを虚偽表示した場合に、後で証拠を再現できる方法でこれを行うことができることが特に望ましい。たとえば、これは、2者間のトランザクションを監査する税務当局や民間監査人などのあらゆる機関にとって役立つ。
【0010】
しかしながら、これを実装するには技術的な考慮事項が必要である。素朴な解決策は、単純に、アリスとボブのそれぞれが関係したトランザクションのオフチェーン報告を第三者(third party)(たとえば、税務当局、監査人など)に送信し、その第三者にすべての報告を記憶させることである。しかしながら、これは、第三者の集中ストレージスペースにとって負担になる。さらに、将来の証拠は第三者のストレージにも依存することになり、これは、第三者の記録だけが決定的で不変の記憶として信頼できると仮定しているが、必ずしもそうではない可能性がある(たとえば、改ざん、マルウェアまたはデータ損失に対して脆弱である可能性がある)。あるいは、もう1つの単純な解決策は、アリスまたはボブが第三者に報告することをまったく必要とせずに、単に第三者がアリスとボブのチェーン上のトランザクションを一方的に観察できるようにすることである。結局のところ、ブロックチェーンの性質は、トランザクションは、一旦ブロックに含まれると不変の公的記録としてチェーン上に永続的に記録されるということである。しかしながら、この手法のみに依存することには、アリスとボブのトランザクションがブロックチェーン全体に分散しており、それらすべてを一方的に検索するのは第三者のコンピューティングリソースの点で負担が大きいという、もう1つの技術的な欠点がある。また、通常、当事者はトランザクションごとに異なるキーを使用してトランザクションを匿名化する。
【課題を解決するための手段】
【0011】
本開示は、アリスとボブが自分たちのトランザクションを第三者に報告する必要があるが、各自がチェーン上に記録される追加のトランザクションにおいてそれぞれ報告されたトランザクションの証明(attestation)を行う必要がある、より効率的なハイブリッド実装形態を提供する(これらの追加のトランザクションは、本明細書では「第1(first)」および「第2(second)」のトランザクションと呼ばれ、報告されているトランザクション、すなわちアリスとボブの間のトランザクションとは別のものである)。たとえば、証明は、ハッシュツリーのハッシュルート(マークルツリーのマークルルートとも呼ばれることもある)になる可能性があり、トランザクションIDなどがリーフになる。
【0012】
本明細書に開示される一態様によれば、第1の当事者と第2の当事者との間でトランザクションされるブロックチェーントランザクションのセットのメンバーシップについて第1の当事者と第2の当事者が合意するかどうかを決定するコンピュータ実装方法が提供される。本方法は、第三者によって、第1の当事者から、前記セット内の少なくともブロックチェーントランザクションを含む、第1の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第1の報告を受信するステップであって、第1の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップと、第2の当事者から、前記セット内のブロックチェーントランザクションの少なくとも一部または全部を含む、第2の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第2の報告を受信するステップであって、第2の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップとを備える。本方法は、第三者によって、少なくとも1つの第1のブロックチェーントランザクションにおいて第1の当事者によって記録された第1の証明をブロックチェーン上で観察するステップであって、第1の証明が、第1の報告において報告された指示に第1の変換を適用した第1の当事者から導出された第1の証明値を備える、ステップと、第2のブロックチェーントランザクションにおいて第2の当事者によって記録された第2の証明をブロックチェーン上で観察するステップであって、第2の証明が、第2の報告において報告された指示に第2の変換を適用した第2の当事者から導出された第2の証明値を備え、第1および第2のブロックチェーントランザクションが前記セットとは別個である、ステップとをさらに備える。第三者は、第1の報告において報告された指示に第1の変換を適用し、ブロックチェーンからの第1の証明と比較することによって、第1の報告が第1の証明と一致していることをチェックし、第2の報告において報告された指示に第2の変換を適用し、ブロックチェーンからの第2の証明と比較することによって、第2の報告が第2の証明と一致していることをチェックする。第三者はまた、第1の報告における指示が第2の報告における指示と同じメンバーのセットを示しているかどうかを決定する。
【0013】
報告は報告されたトランザクションを第三者に知らせるが、証明は不変の公的記録としてチェーン上に残る。第三者は、報告が対応する証明と一致しているかどうか、また報告が相互に一致しているかどうかをチェックする。決定の結果、当事者のうちの一方が他方に対してセットを虚偽表示したことが明らかになった場合、その証明は、当事者のうちの一方、たとえばボブが、たとえば、虚偽の申告を行ったことを示す不変の証拠として使用することができる。
【0014】
第三者は、後で証拠として使用するために、証明または証明へのポインタを記憶し得る。第三者は、疑わしいトランザクション、すなわち両方の報告において報告されなかったトランザクションの指示(たとえば、トランザクションID)を記憶し得る。第三者はまた、第三者のアイデンティティ(ID)へのリンクを記憶し得、証明がハッシュツリー(マークルツリー)のルートを備える実施形態では、第三者はまた、ルートと問題のトランザクションの指示(たとえば、トランザクションID)との間のハッシュツリーパス(マークルパス)を記憶し得る。しかし、第三者は、必ずしも完全な第1および第2の報告、または、第1および第2の報告からのすべての指示(たとえば、トランザクションID)を記憶する必要はない。代わりに、第1および第2の当事者は、トランザクションの指示に関する独自の記録をセットに記憶し得る。第1および第2の当事者のこれらの記録は、後で、彼らが証明したトランザクションを証明するために、オンチェーン認証と組み合わせて使用され得る。アリスまたはボブが記録を破棄した場合、彼らは証明を再現できないため、これ自体が不正行為の証拠となり得る。言い換えれば、オンチェーン証明があるため、後でアリスとボブが証明を満たすTxIDのセットを生成できない場合、これは、彼らがいくつかのレコードを破棄した(または、おそらく失われた)ことを意味するが、これらのトランザクションを報告しなかった、または証明しなかったふりをすることはできない。第三者が記憶する必要があるのは、不正行為の証拠だけである。これには単一のトランザクションに関する情報のみが必要である。
【0015】
たとえば、このシナリオを考えてみる:税務当局(TA)は、不正行為を識別するために1か月にわたってすべてのトランザクションIDを収集する(アリスとボブの両者の記録を保持しているため、TAのみがこれを行うことができる)。TAが疑わしいトランザクションを識別すると、TAはトランザクション、マークルパス、証明、およびトランザクション内のボブのアイデンティティ(ID)へのリンクを記憶する。次いで、TAはアリスの残りのトランザクションを自由に削除することができる。TAには1つのトランザクションだけが残る。ボブは証明されたマークルツリーにこのトランザクションが含まれていることを証明することができないため、これは不正行為の証拠となる。
【0016】
同時に、公開上に記録される証明は、明示的な指示(たとえば、生のTxID)ではなく、セットの変換(できれば、不可逆変換)であるため、これによりセットのアイデンティティ(ID)が難読化される、したがって、当事者のうちの1人が誤った報告を行ったことを証明する必要がない限り、当事者のプライバシを保護するために役立つ。そうではない場合、この対策がなければ、アリスに関係するすべてのトランザクション、ボブに関係するすべてのトランザクションなどの公的記録が残ることになる。
【0017】
実施形態では、アリスの報告は、ボブが関係するトランザクションと、1人または複数のさらなる当事者(チャーリーなど)を含むトランザクションの両方を含み得、その場合、アリスの証明は、これらすべてのトランザクションをまとめて証明することになる。たとえば、おそらく彼女は、すべての当事者とのすべてのトランザクションの証明を月に1回発行する。そのような場合、ボブの虚偽表示の証拠を裁判所または警察などの第4の当事者(fourth party)に提供する必要がある場合、チャーリーとアリスとのトランザクションのアイデンティティ(ID)を明らかにすることによって(たとえば、トランザクションIDを明かすことなく)、チャーリーのプライバシを侵害することなくこれを提供できることが望ましい。
【0018】
したがって、実施形態では、第1の報告および/または第2の報告における指示は、第1の当事者、第2の当事者、および第三者以外の1人または複数のさらなる当事者とトランザクションする1つまたは複数のさらなるブロックチェーントランザクションの各々の指示をさらに含み得、前記セットは、第1、または第2の当事者が関係するトランザクションの交差点である。第1の証明値はハッシュツリーのルートを備え得、第1の報告において報告される指示の各々はハッシュツリーのリーフになり、本方法は、第1および第2の報告がセットの異なるメンバーシップを示しているとの決定に応じて、第1の報告において示されているが、第2の報告においては示されていない、少なくとも1つのブロックチェーントランザクションの存在を識別するステップと、第2の当事者が虚偽の証明を行ったという証拠を生成するために、ハッシュツリールート、およびルートと失われたトランザクションを表す指示の間のハッシュツリーパスを使用するステップと、ハッシュツリーのルートとパスの使用に基づいて、さらなる当事者のトランザクションの指示を第4の当事者に開示することなく、第4の当事者に証拠を提示するステップとを備え得る。
【0019】
ハッシュツリーのルートとパスが与えられると、ハッシュツリーを使用すると、他のリーフ(この場合、チャーリーとアリスのトランザクションの指示、たとえばTxIDなど)を明らかにする必要なく、所与の候補リーフ(この場合、アリスとボブの間の問題のトランザクションの指示のうちの1つ、たとえばトランザクションID)が確かにそのハッシュルートを有するハッシュツリーのリーフであることを実証することができる。したがって、チャーリーのプライバシを侵害することなく、ボブの虚偽表示の証拠を裁判所、警察などの第4の当事者に提出することができる。
【0020】
本開示の実施形態の理解を助け、そのような実施形態がどのように実施されるかを示すために、単なる例として添付の図面が参照される。
【図面の簡単な説明】
【0021】
図1】ブロックチェーンを実装するためのシステムの概略ブロック図である。
図2】ブロックチェーンに記録され得るトランザクションのいくつかの例を概略的に示す図である。
図3】本明細書に開示される実施形態による、第1の当事者と第2の当事者がブロックチェーントランザクションのセットのメンバーシップに同意するかどうかを決定するためのシステムの概略ブロック図である。
図4】本明細書に開示される実施形態による方法を示すシグナリングチャートである。
図5】本明細書に開示される実施形態による方法を示すフローチャートである。
図6】ハッシュツリー(マークルツリー)の一例を概略的に示す図である。
【発明を実施するための形態】
【0022】
例示的なシステムの概要
図1は、ブロックチェーン150を実装するための例示的なシステム100を示している。システム100は、パケット交換ネットワーク101、通常はインターネットなどの広域インターネットワークを備え得る。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)ネットワーク106を形成するように配置され得る複数のブロックチェーンノード104を備える。図示されていないが、ブロックチェーンノード104は、ほぼ完全なグラフとして配置され得る。したがって、各ブロックチェーンノード104は、他のブロックチェーンノード104と高度に接続されている。
【0023】
各ブロックチェーンノード104は、ピアのコンピュータ機器を備え、ノード104のうちの異なるノードは異なるピアに属する。各ブロックチェーンノード104は、1つまたは複数のプロセッサ、たとえば、1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)と、特定用途向け集積回路(ASIC)などのその他の機器とを備える処理装置を備える。各ノードはまた、メモリ、すなわち非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、たとえば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリ、もしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光媒体を使用する1つまたは複数のメモリユニットを備え得る。
【0024】
ブロックチェーン150は、データブロック151のチェーンを備え、ブロックチェーン150のそれぞれのコピーが、分散またはブロックチェーンネットワーク106内の複数のブロックチェーンノード104の各々に維持される。上述したように、ブロックチェーン150のコピーを維持することは、必ずしもブロックチェーン150を完全に記憶することを意味するわけではない。代わりに、各ブロックチェーンノード150が各ブロック151のブロックヘッダ(後述)を記憶する限り、ブロックチェーン150からデータを取り除くことができる。チェーン内の各ブロック151は、1つまたは複数のトランザクション152を備え、この文脈におけるトランザクションは、ある種のデータ構造を指す。データ構造の性質は、トランザクションモデルまたは方式の一部として使用されるトランザクションプロトコルのタイプによって異なる。所与のブロックチェーンは、全体を通じて1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つの入力と少なくとも1つの出力を備える。各出力は、資産としてデジタル資産の数量を表す金額を指定し、その例としては、出力が暗号的にロックされているユーザ103がある(ロックを解除し、それによって償還または使用するためには、そのユーザの署名または他の解が必要である)。各入力は、先行するトランザクション152の出力を指し、それによってトランザクションがリンクされる。
【0025】
各ブロック151は、ブロック151への連続的な順序を定義するために、チェーン内で以前に作成されたブロック151を指すブロックポインタ155も備える。各トランザクション152(コインベーストランザクション以外)は、トランザクションのシーケンスへの順序を定義するために、前のトランザクションへ戻るポインタを備える(注意:トランザクション152のシーケンスは分岐することができる)。ブロック151のチェーンは、チェーン内の第1のブロックであったジェネシスブロック(Gb)153まで遡る。チェーン150内の初期の1つまたは複数の元のトランザクション152は、先行するトランザクションではなくジェネシスブロック153を指していた。
【0026】
ブロックチェーンノード104の各々は、トランザクション152を他のブロックチェーンノード104に転送し、それによってトランザクション152がネットワーク106全体に伝搬されるように構成されている。各ブロックチェーンノード104は、ブロック151を作成し、同じブロックチェーン150のそれぞれのコピーをそれぞれのメモリに記憶するように構成されている。各ブロックチェーンノード104もまた、ブロック151に組み込まれるのを待っているトランザクション152の順序付きセット(または「プール」)154を維持する。順序付きプール154は、「メモリプール(mempool)」と呼ばれることが多い。本明細書におけるこの用語は、任意の特定のブロックチェーン、プロトコル、またはモデルに限定することを意図したものではない。それは、ノード104が有効なものとして受け入れ、ノード104が同じ出力を使用しようとする任意の他のトランザクションを受け入れない義務があるトランザクションの順序付きセットを指す。
【0027】
所与の現在のトランザクション152jにおいて、入力(または、各入力)は、トランザクションのシーケンスにおける先行するトランザクション152iの出力を参照するポインタを備え、この出力が、現在のトランザクション152jにおいて償還または「使用(spent)」されるべきであることを指定する。一般に、先行するトランザクションは、順序付きセット154内の任意のトランザクションまたは任意のブロック151である可能性がある。先行するトランザクション152iは、現在のトランザクションが有効となるために、存在し、検証される必要があるが、先行するトランザクション152iが現在のトランザクション152jが作成される時点、またはネットワーク106に送信される時点でさえも、必ずしも存在する必要はない。したがって、本明細書における「先行する(preceding)」は、ポインタによってリンクされた論理シーケンスにおける先行するもの(predecessor)を指し、必ずしも時系列における作成または送信の時間を指すものではなく、したがって、トランザクション152i、152jが順不同に作成または送信されることを必ずしも排除するものではない(オーファントランザクションに関する以下の説明を参照)。先行するトランザクション152iは、先のトランザクション(antecedent transaction)または先行したトランザクション(predecessor transaction)と同様に呼ぶことができる。
【0028】
現在のトランザクション152jの入力はまた、入力権限、たとえば、先行するトランザクション152iの出力がロックされているユーザ103aの署名を備える。次に、現在のトランザクション152jの出力は、新しいユーザまたはエンティティ103bに暗号的にロックされ得る。したがって、現在のトランザクション152jは、先行するトランザクション152iの入力において定義された額を、現在のトランザクション152jの出力において定義されたように、新しいユーザまたはエンティティ103bに転送することができる。場合によっては、トランザクション152は、複数のユーザまたはエンティティ(残り(change)を与えるために、そのうちの1人が元のユーザまたはエンティティ103aであり得る)間で入力額を分割するための複数の出力を有し得る。場合によっては、トランザクションはまた、1つまたは複数の先行するトランザクションの複数の出力からの額をまとめ、現在のトランザクションの1つまたは複数の出力に再分配するために複数の入力を有することができる。
【0029】
ビットコインのような出力ベースのトランザクションプロトコルによれば、個人ユーザまたは組織などの当事者103が、(手動で、または当事者が採用する自動プロセスによって)新しいトランザクション152jを制定したい場合、制定当事者は、そのコンピュータ端末102から受信者に新しいトランザクションを送信する。制定当事者または受信者は、最終的にこのトランザクションをネットワーク106の1つまたは複数のブロックチェーンノード104(今日では、典型的にはサーバまたはデータセンタであるが、原則として他のユーザ端末でもよい)に送信することになる。また、新しいトランザクション152jを制定する当事者103が、トランザクションをブロックチェーンノード104のうちの1つまたは複数に直接送信し、場合によっては受信者に送信しない可能性も排除されない。トランザクションを受信するブロックチェーンノード104は、ブロックチェーンノード104の各々において適用されるブロックチェーンノードプロトコルに従って、トランザクションが有効であるかどうかをチェックする。ブロックチェーンノードプロトコルは、通常、新しいトランザクション152j内の暗号署名が、順序付けられたトランザクション152のシーケンス内で前のトランザクション152iに依存する、予想される署名と一致することをチェックすることをブロックチェーンノード104に要求する。そのような出力ベースのトランザクションプロトコルでは、これは、新しいトランザクション152jの入力に含まれる当事者103の暗号署名または他の許可が、新しいトランザクションが割り当てる先行するトランザクション152iの出力において定義された条件と一致することをチェックすることを備えてよく、この条件は通常、新しいトランザクション152jの入力における暗号署名または他の認可が、新しいトランザクションの入力がリンクされている前のトランザクション152iの出力のロックを解除することをチェックすることを少なくとも備える。条件は、先行するトランザクション152iの出力に含まれるスクリプトによって少なくとも部分的に定義され得る。あるいは、ブロックチェーンノードプロトコルだけによって単純に固定されてもよく、これらの組合せによるものであってもよい。いずれにしても、新しいトランザクション152jが有効である場合、ブロックチェーンノード104は、それをブロックチェーンネットワーク106内の1つまたは複数の他のブロックチェーンノード104に転送する。これらの他のブロックチェーンノード104は、同じブロックチェーンノードプロトコルに従って同じテストを適用し、したがって、新しいトランザクション152jを1つまたは複数のさらなるノード104に転送し、以下同様である。このようにして、新しいトランザクションはブロックチェーンノード104のネットワーク全体に伝搬される。
【0030】
出力ベースのモデルでは、所与の出力(たとえば、UTXO)が割り当てられているか(たとえば、使用されているか)の定義は、ブロックチェーンノードプロトコルに従って、その出力が別の後続のトランザクション152jの入力によってまだ有効に償還されているかどうかである。トランザクションが有効であるための別の条件は、償還しようと試みる先行するトランザクション152iの出力が別のトランザクションによってまだ償還されていないことである。同様に、有効でない場合、トランザクション152jは(無効としてフラグが立てられ、警告のために伝搬されない限り)ブロックチェーン150に伝搬も記録もされない。これは、取引者が同じトランザクションの出力を複数回割り当てようとする二重支出を防止する。一方、アカウントベースのモデルは、アカウント残高を維持することによって二重支出を防止する。ここでも、トランザクション順序が定義されているため、アカウント残高は常に単一の定義された状態にある。
【0031】
トランザクションの検証に加えて、ブロックチェーンノード104はまた、「プルーフオブワーク」によってサポートされる、一般にマイニングと呼ばれるプロセスにおいてトランザクションのブロックを最初に作成しようと競合する。ブロックチェーンノード104において、新しいトランザクションが、ブロックチェーン150上に記録されたブロック151にまだ現れていない有効なトランザクションの順序付きプール154に追加される。次いで、ブロックチェーンノードは、暗号パズルを解くことを試みることによって、順序付けられたトランザクションのセット154からトランザクション152の新しい有効なブロック151を組み立てようと競合する。通常、これは、ノンスが保留中のトランザクション154の順序付きプールの表現と連結されハッシュされたときに、ハッシュの出力があらかじめ定められた条件を満たすような「ノンス」値を検索することを備える。たとえば、あらかじめ定められた条件は、ハッシュの出力があらかじめ定義された数の先行ゼロを有することであってもよい。これは、プルーフオブワークパズルの特定のタイプの1つにすぎず、他のタイプが除外されるわけではない点に留意されたい。ハッシュ関数の特性は、その入力に対して予測不可能な出力を有することである。したがって、この検索は総当りしか実施することができず、したがって、パズルを解こうとしている各ブロックチェーンノード104においてかなりの量の処理リソースを消費する。
【0032】
最初にパズルを解いたブロックチェーンノード104は、これをネットワーク106に公表し、その解を、ネットワーク内の他のブロックチェーンノード104によって容易にチェックできるプルーフとして提供する。(ハッシュに対する解が与えられると、それによってハッシュの出力が条件を満たすかどうかをチェックするのは簡単である)。第1のブロックチェーンノード104は、ブロックを受け入れてプロトコルルールを強制する他のノードのしきい値コンセンサスまでブロックを伝搬する。次いで、トランザクションの順序付きセット154は、ブロックチェーンノード104の各々によって、ブロックチェーン150内に新しいブロック151として記録されるようになる。ブロックポインタ155も、チェーン内で以前に作成されたブロック151n-1を指す新しいブロック151nに割り当てられる。プルーフオブワーク解を作成するために必要な、たとえばハッシュの形態のかなりの量の労力は、ブロックチェーンプロトコルの規則に従うという第1のノード104の意図を信号で伝える。そのようなルールは、以前に検証されたトランザクションと同じ出力が割り当てられている場合、トランザクションを有効なものとして受け入れないことを含み、これは二重支出とも呼ばれる。ブロック151は、一度作成されると、ブロックチェーンネットワーク106内のブロックチェーンノード104の各々において認識され維持されるため、修正することができない。また、ブロックポインタ155は、ブロック151に連続的な順序を課す。トランザクション152は、ネットワーク106内の各ブロックチェーンノード104の順序付けされたブロックに記録されるため、これは、トランザクションの不変の公開台帳を提供する。
【0033】
パズルを解決するために常に競合している異なるブロックチェーンノード104は、それらがいつ解の検索を開始したか、またはトランザクションが受信された順序に応じて、常に未公開トランザクションのプール154の異なるスナップショットに基づいて実施している可能性がある点に留意されたい。誰がそれぞれのパズルを最初に解いても、どのトランザクション152が次の新しいブロック151nにどのような順序で含まれるかを最初に定義し、未公開トランザクションの現在のプール154が更新される。次いで、ブロックチェーンノード104は、新たに定義された未公開トランザクション154の順序付きプールからブロックを作成するために競合を続け、以下同様である。発生する可能性のある任意の「フォーク(fork)」を解決するためのプロトコルも存在し、フォークとは、2つのブロックチェーンノード104が互いに非常に短い時間内にパズルを解決し、ブロックチェーンの矛盾するビューがノード104間で伝搬されるようにするものである。つまり、最も長く成長するフォークの分岐が、最終的なブロックチェーン150になる。同じトランザクションが両方のフォークに現れるため、これはネットワークのユーザまたはエージェントに影響を与えないはずである点に留意されたい。
【0034】
ビットコインブロックチェーン(および、他のほとんどのブロックチェーン)によると、(あるエージェントまたはユーザから別のエージェントまたはユーザにある額のデジタル資産を転送するエージェント間またはユーザ間のトランザクションとは対照的に)新しいブロック104の構築に成功したノードには、追加の規定額のデジタル資産を分散する新しい特別な種類のトランザクションにおいて、追加の受入れ額のデジタル資産を新たに割り当てる能力が与えられる。この特別なタイプのトランザクションは通常「コインベーストランザクション」と呼ばれるが、「開始トランザクション」または「生成トランザクション」と呼ばれることもある。これは通常、新しいブロック151nの第1のトランザクションを形成する。プルーフオブワークは、新しいブロックを構築するノードがプロトコルルールに従う意図を通知し、この特別なトランザクションを後で償還できるようにする。ブロックチェーンプロトコルのルールは、この特別なトランザクションが償還され得る前に、たとえば100ブロックなどの満期期間が必要とする場合がある。多くの場合、通常の(非生成)トランザクション152は、そのトランザクションが公開されたブロック151nを作成したブロックチェーンノード104にさらに報酬を与えるために、その出力の1つにおいて追加のトランザクション手数料も指定する。この手数料は通常「トランザクション手数料(transaction fee)」と呼ばれ、後で説明する。
【0035】
トランザクションの検証および公開に関係するリソースに起因して、通常、ブロックチェーンノード104の少なくとも各々は、1つまたは複数の物理サーバユニットを備えるサーバの形態をとるか、またはデータセンタ全体の形態をとる。しかしながら、原則として、任意の所与のブロックチェーンノード104は、一緒にネットワーク化されたユーザ端末またはユーザ端末のグループの形態をとることができる。
【0036】
各ブロックチェーンノード104のメモリは、ブロックチェーンノードプロトコルに従ってそれぞれの役割を実施し、トランザクション152を処理するために、ブロックチェーンノード104の処理装置上で実行するように構成されたソフトウェアを記憶する。本明細書においてブロックチェーンノード104に起因する任意のアクションは、それぞれのコンピュータ機器の処理装置上で実行されるソフトウェアによって実施され得ることが理解されるであろう。ノードソフトウェアは、アプリケーション層、オペレーティングシステム層またはプロトコル層などの下位層、あるいはこれらの任意の組合せにおいて、1つまたは複数のアプリケーションに実装され得る。
【0037】
ネットワーク101には、消費ユーザの役割を担う複数の当事者103の各々のコンピュータ機器102も接続されている。これらのユーザは、ブロックチェーンネットワーク106と対話し得るが、トランザクションの検証またはブロックの構築には参加しない。これらのユーザまたはエージェント103の一部は、トランザクションにおいて送信者および受信者として機能する場合がある。他のユーザは、必ずしも送信者または受信者として行動することなく、ブロックチェーン150と対話し得る。たとえば、一部の当事者は、ブロックチェーン150のコピーを記憶するストレージエンティティとして機能してもよい(たとえば、ブロックチェーンノード104からブロックチェーンのコピーを取得した)。
【0038】
当事者103の一部またはすべては、異なるネットワーク、たとえばブロックチェーンネットワーク106の上にオーバーレイされるネットワークの一部として接続されてもよい。ブロックチェーンネットワークのユーザ(しばしば「クライアント(clients)」と呼ばれる)は、ブロックチェーンネットワーク106を含むシステムの一部であると言われる場合があるが、これらのユーザは、ブロックチェーンノードに必要な役割を実施しないため、ブロックチェーンノード104ではない。代わりに、各当事者103は、ブロックチェーンネットワーク106と対話し、それによって、ブロックチェーンノード106に接続する(すなわち、通信する)ことによってブロックチェーン150を利用し得る。2人の当事者103およびそのそれぞれの機器102、すなわち第1の当事者103aおよびそのそれぞれのコンピュータ機器102a、ならびに第2の当事者103bおよびそのそれぞれのコンピュータ機器102bが、例示の目的で示されている。はるかに多くのそのような当事者103およびそれぞれのコンピュータ機器102が存在し、システム100に参加し得るが、便宜上、それらは図示されていないことが理解されるであろう。各当事者103は、個人であってもよく、組織であってもよい。純粋に例示として、本明細書では第1の当事者103aをアリスと呼び、第2の当事者103bをボブと呼ぶが、これに限定されるものではなく、本明細書におけるアリスまたはボブへのいかなる言及も、それぞれ「第1の当事者(first party)」および「第2の当事者(second party)」と置き換えられ得ることが理解されるであろう。
【0039】
各当事者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つまたは複数の他のネットワーク化されたリソースを備え得る。
【0040】
クライアントアプリケーション105は、最初に、適切なコンピュータ可読記憶媒体上で任意の当事者103のコンピュータ機器102に提供されてよく、たとえば、サーバからダウンロードされるか、リムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスドライブ、磁気フロッピーディスクまたはテープ、CDまたはDVD ROMなどの光ディスク、あるいはリムーバブル光ドライブなどのリムーバブルストレージデバイスにおいて提供される。
【0041】
クライアントアプリケーション105は、少なくとも「ウォレット(wallet)」機能を備える。これは2つの主な機能を有する。これらのうちの1つは、それぞれの当事者103が、トランザクション152を作成し、認可し(たとえば、署名し)、1つまたは複数のビットコインノード104に送信し、次いで、ブロックチェーンノード104のネットワーク全体に伝搬され、それによってブロックチェーン150に含まれるようにすることを可能にすることである。もう1つは、それぞれの当事者に、その当事者が現在所有しているデジタル資産の額を報告することである。出力ベースのシステムにおいて、この第2の機能は、当該当事者に属するブロックチェーン150全体に散在する様々なトランザクション152の出力において定義された額を照合することを備える。
【0042】
注:様々なクライアント機能は、所与のクライアントアプリケーション105に統合されるものとして説明され得るが、これは必ずしも限定されるものではなく、代わりに、本明細書で説明される任意のクライアント機能は、代わりに、2つ以上の別個のアプリケーションのスイートにおいて実装されてもよく、たとえば、APIを介してインターフェイスするか、または一方が他方へのプラグインになる。より一般的には、クライアント機能は、アプリケーション層、もしくはオペレーティングシステムなどの下位層、またはこれらの任意の組合せにおいて実装することができる。以下はクライアントアプリケーション105に関して説明されるが、これに限定されないことが理解されるであろう。
【0043】
各コンピュータ機器102上のクライアントアプリケーションまたはソフトウェア105のインスタンスは、ネットワーク106のブロックチェーンノード104のうちの少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能がトランザクション152をネットワーク106に送信できるようになる。クライアント105はまた、それぞれの当事者103が受信者であるトランザクションについてブロックチェーン150にクエリを行うために、ブロックチェーンノード104に連絡することができる(または、実施形態では、ブロックチェーン150は、部分的にその公開可視性を通じてトランザクションにおける信頼性を提供する公共施設であるため、実際にブロックチェーン150内の他の当事者のトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルに従ってトランザクション152を定式化し、送信するように構成されている。上で述べたように、各ブロックチェーンノード104は、ブロックチェーンノードプロトコルに従ってトランザクション152を検証するように構成されたソフトウェアを実行し、トランザクション152をブロックチェーンネットワーク106全体に伝搬させるためにそれを転送するように構成される。トランザクションプロトコルとノードプロトコルは互いに対応しており、所与のトランザクションプロトコルは所与のノードプロトコルとともに進行し、一緒に所与のトランザクションモデルを実装する。ブロックチェーン150内のすべてのトランザクション152に対して同じトランザクションプロトコルが使用される。同じノードプロトコルが、ネットワーク106内のすべてのノード104によって使用される。
【0044】
所与の当事者103、たとえばアリスが、ブロックチェーン150に含まれるべき新しいトランザクション152jを送信したい場合、アリスは、関連するトランザクションプロトコルに従って(アリスのクライアントアプリケーション105のウォレット機能を使用して)新しいトランザクションを定式化する。次いで、アリスは、クライアントアプリケーション105から、アリスが接続されている1つまたは複数のブロックチェーンノード104にトランザクション152を送信する。たとえば、これは、アリスのコンピュータ102に最良に接続されているブロックチェーンノード104であり得る。任意の所与のブロックチェーンノード104が新しいトランザクション152jを受信すると、ブロックチェーンノードプロトコルおよびそのそれぞれの役割に従ってそれを処理する。これは、新しく受信されたトランザクション152jが「有効(valid)」であるための特定の条件を満たすかどうかを最初にチェックすることを含み、その例についてはすぐに詳しく説明する。一部のトランザクションプロトコルでは、検証のための条件は、トランザクション152に含まれるスクリプトによって、トランザクションごとに設定可能であり得る。あるいは、条件は単にノードプロトコルの組込み機能であってもよく、またはスクリプトとノードプロトコルの組合せによって定義されてもよい。
【0045】
新たに受信されたトランザクション152jが有効であるとみなされるためのテストに合格することを条件として(すなわち、「検証される(validated)」ことを条件として)、トランザクション152jを受信する任意のブロックチェーンノード104は、そのブロックチェーンノード104において維持されるトランザクション154の順序付けられたセットに新しい検証されたトランザクション152を追加する。さらに、トランザクション152jを受信する任意のブロックチェーンノード104は、検証されたトランザクション152をネットワーク106内の1つまたは複数の他のブロックチェーンノード104に伝搬する。各ブロックチェーンノード104は同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、それがすぐにネットワーク106全体に伝搬されることを意味する。
【0046】
所与のブロックチェーンノード104において維持される保留中のトランザクション154の順序付きプールへの参加が認められると、そのブロックチェーンノード104は、新しいトランザクション152を含むそれぞれのプール154の最新バージョンにおいてプルーフオブワークパズルを解こうと競合し始める。(他のブロックチェーンノード104は、異なるトランザクションプール154に基づいてパズルを解こうとしている可能性があるが、誰が最初に到達しても、最新のブロック151に含まれるトランザクションのセットを定義することになる可能性があることを思い出されたい。最終的には、ブロックチェーンノード104が、アリスのトランザクション152jを含む順序付けされたプール154の一部についてパズルを解くことになる)。新しいトランザクション152jを含むプール154に対してプルーフオブワークが行われると、それは不変的にブロックチェーン150内のブロック151の1つの一部となる。各トランザクション152は前のトランザクションへ戻るポインタを備えるため、トランザクションの順序も不変的に記録される。
【0047】
異なるブロックチェーンノード104は、所与のトランザクションの異なるインスタンスを最初に受信し得、したがって、1つのインスタンスが新しいブロック151において公開される前に、どのインスタンスが「有効」であるかについて矛盾する見解を有し、その時点で、すべてのブロックチェーンノード104は、公開されたインスタンスが唯一の有効なインスタンスであることに同意する。ブロックチェーンノード104が1つのインスタンスを有効なものとして受け入れ、次いで、第2のインスタンスがブロックチェーン150に記録されていることを発見した場合、そのブロックチェーンノード104はこれを受け入れなければならず、最初に受け入れたインスタンス(すなわち、ブロック151において公開されていないもの)を破棄する(すなわち、無効なものとして扱う)ことになる。
【0048】
いくつかのブロックチェーンネットワークによって動作されるトランザクションプロトコルの代替タイプは、アカウントベースのトランザクションモデルの一部として、「アカウントベース(account-based)」プロトコルと呼ばれる場合がある。アカウントベースの場合、各トランザクションは、過去のトランザクションのシーケンスにおける先行するトランザクションのUTXOを参照することによってではなく、絶対的なアカウント残高を参照することによって転送されるべき額を定義する。すべてのアカウントの現在の状態は、ブロックチェーンとは別の、ネットワークのノードによって記憶され、絶えず更新される。そのようなシステムでは、トランザクションはアカウントの実行中のトランザクション集計(「ポジション」とも呼ばれる)を使用して順序付けられる。この値は、送信者によってその暗号化署名の一部として署名され、トランザクション参照計算の一部としてハッシュされる。さらに、トランザクションにおける任意のデータフィールドも署名され得る。たとえば、このデータフィールドは、前のトランザクションIDがデータフィールドに含まれている場合、前のトランザクションを指し得る。
【0049】
UTXOベースのモデル
図2は、例示的なトランザクションプロトコルを示している。これは、UTXOベースのプロトコルの一例である。トランザクション152(「Tx」と略記される)は、ブロックチェーン150の基本的なデータ構造である(各ブロック151は1つまたは複数のトランザクション152を含む)。以下では、出力ベースまたは「UTXO」ベースのプロトコルを参照して説明される。しかしながら、これはすべての可能な実施形態に限定されない。UTXOベースの例示的なプロトコルはビットコインを参照して説明されているが、他の例示的なブロックチェーンネットワークにおいても同様に実装できる点に留意されたい。
【0050】
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つまたは複数の入力202および1つまたは複数の出力203を備えるデータ構造を備える。各出力203は、未使用のトランザクション出力(UTXO)を備え得、これは、(UTXOがまだ償還されていない場合)別の新しいトランザクションの入力202のソースとして使用され得る。UTXOは、デジタル資産の額を指定する値を含む。これは、分散台帳上のトークンの設定数を表す。UTXOはまた、他の情報の中でも特に、元となるトランザクションのトランザクションIDを含み得る。トランザクションデータ構造は、入力フィールド202および出力フィールド203のサイズを示すインジケータを備え得るヘッダ201も備え得る。ヘッダ201はまた、トランザクションのIDを含み得る。実施形態では、トランザクションIDは、(トランザクションID自体を除く)トランザクションデータのハッシュであり、ノード104に提出される生のトランザクション152のヘッダ201に記憶される。
【0051】
アリス103aが、当該デジタル資産の額をボブ103bに転送するトランザクション152jを作成したいと仮定する。図2では、アリスの新しいトランザクション152jには「Tx1」とラベル付けされている。これは、シーケンス内の先行するトランザクション152iの出力203においてアリスにロックされたデジタル資産の額を取り、これのうちの少なくとも一部をボブに転送する。先行するトランザクション152iは、図2では「Tx0」とラベル付けされている。Tx0とTx1は単なる任意のラベルである。それらは、Tx0がブロックチェーン151内の最初のトランザクションであることも、Tx1がプール154内のすぐ次のトランザクションであることも必ずしも意味するものではない。Tx1は、アリスにロックされた未使用の出力203を依然として有する先行する(すなわち、先の)トランザクションを指すことができる。
【0052】
先行するトランザクションTx0は、アリスが新しいトランザクションTx1を作成した時点では、または少なくともアリスがそれをネットワーク106に送信する時点までには、すでに検証されており、ブロックチェーン150のブロック151に含まれている可能性がある。それは、その時点ですでにブロック151のうちの1つに含まれている可能性もあり、順序付きセット154内でまだ待機している可能性もあり、その場合、すぐに新しいブロック151に含まれることになる。あるいは、Tx0とTx1を作成して一緒にネットワーク106に送信することもでき、ノードプロトコルが「オーファン(Tx0)」トランザクションのバッファリングを許可する場合には、Tx0をTx1の後に送信することさえもできる。本明細書でトランザクションのシーケンスの文脈において使用される「先行する(preceding)」および「後続の(subsequent)」という用語は、トランザクション内で指定されているトランザクションポインタ(どのトランザクションが他のどのトランザクションを指すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。これらは、「先行するもの(predecessor)」と「後続するもの(successor)」、または「先の(antecedent)」と「後の(descendant)」、「親(parent)」と「子(child)」などに同等に置き換えることもできる。それは、それらが作成され、ネットワーク106に送信され、または任意の所与のブロックチェーンノード104に到着する順序を必ずしも含意するものではない。それにもかかわらず、先行するトランザクション(先のトランザクションまたは「親」)を指す後続のトランザクション(後のトランザクションまたは「子」)は、親トランザクションが検証されるまで、および検証されない限り検証されない。親よりも先にブロックチェーンノード104に到着する子は、オーファンとみなされる。ノードプロトコルおよび/またはノードの挙動に応じて、親を待つために特定の時間、破棄またはバッファリングされ得る。
【0053】
先行するトランザクションTx0の1つまたは複数の出力203のうちの1つは、本明細書ではUTXO0とラベル付けされている特定のUTXOを備える。各UTXOは、UTXOによって表されるデジタル資産の額を指定する値と、ロックスクリプトとを備え、ロックスクリプトは、後続のトランザクションが検証され、したがって、UTXOが正常に償還されるために、後続のトランザクションの入力202内のロック解除スクリプトが満たさなければならない条件を定義する。典型的には、ロックスクリプトは、その額を特定の当事者(それが含まれるトランザクションの受益者)にロックする。すなわち、ロックスクリプトは、典型的には、後続のトランザクションの入力内のロック解除スクリプトに、先行するトランザクションがロックされる当事者の暗号署名が含まれるという条件を備えるロック解除条件を定義する。
【0054】
ロックスクリプト(通称scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有言語で記述されたコードの一部分である。そのような言語の特定の例は、ブロックチェーンネットワークによって使用される「スクリプト(Script)」(大文字S)と呼ばれる。ロックスクリプトは、トランザクション出力203を使用するためにどの情報が必要とされるか、たとえばアリスの署名の要件を指定する。ロック解除スクリプトはトランザクションの出力に現れる。ロック解除スクリプト(通称scriptSig)は、ロックスクリプト基準を満たすために必要な情報を提供するドメイン固有言語で記述されたコードの一部分である。たとえば、それはボブの署名を含み得る。ロック解除スクリプトは、トランザクションの入力202に現れる。
【0055】
つまり、図示される例では、Tx0の出力203内のUTXO0は、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後続のトランザクションが有効となるために)アリスの署名Sig PAを必要とするロックスクリプト[Checksig PA]を備える。[Checksig PA]は、アリスの公開鍵-秘密鍵ペアからの公開鍵PAの表現(すなわち、ハッシュ)を含む。Tx1の入力202は、(たとえば、実施形態ではトランザクションTx0全体のハッシュであるそのトランザクションID、TxID0によって)Tx1を指し示すポインタを備える。Tx1の入力202は、Tx0の任意の他の可能な出力の中から、UTXO0を識別するために、Tx0内のUTXO0を識別するインデックスを備える。Tx1の入力202は、アリスが鍵ペアからのアリスの秘密鍵をデータのあらかじめ定義された部分(暗号では「メッセージ」と呼ばれることもある)に適用することによって作成された、アリスの暗号署名を備えるロック解除スクリプト<Sig PA>をさらに備える。有効な署名を提供するためにアリスによって署名される必要があるデータ(または「メッセージ」)は、ロックスクリプトによって、またはノードプロトコルによって、またはこれらの組合せによって定義され得る。
【0056】
新しいトランザクションTx1がブロックチェーンノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトおよびロック解除スクリプトを一緒に実行して、ロック解除スクリプトがロックスクリプトにおいて定義されている条件(この条件は1つまたは複数の基準を備え得る)を満たすかどうかをチェックすることを備える。実施形態では、これは2つのスクリプトを連結することを含む。
<Sig PA> <PA>||[Checksig PA]
上式で、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロック解除スクリプト(この例ではスタックベースの言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Tx0の出力内のロックスクリプトに含まれるようなアリスの公開鍵PAを使用して、Tx1の入力内のロック解除スクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実施するために含まれる必要がある。実施形態では、署名されたデータは、Tx1の全体を備える(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
【0057】
公開-秘密暗号法による認証の詳細は、当業者によく知られている。基本的に、アリスが自分の秘密鍵を使用してメッセージに署名した場合、アリスの公開鍵および平文のメッセージが与えられると、ノード104などの別のエンティティは、メッセージの暗号化バージョンがアリスによって署名されたものに違いないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、これを署名としてメッセージにタグ付けすることを備え、これにより、公開鍵の任意の保持者が署名を認証することができる。したがって、特定のデータ部分またはトランザクションの一部への署名などへの本明細書での言及は、実施形態では、そのデータ部分またはトランザクションの一部のハッシュに署名することを意味することができる点に留意されたい。
【0058】
Tx1内のロック解除スクリプトが、Tx0のロックスクリプト内で指定されている1つまたは複数の条件を満たす場合(つまり、図示される例では、アリスの署名がTx1内で提供され、認証された場合)、ブロックチェーンノード104は、Tx1が有効であるとみなす。これは、ブロックチェーンノード104が保留中のトランザクション154の順序付きプールにTx1を追加することを意味する。ブロックチェーンノード104はまた、トランザクションTx1をネットワーク106内の1つまたは複数の他のブロックチェーンノード104に転送し、その結果、トランザクションがネットワーク106全体に伝搬されるようにする。Tx1が検証されてブロックチェーン150に含まれると、これは、Tx0からのUTXO0を使用済みと定義する。Tx1は、未使用のトランザクション出力203を使用する場合にのみ有効であり得る点に留意されたい。別のトランザクション152によってすでに使用された出力を使用しようとする場合、Tx1は、他のすべての条件が満たされたとしても無効になる。したがって、ブロックチェーンノード104はまた、先行するトランザクションTx0内の参照されたUTXOがすでに使用済みであるかどうか(すなわち、別の有効なトランザクションへの有効な入力をすでに形成しているかどうか)をチェックする必要がある。これは、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である1つの理由である。実際には、所与のノード104は、どのトランザクション152内のどのUTXO203が使用されたかをマーキングする別個のデータベースを維持し得るが、最終的には、UTXOが使用されたかどうかを定義するものは、ブロックチェーン150内の別の有効なトランザクションへの有効な入力をすでに形成しているかどうかである。
【0059】
所与のトランザクション152のすべての出力203において指定された合計金額が、そのすべての入力202によって指定された合計金額より大きい場合、これはほとんどのトランザクションモデルにおける無効のもう1つの根拠になる。したがって、そのようなトランザクションは伝搬されず、ブロック151にも含まれない。
【0060】
UTXOベースのトランザクションモデルでは、所与のUTXOが全体として使用される必要がある点に留意されたい。UTXOにおいて使用済みとして定義された額の一部を「後に残す(leave behind)」ことはできず、別の一部が使用される。しかしながら、次のトランザクションの複数の出力間でUTXOからの額を分割することはできる。たとえば、Tx0内のUTXO0において定義された額は、Tx1内の複数のUTXO間で分割され得る。したがって、アリスが、UTXO0において定義された額のすべてをボブに与えたくない場合、アリスは、リマインダを使用して、Tx1の第2の出力において自分に残りを与えるか、または別の当事者に支払うことができる。
【0061】
実際には、アリスは通常、自分のトランザクション104をブロック151に含めることに成功したビットコインノード104に対する手数料を含む必要もある。アリスがそのような手数料を含めない場合、Tx0は、ブロックチェーンノード104によって拒否される可能性があり、したがって、技術的には有効であっても、伝搬されず、ブロックチェーン150に含められない可能性がある(ノードプロトコルは、ブロックチェーンノード104が望まない場合にトランザクション152を受け入れることを強制しない)。いくつかのプロトコルでは、トランザクション手数料は、それ自体の別個の出力203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、入力202によって指定された合計金額と、所与のトランザクション152の出力203において指定された合計金額との差は、トランザクションを公開するブロックチェーンノード104に自動的に与えられる。たとえば、UTXO0へのポインタがTx1への唯一の入力であり、Tx1は唯一の出力UTXO1を有するとする。UTXO0において指定されているデジタル資産の額がUTXO1において指定されている額より大きい場合、その差がUTXO1を含むブロックを作成するためにプルーフオブワークレースに勝ったノード104によって割り当てられ得る。しかしながら、代替的にまたは追加的に、トランザクション手数料がトランザクション152のUTXO203のうちのそれ自体の1つにおいて明示的に指定され得ることは、必ずしも除外されるものではない。
【0062】
アリスおよびボブのデジタル資産は、ブロックチェーン150内のどこにでもある任意のトランザクション152においてそれらにロックされたUTXOから構成される。したがって、典型的には、所与の当事者103の資産は、ブロックチェーン150全体にわたる様々なトランザクション152のUTXO全体に散在している。ブロックチェーン150内のどこにも、所与の当事者103の総残高を定義する数字は記憶されない。クライアントアプリケーション105におけるウォレット機能の役割は、それぞれの当事者にロックされ、別の前方のトランザクションにおいてまだ使用されていない様々なUTXOすべての値を一緒に照合することである。これは、ビットコインノード104のいずれかに記憶されたブロックチェーン150のコピーにクエリを行うことによって行うことができる。
【0063】
スクリプトコードは、しばしば、概略的に表される(すなわち、正確な言語を使用していない)点に留意されたい。たとえば、特定の機能を表すためにオペレーションコード(オペコード)を使用し得る。「OP_...」は、スクリプト言語の特定のオペコードを指す。一例として、OP_RETURNは、ロックスクリプトの開始時にOP_FALSEが前に置かれると、トランザクション内にデータを記憶することができ、それによってデータをブロックチェーン150に不変的に記録することができる、トランザクションの使用不可能な出力を作成するスクリプト言語のオペコードである。たとえば、データは、ブロックチェーンに記憶することが望まれる文書を備え得る。
【0064】
通常、トランザクションの入力は、公開鍵PAに対応するデジタル署名を含む。実施形態では、これは、楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータの一部分に署名する。いくつかの実施形態では、所与のトランザクションについて、署名は、トランザクション入力の一部、およびトランザクション出力の一部または全部に署名する。署名された出力の特定の部分は、SIGHASHフラグに依存する。SIGHASHフラグは、通常、どの出力が署名されるかを選択するために署名の最後に含まれる4バイトコードである(したがって、署名時に固定される)。
【0065】
ロックスクリプトは、通常それぞれのトランザクションがロックされる当事者の公開鍵を備えるという事実を指して、「scriptPubKey」と呼ばれることがある。ロック解除スクリプトは、通常それが対応する署名を供給するという事実を指して「scriptSig」と呼ばれることがある。しかしながら、より一般的には、UTXOが償還されるための条件が署名を認証することを備えることは、ブロックチェーン150のすべてのアプリケーションにおいて必須ではない。より一般的には、任意の1つまたは複数の条件を定義するためにスクリプト言語を使用することができる。したがって、より一般的な用語「ロックスクリプト(locking script)」および「ロック解除スクリプト(unlocking script)」が好まれ得る。
【0066】
サイドチャネル
図1に示されるように、アリスおよびボブの各々のコンピュータ機器102a、120b上のクライアントアプリケーションは、それぞれ、追加の通信機能を備え得る。この追加の機能は、(いずれかの当事者または第三者の指示で)アリス103aがボブ103bとの別個のサイドチャネル107を確立することを可能にする。サイドチャネル107は、ブロックチェーンネットワークとは別でのデータの交換を可能にする。そのような通信は、「オフチェーン(off-chain)」通信と呼ばれることがある。たとえば、これは、当事者の一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションが(まだ)ブロックチェーンネットワーク106に登録されたり、チェーン150上に進んだりすることなく、アリスとボブとの間でトランザクション152を交換するために使用され得る。この方法でトランザクションを共有することは、「トランザクションテンプレート」の共有と呼ばれることもある。トランザクションテンプレートには、完全なトランザクションを形成するために必要な1つまたは複数の入力および/または出力が欠けている場合がある。代替的にまたは追加的に、サイドチャネル107は、鍵、交渉された額または条件、データコンテンツなどの任意の他のトランザクション関連データを交換するために使用され得る。
【0067】
サイドチャネル107は、ブロックチェーンネットワーク106と同じパケット交換ネットワーク101を介して確立され得る。代替的にまたは追加的に、サイドチャネル301は、モバイルセルラーネットワークなどの異なるネットワーク、またはローカルワイヤレスネットワークなどのローカルエリアネットワーク、またはさらにはアリスのデバイス102aとボブのデバイス102bとの間の直接のワイヤードもしくはワイヤレスリンクを介して確立され得る。一般に、本明細書のどこかで参照されるサイドチャネル107は、「オフチェーン」、すなわちブロックチェーンネットワーク106とは別でデータを交換するための1つまたは複数のネットワーキング技術または通信媒体を介した任意の1つまたは複数のリンクを備え得る。2つ以上のリンクが使用される場合、全体としてのオフチェーンリンクの束または集合は、サイドチャネル107と呼ばれ得る。したがって、アリスおよびボブがサイドチャネル107を介して情報またはデータの特定の部分などを交換すると言われている場合、これは、これらのデータの部分のすべてが全く同じリンクまたは同じタイプのネットワーク上で送信されなければならないことを必ずしも含意するものではない点に留意されたい。
【0068】
トランザクションのセットのメンバーシップを検証する
発明の概要において述べたように、二者(第1および第2の当事者、アリスとボブ)がそれらの二者間で行われるブロックチェーントランザクションのセットのメンバーシップに同意するかどうか(すなわち、どのトランザクションがセットの一部であるかに同意するか)を第三者が検証できるようにすることが望ましい。また、虚偽表示を行った当事者のアイデンティティ(ID)を実証できる方法で行うことが望ましい。たとえば、第三者は、アリスとボブの両者が税務目的で同じトランザクションのセットを申告していることをチェックする税務当局であり得る。あるいは、アリスとボブは会社内の2つの部門であり、第三者は2つの部門が監査目的で同じトランザクションを報告していることをチェックする民間監査人であり得る。別の例として、ブロックチェーンは、宝石または動物製品などの規制商品の出所を追跡するために使用されるコンソーシアムブロックチェーンである可能性がある。この場合、第三者は、一方の当事者が不正なトランザクションを隠そうとしていないかをチェックする規制機関である可能性がある。「アリス」と「ボブ」は単なるラベルであり、それぞれが個人、または企業、政府機関、学術機関、慈善団体またはクラブなどの組織、あるいはそのような組織の中の部門などの下位部門を表す可能性がある点にもう一度留意されたい。
【0069】
図3は、本明細書に開示される実施形態による、例示的なシステムを示している。本システムは、第1の当事者103a(アリス)のコンピュータ機器102a、第2の当事者103b(ボブ)のコンピュータ機器102b、および第三者303(たとえば、税務当局、監査人など)のコンピュータ機器302を備える。以下では、様々なアクションが、第1の当事者、第2の当事者、または第三者などによって実行されるものとして説明されるが、これは、アクションが各当事者のコンピュータ機器102a、102b、302を使用して各当事者103a、103b、303によって実行されることを意味する短縮形であることが理解されよう。
【0070】
第三者303のコンピュータ機器302は、1つまたは複数の地理的サイトに配置された1つまたは複数の物理サーバユニットを備えるサーバシステムの形態をとり得る。第三者303によって実行される本明細書に記載の様々なアクションは、第三者のコンピュータ機器302のメモリに記憶されたソフトウェア(コード)を使用して実行され、第三者のコンピュータ機器302の処理装置上で実行され得る。このメモリは1つまたは複数のメモリユニットを備えてもよく、処理装置は1つまたは複数の処理ユニットを備えてもよい。メモリおよび処理装置(磁気メモリ、電子メモリ、CPU、GPUなど)の実装形態のための様々なオプションに関する同様のコメントは、第1および第2の当事者のコンピュータ機器102a、102bおよび/またはノード104に関連してすでに概説したように適用される。
【0071】
第三者コンピュータ機器302は、少なくともブロックチェーン150上のブロック151に記憶されたトランザクション152を検査できるようにするために、ブロックチェーンネットワーク106に接続される。前述したようにそれらの間でブロックチェーントランザクション152を行うことができるようにするために、第1および第2の当事者のコンピュータ機器102a、102bもブロックチェーンネットワーク106に接続される。さらに、すぐにより詳しく説明されるように、これにより、アリスとボブの間(および、潜在的には自分自身とチャーリーなどの他の当事者との間)で行われたトランザクションに対する証明を含む追加の「証明」トランザクションを記録することができるようになる。たとえば、これは、リーフがセット内のトランザクションのIDであるハッシュツリーのハッシュツリールート(マークルルート)の形態をとることができる。
【0072】
このシステムはまた、第1および第2の当事者の機器102a、102bの各々が第三者に報告を送信できるように構成されている。これらの報告は、それらの間で行われたすべての(とされる)トランザクションの指示を備え、たとえば、トランザクションID(TxID)で示される。
【0073】
システムはまた、前述したように、アリスとボブとの間にオフチェーンサイドチャネル107を備え得る。これにより、アリスとボブは、記録のためにブロックチェーン150に送信する前に、両者の間でトランザクションを交渉することができる。このためのプロトコル、たとえば簡易支払検証(SPV)はまた、虚偽表示が検出された場合に後で識別できるようにする情報の交換を含み得る。
【0074】
図4は、本明細書に開示される実施形態による、3人の当事者によって実行される方法のステップを示している。
【0075】
ステップ410において、アリスとボブは、彼らの間でブロックチェーントランザクションを行う。これは、たとえば図1および図2に関連して前述した技法のうちのいずれかを使用して、アリスとボブの間でトランザクションされるブロックチェーン150上にブロックチェーントランザクションを記録することを含む。出力ベース(たとえば、UTXOベース)のモデルでは、これは、トランザクション152が、アリスにロックされている別の先行するトランザクションの出力を指す入力202を備えることを意味する。現在のトランザクション(アリスとボブの間のもの)の入力202は、アリスの署名を備えるロック解除スクリプトを備え、したがって、先行するトランザクションのポイントされた出力をロック解除する。アリスとボブの間のトランザクションは、出力をボブにロックする、すなわちロック解除するためにボブの署名を必要とするロックスクリプトを備える前方出力203を備える。様々な知られているトランザクションフォーマットによれば、この出力203は、ボブの公開鍵に基づくボブのアドレスを含み得る。典型的なトランザクション形式では、アドレスはボブの公開鍵のハッシュを備える。しかしながら、原理的には、他の何らかの変換、または単に公開鍵自体である可能性がある。ビットコインに使用されるtatなどの典型的な形式では、ハッシュ化された形式になる。これは、ボブの鍵が、典型的にはpay-to-public-key-hash形式のロックスクリプトに現れるためである。対照的に、アリスの公開鍵は、(ハッシュではなく)公開鍵自体がロック解除スクリプトに現れるため、トランザクションに明示的に現れる。
【0076】
一旦形成されると、トランザクションは、アリスまたはボブのいずれかによって、直接または別の中間当事者(図示せず)を介してブロックチェーンネットワーク106に送信され得る。
【0077】
実施形態では、アリスとボブの間のトランザクションを行うステップ410は、オンチェーンに記録されるために送信される前に、アリスとボブの間のトランザクションに同意することを備え得る。これは、オフチェーンサイドチャネル107を介してアリスとボブの間のプロトコルに関与することを備え得る。たとえば、プロトコルはSPV(Simplified Payment Verification)である可能性がある。このプロトコルは、サイドチャネル107を介してアリスとボブの間でトランザクションのテンプレートバージョンを交換することを備え得、各当事者は1つまたは複数の交換を介してトランザクションの一部を記入する。および/またはプロトコルは、当事者間で識別情報を交換して当事者を識別できるようにすることを備え得る(ボブが自分のID情報をアリスに提供する、および/またはその逆)。たとえば、これには、ボブがテンプレートトランザクション内の公開鍵(たとえば、自分の公開鍵のハッシュ)に基づいて自分のアドレスを入力すること、またはトランザクションにアドレスを含めるためにアリスに自分のアドレスまたは公開鍵を提供することを備え得る。交換された識別情報はまた、公開鍵をボブにリンクする情報(テンプレートトランザクションとは別の)を備え得る。
【0078】
現在では、典型的には、当事者は各トランザクションに同じ公開鍵を使用しない。代わりに、当事者はマスタ公開鍵を有し、個々のトランザクションごとに、その特定のトランザクションのロックスクリプトにおいて使用するためにマスタからトランザクション固有の子公開鍵を導出する。これは、とりわけ、子公開鍵またはアドレスだけではボブを識別できないことを意味する。子公開鍵は、導出関数によってマスタ公開鍵に関連付けられ、導出関数は、本明細書で導出情報と呼ばれる追加情報によってパラメータ化される。言い換えれば、子公開鍵は、マスタ公開鍵および1つまたは複数のパラメータの関数であり、パラメータは導出情報であり、関数は導出関数である。導出情報は、トランザクションのインデックス値、あるいは請求書、販売注文、または受領書などのトランザクションの内容や目的に関する情報など、特定のトランザクションに固有の1つまたは複数の要素を備える。これにより、子公開鍵が特定のトランザクションにリンクされる。導出情報はまた、所与のマスタから導出されたすべての子鍵に共通するチェーンコードとして知られる要素を備え得る。適切な子鍵導出関数の詳細は、それ自体、当業者には知られている。
【0079】
ステップ410のプロトコルにおいて、ボブによってアリスに供給される識別情報は、子公開鍵またはアドレスがボブのマスタ公開鍵にリンクされていることをアリスが検証できるように、ボブのマスタ公開鍵および/または導出情報、好ましくは両方を備え得る。いずれにせよ、アリスはまた、ボブが虚偽表示を行ったことが検出された場合、後でそのような情報を第三者303に提供し得る(すぐに詳しく説明する)。ボブは、どのタイプの導出関数を使用しているか(たとえば、どの標準)をアリスに通知する必要がある場合があり、アリスはこれを第三者303に通知する必要がある場合があり、あるいは、使用される導出関数のタイプは単に仮定されたデフォルトである可能性がある。
【0080】
実施形態では、各当事者のマスタ公開鍵は、デジタル認証局(CA、図示せず)によって当事者の公開識別子にリンクされる。すなわち、CAは、CAによって署名され、マスタ公開鍵を公開アイデンティティ(ID)にリンクするデジタル証明書を発行する。公開アイデンティティ(ID)は、たとえば、人間が判読できる当事者の名前および/または住所を備え得る。実施形態では、ステップ410において交換される識別情報は、アリスおよび/またはボブのデジタル証明書のコピーを備え得る。
【0081】
ステップ420において、アリスは、ボブと行ったブロックチェーントランザクションの報告を第三者303に送信する。これは、アリスと第三者303との間のオフチェーンサイドチャネル(図示せず)を介して送信され得る。あるいは、オンチェーンチャネル経由で報告することもでき、すなわち、第三者がチェーン上でそれを見つけられるように、アリスが第三者にアドレス指定された別のブロックチェーントランザクションをチェーン上に記録する(出力ベースのモデルの場合、第三者のアドレスを含む出力があり、第三者がチェーン上でそれを監視し得ることを意味する)。いずれにしても、報告はトランザクションの指示を備える。この指示はトランザクション自体のコピーを備えることがあるが、データ量の点で面倒になる。したがって、トランザクションの指示は、トランザクションの識別子、たとえばトランザクションID(TxID)のみを備えることがより好ましい。
【0082】
ステップ430において、ボブはまた、アリスと行った同じブロックチェーントランザクションの報告を第三者303に送信する(または、少なくとも送信することになっている)。アリスの報告が作成され送信される方法に関する上記のすべては、ボブの報告にも準用することができる。
【0083】
本方法は、アリスとボブが一定期間にわたって両者の間で1つまたは複数の追加のトランザクションを行うことに続く(すなわち、ステップ410の1つまたは複数の追加のインスタンスが実行される)。たとえば、ボブは、アリスと定期的に事業を行っているサプライヤである可能性がある。ステップ420および430は、ステップ410の各インスタンスに対して実行される(または、少なくとも両当事者が誠実に行動している場合には、そうすることになっている)。図4に示されるように、これは、トランザクション410ごとにステップ420および430の別個のインスタンスを備え得る。すなわち、アリスとボブの各々は、各トランザクションを行うたびに、個別の報告メッセージを第三者に送信する。たとえば、報告は、サイドチャネル107上のプロトコルを介してトランザクションに同意したことに応答して、またはトランザクションが実際にブロックチェーン150上のブロック151に記録されたことの確認に応答して送信することができる。
【0084】
しかしながら、その代わりに、アリスが同じ報告メッセージ内で第三者303に示すトランザクションのバッチを(たとえば、メッセージごとのトランザクションIDのリストとして)保存できることも排除されない。たとえば、彼女が関係した対象となるすべてのトランザクションを週、月、または年ごとにまとめた報告を送信することができる。同様のコメントがボブにも当てはまる可能性がある。
【0085】
アリスとボブの各々はまた、他の当事者、たとえばチャーリーと行ったトランザクションについての同様の報告を第三者303に送信し得ることに留意されたい。したがって、たとえば、アリスの報告には、アリスとチャーリーの間のTxIDの報告も含まれることになる。
【0086】
ステップ440において、アリスは、少なくともアリスとボブの間で行われたトランザクション410を含む、自身が関係したトランザクションのセットの証明を生成する。これは、彼女が報告420において第三者303に報告したものと同じセットである必要がある。たとえば、このセットは、特定の時間期間内のすべてのトランザクションまたはすべての対象となるトランザクション(たとえば、特定のしきい値を超えるトランザクション)である可能性がある。たとえば、彼女は毎週、毎月、または毎年の証明を生成し得る。証明は、第三者303に報告したトランザクションの指示(たとえば、トランザクションID)、たとえば、最後の時間期間に報告されたすべてのもの(たとえば、先週、先月、または昨年)に難読化変換(好ましくは、不可逆変換)を適用することによって生成された証明値を備える。実施形態では、変換は、報告されたトランザクションインジケータ(たとえば、トランザクションID)の組合せの1つまたは複数のハッシュを備える、ハッシュベースの関数の形式をとる。
【0087】
簡単な例は、トランザクションインジケータ(たとえば、ID)を連結したハッシュまたはダブルハッシュである。しかしながら、後で明らかになる理由により、証明値はハッシュツリーのルートであることがより好ましい。ハッシュツリーはマークルツリーと呼ばれることもあり、ハッシュルートはマークルルートと呼ばれることもある。この場合、ハッシュツリーのリーフはトランザクションインジケータ(たとえば、ID)である。ツリーの最下層では、各ノードは対応するリーフのうちの1つのハッシュである。ツリーの次の上の層では、各ノードは下の層のノードの異なるそれぞれのサブセット(典型的には2つ)を連結したハッシュであり、単一のルート値に到達するまでツリーの層を上に向かって進む。簡単な例が図6に示されており、本明細書での「+」は連結を表す(ただし、原理的には別のタイプの結合演算を使用することもできる)。本明細書で使用されるマークルツリー、マークルルート、およびマークルパスという用語は、必ずしもバイナリハッシュツリー(すなわち、各層から次の層に結合されたサブセットが2つのノードのみである場合)を意味するわけではないが、これが典型的には最も一般的な実装形態である点に留意されたい。
【0088】
マークルツリー(ハッシュツリー)は、所与のリーフがセットのメンバーであることを証明するには、リーフの値、マークルルート、およびリーフとルート間のマークルパス(すなわち、リーフからルートまでのパスに沿ったすべてのハッシュの値)のみが必要であるという便利な特性を有する。すべてのリーフの値は必要ない。これにより、たとえば、TxID_2、TxID_3、TxID_4のいずれかなどを譲渡すること、または知ることなく、TxID_1がセットのメンバーであることを提供できるようになる。これは、プライバシ上の理由で役立つ。
【0089】
証明がどのような形式をとるとしても、次いで、アリスは、この証明をブロックチェーン150上のさらなるトランザクションに記録する。これは、本明細書では証明トランザクションと呼ばれ得る。これは、アリスとボブ、アリスとチャーリーなどの間のトランザクションとは別のものである。証明トランザクションは、第三者がチェーン上で見つけやすくするために、第三者303にアドレス指定される場合がある。出力ベースのモデル(たとえば、UTXOベースのモデル)では、これは、証明トランザクションの出力203が第三者303のアドレスを備えることを意味する。たとえば、アドレスは、第三者の公開鍵、たとえばそれらの公開鍵のハッシュに基づいている場合があり、出力はその公開鍵にロックされ、ロックを解除するには第三者303の対応する秘密鍵が必要になる場合がある。使用されているブロックチェーンプロトコルがゼロ値の出力を許可しない場合、この出力において定義された額は微塵の(無視できる)値である可能性もあれば、第三者303への実際の実質的な支払い(たとえば、実際の税金の支払い、または監査サービスに対する支払い)である可能性もある。
【0090】
ステップ450において、ボブは、少なくともアリスとボブの間で行われたトランザクション410を含む、彼が関係したトランザクションのセットの証明を生成する。アリスの証明に関する上記の説明は、ボブにも準用される。ボブは必ずしもアリスと同じ形式の証明を使用する必要はないが、実施形態では使用する(たとえば、マークルルート)。
【0091】
ステップ460において、第三者303は、ブロックチェーン150上のアリスとボブからの証明トランザクションを監視する。実施形態では、これは、たとえば、トランザクションの出力に第三者の公開鍵があることに基づいて、第三者303にアドレス指定されたトランザクションについてブロックチェーン150を監視することを備え得る。実際には、この監視は、定義された活動についてブロックチェーン150を監視するサービスに加入する第三者303によって実装することができる。
【0092】
代替実施形態では、第三者303はブロックチェーン150を監視する必要がなく、その代わりに、アリスとボブが第三者を変更して、チェーン上の証明トランザクションの存在を確認し、たとえば、トランザクションへのポインタを送信することによって、第三者を証明トランザクションに誘導する。
【0093】
図5は、本明細書に開示される実施形態による、第三者303によって実行され得る方法を示している。
【0094】
ステップ510において、第三者303は、ブロックチェーン150上のアリスの証明トランザクションからアリスの証明値(たとえば、マークルルートMR)を取得する。ステップ520において、第三者303は、アリスの報告メッセージ420から受信したトランザクションインジケータのセット(たとえば、ID)から証明値(たとえば、マークルルートMR')を計算する。これら2つのステップは、どちらの順序で実行されてもよい。ステップ530において、第三者303は、これらが等しいかどうかをチェックする。等しくない場合、ステップ540において、第三者はアリスに彼女の証明を再提出するように依頼し、ステップ530にループバックし得る。
【0095】
ステップ510から540も、ボブに関して準用して実行される。
【0096】
アリスの、認証され、計算された証明値が一致すると仮定すると(または、一旦一致すると)、同様にボブの認証値も一致すると、次いで、方法はステップ550に進む。ここで、第三者303は、アリスによって報告された(420)すべてのトランザクションがボブによっても報告された(430)ことをチェックする。これは、両当事者によって報告されたトランザクションインジケータ(たとえば、ID)を比較することによって行われる。これは、たとえば、週、月、年などの所与の時間期間内に示されたすべてのトランザクションをチェックすることを備えることができる。アリスとボブが同じトランザクションのセットを報告した場合(たとえば、所与の時間期間にわたって)、おそらく両方とも正直であり、疑わしいものは何もなく、方法は終了する。実施形態では、このシナリオでは、第三者303は、報告されたトランザクションIDをストレージから破棄し得る(おそらく、税務目的で示されたトランザクションを処理するなどの何らかの処理を実行した後、および/または定義された保存期間の間それらを保持した後)。
【0097】
一方、アリスとボブの一方が、もう一方が報告しておらず、報告することが予想されていたトランザクションを報告した場合(たとえば、それが所与の時間期間、たとえば先週、先月、または去年からのトランザクションであったため)、一方の当事者の報告には存在し、もう一方の当事者の報告には存在しないトランザクションは、疑わしいトランザクションとして扱われる。このシナリオでは、方法はステップ560に分岐する。ここで、第三者303は、一方の当事者(たとえば、アリス)が報告し、他方の当事者(たとえば、ボブ)が報告していないトランザクションの指示(たとえば、トランザクションID)を決定する。これは、アリスの報告420から決定することができる。次いで、ステップ570において、第三者303は、報告しなかった当事者(たとえば、ボブ)が遵守していないことを識別し、その当事者に対して措置を講じる。実施形態では、これは、証拠として使用できるように、ボブのアイデンティティ(ID)を確立するための情報を取得することを備え得る。
【0098】
遵守していないのがボブであると仮定すると、不一致報告の決定に応じて、第三者303は、サイドチャネル107を介してトランザクションを交渉する段階410中にボブから最初に受け取った識別情報の一部またはすべてを供給するようアリスに求める要求を送信し得る。これは、前述した導出情報(たとえば、チェーンコード、インデックス、および/または請求書)を備え得る。ボブのマスタ公開鍵、導出情報、および使用される導出関数の知られている形式(タイプ)が与えられると、第三者303は、疑わしいトランザクションに対するボブの子公開鍵が何であるべきかを計算することができる。ボブのマスタ公開鍵は、要求に応じてアリスによって第三者303に提供されてもよく、サービスの使用を開始する前の初期登録段階の間に、ボブによって事前に供給されていてもよい。使用される導出関数のタイプは、デフォルトであってもよく、アリスによって通知されてもよく、またはボブによって事前に登録されていてもよい。第三者303はまた、チェーン上の疑わしいトランザクションから読み取るか、アリスから受信することによって、疑わしいトランザクションにおいて実際に使用されたアドレスを取得し得る。次いで、第三者303は、計算された子公開鍵がボブのアドレスに使用されたものと同じであるかどうかを決定するために、これを計算された子公開鍵と比較することができる。たとえば、アドレスが公開鍵のハッシュである場合、この比較は、計算された公開鍵のハッシュ化と、その結果とアドレスの比較を備える。それらが一致すると仮定すると、疑わしいトランザクションがボブのマスタ公開鍵にリンクされていることが確立される。これは、虚偽表示を行ったのがボブであったという証拠として、警察や裁判所などの第4の当事者に提出するために使用され得る。
【0099】
完全を期すために、チェックされているのがアリスの挙動である場合、典型的なトランザクション形式では、公開鍵自体(ハッシュではなく)がロック解除スクリプトに現れるため、アリスの子公開鍵がトランザクション内に明示的に表れる点に留意されたい。したがって、この場合、計算された子公開鍵との比較にハッシュを含める必要はない。また、原則として、代替トランザクション形式では、ボブのアドレスは単純に公開鍵のコピーを備え、必ずしもハッシュなどの公開鍵の変換ではない。
【0100】
子公開鍵とマスタ公開鍵の間のリンクに加えて、ボブのマスタ公開鍵は、認証局(CA)によって発行されたデジタル証明書によってボブの公開アイデンティティ(ID)にリンクされる場合がある。2つを結び付ける証明書は、プロトコル410中にボブからアリスによって取得され、次いで、疑わしいトランザクションが検出されたときの要求に応じてアリスによって第三者303に供給され得る。あるいは、証明書はボブによって事前に第三者303に登録されている可能性もあり、またはCAから直接証明書を要求する第三者303によって取得されてもよい。いずれにせよ、これはボブとして知られる当事者が実際に虚偽表示を行ったという証拠の一部を形成する可能性がある。
【0101】
任意で、アリスとボブの両者が、サービスを使用する前に、マスタ公開鍵を第三者に登録する(303)。いずれの場合でもボブはアリスにマスタ鍵を渡す必要があるため(上記の理由により)、これは必ずしも要件ではない。マスタ鍵は、認証局(CA)によって署名されることが好ましい。これは、第三者自体、または別のCAである可能性がある。
【0102】
実施形態では、ボブは、セットアップ段階410において次の3つをアリスに与える:彼のマスタ鍵、彼のマスタ鍵を彼のアイデンティティ(ID)にリンクするCAからの証明書、および子導出情報。記録に不一致がある場合、アリスは3つすべてを第三者303に送信し得る。この場合、第三者303は、ボブのアイデンティティ(ID)とトランザクションの間のリンクを証明するために必要なものをすべて有している。しかしながら、代替の実装形態では、第三者303は、登録段階からボブのマスタ公開鍵および/または証明書をすでに有していてもよく、またはCAから証明書を直接取得してもよい。したがって、他のいくつかの実施形態では、アリスは導出情報のみを送信し得る。
【0103】
実施形態では、第三者303は、ボブの不遵守(すなわち、彼の虚偽表示)の証拠を記憶し得る。これを行うために、第三者303は、アリスとボブの完全な報告から報告されたすべての指示(たとえば、すべてのトランザクションID)を記憶する必要はない。第三者303が実際に記憶する必要があるのは、不正行為の証拠だけである。これを表示するために必要なのは1つのトランザクションだけである。したがって、第三者303が疑わしいトランザクションを識別すると、そのトランザクション(または、その識別子、たとえばTxID)、証明、およびトランザクションにおけるボブのアイデンティティ(ID)へのリンクを記憶する。マークルルートの場合、マークルパスも記憶する。次いで、第三者303は、報告されたトランザクション指示(たとえば、ID)の残りを自由に削除することができる。第三者303には、1つのトランザクションだけが残される。ボブは、このトランザクションが彼の公開されたオンチェーン証明に含まれていることを証明できないため、これは不正行為の証拠を提供する(たとえば、それが彼のマークルツリーに含まれていたことを証明することはできない)。
【0104】
マークルツリーの実装形態は、プライバシにとって特に有利である可能性がある。アリスのマークルツリーのリーフは、ボブとチャーリーなどの他の当事者の両方により行われたトランザクションの指示(たとえば、ID)を含み得る。チャーリーがアリスと特定のトランザクションのセットを行ったという事実は、秘密または機密である可能性があり、チャーリーに虚偽表示の疑いがないと仮定すると、第4の当事者(たとえば、警察または裁判所)に提示される証拠において、この情報を漏らす必要がないことが望ましい。前述したように、マークルツリーを使用すると、ルートとマークルパスのみが与えられた場合に、候補リーフがセットのメンバーであることを証明することができる。したがって、証拠として記憶および/または提示される必要があるのはこれのみであり、チャーリーとアリスとのトランザクションの指示(たとえば、TxID)は必要ない。アリスが予想されるすべてのトランザクションを第三者303に送信したと仮定しているため、第三者303は、関連するマークルパスを決定することができる。第三者303が(特定の順序で)すべてのトランザクションを有している場合、アリスのマークルツリーを構築し、マークルルートを再作成することができる。ツリー全体がわかれば、任意のリーフへのパスを容易に計算することができる。
【0105】
注:上記では、アリスとボブ、アリスとチャーリーなどの間のすべてのトランザクション、および第1と第2の証明トランザクション、ならびにオンチェーンシグナリングに使用される任意の他のトランザクションがすべて同じブロックチェーン150上に記録されると説明したが、これは必ずしもそうである必要はない。たとえば、アリスとボブの間のトランザクションはあるブロックチェーンのトランザクションであるが、証明は別のブロックチェーンに記録される可能性がある。あるいは、アリスとボブの間のトランザクションは、異なるブロックチェーンを介して行われるトランザクションを含む可能性がある。あるいは、アリスとボブがあるブロックチェーンを介してトランザクションし、アリスとチャーリーが別のブロックチェーンを介してトランザクションすることもある。
【0106】
本明細書ではアリスからボブへのトランザクションに関して例を説明したが、ボブからアリス、またはアリスとチャーリーの間などのトランザクションにも同様の方法を適用することができる点にも留意されたい。また、アリスがボブによる虚偽表示の識別を支援するという点で例示されているが、本方法は逆にも同様に適用することができる(ボブが支払者であるか受取人であるかに関係なく)。
【0107】
応用例-納税申告
以下では、ブロックチェーン公開台帳の透明性と匿名性を、税務コンプライアンスを奨励するために使用することができる、開示されたシステムの応用例を検討する。特に、税金不遵守のユーザを識別するために、ブロックチェーン上に納税領収書を記録または「提出(lodging)」するシステムを提供するために、これを使用することができる。システムは、多くの不遵守ユーザを識別するために、一部の誠実なユーザのみに依存する。
【0108】
ビットコインブロックチェーンなどの少なくとも一部のブロックチェーンのプライバシモデルは、アイデンティティ(ID)情報がオンチェーンのトランザクション情報からファイアウォールで保護されていることを意味する。しかしながら、アイデンティティ(ID)情報は、オフチェーンのトランザクション当事者間で引き続き交換することができる。実際、既存の規制では、多くの場合、トランザクション当事者間でアイデンティティ(ID)情報を交換する必要がある。たとえば、第5回マネーロンダリング防止指令(5th Anti-Money Laundering Directive、AMLD5)では、英国およびヨーロッパ内で150ユーロを超える取引を行う場合、エンティティ(個人および/または企業)にアイデンティティ(ID)情報を報告するよう義務付けている。
【0109】
開示されたシステムの実施形態は、以下のように動作し得る。アリスとボブの2者間のブロックチェーントランザクションを考えてみる。AML規制に遵守するために、アリスとボブはオフチェーンで情報を交換し、これにより彼らのアイデンティティ(ID)がトランザクションにリンクされることが証明されている。アリスとボブは、トランザクションID (TxID)をオフチェーンの同じ税務当局に個別に送信する。月に1度、アリスとボブはオンチェーンでのトランザクションのマークルルートを税務当局に記録する。アリスとボブは両者とも同じ当局にTxIDを提出するため、当局は各TxIDを2回受け取る必要がある。たとえば、アリスからTxIDを1つだけ受け取った場合、彼らは調査して、誰とトランザクションしているのかを尋ねる。アリスはボブだと答え、彼のアイデンティティ(ID)からトランザクションへの証明可能なリンクを当局に提供する。税務当局はこの時点で、ボブの不遵守の証拠を有している。
【0110】
実装形態の例として、以下のサブセクション1ではビットコイントランザクションを詳細に分析し、アイデンティティ(ID)への証明可能なリンクをオフチェーンでどのように確立できるかを説明する。サブセクション2では、税金不遵守を識別するためのシステム(または、より一般的には、アイデンティティ(ID)へのリンクを有する非メンバーシップを識別する方法)について説明する。サブセクション3では、不遵守を識別するプロセスを第三者にどの程度委託できるかについて説明する。これが機能するのは、IDへのオフチェーンファイアウォールが非遵守ユーザに対してのみ侵害されるためである。
【0111】
1.ビットコイントランザクションの特徴
アリスからボブへのx satoshisのビットコイントランザクションを考えてみる。トランザクションは次のようになる。
【0112】
【表1】
【0113】
これは単なる通常の取引である。その構造は、まったく変更する必要がない。同様の形式は、他の出力ベース(たとえば、UTXOベース)モデルでも使用され得る。
【0114】
簡単にするために、ここではアリスへの変更などの追加の入力または出力は考慮されていない。ロック解除スクリプトは、アリスによって制御される公開鍵
【0115】
【数1】
【0116】
からの有効な署名を含む。ロックスクリプトはPay-to-Public-Key-Hash形式であり、Bobによって制御される公開鍵
【0117】
【数2】
【0118】
からの署名が使用される必要があることを意味する。ペイロードデータには、オプションの使用不可能なOP_FALSE OP_RETURN出力が含まれている。また、OP_DROPまたは他のトランザクションプロトコルにおけるOP_RETUTNなど、他の方法で含まれてもよい。
【0119】
通常、アリスはマスタ公開鍵PKAと、場合によってはチェーンコードCAと呼ばれる追加情報を持つウォレットを所有する。このマスタ鍵は、たとえば、デジタル証明書を発行する認証局(CA)によって、アリスのアイデンティティ(ID)に関連付けられ得る。しかしながら、チェーン上には現れない。代わりに、アリスがトランザクションにおいて使用する公開鍵は
【0120】
【数3】
【0121】
であり、これはアリスのマスタ鍵ではない。公開鍵
【0122】
【数4】
【0123】
は通常、PKAから決定論的な方法で導出される。キーがどのように導出されるのかを知らなければ、トランザクションTxID1を見ている人は、それにアリスが管理するキーが含まれていることに気づかない。
【0124】
トランザクションTxID1には、ペイロードデータを使用不可能な出力に記憶するオプションも含まれている(これは、トランザクションにおいてデータを記憶する一般的な位置であり、OP_DROPコマンドが続くロック/ロック解除スクリプトに含めることもできる)。ペイロードデータは、トランザクションに関するメタデータを含み得る。たとえば、
・購入した品目、個別のコスト、販売者名、タイムスタンプなどの一般的な領収書データ。
・関係する事業の登録および税コード。
・関係する個人のアイデンティティ(ID)情報、および/または
・領収書
このデータはどれも暗号化されており、アリス、ボブ、またはその両者が復号鍵を利用し得る。あるいは、このデータのハッシュコミットがペイロードにおいて与えられるすべてである場合もある。これにより、詳細を与えなくてもメタデータをトランザクションに証明可能にリンクすることができる(ハッシュプリイメージの十分なエントロピを確保するために、いくらかのソルトを含める必要がある場合がある)。ハッシュコミットが使用される場合、ハッシュプリイメージをデータベースに記憶する必要がある。そのようなデータベースは、アリス、ボブ、または第三者によって維持される可能性がある。ネットワークの参加者によってデータが複製される分散ハッシュテーブル(DHT)である場合もある。
【0125】
トランザクション自体が、税金の支払いに関連する入力と出力を含み得る。本明細書では詳細には立ち入らない。税金は必ずしもブロックチェーントランザクションにおいて支払われる必要はないが、それは可能性の1つである。
【0126】
子鍵はマスタ鍵に証明可能にリンクされている可能性がある。TxID1などのトランザクションは、ボブによって管理される新しい公開鍵
【0127】
【数5】
【0128】
の導入を含む。前述したように、この公開鍵はボブのマスタ鍵PKBにリンクされている可能性があり、それがさらに彼のアイデンティティ(ID)にリンクされている可能性がある。これを行うには通常2つの方法がある。
【0129】
1)BIP32に似たプロセス。たとえば、
【0130】
【数6】
【0131】
が、
【0132】
【数7】
【0133】
によって与えられる強化されていない子鍵導出パスをたどる可能性がある。
2)WP42に似たプロセス。ここでは、アリスとボブのマスタ鍵と、アリスとボブの両者に知られている請求書または他のメタデータなどの第3のデータmが必要である。たとえば、公開鍵
【0134】
【数8】
【0135】
は次のように導出することができる。
【0136】
【数9】
【0137】
これには、アリスとボブの両者が
【0138】
【数10】
【0139】
をPKA、PKB、mに証明可能にリンクすることができるという特徴がある。
【0140】
プロセス(1)のインデックスiは、BIP32ウォレット復元の機能を維持する方法で、請求書mまたは公開鍵PKAなどの他のデータにリンクされ得る。これにより、両方の手法が統合される。また、複数の出力と複数のトランザクションを同じ請求書mにどのようにリンクできるかについても調査された。これにより、Satoshi値がよく知られている状況で、アリスとボブ間のトランザクションのプライバシを強化することができる。
【0141】
2.納税および不遵守の識別システム
このサブセクションでは、税務当局が税金不遵守である可能性のあるエンティティを識別することができるシステムについて説明する。簡単にするために、このシステムではアリスとボブの2つのエンティティのみを考慮する。アリスとボブは、上記のサブセクション1において述べたマスタ公開鍵PKAおよびPKBを税務当局に登録する必要がある。これは、税務当局からの証明書または税コードの発行を通じて確立することができる。
【0142】
税務当局が、納税領収書の記録または「提出」のために使用されるアドレスを表すよく知られている公開鍵PKTを持っていると仮定する。このアカウントは、アリスとボブからのオンチェーン納税申告書を受け取り、統合するためだけに予約されている。公開鍵PKTは単なる警告アドレスであり、税務当局が支払いを受領または送金する方法ではない。
【0143】
このシステムは、納税申告と不遵守の識別という2つの段階を含む。各段階の詳細は次のとおりである。
【0144】
納税申告:以下は、アリスの視点からのプロトコルを示している。しかし、それはボブの視点と同じである。これは、図4に概略的に示されている方法の例である。
1.アリスとボブがトランザクションを構築する。アリスとボブは共同でトランザクションTxID1を作成し、アリスからボブに資金を転送する。TxID1の概略図はセクション1.1において参照されている。また、アリスとボブは、トランザクションにおいて使用される公開鍵にIDを証明可能にリンクしている個人を特定できる情報を交換する。たとえば、セクション1.1において説明した子鍵の導出に必要なデータを提供する場合がある。
また、自分のアイデンティティ(ID)へのリンクも送信する(オフチェーン)。ボブの安全を確保するために、ボブはまずアリスに自分のアイデンティティ(ID)情報を送信するよう依頼する必要がある。次いで、ボブはBIP270のようなプロセスと同様に、自分のアイデンティティ(ID)情報とともにトランザクションテンプレートをアリスに送信することができる。アリスはトランザクションに署名し、トランザクションを有効にする。(ボブが最初に自分のアイデンティティ(ID)情報をアリスに送信した場合、アリスは自分のアイデンティティ(ID)情報を明かさずにメッセージに署名し得る。)
アリスまたはボブのいずれかがトランザクションをビットコインネットワークに提出し、トランザクションが要求どおりの確実性で受け入れられたことをチェックする。
2.次いで、アリスとボブはオフチェーンの税務当局にトランザクションを報告する。アリスとボブは、トランザクションID TxID1を税務当局に個別に報告する。これはオフチェーンメッセージを税務当局に送信することを介して行われる可能性があるが、本明細書ではトランザクションIDを報告する方法については指定しない。
3.アリスとボブ間のすべてのトランザクションTxID1は、アリスによって1回、ボブによって1回の計2回税務当局に報告する必要がある。税務当局は、これらのトランザクションを記憶するために内部データベースを構築し得る。これを行うことで、2つのエンティティ間の各トランザクションを効果的に照合することができる。
4.通常の時間期間の後、たとえば1か月後、アリスはすべてのトランザクションTxID1…TxIDNを収集し、マークルルートMRAを有するマークルツリーを構築する。これは、マークルルートがビットコインブロック内で構築される方法と似ているが、本明細書ではアリスに関連するトランザクションのみが使用される。
5.アリスは、税務当局の公開鍵PKTに対するトランザクションTxIDAを作成する。ボブも同じことをする。トランザクションTxIDAは、アリスのアイデンティティ(ID)公開鍵で署名されたトランザクションのマークルルートMRAを含む。マークルルートは、セクション1.1において参照した、使用不可能な出力のペイロードデータである可能性がある。
6.アリスとボブは、オンチェーンの税務当局にマークルルートを提出する。トランザクションTxIDAとTxIDBがビットコインネットワーク上で受け入れられると、税務当局はマークルルートMRAとMRBを受け取る。この方法でトランザクションをオンチェーンに送信すると、その月の納税領収書に対するアリスの証明の不変の記録が作成される。
【0145】
税金不順守の識別:これは、図5に概略的に示されている方法の例である。
1.税務当局はトランザクションTxIDAからマークルルートMRAを受け取る。
2.次いで、税務当局は、それが予想どおりであることを確認するために、アリスがその月に送信したすべてのTxIDのマークルルートMR'Aを計算する。
3.MRA=MR'A(すなわち、予想どおりに証明されたマークルルートである)をチェックする。そうでない場合、税務当局はアリスに新しいMRAを再提出するよう要求する。
4.ボブに対して手順1~3を繰り返す。
5.各トランザクションが2回確認されていることをチェックする。アリスとボブの間のすべてのTxIDが納税申告の段階で税務当局に送信されたことを思い出されたい。この段階では、税務当局は、その月に送信されたすべてのTxIDが、アリスによって1回、ボブによって1回の計2回報告されていることをチェックする。「はい」の場合、税務当局はチェックプロセスを停止し、アリスとボブがその月に遵守していることを識別する。
6.どのトランザクションが1回だけ確認されたかを識別し、このトランザクションの情報を要求する。税務当局は、トランザクションTxID2が一方の当事者、たとえばアリスによってのみ報告されていることを識別する。税務当局はアリスにTxID2においてトランザクションしていた相手は誰なのかを尋ねた。アリスは税務当局に、それはボブだったと告げた。税務当局は、アリスに対し、TxID2におけるボブのアイデンティティ(ID)への証明可能なリンクを提供するよう要求する場合がある。
7.税務当局はこの時点でボブが遵守していないことを識別し、適切に罰する。
【0146】
図5は、税務当局などの第三者303が、マークルルート(または、他のそのような証明)と、アリスとボブが送信したすべてのトランザクションのリストをチェックすることによって、不遵守を識別するプロセスを示している。簡潔にするために、この図では、アリスまたはボブのマークルルートを指定する代わりに、例としてMR(マークルルート)のみを示している。
【0147】
MRとMR'が等しいということは、オンチェーンの税務記録が税務当局の税務記録と一致することを示すだけであり、アリスまたはボブが遵守していることを意味するわけではない点に留意されたい。たとえば、その月のアリスとボブの間の4つのトランザクションはそれぞれ、TxID1、TxID2、TxID3、TxID4である。アリスは、4つのトランザクションIDすべてと、これらのトランザクションから形成されたマークルルートMRA_4を税務当局に報告する。ボブは、3つのトランザクションID TxID1、TxID2、TxID3と、対応するマークルルートMRB_3のみを税務当局に報告する。税務当局はこの時点で、MRA_4=MR'A_4とMRB_3=MR'B_3を知っている。しかし、ステップ5および6において、税務当局は、ボブがTxID4を報告しておらず、したがって遵守していないことを識別する。さらに、マークルルートMRB_3は、ボブが納税記録を改ざんしたり、不法に税金を過少納付しようとしたりする証拠である。
【0148】
3.第三者プロバイダへのアウトソーシング
このサブセクションでは、税務当局が不遵守をより効果的に識別できるように、システム内の新しい役割として第三者サービスプロバイダ(SP)を紹介する。
【0149】
上記のサブセクション2において説明したように、税金不遵守を識別するために、税務当局はマークルルートと各TxIDをチェックする。実際、アリスとボブの間に多数のTxIDがある場合、および/または税務当局によって多数のエンティティを識別する必要がある場合、これは税務当局にとって大きな負担となる可能性がある。
【0150】
したがって、不一致トランザクションを識別する際の税務当局の負担を軽減するために、第三者サービスプロバイダが税務当局に代わってエンティティの活動を監視する。「監視(monitor)」という用語の意味は、ブロックチェーンネットワークからの情報(税務当局の公開鍵PKTに送信されるあらゆるトランザクション)を収集すること、収集した情報を報告すること、オフチェーンで報告されたTxIDのエンティティに関連付けられる公開鍵の所有権を検証すること、比較されたハッシュ値(たとえば、マークルルート)間の同一性をチェックすることを備える。
【0151】
ビットコインの所有権を検証することは、税不遵守識別システムにおいて非常に重要かつ不可欠である。我々のシステムにおける所有権検証には、DHTとビットコインブロックチェーンを使用することによる既存の方法が適している。
【0152】
上記のサブセクション1におけるDHTは、参加者によってデータが記憶および維持されるデータベースと見なされる。本明細書で適用されるのは、アリス、ボブ、税務当局、およびサービスプロバイダが参加ノードであり、データはDHT上のすべての鍵と値のペアおよびメタデータである。
【0153】
監視は、オンチェーンとオフチェーンの2つの部分に分類され得る。オンチェーン部分は、公開鍵PKTに送信される任意のトランザクションを監視し、オフチェーン監視は、送信された各TxIDエンティティを照合する。
【0154】
オフチェーン監視は、税務当局がサービスプロバイダに、アリスとボブから送信されたすべてのTxIDを受信することを許可することである。サービスプロバイダはブロックチェーン上の各TxIDの完全なデータを取得し、次いで、そのTxID上に送信者、たとえばアリスに関連付けられる公開鍵が少なくとも1つあることを決定する。ボブが送信したすべてのTxIDについても同様である。TxIDが一致しない場合、サービスプロバイダがそれらを税務当局に報告する。
【0155】
オンチェーンモニタリングは、税務当局がサービスプロバイダに、ブロックチェーン上の税務当局の公開鍵PKTに送信されるトランザクションを監視することを許可することである。税務当局は公開鍵PKTをサービスプロバイダに登録し、PKTに送信される任意のトランザクションを監視する。サービスプロバイダは、マークルトランザクションTxIDAの送信者を識別し、TxIDBも同様である。SPはマークルルートMRを抽出し、MR'を計算し、MRとMR'が等しいかどうかをチェックし、最後に結果を報告するためにメッセージを税務当局に送信する。
【0156】
税務当局はSPのオンチェーンおよびオフチェーンの監視からの報告を検討し、何らかの処罰措置を講じる。サービスプロバイダがオフチェーン監視において識別しているため、税務当局はそのTxIDの相手方が誰かをアリスに尋ねる必要がない場合がある点に留意されたい。さらに、オフチェーン監視により完全な記録が提供されるため、税務当局は2つのエンティティ間のすべてのトランザクションを即座に照合し、不一致を識別することができる。
【0157】
結論
開示された技法の他の変形または使用事例は、本明細書の開示が与えられれば、当業者には明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
【0158】
たとえば、上記のいくつかの実施形態は、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104に関して説明されている。しかしながら、ビットコインブロックチェーンはブロックチェーン150の特定の一例であり、上記の説明は一般に任意のブロックチェーンに適用し得ることが理解されるであろう。すなわち、本発明は決してビットコインブロックチェーンに限定されるものではない。より一般的には、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104に対する上記の言及は、それぞれ、ブロックチェーンネットワーク106、ブロックチェーン150、およびブロックチェーンノード104の言及と置き換えられ得る。ブロックチェーン、ブロックチェーンネットワーク、および/またはブロックチェーンノードは、上述のように、ビットコインブロックチェーン150、ビットコインネットワーク106、およびビットコインノード104の記載された特性のうちのいくつか、またはすべてを共有し得る。
【0159】
本発明の好ましい実施形態では、ブロックチェーンネットワーク106はビットコインネットワークであり、ビットコインノード104は、ブロックチェーン150のブロック151を作成、公開、伝搬、および記憶する上述の機能の少なくともすべてを実施する。これらの機能のすべてではなく、1つまたは一部のみを実施する他のネットワークエンティティ(または、ネットワーク要素)が存在する可能性も排除されない。すなわち、ネットワークエンティティは、ブロックを作成および公開することなく、ブロックを伝搬および/または記憶する機能を実施し得る(これらのエンティティは、好ましいビットコインネットワーク106のノードとはみなされないことを思い出されたい)。
【0160】
本発明の他の実施形態では、ブロックチェーンネットワーク106はビットコインネットワークでなくてもよい。これらの実施形態では、ノードが、ブロックチェーン150のブロック151を作成、公開、伝搬、および記憶する機能のすべてではないが、少なくとも1つまたはいくつかを実施し得ることを排除するものではない。たとえば、それらの他のブロックチェーンネットワークでは、「ノード」は、ブロック151を作成および公開するが、それらのブロック151を記憶および/または他のノードに伝搬しないように構成されたネットワークエンティティを指すために使用され得る。
【0161】
さらにより一般的には、上記の「ビットコインノード」104という用語への言及は、「ネットワークエンティティ」または「ネットワーク要素」という用語に置き換えられてよく、そのようなエンティティ/要素は、ブロックの作成、公開、伝搬、および記憶の役割のいくつか、またはすべてを実施するように構成されている。そのようなネットワークエンティティ/要素の機能は、ブロックチェーンノード104を参照して上で説明したのと同じ方法で、ハードウェアに実装され得る。
【0162】
上記の実施形態は、単なる例として説明されたものであることが理解されよう。より一般的には、以下のステートメントのいずれか1つまたは複数に従って、方法、装置、またはプログラムが提供され得る。
【0163】
ステートメント1:第1の当事者と第2の当事者との間でトランザクションされるブロックチェーントランザクションのセットのメンバーシップについて第1の当事者と第2の当事者が合意するかどうかを決定するコンピュータ実装方法であって、第三者によって、
第1の当事者から、前記セット内の少なくともブロックチェーントランザクションを含む、第1の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第1の報告を受信するステップであって、第1の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップと、
第2の当事者から、前記セット内のブロックチェーントランザクションの少なくとも一部または全部を含む、第2の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第2の報告を受信するステップであって、第2の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップと、
少なくとも1つの第1のブロックチェーントランザクションにおいて第1の当事者によって記録された第1の証明をブロックチェーン上で観察するステップであって、第1の証明が、第1の報告において報告された指示に第1の変換を適用した第1の当事者から導出された第1の証明値を備える、ステップと、
第2のブロックチェーントランザクションにおいて第2の当事者によって記録された第2の証明をブロックチェーン上で観察するステップであって、第2の証明が、第2の報告において報告された指示に第2の変換を適用した第2の当事者から導出された第2の証明値を備え、第1および第2のブロックチェーントランザクションが前記セットとは別個である、ステップと、
第1の報告において報告された指示に第1の変換を適用し、ブロックチェーンからの第1の証明と比較することによって、第1の報告が第1の証明と一致していることをチェックするステップと、
第2の報告において報告された指示に第2の変換を適用し、ブロックチェーンからの第2の証明と比較することによって、第2の報告が第2の証明と一致していることをチェックするステップと、
第1の報告における指示が第2の報告における指示と同じメンバーのセットを示しているかどうかを決定するステップと
を備える、コンピュータ実装方法。
【0164】
ステートメント2:第1および第2の証明値の各々がハッシュ値を備え、第1および第2の変換の各々が少なくとも1つのハッシュ関数を備える、ステートメント1に記載の方法。
【0165】
ステートメント3:第1の証明値が第1のハッシュツリーのルートを備え、第1の報告において報告される指示の各々が第1のハッシュツリーのリーフである、および/または、
第2の証明値が第2のハッシュツリーのルートを備え、第2の報告において報告される指示の各々が第2のハッシュツリーのリーフである
のうちの一方または両方である、ステートメント2に記載の方法。
【0166】
ステートメント4:第1および第2の変換が同じ形式の変換である、ステートメント1から3のいずれか1つに記載の方法。
【0167】
ステートメント5:第1および第2の報告における指示が、それぞれ第1および第2の報告において報告されたトランザクションのトランザクションIDを備える、ステートメント1から4のいずれか1つに記載の方法。
【0168】
ステートメント6:第1および第2のトランザクションの各々が、第三者の公開鍵にアドレス指定される、ステートメント1から5のいずれか1つに記載の方法。
【0169】
ステートメント7:第1および第2のトランザクションの各々が、ロックスクリプトを備える出力を備え、ロックスクリプトが、第三者の公開鍵に基づくアドレスを含めることによって第三者にアドレス指定され、ロックを解除するためには第三者の対応する署名を必要とする、ステートメント6に記載の方法。
【0170】
ステートメント8:第1の当事者と第2の当事者との間のトランザクションが、第1の当事者から第2の当事者へのトランザクションを行う少なくともいくつかのトランザクションを備え、それぞれのトランザクションが、第2の当事者のそれぞれの子公開鍵に基づくアドレスを備え、各子鍵が、導出関数によって第2の当事者のマスタ公開鍵に関連付けられ、導出関数がそれぞれの導出情報によってパラメータ化される、ステートメント1から7のいずれか1つに記載の方法。
【0171】
ステートメント9:各子鍵のそれぞれの導出情報が、それぞれのトランザクションのそれぞれの請求書、販売注文、または領収書を備える、ステートメント8に記載の方法。
【0172】
ステートメント10:導出情報が、子公開鍵に共通のチェーンコードを備える、ステートメント8または9に記載の方法。
【0173】
ステートメント11:各子鍵の導出情報が、それぞれのインデックス値を備える、ステートメント8、9、または10のいずれか1つに記載の方法。
【0174】
ステートメント12:第2の当事者のマスタ公開鍵が、デジタル認証局によって第2の当事者の公開アイデンティティにリンクされる、ステートメント8から11のいずれか1つに記載の方法。
【0175】
ステートメント13:第1の当事者から、前記セット内のブロックチェーントランザクションのうちの少なくとも1つについてのそれぞれの導出情報を受信するステップと、
第1および第2の報告がセットの異なるメンバーシップを示しているとの決定に応じて、第2の当事者の子公開鍵を決定し、それによってそれぞれのアドレスが第2の当事者のマスタ公開鍵にリンクされていることを検証するために、導出関数、第2の当事者のマスタ公開鍵、および受信した導出情報を使用するステップと
をさらに備える、ステートメント8から12のいずれか1つに記載の方法。
【0176】
ステートメント14:それぞれの導出情報を受信するステップがまた、第1および第2の報告がセットの異なるメンバーシップを示しているとの決定に応答して実行される、ステートメント13に記載の方法。
【0177】
ステートメント15:第2の当事者の公開鍵が、デジタル認証局によって第2の当事者の公開アイデンティティにリンクされており、決定する前記ステップが、第2の当事者の公開アイデンティティ(ID)を検証するために、マスタ公開鍵と、認証局によって発行されたデジタル証明書を使用するステップをさらに備える、ステートメント13または14に記載の方法。
【0178】
ステートメント16:第1の報告が、異なる時点において受信された複数の第1の報告メッセージを備え、各第1の報告メッセージが、第1の当事者に関係するブロックチェーントランザクションのうちの異なるそれぞれの1つを報告し、第1の証明値が、時間枠内の第1の当事者に関係するブロックチェーントランザクションを組み合わせた定期的な証明のインスタンスであり、および/または、
第2の報告が、異なる時点において受信された複数の第2の報告メッセージを備え、各第2の報告メッセージが、第2の当事者に関係するブロックチェーントランザクションのうちの異なるそれぞれの1つを報告し、第2の証明値が、時間枠内の第2の当事者に関係するブロックチェーントランザクションに対する定期的な証明のインスタンスである
のうちの一方または両方である、ステートメント1から15のいずれか1つに記載の方法。
【0179】
ステートメント17:第1の報告および/または第2の報告における指示が、第1の当事者、第2の当事者、および第三者以外の1人または複数のさらなる当事者とトランザクションする1つまたは複数のさらなるブロックチェーントランザクションの各々の指示をさらに含み、前記セットが、第1、または第2の当事者が関係するトランザクションの交差である、ステートメント1から16のいずれか1つに記載の方法。
【0180】
ステートメント18:第1の証明値がハッシュツリーのルートを備え、第1の報告において報告される指示の各々がハッシュツリーのリーフになり、
第1および第2の報告がセットの異なるメンバーシップを示しているとの決定に応じて、第1の報告において示されているが、第2の報告においては示されていない、少なくとも1つのブロックチェーントランザクションの存在を識別するステップと、
第2の当事者が虚偽の証明を行ったという証拠を生成するために、ハッシュツリールート、およびルートと失われたトランザクションを表す指示の間のハッシュツリーパスを使用するステップと、
ハッシュツリーのルートとパスの使用に基づいて、さらなる当事者のトランザクションの指示を第4の当事者に開示することなく、第4の当事者に証拠を提示するステップと
を備える、ステートメント17に記載の方法。
【0181】
ステートメント19:証拠が、第2の当事者の公開アイデンティティ(ID)へのリンクの検証をさらに含む、少なくともステートメント15に依存するステートメント18に記載の方法。
【0182】
ステートメント20:第三者が税務当局である、ステートメント1から19のいずれか1つに記載の方法。
【0183】
ステートメント21:1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、メモリが、処理装置上で実行されるように構成されたコードを記憶し、コードが、処理装置上にあるときに、ステートメント1から30のいずれか1つに記載の方法を実施するように構成されている、コンピュータ機器。
【0184】
ステートメント22:コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、ステートメント1から20のいずれか一項に記載の方法を実施するように構成された、コンピュータプログラム。
【0185】
ステートメント23:第1の当事者と第2の当事者の間で行われたブロックチェーントランザクションのセットを証明するために、第1の当事者によって実行されるコンピュータ実装方法であって、
ブロックチェーントランザクションのセットの各々について、それぞれのブロックチェーントランザクションを形成するために、オフチェーンサイドチャネルを介して第2の当事者とのプロトコルを実行するステップであって、それぞれのブロックチェーントランザクションが、一旦形成されると、第2の当事者のそれぞれの子公開鍵に基づくアドレスを備え、子公開鍵が導出関数によって第2の当事者のマスタ公開鍵に関連付けられ、導出関数がそれぞれの導出情報によってパラメータ化され、プロトコルが第2の当事者から導出情報および子公開鍵を受信するステップを備える、ステップと、
第三者からの要求に応じて、それぞれの導出情報を第三者に報告し、それによって第三者がマスタ公開鍵と第2の当事者の子公開鍵との間のリンクを実証できるようにするステップと
を備え、
ブロックチェーントランザクションのセットの各々が、一旦形成されると、ブロックチェーンに記録され、
方法がブロックチェーントランザクションの前記セットの証明を備える少なくとも1つの別個のブロックチェーントランザクションをブロックチェーン上に記録するために送信するステップをさらに備え、証明がセットの指示の変換を備える、コンピュータ実装方法。
【0186】
ステートメント24:1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置であって、メモリが、処理装置上で実行されるように構成されたコードを記憶し、コードが、処理装置上にある時にステートメント23に記載の方法を実行するように構成される、処理装置と
を備える、コンピュータ機器。
【0187】
ステートメント25:コンピュータ可読ストレージ上に具体化され、1つまたは複数のプロセッサ上で実行されると、ステートメント23の方法を実行するように構成された、コンピュータプログラム。
【0188】
本明細書に開示される別の態様によれば、第1の当事者、第2の当事者、および/または第三者のいずれかまたはすべてのアクションを備える方法が提供され得る。
【0189】
本明細書に開示される別の態様によれば、第1の当事者、第2の当事者、および/または第三者のいずれかまたはすべてのコンピュータ機器を備えるシステムが提供され得る。
【符号の説明】
【0190】
100 システム
101 パケット交換ネットワーク
102 コンピュータ機器
102a コンピュータ機器
102b コンピュータ機器
103 当事者
103a ユーザ
103a アリス
103a 第1の当事者
103b 第2の当事者
103b ボブ
104 ビットコインノード
104 ブロックチェーンノード
105 クライアントアプリケーション
106 ピアツーピア(P2P)ネットワーク
106 ブロックチェーンネットワーク
107 オフチェーンサイドチャネル
150 ブロックチェーン
151 データブロック
151 新しいブロック
151n-1 ブロック
152 ブロックチェーントランザクション
152 トランザクション
152i 先行するトランザクション
152j 現在のトランザクション
153 ジェネシスブロック(Gb)
154 順序付きセット(または「プール」)
155 ブロックポインタ
201 ヘッダ
202 入力
202 入力フィールド
203 前方出力
203 出力
203 出力フィールド
302 コンピュータ機器
303 第三者
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2023-08-24
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1の当事者と第2の当事者との間でトランザクションされるブロックチェーントランザクションのセットのメンバーシップについて前記第1の当事者と第2の当事者が合意するかどうかを決定するコンピュータ実装方法であって、第三者によって、
前記第1の当事者から、前記セット内の少なくとも前記ブロックチェーントランザクションを含む、前記第1の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第1の報告を受信するステップであって、前記第1の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップと、
前記第2の当事者から、前記セット内の前記ブロックチェーントランザクションの少なくとも一部または全部を含む、前記第2の当事者が関係する複数のブロックチェーントランザクションの各々の指示を備える第2の報告を受信するステップであって、前記第2の報告が、1回または複数回送信される1つまたは複数の報告メッセージを備える、ステップと、
少なくとも1つの第1のブロックチェーントランザクションにおいて前記第1の当事者によって記録された第1の証明をブロックチェーン上で観察するステップであって、前記第1の証明が、前記第1の報告において報告された前記指示に第1の変換を適用した前記第1の当事者から導出された第1の証明値を備える、ステップと、
第2のブロックチェーントランザクションにおいて前記第2の当事者によって記録された第2の証明をブロックチェーン上で観察するステップであって、前記第2の証明が、前記第2の報告において報告された前記指示に第2の変換を適用した前記第2の当事者から導出された第2の証明値を備え、前記第1および第2のブロックチェーントランザクションが前記セットとは別個である、ステップと、
前記第1の報告において報告された前記指示に前記第1の変換を適用し、前記ブロックチェーンからの前記第1の証明と比較することによって、前記第1の報告が前記第1の証明と一致していることをチェックするステップと、
前記第2の報告において報告された前記指示に前記第2の変換を適用し、前記ブロックチェーンからの前記第2の証明と比較することによって、前記第2の報告が前記第2の証明と一致していることをチェックするステップと、
前記第1の報告における前記指示が前記第2の報告における前記指示と同じメンバーの前記セットを示しているかどうかを決定するステップと
を備える、コンピュータ実装方法。
【請求項2】
前記第1および第2の証明値の各々がハッシュ値を備え、前記第1および第2の変換の各々が少なくとも1つのハッシュ関数を備える、請求項1に記載の方法。
【請求項3】
前記第1の証明値が第1のハッシュツリーのルートを備え、前記第1の報告において報告される前記指示の各々が前記第1のハッシュツリーのリーフである、および/または、
前記第2の証明値が第2のハッシュツリーのルートを備え、前記第2の報告において報告される前記指示の各々が前記第2のハッシュツリーのリーフである
のうちの一方または両方である、請求項2に記載の方法
【請求項4】
記第1および第2の報告における前記指示が、それぞれ前記第1および第2の報告において報告された前記トランザクションのトランザクションIDを備える、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記第1および第2のトランザクションの各々が、前記第三者の公開鍵にアドレス指定される、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記第1および第2のトランザクションの各々が、ロックスクリプトを備える出力を備え、前記ロックスクリプトが、前記第三者の公開鍵に基づくアドレスを含めることによって前記第三者にアドレス指定され、ロックを解除するためには前記第三者の対応する署名を必要とする、請求項5に記載の方法。
【請求項7】
前記第1の当事者と第2の当事者との間の前記トランザクションが、前記第1の当事者から前記第2の当事者へのトランザクションを行う少なくともいくつかのトランザクションを備え、それぞれのトランザクションが、前記第2の当事者のそれぞれの子公開鍵に基づくアドレスを備え、各子鍵が、導出関数によって前記第2の当事者のマスタ公開鍵に関連付けられ、前記導出関数がそれぞれの導出情報によってパラメータ化される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
各子鍵の前記それぞれの導出情報が、前記それぞれのトランザクションのそれぞれの請求書、販売注文、または領収書を備える、請求項7に記載の方法。
【請求項9】
前記導出情報が、前記子公開鍵に共通のチェーンコードを備える、請求項7または8に記載の方法。
【請求項10】
各子鍵の前記導出情報が、それぞれのインデックス値を備える、請求項78、または9のいずれか一項に記載の方法。
【請求項11】
前記第2の当事者の前記マスタ公開鍵が、デジタル認証局によって前記第2の当事者の公開アイデンティティにリンクされる、請求項7から10のいずれか一項に記載の方法。
【請求項12】
前記第1の当事者から、前記セット内の前記ブロックチェーントランザクションのうちの少なくとも1つについての前記それぞれの導出情報を受信するステップと、
前記第1および第2の報告が前記セットの異なるメンバーシップを示しているとの決定に応じて、前記第2の当事者の前記子公開鍵を決定し、それによってそれぞれのアドレスが前記第2の当事者の前記マスタ公開鍵にリンクされていることを検証するために、前記導出関数、前記第2の当事者の前記マスタ公開鍵、および前記受信した導出情報を使用するステップと
をさらに備える、請求項7から11のいずれか一項に記載の方法。
【請求項13】
前記それぞれの導出情報を受信する前記ステップがまた、前記第1および第2の報告がセットの異なるメンバーシップを示しているとの決定に応答して実行される、請求項12に記載の方法。
【請求項14】
前記第2の当事者の前記公開鍵が、デジタル認証局によって前記第2の当事者の公開アイデンティティにリンクされており、決定する前記ステップが、前記第2の当事者の前記公開アイデンティティ(ID)を検証するために、前記マスタ公開鍵と、前記認証局によって発行されたデジタル証明書を使用するステップをさらに備える、請求項12または13に記載の方法。
【請求項15】
前記第1の報告が、異なる時点において受信された複数の第1の報告メッセージを備え、各第1の報告メッセージが、前記第1の当事者に関係する前記ブロックチェーントランザクションのうちの異なるそれぞれの1つを報告し、前記第1の証明値が、時間枠内の前記第1の当事者に関係するブロックチェーントランザクションを組み合わせた定期的な証明のインスタンスであり、および/または、
前記第2の報告が、異なる時点において受信された複数の第2の報告メッセージを備え、各第2の報告メッセージが、前記第2の当事者に関係する前記ブロックチェーントランザクションのうちの異なるそれぞれの1つを報告し、前記第2の証明値が、時間枠内の前記第2の当事者に関係するブロックチェーントランザクションに対する定期的な証明のインスタンスである
のうちの一方または両方である、請求項1から14のいずれか一項に記載の方法。
【請求項16】
前記第1の報告および/または第2の報告における前記指示が、前記第1の当事者、第2の当事者、および第三者以外の1人または複数のさらなる当事者とトランザクションする1つまたは複数のさらなるブロックチェーントランザクションの各々の指示をさらに含み、前記セットが、前記第1、および第2の当事者が関係するトランザクションの交差点である、請求項1から15のいずれか一項に記載の方法。
【請求項17】
第1の証明値がハッシュツリーのルートを備え、前記第1の報告において報告される前記指示の各々が前記ハッシュツリーのリーフになり、
前記第1および第2の報告が前記セットの異なるメンバーシップを示しているとの決定に応じて、前記第1の報告において示されているが、前記第2の報告においては示されていない、少なくとも1つのブロックチェーントランザクションの存在を識別するステップと、
前記第2の当事者が虚偽の証明を行ったという証拠を生成するために、前記ハッシュツリールート、および前記ルートと失われたトランザクションを表す前記指示の間のハッシュツリーパスを使用するステップと、
前記ハッシュツリーのルートとパスの使用に基づいて、前記さらなる当事者の前記トランザクションの前記指示を前記第4の当事者に開示することなく、第4の当事者に前記証拠を提示するステップと
を備える、請求項16に記載の方法。
【請求項18】
前記証拠が、前記第2の当事者の前記公開アイデンティティ(ID)への前記リンクの前記検証をさらに含む、少なくとも請求項14に依存する請求項17に記載の方法
【請求項19】
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置であって、前記メモリが、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードが、前記処理装置上にある時に請求項1から18のいずれか一項に記載の方法を実行するように構成される、処理装置と
を備える、コンピュータ機器
【請求項20】
コンピュータ可読ストレージ上に実装され、1つまたは複数のプロセッサ上で実行されると、第1の当事者が第1の当事者と第2の当事者の間で行われたブロックチェーントランザクションのセットを証明する方法を実行するように構成された、コンピュータプログラムであって、前記方法は、
ブロックチェーントランザクションの前記セットの各々について、前記それぞれのブロックチェーントランザクションを形成するために、オフチェーンサイドチャネルを介して前記第2の当事者とのプロトコルを実行するステップであって、前記それぞれのブロックチェーントランザクションが、一旦形成されると、前記第2の当事者のそれぞれの子公開鍵に基づくアドレスを備え、前記子公開鍵が導出関数によって前記第2の当事者のマスタ公開鍵に関連付けられ、前記導出関数がそれぞれの導出情報によってパラメータ化され、前記プロトコルが前記第2の当事者から前記導出情報および子公開鍵を受信するステップを備える、ステップと、
第三者からの要求に応じて、前記それぞれの導出情報を前記第三者に報告し、それによって前記第三者が前記マスタ公開鍵と前記第2の当事者の前記子公開鍵との間のリンクを実証できるようにするステップと
を備え、
ブロックチェーントランザクションの前記セットの各々が、一旦形成されると、ブロックチェーンに記録され、
前記方法が、ブロックチェーントランザクションの前記セットの証明を備える少なくとも1つの別個のブロックチェーントランザクションをブロックチェーン上に記録するために送信するステップをさらに備え、前記証明が前記セットの前記指示の変換を備える、
コンピュータプログラム。
【国際調査報告】