(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024161531
(43)【公開日】2024-11-19
(54)【発明の名称】ブロックチェーンを用いてデータ記録を分配するシステム及び方法
(51)【国際特許分類】
H04L 9/08 20060101AFI20241112BHJP
H04L 9/32 20060101ALI20241112BHJP
【FI】
H04L9/08 C
H04L9/32 200Z
H04L9/08 F
【審査請求】有
【請求項の数】10
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024138364
(22)【出願日】2024-08-20
(62)【分割の表示】P 2023002426の分割
【原出願日】2018-04-10
(31)【優先権主張番号】1705858.7
(32)【優先日】2017-04-11
(33)【優先権主張国・地域又は機関】GB
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(72)【発明者】
【氏名】スーウェル,マーティン
(72)【発明者】
【氏名】ジョーゼフ,ダニエル
(57)【要約】
【課題】ブロックチェーンを用いて入力ノードから出力ノードへ全データ記録を移す方法等を提供する。
【解決手段】全データ記録は、ビットコインを使用することなどのいくつかの場合に、支払い合計額であることができる。出力ノードは、パブリックキーマテリアルを共有する。入力ノードは、総額を支払う際に使用する未使用トランザクションを選択し、固定デノミネーションで出力ノードが支払うべき複数の出力を決定し、パブリックキーマテリアル及び各々の乱数を用いて出力毎に出力アドレスを生成し、1つ以上のコインミキシングトランザクションにおいて入力及び出力をミキシングする。各々の乱数に基づき生成された出力毎のナンスパブリックキーを、ブロックチェーンを通じてか又は別々に出力ノードと共有する。出力ノードは、出力アドレス毎に対応するプライベートキーを導出でき、所有権を主張する出力を探し出し識別する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動させる、コンピュータにより実施される方法であって、前記方法は、前記出力ノードで実施され、
前記出力ノードに関連付けられたパブリックキーマテリアルを前記入力ノードに供給することと、
前記入力ノードからナンスパブリックキーを取得することと、
データ記録分散トランザクションを求めて前記ブロックチェーンを探索することであり、前記データ記録分散トランザクションは、複数の入力アドレス及び複数の出力アドレスを有し、各出力アドレスは、一連の所定のデータ記録特性の中の各々のデータ記録特性を有するデータ記録を割り当てられている、前記探索することと、
前記ナンスパブリックキー及び前記パブリックキーマテリアルに基づきパブリック-プライベートキー対を決定することと、
前記パブリック-プライベートキー対からのパブリックキーを前記データ記録分散トランザクション内の前記出力アドレスの1つと照合し、該照合に基づき、当該出力アドレスに割り当てられているデータ記録を暫定データ記録コンピレーションに加えることと、
前記暫定データ記録コンピレーションが前記全データ記録に満たないかどうかを判定し、そうである場合には、前記暫定データ記録コンピレーションが全データ記録に一致するまで前記探索すること、前記決定すること、及び前記照合することを続けることと
を有する、方法。
【請求項2】
前記パブリックキーマテリアルは、2つのパブリックキーBPubx及びBPubyを有し、該2つのパブリックキーは、対応する各々のプライベートキーBPrivx及びBPrivyを有する、
請求項1に記載の方法。
【請求項3】
i番目のパブリック-プライベートキー対を決定することは、
BPrivi=H(BPrivxRi)+BPrivy
を決定することを有し、
BPriviは、前記パブリック-プライベートキー対のプライベートキーであり、H()は、ハッシュ関数であり、Riは、前記ナンスパブリックキーであり、
前記i番目のパブリック-プライベートキー対のパブリックキーは、BPubi=BPriviGとして決定され、Gは楕円曲線ベースポイントである、
請求項2に記載の方法。
【請求項4】
前記ナンスパブリックキーRiは、Ri=riGとして生成される、
請求項3に記載の方法。
【請求項5】
前記ブロックチェーンを探索することは、非トランザクションコードを含むデータ記録分散トランザクションを識別することを有し、
前記ナンスパブリックキーを取得することは、前記データ記録分散トランザクションの非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを有する、
請求項1乃至4のうちいずれか一項に記載の方法。
【請求項6】
前記ナンスパブリックキーを取得することは、非トランザクションコードを含むトランザクションを求めて前記ブロックチェーンを探索し、識別される場合に、該トランザクション内の非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを有する、
請求項1乃至4のうちいずれか一項に記載の方法。
【請求項7】
前記データ記録特性は、前記データ記録において指定される値であり、
前記一連の所定のデータ記録特性は、最大値及び該最大値の1/10n倍によって定義される級数に基づく値の連続であり、nは正の整数である、
請求項1乃至6のうちいずれか一項に記載の方法。
【請求項8】
前記ブロックチェーンを探索することは、非トランザクションコードを含むコインミキシングトランザクションを識別することを有し、
前記ナンスパブリックキーを取得することは、前記コインミキシングトランザクションの非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを有する、
請求項1乃至7のうちいずれか一項に記載の方法。
【請求項9】
ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動させる計算装置であって、
当該計算装置は、前記出力ノードの1つであり、
当該計算装置は、
プロセッサと、
メモリと、
ネットワークコネクティビティを提供するネットワークインターフェイスと、
前記プロセッサによって実行される場合に、該プロセッサに、請求項1乃至8のうちいずれか一項に記載の方法を実行させるコンピュータ実行可能命令を含むブロックチェーンアプリケーションと
を有する、計算装置。
【請求項10】
ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動させるプロセッサ実行可能命令を記憶している非一時的なプロセッサ可読媒体であって、
前記プロセッサ実行可能命令は、前記出力ノードのプロセッサによって実行される場合に、該プロセッサに、請求項1乃至8のうちいずれか一項の方法を実行させる、
非一時的なプロセッサ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ブロックチェーントランザクションに、より具体的には、データ記録分散トランザクションを生成及び実行する方法及びデバイスに関する。
【背景技術】
【0002】
本明細書中で、我々は、あらゆる形式の電子的な、コンピュータに基づく分散台帳(distributed ledgers)を含むよう語「ブロックチェーン」を使用する。それらは、ブロックチェーン及びトランザクションチェーン技術、許可(permissioned)及び無許可(un-permissioned)台帳、共有台帳、並びにこれらの変形を含むが限られない。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインが、便宜上、説明のために本明細書で言及され得るが、本発明は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本発明の適用範囲内にあることが留意されるべきである。
【0003】
ブロックチェーンは、合意に基づく電子台帳であり、これは、トランザクションから成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装される。各トランザクションは、ブロックチェーンシステム内の参加者間のデジタル資産の制御の移行を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
【0004】
トランザクションがブロックチェーンに書き込まれるために、それは“検証され”(validated)なければならない。ネットワークノード(マイナー(miners))は、各トランザクションが有効であることを確かめる作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードにインストールされたソフトウェアクライアントは、そのlockingそれからlockingスクリプトを実行することによって、未使用トランザクション(unspent transaction)(UTXO)に対してこの検証作業を実行する。lockingそれからlockingスクリプトの実行がTRUEになる場合に、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。よって、トランザクションがブロックチェーンに書き込まれるために、それは、i)トランザクションを受け取る第1ノードによって検証され、トランザクションが検証される場合に、ノードはそれをネットワーク内の他のノードに中継し、ii)マイナーによって構築された新しいブロックに加えられ、iii)マイニング、すなわち、過去のトランザクションの公開台帳に付加、されなければならない。
【0005】
ビットコインなどのブロックチェーン技術の認識されている利点の1つは、その匿名性及び安全性である。すなわち、ビットコイン台帳は、トランザクションに参加する者に関する如何なる個人情報も含まず、それはパブリックアドレス情報しか含まない。しかし、外部データ及び分析論を用いると、特定のトランザクション及びアドレスを個人と成功裏に関連付けることが可能である。
【0006】
ビットコインのようないくつかのデジタル通貨の欠点の1つは、プライバシーについてのそれらの公評にもかかわらず、ブロックチェーン内のビットコインの流れが完全に公であり、チェーンを通る価値の移動をトレースするよう解析可能である点である。これは、プライバシーが危うくされる状況を生じさせる可能性がある。例えば、隔週の給与支払いなどの、大きい未使用トランザクション出力UTXOを含むウォレットを人が持っており、その未使用トランザクションが小額を他人に支払うために入力として使用される場合に、その他人及び、トランザクションを見る誰でもが、トランザクションにおいて返されるお釣り(change)に部分的に基づき、支払いを行う人の資産及び場合により給与に関する情報を得ることになる。他の状況は、大きい入力及び/又は大きいお釣りトランザクションがユーザのプライバシーを危うくしうる場合に起こり得る。
【0007】
よって、効率的且つ効果的な暗号通貨支払いメカニズムを依然として形成しながら、出力に対する入力の追跡不能制及びリンク不能制の改善を通じて、高められた安全性及びよりロバストな暗号化を提供する改善された方法及びデバイスを提供することが望ましい。
【0008】
ブロックチェーン技術が暗号通貨実施の使用のために最も広く知られているが、デジタル起業家は、新しいシステムを実装するために、ビットコインが基づく暗号化によるセキュリティシステムと、ブロックチェーン上に記憶され得るデータとの両方の使用を探求し始めている。暗号資産の分野に制限されない自動化タスク及びプロセスのためにブロックチェーンが使用される場合に、それは大いに有利である。そのような解決法は、ブロックチェーンの利益(例えば、イベントの永久的な耐タンパー性の記録、分散処理など)を活用しながら、それらの用途を広げることができる。従って、本願は、ブロックチェーンに関して記録される“データ記録”(data record)に言及することがある。データ記録には、例えば、ドキュメント、処理能力若しくは時間の測定値、暗号通貨額、資産の所有権を示すセキュリティ若しくは他のトークン、又はエンティティがそのデータ記録を使用若しくは移動することを可能にする暗号化マテリアルを持ってそのエンティティによって制御され得る他のそのようなものが含まれ得る。
【0009】
ブロックチェーン内の記録の潜在的な追跡可能性は、特定の利用に損害をもたらす可能性がある実施不備を明らかにする。利用の例として、採点のために試験若しくは書類を提出すること、匿名の犯罪報告書を提出すること、匿名の調査若しくは国勢調査報告書を提出すること、又はデータがサブミット後に変更されない状況下で参加ノードが安全且つ機密にデータ記録を1つ以上の他のノードへ移動させる必要がある他のそのような利用が含まれる。暗号通貨と同様に、他のタイプのデータ記録の移動は、記録自体の特性に基づき追跡可能である場合があり、それによって、特定のノードに戻るサブミットの追跡が可能となり、ノードのユーザのプライバシー又は安全性が損なわれたり、あるいは、配布又は提出プロセスの匿名性の完全性が弱体化されたりする可能性がある。更に、ネットワーク内のノードが1つのノードを他のノードに対する転送されるドキュメントの発信元として識別することが可能である場合に、それは、なりすまし(spoofing)及び他のコンピュータセキュリティ攻撃などの攻撃を通じてネットワークの安全性を危うくするオブザーバノードの能力を高める。
【0010】
ブロックチェーンの公共性は、暗号通貨又はその他タイプのデータ記録のいずれであっても、特定の具体的なノード間のデータ記録の移動を追跡する機会を最小限としながら分散プロセスの安全性及び整合性をより有効に保証するという、データ記録分散プロセスを構造化することにおける技術的課題を示す。
【0011】
そのような改善された解決法が、現在、考え出されている。
【発明の概要】
【0012】
従って、本発明によれば、添付の特許請求の範囲で定義される方法及びデバイスが提供される。
【0013】
有利なことに、本願は、トランザクションのプライバシー及び安全性を改善する、ブロックチェーンに基づくデータ記録分散のための改善された方法、デバイス及びシステムを提供する。ステルスアドレッシング(stealth addressing)、記録分散、及び所定のデータ記録特性への記録の脱構築の独自の組み合わせを用いると、入力ノード又は出力ノードのいずれかに関する情報の開示を防ぐよう且つ追跡活動を阻止するよう入力を出力から切り離しながら、全データ記録が移転される。
【0014】
本発明は、コンピュータにより実施される方法及び対応するシステムを提供し得る。方法/システムは、ブロックチェーンにより実施される方法/システムとして記載され得る。本発明は、セキュリティ方法又は暗号化方法/システムとして記載され得る。それは、暗号通貨の部分又は量などのデジタル資産又はデータ記録の安全な移動を提供し得る。追加的に、又は代替的に、それは、暗号通貨の部分又は量などのデジタル資産の移動を制御する制御メカニズムを提供し得る。
【0015】
追加的に、又は代替的に、本願は、ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動する、コンピュータにより実施される方法について記載し得る。方法は、入力ノードで実施され、出力ノードに関連するパブリックキーマテリアルを取得することと、入力ノードによって制御される利用可能なデータ記録及び全データ記録に基づき、利用可能なデータ記録から選択される1つ以上の入力、及び複数の出力を決定することであり、前記1つ以上の入力の累計は全データ記録に等しいか又はそれより多く、各出力は、一連の所定のデータ記録特性から選択される各々のデータ記録特性に関し、前記複数の出力の和は全データ記録に一致する、前記決定することと、前記複数の出力の夫々について、無作為に数を選択し、パブリックキーマテリアル及び乱数に基づき出力アドレスを生成し、当該出力の各々のデータ記録特性を有するデータ記録を割り当てられるよう記録分散トランザクションに出力アドレスを挿入し、乱数からナンスパブリックキーを生成し、ナンスパブリックキーを出力ノードと共有することと、前記1つ以上の入力に署名することとを含んでよい。
【0016】
追加的に、又は代替的に、本願は、ブロックチェーンを用いて入力ノードと出力ノードとの間で全データ記録を移動する、コンピュータにより実施される方法について記載し得る。方法は、出力ノードで実施され、出力ノードに関連するパブリックキーマテリアルを入力ノードへ供給することと、入力ノードからナンスパブリックキーを取得することと、データ記録分散トランザクションを求めてブロックチェーンを探索することであり、該データ記録分散トランザクションは複数の入力アドレス及び複数の出力アドレスを有し、各出力アドレスは、一連の所定のデータ記録特性の中の各々のデータ記録特性を有するデータ記録を割り当てられている、前記探索することと、ナンスパブリックキー及びパブリックキーマテリアルに基づきパブリック-プライベートキー対を決定することと、パブリック-プライベートキー対からのパブリックキーをデータ記録分散トランザクション内の出力アドレスの1つと照合し、該照合に基づき、その出力アドレスに割り当てられているデータ記録を暫定データ記録コンピレーションに加えることと、暫定データ記録コンピレーションが全データ記録に満たないかどうかを判定し、そうである場合には、暫定データ記録コンピレーションが全データ記録に一致するまで前記探索すること、前記決定すること、及び前記照合することを続けることとを含んでよい。
【0017】
追加的に、又は代替的に、本願は、ブロックチェーンを用いて入力ノードと出力ノードとの間で総価値を移動する、コンピュータにより実施される方法について記載し得る。方法は、入力ノードで実施され、出力ノードに関連するパブリックキーマテリアルを取得することと、入力ノードによって所有されている利用可能な未使用出力トランザクション及び総価値に基づき、未使用出力トランザクションから選択される1つ以上の入力、及び複数の出力を決定することであり、前記1つ以上の入力の累積価値は総価値に等しいか又はそれより大きく、各出力は、一連の所定のデノミネーションから選択される各々のデノミネーションに関し、前記複数の出力の和は総価値に一致する、前記決定することとを含んでよい。方法は、前記複数の出力の夫々について、無作為に数を選択し、パブリックキーマテリアル及び乱数に基づき出力アドレスを生成し、当該出力の各々のデノミネーションを割り当てられるようコインミキシングトランザクションに出力アドレスを挿入し、乱数からナンスパブリックキーを生成し、ナンスパブリックキーを出力ノードと共有することを更に含む。入力ノードは、前記1つ以上の入力に署名する。
【0018】
いくつかの実施において、前記1つ以上の入力及び前記複数の出力を決定することは、利用可能なコインミキシングトランザクションに部分的に基づく。利用可能なコインミキシングトランザクションは、特定のデノミネーションをミキシングすることを夫々伴う。前記1つ以上の入力及び前記複数の出力を決定することは、前記1つ以上の入力及び前記複数の出力の夫々の値を前記特定のデノミネーションの各々1つと照合することに部分的に基づく。
【0019】
いくつかの実施において、前記複数の出力について、前記出力アドレスを挿入することは、複数の異なるデノミネーションをミキシングするよう構造化された単一のコインミキシングトランザクションに全ての出力アドレスを出力として挿入することを含む。いくつかの他の実施において、前記複数の出力について、前記出力アドレスを挿入することは、少なくとも1つの出力アドレスを第1コインミキシングトランザクションに、及び少なくとももう1つの出力アドレスを第2コインミキシングトランザクションに挿入することを含み、前記第1コインミキシングトランザクションは、前記第2コインミキシングトランザクションにおいてミキシングされているデノミネーションとは異なるデノミネーションをミキシングすることを目的とする。
【0020】
いくつかの実施において、前記一連の所定のデノミネーションは、最大コイン価値及び該最大コイン価値の1/10n倍によって定義される級数に基づき、nは正の整数である。他の実施では、他の級数が使用されてもよい。
【0021】
いくつかの実施において、前記パブリックキーマテリアルは、2つのパブリックキーBPubx及びBPubyを有し、出力iの前記出力アドレスは、
BPubi=H(riBPubx)G+BPuby
によって与えられ、このとき、Gは、楕円曲線ベースポイントであり、H()は、ハッシュ関数であり、riは、出力iについて選択された前記乱数である。前記ナンスパブリックキーRiは、Ri=riGとして生成され得る。
【0022】
いくつかの実施において、前記ナンスパブリックキーを共有することは、前記コインミキシングトランザクション内の非トランザクションデータフィールドに前記ナンスパブリックキーを挿入すること、前記コインミキシングトランザクションとは異なる別個のトランザクション内の非トランザクションデータフィールドに前記ナンスパブリックキーを挿入すること、又は非ブロックチェーン通信を使用することにおいて前記ナンスパブリックキーを前記出力ノードへ送ることを含む。
【0023】
追加的に、又は代替的に、本願は、出力ノードで実施される方法であって、出力ノードに関連するパブリックキーマテリアルを入力ノードへ供給することと、入力ノードからナンスパブリックキーを取得することと、コインミキシングトランザクションを求めてブロックチェーンを探索することであり、該コインミキシングトランザクションは複数の入力アドレス及び複数の出力アドレスを有し、各出力アドレスは、一連の所定のデノミネーションの中のデノミネーションに適合する値を割り当てられている、前記探索することとを含む前記方法について記載し得る。方法は、ナンスパブリックキー及びパブリックキーマテリアルに基づきパブリック-プライベートキー対を決定することと、パブリック-プライベートキー対からのパブリックキーをコインミキシングトランザクション内の出力アドレスの1つと照合し、該照合に基づき、その出力アドレスに割り当てられている値を支出高に加えることと、支出高が総価値に満たないかどうかを判定し、そうである場合には、支払高が総価値に一致するまで前記探索すること、前記決定すること、及び前記照合することを続けることとを更に含む。
【0024】
いくつかの実施において、前記パブリックキーマテリアルは、2つのパブリックキーBPubx及びBPubyを有し、該2つのパブリックキーは、対応する各々のプライベートキーBPrivx及びBPrivyを有する。i番目のパブリック-プライベートキー対を決定することは、
BPrivi=H(BPrivxRi)+BPrivy
を決定することを含んでよく、このとき、BPriviは、前記パブリック-プライベートキー対のプライベートキーであり、H()は、ハッシュ関数であり、Riは、前記ナンスパブリックキーであり、前記i番目のパブリック-プライベートキー対のパブリックキーは、BPubi=BPriviGとして決定され、このとき、Gは、楕円曲線ベースポイントである。
【0025】
いくつかの実施において、前記ブロックチェーンを探索することは、非トランザクションコードを含むコインミキシングトランザクションを識別することを含み、前記ナンスパブリックキーを取得することは、前記コインミキシングトランザクションの非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを含む。いくつかの他の実施において、前記ナンスパブリックキーを取得することは、非トランザクションコードを含むトランザクションを求めて前記ブロックチェーンを探索し、識別される場合に、該トランザクション内の非トランザクションデータフィールドから前記ナンスパブリックキーを取り出すことを含む。
【0026】
本明細書中で記載される更なる他の実施は、メモリと、プロセッサと、実行される場合に、該プロセッサに、本明細書中で記載される方法の1つ以上の動作を実行させる実行可能命令とを有する計算装置を含む。
【0027】
本発明の1つの態様又は実施形態に関して記載される如何なる特徴も、1つ以上の他の態様/実施形態に関しても使用され得る。本発明のこれら及び他の態様は、本明細書中で記載される実施形態から明らかであり、それらを参照して説明される。本発明の実施形態が、これより、単なる一例として、添付の図面を参照して記載される。
【図面の簡単な説明】
【0028】
【
図1】ノードのブロックチェーンネットワークの例を表す。
【
図2】データ記録分散プロセスの一実施形態を図式的に表す。
【
図3】ブロックチェーントランザクションにおけるデータ記録分散のためのプロセスの例をフローチャート形式で示す。
【
図4】本願の実施形態に従って、データ記録分散動作において入力ノードとして参加するプロセスの例をフローチャート形式で示す。
【
図5】本願の実施形態に従って、データ記録分散動作において入力ノードとして参加するプロセスの例をフローチャート形式で示す。
【発明を実施するための形態】
【0029】
本願において、語「及び/又は」(and/or)は、必ずしも追加の要素を除外せずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか1つを含む、挙げられている要素の全ての起こり得る組み合わせ及びサブコンビネーションをカバーするよう意図される。
【0030】
本願において、「~又は~の少なくとも1つ」(at least one of … or …)との語句は、必ずしも追加の要素を除外することなしに、且つ、必ずしも全ての要素を必要とせずに、挙げられている要素のみ、任意のサブコンビネーション、又は全ての要素、のうちのいずれか1つを含む、挙げられている要素のうちの任意の1つ以上をカバーするよう意図される。
【0031】
時々、以下本明細書中で、データ記録について言及がなされることがある。データ記録は、値を含むデータフィールドを含む。全データ記録は、いくつかの場合に、複数のデータ記録の値の和から形成されてよい。いくつかの事例において、値は、暗号通貨などのデジタル資産又はその量を表し得るが、計算資源、時間、などのその他のアセットを表してもよい。データ記録特性への言及は、データ記録の属性に言及することがある。いくつかの例では、これは、データ記録内で示される値を含んでよく、所定の一連のデータ記録特性は、一連の所定値を含んでよい。値は、いくつかの場合に、整数又はデシマル値であってよい。いくつかの事例において、値は、暗号通貨額を表し、デノミネーション(denominations)と呼ばれ得る。
【0032】
最初に
図1を参照する。
図1は、ブロックチェーンに関連するブロックチェーンネットワーク100の例をブロック図形式で表す。ブロックチェーンネットワークは、招待なしで又は他のメンバーからの同意なしで誰もが参加することができるピア・ツー・ピアの非会員制ネットワークである。ブロックチェーンネットワーク100が動作するブロックチェーンプロトコルのインスタンスを実行する分散した電子デバイスが、ブロックチェーンネットワーク100に参加し得る。そのような分散した電子デバイスは、ノード102と呼ばれ得る。ブロックチェーンプロトコルは、例えば、ビットコインプロトコル又は他の暗号資産であってよい。
【0033】
ブロックチェーンプロトコルを実行し、ブロックチェーンネットワーク100のノード102を形成する電子デバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのコンピュータ、サーバ、スマートフォンなどのモバイル機器、スマートウォッチなどの装着型コンピュータ、又は他の電子デバイスを含む様々なタイプであってよい。
【0034】
ブロックチェーンネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を用いて互いへ結合される。多くの場合に、ブロックチェーンネットワーク100は、少なくとも部分的にインターネット上で実装され、個々のノード102の一部は、地理的に散開した位置に配置されてよい。
【0035】
ノード102は、ブロックチェーン上の全てのトランザクションの大域的な台帳を保持する。大域的な台帳は分散台帳であり、各ノード102は、大域的な台帳の完全なコピー又は部分的なコピーを保管し得る。大域的な台帳に影響を与えるノード102によるトランザクションは、大域的な台帳の有効性が保たれるように、他のノード102によって検証される。ビットコインプロトコルを使用するものなどのブロックチェーンネットワークを実装し動作させることの詳細は、当業者によって十分に理解される。
【0036】
各トランザクションは、通常は、1つ以上の入力及び1つ以上の出力を有する。入力及び出力に埋め込まれたスクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。トランザクションの出力は、トランザクションの結果として値が移される先のアドレスを含む。その値は、次いで、未使用トランザクション出力(UTXO)としてその出力アドレスと関連付けられる。その後のトランザクションは、次いで、そのアドレスを、その値の所有権を使用又は再割り当てするために、入力として参照してよい。
【0037】
トランザクションは、個人情報がブロックチェーン台帳上でトランザクションに含まれない点で擬匿名的(pseudo-anonymous)である一方で、トランザクションのチェーン内でデータ記録の移動を追跡すること、及びいくつかの場合に、外部データを用いて個々の又は特定のノードへデータ記録をリンクすることが可能である。安全性を高める手段として、データ記録分散トランザクション(data record distribution transactions)、例えば、コインミキシングトランザクション(coin mixing transaction)が、様々なソースからの入力をプールし、次いで、プールされたデータ記録を分割して出力に割り当てるために、使用されてよい。全ての入力及び出力が同じ特性を有するデータ記録である場合には、特定の入力を特定の出力とリンクすることは困難である。しかし、そのようなトランザクションにおいて、少なくとも1つの参加ノードは、他の参加ノードによって特定される入力アドレスと出力アドレスとの間のリンクに気付く。ビットコインプロトコルにおけるコインジョイン(CoinJoin)動作などのコインミキシングトランザクションでは、複数の入力及び複数の出力を有する単一のトランザクションが、値をミキシングするために使用される。
【0038】
ステルスアドレスなどのいくつかの他の技術が、様々な有効性を伴って、入力と出力との間のリンクを明らかにしないようにするために使用される。ステルスアドレスは、追跡可能性を崩すために、データ記録が送られる出力アドレスを特定の出力ノードから切り離そうと試みる。
【0039】
本願によれば、分散のプライバシー及び安全性を高め、且つ、分散を特定の入力及び/又は出力にリンクすること並びに分散を追跡すること又は入力ノードに関する関連情報を明らかにすることを阻止するように入力ノードから出力ノードへの全データ記録の移動を助ける方法及びデバイスが、記載される。安全性を保証しながらブロックチェーンプロトコルの構造内でこれを行うことは、相当な技術的実施課題を示す。以下の記載は、そのような技術的実施課題に対する解決法の少なくとも一実施形態を提供する。
【0040】
本明細書中の説明において、語「入力ノード」、「出力ノード」、「参加ノード」、「入力アドレス」、及び「出力アドレス」が使用されることがある。ノードの「アドレス」への言及は、物理ノードのネットワークアドレスを指すものではない。代わりに、「アドレス」は、トランザクション上の署名に対応するキーを有することによって物理ノードが所有権を主張することができる未使用値を有するブロックチェーン上のトランザクションにおいて指定されるアドレスである。この意味で、「出力アドレス」は、参加ノードのアドレスではなく、参加する出力ノードによって所有されるか又はそれに関連するブロックチェーントランザクション出力アドレスである。同様に、「入力アドレス」は、参加する入力ノードによって所有されるか又はそれに関連する未使用トランザクション出力(UTXO)のアドレスである。
【0041】
[楕円曲線デジタル署名]
ビットコインのようないくつかのブロックチェーン技術は、デジタル署名のための数学的手法として楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm)(ECDSA)を使用する。ECDSAは、UTXOに関連する値がその正当な所有者によってのみ使用され得ることを確かにするために使用される暗号化デジタル署名である。ECDSA署名に必要なパラメータは、
E - 楕円曲線関数
G - 位数nを有する楕円曲線上のベースポイント:n×G=O
n - 大きい素数
q - 群位数
を含む。
【0042】
キー対は乱数xから生成され、このとき、0<x<nである。数xはプライベートキーとなり、パブリックキーPはP=x×Gとして生成される。
【0043】
メッセージm、乱数k及びプライベートキーxを考えると、署名は対(r,s)により生成される。乱数kは、0<k<qであるように選択される。次いで、r=k×Gが計算され、s=k-1(m+xr)mod nが計算される。このとき、k-1は、k mod nの逆数であり、k-1k≡1 mod n。これが署名(r,s)を与える。
【0044】
署名(r,s)、メッセージm及びパブリックキーPを考えると、署名が検証され得る。署名を検証すべく、v=s-1m×G+s-1r×yが計算される。この式中、s-1は、s-1s≡1 mod nであるように、s mod qの逆数である。v=rである場合に、署名は有効である。Gが位数nを有することを思い出すと、s-1のmod n部分は、ECポイントがGを乗じられる場合に消える。
【0045】
[プールされた分解されたデータ記録]
これより
図2を参照すると、
図2は、データ記録分散プロセス200の一実施形態を図式的に表す。この例において、データ記録は暗号通貨に関係があり、全データ記録は総価値の支払いである。入力ノード202は「ウォレットA」と表される。入力ノード202は、支払いを授受するよう設計されたライトウェイトノード(lightweight node)であって、ブロックチェーンのコピーを保持するフルノード(full node)ではない。いくつかの場合に、入力ノード202はフルノードであっても、あるいは、マイニングノードであってさえよいが、目下の例では、入力ノード202はライトウェイトノードであり、これは、多くの場合に「ウォレット」と呼ばれ得る。ビットコインプロトコルでは、そのようなノードは、簡易版支払い検証(simplified payment verification)(SPV)と呼ばれることがある。出力ノード204は「ウォレットB」と表される。入力ノード202と同様に、この例において、出力ノード204はライトウェイトノードである。ノード202及び204は、参加者又は参加ノードと呼ばれ得る。
【0046】
入力ノード202は、参照番号206によって示される、様々な値の多数のUTXOを“所有する”(制御する)。入力ノード202は、入力ノード202が、ブロックチェーントランザクションへの入力として各UTXO206を“使用する”スクリプトに署名することを入力ノード202に可能にする、各UTXO206に対応するプライベートキーを持っているという意味で、それらを所有している。各UTXO206は、入力ノード202へ送られた又は戻された前のトランザクションの未使用出力である。UTXO206は、適用可能な暗号通貨の価値の量を変えるためのものであり得る。
【0047】
出力ノード204は、(BPubx,BPrivx)及び(BPuby,BPrivy)と表される2つのパブリック-プライベートキー対を有し、このとき、BPub=BPrivGである。出力ノード204は、パブリックキーBPubx及びBPubyを入力ノード202及び場合により他のノードと共有する。
【0048】
この状況で、入力ノード202の所有者は、出力ノード204の所有者へ総価値を移そうとする。総価値は、いくつかの実施において、品物又はサービスに対する支払いを反映し得る。
【0049】
本願の態様に従って、入力ノード202は、支払いをもたらすトランザクションへの入力となるようUTXO206の1つ以上を選択する。1つ以上のUTXO206の累積価値は、出力ノード204へなされるべき支払いの総価値に等しいか又はそれよりも大きい。UTXO206の選択は、お釣りを生じさせることになる、又は少なくとも、入力ノード202に戻るかなりのお釣りをもたらすことになる1つの大きいUTXO206を使用することよりむしろ、総価値を構成するよう複数のより小さいデノミネーションのUTXO206を使用することに部分的に基づいてよい。
【0050】
いくつかの実施において、入力ノード202は、UTXO206の数を最小限としながら、支払いの総価値に等しいか又はそれよりも大きい入力の和を生じさせるどん欲法(greedy algorithm)を用いて、最適又は有利な複数のUTXO206を決定し得る。解析における付加的因子には、発生するお釣りを最小限にすること、すなわち、選択されるUTXO206の累積価値が、利用可能なUTXO206を前提として可能な最小量だけ総価値を上回ること、を確かにすることが含まれ得る。いくつかの実施において、UTXO206は、それらの値に基づき優先順位を付けられてもよい。すなわち、更に後述されるように、所定の一連のデノミネーションのうちの1つに値が対応するUTXO206が好まれ得る。
【0051】
いくつかの実施において、UTXO206の最適な組の選択は、総価値(又は、入力ノード202は、提示された入力がトランザクションの手数料をカバーするのに十分なものを含むことを確かにする必要があり得るので、総価値プラス手数料)と、小額の支払いを行うための大きいUTXO206の使用を回避するルールとに基づくことができる。すなわち、入力ノード202は、全部の支払いよりも小さいUTXO206を用いて優先順位を付け得る。入力ノード202は、UTXO206の局所的に最適な又は少なくとも適切な選択を見つけるために動的プログラミング、どん欲法、又はその他適切なコンピュータプログラミング技術を用いてUTXO選択プロセスを実施してよい。
【0052】
本願の他の態様に従って、値の移動は、ビットコインプロトコルにおけるコインジョイントランザクションのような1つ以上のコインミキシングトランザクションによって行われるべきである。すなわち、選択されたUTXO206は、1つ以上のコインミキシングトランザクションへの入力である。
【0053】
入力ノード202は、全部の支払いを構成する複数の出力を更に決定する。出力の累積価値は、出力ノード204になされる支払いの総価値に一致する。各出力は、一連の所定のデノミネーションから選択された各々のデノミネーションのためであるよう決定する。一例において、デノミネーションは、適用可能な暗号通貨の有理数の所定の級数(series)であってよい。一例において、デノミネーションは、暗号通貨の1/10n倍の基本単位によって与えられてよく、このとき、n=0,1,2,3,などである。一例として、ビットコインを用いると、デノミネーションは、
1BTC,0.1BTC,0.01BTC,0.001BTC,・・・,1Satoshi
であってよい。他の例となるデノミネーションは、例えば、
1BTC,0.5BTC,0.2BTC,0.1BTC,0.05BTC,0.02BTC,0.001BTC,・・・など
のように、必ずしも底10によって関係付けられなくてもよい。
【0054】
いくつかの実施において、入力の少なくとも1つを除いて全部が同じ値の対応する出力を有している(これは、入力の累積価値が全部の支払いを上回る場合に、入力のうちの1つが、入力へ払い戻されるべきお釣り及び/又はトランザクションにおける手数料支払いに帰せられる超過量をもたらし得るからである。)。対応する出力と値が一致する入力が、同じコインミキシングトランザクションに含まれ得る。このとき、トランザクションは、全て同じ値を有する複数の入力及び出力をミキシングするよう設計される。
【0055】
入力ノード202が、入力となる1つ以上のUTXO206を決定し、且つ、複数の出力及びそれらの各々の値を決定すると、入力ノード202は、UTXO206を入力として挿入し且つ出力の夫々に対応する各々の出力アドレスを挿入することによって、1つ以上のコインミキシングトランザクションに加わる。
【0056】
本願の更なる態様において、入力ノード202は、出力ノードのパブリックアドレスを出力アドレスとして使用せず、出力ノード204に対して共通アドレスで出力をプールしない。代わりに、入力ノード202は、出力ごとに新しい秘密の出力アドレスを生成する。新しい秘密の出力アドレスの夫々は、出力ノードによって供給されるパブリックキーBPubx及びBPubyと、乱数riとに基づき、生成される。乱数riは、ナンス(nonce)と呼ばれ得る。これに関連して、出力ノード204からの2つのパブリックキーは、それらが秘密のアドレスを生成するためのシードとして働くことになるが、出力ノード204と新しい秘密のアドレスとの間のリンクは入力ノード202にしか知られないという意味で、一緒に「ステルスアドレス」の役割を果たす。これは、実際の出力アドレスが出力ノード204に関連すると知られないので、トランザクションにおける受取人の身元を隠蔽し、一方で、パブリックキーアドレスを公開した出力ノード204に対して支払いが行われた場合には、それは、識別可能に出力ノード204と関連付けられることになる。
【0057】
この例において、入力ノード202は、具体的に、
BPubi=H(riBPubx)G+BPuby
に基づき、新しい秘密の出力アドレスBPubiを生成する。ここで、Gは楕円曲線ベースポイントであり、H()はハッシュ関数である。入力ノード202はまた、Ri=riGに基づき乱数riからナンスパブリックキーRiを計算する。
【0058】
入力ノード202は、出力ごとに新しい秘密の出力アドレスBPubiを生成する。それはまた、出力ごとのナンスパブリックキーRiを出力ノード204と共有する。出力ノード204は、次いで、そのナンスパブリックキーRiと、プライベートキーBPrivx及びBPrivyとを使用して、トランザクション内の出力アドレスの1つに対応するプライベートキーを、式:
BPrivi=H(BPrivxRi)+BPrivy
を用いて生成しようとする。生成されたプライベートキーがパブリックキーBPubiを得るために使用され得る場合に、出力ノード204は、その出力アドレスに向けられたトランザクション出力を解除する正確なプライベートキーを有する。
【0059】
ナンスパブリックキーRiを共有するためのメカニズムは、実施に応じて種々の形態とり得る。1つの実施において、ナンスパブリックキーRiは、出力アドレスが使用されるコインミキシングトランザクションの非トランザクションフィールドに挿入される。出力ノード204は、非トランザクションフィールドにおいてデータを有するコインミキシングトランザクションを見つけるようブロックチェーンを探索する。例えば、ビットコインプロトコルにおいて、OP_RETURNコードは、無効なトランザクション出力をマークするために使用されるスクリプト(Script)オペコード(opcode)である。OP_RETURNコードの後に置かれた如何なるデータもビットコイン支払いを処理する際に無視されるので、それはトランザクション内のメッセージ又はデータ保持フィールドとして有効に働くことができる。従って、ビットコインプロトコルに基づく1つの実施において、コインミキシングトランザクションは、パブリックナンスキーRiが後に続くOP_RETURNコード又は機能的同等物を伴った出力を含む。一般名称において、非トランザクションデータ又は情報がトランザクションに含まれないことを示すコードは、「非トランザクションコード」と本明細書中で呼ばれ得る。
【0060】
なお、ビットコインのようないくつかのプロトコルは、このような非トランザクションデータフィールドをトランザクションにおいて使用する能力を制限することがある。一例として、ビットコインは、トランザクションごとに1つのOP_RETURNコードしか認めないことがある。これは、コインミキシングトランザクションにおいて1つのRiしか指定され得ないことを意味する。いくつかの場合に、単一の非トランザクションデータフィールドにおいてRi個のキーを連結させることが可能であり得るが、いくつかの実施形態では、キーのサイズ及びフィールド長さに対する制限がそれを実現困難にしうる。従って、コインミキシングトランザクションにおける複数の出力のためのナンスパブリックキーRiは、他のメカニズムを用いて共有されてもよい。
【0061】
一例となる実施形態において、入力ノード202は、Ri個のナンスパブリックキーのうちの1つを含む非トランザクションデータフィールドを夫々有する更なるトランザクション212を生成する。更なるトランザクションの数は、出力の数と一致し得る。次いで、出力ノード204は、OP_RETURNコードなどの非トランザクションデータを含むトランザクションの存在を求めてブロックチェーンを探索又はモニタする。出力ノード204は、そのようなトランザクションを見つける場合に、非トランザクションデータを、それがナンスパブリックキーであり得るということに基づき取り出し、そのデータをそのパブリックキーマテリアルとともに使用して、可能な出力アドレスを生成する。次いで、出力ノード204は、生成された可能な出力アドレスがブロックチェーン上でコインミキシングトランザクションの出力として現れるかどうかを評価する。
【0062】
他の例となる実施において、入力ノード202は、別個の、望ましくは暗号化された通信チャネルを用いて、ナンスパブリックキーRiを、ブロックチェーン自体の外の出力ノード204へ転送する。次いで、出力ノード204は、対応するパブリックキーBPubiを生成し、それらのアドレスへ値を移すコインミキシングトランザクションを求めてブロックチェーンを探索する。
【0063】
出力ノード204がナンスパブリックキーRiを直接には与えられず、むしろ、出力ノード204が、非トランザクションデータを含み、コインミキシングトランザクション内の対応する出力を識別しようとするトランザクションを見つけるようブロックチェーンを探索する場合に、出力ノード204は、入力ノード202によって移動されるべきであった総価値に累積的に加算される出力の組を見つけるまで、その探索を続けてよい。
【0064】
図2は、入力ノード202が0.49コインを移動させるべきである一例を示す。コインはビットコイン、アルトコイン(altcoins)、又はその他の暗号通貨であってよい。この実例において、コインミキシングトランザクション210は、入力ノード202が参加するために利用可能であり、そこで、(固定された所定のデノミネーションにおいて)複数のデノミネーションがミキシングされている。すなわち、トランザクションは、複数の1コイン入力及び出力、複数の0.1コイン入力及び出力、複数の0.01コイン入力及び出力、並びに複数の0.001コイン入力及び出力、などを含む。他の例では、底10ではないデノミネーションを含め、更なるデノミネーションが含まれてもよい。
【0065】
この例において、入力ノード202は、夫々0.1コインの量の5つの利用可能なUTXO206を使用して0.49コインを組み立てる。入力ノード202が0.1コイン単位で十分なUTXO206をたまたま持っていなかった場合には、それは、支払いを構成するために別のデノミネーションのUTXOを選択することになる。この例において、入力ノード202が0.49コイン支払いを構成するために0.5コインを入力している場合に、入力ノード202は、0.01コインのお釣りに対する権利を与えられることになるが、この例で見られるように、トランザクションが手数料を伴うことがある。9×0.001コインの量のお釣りが入力ノード202へ戻され、これは0.001コインのトランザクション手数料を示唆する。
【0066】
5つの入力は、入力ノード202によって所有される異なるUTXO206に夫々由来する。出力は、4×0.1コイン及び9×0.01コインを含む。この例において、入力ノード202は、BPub1,BPub2,・・・,BPub13と示される13個の出力アドレスを生成する。
【0067】
13個のパブリックナンスキーRi(i=1,2,・・・,13)が出力ノード204と共有される。上述されたように、いくつかのプロトコルでは、キーを、コインミキシングトランザクション内の各々の非トランザクションデータフィールドに挿入することが可能であり得る。非トランザクションデータフィールドは、トランザクションに悪影響を及ぼさない何らかのタイプのデータフィールドである。データフィールドは、トランザクションと無関係なコメント、テキスト、又はその他データのための指定フィールドであってよい。いくつかの場合に、データフィールドは、フィールドが非トランザクションデータを含むことを示すために特定のコード又は信号によってマーク又は特定されてよい。上述されたように、ビットコインプロトコルでは、OP_RETURNコードがこの目的のために使用され得る。しかし、ビットコインプロトコルは、13個全てのナンスパブリックキーRiがコインミキシングトランザクションに挿入され得ないように非トランザクション出力の使用を制限する。
【0068】
ナンスパブリックキーRiがコインミキシングトランザクション自体において非トランザクションフィールド内で共有され得ない場合に、入力ノード202はそれらを他の方法で共有する。一例において、入力ノード202はそれらを出力ノード204へ別個の暗号化されたチャネル又は通信を通じて送る。他の例において、入力ノード202は、各ナンスパブリックキーRiを各々のトランザクションの非トランザクションデータフィールド内に置くことによって、それらをブロックチェーンを通じて共有する。
【0069】
出力ノード204は、ブロックチェーンをスキャンして、入力ノード202からの支払いを含む可能性があるトランザクションを探す。探索は、非トランザクションデータの存在を示す特定の信号又はコード(場合によっては、ナンスパブリックキーであり得る。)を含むトランザクションを識別することに基づいてよい。1つの実施において、検出される信号は、ビットコインプロトコルにおけるOP_RETURNコード(又はその機能的同等物)などの、非トランザクションコードである。このコードは、コードに続くデータが非トランザクションであることを示す。
【0070】
この例において、コインミキシングトランザクション210自体又は13この更なるトランザクション212の組のいずれかに、非トランザクションデータを含む少なくとも13個のヌル出力が存在する。フィールドごとに、次いで、出力ノード204は、データ(それが、ナンスパブリックキーRiであるかもしれないと推測するもの。)を取り出し、そのBPrivx及びBPrivyと、式:
BPrivi=H(BPrivxRi)+BPrivy
とに基づき、BPrivi及び対応するBPubiを計算する。取り出されたデータが、秘密の出力アドレスを生成するために入力ノード202によって使用されたナンスパブリックキーRiの1つである場合に、出力ノード204は、トランザクション210における出力アドレスの1つに対応するBPubiを成功裏に生成したことになる。それは、計算されたBPubiをトランザクション210の出力アドレスと単に比較して、自身への支払いの1つを正確に識別したことを確認し得る。出力ノード204は、今や対応するプライベートキーBPriviを有するので、そのUTXOを所有する。
【0071】
明らかなように、
図2の例は、入力ノード202が、支払いを累積的に構成するUTXO206の組み合わせを見つけることができ、且つ、トランザクション210に参加することができる十分な量の複数の底10デノミネーションをミキシングするトランザクション210を含む。いくつかの状況で、そのようなコインミキシングトランザクションは、参加するために利用可能でないことがあるか、あるいは、完了に失敗することがある。
【0072】
また、明らかなように、
図2の例は、以下の議論において、暗号通貨及び支払いの分散に特有であり、一方で、記載されるプロセス及びシステムは、所定のデータ記録特性(その一例が、所定のデノミネーションに値を適合させることである。)に一致するデータ記録特性に基づくデータ記録(その一例は暗号資産価値である。)の分配に適用可能である。
【0073】
図3は、複数のコインミキシングトランザクション302、304が使用される他の例となる支払いプロセス300を表す。
【0074】
この例において、入力ノード202は、利用可能なコインミキシングトランザクション302、304に基づき利用可能なUTXO206を選択することにおいて制約されている。この実例において、1つのコインミキシングトランザクション302は、0.1コインデノミネーションをミキシングするためのものであり、他のコインミキシングトランザクション304は、0.01コインデノミネーションをミキシングするためのものであると仮定される。トランザクション302、304の夫々に参加することは、トランザクション手数料、この例では0.00001コインを前提とする。手数料は、入力ノード202によって、過分の支払い及びお釣りに依存するのではなく、その量の別個のUTXO206を用いてトランザクションに入力される。
【0075】
入力ノード202は、前の例で見られたように5×0.1コインを使用することができない。これは、コインミキシングトランザクション302が0.01のお釣りを返すように必ずしも設計されておらず、出力ノード204への出力支払いが0.01コインの過分の支払いを生じさせることになるからである。従って、入力ノード202は、トランザクション302でミキシングされる4×0.1コインと、トランザクション304でミキシングされる9×0.01コインを使用して支払いを構成し得る。出力は、同様に、トランザクション302からの4×0.1コイン及びトランザクション304からの9×0.01コインになる。複数の非トランザクションデータフィールドが、使用されている特定の実施/プロトコルにおいて許される場合には、ナンスパブリックキーR1、R2、R3、R4は、トランザクション302内の非トランザクションデータフィールドに置かれ、残りのナンスパブリックキーR5乃至R13は、トランザクション304内の非トランザクションデータフィールドに置かれる。代替的に、ナンスパブリックキーRiは、別個の通信チャネルを通じて出力ノード204と共有されるか、あるいは、非トランザクションデータフィールドにおいてナンスパブリックキーRiの1つを夫々含む別々の個別的なブロックチェーントランザクションを通じて共有される。
【0076】
当業者に理解されるように、更なる他の例となるプロセスは、支払いを達成するよう他のデノミネーション及びコインミキシングトランザクションを使用してもよい。
【0077】
明らかなように、上記のプロセス200及び300に参加するために、入力ノード202は、正確なデノミネーションで、利用可能な十分なUTXO206を有する。入力ノード202によって所有されているUTXO206が、所定のデノミネーションでのコインミキシングに参加するための正確なデノミネーションにない状況があり得る。1つの実施において、入力ノード202は、所定のデノミネーションで支払いを受け取りたいことを支払人に信号で伝えるよう構成されてよい。それにより、入力ノード202は、その後に行うつもりである支払いに利用可能なUTXOを有することになる。いくつかの場合に、入力ノード202は、そのUTXO206を、所定のデノミネーションを有する複数のUTXO206に積極的に崩す又は分解するよう構成されてよい。そのような機能は、ウォレットソフトウェア内に組み込まれてよく、UTXO206を所定のデノミネーションに分解するようトランザクションを、そのようなトランザクションが無視可能な又はゼロのトランザクション手数料で実施され得るという条件で、積極的に生成し得る。いくつかの事例において、ウォレットソフトウェアは、この機能を有効又は無効にするよう構成されてよい。有効にされる場合に、ウォレットソフトウェアは、それらのトランザクションをバックグラウンドで生成及び実行してよい。いくつかの実施において、ソフトウェアは、特に、任意の手数料が分解トランザクションのために支払われるべきである場合に、トランザクションを実行する前に、ユーザ承認のために、提案される分解トランザクションを表示してもよい。
【0078】
これより
図4を参照すると、
図4は、本願の態様に従って、入力ノードから出力ノードへブロックチェーンに基づく支払いを行うための一例となる方法400をフローチャート形式で示す。方法400は、動作402で出力ノードからパブリックキーマテリアルを取得することを含む。この例において、パブリックキーマテリアルはBPriv
x及びBPriv
yを含む。なお、いくつかの他の実施では、出力ノードのパブリックキーマテリアルは別の形態をとってもよい。
【0079】
入力ノードは次いで、動作404で、出力ノードへの支払いを構成するよう、利用可能なUTXOのそのプールからUTXOを選択する。選択されるUTXOは、利用可能なコインミキシングトランザクションのデノミネーションに基づいてよい。選択されるUTXOは更に、関与するUTXOの数を最小限とすることに基づいてもよい。選択されるUTXOはまた更に、入力ノードへ戻されるお釣りを最小限とすることに基づいてもよい。他の要因も、支払いを構成することになるUTXOを識別するための選択プロセスにおいて使用されてよい。多くの場合に、支払いは複数のUTXOから構成され得るが、いくつかの場合に、単一のUTXOが選択されてもよい。UTXOの累積価値は、総支払い量以上である。
【0080】
動作404で、入力ノードはまた、出力ノードへの支払いを構成することになる出力の数及びデノミネーションも決定する。出力デノミネーションは、所定のデノミネーションから選択され、利用可能なコインミキシングトランザクションのデノミネーションに基づき選択されてよい。
【0081】
動作406で、出力の数を決定すると、入力ノードは次いで、出力の夫々について乱数riを選択し、出力ごとに、その関連する乱数riと、出力ノードからのパブリックキーマテリアルとに基づき、BPubi出力アドレスを生成する。
【0082】
次いで、入力ノードは、動作408で、入力及び出力を1つ以上のコインミキシングトランザクションに挿入する。
【0083】
動作410で、入力ノードは、ナンスパブリックキーRiを出力ノードと共有する。夫々のナンスパブリックキーRiは、各々の出力アドレスBPubiを生成する際に使用される乱数riの各々1つに対応する。いくつかの実施において、ナンスパブリックキーRiは、コインミキシングトランザクションの1つ以上の非トランザクションデータフィールド内に挿入される。いくつかの実施において、ナンスパブリックキーRiは、別個の付加的なトランザクション(ナンスパブリックキーRiごとに最大で1つまでのトランザクション)内の非トランザクションデータフィールドに挿入される。更なる他の実施において、入力ノードは、ナンスパブリックキーRiを、ブロックチェーンプロトコルの外の別個の通信チャネルを介して出力ノードと共有する。
【0084】
次いで、入力ノードは、動作412で、それが1つ以上のトランザクション内に挿入した入力の夫々に署名する。
【0085】
図5は、ブロックチェーン技術を用いて出力ノードで支払いを受け取るための一例となる方法500をフローチャート形式で示す。出力ノードは最初に、動作502で、そのパブリックキーマテリアルを公開又は利用可能にする。この例となる方法500では、パブリックキーマテリアルは2つのパブリックキーBPub
x及びBPub
yである。それは、このマテリアルを、出力ノードへ支払いを行うつもりである入力ノードへ供給し得る。この例において、出力ノードは、来るべき支払い及び支払いの量を知っていると仮定される。しかし、出力ノードがそのパブリックキーマテリアルを広く公開しており、前もって知らない金額で任意数の可能なソースから支払いを受ける可能性がある場合があり得る。そのような場合に、出力ノードは、後述されるように、非トランザクションデータを求めてブロックチェーンを断続的にスキャンし、見つけられた如何なるそのようなデータもテストする。
【0086】
動作504で、出力ノードは、入力ノードからの支払いに関係があり得るトランザクションを求めてブロックチェーンを探索し始める。特に、出力ノードは、非トランザクションデータの存在を示す非トランザクション信号又はコードを含むトランザクションを探す。いくつかの実施形態において、出力ノードは、その探索を、非トランザクションデータを含むコインミキシングトランザクションに制限してもよい。明らかなように、この例は、非トランザクションデータがコインミキシングトランザクション自体に含まれていると仮定する。上述されたように、いくつかの実施において、それは不可能なことがあり、ナンスパブリックキーマテリアルは、他の方法で、例えば、非トランザクションデータフィールドを含む更なるトランザクションを通じて、又は別個の非ブロックチェーン通信チャネルを通じて、出力ノードと共有されてもよい。例えば、ナンスパブリックキーが夫々別々のトランザクションに含まれる場合に、出力ノードは、1つのP2PKH出力及び1つのヌルデータ(Null Data)出力を含むトランザクションを探してもよい。
【0087】
動作506で、非トランザクションデータを含む候補トランザクションを識別すると、出力ノードは、非トランザクションデータを取り出し、データがトランザクションにおける出力アドレスの1つを生成するために使用され得るかどうかをテストする。上述されたように、非トランザクションデータがナンスパブリックキーRiである場合には、次いで、そのパブリックキーマテリアルを用いて、出力ノードは、パブリック-プライベートキー対BPrivi及びBPubiを生成することが可能であり、生成されたパブリックキーBPubiは、出力アドレスの1つに対応することになる。動作508で、出力ノードは、生成されたキーがトランザクション内の出力アドレスに対応するかどうかを評価する。そうでない場合には、出力ノードは非トランザクションデータを捨て、ブロックチェーンを探索することに戻り、あるいは、現在の候補トランザクションにおいて更なる非トランザクションデータが存在する場合には、その更なる非トランザクションデータをテストする。
【0088】
BPrivi及びBPubiを決定することによって支払いの1つを識別することに成功したと出力ノードが動作508で決定する場合に、それは、動作510によって示されるように、BPubiに割り当てられているその支払いを、入力ノードによって支払われる総額に加えることに進む。動作512で、出力ノードは、入力ノードからの支払いの累積価値が全部の支払いを達成しているかどうかを評価してよい。そうでない場合には、それは探索を続ける。
【0089】
明らかなように、上記の例となる実施形態において記載される動作の一部は、プロセスに実質的に影響を及ぼさずに、いくつかの実施において同時に又は異なる順序で行われてよい。本願は、これらの変形及び変更を包含する。
【0090】
コインミキシングトランザクションは、いくつかの実施において、中央サーバから実行されてもよい。しかし、それらはまた、完全に分散されてもよく、このとき、全ての入力ノードは、ブラインド署名(Blind-signing)サーバとして動作する。ビットコインとの関連で、ジョインマーケット(JoinMarket)は、参加を奨励し且つ換金性を高めるコインミキシングの非中央集権型の実施の例である。
【0091】
これより
図6を参照すると、
図6は、参加ノード600の単純化された例をブロック図形式で示す。ノード600はプロセッサ602を含む。プロセッサ602には、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、マイクロコントローラ、又は同様のコンピュータ処理装置が含まれ得る。ノード600はメモリ604を更に含む。メモリ604には、値、変数、及びいくつかの事例では、プロセッサにより実行可能なプログラム命令を記憶する永久的且つ非一時的なメモリが含まれ得る。ノード600は、有線又な無線ネットワークにわたってネットワークコネクティビティを提供するネットワークインターフェイス606を更に含む。
【0092】
ノード600は、プロセッサ実行可能命令を含むプロセッサ実行可能ブロックチェーンアプリケーション608を含む。プロセッサ実行可能命令は、実行される場合に、プロセッサ602に、本明細書中で記載される機能又は動作の1つ以上を実行させる。
【0093】
本明細書中で記載されるデバイス及びプロセス、並びにノードを構成するために、記載される方法/プロセスを実装するあらゆるモジュール、ルーチン、プロセス、スレッド、アプリケーション、又は他のソフトウェアコンポーネントが、標準のコンピュータプログラミング技術及び言語を用いて実現され得ることが理解されるだろう。本願は、特定のプロセッサ、コンピュータ言語、コンピュータプログラミング仕様、データ構造、他のそのような実施詳細に限定されない。
【0094】
上記の実施形態は、本発明を制限するのではなく説明しているのであって、当業者は、添付の特許請求の範囲によって定義される本発明の適用範囲から外れることなしに、多くの代替の実施形態を設計することが可能である点が留意されるべきである。特許請求の範囲において、かっこ内の如何なる参照符号も、特許請求の範囲を制限するものとして解釈されるべきではない。語「有する」(comprising及びcomprises)などは、いずれかの請求項又は明細書の全文に挙げられているもの以外の要素又はステップの存在を除外しない。本明細書中、「有する」(comprises)は、「含むか、又は~から成る」(includes or consists of)を意味し、「有する」(comprising)は、「含むか、又は~から成る」(including or consisting of)を意味する。要素の単一参照は、そのような要素の複数参照を除外せず、逆もまた同じである。本発明は、いくつかの個別要素を有するハードウェアを用いて、且つ、適切にプログラムされたコンピュータを用いて、実施されてよい。いくつかの手段を列挙している装置クレームでは、それらの手段のうちのいくつかが、ハードウェアの同一アイテムによって具現されてもよい。特定の手段が相互に異なる請求項で挙げられているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないことを示すものではない。
【外国語明細書】