JP2022549624A - ブロックチェーントランザクションのコールバックメカニズム - Google Patents
ブロックチェーントランザクションのコールバックメカニズム Download PDFInfo
- Publication number
- JP2022549624A JP2022549624A JP2022518348A JP2022518348A JP2022549624A JP 2022549624 A JP2022549624 A JP 2022549624A JP 2022518348 A JP2022518348 A JP 2022518348A JP 2022518348 A JP2022518348 A JP 2022518348A JP 2022549624 A JP2022549624 A JP 2022549624A
- Authority
- JP
- Japan
- Prior art keywords
- client
- channel
- transaction
- miner
- given
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
- G06Q20/38215—Use of certificates or encrypted proofs of transaction rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Accounting & Taxation (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一態様にて、本開示は、クライアントに関連するブロックチェーントランザクションを処理するための方法、装置及びシステムを提案する。決済サービスが、1つ以上のクライアントがアクセスを有するゲートウェイ又はAPIエンドポイントとして実装される。所与のクライアントから受信したトランザクションを提出することの要求が、コールバック識別子と関連付けられる。コールバック識別子は、所与のクライアントと例えばマイナー又は他の取引先などの別エンティティとの間の直接通信を可能にするものである。決済プロセッサは、トランザクションをマイナーに提出し、この提出がコールバック識別子と関連付けられる。そして、対応するブロックチェーントランザクションがマイナーによって作成されると、それに関するコールバック通知を、コールバック識別子を用いてマイナーから直接クライアントに提供することができる。
Description
この開示は、概して、1つ以上のクライアントに対する決済サービス又は決済インタフェースを実装する方法及びシステムに関する。特に、以下に限定されないが、本開示は、1つ以上のクライアント(依頼人)に対する、又は1つ以上のクライアントのための、ブロックチェーン又は分散型台帳に関連する安全で信頼できる支払トランザクションや、カスタマ(客)又は支払エンティティに関連するデジタル資産決済に関する取引を可能にすることに関する。
本文書では、用語‘ブロックチェーン’を、全ての形態の電子的な、コンピュータベースの、分散型台帳を含むように使用する。これらは、合意に基づく(コンセンサスベースの)ブロックチェーン及びトランザクションチェーンの技術、許可された及び許可されていない台帳、共有台帳、公的及び私的なブロックチェーン、並びにこれらの変形を含む。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実装も提案及び開発されている。ここでは、便宜及び説明のために、ビットコインを参照することがあるが、留意されたいことには、本開示は、ビットコインブロックチェーンとの使用に限定されず、任意の種類のデジタル資産又はデジタル資産表現に関連する代わりのブロックチェーン実装及びプロトコルも本開示の範囲内にある。用語“クライアント”、“エンティティ”、“ノード”、“ユーザ”、“送信者”、“受信者”、“支払人”、“受取人”は、ここでは、コンピューティングリソース又はプロセッサベースのリソースを指す。用語“ビットコイン”は、ここでは、ビットコインプロトコルから派生する又はそれに基づく任意のバージョン又はバリエーションを含むように使用される。用語“デジタル資産”は、例えば、暗号通貨、所有物の少なくとも一部を表すトークン、スマート契約、つまりはソフトウェアライセンスであるライセンス、又はメディアコンテンツなどのDRM契約など、任意の移転可能な資産を指し得る。理解されることには、デジタル資産という用語は、この文書全体を通して、1つのエンティティから別のエンティティへの取引における支払として移転又は提供され得る価値に関連し得る商品を表すように使用される。
ブロックチェーンは、複数のトランザクションからなる複数のブロックで構成されるコンピュータベースの非中央集権的な分散型システムとして実装されるピア・ツー・ピアの電子台帳である。各トランザクションは、ブロックチェーンシステムにおける参加者間でのデジタル資産の管理の移転をエンコードするデータ構造であり、少なくとも1つのインプットと少なくとも1つのアウトプットとを含む。各ブロックが、そのブロックが一緒にチェーン化される先行ブロックのハッシュを含むことで、その開始以前にそのブロックチェーンに書き込まれた全てのトランザクションの恒久的で変更不可能な記録を作り出す。トランザクションは、それらのインプット及びアウトプットに埋め込まれるスクリプトとして知られた小プログラムを含み、それらが、トランザクションのアウトプットが誰によってどのようにアクセスされることができるかを指定する。ビットコインプラットフォーム上では、これらのスクリプトは、スタックベースのスクリプト言語を用いて書かれる。
トランザクションがブロックチェーンに書き込まれるには、そのトランザクションが“検証済み”でなければならない。ネットワークノード(マイナー,マイナー)が、各トランザクションが有効であることを保証するための作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードにインストールされているソフトウェアクライアントが、未使用トランザクション(UTXO)に対する検証作業を、そのロッキング及びアンロッキングスプリクトを実行することによって行う。ロッキング及びアンロッキングスプリクトの実行がTRUEに評価される場合、トランザクションは有効であり、次いで、トランザクションがブロックチェーンに書き込まれる。従って、トランザクションがブロックチェーンに書き込まれるには、そのトランザクションが、i)そのトランザクションを受け取る第1のノードによって検証され(そのトランザクションが検証された場合に、そのノードがそれをネットワーク内の他のノードに中継する)、ii)マイナーによって構築された新しいブロックに追加され、そして、iii)マイニングされ、すなわち、過去のトランザクションの公開台帳に追加されなければならない。
UTXOとしてブロックチェーンに格納されると、ユーザは、関連付けられたリソースの管理を、別のトランザクションのインプットに関連付けられた別のアドレスに移転することができる。この移転は、原則としてではないが、通常、デジタルウォレットを用いて行われる。このデジタルウォレットは、例えばデスクトップ、ラップトップ又はモバイル端末などのコンピューティング装置上のデバイス、物理媒体、プログラム、アプリケーション(アプリ)であることができ、あるいは、例えばインターネットなどのネットワーク上のドメインに関連付けられた、遠隔ホストされるサービスであることができる。デジタルウォレットは、公開鍵及び秘密鍵を記憶しており、ユーザに関連するリソース、トークン及び資産などの所有権を追跡するためや、デジタル資産を受け取る又は消費するためや、例えば、暗号通貨、又はライセンス、又は財産、又は他のタイプのリソースなどの、デジタル資産に関係し得るトークンを転送するために使用されることができる。
ブロックチェーン技術は、暗号通貨実装の使用に関して最も広く知られているが、デジタル起業家は、新しいシステムを実装するために、ビットコインが基づく暗号セキュリティシステムと、ブロックチェーンに格納されることができるデータとの両方の使用を探求している。ブロックチェーンが、暗号通貨の領域に限られない自動化されたタスク及びプロセスに使用され得るとすれば、非常に有利であろう。このようなソリューションは、ブロックチェーンの利益(例えば、イベントの恒久的で改ざん防止された記録や、分散処理など)を生かしながら、それらの用途においてもっと融通が利くものとなり得るであろう。現在の研究の1つの分野は、“スマート契約”の実装のためのブロックチェーンの利用である。これらは、機械読み取り可能な契約又は合意の条件の履行を自動化するように設計されるコンピュータプログラムである。自然言語で書かれる伝統的な契約とは異なり、スマート契約は、結果を生成するためにインプットを処理することができるルールを有する機械実行可能プログラムであり、そして、それらの結果に応じてアクションを行わせることができるものである。ブロックチェーンに関連して関心ある別の分野は、ブロックチェーンを介して実世界のエンティティを表現及び移転するための“トークン”(又は“カラーコイン”)の使用である。潜在的に機密又は秘密のアイテムを、識別可能な意味又は値を持たないトークンによって表現することができる。従って、そのトークンは、実世界のアイテムをブロックチェーンから参照することを可能にする識別子として機能する。
上述の例又はシナリオは、ユーザ又はエンティティ間での、つまりはデジタル資産である何らかの資産、又はデジタル資産の管理、の移転に関する。従って、2つのエンティティ間での資金の交換のための、特に、実世界における資産を尊重し得る商人とカスタマとの間でのデジタル資産決済のための既存の決済システム又は電子商取引システムに類似した安全で堅牢なシステムを、より良いユーザ体験で、より安価な商人又は支払人のコストで、そして、より安全なセキュリティレベルで、実装することが望まれる。より具体的には、分散型台帳(ブロックチェーン)技術並びに記録の高められた安全性、透明性及び信頼性の利点を利用して、任意の商人又は複数の商人が、それぞれのカスタマとのデジタル資産決済が即座に且つ安全にマイニングされてブロックチェーンに書き込まれることができ、それにより、そのような決済の持続的で、改ざん防止された、監査可能な記録が提供されることを、確保することを可能にする共通のプラットフォーム又はインタフェースを提供することが望まれる。
このような改善されたソリューションが現在考案されている。本開示は、これらの技術的関心事に、以下のような技術を提案することによって対処する、すなわち、その技術によって、例えば暗号通貨などのデジタル資産の受取人である1つ以上のクライアント、すなわち、商人又は受取人エンティティに関するトランザクションが、そのようなクライアントにアプリケーションプログラミングインタフェース(API)を提供する方法、技術、及び装置によって、即座にブロックチェーンに書き込まれ得る技術を提案することによって対処する。このような技術では、マイナーが動的に又は即座にトランザクションをマイニングしたりブロックチェーンに書き込んだりすることができ、すなわち、安全で信頼できるやり方でクライアントに対する即時トランザクション又はゼロ承認(コンファメーション)トランザクション(0-conf)を可能にするサービスを提供することができる。
一態様において、本開示は、クライアントに関連するブロックチェーントランザクションを処理するための決済サービスに関連する方法、装置及びシステムを提案する。当該決済サービスは、1つ以上のクライアントがアクセスを有するゲートウェイ又はAPIエンドポイントとして実装される。本方法では、所与のクライアントから受信したトランザクションを提出することの要求が、コールバック識別子と関連付けられる。コールバック識別子は、所与のクライアントと別エンティティとの間の直接通信を可能にするものである。決済プロセッサは、トランザクションをコールバック識別子とともにマイナーに提出する。そして、対応するブロックチェーントランザクションがマイナーによって作成されると、それに関するコールバック通知をマイナーから直接クライアントに提供することができる。
他の一態様において、クライアントからの要求が、チャネルサービスによって提供されるチャネルであって、クライアントと別エンティティとの間の直接通信を可能にする1つ以上の機能に関連付けられたチャネルと関連付けられる。この場合に、クライアントはまた、そのチャネルに対する1つ以上のアクセストークン及びアプリケーションプログラミングインタフェース(API)を提供される。そして、これらのアクセストークン及び/又はAPIに基づいて、クライアントによって、例えばクライアントのためにトランザクションをマイニングするエンティティとして特定されたマイナーなどの別エンティティにチャネルへのアクセスを提供することができる。これは、対応するブロックチェーントランザクションに関係するデータを別エンティティによって直接チャネルに書き込むことを可能にする。次いで、チャネルサービスを介して、対応するトランザクションに固有のコールバック通知を提供することができる。これは、例えばクライアントがオンラインであってネットワークを介してチャネルサービスと通信しているときなど、必要なとき又はそうすることが可能なときにいつでも、所与のトランザクションに関連するデータがクライアントによってチャネルから直接アクセスされることを可能にする。一部のケースにおいて、チャネルサービスはチャネルプロセッサによって実装され得る。チャネルプロセッサは、上述の決済プロセッサと同じエンティティであってもよいし、決済プロセッサとは別個のエンティティであってもよい。
この明細書全体を通して、用語“有する”、又は例えば“含む”、“有した”、“有している”、などのバリエーションは、記述される要素、整数若しくはステップ、又は一群の要素、整数若しくはステップを含むが、他の要素、整数若しくはステップ、又は他の一群の要素、整数若しくはステップを排除しない、という意味であると理解される。
次に、本開示の態様及び実施形態を、添付の図面を参照して、単に例として説明する。
1つ以上のクライアントに対してブロックチェーンに関連するデジタル資産トランザクションを可能にするための決済サービス又は決済インタフェースを実装する方法を示すフローチャートであり、当該方法は、第1の態様に従って決済プロセッサによって実装される。
ブロックチェーントランザクションの処理を要求する方法を示すフローチャートであり、該ブロックチェーントランザクションは、クライアントに関連するデジタル資産決済に関連し、当該方法は、第2の態様に従ってクライアントに関連する1つ以上のプロセッサによって実装される。
クライアントに対するデジタル資産決済に関連するブロックチェーントランザクションを処理する方法を示すフローチャートであり、当該方法は、第3の態様に従ってマイナーに関連する1つ以上のプロセッサによって実装される。
クライアントに対してブロックチェーントランザクションを可能にするための決済サービス又は決済インタフェースを提供するシステムを示す概略図である。
複数のマイナーに関連する手数料見積もりを取得するための第1の要求に関連するデータの流れを示す概略図である。
選択された手数料見積もりに基づいてトランザクションを提出するための第2の要求に関連するデータの流れを示す概略図である。
ブロックチェーントランザクション識別子に基づくステータスクエリに関連するデータの流れを示す概略図である。
トランザクションに対するコールバックメカニズムを実装する方法を示すフローチャートであり、当該方法は、第4の態様に従って決済プロセッサと関連付けられた1つ以上のプロセッサによって実装される。
1つ以上のクライアントのためのチャネルサービスを実装する方法を示すフローチャートであり、当該方法は、第4の態様に従ってチャネルプロセッサと関連付けられた1つ以上のプロセッサによって実装される。
決済サービスにアクセスする方法を示すフローチャートであり、当該方法は、第4の態様に従ってクライアントと関連付けられた1つ以上のプロセッサによって実装される。
所与のブロックチェーントランザクションと関連付けられたメッセージを処理する方法を示すフローチャートであり、当該方法は、第4の態様に従ってマイナーと関連付けられた1つ以上のプロセッサによって実装される。
本開示の様々な態様及び実施形態を実装することができるコンピューティング環境を示す概略図である。
添付の請求項は、以下に詳細に説明される本開示の第4の態様に関係するが、本開示の特許請求に係る態様及び関連実施形態の十分且つ完全な理解を読者に提供するために、第1、第2、及び第3の態様の細部の詳細な説明をここに提供する。
第1の態様によれば、本開示は、ブロックチェーンと関連付けられるトランザクションについて1つ以上のクライアントに対する決済サービスを実施するコンピュータ実装された方法を提供し、当該方法は、決済サービスに関連付けられた決済プロセッサによって実装される。一部の実施形態において、クライアントは、計算リソース若しくはノード、又は暗号通貨決済を受け入れ及び/又は処理するためのデジタルウォレットに関連付けられることができ且つそのようなウォレットに関する公開鍵又は公開アドレスに関連付けられることができるエンティティとし得る。一部の実施形態において、クライアントは、実世界で商品又はサービスを提供し且つかかる商品又はサービスに対するデジタル資産決済支払を受ける、例えば店頭(ポイント・オブ・セールス)装置などの商人エンティティ又は端末を表し得るが、そのように限定されるものではない。一部の実施形態において、決済プロセッサは、1つ以上のクライアントに対して、関連サービス又はサードパーティサービスとして決済インタフェースを提供するように構成される。一部の例において、決済プロセッサは、クライアントとマイナーとに、1つ以上のユーザフレンドリーなインタフェースを介してブロックチェーンに関連する複数の決済サービス及び機能を提供するので、決済アグリゲータとして参照される。一部の実施形態において、決済プロセッサは、例えばHTTPS、TCP/IPなどの、ウェブベースのサービスのための標準的なインターネット通信プロトコルを用いてインターネット上で通信を行うことができるように、1つ以上のクライアントのためにウェブベースのインタラクションを提供する、すなわち、ウェブサービスとして実装されるアプリケーションプログラミングインタフェース(API)として実装される。このAPIは、決済プロセッサと関連付けられる1つ以上のクライアントに既知である若しくは利用可能であるか、送信/提供されるかのいずれかである。一部の実施形態において、このAPIは、決済プロセッサによって提供されるサービス又は機能にアクセスするための登録又は署名プロセスを受けてクライアントに提供されてもよい。一部の例において、当該APIは、例えばSwaggerなどのAPIユーザインタフェースを介したクライアントによる使用のために提供又は公表されてもよく、Swaggerは、ウェブベースのサービスにアクセスすることを望むクライアント又は他のエンティティのための周知のAPI設計及び開発ツール又はインタフェースである。
前記第1の態様の方法は、複数のマイナーの中の各マイナーから、トランザクションをマイニングすることに関する手数料見積もりを取得するステップを含む。このステップは、トランザクションをマイニングすることに関連するマイニング手数料見積もりについてのクライアントからの第1の要求に応答して行われる。一部の実施形態において、マイナーはノードであり、背景技術セクションでも上述したように、ロッキング及びアンロッキングスクリプトの検証並びにトランザクションをマイニングすること若しくはブロックチェーンに書き込むことを委託された1つ以上のプロセッサによって実装される。例えば、ビットコイン・サトシ・ビジョン(Bitcoin Satoshi’s Vision;BSV)が、売買又は移転される暗号通貨又はデジタル資産である場合、マイナーはBSVノードと呼ばれることがある。第1の態様の方法は、取得した手数料見積もりをクライアントに提供するステップを含む。一部の実施形態において、手数料見積もりは、トランザクションが何に関係するか、又は関与する当事者に関係なく、トランザクションをブロックチェーンにマイニングすることに関してマイナーによって徴収又は請求される現在の手数料に関係する。他の実施形態では、手数料見積もりは、要求内で特定され得る所与のトランザクションに基づくように調整されてもよい。一部の実施形態において、決済プロセッサは、受信した全ての手数料見積もりをクライアントに提供してもよいし、取得した手数料見積もりの中でクライアントに提供すべき1つ以上の推奨手数料見積もりを提供してもよい。
有利なことに、例えばビットコインSV(BSV)のような暗号通貨などのデジタル資産の受取人である1つ以上のクライアント、すなわち、商人又は受取人エンティティに向けたAPIとして提供される決済サービスを実装することにより、第1の態様の方法は、クライアントが署名すること又は決済プロセッサによって提供されるウェブサービスを使用することを可能にすることによって、決済トランザクションが、ほぼ即座にマイニングされる(ブロックチェーンに書き込まれる)こと、又はマイナーがプルーフ・オブ・ワークパズルを解いた後に可能な限りすぐにマイニングされることを可能にする。現在手数料見積もりを提供することにより、所与のマイナーは、理論的に、その手数料のために該所与のマイナーによってマイニングされる次のブロックにトランザクションを追加することに合意又は約束する。有利なことに、これは、つまりは商人エンティティであるクライアントが、もはや、マイナーからの承認(コンファメーション)を待つ必要がないことを意味する。従って、有利なことに、クライアント及びそれぞれのマイナーに関連する0-confトランザクションを実行することができる。決済サービスAPIを使用するクライアントの身元は有利に匿名のままであることができながら、そのクライアントに関連する全てのトランザクションを、複数のマイナーの中の、マイニングすることに関する選ばれた又は選択された手数料見積もりを満たすマイナーによって、依然として確実にマイニングすることができる。故に、個々のクライアント又は商人は、追加の処理リソース又はネットワークリソースを実装する必要なく、提案する決済サービスAPIを利用することによって、それぞれのクライアントに関連する全ての支払の変更不可能且つ検証可能な記録の透明性、信頼性、及び提供の利益を役立てることができる。
第1の態様の一部の実施形態において、取得した手数料見積もりの中の選択された手数料見積もりに関係する又はそれを含む所与のトランザクションを提出するためのクライアントからの第2の要求に応答して、当該方法は、該所与のトランザクションに対するブロックチェーントランザクションを生成することの要求を、複数のマイナーの中の1つ以上のマイナーに送信することを含む。
一部の実施形態において、選択された手数料見積もりは、クライアントから受信されるとともに所与のトランザクションに対して選択され、そして、それが、デジタル資産決済を必要とするクライアントから購入された商品又はサービスに鑑みて、クライアントと例えばクライアントのカスタマなどの別のノード又はエンティティとの間の支払要求又は決済トランザクションに関係付けられ得る。当該方法は、次いで、複数のマイナーの中の選択された手数料見積もりを満たす少なくとも1つのマイナーから、ブロックチェーントランザクションに関連するアウトプットスクリプト、例えばUTXO、を受信することを含む。例えば、一部の実施形態において、手数料見積もりを満たすために、該少なくとも1つのマイナーは、選択された手数料見積もりよりも高い価値、又は低い価値、そして、一部のケースでは、クライアントに関連する1つ以上のルール又は所定の基準に応じて選択された手数料見積もりよりも高い価値を持つ現在手数料見積もりを提供している又は関連付けられているはずである。当該方法は、次いで、結果をクライアントに送信することを含み、該結果は、所与のトランザクション、すなわち、クライアントとカスタマとの間での決済に関係するブロックチェーントランザクションのトランザクション識別子(TxID)を含む。
有利なことに、本開示のAPIは、REST(Representational State Transfer)エンドポイントとして実装されることができ、それにより、クライアントが例えばHTTPSなどの標準的なインターネット又はウェブベースのプロトコルを使用して通信することを可能にする。さらに、有利なことに、第1の態様の決済サービスは、デジタル資産決済に関連する対応するトランザクションが、選択された手数料見積もりに基づいて即座に作成されてブロックチェーンに書き込まれることを可能にする。クライアントによって又はクライアントのために決済プロセッサによって選択された又は選ばれたものである選択された手数料見積もりに基づいてトランザクションをマイニングすることは、有利なことに、クライアントからの選択された手数料見積もりと一致する又は満たす現在手数料見積もりで所与のマイナーがトランザクションをマイニングすることになるという保証を既に提供されていて、複数のマイナーの中の少なくとも1つのマイナーがほぼ即座に又は可能な限り速やかにトランザクションをブロックチェーンにマイニングする又は書き込むことを可能にする。故に、当該決済サービスAPIは、クライアントが、ブロックチェーンにおいてトランザクションが実際にブロックに追加されていてマイニングされることのマイナーからの承認をクライアントが待つ必要なく、安全且つ信頼性あるやり方でクライアントのためにブロックチェーンにおいて即時トランザクション又はゼロ承認トランザクション(0-conf)がマイニングされることを可能にするという利点を持つ。これは何故なら、所与のマイナーが既に、第1の要求に応答して、トランザクションをマイニングすることに関する現在手数料見積もりを送信することによって、当該マイナーがマイニングを実行できることを示しているからである。第1の態様の方法は、第1の態様に従ったマイニングは、クライアントによって又はクライアントのために選ばれたものである選択された手数料見積もりに基づいて行われることになるので、即時トランザクションがマイニングされることを可能にすることに関連する二重支払リスクを低減させる。故に、選択された手数料見積もりを満たすマイナーだけがトランザクションをマイニングすることができ、手数料見積もりを満たす最初のマイナーによって、ブロックチェーンに関連付けられるブロックにトランザクションが追加されると、そのトランザクションは他のマイナーによってマイニングされることはできない。
決済プロセッサによって実装される決済サービスを提供する第1の態様に従った方法の一部の実施形態は、クライアントに提案すべき推奨手数料を決定することに基づいて、取得したトランザクションマイニング手数料見積もりを提供することを有し、決定される手数料は、複数のマイナーからの取得した手数料見積もりの平均値又は取得した手数料見積もりの最大値とし得る。有利には、二重支払を避ける試みで、決済プロセッサは、第1の要求に応答して複数のマイナーから得られた最も高い手数料値でトランザクションが提出されることを推奨することができる。斯くして、全てのマイナーに、それらそれぞれが現在見積もった手数料でそのトランザクションをマイニングする機会を等しく与えることができる。一方、推薦されたトランザクションを、受信した全ての手数料見積もりの中央値又は平均値の手数料、又はそれより高い手数料でトランザクションを提出するという推奨である場合には、より高い見積もりを持つマイナーは、そのトランザクションを単に例えば補助メモリプールなどのメモリプール(mempool)に保持することができるだけであり、それを用いて、トランザクションの任意の二重支払に対するチェックを行ってそれを排斥する。同様の利点が、選択された手数料見積もりが推奨手数料見積もりに基づく場合、又は推奨がクライアントによって行われる選択の部分である場合に当てはまる。
有利には、決済プロセッサは、選択された手数料見積もりとなるようにその後にクライアントが選び得る手数料見積もりを推奨し、それは、一部の実施形態において、クライアントへのデジタル資産決済に関連するトランザクションを提出するためにクライアントが進んで支払う意思がある最大値である。これは、クライアントが、計算的に高機能のものである場合、又はクライアントが、手数料見積もりを自身で選択するのではなく、決済プロセッサによって推奨が提供されることを予め決めている場合に有利である。故に、有利なことに、クライアントは、手数料見積もりを選択するため又は手数料見積を恣意的に選択するために新たな又は別個の経験則又は計算を適用するのではなく、推奨手数料見積もりに基づいて手数料見積もりを選択することができる。
一部の実施形態において、推奨又は推奨手数料見積もりが、つまりは決済プロセッサによって提供されるAPIである決済サービスから提供されるとき、この推奨手数料見積もりが提供されてもよいし、あるいは、推奨手数料見積もりを含む取得した全ての手数料見積もり、識別子を含む推奨手数料見積もりが提供されてもよい。有利なことに、推奨と、受信した全ての手数料見積もりとを提供することにより、決済プロセッサは、クライアントに、トランザクションを提出するのに推奨手数料見積もりを用いること又は受信した他の手数料見積もりから異なる手数料見積もりを選択することのいずれの選択肢も提供する。
一部の実施形態において、当該方法は、それぞれの手数料見積もりを提供する複数のマイナーの中の所与のマイナーの身元を検証するステップを有し、身元は、所与のマイナーに関連付けられたデジタル署名に基づいて検証される。各マイナーに関連付けられた秘密鍵及び公開鍵(又は公開アドレス)を含む暗号鍵ペアが、手数料見積もりが実際に所与のマイナーを起源とするものであること、すなわち、秘密鍵によって署名されたデータは、対応する公開鍵を用いてのみ復元又は検証可能であることを検証するために使用され得る。検証がデジタル署名に基づく場合、標準的な公開鍵基盤(public key infrastructure;PKI)技術が使用及び実装され得る。
一部の実施形態において、当該方法は、それぞれの手数料見積もりを提供する複数のマイナーの中の所与のマイナーの身元を検証するステップを有し、身元は、所与のマイナーに関連付けられたデジタル署名に基づいて検証される。各マイナーに関連付けられた秘密鍵及び公開鍵(又は公開アドレス)を含む暗号鍵ペアが、手数料見積もりが実際に所与のマイナーを起源とするものであること、すなわち、秘密鍵によって署名されたデータは、対応する公開鍵を用いてのみ復元又は検証可能であることを検証するために使用され得る。検証がデジタル署名に基づく場合、標準的な公開鍵基盤(public key infrastructure;PKI)技術が使用及び実装され得る。
他の実施形態では、マイナーの身元を検証するために、加えて又は代わりにいずれかで、所与のマイナーに関係する識別子を使用することができる。一部の実施形態において、当該方法は、例えばMinerIDなどの決済プロセッサを含む。一部の実施形態において、上記識別子は、所与のマイナーの評判インジケータと関連付けられ得る。一部の実施形態において、MinerIDは、所与のマイナーがその一部をなすマイニングプールに基づくことができ、あるいは、所与のマイナーに固有のものとすることができる。評判インジケータは、マイナーのパフォーマンスの尺度に関する。例えば、一部の例において、この評判は、所与のマイナーが、見積もった手数料で、過去にどのようにトランザクションを実行又はマイニングしたかに基づき得る。例えば、マイナーが、そのマイナーが見積もった手数料で、又は該手数料の許容範囲内で、定期的にトランザクションをマイニングしている場合、評判インジケータは、例えば値が高いことによって、良い評判を指し示し得る。一部の実施形態において、マイナーの評判スコア又はインジケータは、そのマイナーと通信可能に結合された少なくとも1つの決済プロセッサによって計算、維持及び管理され得る。
一部の実施形態において、決済プロセッサによって実装される第1の態様の方法は、複数のマイナーの中の所与のマイナーから取得した手数料見積もりを、PKI技術を用いて該所与のマイナーの身元を検証するためのデジタル署名とは異なるものであるマイナー署名に基づいて検証するステップを含み得る。この検証ステップのために決済プロセッサによって使用されるマイナー署名は、有利には、決済プロセッサに提供されたそれぞれの手数料見積もりについて、トランザクションをマイニングするというマイナーのコミットメントを示す又はその役割を果たす。マイナー署名の存在はまた、有利には、マイナーが相反する(1つ以上の)トランザクションを拒否することを確かにするように機能し得る。従って、マイナー署名に基づいて検証するステップは、有利なことに、所与のマイナーがマイニングのためにトランザクションをブロックに含めること、及びそれらが如何なる相反するトランザクションも含まないことの保証として作用する。一部の実施形態において、所与のマイナーのパフォーマンスを、該所与のマイナーによって提供される(1つ以上の)そのような保証に基づいてモニタリングすることは、該所与のマイナーに関連するマイナースコア又は評判を定めたり、それに影響を及ぼしたりし得る。
一部の実施形態において、複数のマイナーの中の各マイナーによって提供される手数料見積もりは、手数料見積もりの値を含むデータ型として決済プロセッサに提供される。一部の実施形態において、該データ型は、JavaScript(登録商標)オブジェクト表記(JSON)オブジェクトフォーマットにおけるものである。
一部の実施形態において、決済プロセッサにて上記少なくとも1つのマイナーから受信するアウトプットスクリプトは、上記少なくとも1つのマイナーのためのメモリプールに関連付けられた未使用トランザクションアウトプット(Unspent Transaction Output;UTXO)であり、該UTXOは、クライアントとカスタマとの間でのデジタル資産決済に関係するブロックチェーントランザクションのトランザクション識別子(TxID)を含む。
一部の実施形態において、クライアントが、カスタマとの所与の決済トランザクション又は当該クライアントと関連する何らかのトランザクションに関係するブロックチェーントランザクションを有利に識別又は追跡できるようにするために、当該方法は、トランザクション識別子に対応するブロックチェーントランザクションを取得することの要求を複数のマイナーに送信するステップを含み、この要求は、クライアントからのトランザクション識別子に関連付けられたステータスクエリに応答して、決済プロセッサによって少なくとも1つのマイナーに送信される。応答して、決済プロセッサは、複数のマイナーの中の少なくとも1つのマイナーから、以前に生成された対応するブロックチェーントランザクションを取得する。該少なくとも1つのマイナーによるブロックチェーントランザクションのマイニング状態に基づいて、当該方法は、トランザクション識別子に関連付けられた、得られたブロックチェーントランザクションに関係するステータス結果を、クライアントに送信するステップを含む。該結果は、ブロックチェーントランザクションが、マイニングされた、すなわち、完了したのか、それとも、何らかの理由で拒否されたのか、それとも、この所与のマイナーの前に複数のマイナーの中の別のマイナーによって既にマイニングされたものであり得るために無効であるのかを指し示し得る。これは、有利なことに、特定のトランザクションに対して異なるマイナーによってマイニングが行われた場合に二重支払を回避する。一部の実施形態において、マイナーは、ブロックに追加していない又は補助メモリプール内でマイニングされていないトランザクションを維持することができ、補助メモリプールは、当該マイナーと関連付けられた主メモリプールとは別個の、代わりの又は追加のメモリプールである又はそれとして振る舞うことができる。補助メモリプールは、TxIDを二重支払についてチェックすることができるような一時的なメモリプールとし得る。これは、有利なことに、トランザクションが所与のマイナーによってマイニングされなくとも、それが依然として補助メモリプール内に保持され、将来の二重支払についてチェックして拒否するのに使用されることを保証する。所与のマイナーによってマイニングされない又はそれによるマイニングを意図しないトランザクションを該所与のマイナーの補助メモリプールに保持することには、期限が存在し得る。一部の実施形態において、補助メモリプールに格納されるトランザクションは満了時間と関連付けられることができ、その後にそれらは除去されることになる。一部の実施形態において、所与のマイナーによってマイニングされないトランザクションを、それぞれの補助メモリプールに格納するための別の手数料がマイナーに関連付けられ得る。
一部の実施形態において、第1の態様の方法は更に、ハイパーテキスト転送プロトコルセキュア(HTTPS)フォーマットにて、クライアントから、手数料見積もりのための第1の要求、クライアントに対するデジタル資産決済に関連するトランザクションを提出するための第2の要求、及び/又はトランザクションに関するステータスクエリを受信するステップと、次いで、これらをリモートプロシージャコール(RPC)フォーマットに変換した後に、該RPCを複数のマイナーに送信するステップと、を実行するためのアプリケーションプログラミングインタフェース(API)コンバータを、決済プロセッサに付随して設けるステップ、を有する。これは、ウェブベースのAPIを用い、そして、ウェブサービスのためにインターネットプロトコル通信標準を使用して通信しない複数のマイナーとの相互運用性をシームレスに提供することで、クライアントがHTTPSを介して、ブロックチェーンに関連する要求を通信することを可能にするので有利である。例えば、現行のBSVマイナー又は実装は全て、リモートプロシージャコールを使用している。この実施形態で実装されるAPIコンバータは、HTTPSからRPCへの変換とその逆変換、又は他のウェブベースのプロトコルから個々のマイナーによってサポートされる代わりの通信プロトコルへの変換、又は想定され得る所与の暗号通貨又はデジタル資産のためのネットワークに限定されない。逆のフローパスにおいて、第1の態様の方法はまた、複数のマイナーの中の1つ以上のマイナーから、対応するブロックチェーントランザクションに関連する応答をRPCフォーマットで受信し、従って、それぞれの応答をクライアントのためにHTTPSを用いて変換することを含む。故に、有利には、提案するインタフェースを決済プロセッサによって実装することは、クライアント(受取人)及びマイナーが相異なる無線データ通信プロトコル及びメカニズムを使用する場合に、トランザクションをブロックチェーンに提出するためのシームレスな通信を可能にする。
一部の実施形態において、決済プロセッサに関連付けられたAPIゲートウェイが設けられ得る。上述のAPIコンバータは、そのような実施形態ではAPIゲートウェイと関連付けられ得る。さらに、APIゲートウェイはまた、一部の実施形態において、以下に限られないが:
- トランザクションをキャッシュすること;
- マイナーノード障害の場合に回復機能を実行すること;
- 決済プロセッサ及び/又はクライアント及び/又はマイナーノードに/からメッセージ又は通知を送るのに使用され得る1つ以上のエンドポイント又はURLの記録を保持すること;
- 何らかの理由で提出するのを失敗したトランザクションの追跡を含む回復機構を提供すること。一部の例において、これは、決済プロセッサで保持される又はそれによって設定されるコンフィギュラブルパラメータと、期限切れになった被追跡トランザクションを除去するためのメカニズム、とを含めることとし得る。APIゲートウェイはまた、障害シナリオにおけるトランザクションを再提出するための機能と関連付けられることができ、それにより、偽物ではないトランザクションのエラー処理のための機能を提供するとともに、二重支払に対して差別化すること;
のうちの1つ以上を含む機能を実行する/担うように、1つ以上のコンピューティング装置内に実装され得る。
- トランザクションをキャッシュすること;
- マイナーノード障害の場合に回復機能を実行すること;
- 決済プロセッサ及び/又はクライアント及び/又はマイナーノードに/からメッセージ又は通知を送るのに使用され得る1つ以上のエンドポイント又はURLの記録を保持すること;
- 何らかの理由で提出するのを失敗したトランザクションの追跡を含む回復機構を提供すること。一部の例において、これは、決済プロセッサで保持される又はそれによって設定されるコンフィギュラブルパラメータと、期限切れになった被追跡トランザクションを除去するためのメカニズム、とを含めることとし得る。APIゲートウェイはまた、障害シナリオにおけるトランザクションを再提出するための機能と関連付けられることができ、それにより、偽物ではないトランザクションのエラー処理のための機能を提供するとともに、二重支払に対して差別化すること;
のうちの1つ以上を含む機能を実行する/担うように、1つ以上のコンピューティング装置内に実装され得る。
第2の態様によれば、本開示は、ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法を提供し、当該方法は、クライアントに関連付けられた1つ以上のプロセッサによって実装され、クライアントは、クライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合される。一部の実施形態において、決済プロセッサは、上述の第1の態様の方法及び関連実施形態を実装するように構成される。つまりは商人であるクライアントによって実施される第2の態様の方法は、少なくとも1つの決済プロセッサの中のある決済プロセッサに第1の要求を送信するステップを含み、該要求は、決済プロセッサを介して複数のマイナーから得られることになる、1つのトランザクション又は複数のトランザクションをマイニングすることに関する1つ以上の手数料見積もりに関係する。上述のように、取得される手数料見積もりは、任意のトランザクションをマイニングすることに関係し、あるいは、カスタマからのデジタル資産決済に関係する所与のトランザクションに特有のものであることができる。
第2の態様の一部の実施形態において、決済プロセッサからの1つ以上の手数料見積もりの受信に応答して、当該方法は、受信した1つ以上の手数料見積もりの中から手数料見積もりを選択することを含む。第1の態様にて述べたように、選択される手数料見積もりは、決済プロセッサによって行われる推奨に基づいてもよいし、基づかなくてもよい。第2の態様の方法は、次いで、カスタマからのデジタル資産決済を要求及び/又は処理することを含み、該要求は選択された手数料見積もりに関連する。一部の実施形態において、この要求は、デジタル資産決済のためにクライアントがカスタマに対して発行する支払請求書又はインボイスに類似する。例えば、クライアントは、デジタルウォレットに関連付けられたコーヒーショップ端末とすることができ、カスタマは、例えば、この要求に応答してコーヒーに対して2サトシを支払っているとすることができ、カスタマもデジタルウォレットに関連付けられる。選択された手数料見積もりがここで選ばれるので、これがカスタマからの支払のための要求に追加され得る。当該方法は、次いで、上述のカスタマ支払に関連する所与のトランザクションのための第2の要求を決済プロセッサに提出することを含み、該提出は、該所与のトランザクションをマイニングすることに関して選択された手数料見積もりに基づく。一部の実施形態において、選択された手数料見積もりは、第2の要求内で明確に示されるか第2の要求に明確に含められるかし、その結果、決済プロセッサは、選択された手数料見積もりで又は選択された手数料見積もり未満でトランザクションをマイニングすることができるマイナーを有利に特定することができ、あるいは、加えて又は代わりに、選択された手数料見積もりを自身が満たすか否かをマイナーが特定できる。
上述のように、一部の実施形態において、クライアントは、決済プロセッサから受信した最も高い手数料見積もりの値に基づいて手数料見積もりを選択してもよいし、あるいは、受信した手数料見積もりの値の平均値若しくは中央値又はその近くであってもよい。いずれのオプションに付随する利点も、上述したのと同じであり、すなわち、最大値は、マイニングするチャンスを全てのマイナーが持つことを可能にし、他の値は、選択された見積もりで又はそれ未満でトランザクションをマイニングすることができることによって手数料見積もりを満たす一部マイナーにマイニングを制限する一方で、(例えば、見積もりが高すぎたために)トランザクションをマイニングすることができないマイナーは、なおも、ブロックチェーントランザクションの記録を例えば補助メモリプールなどの一時的なストレージに維持することができ、その結果、これを用いて、所与のトランザクションに対する二重支払に対する検証を行うことができる。
第2の態様の一部の実施形態において、当該方法はまた、少なくとも1つのマイナーによって生成された、つまりはクライアントとカスタマとの間のトランザクションである提出されたトランザクションに対応するブロックチェーントランザクションのトランザクション識別子を受信することを含む。一部の実施形態において、当該方法は、取得したトランザクション識別子に関連付けられたステータスクエリを送信することと、トランザクション識別子に対応するブロックチェーントランザクションのステータス結果を取得することとを含む。
第2の態様に関連する利点は、第1の態様に関して上述したものに関係する。第2の態様は第1の態様と相補的なものであり、トランザクションがブロックチェーンに書き込まれることを要求するクライアントによって実装される方法を示している。第2の態様の方法を実装するクライアントは、一部の実施形態において、第1の態様の方法に従って決済APIとして決済サービスを実装するように構成された少なくとも1つの決済プロセッサと通信し得る。
加えて、本態様の方法は、有利なことに、クライアントが、手数料見積もりを選択して、クライアント又は商人の制御を提供するものである決済サービスを提供することを可能にし、又はそれらのトランザクションが所与のマイニング手数料で適時にマイニングされることに影響を与える確実性を可能にし、それにより、提案する決済サービス又は決済APIを使用するクライアントのためにマイニングされるトランザクションに対して、高められた安全性、相互運用性、信頼性、効率及び適時性を提供する。
上述のように、決済プロセッサによって実装される決済サービスはAPIであるので、一部の実施形態において、クライアントからの第1の要求及び/又はステータスクエリはHTTPS GET要求であり、第2の要求はHTTPS POST要求である。故に、有利なことに、トランザクションがブロックチェーンにマイニングされることを要求するために、クライアントによって標準的なインターネット及びウェブベースの通信プロトコルを使用することができる。一部の実施形態において、クライアントからの第1の要求及び/又は第2の要求及び/又はステータスクエリに関連するデータは、JavaScript(登録商標)オブジェクト表記(JSON)オブジェクトフォーマットで提供される。
第3の態様によれば、ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法を提供し、当該方法は、複数のマイナーの中のあるマイナーに関連付けられた1つ以上のプロセッサによって実行され、複数のマイナーは、クライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合される。一部の実施形態において、当該決済サービスは、第1の態様に関連して上述した方法に基づく決済プロセッサによって実装される。一部の実施形態において、クライアントは、上述の第2の態様に関連する方法を実装するように構成される。複数のマイナーの中のあるマイナーによって実装される第3の態様の方法は、クライアントに関連するトランザクションに対する手数料見積もりのための第1の要求に応答して、ブロックチェーンにおいてトランザクションをマイニングすることに関する当該マイナーに関する現在手数料見積もりを提供するステップを含む。一部の実施形態において、手数料見積もりは、クライアントに関連付けられた決済プロセッサ用のデータ型として提供され得る。上述のように、第1の要求は、任意のトランザクション又は複数のトランザクションに対する現在手数料見積もりの要求に関係してもよいし、あるいは、クライアントとカスタマとの間の特定のトランザクションに固有であってもよい。
第3の態様の一部の実施形態において、選択された手数料見積もり(この選択は、第1及び第2の態様にて説明したようにクライアントによって行われることができる)に基づく、クライアントに関連する所与のトランザクション、をブロックチェーンに提出することに関する、クライアントに代わっての決済プロセッサからの第2の要求に応答して、当該方法は以下のステップを含む。所与のトランザクションに関連する選択された手数料見積もりが当該マイナーの現在手数料見積もりを満たすとの決定、すなわち、選択された手数料見積もりが現在手数料見積もりにあるか範囲内であるとの決定に基づいて、当該所与のマイナーが、所与のトランザクションに関連する対応するブロックチェーントランザクションを生成する。当該方法はまた、作成されたブロックチェーントランザクションのアウトプットスクリプト(UTXO)を生成し、生成したアウトプットスクリプトを、当該マイナーに関連付けられたメモリプールに追加し、そして、アウトプットスクリプトを決済プロセッサに送信することを含み、アウトプットスクリプトは、対応するブロックチェーントランザクションに関連するトランザクション識別子TxIDを含む。一部の実施形態において、トランザクション識別子に関連するステータスの要求に応答して、当該マイナーは、対応するブロックチェーントランザクションの現在のマイニングステータスに基づいて結果を返すことを含む。
第3の態様に関連する利点は、第1及び第2の態様に関して上述したものに関係する。第3の態様は第1及び第2の態様と相補的なものであり、ブロックチェーンに書き込まれることが可能なクライアントに関するトランザクションを構築するための決済プロセッサに結合された複数のマイナーの中のあるマイナーよって実装される方法を示している。第3の態様の方法を実装するマイナーは、一部の実施形態において、第1の態様の方法に従って決済APIとして決済サービスを実装するように構成された少なくとも1つの決済プロセッサと通信し得る。
一部の実施形態において、現在手数料見積もりを提供するステップ及び/又はアウトプットスクリプトを送信するステップ及び/又は結果を返すステップは、リモートプロシージャコール(RPC)として実施される。これは、例えば、BSVビットコインネットワークのように、RPCを介してワイヤレスに通信に連絡するようにマイナーが構成される場合に有利である。一部の実施形態において、第3の態様の方法は、更なる安全性、及びマイナープール又はネットワークの中での、すなわち、決済プロセッサに関連付けられる複数のマイナーの中でのデータフローのストリームライン化のために、当該マイナーからのRPCを、無線通信ネットワークを介してクライアントに対する決済プロセッサに伝播させる前に、ノードコネクタに、及びオプションで複数のマイナーに対するファイアウォールに、送信するステップを含み得る。また、有利には、ノードコネクタは、決済プロセッサに付随するAPIコンバータとプール内の1つ以上のマイナーとの間のセキュア通信チャネルを提供し得る。
一部の実施形態において、例えば、現在手数料見積もりが選択された手数料見積もりよりも高いなど、所与のトランザクションに関連する選択された手数料見積もりが、当該マイナーの現在手数料見積もりを満たさないとの決定に基づいて、当該方法は、ブロックチェーントランザクションに関連するアウトプットを、当該マイナーに関連付けられた追加の一時的なメモリプールとし得るものである補助メモリプールに追加することを含む。上述のように、これは、マイナーノードがこのような一時的なエントリを用いて、所与のトランザクションに関連する二重支払がないことをチェックし及び有利には保証し得るように、所定の期間だけそこに格納され得る。
イベント又はそれに関連するトランザクションの安全で、監査可能で、改ざん防止された、信頼である記録を必要とする多数のアプリケーションのための分散型台帳(ブロックチェーン)技術の使用の拡大に伴い、例えばクライアント又は商人エンティティなどの参加エンティティのためのソリューションは、伝統的に、ブロックチェーンの完全なコピーをリアルタイムで同期させ、ブロックチェーンから直接的に、それらのアプリケーション及び関連付けられたデジタルウォレットに関係するトランザクション及び埋め込みデータの両方を特定することに頼っていた。しかしながら、つまりは商業アプリケーションであるクライアントの範囲、能力、及びセキュリティが進化するにつれて、また、ブロックチェーンが拡大するにつれて、ブロックチェーンに関連する利点の可能性を拡大して十分に実現するために、参加者同士が直接通信すること及びそのようなアプリケーションでメッセージを直接交換することを可能にする技術的ソリューションに対するニーズがあり、そして、そのようなソリューションを、計算的に高機能であるか否かにかかわらず任意のタイプのクライアント又はエンティティに利用可能にすることが望まれることが明らかになってきた。本開示の第4の態様は、そのようなソリューションを、第1の態様で上述したような決済サービスに関連するクライアントに提供する。
第4の態様の第1の実装によれば、本開示は、ブロックチェーンに関連付けられるトランザクションに関して1つ以上のクライアントに決済サービスを提供するコンピュータ実装された方法を提供し、当該方法は、決済プロセッサによって実行される。一部の実施形態において、決済プロセッサは、第1の態様に関連して説明したような決済プロセッサとし得る。当該方法は、1つ以上のクライアントの中の所与のクライアントから、デジタル資産に関連するトランザクションをブロックチェーンに提出することの要求を受信するステップを含む。先の態様にて上述したように、この要求は、HTTP伝送フォーマットを用いて決済プロセッサに送られる。一部の例において、この要求は、トランザクションを提出するためにクライアントから受信される上述の第2の要求である。
第4の態様の第1の実装において、クライアントからの要求は、クライアントと別エンティティとの間での直接通信を可能にするためのコールバック識別子と関連付けられる。一部の実施形態において、コールバック識別子は、クライアントと関連付けられたアクセスポイント又はURI又はURLとし得る。他のタイプのコールバック識別子及びメカニズムも可能である。このようなメカニズムの後、以下にて通信チャネルの提供を詳術する。
第4の態様の方法は、次いで、ブロックチェーンにトランザクションを含めるために、要求に関連するトランザクションをマイナーに提出することを含む。一部の実施形態において、このステップは、第1の態様に関連して説明した、クライアントから受信した第2の要求に従ってトランザクションを提出することと同様である。決済プロセッサは、要求に関連するトランザクション、及びコールバック識別子を、複数のマイナーの中の所与のマイナーに提出する。
一部の実施形態において、決済プロセッサを介して提出されたトランザクションを所与のマイナーが受信すると、第1及び/又は第2及び/又は第3の態様で上述したように、マイナーからの応答として、対応するブロックチェーントランザクション(提出された要求に対応する)に関連するトランザクション識別子が受信される。一部の実施形態において、これは、第1の態様で上述したように、対応するブロックチェーントランザクションに関連付けられた例えば未使用トランザクションアウトプット(UTXO)であるアウトプットスクリプトを受信することを含む。そして、対応するブロックチェーントランザクションのこのトランザクション識別子(TxID)がクライアントに送信される。
決済プロセッサはまた、マイナーに関連付けられたアクセスエンドポイント、マイナー識別子(Miner ID)、又はロケーションのいずれかを提供することによって、クライアントに対して所与のマイナーを特定する。一部のケースにおいて、マイナーは、TxIDを有する上述の応答の一部として、クライアントに特定され得る。TxIDは、クライアントにとって有するのが有利であり、それによって、そのTxIDに関連する任意の更なる通信又はメッセージを追跡することができる。上述のように、TxIDはまた、対応するトランザクションのステータスをチェックするために使用されることができる(クライアントがそのようなチェックを起動することを選択する場合)。
当該方法は、次いで、マイナーによって提供された対応するブロックチェーントランザクションに関する少なくとも1つのコールバック通知を、クライアントのために有効化する又は処理することを含む。実施形態において、コールバック識別は、つまりはクライアントに関するロケーション又はURLを介して、対応するトランザクションに関してクライアントにコンタクトするためにマイナーによって直接使用されることができるようなものであり、決済プロセッサはコールバック通知を有効化する。識別されたコールバックが、そのような直接通信を開始するために例えばアクセストークンの提供又はキーの交換などの更なるステップを必要とするようなものである場合、決済プロセスは、マイナーがコールバック識別子を用いてクライアントと通信することを可能にするために、そのような更なるアクセスを処理しなければならない。
本開示の第4の態様の第2の実装は、トランザクションを提出することのクライアントからの要求がチャネルと関連付けられる実施形態に関する。この場合、第1の実装にて上述したチャネル識別子は、所与のクライアントと別エンティティとの間での直接通信を可能にするように構成されるチャネルの形態である。この実装におけるチャネルは、所与のクライアントと関連付けられたチャネルサービスによって支援又は提供されるとともに、所与のクライアントに関する所与のトピック又はトランザクションに固有である。当該チャネルは、クライアントと関連付けられたロケーション、URL、又はチャネル識別子によって特定され得る。
チャネルサービスは、別個のチャネルプロセッサによって提供されてもよいし、上述の決済プロセッサによって提供されてもよいし、クライアントと統合されてもよい。一部の実施形態において、当該チャネルは、データの伝送に関するチャネル機能又はプロシージャ、及び/又はチャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャを含む1つ以上の機能と関連付けられる。従って、当該チャネルは、メッセージ又はデータの転送のためのエンティティ間の直接的又はピア・ツー・ピアの通信パス又はセッションを可能にする。殆どの実施形態において、各チャネルに対して2つのエンティティのみが存在する。
チャネルサービス及び/又はチャネルプロセッサの一例が、エヌチェーン ホールディングス リミテッドの名で出願された英国特許出願第2007597.4号に詳細に記載されており、その主題をここに援用する。
一部の実施形態において、上記1つ以上の機能はインタフェースの形態であり、あるいは、アクセスポイントが、クライアントのために提供され、殆どのケースで、複数のチャネルのうち、例えば各トランザクションに対して1つでクライアントと関連付けられ得る所与のチャネルに固有である。殆どの実施形態において、当該チャネルは、クライアントと別エンティティとの間の全二重通信、すなわち、双方向通信を可能にする。一部の実施形態において、通信は一方向にのみ可能にされてもよく、すなわち、クライアントは、別エンティティにメッセージを送信することを望むのみであるか、別エンティティからメッセージを受信することを望むのみであるかであり得る。
一部の実施形態において、クライアントは、複数のチャネルの所有者であったり、複数のチャネルに関連付けられたりしてもよく、上述のチャネルは、チャネルサービスによって提供される1つ以上の機能に基づくチャネルである複数のチャネルのうちの1つである。一部の実施形態において、上記1つ以上の機能は、所与のクライアントに対して発行又は提供されるアプリケーションプログラミングインタフェース(API)であり、該APIは、1つ以上のチャネルのためのチャネルAPIと、つまりは各チャネル又は所与のチャネルに関連するトピックに関するメッセージであるデータのためのメッセージAPIとを含む。APIは、アプリケーションのフィーチャ若しくはデータ又は他のサービスにアクセスする、ここでは例えばクライアントなどであるエンティティのためのアプリケーションの作成又は管理を可能にするエンドポイント、インタフェース、又は一組の機能及びプロシージャとして理解され得る。このケースにおいて、それは、チャネル機能とメッセージ機能を実装するものである。
第2の実装では、クライアントからの要求は更に、チャネルに対する1つ以上のアクセストークンと関連付けられる。これらのトークンはチャネルプロセッサによって提供される。一部の実施形態において、該(1つ以上の)トークンは、別エンティティとのセキュア通信用に構成され、該1つ以上のアクセストークンは、所与のチャネルに関係し、又はさらには所与のチャネルにおける1つ以上のメッセージに対してである。一部の実施形態において、アクセストークンは、所与のチャネル又は所与のメッセージに固有のAPIトークンである。アクセストークン、具体的にAPIトークンは、一部の実施形態において、チャネルへのアクセスを要求するエンティティ又はアプリケーションのための固有の識別子としての役割を果たし得る。一部の実施形態において、アクセストークンは、クライアントに割り当てられた固有の認証情報であると見なされてもよく、個々のチャネル又は各チャネルにおける個々のメッセージに対してと同じ粒度でさえあることができる。一部の実施形態において、アクセストークンは、クライアントが認証のためにそのチャネルの各々について別エンティティに提供することができるようなものであるとし得る。本実施形態において、アクセストークンは、トランザクションに関連付けられるマイナーのために、各トランザクションについて、クライアント又はチャネルサービスによって生成又は提供され得る。
一部の実施形態において、チャネルは、チャネルに関するロケーション又はアクセスポイントと関連付けられたチャネル識別子と関連付けられ得る。一部の実施形態において、各チャネルが特定のチャネル識別子と関連付けられる。同一の所与のクライアントが多数の別々のチャネルを持つことができ、各チャネルが、それを介して該チャネルがアクセスされることが可能なロケーション又はエンドポイントに対応し得るそれ自身の固有識別子を有する。一部の実施形態において、所与のチャネルは、特定のタイプ又はトピックに関連するデータに関する任意の他のエンティティとの通信用であり、チャネルでの各トピックに関連するデータが、1つ以上のメッセージ又はトランザクションであり又はそれに含められる。有利なことに、特定のトピック又はトランザクションのための特定のチャネルを持つことは、特に、同一クライアントに関連する他のトピック又は他のトランザクションの全てと別々に追跡される又は取り扱われる必要がある多数のトピック(例えばトランザクション番号又はID又はインボイス番号)を持ち得るものである商人エンティティのようなクライアントの場合に、クライアントにとってのいっそう大きな明確性、信頼性、及び柔軟性を保証する。
実施形態において、第1の実装における決済プロセッサがチャネルプロセッサでもある場合、すなわち、それがクライアントのために決済サービスだけでなくチャネルサービスも実装する場合、第4の態様の方法はまた、トランザクションのために所与のクライアントと関連付けられるチャネルへのマイナーアクセスを提供すること含み得る。これは、クライアントに関する全ての通信が決済プロセッサによって管理又は実装されて、チャネルもクライアントに代わって決済プロセッサによって設定されるような実施形態における利点である。アクセスは、一部の実施形態において、チャネル識別子及び/又はロケーションと、そのクライアントのためにデータを取得すべく又はチャネルに書き込むべく1つ以上のチャネル及び/又はチャネルと関連付けられたメッセージ機能若しくはAPIにアクセスするためにマイナーが必要とし得る(1つ以上の)アクセストークンとを、マイナーに対して利用可能にすることによって提供され得る。
チャネルが提供されると、又はチャネルへのアクセスが提供されると、次いで、マイナーからの対応するブロックチェーントランザクションに関連付けられたコールバック通知が、該チャネルを用いてクライアントに提供される。従って、マイナーによりデータを、そのチャネルを用いて提供することができ、すなわち、該当チャネルに対するアクセストークンを用いて得られた1つ以上のチャネル及びメッセージ機能若しくはAPIを用いてデータをそのチャネルに書き込むことができる。
一部の実施形態において、クライアントに対するコールバック通知は、データがチャネルに書き込まれるとすぐに得られる警告又はメッセージとすることができ、当該通知は、一部のケースにおいてチャネル識別子を含む。これは、決済プロセッサによって既に処理された、すなわち、決済プロセッサによって既にマイナーに送られた、所与のクライアントに関する特定のTxID又はブロックチェーントランザクションに関するものであるので、コールバックと称される。有利なことに、当該チャネルは、所与のクライアントのためにTxIDが特別に割り当てられ当該チャネルでメッセージ又は応答が提供されることを可能にする。
一部の実施形態において、コールバック通知は、所与のクライアントによって既に提出されてブロックチェーンに記録されたトランザクションの二重支払の通知に関する。この場合、マイナーによってチャネルで提供されるデータは、以下のデータを含むリターンペイロードであり、すなわち、
- 二重支払されたブロックチェーントランザクションのトランザクション識別子(TxID)と、一部のケースで、オプションで、
- ブロックチェーントランザクションを提出した決済プロセッサに関するサービスエンドポイントと、を含む、リターンペイロードである。これは、クライアントが複数の決済サービスに関連していて、それ故に、識別子が、最初にマイナーに要求を提出した決済プロセッサを明確に指し示す場合に有用である。
- 二重支払されたブロックチェーントランザクションのトランザクション識別子(TxID)と、一部のケースで、オプションで、
- ブロックチェーントランザクションを提出した決済プロセッサに関するサービスエンドポイントと、を含む、リターンペイロードである。これは、クライアントが複数の決済サービスに関連していて、それ故に、識別子が、最初にマイナーに要求を提出した決済プロセッサを明確に指し示す場合に有用である。
一部の実施形態において、コールバック通知は、所与のクライアントによって提出されたトランザクションをブロックチェーンに含めたことの証明、すなわち、マークル(Merkle)プルーフに関する。この場合、マイナーによってチャネルで提供されるデータは、チャネルでのリターンマークルプルーフであり、該リターンマークルプルーフは、以下のデータ、すなわち、
- 該マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- ブロックチェーントランザクションが含まれるブロックのブロックヘッダと、
- トランザクション識別子(TxID)に関するシブリングハッシュの配列と、
を含む、
一部の実施形態において、提供されるチャネル又はメッセージ機能は、コールバック通知のためのチャネルでの1つ以上のデータ又はメッセージのアクセス、作成及び/又は管理を可能にするための、JavaScript(登録商標)オブジェクト表記(JSON)・オーバ・ハイパーテキスト転送プロトコル(HTTP)APIを含む。
- 該マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- ブロックチェーントランザクションが含まれるブロックのブロックヘッダと、
- トランザクション識別子(TxID)に関するシブリングハッシュの配列と、
を含む、
一部の実施形態において、提供されるチャネル又はメッセージ機能は、コールバック通知のためのチャネルでの1つ以上のデータ又はメッセージのアクセス、作成及び/又は管理を可能にするための、JavaScript(登録商標)オブジェクト表記(JSON)・オーバ・ハイパーテキスト転送プロトコル(HTTP)APIを含む。
チャネルを介して提供されるコールバック通知に関連するこれらのデータ又はコールバックメッセージは、数多くのブロックチェーン関連アプリケーションにとって特に有利となり得る。何故なら、その場合、マイナーが、チャネルを用いて、ブロックチェーンに提出されたトランザクションを含めたことのマークルツリープルーフ又は二重支払通知を別エンティティ、すなわち、この場合にはトランザクション提出を要求したクライアントに直接送信することができるからである。これは、例えば商人エンティティなどのクライアント又は別エンティティのいずれかが、もはや、トランザクションを見つけてそれがマイニングされたか否かを調べるためにブロックチェーンを探索する必要がないことを意味するので有用である。それは何故なら、有利なことに、いったんマイニングされると、含めたことの証明がチャネルを用いて直接提供されるからである。
第4の態様の第2の実装の方法はまた、上記通知を格納する及び/又はクライアントに提供することを含む。一部の実施形態において、クライアントがオフラインである又はチャネルプロセッサに通信可能に接続されていないとき、コールバック通知は、チャネルプロセッサによって格納され、すなわち、チャネル内で所与のクライアントのためにキューに入れられたデータに対するプッシュ通知として格納される。他の実施形態において、クライアントがオンラインである又はチャネルプロセッサに通信可能に接続されているとき、チャネル内の関連データ(コールバック通知に関連する)は、チャネルから直接プルされ得る。
有利なことに、チャネルの使用は、所与のチャネル内の各要求又はメッセージの非同期処理を可能にする。これは、チャネルがトピックに固有であるため、任意の所与のトピック又はトランザクションについてのメッセージ及び順序の明確さが常に存在するので、チャネル内のメッセージに対して、シームレスで正確な、不連続な又は遅延された処理フローを可能にする。これは、クライアント又は他のエンティティが動作していない、又はオンラインでない、又はコールバック通知に関連するデータにアクションすることができないような実装又は状況において特に有用となり得る。従って、上の技術は、チャネルの当事者がオフラインである又は無反応である場合であっても、次にオンラインになる又はネットワークに接続されるときに、チャネルプロセッサによってキューに入れられた通知に基づいてチャネル内のメッセージにアクセスできるように、メッセージが依然としてチャネル内に存在することになるので、チャネルと用いて要求がなおも信頼性高く届けられて正確且つ順番に処理されることを可能にする。上述のように、チャネルプロセッサの機能は、決済プロセッサを実装するのと同一エンティティによって実装されることもできる。
また、どれだけ多くの他のメッセージがチャネル内で提供されようとも、それらは配信順序で別エンティティにアクセス可能となる。従って、接続における遅延又は中断にかかわらず、チャネル内のメッセージの処理は、あたかも遅延が全くないかのように正確且つシームレスに完了される。
従って、本開示に関連する第4の態様の上述の第2の実装及びその実施形態は、直接通信のためのチャネルを実装することによって、クライアントのためにトランザクションを処理するための安全で、オフチェーンの、パーティ・ツー・パーティ(ピア・ツー・ピア/ダイレクト)アプリケーションメッセージング機構を提供する。この態様は、例えば当事者の一方が一時的にオフラインである場合であっても、当事者同士がセキュアな方法で通信することができるメカニズムを提供する。事業に関連している又は例えば商人などの組織を表し得るクライアントエンティティの場合、そのようなクライアントは、多数の商品に関して自身と取引を行う多数の他のエンティティ(カスタマ)を有することがある。従って、そのようなシナリオでは、1つ以上のカスタマ又はトランザクションとの通信用のチャネルを使用する一方で、全てのそのようなトランザクションの記録を維持するブロックチェーンに関連する機能を実装することから分離又はデカップリングされることが、非常に有益となる。チャネルサービスを介したチャネル機能及びメッセージ機能の提供により、そのようなクライアントは、特定のトランザクション(例えば、特定のインボイス又は特定の商品の照会など)に関連する特定のカスタマに対して特定のチャネルを利用する能力を持ち、そのような取引に特有の更なる情報を、チャネルを介していつでも得ることができる。
第4の態様の第3の実装において、本開示は、ブロックチェーンに関連付けられるトランザクションを処理するコンピュータ実装された方法を提供し、当該方法は、クライアントと関連付けられた1つ以上のプロセッサによって実行される。第3の実装は、第2の実装と同様であり、同様の利点を伴う。当該方法は、チャネルプロセッサによって実行されるチャネルサービスに関するチャネル要求を送信するステップを含む。チャネルプロセッサは、英国特許出願第2007597.4号に記載されるようなクライアント向けチャネルサービスを実装し得る。第1の要求は、チャネルプロセッサに対するハイパーテキスト転送プロトコルセキュア(HTTPS)送信GET要求とし得る。次いで、当該クライアント実装された方法は、所与のクライアントと別エンティティとの間での直接通信を可能にする1つ以上の機能へのアクセスを得ることを含む。第2の実装と同様に、該1つ以上の機能は、データの伝送のための1つ以上のチャネルに関するチャネル機能又はプロシージャ、及び/又は該1つ以上のチャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャを含む。クライアントはまた、上に記載したようなチャネル用の1つ以上のアクセストークンを取得する。
当該方法は、次いで、例えば第1の態様又は第4の態様の第1の実装で説明したプロセッサなどの、決済サービスを実装する決済プロセッサに、デジタル資産に関連するトランザクションをブロックチェーンに提出することの要求を送信することを含む。この要求は、決済プロセッサへのハイパーテキスト転送プロトコルセキュア(HTTPS)伝送POST要求とすることができ、これは、HTTPS APIと関連付けられ得る。
クライアントは、次いで、決済プロセッサから応答を取得し、該応答は、提出したトランザクションに対応するブロックチェーントランザクションのトランザクション識別子(TxID)を含む。対応するブロックチェーントランザクションは、決済プロセッサによってマイナーに提出されたトランザクションに関係する。応答にて受信されるこのTxIDは、マイナーによって生成された、それに対応するブロックチェーントランザクションを追跡するのに有用である。
クライアントはまた、決済プロセッサから、上述の応答と別途、又はそれと一緒に、TxIDを提供したマイナーに関する識別子又はアクセスポイント又はロケーションを受信する。
次いで、チャネルプロセッサから受け取る1つ以上のチャネル機能を用いて、当該方法は、特定されたマイナーとの通信用のチャネルを作成し、該チャネルと関連付けられた1つ以上のアクセストークンを、このケースではマイナーである別エンティティに送信することを含む。これは、有利なことに、クライアントとマイナーとの間の直接通信用のチャネルの安全で、信頼できて、正確なセットアップを可能にする。
次いで、チャネルプロセッサからコールバック通知が受信され、かかるコールバック通知は、クライアントにて、それがオンラインであるとき又はそれが決済プロセッサに通信可能に接続されているときに受信され得る。この通知に基づいて、クライアントに関連する特定のブロックチェーントランザクション、すなわち、TxIDに関連するデータを、クライアントがオンラインであるときに、マイナーから直接取得することができる。
第4の態様の第3の実装の一部の実施形態は、ピア・ツー・ピア通信に使用されるチャネルに対するセキュアなアドレッシング及び暗号化の提供に関する。一部の例において、当該方法は、クライアントと関連付けられたクライアントアドレッシングキーを提供することと、マイナーと関連付けられた少なくとも1つのマイナーアドレッシングキーを取得することとを含む。一部のケースにおいて、もし、クライアントに対して既に利用可能にされていたり知られていたりするのでなければ、クライアントエンドポイントも提供され得るとともに、マイナーポイントが取得され得る。これらのアドレッシングキーは、固定のキー若しくは一時的なキー又はこれらの両方とすることができ、それぞれのエンドポイントの身元を検証するのに使用され得る。この場合、チャネルを使用する通信は、クライアントアドレッシングキー及び/又はマイナーアドレッシングキーに基づいて開始されることができ、ハンドシェイクパターンに基づいて共有秘密鍵を導出することができるようにする。そして、かかる共有秘密鍵を、当該チャネルを介した全ての通信を暗号化するのに使用することができる。ハンドシェイクパターンはノイズプロトコルフォーマットに基づき得るが、暗号化/解読キー又はキーペアを導出することには、例えばLibsodium鍵交換又は生成技術などの他のメカニズムも使用することができる。
有利なことに、クライアントに関するAPIエンドポイントなどのエンドポイントと、例えば固定のキー及び/又は動的/一時的なキーなどのアドレッシングキーとを提供することは、クライアントと関連付けられた1つ以上のプロセッサがマイナーにセキュアにアクセスすることを可能にする。一部の実施形態において、これらのキーは更に、チャネルを介したメッセージの転送に先立って認証手続が開始されることを可能にし、それにより、チャネルを管理する当事者の身元を検証することによってセキュリティを高め、それによって、当該チャネルを介した全ての通信が2つの認証済みエンティティ間でのみ行われることを保証する。
共有秘密鍵を取得して、当該チャネルを用いる直接通信が共有秘密鍵に基づいて暗号化されるようにすることは、共有秘密鍵が、つまりはチャネルを管理する2つの当事者又はエンティティのアドレッシングキーである身元に基づくので、更に有利である。従って、それぞれの正当で認証済みの当事者のみが暗号化された暗号文を復号することができることになり、それにより、信頼性及びプライバシーが高められるとともに、悪意ある者によるなりすまし攻撃に耐性のあるものとなる。
一部の実施形態において、クライアント及び/又はマイナーに関するエンドポイントは、HTTP APIエンドポイントとすることができ、該エンドポイントが、チャネルを介した通信に先立って、HTTPセキュア(HTTPS)転送プロトコルを用いて他方の当事者(又は取引先)に配信される。これは、有利なことに、既知で信頼された認証局(CA)に戻る一連の証明書を通じてエンドポイントが検証可能であることを保証する。一部の実施形態において、クライアントエンドポイント及びマイナーエンドポイントは、チャネルサービスに関連する1つ以上の機能の要求への応答に含められるユニバーサルリソースロケーション(URL)とし得る。以上により、有利なことに、ある者の身元を、チャネルの少なくとも一方の当事者により、PKI又は他のメカニズムを用いて知って検証することができる。
一部の実施形態において、クライアントに関するエンドポイントは、チャネルのそれぞれのエンティティと関連付けられた別名(エイリアス)とすることができ、該別名は、クライアントに固有であって、別名ベースのアドレッシングサービスによって提供され、該アドレッシングサービスは、定められた又は周知のロケーションからアクセス可能な機械読み取り可能リソースを有し、該機械読み取り可能リソースは、チャネルプロセッサに関連する1つ以上の機能を含む。当該別名は、1つ以上の他のエンティティに既知であってもよいし提供されてもよく、当該別名は、認証のための非対称暗号キーペアと関連付けられる。以上により、有利なことに、両当事者によって、PKI又は他のメカニズムを用いて、当事者の身元を知って検証することができる。1つ以上のクライアントエンティティの複雑な公開アドレスの代わりに、記憶しやすくて、よりユーザフレンドリーな別名が使われるメカニズムは既に存在している。そのような一ソリューションが、エヌチェーン ホールディングス リミテッドの名の下の米国特許出願第16/384696号で提案されている。該文書は、bsvalias決済サービスと称した別名ベースの決済サービス及び関連プロトコルを記載しており、そこでは、宛先のアドレス指定に、クライアントエンティティの公開アドレスの代わりに別名が使用される。そのようなシステムにおける別名は、通常、送信/受信クライアントエンティティのドメイン名と関連付けられ、また、URI又は電子メールアドレスとされることがある。従って、送信元又はエンティティが別名を認識している又はそれを提供される限り、bsvalias決済システム又は他の別名ベースのアドレッシング機構にはこれで十分である。メッセージは、例えばJavaScript(登録商標)オブジェクト表記(JSON)ドキュメントなどの機械読み取り可能リソースで提供される命令を用いて、クライアントの別名に送信され、bsvalias又は他の決済サービスの周知のURI又はロケーションに保存される。
第4の態様の第4の実装において、本開示は、ブロックチェーンに関連付けられるトランザクションを処理するコンピュータ実装された方法を提供し、当該方法は、マイナーと関連付けられた1つ以上のプロセッサによって実行される。第4の実装は、第1の実装と同様であり、同様の利点を伴う。
この実装では、マイナーが、決済プロセッサから、ブロックチェーンへのトランザクションの提出の要求を受信する。一部の実施形態において、これは、クライアントに代わってトランザクションを提出するための、第3の態様で説明したような決済プロセッサからの第2の要求と同様とし得る。
当該方法は、次いで、要求に対応するブロックチェーントランザクションを生成し、該ブロックチェーントランザクションに関連するアウトプットスクリプト(UTXO)を有する応答を決済プロセッサに送信することを含む。該アウトプットスクリプトは、対応するブロックチェーントランザクションと関連付けられたトランザクション識別子(TxID)を含む。上述のように、応答とともに、マイナーに関連するアクセスポイント又は識別子もクライアントに提供され得る。
次いで、TxIDに関するクライアントに固有のチャネルへのアクセスが受け取られる。このアクセスは、チャネルを作成した後にクライアントによって直接提供されてもよいし、クライアントに代わって決済プロセッサによって提供されてもよい。前述のように、このチャネルは、所与のクライアントとの直接通信を可能にする。該チャネルにアクセスしてデータを書き込むためのアクセストークンも受信される。
次いで、アクセストークンに基づいて、マイナーは、チャネルでのコールバック通知に関連するデータを提供するためのメッセージ機能又はメッセージAPIを取得、アクセス、又は取り出すことができ、該データは、対応するブロックチェーントランザクション(TxID)に関する。上述のように、コールバック通知は、所与のトランザクションについての二重支払通知又はマークルプルーフに関係することができ、これは、チャネルを介してクライアントに直接、安全に、正確に、且つ非同期に届けられることができる。
従って、この第4の実装では、クライアントとの直接通信を可能にするために、マイナーによって、チャネルAPI若しくはメッセージAPI、及び/又はチャネルと関連付けられたアクセストークンを取得することができる。これは、数多くのブロックチェーン関連アプリケーションで特に有利である。何故なら、その場合、マイナーは、ブロックチェーンに提出されたトランザクションに固有の、含めたことのマークルツリープルーフ又は何らかの他のメッセージを、チャネルを用いてクライアントに直接送信することができるからである。これは、例えば商人エンティティなどのクライアント又は例えばカスタマ若しくは実際には決済サービスなどの別エンティティのいずれかが、もはや、トランザクションを見つけてそのステータスを検証するためにブロックチェーンを探索する必要がないことを意味するので有用である。それは何故なら、有利なことに、いったんマイニングされると、含めたことの証明を、チャネルを用いて直接クライアントに送信することができるからである。あるいは、何らかの理由で、そのTxIDと関連付けられたトランザクションがマイニングされない場合、そのトランザクションについて、例えばエラー通知又は二重支払通知などのメッセージを、チャネルを介して送信することができる
本開示はまた、無線通信ネットワークを介して少なくとも1つのクライアント及び少なくとも1つのマイナーに通信可能に結合された決済プロセッサを有するコンピュータシステムを提供し、決済プロセッサに、クライアントからのHTTPS要求の、マイナーに対するRPC要求への変換及びその逆の変換のためのAPIコンバータが付随し、それにより決済プロセッサは第1の態様に従って実装される。当該コンピュータシステムはまた、無線通信ネットワークを介して決済プロセッサに通信可能に結合されるとともに少なくとも1つのカスタマと通信可能なクライアントを有し、それによりクライアントは第2の態様のコンピューティング装置に従って実装される。クライアントはまた、無線通信ネットワークを介してチャネルプロセッサに通信可能に結合され、それによりチャネルプロセッサは、第4の態様のコンピューティング装置に従って実装される。当該コンピュータシステムはまた、複数のマイナーを有し、各マイナーが無線通信ネットワークを介して決済プロセッサに通信可能に結合され、それにより各マイナーが第3の態様に従って実装される。
本開示はまた、無線通信ネットワークを介して少なくとも1つのクライアント及び少なくとも1つのマイナーに通信可能に結合された決済プロセッサを有するコンピュータシステムを提供し、決済プロセッサに、クライアントからのHTTPS要求の、マイナーに対するRPC要求への変換及びその逆の変換のためのAPIコンバータが付随し、それにより決済プロセッサは第1の態様に従って実装される。当該コンピュータシステムはまた、無線通信ネットワークを介して決済プロセッサに通信可能に結合されるとともに少なくとも1つのカスタマと通信可能なクライアントを有し、それによりクライアントは第2の態様のコンピューティング装置に従って実装される。クライアントはまた、無線通信ネットワークを介してチャネルプロセッサに通信可能に結合され、それによりチャネルプロセッサは、第4の態様のコンピューティング装置に従って実装される。当該コンピュータシステムはまた、複数のマイナーを有し、各マイナーが無線通信ネットワークを介して決済プロセッサに通信可能に結合され、それにより各マイナーが第3の態様に従って実装される。
一部の実施形態において、プロセッサとメモリとを有するコンピューティング装置が提供され、メモリは、プロセッサによる実行の結果として当該装置に上述の態様及び/又は実施形態を実行させる実行可能命令を含む。
一部の実施形態において、実行可能命令を格納したコンピュータ読み取り可能記憶媒体が提供され、該実行可能命令が、コンピュータシステムのプロセッサによって実行される結果として、該コンピュータシステムに上述の態様及び/又は実施形態の方法を実行させる。
次に、同様の機構を似た参照符号で参照する添付の図面を参照して、例示により、一部の特定に実施形態を説明する。
第1の態様 - 決済プロセッサ
図1は、本開示の第1の態様に関するものであり、上述のように、クライアントのための決済サービスを実装するための決済プロセッサによって実行される方法を示している。決済プロセッサは、クライアント又は複数のクライアントに通信可能に結合されるとともに、2つ以上のネットワークをなすマイナー又は2つ以上のマイニングプールを含み得る複数のマイナーにも結合される。一部の実施形態において、決済プロセッサは、クライアントの一部であってもよいし、クライアントに関連付けて実装されてもよい。これは、クライアントが計算的に高機能の商業ポイント・オブ・セール(POS)端末である場合に当てはまる。本開示の態様及び実施形態は、そのような実装、すなわち、遠隔決済プロセッサ又はクライアントの一部であるもの、の両方をカバーすることを想定する。システムアーキテクチャの一例は、この中で後に説明する図4にて見てとれる。
図1は、本開示の第1の態様に関するものであり、上述のように、クライアントのための決済サービスを実装するための決済プロセッサによって実行される方法を示している。決済プロセッサは、クライアント又は複数のクライアントに通信可能に結合されるとともに、2つ以上のネットワークをなすマイナー又は2つ以上のマイニングプールを含み得る複数のマイナーにも結合される。一部の実施形態において、決済プロセッサは、クライアントの一部であってもよいし、クライアントに関連付けて実装されてもよい。これは、クライアントが計算的に高機能の商業ポイント・オブ・セール(POS)端末である場合に当てはまる。本開示の態様及び実施形態は、そのような実装、すなわち、遠隔決済プロセッサ又はクライアントの一部であるもの、の両方をカバーすることを想定する。システムアーキテクチャの一例は、この中で後に説明する図4にて見てとれる。
図1に示されたシナリオ例では、複数のマイニング手数料見積もりを取得すること、取得した複数のマイニング手数料見積もりの中から選択された手数料見積もりに基づいてトランザクションを提出すること、並びにトランザクション識別子に関するステータスクエリを送信することに関する実施形態が、全て順次に行われるものとして説明され、図1のフローチャートでの単一のプロセスとして説明される。しかしながら、本開示及び第1の態様は、そのように限定されると見なされるものではない。以下に記載されるステップ102-106における第1の要求で手数料見積もりを取得することに関するステップは、残りのステップとは別に独立して実施され得る。同様に、ステップ108-114における第2の要求でトランザクションを提出することに関するステップは、手数料見積もりを取得する先行ステップとは別に異なる時に実施され得る。同じように、ステップ116以降のトランザクションステータス照会に関するステップは、クライアントがトランザクションの識別子を認識した後の任意の時に実施されることができ、図1のシーケンスに従う必要はない。ここでは、説明及び理解を容易にするために、全てのステップを単純にシーケンスで示しており、本開示は、如何なる状況でも、このようなシーケンス又はシナリオに限定されると見なされるべきでない。
ステップ102は、ブロックチェーンにおいてトランザクションをマイニングすることに関連するマイニング手数料見積もりのための第1の要求をクライアントから受信することを示している。第1の要求は、複数のトランザクションに関するものであってもよい。説明及び理解を容易にするために、図1は、クライアントに関連する第1の要求内の単一のトランザクションに関して説明されるが、本開示は決してそのように限定されるものではない。このステップは、クライアントに代わってトランザクションをマイニングすることに関する複数のマイナーからのマイニング手数料見積もりの収集を意味する。トランザクションは通常、つまりは商人計算リソース又はエンティティであるクライアントとカスタマエンティティとの間で行われるデジタル資産決済に関係する。前述のように、第1の要求は、クライアントから、HTTPSプロトコルを介して又は用いて、JSONフォーマットで受信される。決済プロセッサは、クライアント向けのアプリケーションプログラミングインタフェース(API)として決済インタフェースを実装し、それ故に、APIがウェブサービスとして実装されるときにHTTPSを受け入れて処理することができる。APIエンドポイントがクライアントに利用可能にされる。第1の要求内に複数のトランザクションがある場合、同一のAPIエンドポイント又は決済プロセッサの別のAPIエンドポイントのいずれかを使用し得る。
例えば、一部の実施形態において、決済プロセッサは、例えばRESTインタフェースなどの規格ベースのインタフェース設計を用いて決済サービスを実装することができる。REST(Representational State Transfer)は、ウェブサービス及びウェブベースのインタラクションを開発するためのアーキテクチャ様式である。REST API設計標準は、以下のコマンドを用いてHTTPS要求及び通信を処理することができる:
ここでは殆どGET及びPOST HTTPS要求が論じられることになるが、本出願はこれらのコマンドに限定されるものではない。このステップ102にて、決済プロセッサによって受信される第1の要求は、GET getFeeQuote形式のHTTPS要求とし得る。
REST APIのコンテキストにおけるリソースは、タイプと、関連データと、他のリソースとの関係と、それに対して動作する一組のメソッドとを持つオブジェクトである。一部の実施形態において、決済サービスは、決済プロセッサによって、例えばビットコインSV(BSV)ブロックチェーンなどのブロックチェーン又は分散型台帳の状態にアクセスし、アプリケーションインタフェースを介してその状態を変えることができる操作をトリガーし、それをREST APIとして公開するためAPI実装として提供される。従って、決済プロセッサは、1つ以上のクライアントに対するRESTエンドポイントと見なされ得る。説明を容易にするためだけに、全体を通して1つのクライアント(又は商人)及び1つの決済プロセッサについて説明するが、本開示はそのように限定されるものではない。クライアントは、故に、HTTPSを介して決済サービスと通信することができ、さらに、クライアントは、有利なことに、決済プロセッサへの、又は決済プロセッサによって実装される決済サービスへの、匿名アクセスを有し得る。2つ以上のクライアント及び2つ以上の決済プロセッサが存在する場合、クライアントは、一部の実施形態において、例えば、決済プロセッサを走らせる1つ以上の第三者との間でクライアントが交わし得る合意に基づいて、正しい又は意図した決済プロセッサ又はRESTエンドポイントをターゲットにする又はそれにコンタクトをとる責任を負う。
ステップ104は、トランザクションをマイニングすることに関する手数料見積もりを複数のマイナーの中の各マイナーから取得することを示している。このステップにて、決済プロセッサに結合された全てのマイナーが、決済プロセッサによってポーリングされ又はコンタクトをとられ、そして、トランザクションをマイニングすること、すなわち、ロッキング及びアンロッキングスクリプトを検証した後にトランザクションをブロックチェーンに書き込むことに関する現在手数料見積もりを返すように依頼される。現在、例えばBSVネットワークなどの一部のブロックチェーンネットワークは、リモートプロシージャコール(RPC)を介した通信をサポートしている。従って、その場合、決済プロセッサに付随するAPIコンバータが、つまりはGET getFeeQuoteであるHTTPSの第1の要求を、つまりはRPC getFeeQuote()であるRPCの第1の要求に変換するために、及びその逆の変換を行うために使用される。このような変換は、このようなBSVノード実装又はRPCのみをサポートする他の実装をサポートする必要がある実施形態において必要である。上述のように、APIコンバータは、決済プロセッサに関連付けられたAPIゲートウェイ又はゲートウェイプロセッサの一部であることができ、HTTP/RPC変換は、APIゲートウェイによって提供される機能の1つに過ぎない。マイナーに送られるRPCフォーマットのgetFeeQuote()の目的は、各マイナーによって課される手数料をクライアントに知らせることである。入力パラメータは必要ないが、RPC getFeeQuote()に関連してRPCインタフェースを実装して、このコマンドが、各マイナーからのデータ型を、各マイナーから収集された手数料関連データを含むJavaScript(登録商標)オブジェクト表記JSONオブジェクト、すなわち、MinerFeeQuoteの形式で返すようにする必要があり得る。
各マイナーから収集された取得した手数料見積もりに関するデータは、以下の例に与えるように、JSONオブジェクトとして規定され得る。
各マイナーから返されるJSONオブジェクトFeeQuoteを以下に示す。単一のトランザクションに関する例を示すが、本開示はそのように限定されるものではなく、複数のトランザクションについてのマイニング手数料を表す手数料見積もりにも同じものが適用される:
[
{
# MinerFeeQuote
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“CurrentHighestBlockHash”:<Alphanumeric>,
“MinerSignature”:<Alphanumeric>, #現在ブロックハッシュ+ブロック高さを含む
“SignatureTimestamp”:<UTC Timestamp>, #マイナーはこの時点から取って代わられるまで手数料を保証する
“MinerReputation”:<Alphanumeric>, #これがブランク(ヌル)である場合、“Unknown”を返す
[
{
# FeeTypes
“FeeType”:<“SPB“||“SPDB“||…>, #Satoshis-per-byte,Satoshis-per-data-byte等
“CurrentFee”:<Floating Point Number>,
“Expiry”:<Integer>, duration or date/time at which Fee expires,
“FeeOnExpiry”:<Floating Point Number>, #Expiryが0である場合、これはCurrentFeeに設定されるべきである
“GuaranteeFee”:<Floating Point Number> #この手数料でTxを処理することの保証(0の場合は無し)
“KeepInMempoolFee”:<Floating Point Number>, #補助メモリプールにTxを保持することの手数料
},
{…}
]
“Margin”:<Floating Point Number>, #FP数の使用による誤差についての許容マージン
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
},
{
# MinerFeeQuote
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“CurrentHighestBlockHash”:<Alphanumeric>,
“MinerSignature”:<Alphanumeric>, #現在ブロックハッシュ+ブロック高さを含む
“SignatureTimestamp”:<UTC Timestamp>, #マイナーはこの時点から取って代わられるまで手数料を保証する
“MinerReputation”:<Alphanumeric>, #これがブランク(ヌル)である場合、“Unknown”を返す
[
{
# FeeTypes
“FeeType”:<“SPB“||“SPDB“||…>, #Satoshis-per-byte,Satoshis-per-data-byte等
“CurrentFee”:<Floating Point Number>,
“Expiry”:<Integer>, duration or date/time at which Fee expires, if 0 fee is not guaranteed to not change
“FeeOnExpiry”:<Floating Point Number>, #Expiryが0である場合、これはCurrentFeeに設定されるべきである
“GuaranteeFee“:<Floating Point Number> #この手数料でTxを処理することの保証(0の場合は無し)
“KeepInMempoolFee”:<Floating Point Number>, #補助メモリプールにTxを保持することの手数料
},
{….}
]
“Margin”:<Floating Point Number>, #FP数の使用による誤差についての許容マージン
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
},
MinerFeeQuote may repeat as necessary - one per miner
]
[
{
# MinerFeeQuote
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“CurrentHighestBlockHash”:<Alphanumeric>,
“MinerSignature”:<Alphanumeric>, #現在ブロックハッシュ+ブロック高さを含む
“SignatureTimestamp”:<UTC Timestamp>, #マイナーはこの時点から取って代わられるまで手数料を保証する
“MinerReputation”:<Alphanumeric>, #これがブランク(ヌル)である場合、“Unknown”を返す
[
{
# FeeTypes
“FeeType”:<“SPB“||“SPDB“||…>, #Satoshis-per-byte,Satoshis-per-data-byte等
“CurrentFee”:<Floating Point Number>,
“Expiry”:<Integer>, duration or date/time at which Fee expires,
“FeeOnExpiry”:<Floating Point Number>, #Expiryが0である場合、これはCurrentFeeに設定されるべきである
“GuaranteeFee”:<Floating Point Number> #この手数料でTxを処理することの保証(0の場合は無し)
“KeepInMempoolFee”:<Floating Point Number>, #補助メモリプールにTxを保持することの手数料
},
{…}
]
“Margin”:<Floating Point Number>, #FP数の使用による誤差についての許容マージン
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
},
{
# MinerFeeQuote
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“CurrentHighestBlockHash”:<Alphanumeric>,
“MinerSignature”:<Alphanumeric>, #現在ブロックハッシュ+ブロック高さを含む
“SignatureTimestamp”:<UTC Timestamp>, #マイナーはこの時点から取って代わられるまで手数料を保証する
“MinerReputation”:<Alphanumeric>, #これがブランク(ヌル)である場合、“Unknown”を返す
[
{
# FeeTypes
“FeeType”:<“SPB“||“SPDB“||…>, #Satoshis-per-byte,Satoshis-per-data-byte等
“CurrentFee”:<Floating Point Number>,
“Expiry”:<Integer>, duration or date/time at which Fee expires, if 0 fee is not guaranteed to not change
“FeeOnExpiry”:<Floating Point Number>, #Expiryが0である場合、これはCurrentFeeに設定されるべきである
“GuaranteeFee“:<Floating Point Number> #この手数料でTxを処理することの保証(0の場合は無し)
“KeepInMempoolFee”:<Floating Point Number>, #補助メモリプールにTxを保持することの手数料
},
{….}
]
“Margin”:<Floating Point Number>, #FP数の使用による誤差についての許容マージン
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
},
MinerFeeQuote may repeat as necessary - one per miner
]
理解を容易にするために、データ項目を入れた上記JSONオブジェクトFeeQuoteの別の一例も以下に与えておく:
GET /mapi/feeQuote
応答
{
"apiVersion":"0.1.2",
"timestamp":"2020-09-15T12:44:19.75812Z",
"expiryTime":"2020-09-17T13:09:31.4573849Z",
"minerId":
"030d1fe5c1b560efe196ba40540ce9017c20daa9504c4c4cec6184fc702d9f274e",
"currentHighestBlockHash":
"2084f6352e242c496cba0a3c45be9b69ff2ef69718b1286a9c0f9c2a1089f6ae",
"currentHighestBlockHeight":1334,
"fees":[
{
"feeType":"standard",
"miningFee":{
"satoshis":500,
"bytes":1000
},
"relayFee":{
"satoshis":250,
"bytes":1000
}
},
{
"feeType":"data",
"miningFee":{
"satoshis":500,
"bytes":1000
},
"relayFee":{
"satoshis":250,
"bytes":1000
}
}
]
}
GET /mapi/feeQuote
応答
{
"apiVersion":"0.1.2",
"timestamp":"2020-09-15T12:44:19.75812Z",
"expiryTime":"2020-09-17T13:09:31.4573849Z",
"minerId":
"030d1fe5c1b560efe196ba40540ce9017c20daa9504c4c4cec6184fc702d9f274e",
"currentHighestBlockHash":
"2084f6352e242c496cba0a3c45be9b69ff2ef69718b1286a9c0f9c2a1089f6ae",
"currentHighestBlockHeight":1334,
"fees":[
{
"feeType":"standard",
"miningFee":{
"satoshis":500,
"bytes":1000
},
"relayFee":{
"satoshis":250,
"bytes":1000
}
},
{
"feeType":"data",
"miningFee":{
"satoshis":500,
"bytes":1000
},
"relayFee":{
"satoshis":250,
"bytes":1000
}
}
]
}
JSON FeeQuotesオブジェクトは、一部の実施例において、マイナーの詳細及び課金される手数料の配列を含み、一方、MinerFeeQuoteは、1つのマイナーから受信したマイナー及び手数料データを含むJSON構造である。上のJSONオブジェクトにおける用語の一部を以下にて説明する。
CurrentHighestBlockHashは、getFeeQuote()が呼び出された時までにブロックチェーンが成長しているポイントにおけるブロックハッシュを特定するためのマーカーとして使用され得る。
MinerSignatureは、上述のように、このトランザクションを保証することに合意したマイナーの署名を含み得る。これは、マイナーの身元を検証するのに使用されるデジタル署名とは異なる。これを行うことにより、マイナーは、当該マイナーが間もなくトランザクションをブロックに含めること、及びオプションで、相反するトランザクションを含めないことを保証し得る。マイナーがトランザクションを保証する意思がない場合、これはヌルに設定され得る。
SignatureTimestampは、宣言した現在手数料でトランザクションをマイニングすることをマイナーが保証する時間を示し、すなわち、その手数料がその時点から取って代わられるまで保証される。この時間は、クライアントがその後にgetFeeQuote()の呼び出しを行った場合に取って代わられる。
MinerReputationは、マイナーのパフォーマンスの尺度、すなわち、マイナーが約束した又は見積もった現在手数料でトランザクションをどれだけうまく行ったかに関係する。この評判スコア/インジケータは、各決済プロセッサによって計算、維持、及び管理され得る。
Miner IDは、ブロックがマイニングされるときにコインベーストランザクションに追加される2つの部分からなるデータとし得る。Miner IDが存在しない場合、決済プロセッサは、そのマイナーを“NULL”のMiner IDでタグ付けしたり、単にブランクのままにしたりすることができる。
各MinerFeeQuote内で、FeeTypesオブジェクトの配列を用いて、現在利用可能な様々な手数料タイプを捕捉し得る。将来、決済プロセッサによって提供されるgetFeeQuote()インタフェースへの如何なる変更も必要な獅子、手数料タイプを導入することができる。全てのトランザクションが1つのFeeTypes配列を持ち得る。
ステップ106は、決済プロセッサにより、取得した手数料見積もりをクライアントに提供することを示している。これは、一部の実施例において、決済プロセッサによって決定された推奨手数料見積もりを含み得る。第1の態様に関して上述したように、このステップは、クライアントがウェブベースのAPIを用いて詳細事項にアクセスすることができるように、APIコンバータによるRPCからHTTPSへの変換を含み得る。
ステップ108にて、クライアントから第2の要求が受信され、第2の要求は、取得した手数料見積もりの中から選択された手数料見積もりに関連して所与のトランザクションを提出することの要求である。所与のトランザクションは、一部の実施形態において、クライアントからの支払要求に応答してカスタマによってクライアントに対して行われるデジタル資産決済に基づく。例えば、これは、クライアントがコーヒーショップ内の商業端末である場合、一杯のコーヒーと引き換えてのサトシタイプ又は他のタイプのデジタル資産決済とし得る。このステップにて、クライアントは、決済プロセッサによって実装された決済サービスAPIを介して、このデジタル資産決済がブロックチェーンに書き込まれることを要求する。
上述のように、クライアントからの第2の要求は、一部の実施形態において、複数のトランザクションを提出することの要求であってもよい。
2つめのトランザクションにおける選択された手数料見積もりは、決済プロセッサによって為される推奨に基づいてもよいし、1つ以上のトランザクションに対してクライアントによって選択されてもよい。
上述のように、選択された見積もりは、取得した全ての手数料見積もりの平均値又は最大値に基づいてもよい。
一部の実施形態において、第2の要求は、POST submitTransaction(Tx)の形式のHTTPS要求であり、Txは、一部の実施形態において、クライアントとカスタマとの間での決済に関する所与のトランザクションに関連するJSONフォーマットのオブジェクトである。従って、Tx(JSONオブジェクト)は、第2の要求を決済プロセッサに提出してマイナーに引き渡すようにするのに先立って、クライアントがJSON構造として提供又は構築し得るトランザクションをブロックチェーン上に作成するのに必要なデータを含む。
ステップ110は、ステップ108での所与のトランザクションに対応するブロックチェーントランザクションを生成することの要求を、複数のマイナーの中の1つ以上のマイナーに送信するステップを示している。このステップにて、決済プロセッサは、一部の実施形態において、前のステップでのHTTPS POST要求を、マイナーへの提出用のRPC要求に変換する。これは、要求RPC createRawTransaction(Tx)を用いて行われることができ、Txは、ステップ108で説明したようなJSONオブジェクトとして与えられる所与のトランザクションに関連するデータを含む。RPC createRawTransaction(Tx)は、与えられたインプットを使って新たなアウトプットを作成するトランザクションを作り出すためのRPCコールであり、アウトプットはアドレス又はデータであることができる。このRPC要求は、上記複数のマイナーに送られることができ、あるいは、ステップ108でクライアントからの選択された手数料見積もりを満たす又は満足するマイナーに送られることができる。上述のように、選択された手数料見積もり以下の現在手数料見積もりを提供したマイナーは、それらそれぞれの見積もった現在手数料でトランザクションをマイニングすることができるので、選択された手数料見積もりの要件を満たしていると見なされる。応答して、選択された手数料見積もりを満たすマイナーが、所与のトランザクションに対応するブロックチェーントランザクションを作成する。一部の実施形態において、所与のトランザクションに対応する16進符号化されたロー(raw)トランザクションが決済プロセッサに返される。
ステップ112にて、複数のマイナーの中の選択された手数料見積もりを満たす少なくとも1つのマイナーによって作成された対応するブロックチェーントランザクションに関連するアウトプット又はアウトプットスクリプトが、決済プロセッサにて受信される。アウトプットスクリプトは、該当マイナーによって作成された対応するブロックチェーントランザクションに関連するUTXOとし得る。一部の実施形態において、UTXOはまた、選択された手数料見積もりを満たす該当マイナーのメモリプールに格納され得る。このステップのアウトプットは、該当マイナーによって作成された対応するブロックチェーントランザクションのトランザクション識別子(TxID)を含むことになる。TxIDは、マイナーのメモリプールに提出される16進符号化トランザクションへの参照であり、そして、これが、決済プロセッサによってブロックチェーントランザクションに然るべくマッピングされる。
そして、このブロックチェーントランザクションが、即座に又は後の時点においてのいずれかでマイニングされて、現在手数料見積もりでのマイニングプロセスを完了させ得る。一部のケースにおいて、別のマイナーがそれをブロックチェーンに書き込んだために、作成されたトランザクションがマイニングされないことがあり、あるいは、例えば二重支払又は時間経過若しくは無効などの何らかの理由で保留されたり拒否されたりすることがある。
ステップ114は、トランザクション結果TxResultをクライアントに送信することを示しており、該結果は、該当マイナーによってステップ108で所与のトランザクションに対応して作成されたブロックチェーントランザクションのトランザクション識別子TxIDを含む。一部の実施形態において、トランザクション結果TxResultは、ステップ110及び112で選択された手数料見積もりを満たす該当マイナーによって作成された対応するブロックチェーントランザクションの詳細に基づいて、決済プロセッサからHTTPSプロトコルを用いてクライアントに送信されるJSONオブジェクトである。
クライアントに対するTxResultオブジェクトに存在する詳細の一例を以下に示す:
JSONオブジェクトTxResultは、該当マイナーに対して以下に示され、ステップ104においてFeeQuotes JSONオブジェクトの部分として説明した一部の項及びオブジェクトを含む。
[
{
“ReturnResult”:<Alphanumeric>, #ReturnResultを以下に規定する
“ResultDescription”:<Alphanumeric>, #失敗理由(例えば、どのポリシーが失敗したか及び何故)
“DoubleSpendTxID”:<Alphanumeric>, #二重支払トランザクションのTxID
“ExceptionTimestamp”:<UTC Timestamp>, #時間例外が検出された(例えば、二重支払された時間)
“BlockHash”:<Alphanumeric>, #このトランザクションを含むブロック
“BlockHeight”:<Integer>,
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“MinerSignature”:<Alphanumeric>, #ブロックハッシュ+ブロック高さ+TxID
“SignatureValidFrom”:<UTC Timestamp>, #MinerSignature有効時間(getFeeQuoteから)
“TxID”:<Alphanumeric>, #メモリプールに提出するときに割り当てられるトランザクションID
“txSecondMempoolExpiry”:<Integer>, #期間(分)補助メモリプールに保持される
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
}
]
JSONオブジェクトTxResultは、該当マイナーに対して以下に示され、ステップ104においてFeeQuotes JSONオブジェクトの部分として説明した一部の項及びオブジェクトを含む。
[
{
“ReturnResult”:<Alphanumeric>, #ReturnResultを以下に規定する
“ResultDescription”:<Alphanumeric>, #失敗理由(例えば、どのポリシーが失敗したか及び何故)
“DoubleSpendTxID”:<Alphanumeric>, #二重支払トランザクションのTxID
“ExceptionTimestamp”:<UTC Timestamp>, #時間例外が検出された(例えば、二重支払された時間)
“BlockHash”:<Alphanumeric>, #このトランザクションを含むブロック
“BlockHeight”:<Integer>,
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“MinerSignature”:<Alphanumeric>, #ブロックハッシュ+ブロック高さ+TxID
“SignatureValidFrom”:<UTC Timestamp>, #MinerSignature有効時間(getFeeQuoteから)
“TxID”:<Alphanumeric>, #メモリプールに提出するときに割り当てられるトランザクションID
“txSecondMempoolExpiry”:<Integer>, #期間(分)補助メモリプールに保持される
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
}
]
上に記載したReturnResultは、以下の通りの取り得る値のうちの1つを含み得る:
・Submitted - 問題なし、トランザクションはメモリプールに提出された
・Rejected_DS - 二重支払のために拒否された - DoubleSpendTxIDはヌルであることができない
・Rejected_Policy - ポリシー違反のため拒否された
・Rejected_Invalid - トランザクションが無効であるために拒否された
・Rejected_FeeTooLow - 手数料が低すぎるため、マイナーはTxをブロックに含めない
・Rejected_KeepInMemPool - Txは拒否されるが、二重支払をチェックするためにメモリプールに保持される。
・Submitted - 問題なし、トランザクションはメモリプールに提出された
・Rejected_DS - 二重支払のために拒否された - DoubleSpendTxIDはヌルであることができない
・Rejected_Policy - ポリシー違反のため拒否された
・Rejected_Invalid - トランザクションが無効であるために拒否された
・Rejected_FeeTooLow - 手数料が低すぎるため、マイナーはTxをブロックに含めない
・Rejected_KeepInMemPool - Txは拒否されるが、二重支払をチェックするためにメモリプールに保持される。
ステップ116は、複数のマイナーに送信するために、クライアントから、トランザクション識別子TxIDに関連付けられたステータスクエリを受信するステップを示している。このステップ以降は、複数のマイニング手数料見積もりの中から手数料見積もりを選択した後にトランザクションを提出するためのアレンジの上記ステップとは非同期に行われることができ、第1の態様の動作に本質的なものであると見なされるべきでない。ステップ116以降の実施形態は、ステップ108で行われた1つ以上の第2の要求のステータスをクライアントが知ることを望む場合のシナリオに関する。
ステップ116は、ステップ108で説明したHTTPS POST submitTransaction(Tx)を介してクライアントが決済プロセッサに提出したトランザクションのステータスをクライアントが照会することを可能にする。従って、このステップにおけるTxIDは、クライアントとそのカスタマとの間でのデジタル資産決済に関連する任意の所与のトランザクションについて行われる任意の第2の要求に対応することができる。上述のステップで説明したように、ステータスクエリは、伝送プロトコルとしてHTTPSを用いてクライアントから受信され、当該クエリは、例えばGET queryTransactionStatus(TxID)などのJSONフォーマットで送信され、そして、それが、複数のマイナーの中の1つ以上のマイナーに送信するためのRPC要求であるRPC getRawTransaction(TxID)に変換される。
ステップ118にて、決済プロセッサは、TxIDに関連付けられたブロックチェーントランザクションを作成及び/又は処理することに関連する複数のマイナーの中の該当マイナーからの応答を受信する。一部の実施形態において、上のRPC getRawTransaction(TxID)は、1に設定された引数に関連し得るものであるVerboseパラメータを含み得る。その場合、成功の場合に該当マイナーから返される結果は、一部の実施形態において、ステップ110及び112での復号された対応するブロックチェーントランザクションを含むJSONフォーマットにあることになる。これは、有利なことに、その中のデータを捕捉して処理することの柔軟性を提供する。Verboseパラメータが0に設定される場合、JSONデータタイプ又はドキュメントフォーマットの代わりに、16進符号化されたトランザクションが決済プロセッサに返される。TxIDに関係するこのようなトランザクションが見つからない場合には、ヌルが返されることができ、そして、それが、ReturnResultオブジェクトが‘Unknown’に設定されることをもたらす。任意の他の返されるエラーも、ReturnResult及びResultDescriptionオブジェクトを介してマイナーによって決済プロセッサに報告され得る。これらのオブジェクトは、ステップ114に関連して示されている。
ステップ120にて、TxIDに関係するTxResultがクライアントに返され、この応答はHTTPSを用いて送信される。これは、ステップ116のステータスクエリでクライアントによって送信された所与のTxIDに関連付けられたマイニング結果を表す。決済プロセッサからクライアントに送信されるTxResultの一例は以下にて与えられる。
JSONオブジェクトTxStatusを以下に示す:
[
{
“ReturnResult”:<Alphanumeric>, #ReturnResultを以下に規定する
“ResultDescription”:<Alphanumeric>, #失敗理由(例えば、どのポリシーが失敗したか及び何故)
“DoubleSpendTxID”:<Alphanumeric>, #二重支払トランザクションのTxID
“ExceptionTimestamp”:<UTC Timestamp>, #時間例外が検出された(例えば、二重支払された時間)
“BlockHash”:<Alphanumeric>,
“BlockHeight”:<Integer>,
“Confirmations”:<Integer>, #未確認の場合は0
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“MinerSignature”:<Alphanumeric>, #ブロックハッシュ+ブロック高さ+TxID
“SignatureValidFrom”:<UTC Timestamp>, #MinerSignature有効時間
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
}
]
[
{
“ReturnResult”:<Alphanumeric>, #ReturnResultを以下に規定する
“ResultDescription”:<Alphanumeric>, #失敗理由(例えば、どのポリシーが失敗したか及び何故)
“DoubleSpendTxID”:<Alphanumeric>, #二重支払トランザクションのTxID
“ExceptionTimestamp”:<UTC Timestamp>, #時間例外が検出された(例えば、二重支払された時間)
“BlockHash”:<Alphanumeric>,
“BlockHeight”:<Integer>,
“Confirmations”:<Integer>, #未確認の場合は0
“MinerID”:<Alphanumeric>, #MinerIDがヌル(エンプティ)である場合、“NO-ID”がデフォルト
“MinerSignature”:<Alphanumeric>, #ブロックハッシュ+ブロック高さ+TxID
“SignatureValidFrom”:<UTC Timestamp>, #MinerSignature有効時間
“APIversion”:<Numeric> #APIバージョンNN.nn (major.minorバージョン番号)
}
]
BlockHash及びMinerIDは、該当マイナーによってトランザクションが成功裏にマイニングされて確認済みとしてフラグ付けられた(すなわち、ブロックに追加された)場合に入力され得る。マイナーがMinerIDを設定していない場合、それは“NULL”に設定されることになる。
そして、ReturnResultオブジェクトは、次のマイニング結果のうちの1つを含み得る:
・Submitted - 問題なし、トランザクションはメモリプールに提出された
・Confirmed - トランザクション確認済み、コンファメーションは0又はヌルであることはできない
・Rejected_DS - 二重支払のために拒否された - DoubleSpendTxIDはヌルであることができない
・Rejected_Policy - ポリシー違反のため拒否された
・Rejected_Invalid - トランザクションが無効であるために拒否された
・Rejected_FeeTooLow - 手数料が低すぎるため、マイナーはそのTxをブロックに含めない
・Rejected_KeepInMemPool - Txは拒否されるが、二重支払をチェックするためにメモリプールに保持される
・Unknown - トランザクションが見えない又は存在しない - 提供されたTxIDを持つトランザクションがメモリプール又はブロックチェーンの中に存在しない可能性がある。そうであれば、これはResultDescriptionに記述されるべきである。
・Submitted - 問題なし、トランザクションはメモリプールに提出された
・Confirmed - トランザクション確認済み、コンファメーションは0又はヌルであることはできない
・Rejected_DS - 二重支払のために拒否された - DoubleSpendTxIDはヌルであることができない
・Rejected_Policy - ポリシー違反のため拒否された
・Rejected_Invalid - トランザクションが無効であるために拒否された
・Rejected_FeeTooLow - 手数料が低すぎるため、マイナーはそのTxをブロックに含めない
・Rejected_KeepInMemPool - Txは拒否されるが、二重支払をチェックするためにメモリプールに保持される
・Unknown - トランザクションが見えない又は存在しない - 提供されたTxIDを持つトランザクションがメモリプール又はブロックチェーンの中に存在しない可能性がある。そうであれば、これはResultDescriptionに記述されるべきである。
第2の態様 - クライアント
図2は、本開示の第2の態様に関するものであり、クライアントに関連付けられた1つ以上のプロセッサによって実行される方法を示しており、クライアントは、第1の態様に関連して説明した方法を実装する少なくとも1つの決済プロセッサに通信可能に結合される。決済プロセッサは、上述のように、クライアントのために図1に関連して説明した決済サービス又は決済APIを実装する。
図2は、本開示の第2の態様に関するものであり、クライアントに関連付けられた1つ以上のプロセッサによって実行される方法を示しており、クライアントは、第1の態様に関連して説明した方法を実装する少なくとも1つの決済プロセッサに通信可能に結合される。決済プロセッサは、上述のように、クライアントのために図1に関連して説明した決済サービス又は決済APIを実装する。
図2に示されたシナリオ例では、複数のマイニング手数料見積もりを取得すること、取得した複数のマイニング手数料見積もりの中から選択された手数料見積もりに基づいてトランザクションを提出すること、並びにトランザクション識別子に関するステータスクエリを送信することに関する実施形態が、全て順次に行われるものとして説明され、すなわち、図2のフローチャートでの単一のプロセスとして説明される。しかしながら、本開示及び第2の態様は、そのように限定されると見なされるものではない。以下に記載されるステップ202-206における第1の要求で手数料見積もりを取得することに関するステップは、残りのステップとは別に独立して実施され得る。同様に、ステップ208-212における第2の要求でトランザクションを提出することに関するステップは、手数料見積もりを取得する先行ステップとは別に異なる時に実施され得る。同じように、ステップ214以降のトランザクションステータス照会に関するステップは、クライアントがトランザクションの識別子を認識した後の任意の時に実施されることができ、図2のシーケンスに従う必要はない。ここでは、説明及び理解を容易にするために、全てのステップを単純にシーケンスで示しており、本開示は、如何なる状況でも、このようなシーケンス又はシナリオに限定されると見なされるべきでない。さらに、図1に関連して上述したように、手数料見積もりは、その都度、単一のトランザクションに対して別々に、あるいは、単一の要求で、すなわち、同時にクライアントによって提出される複数のトランザクションのセット又はバッチに対して、要求及び/又は取得及び/又は提出及び/又は照会されることができる。説明及び理解を容易にするために、図2はクライアントに関連する第1の要求/第2の要求並びにステータスクエリでの単一のトランザクションに関して説明されるが、本開示は決してそのように限定されるものではない。
ステップ202は、それぞれの決済サービスを提供するためにクライアントに関連付けられた少なくとも1つの決済プロセッサの中のある決済プロセッサに第1の要求を送信することを示している。図1のステップ102に関連して説明したように、この要求は、クライアントのためのトランザクションをマイニングすることに関する1つ以上の手数料見積もりに関係している。この第1の要求は、ステップ102に関連して説明したHTTPS GET getFeeQuoteに関する。上述のように、この要求は、クライアントに関する任意のトランザクションをマイニングするためのものであってもよいし、あるいは、クライアントと関連するカスタマからのデジタル資産決済に関連するトランザクションをマイニングすることに関する手数料見積もりを得るための要求であってもよい。
ステップ204にて、複数のマイニング手数料見積もりが決済プロセッサから受信され、手数料見積もりは、クライアントにサービス提供する決済プロセッサに通信可能に結合された複数のマイナーの各々についてのマイニング手数料に関係する。受信される手数料見積もりの構造及び詳細については、図1のステップ104に関連して既に説明されている。
ステップ206は、ステップ204で受信した1つ以上の手数料見積もりの中から手数料見積もりを選択することを示している。一部の実施形態において、選択された手数料見積もりは、決済プロセッサによって提案された推奨手数料見積もりに基づき得る。一部の実施形態において、この選択は、クライアントと関連付けられた1つ以上のプロセッサによって行われる。選択された手数料見積もりは、上述のように、取得した手数料見積もりの平均値若しくは中央値、又は複数のマイナーから取得した手数料見積もりの最大値、又は補助メモリプール内の最も高い手数料見積もりとし得る。従って、クライアントは、第1の要求に応答する複数のマイナーから取得した最も高い手数料の値を選択することができる。斯くして、全てのマイナーに、それらそれぞれが現在見積もった手数料でそのトランザクションをマイニングする機会を等しく与えることができる。一方、クライアントは代わりに、受信した全ての手数料見積もりの中央値又は平均値にあるかその上である手数料見積もりを選択することで、より高い見積もりを持つマイナーは、そのトランザクションを単に補助メモリプールに保持し、それを用いてトランザクションの任意の二重支払に対するチェックを行ってそれを排斥するようにすることができる。
ステップ208は、クライアントに関連するカスタマからのデジタル資産決済を要求及び/又は処理するステップを示している。これは、支払要求、又は双方の当事者それぞれのデジタルウォレット実装に適用される既知の方法を用いて、デジタル資産決済に関してクライアントによってカスタマに送られるインボイスとし得る。任意のトランザクションをブロックチェーンにマイニングすることに関する選択された手数料見積もりは既知であるので、この要求は選択された手数料見積もりを含むか、それに関連付けるかすることができる。
ステップ210は、カスタマからのデジタル資産決済に関連する所与のトランザクションをブロックチェーンに提出することの第2の要求を決済プロセッサに送信するステップを示している。このステップでの提出は、ステップ206での所与のトランザクションをマイニングすることに関する選択された手数料見積もりに基づく。このステップは、図1のステップ108で、クライアントが、所与のトランザクションに対してJSONデータ型フォーマットにおける関連する詳細を用いて、HTTPS POST submitTransaction(Tx)要求を決済プロセッサに送信することに関係する。
ステップ212は、提出したトランザクションに対応するブロックチェーントランザクションのトランザクション識別子(TxID)を受信するステップを示している。図1のステップ110及び112で説明したように、TxIDは、選択された手数料見積もりを満たす少なくとも1つのマイナーによって作成される。一部の実施形態において、これは、トランザクション結果、すなわち、該当マイナーに関する対応するブロックチェーントランザクションの現在のマイニングステータスを示すTxResultと共に又はその一部として送信され得る。これは、図1のステップ114に関連して説明されている。
ステップ214は、クライアントとカスタマとの間での決済に関係して、以前にステップ210で提出したトランザクションのマイニングステータスを照会することをクライアントが望むときに、クライアントがステータスクエリを送信することに関する。クライアントは、提出したトランザクションのTxIDをステップ212で受信しているので、この要求は、TxIDに基づくことができ、また、図1のステップ116で説明したように、HTTPS GET queryTransactionStatus(TxID)の形式であることができる。
ステップ216は、ステップ214でクエリしたトランザクション識別子TxIDに対応するブロックチェーントランザクションについてのマイニングステータス結果を取得することを示している。これは、JSONフォーマットにあることができ、対応するトランザクションの詳細を決済プロセッサが受信した後に、決済プロセッサによって、HTTPSを用いてクライアントに送信される。ステータス結果は、図1のステップ120で見らたようなTxResult JSONオブジェクトの形式にあることができる。
第3の態様 - マイナー実装
図3は、本開示の第3の態様に関するものであり、複数のマイナーの中のあるマイナーによって実行される方法を示しており、複数のマイナーは、第1の態様に関連して説明した方法を実装する少なくとも1つの決済プロセッサに通信可能に結合される。決済プロセッサは、クライアントのために図1に関連して説明した決済サービス又は決済APIを実装する。クライアントは、図2に関連して説明した方法を実装するように構成される。
図3は、本開示の第3の態様に関するものであり、複数のマイナーの中のあるマイナーによって実行される方法を示しており、複数のマイナーは、第1の態様に関連して説明した方法を実装する少なくとも1つの決済プロセッサに通信可能に結合される。決済プロセッサは、クライアントのために図1に関連して説明した決済サービス又は決済APIを実装する。クライアントは、図2に関連して説明した方法を実装するように構成される。
図3に示されたシナリオ例では、複数のマイニング手数料見積もりを提供すること、取得された複数のマイニング手数料見積もりの中から選択された手数料見積もりに基づいてブロックチェーントランザクションを生成/作成すること、並びにトランザクション識別子に関するマイニングステータスを提供することに関する実施形態が、全て順次に行われるものとして説明され、すなわち、図3のフローチャートでの単一のプロセスとして説明される。しかしながら、本開示及び第3の態様は、そのように限定されると見なされるものではない。以下に記載されるステップ302及び304における第1の要求に応答して手数料見積もりを提供することに関するステップは、残りのステップとは別に独立して実施され得る。同様に、ステップ308-314における第2の要求に応答して対応するブロックチェーントランザクションを生成することに関するステップは、手数料見積もりを取得する先行ステップとは別に異なる時に実施され得る。同じように、ステップ316のトランザクションステータスを提供することに関するステップは、クライアントがトランザクションの識別子を認識した後の任意の時に実施されることができ、図3のシーケンスに従う必要はない。ここでは、説明及び理解を容易にするために、全てのステップを単純にシーケンスで示しており、本開示は、如何なる状況でも、このようなシーケンス又はシナリオに限定されると見なされるべきでない。さらに、図1及び図2に関連して上述したように、手数料見積もりは、その都度、単一のトランザクションに対して別々に、あるいは、単一の要求で、すなわち、同時にクライアントによって提出される複数のトランザクションのセット又はバッチに対して、要求及び/又は取得及び/又は提出及び/又は照会されることができる。説明及び理解を容易にするために、図3はクライアントに関連する第1の要求/第2の要求並びにステータスクエリでの単一のトランザクションに関して説明されるが、本開示は決してそのように限定されるものではない。
ステップ302は、クライアントに代わってトランザクションをマイニングすることに関する手数料見積もりを提供することの第1の要求を、決済プロセッサから受信することを示している。この要求は、図1のステップ104に関連して説明したように、決済プロセッサから送信されるRPC getFeeQuote()要求に関する。
ステップ304は、ブロックチェーンにおいてトランザクションをマイニングすることに関して、複数のマイナーの中の各マイナーに関係する現在手数料見積もりを提供することを示している。手数料見積もりは、図1のステップ104に関連して説明したようにJSONオブジェクトFeeQuoteのフォーマットで提供され得る。
ステップ306は、クライアントに関連する所与のトランザクションをブロックチェーンに提出することの第2の要求を複数のマイナーの中のあるマイナーが受信するステップを示しており、所与のトランザクションは、クライアントからの選択された手数料見積もりに基づく。所与のトランザクションは、図2のステップ210のPOST submitTransaction(Tx)におけるTx、すなわち、クライアントとカスタマとの間の所与のデジタル資産決済トランザクションに関係する。図1のステップ110に関連して説明したように、決済プロセッサから受信されるこれのRPCバージョンは、所与のトランザクションのRPC createRawTransaction(Tx)である。
ステップ308は、マイナーがクライアントからの選択された手数料見積もりを満足する又は満たすことをチェックすることを示している。これは、ステップ304で該当マイナーによって決済プロセッサに提供された現在手数料見積もりが、所与のトランザクションTxをマイニングするためにクライアントが支払う用意があるものである選択された手数料見積もり以下であるか否かの判定を含み得る。
現在手数料見積もりが選択された手数料見積もりを満たす場合、ステップ310にて、所与のトランザクションに対応するブロックチェーントランザクションが作成される。これは、図1のステップ110に関連して説明されている。一部の実施形態において、所与のトランザクションに対応する16進符号化されたロートランザクションが決済プロセッサに返される。図1のステップ112で説明したように、アウトプットスクリプト又はUTXOも決済プロセッサに提供され、アウトプットスクリプトは、該当マイナーによって作成された対応するブロックチェーントランザクションに関連付けられたトランザクション識別子(TxID)を含む。そして、ブロックチェーントランザクションについてのアウトプットスクリプト(UTXO)は、即座に又は後の時点で、マイニングに関するマイナーに関連付けられたメモリプールに追加され得る。
現在手数料見積もりが選択された手数料見積もりを満たさない場合、すなわち、該当マイナーの現在手数料見積もりがクライアントによって許容される又は選択された手数料見積もりよりも高い場合、該当マイナーは、一部の実施形態において、現在手数料見積もりよりも低い手数料でマイニングすることを選択するか、あるいは、選択された手数料がそれぞれの現在見積もった手数料よりも低いから所与のトランザクションをマイニングしないことを選択するかし得る。該当マイナーが、より低いものである選択された手数料見積もりでトランザクションをマイニングしないことを選択する実施形態では、ステップ312にて、該当マイナーは、代わりに、所与のトランザクションに対して構築されたブロックチェーントランザクションに関する詳細を、該当マイナーに関連付けられた補助メモリプールに追加し得る。このトランザクションは、一部の実施形態において、補助メモリプールに保持され、二重支払をチェックするために使用され得る。補助メモリプールに格納されたトランザクションは全て、満了時間を有することができ、それの後に除去されることができる。
ブロックチェーントランザクションが作成されたと仮定して、すなわち、該当マイナーがクライアントによって設定された選択された手数料見積もりの要件を満たすと仮定して、ステップ316は、クライアントのために作成されたブロックチェーントランザクションのTxIDに関連付けられたステータスクエリを該当マイナーが受信することに関する。このステータスクエリは、図1のステップ116及び118に関連して説明したように、APIコンバータを介して受信されたRPC要求RPC getRawTransaction(TxID)に基づく。
ステップ318にて、該当マイナーに関係する対応するブロックチェーントランザクションの現在のマイニングステータスに基づく結果が決済プロセッサに提供される。これは、図1のステップ120に関連して説明したように、TxStatusについてのJSONオブジェクト構造に基づき得る。
図4は、決済プロセッサ404によってAPIとしてクライアント402に提供される決済サービスの展開アーキテクチャの概略図である。2つ以上のこのような決済プロセッサ404が存在してもよく、また、1つ以上の決済プロセッサ404は、クライアントの一部として実装されてもよいし、クライアントと関連付けられてもよいし、あるいは、クライアントとは別個に実装されて、例えばインターネットなどの通信ネットワーク上でクライアントと通信してもよい。上の態様で説明したように、クライアント402と決済プロセッサ404との間の通信は、HTTPSプロトコルを使用する。この概略図ではAPIコンバータ406も別個に示されているが、一部の実施形態において、APIコンバータ406は決済プロセッサ404の一部として実装されてもよい。一部の実施形態において、APIコンバータ406は、複数のマイナー412-1乃至412-nによって動作されるか実装されるかし得る。APIコンバータ406は、HTTPS要求を、クライアント402にサービスを提供するために決済プロセッサ404に結合された1つ以上のマイナー412-1乃至412-nに該HTTPS要求を送信する前に、RPC要求に変換することを可能にする。APIコンバータ406は、ファイアウォール408を介してマイナー412-1乃至412-nに接続されているように示されている。マイナー412-1乃至412-nに関連する全ての通信がRPCを使用する。また、ファイアウォール408を介して複数のマイナー412-1乃至412-nを決済プロセッサ404に接続するためのノードコネクタ410も示されている。一部の実施形態において、ノードコネクタは、図1に関連して説明したように、それぞれの決済サービスを実装する1つ以上の決済プロセッサに関連するRPCコールを保証又は処理し得る。ノードコネクタ410は、APIコンバータ406と1つ以上のマイナー412-1乃至412-nとの間のセキュア通信チャネルを提供する。
APIコンバータ406を介してマイナー412-1乃至412-nを接続する1つ以上の決済プロセッサ404が存在することができる。クライアント402は大抵、個々の又は複数のトランザクションに関して第1乃至第3の態様に関連して説明したように、マイナー手数料の見積もりを取得するため(getFeeQuote)、トランザクションを提出するため(submitTransaction)、及びトランザクションのステータスを問い合わせるため(queryTransactionStatus)のデジタルウォレットアプリケーションを含むことになる。決済プロセッサ404は、クライアント402に対するRESTエンドポイントとして作用し、クライアントは、このサービスへの匿名アクセスを有することができる。マイナー412-1乃至412-nは、一部の実施形態においてブロック報酬とマイナー手数料とで構成され得るものであるマイニング報酬と引き換えに、1つ以上のノードをマイニングし得る。ブロック報酬は、マイナー412がブロックを成功裏にマイニングすると授与されるBSV又は暗号通貨として参照される。マイナー手数料は、トランザクションを確認し、新たにマイニングしたブロックにトランザクションを加えた場合にマイナー412が受け取る報酬である。
図5は、クライアントからのgetFeeQuoteコマンド又はテンプレートを実装するための、図4に示したアーキテクチャのコンポーネント間でのデータフローを示す概略図である。これは、図1-図3に関連して既に上述されており、図4は、マイニング手数料見積もりを得るための、クライアント、決済プロセッサ、及びマイナーのインタラクションを単純に概略的に記載している。当該フローは、ステップ501でHTTPS GET getFeeQuoteコマンドが決済プロセッサ404に送信されるときにクライアント402から生じる。ステップ502にて、該GETコマンドがAPIコンバータ406に送られ、APIコンバータ406が、ステップ503にて、これをRPCコマンドRPC getFeeQuote()へと変換する。ステップ504にて、複数のマイナー412-1乃至412-nの各マイナー412から、JSONオブジェクトフォーマットとしてMinerFeeQuoteがAPIコンバータ406に返され、そして、ステップ505にて、それが決済プロセッサ404に提供される。ステップ502-505が、複数のマイナー412-1乃至412-nの中の各マイナーに対して繰り返され、その結果(手数料見積もり)が、ステップ506にて、HTTPS伝送においてクライアント402に送信される。
図6は、クライアントからのsubmitTransactionコマンド又はテンプレートを実装するための、図4に示したアーキテクチャのコンポーネント間でのデータフローを示す概略図である。これは、図1-図3に関連して既に上述されており、図4は、クライアントに対する支払に関連するブロックチェーントランザクションを提供するための、クライアント、決済プロセッサ、及びマイナーのインタラクションを単純に概略的に記載している。当該フローは、ステップ601で、クライアント402とカスタマとの間の所与のトランザクションTxに関してHTTPS POST submitTransaction(Tx)コマンドが決済プロセッサ404に送信されるときにクライアント402から生じる。上の態様に関連して述べたように、Txは、選択された手数料見積もり(この図には示されず)に関連し得る。ステップ602にて、POSTコマンドがAPIコンバータ406に送られ、APIコンバータ406が、ステップ603にて、これをRPCコマンドRPC createRawTransaction(Tx)へと変換する。そして、選択された手数料見積もりを満たす各マイナー412で、ブロックチェーントランザクションが構築される。ステップ604にて、16進符号化ブロックチェーントランザクションがAPIコンバータ406に返される。このトランザクションは、上の態様で説明したように、固有識別子TxIDを含む。ステップ605にて、ブロックチェーントランザクションに関連するアウトプットが、決済プロセッサ404に送られる。そして、ブロックチェーントランザクションに関係する結果が、ステップ606にて、TxIDを含むJSON TxResultオブジェクトとしてクライアントに返される。
図7は、クライアントからのqueryTransactionStatusコマンド又はテンプレートを実装するための、図4に示したアーキテクチャのコンポーネント間でのデータフローを示す概略図である。これは、図1-図3に関連して既に上述されており、図4は、クライアントに関する決済に関連するブロックチェーントランザクションを提供するための、クライアント、決済プロセッサ、及びマイナーのインタラクションを単純に概略的に記載している。当該フローは、ステップ701で、図6のsubmitTransactionフローの一部として以前にクライアントに返されたブロックチェーントランザクションに関係する所与のトランザクションTxIDに関してHTTPS GET queryTransactionStatus(TxID)コマンドが決済プロセッサ404に送信されるときにクライアント402から生じる。ステップ702にて、GETコマンドがAPIコンバータ406に送られ、APIコンバータ406が、ステップ703にて、これをRPCコマンドRPC getRawTransaction(TxID).へと変換する。そして、TxIDに関係する所与のマイナー412に関連するブロックチェーントランザクションが特定される。ステップ704にて、特定された16進符号化ブロックチェーントランザクション及びその関連ステータスがAPIコンバータ406に返される。ステップ705にて、TxIDに関係するブロックチェーントランザクションに関連するステータス結果が、決済プロセッサ404に送られる。そして、TxIDに関するブロックチェーントランザクションに関係するステータス結果が、ステップ706にて、JSON TxStatusオブジェクトとしてクライアントに返される。
また、図1-図3に関連して上述したように、手数料見積もりは、その都度、単一のトランザクションに対して別々に、あるいは、単一の要求で、すなわち、同時にクライアントによって提出される複数のトランザクションのセット又はバッチに対して、要求及び/又は取得及び/又は提出及び/又は照会されることができる。説明及び理解を容易にするために、図4-図7はクライアントに関連する第1の要求及び/又は第2の要求及び/又はステータスクエリでの単一のトランザクションに関して説明されているが、本開示は決してそのように限定されるものではない。
第4の態様 - コールバック識別子
図8は、第4の態様に従った、トランザクションに対するコールバックメカニズムを支援する方法を示すフロー図である。この図は、第1の態様に関連して上述したような、決済サービスと関連付けられた1つ以上のプロセッサによって実装される方法に関係する。
図8は、第4の態様に従った、トランザクションに対するコールバックメカニズムを支援する方法を示すフロー図である。この図は、第1の態様に関連して上述したような、決済サービスと関連付けられた1つ以上のプロセッサによって実装される方法に関係する。
ステップ802は、1つ以上のクライアントの中の所与のクライアントから要求を受信することを含んでいる。該要求は、デジタル資産に関連するトランザクションを提出することに関する。例えば、これは、図1のステップ108で説明したトランザクションを提出することの第2の要求とし得る。該要求はまた、コールバック識別子と関連付けられる。コールバック識別子は、一部の実施形態において、クライアントによって提供されるか、クライアントと関連付けられるかのいずれかとし得る。例えば、これは、それを用いてクライアントとコンタクトをとることができるURL又はAPIエンドポイントとし得る。一部のケースにおいて、これはまた、クライアントと関連付けられたロケーションを指し示し得る。一部のケースにおいて、コールバック識別子は、ロケーション又は識別子通信チャネルとし得る。このようなチャネルについては、以下の図9-図11で更に説明する。コールバック識別子の目的は、クライアントと別エンティティとの間に直接通信を確立する手段を有効にする又は可能にすることである。コールバック識別子は、クライアントに固有であり、一部のケースにおいて、例えばこのステップでの要求と関連付けられたトランザクションなどの特定のトピックに固有である。
ステップ804は、要求と関連付けられたトランザクションを、該トランザクションをブロックチェーンに含めるために、複数のマイナーの中の所与のマイナーに提出することを含んでいる。これは、図1のステップ110の第2の要求に対して実行されるプロセスと同様である。
ステップ806は、クライアントに対して所与のマイナーを特定することを含んでいる。これは、例えば所与のマイナーと関連付けられたエンドポイント又はURLをクライアントに提供するなど、数多くの技術によって実行され得る。これは、HTTPS伝送プロトコルを用いてクライアントに送信され得る。一部のケースにおいて、例えば上述のbsvaliasアドレッシングサービスを用いるなど、マイナーがアドレス指定用の別名と関連付けられる場合、これがクライアントに提供され得る。一部のケースにおいて、マイナーがMiner ID及び/又は上述のような評判と関連付けられる場合、そのような情報もクライアントに提供され得る。一部のケースにおいて、この特定ステップは、以下に記載するステップ812と共に又はその後に行われることができる。
ステップ808は、ステップ802で説明したコールバック識別子をマイナーに提供して、マイナーがこれを用いて直接的にクライアントとコンタクトをとることができるようにすることを含んでいる。一部のケースにおいて、クライアントに代わって決済プロセッサが通信を扱っている場合、コールバック識別子は決済プロセッサを指し示してもよい。この図は、コールバック識別子がクライアントに対するものであるシナリオに関するものであるが、本開示はそのように限定されるものではない。例えば、コールバック識別子は、クライアント又は決済プロセッサを一意に特定する暗号化された識別子(エンドポイント)とすることができる。
ステップ810にて、ステップ802でのトランザクション要求に対して生成された対応するブロックチェーントランザクションに関する詳細を有する応答が、所与のマイナーから受信される。これは、そのトランザクションのトランザクション識別子(TxID)を含むものとなり、それをクライアントに提供することができる。一部のケースにおいて、ステップ806でのマイナーの身元は、TxIDが受信されると又はその後にクライアントに提供され得る。一部の実施形態において、このステップでの応答は、第1の態様で上述したように、対応するブロックチェーントランザクションと関連付けられた、例えば未使用トランザクションアウトプット(UTXO)といったアウトプットスクリプトを含む。そして、対応するブロックチェーントランザクションのこのトランザクション識別子(TxID)がクライアントに送信される。
ステップ812は、ステップ802で言及したコールバック識別子に基づいてマイナーによって提供された対応するブロックチェーントランザクションに関連する少なくとも1つのコールバック通知を、クライアントに対して有効化又は処理することを含んでいる。このコールバック識別子が、クライアントに対するコールバックエンドポイントURL又はURIである場合、メッセージをHTTP POSTメッセージとしてそのようなロケーションに直接提供することができる。該メッセージは、1つ以上の既知の技術に基づいて暗号化されることができる。
図9は、本開示の第4の態様の第2の実装に関するものであり、要求と関連付けられたコールバック識別子は、チャネルプロセッサによってクライアントに提供されるチャネルに関する。上述のように、チャネルプロセッサは、クライアントに対してチャネルサービスを提供する別個のエンティティであってもよいし、決済プロセッサと同一のエンティティであってもよい。この図の以下のステップは、チャネルプロセッサによって実装される実施形態を示している。
ステップ902は、例えばエヌチェーン ホールディングス リミテッドの名で出願された英国特許出願第2007597.4号で説明されているようなチャネルサービスに契約した所与のクライアントから、チャネルと関連付けられた要求を受信することを示している。この実施形態におけるこの要求は、チャネルを作成することに関するものである。しかしながら、チャネルサービスは、例えば既存のチャネルと関連付けられたAPIを更新することなどの他の機能を有効にすることが可能である。殆どのケースにおいて、チャネルサービス及びそれによって提供される機能を使用することにクライアントが登録されているかを確かめるために、クライアントの身元がチェックされ得る。一部の実施形態において、これは、登録中の、例えばパスワード保護によるログイン認証又はこれに類するものなどの、既知の認証方法に基づき得る。照合は、受け取ったパスワードが、格納されている記録内のパスワードと一致することに基づき得る。他の実施形態では、ステップ902でクライアントから受信した要求内に存在し得るデジタル署名を検証するために、暗号又はアドレッシング秘密/公開鍵ペアに基づく標準PKI技術も使用され得る。この場合、秘密鍵によって署名された要求が、公開鍵を用いて成功裏に復元又は照合されることができるかをチェックすることによって、クライアントの身元を検証することができる。クライアントが正当でない又は登録されていない場合、このステップでの要求はそれ以上進められず、あるいは、チャネルサービスによって登録ステップが起動され得る。
ステップ904にて、要求されたチャネル機能及び/又はメッセージ機能がクライアントに提供される。
チャネル及び/又はメッセージ機能/APIの作成の要求に関連するスキーマ及び/又はフォーマットのいくつかの例を、チャネルプロセッサによって提供される応答のスキーマの例と共に、以下に示す。
1.1 チャネルAPI:
チャネルAPIは、ピア・ツー・ピア通信用のチャネルを作成及び/又は管理するのに役立つようにチャネルサービスによって提供されるJSON・オーバ・HTTP APIクライアントアカウントとし得る。
チャネルAPIは、ピア・ツー・ピア通信用のチャネルを作成及び/又は管理するのに役立つようにチャネルサービスによって提供されるJSON・オーバ・HTTP APIクライアントアカウントとし得る。
一部の実施形態において、全てのAPIエンドポイントが認証を必要とし得る。具体的な認証スキームは、実装によって決定され得る。一般的な形式は、例えばOAuth、基本認証、及びベアラートークン法などのスキームを含む。上述のように、チャネルAPIは、オプションで、クライアントによって提供又は生成されるAPIトークンによって保護され得る。
Create Channel:クライアントによって所有される新たなチャネル、すなわち、チャネルサービス用のアカウント所有者を作成する
要求フォーマット:
POST/api/account/<account-id>/channel
Authorization:...
Content-type:application/json
Content-length:...
{
"public_read":true|false,
"public_write":true|false,
"sequenced":true|false,
"retention":{
"min_age_days":null|<number>,
"max_age_days":null|<number>,
"auto_prune":true|false
}
}
応答フォーマット:
首尾良く作成された応答はイニシャルアクセストークンを含む。チャネルAPIにアクセスするのにはアカウント認証情報が使用され得るが、メッセージングAPIにアクセスするのにはトークンを使用する必要があるとし得る。これのためのこのイニシャルアクセストークンはアカウント所有者に属し、その目的はチャネルに対する読み出し及び書き込みである。
201 OK
Content-type:application/json
Content-length:...
{
"id":"...",
"href":"https://example.org/channel/<id>",
"public_read":true|false,
"public_write":true|false,
"sequenced":true|false,
"head":<sequence>,
"retention":{
"min_age_days":null|<number>,
"max_age_days":null|<number>,
"auto_prune":true|false
},
"access_tokens":[
{
"id":"...",
"token":"...",
"description":"Owner",
"can_read":true,
"can_write":true
}
]
}
}
メッセージAPIは、アカウント所有者及び関連する取引先(チャネルに関する別エンティティ)が、所与のチャネルに対してメッセージを読み出す又は書き込むことを可能にする。メッセージを交換するために、以下のメッセージAPIが、アカウント所有者及びそれらの取引先に対してJSON・オーバ・HTTP APIとして提供され得る。
Create Channel:クライアントによって所有される新たなチャネル、すなわち、チャネルサービス用のアカウント所有者を作成する
要求フォーマット:
POST/api/account/<account-id>/channel
Authorization:...
Content-type:application/json
Content-length:...
{
"public_read":true|false,
"public_write":true|false,
"sequenced":true|false,
"retention":{
"min_age_days":null|<number>,
"max_age_days":null|<number>,
"auto_prune":true|false
}
}
応答フォーマット:
首尾良く作成された応答はイニシャルアクセストークンを含む。チャネルAPIにアクセスするのにはアカウント認証情報が使用され得るが、メッセージングAPIにアクセスするのにはトークンを使用する必要があるとし得る。これのためのこのイニシャルアクセストークンはアカウント所有者に属し、その目的はチャネルに対する読み出し及び書き込みである。
201 OK
Content-type:application/json
Content-length:...
{
"id":"...",
"href":"https://example.org/channel/<id>",
"public_read":true|false,
"public_write":true|false,
"sequenced":true|false,
"head":<sequence>,
"retention":{
"min_age_days":null|<number>,
"max_age_days":null|<number>,
"auto_prune":true|false
},
"access_tokens":[
{
"id":"...",
"token":"...",
"description":"Owner",
"can_read":true,
"can_write":true
}
]
}
}
メッセージAPIは、アカウント所有者及び関連する取引先(チャネルに関する別エンティティ)が、所与のチャネルに対してメッセージを読み出す又は書き込むことを可能にする。メッセージを交換するために、以下のメッセージAPIが、アカウント所有者及びそれらの取引先に対してJSON・オーバ・HTTP APIとして提供され得る。
2.1 新メッセージに対するテストチャネル
要求フォーマット:
HEAD/api/channel/<id>
Authorization:<api-token>
応答フォーマット:
201 OK
ETag:<max-sequence>
要求フォーマット:
HEAD/api/channel/<id>
Authorization:<api-token>
応答フォーマット:
201 OK
ETag:<max-sequence>
2.2 チャネルへの書き込みメッセージ
要求フォーマット:
POST/api/channel/<id>
Authorization:<api-token>
Content-type:...
Content-length:...
応答フォーマット:
a)合格
メッセージがチャネルに書き込まれた。
201 Created
b) シーケンシング失敗
チャネルがシーケンスにされるように作成され、要求に関連付けられたAPIトークンはチャネルの最新メッセージを読み取っているとはマークされていない。なおも適切である場合には、クライアントは書き込みを再び試みる必要があり得る。
409 Conflict
c) メッセージ過大
エンド・ツー・エンド暗号化が、例えばノイズプロトコルに基づいて、全てのメッセージを保護する実施形態では、いずれの単一メッセージの最大サイズも65536バイトに設定される。これより大きいメッセージは存在しないはずなので、一部の実施形態では、チャネルに書き込まれるメッセージの最大サイズを制限することが有用であり得る。これより大きいメッセージはチャネルによって拒否され得る。
413 Payload Too Large
d) ストレージ割り当て量超過
一部の実施形態においてサービスオペレータによって設定され得る割り当て量が超過されている。クライアント要求は正当であり得るが、ストレージサービスは現時点ではそれを満たすことができない。
507 Insufficient Storage
要求フォーマット:
POST/api/channel/<id>
Authorization:<api-token>
Content-type:...
Content-length:...
応答フォーマット:
a)合格
メッセージがチャネルに書き込まれた。
201 Created
b) シーケンシング失敗
チャネルがシーケンスにされるように作成され、要求に関連付けられたAPIトークンはチャネルの最新メッセージを読み取っているとはマークされていない。なおも適切である場合には、クライアントは書き込みを再び試みる必要があり得る。
409 Conflict
c) メッセージ過大
エンド・ツー・エンド暗号化が、例えばノイズプロトコルに基づいて、全てのメッセージを保護する実施形態では、いずれの単一メッセージの最大サイズも65536バイトに設定される。これより大きいメッセージは存在しないはずなので、一部の実施形態では、チャネルに書き込まれるメッセージの最大サイズを制限することが有用であり得る。これより大きいメッセージはチャネルによって拒否され得る。
413 Payload Too Large
d) ストレージ割り当て量超過
一部の実施形態においてサービスオペレータによって設定され得る割り当て量が超過されている。クライアント要求は正当であり得るが、ストレージサービスは現時点ではそれを満たすことができない。
507 Insufficient Storage
2.3 チャネルでのGetメッセージ
オプションで未読にフィルタリングされるチャネルからの全てのメッセージを返す。
要求フォーマット:
GET/api/channel/<id>[?unread=true]
Authorization:<api-token>
unreadクエリ文字列パラメータはオプションである。
応答フォーマット:
201 OK
Content-type:application/json
Content-length:...
ETag:<max-sequence>
{
"messages":[
{
"sequence":<number>,
"received":<unix-timestamp>,
"content_type":"...",
"payload":"hex/base64"
}
]
}
オプションで未読にフィルタリングされるチャネルからの全てのメッセージを返す。
要求フォーマット:
GET/api/channel/<id>[?unread=true]
Authorization:<api-token>
unreadクエリ文字列パラメータはオプションである。
応答フォーマット:
201 OK
Content-type:application/json
Content-length:...
ETag:<max-sequence>
{
"messages":[
{
"sequence":<number>,
"received":<unix-timestamp>,
"content_type":"...",
"payload":"hex/base64"
}
]
}
2.4 メッセージを読取済み又は未読としてマークする:メッセージに読取済み又は未読としてフラグを立てる。
要求フォーマット:
POST/api/channel/<id>/<sequence>[?older=true]
Authorization:<api-token>
Content-type:application/json
Content-length:...
{"read":true|false}
オプションのolderパラメータは、クライアントが、供給された<sequence>パス引数以下のシーケンスを持つ全てのメッセージを、単一コールで読み取られたとしてマークすることを可能にする。
応答フォーマット:
201 OK
要求フォーマット:
POST/api/channel/<id>/<sequence>[?older=true]
Authorization:<api-token>
Content-type:application/json
Content-length:...
{"read":true|false}
オプションのolderパラメータは、クライアントが、供給された<sequence>パス引数以下のシーケンスを持つ全てのメッセージを、単一コールで読み取られたとしてマークすることを可能にする。
応答フォーマット:
201 OK
ステップ906にて、要求されたチャネルに関連付けられたアクセストークン又はAPIトークンがクライアントに提供される。一部の実施形態において、必要であれば、例えば、許可が改められている又は所与のチャネルに対してクライアントによってもはや要求されていない場合、アクセストークンは取り消されたり無効にされたりもし得る。
これに関するスキーマ例を以下に与えておく。
これに関するスキーマ例を以下に与えておく。
3.1 チャネルAPIトークンを生成
要求フォーマット:
POST/api/account/<account-id>/channel/<channel-id>/api-token
Authorization:...
Content-type:application/json
Content-length:...
{
"description":"...",
"can_read":true|false,
"can_write":true|false
}
応答フォーマット:
これは、トークン値を返すことになる唯一のAPIコールである。それが失われた場合は、トークンは削除されて、新たなトークンで置き換えられるべきである。
201 Created
Content-type:application/json
Content-length:...
{
"id":"...",
"token":"...",
"description":"...",
"can_read":true|false,
"can_write":true|false
}
1.6 チャネルAPIトークンを無効化:
要求フォーマット:
DELETE/api/account/<account-id>/channel/<channel-id>/api-token/<token-id>
Authorization:...
応答フォーマット:
204 No Content
要求フォーマット:
POST/api/account/<account-id>/channel/<channel-id>/api-token
Authorization:...
Content-type:application/json
Content-length:...
{
"description":"...",
"can_read":true|false,
"can_write":true|false
}
応答フォーマット:
これは、トークン値を返すことになる唯一のAPIコールである。それが失われた場合は、トークンは削除されて、新たなトークンで置き換えられるべきである。
201 Created
Content-type:application/json
Content-length:...
{
"id":"...",
"token":"...",
"description":"...",
"can_read":true|false,
"can_write":true|false
}
1.6 チャネルAPIトークンを無効化:
要求フォーマット:
DELETE/api/account/<account-id>/channel/<channel-id>/api-token/<token-id>
Authorization:...
応答フォーマット:
204 No Content
ステップ908は、例えばトランザクションなどの特定のトピックに関して、他のエンティティ(図8に記載される実施形態では、このエンティティはマイナーである)から安全にクライアントのために受信される通知若しくは警告又は他の情報の提供を示している。従って、これは、特定のトランザクションに関係するコールバック通知と称され、これは、図8で述べたようにTxIDを有し得る。これは、それに関してチャネルが作成された所与のトランザクション又はトピックに関して例外が生じた場合の、状態の変化の通知、又は何らかの他の通知とすることができる。
通知はチャネルを介して受信されるので、クライアントは常にオンラインである必要はなく、通知は、クライアントがチャネルプロセッサと接続又は再接続(オンライン)されるときにいつでも、非同期に届けられることができる。一部のケースにおいて、クライアントが接続されたままである最短時間を課すことができる設定が提供されてもよく、あるいは、チャネル内の全ての‘未読’の警告又は通知がクライアントによって又はクライアントと関連付けられたウォレットによって消費されるまでクライアントが接続されたままであることを設定が保証してもよい。従って、一部の実施形態において、クライアントは、それによって通知がチャネルから消費又は受信されると、接続を断つことを許され得る。所与のクライアントに対して、トピック又はトランザクション当たり1つで、多数のこのようなチャネルが提供され得る。
一部の実施形態において、クライアントがチャネルプロセッサに接続されているか、すなわちオンラインであるか、否か、すなわちオフラインであるかを検出するための追加のステップが存在してもよい。これは、1つ以上の通知又はメッセージがチャネルにて到着するときに、クライアントとのネットワーク接続が存在することを確かめるための既知の技術によって行われ得る。
チャネルに置かれたクライアントに対するコールバック通知又はメッセージは、チャネル内のメッセージとクライアントに届けられるメッセージとの同期を確保するように、オンライン時にクライアントによって‘プル’される。
クライアントが接続されていない、又はオフラインである場合、チャネル通知が到着すると、オフラインである場合、それらは、チャネルプロセッサと関連付けられたメモリ又はキャッシュに格納される。これは、一部の実施形態において、所与のクライアントに対して固有とし得る。クライアントがオンラインになると、又はクライアントが接続されたことが検出されると、それらの通知は、クライアントエンティティにプッシュ又は提供される。クライアントにプッシュ通知を送信して、クライアントがチャネル内のデータ又は未読メッセージを取得できるようにし得る。従って、クライアントがオフラインであるとき、メッセージ又は通知はチャネルサービス又はチャネルプロセッサによって格納される。それらはその後に、クライアントがオンラインになると、クライアントに提供される。
任意のタイプのメッセージをチャネルで送ることができるが、別エンティティがクライアントのためにトランザクションをマイニングするマイナーである場合、殆どのケースで、マイナーとクライアントとの間の直接通信のシナリオは以下である:
1. トランザクションのステータスが更新又は変化するとき;
2. マイナーから情報のアドホック要求を受信して。
1. トランザクションのステータスが更新又は変化するとき;
2. マイナーから情報のアドホック要求を受信して。
1つめのシナリオでは、クライアントが、状態の変化若しくは例えばトランザクションの二重支払などの例外を知らされる必要がある、又はマイニングを確認する必要がある、又はトランザクションの有効性若しくは無効性などを確認する必要があるときに常に、コールバック通知が起こされる。
2つめのシナリオでは、クライアントが、周期的又は任意とし得るものである特定の時に、同じチャネルを用いて直接、マイナーからのステータス更新を要求することができる。
図10は、本開示の第4の態様の第3の実装に関するものであり、クライアントが、図9に記載したチャネルプロセッサによって実装されるチャネルサービスと関連付けられる。これは、図8のコールバック識別子が、チャネルサービスを用いてクライアントによって作成されるチャネルである実施形態に関する。この図の以下のステップは、クライアントによって実装される実施形態を示している。
ステップ1002にて、クライアントは、チャネルサービスに関する要求を準備し、それをチャネルサービス(チャネルプロセッサ)に送信する。準備された要求は、クライアントにより、ハイパーテキスト転送プロトコル(HTTP)又は同様の伝送プロトコルフォーマットを用いて送信され得る。一部の実施形態において、それは、HTTP又はREST APIとして実装されるチャネルプロセッサに送られ、応答も、HTTP伝送プロトコルフォーマットでクライアントに提供され得る。上述のように、チャネルプロセッサは、決済プロセッサと同一のエンティティであってもよいし、別個のエンティティであってもよい。
この実施形態における要求は、例えばマイナーなどの別エンティティとの直接通信のためのメカニズムを有効にする、可能にする、又は提供することができるチャネルの作成に関する。
ステップ1004にて、クライアントが別エンティティとの直接通信を確保するためのチャネルを作成することを可能にするために、チャネルプロセッサから、例えばチャネル又はメッセージ機能/APIなどの1つ以上の機能を受け取る。このチャネル機能及びメッセージ機能は、図9のステップ904に記載されており、チャネルプロセッサから受信される。メッセージAPI及びステップ906に見られるような要求に対するアクセストークンも、チャネルに対して受信される。
ステップ1006は、デジタル資産に関連するトランザクションを提出することの要求を決済プロセッサに送信することを示している。これは、クライアントのカスタマに関連する決済トランザクション又は同様のトランザクションとし得る。このステップは、図8のステップ802にも関連して上述したように、図2のステップ208と同様である。当該要求は、HTTPを介して決済プロセッサに関するAPIに送られ、また、POST要求とし得る。
ステップ1008にて、決済プロセッサからトランザクション識別子(TxID)が受信される。これは、図8のステップ810で説明したように、所与のマイナーからの応答に基づく。
ステップ1010にて、クライアントは、先行ステップでTxIDを決済プロセッサに送信したマイナーを特定する又は知る。これは、図8で上述したように、API若しくはロケーション若しくはMiner ID、及び/又はマイナーと関連付けられた評判に基づき得る。
ステップ1012にて、次いで、ステップ1004でチャネルプロセッサから受信したAPIを用いて、先行ステップ1010で特定されたマイナーとのチャネルを作成する。受信したアクセストークンを用いて、別エンティティを認証するとともに、チャネルと関連付けられた様々な機能へのアクセスを提供することができる。一部の実施形態において、チャネルを介した通信のために、メッセージAPI及びアクセストークンが別エンティティに送信され得る。一部の実施形態において、チャネルの作成に続いて、チャネルを介した通信を保護するためのキーを確立するために、クライアントとマイナーとの間でハンドシェイクプロトコルが行われ得る。これには、例えばノイズプロトコルフレームワーク又はLibsodium鍵交換メカニズムなどの、何らかの既知の方法が用いられ得る。
ステップ1014にて、チャネルを介してマイナーからの応答が受信される。これが可能であるのは、つまりはマイナーである別エンティティが、クライアントとの直接通信のために必要な全てのメッセージAPI及びアクセストークンを先行ステップで受け取っているからである。マイナーからの応答は、ステップ1008での特定のTxIDと関連付けられることになり、従って、該当チャネルでの通信はそのトランザクション識別子に固有のものとなる。メッセージは、そのTxIDに関連する任意の事項に関係することができる。例えば、そのTxIDが以前のトランザクションの二重支払であることをクライアントに知らせるための通知が、チャネルを介して送られ得る。これは、そのトランザクションが一時的メモリプールに既に存在している場合に当てはまり得る。そうでなく、トランザクションがブロックに含められると、メッセージは、トランザクションのマイニングのマークルプルーフと関連付けられ得る。
図11は、本開示の第4の態様の第4の実装に関するものであり、クライアントが、図9に記載したチャネルプロセッサによって実装されるチャネルサービスと関連付けられる。これは、図8のコールバック識別子が、チャネルサービスを用いてクライアントによって作成されるチャネルである実施形態に関する。この図の以下のステップは、マイナーによって実装される実施形態を示している。
ステップ1102にて、図8のステップ804に見られるように、マイナーにより、決済プロセッサから、トランザクションをマイニングすることの要求が受信される。
ステップ1104にて、マイナーはブロックチェーントランザクションを生成する。このステップは、図3のステップ310と同様であり、一部の実施形態において、提出されたトランザクションに対応する16進符号化されたロートランザクションが生成される。故に、当該マイナーによって作成された対応するブロックチェーントランザクションと関連付けられたトランザクション識別子(TxID)を含むものであるアウトプットスクリプト又はUTXOが提供される。そして、ブロックチェーントランザクションのアウトプットスクリプト(UTXO)は、即座に又は後の時点でマイニングするために、マイナーと関連付けられたメモリプールに追加され得る。
次いで、ステップ1106にて、対応するブロックチェーントランザクションのこのトランザクション識別子(TxID)は、クライアントがTxIDへのアクセスを有することができるとともにマイナーを特定し得るように、決済プロセッサを介してクライアントに送信される。
ステップ1110にて、クライアントが、チャネルサービスを用いて、マイナーとの直接通信のためのチャネルを作成すると、マイナーは、関連付けられたメッセージAPI及びアクセストークンと共に、クライアントからチャネルへのアクセスを受け取る。
ステップ1112にて、マイナーは、ステップ1102で提出されたトランザクションが以前のトランザクションの二重支払であるかをチェックする。上述のように、これは、当該マイナーと関連付けられた補助又は一時的メモリプールに同じトランザクションが存在するかをチェックすること、又はそれが既にブロックチェーンにマイニングされているかをチェックすることによって実施され得る。
それが当てはまる場合、マイナーは、二重支払通知又は警告を生成し、チャネルを用いてそれをクライアントに送信する。二重支払通知は、Miner IDを介して追跡され得るものである自身の評判を維持する動機を与えられるマイナーが、同じクライアント(すなわち、商人ウォレット)によって以前に支払われた例えばBSVなどのデジタル資産を支払おうとしていることをクライアントに通知するときに起こされる。
スキーマ例の一バージョンは、以下とし得る:
要求:
{
"txId":"tx_Id"
"callbackURL":"/api/v1/account/1/channel/<channel-id>",
"type":"doubleSpend"
}
応答:
{
"apiVersion":"0.1.1",
"timestamp":"2020-07-15T11:40:29.826Z",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"BlockHash":"
986544449afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0ccfnrhr",
"BlockHeight":207,
"callbackTxId":
"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"callbackReason":"doubleSpend"
}
要求:
{
"txId":"tx_Id"
"callbackURL":"/api/v1/account/1/channel/<channel-id>",
"type":"doubleSpend"
}
応答:
{
"apiVersion":"0.1.1",
"timestamp":"2020-07-15T11:40:29.826Z",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"BlockHash":"
986544449afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0ccfnrhr",
"BlockHeight":207,
"callbackTxId":
"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"callbackReason":"doubleSpend"
}
二重支払通知に関するスキーマ例の別の一バージョンを以下に与えておく:
要求:
POST/mapi/tx
body:whenContent-Typeisapplication/json:
{
"rawtx":"[transaction_hex_string]",
"callBackUrl":"https://your.service.callback/endpoint",
"callBackToken":"Authorization:<your_authorization_header>",
"merkleProof":false,
"dsCheck":true,
"callBackEncryption":<parameter>
}
応答:
{
"apiVersion":"0.1.2",
"timestamp":"2020-01-15T11:40:29.826Z",
"txid":"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"returnResult":"success",
"resultDescription":"",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"currentHighestBlockHash":
"71a7374389afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0c853facef01",
"currentHighestBlockHeight":207,
"txSecondMempoolExpiry":0,
"conflictedWith":""
}
要求:
POST/mapi/tx
body:whenContent-Typeisapplication/json:
{
"rawtx":"[transaction_hex_string]",
"callBackUrl":"https://your.service.callback/endpoint",
"callBackToken":"Authorization:<your_authorization_header>",
"merkleProof":false,
"dsCheck":true,
"callBackEncryption":<parameter>
}
応答:
{
"apiVersion":"0.1.2",
"timestamp":"2020-01-15T11:40:29.826Z",
"txid":"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"returnResult":"success",
"resultDescription":"",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"currentHighestBlockHash":
"71a7374389afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0c853facef01",
"currentHighestBlockHeight":207,
"txSecondMempoolExpiry":0,
"conflictedWith":""
}
ステップ1116にて、二重支払コールバック通知又は上に見られるような“callbackpayload”が、この実施形態ではマイナーがアクセスを受け取ったチャネルであるcallbackURLに送信される。チャネルは、API又はロケーション又は識別子によって特定され得る。当該通知は、メッセージAPI、及びマイナーがアクセスを提供されたチャネルと関連付けられたアクセストークンを用いてチャネルに追加される。
ステップ1102で提出されたトランザクションが二重支払でない場合、ステップ1118にて、マイナーは、マイニングのための既知の技術(それらのうち一部が本出願の背景技術欄で説明されている)を用いて、ブロックチェーンに関連するブロックにトランザクションをマイニングすることを進める。
次いで、ステップ1120にて、マイナーは、ブロックにトランザクションを含めたことの証明を生成する。一部の実施形態において、プルーフはマークルツリープルーフとし得る。これは、ツリーとして編成される既知の認証データ構造である。各データブロックのハッシュが、ベース層又はリーフ上のノードに格納され、ツリー又はブランチの全ての内部ノードが、それの2つの子/兄弟ノードのハッシュから計算された暗号ハッシュを含む。ツリーの最上部のノードであるマークルルートが、それからツリーが構築されたデータセットを一意に特定する。従って、マークルツリーは効率的なプルーフ・オブ・インクルージョンを可能にし、マイナー又は証明者ノードが、提出者又は検証者ノードに、それらに監査パスを有する証明を送ることによって、あるデータブロックが認証データセットの一部であることを示す。監査パスは、提出者がデータセット全体を明らかにする必要なくマークルルートを再計算するのに必要なノードハッシュを含む。ビットコインSVでは、ブロックに含まれるトランザクションはマークルツリーに格納される。
スキーマ例は以下とし得る:
要求:
{
"txId":"tx_Id"
"callbackURL":"/api/v1/account/1/channel/<channel-id>",
"type":"merkleproof"
}
応答:
{
"apiVersion":"0.1.1",
"timestamp":"2020-07-15T11:40:29.826Z",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"BlockHash":
"986544449afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0ccfnrhr",
"BlockHeight":207,
"callbackTxId":
"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"callbackReason":""
}
要求:
{
"txId":"tx_Id"
"callbackURL":"/api/v1/account/1/channel/<channel-id>",
"type":"merkleproof"
}
応答:
{
"apiVersion":"0.1.1",
"timestamp":"2020-07-15T11:40:29.826Z",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"BlockHash":
"986544449afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0ccfnrhr",
"BlockHeight":207,
"callbackTxId":
"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"callbackReason":""
}
マークルプルーフ通知に関するスキーマ例の別の一バージョンを以下に与えておく:
要求:
POST/mapi/tx
body:whenContent-Typeisapplication/json:
{
"rawtx":"[transaction_hex_string]",
"callBackUrl":"https://your.service.callback/endpoint",
"callBackToken":"Authorization:<your_authorization_header>",
"merkleProof":true,
"dsCheck":false,
"callBackEncryption":<parameter>
}
応答:
{
"apiVersion":"0.1.2",
"timestamp":"2020-01-15T11:40:29.826Z",
"txid":
"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"returnResult":"success",
"resultDescription":"",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"currentHighestBlockHash":
"71a7374389afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0c853facef01",
"currentHighestBlockHeight":207,
"txSecondMempoolExpiry":0,
"conflictedWith":""
}
要求:
POST/mapi/tx
body:whenContent-Typeisapplication/json:
{
"rawtx":"[transaction_hex_string]",
"callBackUrl":"https://your.service.callback/endpoint",
"callBackToken":"Authorization:<your_authorization_header>",
"merkleProof":true,
"dsCheck":false,
"callBackEncryption":<parameter>
}
応答:
{
"apiVersion":"0.1.2",
"timestamp":"2020-01-15T11:40:29.826Z",
"txid":
"6bdbcfab0526d30e8d68279f79dff61fb4026ace8b7b32789af016336e54f2f0",
"returnResult":"success",
"resultDescription":"",
"minerId":
"03fcfcfcd0841b0a6ed2057fa8ed404788de47ceb3390c53e79c4ecd1e05819031",
"currentHighestBlockHash":
"71a7374389afaec80fcabbbf08dcd82d392cf68c9a13fe29da1a0c853facef01",
"currentHighestBlockHeight":207,
"txSecondMempoolExpiry":0,
"conflictedWith":""
}
ステップ1122にて、マイナーは、ブロックチェーンにトランザクションを含めたことのプルーフ・オブ・インクルージョン証明を、自身がアクセスを有する上記チャネルを用いて直接クライアントに送信する。従って、クライアント又は決済プロセッサが、上記トランザクションを見つけるためにブロックチェーンのコピーを走らせたりブロックチェーンを検索したりする必要はない。
次に図12を参照するに、本開示の少なくとも1つの実施形態を実施するのに使用され得るコンピューティング装置2600の例示的で簡略化したブロック図が提供されている。様々な実施形態において、コンピューティング装置2600は、上で例示及び説明したシステムのうちのいずれかを実装するのに使用され得る。例えば、コンピューティング装置2600は、図のDBMSの1つ以上のコンポーネントとして使用されるように構成されてもよく、あるいは、コンピューティング装置2600は、所与のユーザに関連付けられたクライアントエンティティであって、図12のDBMSによって管理されるデータベースに対してデータベース要求を行うクライアントエンティティであるように構成されてもよい。故に、コンピューティング装置2600は、ポータブルコンピューティング装置、パーソナルコンピュータ、又は任意の電子コンピューティング装置とし得る。図12に示すように、コンピューティング装置2600は、1つ以上のレベルのキャッシュメモリと、メインメモリ2608及び永続的ストレージ2610を含むストレージサブシステム2606と通信するように構成されることができるメモリコントローラと、を備えた1つ以上のプロセッサ(集合的にラベル2602を付す)を含み得る。メインメモリ2608は、図示のように、ダイナミックランダムアクセスメモリ(DRAM)2618及び読み出し専用メモリ(ROM)2620を含むことができる。ストレージサブシステム2606及びキャッシュメモリ2602は、例えば本開示に記載されるようなトランザクション及びブロックに関連する詳細などの情報の記憶のために使用され得る。(1つ以上の)プロセッサ2602は、本開示に記載されるいずれかの実施形態のステップ又は機能を提供するために使用され得る。
(1つ以上の)プロセッサ2602はまた、1つ以上のユーザインタフェース入力装置2612、1つ以上のユーザインタフェース出力装置2614、及びネットワークインタフェースサブシステム2616と通信することができる。
バスサブシステム2604が、コンピューティング装置2600の様々なコンポーネント及びサブシステムが意図通りに相互に通信することを可能にするメカニズムを提供し得る。バスサブシステム2604は単一のバスとして概略的に示されているが、バスサブシステムの他の実施形態は複数のバスを利用してもよい。
ネットワークインタフェースサブシステム2616は、他のコンピューティング装置及びネットワークへのインタフェースを提供し得る。ネットワークインタフェースサブシステム2616は、コンピューティング装置2600とは別の他のシステムからデータを受信するため及びそれにデータを送信するためのインタフェースとして機能し得る。例えば、ネットワークインタフェースサブシステム2616は、データ技術者が例えばデータセンターなどの遠隔位置にいながら装置にデータを送信すること及び装置からデータを受信することができるように、データ技術者が装置をネットワークに接続することを可能にし得る。
ユーザインタフェース入力装置2612は、例えばキーボードなどの1つ以上のユーザ入力装置;例えば統合マウス、トラックボール、タッチパッド、又はグラフィックスタブレットなどのポインティング装置;スキャナ;バーコードスキャナ;ディスプレイに組み込まれたタッチスクリーン;例えば音声認識システム、マイクロフォンなどの音声入力装置;及び他のタイプの入力装置を含み得る。一般に、用語“入力装置”の使用は、情報をコンピューティング装置2600に入力するためのあらゆる可能なタイプの装置及び機構を含むことを意図する。
1つ以上のユーザインタフェース出力装置2614は、ディスプレイサブシステム、プリンタ、又は例えば音声出力装置などの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、例えば液晶ディスプレイなどのフラットパネル装置、発光ダイオード(LED)ディスプレイ、又はプロジェクション若しくは他の表示装置とし得る。一般に、用語“出力装置”の使用は、コンピューティング装置2600から情報を出力するためのあらゆる可能なタイプの装置及び機構を含むことを意図する。1つ以上のユーザインタフェース出力装置2614は、例えば、そのようなインタラクションが適切であり得るときに、説明されたプロセス及びそれにおけるバリエーションを実行するアプリケーションとのユーザインタラクションを容易にするためのユーザインタフェースを提示するために使用され得る。
ストレージサブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供し得る基本プログラミング及びデータ構成体を記憶するためのコンピュータ読み取り可能記憶媒体を提供し得る。アプリケーション(プログラム、コードモジュール、命令)が、1つ以上のプロセッサによって実行されるときに本開示の1つ以上の実施形態の機能を提供し得るとともに、ストレージサブシステム2606に記憶され得る。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ2602によって実行され得る。ストレージサブシステム2606は更に、本開示に従って使用されるデータを格納するためのリポジトリを提供してもよい。例えば、メインメモリ2608及びキャッシュメモリ2602は、プログラム及びデータの揮発性ストレージを提供することができる。永続的ストレージ2610は、プログラム及びデータのための永続的(不揮発性)ストレージを提供することができ、フラッシュメモリ、1つ以上のソリッドステートドライブ、1つ以上の磁気ハードディスクドライブ、関連するリムーバブルメディアを備えた1つ以上のフロッピー(登録商標)ディスクドライブ、関連するリムーバブルメディアを備えた1つ以上の光学ドライブ(例えば、CD-ROM又はDVD又はBlue-Ray(登録商標))ドライブ、並びに他の同様の記憶媒体を含み得る。このようなプログラム及びデータは、本開示に記載される1つ以上の実施形態のステップを実行するためのプログラム、並びに本開示に記載されるようなトランザクション及びブロックに関連するデータを含むことができる。
コンピューティング装置2600は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は以下に記載される任意の他の装置を含め、様々なタイプのものとし得る。加えて、コンピューティング装置2600は、1つ以上のポート(例えば、USB、ヘッドフォンジャック、ライティングコネクタなど)を介してコンピューティング装置2600に接続され得る別の装置を含んでいてもよい。コンピューティング装置2600に接続され得る装置は、光ファイバコネクタを受け入れるように構成された複数のポートを含んでいてもよい。従って、この装置は、光信号を、処理のために、当該装置をコンピューティング装置2600に接続するポートを介して伝送され得る電気信号へと変換するように構成され得る。コンピュータ及びネットワークの絶えず変化する性質のため、図12に示すコンピューティング装置2600の説明は、装置の好適実施形態を例示する目的での単なる一具体例を意図している。図12に示したシステムよりも多数又は少数のコンポーネントを持つ数多くの他の構成が可能である。
実施形態例の列挙
ここに、本開示を、上の態様に関係する以下の項に基づいて説明するが、これらは、特許請求される態様及び実施形態をよりよく説明し、記述し、及び理解するための例示的な実施形態としてここに提供されるものである。
ここに、本開示を、上の態様に関係する以下の項に基づいて説明するが、これらは、特許請求される態様及び実施形態をよりよく説明し、記述し、及び理解するための例示的な実施形態としてここに提供されるものである。
項1. ブロックチェーンに関連付けられるトランザクションに関して1つ以上のクライアントに決済サービスを提供するコンピュータ実装された方法であって、当該方法は、決済プロセッサによって実行され、当該方法は、
1つ以上のクライアントの中の所与のクライアントからの要求を受信するステップであり、該要求は、デジタル資産に関連するトランザクションをブロックチェーンに提出するためのものであり、該要求は、前記所与のクライアントと前記トランザクションに関する別のエンティティとの間での直接通信を可能にするためのコールバック識別子と関連付けられる、ステップと、
前記トランザクションを前記ブロックチェーンに含めるために、複数のマイナーの中の所与のマイナーに、前記要求と関連付けられた前記トランザクションを提出するステップと、
前記クライアントに対して前記所与のマイナーを特定するステップと、
前記マイナーに前記コールバック識別子を提供するステップと、
を有し、
前記要求に対応するブロックチェーントランザクションに関する応答を前記所与のマイナーから受信したことに応答して、当該方法は更に、
前記マイナーによって提供された前記対応するブロックチェーントランザクションに関する少なくとも1つのコールバック通知を、前記クライアントのために有効化又は処理するステップであり、該コールバック通知は、前記要求と関連付けられた前記コールバック識別子に基づく、ステップ、
を含む、方法。
1つ以上のクライアントの中の所与のクライアントからの要求を受信するステップであり、該要求は、デジタル資産に関連するトランザクションをブロックチェーンに提出するためのものであり、該要求は、前記所与のクライアントと前記トランザクションに関する別のエンティティとの間での直接通信を可能にするためのコールバック識別子と関連付けられる、ステップと、
前記トランザクションを前記ブロックチェーンに含めるために、複数のマイナーの中の所与のマイナーに、前記要求と関連付けられた前記トランザクションを提出するステップと、
前記クライアントに対して前記所与のマイナーを特定するステップと、
前記マイナーに前記コールバック識別子を提供するステップと、
を有し、
前記要求に対応するブロックチェーントランザクションに関する応答を前記所与のマイナーから受信したことに応答して、当該方法は更に、
前記マイナーによって提供された前記対応するブロックチェーントランザクションに関する少なくとも1つのコールバック通知を、前記クライアントのために有効化又は処理するステップであり、該コールバック通知は、前記要求と関連付けられた前記コールバック識別子に基づく、ステップ、
を含む、方法。
項2. 前記マイナーからの前記受信した応答はトランザクション識別子(TxID)と関連付けられ、当該方法は更に、前記対応するブロックチェーントランザクションのトランザクション識別子(TxID)を前記クライアントに送信するステップを含む、項1に記載の方法。
項3. 前記受信した応答は、前記ブロックチェーントランザクションに関連するアウトプットスクリプトであり、該アウトプットスクリプトは、前記マイナーのためのメモリプールに関連付けられた未使用トランザクションアウトプット(UTXO)であり、該UTXOは、前記ブロックチェーントランザクションの前記トランザクション識別子(TxID)を含む、項1又は2に記載の方法。
項4. 当該決済プロセッサは、前記1つ以上のクライアントに対するREST(Representational State Transfer)エンドポイントとして実装され、当該方法は更に、
ハイパーテキスト転送プロトコルセキュア(HTTPS)伝送プロトコルフォーマットを用いて前記クライアントから前記要求を受信するステップと、
前記要求をリモートプロシージャコール(RPC)フォーマットに変換し、該RPCを前記マイナーに送信するステップと、
前記マイナーから、対応するブロックチェーントランザクションに関連する応答をRPCフォーマットで受信するステップと、
前記応答を、HTTPS伝送プロトコルを用いて前記クライアントに送信するために変換するステップと、
を実行するためのアプリケーションプログラミングインタフェース(API)ゲートウェイを、当該決済プロセッサに付随して設けるステップ、を有する、項1乃至3のいずれか一項に記載の方法。
ハイパーテキスト転送プロトコルセキュア(HTTPS)伝送プロトコルフォーマットを用いて前記クライアントから前記要求を受信するステップと、
前記要求をリモートプロシージャコール(RPC)フォーマットに変換し、該RPCを前記マイナーに送信するステップと、
前記マイナーから、対応するブロックチェーントランザクションに関連する応答をRPCフォーマットで受信するステップと、
前記応答を、HTTPS伝送プロトコルを用いて前記クライアントに送信するために変換するステップと、
を実行するためのアプリケーションプログラミングインタフェース(API)ゲートウェイを、当該決済プロセッサに付随して設けるステップ、を有する、項1乃至3のいずれか一項に記載の方法。
項5. 前記所与のマイナーの身元を検証するステップを有し、該検証は、前記所与のマイナーと関連付けられたデジタル署名に基づき又は前記所与のマイナーに関する識別子に基づき、該識別子は、オプションで、前記所与のマイナーについての評判インジケータと関連付けられる、項1乃至4のいずれか一項に記載の方法。
項6. 前記コールバック通知は、前記所与のクライアントによって提出された前記トランザクションの二重支払の通知に関係する、又は前記コールバック通知は、前記所与のクライアントによって提出された前記トランザクションの、前記ブロックチェーンに含まれることの証明に関係する、項1乃至5のいずれか一項に記載の方法。
項7. 前記コールバック識別子は、前記クライアントと関連付けられたチャネルの位置である、又は前記コールバック識別子は、前記クライアントのユニバーサルリソース識別子(URI)である、項1乃至6のいずれか一項に記載の方法。
項8. 当該方法は更に、前記所与のマイナーに前記チャネルへのアクセスを提供するステップを有し、該提供するステップは、前記要求と関連付けられた前記チャネルのチャネル識別子又はロケーションと、前記チャネルと関連付けられた1つ以上のアクセストークンとを、前記マイナーに提供することを含む、項1乃至7のいずれか一項に記載の方法。
項9. 1つ以上のクライアントのためのチャネルサービスを実装するコンピュータ実装された方法であって、当該方法は、チャネルプロセッサによって実行され、当該方法は、
1つ以上のクライアントの中の所与のクライアントからの要求を受信するステップであり、該要求は、チャネルの作成に関するものである、ステップと、
前記所与のクライアントに、前記チャネルを介した前記所与のクライアントと別エンティティとの間の直接通信を可能にする1つ以上の機能へのアクセスを提供するステップであり、前記1つ以上の機能は、
データの伝送のための前記チャネルに関するチャネル機能又はプロシージャ、及び/又は
前記チャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャ、
を含む、ステップと、
前記チャネル用の1つ以上のアクセストークンを発行するステップであり、該1つ以上のアクセストークンは、前記チャネルを介した別エンティティとのセキュア通信向けに構成される、ステップと、
前記所与のクライアントのために、前記チャネルと関連付けられた1つ以上の通知を格納及び/又は提供するステップと、
を有する、方法。
1つ以上のクライアントの中の所与のクライアントからの要求を受信するステップであり、該要求は、チャネルの作成に関するものである、ステップと、
前記所与のクライアントに、前記チャネルを介した前記所与のクライアントと別エンティティとの間の直接通信を可能にする1つ以上の機能へのアクセスを提供するステップであり、前記1つ以上の機能は、
データの伝送のための前記チャネルに関するチャネル機能又はプロシージャ、及び/又は
前記チャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャ、
を含む、ステップと、
前記チャネル用の1つ以上のアクセストークンを発行するステップであり、該1つ以上のアクセストークンは、前記チャネルを介した別エンティティとのセキュア通信向けに構成される、ステップと、
前記所与のクライアントのために、前記チャネルと関連付けられた1つ以上の通知を格納及び/又は提供するステップと、
を有する、方法。
項10. 前記1つ以上の機能は、前記所与のクライアントに対して発行される又は提供されるアプリケーションプログラミングインタフェース(API)であり、該APIは、前記チャネルのためのチャネルAPIと、前記チャネルに関連するデータのためのメッセージAPIとを含み、前記アクセストークンは、前記チャネル又は所与のメッセージに固有のAPIトークンである、項9に記載の方法。
項11. 1つ以上の機能へのアクセスを提供する前記ステップは、1つ以上のチャネルの作成及び/又は管理を可能にするための、JavaScript(登録商標)オブジェクト表記(JSON)・オーバ・ハイパーテキスト転送プロトコル(HTTP)APIの提供を含む、項9又は10に記載の方法。
項12. 前記チャネルと関連付けられた前記1つ以上の通知は、前記チャネルを介して前記所与のクライアントと直接通信する前記別エンティティであるマイナーからのコールバック通知である、項9乃至11のいずれか一項に記載の方法。
項13. 前記コールバック通知は、前記所与のクライアントによって提出されたトランザクションの二重支払の通知に関する、項12に記載の方法。
項14. 前記コールバック通知は、前記マイナーによって提供される前記チャネルでのリターンペイロードに付随し、該リターンペイロードは、以下のデータ、すなわち、
- 二重支払されたブロックチェーントランザクションのトランザクション識別子(TxID)と、オプションで、
- 前記ブロックチェーントランザクションを提出した決済プロセッサに関するサービスエンドポイントと、
を含む、項13に記載の方法。
- 二重支払されたブロックチェーントランザクションのトランザクション識別子(TxID)と、オプションで、
- 前記ブロックチェーントランザクションを提出した決済プロセッサに関するサービスエンドポイントと、
を含む、項13に記載の方法。
項15. 前記コールバック通知は、前記所与のクライアントによって提出されたトランザクションを前記ブロックチェーンに含めたことの証明に関する、項12に記載の方法。
項16. 前記コールバック通知は、前記マイナーによって提供される前記チャネルでのリターンマークルプルーフに付随し、該リターンマークルプルーフは、以下のデータ、すなわち、
- 該マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- 前記ブロックチェーントランザクションが含まれるブロックのブロックヘッダと、
- 前記トランザクション識別子(TxID)に関するシブリングハッシュの配列と、
を含む、項15に記載の方法。
- 該マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- 前記ブロックチェーントランザクションが含まれるブロックのブロックヘッダと、
- 前記トランザクション識別子(TxID)に関するシブリングハッシュの配列と、
を含む、項15に記載の方法。
項17. 前記クライアントがオフラインである又は当該チャネルプロセッサに通信可能に接続されていないとき、前記1つ以上のコールバック通知は、前記チャネルでの、前記所与のクライアントのためにキューに入れられる又は格納されるデータのプッシュ通知である、項9乃至16のいずれか一項に記載の方法。
項18. 前記クライアントがオンラインである又は当該チャネルプロセッサに通信可能に接続されているとき、前記1つ以上のコールバック通知に関連するデータは前記チャネルから提供される又はプルされる、項9乃至17のいずれか一項に記載の方法。
項19. 当該チャネルプロセッサは決済プロセッサであり又は決済プロセッサを含み、当該方法は、該決済プロセッサによって実行される項1乃至8のいずれか一項に記載の方法を含む、項9乃至18のいずれか一項に記載の方法。
項20. ブロックチェーンに関連付けられるトランザクションを処理するコンピュータ実装された方法であって、当該方法は、クライアントと関連付けられた1つ以上のプロセッサによって実行され、当該方法は、
チャネルプロセッサによって実行されるチャネルサービスに関するチャネル要求を送信するステップであり、該要求は、別エンティティとの通信用のチャネルの作成に関係する、ステップと、
前記チャネルサービスから、所与のクライアントと前記別エンティティとの間での直接通信を可能にする1つ以上の機能へのアクセスを得るステップであり、該1つ以上の機能は、
データの伝送のためのチャネルに関するチャネル機能又はプロシージャ、及び/又は
チャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャ、
を含む、ステップと、
前記チャネルサービスから、前記別エンティティとのセキュア通信を可能にする1つ以上のアクセストークンを取得するステップと、
決済サービスを実行する決済プロセッサに、デジタル資産に関連するトランザクションを前記ブロックチェーンに提出することの要求を送信するステップと、
前記決済プロセッサから、前記提出したトランザクションに対応するブロックチェーントランザクションのトランザクション識別子(TxID)を取得するステップと、
前記決済プロセッサからの応答に基づいて、前記対応するブロックチェーントランザクションと関連付けられたマイナーを特定するステップと、
前記チャネルプロセッサから受け取った1つ以上のチャネル機能を用いて、前記特定したマイナーとの通信のために所与のチャネルを作成するステップと、
前記所与のチャネルと関連付けられた前記1つ以上のアクセストークンを前記マイナーに送信するステップと、
前記所与のチャネルと関連付けられた少なくとも1つのコールバック通知を受信するステップであり、該通知は、ブロックチェーントランザクションに関連した、前記マイナーによって提供される前記所与のチャネルでのデータに関係する、ステップと、
を有する、方法。
チャネルプロセッサによって実行されるチャネルサービスに関するチャネル要求を送信するステップであり、該要求は、別エンティティとの通信用のチャネルの作成に関係する、ステップと、
前記チャネルサービスから、所与のクライアントと前記別エンティティとの間での直接通信を可能にする1つ以上の機能へのアクセスを得るステップであり、該1つ以上の機能は、
データの伝送のためのチャネルに関するチャネル機能又はプロシージャ、及び/又は
チャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャ、
を含む、ステップと、
前記チャネルサービスから、前記別エンティティとのセキュア通信を可能にする1つ以上のアクセストークンを取得するステップと、
決済サービスを実行する決済プロセッサに、デジタル資産に関連するトランザクションを前記ブロックチェーンに提出することの要求を送信するステップと、
前記決済プロセッサから、前記提出したトランザクションに対応するブロックチェーントランザクションのトランザクション識別子(TxID)を取得するステップと、
前記決済プロセッサからの応答に基づいて、前記対応するブロックチェーントランザクションと関連付けられたマイナーを特定するステップと、
前記チャネルプロセッサから受け取った1つ以上のチャネル機能を用いて、前記特定したマイナーとの通信のために所与のチャネルを作成するステップと、
前記所与のチャネルと関連付けられた前記1つ以上のアクセストークンを前記マイナーに送信するステップと、
前記所与のチャネルと関連付けられた少なくとも1つのコールバック通知を受信するステップであり、該通知は、ブロックチェーントランザクションに関連した、前記マイナーによって提供される前記所与のチャネルでのデータに関係する、ステップと、
を有する、方法。
項21. 前記クライアントがオフラインである又は前記チャネルプロセッサに通信可能に接続されていないとき、前記コールバック通知は、前記所与のチャネルでの、キューに入れられるデータ又はメッセージのプッシュ通知として取得される、項20に記載の方法。
項22. 前記クライアントがオンラインである又は前記チャネルプロセッサに通信可能に接続されているとき、前記コールバック通知に関連するデータは前記所与のチャネルからプルされる、項20又は21に記載の方法。
項23. 前記1つ以上の機能は、所与のクライアントのためのアプリケーションプログラミングインタフェース(API)であり、該APIは、1つ以上のチャネルの作成及び/又は管理を可能にするためのチャネルAPIと、前記所与のクライアント及び1つ以上の別エンティティがメッセージを交換する、及び/又は前記所与のチャネルからデータを読み出す、及び/又は前記所与のチャネルにデータを書き込むことを可能にするためのメッセージAPIとを含み、前記アクセストークンは、所与のチャネル又は所与のメッセージに固有のAPIトークンである、項20乃至22のいずれか一項に記載の方法。
項24. 前記チャネル要求は、前記チャネルプロセッサへのハイパーテキスト転送プロトコルセキュア(HTTPS)伝送GET要求であり、前記決済プロセッサへの前記要求は、前記決済プロセッサへのハイパーテキスト転送プロトコルセキュア(HTTPS)伝送POST要求である、項20乃至23のいずれか一項に記載の方法。
項25. 当該方法は更に、
クライアントエンドポイントを提供するステップと、
前記クライアントと関連付けられた少なくとも1つのクライアントアドレッシングキーを提供するステップと、
マイナーエンドポイントを取得するステップと、
前記マイナーと関連付けられた少なくとも1つのマイナーアドレッシングキーを取得するステップと、
前記クライアントアドレッシングキー及び前記マイナーアドレッシングキーに基づいて、前記所与のチャネルを用いて1つ以上のハンドシェイクメッセージを交換するステップと、
ハンドシェイク結果又はパターンに基づいて共有秘密鍵を取得するステップと、
を有し、
前記所与のチャネルを用いた如何なる通信も、前記共有秘密鍵に基づいて暗号化される、
項20乃至24のいずれか一項に記載の方法。
クライアントエンドポイントを提供するステップと、
前記クライアントと関連付けられた少なくとも1つのクライアントアドレッシングキーを提供するステップと、
マイナーエンドポイントを取得するステップと、
前記マイナーと関連付けられた少なくとも1つのマイナーアドレッシングキーを取得するステップと、
前記クライアントアドレッシングキー及び前記マイナーアドレッシングキーに基づいて、前記所与のチャネルを用いて1つ以上のハンドシェイクメッセージを交換するステップと、
ハンドシェイク結果又はパターンに基づいて共有秘密鍵を取得するステップと、
を有し、
前記所与のチャネルを用いた如何なる通信も、前記共有秘密鍵に基づいて暗号化される、
項20乃至24のいずれか一項に記載の方法。
項26. 前記クライアントエンドポイントは、ハイパーテキスト転送プロトコル(HTTP)アプリケーションプログラミングインタフェース(API)エンドポイントであり、前記クライアントエンドポイントは、HTTPセキュア(HTTPS)を用いて配信される、項25に記載の方法。
項27. 前記クライアントエンドポイントは、前記所与のチャネルを用いて送信される前記所与のクライアントからのメッセージに含まれるユニバーサルリソースロケーション(URL)である、項25に記載の方法。
項28. 前記クライアントエンドポイントは、前記クライアントと関連付けられた別名であり、該別名は、前記クライアントに固有であって、別名ベースのアドレッシングサービスによって提供され、該アドレッシングサービスは、定められた又は周知のロケーションからアクセス可能な機械読み取り可能リソースを有し、該機械読み取り可能リソースは、前記クライアントに関連する1つ以上の機能を含み、前記別名は、認証のための非対称暗号キーペアと関連付けられる、項25乃至27のいずれか一項に記載の方法。
項29. ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法であって、当該方法は、複数のマイナーの中のあるマイナーに関連付けられた1つ以上のプロセッサによって実行され、前記複数のマイナーは、所与のクライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合され、当該方法は、
前記決済プロセッサから、前記ブロックチェーンへのトランザクションの提出の要求を受信するステップと、
前記要求に対応するブロックチェーントランザクションを生成するステップと、
前記ブロックチェーントランザクションに関連するアウトプットスクリプト(UTXO)を前記決済プロセッサに送信するステップであり、該アウトプットスクリプトは、前記対応するブロックチェーントランザクションと関連付けられたトランザクション識別子(TxID)を含む、ステップと、
前記所与のクライアントとの直接通信を可能にするチャネルへのアクセスを受けるステップと、
前記チャネルと関連付けられたアクセストークンに基づいて、前記チャネルでのコールバック通知に関連するデータを提供する又は書き込むためのメッセージ機能又はメッセージAPIを取得するステップであり、該データは、前記対応するブロックチェーントランザクションに関する、ステップと、
を有する、方法。
前記決済プロセッサから、前記ブロックチェーンへのトランザクションの提出の要求を受信するステップと、
前記要求に対応するブロックチェーントランザクションを生成するステップと、
前記ブロックチェーントランザクションに関連するアウトプットスクリプト(UTXO)を前記決済プロセッサに送信するステップであり、該アウトプットスクリプトは、前記対応するブロックチェーントランザクションと関連付けられたトランザクション識別子(TxID)を含む、ステップと、
前記所与のクライアントとの直接通信を可能にするチャネルへのアクセスを受けるステップと、
前記チャネルと関連付けられたアクセストークンに基づいて、前記チャネルでのコールバック通知に関連するデータを提供する又は書き込むためのメッセージ機能又はメッセージAPIを取得するステップであり、該データは、前記対応するブロックチェーントランザクションに関する、ステップと、
を有する、方法。
項30. 前記対応するブロックチェーントランザクションが、前記クライアントによって提出された以前のトランザクションの二重支払であるという決定に基づいて、当該方法は更に、リターンペイロードを提供するステップを含み、該リターンペイロードは、以下のデータ、すなわち、
- 二重支払である所与のブロックチェーントランザクションのトランザクション識別子(TxID)と、オプションで、
- 前記所与のブロックチェーントランザクションを提出した前記決済プロセッサのサービスエンドポイントと、
を含む、項29に記載の方法。
- 二重支払である所与のブロックチェーントランザクションのトランザクション識別子(TxID)と、オプションで、
- 前記所与のブロックチェーントランザクションを提出した前記決済プロセッサのサービスエンドポイントと、
を含む、項29に記載の方法。
項31. 前記対応するブロックチェーントランザクションをブロックにマイニングしたことに応答して、当該方法は更に、前記トランザクションをブロックに含めたことを裏付けるリターンマークルプルーフを提供するステップを含み、該リターンマークルプルーフは、以下のデータ、すなわち、
- 前記マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- 前記ブロックのブロックヘッダと、
- 前記トランザクション識別子のシブリングハッシュの配列と、
を含む、項29に記載の方法。
- 前記マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- 前記ブロックのブロックヘッダと、
- 前記トランザクション識別子のシブリングハッシュの配列と、
を含む、項29に記載の方法。
項32. 当該方法は更に、
クライアントエンドポイントを取得するステップと、
前記クライアントと関連付けられた少なくとも1つのクライアントアドレッシングキーを取得するステップと、
マイナーエンドポイントを提供するステップと、
決済プロセッサと関連付けられた少なくとも1つのマイナーアドレッシングキーを提供するステップと、
前記クライアントアドレッシングキー及び前記マイナーアドレッシングキーに基づいて、前記チャネルを用いて1つ以上のハンドシェイクメッセージを交換するステップと、
ハンドシェイク結果又はパターンに基づいて共有秘密鍵を取得するステップと、
を有し、
前記チャネルを用いた如何なる通信も、前記共有秘密鍵に基づいて暗号化される、
項29乃至31のいずれか一項に記載の方法。
クライアントエンドポイントを取得するステップと、
前記クライアントと関連付けられた少なくとも1つのクライアントアドレッシングキーを取得するステップと、
マイナーエンドポイントを提供するステップと、
決済プロセッサと関連付けられた少なくとも1つのマイナーアドレッシングキーを提供するステップと、
前記クライアントアドレッシングキー及び前記マイナーアドレッシングキーに基づいて、前記チャネルを用いて1つ以上のハンドシェイクメッセージを交換するステップと、
ハンドシェイク結果又はパターンに基づいて共有秘密鍵を取得するステップと、
を有し、
前記チャネルを用いた如何なる通信も、前記共有秘密鍵に基づいて暗号化される、
項29乃至31のいずれか一項に記載の方法。
項33. プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に項1乃至8のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置は決済プロセッサに係る、コンピューティング装置。
項34. プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に項9乃至19のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はチャネルプロセッサに係る、コンピューティング装置。
項35. プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に項20乃至28のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はクライアントに係る、コンピューティング装置。
項36. プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に項29乃至32のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はマイナーに係る、コンピューティング装置。
項37. 無線通信ネットワークを介して少なくとも1つのクライアント及び少なくとも1つのマイナーに通信可能に結合された決済プロセッサであり、当該決済プロセッサは、項33に記載のコンピューティング装置に従って実装される、決済プロセッサと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合され、且つ少なくとも1つのカスタマと通信可能であるクライアントであり、当該クライアントは、項35に記載のコンピューティング装置に従って実装され、当該クライアントは、前記無線通信ネットワークを介して、項34に記載のコンピューティング装置に従って実装されるチャネルプロセッサに通信可能に結合される、クライアントと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合される複数のマイナーであり、各マイナーが、項36に記載のコンピューティング装置に従って実装される、複数のマイナーと、
を有するコンピュータシステム。
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合され、且つ少なくとも1つのカスタマと通信可能であるクライアントであり、当該クライアントは、項35に記載のコンピューティング装置に従って実装され、当該クライアントは、前記無線通信ネットワークを介して、項34に記載のコンピューティング装置に従って実装されるチャネルプロセッサに通信可能に結合される、クライアントと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合される複数のマイナーであり、各マイナーが、項36に記載のコンピューティング装置に従って実装される、複数のマイナーと、
を有するコンピュータシステム。
項38. 実行可能命令を格納したコンピュータ読み取り可能記憶媒体であって、前記実行可能命令は、コンピュータのプロセッサによって実行される結果として、前記コンピュータに項1乃至32のいずれか一項に記載の方法を実行させる、コンピュータ読み取り可能記憶媒体。
なお、上述の態様及び実施形態は、本開示を限定するものではなく、例示するものであり、当業者は、添付の請求項によって規定される本開示の範囲から逸脱することなく、数多くの代わりの実施形態を設計することができる。請求項において、括弧内に置かれた如何なる符号も、請求項を限定するものと解釈されるべきでない。用語“有している”及び“有する”並びにこれらに類するものは、いずれかの請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外するものではない。本明細書において、“有する”は“含む又はからなる”を意味し、“有している”は“含んでいる又はからなっている”を意味する。単数形での要素の参照は、それらの要素の複数形での参照を除外するものではなく、その逆もまた然りである。本開示は、幾つかの別個の要素を有するハードウェアによって、また、適切にプログラムされたコンピュータによって実装され得る。幾つかの手段を列挙するデバイスクレームにおいて、それらの手段のうちの幾つかが、同一のハードウェアアイテムによって具現化されてもよい。特定の複数の手段が相互に異なる従属請求項に記載されているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないということを指し示すものではない。
Claims (38)
- ブロックチェーンに関連付けられるトランザクションに関して1つ以上のクライアントに決済サービスを提供するコンピュータ実装された方法であって、当該方法は、決済プロセッサによって実行され、当該方法は、
1つ以上のクライアントの中の所与のクライアントからの要求を受信するステップであり、該要求は、デジタル資産に関連するトランザクションをブロックチェーンに提出するためのものであり、該要求は、前記所与のクライアントと前記トランザクションに関する別のエンティティとの間での直接通信を可能にするためのコールバック識別子と関連付けられる、ステップと、
前記トランザクションを前記ブロックチェーンに含めるために、複数のマイナーの中の所与のマイナーに、前記要求と関連付けられた前記トランザクションを提出するステップと、
前記クライアントに対して前記所与のマイナーを特定するステップと、
前記マイナーに前記コールバック識別子を提供するステップと、
を有し、
前記要求に対応するブロックチェーントランザクションに関する応答を前記所与のマイナーから受信したことに応答して、当該方法は更に、
前記マイナーによって提供された前記対応するブロックチェーントランザクションに関する少なくとも1つのコールバック通知を、前記クライアントのために有効化又は処理するステップであり、該コールバック通知は、前記要求と関連付けられた前記コールバック識別子に基づく、ステップ、
を含む、方法。 - 前記マイナーからの前記受信した応答はトランザクション識別子(TxID)と関連付けられ、当該方法は更に、前記対応するブロックチェーントランザクションのトランザクション識別子(TxID)を前記クライアントに送信するステップを含む、請求項1に記載の方法。
- 前記受信した応答は、前記ブロックチェーントランザクションに関連するアウトプットスクリプトであり、該アウトプットスクリプトは、前記マイナーのためのメモリプールに関連付けられた未使用トランザクションアウトプット(UTXO)であり、該UTXOは、前記ブロックチェーントランザクションの前記トランザクション識別子(TxID)を含む、請求項1又は2に記載の方法。
- 当該決済プロセッサは、前記1つ以上のクライアントに対するREST(Representational State Transfer)エンドポイントとして実装され、当該方法は更に、
ハイパーテキスト転送プロトコルセキュア(HTTPS)伝送プロトコルフォーマットを用いて前記クライアントから前記要求を受信するステップと、
前記要求をリモートプロシージャコール(RPC)フォーマットに変換し、該RPCを前記マイナーに送信するステップと、
前記マイナーから、対応するブロックチェーントランザクションに関連する応答をRPCフォーマットで受信するステップと、
前記応答を、HTTPS伝送プロトコルを用いて前記クライアントに送信するために変換するステップと、
を実行するためのアプリケーションプログラミングインタフェース(API)ゲートウェイを、当該決済プロセッサに付随して設けるステップ、を有する、請求項1乃至3のいずれか一項に記載の方法。 - 前記所与のマイナーの身元を検証するステップを有し、該検証は、前記所与のマイナーと関連付けられたデジタル署名に基づき又は前記所与のマイナーに関する識別子に基づき、該識別子は、オプションで、前記所与のマイナーについての評判インジケータと関連付けられる、請求項1乃至4のいずれか一項に記載の方法。
- 前記コールバック通知は、前記所与のクライアントによって提出された前記トランザクションの二重支払の通知に関係する、又は前記コールバック通知は、前記所与のクライアントによって提出された前記トランザクションの、前記ブロックチェーンに含まれることの証明に関係する、請求項1乃至5のいずれか一項に記載の方法。
- 前記コールバック識別子は、前記クライアントと関連付けられたチャネルの位置である、又は前記コールバック識別子は、前記クライアントのユニバーサルリソース識別子(URI)である、請求項1乃至6のいずれか一項に記載の方法。
- 当該方法は更に、前記所与のマイナーに前記チャネルへのアクセスを提供するステップを有し、該提供するステップは、前記要求と関連付けられた前記チャネルのチャネル識別子又はロケーションと、前記チャネルと関連付けられた1つ以上のアクセストークンとを、前記マイナーに提供することを含む、請求項1乃至7のいずれか一項に記載の方法。
- 1つ以上のクライアントのためのチャネルサービスを実装するコンピュータ実装された方法であって、当該方法は、チャネルプロセッサによって実行され、当該方法は、
1つ以上のクライアントの中の所与のクライアントからの要求を受信するステップであり、該要求は、チャネルの作成に関するものである、ステップと、
前記所与のクライアントに、前記チャネルを介した前記所与のクライアントと別エンティティとの間の直接通信を可能にする1つ以上の機能へのアクセスを提供するステップであり、前記1つ以上の機能は、
データの伝送のための前記チャネルに関するチャネル機能又はプロシージャ、及び/又は
前記チャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャ、
を含む、ステップと、
前記チャネル用の1つ以上のアクセストークンを発行するステップであり、該1つ以上のアクセストークンは、前記チャネルを介した別エンティティとのセキュア通信向けに構成される、ステップと、
前記所与のクライアントのために、前記チャネルと関連付けられた1つ以上の通知を格納及び/又は提供するステップと、
を有する、方法。 - 前記1つ以上の機能は、前記所与のクライアントに対して発行される又は提供されるアプリケーションプログラミングインタフェース(API)であり、該APIは、前記チャネルのためのチャネルAPIと、前記チャネルに関連するデータのためのメッセージAPIとを含み、前記アクセストークンは、前記チャネル又は所与のメッセージに固有のAPIトークンである、請求項9に記載の方法。
- 1つ以上の機能へのアクセスを提供する前記ステップは、1つ以上のチャネルの作成及び/又は管理を可能にするための、JavaScript(登録商標)オブジェクト表記(JSON)・オーバ・ハイパーテキスト転送プロトコル(HTTP)APIの提供を含む、請求項9又は10に記載の方法。
- 前記チャネルと関連付けられた前記1つ以上の通知は、前記チャネルを介して前記所与のクライアントと直接通信する前記別エンティティであるマイナーからのコールバック通知である、請求項9乃至11のいずれか一項に記載の方法。
- 前記コールバック通知は、前記所与のクライアントによって提出されたトランザクションの二重支払の通知に関する、請求項12に記載の方法。
- 前記コールバック通知は、前記マイナーによって提供される前記チャネルでのリターンペイロードに付随し、該リターンペイロードは、以下のデータ、すなわち、
- 二重支払されたブロックチェーントランザクションのトランザクション識別子(TxID)と、オプションで、
- 前記ブロックチェーントランザクションを提出した決済プロセッサに関するサービスエンドポイントと、
を含む、請求項13に記載の方法。 - 前記コールバック通知は、前記所与のクライアントによって提出されたトランザクションを前記ブロックチェーンに含めたことの証明に関する、請求項12に記載の方法。
- 前記コールバック通知は、前記マイナーによって提供される前記チャネルでのリターンマークルプルーフに付随し、該リターンマークルプルーフは、以下のデータ、すなわち、
- 該マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- 前記ブロックチェーントランザクションが含まれるブロックのブロックヘッダと、
- 前記トランザクション識別子(TxID)に関するシブリングハッシュの配列と、
を含む、請求項15に記載の方法。 - 前記クライアントがオフラインである又は当該チャネルプロセッサに通信可能に接続されていないとき、前記1つ以上のコールバック通知は、前記チャネルでの、前記所与のクライアントのためにキューに入れられる又は格納されるデータのプッシュ通知である、請求項9乃至16のいずれか一項に記載の方法。
- 前記クライアントがオンラインである又は当該チャネルプロセッサに通信可能に接続されているとき、前記1つ以上のコールバック通知に関連するデータは前記チャネルから提供される又はプルされる、請求項9乃至17のいずれか一項に記載の方法。
- 当該チャネルプロセッサは決済プロセッサであり又は決済プロセッサを含み、当該方法は、該決済プロセッサによって実行される請求項1乃至8のいずれか一項に記載の方法を含む、請求項9乃至18のいずれか一項に記載の方法。
- ブロックチェーンに関連付けられるトランザクションを処理するコンピュータ実装された方法であって、当該方法は、クライアントと関連付けられた1つ以上のプロセッサによって実行され、当該方法は、
チャネルプロセッサによって実行されるチャネルサービスに関するチャネル要求を送信するステップであり、該要求は、別エンティティとの通信用のチャネルの作成に関係する、ステップと、
前記チャネルサービスから、所与のクライアントと前記別エンティティとの間での直接通信を可能にする1つ以上の機能へのアクセスを得るステップであり、該1つ以上の機能は、
データの伝送のためのチャネルに関するチャネル機能又はプロシージャ、及び/又は
チャネルを用いて伝送されるデータに関するメッセージ機能又はプロシージャ、
を含む、ステップと、
前記チャネルサービスから、前記別エンティティとのセキュア通信を可能にする1つ以上のアクセストークンを取得するステップと、
決済サービスを実行する決済プロセッサに、デジタル資産に関連するトランザクションを前記ブロックチェーンに提出することの要求を送信するステップと、
前記決済プロセッサから、前記提出したトランザクションに対応するブロックチェーントランザクションのトランザクション識別子(TxID)を取得するステップと、
前記決済プロセッサからの応答に基づいて、前記対応するブロックチェーントランザクションと関連付けられたマイナーを特定するステップと、
前記チャネルプロセッサから受け取った1つ以上のチャネル機能を用いて、前記特定したマイナーとの通信のために所与のチャネルを作成するステップと、
前記所与のチャネルと関連付けられた前記1つ以上のアクセストークンを前記マイナーに送信するステップと、
前記所与のチャネルと関連付けられた少なくとも1つのコールバック通知を受信するステップであり、該通知は、ブロックチェーントランザクションに関連した、前記マイナーによって提供される前記所与のチャネルでのデータに関係する、ステップと、
を有する、方法。 - 前記クライアントがオフラインである又は前記チャネルプロセッサに通信可能に接続されていないとき、前記コールバック通知は、前記所与のチャネルでの、キューに入れられるデータ又はメッセージのプッシュ通知として取得される、請求項20に記載の方法。
- 前記クライアントがオンラインである又は前記チャネルプロセッサに通信可能に接続されているとき、前記コールバック通知に関連するデータは前記所与のチャネルからプルされる、請求項20又は21に記載の方法。
- 前記1つ以上の機能は、所与のクライアントのためのアプリケーションプログラミングインタフェース(API)であり、該APIは、1つ以上のチャネルの作成及び/又は管理を可能にするためのチャネルAPIと、前記所与のクライアント及び1つ以上の別エンティティがメッセージを交換する、及び/又は前記所与のチャネルからデータを読み出す、及び/又は前記所与のチャネルにデータを書き込むことを可能にするためのメッセージAPIとを含み、前記アクセストークンは、所与のチャネル又は所与のメッセージに固有のAPIトークンである、請求項20乃至22のいずれか一項に記載の方法。
- 前記チャネル要求は、前記チャネルプロセッサへのハイパーテキスト転送プロトコルセキュア(HTTPS)伝送GET要求であり、前記決済プロセッサへの前記要求は、前記決済プロセッサへのハイパーテキスト転送プロトコルセキュア(HTTPS)伝送POST要求である、請求項20乃至23のいずれか一項に記載の方法。
- 当該方法は更に、
クライアントエンドポイントを提供するステップと、
前記クライアントと関連付けられた少なくとも1つのクライアントアドレッシングキーを提供するステップと、
マイナーエンドポイントを取得するステップと、
前記マイナーと関連付けられた少なくとも1つのマイナーアドレッシングキーを取得するステップと、
前記クライアントアドレッシングキー及び前記マイナーアドレッシングキーに基づいて、前記所与のチャネルを用いて1つ以上のハンドシェイクメッセージを交換するステップと、
ハンドシェイク結果又はパターンに基づいて共有秘密鍵を取得するステップと、
を有し、
前記所与のチャネルを用いた如何なる通信も、前記共有秘密鍵に基づいて暗号化される、
請求項20乃至24のいずれか一項に記載の方法。 - 前記クライアントエンドポイントは、ハイパーテキスト転送プロトコル(HTTP)アプリケーションプログラミングインタフェース(API)エンドポイントであり、前記クライアントエンドポイントは、HTTPセキュア(HTTPS)を用いて配信される、請求項25に記載の方法。
- 前記クライアントエンドポイントは、前記所与のチャネルを用いて送信される前記所与のクライアントからのメッセージに含まれるユニバーサルリソースロケーション(URL)である、請求項25に記載の方法。
- 前記クライアントエンドポイントは、前記クライアントと関連付けられた別名であり、該別名は、前記クライアントに固有であって、別名ベースのアドレッシングサービスによって提供され、該アドレッシングサービスは、定められた又は周知のロケーションからアクセス可能な機械読み取り可能リソースを有し、該機械読み取り可能リソースは、前記クライアントに関連する1つ以上の機能を含み、前記別名は、認証のための非対称暗号キーペアと関連付けられる、請求項25乃至27のいずれか一項に記載の方法。
- ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法であって、当該方法は、複数のマイナーの中のあるマイナーに関連付けられた1つ以上のプロセッサによって実行され、前記複数のマイナーは、所与のクライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合され、当該方法は、
前記決済プロセッサから、前記ブロックチェーンへのトランザクションの提出の要求を受信するステップと、
前記要求に対応するブロックチェーントランザクションを生成するステップと、
前記ブロックチェーントランザクションに関連するアウトプットスクリプト(UTXO)を前記決済プロセッサに送信するステップであり、該アウトプットスクリプトは、前記対応するブロックチェーントランザクションと関連付けられたトランザクション識別子(TxID)を含む、ステップと、
前記所与のクライアントとの直接通信を可能にするチャネルへのアクセスを受けるステップと、
前記チャネルと関連付けられたアクセストークンに基づいて、前記チャネルでのコールバック通知に関連するデータを提供する又は書き込むためのメッセージ機能又はメッセージAPIを取得するステップであり、該データは、前記対応するブロックチェーントランザクションに関する、ステップと、
を有する、方法。 - 前記対応するブロックチェーントランザクションが、前記クライアントによって提出された以前のトランザクションの二重支払であるという決定に基づいて、当該方法は更に、リターンペイロードを提供するステップを含み、該リターンペイロードは、以下のデータ、すなわち、
- 二重支払である所与のブロックチェーントランザクションのトランザクション識別子(TxID)と、オプションで、
- 前記所与のブロックチェーントランザクションを提出した前記決済プロセッサのサービスエンドポイントと、
を含む、請求項29に記載の方法。 - 前記対応するブロックチェーントランザクションをブロックにマイニングしたことに応答して、当該方法は更に、前記トランザクションをブロックに含めたことを裏付けるリターンマークルプルーフを提供するステップを含み、該リターンマークルプルーフは、以下のデータ、すなわち、
- 前記マークルプルーフが関係するブロックチェーントランザクションのトランザクション識別子(TxID)と、
- 前記ブロックのブロックヘッダと、
- 前記トランザクション識別子のシブリングハッシュの配列と、
を含む、請求項29に記載の方法。 - 当該方法は更に、
クライアントエンドポイントを取得するステップと、
前記クライアントと関連付けられた少なくとも1つのクライアントアドレッシングキーを取得するステップと、
マイナーエンドポイントを提供するステップと、
決済プロセッサと関連付けられた少なくとも1つのマイナーアドレッシングキーを提供するステップと、
前記クライアントアドレッシングキー及び前記マイナーアドレッシングキーに基づいて、前記チャネルを用いて1つ以上のハンドシェイクメッセージを交換するステップと、
ハンドシェイク結果又はパターンに基づいて共有秘密鍵を取得するステップと、
を有し、
前記チャネルを用いた如何なる通信も、前記共有秘密鍵に基づいて暗号化される、
請求項29乃至31のいずれか一項に記載の方法。 - プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に請求項1乃至8のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置は決済プロセッサに係る、コンピューティング装置。
- プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に請求項9乃至19のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はチャネルプロセッサに係る、コンピューティング装置。
- プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に請求項20乃至28のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はクライアントに係る、コンピューティング装置。
- プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に請求項29乃至32のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はマイナーに係る、コンピューティング装置。
- 無線通信ネットワークを介して少なくとも1つのクライアント及び少なくとも1つのマイナーに通信可能に結合された決済プロセッサであり、当該決済プロセッサは、請求項33に記載のコンピューティング装置に従って実装される、決済プロセッサと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合され、且つ少なくとも1つのカスタマと通信可能であるクライアントであり、当該クライアントは、請求項35に記載のコンピューティング装置に従って実装され、当該クライアントは、前記無線通信ネットワークを介して、請求項34に記載のコンピューティング装置に従って実装されるチャネルプロセッサに通信可能に結合される、クライアントと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合される複数のマイナーであり、各マイナーが、請求項36に記載のコンピューティング装置に従って実装される、複数のマイナーと、
を有するコンピュータシステム。 - 実行可能命令を格納したコンピュータ読み取り可能記憶媒体であって、前記実行可能命令は、コンピュータのプロセッサによって実行される結果として、前記コンピュータに請求項1乃至32のいずれか一項に記載の方法を実行させる、コンピュータ読み取り可能記憶媒体。
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB201914043A GB201914043D0 (en) | 2019-09-30 | 2019-09-30 | Computer-implemented system and method |
GB1914043.3 | 2019-09-30 | ||
GBGB2007597.4A GB202007597D0 (en) | 2020-05-21 | 2020-05-21 | Computer-implemented system and method |
GB2007597.4 | 2020-05-21 | ||
GB2010339.6 | 2020-07-06 | ||
GBGB2010339.6A GB202010339D0 (en) | 2020-07-06 | 2020-07-06 | Computer-implemented system and method |
GB2015358.1 | 2020-09-29 | ||
GBGB2015358.1A GB202015358D0 (en) | 2020-09-29 | 2020-09-29 | Call-back mechanisms for blockchain transactions |
PCT/IB2020/059095 WO2021064565A1 (en) | 2019-09-30 | 2020-09-29 | Call-back mechanisms for blockchain transactions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022549624A true JP2022549624A (ja) | 2022-11-28 |
Family
ID=72826924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022518348A Pending JP2022549624A (ja) | 2019-09-30 | 2020-09-29 | ブロックチェーントランザクションのコールバックメカニズム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220405748A1 (ja) |
JP (1) | JP2022549624A (ja) |
KR (1) | KR20220076486A (ja) |
TW (1) | TW202130153A (ja) |
WO (1) | WO2021064565A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115842813A (zh) * | 2021-09-18 | 2023-03-24 | 华为技术有限公司 | 通信方法以及相关装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES231501Y (es) | 1977-10-20 | 1978-04-16 | Numerador de funcionamiento automatico perfeccionado. | |
WO2018229631A1 (en) * | 2017-06-14 | 2018-12-20 | nChain Holdings Limited | Systems and Methods For Avoiding Or Reducing Cryptographically Stranded Resources On A Blockchain Network |
US11556521B2 (en) * | 2017-09-29 | 2023-01-17 | Oracle International Corporation | System and method for providing an interface for a blockchain cloud service |
US11182787B2 (en) * | 2017-11-07 | 2021-11-23 | Liquidchain Ag | System and method for scaling blockchain networks with secure off-chain payment hubs |
-
2020
- 2020-09-29 KR KR1020227014309A patent/KR20220076486A/ko unknown
- 2020-09-29 JP JP2022518348A patent/JP2022549624A/ja active Pending
- 2020-09-29 US US17/764,358 patent/US20220405748A1/en active Pending
- 2020-09-29 WO PCT/IB2020/059095 patent/WO2021064565A1/en unknown
- 2020-09-30 TW TW109134230A patent/TW202130153A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20220405748A1 (en) | 2022-12-22 |
WO2021064565A1 (en) | 2021-04-08 |
KR20220076486A (ko) | 2022-06-08 |
TW202130153A (zh) | 2021-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809608B2 (en) | Methods and systems for using digital signatures to create trusted digital asset transfers | |
US11323457B2 (en) | Network topology | |
EP3424176B1 (en) | Systems and methods for distributed data sharing with asynchronous third-party attestation | |
US11108566B2 (en) | Methods and systems for using digital signatures to create trusted digital asset transfers | |
US20220303258A1 (en) | Computer-implemented system and method | |
US11777730B2 (en) | Layered recording networks | |
US20190251555A1 (en) | Distributed ledger system for standby guarantee resources | |
US11038685B1 (en) | Correcting blockchain transactions with cryptocurrency type mistakes | |
JP2022549625A (ja) | コンピュータ実装されたシステム及び方法 | |
JP2022549624A (ja) | ブロックチェーントランザクションのコールバックメカニズム | |
EP4038829A1 (en) | Call-back mechanisms for blockchain transactions | |
TW202205834A (zh) | 電腦實施系統及方法 | |
US20240054458A1 (en) | Systems and methods for securely sharing public blockchain addresses |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230901 |