JP2021531689A - アセット混合のための、コンピュータにより実施されるシステム及び方法 - Google Patents

アセット混合のための、コンピュータにより実施されるシステム及び方法 Download PDF

Info

Publication number
JP2021531689A
JP2021531689A JP2021500693A JP2021500693A JP2021531689A JP 2021531689 A JP2021531689 A JP 2021531689A JP 2021500693 A JP2021500693 A JP 2021500693A JP 2021500693 A JP2021500693 A JP 2021500693A JP 2021531689 A JP2021531689 A JP 2021531689A
Authority
JP
Japan
Prior art keywords
transaction
participant
participants
computer
coinjoin
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021500693A
Other languages
English (en)
Other versions
JP7414795B2 (ja
Inventor
ベルナト,ポーリーン
バルトルッチ,シルヴィア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of JP2021531689A publication Critical patent/JP2021531689A/ja
Priority to JP2023222097A priority Critical patent/JP2024023991A/ja
Application granted granted Critical
Publication of JP7414795B2 publication Critical patent/JP7414795B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

アセット混合プロトコルは、所与の参加者コンピュータシステムが異なったアセット混合トランザクションに含まれる入力及び出力アドレスを有し得るように作られたアセット混合トランザクションの組を用いて参加者コンピュータシステムのグループが彼らのアセットを混合することを可能にする。集積木から導出された数量の使用は、プロトコルが、ブロックチェーン上の全てのアセット混合トランザクションのブロードキャストに対して参加者コンピュータシステムによって行われたデポジットの償還をセキュアに条件付けることを可能にする。参加者コンピュータシステムからアセットを盗むことができる十分な情報を中央調整者又はディーラーが処理することから保護するセーフガードが提供される。

Description

本開示は、ブロックチェーン上に記録された複数のノンアトミック操作の使用を通じたアトミック操作の生成及び実行に概して関係がある。本開示は、複数の参加者からの寄与を含む合成アトミック操作の実行に特に適するが限られない。一般に、本開示は、アトミック操作の失敗時に如何なる個々の寄与も返されることを個々の参加者に保証するために集積木を使用する。
本文書中、語「ブロックチェーン」は、いくつかのタイプの電子的な、コンピュータに基づく分散台帳(distributed ledgers)のいずれかを指す。それらは、合意に基づくブロックチェーン及びトランザクションチェーン技術、許可(permissioned)及び無許可(un-permissioned)台帳、共有台帳、並びにこれらの変形を含む。ブロックチェーン技術の最も広く知られた応用は、他のブロックチェーン実施が提案及び開発されているとはいえ、ビットコイン台帳である。ビットコインの例が、便宜上、説明のために本開示で言及され得るが、本開示は、ビットコインブロックチェーンとともに使用することに限られず、代替のブロックチェーン実施及びプロトコルが本開示の適用範囲内にあることが留意されるべきである。例えば、本開示は、どんな制約がトランザクション内で符号化され得るかに関してビットコインに類似した制限を有している他のブロックチェーン実施において有用であることができる。
ブロックチェーンは、トランザクション及び他の情報から成るブロックで構成された、コンピュータに基づく非中央集権型の分散システムとして実装されるピア・ツー・ピアの電子台帳である。例えば、ビットコインによれば、各トランザクションは、ブロックチェーンシステム内の参加者間のデジタルアセットの制御の移動を符号化するデータ構造であり、少なくとも1つの入力及び少なくとも1つの出力を含む。いくつかの実施形態で、「デジタルアセット」(digital asset)は、使用権に関連するバイナリデータを指す。いくつかの実施で、デジタルアセットの制御を移すことは、第1エンティティから第2エンティティへデジタルアセットの少なくとも一部を関連付けし直すことによって実行され得る。ブロックチェーンにその始まり以来書き込まれてきた全てのトランザクションの永久的且つ不変な記録を構成するようブロックどうしが連鎖するように、各ブロックは前のブロックのハッシュを含む。トランザクションは、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さいプログラムを含む。スクリプトは、如何にして誰によってトランザクションの出力がアクセスされ得るかを特定する。ビットコインプラットフォームで、それらのスクリプトは、スタックに基づくスクリプト言語を用いて書かれている。
トランザクションがブロックチェーンに書き込まれるために、それは“妥当性確認”(validated)される。ネットワークノード(マイナー)は、各トランザクションが妥当であることを確かにする作業を実行し、妥当でないトランザクションはネットワークから拒絶される。ノードは、他のノードとは異なった妥当性の標準を有することができる。ブロックチェーンにおける妥当性は合意に基づく(consensus-based)ので、トランザクションが妥当であると大部分のノードが同意する場合に、トランザクションは妥当と見なされる。ノードにインストールされているソフトウェアクライアントは、部分的にUTXOロッキング(locking)及びアンロッキング(unlocking)スクリプトを実行することによって、未使用トランザクション(unspent transaction,UTXO)を参照するトランザクションに対してこの妥当性確認作業を実行する。ロッキング及びアンロッキングスクリプトの実行が真(TRUE)になり、他の妥当性確認条件が、適用可能である場合に、満足される場合には、トランザクションはノードによって妥当性を確認される。妥当性を確認されたトランザクションは、他のネットワークノードへ伝えられ、そうすると、マイナーノードは、トランザクションをブロックチェーンに含めることを選択することができる。このようにして、トランザクションがブロックチェーンに書き込まれるために、それは、i)トランザクションを受け取る第1ノードによって妥当性確認をされなければならず、トランザクションが妥当性を確認される場合に、ノードは、それをネットワーク内の他のノードへ中継し、そして、トランザクションは、ii)マイナーによって構築された新しいブロックに加えられ、ii)マイニング、すなわち、過去のトランザクションの公開台帳に付加、されなければならない。トランザクションを実質的に不可逆にするよう十分な数のブロックがブロックチェーンに付加されている場合に、トランザクションは承認されていると見なされる。
ブロックチェーン技術は、暗号通貨実施の使用のために最も広く知られているが、デジタル起業家は、新しいシステムを実装するために、ビットコインが基づく暗号化によるセキュリティシステムと、ブロックチェーン上に記憶され得るデータとの両方の使用を探求し始めている。暗号資産の分野に制限されない自動化タスク及びプロセスのためにブロックチェーンが使用される場合に、それは大いに有利である。そのような解決法は、ブロックチェーンの利益(例えば、イベントの永久的な耐タンパー性の記録、分散処理など)を活用しながら、それらの用途を広げることができる。
ブロックチェーントランザクション出力は、ロッキングスクリプトと、ビットコインなどのデジタルアセットの所有権に関する情報とを含む。ロッキングスクリプトは、解除条件(encumbrance)とも呼ばれることがあり、出力をアンロックするために満足される必要がある条件を指定することによってデジタルアセットを“ロック”する。例えば、ロッキングスクリプトは、関連するデジタルアセットをアンロックするよう特定のデータがアンロッキングスクリプトにおいて供給されることを求め得る。ロッキングスクリプトは、ビットコインでは「scriptPubKey」としても知られている。デジタルアセットをアンロックするためにデータを供給することをパーティに求める技術は、ロッキングスクリプト内にデータのハッシュを埋め込むことを含む。しかし、これは、ロッキングスクリプトが生成される時点でデータが未決定である(例えば、知られておらず固定されていない)場合に問題を提示する。
よって、相異なるノンアトミックトランザクションの結合を用いてアトミックトランザクションを実行する方法を提供することによって、ブロックチェーン技術を改善する方法及びシステムを提供することが望ましい。そのような、改善された解決法は、これより発明されている。よって、本開示に従って、添付の特許請求の範囲で定義されている方法が提供される。
よって、出力シャッフルプロセスにおいて参加者コンピュータシステムの組を暗号的に識別するデータ構造を生成することと、シャッフルされた出力アドレスの組を参加者コンピュータシステムの組から取得することと、参加者コンピュータシステムの組に対応する寄与記録の組(例えば、デポジットトランザクションの組)がブロックチェーンへコミットされていると決定することと、シャッフルされた出力アドレスの組及びデータ構造に少なくとも部分的に基づいて複数のトランザクションを生成することと、複数のトランザクションを前記ブロックチェーンへサブミットすることとを有する、コンピュータにより実施される方法を提供することが望ましい。
望ましくは、請求されているコンピュータにより実施される方法は、個々の参加者コンピュータシステムに関連する個別アセット混合トランザクションが失敗したと第1タイムアウト後に決定することと、個別アセット混合トランザクションが失敗したとの決定の結果として、個々の参加者コンピュータシステムが寄与記録の組からの補償を請求すること又は個々の参加者コンピュータシステムの寄与記録を再請求することを可能にする暗号情報を個々の参加者コンピュータシステムの組へ供給することとを更に有する実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、寄与記録の各組がロッキングスクリプトを含み、ロッキングスクリプトにより、トランザクション出力が、シャッフルされた出力アドレスの組に基づいて個々の参加者コンピュータシステムによって請求されることが可能になる実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、ロッキングスクリプトにより、入力が暗号情報を用いて再請求されることが可能になる実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、ロッキングスクリプトにより、第1タイムアウトよりも長い第2タイムアウト後に入力が再請求されることを請求されることが可能にある実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、ロッキングスクリプトがOP_CHECKSEQUENCEVERIFY演算子を含む実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、シャッフルされた出力アドレスの組が、シャッフルされた出力アドレスの組を参加者コンピュータシステムの組の中の各参加者コンピュータシステムへルーティングされるようにすることによって、取得される実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、寄与記録の組の中の各寄与記録が、コンピュータにより実施される方法を促進するディーラーへ支払われるトランザクション手数料を含む実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、データ構造が集積木であり、集積木のリーフノードが参加者コンピュータシステムの組を表す実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、個別アセット混合トランザクションにおける参加者コンピュータシステムが、集積木の中間ノードの下のリーフノードに対応する実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、各参加者コンピュータシステムが、集積木の各リーフノードに関連する値のハッシュを供給する実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、アセット混合トランザクションが、アセット混合トランザクションである実施形態であってよい。
望ましくは、請求されているコンピュータにより実施される方法は、各参加者コンピュータシステムが、1つ以上のプロセッサと、1つ以上のプロセッサによって実行される結果として、暗号通貨ウォレットアプリケーションを実施する命令を記憶しているメモリとを有するコンピュータシステムである実施形態であってよい。
また、プロセッサと、プロセッサによる実行の結果として、システムに、せいきゅうsあれている方法のいずれかを実行させる実行可能命令を含むメモリとを有するシステムを提供することも望ましい。
コンピュータシステムのプロセッサによって実行される結果として、コンピュータシステムに、請求されている方法のいずれかを少なくとも実行させる実行可能命令が記憶されている非一時的なコンピュータ可読記憶媒体を提供することも望ましい。
本開示は、検証方法/システムとして、及び/又はブロックチェーンを介したデジタルアセットの交換又は転送を制御する制御方法/システムとして記載され得る。いくつかの実施形態で、デジタルアセットは、暗号通貨の部分又はトークンである。以下で説明されるように、本開示はまた、ブロックチェーンネットワーク又はプラットフォームを介して操作を実行する新しい、改善されたかつ有利な方法のためのセキュアな方法/システムとしても記載され得る。
本開示のこれら及び他の態様は、本明細書で記載される実施形態から明らかであり、それらを参照して説明される。本開示の実施形態は、これより、ほんの一例として、添付の図面を参照して説明される。
実施形態において、アセット混合を行うシステムの例を表す。 実施形態において、9つの要素の組についての集積木の例を表す。 実施形態において、各リーフノードが関連する要素e(i=1,・・・,4)を有している集積木の例を表す。 実施形態において、マルチCoinJoinトランザクションの部分として行われる暗号化操作の例を表す。 実施形態において、マルチCoinJoinトランザクションの部分として行われる暗号解除操作の例を表す。 実施形態において、マルチCoinJoinトランザクションの部分として行われる出力アドレスの並べ替えの例を表す。 実施形態において、マルチCoinJoinトランザクションの部分としてデポジットに対して参加者によって生成されるロッキングスクリプトの例を表す。 実施形態において、マルチCoinJoinトランザクションにおいて4人の参加者によって生成、署名、及びブロードキャストされた寄与記録の例を表す。 実施形態において、マルチCoinJoinトランザクションにおいて参加者によって生成及び署名された2つのCoinJoinトランザクションの例を表す。 実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによる実行の結果として、マルチCoinJoinトランザクションを実行するプロセスの例を表す。 実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによる実行の結果として、キー共有を実行し、マルチCoinJoinトランザクションでの使用のために集積木を構築するプロセスの例を表す。 実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによる実行の結果として、出力アドレスを再配置し、デポジットを生成し、マルチCoinJoinトランザクションのためのCoinJoinトランザクションを生成するプロセスの例を表す。 実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによる実行の結果として、マルチCoinJoinトランザクションのためにリターン及び補償を処理するプロセスの例を表す。 様々な実施形態が実施され得るコンピュータシステムを表す。
本文書は、ブロックチェーンに記録されたノンアトミックトランザクションの結合を用いてアトミックトランザクションを実行するようセキュリティ方法を実行するシステムについて記載する。実施形態において、システムは、ディーラーコンピュータシステムと、参加者コンピュータシステムの組とを識別する。参加者コンピュータシステムと協力して、ディーラーは、参加者コンピュータシステムへ供給される各参加者に特有の暗号情報を生成するために使用される集積木(accumulation tree)を生成する。各参加者コンピュータシステムは、リソースをアトミック操作へコミットするトランザクションを生成する。ここで、トランザクションは、暗号情報に少なくとも部分的に基づいて、ロッキングスクリプトにより保護される。様々な例で、リソースは、暗号キー、コード、暗号通貨の数量、未使用トランザクション出力であってよい。実施形態において、ロッキングスクリプトは、何らかの理由によりアトミック操作が失敗する場合に、タイムアウト後に、トランザクション入力の償還を提供する。ディーラーコンピュータシステムは、全ての参加者がアトミック操作に対して彼らのリソースを適切に満たしているかどうかを判定し、そうである場合に、複数のトランザクションを生成しブロックチェーンにコミットする。ブロックチェーンは、凝集効果において、アトミック操作を実行する。全ての参加者コンピュータシステムがアトミック操作を完了するために必要なリソースをコミットしているわけではない場合に、ディーラーコンピュータシステムは、参加者コンピュータシステムが彼らのコミットされたリソースを回復することを可能にする集積木に関連した特定の情報を供給する。このようにして、参加者は、アトミック操作が完了されること、又は活動にコミットされた如何なるリソースも返されることのいずれかの暗号保証(cryptographic assurance)を得ることができる。
いくつかの例で、システムは、単一のアセット混合操作がブロックチェーン上で複数のトランザクションに及ぶことを可能にすることによって、アセット混合操作の有効性を改善するために使用されてよい。アセット混合トランザクションの場合に、あて先アドレスからの個人情報の除外は、必ずしも、トランザクションにおける参加者の身元を不明りょうにしない。意欲的な個人は、特定の移動及びあて先アドレスに個人を関連付けることが可能な解析を実行するために、外部データセットとともに、公に利用可能な台帳内のトランザクション情報を利用することがある。本明細書で記載される実施形態は、単一のアセット混合操作を複数のコンポーネントトランザクションに分割することによって、この懸案事項を軽減する。本明細書で記載されるアセット混合システムは、大規模コンピューティングプール、投票システム、及び暗号通貨トランザクションなどの代替可能資産のプールにおいて交換が行われる可能性がある様々な問題にも適用可能である。
例えば、暗号通貨資産は、コインミキシングと呼ばれるアセット混合プロセスを用いて混合され得る。例えば、ビットコインのコインミキシング解決法は、n人のユーザのビットコイン入力をプールし、次いで、プールされたビットコインを、ユーザによって所有されているn個のアドレスの代替の組へ出力することによって、アドレス間のリンクを隠す。コインミキシングのCoinJoin実施は、1つの単一ビットコイントランザクションの使用を通じてコインミキシングプロセスを実行することによってプロセスを簡単にして、CoinJoinトランザクションにおいてユーザの入力をユーザの出力と正確にリンクする確率を1/nまで低下させる。CoinShuffleなどのミキシングサービスは、ユーザが参加しているトランザクションへコインを送るCoinJoinトランザクションを介してビットコインユーザの身元を不明りょうにして、ブロックチェーンを通る個人のコインの流れを追跡することを難しくする解決法を提供する。トランザクションに関わる出力をシャッフルするプロセスは、トランザクションの入力及び出力の間に不鮮明な状態を作り出す。通常、n人の参加者(各参加者はトランザクションにおいて1つの入力及び1つの出力を有している)を含むCoinJoinトランザクションの場合に、入力を出力と正確にリンクする(従って、参加者のコインフローを正確に推測する)確率は、1/nである。
1つの実施において、システムは、複数の参加者から未使用暗号通貨出力をプールし、出力アドレスの順序を再配置し、それによって、第三者が追跡することがより困難であるCoinJoinトランザクションからの新しい出力を各参加者に供給する。実施形態において、参加者のグループは、出力アドレスの組をシステムへ供給する。システムは、出力アドレスの順序をランダム化し、並べ替えられた出力アドレスを使用して、多数の独立したCoinJoinトランザクションを生成する。トランザクションは、各参加者が、2つの独特のCoinJoinトランザクションに含まれている関連した入力及び出力を有するように、配置される。
一般に、単一のCoinJoinトランザクションにおいて、個々のユーザは1つ(以上)の入力及び1つ(以上)の出力を有することになる。更に、ビットコイントランザクションの場合に、トランザクションサイズは1Mバイトに制限されており、これは、所与のトランザクションに含まれ得る入力及び出力の総数を制約し、従って、トランザクションに関連することができる参加者の数を制限する。
本明細書で記載される様々な実例で、システムは、トランザクションへの参加者が2つの異なったトランザクション(例えば、ブロックチェーンに書き込まれている2つの異なったトランザクション記録)に含まれる彼らの入力及び彼らの出力を有し得るように、複数の独立したCoinJoinトランザクションを構築する。システムは、参加者が個々のリーフノードによって表現される集積木をディーラーコンピュータシステムに生成させることによって、これを達成することができる。参加者によって使用されるロッキングスクリプトは、トランザクションが閾時間量の後に成功裏に完了していない場合に、個々の参加者が、ディーラーコンピュータシステムの助けを借りて、又はいくつかの例では、助けなしで、失敗したトランザクションに寄与した如何なるアセットも再請求することができるトランザクションのマルチフェーズ実行を強行する。各参加者は、独立した全てのCoinJoinトランザクションが公開台帳に含まれる場合にその参加者が請求することができる、以前に同意した、及びCoinJoinトランザクションで混合された量と同様のビットコインの量をデポジットする。プロトコルは、CoinJoinトランザクションの1つが、そのトランザクションにおいて彼らの入力を加えると期待された参加者によって署名されない(例えば、トランザクションに割り当てられているサブグループ内の参加者に悪意がある)場合に、残りのトランザクションの1つに入力を加え署名した参加者が正当に補償されることを確かにする安全機構を備える。このプロトコルは、CoinJoinトランザクションのリンク不能性(unlinkability)である顕著な特徴を提供するので、CoinShuffleなどの単一CoinJoinトランザクションに基づく解決法と比べて許可可能な参加者の数を増やす。これは、ネットワーク上でCoinJoinトランザクションを署名及び送信する前に参加者によって行われたデポジットをロック及びアンロックするために参加者によって供給されたデータを用いて構築された静的な集積木(局所的及び大域的ダイジェスト)から導出された数量を用いて達成される。
図1は、実施形態において、コインミキシングを実行するシステム100の例を表す。コインミキシングは、ユーザのグループが彼らのビットコインを一緒にプールし、それから、彼らのビットコインを代替のビットコインアドレスに分配してもらいたいと望むシステムである。そのような代替のアドレスは、ユーザの初期の組によって所有されてもされなくてもよい。システムは、外部の攻撃者に対する保護を提供する。これは、攻撃者が、一般的に、入力及び出力アドレスを関連付けることができないからである。例えば、n個の入力及びn個の出力がある場合に、入力を出力アドレスと正確に結びつける確率は、約1/nである。これは、一般的に、全ての参加者が混合プールにおいて同量の暗号通貨を入力及び出力する限りは当てはまる。
図1に表される実施形態では、第1ユーザ102は第1クライアントコンピュータシステム104を操作し、第2ユーザ106は第2クライアントコンピュータシステム108を操作し、第3ユーザ110は第3クライアントコンピュータシステム112を操作する。各クライアントコンピュータシステムは、パーソナルコンピュータ、ラップトップコンピュータ、携帯型デバイス、ネットワーク家電、仮想コンピュータシステム、コンピュータサーバ、POS(point-of-sale)端末、又は他のコンピューティングデバイスであってよい。実施形態において、各コンピューティングデバイスは、クライアントデバイス上でメモリに記憶されている命令から成るクライアントアプリケーションをホストする。命令は、クライアントコンピュータシステムによる実行の結果として、クライアントアプリケーションの機能を実施する。クライアントアプリケーションは、ビットコイン台帳又は他の暗号通貨ブロックチェーンなどの、分散型記憶ネットワークに記憶されているブロックチェーン台帳とインターフェース接続する。いくつかの例で、各クライアントコンピュータシステムは、トランザクション記録を送信及び受信すること、又はコンピュータネットワークによって、ブロックチェーンとインターフェース接続する。コンピュータネットワークは、Ethernet(登録商標)若しくは光ファイバネットワークなどの有線ネットワーク、又はWi−Fi若しくはセルラーネットワークなどの無線ネットワークを含んでよい。
実施形態において、3人のユーザの夫々は、ブロックチェーン114に記憶されるCoinJoinトランザクションへ入力及び出力を加える。ユーザの入力の夫々及びユーザの出力の夫々は、一致した暗号通貨の価値を有し、出力の順序付けは、ブロックチェーンを調べる攻撃者が、所与の出力がどのユーザからそもそも得られたかを知り得ないように、ランダムに配置される。
この解決法のいくつかの実施は、特定の望ましくない特性を示し得る協調サービスプロバイダに依存する:
●協調サービスプロバイダが、ユーザによって供給されたビットコインアドレスへビットコイン入力を転送しないことによって、ビットコインを盗む可能性があるリスクが存在する。
●協調サービスプロバイダは、入力ファンド/アドレスと出力アドレスとの間のつながりに関する知識を持つことがある。サービスプロバイダがそうすることを選択するならば、サービスプロバイダは、この情報を意図的に又は誤って公開する可能性がある。
●一般に、協調サービスは、コインミキシングサービスの利用のために手数料を課す。
本明細書で記載される様々な実施形態は、これら及び他の欠点を補償する。例えば、CoinJoinは、ビットコインアドレス間の参加者のファンドの移動において、1つの共有されたビットコイントランザクションを使用する。各ユーザは、彼らのビットコインをビットコイントランザクションへ入力として加え、各ユーザは、彼らのあて先出力ビットコインアドレスをトランザクションへ加える。単一の共有されたトランザクションを使用することによって、コインミキシングサービスのトランザクションコストは低減され得る。しかし、協調サービス(例えば、CoinJoin)に依存する実施は、協調サービスが危殆化される場合に匿名性の喪失を危険にさらすことがある。いくつかの実施で、必ずしも‘中央サーバー’それ自体は存在しないが、CoinJoinトランザクションにおける参加者は、それでもなお、トランザクション出力に対応するトランザクション入力を決定することが可能であり得る。例えば、入力アドレスが{A,B,C,D}であり、出力アドレスが{A’,B’,C’,D’}であるとする。ユーザが彼ら自身の情報をトランザクションに含める場合に、入力及び出力アドレスは、一般的に、同時にトランザクションに加えられ得る。この状況で、トランザクションの出力及び入力アドレスの順序は、それらがトランザクションに加えられる順序で相互に関連付けられてよく、トランザクションの参加者が入力アドレスと対応する出力アドレスとの間のリンクを推測することを可能にする。いくつかの実施で、ユーザは、彼らの出力アドレスを“公表”(announce)し、それをサービスによってプールに加えてもらい、それから、サービスによってシャッフルされた“出力アドレスの順序”を有してよい。しかし、そのような実施では、各ユーザの出力アドレスの公表は、公表者の入力及び出力アドレスの間のリンクを暴露する可能性がある。匿名性を維持するために、様々な実施は、第三者がユーザの出力アドレスを知っている確率をプロセスが1/nよりも増大さないように、出力アドレスをCoinJoinトランザクションに組み込む。ここで、nは、CoinJoinトランザクションにおける出力の数である。実施形態において、シャッフルプロセスは、後に複数のCoinJoinトランザクションに含まれるシャッフルされた出力アドレスの組を生成する。
図2は、実施形態において、9個の要素の組について集積木T(ε)200の例を表す。示される例では、集積木は、9つの要素及び3つのレベルを有しており、各内部ノードは、3つの子ノードを有している。表されている例では、集積木は、根ノードr202を有している。根ノードr202は、3つの子ノード、すなわち、第1中間ノードd204、第2中間ノードe206、及び第3中間ノードf208を有している。3つの中間ノードの夫々は、3つの子ノードを有しており、子ノードの夫々は、集積木のリーフノードである。第1中間ノードd204は、第1子ノードa210、第2子ノードb212、及び第3子ノードc214を有している。第2中間ノードe206は、第1子ノードg216、第2子ノードh218、及び第3子ノードi220を有している。第3中間ノードf208は、第1子ノードj222、第2子ノードk224、及び第3子ノードl226を有している。
様々な実施形態で、暗号アキュムレータは、ハッシュテーブルにデータを格納し、メンバーシップ認証を実行するために使用されてよい。いくつかの例で、アキュムレータは、RSAベース又は双線形写像アキュムレータである。様々な例で、静的アキュムレータ(固定されたメンバーの組を有する)及び動的アキュムレータ(組内のメンバーの追加又は削除を認める)が使用されてよい。静的双線形写像アキュムレータは、次のように実施されてよい:
、Gを、生成元(generators)g、gによる素数位数(prime order)pの2つの巡回乗法群(cyclic multiplicative groups)とする。また、Φ(g)=gであるような同型写像(isomorphism)Φ:G→Gが存在すると仮定する。位数pの巡回乗法群であるGを考えると、双線形ペアリングは、次の特性を有してe:G×G→Gと定義され得る:
●双線形性(Bilinearity):e(P,Q)=e(P,Q)ab∀P∈G、Q∈G及びa,b∈Z
●非退化形式(Non-degeneracy):(g,g)≠1。
●計算可能性(Computability):e(P,Q)∀P∈G、Q∈Gを計算するための効率的なアルゴリズムが存在する。
続く例では、G=G=G及びg=g=gと設定され、ペアリングe:G×G→Gが考えられる。双線形ペアリングに基づく双線形写像アキュムレータは、累積値f’(E)=g(e1’+s)(e2’+s)・・・(en’+s)におけるn個の要素の組E=(e,・・・,e)を累積することができる。累積値はGの要素であり、それはZ の要素を累積する。要素(e’,・・・,e’)∈Gは、組E=(e,・・・,e)∈Gの元の要素の暗号ハッシュであり、すなわち、
Figure 2021531689
として、e’=h(e)。
Figure 2021531689
は、入力として巡回乗法群Gの要素を取り、出力として
Figure 2021531689
の整数を生成する衝突耐性ハッシュ関数である。最後に、sは、秘密を保たれるトラップドア(trapdoor)情報を表す。
認証されたデータ構造を用いてデータを効率的に格納するために、集積木が使用される。これは、一般的に、一定の時間更新及び一定サイズ証明を提供する。集積木の使用は、一般的に、通信及び検証コストを下げるだけでなく、全ての可能性があるクエリへの解を予め計算する様々な代替案に対する記憶コストも下げる。
様々な実施形態で、集積木は、クエリに関与するサブセットについてハッシュ値の正確さを検証するために使用される。組のための公開ツリーダイジェストはハッシュ値を裏付け、転じて、ハッシュ値は組を妥当性確認する。
集積木は、0<ε<1として、T(ε)として表される。T(ε)は、n個のリーフを有する根付き木(rooted tree)に相当し、組Eのn個の要素が格納される。木のレベル数は、
Figure 2021531689
として定義され、一方、ノードごとの子ノードの数はO(nε)である。リーフ(すなわち、組要素)は、レベル0により識別される同じレベルにある。
e∈[e,・・・,e]を格納する木T(ε)内の各リーフノードvについて、累積値ψ(v)は、その要素自体の値に等しいと定義される:

