ここでは、本開示について、実施形態の一部を形成する図面に示した実施形態を参照しながら、詳細な説明を行う。本開示の思想又は範囲を逸脱することなく、他の実施形態を使用することができ、及び/又は、他の変更を行うことができる。詳細な説明に記載の例示的な実施形態は、ここで提示した主題を限定することを意味するわけではない。
一実施形態において、用語「ゼロカストディスイッチ」は、システム又は機構(メカニズム)を指し、これらは、ブロックチェーンを基礎とする資産に関する非カストディアルなlimit注文又はマーケットの注文の実施(及び従って機能的な金融取引注文記録)を完全に又は部分的に可能にする。非カストディアルな注文では、どのパーティも他のパーティ資産に関する所有権を有さない(その代わりに、これらは分散型のブロックチェーンを基礎とする、脱集中化マルチ署名アカウントにおいて保持される)。これにより、トランザクションが確認され且つ完了されるまで、内在する資産を潜在的な取引相手に晒すことが排除される。
典型的にはユーザーは、他人の1つのブロックチェーンを基礎とした資産を購入又は交換を望む。例えば、UserAはCoinA(即ち、Bitcoin)を所有し、当該CoinA売ることを、彼/彼女は望んでおり、そして、CoinB(即ち、Ethereum)を、1:10の価格で購入することを望んでいるとする。取引所(Exchange)の企業は、売りたがっているCoinBを所有している可能性がある。ここで使用される用語「取引所」は、ブロックチェーン資産の売買元、又はブロックチェーン資産取引を指す。従って、UserAは、CoinBの価格がCoinAの0.1倍に下落した時に実行する旨の注文を行うことを望む。UserAは常に以下の保証を望む:もしも価格目標が達成されない場合、注文は実行されず、そして、注文は取り消し可能又はキャンセル可能であること。また、UserAはまた、注文に対して、期間又は期限を設定することができ、これらは、所与のポイントで期限切れとなり、及びUserAへの返還へのトリガーとなる。
一実施形態において、UserAは、取引所とともに、非カストディアルな注文を生成し、及び、資金を、取引所によって特定されるm/nのマルチ署名アドレスへ送る。一実施形態において、2/3のマルチ署名アドレスを使用するが、しかし、任意の他のレベルのマルチ署名アドレスを使用することができる。運用上、自動化された、ポリシーベースの、サードパーティであるoracleは、マルチ署名の連署者であってもよく、ある特定のルール及び状況に応じて、UserA又は取引所のいずれかとともに取引所によるサインから独立して、又はこれによって運用されてもよい。一実施形態において、サードパーティであるoracleは、別会社であってもよいし、又は、あるサーバー上に存在するソフトウェア・アプリケーションであってもよい(脱集中化サーバーを含み、又は「デジタル自律性コーポレーション(DAO)」として)。oracleは、一旦確立されると、所有又は管理される必要がない。1組の所定のルールに基づいて、資金が取引所に行くのかユーザーに行くのかを決定するのは、本質的にはスイッチである。このスイッチの基本ルールは下記の通りである:もしも、所望の資金がユーザーに送られた場合(パブリックブロックチェーンによって規定される)、取引所とともにサインを行い、トランザクションを完了させる。2/3マルチシグアカウントを使用することで、如何なるパーティも任意のトランザクションにおいて一方的に作用することができないことを保証する。任意のトランザクションを完了させるために、3つのうち2つのパーティが同意してサインしなくてはならない。所望の資産が送信されたことが証明されるまで、取引所は、ユーザーの資金を受け取ることができない。そして、取引所が既に所望の資産の移動を証明してしまった場合には、ユーザーは資金を取り戻すことができない。oracleは、反論不可のブロックチェーンデータに基づいて、1つのパーティ又はその他とともにサインをする。
いったん、ユーザーが注文を特定すると、取引所は、彼らにマルチ署名のブロックチェーン資産アドレスを付与する。当分野で理解されているが、マルチ署名アドレスは、複数の秘密鍵を必要とし、該鍵は、アカウントにアクセスしたり、及び資産を移動させるために使用される。これは、単に1つの署名しか必要としない通常のブロックチェーン資産トランザクションとは異なっている。通常のブロックチェーン資産トランザクションにおいて、ユーザーが、秘密鍵を持っている場合、お金を使用することができる。従来のブロックチェーン資産取引は、ユーザーのアカウントに関する秘密鍵を保持しており、及びこれが理由となって、管理(custodianship)を有し、従って、取引相手のリスクがある。
いったん2つの署名を受け取ると(2/3マルチシグシナリオにおいて)、資産を移動させることができる。一実施形態において、もしも、oracle及び販売者(取引所)がサインした場合、資産は取引所へ移動する。もしも、oracle及びユーザーがサインした場合、ユーザーの資金はユーザーに戻る。部分的に注文が完了した場合、oracleは、取引所に移動すべき資産の内、相当分に関してだけサインすることができ、そして、要求により、ユーザーに対して逆相当分だけサインする。いったん、所望のブロックチェーンを基礎としたデジタル資産の移動が発生すると、取引所又はoracleのいずれかが、当該トランザクションを、ブロックチェーンネットワーク上の全てのノードに広め、世界中でこれと同じトランザクションを記録する。この方法では、全てのブロックチェーン資産トランザクションと同様、中央サーバーが存在しない。パブリックなピアツーピアネットワーク上で、全てのブロックを基礎としたレポートが行われる。
一実施形態において、必要な署名を決定するために以下のルールを使用することができる。もしも、UserAが、CoinBを、Final_Addressにて受け取った場合(完全に又は部分的に)、oracleは取引所とともにサインをし、当該取引所はCoinA受け取る(完全に又は部分的に);もしも、UserAが、CoinBを、Final_Addressにて受け取っていない場合、該ユーザーは、注文をキャンセルすることができ、又は期限切れになってもよい。いずれかの場合において、マルチ署名の連署者であるoracleは、UserAとともにサインし、その結果、ユーザーに、ユーザーのCoinAが戻され、ユーザーが指定したRefund_Addressに戻される(注文が全く完遂しない場合には全部、及び注文の一部が完遂した場合には一部)。
ここで使用されるものとして、システムの実施形態の運用時に、4つのノートアドレスがある:Payment_Address、Final_Address、Merchant_Address、及びRefund_Address。しかし、当業者であれば以下の点を理解するであろう:様々な実施形態において、支払者、受取人、及び暗号通貨取引の責任を持つパーティを特定する目的で、任意の数のアドレスを含むことができ、又は、使用することができる。
Funded Orderは、非カストディアルな注文であり、CoinAをUserAから受け取る。Unfunded Orderは、非カストディアルな注文であり、CoinAをUserAからまだ受け取っていない。そして、Completed Orderは、非カストディアルな注文であり、CoinBが、UserAに、Final_Addressへと送信され、取引を完結する。
Payment_Addressは、Funded Orderを生成するために、UserAがCoinAを送信しなければならないアドレスである。Final_Addressは、注文が完了する場合又はその時に、CoinBを送信してもらいたいとUserAが望むアドレスである。Refund_Addressは、注文が完了しない場合、即ち、注文が期限切れとなる場合、CoinAの返還送信してもらいたいとUserAが望むアドレスである。更に言えば、Merchant_Addressが存在し、該アドレスは、注文が完了したときに、取引所がCoinAを送信することを望むアドレスである。
一実施形態において、あるパーティにとって、別のパーティの資金を搾取したり、持っていくことができない。マルチシグアカウントから、資金を送信又は移動させるには、少なくとも2つの署名が必要である(2つのパーティから1つずつ)。もしも、2つの署名が無い場合には、資金は移動させることができない。従って、この均衡状態において、他者の承認なしでアクセスできるパーティは存在しない。もしも、取引所が、承認なく、ユーザーのお金を持っていこうと望む場合、ルールベースのoracle又はユーザーに、彼らの署名を提供してもらうよう説得しなくてはならず、取引所は完結させることができない。
一実施形態において、以下の内容を、注文生成の際にoracleに送信する:Final_Address(注文を完結させる際にCoinBを送信すべきユーザーのアドレス);Expected Amount(注文を完結させる際に、Final_Addressに送信すべき量);Merchant_Address(Merchant_Address又はExchange_Address、注文を完結させる際にCoinAの受け取り先となる);Refund_Address(注文が完結しない場合にCoinAの受取先となるユーザーのアドレス);及びExpiration_Time(注文を終了し、及びCoinAがRefand_Addressに返還された後のUTC日時)。一実施形態において、リターンデルタ(即ち、ユーザーが返還を要求した後、注文が完結しなかったことを確認するために、oracleが待機する時間量)についても、変数として送信してもよく、又は、oracle内で特定の期間を設定してもよい。
一実施形態において、CoinBに関して申し出価格が、ユーザーが望む価格とマッチする。この場合、取引所は、CoinBの資金を、ユーザーのFinal_Addressに送信するであろう。取引所は、その後、oracleに、CoinA資金をMerchant_Addressへ移動させるための連署を要求する。oracleは、Final_Addressをチェックし、そして、もしも、資金が、Expected Amount内に存在している場合には、oracleは、取引所とともに、CoinA資金をMerchant_Addressへ移動させる旨のサインを行う(完全に又は部分的に、これは、注文がどの程度完了したかに基づく)。
一実施形態において、もしも、ユーザーが注文をキャンセルしたい場合、ユーザーは、oracleに、注文キャンセルの要求を送信することができる。oracleは、所定の時間(リターンデルタ)待機し、そして、Final_Addressがいかなる預入資金も、Expected_Amountにおいて受け取っていないことを確認するためのチェックを行う。その後、生成時に指定したReturn_AddressへCoinAを移動させる旨のサインをユーザーとともに行う。
一実施形態において、ユーザーが注文をキャンセルしたい場合、ユーザーは、取引所に連絡して、注文をキャンセルすることができる。該実施形態において、ユーザーは、取引所と共に、oracleの代わりに、キャンセルの確認を行い、及び取引所は、返還に関して連署する(最も可能性が高いのは手動で)。こうしたことは、例えば、oracleがオフラインであったり、消失している場合に行われる。この方法で、注文が完結しない場合、又は、oracleが消失した場合、ユーザーは、常に、ユーザーの資産を取り戻すことができる。
一実施形態において、注文が期限切れとなった場合、原因として、注文が完結することなく期限に達した場合、取引所又はユーザーが要求しなくても、全額返還が自動的に行われるであろう。期間経過すると、トランザクションは、oracleによってサインされ、CoinAがReturn_Addressへ返還される。こうしたことを発生させるために、生成時に、Returnトランザクションが、oracleに付与され、そして、ユーザー鍵によるサインが行われる。こうしたことは、oracleによって自動的に行われてもよく、又は、oracle無しでも、プロトコルを用いて行うことができる(例えば「checklocktimeverify」をブロックチェーン内に構築)(図7参照)。
一実施形態において、注文が完結する前に取引所が存在しなくなった場合、oracleは、経過時間まで待って、通常通りのことを発生させる、又は、Returnトランザクションに自動的にサインするのいずれかであってもよい(なぜならば、Oracleは、既に、UserAによってReturnトランザクションの連署がなされている)。該実施形態において、CoinAは、Refund_Addressに送信される
一実施形態において、oracleが存在しなくなったとしても、ユーザーに返還される。oracle以外に取引所と連署するものがいないという理由から、Limit注文を完結した場合、いったんoracleがもはや有効ではないと判断されると、取引所は、全てのLimit注文をキャンセルして、及びCoinAのユーザーへの返還のサインをそれぞれ行うことができる。
一実施形態において、ユーザーの鍵が盗まれたとしても、ユーザーは資金を失うことは無い。盗まれた鍵は、CoinAをRefund_Addressへ返還することを要求するためだけにしか使えない(なぜならば、oracleはそのアドレスに連署するだけだからである)。このことは、ユーザーの鍵が盗まれたとしてもユーザーからリスクを除外し、そして、取引所及びoracleの責任を制限する。
一実施形態において、もしも、取引所の鍵が盗まれたとしても、取引所は資金を失うことは無い。なぜならば、Merchant_Addressが生成時に設定され、このケースは、ユーザー鍵が盗まれた場合と同じだからである。鍵を盗んだパーティは、CoinAを取引所に送ることができるに過ぎない。なぜならば、oracleが連署するであろう唯一のアドレスだからである。従って、取引所の鍵が盗まれたとしても、取引所にとってリスクはない。
一実施形態において、取引所のシステムが悪化した場合、システム内の、顧客装置、oracle又は他のコンピュータは、全てのユーザー注文について、Refund_Addressへ返還するよう要求することができる。従来の取引とは違って、例示的なシステムにおいてこうしたことが起こった場合、ユーザーの資産は危険な状態にはなく、なぜならば、oracleは悪化しておらず、ユーザーのRefund_Addressへ資金を送信するだけだからである。
一実施形態において、oracleが悪化したとしても、資金は安全である。もしもoracleが悪化した場合、悪意あるアドレスへのトランザクションにサインできるかもしれない。しかしこれは不可能である。なぜならば、oracleは、暗号通貨の所有権を移動させるために、ユーザー又は取引所のいずれかとの連署が必要だからである。これにより、資金の損失が発生する前に、3つのエンティティのうち2つについて悪化させる必要がある。一実施形態において、もしも、ユーザー又は取引所が、oracleが悪化していると確信した場合、どちらかが、一方的に、ユーザーの資金をRefund_Addressへ返還するよう制定できる(なぜならば、各々は、既に、部分的にサインされた返還トランザクションを有しているからである)。
一実施形態において、生成時に、以下の情報がoracleからリターンされる:deposit address(即ち、注文をアクティベートするためにユーザーがCoinAを送信する先となるマルチシグアドレス);TX complete(Merchant_Addressに対してまだサインされていないトランザクションであって、トランザクションを完了させるためにoracleがサインするべきもの);及びTX return_a(Refund_Addressに対するトランザクションであって、ユーザー鍵及びoracle鍵によってあらかじめサインがなされており、取引所へ与えられるもの)。一実施形態において、TX return_b(Refund_Addressに対するトランザクションであり、ユーザー鍵及び取引所の鍵によってサインされる)も、アカウント生成時にoracleへ送信することができる。
一実施形態において、新たな所有者への資金を移動すべきかどうかの唯一の決定が、oracleと共にある(予め記載したルールに従う)。この理由として、取引所は、常にユーザーのお金を欲しがっていることから、自分自身に対する取引には常にサインしてしまう。そして、ユーザーは、新しい資産を欲しているため、自分自身への取引には常にサインしてしまう。従って資産スイッチを発生させるための権限を、oracleに存在させ、oracleは、コード内に、特定のルールだけを構築することができる。Oracleは、公に利用可能なブロックチェーンを監視し、及びユーザーアカウントがその通貨を受け取ったかどうか、及びいつ受け取ったかを検出する。もし、移動を確認できる場合、第1のアクションをとる。もしも、取引を確認できない場合、第2のアクションをとることができる。資金が預けられた旨のパブリックなブロックチェーンに対するアップデートからの確認が行われるまで動作しない。oracleは、パブリック情報に基づいて、ユーザー又は取引所の入力なしで、自動的に動作し、2つのパーティ間だけの利己的なトランザクションを、プログラム的に、公平で、安全で、誠実なものとする。もしも、充分で、客観的で、公に確認可能な条件を満たした場合、満たされた度合に比例して、CoinAが取引所に移動する。もしも、条件を満たさない場合、満たさない度合に比例して、CoinAは常にユーザーのもとへ戻される。
以下では、図面に示した例示的な実施形態について参照する。そして、具体的な言語を用いてこれらを説明する。しかし、以下の点を理解されたい:これにより、本発明の範囲を制限することを意図しているわけではない。ここで説明した発明に関する特徴の置換及び更なる変更、並びに、ここで説明した本発明の原理の更なる応用は、関連分野の当業者にとってなし得るものであり、そして、本開示に含まれるものであり、本発明の範囲内であると考える。
以下、例示的な本開示の実施形態が示される添付図を参照しながら、本開示について更に完全な形で説明する。しかし、本開示は、数多くの異なる形態で実施することができ、そして、必ずしも、例示的な本明細書に記載の実施形態に限定されるものとして解釈すべきではない。むしろ、こうした例示的実施形態を提供することで、当業者にとって、本開示が、本開示の概念に綿密に、そして、完全に、そして、充分に従うこととなる。更には、ある特定の例示的実施形態に関して説明した特徴は、様々な他の例示的実施形態中に、及び/又はこれとともに組み合わせることができる。本明細書に記載の例示的実施形態の異なる態様及び/又は要素は、同様の態様で組み合わせることができる。更に幾つかの例示的実施形態では、個別的及び/又は集合的にかかわらず、より大きなシステムの構成要素であってもよく、ここで、他の手順が、この応用において先立ってもよく、及び/又は、当該応用を変更してもよい。更に言えば、本明細書に記載の例示的実施形態の前、後、及び/又は同時に、複数のステップを必要としてもよい。以下の点を留意されたい:即ち、少なくとも本明細書に記載の任意の及び/又は全ての方法及び/又はプロセスは、任意の態様で、少なくとも1つのエンティティによって、少なくとも部分的に実行されてもよい。
ここで使用される用語は、直接的な又は間接的な、完全な又は部分的な、一時的な又は永遠の活動又は無活動を示唆することができる。例えばある要素が、他の要素に対して、「〜の上(on)」、「接続され(connected)」又は「結合され(coupled)」るものとして言及した場合、当該要素は、他の要素上に直接存在してもよく、接合されてもよく、又は結合されてもよく、及び/又は介在要素が存在してよく、直接的及び/又は間接的な変形を含む。一方で、ある要素が、他の要素に「直接接続」又は「直接結合」されるものとして言及した場合には、介在要素は存在しない。
本明細書では、用語として、第1、第2等を用いて、様々な要素、構成要素、領域、層及び/又はセクションを記載することができるが、これらの要素、構成要素、領域、層及び/又はセクションは、必ずしもこうした用語によって限定されるべきものではない。これらの用語は、一方の要素、構成要素、領域、層又はセクションを、別の要素、構成要素、領域、層又はセクションと区別するためだけに用いるにすぎない。従って、以下で議論する第1の要素、構成要素、領域、層又はセクションは、本開示の教示内容から逸脱することなく、第2の要素、構成要素、領域、層又はセクションと称してもよい。
ここで使用される用語は、特定の実施形態を説明することだけを目的としており、そして、本開示を限定することを必ずしも意図するものではない。本明細書で使用されるが、単数形「a」「an」及び「the」は、文脈上明示しない限り、複数形も含むことを意図している。明細書で用いる際の用語「含む」(「comprises」、「includes」及び/又は「comprising」、「including」)は、記述した特徴、整数、ステップ、操作、要素、及び/又は構成要素の存在を特定する、しかし、1以上の他の特徴、整数、ステップ、操作、要素、構成要素及び/又はこれらのグループの存在又は追加を排除するものではない。更に、選択的用語は、必ずしも排他的なものとして限定するべきではなく、包含的なものとしてもよい。
規定しない限り、ここで使用される全ての用語は、科学技術用語も含めて、本開示内容が属する分野の当業者が通常理解するのと同じ意味を有する。用語(例えば、通常使用する辞書で規定されるもの)は、関連分野の文脈での当該用語の意味と合致する意味を有するものとして解釈すべきであり、及び本明細書にてそのように明示的に規定しない限り、理想化されて、及び/又は過度にフォーマルな意味で解釈されるべきものではない。
本明細書で使用される用語「約」及び/又は「実質的に」は、記載した値/期間から最大で±10%の変化及びこれを含むものを意味する。こうした変化は、こうした変化が具体的に特定されているかいないかにかかわらず、本明細書で記載された任意の所与の値/期間において常に含まれる。
任意の開示が参照により本明細書に組み込まれ、且つこうした開示が、部分的に及び/又は全体として、本開示と齟齬が生じている場合、齟齬の程度において、及び/又は、より広義な開示において、及び/又は、より広義な用語の意味において、本開示を優先する。こうした開示内容が互いに部分的に及び/又は全体として齟齬が生じている場合、齟齬の度合において、後日の開示内容を優先する。
図1は、例示的な実施形態に従った例示的なシステム(100)の構成要素を示す。取引サービス(101)は、1以上の取引サーバー(103)及び1以上のトランザクションデータベース(105)を含む。取引サーバー(103)は、任意の汎用目的又は特定目的のコンピュータであってもよい。これは、単独のコンピュータであってもよく、これは、ハードウェア及び/又はソフトウェアサーバー、ワークステーション、デスクトップ、ラップトップ、タブレット、携帯電話、メインフレーム、スーパーコンピューター、サーバーファーム等々であってもよい。コンピュータは、直接的に及び/又は間接的に、以下によって動作し、及び/又は以下を代表して動作してもよい:取引所。コンピュータは、タッチスクリーン及び/又は非タッチスクリーンであってもよい。コンピュータは、別のコンピュータシステム及び/又はクラウドネットワークを含んでもよく、及び/又は、これらの一部であってもよい。コンピュータは任意のタイプのOSを実行することができる(例えばiOS(登録商標)、Windows(登録商標)、Android(登録商標)、Unix(登録商標)、Linux(登録商標)及び/又は他のOS)。コンピュータは、以下を含んでもよく、及び/又は以下と結合してもよい:入力装置(例えばマウス、キーボード、カメラ(前向き及び/又は後ろ向きに関係なく)、アクセラメーター、タッチスクリーン及び/又はマイクロフォン)及び/又は出力装置(例えば表示装置、スピーカー、及び/又は印刷装置)。コンピュータは、ネットワーク(102)と通信している(例えば直接的に及び/又は間接的に)。こうした通信は、ソフトウェア・アプリケーション、モバイルアプリ、ブラウザ、OS及び/又は任意のこれらの組合せを介したものであってもよい。コンピュータは、全地球測位のための回路を含むことができる(例えばGPS、信号の三角測量システム等々を介して)。コンピュータは、NFC回路を備えてもよい。コンピュータはデータベースを実行してもよく(例えばリレーショナルデータベース)、これらはユーザー情報及びアカウント情報を含む。
トランザクションデータベース(105)は、別個のデータベースであってもよく、又はコンピュータ若しくは取引サーバー(103)を管理するコンピュータに組み込まれてもよい。これらは、リレーショナルデータベース、フラットファイル、セグメント化データベース、又は任意の他の形態若しくは構造であってもよい。データベース(105)は、取引サービス(101)によって管理されてもよく、又は、サードパーティによって管理されてもよい。顧客装置(107)は、モバイル装置、タブレット、コンピュータ、ラップトップ、ポータブル・コンピューティング・デバイス、静止したコンピューティング・デバイス、データ入力端末又はダム端末であってもよい。これらは、有線の若しくは無線の装置であってもよく、そして、スタンドアロン型の装置であってもよく、又はネットワークと結合した物であってもよい。
サードパーティコンピュータ(109)は、コンピュータ又はサーバーであってもよく、これは、ハードウェア及び/又はソフトウェアサーバー、ワークステーション、デスクトップ、ラップトップ、タブレット、携帯電話、メインフレーム、スーパーコンピューター、サーバーファーム等々であってもよい。コンピュータは、直接的に及び/又は間接的に、以下によって動作し、及び/又は以下を代表して動作してもよい:oracle。コンピュータは、タッチスクリーン及び/又は非タッチスクリーンであってもよい。コンピュータは、別のコンピュータシステム及び/又はクラウドネットワークを含んでもよく、及び/又は、これらの一部であってもよい。コンピュータは任意のタイプのOSを実行することができる(例えばiOS(登録商標)、Windows(登録商標)、Android(登録商標)、Unix(登録商標)、Linux(登録商標)及び/又は他のOS)。コンピュータは、以下を含んでもよく、及び/又は以下と結合してもよい:入力装置(例えばマウス、キーボード、カメラ(前向き及び/又は後ろ向きに関係なく)、アクセラメーター、タッチスクリーン及び/又はマイクロフォン)及び/又は出力装置(例えば表示装置、スピーカー、及び/又は印刷装置)。コンピュータは、ネットワーク(102)と通信している(例えば直接的に及び/又は間接的に)。こうした通信は、ソフトウェア・アプリケーション、モバイルアプリ、ブラウザ、OS及び/又は任意のこれらの組合せを介したものであってもよい。コンピュータは、全地球測位のための回路を含むことができる(例えばGPS、信号の三角測量システム等々を介して)。コンピュータは、oracleアプリケーションを実行してもよい。
1以上のネットワーク(102)は、複数のノードを含むことができ(例えば通信チャンネルによって相互接続されるコンピュータ及び/又は他のハードウェアの集合)、これにより、リソース及び/又は情報の共有を可能にすることができる。こうした相互接続は直接的及び/又は間接的であってもよい。ネットワーク(102)は、有線であってもよく、及び/又は無線であってもよい。ネットワーク(102)は、近距離及び/又は長距離にわたる通信を可能にすることができる。ネットワーク(102)は、少なくとも1つのネットワークプロトコルを介して動作することができる(例えばイーサネット(登録商標)、伝送コントロールプロトコル(TCP)/インターネットプロトコル(IP)等々)。ネットワーク(102)は、任意のスケールであってもよい(例えばパーソナル・エリア・ネットワーク、ローカル・エリア・ネットワーク、ホーム・エリア・ネットワーク、ストレージ・エリア・ネットワーク、キャンパス・エリア・ネットワーク、バックボーン・ネットワーク、メトロポリタン・エリア・ネットワーク、ワイド・エリア・ネットワーク、エンタープライズ・プライベート・ネットワーク、バーチャル・プライベート・ネットワーク、バーチャル・ネットワーク、衛星ネットワーク、コンピュータ・クラウド・ネットワーク、インターネットワーク、セルラー・ネットワーク、等々)。ネットワーク(102)は、イントラネット及び/若しくはエキストラネットであってもよく、並びに/又は、イントラネット及び/若しくはエキストラネットを含んでもよい。ネットワーク(102)は、インターネットであってもよく、及び/又はインターネットを含んでもよい。ネットワーク(102)は、他のネットワークを含んでもよく、及び/又は、他のネットワークとの通信を可能にするものであってもよい(サブネットワークであるか及び/又は固有のネットワークであるかを問わず、ネットワーク(102)との同一及び/又は相違を問わず)。ネットワーク(102)は、ハードウェアを含むことができる(例えばネットワーク・インターフェース・カード、リピータ、ハブ、ブリッジ、スイッチ及び/又はファイアウォール)。ネットワーク(102)は、1以上のエンティティによって、及び/又はこれを代表して、直接的に及び/又は間接的に動作してもよい。
図2は、本開示のネットワーク環境の例示的実施形態を示す。例示的なシステム(20)の環境は、ネットワーク(204)、UserA(200)、oracle(201)及び取引所(202)を含む。
ネットワーク(204)は、複数のノードを含むことができ(例えば通信チャンネルによって相互接続されるコンピュータ及び/又は他のハードウェアの集合)、これにより、リソース及び/又は情報の共有を可能にすることができる。こうした相互接続は直接的及び/又は間接的であってもよい。ネットワーク(204)は、有線であってもよく、及び/又は無線であってもよい。ネットワーク(204)は、近距離及び/又は長距離にわたる通信を可能にすることができる。ネットワーク(204)は、少なくとも1つのネットワークプロトコルを介して動作することができる(例えばイーサネット(登録商標)、伝送コントロールプロトコル(TCP)/インターネットプロトコル(IP)及び等々)。ネットワーク(204)は、任意のスケールであってもよい(例えばパーソナル・エリア・ネットワーク、ローカル・エリア・ネットワーク、ホーム・エリア・ネットワーク、ストレージ・エリア・ネットワーク、キャンパス・エリア・ネットワーク、バックボーン・ネットワーク、メトロポリタン・エリア・ネットワーク、ワイド・エリア・ネットワーク、エンタープライズ・プライベート・ネットワーク、バーチャル・プライベート・ネットワーク、バーチャル・ネットワーク、衛星ネットワーク、コンピュータ・クラウド・ネットワーク、インターネットワーク、セルラー・ネットワーク、等々)。ネットワーク(204)は、イントラネット及び/若しくはエキストラネットであってもよく、並びに/又は、イントラネット及び/若しくはエキストラネットを含んでもよい。ネットワーク(204)は、インターネットであってもよく、及び/又はインターネットを含んでもよい。ネットワーク(204)は、他のネットワークを含んでもよく、及び/又は、他のネットワークとの通信を可能にするものであってもよい(サブネットワークであるか及び/又は固有のネットワークであるかを問わず、ネットワーク(204)との同一及び/又は相違を問わず)。ネットワーク(204)は、ハードウェアを含むことができる(例えばネットワーク・インターフェース・カード、リピータ、ハブ、ブリッジ、スイッチ及び/又はファイアウォール)。ネットワーク(204)は、1以上のエンティティによって、及び/又はこれを代表して、直接的に及び/又は間接的に動作してもよい(UserA(200)、oracle(201)及び/又は取引所(202)との関係性に関連なく)。
UserA(200)はコンピュータを操作し、これは、ハードウェア及び/又はソフトウェアサーバー、ワークステーション、デスクトップ、ラップトップ、タブレット、携帯電話、メインフレーム、スーパーコンピューター、サーバーファーム等々であってもよい。コンピュータは、直接的に及び/又は間接的に、以下によって動作し、及び/又は以下を代表して動作してもよい:UserA(200)。コンピュータは、タッチスクリーン及び/又は非タッチスクリーンであってもよい。コンピュータは、別のコンピュータシステム及び/又はクラウドネットワークを含んでもよく、及び/又は、これらの一部であってもよい。コンピュータは、任意のタイプのオペレーティングシステム(OS)を実行することができる(例えばiOS(登録商標)、Windows(登録商標)、Android(登録商標)、Unix(登録商標)、Linux(登録商標)及び/又は他のOS)。コンピュータは、以下を含んでもよく、及び/又は以下と結合してもよい:入力装置(例えばマウス、キーボード、カメラ(前向き及び/又は後ろ向きに関係なく)、アクセラメーター、タッチスクリーン及び/又はマイクロフォン)及び/又は出力装置(例えば表示装置、スピーカー、及び/又は印刷装置)。コンピュータは、ネットワーク(204)と通信している(例えば直接的に及び/又は間接的に)。こうした通信は、ソフトウェア・アプリケーション、モバイルアプリ、ブラウザ、OS及び/又は任意のこれらの組合せを介したものであってもよい。コンピュータは、全地球測位のための回路を含むことができる(例えばGPS、信号の三角測量システム等々を介して)。コンピュータは、近距離無線通信(NFC)回路を備えてもよい。
oracle(201)は、コンピュータを操作し、これは、ハードウェア及び/又はソフトウェアサーバー、ワークステーション、デスクトップ、ラップトップ、タブレット、携帯電話、メインフレーム、スーパーコンピューター、サーバーファーム等々であってもよい。コンピュータは、直接的に及び/又は間接的に、以下によって動作し、及び/又は以下を代表して動作してもよい:oracle(201)。コンピュータは、タッチスクリーン及び/又は非タッチスクリーンであってもよい。コンピュータは、別のコンピュータシステム及び/又はクラウドネットワークを含んでもよく、及び/又は、これらの一部であってもよい。コンピュータは任意のタイプのOSを実行することができる(例えばiOS(登録商標)、Windows(登録商標)、Android(登録商標)、Unix(登録商標)、Linux(登録商標)及び/又は他のOS)。コンピュータは、以下を含んでもよく、及び/又は以下と結合してもよい:入力装置(例えばマウス、キーボード、カメラ(前向き及び/又は後ろ向きに関係なく)、アクセラメーター、タッチスクリーン及び/又はマイクロフォン)及び/又は出力装置(例えば表示装置、スピーカー、及び/又は印刷装置)。コンピュータは、ネットワーク(204)と通信している(例えば直接的に及び/又は間接的に)。こうした通信は、ソフトウェア・アプリケーション、モバイルアプリ、ブラウザ、OS及び/又は任意のこれらの組合せを介したものであってもよい。コンピュータは、全地球測位のための回路を含むことができる(例えばGPS、信号の三角測量システム等々を介して)。コンピュータは、NFC回路を備えてもよい。コンピュータはデータベースを実行してもよく(例えばリレーショナルデータベース)、これらはユーザー情報及び/又はアカウント情報を含む。取引所(202)は、コンピュータを操作し、これは、ハードウェア及び/又はソフトウェアサーバー、ワークステーション、デスクトップ、ラップトップ、タブレット、携帯電話、メインフレーム、スーパーコンピューター、サーバーファーム等々であってもよい。コンピュータは、直接的に及び/又は間接的に、以下によって動作し、及び/又は以下を代表して動作してもよい:oracle(201)。コンピュータは、タッチスクリーン及び/又は非タッチスクリーンであってもよい。コンピュータは、別のコンピュータシステム及び/又はクラウドネットワークを含んでもよく、及び/又はこれらの一部であってもよい。コンピュータは任意のタイプのOSを実行することができる(例えばiOS(登録商標)、Windows(登録商標)、Android(登録商標)、Unix(登録商標)、Linux(登録商標)及び/又は他のOS)。コンピュータは、以下を含んでもよく、及び/又は以下と結合してもよい:入力装置(例えばマウス、キーボード、カメラ(前向き及び/又は後ろ向きに関係なく)、アクセラメーター、タッチスクリーン及び/又はマイクロフォン)及び/又は出力装置(例えば表示装置、スピーカー、及び/又は印刷装置)。コンピュータは、ネットワーク(204)と通信している(例えば直接的に及び/又は間接的に)。こうした通信は、ソフトウェア・アプリケーション、モバイルアプリ、ブラウザ、OS及び/又は任意のこれらの組合せを介したものであってもよい。コンピュータは、全地球測位のための回路を含むことができる(例えばGPS、信号の三角測量システム等々を介して)。コンピュータは、NFC回路を備えてもよい。コンピュータはデータベースを実行してもよく(例えばリレーショナルデータベース)、これらは支払情報を含む。
UserA(200)は、ネットワーク(204)と通信している(例えば直接的、間接的、暗号化、非暗号化、及びその他)。UserA(200)は、ネットワーク(204)を介して、oracle(201)及び/又は取引所(202)のうち少なくとも1つと選択的に通信してもよい(例えば直接的、間接的、暗号化、非暗号化、及びその他)。
UserA(200)は、消費者及び/又は法人(例えば組織、会社、パートナーシップ、及び/又はその他)であってもよい。oracle(201)は、ネットワーク(204)と通信している(例えば直接的、間接的、暗号化、非暗号化、及びその他)。oracle(201)は、ネットワーク(204)を介して、UserA(200)及び取引所(202)のうち少なくとも1つと、選択的に通信している(例えば直接的、間接的、暗号化、非暗号化、及びその他)。例えば、oracle(201)は、取引所(202)に関する取引所(202)のアクアイアラと通信してもよい。例えば、oracle(201)は、Eメール又は任意の他の通信手段を介して、UserA(200)と通信してもよい。
oracle(201)は、金融機関(例えば銀行)、取引所、セキュアサーバー、及び/又は、その他、及び/又は任意の他の組織を含むことができ、これらは、ブロックチェーン資産の取引及び管理に従事している。
oracleは、金融機関であってもよく、これは、取引所(202)に関するブロックチェーン資産トランザクションの受領及び/又は処理を行う(取引所(202)のアカウントの借方又は貸方を含む)。こうした受領及び/又は処理は、取引所(202)を介してUserA(200)に提供される商品及び/又はサービスのためである。oracleは、また、サーバー若しくは一連のサーバーであってもよく、又は、コンピュータ若しくはサーバー上で自動的に実行されるアプリケーション若しくは一連のアプリケーションであってもよい。取引所(202)は、ネットワーク(204)と通信している(例えば直接的、間接的、暗号化、非暗号化、及びその他)。取引所(202)は、ネットワーク(204)を介して、UserA(200)及びoracle(201)のうち少なくとも1つと選択的に通信している(例えば直接的、間接的、暗号化、非暗号化、及びその他)。取引所(202)は、個人の、組織の、及び/又はビジネスの受領ブロックチェーン資産トランザクションを含む(直接的及び/又は間接的にかかわらず)。取引所(202)は、営利法人、非営利法人、政府機関、及び/又はその他を含む。取引所(202)は、オンライン取引所、実店舗の取引所、及び/又は任意のこれらの組合せを含む。以下の点を留意されたい:即ち、本明細書において、任意の量の売買元又は取引所(202)を使用することができる。UserA(200)は取引所(202)であってもよく、及び/又は取引所(202)はUserA(200)であってもよい。
図3は、本開示に従った実施形態を示す。UserA(200)は、非カストディアルな注文(NCO)トランザクション要求(304)を、取引所(202)と共に生成し、その際に、UserAが所持し且つ交換を望むCoinAの種類、及び任意でその量を指定する。UserAは、以下を指定する:コインの種類、UserAが獲得を望むCoinB、CoinBの所望の価格、Final_Address、Refund_Address、及び注文をどれくらいの長さで行うべきか、即ち、期間(時間又は日)。一実施形態において、CoinBのExpected Amountは価格から自動的に確立される。
これに応じて、oracle(201)は、これらの指定された基準を用いて、Unfunded Order(305)を生成し、そして、UserAに対して、CoinAを、2/3マルチシグのPayment_Addressに送信するよう要求する。UserA、oracle及び取引所は、みな、公開鍵機能に基づいて、鍵を生成し、そして、どのパーティも他のパーティの鍵を見ることができない。ユーザーの鍵については、明示的にユーザーに提示されるか、又は、ユーザーのブラウザウィンドウ内(クライアントサイド)に安全に保持されるかのいずれかが行われてもよい。
いったん、Unfunded Orderが確立されると、UserAは、CoinAを、指定されたPayment_Addressに送信する。ステップ(306)にて、UserAがCoinAを指定のPayment_Addressに送信した旨のコンファメーションをシステムは待つ。コンファメーションについては、ブロックチェーン情報を監視し、資金がいつ移動したのかを決定することによって得られる。いったん支払いのコンファメーションが行われると、注文は、Unfunded Orderから、Funded Orderへと移行する(307)。もしも、UserA(200)が特定の期間内に支払を送信しない場合、Unfunded Orderは、oracle(201)によってクローズされる。この時点で、CoinAは、2/3マルチ署名アカウント内に保持され、3つの鍵については、UserA、oracle及び取引所それぞれによって保持される。
ステップ(308)にて、システムは、UserAが注文をキャンセルしたかどうかを決定する。もしも注文がUserA(200)によってキャンセルされた場合、キャンセルの時点でCoinBのExpected AmountがFinal_Addressにないのであれば、oracle(201)はUserAへの返還にサインを行う。もしも注文がキャンセルされていない場合、システムはステップ(309)へと進む。ステップ(309)にて、システムは、注文期間が過ぎていないかどうかを見るためのチェックを行う。もしも、ステップ(309)において、期限経過が原因となって注文が期限切れとなった場合、oracle(201)は、ステップ(310)にて、UserAのCoinAを、Refund_Addressに返送する。この方法では、全ての注文は、完了するか、キャンセルされるか、又は期限切れとなるかのいずれかであり、そして、oracleはUserAのコイン、又は取引所のcoinBを保持することは無い。当該システムはUserA(200)にとって安全であり、なぜならば、取引所(202)は、CoinBをUserAに送信した後でなければ、UserAのCoinAを取ることができないからである。本開示において、当該システムは、いったんcoinBが送信された後の取引所にとっての安全性をもたらし、なぜならば、UserAは、いったんCoinBが送信されると注文をキャンセルできないからである。そして、UserAにとってもリスクが無く、なぜならば、UserAのCoinAは、トランザクションがキャンセルされたり、又は期限切れになると、返還されるからである。
一実施形態において、ステップ(312)でのoracle(201)によるExpected Amountのチェックは、「競合」条件を防止するためにUserAのサインを受け取ったいくばくかの時間後に行われる。一実施形態において、こうしたことは、UserAのサインを関連するクライアントコンピュータから受け取った後のおおよその時間(任意の時間を用いても良いが)で行ったが、しかし、期間は、任意の短い期限であってもよい。もしも、ステップ(312)において、CoinBのExpected AmountがFinal_Addressにない場合、oracle(201)は、ステップ(308)で注文がキャンセルされるか、又はステップ(309)で期限切れになっているのであれば、CoinAをUserAに送信する移動動作にサインをし、そうでない場合には、ステップ(311)にて、取引所(202)がcoinBをPayment_Addressに送信するのを待つ。
もしも、取引所(202)が、ステップ(313)にて、CoinBのExpected Amountを、Final_Addressに送信している場合、oracleは、取引所への支払いにサインをし、そして、oracleは、CoinAをMerchant_Addressに送信し、及び、coinBを、UserAへ、指定のFinal_Addressに送信し、注文を完結させる。
図4は、公開鍵の生成及び注文完了に用いられるシステム及び方法及びステップの別の実施形態を説明する。ステップ(401)にて、データをUserAによって、ブロックチェーン資産取引に従事する要求を示すブラウザ又は他の入力ポータルから入力する。一実施形態において、ユーザーアカウントを生成してデータ入力を促進する。別の実施形態では、アカウントは必要ではなく、及び注文データが、単純に、ユーザー、取引所及びoracleの間に送信される。
UserAは、注文量、交換通貨、及び注文を適所で維持すべき期間を入力することができる。また、UserAは、情報を入力して、公開鍵Key1を生成する。他のユーザーがアクセスできないクライアントサイドのコードを用いるUserAのブラウザは、公開鍵Key1を生成する。このことにより、公開鍵がUserA以外誰にもアクセスできないことを保証する。いったんKey1が生成されると、当該鍵は保存される。トランザクションにおいて重要となるデータ及びKey1は、ステップ(402)にて取引所に渡される。ステップ(403)にて、取引所は、UserAが生成したKey1を用いて、公開鍵Key2を生成し、及びトランザクションに必要な任意の他のデータを生成する。これらの鍵は、マルチシグアカウント上でのサインとして作用する。
いったん、Key2が生成されると、ステップ(404)にて、ユーザーの公開鍵Key1及び取引所の公開鍵Key2が両方ともoracleへ送信される。ステップ(405)にて、oracleは、受け取った情報をすべて用いて、公開鍵Key3を生成し、そして、これを、Key1及びKey2を組み合わせて、マルチシグアカウントに関するDeposit_Addressを生成する。ステップ(406)にて、oracleは、このアドレスを、取引所へ戻す。取引所は、ステップ(407)にて、データを用いて、unfunded Limit注文を生成する。ステップ(408)にて、Deposit_AddressがUserAに送信される。ステップ(409)にて、UserAは、Deposit_Addressへ資金を移動させる。
図5は、本開示のシステム及び方法における第2ステップを描写する。ステップ(501)にて、取引所は、ネットワーク上のブロックチェーンデータをチェックし、ステップ(405)にて生成されたDeposit_Addressに資金が送信されたかどうかを確認する。いったん、UserAが当該アドレスに資金を送信したことのコンファメーションがなされると、ステップ(502)にて、取引所は、ユーザートランザクションへのリターンを生成し、サインする。ステップ(503)にて、ユーザートランザクションへのリターン及びreturn_aドキュメントが、保存のためにoracleへ送信される。これは、実質的には、ユーザーからのリターンアドレスである。リターンアドレスは、資金をユーザーに返還することができる唯一のアドレスである。これはセキュリティ目的で行われ、この結果、誰かがユーザーの鍵に後でアクセスしたり、アドレスを変更したり、異なるアドレスへ通貨を送信させたりすることができない。実質的には、取引所がこのリターンのトランザクションにサインをし、そして、これを、保存のためにoracleに付与する。かくして、もしも、oracleがユーザーに返還を行う必要がある場合、既に取引所からはOKのサインをもらっている。また、ステップ(504)にて、oracleは、このリターンに対するトランザクションへサインをし、そして、ステップ(505)にて、保存のために、これを、取引所に送信する。ステップ(506)にて、取引所は、リターンアドレスを保存し、そして、注文をアクティベートする。このことにより、もしもoracleが消失したとしても、取引所がユーザーに返還できることを保証する。この時点では、取引所は見かけ上注文を遂行しようとする。図5に示すように、ユーザーの資金をユーザーに返還できるのは、oracle又は取引所が消失し、そして、マルチシグアカウントにサインするのに必要なときに利用できない場合である。
図6は、本開示のシステム及び方法の一実施形態において、第3ステップを描写する。図6のステップ(600)にて、Limit注文はアクティブである。ステップ(600)から、可能性として、3つのシナリオがある。注文が完了する場合、注文が期限切れとなる場合、又は注文がキャンセルされる場合である。もしも注文が完了する予定の場合、取引所システムは、以下の点を検索し及び決定する:その注文が実際に完了できるかどうか、そして、いつ完了できるか、即ち、あるアカウントがあって、取引所自体又は他のユーザーがUserAと取引を行いたいかどうか。
ステップ(601)にて、取引所は、取引所で、UserAの注文を(完全に又は部分的に)満たすレートを見つける。ステップ(602)にて、取引所は、トランザクションを生成し、そして、資金の取引を行う。その後、ステップ(603)にて、取引所は、要求された量を(完全に又は部分的に)、UserAのアカウントであるFinal_Addressに送信する。いったんこれが完了すると、ステップ(604)にて、取引所は、預けた資金をそのアカウントへ移動させるトランザクションを要求し、そして、連署のためにその情報をoracleに送信する。ステップ(605)にて、oracleは、ブロックチェーン上のFinal_Addressを確認することにより、資金が(完全に又は部分的に)UserAに送信されたことを、自動的にコンファームする。取引の成功を確認したら、oracleは、そのトランザクションにサインをし(全量又は各々一部)、そして、そのトランザクションを広め、そして、その情報を、取引所に戻す。この時点で、取引所は、自身に対するトランザクションを広め、そして、トランザクションを完了させるために必要な2つのサインを有する。ステップ(606)にて、いったん2つのサインを受け取ると、ユーザーの資金は、取引所に預けられる。
別のシナリオにおいて、注文は完了する前に期限切れとなる。もしも、Limit注文がステップ(601)にて満たされる前に、ステップ(610)にて注文が期限切れとなれば、こうしたことは、起こる可能性がある。一実施形態において、ユーザーが、もともと、ステップ(401)にて、ユーザーの注文及びアカウントを設定するときに、ユーザーが入力したデータの一部分は、期限時間であり、この時点で、注文が満たされないと、自動的にユーザー返還される(もしも注文が部分的に満たされている場合には部分的に返還される)。
ステップ(610)にて期限時間に到達すると、oracleは時間切れを認知し、そして、ステップ(611)にて、取引所がステップ(604)において既にサインした返還にサインをする。その結果、ステップ(612)にて、資金を、ユーザーのアドレスに返還することができる。一実施形態において、期限に到達するまで、又は注文が満たされるまで、ユーザーは、ステップ(620)にて、任意の時間で、注文をキャンセルする旨の決定を行うことができる。
通常は、oracleに連絡するが、ステップ(621)において、一実施形態において、取引所も資金を返還することができる。ステップ(622)にて、取引所又はoracleは、待機して、その後、取り消し用のアドレスに資金が供給されていないことを確認するためのチェックを行う。基本的には、ユーザーが取引所をだまし取ろうとしているわけではないことを確認する。いったん情報がコンファームされると、oracleは、return_aにサインを行い、その結果、ステップ(623)にて、資金はユーザーのもとへ返還することができる。何かしらの理由で、oracleが消失した場合、ステップ(624)にて、ユーザーは、返還を求めて取引所に連絡する。ステップ(625)にて、取引所は、取り消し用のアドレスを確認することで、注文が満たされていないことをコンファームする。このことがコンファームされると、その後、取引所は、return_bにサインを行い、そして、ステップ(626)にて、資金が、ユーザーに返還される。こうしたことが可能となる理由は、oracleが返還に関して予めサインを行っていたからである。一実施形態において、最初に任意のキャンセルが起こった場合、まずは、oracleを通すことを試みる。なぜならば、自動的に処理されるからである。何かしらの理由でoracleが応答しない場合、取引所も通貨を返還することができ、その結果、資金は、誰もアクセスできないところへ失われることもない。
図7は、oracle及び取引所の両方が消失した場合にユーザーに返還するための実施形態を示す。ステップ(701)にて、取引所は、ブロックチェーンを監視することにより、ユーザーがPayment_Addressに資金を提供したことを検出する。いったん資金が検出されると、ステップ(702)にて、取引所は、ReturnトランザクションをユーザーのReturn_Addressに対して生成し、これは、注文期限日及びバッファ時間(例えば、7日間)に関するop_checklocktimeverifyを指定する。oracleは、ステップ(703)にて、このトランザクションに連署し、そして、ステップ(704)にてこれを広める。ユーザーはReturnトランザクションがブロックチェーン上で適所にあることを理解できる。しかし、所定の時間が経過するまで、且つ注文が完結せず、又はしばらくしてキャンセルされた場合、ブロックチェーンにおいてコンファームは行われない。
これは、Bitcoinの特徴である「CheckLockTime」と類似しており、ユーザーにとって、トランザクションを完結し、及びこれらを広めることを可能にするが、しかし、トランザクションは、特定の時間までは、「有効」にならず、又は「コンファーム」されない。本開示において、取引所は、Returnトランザクションを広め、その後、oracle及び取引所がオフラインになろうとも、又は消失しようとも、所定の時間までに完了しなければ、ユーザーは資産を取り戻すことができる。もしも、注文がユーザーのもとへ戻った場合、又は、成功して完了した場合、op_checklocktimeverifyトランザクションは無効になり、なぜならば、資金はすでに送信されているからである。本明細書に記載の実施形態に関連して記載した様々な例示的論理ブロック、モジュール、回路、及びアルゴリズムステップは、電子的ハードウェア、コンピュータソフトウェア又は両者の組合せとして実装できる。ハードウェア及びソフトウェアのこうした相互置換性を明示するべく、様々な例示的な構成要素、ブロック、モジュール、回路、及びステップを、これらの機能の観点から包括的に上述してきた。こうした機能性をハードウェアとして実装するか、又はソフトウェアとして実装するかについては、システム全体に課せられる特定の応用及び設計の制約に依存する。当業者は、各々特定の応用のために様々な方法で、記載の機能を実装することができる。しかし、こうした実装に関する決定は、本発明の範囲から逸脱することをもたらすものと解釈すべきではない。
コンピュータソフトウェアにおいて実装される実施形態は、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、又は任意のこれらの組合せにて実装することができる。コードセグメント又は機械が実行可能な指示は以下を表すことができる:プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、又は指示の組合せ、データ構造又はプログラムステートメント。コードセグメントは、情報、データ、引数、パラメーター又はメモリコンテンツを渡したり及び/又は受け取ったりすることによって、別のコードセグメント又はハードウェア回路と結合してもよい。情報、引数、パラメーター、データ等は、任意の適切な手段(メモリ共有、メッセージ渡し、トークン渡し、ネットワーク伝送等を含む)によって、渡されたり、送られたり、又は送信されたりしてもよい。
これらのシステム及び方法を実装するために使用される実際のソフトウェアコード又は特化したコントロールハードウェアは、本発明を限定するものではない。従って、システム及び方法の動作及び振る舞いは、特定のソフトウェアコードに言及することなく説明してきたが、本明細書の記載に基づいてシステム及び方法を実装するために、ソフトウェア及びコントロールハードウェアを設計することができることを理解されたい。
ソフトウェア内で実装するときには、関数を、1以上の指示又はコードとして、非一時的なコンピュータ可読記憶媒体又はプロセッサ可読記憶媒体上に記憶することができる。本明細書に記載の方法又はアルゴリズムのステップは、プロセッサ実行可能ソフトウェアモジュール内で実施することができ、これらは、コンピュータ可読記憶媒体又はプロセッサ可読記憶媒体上に存在してもよい。非一時的なコンピュータ可読媒体又はプロセッサ可読媒体は、コンピュータストレージ媒体及び有形のストレージ媒体の両方を含み、これらは、コンピュータ・プログラムを1つの場所から別の場所へ移動させることを促進する。非一時的なプロセッサ可読ストレージ媒体は、コンピュータがアクセスできる任意の利用可能な媒体であってもよい。例示的な意味で、及び非限定的な意味で、こうした非一時的なプロセッサ可読媒体は、以下を含むことができる:RAM、ROM、EEPROM、CD−ROM又は他の光学ディスクストレージ、磁気ディスクストレージ、又は他の磁気ストレージ・デバイス又は任意の他の有形のストレージ媒体。これらは、所望のプログラムコードを、指示又はデータ構造の形式で記憶するのに用いることができ、そして、コンピュータ又はプロセッサによってアクセス可能である。ここで使用されるディスク及びディスクは、以下を含む:コンパクトディスク(CD)、レーザーディスク(登録商標)、光学的ディスク、デジタルヴァーサタイルディスク(DVD)、フロッピーディスク(登録商標)、及びブルーレイ(登録商標)ディスク、ここで、ディスクは通常データを磁気的に再現するが、一方で、ディスクは、レーザーにより、データを光学的に再現する。上述の組合せはまた、コンピュータ可読媒体の範囲内に含まれるべきものである。更に言えば方法又はアルゴリズムの操作は、非一時的なプロセッサ可読媒体及び/又はコンピュータ読取可能媒体上で、1つの又は任意の組合せ又はセットのコード及び/又は指示として存在してもよく、コンピュータ・プログラム製品に組み込まれてもよい。
当業者が本発明を製造又は使用できるように、本開示の実施形態を上述した。これらの実施形態に対する様々な変更が、当業者にとって容易に明らかとなるであろう。そして、本発明の思想又は範囲から逸脱することなく、本明細書に記載した包括的な原理を、他の実施形態に適用することができる。従って、本発明は、ここに示した実施形態に限定されることを意図するものではなく、以下の特許請求の範囲及び本明細書に記載の原理及び新規な特徴に合致する最も広い範囲に従ったものとすべきである。
様々な態様及び実施形態を開示してきたが、他の態様及び実施形態も企図している。開示した様々な態様及び実施形態は例示目的であり、そして、限定することを意図してない。ここで、真の範囲及び思想は、以下の特許請求の範囲に示される。
いったん2つの署名を受け取ると(2/3マルチシグシナリオにおいて)、資産を移動させることができる。一実施形態において、もしも、oracle及び販売者(取引所)がサインした場合、資産は取引所へ移動する。もしも、oracle及びユーザーがサインした場合、ユーザーの資金はユーザーに戻る。部分的に注文が完了した場合、oracleは、取引所に移動すべき資産の内、相当分に関してだけサインすることができ、そして、要求により、ユーザーに対して残り分だけサインする。いったん、所望のブロックチェーンを基礎としたデジタル資産の移動が発生すると、取引所又はoracleのいずれかが、当該トランザクションを、ブロックチェーンネットワーク上の全てのノードに広め、世界中でこれと同じトランザクションを記録する。この方法では、全てのブロックチェーン資産トランザクションと同様、中央サーバーが存在しない。パブリックなピアツーピアネットワーク上で、全てのブロックを基礎としたレポートが行われる。
一実施形態において、ステップ(312)でのoracle(201)によるExpected Amountのチェックは、「競合」条件を防止するためにUserAのサインを受け取ったいくばくかの時間後に行われる。一実施形態において、こうしたことは、UserAのサインを関連するクライアントコンピュータから受け取った後のおおよその時間(任意の時間を用いても良いが)で行ったが、しかし、期間は、任意の短い期限であってもよい。もしも、ステップ(312)において、CoinBのExpected AmountがFinal_Addressにない場合、oracle(201)は、ステップ(308)で注文がキャンセルされるか、又はステップ(309)で期限切れになっているのであれば、CoinAをUserAに送信するトランザクションにサインをし、そうでない場合には、ステップ(311)にて、取引所(202)がcoinBをPayment_Addressに送信するのを待つ。