(58)【調査した分野】(Int.Cl.,DB名)
前記メタデータの第1セット及び/又は前記メタデータの第2セットは、暗号鍵のためのロケーションとしてブロックチェーンプロトコルにおいて指示されたロケーションで前記スクリプトにおいて提供される、
請求項1乃至19いずれか一項に記載の方法、もしくは、請求項20に記載のシステム。
【発明の概要】
【0008】
本発明は、添付の請求項において定義されるものである。
【0009】
本発明は、ブロックチェーンを介したアセットのセキュアな制御(control)、及び/又は、移転(transfer)、もしくは交換(exchange)のためのソリューションを提供することができる。ここにおいて、用語「エンティティ(”entity”)」は、「アセット(”asset”)」と互換的に使用されてよい。追加的または代替的に、本発明は、アセットの所有権(ownership)の制御及び/又は移転を可能にし得る。これは、スマートコントラクトといった、デジタルまたは仮想アセット、もしくは、現実世界/物理的なアセットであってよい。アセットは、ライセンスといった権利または使用権、もしくは、あるタイプのプロパティに関するある種の権利であってよい。本発明は、この制御または移転を促進するために、トークナイゼーション技術を使用することができる。本発明は、暗号鍵(cryptographic keys)の使用を組み込んで、移転/交換がセキュアな方法で実行されることを可能にし得る。一方で、根底にあるブロックチェーンプロトコルのあらゆる変更も必要としていない。本発明は、ブロックチェーントランザクション(Tx)に関連するスクリプトの中にメタデータを埋め込むための技術を使用することができる。
【0010】
本発明は、特に、電子的移転のためのメモリ使用の強化された最適化、ハッシュ技術の使用を通じて改善されたセキュリティおよびデータ完全性、信頼できる第三者の必要性を排除することを通じて改善されたセキュリティ、および、強化されたデータの匿名性、を提供する。本発明は、また、異種または別個の当事者が、本発明によって提供される新規な方法及び/又はアーキテクチャを介して、互いを識別し、かつ/あるいは、データ交換することを可能にする改善された通信メカニズムも提供することができる。この利点のリストは、限定的または網羅的ではない。
【0011】
本発明は、種々の別個で、かつ、分離したコンピュータベースのリソースに係る相互作用(interaction)および相互通信(inter-communication)を必要とし得る。1つまたはそれ以上のユーザデバイス、および、ブロックチェーン関連のソフトウェアおよびプロトコルを実行するように構成されたコンピューティングノードを含む、分散コンピュータシステム(ブロックチェーン)、といったものである。
【0012】
本発明は、エンティティの交換をオファーするためのコンピュータで実施される方法を提供することができる。本方法は、
第1スクリプトを生成するステップであり、第1スクリプトは、
第1ユーザによる第1エンティティの交換のための第1インビテーションと関連付けられたメタデータの第1セットであり、交換のために提供される前記第1エンティティの指示および交換のための第1ロケーション条件を含む、メタデータの第1セットと、
第1ユーザと関連付けられた第1ユーザの公開鍵(P1A)であり、第1ユーザの公開鍵(P1A)および第1ユーザの秘密鍵(V1A)を含む非対称暗号ペアの一部である、第1ユーザの公開鍵と、を含むステップと、
第1スクリプトハッシュを生成するために第1スクリプトをハッシュ化するステップと、
分散ハッシュテーブル(DHT)において第1スクリプトおよび第1スクリプトハッシュを発行するステップと、を含んでよい。
第1スクリプトは、第1の第三者と関連付けられた第1の第三者公開鍵(P1T)を含んでよく、ここで、第1の第三者公開鍵(P1T)は、第1の第三者公開鍵(P1T)および第1の第三者秘密鍵(V1T)を含む非対称暗号ペアの一部である。
【0013】
第1スクリプトは、ブロックチェーントランザクション(Tx)と関連付けられたスクリプトであってよい。
【0014】
本方法は、さらに、ピアツーピア(P2P)分散型台帳(すなわち、ブロックチェーン)に包含するために、第1インビテーショントランザクション(Tx)を生成するステップを含み、第1インビテーショントランザクションは、第1エンティティの交換において移転される第2エンティティの指示および第1スクリプトハッシュを含んでいる。
【0015】
P2P分散型台帳は、ビットコインブロックチェーンであってよい。しかしながら、あらゆる他の好適なP2P分散型台帳が想定されることが正しく理解されよう。
【0016】
従って、(引き換え)スクリプトのハッシュは、ブロックチェーントランザクション(Tx)の中で提供されてよく、または、ブロックチェーントランザクションに関連付けられてよい。これは、ビットコインプロトコルに従ったP2SHトランザクション、または、別のブロックチェーンプロトコルにおける別の機能的に同等なトランザクションタイプであってよい。スクリプトのハッシュは、ハッシュテーブルまたは他のストレージリソースに対するルックアップキーとして機能し得る。このストレージリソースは、インビテーションのパブリックドメインリポジトリであってよい。ストレージリソースは、ルックアップキー(すなわち、ハッシュ)、および、組み合わせて、インビテーションを定義するメタデータからの全てのフィールドを含むことができる。ルックアップキーは、レコードの残りのハッシュ、すなわち連結されたメタデータ値のハッシュであってよい。好ましい実施形態において、メタデータは、トークンと関連付けられたコントラクトのロケーションに対するポインタまたは他の参照を含んでよい。コントラクトは、別個のストレージリソースの中に格納されてよい。インビテーション(ストレージリソースにおけるメタデータによって定義される)は、ハッシュを介してブロックチェーントランザクションに対してリンクされてよい。
【0017】
本発明によって多くの利点が提供され、そのうちのいくつかがここで説明される。最初に、交換に関する情報は分散型台帳においてセキュアに埋め込まれたメタデータの中に含まれるため、交換は、ピアツーピアベースでセキュアに実行され、それによって信頼できる第三者を不要としている。このことは、次に、サービスプロバイダといった任意の第三者によって保持される交換に対する両当事者に関して大量の機密情報が必要となることを回避し、次に、危険にさらされている第三者のセキュリティに関するリスクを回避する。この利点は、トランザクションの匿名性を維持しながらも、また提供されている。第1スクリプトはハッシュされているので、スクリプトの対応するハッシュ値における変化を伴うことなく、メタデータの値を変更することは実行不可能な程度に難しいだろう。このことは、また、トランザクションの条件が当事者によって検証できるようにする。それらは公に利用可能な分散型台帳においてロックされているからであり、それはトランザクションの整合性を信頼できるものにしている。利点は、また、第1メタデータを第1スクリプトにおいて公開鍵のために利用可能な1つまたはそれ以上の場所に埋め込むことができることも提供し、進行をブロックするのとは対照的に、それによって、メタデータを処理するのに適していないノードが別のノードに対してスクリプトを単に送付することを可能している。このことは、次に、関連するトランザクションの計算効率を改善する。さらなる利点が提供され、制御データをメタデータの中に組み込むことができる。例えば、会合場所に対するチケット、もしくは、旅行チケットまたバウチャーを表すトークンの場合の、バリアに対するアクセスコードである。メタデータは、また、ポインタが示す交換の詳細のオフブロックリポジトリ(off-block repository)を含むこともでき、それによって、関連トランザクションの処理に使用されるメモリ及び/又は処理リソースを少なくすることができる。なおもさらなる、トークンを分割することができるという別の利点が提供され、2つまたはそれ以上のトランザクション出力を可能にしている。その各々は、トークン化、または、非トークン化された電子的に移転可能なデジタルアセットに関連し得る。
【0018】
交換のために提供される第1エンティティ、及び/又は、第1エンティティのための交換において移転される第2エンティティは、
a)仮想通貨、
b)コントラクト、
c)商品、
d)サービス、のうちの1つまたはそれ以上のを含んでよい。
【0019】
コントラクトは、少なくとも部分的に、」
a)不換通貨、
b)不動産権利書、
c)チケット、
d)商品、
e)サービス、のうちの1つまたはそれ以上に関するものであり得る。
【0020】
第1ロケーション条件は、
a)第1エンティティの交換のための地理的ロケーションまたはエリアを示すロケーション情報、
b)ロケーション情報のフォーマットを示すロケーションフォーマット情報、
c)交換に関連する地理的ロケーションまたはエリアにおける範囲制限を示す範囲情報、および
d)範囲情報のフォーマットを示す範囲フォーマット情報、のうちの1つまたはそれ以上を含み得る。
【0021】
本方法は、
第2スクリプトに対して第1スクリプトの第1インビテーションをマッチングするステップであり、第2スクリプトは、少なくとも第1スクリプトにおいて指定された第1エンティティを第2スクリプトにおいて指定された第2エンティティと比較することによってDHTにおいて発行される、ステップを含み、
ここで、第2スクリプトは、
第2ユーザによる第2エンティティの交換のための第2インビテーションと関連付けられたメタデータの第2セットであり、第1エンティティの交換において提供される第2エンティティの指示を含む、メタデータの第2セットと、
前記第2ユーザと関連付けられた第2ユーザの公開鍵(P2A)であり、第2ユーザの公開鍵(P2A)は、第2ユーザの公開鍵(P2A)および第2ユーザの秘密鍵(V2A)を含む非対称暗号ペアの一部である、第2ユーザの公開鍵と、
第2の第三者と関連付けられた第2の第三者公開鍵(P2T)であり、第2の第三者公開鍵(P2T)は、第2の第三者公開鍵(P2T)および第2の第三者秘密鍵(V2T)を含む非対称暗号ペアの一部である、第2の第三者公開鍵と、を含む。
【0022】
本方法は、第1ユーザ及び/又は第2ユーザのロケーションを特定することによって、ロケーション条件が満足されているか否かを判断するステップ、を含み得る。
【0023】
第2の第三者は、第1の第三者と同一であってよい。
【0024】
本方法は、さらに、DHTにおいて第2スクリプトを発行するステップを含み、発行するステップは、
第2スクリプトを生成するステップ、
第2スクリプトをハッシュ化して、第2スクリプトハッシュを生成するステップ、および、
DHTにおいて第2スクリプトおよび第2スクリプトハッシュを発行するステップ、を含んでいる。
【0025】
本方法は、P2P分散型台帳に包含するために、第2インビテーショントランザクションを生成するステップを含んでよく、第2インビテーショントランザクションは、第2エンティティの交換において移転される第1エンティティの指示、および第2スクリプトハッシュを含んでいる。
【0026】
1つの実施例において、本方法は、さらに、
P2P分散型台帳に包含するために第1交換トランザクションを生成するステップであり、第1交換トランザクションは、
第1スクリプト、
第1ユーザの公開鍵(P1A)、
第1の第三者公開鍵(P1T)、
第1インビテーショントランザクションの出力から提供される第1入力、および、
第2ユーザに対して移転されることになる第1エンティティの第1量を指示する第1出力、
を含む、ステップと、
P2P分散型台帳上に第1交換トランザクションを記録するステップと、を含み得る。
【0027】
さらに、本方法は、
P2P分散型台帳に包含するために第2交換トランザクションを生成するステップであり、第2交換トランザクションは、
第2スクリプト、
第2ユーザの公開鍵(P2A)、
第2の第三者公開鍵(P2T)、
第2インビテーショントランザクションの出力から提供される第2入力、および、
第1ユーザに対して移転されることになる第2エンティティの第2量を指示する第2出力、
を含む、ステップと、
P2P分散型台帳上に第2交換トランザクションを記録するステップと、を含み得る。
【0028】
代替的に、本方法は、
P2P分散型台帳に包含するために第1交換トランザクションを生成するステップであり、第1交換トランザクションは、
第1スクリプト、
第1ユーザの公開鍵(P1A)、
第1の第三者公開鍵(P1T)、
第2スクリプト、
第2ユーザの公開鍵(P2A)、
第2の第三者公開鍵(P2T)、
第1インビテーショントランザクションの出力から提供される第1入力、
第2インビテーショントランザクションの出力から提供される第2入力、
第2ユーザに対して移転されることになる第1エンティティの第1量を指示する第1出力、
第1ユーザに対して移転されることになる第2エンティティの第2量を指示する第2出力、および、
第2ユーザに対して移転されることになる第1エンティティの第1量を指示する第1出力、
を含む、ステップと、
ピアツーピア分散型台帳上に第1交換トランザクションを記録するステップと、を含み得る。
【0029】
第1交換トランザクションを生成するステップは、第1スクリプトを第1ユーザの秘密鍵(V1A)を用いて署名することを促進するステップ、および、第1スクリプトを第1の第三者秘密鍵(V1T)を用いて署名することを促進するステップ、を含み得る。
【0030】
同様に、第2交換トランザクションを生成するステップは、第2スクリプトを第2ユーザの秘密鍵(V2A)を用いて署名することを促進するステップ、および、第2スクリプトを第2の第三者秘密鍵(V2T)を用いて署名することを促進するステップ、を含み得る。
【0031】
本方法は、さらに、第1交換トランザクション及び/又は第2交換トランザクションを生成するステップまたは記録するステップの以前に、第1ユーザまたは第2ユーザのうち1人またはそれ以上が交換を受諾するように促進するステップ、を含み得る。
【0032】
第1交換トランザクション、および、第2交換トランザクションのうち1つまたはそれ以上は、ペイツースクリプトハッシュ(P2SH)トランザクションであってよい。
【0033】
本開示の実施形態に従って、エンティティの交換をオファーするためのコンピュータシステムが提供される。本コンピュータシステムは、第1処理デバイスを含み、
第1処理デバイスは、
第1スクリプトを生成し、第1スクリプトは、
第1ユーザによる第1エンティティの交換のための第1インビテーションと関連付けられたメタデータの第1セットであり、メタデータの第1セットは、交換のために提供される第1エンティティの指示および交換のための第1ロケーション条件を含む、メタデータの第1セットと、
第1ユーザと関連付けられた第1ユーザの公開鍵(P1A)であり、第1ユーザの公開鍵(P1A)は、第1ユーザの公開鍵(P1A)および第1ユーザの秘密鍵(V1A)を含む非対称暗号ペアの一部である、第1ユーザの公開鍵と、を含み、
第1スクリプトハッシュを生成するために第1スクリプトをハッシュ化し、かつ、
分散ハッシュテーブル(DHT)において第1スクリプトおよび第1スクリプトハッシュを発行する、
ように構成されている。
本スクリプトは、さらに、第1の第三者と関連付けられた第1の第三者公開鍵(P1T)を含み、ここで、第1の第三者公開鍵(P1T)は、第1の第三者公開鍵(P1T)および第1の第三者秘密鍵(V1T)を含む非対称暗号ペアの一部である。
【0034】
本開示の実施形態は、さらに、上述の方法を実行するように動作可能である、プロセッサまたはプロセッサのグループに関する。
【0035】
本開示の実施形態は、また、実行されると、上述の方法を実行するように動作可能なインストラクションを保管したコンピュータ可読媒体に関する。
【0036】
本発明の実施形態は、(ブロックチェーン)トランザクションの中にメタデータを埋め込むための技術を含むことができ、
アセット(B1)に関する出力(TxO)および引き換えスクリプトのハッシュを有するブロックチェーントランザクション(Tx)を生成するステップ、を含み、
トークン化されたエンティティの表現、または参照であるトークンを含むメタデータと、
少なくとも1つの(好ましくは2つまたはそれ以上の)公開暗号鍵、を含む。
デジタルアセット(B1)は、仮想通貨、例えばビットコインの量であってよい。引き換えスクリプトは、トランザクション出力TxOのロックスクリプトにおいて提供されてよい。メタデータは、暗号鍵のロケーションとしてブロックチェーンプロトコルにおいて指定されたロケーションにおける引き換えスクリプトの中で提供されてよい。このことは、根底にあるブロックチェーンプロトコルに対するあらゆる変更を必要とすることなくメタデータを移転できるという利点を提供する。プロトコルを操作するノードは、暗号鍵の代わりにメタデータの使用について依存しない(agnostic)だろう。
本方法は、さらに、トランザクションTxをブロックチェーンに提出するステップを含んでよい。実際には、仮想通貨(B1)は、従って、トークンに関連してブロックチェーンにおいてロックされてよい。仮想通貨(B1)の量は、出力TxOのためのロックスクリプトの要求を満たすロック解除スクリプトの提供の際だけに費やす(引き換える)ことができる。
特には、ハッシュされた場合に、TxOのロックスクリプトにおいて提供されるハッシュと一致する引き換えスクリプトが提示される必要がある。出力TxOに対するロックスクリプトは、(メタデータにおいて)トークンを次いで有する引き換えスクリプトのハッシュを含むので、仮想通貨(B1)はトークンと関連付けされる。正しいロック解除(引き換え)スクリプトが一旦提示されると、仮想通貨(B1)の所有権は、引き換え当事者またはユーザに対して移転、すなわち、費やされる。
【0037】
1つの態様または実施形態に関連して上述された任意の特徴は、あらゆる他の実施形態または態様に関して使用することができる。本発明の方法に関連して言及されたあらゆる特徴は、対応する実施システムについて同様に適用することができ、その逆も同様である。
【発明を実施するための形態】
【0039】
別の人の銀行口座への支払い又は外貨両替といった、一般的な金融取引(financial transaction)を実行する最先端の方法は、取引手数料および時間遅延の両方においてコストを招く。対照的に、ビットコインといった電子通貨における取引は、はるかに速いレート(rate)で(すなわち、数日ではなく数分)、そして、非常に低いコスト(取引き毎に数十ドルではなく数セントのオーダー)で処理することができる。
【0040】
金融上および非金融上の両方において、日常の取引(day-to-day transactions)に係る恒久的な記録を実行して、保持する、より迅速かつ安価な方法に対する必要性が存在している。本発明は、金融アプリケーションとの使用または利点に限定されなるものではないことに留意することが重要である。代わりに、本開示は、ビットコインブロックチェーンといった、P2P分散型台帳を利用するためのコンピュータで実施される方法およびコンピュータシステムに関し、当事者が、エンティティの交換を提供し、そして、あらゆるタイプの価値エンティティ(entity of value)であり得るエンティティの交換を記録することを可能にする。ここにおいて説明される典型的な方法は、エンティティの交換を実行するためのインビテーション(invitation)またはオファー(offer)を指示するスクリプトの生成に関する。さらに、ここにおいて説明される方法は、別のスクリプトに対するスクリプトのマッチングの際、エンティティの実際の交換に係るエンアクトメント(enactment)に関する。
【0041】
ビットコインブロックチェーンといった、P2P分散型台帳を利用することによって、本開示に係る実施形態は、保持されるべき交換プロセスに係る全てのステップの恒久的な記録を提供する。さらに、プロセスにおける各段階(オファーおよび交換)は、仮想通貨のトランザクションにおいて使用されるものと同様な暗号化ロック技術(locking techniques)を使用してセキュアにすることができる。「仮想通貨(”cryptocurrency”)」により、これに限定されるわけではないが、ビットコインといった、暗号化された電子的に移転可能なデジタルアセットを意味している。
【0042】
ここにおいて説明される例示的な方法は、あらゆるタイプのエンティティを提供し、かつ、交換するために使用することができる。そうしたエンティティの例は、これらに限定されるわけではないが、ビットコインといった、仮想通貨、不換通貨(fiat currencies)、コントラクト、商品(goods)、およびサービスを含んでいる。
ブロックチェーン技術の使用を取り込んでいるCoinffeine(http://www.coinffeine.com/)といった交換が、当技術分野で知られている。しかしながら、そうした従来技術の構成(arrangement)は、未だに従来のモデルに依拠しており、そして、また、動作するために、第三者ソース、エスクロー(escrows)、および、他のマルチ通貨非銀行口座/プロセッサにも依拠している。これらの既知の構成は、(本発明による)技術革新および暗号技術を通じてではなく、むしろ、ビジネスモデルを通じて分散化(decentalisation)を達成している。
本発明は、トークナイゼーション技術(tokenisation techniques)の使用を組み込んでいる。コントラクトは、交換のためにオファーされるか、または、トークンのおかげで交換され得る。
【0043】
まとめると、トークンは、契約によって表現され/契約を表す交換可能なエンティティである。コントラクトは、いくつかの形式のうち1つをとることができる。例えば、コントラクトは、保有者に権利を授与し、または、財産の所有権を示すことができる。トークンの値は、契約上で特定されてよく、そして、「ペッグ率(”pegging rate”)」を介して根底にあるBTC量に対してリンクされる。トークンは、ビットコインプロトコルといった仮想通貨プロトコルを使用するトランザクションを介して交換可能である。トランザクションにおけるビットコイン値は、デジタル形式において権利契約(a rights contract)を表しているトークンとして動作する。契約自体は、トランザクション上に保管されてよく、または、公にアクセス可能なロケーションに保存されてよく、もしくは、特定の実施形態に応じて、契約に対する当事者によって個人的に保持されてよい。契約がトランザクション上に保管されていない場合に、トランザクションは、契約に対する一意の(unique)ポインタを保管することができる。
【0044】
トークンは、分割可能(divisible)であり得る。分割可能なトークンとは、トランザクション出力における値をより小さい量へと細分化することができるものであり、値は複数の新たなトークンにわたり割り当てることができる。分割可能なトークンの実施例は、不換通貨のためのトークン、または、競走馬におけるシェア(shares)のためのトークンを含んでいる。分割可能なコントラクトは、非ゼロ(non-zero)ペッグ率を特定するものとして定義され得る。別の言葉で言えば、トークン値は、根底にあるビットコイン値に対して結び付けられている。代替的に、トークンは、分割不可能(non-
divisible)であってよい。分割不可能なトークンは、保有者の権利を固定値において特定するコントラクトであり、例えば、家または1000ポンド(£1000)を引き換えるためのコントラクトである。分割不可能なトークンは、従って、根底にあるビットコインの値に対してリンクされていない。
【0045】
トークンは、有効であるようにトークン発行者によってデジタル署名(digitally signed)される必要がある。発行者は、例えば、不動産権利の登記局(Registrar of Title deeds)といった機関であってよい。発行者は、支払いの見返りにトークンをユーザに対して発行することができる。そのトークンは、次いで、コントラクトが、不換通貨を引き換える権利、または実行されるべきサービスに対する権利を表すかにかかわらず、トークンに対してリンクされたコントラクトを行使する権利をユーザに与えることができる。
【0046】
上記に従ったトークンの実施は、以下のものを含んでいる。
・コントラクトの発行者によるトランザクション出力のBTC値に対してペッグされた(pegged)不換通貨トークン(fiat currency token)。例えば、「このトークンの支払人(spender)(ビットコイントランザクション)は、1000サトシ(satoshis)毎に1シェア(10セント)のレートでカナダドル(CAD)のこのトークンの任意の一部を引き換える(redeem)権利がある。
・シンジケートの複数のメンバーによって所有されている競走馬。
・所有権が権利証書(a title deed)によるものである任意のアイテム。例えば、家または他の財産がこのようにして取り扱うことができるだろう。
・コンサートチケットを表す電子契約。これは本質的に分割不可能である。
・無記名債券(bearer bond)(分割不可能)
・商品/サービスに添付されている一意の識別子(バーコードまたはRFIDといったもの)。使用される場合に、この識別子は未だに好ましくは承認されたエンティティの署名によって有効にされる。署名がないと、より安全性が低い「商品/サービス(”goods/service”)」カテゴリへと分類される(以降に説明される)。
・実行されるべきサービスに対する権利についての契約。これは、実際のサービス自体と同じものではなく、実行されるサービスを受ける権利だけであることに留意する。この権利は取引することができる。例えば、シドニーの首都圏内で3時間までの芝生刈りについてマイケルマウイング(Michael's Mowing)からのクーポン券(voucher)。このクーポン券(契約書)の保有者は、クーポン券を実際のサービスについて引き換えることができる。
【0047】
トークンは、シェア(share)の価値を指定する必要がある。例えば、1シェア=10セントCAD、1シェア=1ルピア(rupia)、または、1シェア=アイテムまたはプロパティ(競走馬、家、等)である。
【0048】
以下に説明される実施形態は、ビットコインブロックチェーンにおけるトランザクションを記録することについて特定的に参照することができるが、本開示は、任意のP2P分散台帳を使用して実装され得ることが正しく理解されよう。以下で、ブロックチェーンは、標準化のレベルが高いこと、および、関連する公的な文書化が大量であることだけによる簡潔性(simplicity)について本開示の実施例を説明するために使用される。
【0049】
当技術分野においてよく知られているように、ビットコインブロックチェーンは、ビットコインプロトコルベースのシステムに参加しているネットワーク化されたノードにわたり分散されたトランザクション台帳またはデータベースである。通貨のブロックチェーンの完全コピーは、これまで通貨において実行された全てのトランザクションを含んでいる。従って、トランザクションのデータレコードに係る継続的に増加するリストが提供される。ブロックチェーン上に入力された各トランザクションは暗号化されて実施されるので、データストアノードのオペレータによってさえも、改ざん(tampering)および改訂(revision)に対してビットコインブロックチェーンが強化されている。
【0050】
本開示の実施形態においては、一方の当事者(one party)から別の当事者へビットコイン(または、他の仮想通貨)の支払いを表すトランザクションのレコードを保管することに係るデザインされた機能において使用されることの代わりに、または、加えて、ブロックチェーンは、当事者間におけるエンティティまたはアセットの移転を可能にする新規な方法で使用されている。交換(exchange)は、一方の当事者から別の当事者へデジタルエンティティの制御及び/又は所有権を移転する。これを達成するために、本発明は、1つまたはそれ以上のエンティティに係る交換を実行するためのインビテーション(または、オーダー)を保持および記録するためのメカニズムを提供する。本発明は、従って、ブロックチェーンを介して導かれる新規で有利な通信ソリューションを提供する。
【0051】
上述のように、任意のタイプのエンティティまたはアセットが交換可能である。これらは、物理的な、「現実世界(”real world”)」エンティティ、または、仮想的な、デジタルエンティティであってよい。交換することができるエンティティの実施例は、ビットコインといった仮想通貨、トークン(任意のタイプの移転可能なコントラクトを表している)、および、任意のタイプの商品とサービスを含んでいる。トークンは、特定の権利を保有者に授与する契約を表すことができる。多くの例のうちのいくつかを挙げると、不換通貨(仮想銀行紙幣)について引き換えられるため、プロパティの所有権(例えば、権利証書)を示し、または、イベントに対するアクセスを認めるための権利である。商品とサービスは、多くの例のうちのいくつかを挙げると、新品または中古の製品、労働(例えば、時間によって請求されるもの)、完全な仕事(例えば、芝生の芝刈り)を含んでよい。
【0052】
図1は、一つの実施形態に従った、P2P交換システム100のネットワーク図である。システム100は、ネットワーク102およびネットワークに対する複数の当事者を含んでいる。当事者は、交換サービスプロバイダ104、第1ユーザ106、第2ユーザ108、エスクローサービスプロバイダ(an escrow service provider)110、および、発行者112を含んでいる。より詳細に以下に説明するように、交換サービスプロバイダ104、エスクローサービスプロバイダ110、および発行者112の機能の組み合わせは、単一の当事者によって引き受けることができる。別の言葉で言えば、単一の当事者がそれぞれの機能を同時に実行することができる。加えて、そして、より詳細に以下に説明するように、交換サービスプロバイダ104およびエスクローサービスプロバイダ110は、これらのサービスプロバイダ104、110を使用することなくP2P交換システム上で完全に実行できるので、任意的である。
【0053】
交換サービスプロバイダ104は、第1ユーザ106および第2ユーザ108を含む、複数のユーザに交換サービスを提供する。発行者112は、破線によって示されるように、ネットワーク102に対して任意的である。より詳細に以下に説明するように、発行者112は、トークンの交換が要求される場合にだけ必要とされてよい。
【0054】
いくつかの実施形態において、ネットワーク102はインターネットである。従って、他の当事者(図示なし)がネットワーク102に対する当事者であってよい。ネットワーク102に対する全ての当事者は、ネットワーク102に対する他の全ての当事者と通信することができる。ネットワーク102上でホストされているのは、ピアツーピア分散ハッシュテーブル(P2P DHT)とピアツーピア分散型台帳(P2P DL)である。システム100において示されている当事者のいくつか又は全ては、図示されていないものと一緒に、P2P DHTおよびP2P DLの両方またはいずれかに対するホストノードとして動作し得ることが正しく理解されよう。
【0055】
インビテーションの構造
インビテーションは、様々なパラメータまたはコードを含むように構成されてよい。これらは、様々な目的のために使用することができる。例えば、より詳細に以下に説明されるような、インビテーションのマッチング(matching)である。1つまたはそれ以上の実施形態においては、以下の構造を使用することができる。
【0056】
交換サービスプロバイダ104の1つの目的は、P2P DHT及び/又はP2P DLにおいてインビテーションまたはエンティティの交換にためのオファーを置く(place)ためにユーザ106、108のためのゲートウェイを提供することである。ネットワーク102のユーザ106、108は、それ自体、P2P DHT及び/又はP2P DLにインビテーションを置くことができるが、交換サービスプロバイダ104は、インターフェイスを提供し、それを用いてインビテーションが生成される。さらに、交換サービスプロバイダ104は、当業者であれば理解するように、ビットコインブロックチェーンといった、分散型台帳におけるトランザクションの直接的な取り扱いに関連する危険(例えば、トランザクションの喪失、等)を低減することができる。P2P DHT及び/又はP2P DLにおけるユーザインビテーションの発行を可能にすることに加えて、交換サービスプロバイダは、以下の追加サービスのうち1つまたはそれ以上を実行することができる。
・
インビテーションのマッチング(Matching invitations)− 上述のように、インビテーションは、a)ユーザが交換することを望むエンティティの詳細、b)交換に添付された、ロケーション条件といった、1つまたはそれ以上のユーザ適用オプション/条件、を含んでよい。2つのインビテーションは、それぞれのエンティティの詳細がミラーリングされており(mirrored)、かつ、2つのインビテーションの条件のうち1つまたはそれ以上が適合する場合に、一致し得る。別の言葉で言えば、第1インビテーションの中に含まれる一つまたはそれ以上のパラメータまたは特徴が、また、第2インビテーションの中にも含まれている場合に、一致が生じ得る。一つまたはそれ以上のインビテーションの特徴の間にはいくつかの共通性が存在している。ミラーリングされたエンティティの詳細の例は、第1ユーザ(アリス(Alice))がリンゴのためにビットコインを提供し、かつ、第2ユーザ(ボブ(Bob))がビットコインのためにリンゴを提供する場合である。サービスプロバイダは、従って、交換に適応する(accommodate)ために、コンパチブルなインビテーションを合致するマッチングサービスを提供することができる。マッチングは、一致するエンティティ及び/又は条件を有する1つまたはそれ以上のインビテーションについてP2P DHTをスキャンすることを含んでよい。いくつかの実施形態において、サービスプロバイダ104は、ユーザからの要求に応じてP2P DHTをスキャンすることができる。例えば、ユーザは、サービスプロバイダ104に対して所望のインビテーションのための1つまたはそれ以上のクライテリア(criteria)を提供することができる。提供されたクライテリアに基づいて、サービスプロバイダ104は、次いで、それらのクライテリアに一致する、既にP2P DHT上に置かれているインビテーションを検索することができる。他の実施形態において、サービスプロバイダ104は、特定のユーザ要求に関係しない、一致またはほぼ一致するインビテーションについてP2P DHTを検索する、非特定的なペアリングアルゴリズム(non-specific pairing algorithm)を実装することができる。マッチングサービスは、他の第三者プロバイダによって提供されてよいことが正しく理解されよう。1つまたはそれ以上の第三者プロバイダが存在してよく、その主な目的は、上記に従ってマッチングサービスを提供し、以下に説明されるように、同様にマッチングアラートを提供することである。いくつかの実施形態において、マッチングはマッチングサービスプロバイダ(MSP)によって提供される。
1つまたはそれ以上の実施形態に従って、かつ、また上記の「インビテーションの構造」セクションに示されるテーブルを参照して、以下のようなAとBとの間でインビテーションのマッチングからマッチングアルゴリズムを採用することができる。
AのOffer-type-codeは、BのRequest-type-codeと一致することを要する
AのRequest-type-codeは、BのOffer-type-codeと一致することを要する
AのRate-min ≦ BのRate-max(同等の単位で表される場合)
AのRate-max ≧BのRate-min(同等の単位で表される場合)
Request-item-IDは、Offer-Item-IDと一致することを要する
AのRequest-QTY-min ≦ BのOffer-QTY-max
AのRequest-QTY-max ≧ BのOffer-QTY-min
Aの条件は(もしあれば)、Bのインビテーションと適合することを要する
Bの条件は(もしあれば)、Aのインビテーションと適合することを要する
本発明は、このアルゴリズムまたはその変形を実施するマシンで実行可能なルールを組み込むように構成することができる。
・
アラートの一致(Match alerts)− 一致またはほぼ一致が検出された場合に、交換サービスプロバイダ104は、電子メールによる、もしくは、電話またはタブレットアプリケーションを介するといった、既知の方法でユーザにアラートする(alert)ことができる。従って、本発明は、新規な通信またはアラートメカニズムを提供することができる。
・
一致に基づく新たなインビテーション生成(Generating new invitation based on matches)− ユーザが、置きたいと望むインビテーションまたはオファーの詳細を提供する場合に、サービスプロバイダ104は、ユーザのオーダーの条件を満足する1つまたはそれ以上のインビテーションについてP2P DHTをスキャンすることができる。次いで、P2P DHTにおいてインビテーションのマッチングが見つかった場合に、サービスプロバイダ104は、成功した一致を促進するために、既にP2P DHT上にある識別されたインビテーションをミラーリングするインビテーションを生成することができる。P2P DL上で最終トランザクションを完了するためには、トランザクションに対する全ての当事者は、P2P DHTで既に公開されているインビテーションを有する必要があることに留意する。しかしながら、全てのインビテーションがP2P DHTにおいて公開されることを要するとは限らない。この実施例において、例えば、サービスプロバイダは、所望の一致が既に見つかっているときにインビテーションが広告される(advertised)必要が存在しないので、P2P DHT上でオファーを公開する必要はない。しかしながら、例えば、最初のマッチングが失敗に終わる場合に、生成されたインビテーションは、未だにP2P DHT上に置かれてよいことが正しく理解されよう。
・
トランザクションの実行(Executing transactions)− インビテーションのペアが成功裡に一致した後で、サービスプロバイダ104は、最終トランザクションを実施するためのプロキシとして動作することができる。例えば、2つのインビテーションが正確な又は近い一致を提供するという判断において、サービスプロバイダ104は、実際のトランザクション、すなわち、エンティティの交換を含むトランザクションを、P2P分散型台帳に記録することができる。このプロセスは、当事者が承認を表すことなく、または、トランザクションを承認するために一人またはそれ以上の当事者を促した後で、自動的に行われてよい。 いくつかの実施形態では、インビテーションの中のメタデータは、交換が確定される前に当事者が通知されることを要するか否かを示すことができる。
・
条件成就の確認(Verifying fulfilment of conditions)− インビテーションが、ロケーション条件といった、条件を含む場合に、交換サービスプロバイダ104は、交換を確定する以前に、条件が満足されているか否かを判断することができる。ロケーション条件に関して、交換サービスプロバイダ104は、例えば、2つのインビテーションが一致したときにユーザの現在の位置を決定することができる。
・
eウォレットサービス(eWallet services)− 上記に加えて、サービスプロバイダ104は、また、仮想通貨の鍵、等の保持といった、従来のeウォレットサービスを提供することもできる。
【0057】
図1のシステム100においては、単一のサービスプロバイダ104が示されている。しかしながら、1つまたはそれ以上の追加の交換サービスプロバイダがネットワーク102の一部であってよいことが正しく理解されよう。1つ以上の交換サービスプロバイダが存在する場合に、ユーザは、例えば、サービスプロバイダの料金体系、ロケーション、互換性、等を含み得る、それらの要求に応じて交換サービスプロバイダを選択することができる。従って、所定の状況においては、一致するインビテーションを持つ2人のユーザが、異なる交換サービスプロバイダを使用してよいことが正しく理解されよう。そうした状況において、ユーザのそれぞれの交換サービスプロバイダは、インビテーションのマッチング及び/又はエンティティの交換を促進するために相互に通信することができる。
【0058】
交換サービスプロバイダ104に加えて、エスクローサービスプロバイダ110が、ネットワーク102の一部であってよい。エスクローサービスプロバイダ110は、取引が決済されるまでユーザのオファーを保持すること(すなわち、提供された金額が留保されている)、または、所定の条件下において、オーダーをキャンセルし、かつ、インビテーションにおいて提供されたものを何でも返却すること、を可能にする。エスクローサービスプロバイダ110は、トランザクションについてエスクローサービスを提供するために、トランザクションの2人の当事者によって信頼される、中立的な第三者として機能する。従って、システムにより、ユーザは、最終トランザクションに参加することができ、オファーを行うユーザが、提供された金額を(ビットコインまたはトークンで)を満足できるという保証を有することができる。
【0059】
交換サービスプロバイダと同様に、1つ以上のエスクローサービスプロバイダがネットワーク104の一部であってよい。P2P交換システム100のユーザは、また、1つのエスクローサービスプロバイダを使用する場合に、どのエスクローサービスプロバイダを使用するか選択することもできる。いくつかの実施形態において、エスクローサービスプロバイダ110のサービスは、交換サービスプロバイダ104のサービスの中に組み込まれてよく、または、その逆も同様である。そうした場合には、別個のエスクローサービスプロバイダが必要とされないことがある。
【0060】
上記に加えて、システム100は、また、発行者112も含んでよい。発行者112は、トランザクションがトークンの交換を含む場合に、関与することができる。そうした状況において、プロセスは、トークンに署名する発行者を取り込んでいる。トークンの移転を取り込んでいるそれぞれのトランザクションは、発行者112を含んでよい。ここにおいて説明される実施形態において、発行者の署名は、インビテーショントランザクションにおいて要求され、そこではトークンが提供されて、エスクローにおいて保持される。発行者の署名は、また、交換トランザクションにおいても要求され、そこでは相手方(counterparty)に対してトークンの支払いが行われる。
【0061】
本開示の実施形態の1つの態様は、ビットコイン交換トランザクション(または、仮想通貨トランザクション)においてエンティティの交換を実行するためのインビテーションまたはオファーに関するメタデータを埋め込むための能力(ability)であり、同様に、ビットコインまたは他の仮想通貨トランザクションにおいて、エンティティの実際の交換に関するメタデータを埋め込むための能力である。ここにおいて説明される実施形態は、以下に説明するように、そうしたメタデータの埋め込みを可能にするために、マルチシグネチャ(multi-signature)ペイツースクリプトハッシュ(pay to script hash、P2SH)タイプのトランザクションを使用する。
【0062】
(i)一般的なP2SHにおける引き換えスクリプト(Redeem script in P2SH in general)
背景として、ビットコインプロトコルの標準的なペイツースクリプトハッシュ方法において、引き換えスクリプトは以下の形式をとる:
<NumSigs PubK1 PubK2 ... PubK15 NumKeys OP_CHECKMULTISIG>
ここで、
NumSigsは、トランザクションをロック解除するための引き換えスクリプトを満足するために要求される有効な署名の数「m」である。
PubK1、PubK2、・・・、PubK15は、トランザクションをロック解除する署名に対応する公開鍵(public keys)である(最大15個までの公開鍵)。
NumKeysは、公開鍵の数「n」である"(15個以下でなければならない)。
【0063】
上記の引き換えスクリプトを償還するためには、公開鍵に対応する少なくとも「m」個の署名が必要とされる。いくつかの実施においては、公開鍵の順序が重要であり、そして、署名(signing)のための「n」個の署名のうち「m」個の署名が、順番に行われなければならない。例えば、「m」が2であり、公開鍵の数「n」が15であるとする。2個の署名が使用のために利用可能であるとすると、例えばSig1(PubK1に対応しているもの)とSig15(PubK15に対応しているもの)、引き換えスクリプトは、最初にSig1によって署名され、その後でSig15によって署名されなければならない。
【0064】
(ii)P2SHにおけるメタデータの埋め込み(Embedding metadata in P2SHl)
引き換えスクリプトにおいて公開鍵のために利用可能な15か所のうち1つまたはそれ以上において、メタデータがP2SHの中に埋め込まれ得る。
【0065】
例えば、P2SHは以下の形式をとる:
<NumSigs Metadata1 Metadata2 ... PubK1 PubK2 ... NumKeys OP_CHECKMULTISIG>
ここで、
NumSigsは、トランザクションをロック解除するための引き換えスクリプトを満足するために要求される有効な署名の数「m」である。
Metadata1とMetadata2は、それぞれ、公開鍵に代わるメタデータを含んでいる。
PubK1とPubK2は、実際の公開鍵である。そして、
NumKeysは、メタデータと公開鍵(15個以下でなければならない)によって取られる位置の総数である。
【0066】
引き換えスクリプトの中に、インビテーションの条件、トークンに関連するコントラクトの詳細、及び/又は、交換に関連する他の情報に対応するメタデータを置くことによって、そうした情報のハッシュは、P2P分散型台帳の中に含まれる。
【0067】
この埋め込み方法は、次のように要約できる。
仮想通貨の一部に関する出力(TxO)および引き換えスクリプトのハッシュを有するブロックチェーントランザクション(Tx)を生成することであり、Txは、
トークン化されたエンティティの表現、または参照である、トークンを含むメタデータ、および、
少なくとも1つ(好ましくは2つまたはそれ以上の)公開暗号鍵、を含む。
トークン化されたエンティティは、交換に関するコントラクト及び/又は他のエンティティとすることができる。メタデータは、暗号鍵のためのプロトコルによって指定されたロケーションにおいて提供される。
【0068】
このように、本発明の実施形態におけるマルチシグネチャP2SHビットコイントランザクションの使用は、いくつかの利点を提供する。第1に、それは、インビテーショントランザクションがメタデータペイロードを運ぶ(carry)ことを可能にする。第2に、それは、交換トランザクションにおけるエスクローサービスの利用を促進する。第3に、交換においてトークンが移転されるロケーションで、それにより、交換トランザクションは、交換される1つまたはそれ以上のトークンに関するメタデータを運ぶことができる。また、根底にあるブロックチェーンプロトコルは、メタデータがトランザクションを介して送付されているという事実には関わらない(agnostic)。従って、この情報を伝達するためにブロックチェーンプロトコルに対する変更は必要とされない。
【0069】
メタデータは、インビテーショントランザクションにおいてオファー(offer)またはリクエスト(request)を記述している記載またはキーワードを含んでよい。メタデータは、また、インビテーションに関する条件も含んでよい。例えば、インビテーションにロケーション条件を添付することができる。ロケーション条件は、エンティティの交換が遂行されねばならない地理的ロケーションを指定することができる。ロケーション条件に加えて、締め切り条件が、さらにインビテーションに添付されてよい。この点について、取り消し(cancellation)トランザクションが生成されてよい。同じビットコイン量を費やし、かつ、交換が行われる締め切りを表すロック時間(locktime)を含むものである。取り消しトランザクションは、ロックタイムまでP2P DL上に配信されることを防ぐことができる。締め切りまでに交換が行われない場合には、取り消しトランザクションがP2P DLに対して追加され、そして、支払人(payer)及び/又はサービスプロバイダに効果的に払い戻される。指定された地理的ロケーションにおいて締め切りが終了する以前に交換が行われた場合に、交換トランザクションはその量(amount)を費やし、時間ロックされた取り消しトランザクションに先立ってP2P DLにヒットする二重支払い(double-spend)を創出し、それにより、取り消しトランザクションをブロックしている。いくつかの実施形態においては、メタデータは、締め切りを含まなくてよいが、その代わりに、取り消しトランザクションは、元のインビテーショントランザクションを取り消すことについて単に責任を負うことができる。代替的に、締め切りメタデータ条件は、取り消しトランザクションの支払い(spending)を自動的に引き起こさなくてよい。別の言葉で言えば、締め切りは支払人の管理下に残る柔軟な締め切りであってよい。この締め切りは、従って、単にそれが失効することを許可し、かつ、遅れて一致するインビテーションを依然として受け入れる当事者によって拡張されてよい。同様に、サービスプロバイダは、未使用のままである場合に、期限切れのオーダーとの照合を依然として試みてよい。
【0070】
インビテーショントランザクションを置く(placing)のと同時に取り消しトランザクションをロックする代わりに、ユーザは、締め切りの後まで待つことができ、そして、そう望む場合には、取り消しトランザクションを手動で入力することができる。
【0071】
上述のように、条件は、例えば、トランザクションブロードキャストのロケーションが指定されたGPS座標のXメートル以内にある場合には、交換トランザクションがP2P DHT上にだけブロードキャストされること、を指定する1つまたはそれ以上のロケーション条件(location conditions)を含むことができる。このことは、トランザクションが指定されたロケーション、例えば、ボブのコーヒーショップ、でだけ行われることを保証する。これは、以下でより詳細に説明される。
【0072】
ユーザが自分の新しい条件を作成し、そして、以前に使用されていない条件コードにそれらに割り当てることによって、条件のリストにそれらを追加することを可能にするファシリティ(facility)が存在し得る。このファシリティは、乱用に抵抗することができる。例えば、各サービスプロバイダは、単に関連する条件コードと一緒に条件の独自のテーブルを公開することができ、そして、システム100の他の当事者は、同じコーディングを採用することを選択することができ、かつ、また、それ自身の新しいコーディングを追加することもできる。次いで、例えば、条件コードの再使用のせいで紛争が発生した場合に、紛争は、サービスプロバイダまたはシステム100の他のユーザによって解決され得るものである。
【0073】
本開示の実施に係るいくつかの例が、第1ユーザ106(ここにおいてはアリス(Allice)と呼ばれる)と第2ユーザ(ここにおいてはボブ(Bob)と呼ばれる)との間のオファーおよびトランザクションの例としてこれから説明される。
【0074】
インビテーションを知らせること(Posting an invitation)
【0075】
第1実施例において、アリスは、ビットコインと引き換えにトークン化されたカナダドル(CAD)をいくらか購入したい。彼女の関心を広告するために、アリスは、例えば、ウェブインターフェイス、もしくは、タブレットまたは携帯電話上で動作するアップ(app)を介して、交換サービスプロバイダ104にコンタクトする。
図2に示されるように、ステップ202において、アリスは、サービスプロバイダ104のウェブインターフェイスへとログインする。ステップ204と206において、アリスは、次いで、彼女のインビテーションの詳細をサービスプロバイダに対して送付する。交換されるエンティティ(ビットコインについてトークン化されたCAD)と交換の条件、およびサービスプロバイダによって提供される任意の選択されたオプションを含むものである。アリスは、例えば、有効なインビテーションへとサービスプロバイダ104によって次いで翻訳され得る通常の言語を使用して、サービスプロバイダ104によってホストされているインターフェイスの中へこの情報を入力することができ、または、代替的に、アリスは、事前選択オプション(pre-selecting options)例えば、ドロップダウン選択メニューを介して、簡単に情報を入力することができる。
【0076】
ステップ208において、アリスは、彼女の選択に基づいてサービスプロバイダ104によって生成され、かつ、アリスが交換したいと望むエンティティに関する情報およびインビテーションに関する任意の条件を含む、引き換えスクリプト(redeem script)をサービスプロバイダ104から受け取る。アリスは特定のサービスプロバイダ104を使用するように契約(signed up)しているので、サービスプロバイダ104は、既にアリスの公開鍵(public key)を持ち得る。代替的に、アリスは、最初の選択の最中か、または、サービスプロバイダ104からの要求に応じてかのいずれかで、サービスプロバイダ104に対して彼女の公開鍵を提供することができる。
【0077】
アリスは、ステップ210において、彼女の公開鍵に対する暗号ペア(cryptographic
pair)である、彼女の秘密鍵を使用して引き換えスクリプトに署名し、そして、ステップ212において、配布されるように、署名された引き換えスクリプトをサービスプロバイダ104へ送り返す。このプロセスは、それ自体がサービスプロバイダ104によって提供され得る、アップの使用によってサポートされてよい。
【0078】
図3に示されるフローチャート300は、サービスプロバイダ104によって実行される対応するプロセスを説明している。ステップ302において、サービスプロバイダ104は、アリスからのインビテーションの詳細を受け取り、そして、ステップ304において、アリスの公開鍵、エンティティの詳細、およびインビテーションの条件を使用して、引き換えスクリプトを生成する。引き換えスクリプトは、P2SHビットコイントランザクションについて適したフォーマットであってよい。インビテーションの詳細は、マルチシグロック解除スクリプト(multisig unlocking script)において通常使用されている32バイトの公開鍵の代わりに(in place of)、メタデータフィールドにおいて保管されてよい。
図4は、一つの実施形態に従って、アリスのインビテーションについてメタデータのフォーマットを示している。インビテーションにおいて、アリスは、トークン化されたCADを要求し、そして、見返りに、400CAD/ビットコイン以上のレートでビットコインを提供する。より詳細に以下に説明するように、
図4は、また、インビテーションに対して追加することができる締め切り条件(deadline condition)も示している。締め切り条件は、インビテーションに基づいて、交換が確定されていない場合に締め切りにおいてインビテーションが取り消されるようにすることができる。
【0079】
引き換えスクリプトは、次いで、署名のためにアリスへ送付される。アリスから署名された引き換えスクリプトを受け取ると、ステップ308において、サービスプロバイダ104は、署名された引き換えスクリプトのハッシュを生成する。
【0080】
サービスプロバイダ104は、2つの方法でハッシュを使用することができる。第1に、ステップ310において、サービスプロバイダ104は、公に利用可能なP2P DHTにおけるハッシュと共にインビテーションの詳細をリストする。上述のように、この表はトレント技術(torrent technique)を採用しているので、集中化されるのではなく、むしろ分散されており、そして、従って、公にアクセス可能なままであり、かつ、変更(alteration)から安全である。他のサービスプロバイダ104は、次いで、インビテーションにアクセスし、そして、彼ら自身のサイトにおいてリストすることができる(実際には、サービスプロバイダ104は、単にハッシュテーブルを唯一のリポジトリとして使用し、そして、インビテーションに係る自身のローカルデータベースを維持する必要さえない。)
【0081】
ハッシュが使用される第2の方法は、ステップ312において、ビットコイントランザクションのロッキングスクリプト(locking script)を作成することである。このトランザクションは、ロック解除するために2つの署名を必要とするP2SHスクリプトに対してアリスのビットコインのある量を費やす。アリスの署名、および、指定されたエスクローサービスプロバイダ110(上述のように、サービスプロバイダ104と同じエンティティであっても、なくてもよい)の署名である。このトランザクションの目的は、二重(twofold)である。第1に、インビテーションがP2P DL上に記録される(logged)。任意のユーザまたはそのサービスプロバイダは、(一致するハッシュ値を介して)P2P DL上に一致するトランザクションが存在することを保証することによって、P2P DHT上のインビテーションが正当(legitimate)であることを確認することができる。第2に、トランザクションは、アリスがインビテーションにおいて成したコミットメントを「ロック(”lock”)」する。トークン化されたCADの交換においてアリスが提供するビットコインの量は、オーダートランザクションによって費やされる量である。従って、オーダーは十分な資金(funds)によって裏付けされていることを確認することができる。
【0082】
一致するインビテーションのペアリング(Pairing matching invitations)
【0083】
上記の第1実施例を参照する第2の実施例において、ボブは、彼のBTCについてトークン化されたCADのいくらかを売りたい、そして、アリスによって使用されておりサービスプロバイダ104と同じか又は異なるサービスプロバイダのいずれかを使用して、彼自身のインビテーションを独立的にリストしている。ボブのオーダーも、
図2および
図3を参照して説明したように、ハッシュテーブルにおいてリストされ、そして、P2P DLトランザクションの中に埋め込まれている。ボブのインビテーションのメタデータが、
図5において示されている。
【0084】
図6を参照すると、アリスとボブのオーダーをマッチングするプロセス600が説明されている。この例において、サービスプロバイダ104が、そのプロセスを実行するものとして説明されている。しかしながら、任意の交換サービスプロバイダ、または、実際には、他の任意の適切な第三者が、プロセス600を実行し得ることが正しく理解されよう。
【0085】
交換サービスプロバイダ104は、アリスとボブのインビテーション間における完全な一致または部分的な一致を識別するように動作可能なマッチングアルゴリズムを実行することができる。ステップ602において、交換サービスプロバイダ104は、エンティティの詳細をマッチングするために、P2P DHTをスキャンする。スキャンの最中に、サービスプロバイダ104は、アリスとボブのインビテーションに係るエンティティの詳細の間における一致をチェックする。ステップ604において一致が見つからない場合に、次いで、プロセスは、ステップ602まで戻り、そして、交換サービスプロバイダ104は、エンティティの詳細のマッチングのためにP2P DHTをスキャンし続ける。ステップ604において一致が見つかった場合、プロセス600は、ステップ606を続けて、アリスとボブのインビテーションそれぞれの1つまたはそれ以上の条件の間における一致についてチェックが行われる。ステップ606で一致が見つからない場合に、プロセスはステップ602へ戻る。1つまたはそれ以上の条件の間における一致が見つかった場合に、次いで、プロセスはステップ608へ移動し、そこで、交換サービスプロバイダ104は、アリスとボブとの間のトランザクションを作成し、そして、確定するように試みる。
【0086】
ポジティブな一致(positive matching)が確認されるためには、ステップ606において、2つのインビテーションにおける全ての条件の直接的な一致が要求されなくてよい。実際に、プロセス600は、条件のいくつかが一致することを要求するだけであってよい。追加的または代替的に、1つまたはそれ以上の条件が完全に一致する必要はない。例えば、比較されている条件が各条件においてオファーされる交換レートである場合に、プロセス600は、レートが互いに既定の閾値範囲内にあれば、ポジティブな一致を確認することができる。例えば、アリスが4×10
−5トークン化CAD/サトシ(tokenised CAD/satoshi)の最小レート条件をオファーしており、かつ、ボブの同様な最小オファーレートが3.9×10
−5トークン化CAD/サトシである場合には、ボブの提示レートがアリスのオリジナルの要件を十分に満たすものではないとしても、プロセスは、それでも条件の一致を確認し得る。そうした状況においては、一致に際して、アリスには受け入れるためのオプションが与えられてよい。ボブの同様な最小オファーレートが4.1×10
−5トークン化CAD/サトシである場合には、条件が満足されることが正しく理解されよう。別の例において、条件は、オファーおよび要求においてオファーされる商品およびサービスに対するそれぞれの値であってよい。プロセス600は、2つの値が互いに既定の閾値範囲内にあれば、ポジティブな一致を再び確認することができる。いずれの場合にも、既定の閾値範囲は、例えば、オファー値または要求値に係る計数値(discrete value)またはパーセンテージであってよい。
【0087】
前述のように、ボブとアリスのインビテーションそれぞれ又は両方のトランザクションメタデータは、さらに、1つまたはそれ以上のロケーション条件を含んでよく、例えば、トランザクションブロードキャスト(transactional broadcast)のロケーションが指定された座標のXメートル以内である場合にトランザクションがP2P DL上にのみブロードキャストされることを指定することができる。このことは、トランザクションが指定されたロケーション、例えばボブのコーヒーショップ、おいてのみ行われることを保証する。
【0088】
一旦、一致が見い出され、かつ、トランザクションを完了する以前に、1つまたはそれ以上の介在するステップ(intervening steps)が実行されてよい。これらは、一致が見い出されたことの当事者に対するアラートを含んでよく、進行することを彼らが望んでいるということを確認するためのリクエスト、等が後に続く。例えば、上述のように、条件が1人またはそれ以上のユーザによって完全ではないがほぼ満足される場合には、それでも一致は記録されるが、全ての当事者がインビテーションの条件に満足するまで確定されなくてよい。このプロセスは、条件について最終合意を交渉するためのカウンターオファー(counter offers)をもたらし得るものであり、次いで、上述のプロセスに従ってさらなるインビテーションの生成をもたらし得る。
【0089】
最終的な交換は、各インビテーショントランザクションの出力を費やす1つまたはそれ以上のビットコイントランザクションを作成することによって実行することができる。本発明者は、トランザクションを完了するいくつかの方法を見い出した。これらに限定されるわけではないが、トランザクションに関与するユーザ、交換されるエンティティ、およびトランザクションに関与するサービスプロバイダと発行者、を含む状況に依存し得るものである。これらの方法のうちいくつかの実施例が以下に説明される。
【0090】
図2から
図6までを参照して上述された実施例から続いて、アリス−ボブおよびボブ−アリスについて別々のトランザクションのためのトランザクションテーブル500が
図7に示されており、そして、トランザクションフローの概略
図600が
図8に示されている。
図4と
図5に示されるメタデータ値と同様に、トランザクションテーブル500において提供される値が示されている。この例においては、アリスのインビテーショントランザクションにおける彼女のビットコインはボブに対して費やされ、そして、ボブのインビテーショントランザクションにおける彼のCADトークン化ビットコインはアリスに対して費やされる。
【0091】
最初にアリス−ボブのトランザクションを参照すると、このトランザクションの入力602は、アリスのインビテーションと共にP2P DL上に置かれたインビテーショントランザクションの出力から提供されている。第1トランザクションと同様に、アリスとエスクローサービスプロバイダ110の両方によって入力スクリプトが署名される(アリスはトランザクションが進行することを喜ぶと仮定している)。スクリプトは、費やされたビットコイン(spent bitcoins)をロック解除し、a)トークン化CADに対する見返りの彼の支払いとしてボブに対して(604)、b)交換に対する支払いとして交換サービスプロバイダ104に対して(606)、およびc)もしあれば、お釣り(change)としてアリスに対して(608)、出力することができる。
【0092】
これからボブ−アリスのトランザクションを参照すると、このトランザクションは2つの入力を有している。トランザクションの第1入力610は、ボブのインビテーションと共にP2P DL上に置かれたインビテーショントランザクションの出力から提供されている。このトランザクションに対する入力はトークン化されているため、入力スクリプトはボブとトークン発行者の両方によって署名される必要がある。この状況において、トークン発行者は、また、エスクローとしても動作し、それにより、ボブ(および、任的にアリス)がトランザクションに満足するまで資金を保留している。署名されたスクリプトは費やされたトークンをロック解除し、次いで、a)BTCに対する見返りの支払いとしてアリスに対して(612)、およびb)アリスに対して送付された値より少ないオリジナルのトークン値に対するお釣りトークン(change token)としてボブに戻って(614)、出力することができる。第2入力616は、ボブの以前のビットコイントランザクションからのものである。この入力は、ロック解除され、そして、a)交換に対する支払いとしてサービスプロバイダ104に対して、b)交換トランザクションに対する料金(fee)としてビットコインマイナに対して、およびc)サービスプロバイダ104の料金とマイナの料金より少ないオリジナルのビットコイン入力値の値に対するビットコインでのお釣り(change)としてボブに対して、出力される。
【0093】
各トランザクションに対するサービスプロバイダ104の料金は、トランザクションの値のスライス(slice)であってよい。代替的または追加的に、料金は、2つのインビテーションにおいて示された対応するレート条件間に広がる交換レートのスライスであってよい。例えば、オファーされたレートがオーバーラップする場合に、サービスプロバイダ104は、交換に係る両面をそれぞれの提示レート(asking rate)で遂行し、そして、差を料金として保持することができる。代替的または追加的に、サービスプロバイダ104によって、フラットな料金(サトシ、トークン化された通貨、またはその他におけるもの)が取られてよい。
【0094】
一旦トランザクションが完了すると、ボブとアリスのそれぞれのサービスプロバイダは、P2P DHTから彼らのインビテーションのエントリを削除し、または、オリジナルのエントリを無効にするさらなるエントリを入力することができる。例えば、サービスプロバイダは、エントリが使用済みトランザクション(spent transaction)に対応するので、P2P DHT上にそのエントリを単に残すことができる。これは、インビテーションが、もはや有効でないことを意味する。代替的に、サービスプロバイダは、費やされたことを示すフィールドを用いてトランザクションをマークすることができる。これは、特定のエントリに対応するDHTにおける個別のフィールドであってよいが、インビテーションと関連付けられた実際のメタデータは変更しない(このことは、スクリプトハッシュ(script hash)が未だにトランザクションにおけるハッシュと一致することを保証し得る)。代替的に、サービスプロバイダは、P2P DHTからエントリを削除することができる。しかしながら、P2P DHTの利点は、システム100を使用するトランザクションの永続的な監査制御(audit control)である。望ましくは、従って、P2P DHTからのエントリの削除が防止され、もしくは、エントリのレコードを維持するために削除されたエントリがアーカイブされる。一つの例においては、削除されたエントリがアーカイブされる。
【0095】
上記の例のトランザクションにおいて、パズル(puzzle)は交換されない。別の言葉で言えば、2つのトランザクション(アリス−ボブとボブーアリス)は完全に分離された、別々のものである。しかしながら、ある場合には、2つのトランザクションについて有効または無効のいずれかであることが望ましい。
図9は、アリスのトランザクション(アリス− ボブ)においてパズルが交換される代替的なトランザクションの例を示している。そうすることによって、2つのトランザクションは一緒にロックされ、他方を費やすことなく、一方を費やすことはできない。このことは、相手方のトランザクションも通過することなく、一方の当事者から別の当事者へのトランザクションが通過することを防止する。
【0096】
上記の2つの例においては、交換を完了するために2つのビットコイントランザクションが実行されている。可能であれば、しかしながら、上記の2つのトランザクションを単一のビットコイントランザクションへと統合することが望ましい。そうすることは、交換の2つの部分を一緒に自動的にロックし、かつ、トランザクションのためにアリスとボブによって支払われる全体の手数料の削減につながる。
【0097】
図10は、アリスとボブとの間の単一のトランザクションに対するトランザクションテーブル700を示している。交換のためのトランザクションフローは、以前の2つの実施例と同じである、つまり
図6に示されているものである。しかしながら、交換は、単一のマルチ入力−マルチ出力(multi-input-multi-output、MIMO)トランザクションへと統合されている。
図8においては、2つの別個の料金が交換サービスプロバイダ104に対して支払われることに留意する。しかしながら、ボブとアリスの両方について交換サービスプロバイダ104が同じである場合に、これら2つの料金は、ボブ、アリス、またはボブとアリスの両方によって支払われる、単一のトランザクションへと統合され得る。
【0098】
インビテーションを置くこと(Posting an invitation)
【0099】
第3実施例においては、ボブが、特定の量のビットコインについて金塊(gold nugget)の交換をオファーする。彼のオファーを発行するために、ボブは第1の第三者(a first third party)、この事例においては彼の交換サービスプロバイダ104、とコンタクトをとる。この特定の例において、交換サービスプロバイダ104は、ボブの携帯電話において動作するソフトウェアアプリケーションによって実装される通信インターフェイスを提供する。従って、ボブは、
図11に示されるプロセス700を参照してより詳細に以下に説明されるように、彼の携帯電話におけるソフトウェアアプリケーションを使用して金塊の交換について彼のオファーを入力することができる。
【0100】
図11に示すように、ステップ702において、ボブは、彼の携帯電話上で交換サービスプロバイダ104のソフトウェアアプリケーションにログオンし、そして、ステップ704および706において、アプリケーションの中へ彼のオファーの詳細を入力する。この特定の例におけるオファーの詳細は、交換のために提供されるエンティティを含んでいる。すなわち、金塊、金塊と引き換えに期待されるビットコイン量、およびロケーション条件、である。
【0101】
ロケーション条件は、以下の情報のうち1つまたはそれ以上を含んでよい。
a)金塊の交換のための地理的ロケーションまたはエリアを示すロケーション情報、
b)ロケーション情報のフォーマットを示すロケーションフォーマット情報、
c)交換に関連する地理的ロケーションまたはエリアにおける範囲制限を示す範囲情報、および、
d)範囲情報のフォーマットを示す範囲フォーマット情報、である。
【0102】
この特定の例において、ボブのオファーのロケーションは、ボブの店「ゴールドエンポリアム(”the Gold Emporium”)」から20メートルの範囲として定義されるエリアを指定している。20メートルの範囲は、指定されたエリアにおけるボブの携帯電話によるGPS読み取りの正確さに対する既知の限界を許容するように指定することができる。しかしながら、範囲は、様々な理由で特定され得ることが正しく理解されよう。例えば、ロケーション条件は、交換が行われる必要がある国または都市を指定することができる。
【0103】
ボブは、彼のサービスプロバイダ104のソフトウェアアプリケーションによってホストされているインターフェイスの中へ上記の情報を入力することができる。例えば、サービスプロバイダ104によって、次いで、有効なオファーへと翻訳され得る通常の言語を使用するものである。または、代替的に、ボブは、例えば、ドロップダウン選択メニューを介して、事前選択のオプション(pre-selecting options)によって情報を簡単に入力することができる。
【0104】
ステップ708においては、ボブの公開鍵、および、交換のためにボブがオファーしているエンティティに関する情報とオファーに関連付けられた上記のロケーション条件を含むあらゆる条件とを含むボブの選択、を使用して、引き換えスクリプトが生成される。ボブの公開鍵は、秘密鍵と公開鍵とを含む非対称暗号ペア(asymmetric cryptographic pair)の一部である。加えて、生成された引き換えスクリプトは、サービスプロバイダ104の公開鍵である、さらなる公開鍵を含んでいる。
【0105】
ステップ710において、ソフトウェアアプリケーションは、ボブが、上記の公開鍵に対応する彼の秘密鍵を用いて、生成された引き換えスクリプトに署名することを促進する。生成された引き換えスクリプトは、P2SHビットコイントランザクションについて適したフォーマットであってよい。インビテーションの詳細は、上述のように、マルチシグロック解除スクリプト(multisig unlocking scripts)において通常使用される32バイトの公開鍵の代わりに、メタデータフィールドに保管されてよい。
【0106】
ステップ712においては、署名された引き換えスクリプトのハッシュが生成される。ステップ712において、ハッシュと一緒にスクリプトが公に利用可能なP2P DHT上で発行される。上述のように、この表はトレント技術を採用しているので、集中化されるのではなく、むしろ分散されており、そして、従って、公にアクセス可能なままであり、かつ、変更から安全である。インビテーションは、他のユーザや交換サービスプロバイダによってアクセスされ得る。
【0107】
図12は、一つの実施形態に従って、ボブのスクリプトのメタデータのフォーマットを示している。スクリプトのインビテーションにおいて、ボブは、金塊と交換にビットコインを要求している。より詳細に以下で説明するように、
図12は、また、インビテーションに対して追加される上述のロケーション条件も示している。
【0108】
P2P交換モデル(P2P Exchange model)における条件メタデータブロック(condition metadata blocks)の一般的なフォーマットが、
図13に示されている。メタデータブロックは、32バイト長である。条件メタデータブロックの最初の2バイトは、分散ハッシュテーブルといった別個のルックアップテーブルを介して指定されるように、条件を定義する数値コードである。条件メタデータブロックの残りの30バイトのためのフォーマットは、条件に依存するものである。
【0109】
図12におけるボブのスクリプトに対する例に示されるように、この特定のシナリオにおけるロケーション条件には、値0004が割り当てられている。
【0110】
ロケーション条件コードの一般的なフォーマットが
図14に示されている。フィールドについての説明は、以下のとおりである。
【0111】
認識されるように、ロケーション条件は異なるフォーマットにおいて指定することができる。特定の、非限定的ないくつかの例が以下に示されている。
【0112】
上述のように、ロケーション条件は、さらに、指定されたロケーションからの範囲を指定することができる。この範囲は、GPS読み取りの正確さに対する既知の限界を許容することができ、または、交換が確定されるためにエンティティの交換が行われることを要するエリアを定義することができる。範囲コードのフォーマットについて、いくつかの例が以下に示されている。
【0113】
オファーのマッチング(Matching an Offer)
【0114】
上記の第3実施例を参照する第4実施において、アリスは、P2P DHTにおいてボブのオファーを見て、金塊を検査するためにボブのスクリプトのロケーション条件において指定されているようにボブのゴールドエンポリアムへ行く。
【0115】
金塊を検査し、そして、金塊と交換するビットコインの量を交渉して、アリスは、彼女の携帯電話で動作するソフトウェアアプリケーションを使用してマッチングオファーを作成する。特に、ソフトウェアアプリケーションは、交換されるエンティティの詳細、すなわち、交渉されるビットコイン量と交換される1つの金塊、をアリスが入力することを促進する。入力された詳細を使用して、アリスのための引き換えスクリプトが生成され、それは、次いで、ハッシュ化され、そして、P2P DHTにおいて引き換えスクリプトのハッシュと共に発行される。アリスのオファーのメタデータが、
図15に示されている。
【0116】
この特定の実施例において、
図12に示されるボブのスクリプトは、交換を確定させるためのビットコインの最小レートまたは最高レートを指定していない。従って、ボブのオファーとアリスのオファーとの間の一致を特定するために、交換サービスプロバイダ104が、上述のようにマッチングアルゴリズムを実行する場合に、ボブは、アリスのオファーを受諾するオプションが与えられる。
【0117】
この特定の実施例において、アリスのスクリプトとボブのスクリプトのマッチングのプロセスは、さらに、
図12に示されるようなボブのスクリプトにおいて指定されたロケーション条件が満足されることを検証するステップを含む。この検証ステップは、様々な方法で実行されてよい。
【0118】
例えば、交換サービスプロバイダ104は、ボブの携帯電話及び/又はアリスの携帯電話と通信して、携帯電話の位置を決定することができる。このロケーションは、次いで、ボブのスクリプトのロケーション条件において指定されるロケーションおよび範囲と比較され得る。
【0119】
ロケーションが、ボブのゴールドエンポリアムといった、建物名として指定されている場合に、交換サービスプロバイダ104は、専有の(proprietary)データベース、または、Googleマップといった、さらなるソフトウェアアプリケーションと通信することによって、このロケーションに関するGPS座標を判断することができる。判断されたGPS座標は、ボブの携帯電話またはアリスの携帯電話のGPS座標と比較され得る。
【0120】
さらなる実施例において、交換サービスプロバイダ104は、ロケーション条件が満足されることを確認するために、ボブ及び/又はアリスによる手動の入力を促進することができる。このステップは、例えば、アリスのオファーを受諾するステップと一緒に行われてよい。
【0121】
ロケーション条件が満足されていると分かった場合に、交換サービスプロバイダ104は、アリスとボブとの間でトランザクションを作成し、かつ、確定しようと試みる。一つの例においては、トランザクションブロードキャスト(transactional broadcast)の位置が指定された座標のXメートル以内である場合に、トランザクションは、P2P DL上にだけブロードキャストされる。このことは、トランザクションが指定された場所、例えば、ボブのゴールドエンポリアム、でだけ行われる得ることを保証する。
【0122】
最終的な交換は、
図2から
図10に示される第1および第2の実施例を参照して説明したように、各インビテーショントランザクションの出力を費やす1つまたはそれ以上のビットコイントランザクションを作成することによって実行することができる。
【0123】
2つ以上の当事者を含むトランザクション
【0124】
上記のトランザクションは、2人の当事者と2つのエンティティとの間における交換に関するものである。しかしながら、いくつかの例においては、2つより多い当事者及び/又はエンティティが交換に関与し得ることが正しく理解されよう。例えば、以下のシナリオを考えてみる。アリスはビットコインをリンゴと交換したいが、最低でも1000個のリンゴしか受け入れない。ボブは、リンゴをビットコインと交換したいが、500個のリンゴしか供給できない。キャロルは、リンゴをビットコインと交換したいが、600個のリンゴしか供給できない。こうした状況において、アリスのインビテーションの条件は、ボブまたはキャロルによって個別には満足することができない。しかしながら、一緒に、ボブとキャロルは1100個のリンゴを持っており、そして、アリスのインビテーションを満足することができる。
【0125】
別の実施例において、アリスはトークン化CADをトークン化GBPと交換したいし、ボブはトークン化GBPをトークン化AUDと交換したいし、そして、キャロルはトークン化CADをトークン化AUDと交換したい。3人の当事者のあらゆる2人の間に直接的な一致は存在しないが、組み合わされて、インビテーションのそれぞれを満足することができる。−アリスのトークン化CADがキャロルのところへ行き、ボブのトークン化GBPがアリスのところへ行き、そして、キャロルのトークン化AUDがボブのところへ行くことができる。
図16Aから
図16Cは、アリス、ボブ、およびキャロルの間におけるトランザクションのための例示的なトランザクションテーブルを示している。
【0126】
図16Aを最初に参照すると、アリスからキャロルへの支払いについてトランザクションテーブルが示されている。アリスは1500ドルのトークン化CADを有しており、そして、ボブからのトークン化GBP500を必要としている。トランザクションは、トークン化CAD1000をアリスからキャロルに対して支払い、そして、アリスは彼女自身に残りのトークン化CAD500(1500−1000)を支払う。標準BTC(regular BTC)を使用して、アリスは、サービスプロバイダの料金(
図16Aに示すような定額料金であってよく、または、移転の価値に応じた料金であってよい)を支払うことができ、そして、お釣りからマイナ(miner)のための1000サトシを差し引いたものを彼女自身に支払う。
【0127】
図16Bをこれから参照すると、ボブからアリスへのトークン化GBPの支払いについてトランザクションテーブルが示されている。ボブはトークン化GBP750を有しており、そして、キャロルからのトークン化AUDを必要としている。トランザクションは、トークン化GBP500をボブからアリスに対して支払い、そして、ボブは彼自身に残りのトークン化GBP250(750−500)を支払う。標準BTCを使用して、ボブは、サービスプロバイダの料金(
図16Bに示すような定額料金であってよく、または、移転の価値に応じた料金であってよい)を支払うことができ、そして、お釣りからマイナのための1000サトシを差し引いたものを彼自身に支払う。
【0128】
図16Cをこれから参照すると、キャロルからボブへのトークン化AUDの支払いについてトランザクションテーブルが示されている。キャロルはトークン化AUD1500を有しており、そして、アリスからのトークン化CADを必要としている。トランザクションは、トークン化AUD1000をキャロルからボブに対して支払い、そして、キャロルは彼女自身に残りのトークン化AUD500(1500−1000)を支払う。標準BTCを使用して、キャロルは、サービスプロバイダの料金(
図11Cに示すような定額料金であってよく、または、移転の価値に応じた料金であってよい)を支払うことができ、そして、お釣りからマイナのための1000サトシを差し引いたものを彼自身に支払う。交換が2つまたはそれ以上の別個のトランザクション(例えば、1:アリスがボブに対して移転し、そして、2:ボブがアリスに対して移転する)から成る場合には、全ての当事者が自身の資格(entitlement)を受け取るか又は誰も受け取らないかのいずれかであることを保証するように、トランザクションがリンクされてよいことが正しく理解されよう。これは、以下の条件を満足することによって達成することができる(2人の当事者、AとB、の例を使用するが、3人またはそれ以上の当事者まで容易に拡張可能である):AからBへ移転するトランザクション出力が存在し、かつ、Bによって費やすことができるのは、同時に、BからAへ移転するトランザクション出力も存在し、かつ、Aによって費やすことができる場合だけであり、逆もまた同様である。当事者AとBは、アリスとボブだけでなく、各トランザクションのために必要とされる一式の署名者を参照する(例えば、トークン発行者、エスクロー、等を含む)ことに留意する。
【0130】
図6を参照して上述した例示的な交換の変形においては、オーダーのマッチングのためにP2P DHTを解析する(parsing)サービスプロバイダの代わりに、上記の第4実施例に関して説明したように、ユーザ自身が現在のインビテーションを見るためにP2P DHTをスキャンまたはブラウズ(browse)することができる。ブラウジングは、交換サービスプロバイダ104といった、第三者によって促進されてよい。第三者は、インターフェイスを提供することができ、ユーザは、興味を持ち得るインビテーションについて、その中で閲覧、スキャン、および検索することができる。
【0131】
ユーザは、次いで、P2P DHT上で彼ら自身の将来のインビテーション(prospective invitation)を入力するプロセスをスキップすることができるが、代わりに、彼らが関心を持つオーダーと一致又はほぼ一致するインビテーションを作成することを選択することができる。
【0132】
例えば、ボブは、ブラウジングまたは検索インターフェイスを介してP2P DHT上でアリスのインビテーションを見つけることができる。その場合に、ボブは、アリスのものと一致するように自分のインビテーションを入力することができる。ボブは、これをいくつかの方法のうちの1つで行うことができる。一つの実施例においては、オーダーを「受諾(”Accept”)」するためのアリスのオーダーを表示する機能がインターフェイス上に存在してよい。ボブが、アリスがインビテーションのために使用したのと同じ交換サービスプロバイダ104のクライアントである場合には、彼らがボブのeウォレット(eWallet)(公開鍵、等)に既にアクセスしていることがあり、そして、従って、そうした情報に基づいて一致するオーダー(matching order)を作成することができる。それに応じて、交換サービスプロバイダ110は、インビテーションのマッチングのための引き換えスクリプトを生成し、これを署名のためにボブに対して送付し、署名された引き換えスクリプトを受け取り、そして、トランザクションのために備えてP2P DHT上にオーダーを入力することができる。ボブがアリスの交換サービスプロバイダ104のクライアントでない場合には、ボブが必要とされる情報および承認(authorisation)を入力できるようにする機能が提供されてよく、次いで、サービスプロバイダがボブの一致するオーダーを作成できるようにする。
図7と
図8を参照して上述したのと同じプロセスが、次いで、後に続く。
【0133】
上記の例は、BTCをトークン化CADと交換することを説明している。しかしながら、システム100は、あらゆるタイプのトークンについて働くことが正しく理解されよう。例えば、あらゆるタイプの(すなわち、通貨契約だけでなく、任意の契約を表わしている)トークンのためのBTC、あらゆる他のタイプのトークンのための任意のタイプのトークン、商品/サービスのためのBTC、商品/サービスのためのトークン、または、商品/サービスのための商品/サービス、を含んでいる。追加的および理論的に、上記のプロセスは、BTCに対するBTCの交換へ変更することができるが、そうした交換は現実の意味(real meaning)を有さない。
【0135】
商品/サービスが交換に関与する場合には、上述のトランザクションプロセスに係るわずかな変更が必要とされる。
【0136】
そうした場合に、(商品及び/又はサービスの)トランザクションは、交換に関わる商品またはサービスの記述(description)を含んでいる。契約書または権利証書によって表される、トークンとは異なり、記述は、契約を構成するものではない。
【0137】
記述は、アイテムを一意的に識別しても、しなくてもよい。例えば、物理的アイテムがトランザクションに関与する場合、その記述は、その物理的アイテムに関連付けられた一意の識別子を明示的に参照することができる。追加的または代替的に、記述メタデータ(description metadata)は、以下のうち1つまたはそれ以上を含んでよい。a)提供されるか、または、要求される所望のアイテムの一般的な記述、例えば、「食器洗い機、< 3年(”dishwasher,<3years”)」、b)オークションウェブサイトにおける販売について特定のアイテムに対する参照、例えば、「オークションサイト上で売りに出された中古品」、c)アイテムタイプの任意の数、例えば、販売のための15枚のTシャツを、単品として又は15枚までの任意の数量として購買することができると広告すること、d)現金(cash)への参照、任意の特定の通貨におけるもの、e)労働および支払いに係る記述であり、1回の作業完了のたび、もしくは、繰返し又は時間毎の支払いを伴う通常の芝刈り(繰返し作業)のためのもの、または、f)1つまたはそれ以上のキーワード、例えば「食器洗い機」。
【0138】
サービスに関して、サービスはトークンと同様にコントラクトによって裏付けられる。それとして、サービスはシェア(shares)へと分割可能であり、そして、分割不可能なサービスは1回限りの仕事(one-time job)、すなわち、分割可能であるが単一シェア(1シェア)を有するもの、であるとみなすことができる。サービスが分割不可能である場合に、サービスはインビテーションおよび交換の目的のトークンとして取り扱われてよい。アイテムがトークンによって裏付けされている場合に、アイテムは、インビテーションおよび交換の両方の目的のトークンとして取り扱われ、そして、不換通貨(fiat currency)のためのトークンといった、他のトークンと同じ方法で交換される。
【0139】
一意の識別子と関連付けられた物理的アイテムを含むトランザクションの一つの実施が、これから説明される。先の実施例と同様に、この例において、アリスは、P2P DLおよびP2P DHT上にインビテーションを置くために彼女の交換プロバイダを使用する。このインビテーションは、彼女が一意の識別子XYZ123を有する物理的アイテム、ラファエルの傑作「十字架降架(”Deposition of Christ”)」に関連し得るもの、を2500BTC未満(no more than 2500BTC)で購入するという記述を含んでいる。同様に、ボブは、彼が2400BTC以上(no less than 2400BTC)でアイテムXYZ123を販売するというインビテーションのマッチング(matching invitation)を置くことができる。アリスは、P2P DLを閲覧して、アイテム番号XYZ123を持つアイテムを見つけ、そして、この情報に基づいて一致するオーダー(matching order)を置くことができる。もしくは、代替的に、アリスは、その後に第三者、例えば交換サービスプロバイダ、によってマッチングされる一般的なインビテーションを置くことができ、そして、続いて、カタログアイテム番号と記述を含む新たなインビテーションがボブのオーダーと一致するように作成される。
【0140】
一意のIDを含むトランザクションについて、そうしたIDは、特定の交換サービスプロバイダに対してだけでなく、P2P DL全体にわたっても、一意でなければならないことが正しく理解されよう。従って、一意の識別子がデバイスに対して一意ではない場合(例えば、デバイスのシリアル番号)には、交換サービスプロバイダは、そのデバイスについての一意の識別子を生成することができる。各識別子がP2P DL全体に対して一意であることを保証するために、各交換サービスプロバイダは、例えば、彼らが使用する番号の前につける彼ら独自の一意のコードを有することができ、P2P DL上で広告されている製品を一意的に識別する。
【0141】
アリスとボブとの間で一旦合意に至ると、
図7から
図10を参照して上述した例示的なトランザクションプロセスに従ってトランザクションが行われ得る。
【0142】
物理的アイテムを含むトランザクションのさらなる実施例が、これから説明される。しかしながら、この例において、アイテムは、それに関連する一意の識別子を有していない。
【0143】
インビテーションが複数の類似アイテムを販売するためのオファーを含む場合には、メタデータは、任意の1つのトランザクションを用いて購入することができるアイテムの最大および最小の量を記述するように要求され得る。例えば、アリスは、彼女が、トランザクション毎に少なくとも5枚、Dead Lizard 2015コンサートツアーTシャツを、それぞれ0.025BTCで15枚まで売るということを暗示する(inferring)インビテーションを置くことができる。この場合に、メタデータ値は、最小レート(0.025BTC/15アイテム)、最大量(Offer-QTY-max(15))、および最小量(Offer-QTY-min(5))を含んでよい。以下の表は、インビテーションに関連付けられたメタデータをまとめている。
【0144】
支払トランザクションにおける実際のBTC値が、次いで、交換サービスプロバイダによって計算される。このトランザクションは、交換を実行するためのインビテーションを単に表しているだけなので、トランザクションの実際の値は、例えば、ダスト(dust)ほどに小さくてよい(546サトシ)。代替的に、以下で説明するように、値は、インビテーションを保証するためにサービスプロバイダによって必要とされる名目額(nominal amount)であってよい(例えば、そのためアリスは引出しをしないように動機付けられる)。
【0145】
さらなる実施例においては、硬貨(現金)の形態における商品を交換することができる。例えば、アリスは、150BTCの最大購入で、カナダドル(トークンではなく硬貨(hard currency))についてビットコインを販売するインビテーションを置くことができる。インビテーションは、追加的に、彼女の店舗の住所(371 Whimsy Avenue、Brentford)で交換が行われなければならないというロケーション条件を含んでよい。インビテーションのマッチングを置いた後で、トランザクションを確定するために、ボブは、次いで、ビットコイントランザクションにおける支払いの代わりに、現金を引き渡すためにアリスの店に持ってきてよい。物理的な移転のためにボブとアリスがひとたび彼女の店で会うと、次いで、ボブに対するビットコインの実際のデジタルトランザクションおよびアリスに対する硬貨の移転のデジタル記録が行われてよい。
【0146】
他の商品/サービスと交換される商品/サービスを含むトランザクションの場合には、P2P DL上のトランザクションは、記録としてのみ存在し、当事者間のいかなる価値も交換するものではないことが正しく理解されよう(サービスプロバイダ等に対するあらゆる料金とは別に)。ユーザは、システムを使用し、そして、交換が永久に記録されるように、P2P DL上にトランザクションを入力するための名目上のサービス料(nominal service fee)を支払うように選択することができる。
【0147】
オリジナルのインビテーショントランザクションは、価値の移転またはイベントの記録としてではなく、インビテーションとしてのみ動作すること、に留意する。交換が物理的アイテムだけを含むように、商品間の交換(goods-for-goods exchange)が行われる場合には、最終的な交換がP2P DL上に記録される必要はない。P2P DLは、最終的な交換においていかなるトランザクションも完了することを要求されないからである。それにもかかわらず、物理的アイテムの交換に対する当事者がP2P DL上に交換を記録することを望む場合には、そうするためのマイナに対する料金を条件として、彼らは、インビテーショントランザクションを互いにそれぞれを費やすことができる。当事者がP2P DL上に最終的な交換を記録することを望まない場合には、インビテーショントランザクションを彼ら自身に戻すように費やすか、または、P2P DL上に未使用のまま残しておくことができる。
【0148】
商品に対するBTC、または商品に対するトークンを含む交換の場合には、BTCまたはトークンの値を移転するために、少なくとも1つのトランザクションがP2P DL上で費やされる。この場合に、商品をオファーする(offering)インビテーショントランザクションが、費やされてもされなくてもよい。そのインビテーショントランザクションを費やすことによって交換(商品)の価値は移転されないからである。しかしながら、再度、当事者は、移転の恒久的な記録(例えば、販売の領収書)を提供するために、それにもかかわらずトランザクションを費やすように決定することができる。
【0149】
上記のトランザクションにおいて費やされた金額は、特にアリスのオファーがビットコインまたはトークンではなく商品/サービスである場合に、いくつかの事例においては提供される金額を表わさないことがある。代わりに、サービスプロバイダは、商品の価値を表す金額のアリスによる「デポジット(”deposit”)」を要求するか、または、別の方法でアリスがオファーを「保証する(”guarantee”)」ことができる場合に名目上の金額だけを要求するか、もしくは、(iii)サービスプロバイダ自身がアリスのためにビットコインを提供し(彼女はいくらも持っていないかもしれない)、そして、クライアントに対して料金を請求するあらゆる手段によってこの調達コスト(funding cost)をカバーすることができるだろう。
【0150】
上述の実施形態においては、ユーザのインビテーションがP2P DHTにおいて公開される。いくつかの実施形態においては、しかしながら、ユーザのインビテーション(例えば、スクリプトおよびスクリプトハッシュ)がウェブサイトにおいて公開され、または、別のユーザに対して直接的に送付されてよい。
【0151】
いくつかの実施形態において、ユーザのインビテーションは、サービスプロバイダによってローカルに保管されてよい。例えば、サービスプロバイダは、特定のユーザだけがユーザのインビテーションの詳細にアクセスすることができるプライベートオークションをホストすることができる。
【0152】
当業者であれば、本開示の広範で一般的な範囲から逸脱することなく、上述の実施形態に対して多くの変形及び/又は変更がなされ得ることが理解されよう。本実施形態は、従って、全ての点で例示的であり、かつ、限定的でないものとしてみなされるべきである。
【0153】
ステップ、特徴、インテジャ、混合物及び/又は化合物は、個別に又は集合的に、ここにおいて開示され、または、本出願の明細書において示されており、そして、上記のステップまたは特徴の2つまたはそれ以上のうち任意および全ての組み合わせもそうである。