ψ(v)=e。
レベル1<i<l(ここで、l=2)での木T(ε)内の各非リーフノードについて、累積値ψ(v)は、次のように定義される:
Figure 2021531689
ここで、C(v)は、ノードvの子ノードの組であり、ψ(u)は、ノードuの双線形局所的ダイジェストである。例えば、図2の集積木の場合に、C(v=d)={a,b,c}である。sは、スキームのトラップドアであり、
Figure 2021531689
は、衝突耐性ハッシュ関数である。
組Eに属する所与の要素xの場合に、メンバーシップの証明π(x)は、集積木のレイヤごとに1つである証明の順序付けられたシーケンスπ(x)={π,i=1,・・・,l}を有する。証明の各要素は、レベルごとに要素の局所的ダイジェストα及びブランチウィットネスβから成る対に対応する:

π=(α、β),i=1,・・・,l。
1<i<lとして、所与のレイヤについて、
Figure 2021531689
が成立し、ここで、S(v)は、木T(ε)内のノードvの兄弟(siblings)の組に対応する。例えば、図2の集積木の場合に、兄弟の組は、S(v=d)={e,f}である。
所与のレイヤiの場合に、対応する証明要素は、次のコンポーネントを含む:
●根rへ要素xをリンクするノードのパスP(x):x→rで見つけられる前のレイヤ(レイヤi−1)内のノードの双線形ダイジェストを表すα。レイヤ1<i<lの場合に、αは、レイヤi−1に存在する全ての要素について同じである。
●クエリされているノードから木の根へのパスの欠落ノードが信頼できることを証明するウィットネスである“ブランチウィットネス”を表すβ
証明は、一般的に、信頼できるパーティによって計算され、ユーザ/プローバ(prover)へ送られる。トラップ情報sは、しばしばプローバに知られていない。しかし、数量
Figure 2021531689
は、(一般的にサードパーティによって)公にされる。
集積木の全体の大域的な双線形ダイジェストは、d=ψ(r)である。ここで、

