(57)【要約】  発信元ノードからのブロックチェーン実装トランザクションがブロードキャストされる。発信元ノードはプロキシノードと通信可能に結合されている。本方法は、プロキシノードによって実装され、計算資源に係るｘ＋ｒ単位を取る入力、出力アドレスに対してｘ単位を提供する出力、および、プロキシノードに関連する秘密鍵の任意の１つのセットによってアンロック可能なｎ個のマルチ署名アドレスのうち１つに対してｄ＋ｒ単位を提供する別の出力、を含むトランザクションを受信することを含む。プロキシノードは、トランザクションをブロードキャストし、かつ、ブロックチェーン内に含まれるようにするために、プロキシノードに対して割り当てられるべき計算資源に係る量、ｔ単位、を選択し、そして、マルチ署名アドレスから供給されるｄ＋ｒ単位を取るさらなるトランザクション、および、プロキシノードに対してｔ単位を提供する出力を生成する。プロキシノードは、両方のトランザクションがブロックチェーンの同じブロックに含まれるように時間を合わせてブロードキャストする。両方のトランザクションをブロードキャストして、ブロックチェーンの同じブロックに含めることを許可します。
2021507566.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに実装される方法であって、所与のプロキシノードによって、
コンピュータネットワークを介して、発信元ノードによって生成され、かつ、部分的に署名されたトランザクションを受信するステップであり、
前記トランザクションは、第１入力と、第１出力および第２出力とを含み、
前記第１入力は、（ｘ＋ｒ）単位の計算資源を取り、
前記第１出力は、出力アドレスに対してｘ単位を提供し、かつ、前記第２出力は、複数の第２秘密鍵のうち任意の１つを使用して、アンロック可能なｎ個のマルチ署名アドレスのうち１つに対して（ｄ＋ｒ）単位を提供し、
前記第２秘密鍵それぞれは、複数のプロキシノードのうちそれぞれ１つに関連付けられており、
前記複数のプロキシノードは、前記所与のプロキシノードを含み、かつ、
前記第２秘密鍵それぞれは、前記プロキシノードの非対称暗号化鍵ペアの秘密鍵、および、前記プロキシノードが前記発信元ノードと共有する秘密の値に基づいて、前記複数のプロキシノードのうちそれぞれ１つによって導出することができる、
ステップと、
前記トランザクションをブロードキャストし、かつ、前記トランザクションがブロックチェーンに含まれるようにするために、前記所与のプロキシノードに対して割り当てられるべき計算資源の量である、ｔ単位を選択するステップ、および、前記トランザクションを前記ブロックチェーンに含めるために、第三者に対して割り当てられるべき計算資源の量である、ｆ単位を選択するステップであり、
ｆ＜ｒ、かつ、ｔ＜（ｒ−ｆ）である、
ステップと、
（ｄ＋ｆ）単位を取る第２入力を前記トランザクションに追加することによって生成される、更新されたトランザクションにデジタル署名するステップと、
前記プロキシノードの前記第２秘密鍵を使用して前記ｎ個のマルチ署名アドレスのうち１つから供給される（ｄ＋ｒ）単位を取る入力、および、前記所与のプロキシノードに対してｔ単位を提供する出力を含む、さらなるトランザクションを生成し、かつ、デジタル署名するステップと、
前記更新されたトランザクションおよび前記さらなるトランザクションを、両方が前記ブロックチェーンの同じブロックに含まれるように時間を合わせてブロードキャストするステップと、
を含む、方法。
【請求項２】
前記トランザクションを受信するステップは、前記トランザクションの識別子を受信するステップを含む、
請求項１に記載の方法。
【請求項３】
前記更新されたトランザクションの前記ブロードキャスト、および、前記さらなるトランザクションの前記ブロードキャストは、実質的に同時に発生している、
請求項１または２に記載の方法。
【請求項４】
前記トランザクションの前記受信した識別子は、前記所与のプロキシノードの公開鍵を使用して暗号化されている、
請求項１乃至３いずれか一項に記載の方法。
【請求項５】
前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記ｆ単位は、前記コンピュータネットワークを介して受信した指示に基づいて選択される、
請求項１乃至４いずれか一項に記載の方法。
【請求項６】
前記指示は、前記発信元ノードから受信される、
請求項５に記載の方法。
【請求項７】
前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記ｆ単位は、前記トランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択される、
請求項１乃至６いずれか一項に記載の方法。
【請求項８】
前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記ｆ単位、および、前記トランザクションをブロードキャストするために前記所与のプロキシノードに対して割り当てられるべき計算資源の量である前記ｔ単位のうち少なくとも１つは、さらに、前記さらなるトランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択される、
請求項１乃至７いずれか一項に記載の方法。
【請求項９】
前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、
前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる、
請求項１乃至８いずれか一項に記載の方法。
【請求項１０】
前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであり、かつ、
前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立することは、楕円曲線ディフィー・ヘルマン（ＥＣＤＨ）鍵交換に対応している、
請求項１乃至９いずれか一項に記載の方法。
【請求項１１】
コンピューティングデバイスであって、
プロセッサと、
メモリと、
ネットワークインターフェイスと、
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、前記プロセッサによって命令が実行されると、請求項１乃至１０いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体と、
を含む、コンピューティングデバイス。
【請求項１２】
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、コンピューティングデバイスのプロセッサによって命令が実行されると、請求項１乃至１０いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体。
【請求項１３】
コンピュータに実装される方法であって、発信元ノードによって、
プロキシノードに関連付けられた第１公開鍵、および、前記発信元ノードと前記プロキシノードとの間で共有される秘密の値に基づいて、複数のプロキシノードそれぞれについて第２公開鍵を決定するステップであり、
前記プロキシノードそれぞれについて対応する第２秘密鍵は、所与のプロキシノードによって、前記発信元ノードと前記所与のプロキシノードとの間で共有される秘密の値、および、前記所与のプロキシノードに関連付けられ、かつ、前記所与のプロキシノードに関連付けられた前記第１公開鍵に基づいて、決定することができる、
ステップと、
前記発信元ノードによって、入力と、第１出力および第２出力とを含むトランザクションを生成するステップであり、
前記入力は、（ｘ＋ｒ）単位を取り、
前記第１出力は、出力アドレスに対してｘ単位を提供し、かつ、前記第２出力は、前記第２秘密鍵のうち任意の１つを使用して、アンロック可能なｎ個のマルチ署名アドレスのうち１つに対して（ｄ＋ｒ）単位を提供する、
ステップと、
前記トランザクションに電子署名するステップと、
前記署名されたトランザクションをネットワーク経由で前記プロキシノードに対して分配するステップと、
を実行する、方法。
【請求項１４】
前記署名されたトランザクションを分配することは、
前記トランザクションの識別子を送信すること、を含む、
請求項１３に記載の方法。
【請求項１５】
前記署名されたトランザクションの前記識別子を前記プロキシノードに対して分配することは、
前記署名されたトランザクションの前記識別子に係るそれぞれの指示を前記プロキシノードそれぞれに対して送信すること、を含む、
請求項１３または１４に記載の方法。
【請求項１６】
前記プロキシノードのうち所与の１つに対して送信される前記それぞれの指示は、前記プロキシノードの公開鍵を使用して暗号化される、
請求項１５に記載の方法。
【請求項１７】
前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、
前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる、
請求項１３乃至１６いずれか一項に記載の方法。
【請求項１８】
前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであり、かつ、
前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立することは、楕円曲線ディフィー・ヘルマン（ＥＣＤＨ）鍵交換に対応している、
請求項１３乃至１７いずれか一項に記載の方法。
【請求項１９】
コンピューティングデバイスであって、
プロセッサと、
メモリと、
ネットワークインターフェイスと、
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、前記プロセッサによって命令が実行されると、請求項１３乃至１８いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体と、
を含む、コンピューティングデバイス。
【請求項２０】
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、コンピューティングデバイスのプロセッサによって命令が実行されると、請求項１３乃至１８いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本特許出願は、一般的に、ネットワーク通信および暗号化に関する。より特定的には、ブロックチェーンネットワークに対するブロックチェーントランザクションの通信、および、それらの通信のオリジン（origin）を不明瞭にするための暗号技術の使用に関する。ブロックチェーンネットワークにおけるトランザクションの導入（introduction）に関連する発信元ノード（originator  node）のアイデンティティを不明瞭にすることは、プライバシーおよびセキュリティを強化し得る。
【背景技術】
【０００２】
この文書において、用語「ブロックチェーン（“blockchain”）」は、あらゆる形態の電子的、コンピュータベース、分散型の台帳（ledgers）を含むように使用されている。これらは、合意に基づく（consensus-based）ブロックチェーンおよびトランザクションチェーン技術、許可された（permissioned）および許可されていない（un-permissioned）台帳、共有された（shared）台帳、および、それらの変形を含んでいる。ブロックチェーン技術の最も広く知られているアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装が提案され、そして開発されてきている。ビットコインは、ここにおいて、便宜上および例示のためだけに参照され得るものであり、一方、本出願の技術的事項（subject  matter）は、ビットコインブロックチェーンを用いた使用に限定されるものではないこと、および、代替的なブロックチェーン実装およびプロトコルは本出願の範囲内にあることが留意されるべきである。ここにおいて使用されるように用語「ビットコイン（“Bitcoin”）」は、全てのバージョンのビットコインおよびビットコインプロトコルから派生する全てのバリエーションを含む。
【０００３】
ブロックチェーンは、コンピュータベースの分散化システム（decentralized  system）として実装されるピアツーピア（peer-to-peer）の電子台帳であり、順番にトランザクションで構成されるブロックから構成されている。各トランザクションは、ブロックチェーンシステムにおけるアドレス間のデジタル資産の制御（control）の移転を符号化するデータ構造であり、そして、少なくとも１つの入力および少なくとも１つの出力を含んでいる。各ブロックは、その発端（inception）からブロックチェーンに対して書き込まれてきた全てのトランザクションについて永続的で、変更不可能なレコード（record）を作成するために、そのブロックに対して一緒にチェーン化される以前のブロックのハッシュ（hash）を含んでいる。
【０００４】
ブロックチェーンは、多種多様なアプリケーションにおいて使用することができる。例えば、ブロックチェーンは、１つまたはそれ以上の商品（commodities）の所有権（ownership）を反映する台帳を提供することに採用することができる。例えば、ビットコインブロックチェーンにおいて、台帳は、ビットコインおよびその一部（fractions）の所有権を反映している。いくつかのそうした商品は、例えば、計算資源の単位（units）といった、基礎となる（underlying）単位を表すことができる。所有権を反映しているブロックチェーンベースの台帳により、商品は、偽匿名で（pseudo-anonymously）当事者間で移転することができ、ブロックチェーン上のトランザクションは、いずれかの当事者（party）の個人を識別する（personally-identifying）情報を含んでいない。
【０００５】
特に、所与のトランザクションの出力がアドレスに対して送付されてよく、そのアドレスは特定の当事者の公開鍵（public  key）に対応している。これらの出力は、そのアドレスに対応する公開鍵のカウンターパート（counterpart）である秘密鍵によってアンロック（unlocked）されて、次いで、関連する当事者によってさらなるトランザクションへに対する入力として使用され得る。
【０００６】
ブロックチェーンの永続的または不変の性質は、所与のトランザクションに含まれるアドレスが永久的に、公けに（publicly）利用可能であることを意味している。
【０００７】
分散化システムに参加している様々なノードまたはコンピュータシステムに対してトランザクションを導入するためには、そのトランザクションを分配（distribute）する必要がある。この分配は、例えば、プロトコルを使用することができ、それによって、分散化システムに参加している様々なノード間の接続を用いてオーバーレイネットワークが形成される。そして、ゴシッププロトコル（gossip  protocol）を使用することができ、それによって、ノードは所与のトランザクションをオーバーレイネットワークにおける隣接ノードに対して分配する。
【０００８】
いずれにしても、トランザクションが最終的にどのようにネットワーク内で伝播されるかにかかわらず、分配のためには、そのトランザクションを分散化システムの中へ導入または注入する必要がある。この導入は、必然的にネットワーク通信を必要とし、そして、従って、例えばインターネットプロトコル（IP）アドレスといった、ネットワークレベルにおいてトランザクションの発信元に関する情報を明らかにする副作用を有し得る。もし、そうした情報を別の当事者がブロックチェーン上で使用される特定のアドレスと相関させることができる場合には、たとえ複数の公けのアドレスが使用されても、ある当事者のアイデンティティ（identity）を構成するか、または、その当事者に関連する全てのトランザクションを追跡するために使用することができる。
【０００９】
従って、トランザクションのネットワーク発信元（network  origin）を不明瞭にしながら、ブロックチェーン上にトランザクションを含めることを可能にするソリューションを提供することが望ましい。
【発明の概要】
【００１０】
そうした改善されたソリューションが、今では考案されてきている。
【００１１】
本出願は、添付の請求項において定義される方法およびシステムを提供する。
【００１２】
本出願は、コンピュータに実装される方法を記載する。これは、所与のプロキシノードによって実装され得る。本方法は、コンピュータネットワークを介して、発信元ノードによって生成され、かつ、部分的に署名されたトランザクションを受信するステップであり、前記トランザクションは、第１入力と、第１出力および第２出力とを含み、前記第１入力は、ｘ＋ｒ単位の計算資源を取り、前記第１出力は、出力アドレスに対してｘ単位を提供し、かつ、前記第２出力は、複数の第２秘密鍵のうち任意の１つを使用して、アンロック可能なｎ個のマルチ署名アドレスのうち１つに対してｄ＋ｒ単位を提供し、前記第２秘密鍵それぞれは、複数のプロキシノードのうちそれぞれ１つに関連付けられており、前記複数のプロキシノードは、前記所与のプロキシノードを含み、かつ、前記第２秘密鍵それぞれは、前記プロキシノードの非対称暗号化鍵ペアの秘密鍵、および、前記プロキシノードが前記発信元ノードと共有する秘密の値に基づいて、前記複数のプロキシノードのうちそれぞれ１つによって導出することができる、ステップと、
前記トランザクションをブロードキャストし、かつ、前記トランザクションがブロックチェーンに含まれるようにするために、前記所与のプロキシノードに対して割り当てられるべき計算資源の量（quantity）である、ｔ単位を選択するステップ、および、前記トランザクションを前記ブロックチェーンに含めるために、第三者に対して割り当てられるべき計算資源の量である、ｆ単位を選択するステップであり、ｆ＜ｒ、かつ、ｔ＜（ｒ−ｆ）である、ステップと、
ｄ＋ｆ単位を取る第２入力を前記トランザクションに追加することによって生成される、更新されたトランザクションにデジタル署名するステップと、
前記プロキシノードの前記第２秘密鍵を使用して前記ｎ個のマルチ署名アドレスのうち１つから供給されるｄ＋ｒ単位を取る入力、および、前記所与のプロキシノードに対してｔ単位を提供する出力を含む、さらなるトランザクションを生成し、かつ、デジタル署名するステップと、
前記更新されたトランザクションおよび前記さらなるトランザクションを、両方が前記ブロックチェーンの同じブロックに含まれるように時間を合わせてブロードキャストするステップと、を含む。
【００１３】
いくつかの実装において、前記トランザクションを受信するステップは、前記トランザクションの識別子を受信するステップを含み得る。
【００１４】
いくつかの実装において、前記更新されたトランザクションの前記ブロードキャスト、および、前記さらなるトランザクションの前記ブロードキャストは、実質的に同時に発生し得る。
【００１５】
いくつかの実装において、前記トランザクションの前記受信した識別子は、前記所与のプロキシノードの公開鍵を使用して暗号化され得る。
【００１６】
いくつかの実装において、前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記ｆ単位は、前記コンピュータネットワークを介して受信した指示に基づいて選択され得る。本表示は、発信元ノードから受信することができる。
【００１７】
いくつかの実装において、前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記ｆ単位は、前記トランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択され得る。
【００１８】
いくつかの実装において、前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記ｆ単位、および、前記トランザクションをブロードキャストするために前記所与のプロキシノードに対して割り当てられるべき計算資源の量である前記ｔ単位のうち少なくとも１つは、さらに、前記さらなるトランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択され得る。
【００１９】
いくつかの実装において、前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる。
【００２０】
いくつかの実装において、前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであってよい。前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値は、楕円曲線ディフィー・ヘルマン（ＥＣＤＨ）鍵交換に対応している、ということであってよい。
【００２１】
本出願は、さらに、プロセッサと、メモリと、ネットワークインターフェイスと、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体と、を含むコンピューティングデバイスを記載する。命令は、前記プロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【００２２】
本出願は、さらに、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体を記載する。命令は、コンピューティングデバイスのプロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【００２３】
本出願は、さらに、発信元ノードによって実施されるコンピュータに実装される方法を記載する。本方法は、プロキシノードに関連付けられた第１公開鍵、および、前記発信元ノードと前記プロキシノードとの間で共有される秘密の値に基づいて、複数のプロキシノードそれぞれについて第２公開鍵を決定するステップであり、前記プロキシノードそれぞれについて対応する第２秘密鍵は、所与のプロキシノードによって、前記発信元ノードと前記所与のプロキシノードとの間で共有される秘密の値、および、前記所与のプロキシノードに関連付けられ、かつ、前記所与のプロキシノードに関連付けられた前記第１公開鍵に基づいて、決定することができる、ステップと、
前記発信元ノードによって、入力と、第１出力および第２出力とを含むトランザクションを生成するステップであり、前記入力は、ｘ＋ｒ単位を取り、前記第１出力は、出力アドレスに対してｘ単位を提供し、かつ、前記第２出力は、前記第２秘密鍵のうち任意の１つを使用して、アンロック可能なｎ個のマルチ署名アドレスのうち１つに対して＋ｒ）単位を提供する、ステップと、
前記トランザクションに電子署名するステップと、前記署名されたトランザクションをネットワーク経由で前記プロキシノードに対して分配するステップと、を実行する。
【００２４】
いくつかの実装において、前記署名されたトランザクションを分配することは、前記トランザクションの識別子を送信することを含み得る。
【００２５】
いくつかの実装において、前記署名されたトランザクションの前記識別子を前記プロキシノードに対して分配することは、前記署名されたトランザクションの前記識別子に係るそれぞれの指示を前記プロキシノードそれぞれに対して送信することを含み得る。
【００２６】
いくつかの実装において、前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる。
【００２７】
いくつかの実装において、前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであってよい。前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立することは、楕円曲線ディフィー・ヘルマン（ＥＣＤＨ）鍵交換に対応している、ということであってよい。
【００２８】
本出願は、さらに、プロセッサと、メモリと、ネットワークインターフェイスと、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体と、を含むコンピューティングデバイスを記載する。命令は、前記プロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【００２９】
本出願は、さらに、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体を記載する。命令は、コンピューティングデバイスのプロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【図面の簡単な説明】
【００３０】
本発明に係る１つの態様または実施形態に関連して説明される任意の特徴は、また、１つまたはそれ以上の他の態様／実施形態に関しても使用され得る。本発明に係るこれら及び他の態様は、ここにおいて説明される実施形態から明らかであり、そして、それを参照して解明されるだろう。これから、単なる例示として、そして、添付の図面を参照して、本発明の実施形態が説明される。
【図１】図1は、ブロックチェーンネットワークと通信する発信元ノードを示している。
【図２】図2は、一式のプロキシノードを介して、図1のブロックチェーンネットワークと通信する図1の発信元ノードを示している。
【図３】図3は、１つの例示的なコンピューティングデバイスを示している。
【図４】図4は、図1の発信元ノードによって実行され得るといった、１つの例示的な方法を説明するフローチャートである。
【図５】図5は、図4の例示的な方法に従って、発信元ノードによって生成され、かつ、署名され得るといった、ブロックチェーントランザクションを示している。
【図６】図6は、図2の１つまたはそれ以上のプロキシノードによって実行され得るといった、１つの例示的な方法を説明するフローチャートである。
【図７】図7は、図5のブロックチェーントランザクションの更新された形態を示している。
【図８】図8は、図6の例示的な方法に従って、プロキシノードによって生成され得るといった、さらなるブロックチェーントランザクションを示している。
【００３１】
同様なエレメント（element）および特徴を示すために、図面においては、同様な参照符号が使用されている。
【００３２】
本出願において、用語「及び／又は（“and/or”）」は、列挙されたエレメントの全ての可能な組み合わせ及び副結合（sub-combination）をカバーするように意図されており、列挙されたエレメントだけ、任意の副結合、または、全てのエレメントのうち任意の１つを含んでおり、そして、必ずしも追加のエレメントを排除していない。
【００３３】
本出願において、フレーズ「少なくとも１つの・・・又は・・・（“at  least  one  of…  or…”）」は、列挙されたエレメントのうち任意の１つまたはそれ以上をカバーするように意図されており、列挙されたエレメントだけ、任意の副結合、または、全てのエレメントのうち任意の１つを含んでおり、必ずしも追加のエレメントを排除しておらず、そして、必ずしも全てのエレメントを必要としていない。
【発明を実施するための形態】
【００３４】
概要
多くのブロックチェーンベースのシステムは、しばしば、匿名（anonymous）と考えられている。例えば、ビットコインといった、種々の台帳システムは、しばしば、匿名と考えられている。なぜなら、それにより、当事者に個人情報または識別情報を開示することなく、当事者が、１つまたはそれ以上の商品の単位（units）を送信および受信することができるからである。そうしたシステムは、しかしながら、匿名よりも擬似匿名とみなされ得る。当事者のアイデンティティは、ブロックチェーンにおいて当事者によって使用されるアドレスがその当事者の実際のアイデンティティと関連している限りにのみ、保護されるからである。
【００３５】
１つの特定の例においては、特定の当事者と関連付けられたIPアドレスが、その当事者の匿名性を危うくする（compromise）ために使用することができ得る。例えば、悪意のある敵対者（malicious  adversary）は、特定の当事者が関与するブロックチェーントランザクションを追跡できるように、公開鍵をIPアドレスにリンクしようと試みるかもしれない。追加的または代替的に、IPアドレス情報は、例えば、インターネットフォーラムおよびソーシャルメディアからといった、他のソースからの情報を検索するためのインデックスとしてそれを使用することによって、当事者の実際のアイデンティティを検索するための労力において使用され得る。そうした状況においては、例えば、ブロックチェーントランザクションの異なるセットについて複数の公開鍵と秘密鍵のペアを生成すること、または、オペレーションの匿名性を高めるための手段としてミキシングサービスに参加すること、といった軽減策（attempted  mitigations）は、成功しないかもしれない。−例えば、S.B.Venkatakrishnan、G.Fanti、およびP.Viswanath共著の、arXivプレプリントarXiv:1701.0439  “Dandelion:  Redesigning  the  Bitcoin  Network  for  Anonymity”(2017)を参照のこと。その内容は、ここにおいて参照によりその全てが包含されている。
【００３６】
上述のように、いくつかのブロックチェーンアプリケーションにおいて、トランザクションは、オーバーレイネットワークを通じて伝搬され得る。ブロックチェーントランザクションのモニタリングおよび拡散（diffusion）に関与する、そうした１つのオーバーレイネットワークにおけるノードは、「スーパーノード（“super  nodes”）」として参照され得る。匿名化を奪う（de-anonymization）攻撃は、そうした「スーパーノード」を使用して実行され得る。例えば、ビットコインブロックチェーンネットワークの特定の例において、ネットワークにわたる対称的な拡散（symmetric  diffusion）は、ピアツーピア(P2P)オーバーレイネットワークのグラフ構造及びそのネットワーク上のブロックチェーントランザクションの拡散に関連する所定の情報を搾取する技術を使用して、特定のIPを特定の公開鍵に対してリンクすることにおいて３０％の成功率を可能にする。A.Biryukov、D.Khovratovich、およびI.Pustogarov共著の、2014  ACM  SIGSAC  Conference  of  Computer  and  Communications  Securityの会報（pp.15-29）における“Deanonymisation  of  clients  in  Bitcoin  P2P  network”(2014年11月)を参照のこと。その内容は、ここにおいて参照によりその全てが包含されている。
【００３７】
ブロックチェーンアプリケーションの領域を越えて、特定の通信に関連するIPアドレスを不明瞭にすることを可能にする試みが行われてきている。一つの例として、Torといった匿名中継ツール（anonymous  relay  tool）は、現在利用できる最も強力なアイデンティティ保護のうち１つを提供するが、それでも弱点および可能な欠点を示している。Torの説明は、例えば、R.Dingledine、N.Mathewson、およびP.Syverson共著で、ワシントンＤＣのNaval  Research  Labからの“Tor:The  second-generation  onion  router”（2004）において見い出され得る。Torといった中継システムは、トラフィック分析に対して攻撃されやすいことがある。例えば、ユーザのTorへの「最初のホップ（“first-hop”）」リンクおよびTorからユーザの通信パートナーへの「最後のホップ（“last-hop”）」リンクがトレースされ、そして、パケットを相関させるために使用され得ること、といったものである。そうした攻撃は、ユーザの匿名性を危険にさらす可能性がある。
【００３８】
上記を考慮すると、例えば、TCP/IPプロトコルのレベルといった、基礎となるネットワークのレベルにおいて、ブロックチェーンネットワークにおけるユーザのアイデンティティを保護または不明瞭にする必要性が存在している。
【００３９】
図1は、ブロックチェーンネットワーク110と通信する発信元ノード（originator  node）100を示している。
【００４０】
発信元ノード100は、コンピューティングデバイスである。
【００４１】
ブロックチェーンネットワーク110は、通信コンピューティングデバイス(図示なし)から構成されるオーバーレイネットワークである。例えば、ブロックチェーンネットワーク110は、ピアツーピア（P2P）方式で通信するコンピューティングデバイスから形成され得る。
【００４２】
一つの例において、発信元ノード100は、例えば、ビットコインノードであってよく、そして、ブロックチェーンネットワーク110は、例えば、ビットコインネットワークであってよい。特定の例において、発信元ノード100は、例えば、スーパーノード(図示なし)と通信するビットコインノードであってよく、スーパーノードは、ブロックチェーンネットワーク110を形成しているコンピュータシステムのうち１つである。
【００４３】
発信元ノード100はブロックチェーンネットワーク110と直接的に通信しているので、例えば、発信元ノード100のIPアドレスといった、潜在的にネットワークを識別する情報がブロックチェーンネットワーク110に曝されている（exposed）。そうした潜在的にネットワークを識別する情報の全て又は一部を曝すことを避けるのが望ましくあり得る。
【００４４】
一つのソリューションにおいては、プロキシノードとして動作している、別のコンピュータシステムが、例えば、発信元ノード100のIPアドレスといった、ネットワークを識別する情報を不明瞭にするように、発信元ノード100に代わってブロックチェーンネットワーク110の中へトランザクションを導入するために使用され得る。プロキシノードを使用することは、しかしながら、多くの技術的なチャレンジを提起する。
【００４５】
例えば、潜在的に、ブロックチェーントランザクションのブロードキャストを開始または完了する前を含めて、プロキシノードがオフラインになり、利用不能にすることがあり得る。
【００４６】
別の例においては、プロキシノードがビジーまたはオーバーロード（overload）になることがあり得る。ビジーまたはオーバーロードになったトランザクションノードは、許容できないレイテンシ（latency）を持ち込み、かつ／あるいは、大きなキュー（queue）を維持するためのリソースを欠くため、処理のためにキューイングされたブロックチェーントランザクションを余儀なく破棄することがあり得る。
【００４７】
これらのチャレンジのうち１つまたはそれ以上は、プロキシノードのグループを使用することによって克服され得る。
【００４８】
このようにして、冗長性が提供され得る。１つより多いプロキシノードを使用することは、単一のノードを使用することと比較して、システムを故障に対してより回復力に富む（resilient）ようにすることができる。このように、回復力（resilience）およびセキュリティが強化されている。加えて、１つより多いプロキシノードを使することは、負荷を分散するために役立ち得る。さらに、１つより多いプロキシノードを使用することは、ブロックチェーントランザクションのオリジンをさらに不明瞭にするために役立ち得る。これは、単一のプロキシノードが、継続的に（ongoing  basis）、発信元ノードのためのエージェントとして作用することを回避し得るからである。
【００４９】
複数のプロキシノードを伴うそうした構成（arrangement）を提供することは、しかしながら、多くの技術的なチャレンジを提起し得る。
【００５０】
最初に、ブロックチェーントランザクションは、アドレス間での価値（value）の移転に対応することができる。例えば、ブロックチェーントランザクションは、１つまたはそれ以上の送信元（source）アドレスから１つまたはそれ以上の宛先アドレスへの計算資源の単位の移転に対応することであり得る。１つまたはそれ以上の発信元アドレスは、発信元ノード100に対応する当事者と関連付けられ得る。特定の例において、ブロックチェーントランザクションは、ビットコイントランザクションであってよい。
【００５１】
プロキシが、発信元ノードに代わって、ブロックチェーントランザクションをネットワークの中へ導入するために使用される場合は、トランザクションをブロックチェーン内に包含するように成功裡に通信するために、いくつかの数量（amount）のブロックチェーンベースのリソース(例えば、トークン)が、プロキシノードに対して提供されることであってよい。そうした数量を選択することは、特に、例えば、どのプロキシノードが最も低い数量を受け入れるかを決定するためといったように、発信元ノードが１つまたはそれ以上のプロキシノードと通信している場合に、望ましくないメッセージングオーバーヘッドを結果として生じさせ得る。かくして、特定のブロックチェーントランザクションに関連して提供されるべき数量を確立することに関連するメッセージングオーバーヘッドを回避または制限することが問題である。
【００５２】
複数のプロキシノードを使用することにおける問題は、また、トランザクションをブロックチェーン内に包含するように成功裡に通信するために、それぞれ特定のプロキシノードに対して異なる数量が提供されるように異なるプロキシノードが要求している場合に、複数のブロックチェーントランザクションが発信元ノードによって生成される必要があり得ることであってもよく、それぞれがプロキシノードのうち特定の１つに関連するアドレスに対して異なる数量を移転している。さらに、プロキシノードのうち１つがプロキシノードの別のものと同じ数量を要求する場合でさえも、複数のブロックチェーントランザクションが生成される必要があることであってよく、それぞれがプロキシノードのうち特定の１つに関連するアドレスに対してその数量を提供している。
【００５３】
例えば、ビットコインといった、いくつかのブロックチェーンベースのシステムにおいては、一旦トランザクションがブロードキャストされると、そのブロックチェーントランザクションは、今までどおりブロックチェーン内に含まれる必要がある。ブロックチェーン内で新しいブロックを生成する責任がある特定のコンピュータシステム、マイナ（miners）として知られるもの、によるものである。マイナは、ブロックを「採掘（“mine”）」するために必要な計算作業を実行するために、新たに作られた（minted）ビットコインの形式で、数量（amount）を受け取る。注目すべきことに、このことは、ビットコインがそうした計算資源に対して直接的に対応することを意味している。
【００５４】
マイナには、特定のブロックチェーントランザクションをマイニングブロック内に含めるために、マイニング料金（mining  fee）が提供され得る。このマイニング料金は、そのブロックチェーントランザクションの出力に対する所与のトランザクションの入力の剰余として反映されている。ブロックチェーントランザクションを次のブロック内に含めるために必要な最低料金は、時間とともに変化し得る。
【００５５】
ブロックチェーンにおいて可能なブロードキャストのために複数のプロキシに対してブロックチェーントランザクションを提供することにおける別の問題は、おそらく特定のブロックチェーントランザクションが次のブロックに含まれるようにマイニングさせるために必要なマイニング料金が、発信元ノードによるブロックチェーントランザクションの生成と、ブロックチェーンネットワークに対する１つまたはそれ以上のプロキシノードによるブロックチェーントランザクションの送信との間の期間において変動し得ることである。かくして、発信元ノードについて、適切なマイニング料金でブロックチェーントランザクションを設定することが、発信元ノードとプロキシの様々なノードとの間で、通信またはハンドシェイクの膨大な行ったり来たり（back-and-forth）を必要とし得ることが問題である。例えば、発信元ノード100は、特定のマイニング料金を含むブロックチェーントランザクションを設定し、そして、プロキシノードに対してそのブロックチェーントランザクションをブロードキャストのために送付することができるが、次いで、ネットワーク条件は、プロキシノードがブロックチェーントランザクションをブロードキャストする前に、変化し得る。従って、次のブロック内の可能性ある包含のためには不十分なマイニング料金を結果として生じている。そうした状況において、プロキシノードは、例えば、発信元ノードとのさらなる通信を必要とし得る、より高いマイニング料金を伴い、新しいブロックチェーントランザクションを送付する必要があり得る。このことは、望ましくないメッセージングオーバーヘッドを結果として生じ得る。さらに、複数のブロックチェーントランザクションの生成は、１つまたはそれ以上の発信元ノードおよびプロキシノードにおいて、計算資源を不必要に消費し得る。
【００５６】
本出願に従って、単一のプロキシノードを使用することの欠点および複数のプロキシノードを使用することに関連する問題に対処するために、複数のプロキシノードが使用され得る。例えば、マイニング料金を確立することに関連する潜在的な計算およびメッセージングオーバーヘッドの問題を含むものであり、そして、トランザクションをブロックチェーン内に包含するように成功裡に通信するためにプロキシノードに対して提供される数量が取り扱われ得る。例えば、マイニング料金を確立することに関連する問題、および、トランザクションをブロックチェーン内に包含するように成功裡に通信するためにプロキシノードに対して提供される数量は、所与のプロキシノードによって両方が選択されることを可能にすることによって対処され得る。
【００５７】
図2のハイレベルな概略図は、発信元ノード100に代わって、ブロックチェーンネットワーク110の中へトランザクションを導入するために、プロキシノードのグループがどのように使用され得るかについて例示的な構成を示している。
【００５８】
図示されるように、発信元ノード100は、エレメント220を介し、一式のプロキシノード230A−Cを経由してブロックチェーンネットワーク110と通信する。
【００５９】
プロキシノード230A−230Cそれぞれは、コンピューティングデバイスである。プロキシノード230A−230Cは、ブロックチェーンネットワーク110と通信している。３つのプロキシノード−プロキシノード230A、プロキシノード230B、およびプロキシノード230C−が示されているが、これは単に例示としてのものに過ぎず、そして、プロキシノードの数は変動してよい。
【００６０】
エレメント220は、情報が、発信元ノード100によって、プロキシノード230A−230Cのうち１つまたはそれ以上に対して通信されるのを可能にし、そして、その逆も同様である。エレメント220は、例えば、周知のネットワークアドレスにおけるコンピュータシステムといった、１つまたはそれ以上の装置を表すことができ、１つまたはそれ以上の他の当事者による転送（forwarding）及び／又は検索（retrieval）のために１つの当事者によって送信された情報を保管している。そうしたエレメント220によって保管された情報は、一過性（ephemeral）のものであってよく、かつ／あるいは、いくらかの定められた期間の後で満了してよい。別の例において、エレメント220は、発信元ノード100がプロキシノード230A−230Cと通信することによって、ネットワーク接続に対応することができる。
【００６１】
以下でさらに説明されるように、発信元ノード100は、ブロックチェーンネットワーク110への通信のために、プロキシノード230A−Cに対してブロックチェーントランザクションを通信し得る。いくつかの実施形態において、プロキシノード230A−230Cのうち１つまたはそれ以上は、ブロックチェーンネットワーク110の一部を形成し得る。追加的または代替的に、プロキシノード230A−230CCのうち１つまたはそれ以上は、ブロックチェーンネットワーク110の１つまたはそれ以上のノードと通信し得る。
【００６２】
上述のように、プロキシノード230A−230Cは、発信元ノード100に代わり、といったように、ブロックチェーンネットワーク110へブロックチェーントランザクションを中継するように設定されている。
【００６３】
以下でさらに説明されるように、発信元ノード100は、ブロックチェーンネットワーク110への通信のために、プロキシノード230A−Cに対してブロックチェーントランザクションを通信し得る。いくつかの実施形態において、プロキシノード230A−230Cのうち１つまたはそれ以上は、ブロックチェーンネットワーク110の一部を形成し得る。追加的または代替的に、プロキシノード230A−230CCのうち１つまたはそれ以上は、ブロックチェーンネットワーク110の１つまたはそれ以上のノードと通信し得る。
【００６４】
上述のように、プロキシノード230A−230Cは、発信元ノード100に代わり、といったように、ブロックチェーンネットワーク110へトランザクションを中継するように設定されている。
【００６５】
特に、発信元ノード100は、マイニング料金およびトランザクションをブロックチェーン内に包含するように成功裡に通信するためにプロキシノードに提供される数量の両方を超える剰余入力値を含む、部分的に署名されたブロックチェーントランザクションを生成することができる。以下でさらに説明されるように、プロキシノード230A−230Cのうち１つまたはそれ以上は、次いで、ブロックチェーントランザクションのためのマイニング料金を定めるように、部分的に署名されたブロックチェーントランザクションに対するさらなる入力を提供することができ、そして、ブロックチェーンネットワーク110に対して第１ブロックチェーントランザクションを分配するための数量を収集するために、さらなるブロックチェーントランザクションを生成することができる。
【００６６】
図3は、１つの例示的なコンピューティングデバイス300に係るハイレベルなオペレーション図である。いくつかの実施形態において、例示的なコンピューティングデバイス300は、例えば、発信元ノード100及び／又はプロキシノード230A−Cを含んでいる、ここにおいて説明されるコンピュータシステムの例示的な１つまたはそれ以上のものであってよい。発信元ノード100およびプロキシノード230A−Cそれぞれは、特定の機能を実行するように適合させるソフトウェアを含む。
【００６７】
例示的なコンピューティングデバイス300は、様々なモジュールを含んでいる。例えば、図示されるように、例示的なコンピューティングデバイス300は、プロセッサ310、メモリ320、およびネットワークインターフェイス330を含み得る。図示されるように、例示的なコンピューティングデバイス300に係る前述のコンポーネントは、バス340を介して通信する。
【００６８】
プロセッサ310は、ハードウェアプロセッサである。プロセッサ310は、例えば、ARM、Intel  x86、PowerPCプロセッサ、等のうち１つまたはそれ以上であっよい。
【００６９】
メモリ320は、データが保管され、かつ、検索されることを可能にする。メモリ320は、例えば、ランダムアクセスメモリ、読み出し専用メモリ、および永続性ストレージを含んでよい。永続性ストレージは、例えば、フラッシュメモリ、ソリッドステートドライブ、等であってよい。読み出し専用メモリおよび永続性ストレージは、非一時的コンピュータ読取り可能記憶媒体である。コンピュータ読取り可能媒体は、例示的なコンピューティングデバイス300の全般のオペレーションを支配するオペレーティングシステムによって管理され得る、といったファイルシステムを使用して組織化されてよい。
【００７０】
ネットワークインターフェイス330により、例示的なコンピューティングデバイス300は、例えば、ブロックチェーンネットワーク110(図1および図2)といった、他のコンピューティングデバイス及び／又は様々な通信ネットワークと通信することができる。
【００７１】
命令を含んでいるソフトウェアは、コンピュータ読取り可能媒体からプロセッサ310によって実行される。例えば、ソフトウェアは、メモリ320の永続性ストレージからランダムアクセスメモリの中へロードされ得る。追加的または代替的に、命令は、メモリ320の読み出し専用メモリから直接的にプロセッサ310によって実行され得る。
【００７２】
以下でさらに説明されるように、ソフトウェアは、例えば、発信元ノード100およびプロキシノード230A−Cを含む、ここにおいて言及される様々なコンピュータシステムの１つまたはそれ以上として機能するように、例示的なコンピューティングデバイス300のインスタンスを適合することができる。
【００７３】
上述のように、発信元ノード100(図2)は、ブロックチェーンネットワーク110に対して分配するために、トランザクションを１つまたはそれ以上のプロキシノード230A−230Cに提供することができる。そうしたブロックチェーントランザクションをプロキシノードに提供することにおける発信元ノード100のオペレーションが、図4のフローチャート400を参照して説明される。オペレーション410及びそれ以降は、例えば、メモリ320のストレージといった、コンピュータ読取り可能記憶媒体において保管され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する、例示的なコンピューティングデバイス300の適切に設定されたインスタンスの、例えば、プロセッサ310(図3)といった、コンピューティングデバイスの１つまたはそれ以上のプロセッサによって実行される。
【００７４】
フローチャート400に示される方法に対して前提条件（pre-requisite）として、発信元ノード100は、プロキシノード230A−Cそれぞれと公開鍵を交換する。鍵は、例えば、エレメント220(図2)を介して交換され得る。
【００７５】
例えば、発信元ノード100およびプロキシノード230A-Cそれぞれが、公開鍵−秘密鍵のペアを生成し、そして、交換においては公開鍵を使用する、ことであってよい。これらの関連する非対称暗号化鍵ペアは、ノードに関連付けされ得るあらゆる他の暗号鍵に追加されてよい。
【００７６】
さらなる前提条件として、発信元ノード100は、プロキシノード230A−230Cそれぞれと共有される秘密の値（shared  secret  value）を確立する。
【００７７】
以下でさらに説明されるように、共有される秘密は公開鍵の交換を通じて確立され得る。代替的に、共有される秘密を確立することは、さらなる通信及び／又は計算を含み得る。
【００７８】
オペレーション410において、発信元ノード100は、前提条件である必要な公開鍵の交換において受信される第１公開鍵に基づいて、プロキシノード230A−Cそれぞれについて第２公開鍵を決定する。第２公開鍵は、第１公開鍵および共有される秘密に基づいて決定され、そして、プロキシノードそれぞれについて対応する第２秘密鍵が、発信元ノードと所与のプロキシノードとの間で共有される秘密の値、および、第１公開鍵に対応する秘密鍵に基づいて、所与のプロキシノードによって決定可能である、そうした様式で生成される。第１公開鍵および使用され得る共有される秘密に基づいて第２公開鍵を決定する方法が、以下に説明される。
【００７９】
プロキシノード230A−230Cそれぞれに対する第２公開鍵の決定に続いて、制御フローは、オペレーション420へ進む。
【００８０】
オペレーション420において、発信元ノード100は、１つの入力および２つの出力を含んでいるブロックチェーントランザクションを生成する。そうしたブロックチェーントランザクションの一つの例が図5に示されている。図示されるように、例示的なブロックチェーントランザクション、ブロックチェーントランザクション500は、入力510、第１出力520、および第２出力530を含んでいる。
【００８１】
ブロックチェーントランザクション500は、ブロックチェーンベースのリソースのうちｘ単位（units）を、ブロックチェーン実装された台帳を介して、他の当事者に移転するように意図されている。説明を容易にするために、送信元（source）と宛先アドレスは示されていない。単位は、例えば、計算資源の単位に対応してよい。単位は、例えば、ビットコインで表現された単位といった、特定のリソースの単位であってよい。
【００８２】
ブロックチェーンに含まれるブロックチェーントランザクション500を見るために、発信元ノード100が、さらなるｒ単位を喜んで提供する、ということであってよい。
【００８３】
図示されるように、両方の量（ｘ＋ｒ）単位は、入力510を経由して、ブロックチェーントランザクションに対して入力として提供される。代替的に、これらの量が、例えば、ユーザが異なるアドレスからｘ単位およびｒ単位の全て又は一部を供給することを望む場合といった、１つより多い入力を経由して提供される、ということであってよい。
【００８４】
第１出力520は、出力アドレスに対してｘ単位を提供する。出力アドレスは、他の当事者と関連付けされてよい。
【００８５】
第２出力530は、ｄ＋ｒ単位を特別なアドレスに対して提供し、それによって、そのアドレスに対して提供された数量は、プロキシノード230A−230Cに関連付けされた上述の第２秘密鍵のうち任意の１つによってアンロックされ得る。そうしたｎ個のマルチ署名アドレスのうち１つ（1-of-n  multi-signature  address）が、各プロキシノードの公開鍵およびプロキシノードが発信元ノード100と共有する秘密の値に基づいて決定されたように、上述の第２公開鍵に基づいて、発信元ノード100によって生成されてよい。そうしたマルチ署名アドレスの詳細、特にビットコインのコンテクストにおけるものは、A.M.Antonopous(O'Reilly  Media)による“Mastering  Bitcoin:  Unlocking  Digital  Cryptocurrencies”(2014)(以降、「マスタリングビットコイン」)において見つけることができ、その内容は、参照によりその全てがここにおいて組み込まれている。マルチ署名アドレスは、「マスタリングビットコイン」の５章において説明されている。
【００８６】
また、追加の出力(図示なし)が、例えば、入力510のソースから派生して（ｘ＋ｒ）単位より多く存在していることから生じている剰余を回収するための追加の出力といったように、ブロックチェーントランザクション500に含まれている、ということであってもよい。
【００８７】
注目すべきことに、第２出力530に含まれる量ｄ単位は、任意の数量であり、第１出力520および第２出力530の合計と比較して入力510との間でブロックチェーントランザクション500においてｄ単位の不均衡(不足)を結果として生じる。以下でさらに説明されるように、このことは、ブロックチェーントランザクションに対する入力の合計が出力の合計を超えることを保証するために１つまたはそれ以上のさらなる入力を追加することなく、ブロックチェーン内に包含することについてブロックチェーントランザクション500が受け入れられないことを保証しながら、発信元ノード100がブロックチェーントランザクション500に署名することを可能にする。
【００８８】
図4に戻ると、オペレーション420に続いて、制御フローはオペレーション430へ進む。
【００８９】
オペレーション430において、発信元ノード100は、ブロックチェーントランザクション500にデジタル署名する。上述のように、ブロックチェーントランザクション500は、その出力の合計がその入力の合計を超えるので、不完全（incomplete）である。発信元ノード100は、さらなる出力をブロックチェーントランザクション500に対して追加することはできないが、さらなる入力が追加され得るように、全ての出力−すなわち、第１出力520および第２出力530を含む−および入力510に署名するための、そうした様式でブロックチェーントランザクションに署名する。例えば、ブロックチェーントランザクション500がビットコイントランザクションである場合に、発信元ノード100は、フラグSIGHASH_ALL|SIGHASH_ANYONECANPAYを使用して、ブロックチェーントランザクション500に署名し得る。
【００９０】
オペレーション430に続いて、制御フローは、オペレーション440へ進む。
【００９１】
オペレーション440において、発信元ノード100は、署名された、ブロックチェーントランザクション500をプロキシノード230A−Cに対して分配する。いくつかの実施形態において、発信元ノード100は、エレメント220を経由してブロックチェーントランザクション500を通信することができる。注目すべきことに、ブロックチェーントランザクション500は署名されているので、ブロックチェーントランザクションに関連するトランザクション識別子（txid）は唯一である。かくして、発信元ノードは、例えば、エレメント220を経由して、txidをプロキシノード230A−Cに通信することができる。別の例において、発信元ノードは、txidに係るそれぞれの指示をプロキシノード230A−230Cそれぞれに対して通信することができる。追加的または代替的に、ブロックチェーントランザクション500は、例えば、プロキシノード230A−230Cに対する送信のために、あるフォーマットへとそれを直列化（serializing）することによる、といった何らかの他の様式で通信されてよい。ブロックチェーントランザクション500及び／又はtxidは、暗号化された形式で送信されてよい。例えば、一方または両方は、プロキシノード230A−230Cそれぞれに対して、そのプロキシノードの公開鍵を使用して各プロキシノードに対して暗号化されて、分配されてよい。特定の例においては、ブロックチェーントランザクション500の受信された識別子が、所与のプロキシノードの公開鍵を使用して暗号化されてよい。
【００９２】
上述のように、プロキシノード230A−Cは、ブロックチェーンネットワーク110に対する分配のために、発信元ノード100からブロックチェーントランザクション500を受信する。ブロックチェーンネットワーク110に対するブロックチェーントランザクションの分配に関するプロキシノード230A−230Cの例示的な１つのオペレーションが、図6のフローチャート600を参照して説明される。オペレーション610及びそれ以降は、例えば、メモリ320のストレージといった、コンピュータ読取り可能記憶媒体において保管され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する、例示的なコンピューティングデバイス300の適切に設定されたインスタンスの、例えば、プロセッサ310(図3)といった、コンピューティングデバイスの１つまたはそれ以上のプロセッサによって実行される。
【００９３】
フローチャート600に示された方法は、フローチャート400(図4)に示された方法のものと類似する前提条件を有している。すなわち、プロキシノードが、例えば、エレメント220(図2)を介して発生し得るといったように、発信元ノード100(図2)と公開鍵を交換していること、および、例示的なプロキシノードが、発信元ノード100と共有される秘密の値を確立していることである。かくして、発信元ノード100およびプロキシノードそれぞれは、そのノードが交換した公開鍵およびそれに関連する秘密鍵からなる関連する非対称鍵ペアを有する。
【００９４】
オペレーション610において、プロキシノードは、発信元ノードからブロックチェーントランザクション500(図5)を受信する。上述のように、ブロックチェーントランザクション500は、発信元ノード100によって部分的に署名されており、そして、ｘ＋ｒ単位をとる第１入力と、出力アドレスに対してｘ単位を提供する第１出力と、プロキシノード230A−230Cに関連する第２秘密鍵の任意の１つのセットを使用してアンロック可能なｎ個のマルチ署名アドレスのうち１つに対してｄ＋ｒ単位を提供する第２出力とを含む。プロキシノードは、前提条件として発信元ノード100と交換した公開鍵に対応する秘密鍵、および、プロキシノードが発信元ノードと共有する秘密の値に基づいて、その第２秘密鍵を導出することができる。
【００９５】
ブロックチェーントランザクション500は、ブロックチェーントランザクション500と関連付けされた識別子を受信することによって受信され得る。識別子は、例えば、ブロックチェーントランザクション500のトランザクション識別子（txid）であってよい。追加的または代替的に、ブロックチェーントランザクション500は、例えば、ある直列化されたフォーマットといった、何らかの他の形式で受信されてよく、そして、例えば、非直列化される必要があり得る。追加的または代替的に、ブロックチェーントランザクション500は、暗号化された形式で受信され得る。例えば、発信元ノード100は、プロキシノードと関連付けされた公開鍵を使用して、暗号化を実行し得る。特定の例において、暗号化は、プロキシノードが前提条件として発信元ノード100と交換した公開鍵、または、別の例においては、プロキシノードの第２秘密鍵に対応する第２公開鍵を使用することができる。プロキシノードは、プロキシノードと関連付けされた公開鍵に対応する秘密鍵を使用して、ブロックチェーントランザクション500またはその識別子を復号化（decrypt）し得る。
【００９６】
オペレーション610に続いて、フロー制御は、オペレーション620へ進む。
【００９７】
オペレーション620において、プロキシノードは、ブロックチェーントランザクション500を更新すること、および、ブロックチェーントランザクション500をブロックチェーン内に含めることに成功した場合に、プロキシノードに対して数量を提供するためのさらなるトランザクションを構成することにおいて使用される量の数（a  number  of  quantities）を選択する。
【００９８】
特に、プロキシノードは、ブロックチェーントランザクション500をブロードキャストし、そして、ブロックチェーン内にブロックチェーントランザクション500を含めるために、プロキシノードに対して割り当てられるべき量、ｔ単位、を選択する。
【００９９】
加えて、プロキシノードは、ブロックチェーン内にブロックチェーントランザクション500を含めるために、第三者（third-party）に割り当てられるべき量ｆ、を選択する。量ｆは、計算資源の単位で表すことができ、そして、従って、計算資源の単位ｆの量であり得る。例えば、ビットコインブロックチェーンの場合に、ｆ単位は、ブロックチェーン内にブロックチェーントランザクション500を含めるためにマイナに対して支払われるべきマイニング料金に対応し得る。
【０１００】
量ｆは、コンピュータネットワークを介して受信した指示に基づいて選択される、ということであってよい。例えば、量ｆが計算資源に対応する場合には、トランザクションをブロックチェーン内に含めるために第三者に対して割り当てられるべき計算資源の量ｆは、コンピュータネットワークを介して受信した指示に基づいて選択される。そうした表示は、発信元ノードから受け取ることができる。追加的または代替的に、量ｆは、ブロックチェーントランザクションがブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択されてよい。例えば、ウェブサービスは、量ｆとして選択された場合に、ブロックチェーントランザクション500がブロックチェーン内の次のブロックに含まれることを所望の確率または可能性を伴って保証する量を決定するように、考慮され得る。
【０１０１】
注目すべきことに、量ｆは、ｒより小さくなければならない−つまり、ｆ＜ｒである。そうでなければ、プロキシノードは、ブロックチェーントランザクション500をブロックチェーンに含まれるようにするための量をネットで受け取る（net-receive）ことはなく、または、ブロックチェーントランザクション500をブロックチェーンに含まれるようにすることに対してそれ自身のリソース(単位)を寄贈することでさえあり得る。
【０１０２】
第１出力520によってｘ単位が送付される出力のタイプは、更新されたブロックチェーントランザクション700(以下でさらに説明される)をブロックチェーンに含まれるようにするために必要なマイニング料金に影響を与え得る、ということであってよい。従って、第１および第２出力の一方または両方は、量ｆの選択においてプロキシノードを支援するために、周知の形態を有してよい。
【０１０３】
以下でさらに説明されるように、プロキシノードは、ブロックチェーンに含まれているブロックチェーントランザクション500(および、さらなるブロックチェーントランザクション)次第で、ｔ単位を提供するために、さらなるトランザクションを生成する。なぜなら、さらなるトランザクションをブロックチェーンに含めるためにも、また、量―例えば、ビットコインの場合にはマイナに対するマイニング料金―が提供される必要があり得るからである。量ｔは、また、この数量がブロックチェーントランザクション500の第１入力によって提供されるｒ単位から支払われることを可能にするように、選択することもできる。別の言葉で言えば、ｔ＜（ｒ−ｆ）ということであってよい。
【０１０４】
オペレーション620における量の選択に続いて、制御フローは、オペレーション630へ進む。
【０１０５】
オペレーション630では、ブロックチェーントランザクション500の更新された形式が生成される。特に、上述のように、ブロックチェーントランザクション500は、その出力の合計がその入力を超えるので、ブロックチェーンに含めるのに適していない。従って、オペレーション630において、図7に示される、更新されたブロックチェーントランザクション700が、ブロックチェーントランザクション500(図5)に基づいて生成される。特に、更新されたブロックチェーントランザクション700は、ブロックチェーントランザクション500に対して、ｄ＋ｆ単位をとる（taking）第２入力710を追加することによって生成される。注目すべきことに、ｄ単位は、第２出力530においてｄ単位のバランスを保つように機能する。ｆ単位は、上述のように、更新されたブロックチェーントランザクション700をブロックチェーン内に含めるために提供するものである―例えば、ビットコインの場合にはマイニング料金である。
【０１０６】
プロキシノードは、また、第２入力710に署名するためにも、更新されたブロックチェーントランザクション700に署名する。例えば、更新されたブロックチェーントランザクション700がビットコイントランザクションである場合に、プロキシノードは、フラグSIGHASH_ALL|SIGHASH_ANYONECANPAYを用いて更新されたブロックチェーントランザクション700に署名することができる。このさらなる暗号署名（cryptographic  signature）は、更新されたブロックチェーントランザクション700が、ブロックチェーントランザクション500とは異なるトランザクションid（txid）を有するという副作用を有する。
【０１０７】
少なくとも全ての出力を合計した入力を有している結果として、および、これら全ての入力および出力が署名されていることを考慮すると、更新されたブロックチェーントランザクション700は、ブロックチェーンに含めるために適した形態である。
【０１０８】
図6に戻ると、オペレーション630に続いて、制御フローは、オペレーション640へ進む。
【０１０９】
オペレーション640では、上述のように、さらなるブロックチェーントランザクション800が生成され、デジタル署名される。特に、プロキシノードは、図8に示されるように、さらなるブロックチェーントランザクション800を生成し、そして、デジタル署名する。さらなるブロックチェーントランザクション800は、ブロックチェーントランザクション700(図7)の第２出力530のｎ個のマルチ署名アドレスのうち１つから供給されるｄ＋ｒ単位をとり、かつ、前提条件において発信元ノード100と交換されるプロキシノードの公開鍵およびプロキシノードが発信元ノード100と共有する秘密の値に対応する秘密鍵に基づいて導出されたプロキシノードの第２秘密鍵を使用してアンロックされる、入力810を含む。さらなるブロックチェーントランザクション800は、また、プロキシノードによって選択され得るといった、アドレスに対してｔ単位を提供している出力820を含む。実際において、ｔ単位は、更新されたブロックチェーントランザクション700(および、さらなるブロックチェーントランザクション800)がブロックチェーンに含まれている場合にだけ、プロキシノードに対する数量である。注目すべきことに、ｔとｄ＋ｒとの間の差異−すなわち、ｔ−ｄ−ｒは、ブロックチェーントランザクション800をブロックチェーン内に含めるための数量であってよい(例えば、ブロックチェーンネットワーク110がビットコインネットワークである場合におけるマイナに対するマイニング料金)。かくして、量ｆおよび量ｔの一方または両方は、ｔ−ｄ−ｒの量が、さらなるブロックチェーントランザクション800をブロックチェーン内の次のブロックに含まれることを可能にするように、選択され得る。
【０１１０】
図6に戻ると、オペレーション640に続いて、制御フローは、オペレーション650へ進む。
【０１１１】
オペレーション650では、ブロックチェーントランザクション700およびブロックチェーントランザクション800の両方が、プロキシノードによってブロックチェーンネットワーク110に対してブロードキャストされる。更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800のブロードキャストは、それらをブロックチェーンの同じブロックに含めることができるように、時間を合わせる（timed）ことができる。例えば、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800が、同時に／近く連続してブロードキャストされる、といったことであってよい。都合よく、量ｆおよびｔ−ｄ−ｒは、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800がブロックチェーン内の次のブロックに含まれ、かつ、それらのブロードキャストがそのように時間合わせされるようなものであれば、両方のトランザクションは、同一の、ブロックチェーンの次のブロックに含まれ得る。
【０１１２】
上述のように、発信元ノード100は、プロキシノード230A−230Cそれぞれに対してブロックチェーントランザクション500を送付し得る。従って、プロキシノード230A−230Cそれぞれ、更新されたブロックチェーントランザクション700およびブロックチェーントランザクション800に係るそれ自身のバージョンを生成することができる。特に、更新されたブロックチェーントランザクション700の各インスタンスは、第２入力710の異なる形式のために、異なるtxidを有する。しかしながら、さらに注目すべきことに、更新されたブロックチェーントランザクション700のこれらのバージョンそれぞれは、ブロックチェーントランザクション500の入力510と同一の第１入力、入力510、を有しており、そして、従って、入力510と同じソースから、未使用のトランザクション出力を引き出す。従って、更新されたブロックチェーントランザクション700のこれらのバージョンそれぞれは、更新されたブロックチェーントランザクション700の他のバージョンに対する二重支出攻撃（double  spending  attack）(すなわち、異なる当事者に対する特定のトークンの同じ部分（fraction）の移転)としてブロックチェーンネットワーク110に現れる。しかしながら、都合よく、例えば、ビットコインといった、大部分のブロックチェーンベース台帳は、二重支出を防ぐので、更新されたブロックチェーントランザクション700のインスタンスのうち１つだけがブロックチェーンに含まれる。
【０１１３】
ブロックチェーンネットワーク110の異なるインスタンスは、更新されたブロックチェーントランザクション700の様々なバージョンのうち特定のバージョンに有利なように、異なる方法で、二重支出を解決することができる。例えば、ブロックチェーンブロックを構成するノード(例えば、マイナ)は、それが見る第１ブロックを選択し得る、ということであってよい。ビットコインの場合には、更新されたブロックチェーントランザクション700の複数のバージョンがマイニングノードにおけるメモリ(いわゆる「メモリプール（“mempool”）」)内に一時的に保管され得るが、マイナは、次のブロックを含めるために、マイナに対する最も高いマイニング料金を有している更新されたブロックチェーントランザクション700を選択するだろう。注目すべきことに、量ｒ、ｆ、およびｔの間の関係のために、このことは、また、最も低い値のｔを選択するプロキシノードに由来する更新されたブロックチェーントランザクション700のバージョンを選択する副作用も有する。メモリプールについての詳細は、「マスタリングビットコイン」の８章において説明されている(引用について上記を参照のこと)。
【０１１４】
注目すべきことに、更新されたブロックチェーントランザクション700がブロックチェーンに含まれると、更新されたブロックチェーントランザクション700のトランザクションIDが公に利用可能となる。これは、プロキシノード230A−230Cのいずれか１つが(たとえ、ブロックチェーンに含まれた更新されたブロックチェーントランザクション700のバージョンを送信したプロキシノードでなくても)、トランザクション出力の出力を消費してもよいことを意味する。しかしながら、この懸念は、更新されたブロックチェーントランザクション700を分配する以前にさらなるブロックチェーントランザクション800を生成することによって、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800の両方を同時にブロードキャストすることによって、および、必要に応じて、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800の両方が同じ(次の)ブロックに含まれることを確実にするための数量(例えば、マイニング料金)を提供することによって、緩和され得る。
【０１１５】
複数の発信元ノード
上記の説明は、単一の発信元ノードだけ−発信元ノード100−を含んでいるが、複数の発信元ノードが、プロキシノード230A−230Cそれぞれと通信する、ということであってよい。都合よく、プロキシノード230A−230Cは、同じ鍵ペアの公開鍵を、そうした複数の発信元ノードそれぞれと交換することができる、ということであってよい。
【０１１６】
前提条件の設定
上述のように、フローチャート400(図4)およびフローチャート600(図6)に示される方法の両方は、発信元ノード100がプロキシノード230A−Cそれぞれと公開鍵を交換していること、および、発信元ノード100がプロキシノード230A−Cそれぞれ１つとそれぞれの秘密の値を共有することを必要とする。
【０１１７】
発信元ノード100およびプロキシノード230A−230Cそれぞれは、ランダムな楕円曲線の公開鍵−秘密鍵ペアを生成することができる。楕円曲線鍵ペアの公開鍵が交換され得る。
【０１１８】
特に、発信元ノード100は、ランダムな秘密鍵ｘＡを選択することができ、そして、対応する公開鍵ＰＡ＝ｘＡ×Ｇを発行することができる。
【０１１９】
同様に、プロキシノード230A−230Cそれぞれは、ランダムな秘密鍵ｙＢ，ｉを選択することができ、そして、対応する公開鍵ＱＢ，ｉ＝ｙＢ，ｉ×Ｇを発行することができる。
【０１２０】
この情報を使用して、発信元ノード100は、プロキシノード230A-Cそれぞれを用いて共有される秘密の値、ｃｉを決定することができる。ｃｉ＝Ｈ（ｘＡ×ＱＢ，ｉ）であり、ここで、Hは、例えば、SHA-2ファミリーのメンバといった、暗号ハッシュ関数である。同様に、プロキシノード230A−230Cそれぞれは、発信元ノード100と共有する秘密の値をｃｉ＝Ｈ（ＰＡ×ｙＢ，ｉ）＝Ｈ（ｘＡ×ＱＢ，ｉ）として同様に決定し得る。等しいこと（equality）は、楕円曲線の準同型性（homomorphic  property）のためである。注目すべきことに、発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立する上述のステップは、楕円曲線ディフィー・ヘルマン(ECDH)鍵交換に対応している。
【０１２１】
発信元ノード100は、また、所与のプロキシノードと共有される秘密の値、および、その発行された公開鍵に基づいて、プロキシノード230A−230Cそれぞれのためのさらなる公開鍵を決定してもよい。特に、そうしたさらなる公開鍵(上述の第２公開鍵に対応している)は、Ｑ'Ｂ，ｉ＝ＱＢ，ｉ＋ｃｉ×Ｇとして計算され得る。都合よく、第２公開鍵は、発信元ノード100によって生成されるが、対応する秘密鍵ＳＢ，ｉ(上述の「第２秘密鍵」に対応している)は、対応するプロキシノードによってだけ決定可能である。特に、プロキシノードは、その秘密鍵ｙＢ，ｉおよびプロキシノードが発信元ノード100と共有する秘密の値に基づいて、第２秘密鍵を決定することができる。ここで、特に、ＳＢ，ｉ＝（ｙＢ，ｉ＋ｃｉ）である。
【０１２２】
前提条件を確立するための代替物も、また、使用され得る。例えば、古典的なディフィー・ヘルマン（Diffie-Hellman）鍵交換(離散対数問題に基づくもの)は、各プロキシノードとのそれぞれ共有される値を確立するために、プロキシノード230A−230Cそれぞれを用いて発信元ノード100によって実行され得るだろう。公開鍵は、また、いくつかの他の方法で交換することもできる。例えば、公開鍵は、直接的に交換され、または、代替的に、セキュアなチャネルを介して交換され得る。例えば、上述の古典的なディフィー・ヘルマン鍵交換に対してさらに確立され得るように、例えば、セキュアチャネルを介して、といったものである。
【０１２３】
上述の実施形態は、本出願の技術的事項（subject  matter）を限定するものではなく、むしろ例示するものであり、そして、当業者であれば、添付の請求項によって定義される本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計することができることが留意されるべきである。請求項においては、括弧内に置かれた任意の参照記号は、請求項を限定するものと解釈されてはならない。単語「含む（“comprising”および“comprises”）」、等は、任意の請求項または明細書全体において列挙されたもの以外のエレメントまたはステップの存在を排除するものではない。本明細書において、「含む（“comprises”）」は、「含む、または、構成する（“includes  or  consists  of”）」を意味し、そして、「含んでいる（“comprising”）」は、「含んでいる、または、構成している（“including  or  consisting  of”）」を意味する。エレメントに係る単数形の参照は、そうしたエレメントに係る複数形の参照を排除するものではなく、そして、その逆もまた同様である。本出願の技術的事項は、いくつかの別個のエレメントを含んでいるハードウェアによって、および、適切にプログラムされたコンピュータによって実施することができる。いくつかの手段を列挙している装置の請求項において、これらの手段のいくつかは、一つの同じハードウェアアイテムによって具体化することができる。所定の措置が相互に異なる従属クレームにおいて引用されているという単なる事実は、これらの措置の組み合わせが有利に利用できないことを示すものではない。
【図１】
2021507566.tif 000003
【図２】
2021507566.tif 000004
【図３】
2021507566.tif 000005
【図４】
2021507566.tif 000006
【図５】
2021507566.tif 000007
【図６】
2021507566.tif 000008
【図７】
2021507566.tif 000009
【図８】
2021507566.tif 000010
【国際調査報告】
2021507566.tif 000011
2021507566.tif 000012