(57)【要約】ブロックチェーンを用いて入力ノードから出力ノードへ全データ記録を移す、コンピュータにより実施される方法。全データ記録は、ビットコインを使用することなどのいくつかの場合に、支払い合計額であることができる。出力ノードは、パブリックキーマテリアルを共有し、入力ノードは、総額を支払う際に使用する未使用トランザクションを選択し、固定デノミネーションで出力ノードが支払うべき複数の出力を決定する。入力ノードは、パブリックキーマテリアル及び各々の乱数を用いて出力ごとに出力アドレスを生成し、１つ以上のコインミキシングトランザクションにおいて入力及び出力をミキシングする。各々の乱数に基づき生成された出力ごとのナンスパブリックキーは、ブロックチェーンを通じて又は別々に出力ノードと共有され、出力ノードは、出力アドレスごとに対応するプライベートキーを導出することができ、所有権を主張することができる出力を探し出し識別することを可能にする。
2020513176.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動させる、コンピュータにより実施される方法であって、
前記出力ノードに関連するパブリックキーマテリアルを取得することと、
前記入力ノードによって制御される利用可能なデータ記録及び前記全データ記録に基づき、前記利用可能なデータ記録から選択される１つ以上の入力、及び複数の出力を決定することであり、前記１つ以上の入力の累計は前記全データ記録に等しいか又はそれより多く、各出力は、一連の所定のデータ記録特性から選択される各々のデータ記録特性に関し、前記複数の出力の和は前記全データ記録に一致する、前記決定することと、
前記複数の出力の夫々について、
無作為に数を選択し、
前記パブリックキーマテリアル及び前記乱数に基づき出力アドレスを生成し、
当該出力の前記各々のデータ記録特性を有するデータ記録を割り当てられるよう記録分散トランザクションに前記出力アドレスを挿入し、
前記乱数からナンスパブリックキーを生成し、
前記ナンスパブリックキーを前記出力ノードと共有することと、
前記１つ以上の入力に署名することと
を有する方法。
【請求項２】
前記１つ以上の入力及び前記複数の出力を決定することは、利用可能なデータ記録分散トランザクションに部分的に基づく、
請求項１に記載の方法。
【請求項３】
前記利用可能なデータ記録分散トランザクションは、１つ以上の特定のデータ記録特性を有するデータ記録を分配することを夫々伴い、
前記１つ以上の入力及び前記複数の出力を決定することは、前記特定のデータ記録特性の各々１つに基づき前記１つ以上の入力及び前記複数の出力の夫々のデータ記録を整合させることに部分的に基づく、
請求項２に記載の方法。
【請求項４】
前記複数の出力について、前記出力アドレスを挿入することは、異なるデータ記録特性を有する複数のデータ記録を分配するよう構造化された単一のデータ記録分散トランザクションに全ての出力アドレスを出力として挿入することを含む、
請求項１乃至３のうちいずれか一項に記載の方法。
【請求項５】
前記複数の出力について、前記出力アドレスを挿入することは、少なくとも１つの出力アドレスを第１データ記録分散トランザクションに挿入し、少なくとももう１つの出力アドレスを第２データ記録分散トランザクションに挿入することを含み、
前記第１データ記録分散トランザクションは、前記第２データ記録分散トランザクションにおいて分配されているデータ記録のデータ記録特性とは異なるデータ記録特性を有するデータ記録を分配することを目的とする、
請求項１乃至３のうちいずれか一項に記載の方法。
【請求項６】
前記データ記録特性は、前記データ記録において指定される値であり、
前記一連の所定のデータ記録特性は、最大値及び該最大値の１／１０ｎ倍によって定義される級数に基づく値の連続であり、ｎは正の整数である、
請求項１乃至５のうちいずれか一項に記載の方法。
【請求項７】
前記パブリックキーマテリアルは、２つのパブリックキーＢＰｕｂｘ及びＢＰｕｂｙを有し、
出力ｉの前記出力アドレスは、
ＢＰｕｂｉ＝Ｈ（ｒｉＢＰｕｂｘ）Ｇ＋ＢＰｕｂｙ
によって与えられ、
Ｇは、楕円曲線ベースポイントであり、Ｈ（）は、ハッシュ関数であり、ｒｉは、出力ｉについて選択された前記乱数である、
請求項１乃至６のうちいずれか一項に記載の方法。
【請求項８】
前記ナンスパブリックキーＲｉは、Ｒｉ＝ｒｉＧとして生成される、
請求項７に記載の方法。
【請求項９】
前記ナンスパブリックキーを共有することは、
前記データ記録分散トランザクション内の非トランザクションデータフィールドに前記ナンスパブリックキーを挿入すること、
前記データ記録分散トランザクションとは異なる別個のトランザクション内の非トランザクションデータフィールドに前記ナンスパブリックキーを挿入すること、又は
非ブロックチェーン通信を使用することにおいて前記ナンスパブリックキーを前記出力ノードへ送ること
のうちの１つを有する、
請求項１乃至８のうちいずれか一項に記載の方法。
【請求項１０】
ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動させる、コンピュータにより実施される方法であって、当該方法は、前記出力ノードで実施され、
前記出力ノードに関連するパブリックキーマテリアルを前記入力ノードへ供給することと、
前記入力ノードからナンスパブリックキーを取得することと、
データ記録分散トランザクションを求めてブロックチェーンを探索することであり、該データ記録分散トランザクションは複数の入力アドレス及び複数の出力アドレスを有し、各出力アドレスは、一連の所定のデータ記録特性の中の各々のデータ記録特性を有するデータ記録を割り当てられている、前記探索することと、
前記ナンスパブリックキー及び前記パブリックキーマテリアルに基づきパブリック−プライベートキー対を決定することと、
前記パブリック−プライベートキー対からのパブリックキーを前記データ記録分散トランザクション内の前記出力アドレスの１つと照合し、該照合に基づき、その出力アドレスに割り当てられている前記データ記録を暫定データ記録コンピレーションに加えることと、
前記暫定データ記録コンピレーションが前記全データ記録に満たないかどうかを判定し、そうである場合には、前記暫定データ記録コンピレーションが前記全データ記録に一致するまで前記探索すること、前記決定すること、及び前記照合することを続けることと
を有する方法。
【請求項１１】
前記パブリックキーマテリアルは、２つのパブリックキーＢＰｕｂｘ及びＢＰｕｂｙを有し、該２つのパブリックキーは、対応する各々のプライベートキーＢＰｒｉｖｘ及びＢＰｒｉｖｙを有する、
請求項１０に記載の方法。
【請求項１２】
ｉ番目のパブリック−プライベートキー対を決定することは、
ＢＰｒｉｖｉ＝Ｈ（ＢＰｒｉｖｘＲｉ）＋ＢＰｒｉｖｙ
を決定することを有し、
ＢＰｒｉｖｉは、前記パブリック−プライベートキー対のプライベートキーであり、Ｈ（）は、ハッシュ関数であり、Ｒｉは、前記ナンスパブリックキーであり、
前記ｉ番目のパブリック−プライベートキー対のパブリックキーは、ＢＰｕｂｉ＝ＢＰｒｉｖｉＧとして決定され、Ｇは、楕円曲線ベースポイントである、
請求項１１に記載の方法。
【請求項１３】
前記ブロックチェーンを探索することは、非トランザクションコードを含むデータ記録分散トランザクションを識別することを有し、
前記ナンスパブリックキーを取得することは、前記データ記録分散トランザクションの非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを有する、
請求項１０乃至１２のうちいずれか一項に記載の方法。
【請求項１４】
前記ナンスパブリックキーを取得することは、非トランザクションコードを含むトランザクションを求めて前記ブロックチェーンを探索し、識別される場合に、該トランザクション内の非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを有する、
請求項１０乃至１２のうちいずれか一項に記載の方法。
【請求項１５】
ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動させる計算装置であって、
当該計算装置は、前記入力ノード又は前記出力ノードの１つであり、
当該計算装置は、
プロセッサと、
メモリと、
ネットワークコネクティビティを提供するネットワークインターフェイスと、
前記プロセッサによって実行される場合に、該プロセッサに、請求項１乃至１４のうちいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を含むブロックチェーンアプリケーションと
を有する、計算装置。
【請求項１６】
ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動させるプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体であって、
前記プロセッサ実行可能命令は、前記入力ノード又は前記出力ノードの１つにおけるプロセッサによって実行される場合に、該プロセッサに、請求項１乃至１４のうちいずれか一項の方法を実行させる、
非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、ブロックチェーントランザクションに、より具体的には、データ記録分散トランザクションを生成及び実行する方法及びデバイスに関する。
【背景技術】
【０００２】
本明細書中で、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳（distributed  ledgers）を含むよう語「ブロックチェーン」を使用する。それらは、ブロックチェーン及びトランザクションチェーン技術、許可（permissioned）及び無許可（un-permissioned）台帳、共有台帳、並びにこれらの変形を含むが限られない。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。
【０００３】
ブロックチェーンは、合意に基づく電子台帳であり、これは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装される。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移行を符号化するデータ構造であり、少なくとも１つの入力及び少なくとも１つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【０００４】
トランザクションがブロックチェーンに書き込まれるために、それは“検証され”（validated）なければならない。ネットワークノード（マイナー（miners））は、各トランザクションが有効であることを確かめる作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードにインストールされたソフトウェアクライアントは、そのｌｏｃｋｉｎｇそれからｌｏｃｋｉｎｇスクリプトを実行することによって、未使用トランザクション（unspent  transaction）（ＵＴＸＯ）に対してこの検証作業を実行する。ｌｏｃｋｉｎｇそれからｌｏｃｋｉｎｇスクリプトの実行がＴＲＵＥになる場合に、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。よって、トランザクションがブロックチェーンに書き込まれるために、それは、ｉ）トランザクションを受け取る第１ノードによって検証され、トランザクションが検証される場合に、ノードはそれをネットワーク内の他のノードに中継し、ｉｉ）マイナーによって構築された新しいブロックに加えられ、ｉｉｉ）マイニング、すなわち、過去のトランザクションの公開台帳に付加、されなければならない。
【０００５】
ビットコインなどのブロックチェーン技術の認識されている利点の１つは、その匿名性及び安全性である。すなわち、ビットコイン台帳は、トランザクションに参加する者に関する如何なる個人情報も含まず、それはパブリックアドレス情報しか含まない。しかし、外部データ及び分析論を用いると、特定のトランザクション及びアドレスを個人と成功裏に関連付けることが可能である。
【０００６】
ビットコインのようないくつかのデジタル通貨の欠点の１つは、プライバシーについてのそれらの公評にもかかわらず、ブロックチェーン内のビットコインの流れが完全に公であり、チェーンを通る価値の移動をトレースするよう解析可能である点である。これは、プライバシーが危うくされる状況を生じさせる可能性がある。例えば、隔週の給与支払いなどの、大きい未使用トランザクション出力ＵＴＸＯを含むウォレットを人が持っており、その未使用トランザクションが小額を他人に支払うために入力として使用される場合に、その他人及び、トランザクションを見る誰でもが、トランザクションにおいて返されるお釣り（change）に部分的に基づき、支払いを行う人の資産及び場合により給与に関する情報を得ることになる。他の状況は、大きい入力及び／又は大きいお釣りトランザクションがユーザのプライバシーを危うくしうる場合に起こり得る。
【０００７】
よって、効率的且つ効果的な暗号通貨支払いメカニズムを依然として形成しながら、出力に対する入力の追跡不能制及びリンク不能制の改善を通じて、高められた安全性及びよりロバストな暗号化を提供する改善された方法及びデバイスを提供することが望ましい。
【０００８】
ブロックチェーン技術が暗号通貨実施の使用のために最も広く知られているが、デジタル起業家は、新しいシステムを実装するために、ビットコインが基づく暗号化によるセキュリティシステムと、ブロックチェーン上に記憶され得るデータとの両方の使用を探求し始めている。暗号資産の分野に制限されない自動化タスク及びプロセスのためにブロックチェーンが使用される場合に、それは大いに有利である。そのような解決法は、ブロックチェーンの利益（例えば、イベントの永久的な耐タンパー性の記録、分散処理など）を活用しながら、それらの用途を広げることができる。従って、本願は、ブロックチェーンに関して記録される“データ記録”（data  record）に言及することがある。データ記録には、例えば、ドキュメント、処理能力若しくは時間の測定値、暗号通貨額、資産の所有権を示すセキュリティ若しくは他のトークン、又はエンティティがそのデータ記録を使用若しくは移動することを可能にする暗号化マテリアルを持ってそのエンティティによって制御され得る他のそのようなものが含まれ得る。
【０００９】
ブロックチェーン内の記録の潜在的な追跡可能性は、特定の利用に損害をもたらす可能性がある実施不備を明らかにする。利用の例として、採点のために試験若しくは書類を提出すること、匿名の犯罪報告書を提出すること、匿名の調査若しくは国勢調査報告書を提出すること、又はデータがサブミット後に変更されない状況下で参加ノードが安全且つ機密にデータ記録を１つ以上の他のノードへ移動させる必要がある他のそのような利用が含まれる。暗号通貨と同様に、他のタイプのデータ記録の移動は、記録自体の特性に基づき追跡可能である場合があり、それによって、特定のノードに戻るサブミットの追跡が可能となり、ノードのユーザのプライバシー又は安全性が損なわれたり、あるいは、配布又は提出プロセスの匿名性の完全性が弱体化されたりする可能性がある。更に、ネットワーク内のノードが１つのノードを他のノードに対する転送されるドキュメントの発信元として識別することが可能である場合に、それは、なりすまし（spoofing）及び他のコンピュータセキュリティ攻撃などの攻撃を通じてネットワークの安全性を危うくするオブザーバノードの能力を高める。
【００１０】
ブロックチェーンの公共性は、暗号通貨又はその他タイプのデータ記録のいずれであっても、特定の具体的なノード間のデータ記録の移動を追跡する機会を最小限としながら分散プロセスの安全性及び整合性をより有効に保証するという、データ記録分散プロセスを構造化することにおける技術的課題を示す。
【００１１】
そのような改善された解決法が、現在、考え出されている。
【発明の概要】
【００１２】
従って、本発明によれば、添付の特許請求の範囲で定義される方法及びデバイスが提供される。
【００１３】
有利なことに、本願は、トランザクションのプライバシー及び安全性を改善する、ブロックチェーンに基づくデータ記録分散のための改善された方法、デバイス及びシステムを提供する。ステルスアドレッシング（stealth  addressing）、記録分散、及び所定のデータ記録特性への記録の脱構築の独自の組み合わせを用いると、入力ノード又は出力ノードのいずれかに関する情報の開示を防ぐよう且つ追跡活動を阻止するよう入力を出力から切り離しながら、全データ記録が移転される。
【００１４】
本発明は、コンピュータにより実施される方法及び対応するシステムを提供し得る。方法／システムは、ブロックチェーンにより実施される方法／システムとして記載され得る。本発明は、セキュリティ方法又は暗号化方法／システムとして記載され得る。それは、暗号通貨の部分又は量などのデジタル資産又はデータ記録の安全な移動を提供し得る。追加的に、又は代替的に、それは、暗号通貨の部分又は量などのデジタル資産の移動を制御する制御メカニズムを提供し得る。
【００１５】
追加的に、又は代替的に、本願は、ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動する、コンピュータにより実施される方法について記載し得る。方法は、入力ノードで実施され、出力ノードに関連するパブリックキーマテリアルを取得することと、入力ノードによって制御される利用可能なデータ記録及び全データ記録に基づき、利用可能なデータ記録から選択される１つ以上の入力、及び複数の出力を決定することであり、前記１つ以上の入力の累計は全データ記録に等しいか又はそれより多く、各出力は、一連の所定のデータ記録特性から選択される各々のデータ記録特性に関し、前記複数の出力の和は全データ記録に一致する、前記決定することと、前記複数の出力の夫々について、無作為に数を選択し、パブリックキーマテリアル及び乱数に基づき出力アドレスを生成し、当該出力の各々のデータ記録特性を有するデータ記録を割り当てられるよう記録分散トランザクションに出力アドレスを挿入し、乱数からナンスパブリックキーを生成し、ナンスパブリックキーを出力ノードと共有することと、前記１つ以上の入力に署名することとを含んでよい。
【００１６】
追加的に、又は代替的に、本願は、ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動する、コンピュータにより実施される方法について記載し得る。方法は、出力ノードで実施され、出力ノードに関連するパブリックキーマテリアルを入力ノードへ供給することと、入力ノードからナンスパブリックキーを取得することと、データ記録分散トランザクションを求めてブロックチェーンを探索することであり、該データ記録分散トランザクションは複数の入力アドレス及び複数の出力アドレスを有し、各出力アドレスは、一連の所定のデータ記録特性の中の各々のデータ記録特性を有するデータ記録を割り当てられている、前記探索することと、ナンスパブリックキー及びパブリックキーマテリアルに基づきパブリック−プライベートキー対を決定することと、パブリック−プライベートキー対からのパブリックキーをデータ記録分散トランザクション内の出力アドレスの１つと照合し、該照合に基づき、その出力アドレスに割り当てられているデータ記録を暫定データ記録コンピレーションに加えることと、暫定データ記録コンピレーションが全データ記録に満たないかどうかを判定し、そうである場合には、暫定データ記録コンピレーションが全データ記録に一致するまで前記探索すること、前記決定すること、及び前記照合することを続けることとを含んでよい。
【００１７】
追加的に、又は代替的に、本願は、ブロックチェーンを用いて入力ノードと出力ノードとの間で総価値を移動する、コンピュータにより実施される方法について記載し得る。方法は、入力ノードで実施され、出力ノードに関連するパブリックキーマテリアルを取得することと、入力ノードによって所有されている利用可能な未使用出力トランザクション及び総価値に基づき、未使用出力トランザクションから選択される１つ以上の入力、及び複数の出力を決定することであり、前記１つ以上の入力の累積価値は総価値に等しいか又はそれより大きく、各出力は、一連の所定のデノミネーションから選択される各々のデノミネーションに関し、前記複数の出力の和は総価値に一致する、前記決定することとを含んでよい。方法は、前記複数の出力の夫々について、無作為に数を選択し、パブリックキーマテリアル及び乱数に基づき出力アドレスを生成し、当該出力の各々のデノミネーションを割り当てられるようコインミキシングトランザクションに出力アドレスを挿入し、乱数からナンスパブリックキーを生成し、ナンスパブリックキーを出力ノードと共有することを更に含む。入力ノードは、前記１つ以上の入力に署名する。
【００１８】
いくつかの実施において、前記１つ以上の入力及び前記複数の出力を決定することは、利用可能なコインミキシングトランザクションに部分的に基づく。利用可能なコインミキシングトランザクションは、特定のデノミネーションをミキシングすることを夫々伴う。前記１つ以上の入力及び前記複数の出力を決定することは、前記１つ以上の入力及び前記複数の出力の夫々の値を前記特定のデノミネーションの各々１つと照合することに部分的に基づく。
【００１９】
いくつかの実施において、前記複数の出力について、前記出力アドレスを挿入することは、複数の異なるデノミネーションをミキシングするよう構造化された単一のコインミキシングトランザクションに全ての出力アドレスを出力として挿入することを含む。いくつかの他の実施において、前記複数の出力について、前記出力アドレスを挿入することは、少なくとも１つの出力アドレスを第１コインミキシングトランザクションに、及び少なくとももう１つの出力アドレスを第２コインミキシングトランザクションに挿入することを含み、前記第１コインミキシングトランザクションは、前記第２コインミキシングトランザクションにおいてミキシングされているデノミネーションとは異なるデノミネーションをミキシングすることを目的とする。
【００２０】
いくつかの実施において、前記一連の所定のデノミネーションは、最大コイン価値及び該最大コイン価値の１／１０ｎ倍によって定義される級数に基づき、ｎは正の整数である。他の実施では、他の級数が使用されてもよい。
【００２１】
いくつかの実施において、前記パブリックキーマテリアルは、２つのパブリックキーＢＰｕｂｘ及びＢＰｕｂｙを有し、出力ｉの前記出力アドレスは、
ＢＰｕｂｉ＝Ｈ（ｒｉＢＰｕｂｘ）Ｇ＋ＢＰｕｂｙ
によって与えられ、このとき、Ｇは、楕円曲線ベースポイントであり、Ｈ（）は、ハッシュ関数であり、ｒｉは、出力ｉについて選択された前記乱数である。前記ナンスパブリックキーＲｉは、Ｒｉ＝ｒｉＧとして生成され得る。
【００２２】
いくつかの実施において、前記ナンスパブリックキーを共有することは、前記コインミキシングトランザクション内の非トランザクションデータフィールドに前記ナンスパブリックキーを挿入すること、前記コインミキシングトランザクションとは異なる別個のトランザクション内の非トランザクションデータフィールドに前記ナンスパブリックキーを挿入すること、又は非ブロックチェーン通信を使用することにおいて前記ナンスパブリックキーを前記出力ノードへ送ることを含む。
【００２３】
追加的に、又は代替的に、本願は、出力ノードで実施される方法であって、出力ノードに関連するパブリックキーマテリアルを入力ノードへ供給することと、入力ノードからナンスパブリックキーを取得することと、コインミキシングトランザクションを求めてブロックチェーンを探索することであり、該コインミキシングトランザクションは複数の入力アドレス及び複数の出力アドレスを有し、各出力アドレスは、一連の所定のデノミネーションの中のデノミネーションに適合する値を割り当てられている、前記探索することとを含む前記方法について記載し得る。方法は、ナンスパブリックキー及びパブリックキーマテリアルに基づきパブリック−プライベートキー対を決定することと、パブリック−プライベートキー対からのパブリックキーをコインミキシングトランザクション内の出力アドレスの１つと照合し、該照合に基づき、その出力アドレスに割り当てられている値を支出高に加えることと、支出高が総価値に満たないかどうかを判定し、そうである場合には、支払高が総価値に一致するまで前記探索すること、前記決定すること、及び前記照合することを続けることとを更に含む。
【００２４】
いくつかの実施において、前記パブリックキーマテリアルは、２つのパブリックキーＢＰｕｂｘ及びＢＰｕｂｙを有し、該２つのパブリックキーは、対応する各々のプライベートキーＢＰｒｉｖｘ及びＢＰｒｉｖｙを有する。ｉ番目のパブリック−プライベートキー対を決定することは、
ＢＰｒｉｖｉ＝Ｈ（ＢＰｒｉｖｘＲｉ）＋ＢＰｒｉｖｙ
を決定することを含んでよく、このとき、ＢＰｒｉｖｉは、前記パブリック−プライベートキー対のプライベートキーであり、Ｈ（）は、ハッシュ関数であり、Ｒｉは、前記ナンスパブリックキーであり、前記ｉ番目のパブリック−プライベートキー対のパブリックキーは、ＢＰｕｂｉ＝ＢＰｒｉｖｉＧとして決定され、このとき、Ｇは、楕円曲線ベースポイントである。
【００２５】
いくつかの実施において、前記ブロックチェーンを探索することは、非トランザクションコードを含むコインミキシングトランザクションを識別することを含み、前記ナンスパブリックキーを取得することは、前記コインミキシングトランザクションの非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを含む。いくつかの他の実施において、前記ナンスパブリックキーを取得することは、非トランザクションコードを含むトランザクションを求めて前記ブロックチェーンを探索し、識別される場合に、該トランザクション内の非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを含む。
【００２６】
本明細書中で記載される更なる他の実施は、メモリと、プロセッサと、実行される場合に、該プロセッサに、本明細書中で記載される方法の１つ以上の動作を実行させる実行可能命令とを有する計算装置を含む。
【００２７】
本発明の１つの態様又は実施形態に関して記載される如何なる特徴も、１つ以上の他の態様／実施形態に関しても使用され得る。本発明のこれら及び他の態様は、本明細書中で記載される実施形態から明らかであり、それらを参照して説明される。本発明の実施形態が、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【００２８】
【図１】ノードのブロックチェーンネットワークの例を表す。
【図２】データ記録分散プロセスの一実施形態を図式的に表す。
【図３】ブロックチェーントランザクションにおけるデータ記録分散のためのプロセスの例をフローチャート形式で示す。
【図４】本願の実施形態に従って、データ記録分散動作において入力ノードとして参加するプロセスの例をフローチャート形式で示す。
【図５】本願の実施形態に従って、データ記録分散動作において入力ノードとして参加するプロセスの例をフローチャート形式で示す。
【図６】簡略化した参加ノードのブロック図を示す。
【発明を実施するための形態】
【００２９】
本願において、語「及び／又は」（and/or）は、必ずしも追加の要素を除外せずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか１つを含む、挙げられている要素の全ての起こり得る組み合わせ及びサブコンビネーションをカバーするよう意図される。
【００３０】
本願において、「〜又は〜の少なくとも１つ」（at  least  one  of  …  or  …）との語句は、必ずしも追加の要素を除外することなしに、且つ、必ずしも全ての要素を必要とせずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか１つを含む、挙げられている要素のうちの任意の１つ以上をカバーするよう意図される。
【００３１】
時々、以下本明細書中で、データ記録について言及がなされることがある。データ記録は、値を含むデータフィールドを含む。全データ記録は、いくつかの場合に、複数のデータ記録の値の和から形成されてよい。いくつかの事例において、値は、暗号通貨などのデジタル資産又はその量を表し得るが、計算資源、時間、などのその他のアセットを表してもよい。データ記録特性への言及は、データ記録の属性に言及することがある。いくつかの例では、これは、データ記録内で示される値を含んでよく、所定の一連のデータ記録特性は、一連の所定値を含んでよい。値は、いくつかの場合に、整数又はデシマル値であってよい。いくつかの事例において、値は、暗号通貨額を表し、デノミネーション（denominations）と呼ばれ得る。
【００３２】
最初に図１を参照する。図１は、ブロックチェーンに関連するブロックチェーンネットワーク１００の例をブロック図形式で表す。ブロックチェーンネットワークは、招待なしで又は他のメンバーからの同意なしで誰もが参加することができるピア・ツー・ピアの非会員制ネットワークである。ブロックチェーンネットワーク１００が動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワーク１００に参加し得る。そのような分散した電子デバイスは、ノード１０２と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【００３３】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク１００のノード１０２を形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイル機器、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
【００３４】
ブロックチェーンネットワーク１００のノード１０２は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワーク１００は、少なくとも部分的にインターネット上で実装され、個々のノード１０２の一部は、地理的に散開した位置に配置されてよい。
【００３５】
ノード１０２は、ブロックチェーン上の全てのトランザクションの大域的な台帳を保持する。大域的な台帳は分散台帳であり、各ノード１０２は、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノード１０２によるトランザクションは、大域的な台帳の有効性が保たれるように、他のノード１０２によって検証される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解される。
【００３６】
各トランザクションは、通常は、１つ以上の入力及び１つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスを含む。その値は、次いで、未使用トランザクション出力（ＵＴＸＯ）としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値の所有権を使用又は再割り当てするために、入力として参照してよい。
【００３７】
トランザクションは、個人情報がブロックチェーン台帳上でトランザクションに含まれない点で擬匿名的（pseudo-anonymous）である一方で、トランザクションのチェーン内でデータ記録の移動を追跡すること、及びいくつかの場合に、外部データを用いて個々の又は特定のノードへデータ記録をリンクすることが可能である。安全性を高める手段として、データ記録分散トランザクション（data  record  distribution  transactions）、例えば、コインミキシングトランザクション（coin  mixing  transaction）が、様々なソースからの入力をプールし、次いで、プールされたデータ記録を分割して出力に割り当てるために、使用されてよい。全ての入力及び出力が同じ特性を有するデータ記録である場合には、特定の入力を特定の出力とリンクすることは困難である。しかし、そのようなトランザクションにおいて、少なくとも１つの参加ノードは、他の参加ノードによって特定される入力アドレスと出力アドレスとの間のリンクに気付く。ビットコインプロトコルにおけるコインジョイン（CoinJoin）動作などのコインミキシングトランザクションでは、複数の入力及び複数の出力を有する単一のトランザクションが、値をミキシングするために使用される。
【００３８】
ステルスアドレスなどのいくつかの他の技術が、様々な有効性を伴って、入力と出力との間のリンクを明らかにしないようにするために使用される。ステルスアドレスは、追跡可能性を崩すために、データ記録が送られる出力アドレスを特定の出力ノードから切り離そうと試みる。
【００３９】
本願によれば、分散のプライバシー及び安全性を高め、且つ、分散を特定の入力及び／又は出力にリンクすること並びに分散を追跡すること又は入力ノードに関する関連情報を明らかにすることを阻止するように入力ノードから出力ノードへの全データ記録の移動を助ける方法及びデバイスが、記載される。安全性を保証しながらブロックチェーンプロトコルの構造内でこれを行うことは、相当な技術的実施課題を示す。以下の記載は、そのような技術的実施課題に対する解決法の少なくとも一実施形態を提供する。
【００４０】
本明細書中の説明において、語「入力ノード」、「出力ノード」、「参加ノード」、「入力アドレス」、及び「出力アドレス」が使用されることがある。ノードの「アドレス」への言及は、物理ノードのネットワークアドレスを指すものではない。代わりに、「アドレス」は、トランザクション上の署名に対応するキーを有することによって物理ノードが所有権を主張することができる未使用値を有するブロックチェーン上のトランザクションにおいて指定されるアドレスである。この意味で、「出力アドレス」は、参加ノードのアドレスではなく、参加する出力ノードによって所有されるか又はそれに関連するブロックチェーントランザクション出力アドレスである。同様に、「入力アドレス」は、参加する入力ノードによって所有されるか又はそれに関連する未使用トランザクション出力（ＵＴＸＯ）のアドレスである。
【００４１】
［楕円曲線デジタル署名］
ビットコインのようないくつかのブロックチェーン技術は、デジタル署名のための数学的手法として楕円曲線デジタル署名アルゴリズム（Elliptic  Curve  Digital  Signature  Algorithm）（ＥＣＤＳＡ）を使用する。ＥＣＤＳＡは、ＵＴＸＯに関連する値がその正当な所有者によってのみ使用され得ることを確かにするために使用される暗号化デジタル署名である。ＥＣＤＳＡ署名に必要なパラメータは、
Ｅ  −  楕円曲線関数
Ｇ  −  位数ｎを有する楕円曲線上のベースポイント：ｎ×Ｇ＝Ｏ
ｎ  −  大きい素数
ｑ  −  群位数
を含む。
【００４２】
キー対は乱数ｘから生成され、このとき、０＜ｘ＜ｎである。数ｘはプライベートキーとなり、パブリックキーＰはＰ＝ｘ×Ｇとして生成される。
【００４３】
メッセージｍ、乱数ｋ及びプライベートキーｘを考えると、署名は対（ｒ，ｓ）により生成される。乱数ｋは、０＜ｋ＜ｑであるように選択される。次いで、ｒ＝ｋ×Ｇが計算され、ｓ＝ｋ−１（ｍ＋ｘｒ）ｍｏｄ  ｎが計算される。このとき、ｋ−１は、ｋ  ｍｏｄ  ｎの逆数であり、ｋ−１ｋ≡１  ｍｏｄ  ｎ。これが署名（ｒ，ｓ）を与える。
【００４４】
署名（ｒ，ｓ）、メッセージｍ及びパブリックキーＰを考えると、署名が検証され得る。署名を検証すべく、ｖ＝ｓ−１ｍ×Ｇ＋ｓ−１ｒ×ｙが計算される。この式中、ｓ−１は、ｓ−１ｓ≡１  ｍｏｄ  ｎであるように、ｓ  ｍｏｄ  ｑの逆数である。ｖ＝ｒである場合に、署名は有効である。Ｇが位数ｎを有することを思い出すと、ｓ−１のｍｏｄ  ｎ部分は、ＥＣポイントがＧを乗じられる場合に消える。
【００４５】
［プールされた分解されたデータ記録］
これより図２を参照すると、図２は、データ記録分散プロセス２００の一実施形態を図式的に表す。この例において、データ記録は暗号通貨に関係があり、全データ記録は総価値の支払いである。入力ノード２０２は「ウォレットＡ」と表される。入力ノード２０２は、支払いを授受するよう設計されたライトウェイトノード（lightweight  node）であって、ブロックチェーンのコピーを保持するフルノード（full  node）ではない。いくつかの場合に、入力ノード２０２はフルノードであっても、あるいは、マイニングノードであってさえよいが、目下の例では、入力ノード２０２はライトウェイトノードであり、これは、多くの場合に「ウォレット」と呼ばれ得る。ビットコインプロトコルでは、そのようなノードは、簡易版支払い検証（simplified  payment  verification）（ＳＰＶ）と呼ばれることがある。出力ノード２０４は「ウォレットＢ」と表される。入力ノード２０２と同様に、この例において、出力ノード２０４はライトウェイトノードである。ノード２０２及び２０４は、参加者又は参加ノードと呼ばれ得る。
【００４６】
入力ノード２０２は、参照番号２０６によって示される、様々な値の多数のＵＴＸＯを“所有する”（制御する）。入力ノード２０２は、入力ノード２０２が、ブロックチェーントランザクションへの入力として各ＵＴＸＯ２０６を“使用する”スクリプトに署名することを入力ノード２０２に可能にする、各ＵＴＸＯ２０６に対応するプライベートキーを持っているという意味で、それらを所有している。各ＵＴＸＯ２０６は、入力ノード２０２へ送られた又は戻された前のトランザクションの未使用出力である。ＵＴＸＯ２０６は、適用可能な暗号通貨の価値の量を変えるためのものであり得る。
【００４７】
出力ノード２０４は、（ＢＰｕｂｘ，ＢＰｒｉｖｘ）及び（ＢＰｕｂｙ，ＢＰｒｉｖｙ）と表される２つのパブリック−プライベートキー対を有し、このとき、ＢＰｕｂ＝ＢＰｒｉｖＧである。出力ノード２０４は、パブリックキーＢＰｕｂｘ及びＢＰｕｂｙを入力ノード２０２及び場合により他のノードと共有する。
【００４８】
この状況で、入力ノード２０２の所有者は、出力ノード２０４の所有者へ総価値を移そうとする。総価値は、いくつかの実施において、品物又はサービスに対する支払いを反映し得る。
【００４９】
本願の態様に従って、入力ノード２０２は、支払いをもたらすトランザクションへの入力となるようＵＴＸＯ２０６の１つ以上を選択する。１つ以上のＵＴＸＯ２０６の累積価値は、出力ノード２０４へなされるべき支払いの総価値に等しいか又はそれよりも大きい。ＵＴＸＯ２０６の選択は、お釣りを生じさせることになる、又は少なくとも、入力ノード２０２に戻るかなりのお釣りをもたらすことになる１つの大きいＵＴＸＯ２０６を使用することよりむしろ、総価値を構成するよう複数のより小さいデノミネーションのＵＴＸＯ２０６を使用することに部分的に基づいてよい。
【００５０】
いくつかの実施において、入力ノード２０２は、ＵＴＸＯ２０６の数を最小限としながら、支払いの総価値に等しいか又はそれよりも大きい入力の和を生じさせるどん欲法（greedy  algorithm）を用いて、最適又は有利な複数のＵＴＸＯ２０６を決定し得る。解析における付加的因子には、発生するお釣りを最小限にすること、すなわち、選択されるＵＴＸＯ２０６の累積価値が、利用可能なＵＴＸＯ２０６を前提として可能な最小量だけ総価値を上回ること、を確かにすることが含まれ得る。いくつかの実施において、ＵＴＸＯ２０６は、それらの値に基づき優先順位を付けられてもよい。すなわち、更に後述されるように、所定の一連のデノミネーションのうちの１つに値が対応するＵＴＸＯ２０６が好まれ得る。
【００５１】
いくつかの実施において、ＵＴＸＯ２０６の最適な組の選択は、総価値（又は、入力ノード２０２は、提示された入力がトランザクションの手数料をカバーするのに十分なものを含むことを確かにする必要があり得るので、総価値プラス手数料）と、小額の支払いを行うための大きいＵＴＸＯ２０６の使用を回避するルールとに基づくことができる。すなわち、入力ノード２０２は、全部の支払いよりも小さいＵＴＸＯ２０６を用いて優先順位を付け得る。入力ノード２０２は、ＵＴＸＯ２０６の局所的に最適な又は少なくとも適切な選択を見つけるために動的プログラミング、どん欲法、又はその他適切なコンピュータプログラミング技術を用いてＵＴＸＯ選択プロセスを実施してよい。
【００５２】
本願の他の態様に従って、値の移動は、ビットコインプロトコルにおけるコインジョイントランザクションのような１つ以上のコインミキシングトランザクションによって行われるべきである。すなわち、選択されたＵＴＸＯ２０６は、１つ以上のコインミキシングトランザクションへの入力である。
【００５３】
入力ノード２０２は、全部の支払いを構成する複数の出力を更に決定する。出力の累積価値は、出力ノード２０４になされる支払いの総価値に一致する。各出力は、一連の所定のデノミネーションから選択された各々のデノミネーションのためであるよう決定する。一例において、デノミネーションは、適用可能な暗号通貨の有理数の所定の級数（series）であってよい。一例において、デノミネーションは、暗号通貨の１／１０ｎ倍の基本単位によって与えられてよく、このとき、ｎ＝０，１，２，３，などである。一例として、ビットコインを用いると、デノミネーションは、
１ＢＴＣ，０．１ＢＴＣ，０．０１ＢＴＣ，０．００１ＢＴＣ，・・・，１Ｓａｔｏｓｈｉ
であってよい。他の例となるデノミネーションは、例えば、
１ＢＴＣ，０．５ＢＴＣ，０．２ＢＴＣ，０．１ＢＴＣ，０．０５ＢＴＣ，０．０２ＢＴＣ，０．００１ＢＴＣ，・・・など
のように、必ずしも底１０によって関係付けられなくてもよい。
【００５４】
いくつかの実施において、入力の少なくとも１つを除いて全部が同じ値の対応する出力を有している（これは、入力の累積価値が全部の支払いを上回る場合に、入力のうちの１つが、入力へ払い戻されるべきお釣り及び／又はトランザクションにおける手数料支払いに帰せられる超過量をもたらし得るからである。）。対応する出力と値が一致する入力が、同じコインミキシングトランザクションに含まれ得る。このとき、トランザクションは、全て同じ値を有する複数の入力及び出力をミキシングするよう設計される。
【００５５】
入力ノード２０２が、入力となる１つ以上のＵＴＸＯ２０６を決定し、且つ、複数の出力及びそれらの各々の値を決定すると、入力ノード２０２は、ＵＴＸＯ２０６を入力として挿入し且つ出力の夫々に対応する各々の出力アドレスを挿入することによって、１つ以上のコインミキシングトランザクションに加わる。
【００５６】
本願の更なる態様において、入力ノード２０２は、出力ノードのパブリックアドレスを出力アドレスとして使用せず、出力ノード２０４に対して共通アドレスで出力をプールしない。代わりに、入力ノード２０２は、出力ごとに新しい秘密の出力アドレスを生成する。新しい秘密の出力アドレスの夫々は、出力ノードによって供給されるパブリックキーＢＰｕｂｘ及びＢＰｕｂｙと、乱数ｒｉとに基づき、生成される。乱数ｒｉは、ナンス（nonce）と呼ばれ得る。これに関連して、出力ノード２０４からの２つのパブリックキーは、それらが秘密のアドレスを生成するためのシードとして働くことになるが、出力ノード２０４と新しい秘密のアドレスとの間のリンクは入力ノード２０２にしか知られないという意味で、一緒に「ステルスアドレス」の役割を果たす。これは、実際の出力アドレスが出力ノード２０４に関連すると知られないので、トランザクションにおける受取人の身元を隠蔽し、一方で、パブリックキーアドレスを公開した出力ノード２０４に対して支払いが行われた場合には、それは、識別可能に出力ノード２０４と関連付けられることになる。
【００５７】
この例において、入力ノード２０２は、具体的に、
ＢＰｕｂｉ＝Ｈ（ｒｉＢＰｕｂｘ）Ｇ＋ＢＰｕｂｙ
に基づき、新しい秘密の出力アドレスＢＰｕｂｉを生成する。ここで、Ｇは楕円曲線ベースポイントであり、Ｈ（）はハッシュ関数である。入力ノード２０２はまた、Ｒｉ＝ｒｉＧに基づき乱数ｒｉからナンスパブリックキーＲｉを計算する。
【００５８】
入力ノード２０２は、出力ごとに新しい秘密の出力アドレスＢＰｕｂｉを生成する。それはまた、出力ごとのナンスパブリックキーＲｉを出力ノード２０４と共有する。出力ノード２０４は、次いで、そのナンスパブリックキーＲｉと、プライベートキーＢＰｒｉｖｘ及びＢＰｒｉｖｙとを使用して、トランザクション内の出力アドレスの１つに対応するプライベートキーを、式：
ＢＰｒｉｖｉ＝Ｈ（ＢＰｒｉｖｘＲｉ）＋ＢＰｒｉｖｙ
を用いて生成しようとする。生成されたプライベートキーがパブリックキーＢＰｕｂｉを得るために使用され得る場合に、出力ノード２０４は、その出力アドレスに向けられたトランザクション出力を解除する正確なプライベートキーを有する。
【００５９】
ナンスパブリックキーＲｉを共有するためのメカニズムは、実施に応じて種々の形態とり得る。１つの実施において、ナンスパブリックキーＲｉは、出力アドレスが使用されるコインミキシングトランザクションの非トランザクションフィールドに挿入される。出力ノード２０４は、非トランザクションフィールドにおいてデータを有するコインミキシングトランザクションを見つけるようブロックチェーンを探索する。例えば、ビットコインプロトコルにおいて、ＯＰ＿ＲＥＴＵＲＮコードは、無効なトランザクション出力をマークするために使用されるスクリプト（Script）オペコード（opcode）である。ＯＰ＿ＲＥＴＵＲＮコードの後に置かれた如何なるデータもビットコイン支払いを処理する際に無視されるので、それはトランザクション内のメッセージ又はデータ保持フィールドとして有効に働くことができる。従って、ビットコインプロトコルに基づく１つの実施において、コインミキシングトランザクションは、パブリックナンスキーＲｉが後に続くＯＰ＿ＲＥＴＵＲＮコード又は機能的同等物を伴った出力を含む。一般名称において、非トランザクションデータ又は情報がトランザクションに含まれないことを示すコードは、「非トランザクションコード」と本明細書中で呼ばれ得る。
【００６０】
なお、ビットコインのようないくつかのプロトコルは、このような非トランザクションデータフィールドをトランザクションにおいて使用する能力を制限することがある。一例として、ビットコインは、トランザクションごとに１つのＯＰ＿ＲＥＴＵＲＮコードしか認めないことがある。これは、コインミキシングトランザクションにおいて１つのＲｉしか指定され得ないことを意味する。いくつかの場合に、単一の非トランザクションデータフィールドにおいてＲｉ個のキーを連結させることが可能であり得るが、いくつかの実施形態では、キーのサイズ及びフィールド長さに対する制限がそれを実現困難にしうる。従って、コインミキシングトランザクションにおける複数の出力のためのナンスパブリックキーＲｉは、他のメカニズムを用いて共有されてもよい。
【００６１】
一例となる実施形態において、入力ノード２０２は、Ｒｉ個のナンスパブリックキーのうちの１つを含む非トランザクションデータフィールドを夫々有する更なるトランザクション２１２を生成する。更なるトランザクションの数は、出力の数と一致し得る。次いで、出力ノード２０４は、ＯＰ＿ＲＥＴＵＲＮコードなどの非トランザクションデータを含むトランザクションの存在を求めてブロックチェーンを探索又はモニタする。出力ノード２０４は、そのようなトランザクションを見つける場合に、非トランザクションデータを、それがナンスパブリックキーであり得るということに基づき取り出し、そのデータをそのパブリックキーマテリアルとともに使用して、可能な出力アドレスを生成する。次いで、出力ノード２０４は、生成された可能な出力アドレスがブロックチェーン上でコインミキシングトランザクションの出力として現れるかどうかを評価する。
【００６２】
他の例となる実施において、入力ノード２０２は、別個の、望ましくは暗号化された通信チャネルを用いて、ナンスパブリックキーＲｉを、ブロックチェーン自体の外の出力ノード２０４へ転送する。次いで、出力ノード２０４は、対応するパブリックキーＢＰｕｂｉを生成し、それらのアドレスへ値を移すコインミキシングトランザクションを求めてブロックチェーンを探索する。
【００６３】
出力ノード２０４がナンスパブリックキーＲｉを直接には与えられず、むしろ、出力ノード２０４が、非トランザクションデータを含み、コインミキシングトランザクション内の対応する出力を識別しようとするトランザクションを見つけるようブロックチェーンを探索する場合に、出力ノード２０４は、入力ノード２０２によって移動されるべきであった総価値に累積的に加算される出力の組を見つけるまで、その探索を続けてよい。
【００６４】
図２は、入力ノード２０２が０．４９コインを移動させるべきである一例を示す。コインはビットコイン、アルトコイン（altcoins）、又はその他の暗号通貨であってよい。この実例において、コインミキシングトランザクション２１０は、入力ノード２０２が参加するために利用可能であり、そこで、（固定された所定のデノミネーションにおいて）複数のデノミネーションがミキシングされている。すなわち、トランザクションは、複数の１コイン入力及び出力、複数の０．１コイン入力及び出力、複数の０．０１コイン入力及び出力、並びに複数の０．００１コイン入力及び出力、などを含む。他の例では、底１０ではないデノミネーションを含め、更なるデノミネーションが含まれてもよい。
【００６５】
この例において、入力ノード２０２は、夫々０．１コインの量の５つの利用可能なＵＴＸＯ２０６を使用して０．４９コインを組み立てる。入力ノード２０２が０．１コイン単位で十分なＵＴＸＯ２０６をたまたま持っていなかった場合には、それは、支払いを構成するために別のデノミネーションのＵＴＸＯを選択することになる。この例において、入力ノード２０２が０．４９コイン支払いを構成するために０．５コインを入力している場合に、入力ノード２０２は、０．０１コインのお釣りに対する権利を与えられることになるが、この例で見られるように、トランザクションが手数料を伴うことがある。９×０．００１コインの量のお釣りが入力ノード２０２へ戻され、これは０．００１コインのトランザクション手数料を示唆する。
【００６６】
５つの入力は、入力ノード２０２によって所有される異なるＵＴＸＯ２０６に夫々由来する。出力は、４×０．１コイン及び９×０．０１コインを含む。この例において、入力ノード２０２は、ＢＰｕｂ１，ＢＰｕｂ２，・・・，ＢＰｕｂ１３と示される１３個の出力アドレスを生成する。
【００６７】
１３個のパブリックナンスキーＲｉ（ｉ＝１，２，・・・，１３）が出力ノード２０４と共有される。上述されたように、いくつかのプロトコルでは、キーを、コインミキシングトランザクション内の各々の非トランザクションデータフィールドに挿入することが可能であり得る。非トランザクションデータフィールドは、トランザクションに悪影響を及ぼさない何らかのタイプのデータフィールドである。データフィールドは、トランザクションと無関係なコメント、テキスト、又はその他データのための指定フィールドであってよい。いくつかの場合に、データフィールドは、フィールドが非トランザクションデータを含むことを示すために特定のコード又は信号によってマーク又は特定されてよい。上述されたように、ビットコインプロトコルでは、ＯＰ＿ＲＥＴＵＲＮコードがこの目的のために使用され得る。しかし、ビットコインプロトコルは、１３個全てのナンスパブリックキーＲｉがコインミキシングトランザクションに挿入され得ないように非トランザクション出力の使用を制限する。
【００６８】
ナンスパブリックキーＲｉがコインミキシングトランザクション自体において非トランザクションフィールド内で共有され得ない場合に、入力ノード２０２はそれらを他の方法で共有する。一例において、入力ノード２０２はそれらを出力ノード２０４へ別個の暗号化されたチャネル又は通信を通じて送る。他の例において、入力ノード２０２は、各ナンスパブリックキーＲｉを各々のトランザクションの非トランザクションデータフィールド内に置くことによって、それらをブロックチェーンを通じて共有する。
【００６９】
出力ノード２０４は、ブロックチェーンをスキャンして、入力ノード２０２からの支払いを含む可能性があるトランザクションを探す。探索は、非トランザクションデータの存在を示す特定の信号又はコード（場合によっては、ナンスパブリックキーであり得る。）を含むトランザクションを識別することに基づいてよい。１つの実施において、検出される信号は、ビットコインプロトコルにおけるＯＰ＿ＲＥＴＵＲＮコード（又はその機能的同等物）などの、非トランザクションコードである。このコードは、コードに続くデータが非トランザクションであることを示す。
【００７０】
この例において、コインミキシングトランザクション２１０自体又は１３この更なるトランザクション２１２の組のいずれかに、非トランザクションデータを含む少なくとも１３個のヌル出力が存在する。フィールドごとに、次いで、出力ノード２０４は、データ（それが、ナンスパブリックキーＲｉであるかもしれないと推測するもの。）を取り出し、そのＢＰｒｉｖｘ及びＢＰｒｉｖｙと、式：
ＢＰｒｉｖｉ＝Ｈ（ＢＰｒｉｖｘＲｉ）＋ＢＰｒｉｖｙ
とに基づき、ＢＰｒｉｖｉ及び対応するＢＰｕｂｉを計算する。取り出されたデータが、秘密の出力アドレスを生成するために入力ノード２０２によって使用されたナンスパブリックキーＲｉの１つである場合に、出力ノード２０４は、トランザクション２１０における出力アドレスの１つに対応するＢＰｕｂｉを成功裏に生成したことになる。それは、計算されたＢＰｕｂｉをトランザクション２１０の出力アドレスと単に比較して、自身への支払いの１つを正確に識別したことを確認し得る。出力ノード２０４は、今や対応するプライベートキーＢＰｒｉｖｉを有するので、そのＵＴＸＯを所有する。
【００７１】
明らかなように、図２の例は、入力ノード２０２が、支払いを累積的に構成するＵＴＸＯ２０６の組み合わせを見つけることができ、且つ、トランザクション２１０に参加することができる十分な量の複数の底１０デノミネーションをミキシングするトランザクション２１０を含む。いくつかの状況で、そのようなコインミキシングトランザクションは、参加するために利用可能でないことがあるか、あるいは、完了に失敗することがある。
【００７２】
また、明らかなように、図２の例は、以下の議論において、暗号通貨及び支払いの分散に特有であり、一方で、記載されるプロセス及びシステムは、所定のデータ記録特性（その一例が、所定のデノミネーションに値を適合させることである。）に一致するデータ記録特性に基づくデータ記録（その一例は暗号資産価値である。）の分配に適用可能である。
【００７３】
図３は、複数のコインミキシングトランザクション３０２、３０４が使用される他の例となる支払いプロセス３００を表す。
【００７４】
この例において、入力ノード２０２は、利用可能なコインミキシングトランザクション３０２、３０４に基づき利用可能なＵＴＸＯ２０６を選択することにおいて制約されている。この実例において、１つのコインミキシングトランザクション３０２は、０．１コインデノミネーションをミキシングするためのものであり、他のコインミキシングトランザクション３０４は、０．０１コインデノミネーションをミキシングするためのものであると仮定される。トランザクション３０２、３０４の夫々に参加することは、トランザクション手数料、この例では０．００００１コインを前提とする。手数料は、入力ノード２０２によって、過分の支払い及びお釣りに依存するのではなく、その量の別個のＵＴＸＯ２０６を用いてトランザクションに入力される。
【００７５】
入力ノード２０２は、前の例で見られたように５×０．１コインを使用することができない。これは、コインミキシングトランザクション３０２が０．０１のお釣りを返すように必ずしも設計されておらず、出力ノード２０４への出力支払いが０．０１コインの過分の支払いを生じさせることになるからである。従って、入力ノード２０２は、トランザクション３０２でミキシングされる４×０．１コインと、トランザクション３０４でミキシングされる９×０．０１コインを使用して支払いを構成し得る。出力は、同様に、トランザクション３０２からの４×０．１コイン及びトランザクション３０４からの９×０．０１コインになる。複数の非トランザクションデータフィールドが、使用されている特定の実施／プロトコルにおいて許される場合には、ナンスパブリックキーＲ１、Ｒ２、Ｒ３、Ｒ４は、トランザクション３０２内の非トランザクションデータフィールドに置かれ、残りのナンスパブリックキーＲ５乃至Ｒ１３は、トランザクション３０４内の非トランザクションデータフィールドに置かれる。代替的に、ナンスパブリックキーＲｉは、別個の通信チャネルを通じて出力ノード２０４と共有されるか、あるいは、非トランザクションデータフィールドにおいてナンスパブリックキーＲｉの１つを夫々含む別々の個別的なブロックチェーントランザクションを通じて共有される。
【００７６】
当業者に理解されるように、更なる他の例となるプロセスは、支払いを達成するよう他のデノミネーション及びコインミキシングトランザクションを使用してもよい。
【００７７】
明らかなように、上記のプロセス２００及び３００に参加するために、入力ノード２０２は、正確なデノミネーションで、利用可能な十分なＵＴＸＯ２０６を有する。入力ノード２０２によって所有されているＵＴＸＯ２０６が、所定のデノミネーションでのコインミキシングに参加するための正確なデノミネーションにない状況があり得る。１つの実施において、入力ノード２０２は、所定のデノミネーションで支払いを受け取りたいことを支払人に信号で伝えるよう構成されてよい。それにより、入力ノード２０２は、その後に行うつもりである支払いに利用可能なＵＴＸＯを有することになる。いくつかの場合に、入力ノード２０２は、そのＵＴＸＯ２０６を、所定のデノミネーションを有する複数のＵＴＸＯ２０６に積極的に崩す又は分解するよう構成されてよい。そのような機能は、ウォレットソフトウェア内に組み込まれてよく、ＵＴＸＯ２０６を所定のデノミネーションに分解するようトランザクションを、そのようなトランザクションが無視可能な又はゼロのトランザクション手数料で実施され得るという条件で、積極的に生成し得る。いくつかの事例において、ウォレットソフトウェアは、この機能を有効又は無効にするよう構成されてよい。有効にされる場合に、ウォレットソフトウェアは、それらのトランザクションをバックグラウンドで生成及び実行してよい。いくつかの実施において、ソフトウェアは、特に、任意の手数料が分解トランザクションのために支払われるべきである場合に、トランザクションを実行する前に、ユーザ承認のために、提案される分解トランザクションを表示してもよい。
【００７８】
これより図４を参照すると、図４は、本願の態様に従って、入力ノードから出力ノードへブロックチェーンに基づく支払いを行うための一例となる方法４００をフローチャート形式で示す。方法４００は、動作４０２で出力ノードからパブリックキーマテリアルを取得することを含む。この例において、パブリックキーマテリアルはＢＰｒｉｖｘ及びＢＰｒｉｖｙを含む。なお、いくつかの他の実施では、出力ノードのパブリックキーマテリアルは別の形態をとってもよい。
【００７９】
入力ノードは次いで、動作４０４で、出力ノードへの支払いを構成するよう、利用可能なＵＴＸＯのそのプールからＵＴＸＯを選択する。選択されるＵＴＸＯは、利用可能なコインミキシングトランザクションのデノミネーションに基づいてよい。選択されるＵＴＸＯは更に、関与するＵＴＸＯの数を最小限とすることに基づいてもよい。選択されるＵＴＸＯはまた更に、入力ノードへ戻されるお釣りを最小限とすることに基づいてもよい。他の要因も、支払いを構成することになるＵＴＸＯを識別するための選択プロセスにおいて使用されてよい。多くの場合に、支払いは複数のＵＴＸＯから構成され得るが、いくつかの場合に、単一のＵＴＸＯが選択されてもよい。ＵＴＸＯの累積価値は、総支払い量以上である。
【００８０】
動作４０４で、入力ノードはまた、出力ノードへの支払いを構成することになる出力の数及びデノミネーションも決定する。出力デノミネーションは、所定のデノミネーションから選択され、利用可能なコインミキシングトランザクションのデノミネーションに基づき選択されてよい。
【００８１】
動作４０６で、出力の数を決定すると、入力ノードは次いで、出力の夫々について乱数ｒｉを選択し、出力ごとに、その関連する乱数ｒｉと、出力ノードからのパブリックキーマテリアルとに基づき、ＢＰｕｂｉ出力アドレスを生成する。
【００８２】
次いで、入力ノードは、動作４０８で、入力及び出力を１つ以上のコインミキシングトランザクションに挿入する。
【００８３】
動作４１０で、入力ノードは、ナンスパブリックキーＲｉを出力ノードと共有する。夫々のナンスパブリックキーＲｉは、各々の出力アドレスＢＰｕｂｉを生成する際に使用される乱数ｒｉの各々１つに対応する。いくつかの実施において、ナンスパブリックキーＲｉは、コインミキシングトランザクションの１つ以上の非トランザクションデータフィールド内に挿入される。いくつかの実施において、ナンスパブリックキーＲｉは、別個の付加的なトランザクション（ナンスパブリックキーＲｉごとに最大で１つまでのトランザクション）内の非トランザクションデータフィールドに挿入される。更なる他の実施において、入力ノードは、ナンスパブリックキーＲｉを、ブロックチェーンプロトコルの外の別個の通信チャネルを介して出力ノードと共有する。
【００８４】
次いで、入力ノードは、動作４１２で、それが１つ以上のトランザクション内に挿入した入力の夫々に署名する。
【００８５】
図５は、ブロックチェーン技術を用いて出力ノードで支払いを受け取るための一例となる方法５００をフローチャート形式で示す。出力ノードは最初に、動作５０２で、そのパブリックキーマテリアルを公開又は利用可能にする。この例となる方法５００では、パブリックキーマテリアルは２つのパブリックキーＢＰｕｂｘ及びＢＰｕｂｙである。それは、このマテリアルを、出力ノードへ支払いを行うつもりである入力ノードへ供給し得る。この例において、出力ノードは、来るべき支払い及び支払いの量を知っていると仮定される。しかし、出力ノードがそのパブリックキーマテリアルを広く公開しており、前もって知らない金額で任意数の可能なソースから支払いを受ける可能性がある場合があり得る。そのような場合に、出力ノードは、後述されるように、非トランザクションデータを求めてブロックチェーンを断続的にスキャンし、見つけられた如何なるそのようなデータもテストする。
【００８６】
動作５０４で、出力ノードは、入力ノードからの支払いに関係があり得るトランザクションを求めてブロックチェーンを探索し始める。特に、出力ノードは、非トランザクションデータの存在を示す非トランザクション信号又はコードを含むトランザクションを探す。いくつかの実施形態において、出力ノードは、その探索を、非トランザクションデータを含むコインミキシングトランザクションに制限してもよい。明らかなように、この例は、非トランザクションデータがコインミキシングトランザクション自体に含まれていると仮定する。上述されたように、いくつかの実施において、それは不可能なことがあり、ナンスパブリックキーマテリアルは、他の方法で、例えば、非トランザクションデータフィールドを含む更なるトランザクションを通じて、又は別個の非ブロックチェーン通信チャネルを通じて、出力ノードと共有されてもよい。例えば、ナンスパブリックキーが夫々別々のトランザクションに含まれる場合に、出力ノードは、１つのＰ２ＰＫＨ出力及び１つのヌルデータ（Null  Data）出力を含むトランザクションを探してもよい。
【００８７】
動作５０６で、非トランザクションデータを含む候補トランザクションを識別すると、出力ノードは、非トランザクションデータを取り出し、データがトランザクションにおける出力アドレスの１つを生成するために使用され得るかどうかをテストする。上述されたように、非トランザクションデータがナンスパブリックキーＲｉである場合には、次いで、そのパブリックキーマテリアルを用いて、出力ノードは、パブリック−プライベートキー対ＢＰｒｉｖｉ及びＢＰｕｂｉを生成することが可能であり、生成されたパブリックキーＢＰｕｂｉは、出力アドレスの１つに対応することになる。動作５０８で、出力ノードは、生成されたキーがトランザクション内の出力アドレスに対応するかどうかを評価する。そうでない場合には、出力ノードは非トランザクションデータを捨て、ブロックチェーンを探索することに戻り、あるいは、現在の候補トランザクションにおいて更なる非トランザクションデータが存在する場合には、その更なる非トランザクションデータをテストする。
【００８８】
ＢＰｒｉｖｉ及びＢＰｕｂｉを決定することによって支払いの１つを識別することに成功したと出力ノードが動作５０８で決定する場合に、それは、動作５１０によって示されるように、ＢＰｕｂｉに割り当てられているその支払いを、入力ノードによって支払われる総額に加えることに進む。動作５１２で、出力ノードは、入力ノードからの支払いの累積価値が全部の支払いを達成しているかどうかを評価してよい。そうでない場合には、それは探索を続ける。
【００８９】
明らかなように、上記の例となる実施形態において記載される動作の一部は、プロセスに実質的に影響を及ぼさずに、いくつかの実施において同時に又は異なる順序で行われてよい。本願は、これらの変形及び変更を包含する。
【００９０】
コインミキシングトランザクションは、いくつかの実施において、中央サーバから実行されてもよい。しかし、それらはまた、完全に分散されてもよく、このとき、全ての入力ノードは、ブラインド署名（Blind-signing）サーバとして動作する。ビットコインとの関連で、ジョインマーケット（JoinMarket）は、参加を奨励し且つ換金性を高めるコインミキシングの非中央集権型の実施の例である。
【００９１】
これより図６を参照すると、図６は、参加ノード６００の単純化された例をブロック図形式で示す。ノード６００はプロセッサ６０２を含む。プロセッサ６０２には、１つ以上のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、又は同様のコンピュータ処理装置が含まれ得る。ノード６００はメモリ６０４を更に含む。メモリ６０４には、値、変数、及びいくつかの事例では、プロセッサにより実行可能なプログラム命令を記憶する永久的且つ非一時的なメモリが含まれ得る。ノード６００は、有線又な無線ネットワークにわたってネットワークコネクティビティを提供するネットワークインターフェイス６０６を更に含む。
【００９２】
ノード６００は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション６０８を含む。プロセッサ実行可能命令は、実行される場合に、プロセッサ６０２に、本明細書中で記載される機能又は動作の１つ以上を実行させる。
【００９３】
本明細書中で記載されるデバイス及びプロセス、並びにノードを構成するために、記載される方法／プロセスを実装するあらゆるモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントが、標準のコンピュータプログラミング技術及び言語を用いて実現され得ることが理解されるだろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング仕様、データ構造、他のそのような実施詳細に限定されない。
【００９４】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」（comprising及びcomprises）などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」（comprises）は、「含むか、又は〜から成る」（includes  or  consists  of）を意味し、「有する」（comprising）は、「含むか、又は〜から成る」（including  or  consisting  of）を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【図１】
2020513176.tif 000003
【図２】
2020513176.tif 000004
【図３】
2020513176.tif 000005
【図４】
2020513176.tif 000006
【図５】
2020513176.tif 000007
【図６】
2020513176.tif 000008
【国際調査報告】
2020513176.tif 000009
2020513176.tif 000010
2020513176.tif 000011