ψ(r)=g(h(ψ(d))+s)(h(Ψψ(e))+s)(h(ψ(f))+s)

であり、rは、木の根(root)を示す。
検証フェーズにおいて、ユーザは、その証明π(x)を検証は(verifier)へ供給する。gが公にされている場合に、検証者は、
1.α=xであることをチェックし、
2.i=2,・・・,lの場合に、e(α,g)=e(βi−1,gs+h(αi−1))であることを検証する。
双線形写像特性を用いて、第2の関係はまた、次の数量を検証することと同等である:
Figure 2021531689
この例では、証明は、上記の関係が成立する場合に受け入れられる。
本文書中、公開/秘密キー対は、参加者によって供給されたデータを用いて構築された集積木の局所的及び大域的ダイジェストを用いて生成される。キー対は、ブロックチェーンへの包含のためにCoinJoinトランザクションの提出前に参加者によって行われたデポジットをロック(し、後にアンロック)するために使用される。
様々な実施形態は、2つのパーティ間の共有秘密(secret)を確立するためにキー共有アルゴリズムを使用する。
ディフィー・ヘルマン(Diffie-Hellman)キー共有プロトコルは、2人のユーザが公開情報を交換することによって共有秘密を生成することを可能にするキー共有プロトコルである。いくつかの実施形態で、ディフィー・ヘルマンなどのキー共有アルゴリズムは、暗号通貨とともに使用されるステルスアドレスを生成するために使用されてよい。例えば、ステルスアドレスは、ビットコインプロトコルの匿名性を強化するために使用されてよい。ステルスアドレスが使用される場合に、ファンドの(潜在的な)受け手はシード値を発行し、それからアドレスが導出され得る。暗号通貨は、(受け手の既知の公開アドレスではなく)導出されたアドレスへ送られ、次いで、意図されたい受け手によって請求され得る。シードからアドレスを導出することは困難であるから、匿名性がもたらされる。いくつかの実施形態で、このアプローチは、受け手が正確なビットコイントランザクションを識別するために全ての入来トランザクションTxOutをスキャンする必要がある場合に、制約されることがある。
ディフィー・ヘルマンキー共有プロトコルの作業内容の説明がここで示される。それは、楕円曲線上の一般化された離散対数問題の上に構成される。すなわち、楕円曲線ディフィー・ヘルマンキー共有(Elliptic curve Diffie-Hellman key exchange,ECDH)である。
ECDHプロトコルは、2人のユーザ、すなわち、送り手及び受け手を含む。送り手は、受け手によって後に回復され得る導出されたアドレスへいくつかのファンドを転送するために共有秘密を使用する。
●受け手は、秘密ECキーdと、対応する公開キーQ=d×gを生成する。この公開キーは、広く利用可能にされる。
●送り手も、秘密キーeと、その対応する公開キーP=e×gを生成する。
●両方の公開キーを交換又は公に利用可能にすることによって、送り手及び受け手は、c=H(e×Q)=H(d×P)として定義された秘密を共有する。ここで、Hは、暗号ハッシュ関数である。
●共有秘密とともに受け手の公開キーを使用して、送り手は新しい公開キー:
Q’=Q+c×g
を生成する。ECの準同型性(homomorphic property)を使用して、この新しい公開キーは:
Q’=d×g+c×g=(d+c)×g=s×g
として再配置され得る。ここで、s=d+cは、新しく生成された公開キーQ’に関連する秘密キーである。この新しい公開/秘密キー対の特徴は、送り手及び受け手の両方がQ’を決定可能であるが、受け手しか、関連する秘密キーsを知らないことである。
●ステルスアドレスの場合に、送り手は、自身の公開キーを直ぐには送らず、代わりに、新しい公開キーQ’へファンドを送り、値Pが置かれるOP_RETURNトランザクション出力を含める。
●受け手は、それらのトランザクションのOP_RETURN出力の夫々に含まれるデータがPであると推測し、c=H(d×P)の共有秘密を計算する。検討中のトランザクションが公開キーQ+(c×g)によって生成されるアドレスへの支払いも有する場合に、そのアドレスのための秘密キーはd+cである。受け手のみが、そのアドレスにあるビットコインを使用する能力を有している。これは、d及びcの両方が受け手によって知られており、他者には一般的に知られていないからである。
本文書は、ビットコインユーザによって所有されている入力及び出力アドレスの間のリンクが不明りょうにされるようにブロックチェーン上で複数の独立したCoinJoinトランザクションをブロードキャストすることを有する、アキュムレータに基づくマルチCoinJoinトランザクションサブミッション(Accumulators-based Multi-CoinJoin Transaction Submission,AMCT)について記載する。プロトコルは、参加者の組と、参加者に関する情報を凝縮するよう構築された集積木と、参加者の情報を受け取り、それを使用して、参加者と共有される秘密、並びに局所的及び大域的ダイジェストなどの、集積木から導出された値を構成するディーラーとを含む。参加者は、彼らの出力アドレスをシャッフルし、シャッフルされた出力アドレスの組は、1つ以上のCoinJoinトランザクションを生成するために使用されるサブセットに分けられる。AMCTプロトコルは、参加者が、出力アドレスのサブセットと交わらないサブグループに分けられることを可能にする。例えば、参加者は、2つの異なったCoinJoinトランザクションに含まれる自身の出力及び入力アドレスを有してよい。更に、CoinJoinトランザクションは、攻撃者が容易にそれらを結びつけることを防ぐように生成され得る。様々な例で、集積木から導出された値は、CoinJoinトランザクションがブロックチェーン上でブロードキャストされる前に参加者によって行われたデポジットをロック(し、後にアンロック)するために使用される。ディーラーは、1人以上の参加者が彼らの属するサブグループに関連するCoinJoinトランザクションに署名しない場合に、補償されるよう他の参加者によって必要とされる情報を公開することによって、セーフガードの役割を担ってよい。
実施形態において、ディーラーは、信頼できる第三者の役割を担う。参加者は、n人の参加者の組Sであり、ここで、nは、2つの整数の積、n=N×mとして表現可能であり、Nは、組S内のサブグループ(S,・・・,S)の数であり、mは、所与のサブグループ内の参加者の数である。参加者の各サブグループSは、ビットコインブロックチェーン上で1つのCoinJoinトランザクションT をブロードキャストすることに関与する。
各参加者は、それらのCoinJoinトランザクションに含まれるべき1つの入力及び1つの出力を有している。参加者は、一般的に、出力アドレスでのファンドの受け手ではない。すなわち、参加者は、そのアドレスの1つから、それが秘密鍵を所有している新しいアドレスへファンドを動かそうと試みていない。この場合に、ファンドは、受け手の署名によりアンロックされ得る。
各CoinJoinトランザクションは、m個の入力及びm個の出力を含み、それらの夫々は、xビットコイン(BTC)を支出(アンロック)し又は受け取る。集積木T(ε)は、n人の参加者によって供給された要素(e,・・・,e)を格納するようディーラーによって構築される。
集積木の構造は、組Sの間のサブグループ内の参加者の分布を反映している。すなわち、mは、集積木の最下層でのノードごとのリーフの数であり、Nは、最後から二番目の層でのノードの数である(N個の親ノードは、夫々m個のリーフを有する)。
参加者の出力アドレスは、シャッフルされ、シャッフルされた出力アドレスの最終的な組は、m個の出力アドレスのN個のサブセットに分けられる。ディーラーは、出力アドレスのサブセットごとにCoinJoinトランザクションを生成する。次いで、ディーラーは、CoinJoinトランザクションを参加者Sのサブグループへ、彼らの各々の入力及び署名の付加のために送る。様々な例で、参加者は、その入力及びその出力を、異なったCoinJoinトランザクションに含まれている。追加の例では、ディーラーは、トランザクションのサイズに対する制限を解消するために、単一の大きいトランザクションを、複数の、より小さいトランザクションに分けてよい。
ブロックチェーンでの包含のためのCoinJoinトランザクションの提示の前に、各参加者は、yBTCのデポジットをコミットする。デポジットは、P2SHアドレスへ送られ、2つの顕著な方法においてアンロックされ得る:
− 所与の時点ΔTより前に、全てのCoinJoinトランザクションがブロックチェーンに成功裏に含まれる場合に、集積木から導出された数量を使用する。
− 所与の時点ΔTより前に、全てのCoinJoinトランザクションがブロックチェーンに成功率に含まれない場合に、ディーラーによって示された数量を使用する。
N個のCoinJoinトランザクションは独立してかつ準同時にサブミットされるべきであるが、参加者は、その入力を、そのサブグループに割り当てられているCoinJoinトランザクションに加えず、従って、そのトランザクションを不完全なまま/妥当でないままとすることが起こり得る。結果として、サブグループ内の参加者は、彼らの入力をアンロックしない。その間に、ブロックチェーンでの包含のために彼らのCoinJoinトランザクションに署名しサブミットした他のサブグループ内の参加者は、ブロックチェーン上でブロードキャストされなかったトランザクションに彼らの出力アドレスが含まれる場合に、彼らの入力を費やしながら、出力アドレスでコインを受け取らないリストがある。参加者にその役割を果たすよう、つまり、その入力をCoinJoinトランザクションにおいて付加し署名するよう強制することは困難又は不可能なことがある。従って、いくつかの実施形態で、自身の入力を費やしながら、他の参加者の不作法によりコインを受け取らなかった参加者を補償するメカニズムが提供される。CoinJoinトランザクションをブロックチェーンに含めることに成功しなかった参加者は、必ずしも悪意があるとは限らない。例えば、参加者は、プロトコル中に意図せず接続を失う可能性がある。また、1人の参加者がm個の入力/出力を有する1つのCoinJoinトランザクションのプロトコルをドロップした場合でさえ、トランザクションが失敗する可能性がある点に留意されたい。従って、悪意のある参加者と同じサブグループに属している参加者は、他の参加者の不作法に対して罰せられるべきではなく、またその恩恵を受けるべきでもない。
AMCTプロトコルは、以下で詳細に記載される。集積木の構成と、参加者とディーラーとの間の情報の交換とについて論じる。それから、出力アドレスをシャッフルするプロセスについて記載する。それから、参加者のデポジットトランザクションの生成及び提示について論じる。次の項は、CoinJoinトランザクションの生成及び提示と、CoinJoinトランザクションの全て又は一部の提示後のリターン/補償請求とについて説明する。
本文書にわたって、実施形態は、2人の参加者の2つのサブグループに分けられた4人の参加者に関する簡単な場合を参照して記載される。参加者のランダムな順序(又はシーケンス)U,U,・・・,Uを考える。ここで、n=N×mであり、Nは、組内のサブグループの数であり、mは、所与のサブグループ内の参加者の数である。一例において、n=4、N=m=2である。
各参加者Uは、楕円曲線上のランダムな点eを選択し、そのハッシュe’=h(e)をディーラーへ送る。
Figure 2021531689
は衝突耐性ハッシュ関数である。ディーラーは、秘密s(トラップドア情報)を選択し、次の通りに集積木の大域的ダイジェストを再構成する:

