(57)【要約】  本発明は、デジタルアセット又はエンティティをあるリソースから別のリソースへ転送するブロックチェーントランザクションに関するセキュリティを保証し及び制御するための暗号技術を提供する。ブロックチェーンは、ビットコインブロックチェーン又は代替プロトコルであってよい。本発明の実施形態は、複数の参加ノードを有し、各ノードが、トランザクションが価値を割り当てるべきそれぞれのアウトプットアドレスを有する、価値ミキシングブロックチェーントランザクションのセキュリティ、匿名性、及び／又は制御を向上する、コンピュータにより実施される方法を提供する。方法は、各参加ノードが、第１シーケンスの中で、自身のアウトプットアドレスを該ノードの公開鍵を用いて暗号化するステップと、前記暗号化アウトプットアドレスを前記トランザクションのためのアウトプットアドレスのセットに追加するステップと、１つより多くの暗号化アウトプットアドレスが前記セット内に存在する場合、前記セット内の前記暗号化アウトプットアドレスの順序をシャッフルするステップと、を含む。各参加ノードは、第２シーケンスの中で、前記セット内の自身の暗号化アウトプットアドレスを識別し、自身の暗号化アウトプットアドレスを自身の非暗号化アウトプットアドレスで置き換える。結果は、特定インプットにリンクすることのできない、シャッフルされたアウトプットアドレスのセットである。
2020509681.tif 000002
【特許請求の範囲】
【請求項１】
障害耐性マルチノード通信の、コンピュータにより実施される方法であって、前記通信は複数の参加ノードを有し、各ノードは自身の公開鍵及び秘密鍵を有し、各ノードは、前記通信がトークンを割り当てるべきそれぞれのアウトプットアドレスを有し、前記方法は、
前記参加ノードのうちの１つに関連付けられた第１アウトプットアドレスを、前記参加ノードのうちの前記１つに関連付けられた第１公開鍵を用いて暗号化するステップと、
前記の暗号化第１アウトプットアドレスを暗号化アウトプットアドレスのセットに追加するステップと、
前記セット内の前記暗号化アウトプットアドレスの順序をシャッフルするステップと、
前記セットを次ノードへ送信するステップと、
更なるシャッフルされたアドレスのセットを前記参加ノードのうちの別のノードから受信するステップであって、前記更なるシャッフルされたアドレスのセットは、前記暗号化第１アウトプットアドレスを含む、ステップと、
前記更なるシャッフルされたアドレスのセットの中の前記暗号化第１アウトプットアドレスを前記第１アウトプットアドレスで置き換えるステップと、
前記第１アウトプットアドレスを含む前記更なるシャッフルされたアドレスのセットを後続ノードへ転送するステップと、
を含む方法。
【請求項２】
前記更なるシャッフルされたアドレスのセットの中の前記暗号化第１アウトプットアドレスを前記第１アウトプットアドレスで置き換えるステップは、
前記第１アウトプットアドレスを発生元の公開鍵で暗号化して、最終暗号化第１アウトプットアドレスを取得するステップであって、前記第２公開鍵は発生元ノードに関連付けられる、ステップと、
前記暗号化第１アウトプットアドレスを前記最終暗号化第１アウトプットアドレスで置き換えるステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記暗号化第１アウトプットアドレスを追加するステップは、先ず暗号化セットを前の参加ノードから受信し、前記暗号化セットを復号して前記暗号化アウトプットアドレスのセットを取得するステップを更に含む、請求項１又は２に記載の方法。
【請求項４】
前記セットを次ノードへ送信するステップは、前記セットを前記次ノードに関連付けられた第２公開鍵を用いて暗号化するステップを含む、請求項３に記載の方法。
【請求項５】
前記セットを前記第２公開鍵を用いて暗号化するステップは、前記セットを他の参加ノードに関連付けられた更なる公開鍵で暗号化するステップを含まない、請求項４に記載の方法。
【請求項６】
前記セットを次ノードへ送信するステップは、
前記参加ノードのうちの１つが、前記参加ノードの第１シーケンスの中の最終ノードではないと決定し、前記セットを前記第１シーケンスの中の次ノードへ送信するステップを含む、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記セットを次ノードへ送信するステップは、
前記参加ノードのうちの１つが、前記参加ノードの第１シーケンスの中の最終ノードであると決定し、前記セットを前記第１シーケンスの中の第１ノードへ送信するステップであって、前記第１ノードは前記通信の発生元である、ステップを含む、請求項１乃至５のいずれか一項に記載の方法。
【請求項８】
前記更なるシャッフルされたアドレスのセットを前記後続ノードへ転送するステップは、
前記参加ノードのうちの１つが、前記参加ノードの第２シーケンスの中の最終ノードではないと決定し、前記セットを前記第２シーケンスの中の前記後続ノードへ送信するステップを含む、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記更なるシャッフルされたアドレスのセットを前記後続ノードへ転送するステップは、
前記参加ノードのうちの１つが、前記参加ノードの第２シーケンスの中の最終ノードであると決定し、前記セットを前記第２シーケンスの中の第１ノードへ送信するステップであって、前記第１ノードは前記通信の発生元であり、前記更なるシャッフルされたセットは前記通信の全てのアウトプットアドレスを含む、ステップを含む、請求項１乃至７のいずれか一項に記載の方法。
【請求項１０】
前記順序をシャッフルするステップは、前記セット内の前記暗号化アウトプットアドレスの順序をランダム化するステップを含む、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
先ず前記通信に参加するための要求を送信するステップであって、前記要求は前記第１公開鍵を含む、ステップ、を更に含む請求項１乃至１０のいずれか一項に記載の方法。
【請求項１２】
前記通信はブロックチェーントランザクションを含み、前記それぞれのアウトプットアドレスの各々は、自身の関連付けられた参加ノードにより所有される未使用トランザクションアウトプットアドレスを含む、請求項１乃至１１のいずれか一項に記載の方法。
【請求項１３】
前記通信は等しい数のトークンを、各参加ノードに関連付けられたそれぞれのインプットアドレスから受信し、及び同じ等しい数のトークンを前記それぞれのアウトプットアドレスの各々に割り当てるよう構築される、請求項１乃至１２のいずれか一項に記載の方法。
【請求項１４】
前記通信を、前記通信に含まれ前記参加ノードのうちの１つに関連付けられたインプットアドレスに署名することにより承認する後続の動作、を更に含む請求項１乃至１３のいずれか一項に記載の方法。
【請求項１５】
複数の参加ノードの間の障害耐性マルチノード通信のためのコンピューティング装置であって、前記コンピューティング装置は前記参加ノードのうちの１つであり、前記コンピューティング装置は、
プロセッサと、
メモリと、
ネットワーク接続を提供するネットワークインタフェースと、
前記プロセッサにより実行されると前記プロセッサに請求項１乃至１４のいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を含むアプリケーションと、
を含む装置。
【請求項１６】
複数の参加ノードの間の障害耐性マルチノード通信のためのプロセッサ実行可能命令を記憶する非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの１つのプロセッサにより実行されると、前記プロセッサに請求項１乃至１４のいずれか一項に記載の方法を実行させる、非一時的プロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータにより実施されるプロセスに関するセキュリティを保証し及び制御する暗号技術に関する。これらの暗号技術は、デジタルアセット又はエンティティをあるリソースから別のリソースへ転送するブロックチェーントランザクションに関する向上されたセキュリティ及び制御を提供できる。より詳細には、本発明は、インプットをアウトプットから分離するミキシングトランザクションを生成し及び実行するために、制御方法、システム、及び装置を提供する利点を使用できる。
【背景技術】
【０００２】
本願明細書で、用語「ブロックチェーン」は、あらゆる形式の電子的な、コンピュータに基づく、分散台帳技術を含むよう使用される。（ＤＬＴｓ）。これらは、限定ではないが、総意に基づくブロックチェーン及びトランザクションチェーン技術、許可及び未許可台帳、共有台帳、サイドチェーン、及びそれらの変形を含む。最も広く知られているブロックチェーン技術の用途はビットコイン台帳であるが、他のブロックチェーンの実装が提案され開発されている。ビットコインは便宜上及び説明を目的として本願明細書において言及されるが、本発明はビットコインのブロックチェーンと共に使用することに限定されず、代替のブロックチェーンの実装及びプロトコルが本発明の範囲に含まれることに留意すべきである。
【０００３】
ブロックチェーンは、ブロックにより構成される、コンピュータに基づく非集中型の分散型システムとして実装される総意に基づく電子台帳である。また、ブロックはトランザクションにより構成される。各トランザクションは、ブロックチェーンシステム内で参加者間のデジタルアセットの制御の転送を符号化するデータ構造であり、少なくとも１つのインプット及び少なくとも１つのアウトプットを含む。各ブロックは前のブロックのハッシュを含み、ブロックは共にチェーンになって、その発端からブロックチェーンに書き込まれている全てのトランザクションの永久的な変更不可能なレコードを生成する。トランザクションは、そのインプット及びアウトプットに埋め込まれたスクリプトとして知られる小さなプログラムを含む。スクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックに基づくスクリプト言語を用いて記述される。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、「検証され」なければならない。ネットワークノード（マイナー）は、各トランザクションが有効であることを保証するために作業を実行し、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、自身のロック及びアンロックスクリプトを実行することにより、この検証作業を未使用トランザクション（ＵＴＸＯ）に対して実行する。ロック及びアンロックスクリプトの実行が真と評価した場合、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。したがって、トランザクションがブロックチェーンに書き込まれるためには、トランザクションは、ｉ）トランザクションを受信した第１ノードにより検証され、トランザクションが検証された場合に、ノードは該トランザクションをネットワーク内の他のノードに中継し、ｉｉ）マイナーにより構築された新しいブロックに追加し、ｉｉｉ）マインされ、つまり過去のトランザクションの公開台帳に追加されなければならない。
【０００５】
ブロックチェーン技術は、暗号通貨実装の使用で最も広く知られているが、デジタル起業家が、新しいシステムを実装するために、ビットコインの基づく暗号通貨セキュリティシステム、及びブロックチェーンに格納可能なデータの両方の使用を探索し始めている。ブロックチェーンが、暗号通貨の領域に限定されない自動タスク及びプロセスのために使用できれば、非常に有利である。このようなソリューションは、それらの用途において一層多様でありながら、ブロックチェーンの利点（例えば、永久的、イベントの耐タンパレコード、分散プロセス、等）を利用できる。
【０００６】
ブロックチェーンに関連する関心の他の分野は、ブロックチェーンを介する現実世界のエンティティの表現及び転送のための「トークン」（又は「カラードコイン」）の使用である。潜在的に機密な又は秘密のアイテムは、識別可能な意味又は価値（value）を有しないトークンにより表現できる。したがって、トークンは、現実世界のアイテムをブロックチェーンから参照できるようにする識別子として機能する。用語「トークン」は、本願明細書で使用されるとき、その広義の意味で、有形又は無形アセットの制御又は所有権を表すとして理解されるべきである。幾つかの場合には、トークンは、例えば、将来のコンピューティングリソースの制御又は所有権の割り当てを表してよい。
【０００７】
ビットコインのようなブロックチェーンの認識される利点のうちの１つは、その匿名性である。つまり、ビットコイン台帳は、トランザクションに参加する者達の個人情報を含まず、公用アドレス情報を含むだけである。しかしながら、外部データ及び分析を用いて、特定トランザクション及びアドレスを個人に関連付けることに成功する可能性がある。
【０００８】
ビットコイン通貨の匿名性及び流用可能性を向上するために、コインミキシングトランザクションが使用され得る。ＣｏｉｎＪｏｉｎのようなコインミキシングトランザクションは、インプットのセットをプールし、アウトプットのセットへ価値（value）を転送する。しかしながら、ＣｏｉｎＪｏｉｎは、別の参加者のインプット−アウトプット関係の知識を有する少なくとも１人の参加者を含み、部分的にのみ匿名にしている。
【０００９】
ＣｏｉｎＳｈｕｆｆｌｅという名称のトランザクションは、ＣｏｉｎＪｏｉｎトランザクションの匿名性を向上するために作り出された。ＣｏｉｎＳｈｕｆｆｌｅトランザクションでは、ノードは、自身のアウトプットアドレスを、トランザクションに関連付けられたシーケンスの中の全ての後続参加者の公開鍵を用いて暗号化し、アウトプットアドレスはシャッフルされてから、次ノードに渡される。最終結果は、参加者の誰も、トランザクションの任意の他の参加者のインプット−アウトプットリンクが分からないことである。しかしながら、ＣｏｉｎＳｈｕｆｆｌｅトランザクションの欠点は、全ての参加者及び彼らの参加のシーケンスが、予め知られ厳格に観察されなければならないことである。これは、参加者がトランザクションを通じて途中でいなくなる場合に失敗に終わる可能性があり、新しいノードが未完了のトランザクションに参加するのを妨げる。これはまた、ノードのうちの１つの動作がシーケンスにより要求されるとき、該１つのノードがオフラインである場合に、有意な遅延をもたらす。
【００１０】
したがって、新しいノードを追加する際により高い柔軟性を提供し及び／又はより高い柔軟性及び障害耐性を可能にするためにノードの参加のシーケンスを変更しながら、ブロックチェーンミキシングトランザクションのようなマルチノード通信を可能にする改良された方法及び装置を提供することが望ましい。
【００１１】
このような改良されたソリューションが考案される。
【発明の概要】
【００１２】
したがって、本発明によると、添付の請求の範囲に定められるような方法、システム及び装置が提供される。
【００１３】
本願は、障害耐性マルチノード通信のための方法及び装置を開示する。価値又はデジタルアセットをブロックチェーンを介して転送することを制御する向上した暗号技術及びソリューションを提供する方法、システム及び装置が提供され得る。本発明は、改良された障害耐性マルチノード通信の提供を通じて、価値又はコインミキシングブロックチェーントランザクションにおける向上したセキュリティ及び／又は匿名性を可能にし得る。追加で又は代替として、方法及び装置は、ノードの間で構築される間に、トランザクションに参加を追加し又は除去する際により高い柔軟性を提供し得る。したがって、少なくとも１つの実装では、本発明は、デジタルアセットの所有権をあるパーティから別のパーティへ転送するブロックチェーントランザクション（Ｔｘｓ）に関して、改良された制御ソリューションを提供し得る。
【００１４】
本願は、障害耐性マルチノード通信のコンピュータにより実施される方法を提供し得る。該通信は複数の参加ノードを有し、各ノードは自身の公開鍵及び秘密鍵を有し、各ノードは、通信がトークンを割り当てるそれぞれのアウトプットアドレスを有する。一例では、本願は、ブロックチェーントランザクションへの参加を可能にするコンピュータにより実施される方法を含み得る。該トランザクションは複数の参加ノードを有する。各ノードは、自身の（暗号）公開鍵及び秘密鍵を有してよい。各ノードは、トランザクションが価値を割り当て又は転送するそれぞれのアウトプットアドレスを有してよい。方法は、参加ノードのうちの１つにおいて実施されてよい。該方法は、参加ノードのうちの１つに関連付けられた第１アウトプットアドレスを、参加ノードのうちの該１つに関連付けられた第１公開鍵を用いて暗号化するステップと、該暗号化第１アウトプットアドレスを暗号化アウトプットアドレスのセットに追加するステップと、該セット内の暗号化アウトプットアドレスをシャッフルするステップと、該セットを次ノードへ送信するステップと、を含んでよい。方法は、更なるシャッフルされたアドレスのセットを別の参加ノードから受信するステップであって、更なるシャッフルされたアドレスのセットは暗号化第１アウトプットアドレスを含む、ステップと、更なるシャッフルされたアドレスのセットの中の更なる暗号化第１アウトプットアドレスを、第１アウトプットアドレスで置き換えるステップと、第１アウトプットアドレスを含む更なるシャッフルされたアドレスのセットを後続ノードへ転送するステップと、を更に含んでよい。
【００１５】
幾つかの実装では、更なるシャッフルされたアドレスのセットの中の暗号化第１アウトプットアドレスを第１アウトプットアドレスで置き換えるステップは、（ａ）第１アウトプットアドレスを発生元の公開鍵で暗号化して、最終暗号化第１アウトプットアドレスを取得するステップであって、第２公開鍵は発生元ノードに関連付けられる、ステップと、（ｂ）暗号化第１アウトプットアドレスを最終暗号化第１アウトプットアドレスで置き換えるステップと、を含む。幾つかの他の実装では、置き換えるステップは、暗号化第１アウトプットアドレスを非暗号化第１アウトプットアドレスで置き換えるステップを含む。
【００１６】
幾つかの実装では、本願は、ブロックチェーントランザクションに含まれ参加ノードのうちの１つに関連付けられたインプットアドレスに署名することによりブロックチェーントランザクションを認可する後続動作を記載する。                                           
幾つかの実装では、本願は、暗号化第１アウトプットアドレスを追加するステップが、先ず暗号化セットを前の参加ノードから受信し、暗号化セットを復号して暗号化アウトプットアドレスのセットを取得するステップを更に含むことを提供する。幾つかの実装では、セットを次ノードへ送信するステップは、セットを次ノードに関連付けられた第２公開鍵を用いて暗号化するステップを含む。セットを第２公開鍵を用いて暗号化するステップは、セットを他の参加ノードに関連付けられた更なる公開鍵で暗号化するステップを含まなくてよい。
【００１７】
幾つかの実装では、本願は、セットを次ノードへ送信するステップが、参加ノードのうちの１つが、参加ノードの第１シーケンスの中の最終ノードではないと決定するステップと、セットを第１シーケンスの中の次ノードへ送信するステップと、を含む、ことを提供する。
【００１８】
幾つかの実装では、本願は、セットを次ノードへ送信するステップが、参加ノードのうちの１つが、参加ノードの第１シーケンスの中の最終ノードであると決定するステップと、セットを第１シーケンスの中の第１ノードへ送信するステップであって、第１ノードはブロックチェーントランザクションの発生元である、ステップと、を含む、ことを提供する。
【００１９】
幾つかの実装では、本願は、更なるシャッフルされたアドレスのセットを後続ノードへ転送するステップは、参加ノードのうちの１つが、参加ノードの第２シーケンスの中の最終ノードではないと決定するステップと、セットを第２シーケンスの中の後続ノードへ送信するステップと、を含む、ことを提供する。
【００２０】
幾つかの実装では、本願は、更なるシャッフルされたアドレスのセットを後続ノードへ転送するステップは、参加ノードのうちの１つが、参加ノードの第２シーケンスの中の最終ノードであると決定するステップと、セットを第２シーケンスの中の第１ノードへ送信するステップと、を含む、ことを提供する。第１ノードは、ブロックチェーントランザクションの発生元であり、更なるシャッフルされたセットは、ブロックチェーントランザクションの全てのアウトプットアドレスを含む。幾つかの場合には、更なるシャッフルされたセットの中のアウトプットアドレスの各々は、発生元の公開鍵を用いて暗号化されている。
【００２１】
幾つかの実装では、本願は、順序をシャッフルするステップが、セットの中の暗号化アウトプットアドレスの順序をランダム化するステップを含むことを提供する。
【００２２】
幾つかの実装では、本願は、方法が、先ずブロックチェーントランザクションに参加することの要求を送信するステップであって、要求は第１公開鍵を含む、ステップを含み得ることを提供する。
【００２３】
幾つかの実装では、それぞれのアウトプットアドレスの各々は、それが関連付けられた参加ノードにより所有される未使用トランザクションアウトプットアドレスである。
【００２４】
幾つかの実装では、価値は通貨量であり、ブロックチェーントランザクションは、通貨量を各参加ノードに関連付けられたそれぞれのインプットアドレスから受信し、及び同じ等しい通貨量をそれぞれのアウトプットアドレスの各々に割り当てるよう構築される。
【００２５】
本願は、価値又はデジタルアセットをブロックチェーンを介して転送することを制御する向上した暗号技術及びソリューションを提供するコンピュータにより実施される方法を含み得る。本発明は、複数の参加ノードを有し、各ノードが、トランザクションが価値を割り当てるべきそれぞれのアウトプットアドレスを有する、価値ミキシングブロックチェーントランザクションの向上したセキュリティ、及び／又は匿名性の向上を提供し得る。方法は、各参加ノードが、第１シーケンスの中で、自身のアウトプットアドレスを該ノードの公開鍵を用いて暗号化するステップと、暗号化アウトプットアドレスをトランザクションのためのアウトプットアドレスのセットに追加するステップと、１つより多くの暗号化アウトプットアドレスがセット内に存在する場合、セット内の暗号化アウトプットアドレスの順序をシャッフルするステップと、を含み得る。各参加ノードは、第２シーケンスの中で、セット内の自身の暗号化アウトプットアドレスを識別し、自身の暗号化アウトプットアドレスを自身の非暗号化アウトプットアドレスで置き換えてよい。結果は、特定インプットにリンクすることのできない、シャッフルされたアウトプットアドレスのセットであってよい。
【００２６】
ある態様又は実施形態に関連して上述した任意の特徴は、任意の他の態様又は実施形態と組み合わせて使用されてよい。方法の各実施形態について、該方法を実施するよう構成される対応するシステムが提供される。方法の実施形態に関連して記載された任意の特徴は、対応するシステムにも適用可能であってよく、逆も同様である。
【００２７】
本発明の実装は、障害耐性マルチノード通信の向上を提供する。これは、幾つかの場合には、ミキシングプロトコルに従い参加ノードの間でトークンを割り当てるために使用されてよい。本発明の記載された動作を通じて、通信はオフライン又は欠損ノードに起因して、参加ノードの変化に起因して、及び／又は参加ノードの並べ替えに起因して、遅延及び障害する傾向が少ない。
【図面の簡単な説明】
【００２８】
本発明の上述の及び他の態様は、本願明細書に記載される実施形態から明らかであり、それらの実施形態を参照して教示される。本発明の実施形態は、単なる例として添付の図面を参照して以下に説明される。
【図１】例示的なノードのブロックチェーンネットワークを示す。
【図２】価値ミキシングブロックチェーントランザクションを生成し実行する際の第１段階を図式的に示す。
【図３】価値ミキシングブロックチェーントランザクションを生成し実行する際の第２段階を図式的に示す。
【図４】価値ミキシングブロックチェーントランザクションに参加する例示的な処理をフローチャート形式で示す。
【図５】簡略化した参加ノードのブロック図を示す。
【発明を実施するための形態】
【００２９】
本願では、用語「及び／又は」は、列挙された要素単独、任意の小結合、又は全部の要素のうちのいずれか１つを含む、列挙された要素の全ての可能な結合及び小結合をカバーすることを意図し、必ずしも追加要素を排除しない。
【００３０】
本願では、用語「．．．又は．．．のうちの少なくとも１つ」は、列挙された要素単独、任意の小結合、又は全部の要素のうちのいずれか１つを含む、列挙された要素のうちのいずれか１つ以上をカバーすることを意図し、必ずしも要素の全部を必要としない。
【００３１】
以下に記載される例示的実施形態の多くは、ブロックチェーントランザクションを参照し得る。しかしながら、本発明はブロックチェーンに接続される実装に限定されないことが理解される。さらに、以下のコイン又は価値への言及は、本願の範囲を暗号通貨用途に限定しない。本願は、ブロックチェーンを使用するか否かに拘わらず、より一般的なトークンのノード間での分配又は割り当てを含み得る。
【００３２】
先ず、図１を参照する。図１は、ブロック図の形式で、ブロックチェーンに関連付けられた例示的なブロックチェーンネットワーク１００を示す。ブロックチェーンネットワークは、他の会員からの招待無しに又は承認無しに誰でも参加し得るピアツーピア開放型会員制ネットワークである。ブロックチェーンプロトコルの下でブロックチェーンネットワーク１００が動作し、該ブロックチェーンプロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーンネットワーク１００に参加してよい。このような分散型電子装置は、ノード１０２として参照され得る。ブロックチェーンプロトコルは、例えばビットコインプロトコル、又は他の暗号通貨であってよい。
【００３３】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子装置は、例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバのようなコンピュータ、スマートフォンのようなモバイル装置、スマートウォッチのようなウェアラブルコンピュータ、又は他の電子装置を含む様々な種類であってよい。
【００３４】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いに結合される。多くの場合、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネット上で実施され、個々のノード１０２の幾つかは、地理的に離散した位置に置かれてよい。
【００３５】
ノード１０２は、ブロックチェーン上の全てのトランザクションのグローバル台帳を維持する。グローバル台帳は、分散台帳であり、各ノード１０２はグローバル台帳の完全コピー又は部分コピーを格納してよい。グローバル台帳に影響を与えるノード１０２によるトランザクションは、他のノード１０２により検証される。その結果、グローバル台帳の有効性が維持される。ビットコインプロトコルを使用することのような、ブロックチェーンネットワークの実装及び動作の詳細は、当業者に理解される。
【００３６】
各トランザクションは、標準的に、１つ以上のインプット及び１つ以上のアウトプットを有する。インプット及びアウトプットに埋め込まれるスクリプトは、トランザクションのアウトプットがどのように及び誰によりアクセス可能かを指定する。トランザクションのアウトプットは、トランザクションの結果として価値が転送されるアドレスであってよい。価値は、次に、未使用トランザクションアウトプットとして該アウトプットアドレスに関連付けられる。後続のトランザクションは、次に、該価値を使用する又は分散させるために、該アドレスをインプットとして参照してよい。
【００３７】
トランザクションは、個人情報がブロックチェーン台帳上のトランザクションに含まれないという点で疑似匿名性であるが、トランザクションのチェーンの中での価値の転送を追跡すること、及び幾つかの場合には、外部データを用いて価値を個人にリンクすることが可能である。匿名性を向上する目的で、様々なソースからのインプットをプールし、及びプールした価値をアウトプットに割り当てるために、コインミキシングトランザクションが使用され得る。全てのインプット及びアウトプットが同じサイズである場合、特定のインプットを特定のアウトプットに関連付けることは困難である。しかしながら、このようなトランザクションでは、少なくとも１つの参加ノードは、インプットアドレスと別の参加ノードにより指定されたアウトプットアドレスとの間のつながりに気付く。
【００３８】
ビットコインプロトコルの中のＣｏｉｎＳｈｕｆｆｌｅのように、幾つかの試みはコインミキシングを更に匿名化している。しかしながら、ＣｏｉｎＳｈｕｆｆｌｅプロトコルは、動作の発生及び実行において逸脱を伴わない所定の順序で、参加者の完全な知識を必要とする。
【００３９】
本願によると、参加及び完了においてより柔軟性の高い価値ミキシングを実現する方法及び装置が記載される。それにより、信頼性、完了の可能性、及び完了の速度を向上する。概して、記載の方法は、シャッフルされた暗号化アウトプットアドレスのセットを構築するステップを含む。ここで、各ノードは、自身の関連する暗号化アウトプットアドレスを該セットに追加し、次に、完全なセットが作成されるまで、セット内の暗号化アドレスの順序をシャッフルする。次に、ノードは再びセットを循環させ、各ノードは、自身のそれぞれの暗号化アドレスを非暗号化アウトプットアドレスで置き換える。各参加ノードが自身の暗号化アウトプットアドレスを自身の非暗号化アウトプットアドレスで置き換えると、トランザクションのアウトプットアドレスのセットが完成し、どのノードも、他のノードのうちのどれが他のアウトプットアドレスのうちのいずれを追加したかを決定できない。
【００４０】
本願明細書の説明では、用語「参加ノード」及びその「アウトプットアドレス」が使用され得る。参加ノードの「アウトプットアドレス」への言及は、物理ノードのネットワークアドレスへの言及を意味しない。むしろ、「アウトプットアドレス」は、物理ノードがトランザクションにおいて署名に対応する鍵を有することにより所有権を請求可能な未使用価値を有するブロックチェーン上のトランザクションの中で指定されるアドレスである。この意味で、「アウトプットアドレス」は、参加ノードのアドレスではなく、参加ノードにより所有される又は関連付けられたブロックチェーントランザクションアウトプットアドレスである。本願明細書で参加ノードの「アウトプットアドレス」への言及は上述のように理解されるべきである。
【００４１】
図２を参照すると、図２は、本願によるブロックチェーントランザクションの中の第１段階２００を図式的に示す。トランザクションは、ｎ個の参加者（本願明細書で「ノード」又は「参加ノード」と呼ばれる）を有してよい。個々のノード２０２は、図示及び議論を容易にするために、「Ａ」、「Ｂ」、「Ｃ」、．．．、「ｎ」のようにラベルを付される。ノード２０２は円の中で通信するように示されるが、ノード２０２の物理的構成及び地理的構成、並びにそれらのネットワーク内の接続性は、任意の形式を取り得る。
【００４２】
ノード２０２のうちの１つ、本例ではノードＡは、ブロックチェーントランザクションを提案することにより、動作を発生させる。提案されたトランザクションは、任意の発行、通知、又はトランザクションのミキシングを開始する及び参加を募集する適用可能なプロトコルによる所定の他の機能を用いて公表されてよい。
【００４３】
トランザクションに参加したいと望む参加ノード２０２は、参加ノードのリスト及びそれらが第１段階を実行すべき順序を維持するノードＡのような発生元ノードに、通知する。幾つかの例では、第１段階が既に進行中である場合、ノードＡは、新しい参加者に関する情報を、順序の中の最終ノードへ転送してよい。その結果、最終ノードは、アドレスのセットを新しい参加者へ正しく転送できる。幾つかの場合には、基礎にあるブロックチェーンプロトコルに依存して、制御は、必ずしも発生元に通知することなく、トランザクションに参加する参加者により更に分散されてよい。トランザクションの中の参加ノードの公表リストは、分散的に利用可能であってよく、新しい参加者は、トランザクションに参加する意図を示すために、リスト上の最終参加ノードに連絡を取ってよい。トランザクションに参加するための他のメカニズムは、基礎にあるブロックチェーンプロトコルに依存して使用されてよい。
【００４４】
各ノード２０２は、自身の公開−秘密鍵ペアを有する。例えば、ノードＡは、公開鍵ＰＡ及び秘密鍵ＶＡを有する。トランザクションの中の各ノード２０２は、少なくとも順序又はシーケンスの中で自身より前にあるノード２０２と自身の公開鍵を共有する。
【００４５】
トランザクションを構築する第１段階は、ノードＡ、発生元（「発行者」とも称されてよい）が、Ａ’と示される自身の関連付けられたアウトプットアドレスを、自身の公開鍵ＰＡで暗号化するステップを含む。上述のように、「アウトプットアドレス」は、参加ノードにより所有されるブロックチェーン未使用価値アウトプットアドレスであり、参加ノードのネットワークアドレスではない。ノードＡに関連付けられた暗号化アウトプットアドレスは、アウトプットアドレスのセット２０４の１番目の要素である。ノードＡは、次に、セット２０４を、ノードＢ、つまりシーケンスの中の次ノードの公開鍵ＰＢで暗号化する。暗号化セット２０４は、次に、ノードＢに提供され、ノードＢはセット２０４を復号する。説明目的で、図２は、該当する場合には、所与の要素又はセット２０４を暗号化する際に使用されたことを示すために、公開鍵Ｐｉを上付き文字で示す。
【００４６】
ノードＢは、Ｂ’で示される自身の関連付けられたアウトプットアドレスを、自身の公開鍵ＰＢで暗号化し、それをセット２０４に追加する。ノードＢは、セット内のアドレスの順序を、任意の適切な疑似乱数処理を用いてシャッフルする。セット２０４は、ノードＡ及びＢに関連付けられたシャッフルされた暗号化アウトプットアドレスを含み、次にシーケンスの中の次ノード、つまりノードＣの公開鍵ＰＣで暗号化される。
【００４７】
この処理は、各ノードが順にセット２０４を復号することで、自身の関連付けられたアウトプットアドレスを暗号化し、それをセットに追加し、そしてセット内のアドレスの順序をシャッフルし、次に暗号化セットを暗号化して、シーケンスの中の次ノードへ転送することを、停止条件に達するまで続ける。一例では、停止条件は、所定最小参加ノード数、例えばｎ個のノード、に達することを含み得る。別の例では、停止条件は、時間制限を含み、例えばＸ分後に第１段階を停止してよい。更に別の例では、停止条件は、最小参加ノード数及び終了時間の両方を含んでよい。その結果、終了時間内に最小ノード数に達しなかった場合、トランザクションはキャンセルされ、少なくとも最小参加ノード数が終了時間に参加している場合には、トランザクションが進行する。
【００４８】
ｎ番目のノードが自身の暗号化アウトプットアドレスを追加し、アドレスの順序をシャッフルすると、該ノードは、次に、セット２０４を発生元、つまりノードＡ、の公開鍵ＰＡで暗号化し、暗号化セットをノードＡに提供する。第１段階の終わりに、ノードＡは、参加ノードの各々により指定されているアウトプットアドレスの全部を含むセットを有し、各アウトプットアドレスはそれを追加したノードの公開鍵を用いて暗号化されている。セット内のアドレスの順序は、ランダム化される。その結果、トランザクションについて指定された任意のインプットの順序に関連付けられない。
【００４９】
ノードが参加する順序又はシーケンスは、予め決定される必要がなく、第１段階２００の進行につれて変化してよい。つまり、例えば、ノードＥは、ノードＡ、Ｂ、及びＣが既にそれらのアドレスをセット２０４に追加した後にトランザクションに参加することを決定してよく、ノードＥの参加の通知及びノードＥの公開鍵ＰＥのコピーを受信しているノードＤは、次に暗号化セットをノードＥへ転送する。また、予め参加することを示したノードは、自身の暗号化アドレスに貢献する前に、トランザクションから脱退し得る。さらに、順序は、ノードのうちの１つが一時的にオフラインである又は無反応であるために利用可能でない場合に、変化してよい。一例として、ノードＥがオフラインである場合、ノードＤは、セット２０４をノードＦのような別の参加ノードの公開鍵ＰＦで暗号化してよく、セットをノードＦに転送してよい。それにより、ノードＥをスキップする。ノードＥは、トランザクションに参加しないことになってよく、又はシーケンスの中で後にトランザクションに参加するのに間に合ってオンラインに復帰してよい。
【００５０】
図３を参照すると、図３は、本願によるブロックチェーントランザクションの中の第２段階３００を図式的に示す。第２段階３００は、復号段階と呼ばれてよく、各参加ノード２０２が、自身の暗号化アウトプットアドレスを非暗号化アウトプットアドレスで置き換えるステップを含む。例えば、ノードＡはアドレスのセット２０４を復号する。ノードＡは、次に、セットを検索し、ノードＡが該セットに挿入した暗号化アウトプットアドレスを特定する。ノードＡは、自身のアウトプットアドレスを特定するために、セット内の各暗号化アドレスを復号することを試みることにより、これを行ってよい。より高速なアプローチは、第１段階２００の間に暗号化アウトプットアドレスのコピーを格納し、第２段階３００の間に一致する暗号化アウトプットアドレスについてセット２０４を単純に検索することであってよい。
【００５１】
セット２０４内で自身の暗号化アウトプットアドレスを自身の非暗号化アウトプットアドレスで置き換えると、ノードＡは、次に、セットを、シーケンスの中の次ノード（本例ではノードＢ）の公開鍵でセットを暗号化し、暗号化セットをノードＢに提供する。
【００５２】
ノードＢは、次に、セット２０４を復号し、自身の暗号化アウトプットアドレスを特定し、それを自身の非暗号化アウトプットアドレスで置き換え、セットを次ノードの公開鍵で暗号化し、そして暗号化セットを前方へ渡す同じ動作を実行する。この処理は、ノードからノードへ、トランザクションに参加している全てのノードがそれらの暗号化アウトプットアドレスをそれらの非暗号化アウトプットアドレスで置き換えるまで、続く。セットは、したがって、ブロックチェーントランザクションのアウトプットアドレスの完全なリストをランダム化された順序で含む。
【００５３】
第２段階３００におけるノードのシーケンス又は順序は、第１段階２００におけるものと同じである必要はない。
【００５４】
記載した復号処理は、依然として、少なくとも１人の参加者が別の参加者のアウトプットアドレスを特定可能である可能性を残したままであることが理解され得る。特に、ノードｎ−２は、全ての非暗号化アドレス及び（自身が特定可能な）自身の暗号化アウトプットアドレス及びノードｎの暗号化アドレスを含むセットを受け取る。この段階で、どのアドレスが暗号化されているか、及びどれが暗号化されていないかを決定することはできない。しかしながら、トランザクションが完了すると、ノードｎが該ノードの暗号化アドレスを該ノードの非暗号化アドレスで置き換えた結果、アドレスのうちのどれが変化したか、つまりどのアウトプットアドレスがノードｎに関連付けられているかを特定できる。
【００５５】
匿名性を更に向上するために、幾つかの実装では、復号処理は、各ノードが自身のアウトプットアドレスをノードＡの公開鍵で暗号化するステップを含む。つまり、自身の暗号化アウトプットアドレスを自身の非暗号化アウトプットアドレスで置き換え、それによって、該アドレスを処理中に全ての後続ノードに見えるよう露出させたままにする代わりに、ノードは自身のアウトプットアドレスをノードＡの公開鍵を用いて暗号化し、自身のアウトプットアドレスのこの暗号化バージョンを、該ノードが最初に挿入した先の暗号化アウトプットアドレスの代わりに挿入する。全てのノードがそれらのアドレスを置き換え、セットをノードＡに返した後に、ノードＡは、全てのアドレスを復号して、非暗号化されシャッフルされたアウトプットアドレスのセットを取得し、いずれのノードも、どのアウトプットアドレスがノードのうちの任意の他のノードに関連付けられているかを特定できない。
【００５６】
ある変形では、第１段階の間に暗号化アウトプットアドレスを挿入するのではなく、各ノードは所定長を有する疑似ランダムストリングを挿入する。各ノードは、該ストリングをローカルメモリに格納する。その結果、各ノードは、それを再び識別してよい。次に第２段階で、ノードは該ストリングを自身のアウトプットアドレスで置き換える。
【００５７】
アウトプットアドレスの完全なセットが生成されると、トランザクションは、次に、全ての参加者に認可のために提示される。各参加者は、彼らのそれぞれのインプットに署名して、トランザクションへの参加を確認する。これは、次に、検証及びブロックチェーンへの最終的な包含のために、ブロックチェーンネットワークに提出される。
【００５８】
ここで図４を参照すると、図４は、価値ミキシングブロックチェーントランザクションを生成する例示的な処理４００をフローチャートの形式で示す。例示的な処理４００は、ブロックチェーントランザクションの中の参加ノードのうちの１つで１つ以上のプロセッサにより実行される、コンピュータにより実施される処理である。本例は、ノードが発生元ノードではないと仮定する。
【００５９】
動作４０２で、ノードは、トランザクションへの参加を要求する。これは、ノードの公開鍵を利用可能にするステップを含んでよい。幾つかの実装では、公開鍵は、生成された参加要求メッセージに含まれ、ノードにより送信され又は公開されてよい。メッセージは、実装に依存して、発生元ノードへ、第１段階の間にセットの現在の所有者へ、その両者へ、又はトランザクションに参加しているノードを識別する中央リソースとして動作する別のノードへ送信されてよい。
【００６０】
動作４０４で、ノードは、自身のアウトプットアドレス（価値ミキシングトランザクションの中で価値が送信されるべきアドレス）を暗号化する。ノードは、シャッフルされたセットの中で後に容易に識別できるように、暗号化アウトプットアドレスのローカルコピーを格納してよい。
【００６１】
ノードが第１段階のシーケンスの中で前のノードからセットを受け取ると、ノードはセットを復号する。セットは、前のノードにより現在ノードの公開鍵を用いて暗号化されている。対応する秘密鍵の保有者としての現在ノードは、セットを復号できる。次に、ノードは、動作４０６で、自身の暗号化アウトプットアドレスを暗号化アウトプットアドレスのセットに追加し、動作４０８で、セット内の暗号化アウトプットアドレスの順序をシャッフルする。シャッフルは、暗号化アウトプットアドレスの順序を再配置するために任意の適切な疑似ランダム化処理を利用してよい。
【００６２】
動作４１０で、ノードは、次に、自身がシーケンスの中の最終ノードか否か、つまり、自身がｎ番目のノードか否かを決定する。上述のように、幾つかの実装では、ｎは、発生元ノードにより、外部ポリシにより、又は幾つかの他の方法で設定された所定最小ノード数であってよく、それに達するとトランザクションを構築する第１段階の終了になる。他の実装では、ｎは、予め定められなくてよく、トランザクションを開始してから終了時間に達するとトランザクションに参加している参加ノードの数であってよい。最小参加者数は、トランザクションが進行するために必要であってよい。なぜなら、少なすぎる参加ノードは、価値ミキシングトランザクションにより提供される匿名性を低下させるからである。幾つかの実装では、最小数ｎは５０であってよいが、他の最小値が他の実装で予め定められてよい。
【００６３】
ノードが動作４１０で自身はシーケンスの中の最終ノードではないと決定した場合、動作４１４により示されるように、該ノードは、セットをシーケンスの中の次ノードへ送信する。セットを送信する前に、ノードは、セットを次ノードｉの公開鍵Ｐｉを用いて暗号化してよい。
【００６４】
幾つかの実装では、暗号化アウトプットアドレスのセットは、ノードからノードへとセットを暗号化することなく渡されてよいが、セットが該セットを渡されるノードの公開鍵で暗号化されることを保証することにより、匿名性が向上される。或いは、任意の装置は、セットが特定ノードへ行くのを観察し、特定ノードに該特定ノードにより追加された暗号化アウトプットアドレスストリングを識別させ、後に、暗号化アウトプットアドレスの代わりにセットに追加された非暗号化アウトプットアドレスを識別させることができる。したがって、セキュリティを向上するために、本例ではセット自体が暗号化される。
【００６５】
ノードが動作４１０で自身はシーケンスの中の最終ノードであると決定した場合、動作４１６で、該ノードは、セットを発生元ノードへ転送する。これは、先ず、セットを発生元ノードの公開鍵ＰＡで暗号化するステップを含み得る。
【００６６】
いずれの場合にも、現在ノードは、自身の暗号化アウトプットアドレスを追加し、セット内の暗号化アドレスの順序をシャッフルし、セットを別の参加ノードへ渡している。現在ノードは、動作４１８により示されるように、第２段階の間にセットを受信する。動作４１８で、更なるシャッフルされたセットが受信される。このセットは、現在ノードの公開鍵で暗号化されてよく又はされなくてよい。第２段階におけるノードのシーケンスは必ずしも第１段階の間のシーケンスと同じではないので、このセットは、同じ前のノードから受信されてよく又はされなくてよい。
【００６７】
動作４２０で、現在ノードは、自身の暗号化アウトプットアドレスを、更なるシャッフルされたセットの中で発見し、それを置き換える。本例では、現在ノードは、自身のアウトプットアドレスを発生元ノード（ノードＡ）の公開鍵を用いて暗号化し、シャッフルされたセットの中の自身の暗号化アウトプットアドレスをこの第２暗号化アウトプットアドレスで置き換える。このように、発生元ノードだけがアウトプットアドレスを復号でき、トランザクションが組み立てられ認可される準備が整うと、アウトプットアドレスを非暗号化形式で露出する。しかしながら、幾つかの実装では、現在ノードは、自身の暗号化アウトプットアドレスを非暗号化形式の自身のアウトプットアドレスで置き換えてよい。以上に概要を説明した理由のために、このような実装の結果、参加ノード間の匿名性は僅かにセキュアではない。
【００６８】
動作４２２に示されるように、現在ノードは、次に再び、自身が第２段階において、ノードのシーケンスの中の最終ノード、つまりｎ番目のノードであるか否かを決定する。最終ノードではない場合、動作４２４で、現在ノードは、更なるシャッフルされたセットをシーケンスの中の次ノードへ渡す。現在ノードがシーケンスの中の最終ノードである場合、動作４２６に示すように、現在ノードは、更なるシャッフルされたセットを発生元ノードへ返す。ここで、更なるシャッフルされたセットは、それぞれ発生元ノードの公開鍵を用いて暗号化された全てのアウトプットアドレスを含み、
全てのノードが発生元の公開鍵により暗号化されたそれら個々のアウトプットアドレスを挿入すると、発生元ノードは、次に、アウトプットアドレスを復号し、自身のインプット及びアウトプット及び各アドレスから及び各アドレスへ転送されるべき価値を含み、トランザクションを参加ノードに発行し又は利用可能にする。動作４２８で、現在ノードは、自身のインプットに署名することにより、トランザクションを認可する。全てのノードがトランザクションに署名すると、該トランザクションは検証のためにブロックチェーンネットワークに提出され、最終的にブロックチェーンに追加される。
【００６９】
上述の例示的な実施形態において記載した動作の幾つかは、幾つかの実装では実質的に処理に影響を与えることなく同時に又は異なる順序で生じてよいことが理解される。本願は、これらの変形及び変更を包含する。
【００７０】
ここで図５を参照する。図５は、ブロック図の形式で、参加ノード５００の簡略化された例を示す。ノード５００は、１つ以上のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、又は同様のコンピュータ処理装置を含み得るプロセッサ５０２を含む。ノード５００は、永久及び非永久メモリを含み得る、値、変数、及び幾つかの例ではプロセッサ実行可能プログラム命令を格納するメモリ５０４、並びに、有線又は無線ネットワークを介してネットワーク接続を提供するネットワークインタフェース５０６、を更に含む。
【００７１】
ノード５００は、実行されるとプロセッサ５０２に本願明細書に記載の機能又は動作のうちの１つ以上を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション５０８を含む。
【００７２】
本願明細書に記載の装置及び処理、並びに、ビデオ特徴抽出器を構成する記載の方法／処理を実施するモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントは、標準的なコンピュータプログラミング技術及び言語を用いて実現されてよい。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング技法、データ構造、他のこのような実装の詳細に限定されない。
【００７３】
留意すべきことに、上述の実施形態は、本発明を限定するのではなく、当業者は添付の請求項により定められる本発明の範囲から逸脱することなく多数の代替の実施形態を考案できる。請求項中、括弧内に記載された如何なる参照符号も、請求項を制限すると見なされるべきではない。用語「有する（comprising又はcomprises）」等は、全体としていかなる請求項中に及び明細書に列挙された以外の要素又はステップの存在を排除するものではない。本願明細書において、「有する（comprises）」は「含む（includes）又は構成される（consists  of）」を意味し、「有する（comprising）」は「含む（including）又は構成される（including  of）」を意味する。要素の単数の参照は、該要素の複数の存在を排除するものではなく、逆も同様である。本発明は、複数の別個の要素を有するハードウェアにより又は適切にプログラムされたコンピュータにより、実施され得る。複数の手段を列挙している装置の請求項では、これらの複数の手段は、１つの同一のハードウェア要素により実装することができる。特定の量が相互に異なる従属請求項に記載されるという事実は、これらの量の組合せが有利に用いることが出来ないことを示すものではない。
【図１】
2020509681.tif 000003
【図２】
2020509681.tif 000004
【図３】
2020509681.tif 000005
【図４】
2020509681.tif 000006
【図５】
2020509681.tif 000007
【国際調査報告】
2020509681.tif 000008
2020509681.tif 000009