IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特許7395701ブロックチェーン上でトランザクション・ミキシングを行うためのコンピュータで実施されるシステム及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-01
(45)【発行日】2023-12-11
(54)【発明の名称】ブロックチェーン上でトランザクション・ミキシングを行うためのコンピュータで実施されるシステム及び方法
(51)【国際特許分類】
   G06Q 20/38 20120101AFI20231204BHJP
   G06F 16/27 20190101ALI20231204BHJP
【FI】
G06Q20/38 310
G06F16/27
【請求項の数】 8
【外国語出願】
(21)【出願番号】P 2022185464
(22)【出願日】2022-11-21
(62)【分割の表示】P 2019555563の分割
【原出願日】2018-04-11
(65)【公開番号】P2023029856
(43)【公開日】2023-03-07
【審査請求日】2022-11-21
(31)【優先権主張番号】1706071.6
(32)【優先日】2017-04-18
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジョーゼフ,ダニエル
【審査官】岡北 有平
(56)【参考文献】
【文献】Jan Henrik Ziegeldorf, et al.,Coin Party: Secure Multi-Party Mixing of Bitcoins,[online],2015年03月,Pages 1-13,[検索日:2023年10月10日], <URL:https://doi.org/10.1145/2699026.2699100>
【文献】Tim Ruffing, et al.,Mixing Confidential Transactions: Comprehensive Transaction Privacy for Bitcoin,[online],2017年03月11日,Pages 1-22,[検索日:2023年10月10日], <URL:https://ia.crr/2017/238>
【文献】Tim Ruffing, et al.,P2P Mixing and Unlinkable Bitcoin Transactions,[online],2016年08月30日,Pages 1-15,[検索日:2023年10月10日], <URL:https://ia.cr/2016/824>
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 - 99/00
G06F 16/27
(57)【特許請求の範囲】
【請求項1】
ブロックチェーン上の複数のユーザの間のトランザクション・ミキシングに参加するためのコンピュータで実施される方法であって、当該方法は、
前記複数のユーザをランダム化して順序付きセットを実現するステップと、
複数のノードのうちの1つのノードを開始ノードとして選択するステップと、
前記開始ノードが、乱数kを選択し、決定論的なハッシュ関数を表すH(k)を計算するステップと、
H(k)を前記複数のユーザに配信するステップと、
支払いチャネルU→U(i+1) mod nを構築し、kの値を取得し、U(i+1) mod nに支払いを行う実行トランザクションTpayをブロックチェーン・ネットワークに送信するために各ユーザに与えられる時間量を表す時間値sを選択するステップと、
前記ブロックチェーン・ネットワークに送信される、ユーザに対する最初の支払いの開始時間の更なる時間値Sを選択するステップと、
全てのユーザをリンク付けするトランザクション・チェーンを確立するために、前記順序付きセット内のユーザの全てのペアの間で一方向の支払いチャネルを確立するステップと、を含む、
方法。
【請求項2】
前記複数のユーザのうちの任意のユーザが、他のユーザのコンセンサスを考慮して、前記時間s及び前記時間Sを選択する、請求項1に記載の方法。
【請求項3】
前記開始ノードは、前記時間s及び前記時間Sを選択する、請求項1に記載の方法。
【請求項4】
前記時間sは、秒又はブロック数のいずれかで表され、タイムスパンを表す、請求項1乃至3のいずれか一項に記載の方法。
【請求項5】
前記時間Sは、Unix時間又はブロック高さのいずれかで指定された時点を表す、請求項1乃至4のいずれかに記載の方法。
【請求項6】
前記一方向の支払いチャネルによって確立された前記支払いの方向は、UがU(i+1) mod nを支払うようなものであり、ここではU→U(i+1) mod nで表される、請求項1乃至5のいずれか一項に記載の方法。
【請求項7】
最終支払チャネルUn-1→Uは、時間S又はそれ以前に終了される、請求項1乃至6のいずれか一項に記載の方法。
【請求項8】
前記開始ノードは、既存の支払いチャネルUn-1→Uの前記トランザクションTpayを使って、kの値を明らかにする、請求項1乃至7のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ブロックチェーン・トランザクションに関し、より具体的には、3人以上のユーザを含むグループ内のブロックチェーン・トランザクションの交換に関する。本発明は、ビットコイン(BTC)ブロックチェーンでの使用に特に適しているが、これに限定されるものではない。
【背景技術】
【0002】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、コンセンサスベースのブロックチェーン及びトランザクション・チェーン技術、アクセス許可された台帳とアクセス許可されていない台帳、共有台帳、及びこれらのバリエーションが含まれる。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的でビットコインについて参照しているが、本発明はビットコイン・ブロックチェーンでの使用に限定されるものではなく、代替のブロックチェーン実施態様及びプロトコルが本発明の範囲内にあることに留意されたい。
【0003】
ブロックチェーンはピアツーピアの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックはトランザクションで構成される。各トランザクションは、ブロックチェーンシステムのユーザ同士の間でのデジタル資産の制御の移転をエンコードするデータ構造であり、少なくとも1つの入力と少なくとも1つの出力とを含む。各ブロックには以前のブロックのハッシュが含まれており、これらブロックは、一緒にチェーンで繋がれており、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成する。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタックベースのスクリプト言語を使用して記述される。
【0004】
トランザクションをブロックチェーンに書き込むためには、「検証」する必要がある。ネットワークノード(マイナー(採掘者):miners)は、各トランザクションが有効であることを確認する作業を行い、無効なトランザクションはネットワークから拒否される。ノードにインストールされたソフトウェアクライアントは、そのロック及びロック解除スクリプトを実行することにより、未使用(unspent)トランザクション(UTXO)でこの検証作業を行う。ロック及びロック解除スクリプトの実行がTRUEと評価された場合に、トランザクションは有効であり、トランザクションはブロックチェーンに書き込まれる。こうして、トランザクションをブロックチェーンに書き込むためには、そのトランザクションは、i)トランザクションを受信する第1のノードで検証する(トランザクションが検証されると、ノードはその検証したトランザクションをネットワーク内の他のノードに中継する);ii)マイナーによって構築された新しいブロックに追加する;iii)採掘する、すなわち過去のトランザクションの公的な台帳に追加する必要がある。
【0005】
ブロックチェーン技術は暗号通貨の実施態様の使用で最も広く知られているが、デジタル起業家は、ビットコインがベースとする暗号セキュリティシステムと、ブロックチェーンに保存して新しいシステムを実施できるデータとの両方の使用を模索し始めている。暗号通貨の領域に限定されない自動化されたタスク及びプロセスにブロックチェーンを使用できれば、非常に有利である。このようなソリューションによって、ブロックチェーンの利点(例えば、イベントの永続的な改ざん防止記録、分散処理等)を活用しながら、アプリケーションの用途を広げることができる。
【0006】
現在の研究の1つの分野は、「スマートコントラクト(smart contracts:契約の自動化)」の実装にブロックチェーンを使用することである。これらスマートコントラクトは、機械可読な契約又は同意の条件の実行を自動化するように設計されたコンピュータプログラムである。自然言語で記述される従来のコントラクト(契約)とは異なり、スマートコントラクトは、結果を生むために入力を処理できる規則を含むマシン実行可能プログラムであり、その結果、それらの結果に応じて動作を実行させることができる。
【0007】
ブロックチェーンに関連するもう1つの関心分野は、「トークン」(つまり、「カラードコイン」)を使用して、ブロックチェーンを介して実世界のエンティティを表現し且つそのエンティティで転送することである。潜在的に機密又は秘密のアイテムは、識別可能な意味や価値を有さないトークンで表すことができる。こうして、トークンは、実世界のアイテムをブロックチェーンから参照できるようにする識別子として機能する。
【0008】
広く公開された(open, public)台帳を提供するブロックチェーンは、利害関係者に、特定のデジタルコイン、デジタル資産、又はデジタルリソースの制御の一連のアドレスに亘る動きを追跡する機能を与える。例えば、通貨としてのビットコインの有効性及び成功は、ビットコインの実際の、知覚される(プロパティの有無による)代替可能性(fungibility)に結びついている。代替可能性は、あるユニットの商品と同じ種類の他のユニット商品との互換性プロパティである(http://www.investopedia.com/terms/f/fungibility.asp)。公開され、分散される台帳は、システムを信頼するための手段として機能する際に有用であるが、アドレス同士の間でトランザクションを追跡できるため、特定の履歴トランザクションに関連するデジタル資産を解析して相関させることができる。ビットコインの追跡不可能性(fungibility)に対処するために、セキュリティ及び匿名化ソリューションが開発された。多くの実世界の商取引は、法律上の理由、商業上の理由、又はその両方のために本質的に機密情報であるため、これは有益である。従って、ブロックチェーンの公共性にもかかわらず、ブロックチェーンシステムは、そのような商取引のセキュリティと機密性との両方を確保できなければならない。
【0009】
ビットコインの匿名性の研究には、ZeroCash(Ben-Sasson, E., et al. (2014), “Zerocash: Decentralized Anonymous Payments from …”, http://zerocash-project.org/media/pdf/zerocash-oakland2014.pdf)及びMonero(Mackenzie, A., Noether, S., et al. (2015), “Improving Obfuscation in …”, https://lab.getmonero.org/pubs/MRL-0004.pdf)等のアルトコインの開発が含まれている。同様に、ビットコイン互換性ソリューションが開発された。これらの互換性のあるソリューションの中で、コイン・ミキシング及び関連するバリエーションが最も一般的であるが、TumbleBit(Heilman, E., Alshenibr, L., Baldimtsi, F., Scafuro, A. and Goldberg, S. 2016 TumbleBit: An untrusted Bitcoin-compatible anonymous payment hub. Cryptology ePrint Archive, Report 2016/575; https://eprint.iacr.org/2016/575.pdf)、及びステルス・アドレスの使用 (Franco, P., (2014), “Understanding Bitcoin: Cryptography …”, http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1119019168.html)等の他の独創的な匿名化技術も存在する。これら全てのソリューションに共通するのは、(ユーザが支払人である場合、又はユーザが受取人である場合の)特定のビットコイン・トランザクション及びアドレスからユーザの関連付けを解除する手段である。
【0010】
コイン・ミキシング・ソリューションの場合に、ユーザはビットコインをサービスに入力し、それらビットコインはユーザが選択した出力アドレスに転送される。出力アドレスに送信する前に資金がプールされているため、どの出力アドレスがユーザのものであるかを解明することは困難である。
【発明の概要】
【0011】
本発明者らは、背景技術の段落で説明したブロックチェーンのトランザクション・ミキシング手法に関するいくつかの技術的及びセキュリティ関連の問題を特定した。このようなトランザクション・ミキシング手法には、ミキシング・サービス・プロバイダーが必要である。これにより、追加のリソース要件がシステムに導入され、この中央型トランザクション・ミキシング・サービス・プロバイダーを提供するための管理間接費(overhead)が追加される。さらに、中央型トランザクション・ミキシング・サービス・プロバイダーの提供により、ブロックチェーンシステムの分散型のピアツーピア・アーキテクチャが希薄化され又は損なわれる。このような中央型システムは、ユーザから制御(control)を取り去る。さらに、このような中央型システムは、システムに攻撃の焦点を与える。さらに、トランザクション・ミキシング・サービス・プロバイダーは、ユーザのデジタル資産をプールから盗み取り、入力アドレスと出力アドレスとの間のリンクを意図的に又は意図せずに外部に公開する可能性があり、こうしてセキュリティ及び機密性が低下する。多くの点で、中央型トランザクション・ミキシング・サービス・プロバイダーの提供は、中央型機関の要件を無効にすることを目的とした、非中央型ピアツーピア・ブロックチェーンシステムの基本的な精神を損なわせる。
【0012】
上記に照らして、解決すべき1つの技術的問題は、既存のソリューションよりも非中央型、安全、及び機密性の高い方法でブロックチェーンのトランザクション・ミキシングを実現可能にし、且つ背景技術の段落で説明した既存のシステムの方法のように第3者のトランザクション・ミキシング・サービス・プロバイダーによる管理ではなく、システムのユーザにより制御されるソリューションをどの様に提供するかである。
【0013】
こうして、本発明によれば、添付の特許請求の範囲で規定される方法及びシステムが提供される。
【0014】
本発明は、コンピュータで実施されるシステムを提供することができる。これは、ブロックチェーンで実施されるシステム、セキュリティシステム、及び/又は制御システムとして説明できる。
【0015】
追加的又は代替的に、本発明は、ブロックチェーン上の複数のユーザの間でトランザクション・ミキシングを行うためのシステムを提供することができ、このシステムは、(i)リソースの制御を第1のユーザの送信元アドレスから第2のユーザの受信アドレスに送信するように構成された第1のコミットメント・トランザクションを準備するステップと;(ii)リソースの制御を第2のユーザの送信元アドレスから別のユーザの受信アドレスに送信するように構成された第2のコミットメント・トランザクションを準備するステップと;(iii)リソースの制御を別のユーザの送信元アドレスから(a)第1のユーザの受信アドレス又は(b)さらに別のユーザの受信アドレスのいずれかに送信するように構成された更なるコミットメント・トランザクションを準備するステップであって、トランザクション・チェーンを完了するためにオプション(a)が実行されるまでステップ(iii)を繰り返す、ステップと;(iv)トランザクション・チェーンを実行するステップと;を実施するように構成され、ユーザのうちの少なくとも1人が複数のユーザからランダムに選択される。
【0016】
「ユーザ」という用語は、人間又はプロセッサベースのリソースを指す場合がある。
【0017】
このようなシステムを提供することにより、複数のユーザが、セキュリティと機密性を高めたリソースの交換を可能にするトランザクション・チャネルを構築することができる。トランザクション・ミキシング・システムは、チェーン内の複数のユーザから少なくとも1人のユーザがランダムに選択されるブロックチェーン・トランザクション・チェーンを形成及び実行する点で異なる。チェーンは、コミットメント・トランザクションを使用して設定される。複数のユーザの間でデジタル資産を交換するためのそのようなシステムは、背景技術の段落で説明した従来技術の構成と比較すると、より安全であり、追加のシステム間接費を必要としない。例えば、システムは、この中央型トランザクション・ミキシング・サービス・プロバイダーを提供するためにシステムに追加のリソース要件と追加の管理間接費を導入するような気がするミキシング・サービス・プロバイダーを必要としない。さらに、中央型トランザクション・ミキシング・サービス・プロバイダーの提供により、ブロックチェーンシステムの非中央型のピアツーピア・アーキテクチャが希薄化され又は損なわれる。このような中央型システムは、ユーザから制御を取り去る。さらに、このような中央型システムは、システムに攻撃の焦点を与える。さらに、トランザクション・ミキシング・サービス・プロバイダーは、ユーザのデジタル資産をプールから盗み取り、入力アドレスと出力アドレスとの間のリンクを意図的に又は意図せずに外部に公開する可能性があり、こうしてセキュリティが低下する。対照的に、本システムでは、コミットメント・トランザクションのチェーンを介してトランザクションを準備及び実行することは、第3者ではなくユーザによって実行される。つまり、システムは、第3者によって実施/制御されないプロトコルを利用する。
【0018】
本発明の1つの技術的効果は、新しい方法で動作するように形成されたコンピュータシステムをもたらす。さらに、コンピュータシステムは、システムがハッキングやデータ操作に対してより堅牢である限り、より効率的且つ効果的に実行されるという意味で、より優れたコンピュータシステムである。
【0019】
少なくとも1つのコミットメント・トランザクションが、少なくとも1つのコミットメント・トランザクションの実行条件を満たすことに応答して、それぞれのリソースの制御を送信するように構成され得る。
【0020】
これにより、トランザクション・チェーンの少なくとも一部が実行され得る速度が向上するという利点がある。
【0021】
システムは、それぞれの実行条件を満たすように構成された少なくとも1つの実行トランザクションを準備するステップを実行するように構成され得る。
【0022】
これにより、トランザクション・チェーンの少なくとも一部が実行され得る速度がさらに向上するという利点がある。
【0023】
少なくとも1つのコミットメント・トランザクションの実行条件には、それぞれのシークレット値の供給が含まれ得る。
【0024】
これにより、第1のユーザにリスクを与えることなくトランザクション・チェーンを構築することができる一方、トランザクション・チェーンのその後の実行をより安全に行うことができる。
【0025】
少なくとも1つのシークレット値が第1のユーザによって選択され得、少なくとも1つの実行条件には選択されたシークレット値の供給が含まれ得る。
【0026】
これにより、ユーザのセキュリティを簡単な方法で高めるという利点がある。
【0027】
少なくとも1つのシークレット値が、(i)選択されたシークレット値の供給、及び(ii)少なくとも1つの他のシークレット値の供給の少なくとも1つに応答して計算可能である。
【0028】
これにより、トランザクション・チェーンの実行を完了するのにかかる時間を大幅に増やすことなく、様々なシークレット値を使用可能にすることにより、システムのセキュリティを高めるという利点がある。
【0029】
少なくとも1つのコミットメント・トランザクションが、返還(return)条件が満たされると、それぞれのリソースの制御をそれぞれのユーザに戻すように構成され得る。
【0030】
これにより、ユーザからの少なくとも1つのリソースの窃盗に対するセキュリティを高めるという利点がある。
【0031】
システムは、ロック時間を含む少なくとも1つの返還トランザクションを準備するステップを実行するように構成され、少なくとも1つの返還トランザクションは、ロック時間の終了時に少なくとも1つのそれぞれの返還条件を満たすように構成され得る。
【0032】
これにより、システムの使用中に許可される最大時間を制限し、それにより必要なコンピュータリソースの量を削減できるという利点がある。
【0033】
システムは、少なくとも1つの準備されたトランザクションをブロックチェーンに送信するように構成され得る。
【0034】
これは、少なくとも1つの準備されたトランザクションをブロックチェーンに保存することにより、少なくとも1つの準備されたトランザクションの改ざんを防止し、それによりセキュリティを高めるという利点がある。
【0035】
システムは、トランザクション・チェーンが準備された順序と逆の順序でトランザクション・チェーンを実行するように構成され得る。
【0036】
これにより、第1のユーザが、完了したコミットメント・トランザクションのチェーンの実行を開始することができ、これにより、複数のユーザのうちの1人のユーザに対するリスクを分離することにより、セキュリティを高める。
【0037】
リソースは互いに同一である、以前のいずれかに記載のシステム。
【0038】
これにより、システムの使用が簡素化されるという利点がある。
【0039】
追加的又は代替的に、ブロックチェーン上の複数のユーザの間のトランザクション・ミキシングに参加するためのコンピュータで実施される方法を提供することができ、この方法は、(i)第1のコミットメント・トランザクションの実行条件が満たされると、第1のリソースの制御を第1のユーザの送信元アドレスから第2のユーザの受信アドレスに送信するように構成された第1のコミットメント・トランザクションをブロックチェーンに送信するステップと;(ii)第3のリソースの制御を第3のユーザの送信元アドレスから第1のユーザの受信アドレスに送信するように構成された第2のコミットメント・トランザクションのブロックチェーンへの送信に応答して、第3のコミットメント・トランザクションの実行条件を満たすように構成された実行トランザクションをブロックチェーンに送信するステップと;を含み、ユーザのうちの少なくとも1人が複数のユーザからランダムに選択される。
【0040】
追加的又は代替的に、ブロックチェーン上の複数のユーザの間のトランザクション・ミキシングに参加するためのコンピュータで実施される方法を提供することができ、この方法は、(i)第1のコミットメント・トランザクションの条件が満たされると、リソースの制御を第1のユーザの送信元アドレスから第2のユーザの受信アドレスに送信するように構成された第1のコミットメント・トランザクションをブロックチェーンに送信するステップと;(ii)第1のコミットメント・トランザクションの条件を満たすように構成された第1の実行トランザクションのブロックチェーンへの送信に応答して、第2のコミットメント・トランザクションの条件を満たすように構成された第2の実行トランザクションをブロックチェーンに送信するステップと;を含み、ユーザのうちの少なくとも1人は複数のユーザからランダムに選択される。
【0041】
特定の構成によれば、少なくとも1人の個人が、両方のアドレスの間のリンクを隠し、且つ中央型コイン・ミキシング・サービス・プロバイダーを必要としない安全な方法で達成される方法で、ビットコインを自分のアドレスから別のアドレスに移動できるようにすることが望ましい場合がある。これは、個人がグループ交換プロトコルに参加し、各メンバーがグループxの交渉された金額のビットコインを別のランダムメンバーに支払い、及び別のランダムメンバーが交渉された金額のビットコインをユーザxに支払うシステムを提供することで実現できる。交換プロトコルは、ユーザが自分の資金を新しいアドレスに効率的に移動し、グループ交換のメンバーがビットコインを失うリスクを負わないように設計されている。
【図面の簡単な説明】
【0042】
本発明のこれら及び他の態様は、本明細書に記載の実施形態を参照して説明され、これらの実施形態から明らかになろう。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して説明する。
図1】従来技術の支払チャネルで使用されるトランザクションを示す図である。
図2】従来技術のアトミック・クロスチェーン取引アルゴリズムを示す図である。
図3】本発明の第1の実施形態の支払チャネルを示す図である。
図4】本発明の支払チャネルが作成される順序を示す図である。
図5】第1の実施形態の支払チャネルのチェーンを示す図である。
図6】第1の実施形態のコミットメント・トランザクションの例を示す図である。
図7】第1の実施形態の返金トランザクションの例を示す図である。
図8】第1の実施形態の支払トランザクションの例を示す図である。
図9図1の支払チャネルを構築するためのアルゴリズムを示す図である。
図10】第1の実施形態の支払チャネルを構築するためのアルゴリズムを示す図である。
図11】第1の実施形態の支払チャネルのチェーンを構築するためのアルゴリズムを示す図である。
図12】第1の実施形態の支払トランザクションを送信するプロセスのアルゴリズムを示す図である。
図13】本発明の第2の実施形態の支払チャネルを示す図である。
図14】第2の実施形態の支払チャネルを構築するためのアルゴリズムを示す図である。
図15】第2の実施形態の支払チャネルのチェーンを構築するためのアルゴリズムを示す図である。
図16】第2の実施形態の支払チャネルのチェーンを示す図である。
図17】第2の実施形態の支払チャネルのチェーンの実行の表現を示す図である。
図18】第2の実施形態の支払トランザクションを送信するプロセスのアルゴリズムを示す図である。
図19】返金トランザクションを含む第2の実施形態の支払チャネルのチェーンを示す図である。
図20】第2の実施形態の返金トランザクションのロック時間要件を示す図である。
図21】第2の実施形態のコミットメント・トランザクションの例を示す図である。
図22】第2の実施形態の返金トランザクションの例を示す図である。
図23】第2の実施形態の支払トランザクションの例を示す図である。
図24】第2の実施形態で使用するスクリプトの例を示す図である。
【発明を実施するための形態】
【0043】
本明細書では、本発明を具現化するグループランダム交換(GRE)プロトコルと呼ばれるプロトコルについて説明し、このプロトコルは、ユーザがあるアドレスから別のアドレスに資金を移動する一方、ユーザのアドレス同士の間のリンクを覆い隠し、ユーザが自分の資金を盗まれる可能性を排除するためのものである。このプロトコルは、グループの各メンバーがxBTCを他の1人のメンバーに支払い、それにより全員が支払いを受け取ることに同意するグループの概念に基づいて構築される。
【0044】
ユーザがxBTCを誰に支払うかはランダムであり、誰がユーザにxBTCを支払うかもランダムである。これにより、ユーザは自分のxBTCをあるアドレスに送信し得るが、ランダムに決定された別のユーザからの別のアドレスでxBTCの受信を受け取る。このランダム性により、プロトコルの外部の誰かがブロックチェーンを解析し、ユーザの入力アドレスと出力アドレスとの間のリンクを決定することを困難にさせる。
【0045】
さらに、GREプロトコルは、あるグループのn人のユーザの間でこの交換を行うことができ、グループ内のユーザは自分の資金を失うリスクはない。プロトコルは、該当する場合は返金(refund)トランザクションを使用して、プロトコルの実行の際に計画通りに進まない場合にユーザが自分の資金を回収できるようにする。
【0046】
GREプロトコルは、既存の2つのビットコイン関連技術に基づいている。これら技術うちの第1の技術は、支払チャネル(’Introduction to Micropayment Channels’ http://super3.org/introduction-to-micropayment-channels/)であり、これは、一対(2人)のユーザの間のブロック外のビットコイン・トランザクション用に設計された技術であり、特に返金トランザクションの使用を組み込む。これらの技術のうちの第2の技術は、アトミック・クロスチェーン取引(ACCT)(’Atomic cross-chain trading’ https://en.bitcoin.it/wiki/Atomic_cross-chain_trading)であり、これは、ある暗号通貨をxコイン有するユーザが、自分のxコインを、別の暗号通貨をyコイン有する別のユーザと交換するように設計されたプロトコルである。これは「公正な交換」として行われ、第1のユーザは、第2のユーザが第1のユーザが所有しているコインを徴収できるようにしない限り、第2のユーザのコインを取得できない。
【0047】
ACCTは2人のユーザの間の交換について説明するが、本発明は、2人以上のユーザの間でのグループ交換を提供するGREプロトコルに関連しており、GREプロトコルでは、第1のユーザが支払いを行う第2のユーザは、第1のユーザに支払いを行うユーザではない。
【0048】
支払チャネル
支払チャネルは、全てのトランザクションをブロックチェーンにコミット(commit)せずに、ユーザが複数のビットコイン・トランザクションを作成できるように設計された技術である。一般的な支払チャネルの実施態様では、ほぼ無制限の支払いを行うことができるが、支払チャネルは、2つのトランザクションをブロックチェーンに追加するだけで十分である。
【0049】
ブロックチェーンに追加されるトランザクション数を減らすこと及び関連するコストを削減することに加えて、支払チャネルには速度の利点もあり、重要なことに、物事が計画通りに進まなかったり、又はいずれかのユーザが特定の支払いセットを超えて先に進まないことを決定したりする場合に、ユーザが自分の資金を回収することができる。支払チャネルの実施態様の説明を以下に概説する。
【0050】
アリス(Alice)がサービスに対してボブ(Bob)に支払う必要があるシナリオを考えてみる。状況に応じて、一定期間に亘ってアリスからボブへの複数の支払いが必要になる場合がある。アリスは、可能な交換セットでボブに最大15BTC(合計)を使うことを予定している。これを容易にするために、アリスとボブとの間に支払チャネルが確立され、次のように動作する。
・アリスは、アリスとボブとの両方によって管理される、2オブ2(2-of-2)マルチシグネチャのPay to Scriptハッシュ(P2SH)トランザクションTを作成し、アリスから発信される15BTCをコミット(付託)する。この時点では、トランザクションはビットコイン・ネットワークに送信されていない(このようなマルチシグネチャのアドレスでは、2人の個人(アリスとボブ)がこのアドレスからお金を使うトランザクションに署名する必要がある)。
・アリスは、別個の返金トランザクションTr,0を作成し、「マルチシグネチャ管理ファンド」から全ての資金をアリスに戻す。このトランザクションには、100ブロックのnLockTime値が含まれる(nLockTime(nロック時間)は、指定した時間が経過した後にのみビットコイン・トランザクションを実行できるようにするビットコイン・トランザクション・パラメータである)。ボブはトランザクションに署名する。この返金トランザクションは、nLockTimeが発生した後に、アリスとボブと間の交換が食い違う場合に、アリスに返金することができる。
・アリスは元のトランザクションTに署名する。
・この時点で、アリスとボブは、アリスからボブに行われた(ブロックチェーン外の)支払いを反映するために、新しい返金トランザクションの作成に進むことができる。これらの返金トランザクションは、その時点でアリスがボブに支払うために必要な純額(net sum of money)を反映する。例として、アリスがボブに5BTCを支払う場合に、5BTCをボブに送信し、10BTCをアリスに送り返す出力を有する新しい返金トランザクションTr,iが作成される。アリスがボブに別の5BTCを支払う必要がある場合に、10BTCをボブに送信し、5BTCをアリスに返り返す出力を有する新しい返金トランザクションTr,i+1が作成される。新しい返金トランザクション毎に、両者が詳細に同意すると仮定すると、両当事者はトランザクションに署名するが、必ずしもトランザクションをネットワークに送信するわけではない。
・作成された連続する各返金トランザクションは、以前の返金トランザクションのnLockTimeよりも短いことに留意されたい。
・nLockTime(Tr,i+1)<nLockTime(Tr,i
・ユーザがTr,iに署名するのを拒否した場合に、被害を受けたユーザは単にTr,i-1を送信すればよい。最悪シナリオの場合に、アリスはTr,0に署名し、このTr,0をネットワークに送信して(nLockTimeが経過した後に)自分の全ての資金を回収する。
・構築された最終的な返金トランザクションは、アリスからボブに送金された資金の純額を表す。このトランザクションはネットワークに送信される。
【0051】
図1は、支払チャネルで使用されるトランザクションを示している。Mは、アリスからボブに送信できる最大金額を表す。xは、アリスがボブに支払う必要がある現在の資金の純額である。Sstopは、初期の返金トランザクションのnLockTimeである。nは、アリスとボブとの間で進行中の(ブロック外の)支払いで作成された返金トランザクションの数である(これは初期の返金トランザクションを除く)。sは、ある当事者が以前の返金トランザクションを送信する他の当事者にリスクを与える前に、両方のユーザが返金トランザクションに同意するために割り当てられた時間であり、アリスとボブとの間の交換を事実上終了させる時間である。
【0052】
以下に留意されたい。
t+n*s <Sstop、ここでtは現在の時間であり、
(Sstop-n*s)≧s。
【0053】
図1のトランザクションT及びTr,nは、ブロックチェーンに表示されるトランザクションである。
図9は、アリスとボブとの間の支払チャネルを構築する際に含められるステップを含むフローチャートを示している。
【0054】
アトミック・クロスチェーン取引
デジタル交換の場合に、「公正な交換(fair exchange)」プロトコルが必要になることがよくある。交換は、あるユーザUserAが値xを所有しており、それをUserBが所有する値yと交換したいシナリオを表す。公正な交換プロトコルにより、2人のユーザが、(i)支払いの受入れと交換との両方を行うこと、又は(ii)支払いの受入れも交換も行わないことのいずれかを実行できる。Even, S. and Yacobi, Y., 1980. Relations among public key signature systems (Vol. 268). Technical Report 175, Technion, Haifa, Israel, (http://ftp.cs.technion.ac.il/users/wwwb/cgi-bin/tr-get.cgi/1980/CS/CS0175.pdf)では、信頼できる第3者がいなければ決定論的な公正な交換は不可能であることが示されている。
【0055】
ACCTの場合に、この創作者は2人のユーザが別々の暗号通貨の間でコインを交換するための公正な交換プロトコルを考案した。このソリューションでは、暗号通貨のブロックチェーンが信頼できる第3者として機能する。ACCTのアルゴリズムを図2に示す。ここで、アリスAは、vアルトコインと引き換えに、wBTCをボブBに支払う。
【0056】
これはACCT(タイムアウト付き)である。プロセスが一時停止された場合に、いつ停止しても元に戻すことができる。
【0057】
図2を参照すると、ユーザA及びBがACCTを使用している間のイベントのタイムラインの例は次のとおりである。
1)の前:(ブロードキャストすべき)公開されているものがないため、何も起こらない。
1)と2)の間:Aは72時間後に返金トランザクションを使用して、自分のお金を取り戻すことができる。
2)と3)の間:Bは24時間後に返金を受け取ることができる。Aは返金を受け取るために24時間以上を要する。
3)後:2)までにトランザクションが完了し、
-Aは24時間以内に自分の新しいコインを使う必要がある。そうでない場合に、Bは返金を請求して自分のコインを保持することができる。
-Bは72時間以内に自分の新しいコインを使う必要がある。そうでない場合に、Aは返金を請求して自分のコインを保持することができる。
安全のため、AとBとの両方が期限までに多くの時間をかけてプロセスを完了する必要がある。
【0058】
グループランダム交換
本発明は、グループランダム交換(GRE)プロトコルに関する。本発明は、n>2のn人のユーザのグループ内でビットコインを交換するためのソリューションを提供する。グループ内の各ユーザは、自分の所有しているビットコインの量を同じ量のビットコインに交換できる。
【0059】
ただし、プロトコルに変更を加えないと、2人のユーザの間で交換されるビットコインの量が等しくならない可能性がある。UとU(i+1) mod nとの間で交換される値は、ユーザのペアが自分達でネゴシエートできる任意の値であり得る。
【0060】
xBTCが交換される合意金額であると想定し、影響を受ける全てのユーザにとって望ましい場合に、ユーザは(x+a)BTCを支払うことができるが、ユーザは(x-b)BTCを引き出すことができる。例えば、ユーザUには交換用の10BTCがある。8BTCがUに利用可能な最良のオファーである場合に、UはユーザUから8BTCを受け取る。Uはこれを行うが、更なるユーザUが10BTCの受取りを要求する可能性が残っていることを理解している。換言すれば、Uが支払う値は、Uがこれらの条件を受け入れる場合に限り、Uに支払われる値である必要はなく、Uが要求する場合に、Uが支払う値はUに支払われる値である場合がある。
【0061】
これ以降、説明は、説明目的で、各ユーザがxBTCを支払ってxBTCの支払いを受け取るシナリオにのみ限定される。
【0062】
さらに、ユーザはプロトコル内でトークンを交換することができる。トークンは、トークンの制御が資産又はリソースの制御を提供するように、トークンに関連付けられたスマートコントラクトに従って資産又はリソースを表す。
【0063】
ユーザが所有するビットコインの正味の変化は、取引手数料が無視されると仮定すると、交換プロトコルに参加した後も変わらない(取引手数料は全てのビットコイン・トランザクションに関連する費用である)。第1のユーザがUserAである場合に、UserAは総額xBTCをUserBに支払い、UserCはxBTCをUserAに支払う。ここで、UserBはUserCと同じユーザではない。さらに、各ユーザは、支払いの送信に関連付けられた送信元アドレスと、支払いの受信に関連付けられた受信アドレスとを有しており、送信元アドレスと受信アドレスとは異なる。ただし、プロトコルに参加することで、ビットコイン・アドレスに保管されたユーザのビットコインは、同じユーザによって所有又は管理される別のアドレスに実際に転送される。交換プロトコル・プロセスにより、アドレス同士の間でのビットコインの転送は、ブロックチェーンの解析において、資金の転送を明確にしない方法で達成される。
【0064】
ACCTは一対のユーザの間の相互交換のみを概説するが、GREプロトコルはACCTとは異なり、GREプロトコルは次の場合の交換を記述する。
・3人以上のユーザが存在する。
・支払いを受け取る及び支払いを行うプロセスにおいて、第1のユーザが支払いを行う第2のユーザは、第1のユーザが支払いを受け取るユーザではない。
【0065】
GREプロトコルは、これを次の方法で達成する。
・プロトコルのユーザは、自分のビットコインを失うリスクはない。
・第1のユーザが支払いを行う第2のユーザは、第1のユーザに支払いを行うユーザと同様にランダムである。
【0066】
第1のタイプのグループランダム交換-シークレット値
グループランダム交換プロトコルは、2つの方法のうちの1つで動作し、各方法は本発明を具現化する。次に、本発明の構成について説明する。
【0067】
n人のユーザU|(i)∈[0,n-1]のセットが、本発明の構成のGREプロトコルに参加して、xBTCを交換することを考えると、プロトコルは次のように動作する。
・順序付けられたセット{U,U,…,Un-2,Un-1}を実現するために、ユーザはランダム化される。
・これらのユーザの1人は「開始者(initiator)」又は「開始ユーザ」と見なされる。この目的のために、Uは開始者と見なされる。
・開始者Uは乱数kを選択し、H(k)を計算する。ここで、H(・)は決定論的なハッシュ関数を表す。
・kの値はUによってプライベートに保持されるが、値H(k)はGREの全てのユーザに配信される。
・支払チャネルU→U(i+1) mod nを構築し、kの値を取得し、U(i+1) mod nに支払いを行う実行トランザクションTpayをビットコイン・ネットワークに送信するために各ユーザUに与えられる時間量を表す時間値sが選択される。グループ内の任意のユーザは、他のユーザのコンセンサスを考慮して、時間sを選択することができる。好ましい実施形態では、開始者は、単にプロトコルに対してsを選択する。時間sは、秒又はブロック数で表される。
・別の値Sが、ビットコイン・ネットワークに送信される、ユーザに対する最初の支払いの開始時間として選択される。グループ内のユーザは、他のユーザのコンセンサスを考慮して、Sを選択することができる。好ましい実施形態では、開始者は、単にプロトコルに対してsを選択する。SはUnix時間又はブロックの高さで指定された時点を表し、sは時間範囲を表すことに留意されたい。
・全ての一対のユーザの間に一方向の支払チャネルが確立され、支払いの方向は、UがU(i+1) mod nに支払いを行うような方向(ここではU→U(i+1) mod nで表される)である。例として、n=7と仮定すると、GREの支払チャネルは、U→U,U→U,…,U→Uで構成される。
・支払チャネルU→U(i+1) mod nの作成プロセスを図3及び図10に示す。ここで、σ(U)はUの署名を表す。
o初期コミットメント・トランザクションTによって、(i)UとU(i+1) mod nとの両方の署名、又は(ii)k及びU(i+1) mod nの署名(図6を参照)のいずれかを提供することによってのみ使うことができるxBTCが利用可能になる。
oここでは1つの返金トランザクションのみが必要である。返金機能Tr,0によって、全てのxBTCをUに返す(図7を参照)。
o返金トランザクションTr,0には、nLockTime値S+(n-i)sが含まれる。
o初期コミットメント・トランザクションTがビットコイン・ネットワークに送信される前に、U(i+1) mod nが返金トランザクションTr,0に署名する必要がある。
o支払チャネルには、Tのコミット済みxBTCからU(i+1) mod nにxBTCを支払う支払トランザクションTpayが含まれる。
oU(i+1) mod nへの支払トランザクションTpayの<scriptSig>には、値kが含まれる(図8を参照)。
・支払チャネルUi-1→Uが支払チャネルU→U(i+1) mod nの前に設定されるため、一対のユーザの間の支払チャネルを規則正しい順序で作成することが重要である。これは、第1の支払チャネルU→Uの作成から始まり、ここでUが開始者であり、最後の支払チャネルUn-1→Uで終了する。図4は、支払チャネルの構築順序を示している。
【0068】
一部の構成では、ユーザUが支払いを行う際にリスクを負う前に、次のことを確認できるようにするので、シーケンスの順序が重要である。
・UへのTpayトランザクションが存在し、トランザクションTpayがビットコイン・ネットワークで受け入れられるためには、Uがkの知識を有しているだけでよい。
・支払チャネルU→U(i+1) mod n(Uが使う)のTpayにある基準は、支払チャネルUi-1→U(Uが受け取る)のTpayの基準と同じである。
【0069】
開始者Uのみが、支払いに先立って受取りを優先する必要はない。ただし、kの値を知っているユーザはUだけなので、Uをだますことはできない。従って、Uがプロセスを快適に開始するまで(kのリリース(解除)と一致するまで)GREプロトコルにおいてだれでも引出しを行うことができない。
【0070】
GREインスタンスのU→U(i+1) mod n支払チャネルのセットを作成するプロセスを図11に示す。
【0071】
最終的な支払チャネルUn-1→Uは、時刻Sに又はその前に終了するものと想定される。この最終的な支払チャネルが構築されると、トランザクションのチェーン、つまりトランザクション・チェーンは、プロトコルの全てのユーザのリンク付けを完了したと言うことができる。
【0072】
図5は、GREプロトコルの全てのユーザの間に存在するU→U(i+1) mod nの支払チャネルの表現を示している。矢印は、支払チャネルとTpay支払いの方向とを示す。矢印の外部に隣接する式は、ブロックチェーンによって受け入れられるトランザクションTpayの基準を表す。σ(U)はUの署名を表すことに留意されたい。矢印の内部に隣接する式は、sの期間値を表す。
【0073】
円形の配置に照らして、U|i∈[0,n-1]の順序がランダムであるという事実は、ユーザUに支払いを行う人とユーザUが支払いを受け取る人が両方ともランダムであることを意味する。さらに、ユーザUに支払いを行う人とユーザUが支払いを受ける人は異なる。
【0074】
開始者Uは、既存の支払チャネルUn-1→UのトランザクションTpayを使って、kの値を明らかにする。Uはこのkの値をUn-1に直接伝えることができる、又は、この値はブロックチェーンから取得することができる。
【0075】
同様に、各ユーザUは、値kをその支払者Ui-1に直接伝えることができる。Uが見つからない場合に、ユーザUi-1は(少なくとも時間s内に)ブロックチェーン台帳でこの値を見つけることができる。
【0076】
この出願の提出時においてブロックチェーンがトランザクションを確認するのに平均10分かかるため、sの値は、そのsの値が表す期間が、ユーザUが必要に応じてその期間内に、トランザクションがビットコイン・ネットワークに送信された後の(支払チャネルU→U(i+1) mod nの)トランザクションTpayにおいてkの値を見つけるのに十分であるように選択する必要がある。sの値には、一対のユーザの間の支払チャネルの構築にかかる推定時間も含める必要がある。従って、sはs=s+εになるように選択することができ、ここで、sはkを見つけてTpayを送信するための推定時間であり、εは支払チャネルを構築するための推定時間である。
【0077】
開始ユーザUが、Un-1とUとの間の既存の支払チャネルのTpayトランザクションをネットワークに送信したため、kの値をUn-1に公開すると、次に、kの値を(Un-1からUへの)逆の順序で他の全てのユーザUに公開することができる。これは、各ユーザUが、支払いを受け取ることができるトランザクション(Ui-1からUへの支払チャネルのTpay)を送信する際に権限が与えられる(invested)という前提に基づいている。このトランザクションを送信するユーザUは、(以前に利用可能になっていた)UからUi+1への支払チャネルのTpayからkの値を取得する必要がある。UがUi-1からUへの支払チャネルのそのトランザクションTpayを送信することにより、次に、kの値がユーザUi-1に利用可能になる。このプロセスは、Un-1からUまで全てをカスケードし(次々に行われ)、換金する(cashing in)各ユーザUがkをユーザUi-1に明らかに、ユーザUi-1も換金することができるようにする。
【0078】
より形式的には、支払チャネルを実行するTpayトランザクションの送信シーケンスは次のようになる。
[Tpay:Un-1→U],[Tpay:Un-2→Un-1],…,[Tpay:U→U],[Tpay:U→U
【0079】
payトランザクションのセットが完了すると、GREが首尾よく終了する。各ユーザはxBTCを支払い、各ユーザはxBTCを受け取る。
【0080】
GREインスタンスのためにTpay:Un-1→U(i+1) mod nトランザクションを送信するプロセスについて図12に示す。
【0081】
以下では、一対のユーザの間の支払チャネルU→U(i+1) mod nで使用されるビットコイン・トランザクションの構築について説明する。これらの支払チャネルは、3つの主要なトランザクションで構成されている。
・2-of-2マルチシグネチャ・トランザクションTへの入金:このトランザクションは、支払チャネルのコミットメント・コンポーネントを表し、コミットメント・トランザクションと呼ばれる場合がある。ここで、トランザクションを通じて、ユーザUは指定された数のビットコインxBTCを送信/コミット(付託)して、次のいずれかによって管理する。
o2-of-2マルチシグネチャ(U,U(i+1) mod n)、又は
o値kの知識及びU(i+1) mod nの署名。
・返金トランザクションTr,0:このトランザクションは、指定された時間が経過した後に(コミットメント・トランザクションから)ユーザUに返されるxBTCの返金を表す。このトランザクションを首尾よく実行するには、ユーザU及びU(i+1) mod nの署名が必要である。
・支払トランザクションTpay:このトランザクションは、UからU(i+1) mod nへのxBTCの支払いである。このトランザクションを首尾よく実行するには、値kの知識及びU(i+1) mod nの署名が必要である。支払トランザクションは、実行トランザクションとも呼ばれる場合がある。
【0082】
トランザクションの詳細は、<scriptSig>、<scriptPubkey>、nLockTime、及び様々なトランザクションの出力値に限定されるが、これらは説明しているGREプロトコルに最も関連しているため、他の関数及び値を使用できることに留意されたい。
【0083】
第2のタイプのグループランダム交換-シークレットの変更
次に、本発明の更なる構成について説明する。
上記の構成のGREプロトコルの場合に、各支払チャネルに共通の値kは、GREがそのユーザに提供し得る匿名性のレベルの制限として機能し得る。これは、k及び/又はそのハッシュH(k)の共有使用により、外部オブザーバーがGREの特定のインスタンスに関連するトランザクションのセットを簡単に関連付けることができるためである。これにより、あるアドレスから別のアドレスへのユーザの資金移動を追跡するために必要なオブザーバーの労力が軽減される。
【0084】
同じシークレット値を全ての支払チャネルで使用する上述した構成とは対照的に、以下で説明する構成では、GRE交換の際に支払チャネル毎に異なるシークレット値を使用する。さらに、シークレット値はチャネル毎に異なるが、トランザクションがブロックチェーンに送信されたときのシークレット値の公開は、シーケンスの次の支払チャネルでのシークレット値のその後の公開に十分な情報を提供する。
【0085】
この機能を実現するために、この構成では、E(m)+E(n)=E(m+n)のような楕円曲線(EC)暗号化のプロパティを利用し、ここで、E(x)=xGであり、Gは楕円曲線上の基点である。ただし、EC暗号化の代わりに、実質的に類似した準同型の特性を有する他のタイプの暗号化を使用してもよい。
【0086】
楕円曲線は、以下の式によって記述される点のセットである。
≡x+ax+b (mod p)
ここで、
【数1】
であり、pは素数である。
【0087】
ビットコイン・スクリプト内で必要なEC算術機能は、スカラーによるポイント乗算である。これは次のような演算である。
【数2】
ここで、nは自然数、Pは楕円曲線上の点、+はEC上の点を加算するための演算子である。
【0088】
次に、スカラー乗算には、特定のECグループ演算であるポイントの加算とポイントの倍増とが必要である。
・ポイントの加算P+Q:この演算では、EC上の新しい点をこの曲線の交点の否定(negation:交点ではない点)として計算する。これは、R=P+Qと記述することができる。
・ポイントの倍増P+P:ポイントの加算を使用してPの2倍のポイントを計算することができる。これは、R=P+P=2Pと記述することができる。
【0089】
より具体的には、EC上にP(x,y)とQ(x,y)の2つのポイントが与えられた場合に、
P+Q=(x,y
ここで、
=m-x-x mod p
=m(x-x)-y mod pであり、そして
【数3】
【0090】
上述したように、同じシークレット値を全ての支払チャネルで使用する構成のGRE回路内の支払チャネル毎の基準として、値k(及びタンデムでのH(k))の使用は、匿名性への欲求に関連して、制限であると証明することができる。
【0091】
ユーザがビットコインの移動に関連してGRE交換での匿名性を望む場合に、UがxBTCを支払うアドレスは、ユーザがxBTCを受け取るアドレスと異なることが予想される。このアドレス同士の間の切断は、ビットコイン・ブロックチェーン内で支払トランザクション及び受取トランザクションの互いに関連付けを解除することを目的としている。
【0092】
ただし、GREプロトコルの知識を有する外部オブザーバーは、あるタイプの基準を含むスクリプトを使用したビットコイン・トランザクションがGREのインスタンスのアーティファクトであることを知っている。さらに、k及びそのハッシュがこれらのGREインスタンスのサブセット内で見つかるため、外部オブザーバーは、GREの特定のインスタンスに関連する全てのトランザクションを識別できるか、又は可能なトランザクションのセットのサイズを少なくとも大幅に削減できる。成功を保証するわけではないが、これにより、外部のオブザーバーはGREインスタンスにおけるビットコインの動きを追跡するためにより良い位置に置かれる。
【0093】
この構成では、GREプロトコルを使用し、各支払チャネルでは、異なる一意のシークレット値(sv)と、シークレット値の対応する暗号化バージョンとが使用される。この構成では、ハッシュ関数自体は使用されず、EC暗号化に置き換えられることに留意されたい。これにより、外部オブザーバーが特定のGREインスタンスに属するトランザクションのセットを識別する能力が低下する。
【0094】
この構成の異なるシークレット値は、次の条件を満たすことが期待される。
a.シークレット値は推測するのが難しいはずである。
b.支払チャネルU→U(i+1) mod nのTpayを実行する際にsv(i+1) mod nの公開によって、GREシーケンスの次の支払チャネルUi-1→U(反時計回り)のsvを公開するか、又は少なくとも容易に計算できるようにする必要がある。
c.外部オブザーバーがシークレット鍵(又はシークレット鍵(secret key)暗号化(暗号文))同士の間の関係を特定するのは難しいはずである。
d.交換に参加するユーザは、自分の資金を失うリスクがないはずである。
【0095】
ハッシュ関数の代替としてEC暗号化を使用して、以前の基準を満たすことができる。EC暗号化では、スカラー値にEC上の基点Gが乗算される。スカラー値kはシークレット鍵であり、Q=kGは暗号化された出力である。Qからkを決定することは、「困難な(hard)」離散対数問題である。
【0096】
さらに、楕円曲線演算の加算演算子の場合に、基点Gに対してmG+nG=(m+n)Gである。
【0097】
EC暗号のこの特性により、条件b.について別のシークレット値が順に明らかになる。
【0098】
n人のユーザ{U|i∈[0,n-1]}のグループがGREプロトコルに参加して、xBTCを交換することを考えると、本発明のこの構成のプロトコルは以下のように動作する。
・ユーザは、楕円曲線デジタル署名アルゴリズム(ECDSA)曲線(例えば、secp256k1のパラメーター(p,a,b,G,n,h)を定める。
・ユーザは、順序付きセット{U,U,…,Un-2,Un-1}を実現するためにランダム化される。
・これらのユーザのうちの1人が「開始者」と見なされる。この目的のために、Uが開始者と見なされる。
・開始者Uは乱数kを選択し、kGを計算する。ここで、Gは楕円曲線上の基点を表す。
・kの値はUによってプライベートに保持される。
・他の各ユーザU~Un-1が、乱数を選択する。Uがkを選択し、Uがkを選択し、・・・、Un-1がkn-1を選択する。これらの他の各ユーザは、自分が選択した値をUに安全に送信する。Uは、第2の乱数kも選択する。
・支払チャネルU→U(i+1) mod nを構築し、必要なシークレット値を取得し、U(i+1) mod nに支払いを行う実行トランザクションTpayをビットコイン・ネットワークに送信するために各Uに与えられる時間量を表す時間値sが選択される。
時間sは、秒又はブロック数で表される。
・別の値Sが、ビットコイン・ネットワークに送信される、ユーザに対する最初の支払いの開始時間として選択される。SはUnix時間又はブロックの高さで指定された時点を表し、sは時間範囲を表すことに留意されたい。
【0099】
全ての一対のユーザの間に一方向の支払チャネルが確立され、支払いの方向は、UがU(i+1) mod nに支払いを行うような方向である。例として、n=7と仮定すると、GREの支払チャネルは、U→U,U→U,…,U→Uで構成される。
【0100】
支払チャネルU→U(i+1) mod nの作成プロセスを以下で説明し、図13及び図14に示す。
・初期コミットメント・トランザクションTにより、<scriptPubkey>により、「UとU(i+1) mod nとの両方の署名」又は「sv(i+1) mod n及びU(i+1) mod nの署名」のいずれかによってのみ使うことができるxBTCが利用可能になる。
・この目的のために、1つの返金トランザクションのみが必要である。この返金トランザクションTr,0は、全てのxBTCをUに返す。
・支払チャネルの返金トランザクションTr,0には、nLockTime値S+(n-i)sが含まれる。
・返金トランザクションTr,0は、初期コミットメント・トランザクションTがビットコイン・ネットワークに送信される前に、U(i+1) mod nが署名する必要がある。
・支払チャネルには、Tのコミット済みxBTCからU(i+1) mod nにxBTCを支払う支払トランザクションTpayが含まれる。
・U(i+1) mod nへの支払トランザクションTpayの<scriptSig>には、値sv(i+1) mod nが含まれることが予想される。
【0101】
支払チャネルUi-1→Uが支払チャネルU→U(i+1) mod nの前に設定されるため、一対のユーザの間の支払チャネルを規則正しい順序で作成することが重要である。これは、第1の支払チャネルU→Uの作成から始まり、Uが開始者であり、最後の支払チャネルUn-1→Uで終了する。
【0102】
一部の構成では、ユーザUが、支払いを行い、この支払いに関連するリスクを負う前に、UがTpay支払いをU(i+1) mod nに行った場合に、Uに対してUが首尾よく実行できるTpayトランザクションが存在することを確認できるようにするので、シーケンスの順序が重要である。
【0103】
図15及び図16を参照して、この構成で使用されるシークレット値の準備について説明する。
1. svのデフォルト値がsv=kとして設定される。kは、ユーザのGREプロトコルリスト内の開始者Uによって選択されたランダム値であることを思い出されたい。このk値はプロトコルのセキュリティの中心であり、Uのみが知っており、全ての支払チャネルが作成されてUの履行が完了するまで秘密にされる。
2. Uは、楕円曲線の基点Gをデフォルトのsv値kに乗算することにより、そのデフォルトのsv値kを暗号化する。Qがsv値の暗号化されたバージョンである場合に、デフォルトのsvの暗号化されたバージョンはQ=svG=kGである。
3. 作成された第1の支払チャネルU→Uでは、Uはその乱数kをUに伝え、Uは「暗号化されたバージョンのシークレット鍵」QをUに伝える。
4. 作成された支払チャネルU→Uのsv値は、sv=sv+kであり、その暗号文は次のとおりである。
=Q+k
o新しいシークレット値(k+k)は、Qの計算に存在し、Q=kG+kG=(k+k)Gを与えること、
oユーザUはkを知らず、タンデムで(in tandem)トランザクションのシークレット値を有すること、及び
oUとUとの両方が、Qの他方の計算を計算及び検証することができることに留意されたい。
5. ステップ3及び4は、GRECS回路の他の全ての支払チャネルに一般化することができる。この一般化について以下に説明する。
・U(i+1) mod nは、乱数k(i+1) mod nをUに伝える。Uは、暗号化されたバージョンのシークレット鍵QをU(i+1) mod nに伝える。
・作成された支払チャネルのsv値は、sv(i+1) mod n=sv+k(i+1) mod nになる。その暗号化された値は次のとおりである。
(i+1) mod n=Q+k(i+1) mod n
・支払チャネルについて、
o新しいシークレット値sv(i+1) mod n=k+k+k+…+k+ k(i+1) mod nは、以下で与えられるQ(i+1) mod nの計算で確認することができること、
【数4】
oユーザU(i+1) mod nは、k及びsvの以前の他の全ての反復が暗号化されているため、トランザクションのシークレット値を知らないこと、及び oU(i+1) mod nとUとの両方が、Q(i+1) mod nの他方の計算を計算及び検証することができることに留意されたい。
・以前のプロセスは、最終的な支払チャネルUn-1→Uにも適用されることに留意されたい。こうして、秘密の乱数kに加えて、Uは第2の乱数値kも作成する必要がある。kは、シークレット値に追加される最終的な値である。最終的なシークレット値には、svではなくsvfinalというラベルが付けられていることに留意されたい。
6. 開始者Uのみが、自分に支払いを行う支払チャネルを、自分が支払いを行う支払チャネルの前に確立することを優先する必要はない。これは、Uが、全ての支払チャネルの全てのTpayトランザクションで必要とされるkの値を知っている唯一の人物であるため、Uをだますことができないためである。従って、Uがプロセスを快適に開始するまで(最終的なシークレット値のリリースと一致するまで)、この構成のGREプロトコルのユーザは引出しを行うことができない。
svfinal=k+k+k+…+kn-1+k(kの値を含む)。
【0104】
最終的な支払チャネルUn-1→Uは、時刻Sに又はその前に確定する。ユーザを接続する支払チャネルのセットは、図16に示されるように円として視覚化できる。図16は、この構成のプロトコルの全てのユーザの間に存在すU→U(i+1) mod n支払チャネルの表現を示す。矢印は、支払チャネルとTpay支払いの方向とを示す。矢印の外部に隣接する値は、ブロックチェーンによって受け入れられるトランザクションTpay:U→U(i+1) mod nに必要なシークレット値を表す。矢印の内部に隣接する値は、sの期間値を表す。Q値は、支払チャネルのシークレット値の暗号化された値を表す。
【0105】
円形の配置に照らして、{U|i∈[0,n-1]}の順序がランダムであるという事実は、ユーザUに支払いを行うユーザがランダムであり、Uが支払いを行うユーザがランダムであることを意味する。同様に、ユーザUに支払いを行うユーザは、Uが支払いを行うユーザとは異なる。
【0106】
開始者Uは、既存の支払チャネルUn-1→UのトランザクションTpayを使って、svfinal=k+k+k+…+kn-1+kの値を明らかにする。上述したように、値k及びkを作成したのはUであり、全てのユーザはk値をUに送信する必要があった。
【0107】
はsvfinalのこの値をUn-1に直接伝えることができる、又は、この値をブロックチェーンから取得することができる。
【0108】
n-1はここでsvfinalを知っているが、これは、Un-1が支払チャネルUn-2→Un-1を介して支払いを受け取るために必要なシークレット値ではない。
svfinal=k+k+k+…+kn-1+k、であるが、
svn-1=k +k +k +…+kn-1である。
【0109】
しかしながら、Un-1はsvfinalからkを引くことでsvn-1を容易に計算し、支払いのためにTpayトランザクションを送信することができる。Un-1は、支払チャネルトランザクションの構築における以前のプロセスからkを知っているだろう。
【0110】
同様に、各ユーザU(i+1) mod nは、値sv(i+1) mod nをその支払人Uに直接伝えることができる。U(i+1) mod nが取得できなない場合に、ユーザUは、(少なくとも時間s内に)ブロックチェーン台帳で値sv(i+1) mod nを取得することができる。
【0111】
sv(i+1) mod nから、ユーザUは、sv(i+1) mod nからk(i+1) mod nを引くことによりsvを計算することができる。これにより、Tpay:Ui-1→Uを介してUが支払いを受け取ることができる。
【0112】
ブロックチェーンがトランザクションを確認するのに平均10分かかるため、sの値は、そのsの値が表す期間が、ユーザUが必要に応じてその期間内に、トランザクションがビットコイン・ネットワークに送信された後のトランザクションTpay:U→U(i+1) mod nにおいてsv(i+1)の値を見つけるのに十分であるように選択する必要がある。トランザクションを確認するための平均時間が変化する場合に、それに応じてsを選択することができる。
【0113】
sの値には、一対のユーザの間の支払チャネルの構築にかかる推定時間も含める必要がある。従って、sはs=ssv+εになり、ここで、ssvはsv(i+1) mod nを見つけてTpay:U→U(i+1) mod nを送信するための推定時間であり、εは支払チャネルを構築するための推定時間である。
【0114】
開始者Uが、Un-1とUとの間の既存の支払チャネルのTpayトランザクションをネットワークに送信したため、svfinalの値をUn-1に公開すると、次に、svの値を反時計回りの方法(Un-1からUへ)で他の全てのユーザUに公開することができる(図17を参照)。これは、各ユーザUが、支払いを受け取ることができるトランザクション(Ui-1からUへの支払チャネルのTpay)を送信する際に権限が与えられるという前提に基づいている。
【0115】
上記トランザクションを送信するユーザUは、UからU(i+1) mod nへの支払チャネルのTpayからsv(i+1) mod nの値を取得する必要があり、その値からUがsvを導出する。UがUi-1からUへの支払チャネルのそのトランザクションTpayを送信することにより、次に、svの値がユーザUi-1に利用可能にされ、ユーザUi-1はsvi-1を導出する。このプロセスは、ドミノがUn-1からUまで全て落ちるようにカスケードし、換金する各ユーザUがsvi-1をユーザUi-1に明らかにし、ユーザUi-1も換金することができるようにする。
【0116】
より形式的には、支払チャネルの(実行/送信される)Tpayトランザクションのシーケンスは次のようになる。
[Tpay:Un-1→U],[Tpay:Un-2→Un-1],…,[Tpay:U→U],[Tpay:U→U
【0117】
payトランザクションのセットが完了すると、プロセスは首尾よく終了する。各ユーザはxBTCを支払い、各ユーザはxBTCを受け取る。
【0118】
この構成でのTpay:U→U(i+1) mod nトランザクションを送信するプロセスについて図18に示す。ここで、tは現在の時間であり、PCは支払チャネルであり、Ui+1=U(i+1) mod nであり、bcはブロックチェーンである。支払チャネルUn-1→Uの場合に、sv値の名前はsvfinalである。
【0119】
全ての返金トランザクションTr,0のブロックチェーンへの送信は、nLockTime値によって制限される。nLockTimeパラメーターのこの値は、Tr,0がその時間に又はそれ以降にブロックチェーンによってのみ受け入れられるような絶対時間値を表す。U→U(i+1) mod nのnLockTime値はS+(n-i)sである。
【0120】
ユーザUは、U(i+1) mod nが、署名し損ない、nLockTime値の前にQ(i+1) mod nのsv(i+1) mod nを明らかにできない場合に、Tr,0:U→U(i+1) mod nを送信する。
【0121】
がTr,0:U→U(i+1) mod nを送信する場合に、これは、支払トランザクションTpay:U→U(i+1) mod nが実行されておらず、これからも決して実行されないことを意味する。これは、sv(i+1) mod nが公開されないため、Ui-1がブロックチェーンから支払トランザクションTpay:Ui-1→Uに必要なsvを計算することができないことを意味する。
【0122】
i-1は、自分の返金トランザクションTr,0:Ui-1→Uを送信する前に、Ui-1→UのnLockTime値まで又はそれ以降まで待機する必要がある。
【0123】
これらの返金送信プロセスは、Tr,0:U→Uを送信する開始者Uまでの全てのユーザに対して、反時計回りに繰り返される。これらの各トランザクションは、特定の時点に又はそれ以降でのみ発生し得る。この返金トランザクションのシーケンスの例を図19に示す。ここで、Uは署名に失敗し且つt=S+4sの前にTpay:U→Uのsvの生成に失敗する。返金トランザクションは、反時計回りを指す矢印で表される。支払又は実行トランザクションは、時計回りを指す矢印で表される。
【0124】
返金トランザクションを正確なnLockTime値で送信する必要がないことに留意することが重要である。返金トランザクションはその時点又はその後に適用することができる。これは、UがU(i+1) mod nに延長時間tを与えて、署名し、Tpay:U→U(i+1) mod nのsv(i+1) mod nを生成することができることを意味する一方で、これは、その結果、Uが、Tpay:Ui-1→Uのsvを生成するための時間が短くなる(UがUi-1によって延長時間を与えられていない場合)ことを意味する。図20を参照されたい。ここでUに延長時間tが与えられると、Un-1がsvn-1を計算して、Tpay:Un-1→UのUによる遅くなった送信によってTpay:Un-2→Un-1をブロックチェーンに送信する時間が短くなる。
【0125】
以下では、この構成のプロトコルの一対のユーザの間の支払チャネルU→U(i+1) mod nで利用されるビットコイン・トランザクションの構築について説明する。これらの支払チャネルは、3つの主要なトランザクションで構成される。
・2-of-2マルチシグネチャ・トランザクションTへの入金:このトランザクションは、支払チャネルのコミットメント・コンポーネントを表し、コミットメント・トランザクションと呼ばれる場合がある。ここで、トランザクションを通じて、ユーザUは指定された数のビットコインxBTCを送信/コミットして、次のいずれかで管理する。
o2-of-2マルチシグネチャ(U,U(i+1) mod n)、又は
o値sv(i+1) mod nの知識及びU(i+1) mod nの署名。
・返金トランザクションTr,0:このトランザクションは、指定された時間が経過した後に(コミットメント・トランザクションから)ユーザUに返されるxBTCの返金を表し、ユーザUはブロックチェーンへの送信の適格主体となる。このトランザクションを首尾よく実行するには、ユーザU及びU(i+1) mod nの署名が必要である。
・支払トランザクションTpay:このトランザクションは、Uのコミット済み資金からユーザU(i+1) mod nへのxBTCの支払いである。このトランザクションを首尾よく実行するには、シークレット値sv(i+1) mod nの知識及びユーザU(i+1) mod nの署名が必要である。支払トランザクションは、実行トランザクションとも呼ばれる場合がある。
【0126】
図21図24のトランザクションの詳細は、<scriptSig>、<scriptPubkey>、nLockTime、及び様々なトランザクションの出力値に限定されるが、これらはこの構成に最も関連するトランザクション要素であることに留意されたい。
【0127】
トランザクションの詳細を図21~24に示す。以下に、楕円曲線オペコードの詳細を説明する。
【0128】
この構成では、楕円曲線暗号化を使用する。シークレット値kが与えられると、そのEC暗号化された値はQ=kGであり、ここで、Gは楕円曲線上の基点である。
【0129】
このEC暗号化は、全ての支払チャネルで同じシークレット値を使用する構成のGREのハッシュ関数に相当する暗号化として機能する。ただし、EC加算の準同型の特性により、この構成の支払チャネルでsv値の変更が可能になる一方、svの最終バージョンsvfinalの公開から始まるシークレット値のドミノカスケードが可能になる。
【0130】
各支払チャネルU→U(i+1) mod nについて、コミットメント・トランザクションTには、返金とは別に、暗号化された値Q(i+1) mod nを生成するシークレット値sv(i+1) mod nが提示された場合にのみ、コミット済み資金を使うことができることを規定する条件が含まれる。このコミット済み資金の非返金支出(non-refund spending)は、支払チャネルのTpayによって行われる。
(i+1) mod n=sv(i+1) mod n
ここで、sv(i+1) mod n=k+k+k +・・・+k+k(i+1) mod nである。
【0131】
sv(i+1) mod nが正しいかどうかを判断するために、次のECオペコードが使用され、乗算Q=kGが提供される。このオペコードはOP_ECPMULTと呼ばれる。OP_ECPMULTは、エンコードされた楕円曲線ポイント及び数値を受け取り、スカラーによる楕円曲線乗算を行う。OP_ECPMULTは、エンコードされた楕円曲線ポイントとして結果を出力する。
【0132】
支払チャネルU→U(i+1) mod nのトランザクションT、Tr,0、及びTpayのスクリプトを図21図24に示す。特に、図24は、コミットメント・トランザクションTの<scriptPubKey>が、上記のオペコードOP_ECPMULTを使用して、支払トランザクションTpayの<scriptSig>とどの様に結合され、コミット済みxBTCのロックを解除するかを示している。
【0133】
本発明の構成は、全ての支払チャネルに同じシークレット値又は全ての支払チャネルに異なるシークレット値のいずれかを使用するものとして上述したが、この記述より、シークレット値を変更すること及びシークレット値を変更しないことの組合せを使用するように構成を組み合わせるのは当業者の権限の範囲内である。
【0134】
さらに、電子メール、ファイル転送プロトコル、ピアツーピア共有等の他の通信チャネルを使用して、本発明の任意の構成のユーザが情報を通信することができ、この情報が、シークレット値又はそれに関連する情報、1つ又は複数のトランザクションの詳細、1つ又は複数のトランザクション自体の完全又は不完全なバージョンに関連することができ、且つブロックチェーン以外の通信チャネルが使用される範囲が、本発明の所与の一対のユーザの間に存在する信頼性のレベルに依存し得ることを理解されたい。
【0135】
上記の本発明の構成は、ユーザ同士の間のビットコインの転送のみに言及しているが、ユーザは、代わりに、情報、契約、トークン等のプロトコルを使用して他のリソースを交換できることを理解されたい。トークンは、トークンの制御が資産又はリソースの制御を与えるように、トークンに関連付けられたスマートコントラクトに従って資産又はリソースを表す。スマートコントラクト自体は、ブロックチェーン外に格納することも、1つ以上のトランザクション内に格納することもできる。
【0136】
本明細書において、用語「システム」は、上述したGREプロトコル、プロトコル自体、及びコンピュータハードウェアに保存されたプロトコルのうちの少なくとも1つの構成のステップを実行するように構成されたコンピュータハードウェア及び/又はソフトウェアのシステムを包含するために使用される。
【0137】
上述した実施形態は、本発明を限定するのではなく例示するものであり、当業者は、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈すべきではない。「備える、有する、含む(comprising, comprises)」等の語は、請求項又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む(comprises, comprising)」は「含む、有する(includes, including)」又は「から構成される(consists of, consisting of)」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実装され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化され得る。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせが有利に使用できないことを示すものではない。
【0138】
以下に、出願当初の特許請求の範囲の内容を実施例として記載しておく。
[実施例1]
ブロックチェーン上の複数のユーザの間でトランザクション・ミキシングを行うためのシステムであって、当該システムは、
(i)リソースの制御を第1のユーザの送信元アドレスから第2のユーザの受信アドレスに送信するように構成された第1のコミットメント・トランザクションを準備するステップと、
(ii)リソースの制御を前記第2のユーザの送信元アドレスから別のユーザの受信アドレスに送信するように構成された第2のコミットメント・トランザクションを準備するステップと、
(iii)リソースの制御を前記別のユーザの送信元アドレスから
(a)前記第1のユーザの受信アドレス、又は
(b)さらに別のユーザの受信アドレス次のいずれかに送信するように構成された更なるコミットメント・トランザクションを準備するステップであって、トランザクション・チェーンを完了するためにオプション(a)が実行されるまでステップ(iii)を繰り返す、ステップと、
(iv)前記トランザクション・チェーンを実行するステップと、を実施するように構成されており、
前記ユーザのうちの少なくとも1人が前記複数のユーザからランダムに選択される、
システム。
[実施例2]
少なくとも1つのコミットメント・トランザクションが、少なくとも1つの前記コミットメント・トランザクションの実行条件を満たすことに応答して、それぞれのリソースの制御を送信するように構成される、実施例1に記載のシステム。
[実施例3]
それぞれの実行条件を満たすように構成された少なくとも1つの実行トランザクションを準備するステップを実行するようにさらに構成される、実施例2に記載のシステム。
[実施例4]
少なくとも1つの前記コミットメント・トランザクションの実行条件には、それぞれのシークレット値の供給が含まれる、実施例2又は3に記載のシステム。
[実施例5]
少なくとも1つのシークレット値が前記第1のユーザによって選択され、少なくとも1つの実行条件には前記選択されたシークレット値の供給が含まれる、実施例4に記載のシステム。
[実施例6]
少なくとも1つのシークレット値が、(i)前記選択されたシークレット値の供給、及び(ii)少なくとも1つの他のシークレット値の供給の少なくとも1つに応答して計算可能である、実施例5に記載のシステム。
[実施例7]
少なくとも1つのコミットメント・トランザクションが、返還条件が満たされると、それぞれのリソースの制御をそれぞれのユーザに戻すように構成される、実施例1乃至6のいずれか一項に記載のシステム。
[実施例8]
ロック時間(LcokTime)を含む少なくとも1つの返還トランザクションを準備するステップを実行するようにさらに構成され、前記少なくとも1つの返還トランザクションは、前記ロック時間の満了時に少なくとも1つのそれぞれの返還条件を満たすように構成される、実施例7に記載のシステム。
[実施例9]
少なくとも1つの準備されたトランザクションをブロックチェーンに送信するようにさらに構成される、実施例1乃至8のいずれか一項に記載のシステム。
[実施例10]
前記トランザクション・チェーンが準備された順序と逆の順序で前記トランザクション・チェーンを実行するようにさらに構成される、実施例1乃至9のいずれか一項に記載のシステム。
[実施例11]
前記リソースが互いに同一である、実施例1乃至10のいずれか一項に記載のシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24