d=ψ(r)=g(e’1+s)(e’2+s)・・・(e’n+s)
トラップドア情報sは、参加者に未知である。しかし、数量g,gs2,・・・,gsnは、公にされる。
ディーラーは、局所的ダイジェストψ(v),・・・,ψ(v)を計算する、ここで、v(i∈[1,N])は、集積木の最後から二番目の層にある親ノードの1つである。局所的ダイジェストも大域的ダイジェストも、参加者へ送られない。
ディーラーは、ダイジェストdを秘密キーとして使用する。実施形態において、大域的ダイジェストは楕円曲線の点であるから、ディーラーは、それから導出された数vを選択する。例えば、vは、dの1つの座標(x又はy)、若しくはその2つの連結(和)、又はハッシュ関数が入力として楕円曲線からの点をとり、Z 場の数を出力する関数(参加者には未知)である場合に、大域的ダイジェストのハッシングにより得られる数、であることができる。
ディーラーは、集積木の大域的ダイジェストに対応する楕円曲線内の点のx座標を使用する。このようにして、v=xが、秘密キーとして、Qが、関連する公開キーQ=v×g(gは、楕円曲線の生成元である)として定義される。
ディーラーは、Qを参加者に利用可能にする。
各参加者Uは、ランダムな秘密キーyを選択し、対応する公開キーP=y×gを公開する。
参加者はまた、Z 場で、彼らがディーラーへ非公開で送る乱数(ソルト)も選択する(例えば、関連する暗号解読キーがディーラーによってのみ知られている参加者が、ディーラーによって公にされた暗号キーを用いて、彼らの乱数をディーラーへ送ってもよい)。ωは、参加者Uによって選択されたソルトとして表され、秘密キーと見なされ得る。ディーラー及び参加者Uの両方が、関連する公開キーW=ω×gを推定することができる。この公開キーは公にされない。
本文書では、図3に表されているような、2人の参加者(m=2)の2つのサブグループ(N=2)に分けられたn=4人の参加者に関する簡単な例を用いて、様々な例が説明されている。
図3は、実施形態において、各リーフノードが関連する要素e(i=1,・・・,4)を有している集積木の例を表す。示される例では、集積木は、4つの要素及び3つのレベルを有しており、各中間ノードは、2つの子ノードを有している。表されている例では、集積木は、根ノードr302を有している。根ノードr302は、2つの子ノード、すなわち、第1中間ノードa304及び第2中間ノードb306を有している。2つの中間ノードの夫々は、2つの子ノードを有しており、それらの夫々が集積木のリーフノードである。第1中間ノードa304は、第1子ノードe308及び第2子ノードe320を有している。第2中間ノードb306は、第1子ノードe312及び第2子ノードe314を有している。
最初の2人の参加者(U,U)は局所的ダイジェストψ(a)を共有し、一方、参加者(U,U)の第2サブグループは局所的ダイジェストψ(b)を共有する。この例の大域的ダイジェストは、次の関係:d=ψ(r)=g(h(ψ(a))+s)(h(ψ(b))+s)によって与えられる。
図4は、実施形態において、マルチCoinJoinトランザクションの部分として実行される出力シャッフルの例を表す。実施形態において、参加者によって与えられた出力アドレスの組をシャッフルするプロセスは、2つのフェーズ、すなわち、暗号化フェーズ及び暗号解読フェーズを含む。
暗号化フェーズにおいて、各参加者Uは、対応する公開/秘密キー対(E,k)を有し、ここで、E=k×gである(gは、プロトコルによって選択された楕円曲線の生成元である)。公開キーE,E,・・・,Eはディーラーへ送られ、ディーラーは、それらを他の参加者に対して、参加者U,U,・・・,Uの順序が彼らに知られないように利用可能にする。例えば、ディーラーは、公開キーを、順序付きリスト又はアレイの形で利用可能にし得る。
暗号化フェーズにおいて、第1参加者Uは、第1参加者の公開キーEにより第1参加者の出力アドレスOを暗号化する。結果として得られた暗号化された出力アドレスは、“シャッフルされた出力の組”(set of shuffled outputs,SSO)を有する。
は、次の参加者Uの公開キーであるEでSSOを暗号化し、暗号化されたSSOをUへ転送する。次いで、Uは、kを用いてSSOを暗号解読し、Eを用いてUの出力アドレスOを暗号化し、この新たに暗号化されたアドレスをSSOに加える。Uは、SSO内の暗号化されたアドレスの順序をシャッフルし、シャッフルされたSSOをEで暗号化し、それから、暗号化されたSSOを第3の参加者Uへ転送する。このプロセスは、Uに達するまで続く。ここで、nは、プロトコルにおける参加者の総数である。実例では、例を簡単にするために、n=4が選択される。しかし、一般的に、nの数は、よりずっと大きい方が好ましい。最後の参加者の暗号化された出力アドレスがSSOに加えられた後、Uは最後のシャッフルを実行し、SSOをEで暗号化し、SSOを最初の参加者Uへ送り返す。
図4に表されている例では、第1参加者402は、第1参加者の出力アドレス412を暗号化し、アドレスを、シャッフルされた出力の第1の組410に加える。第1参加者402は、第2参加者404の公開キーを用いて、シャッフルされた出力の第1の組410を暗号化し、シャッフルされた出力の暗号化された第1の組を第2参加者404へ供給する。
第2参加者404は、第2参加者の出力アドレス418を暗号化し、アドレスを、第1参加者の出力アドレス416を含むシャッフルされた出力の第2の組414に加える。第2参加者404は、第3参加者406の公開キーを用いて、シャッフルされた出力の第2の組414を暗号化し、シャッフルされた出力の暗号化された第2の組を第3参加者406へ供給する。
第3参加者406は、第3参加者の出力アドレス426を暗号化し、アドレスを、第1参加者の出力アドレス422及び第2参加者の出力アドレス424を含むシャッフルされた出力の第3の組420に加える。第3参加者406は、第4参加者408の公開キーを用いて、シャッフルされた出力の第3の組420を暗号化し、シャッフルされた出力の暗号化された第3の組を第4参加者408へ供給する。
第4参加者408は、第4参加者の出力アドレス436を暗号化し、アドレスを、第1参加者の出力アドレス430、第2参加者の出力アドレス432、及び第3参加者の出力アドレス434を含むシャッフルされた出力の第4の組428に加える。第4参加者408は、第1参加者402の公開キーを用いて、シャッフルされた出力の第4の組を暗号化し、シャッフルされた出力の暗号化された第4の組を第1参加者402へ供給する。
図5は、実施形態において、マルチCoinJoinトランザクションの部分として実行される暗号解読動作の例を表す。実施形態において、暗号解読フェーズの部分として、SSOは、n人の元の参加者の夫々へルーティングされる。最初の暗号化シャッフルループの終わりに、第1参加者U 502は、シャッフルされた出力の第1の組540を持っている。シャッフルされた出力の第1の組540は、第1の暗号化された出力アドレス542、第2の暗号化された出力アドレス544、第3の暗号化された出力アドレス546、及び第4の暗号化された出力アドレス548を含む。U 502は、SSOを暗号解読し、SSOから第1参加者の暗号化された出力アドレス542を探し、関連する秘密キーkを用いてアドレスを暗号解読する。
その時点で、第1参加者は、SSOにおけるその出力アドレスの新しい位置を知る。暗号解読フェーズ中に、参加者は、彼らの出力アドレスの位置をチェックし、それにより、彼らは、それを含むCoinJoinトランザクションをブロードキャストすることにどのサブグループが関与しているかを後に知る。しかし、参加者は、他の参加者の出力の位置を知らないままである。
そのために、ディーラーは、一時的な(ephemeral)公開/秘密キー対(E,k)を生成し、公開キーを参加者に利用可能にする。参加者は、Eを使用して、シャッフルされたSSO内の彼らの出力アドレス(図5では、組510のアドレス512、組520のアドレス522、524、組530のアドレス532、534、536、及び組540のアドレス542、544、546、548として表されている)を暗号化する。
暗号解読フェーズが進むにつれて、第1参加者は、その出力アドレスを、関連する秘密キーkを用いて暗号解読し、OをEで再暗号化する。次いで、Uは、新しいSSOを第2参加者の公開キーPで暗号化し、第2の暗号化された組510をU 504へ転送する。第2の暗号化された組510は、第1の暗号化された出力アドレス512、第2の暗号化された出力アドレス514、第3の暗号化された出力アドレス516、及び第4の暗号化された出力アドレス518を含む。第2参加者は、kを用いてSSOを暗号解読し、第2参加者の出力アドレス514を見つけ、それをkで暗号解読し、それをEで再暗号化する。次いで、U 504は、新しいSSOを公開キーPで暗号化し、第3の暗号化された組520をU 506へ転送する。第3の暗号化された組520は、第1の暗号化された出力アドレス522、第2の暗号化された出力アドレス524、第3の暗号化された出力アドレス526、及び第4の暗号化された出力アドレス528を含む。第3参加者は、kを用いてSSOを暗号解読し、第3参加者の出力アドレス514を見つけ、それをkで暗号解読し、それをEで再暗号化する。次いで、U 506は、新しいSSOを公開キーPで暗号化し、第4の暗号化された組530をU 508へ転送する。第4の暗号化された組530は、第1の暗号化された出力アドレス532、第2の暗号化された出力アドレス534、第3の暗号化された出力アドレス536、及び第4の暗号化された出力アドレス538を含む。様々な例で、プロセスは、各参加者がその暗号化された出力アドレスをSSOで見つけ、それをその対応する暗号解読(及びEで暗号化)された値で置き換えるまで続く。
最後の参加者508は、SSOをEで暗号化し(それをEで暗号化する代わりに)、暗号化されたSSOをディーラーへ送る。それから、ディーラーは、暗号化された出力の組を持っている。ディーラーのみが秘密キーkを知っているので、組及びその中の各出力アドレスを暗号解読することができる。
その時点でのSSO内の出力アドレスの入れ替えは、出力がCoinJoinトランザクションに含まれている最終的な順序を表す。
図6は、実施形態において、マルチCoinJoinトランザクションの部分として実行される出力アドレスの並べ替えの例を表す。出力アドレスが上述されたようにシャッフルされた後、各参加者は、シーケンス内の彼らの最初の位置と、彼らの出力アドレスの最終的な位置とを知っている。図5は、4人の参加者の例における出力アドレスのとり得る最終的な順序を表す。この例では、第3参加者Uは、その出力アドレスがSSO内の最初の要素であることを知っている。結果として、Uは、その出力アドレスが最初のCoinJoinトランザクションに含まれることになると知る。
この例では、夫々2人の参加者の2つのサブグループに分けられた4人の参加者の組が考えられている。従って、ディーラーは、2つのCoinJoinトランザクション、すなわち、図6に表されているT 602及びT 604を生成すると期待される:
− 第1トランザクションT 602は、第3及び第1参加者(夫々U及びU)の出力アドレス606を含む。
− 第2トランザクションT 604は、第2及び第4参加者(夫々U及びU)の出力アドレス608を含む。
ディーラーは、これら2つのCoinJoinトランザクションを生成し、それらを参加者へ送る。参加者は、彼らの入力を付加し、トランザクションに署名し、それらを、ブロックチェーンに含めるためにサブミットする。ディーラーが上記のトランザクションを参加者へ送る前に、各参加者は、プロトコルが全てのCoinJoinトランザクションのブロードキャストの成功で終わる場合に後に再請求可能であるいくらかのコインを彼らがアンロックするトランザクションを生成しブロードキャストする。実施形態において、第1参加者は第1入力610をコミットし、第2参加者は第2入力612をコミットし、第3参加者は第3入力614をコミットし、第4参加者は第4入力616をコミットする。プロトコルが時期尚早に終わる(全てのCoinJoinトランザクションがブロードキャストされるわけではない)場合に、補償メカニズムが考えられる。
実施形態において、プロトコルは、プロトコルに関わっているトランザクションがリンク不可能であることを確実にする。これは、攻撃者が、ネットワークへ送られたCoinJoinトランザクションを容易にリンクすることができないことを意味する。その上、デポジットトランザクションとCoinJoinトランザクションとの間にリンクは確立されない。従って、集積木から導出された数量に加えて、ディーラーと参加者との間の共有秘密を用いて、後述されるように、P2SHアドレスが生成される。
公に利用可能にされた情報と、ディフィー・ヘルマンキー共有プロトコルとを用いて、ディーラーは、参加者Uごとに秘密cを構成し、当該参加者と共有する:

=H(v×P)=H(Q×y

ここで、Hは、入力として楕円曲線からの点をとり、Z 場の数内の数を出力するハッシュ関数(参加者に知られている)である。
参加者は、新しい公開キーを生成するために、この共有秘密を使用する:

=P+Q+c×g

=s×g

なお、s=y+v+cである。sは、Bに関連する秘密キーである。P及びQは公に知られているが、一般的に、ディーラー及び参加者Uしか共有秘密cを知らない。結果として、ディーラー及び参加者Uのみが公開キーBを知っており、一方、誰(参加者又はディーラー)も、関連する秘密キーsを知らない(vはディーラーによってのみ知られており、yは参加者Uによって秘密にされている)。ディーラーは、公開キーBを用いて、Uによって生成されたビットコインアドレスの妥当性を検証することができる。このアドレスへ送られたファンドをアンロックすべく、参加者Uは、秘密キーsを再構成するためにv(すなわち、集積木の大域的ダイジェスト)を計算する必要がある。これはまた、参加者のファンドを盗もうと試みる悪意あるディーラーに対して参加者を守る。
各参加者Uは、乱数ωを選択しディーラーへ送る。SSO内の出力アドレスの最初及び最終の順序を知っているので、参加者は次の公開キーを生成する:

i→j=W+P=ci→j×g

なお、ci→j=ω+yである。ここで、iは、出力アドレスの最初のインデックス(シーケンス内の参加者Uの実際の位置)に対応し、jは、シャッフル後の出力のインデックスに対応する。Pは、参加者Uに利用可能にされた公開キーである。ディーラー及び参加者Uの両方が公開キーθ及びPを知っており、このことは、公開キーCi→jから導出された如何なるアドレスの妥当性も検証することをディーラーに可能にするが、ディーラー及び参加者のどちらも、関連する秘密キーci→jを知らない。実際に、プロトコルのその時点で、誰も秘密キーci→jを知らない。最初の部分(ω)は、ディーラー及び参加者Uによって知られており、一方、第2の部分(y)は、参加者Uによってしか知られていない。ディーラーがωを公開すべきであったならば、そのとき初めて、参加者Uは、秘密ci→jを計算し、Ci→jから導出されたアドレスへ送られたファンドをアンロックし得る。
図7は、実施形態において、マルチCoinJoinトランザクションの部分としてデポジットのために参加者によって生成されたロッキングスクリプト700の例を表す。
妥当性がディーラーよって検証される参加者Uごとに、2つの新しい公開キーB702及びCi→j706が生成される:
− B=s×g(なお、s=y+c)。参加者Uのみが秘密キーsを知っている。
− Ci→j=ci→j×g(なお、ci→j=ω+y)。ディーラー及び参加者Uの両方が公開キーCi→jを知っている。参加者Uは公開キーCi→jを知らない点に留意されたい。しかし、(ある時点で)ディーラーがωiを公開すべきであったならば、その場合に、参加者U(のみ)は、秘密ci→jを計算し得る。
これら2つの公開キーを用いて、参加者Uは、図7に示されるように、次のロッキングスクリプト700を生成する。スクリプトは、ブロックチェーンでの包含のためのCoinJoinトランザクションの完成及び提出の前に、各参加者によって作られたyBTCのデポジットをアンロックするために使用される。
ロッキング時間パラメータは、オペコードOP_CHECKSEQUENCEVERIFYを用いて定義される。ビットコインスクリプト記述システムのためのこの新しいオペコード(OP_CHECKSEQUENCEVERIFY)は、BIP112で導入された。それは、使用されている出力の経過時間に基づいて、スクリプトの実行経路が制限されることを可能にする。
ΔT704は、ブロックチェーン上のトランザクションの確認後の期間に対応し、その間、出力は使用不可能である(このUTXOをアンロックしようとする如何なるトランザクションも、ブロック内の使用済み出力の経過時間又は特定の時間スパンまでマイニングされない)。
スクリプト700は、参加者UiによってブロードキャストされたデポジットトランザクションD のUTXOをアンロックするために2つのオプション、すなわち、秘密sに関連する署名を供給することによる任意の時点、又は秘密ci→j706に関連する署名供給することによるΔT704の後、を提示する。
図8は、実施形態において、マルチCoinJoinトランザクションにおいて4人の参加者によって生成、署名、及びブロードキャストされたデポジットトランザクション800の例を表す。デポジットトランザクション800は、ブロックチェーンに含めるためにサブミットされる。ブロックチェーンに含まれると、ディーラーは、部分的なCoinJoinトランザクションを参加者へ、ブロードキャスト前の彼らの入力の包含及び署名のために転送することができる。
図8に表されている実施形態は、第1デポジットトランザクション802、第2デポジットトランザクション804、第3デポジットトランザクション806、及び第4デポジットトランザクション808を示す。各デポジットトランザクションは、対応する参加者によってサブミットされる。第1デポジットトランザクション802は、yBTCをコミットする第1入力810を含む。第2デポジットトランザクション804は、yBTCをコミットする第2入力812を含む。第3デポジットトランザクション806は、yBTCをコミットする第3入力814を含む。第4デポジットトランザクション808は、yBTCをコミットする第4入力816を含む。
実施形態において、各デポジットトランザクションは、yBTCを3つの条件のうちの1つへ支払う出力を含む。第1デポジットトランザクション802は、第1出力スクリプト818を含む。第2デポジットトランザクション804は、第2出力スクリプト820を含む。第3デポジットトランザクション806は、第3出力スクリプト822を含む。第4デポジットトランザクション808は、第4出力スクリプト824を含む。図8に示される実施形態では、各デポジットトランザクションの出力は、3つの方法で請求され得る。出力は、成功したCoinJoinトランザクションの部分として特定の参加者によって請求されてよく、出力は、特定の量の時間ΔTの後にデポジッタ(depositor)によって請求されてよく、あるいは、出力は、ΔTよりも長い第2時間量の後にデポジッタによって請求されてよい。
図8に示される実施形態では、デポジットトランザクションにおいてUTXOをアンロックするための第3のオプションが含まれており、このオプションは、時間スパンΔT’>ΔTの後に利用可能である。第3のオプションは、(例えば、ディーラーに対する保護を提供するために、)プロトコルが時期尚早に終わる場合に特定の時点後に参加者が彼らのファンドを償還することを可能にするセーフガードである。この第3のオプションでは、参加者は、(ΔT’後に)ファンドがアンロックされるために、その署名を供給する。図7のスクリプトは、この第3のオプションを含めるよう変更され得る。
ブロックチェーンに含まれると、ディーラーは、部分的なCoinJoinトランザクションを参加者へ転送する。
図9は、実施形態において、マルチCoinJoinトランザクションにおいて参加者によって生成及び署名された2つのCoinJoinトランザクションの例を表す。
この例で、ディーラーは、SSOにおいて与えられた出力アドレスを含めるとともに、OP_RETURN演算子を使用してトランザクションに余分の情報を含めながら、CoinJoinトランザクションT 902及びT 912を生成する。第1CoinJoinトランザクションは、第1入力904、第2入力906、第1出力908、及び第2出力910を含む。第2CoinJoinトランザクションは、第1入力914、第2入力916、第1出力918、及び第2出力920を含む。
集積木内の全ての要素のハッシュ及びトラップドア情報sを知っているので、ディーラーは、集積木の局所的ダイジェスト(図3のψ(a)及びψ(b))を計算する。ディーラーは、参加者のサブグループの局所的ダイジェストを、サブグループ内の参加者がブロードキャスト前に完了する必要があるCoinJoinトランザクション内の余分の明白にアンロック可能な出力として付加する。
次いで、ディーラーは、各不完全なCoinJoinトランザクションを各サブグループ内の第1参加者へ送る。例として、T がUへ送られ、T がUへ送られる。所与のサブグループ内の参加者は、協働して、彼らの各々の要素のハッシュを交換してよく、それにより、彼らは、彼らの共通の局所的ダイジェストを計算し、ディーラーによってOP_RETURNスクリプトに置かれたデータを検証する。
サブグループ内の第1参加者は、彼らの入力を付加し、フラグSIGHASH_ALL|ANYONECANPAYを用いてトランザクションに署名する。次いで、それは、部分的に署名されたトランザクションを次の参加者へ転送する。これは、サブグループ内の最後の参加者がCoinJoinトランザクションに付加及び署名し、完成したCoinJoinトランザクションをブロックチェーン上でブロードキャストするまで続く。
図10は、実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによって実行される結果として、マルチCoinJoinトランザクションを実行するプロセスの例を表す。フローチャートは、ブロック1002から開始するプロセス1000を表す。ブロック1004で、ディーラーは、CoinJoinトランザクションを生成するための集積木を生成し、参加者は、ディーラーとのキー共有を実行する。ブロック1006で、参加者は、CoinJoinトランザクションのための最終的な順序付け及びグループ分けを決定するよう彼らの出力アドレスをシャッフルする。ブロック1008で、各参加者は、多数のBTCをコミットするデポジットトランザクションを生成する。
決定ブロック1010で、ディーラーは、全ての参加者が彼らのデポジットをブロックチェーンへコミットしたかどうかを判定する。全ての参加者が彼らのデポジットをブロックチェーンへコミットしていない場合には、実行はブロック1012で停止し、CoinJoinプロセスは中止される。全ての参加者が彼らのデポジットをブロックチェーンへコミットしたとディーラーが決定する場合には、実行はブロック1014へ進み、ディーラーはCoinJoinトランザクションを生成し、CoinJoinトランザクションは、必要な署名を得るために参加者の間でルーティングされる。ブロック1016で、ディーラーは、トランザクションが成功裏に署名されブロックチェーンへコミットされたかどうかを判定し、一部又は全てのトランザクションで問題があった場合には、ディーラーは、フィールドトランザクションの適切な参加者に返還又は補償する動作を実行する。
実施形態において、時点Tは、全てのCoinJoinトランザクションがその時点に達する前にブロックチェーンに含まれるべきであるように、ディーラーと参加者との間で取り決められる。その時点に達すると、N個全てのCoinJoinトランザクションがブロックチェーンに含まれることになるか、又はそうではない。
場合1:Tの前に、N個全てのCoinJoinトランザクションがブロックチェーンに含まれる。
CoinJoinトランザクションは全て、Tより前にブロックチェーンに含まれており、参加者は、各OP_RETURNスクリプトのデータを収集する。次いで、参加者は、集積木の大域的ダイジェストを計算することができる。実際に、2つのCoinJoinトランザクションのみがブロードキャストされる例では、大域的ダイジェストは、次のように、局所的ダイジェストの関数として表現され得る:

d=ψ(r)=g(h(ψ(a))+s)(h(ψ(b))+s)
Figure 2021531689
は公にされていることを思い出されたい。
参加者Uは、この場合に、s=v+yを計算することができる。ここで、vは、大域的ダイジェストから導出される。参加者Uは、先立ってブロードキャストしたデポジットトランザクションD において送られたファンドをアンロックすることができる。
場合2:Tの前に、N個全てのCoinJoinトランザクションがブロックチェーンに含まれていない。
何らかの理由により参加者が、そのサブグループに関連したCoinJoinトランザクションにその入力を付加して署名しない場合に、そのトランザクションは決してブロックチェーンに含まれない。
結果として、参加者は、集積木の大域的ダイジェストを再構成することができないので、場合1のように彼らのデポジットで使用されているファンドをアンロックすることができない。
この場合に、参加者は、4つのカテゴリに入る。
カテゴリ1:自身の入力を使用しており(彼らが署名したCoinJoinトランザクションがブロックチェーンに含まれている)、自身の出力アドレスでコインを受け取った(彼らの出力アドレスが、ブロックチェーンに含まれているCoinJoinトランザクションの1つに含まれている)参加者。そのような参加者は、一部又は全てのCoinJoinトランザクションのブロードキャスト後に−yBTCの差引残高を有している。
カテゴリ2:自身の入力を使用したが、自身の出力アドレスでコインを受け取っていない参加者。そのような参加者は、一部のみのCoinJoinトランザクションのブロードキャスト後に−x−yBTCの差引残高を有している。
カテゴリ3:自身の入力をアンロックしなかった(彼らが署名した又は署名しなかったトランザクションが送られなかったか又は妥当でなかったために、ブロックチェーンに含まれていない)が、自身の出力アドレスでコインを受け取る参加者。そのような参加者は、一部のみのCoinJoinトランザクションのブロードキャスト後にx−yBTCの差引残高を有している。
カテゴリ4:自身の入力をアンロックしておらず、自身の出力アドレスでコインを受け取ってもいない参加者。そのような参加者は、CoinJoinトランザクションの一部のブロードキャスト後又は全くCoinJoinトランザクションがブロードキャストされなかった後、−yBTCの差引残高を有している。
場合1は、全ての参加者がカテゴリ1であるシナリオに対応する。
ディーラーは、参加者がカテゴリ2に入る場合に、参加者が彼らのデポジットを再請求し、場合によっては補償されるのを助けるよう、時間窓[T,ΔT]を有している。
ディーラーは、成功裏にブロックチェーンに含まれているCoinJoinトランザクションにおいて出力アドレスが具現されている参加者のωの値の組を明らかにする。これは、CoinJoinトランザクションに自身の入力を付加し署名した参加者であって、カテゴリ2又は4に入る可能性がある者が正当に補償されることを可能にする。
次いで、残りの参加者は、時点t>ΔTで、彼らのデポジットトランザクションにおいて送られたファンドを、それらが補償フェーズ中に他の参加者によって使用されないままである場合に、償還することができる。
ディーラーは、時間ΔTが経過する前に、ωの値のサブセットを明らかにすべきである。実際に、1つを除いて全てのCoinJoinトランザクションがブロックチェーンに含まれる場合に、自身に割り当てられているCoinJoinトランザクションをブロードキャストしなかった悪意あるサブグループ内の一部又は全ての参加者は、全ての局所的ダイジェストを知っており、従って、各参加者のデポジットトランザクションで使用されているファンドをアンロックするのに必要な大域的ダイジェストを再構成することができる可能性がある。その場合に、悪意ある参加者が、そのグループに割り当てられているCoinJoinトランザクションにその入力を付加していないのに、他のCoinJoinトランザクションに含まれているその出力アドレスでコインを受け取るシナリオが想像され得る(カテゴリ3)。ΔTの後、そのデポジットトランザクションで送られたUTXOが既に請求されている場合を除いて、その局所的ダイジェストを知っている参加者は、大域的ダイジェストを再構成し、当該UTXOを収集することができる。
例えば、4人の参加者に基づく例において、第3参加者がT に署名しない場合を考える。
時点T<t<ΔTで、4人の参加者の差引残高は、次の通りである:
Figure 2021531689
次いで、ディーラーは、値の組{ω,ω}を明らかにする。これは、第1参加者が数量c3→1=y+ωを計算することを可能にし、一方、第2参加者は、C1→2=y+ωを計算する。従って、第1参加者は、D におけるUTXOをアンロックすることができ、一方、第2参加者は、D におけるUTXOをアンロックすることができる。
時点ΔT<t<ΔT’で、4人の参加者の差引残高は、次のように変化している:
Figure 2021531689
ΔT’が経過した後、残り2つのデポジットトランザクションD 及びD におけるUTXOは、それらの元の創作者によって使用され得る。第2及び第4参加者は、彼らのデポジットを再請求する。
時点t>ΔT’で、4人の参加者の差引残高は、次のように回復される:
Figure 2021531689
デポジットトランザクションごとに使用されるビットコインの量、すなわち、yBTCは、CoinJoinトランザクションで混合された量xBTCに極めて近いはずであり、それにより、参加者ごとの総差引残高は、CoinJoinトランザクションが全てブロードキャストされるか否かにかかわらずゼロに近い。CoinJoinトランザクション及びデポジットトランザクションに含まれているマイナーの異なる手数料に起因する小さい差が存在し得る。
図11は、実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによって実行される結果として、キー共有を実行し、マルチCoinJoinトランザクションでの使用のために集積木を構築するプロセスの例を表す。フローチャートは、各参加者コンピュータシステムUが要素eを生成し、要素のハッシュh(e)及びソルトwをディーラーへ送るブロック1102から開始するプロセス1100を表す。ブロック1104で、ディーラーは、トラップドア情報sを選択し、集積木を生成する。ブロック1106で、トラップドア情報sは、ディーラーによって秘密に保たれるが、ディーラーは、値がトラップドア情報sから導出された楕円曲線上の点である
Figure 2021531689
を公開する。ここで、nは、参加者の数又は木のリーフの数である。ブロック1108で、ディーラーは、公開キーQ=v×gを生成し、公開キーを公開する(v=x)。ブロック1110で、ディーラーは、公開キーE=k×gを公開する。ブロック1112で、各参加者Uは、彼らの公開キーE=k×g及びP=y×gを公開する。
図12は、実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによって実行される結果として、マルチCoinJoinトランザクションのために出力アドレスを再配置し、デポジットを生成し、CoinJoinトランザクションを生成するプロセスの例を表す。プロセス1200は、マルチCoinJoinトランザクションの各参加者が、図4に表されているように、彼らの出力アドレスのシャッフルを実行するブロック1202から開始する。ブロック1204で、シャッフルされた出力アドレスの組は、ディーラーコンピュータシステムへ供給される。ブロック1206で、ディーラーは、シャッフルされた出力アドレスを複数のサブセットに分け、各サブセットがビットコイントランザクションになる。ブロック1208で、各参加者は、上述されたように彼らの特定のロッキングスクリプトを生成し、そのデポジットトランザクションにおいてある量のビットコインをコミットして、マルチCoinJoinトランザクションに資金を出す。
ブロック1210で、ディーラーは、デポジットが全ての参加者によってコミットされたかどうかを判定する。全ての参加者が彼らのデポジットをコミットしていない場合には、タイムアウト後に、実行はブロック1212へ進み、マルチCoinJoinトランザクションは中止される。ブロック1214で、ディーラーコンピュータシステムは、サブセットごとにCoinJoinトランザクションを生成し、次いで、各トランザクションをそのサブセット内の第1参加者へ送る。ブロック1216で、参加者は、参加者間でトランザクションをルーティングし、各参加者はトランザクションに署名する。ブロック1218で、ディーラーは、何らかの変換又は補償が必要とされるかどうかを判定し、図13で記載されるように、関連する動作を実行する。
図13は、実施形態において、ディーラーコンピュータシステム及び1つ以上の参加者コンピュータシステムによって実行される結果として、マルチCoinJoinトランザクションのために返還及び補償を処理するプロセスの例を表す。プロセス1300は、ブロック1302から開始する。決定ブロック1304で、ディーラーコンピュータシステムは、全てのトランザクションがブロードキャストされブロックチェーンにコミットされたかどうかを判定する。全てのトランザクションがブロードキャストされている場合には、実行は決定ブロック1306へ進む。決定ブロック1306で、第1経過時間が経過していない場合には、実行は決定ブロック1304へ戻る。第1経過時間が経過している場合には、実行はブロック1308へ進み、参加者は大域的ダイジェストを決定し、デポジットにおいてコミットされたファンドをアンロックし、そして、実行はブロック1310へ進み、プロセスは完了する。
決定ブロック1304で、全てのトランザクションがブロードキャストされブロックチェーンにコミットされていないとディーラーコンピュータシステムが決定する場合には、実行はブロック1312へ進み、ディーラーは、出力アドレスが正常なデポジットに含まれているが、動作に問題があるサブセットに含まれている参加者のためのソルトを公開する。ブロック1314で、トランザクションにおいて差引残高がマイナスである参加者は、彼らの秘密キーを決定し、彼らのデポジットを回収するために支払われる如何なる補償もアンロックする。決定ブロック1316で、システムは、ブロック1318へ進む前に、第1経過時間よりも長い第2経過時間が経過するまで待機する。ブロック1318で、残りの参加者は、彼らのデポジットで使用されているファンドをアンロックし、そして、実行はブロック1310へ進み、プロセスは完了する。
図14は、本開示の少なくとも1つの実施形態を実施するために使用され得るコンピュータデバイス1400の実例となる略ブロック図である。様々な実施形態で、コンピュータデバイス1400は、先に例示及び記載されたシステムのいずれかを実施するために使用され得る。例えば、コンピュータデバイス1400は、データサーバ、ウェブサーバ、可搬型コンピュータデバイス、パーソナルコンピュータ、又は任意の電子計算デバイスとしての使用のために構成され得る。図14に示されるように、コンピュータデバイス1400は、1つ以上のプロセッサ1402を含む。実施形態において、プロセッサ1402は、バスサブシステム1404を介して多数の周辺サブシステムと通信するよう構成されかつそれらへ通信上結合されている。いくつかの実施形態で、それらの周辺サブシステムは、メモリサブシステム1408及びファイル/ディスク記憶サブシステム1410を有する記憶サブシステム1406と、1つ以上のユーザインターフェース入力デバイス1412と、1つ以上のユーザインターフェース出力デバイス1414と、ネットワークインターフェースサブシステム1416とを含む。そのような記憶サブシステム1406は、情報の一時的な又は長期の記憶のために使用されてよい。
いくつかの実施形態で、バスサブシステム1404は、コンピュータデバイス1400の様々なコンポーネント及びサブシステムが意図されたように互いと通信することを可能にするメカニズムを提供する。バスサブシステム1404は単一バスとして概略的に示されているが、バスサブシステムの代替の実施形態は多数のバスを利用する。いくつかの実施形態で、ネットワークインターフェースサブシステム1416は、他のコンピュータデバイス及びネットワークへのインターフェースを提供する。ネットワークインターフェースサブシステム1416は、いくつかの実施形態において、他のシステムからデータを受信しかつコンピュータデバイス1400から他のシステムへデータを送信するインターフェースとして働く。いくつかの実施形態で、バスサブシステム1404は、詳細、検索語、などのようなデータを送るために利用される。
いくつかの実施形態で、ユーザインターフェース入力デバイス1412は、キーボード;組み込みマウス、トラックボール、タッチパッド、若しくはグラフィクスタブレットなどの指示デバイス;スキャナ;バーコードスキャナ;ディスプレイに組み込まれているタッチスクリーン;音声認識システム、マイクロホンなどの音声入力デバイス;及び他のタイプの入力デバイス、などの1つ以上のユーザ入力デバイスを含む。
いくつかの実施形態で、コンピュータデバイス1400は、少なくとも1つのローカルクロック1424を含む。ローカルクロック1424は、いくつかの実施形態では、特定の開始日から発生したディックの数を表すカウンタであり、いくつかの実施形態では、コンピュータデバイス1400内に内蔵される。様々な実施形態で、ローカルクロック1424は、コンピュータデバイス1400のプロセッサ及びコンピュータデバイス1400に含まれているサブシステムにおいてデータ転送を特定のクロックパルスで同期させるために使用され、コンピュータデバイス1400とデータセンター内の他のシステムとの間で同期動作を協調させるために使用され得る。他の実施形態では、ローカルクロックは、プログラム可能なインターバルタイマである。

Claims (15)

  1. 出力シャッフルプロセスにおいて参加者コンピュータシステムの組を識別する圧縮情報を含むデータ構造を生成することと、
    シャッフルされた出力アドレスの組を前記参加者コンピュータシステムの組から取得することと、
    前記参加者コンピュータシステムの組に対応する寄与記録の組がブロックチェーンへコミットされていると決定することと、
    前記シャッフルされた出力アドレスの組及び前記データ構造に少なくとも部分的に基づいて複数のトランザクションを生成することと、
    前記複数のトランザクションを前記ブロックチェーンへサブミットすることと
    を有する、コンピュータにより実施される方法。
  2. 個々の参加者コンピュータシステムの組に関連する個別トランザクションが失敗したと第1タイムアウト後に決定することと、
    個別トランザクションが失敗したとの決定の結果として、前記個々の参加者コンピュータシステムの組が前記寄与記録の組からの補償を請求すること又は前記個々の参加者コンピュータシステムの寄与記録を再請求することを可能にする暗号情報を前記個々の参加者コンピュータシステムの組へ供給することと
    を更に有する、請求項1に記載のコンピュータにより実施される方法。
  3. 寄与記録の各組は、ロッキングスクリプトを含み、
    前記ロッキングスクリプトは、トランザクション出力が、前記シャッフルされた出力アドレスの組に基づいて個々の参加者コンピュータシステムによって請求されることを可能にする、
    請求項2に記載のコンピュータにより実施される方法。
  4. 前記ロッキングスクリプトは、入力が前記暗号情報を用いて再請求されることを可能にする、
    請求項3に記載のコンピュータにより実施される方法。
  5. 前記ロッキングスクリプトは、前記第1タイムアウトよりも長い第2タイムアウト後に入力が再請求されることを可能にする、
    請求項4に記載のコンピュータにより実施される方法。
  6. 前記ロッキングスクリプトは、OP_CHECKSEQUENCEVERIFY演算子を含む、
    請求項5に記載のコンピュータにより実施される方法。
  7. 前記シャッフルされた出力アドレスの組は、シャッフルされた出力アドレスの組を前記参加者コンピュータシステムの組の中の各参加者コンピュータシステムへルーティングされるようにすることによって、取得される、
    請求項6に記載のコンピュータにより実施される方法。
  8. 前記寄与記録の組の中の各寄与記録は、当該コンピュータにより実施される方法を促進するディーラーへ支払われるトランザクション手数料を含む、
    請求項7に記載のコンピュータにより実施される方法。
  9. 前記データ構造は、集積木であり、該集積木のリーフノードは、前記参加者コンピュータシステムの組を表し、参加者コンピュータシステムは、前記複数のトランザクションにおける入力アドレス及び出力アドレスを有する、
    請求項8に記載のコンピュータにより実施される方法。
  10. 個別トランザクションにおける参加者コンピュータシステムは、前記集積木の中間ノードの下の前記リーフノードに対応する、
    請求項9に記載のコンピュータにより実施される方法。
  11. 各参加者コンピュータシステムは、前記集積木の各リーフノードに関連する値のハッシュを供給する、
    請求項10に記載のコンピュータにより実施される方法。
  12. 前記トランザクションは、アセット混合トランザクションである、
    請求項11に記載のコンピュータにより実施される方法。
  13. 各参加者コンピュータシステムは、1つ以上のプロセッサと、該1つ以上のプロセッサによって実行される結果として、暗号通貨ウォレットアプリケーションを実施する命令を記憶しているメモリとを有するコンピュータシステムである、
    請求項12に記載のコンピュータにより実施される方法。
  14. システムであって、
    プロセッサと、
    前記プロセッサによる実行の結果として、当該システムに、請求項13に記載のコンピュータにより実施される方法を実行させる実行可能命令を含むメモリと
    を有するシステム。
  15. コンピュータシステムのプロセッサによって実行される結果として、前記コンピュータシステムに、請求項14に記載のコンピュータにより実施される方法を少なくとも実行させる実行可能命令が記憶されている非一時的なコンピュータ可読記憶媒体。
JP2021500693A 2018-07-23 2019-07-17 アセット混合のための、コンピュータにより実施されるシステム及び方法 Active JP7414795B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023222097A JP2024023991A (ja) 2018-07-23 2023-12-28 アセット混合のための、コンピュータにより実施されるシステム及び方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1811968.5 2018-07-23
GBGB1811968.5A GB201811968D0 (en) 2018-07-23 2018-07-23 Computer-implemented System and Method
PCT/IB2019/056105 WO2020021394A2 (en) 2018-07-23 2019-07-17 Computer-implemented system and method for asset mixing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023222097A Division JP2024023991A (ja) 2018-07-23 2023-12-28 アセット混合のための、コンピュータにより実施されるシステム及び方法

Publications (2)

Publication Number Publication Date
JP2021531689A true JP2021531689A (ja) 2021-11-18
JP7414795B2 JP7414795B2 (ja) 2024-01-16

Family

ID=63364392

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021500693A Active JP7414795B2 (ja) 2018-07-23 2019-07-17 アセット混合のための、コンピュータにより実施されるシステム及び方法
JP2023222097A Pending JP2024023991A (ja) 2018-07-23 2023-12-28 アセット混合のための、コンピュータにより実施されるシステム及び方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023222097A Pending JP2024023991A (ja) 2018-07-23 2023-12-28 アセット混合のための、コンピュータにより実施されるシステム及び方法

Country Status (6)

Country Link
US (1) US20220086006A1 (ja)
EP (1) EP3827550A2 (ja)
JP (2) JP7414795B2 (ja)
CN (1) CN112470423A (ja)
GB (1) GB201811968D0 (ja)
WO (1) WO2020021394A2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI772654B (zh) * 2019-06-21 2022-08-01 天宿智能科技股份有限公司 跨區塊鏈第三方仲裁履約保證系統及其方法
US11784800B2 (en) * 2020-02-14 2023-10-10 Google Llc Secure multi-party reach and frequency estimation
JP2021144571A (ja) * 2020-03-13 2021-09-24 富士通株式会社 情報処理装置、送信制御方法、および通信プログラム
JP7432443B2 (ja) * 2020-05-28 2024-02-16 株式会社日立製作所 移行支援システム、移行支援方法、およびノード

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201709518D0 (en) * 2017-06-15 2017-08-02 Nchain Holdings Ltd Computer-implemented system and method
US20190378162A1 (en) * 2018-06-06 2019-12-12 KR8OS, Inc dba Lucidity Systems and methods for enforcing advertising standards and digital advertisement measurements

Also Published As

Publication number Publication date
WO2020021394A2 (en) 2020-01-30
JP7414795B2 (ja) 2024-01-16
GB201811968D0 (en) 2018-09-05
EP3827550A2 (en) 2021-06-02
JP2024023991A (ja) 2024-02-21
US20220086006A1 (en) 2022-03-17
CN112470423A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
JP7420890B2 (ja) ブロックチェーンで実施されるイベントロック暗号化の方法及びシステム
JP7116090B2 (ja) ブロックチェーンネットワーク上のタイムリリース暗号化のためのコンピュータにより実施されるシステム及び方法
CN109937557B (zh) 用于信息保护的系统和方法
CN108781161B (zh) 用于控制和分发数字内容的区块链实现的方法
Ziegeldorf et al. Coinparty: Secure multi-party mixing of bitcoins
US20200127835A1 (en) Computer-implemented system and method providing a decentralised protocol for the recovery of cryptographic assets
CN110959163B (zh) 能够在多个存储节点上安全存储大型区块链的计算机实现的系统和方法
JP7414795B2 (ja) アセット混合のための、コンピュータにより実施されるシステム及び方法
JP7231630B2 (ja) ブラインド化された帰結選択のためのブロックチェーンで実装されるセキュリティー・システムおよび方法
US20220239501A1 (en) Knowledge proof
US20210336776A1 (en) Computer-implemented systems and methods for an accumulator-based protocol for the distribution of tasks across a computer network
Sui et al. AuxChannel: Enabling efficient bi-directional channel for scriptless blockchains
US20240137212A1 (en) Computer-implemented systems and methods for an accumulator-based protocol for the distribution of tasks across a computer network
Jeon et al. Blockchain-based fair and secure protocol for decentralized data trading.
Yu et al. An Efficient Consortium Blockchain Privacy Protection Scheme Based on Group Signatures and Bulletproofs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220819

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230925

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231107

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231228

R150 Certificate of patent or registration of utility model

Ref document number: 7414795

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150