(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-03
(45)【発行日】2024-12-11
(54)【発明の名称】コンピュータ実装されたシステム及び方法
(51)【国際特許分類】
G06Q 20/06 20120101AFI20241204BHJP
G06Q 20/04 20120101ALI20241204BHJP
G06Q 20/38 20120101ALI20241204BHJP
G06Q 30/0203 20230101ALI20241204BHJP
【FI】
G06Q20/06
G06Q20/04
G06Q20/38 310
G06Q30/0203
(21)【出願番号】P 2022518349
(86)(22)【出願日】2020-09-18
(86)【国際出願番号】 IB2020058709
(87)【国際公開番号】W WO2021064504
(87)【国際公開日】2021-04-08
【審査請求日】2023-08-21
(32)【優先日】2019-09-30
(33)【優先権主張国・地域又は機関】GB
(32)【優先日】2020-07-06
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】コグラン,スティーヴン
(72)【発明者】
【氏名】スラハ,アンブローズ
(72)【発明者】
【氏名】ヴェーラシンハ,デュラン
【審査官】深津 始
(56)【参考文献】
【文献】国際公開第2020/001735(WO,A1)
【文献】特表2022-532464(JP,A)
【文献】Gas Price Recommendations FAQ [online],2019年01月26日,[検索日2024.06.19], Internet<URL:https://web.archive.org/web/20190126190348/https://ethgasstation.info/gasrecs.php>
【文献】Other FAQ FAQ [online],2019年02月08日,[検索日2024.06.19], Internet<URL:https://web.archive.org/web/20190208191558/https://ethgasstation.info/FAQpage.php>
【文献】ethgasstation [online],2019年02月01日,[検索日2024.06.19], Internet<URL:https://web.archive.org/web/20190201044129/https://ethgasstation.info/>
【文献】鳥谷部 昭寛, 加世田 敏宏, 林田 駿弥,スマートコントラクト本格入門,初版,株式会社技術評論社 片岡 巌,2017年03月01日,第131-133ページ,ISBN:978-4-7741-8746-4
【文献】木下 学,自分で作るブロックチェーンと仮想通貨,日経ソフトウエア,日本,日経BP社 Nikkei Business Publications,Inc.,2017年09月24日,第20巻, 第11号,第30-39ページ,ISSN:1347-4685
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 -G06Q 99/00
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンに関連付けられるトランザクションに関して1つ以上のクライアントに決済サービスを提供するコンピュータ実装された方法であって、当該方法は、決済プロセッサによって実行され、当該方法は、
ブロックチェーンにおいてトランザクションをマイニングすることに関連する第1の要求をクライアントから受信するステップと、
当該決済プロセッサに通信可能に結合された複数のマイナーの中の各マイナーに、手数料見積もりの要求を送信するステップと、
各マイナーから、前記トランザクションをマイニングすることに関する手数料見積もりを取得するステップと、
前記複数のマイナーからの前記取得した手数料見積もりを前記クライアントに提供するステッ
プ、又は
前記複数のマイナーからの前記取得した手数料見積もりを前記クライアントに提供するステップであり、前記取得した手数料見積もりに基づいて、前記クライアントのために、前記トランザクションをマイニングするための選択された手数料見積もりを決定するステップと、
を有する、方法。
【請求項2】
前記第1の要求に関連する前記トランザクションは、複数のトランザクションのバッチを含む、請求項1に記載の方法。
【請求項3】
前記取得した手数料見積もりの中の前記選択された手数料見積もりに関係する所与のトランザクションを提出するための前記クライアントからの第2の要求に応答して、前記所与のトランザクションに対応するブロックチェーントランザクションを生成することの要求を、前記複数のマイナーの中の1つ以上のマイナーに送信するステップと、
前記複数のマイナーの中の、前記選択された手数料見積もりを満たす少なくとも1つのマイナーから、前記対応するブロックチェーントランザクションに関連するアウトプットスクリプトを受信するステップと、
結果を前記クライアントに送信するステップであり、該結果は、前記所与のトランザクションに対応する前記ブロックチェーントランザクションのトランザクション識別子を含む、ステップと、
を有する請求項1又は2に記載の方法。
【請求項4】
前記所与のトランザクションは、複数のトランザクションのバッチを含む、請求項3に記載の方法。
【請求項5】
前記取得した手数料見積もりを提供する前記ステップは更に、前記取得した手数料見積もりの平均値又は前記取得した手数料見積もりの中の最大値に基づいて推奨手数料見積もりを決定することを有する、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
当該方法は更に、前記推奨手数料見積もりを提供すること、又は前記推奨手数料見積もりを含めて前記取得した手数料見積もりの全てを提供することを有し、前記推奨手数料見積もりは識別子を含む、請求項5に記載の方法。
【請求項7】
前記選択された手数料見積もりは、前記推奨手数料見積もりと同じであり又は前記推奨手数料見積もりとは異なり、該異なる手数料見積もりは、予め決定されているか任意に選択されるかのいずれかである、請求項5又は6に記載の方法。
【請求項8】
選択された手数料見積もりを決定する前記ステップは、前記取得した手数料見積もりの各々に、複数のサービスレベルの中のあるサービスレベルを割り当てることを有し、各サービスレベルが、前記トランザクションをマイニングすることに関するそれぞれの選択された手数料見積もりと関連付けられる、請求項1乃至7のいずれか一項に記載の方法。
【請求項9】
前記サービスレベルは、前記取得した手数料見積もりと、それぞれの手数料見積もりに関係するマイナーに関連付けられた最低リレー手数料とに基づいて割り当てられる、請求項8に記載の方法。
【請求項10】
前記割り当てられたサービスレベルは、前記トランザクションをマイニングすることに対する優先順位、及び/又は推奨手数料に対するトランザクションに関連する二重支払に対する保護のレベルを指し示す、請求項8又は9に記載の方法。
【請求項11】
マイニングされる前記トランザクションに対する前記サービスレベルは、前記クライアントから得られる1つ以上のサービス要件に基づいて割り当てられる、請求項8乃至10のいずれか一項に記載の方法。
【請求項12】
当該方法は、前記複数のマイナーの中の所与のマイナーの身元を検証するステップを有し、該検証は、前記所与のマイナーに関連するデジタル署名に基づき又は前記所与のマイナーに関係する識別子に基づき、該識別子は、オプションで、前記所与のマイナーに関する評判インジケータに関連付けられる、請求項1乃至11のいずれか一項に記載の方法。
【請求項13】
当該方法は、前記複数のマイナーの中の所与のマイナーから取得したそれぞれの手数料見積もりを、マイナー署名に基づいて認証するステップを有し、前記マイナー署名は、前記それぞれの手数料見積もりについて前記トランザクションをマイニングすることの、及びオプションで、相反するトランザクションを拒否することの、前記所与のマイナーからのコミットメントとしての役割を果たす、請求項1乃至12のいずれか一項に記載の方法。
【請求項14】
各マイナーから取得する前記手数料見積もりはデータ型で提供され、該データ型は、JavaScriptオブジェクト表記(JSON)オブジェクトフォーマットにおけるものである、請求項1乃至13のいずれか一項に記載の方法。
【請求項15】
前記受信するアウトプットスクリプトは、前記少なくとも1つのマイナーのためのメモリプールに関連付けられた未使用トランザクションアウトプット(UTXO)であり、該UTXOは、前記ブロックチェーントランザクションのトランザクション識別子(TxID)を含む、請求項1乃至14のいずれか一項に記載の方法。
【請求項16】
前記クライアントからのトランザクション識別子に関連付けられたステータスクエリに応答して、前記トランザクション識別子に対応するブロックチェーントランザクションを取得することの要求を前記複数のマイナーに送信するステップと、
前記複数のマイナーの中の少なくとも1つのマイナーから前記対応するブロックチェーントランザクションを取得するステップと、
前記取得したブロックチェーントランザクションに関係するステータス結果を前記クライアントに送信するステップと、
を有する請求項1乃至15のいずれか一項に記載の方法。
【請求項17】
当該決済プロセッサは、前記1つ以上のクライアントに対するREST(Representational State Transfer)エンドポイントとして実装され、当該方法は更に、
ハイパーテキスト転送プロトコルセキュア(HTTPS)伝送プロトコルフォーマットを用いて、前記クライアントから、前記第1の要求、及び/又は前記第2の要求、及び/又は所与のトランザクションに関係するステータスクエリを受信するステップと、
それぞれの要求をリモートプロシージャコール(RPC)フォーマットに変換し、該RPCを前記複数のマイナーのうちの1つ以上のマイナーに送信するステップと、
前記複数のマイナーのうちの前記1つ以上のマイナーから、対応するブロックチェーントランザクションに関連する応答をRPCフォーマットで受信するステップと、
それぞれの応答を、HTTPS伝送プロトコルを用いて前記クライアントに送信され得るように変換するステップと、
を実行するためのアプリケーションプログラミングインタフェース(API)コンバータを、当該決済プロセッサに付随して設けるステップ、を有する、請求項1乃至16のいずれか一項に記載の方法。
【請求項18】
プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に請求項1乃至17
のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置は決済プロセッサに係る、コンピューティング装置。
【請求項19】
無線通信ネットワークを介して少なくとも1つのクライアント及び少なくとも1つのマイナーに通信可能に結合された決済プロセッサであり、当該決済プロセッサは、オプションで、前記クライアントからのHTTPS要求の、前記マイナーに対するRPC要求への変換、及びその逆の変換のためのAPI変換器に付随され、当該決済プロセッサは、請求項
18に記載のコンピューティング装置に従って実装される、決済プロセッサと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合され、且つ少なくとも1つのカスタマと通信可能であるクライアントであり、当該クライアントは、
第2のプロセッサと第2のメモリとを有するコンピューティング装置として実装され
、前記第2のメモリは第2の実行可能命令を含み、該第2の実行可能命令は、前記第2のプロセッサによる実行の結果として、当該装置に、以下のコンピュータ実装された方法を実行させ、すなわち、
少なくとも1つの決済プロセッサの中のある決済プロセッサに第1の要求を送信し、該要求は、トランザクションをマイニングすることに関する1つ以上の手数料見積もりに関係し、前記トランザクションは、カスタマからのデジタル資産決済に関係し、そして、前記決済プロセッサからの1つ以上の手数料見積もりの受信に応答して、受信した前記1つ以上の手数料見積もりの中から手数料見積もりを選択する、
ことを実行させる、クライアントと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合される複数のマイナーであり、各マイナーが、
第3のプロセッサと第3のメモリとを有するコンピューティング装置として実装され
、前記第3のメモリは第3の実行可能命令を含み、該第3の実行可能命令は、前記第3のプロセッサによる実行の結果として、当該装置に、以下のコンピュータ実装された方法を実行させ、すなわち、
前記クライアントに関連するトランザクションをマイニングすることに関する手数料見積もりのための第1の要求を決済プロセッサから受信し、
前記ブロックチェーンにおいて前記トランザクションをマイニングすることに関する当該マイナーに関係する現在手数料見積もりを提供し、該現在手数料見積もりは、該現在手数料見積もりでトランザクションをマイニングするという約束を表す、
ことを実行させる、複数のマイナーと、
を有するコンピュータシステム。
【請求項20】
実行可能命令を格納したコンピュータ読み取り可能記憶媒体であって、前記実行可能命令は、コンピュータのプロセッサによって実行される結果として、前記コンピュータに請求項1乃至
17のいずれか一項に記載の方法を実行させる、コンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
この開示は、概して、1つ以上のクライアントに対する決済サービス又は決済インタフェースを実装する方法及びシステムに関する。特に、以下に限定されないが、本開示は、1つ以上のクライアント(依頼人)に対する、又は1つ以上のクライアントのための、ブロックチェーン又は分散型台帳に関連する安全で信頼できる支払トランザクションや、カスタマ(客)又は支払エンティティに関連するデジタル資産決済に関する取引を可能にすることに関する。
【背景技術】
【0002】
本文書では、用語‘ブロックチェーン’を、全ての形態の電子的な、コンピュータベースの、分散型台帳を含むように使用する。これらは、合意に基づく(コンセンサスベースの)ブロックチェーン及びトランザクションチェーンの技術、許可された及び許可されていない台帳、共有台帳、公的及び私的なブロックチェーン、並びにこれらの変形を含む。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実装も提案及び開発されている。ここでは、便宜及び説明のために、ビットコインを参照することがあるが、留意されたいことには、本開示は、ビットコインブロックチェーンとの使用に限定されず、任意の種類のデジタル資産又はデジタル資産表現に関連する代わりのブロックチェーン実装及びプロトコルも本開示の範囲内にある。用語“クライアント”、“エンティティ”、“ノード”、“ユーザ”、“送信者”、“受信者”、“支払人”、“受取人”は、ここでは、コンピューティングリソース又はプロセッサベースのリソースを指す。用語“ビットコイン”は、ここでは、ビットコインプロトコルから派生する又はそれに基づく任意のバージョン又はバリエーションを含むように使用される。用語“デジタル資産”は、例えば、暗号通貨、所有物の少なくとも一部を表すトークン、スマート契約、つまりはソフトウェアライセンスであるライセンス、又はメディアコンテンツなどのDRM契約など、任意の移転可能な資産を指し得る。理解されることには、デジタル資産という用語は、この文書全体を通して、1つのエンティティから別のエンティティへの取引における支払として移転又は提供され得る価値に関連し得る商品を表すように使用される。
【0003】
ブロックチェーンは、複数のトランザクションからなる複数のブロックで構成されるコンピュータベースの非中央集権的な分散型システムとして実装されるピア・ツー・ピアの電子台帳である。各トランザクションは、ブロックチェーンシステムにおける参加者間でのデジタル資産の管理の移転をエンコードするデータ構造であり、少なくとも1つのインプットと少なくとも1つのアウトプットとを含む。各ブロックが、そのブロックが一緒にチェーン化される先行ブロックのハッシュを含むことで、その開始以前にそのブロックチェーンに書き込まれた全てのトランザクションの恒久的で変更不可能な記録を作り出す。トランザクションは、それらのインプット及びアウトプットに埋め込まれるスクリプトとして知られた小プログラムを含み、それらが、トランザクションのアウトプットが誰によってどのようにアクセスされることができるかを指定する。ビットコインプラットフォーム上では、これらのスクリプトは、スタックベースのスクリプト言語を用いて書かれる。
【0004】
トランザクションがブロックチェーンに書き込まれるには、そのトランザクションが“検証済み”でなければならない。ネットワークノード(マイナー,採掘者)が、各トランザクションが有効であることを保証するための作業を実行し、無効なトランザクションはネットワークから拒絶される。ノードにインストールされているソフトウェアクライアントが、未使用トランザクション(UTXO)に対する検証作業を、そのロッキング及びアンロッキングスプリクトを実行することによって行う。ロッキング及びアンロッキングスプリクトの実行がTRUEに評価される場合、トランザクションは有効であり、次いで、トランザクションがブロックチェーンに書き込まれる。従って、トランザクションがブロックチェーンに書き込まれるには、そのトランザクションが、i)そのトランザクションを受け取る第1のノードによって検証され(そのトランザクションが検証された場合に、そのノードがそれをネットワーク内の他のノードに中継する)、ii)マイナーによって構築された新しいブロックに追加され、そして、iii)マイニングされ、すなわち、過去のトランザクションの公開台帳に追加されなければならない。
【0005】
UTXOとしてブロックチェーンに格納されると、ユーザは、関連付けられたリソースの管理を、別のトランザクションのインプットに関連付けられた別のアドレスに移転することができる。この移転は、原則としてではないが、通常、デジタルウォレットを用いて行われる。このデジタルウォレットは、例えばデスクトップ、ラップトップ又はモバイル端末などのコンピューティング装置上のデバイス、物理媒体、プログラム、アプリケーション(アプリ)であることができ、あるいは、例えばインターネットなどのネットワーク上のドメインに関連付けられた、遠隔ホストされるサービスであることができる。デジタルウォレットは、公開鍵及び秘密鍵を記憶しており、ユーザに関連するリソース、トークン及び資産などの所有権を追跡するためや、デジタル資産を受け取る又は消費するためや、例えば、暗号通貨、又はライセンス、又は財産、又は他のタイプのリソースなどの、デジタル資産に関係し得るトークンを転送するために使用されることができる。
【0006】
ブロックチェーン技術は、暗号通貨実装の使用に関して最も広く知られているが、デジタル起業家は、新しいシステムを実装するために、ビットコインが基づく暗号セキュリティシステムと、ブロックチェーンに格納されることができるデータとの両方の使用を探求している。ブロックチェーンが、暗号通貨の領域に限られない自動化されたタスク及びプロセスに使用され得るとすれば、非常に有利であろう。このようなソリューションは、ブロックチェーンの利益(例えば、イベントの恒久的で改ざんが防止された記録や、分散処理など)を生かしながら、それらの用途においてもっと融通が利くものとなり得るであろう。現在の研究の1つの分野は、“スマート契約”の実装のためのブロックチェーンの利用である。これらは、機械読み取り可能な契約又は合意の条件の履行を自動化するように設計されるコンピュータプログラムである。自然言語で書かれる伝統的な契約とは異なり、スマート契約は、結果を生成するためにインプットを処理することができるルールを有する機械実行可能プログラムであり、そして、それらの結果に応じてアクションを行わせることができるものである。ブロックチェーンに関連して関心ある別の分野は、ブロックチェーンを介して実世界のエンティティを表現及び移転するための“トークン”(又は“カラーコイン”)の使用である。潜在的に機密又は秘密のアイテムを、識別可能な意味又は値を持たないトークンによって表現することができる。従って、そのトークンは、実世界のアイテムをブロックチェーンから参照することを可能にする識別子として機能する。
【0007】
上述の例又はシナリオは、ユーザ又はエンティティ間での、つまりはデジタル資産である何らかの資産、又はデジタル資産の管理、の移転に関する。従って、2つのエンティティ間での資金の交換のための、特に、実世界における資産を尊重し得る商人とカスタマとの間でのデジタル資産決済のための既存の決済システム又は電子商取引システムに類似した安全で堅牢なシステムを、より良いユーザ体験で、より安価な商人又は支払人のコストで、そして、より安全なセキュリティレベルで、実装することが望まれる。より具体的には、分散型台帳(ブロックチェーン)技術並びに記録の高められた安全性、透明性及び信頼性の利点を利用して、任意の商人又は複数の商人が、それぞれのカスタマとのデジタル資産決済が即座に且つ安全にマイニングされてブロックチェーンに書き込まれることができ、それにより、そのような決済の持続的で、改ざんが防止された、監査可能な記録が提供されることを、確保することを可能にする共通のプラットフォーム又はインタフェースを提供することが望まれる。
【0008】
このような改善されたソリューションが現在考案されている。本開示は、これらの技術的関心事に、以下のような技術を提案することによって対処する、すなわち、その技術によって、例えば暗号通貨などのデジタル資産の受取人である1つ以上のクライアント、すなわち、商人又は受取人エンティティに関するトランザクションが、そのようなクライアントにアプリケーションプログラミングインタフェース(API)を提供する方法、技術、及び装置によって、即座にブロックチェーンに書き込まれ得る技術を提案することによって対処する。このような技術では、マイナーが動的に又は即座にトランザクションをマイニングしたりブロックチェーンに書き込んだりすることができ、すなわち、安全で信頼できるやり方でクライアントに対する即時トランザクション又はゼロ承認(コンファメーション)トランザクション(0-conf)を可能にするサービスを提供することができる。
【発明の概要】
【0009】
第1の態様において、本開示は、クライアントに関連するトランザクションが、つまりはブロックチェーンである分散型台帳に書き込まれる又は格納されることを可能にする決済サービスを実装するための方法、装置及びシステムを提案する。当該決済サービスは、1つ以上のクライアントがそれぞれのクライアントに関係するデジタル資産決済を処理するためにアクセスできるAPIとして実装される。第1の態様は、クライアントのために複数のマイナーからマイニング手数料見積もりを取得し、選択された手数料見積もりに基づいてトランザクションをブロックチェーンに提出することの要求を処理することを含む。
【0010】
第2の態様において、本開示は、クライアント(支払人)と該クライアントのカスタマ(受取人)との間のデジタル資産決済に基づいて、ブロックチェーンにおいてマイニングされるべきデジタル資産決済に関連するトランザクションを要求する方法、装置及びシステムを提案する。要求は、上の態様において受信した手数料見積もりの中の選択された手数料見積もりによって関連付けられる。
【0011】
第3の態様において、当該方法は、上の態様で述べたように、あるマイナーが、クライアントからの選択された手数料見積もりを満たすことに基づいて、該マイナーによって、クライアントに関連するブロックチェーントランザクションを作成、処理、及びマイニングすることを含む。
【0012】
この明細書全体を通して、用語“有する”、又は例えば“含む”、“有した”、“有している”、などのバリエーションは、記述される要素、整数若しくはステップ、又は一群の要素、整数若しくはステップを含むが、他の要素、整数若しくはステップ、又は他の一群の要素、整数若しくはステップを排除しない、という意味であると理解される。
【図面の簡単な説明】
【0013】
次に、本開示の態様及び実施形態を、添付の図面を参照して、単に例として説明する。
【
図1】1つ以上のクライアントに対してブロックチェーンに関連するデジタル資産トランザクションを可能にするための決済サービス又は決済インタフェースを実装する方法を示すフローチャートであり、当該方法は、第1の態様に従って決済プロセッサによって実装される。
【
図2】ブロックチェーントランザクションの処理を要求する方法を示すフローチャートであり、該ブロックチェーントランザクションは、クライアントに関連するデジタル資産決済に関連し、当該方法は、第2の態様に従ってクライアントに関連する1つ以上のプロセッサによって実装される。
【
図3】クライアントに対するデジタル資産決済に関連するブロックチェーントランザクションを処理する方法を示すフローチャートであり、当該方法は、第3の態様に従ってマイナーに関連する1つ以上のプロセッサによって実装される。
【
図4】クライアントに対してブロックチェーントランザクションを可能にするための決済サービス又は決済インタフェースを提供するシステムを示す概略図である。
【
図5】複数のマイナーに関連する手数料見積もりを取得するための第1の要求に関連するデータの流れを示す概略図である。
【
図6】選択された手数料見積もりに基づいてトランザクションを提出するための第2の要求に関連するデータの流れを示す概略図である。
【
図7】ブロックチェーントランザクション識別子に基づくステータスクエリに関連するデータの流れを示す概略図である。
【
図8】本開示の様々な態様及び実施形態を実装することができるコンピューティング環境を示す概略図である。
【発明を実施するための形態】
【0014】
第1の態様によれば、本開示は、ブロックチェーンと関連付けられるトランザクションについて1つ以上のクライアントに対する決済サービスを実施するコンピュータ実装された方法を提供し、当該方法は、決済サービスに関連付けられた決済プロセッサによって実装される。一部の実施形態において、クライアントは、計算リソース若しくはノード、又は暗号通貨決済を受け入れ及び/又は処理するためのデジタルウォレットに関連付けられることができ且つそのようなウォレットに関する公開鍵又は公開アドレスに関連付けられることができるエンティティとし得る。一部の実施形態において、クライアントは、実世界で商品又はサービスを提供し且つかかる商品又はサービスに対するデジタル資産決済支払を受ける、例えば店頭(ポイント・オブ・セールス)装置などの商人エンティティ又は端末を表し得るが、そのように限定されるものではない。一部の実施形態において、決済プロセッサは、1つ以上のクライアントに対して、関連サービス又はサードパーティサービスとして決済インタフェースを提供するように構成される。一部の例において、決済プロセッサは、クライアントとマイナーとに、1つ以上のユーザフレンドリーなインタフェースを介してブロックチェーンに関連する複数の決済サービス及び機能を提供するので、決済アグリゲータとして参照される。一部の実施形態において、決済プロセッサは、例えばHTTPS、TCP/IPなどの、ウェブベースのサービスのための標準的なインターネット通信プロトコルを用いてインターネット上で通信を行うことができるように、1つ以上のクライアントのためにウェブベースのインタラクションを提供する、すなわち、ウェブサービスとして実装されるアプリケーションプログラミングインタフェース(API)として実装される。このAPIは、決済プロセッサと関連付けられる1つ以上のクライアントに既知である若しくは利用可能であるか、送信/提供されるかのいずれかである。一部の実施形態において、このAPIは、決済プロセッサによって提供されるサービス又は機能にアクセスするための登録又は署名プロセスを受けてクライアントに提供されてもよい。一部の例において、当該APIは、例えばSwaggerなどのAPIユーザインタフェースを介したクライアントによる使用のために提供又は公表されてもよく、Swaggerは、ウェブベースのサービスにアクセスすることを望むクライアント又は他のエンティティのための周知のAPI設計及び開発ツール又はインタフェースである。
【0015】
前記第1の態様の方法は、複数のマイナーの中の各マイナーから、トランザクションをマイニングすることに関する手数料見積もりを取得するステップを含む。このステップは、トランザクションをマイニングすることに関連するマイニング手数料見積もりについてのクライアントからの第1の要求に応答して行われる。一部の実施形態において、クライアントからの第1の要求は、単一のトランザクションをマイニングすることに関する手数料見積もりであってもよいし、複数のトランザクションをマイニングすることに関する1つ以上の手数料見積もりについてであってもよい。一部の実施形態において、複数のトランザクションが存在する場合、決済プロセッサは、2つ以上(複数)のトランザクションに関連付けられた複数の要求を一緒に受信する又は取り扱う又は処理するための別個のAPI又はエンドポイントと関連付けられてもよい。そのようなエンドポイントはまた、単一の又は個別のトランザクションを処理してもよい。他の実施形態では、同一のエンドポイント、すなわち、決済プロセッサに関連する前述のAPIが、単一の及び複数のトランザクションに使用される。従って、1つ以上のマイナーから得られる手数料見積もりは、(i)単一のトランザクションについて各マイナーから得られる手数料見積もり、(ii)複数のトランザクションの各々に対して1つの、各マイナーからの複数の別々の手数料見積もり、(iii)複数のトランザクションの各々に適用される単一の手数料見積もり、又は(iv)第1の要求内でクライアントによって要求された複数のトランザクションの全てをマイニングすることをカバーする単一の統合手数料見積もりであり得る。一部の実施形態において、マイナーはノードであり、背景技術セクションでも上述したように、ロッキング及びアンロッキングスクリプトの検証並びにトランザクションをマイニングすること若しくはブロックチェーンに書き込むことを委託された1つ以上のプロセッサによって実装される。例えば、ビットコイン・サトシ・ビジョン(Bitcoin Satoshi’s Vision;BSV)が、売買又は移転される暗号通貨又はデジタル資産である場合、マイナーはBSVノードと呼ばれることがある。第1の態様の方法は、取得した手数料見積もりをクライアントに提供するステップを含む。一部の実施形態において、手数料見積もりは、トランザクションが何に関係するか、又は関与する当事者に関係なく、トランザクションをブロックチェーンにマイニングすることに関してマイナーによって徴収又は請求される現在の手数料に関係する。他の実施形態では、手数料見積もりは、要求内で特定され得る所与のトランザクションに基づくように調整されてもよい。一部の実施形態において、決済プロセッサは、受信した全ての手数料見積もりをクライアントに提供してもよいし、取得した手数料見積もりの中でクライアントに提供すべき1つ以上の推奨手数料見積もりを提供してもよい。
【0016】
有利なことに、例えばビットコインSV(BSV)のような暗号通貨などのデジタル資産の受取人である1つ以上のクライアント、すなわち、商人又は受取人エンティティに向けたAPIとして提供される決済サービスを実装することにより、第1の態様の方法は、クライアントが署名すること又は決済プロセッサによって提供されるウェブサービスを使用することを可能にすることによって、決済トランザクションが、ほぼ即座にマイニングされる(ブロックチェーンに書き込まれる)こと、又はマイナーがプルーフ・オブ・ワークパズルを解いた後に可能な限りすぐにマイニングされることを可能にする。現在手数料見積もりを提供することにより、所与のマイナーは、理論的に、その手数料のために該所与のマイナーによってマイニングされる次のブロックにトランザクションを追加することに合意又は約束する。有利なことに、これは、つまりは商人エンティティであるクライアントが、もはや、マイナーからの承認(コンファメーション)を待つ必要がないことを意味する。従って、有利なことに、クライアント及びそれぞれのマイナーに関連する0-confトランザクションを実行することができる。決済サービスAPIを使用するクライアントの身元は有利に匿名のままであることができながら、そのクライアントに関連する全てのトランザクションを、複数のマイナーの中の、マイニングすることに関する選ばれた又は選択された手数料見積もりを満たすマイナーによって、依然として確実にマイニングすることができる。故に、個々のクライアント又は商人は、追加の処理リソース又はネットワークリソースを実装する必要なく、提案する決済サービスAPIを利用することによって、それぞれのクライアントに関連する全ての支払の変更不可能且つ検証可能な記録の透明性、信頼性、及び提供の利益を役立てることができる。
【0017】
第1の態様の一部の実施形態において、取得した手数料見積もりの中の選択された手数料見積もりに関係する又はそれを含む所与のトランザクションを提出するためのクライアントからの第2の要求に応答して、当該方法は、該所与のトランザクションに対するブロックチェーントランザクションを生成することの要求を、複数のマイナーの中の1つ以上のマイナーに送信することを含む。一部の実施形態において、上述のように、クライアントからの該要求は、単一のトランザクションではなく、複数のトランザクションを提出するものであってもよい。これは、クライアントが任意の所与の期間内に多数のトランザクションを処理する又は取り扱う商人エンティティであり得る場合に有利であり、期間は、動的に定められてもよいし、あるいは、数分、数時間、又は数日であるように予め定められてもよい。これは、有利なことに、クライアントのワークロード/パフォーマンス要件に従った、ブロックチェーンネットワークに関連するシームレスなスケーラビリティを可能にし、また、クライアントによって取り扱われるトランザクション及び/又はカスタマの量に基づくことができる。複数のトランザクションが存在する場合、決済プロセッサは、一部の実施形態において、複数のトランザクションを提出するための別個のエンドポイントと関連付けられてもよい。他の実施形態では、決済プロセッサのための同一のAPIエンドポイントが、単一のトランザクションだけでなく複数のトランザクションを提出するためのクライアントからの要求に使用される。
【0018】
一部の実施形態において、選択された手数料見積もりは、クライアントから受信されるとともに所与のトランザクションに対して選択され、そして、それが、デジタル資産決済を必要とするクライアントから購入された商品又はサービスに鑑みて、クライアントと例えばクライアントのカスタマなどの別のノード又はエンティティとの間の支払要求又は決済トランザクションに関係付けられ得る。当該方法は、次いで、複数のマイナーの中の選択された手数料見積もりを満たす少なくとも1つのマイナーから、ブロックチェーントランザクションに関連するアウトプットスクリプト、例えばUTXO、を受信することを含む。例えば、一部の実施形態において、手数料見積もりを満たすために、該少なくとも1つのマイナーは、選択された手数料見積もりよりも高い価値、又は低い価値、そして、一部のケースでは、クライアントに関連する1つ以上のルール又は所定の基準に応じて選択された手数料見積もりよりも高い価値を持つ現在手数料見積もりを提供している又は関連付けられているはずである。当該方法は、次いで、結果をクライアントに送信することを含み、該結果は、所与のトランザクション、すなわち、クライアントとカスタマとの間での決済に関係するブロックチェーントランザクションのトランザクション識別子(TxID)を含む。
【0019】
有利なことに、本開示のAPIは、REST(Representational State Transfer)エンドポイントとして実装されることができ、それにより、クライアントが例えばHTTPSなどの標準的なインターネット又はウェブベースのプロトコルを使用して通信することを可能にする。さらに、有利なことに、第1の態様の決済サービスは、デジタル資産決済に関連する対応するトランザクションが、選択された手数料見積もりに基づいて即座に作成されてブロックチェーンに書き込まれることを可能にする。クライアントによって又はクライアントのために決済プロセッサによって選択された又は選ばれたものである選択された手数料見積もりに基づいてトランザクションをマイニングすることは、有利なことに、クライアントからの選択された手数料見積もりと一致する又は満たす現在手数料見積もりで所与のマイナーがトランザクションをマイニングすることになるという保証を既に提供されていて、複数のマイナーの中の少なくとも1つのマイナーがほぼ即座に又は可能な限り速やかにトランザクションをブロックチェーンにマイニングする又は書き込むことを可能にする。故に、当該決済サービスAPIは、クライアントが、ブロックチェーンにおいてトランザクションが実際にブロックに追加されていてマイニングされることのマイナーからの承認をクライアントが待つ必要なく、安全且つ信頼性あるやり方でクライアントのためにブロックチェーンにおいて即時トランザクション又はゼロ承認トランザクション(0-conf)がマイニングされることを可能にするという利点を持つ。これは何故なら、所与のマイナーが既に、第1の要求に応答して、トランザクションをマイニングすることに関する現在手数料見積もりを送信することによって、当該マイナーがマイニングを実行できることを示しているからである。第1の態様の方法は、第1の態様に従ったマイニングは、クライアントによって又はクライアントのために選ばれたものである選択された手数料見積もりに基づいて行われることになるので、即時トランザクションがマイニングされることを可能にすることに関連する二重支払リスクを低減させる。故に、選択された手数料見積もりを満たすマイナーだけがトランザクションをマイニングすることができ、手数料見積もりを満たす最初のマイナーによって、ブロックチェーンに関連付けられるブロックにトランザクションが追加されると、そのトランザクションは他のマイナーによってマイニングされることはできない。
【0020】
決済プロセッサによって実装される決済サービスを提供する第1の態様に従った方法の一部の実施形態は、クライアントに提案すべき推奨手数料を決定することに基づいて、取得したトランザクションマイニング手数料見積もりを提供することを有し、決定される手数料は、複数のマイナーからの取得した手数料見積もりの平均値又は取得した手数料見積もりの最大値とし得る。有利には、二重支払を避ける試みで、決済プロセッサは、第1の要求に応答して複数のマイナーから得られた最も高い手数料値でトランザクションが提出されることを推奨することができる。斯くして、全てのマイナーに、それらそれぞれが現在見積もった手数料でそのトランザクションをマイニングする機会を等しく与えることができる。一方、推薦されたトランザクションを、受信した全ての手数料見積もりの中央値又は平均値の手数料、又はそれより高い手数料でトランザクションを提出するという推奨である場合には、より高い見積もりを持つマイナーは、そのトランザクションを単に例えば補助メモリプールなどのメモリプール(mempool)に保持することができるだけであり、それを用いて、トランザクションの任意の二重支払に対するチェックを行ってそれを排斥する。同様の利点が、選択された手数料見積もりが推奨手数料見積もりに基づく場合、又は推奨がクライアントによって行われる選択の部分である場合に当てはまる。
【0021】
有利には、決済プロセッサは、選択された手数料見積もりとなるようにその後にクライアントが選び得る手数料見積もりを推奨し、それは、一部の実施形態において、クライアントへのデジタル資産決済に関連するトランザクションを提出するためにクライアントが進んで支払う意思がある最大値である。これは、クライアントが、計算的に高機能のものである場合、又はクライアントが、手数料見積もりを自身で選択するのではなく、決済プロセッサによって推奨が提供されることを予め決めている場合に有利である。故に、有利なことに、クライアントは、手数料見積もりを選択するため又は手数料見積を恣意的に選択するために新たな又は別個の経験則又は計算を適用するのではなく、推奨手数料見積もりに基づいて手数料見積もりを選択することができる。
【0022】
一部の実施形態において、推奨又は推奨手数料見積もりが、つまりは決済プロセッサによって提供されるAPIである決済サービスから提供されるとき、この推奨手数料見積もりが提供されてもよいし、あるいは、推奨手数料見積もりを含む取得した全ての手数料見積もり、識別子を含む推奨手数料見積もりが提供されてもよい。有利なことに、推奨と、受信した全ての手数料見積もりとを提供することにより、決済プロセッサは、クライアントに、トランザクションを提出するのに推奨手数料見積もりを用いること又は受信した他の手数料見積もりから異なる手数料見積もりを選択することのいずれの選択肢も提供する。
【0023】
一部の実施形態において、手数料見積もりをマイナーから取得すると、第1の態様の方法は、取得した手数料見積もりを、決済プロセッサにより、複数のサービスレベル又は複数のサービスカテゴリーに分類することを含む。一部の実施形態において、これは、単一のトランザクションについて又は複数のトランザクションのバッチについて各マイナーから得られた手数料見積もりに基づき得る。例えば、取得した手数料見積もりが動的に設定される又は予め定められた範囲内である場合、特定のサービスレベルが所与のマイナーに割り当てられる。一部の実施形態において、このサービスレベルは、トランザクション手数料(例えば、これは、マイナーによって見積もられた手数料とし得る)及びリレー手数料に基づき得る。リレー手数料は、所与のマイナーが、トランザクションを検証し、続いてそれをブロックチェーンネットワーク内のピアノードに中継することを検討するための可能な最低手数料である。一部のケースにおいて、これらの手数料はどちらも同じであり得る。殆どのケースにおいて、リレー手数料は、所与のマイナーからの見積もりトランザクション手数料よりも低額となる。一部のブロックチェーンでは、マイナーが見積もる手数料は、通常、如何なるトランザクションに対しても同じままである設定された又はデフォルトのトランザクション手数料である。一部の実施形態において、リレー手数料は、複数のマイナーについて既知であり、且つ/或いは共通の、すなわち、デフォルトのリレー手数料であり得る。上述のように、殆どのケースにおいて、このリレー手数料はトランザクション手数料よりも低額である。時々、それがトランザクション手数料と同じであることもある。
【0024】
マイナーから得られる手数料見積もりに対して割り当てられる複数の取り得るサービスレベルの中の特定のサービスレベルは、一部の実施形態において、ブロックにマイニングされるべき(1つ以上の)トランザクションに関連する優先度に基づき得る。一部の実施形態において、特定のサービスレベルはまた、同じトランザクションに関連して更に資金/デジタル資産を使わせるための悪意ある試みが拒絶されることを確保するためにマイナーによって提供される二重支払保護の程度に基づいてもよい。故に、より高いサービスレベルは、例えば数分未満すなわち15-20分以内などの短い期間内に且つ/或いはより良い二重支払保護を伴ってマイニングされる必要があり得るいっそう高い優先度のトランザクションを指し示し得る。より低いサービスレベルは、例えば24-48時間以内などのもっと長いマイニング時間、及び/又は所与のマイナーによってマイニングされないトランザクションには二重支払保護を提供しないことと関連付けられ得る。一部の実施形態において、トランザクションの優先度はクライアントによって与えられてもよく、そして、サービスレベルは、クライアント要件に基づいて、全てのトランザクションについてこのクライアントに関連付けられる。一部の実施形態において、二重支払保護は、所与のマイナーによってマイニングされないトランザクションを補助メモリプールに格納して、二重支払に対するチェックが実行され得るようにする機能にと関連し得る。
【0025】
一部の実施形態において、サービスレベルの決定は、決済プロセッサに関連付けられるコンフィギュレーションレコード又はファイルエントリに関連する固定値及びルールに基づき得る。そのようなケースにおいて、サービスレベルを割り当てるためのこれらの値は、決済プロセッサで設定され得る。他の実施形態では、所与のサービスレベルに関連する機能を更に定義するために、新たな値又はルールを追加すること、又はコンフィギュレーションレコードを修正することが可能であり得る。これは、上述のトランザクションの優先度及び所与のサービスレベルに関連する二重支払保護のうちの1つ以上に加えてとすることができ、あるいは一部のケースで、それに代えてとしてもよい。これは、サービスレベルを割り当てるために、取得した手数料見積もりと比較され得る。
【0026】
一部の実施形態において、所与のサービスレベルと関連付けられるトランザクション手数料は、動的に割り当てられてもよいし、あるいは、そのサービスレベルに対して決済プロセッサによってデフォルトの推奨手数料又は選択された手数料として予め定められてもよい。その場合、この推奨手数料又は選択された手数料は、一部の実施形態において、所与のマイナーによって提供されるサービスレベルインジケータと共にクライアントに送られてもよい。一部の実施形態において、各サービスレベルと関連付けられる手数料は、既にクライアントに知られていたりクライアントと合意されていたりしてもよい。例えば、クライアント要件と、トランザクションのためにクライアントに関連付けられた選択された料金とに基づくサービスレベルは、一部のケースで、事前に合意されているとし得る。これは、外部サービスレベルアグリーメントに基づいてもよいし、決済プロセッサによって提供されるサービス又は機能の使用をクライアントが登録するときに設定されてもよい。一部の実施形態において、サービスレベル及び手数料は、各トランザクションに対して、あるいは複数のトランザクションのバッチのケースではトランザクションのそのバッチに対して、クライアントによって選択されてもよい。
【0027】
一部の実施形態において、決済プロセッサによって事前割り当てられる又は推奨若しくは選択されるサービスレベルは、第1の要求の一部としてクライアントから受信される1つ以上のサービス要件に基づき得る。一部の実施形態において、サービスレベルは、ブロックチェーントランザクションを作成することの要求で、選択/推奨見積もりと共に、マイナーに対して提供又は特定される。
【0028】
有利なことに、それぞれのマイナーに関連付けることが可能な定義された一組のサービスレベルに基づいてマイニング手数料を分類することは、トランザクションをマイニングするのに適用されるマイニング手数料の額の透明性及び標準化、並びに割り当てられたサービスレベルでトランザクションをマイニングするための所与のマイナーに関するパフォーマンスの透明性を保証する。多くのアプリケーションでのブロックチェーンの使用が増えるにつれて、ブロックチェーンに提示又は提出されるトランザクションの数が増えるので、定められた数のサービスレベルのこのような分類は、二重支払に対する要求保護レベルがマイナーによって提供されることの確実さとともに、期待されるサービスに対する手数料の透明性及び更なる可視性を保証する。これは、クライアント数、マイナー数、及びブロックチェーンに関連付けられた決済プロセッサによって扱われるクライアント/マイナー当たりのトランザクション数の指数関数的な増加に対してシームレスなスケーラビリティを確保するために重要である。現行では、既存のどのマイナー手数料メカニズムでも、見積もられた手数料率が実際に0-confの安全性を提供することになるという保証も可視性もない。
【0029】
デフォルトの又は定義された又は既知のリレー手数料に基づいて決済プロセッサによって分類されると、このような分類は、一部の実施形態において、将来のトランザクションでマイナーに対して使用又は適用され得る。加えて、有利なことに、このような分類はまた、トランザクションをマイニングすることに関していっそう良い又はいっそう競争力のある手数料見積もりを提示するようにマイナーを促すことで、つまりはマイニングするための初見である手数料見積もりを満たすトランザクションをマイニングすることにこだわりながらも、それらマイナーが所与のクライアントに適合する異なる又はより良いサービスレベルと関連付けられ得るようにし得る。
【0030】
また、有利なことに、当該サービスレベル分類は、クライアント及びマイナーが、サービスレベルに基づいてトランザクションを区別することを可能にする。現行では、トランザクションを区別して、異なるクライアントに対する異なるタイプのトランザクションを異なるレートで価格付けするメカニズムは存在しない。加えて、有利なことに、決済プロセッサによって実行されるサービスレベルに基づく上述の分類は、マイニングノードのコンフィギュレーションへの変更を必要とせずに、そのような分類を実装することを可能にする。これは何故なら、サービスレベルに関連付けられる提案するメカニズムは、決済プロセッサのAPIを使用して、手数料評価を、マイナー又は検証ノードではなく決済プロセッサへと外部化し、それ故に、実装並びにクライアント及びマイナーへの適用が容易であり、且つ例えばBSVブロックチェーンなどのブロックチェーンのスケーラビリティを大いに助けるからである。
【0031】
一部の実施形態において、当該方法は、それぞれの手数料見積もりを提供する複数のマイナーの中の所与のマイナーの身元を検証するステップを有し、身元は、所与のマイナーに関連付けられたデジタル署名に基づいて検証される。各マイナーに関連付けられた秘密鍵及び公開鍵(又は公開アドレス)を含む暗号鍵ペアが、手数料見積もりが実際に所与のマイナーを起源とするものであること、すなわち、秘密鍵によって署名されたデータは、対応する公開鍵を用いてのみ復元又は検証可能であることを検証するために使用され得る。検証がデジタル署名に基づく場合、標準的な公開鍵基盤(public key infrastructure;PKI)技術が使用及び実装され得る。
【0032】
他の実施形態では、マイナーの身元を検証するために、加えて又は代わりにいずれかで、所与のマイナーに関係する識別子を使用することができる。一部の実施形態において、当該方法は、例えばMinerIDなどの決済プロセッサを含む。一部の実施形態において、上記識別子は、所与のマイナーの評判インジケータと関連付けられ得る。一部の実施形態において、MinerIDは、所与のマイナーがその一部をなすマイニングプールに基づくことができ、あるいは、所与のマイナーに固有のものとすることができる。評判インジケータは、マイナーのパフォーマンスの尺度に関する。例えば、一部の例において、この評判は、所与のマイナーが、見積もった手数料で、過去にどのようにトランザクションを実行又はマイニングしたかに基づき得る。例えば、マイナーが、そのマイナーが見積もった手数料で、又は該手数料の許容範囲内で、定期的にトランザクションをマイニングしている場合、評判インジケータは、例えば値が高いことによって、良い評判を指し示し得る。一部の実施形態において、マイナーの評判スコア又はインジケータは、そのマイナーと通信可能に結合された少なくとも1つの決済プロセッサによって計算、維持及び管理され得る。
【0033】
一部の実施形態において、決済プロセッサによって実装される第1の態様の方法は、複数のマイナーの中の所与のマイナーから取得した手数料見積もりを、PKI技術を用いて該所与のマイナーの身元を検証するためのデジタル署名とは異なるものであるマイナー署名に基づいて検証するステップを含み得る。この検証ステップのために決済プロセッサによって使用されるマイナー署名は、有利には、決済プロセッサに提供されたそれぞれの手数料見積もりについて、トランザクションをマイニングするというマイナーのコミットメントを示す又はその役割を果たす。マイナー署名の存在はまた、有利には、マイナーが相反する(1つ以上の)トランザクションを拒否することを確認するように機能し得る。従って、マイナー署名に基づいて検証するステップは、有利なことに、所与のマイナーがマイニングのためにトランザクションをブロックに含めること、及びそれらが如何なる相反するトランザクションも含まないことの保証として作用する。一部の実施形態において、所与のマイナーのパフォーマンスを、該所与のマイナーによって提供される(1つ以上の)そのような保証に基づいてモニタリングすることは、該所与のマイナーに関連するマイナースコア又は評判を定めたり、それに影響を及ぼしたりし得る。
【0034】
一部の実施形態において、複数のマイナーの中の各マイナーによって提供される手数料見積もりは、手数料見積もりの値を含むデータ型として決済プロセッサに提供される。一部の実施形態において、該データ型は、JavaScript(登録商標)オブジェクト表記(JSON)オブジェクトフォーマットにおけるものである。
【0035】
一部の実施形態において、決済プロセッサにて上記少なくとも1つのマイナーから受信するアウトプットスクリプトは、上記少なくとも1つのマイナーのためのメモリプールに関連付けられた未使用トランザクションアウトプット(UTXO)であり、該UTXOは、クライアントとカスタマとの間でのデジタル資産決済に関係するブロックチェーントランザクションのトランザクション識別子(TxID)を含む。
【0036】
一部の実施形態において、クライアントが、カスタマとの所与の決済トランザクション又は当該クライアントと関連する何らかのトランザクションに関係するブロックチェーントランザクションを有利に識別又は追跡できるようにするために、当該方法は、トランザクション識別子に対応するブロックチェーントランザクションを取得することの要求を複数のマイナーに送信するステップを含み、この要求は、クライアントからのトランザクション識別子に関連付けられたステータスクエリに応答して、決済プロセッサによって少なくとも1つのマイナーに送信される。応答して、決済プロセッサは、複数のマイナーの中の少なくとも1つのマイナーから、以前に生成された対応するブロックチェーントランザクションを取得する。該少なくとも1つのマイナーによるブロックチェーントランザクションのマイニング状態に基づいて、当該方法は、トランザクション識別子に関連付けられた、得られたブロックチェーントランザクションに関係するステータス結果を、クライアントに送信するステップを含む。該結果は、ブロックチェーントランザクションが、マイニングされた、すなわち、完了したのか、それとも、何らかの理由で拒否されたのか、それとも、この所与のマイナーの前に複数のマイナーの中の別のマイナーによって既にマイニングされたものであり得るために無効であるのかを指し示し得る。これは、有利なことに、特定のトランザクションに対して異なるマイナーによってマイニングが行われた場合に二重支払を回避する。一部の実施形態において、マイナーは、ブロックに追加していない又は補助メモリプール内でマイニングされていないトランザクションを維持することができ、補助メモリプールは、当該マイナーと関連付けられた主メモリプールとは別個の、代わりの又は追加のメモリプールである又はそれとして振る舞うことができる。補助メモリプールは、TxIDを二重支払についてチェックすることができるような一時的なメモリプールとし得る。これは、有利なことに、トランザクションが所与のマイナーによってマイニングされなくとも、それが依然として補助メモリプール内に保持され、将来の二重支払についてチェックして拒否するのに使用されることを保証する。所与のマイナーによってマイニングされない又はそれによるマイニングを意図しないトランザクションを該所与のマイナーの補助メモリプールに保持することには、期限が存在し得る。一部の実施形態において、補助メモリプールに格納されるトランザクションは満了時間と関連付けられることができ、その後にそれらは除去されることになる。一部の実施形態において、所与のマイナーによってマイニングされないトランザクションを、それぞれの補助メモリプールに格納するための別の手数料がマイナーに関連付けられ得る。上述のように、手数料見積もりが複数のサービスレベルに分類される場合、補助メモリプールは、二重支払保護を提供するマイナーに付随する。
【0037】
一部の実施形態において、上述のように、クライアントからの要求は、毎回単一のトランザクションではなく、バッチ内の複数のトランザクションのステータスをまとめてクエリするものであってもよい。マイニングのためのブロックチェーンへの複数のトランザクションの提出と同様に、単一のステータスクエリ要求で複数のトランザクションをまとめてクエリすることは、特に、クライアントが多数のトランザクションを処理する又は取り扱う商人エンティティであり得る場合であって、一度に処理すべき複数のトランザクションを提出している場合に有利である。これは、有利なことに、システムがクライアント要件に従ってシームレスにスケーリングすることを可能にし、また、クライアントによって扱われるトランザクション及び/又はカスタマの量に基づくことができる。複数のトランザクションが存在する場合、決済プロセッサは、一部の実施形態において、複数のトランザクションをクエリするための別々のエンドポイントと関連付けられ得る。他の実施形態では、決済プロセッサに対する同一のエンドポイントが、単一の及び複数のトランザクションをクエリするためのクライアントからの要求に使用される。
【0038】
一部の実施形態において、第1の態様の方法は更に、ハイパーテキスト転送プロトコルセキュア(HTTPS)フォーマットにて、クライアントから、手数料見積もりのための第1の要求、クライアントに対するデジタル資産決済に関連するトランザクションを提出するための第2の要求、及び/又はトランザクションに関するステータスクエリを受信するステップと、次いで、これらをリモートプロシージャコール(RPC)フォーマットに変換した後に、該RPCを複数のマイナーに送信するステップと、を実行するためのアプリケーションプログラミングインタフェース(API)コンバータを、決済プロセッサに付随して設けるステップ、を有する。これは、ウェブベースのAPIを用い、そして、ウェブサービスのためにインターネットプロトコル通信標準を使用して通信しない複数のマイナーとの相互運用性をシームレスに提供することで、クライアントがHTTPSを介して、ブロックチェーンに関連する要求を通信することを可能にするので有利である。例えば、現行のBSVマイナー又は実装は全て、リモートプロシージャコールを使用している。この実施形態で実装されるAPIコンバータは、HTTPSからRPCへの変換とその逆変換、又は他のウェブベースのプロトコルから個々のマイナーによってサポートされる代わりの通信プロトコルへの変換、又は想定され得る所与の暗号通貨又はデジタル資産のためのネットワークに限定されない。逆のフローパスにおいて、第1の態様の方法はまた、複数のマイナーの中の1つ以上のマイナーから、対応するブロックチェーントランザクションに関連する応答をRPCフォーマットで受信し、従って、それぞれの応答をクライアントのためにHTTPSを用いて変換することを含む。故に、有利には、提案するインタフェースを決済プロセッサによって実装することは、クライアント(受取人)及びマイナーが相異なる無線データ通信プロトコル及びメカニズムを使用する場合に、トランザクションをブロックチェーンに提出するためのシームレスな通信を可能にする。
【0039】
一部の実施形態において、決済プロセッサに関連付けられたAPIゲートウェイが設けられ得る。上述のAPIコンバータは、そのような実施形態ではAPIゲートウェイと関連付けられ得る。さらに、APIゲートウェイはまた、一部の実施形態において、以下に限られないが:
- トランザクションをキャッシュすること;
- マイナーノード障害の場合に回復機能を実行すること;
- 決済プロセッサ及び/又はクライアント及び/又はマイナーノードに/からメッセージ又は通知を送るのに使用され得る1つ以上のエンドポイント又はURLの記録を保持すること;
- 何らかの理由で提出するのを失敗したトランザクションの追跡を含む回復機構を提供すること。一部の例において、これは、決済プロセッサで保持される又はそれによって設定されるコンフィギュラブルパラメータと、期限切れになった被追跡トランザクションを除去するためのメカニズム、とを含めることとし得る。APIゲートウェイはまた、障害シナリオにおけるトランザクションを再提出するための機能と関連付けられることができ、それにより、偽物ではないトランザクションのエラー処理のための機能を提供するとともに、二重支払に対して差別化すること;
のうちの1つ以上を含む機能を実行する/担うように、1つ以上のコンピューティング装置内に実装され得る。
【0040】
第2の態様によれば、本開示は、ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法を提供し、当該方法は、クライアントに関連付けられた1つ以上のプロセッサによって実装され、クライアントは、クライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合される。一部の実施形態において、決済プロセッサは、上述の第1の態様の方法及び関連実施形態を実装するように構成される。つまりは商人であるクライアントによって実施される第2の態様の方法は、少なくとも1つの決済プロセッサの中のある決済プロセッサに第1の要求を送信するステップを含み、該要求は、決済プロセッサを介して複数のマイナーから得られることになる、1つのトランザクション又は複数のトランザクションをマイニングすることに関する1つ以上の手数料見積もりに関係する。上述のように、取得される手数料見積もりは、任意のトランザクションをマイニングすることに関係し、あるいは、カスタマからのデジタル資産決済に関係する所与のトランザクションに特有のものであることができる。上述のように、第1の要求また、マイニングに要求されるサービスレベルを指し示してもよい。
【0041】
第2の態様の一部の実施形態において、決済プロセッサからの1つ以上の手数料見積もりの受信に応答して、当該方法は、受信した1つ以上の手数料見積もりの中から手数料見積もりを選択することを含む。第1の態様にて述べたように、選択される手数料見積もりは、決済プロセッサによって行われる推奨に基づいてもよいし、基づかなくてもよい。第2の態様の方法は、次いで、カスタマからのデジタル資産決済を要求及び/又は処理することを含み、該要求は選択された手数料見積もりに関連する。一部の実施形態において、この要求は、デジタル資産決済のためにクライアントがカスタマに対して発行する支払請求書又はインボイスに類似する。例えば、クライアントは、デジタルウォレットに関連付けられたコーヒーショップ端末とすることができ、カスタマは、例えば、この要求に応答してコーヒーに対して2サトシを支払っているとすることができ、カスタマもデジタルウォレットに関連付けられる。選択された手数料見積もりがここで選ばれるので、これがカスタマからの支払のための要求に追加され得る。当該方法は、次いで、上述のカスタマ支払に関連する所与のトランザクションのための第2の要求を決済プロセッサに提出することを含み、該提出は、該所与のトランザクションをマイニングすることに関して選択された手数料見積もりに基づく。一部の実施形態において、選択された手数料見積もりは、第2の要求内で明確に示されるか第2の要求に明確に含められるかし、その結果、決済プロセッサは、選択された手数料見積もりで又は選択された手数料見積もり未満でトランザクションをマイニングすることができるマイナーを有利に特定することができ、あるいは、加えて又は代わりに、選択された手数料見積もりを自身が満たすか否かをマイナーが特定できる。
【0042】
上述のように、一部の実施形態において、クライアントは、決済プロセッサから受信した最も高い手数料見積もりの値に基づいて手数料見積もりを選択してもよいし、あるいは、受信した手数料見積もりの値の平均値若しくは中央値又はその近くであってもよい。いずれのオプションに付随する利点も、上述したのと同じであり、すなわち、最大値は、マイニングするチャンスを全てのマイナーが持つことを可能にし、他の値は、選択された見積もりで又はそれ未満でトランザクションをマイニングすることができることによって手数料見積もりを満たす一部マイナーにマイニングを制限する一方で、(例えば、見積もりが高すぎたために)トランザクションをマイニングすることができないマイナーは、なおも、ブロックチェーントランザクションの記録を例えば補助メモリプールなどの一時的なストレージに維持することができ、その結果、これを用いて、所与のトランザクションに対する二重支払に対する検証を行うことができる。
【0043】
第2の態様の一部の実施形態において、当該方法はまた、少なくとも1つのマイナーによって生成された、つまりはクライアントとカスタマとの間のトランザクションである提出されたトランザクションに対応するブロックチェーントランザクションのトランザクション識別子を受信することを含む。一部の実施形態において、当該方法は、取得したトランザクション識別子に関連付けられたステータスクエリを送信することと、トランザクション識別子に対応するブロックチェーントランザクションのステータス結果を取得することとを含む。
【0044】
第2の態様に関連する利点は、第1の態様に関して上述したものに関係する。第2の態様は第1の態様と相補的なものであり、トランザクションがブロックチェーンに書き込まれることを要求するクライアントによって実装される方法を示している。第2の態様の方法を実装するクライアントは、一部の実施形態において、第1の態様の方法に従って決済APIとして決済サービスを実装するように構成された少なくとも1つの決済プロセッサと通信し得る。
【0045】
加えて、本態様の方法は、有利なことに、クライアントが、手数料見積もりを選択して、クライアント又は商人の制御を提供するものである決済サービスを提供することを可能にし、又はそれらのトランザクションが所与のマイニング手数料で適時にマイニングされることに影響を与える確実性を可能にし、それにより、提案する決済サービス又は決済APIを使用するクライアントのためにマイニングされるトランザクションに対して、高められた安全性、相互運用性、信頼性、効率及び適時性を提供する。
【0046】
上述のように、決済プロセッサによって実装される決済サービスはAPIであるので、一部の実施形態において、クライアントからの第1の要求及び/又はステータスクエリはHTTPS GET要求であり、第2の要求はHTTPS POST要求である。故に、有利なことに、トランザクションがブロックチェーンにマイニングされることを要求するために、クライアントによって標準的なインターネット及びウェブベースの通信プロトコルを使用することができる。一部の実施形態において、クライアントからの第1の要求及び/又は第2の要求及び/又はステータスクエリに関連するデータは、JavaScript(登録商標)オブジェクト表記(JSON)オブジェクトフォーマットで提供される。
【0047】
第3の態様によれば、ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法を提供し、当該方法は、複数のマイナーの中のあるマイナーに関連付けられた1つ以上のプロセッサによって実行され、複数のマイナーは、クライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合される。一部の実施形態において、当該決済サービスは、第1の態様に関連して上述した方法に基づく決済プロセッサによって実装される。一部の実施形態において、クライアントは、上述の第2の態様に関連する方法を実装するように構成される。複数のマイナーの中のあるマイナーによって実装される第3の態様の方法は、クライアントに関連するトランザクションに対する手数料見積もりのための第1の要求に応答して、ブロックチェーンにおいてトランザクションをマイニングすることに関する当該マイナーに関する現在手数料見積もりを提供するステップを含む。一部の実施形態において、手数料見積もりは、クライアントに関連付けられた決済プロセッサ用のデータ型として提供され得る。上述のように、第1の要求は、任意のトランザクション又は複数のトランザクションに対する現在手数料見積もりの要求に関係してもよいし、あるいは、クライアントとカスタマとの間の特定のトランザクションに固有であってもよい。
【0048】
第3の態様の一部の実施形態において、選択された手数料見積もり(この選択は、第1及び第2の態様にて説明したようにクライアントによって行われることができる)に基づく、クライアントに関連する所与のトランザクション、をブロックチェーンに提出することに関する、クライアントに代わっての決済プロセッサからの第2の要求に応答して、当該方法は以下のステップを含む。所与のトランザクションに関連する選択された手数料見積もりが当該マイナーの現在手数料見積もりを満たすとの決定、すなわち、選択された手数料見積もりが現在手数料見積もりにあるか範囲内であるとの決定に基づいて、当該所与のマイナーが、所与のトランザクションに関連する対応するブロックチェーントランザクションを生成する。当該方法はまた、作成されたブロックチェーントランザクションのアウトプットスクリプト(UTXO)を生成し、生成したアウトプットスクリプトを、当該マイナーに関連付けられたメモリプールに追加し、そして、アウトプットスクリプトを決済プロセッサに送信することを含み、アウトプットスクリプトは、対応するブロックチェーントランザクションに関連するトランザクション識別子TxIDを含む。一部の実施形態において、トランザクション識別子に関連するステータスの要求に応答して、当該マイナーは、対応するブロックチェーントランザクションの現在のマイニングステータスに基づいて結果を返すことを含む。
【0049】
第3の態様に関連する利点は、第1及び第2の態様に関して上述したものに関係する。第3の態様は第1及び第2の態様と相補的なものであり、ブロックチェーンに書き込まれることが可能なクライアントに関するトランザクションを構築するための決済プロセッサに結合された複数のマイナーの中のあるマイナーよって実装される方法を示している。第3の態様の方法を実装するマイナーは、一部の実施形態において、第1の態様の方法に従って決済APIとして決済サービスを実装するように構成された少なくとも1つの決済プロセッサと通信し得る。
【0050】
一部の実施形態において、現在手数料見積もりを提供するステップ及び/又はアウトプットスクリプトを送信するステップ及び/又は結果を返すステップは、リモートプロシージャコール(RPC)として実施される。これは、例えば、BSVビットコインネットワークのように、RPCを介してワイヤレスに通信に連絡するようにマイナーが構成される場合に有利である。一部の実施形態において、第3の態様の方法は、更なる安全性、及びマイナープール又はネットワークの中での、すなわち、決済プロセッサに関連付けられる複数のマイナーの中でのデータフローのストリームライン化のために、当該マイナーからのRPCを、無線通信ネットワークを介してクライアントに対する決済プロセッサに伝播させる前に、ノードコネクタに、及びオプションで複数のマイナーに対するファイアウォールに、送信するステップを含み得る。また、有利には、ノードコネクタは、決済プロセッサに付随するAPIコンバータとプール内の1つ以上のマイナーとの間のセキュア通信チャネルを提供し得る。
【0051】
一部の実施形態において、例えば、現在手数料見積もりが選択された手数料見積もりよりも高いなど、所与のトランザクションに関連する選択された手数料見積もりが、当該マイナーの現在手数料見積もりを満たさないとの決定に基づいて、当該方法は、ブロックチェーントランザクションに関連するアウトプットを、当該マイナーに関連付けられた追加の一時的なメモリプールとし得るものである補助メモリプールに追加することを含む。上述のように、これは、マイナーノードがこのような一時的なエントリを用いて、所与のトランザクションに関連する二重支払がないことをチェックし及び有利には保証し得るように、所定の期間だけそこに格納され得る。
【0052】
本開示はまた、無線通信ネットワークを介して少なくとも1つのクライアント及び少なくとも1つのマイナーに通信可能に結合された決済プロセッサを有するコンピュータシステムを提供し、決済プロセッサに、クライアントからのHTTPS要求の、マイナーに対するRPC要求への変換及びその逆の変換のためのAPIコンバータが付随し、それにより決済プロセッサは第1の態様に従って実装される。当該コンピュータシステムはまた、無線通信ネットワークを介して決済プロセッサに通信可能に結合されるとともに少なくとも1つのカスタマと通信可能なクライアントを有し、それによりクライアントは第2の態様のコンピューティング装置に従って実装される。当該コンピュータシステムはまた、複数のマイナーを有し、各マイナーが無線通信ネットワークを介して決済プロセッサに通信可能に結合され、それにより各マイナーが第3の態様に従って実装される。
【0053】
一部の実施形態において、プロセッサとメモリとを有するコンピューティング装置が提供され、メモリは、プロセッサによる実行の結果として当該装置に上述の態様及び/又は実施形態を実行させる実行可能命令を含む。
【0054】
一部の実施形態において、実行可能命令を格納したコンピュータ読み取り可能記憶媒体が提供され、該実行可能命令が、コンピュータシステムのプロセッサによって実行される結果として、該コンピュータシステムに上述の態様及び/又は実施形態の方法を実行させる。
【0055】
次に、同様の機構を似た参照符号で参照する添付の図面を参照して、例示により、一部の特定に実施形態を説明する。
【0056】
第1の態様 - 決済プロセッサ
図1は、本開示の第1の態様に関するものであり、上述のように、クライアントのための決済サービスを実装するための決済プロセッサによって実行される方法を示している。決済プロセッサは、クライアント又は複数のクライアントに通信可能に結合されるとともに、2つ以上のネットワークをなすマイナー又は2つ以上のマイニングプールを含み得る複数のマイナーにも結合される。一部の実施形態において、決済プロセッサは、クライアントの一部であってもよいし、クライアントに関連付けて実装されてもよい。これは、クライアントが計算的に高機能の商業ポイント・オブ・セール(POS)端末である場合に当てはまる。本開示の態様及び実施形態は、そのような実装、すなわち、遠隔決済プロセッサ又はクライアントの一部であるもの、の両方をカバーすることを想定する。システムアーキテクチャの一例は、この中で後に説明する
図4にて見てとれる。
【0057】
図1に示されたシナリオ例では、複数のマイニング手数料見積もりを取得すること、取得した複数のマイニング手数料見積もりの中から選択された手数料見積もりに基づいてトランザクションを提出すること、並びにトランザクション識別子に関するステータスクエリを送信することに関する実施形態が、全て順次に行われるものとして説明され、
図1のフローチャートでの単一のプロセスとして説明される。しかしながら、本開示及び第1の態様は、そのように限定されると見なされるものではない。以下に記載されるステップ102-106における第1の要求で手数料見積もりを取得することに関するステップは、残りのステップとは別に独立して実施され得る。同様に、ステップ108-114における第2の要求でトランザクションを提出することに関するステップは、手数料見積もりを取得する先行ステップとは別に異なる時に実施され得る。同じように、ステップ116以降のトランザクションステータス照会に関するステップは、クライアントがトランザクションの識別子を認識した後の任意の時に実施されることができ、
図1のシーケンスに従う必要はない。ここでは、説明及び理解を容易にするために、全てのステップを単純にシーケンスで示しており、本開示は、如何なる状況でも、このようなシーケンス又はシナリオに限定されると見なされるべきでない。
【0058】
ステップ102は、ブロックチェーンにおいてトランザクションをマイニングすることに関連するマイニング手数料見積もりのための第1の要求をクライアントから受信することを示している。前述のように、第1の要求は、複数のトランザクションに関するものであってもよい。説明及び理解を容易にするために、
図1は、クライアントに関連する第1の要求内の単一のトランザクションに関して説明されるが、本開示は決してそのように限定されるものではない。このステップは、クライアントに代わってトランザクションをマイニングすることに関する複数のマイナーからのマイニング手数料見積もりの収集を意味する。トランザクションは通常、つまりは商人計算リソース又はエンティティであるクライアントとカスタマエンティティとの間で行われるデジタル資産決済に関係する。前述のように、第1の要求は、クライアントから、HTTPSプロトコルを介して又は用いて、JSONフォーマットで受信される。決済プロセッサは、クライアント向けのアプリケーションプログラミングインタフェース(API)として決済インタフェースを実装し、それ故に、APIがウェブサービスとして実装されるときにHTTPSを受け入れて処理することができる。APIエンドポイントがクライアントに利用可能にされる。第1の要求内に複数のトランザクションがある場合、同一のAPIエンドポイント又は決済プロセッサの別のAPIエンドポイントのいずれかを使用し得る。
【0059】
例えば、一部の実施形態において、決済プロセッサは、例えばRESTインタフェースなどの規格ベースのインタフェース設計を用いて決済サービスを実装することができる。REST(Representational State Transfer)は、ウェブサービス及びウェブベースのインタラクションを開発するためのアーキテクチャ様式である。REST API設計標準は、以下のコマンドを用いてHTTPS要求及び通信を処理することができる:
【表1】
ここでは殆どGET及びPOST HTTPS要求が論じられることになるが、本出願はこれらのコマンドに限定されるものではない。このステップ102にて、決済プロセッサによって受信される第1の要求は、GET getFeeQuote形式のHTTPS要求とし得る。
【0060】
REST APIのコンテキストにおけるリソースは、タイプと、関連データと、他のリソースとの関係と、それに対して動作する一組のメソッドとを持つオブジェクトである。一部の実施形態において、決済サービスは、決済プロセッサによって、例えばビットコインSV(BSV)ブロックチェーンなどのブロックチェーン又は分散型台帳の状態にアクセスし、アプリケーションインタフェースを介してその状態を変えることができる操作をトリガーし、それをREST APIとして公開するためAPI実装として提供される。従って、決済プロセッサは、1つ以上のクライアントに対するRESTエンドポイントと見なされ得る。説明を容易にするためだけに、全体を通して1つのクライアント(又は商人)及び1つの決済プロセッサについて説明するが、本開示はそのように限定されるものではない。クライアントは、故に、HTTPSを介して決済サービスと通信することができ、さらに、クライアントは、有利なことに、決済プロセッサへの、又は決済プロセッサによって実装される決済サービスへの、匿名アクセスを有し得る。2つ以上のクライアント及び2つ以上の決済プロセッサが存在する場合、クライアントは、一部の実施形態において、例えば、決済プロセッサを走らせる1つ以上の第三者との間でクライアントが交わし得る合意に基づいて、正しい又は意図した決済プロセッサ又はRESTエンドポイントをターゲットにする又はそれにコンタクトをとる責任を負う。
【0061】
ステップ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の形式で返すようにする必要があり得る。
【0062】
各マイナーから収集された取得した手数料見積もりに関するデータは、以下の例に与えるように、JSONオブジェクトとして規定され得る。
【0063】
各マイナーから返される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
]
【0064】
JSON FeeQuotesオブジェクトは、一部の実施例において、マイナーの詳細及び課金される手数料の配列を含み、一方、MinerFeeQuoteは、1つのマイナーから受信したマイナー及び手数料データを含むJSON構造である。上のJSONオブジェクトにおける用語の一部を以下にて説明する。
【0065】
CurrentHighestBlockHashは、getFeeQuote()が呼び出された時までにブロックチェーンが成長しているポイントにおけるブロックハッシュを特定するためのマーカーとして使用され得る。
【0066】
MinerSignatureは、上述のように、このトランザクションを保証することに合意したマイナーの署名を含み得る。これは、マイナーの身元を検証するのに使用されるデジタル署名とは異なる。これを行うことにより、マイナーは、当該マイナーが間もなくトランザクションをブロックに含めること、及びオプションで、相反するトランザクションを含めないことを保証し得る。マイナーがトランザクションを保証する意思がない場合、これはヌルに設定され得る。
【0067】
SignatureTimestampは、宣言した現在手数料でトランザクションをマイニングすることをマイナーが保証する時間を示し、すなわち、その手数料がその時点から取って代わられるまで保証される。この時間は、クライアントがその後にgetFeeQuote()の呼び出しを行った場合に取って代わられる。
【0068】
MinerReputationは、マイナーのパフォーマンスの尺度、すなわち、マイナーが約束した又は見積もった現在手数料でトランザクションをどれだけうまく行ったかに関係する。この評判スコア/インジケータは、各決済プロセッサによって計算、維持、及び管理され得る。
【0069】
Miner IDは、ブロックがマイニングされるときにコインベーストランザクションに追加される2つの部分からなるデータとし得る。Miner IDが存在しない場合、決済プロセッサは、そのマイナーを“NULL”のMiner IDでタグ付けしたり、単にブランクのままにしたりすることができる。
【0070】
各MinerFeeQuote内で、FeeTypesオブジェクトの配列を用いて、現在利用可能な様々な手数料タイプを捕捉し得る。将来、決済プロセッサによって提供されるgetFeeQuote()インタフェースへの如何なる変更も必要な獅子、手数料タイプを導入することができる。全てのトランザクションが1つのFeeTypes配列を持ち得る。
【0071】
ステップ106は、決済プロセッサにより、取得した手数料見積もりをクライアントに提供することを示している。これは、一部の実施例において、決済プロセッサによって決定された推奨手数料見積もりを含み得る。第1の態様に関して上述したように、このステップは、クライアントがウェブベースのAPIを用いて詳細事項にアクセスすることができるように、APIコンバータによるRPCからHTTPSへの変換を含み得る。
【0072】
ステップ108にて、クライアントから第2の要求が受信され、第2の要求は、取得した手数料見積もりの中から選択された手数料見積もりに関連して所与のトランザクションを提出することの要求である。所与のトランザクションは、一部の実施形態において、クライアントからの支払要求に応答してカスタマによってクライアントに対して行われるデジタル資産決済に基づく。例えば、これは、クライアントがコーヒーショップ内の商業端末である場合、一杯のコーヒーと引き換えてのサトシタイプ又は他のタイプのデジタル資産決済とし得る。このステップにて、クライアントは、決済プロセッサによって実装された決済サービスAPIを介して、このデジタル資産決済がブロックチェーンに書き込まれることを要求する。
【0073】
上述のように、クライアントからの第2の要求は、一部の実施形態において、複数のトランザクションを提出することの要求であってもよい。複数のトランザクションを提出することに関する要求は、同じ決済プロセッサAPI又は決済プロセッサに関連付けられた別のエンドポイントに送られ得る。決済プロセッサに関連付けられた全てのエンドポイントが、クライアントに知られたものとなり、あるいは、クライアントに提供されることになる。複数のトランザクションの場合の選択された手数料見積もりは、複数のトランザクションの全てをマイニングすることに関連するもの、すなわち、選択された手数料は、複数のトランザクションのバッチ内の10個のトランザクションをマイニングするための10サトシ、又は選択された手数料見積もりで複数のトランザクションのうちの各々をマイニングすることに関して選択された手数料に関連するもの、すなわち、選択された手数料は、バッチ内の10個のトランザクションの中の各トランザクションをマイニングするための1サトシ/トランザクション、のいずれかであってもよい。
【0074】
複数のトランザクションの場合、第2の要求の本体部(ボディ)は、ロー(raw)トランザクションの配列の形態とし得る。このエンドポイントを用いて、マイナーが作成する次のブロックに含めるために複数のロートランザクションをマイナーに送信する。
【0075】
要求ボディのフォーマットの一例を以下に示す:
POST /mapi/txs
[
"010000000135ff04d97f7f5d214b66dcc401cee7967c.......",
"0100000001569c0e1df6cdbbc99bdfbc25dc153ce5e........",
"etc …"
]
【0076】
応答例は、以下とし得る:
{
"apiVersion":"string",
"timestamp":"string",
"errorCount":"integer (count of where txn returnResult <> success)",
"txs":[
{
"txid":"string",
"minerid":"string|null",
"returnResult":"string",
"resultDescription":"string",
"currentHighestBlockHash":"string",
"currentHighestBlockHeight":"integer",
"txSecondMempoolExpiry":"string",
"confirmations":"integer (0 for unconfirmed)"
}
]
}
【0077】
2つめのトランザクションにおける選択された手数料見積もりは、決済プロセッサによって為される推奨に基づいてもよいし、1つ以上のトランザクションに対してクライアントによって選択されてもよい。
【0078】
上述のように、選択された見積もりは、取得した全ての手数料見積もりの平均値又は最大値に基づいてもよい。
【0079】
上述のように、一部の実施形態において、選択された手数料見積もりは、サービスレベルに基づくものであってもよく、取得した手数料見積もりが、決済プロセッサによって複数のサービスレベルに分類される。
【0080】
一部の実施形態において、各サービスレベルに関連付けられるマイニングの手数料及び特徴/機能は、決済プロセッサによって予め定められることができる。そして、所与のクライアントの要件に基づいて、そのクライアントにサービスレベル及び関連するマイニングの手数料(選択された手数料見積もり)を割り当て得る。クライアント要件は、そのクライアントが取り扱うトランザクションのタイプに基づき得る。サービスレベルは、例えば、外部サービスレベル合意書に基づいて事前に割り当てられたり事前合意されたりしてもよい。故に、事前割り当ては、トランザクションに関連付けられた優先度、及び選択された手数料見積もり/サービスレベルを満たす(1つ以上の)マイナーによって提供される二重支払に対する保護のレベルに基づき得る。
【0081】
従って、マイニングされるトランザクションのサービスレベルに関連付けられる手数料は、決済プロセッサによって予め定められて、クライアントと合意され得る。サービスレベル又は手数料がクライアントによって選択されていない場合、選択のために、複数のサービスレベル(各々がそれぞれの手数料に関連付けられる)に分類された取得手数料見積もりの詳細がクライアントに提供され得る。
【0082】
代わりに、決済プロセッサによって、サービスレベル及び関連する手数料を、選択された手数料見積もりとして推奨することも可能である。サービスレベルのこのような推奨は、そのクライアントに関連する以前のトランザクションからの学習したデータと統計に基づいてもよい。すなわち、一部のケースでは、決済プロセッサにより、クライアントからのインプットに基づいて推奨が提供される。
【0083】
上述のように、一部の実施形態において、サービスレベルは、取得した手数料見積もりと、1つ以上のトランザクションをマイナーがマイニングすることについて取り得る最低の手数料、すなわち、リレー手数料とに基づいてマイナーに割り当てられる。従って、有利なことに、異なるトランザクションタイプ又はユースケースに対して異なる手数料を適用することができる。トランザクションのタイプ又はサービス要件は、一部の実施形態において、クライアントによって取得され得る。
【0084】
サービスレベルはまた、マイナーから得られたトランザクション手数料見積もりの知識及びマイナーにとってのリレー手数料の知識に基づいて、決済プロセッサによって直ちに決定されてもよい。これは、クライアントが最低限のサービスレベルを指し示したか否かにかかわらず、決済プロセッサが、手数料を、そしてオプションでクライアントにとっての推奨手数料でさえも、分類することを可能にする。決済プロセッサは、手数料を取得すると、トランザクションに対して選択された/推奨される手数料から期待することができるサービスレベルをクライアントに通知し得る。これらは、そのサービスレベルに関連する属性を含んでもよい。
【0085】
下の表は、リレー手数料及びトランザクション(txn)手数料に基づいて手数料をサービスレベル(SL)0-4に分類するために決済プロセッサによって使用され得るマトリックスの一例を提供するものである。この例における手数料の単位は、バイト当たりのサトシで表されているが、本開示はそのように限定されるものではない。これは、一部のトランザクションに対してはデータバイト当たりのサトシで表されてもよい。他のデジタル資産又は暗号通貨も使用されることができる。このマトリックスは、このロジックに基づいてサービスレベルを分類することができるように、決済プロセッサに関連付けられた静的又は動的なコンフィギュレーションファイル又はエントリに格納され得る。
【0086】
下の例では、(i)トランザクションの優先度と、(ii)二重支払に対して提供される保護との2つの特徴が、サービスレベルについて検討されている。しかしながら、本開示は、そのように限定されるものではなく、サービスレベルは、他の特徴及び属性に基づくことができる。
【表2】
【0087】
この例では、以下である:
サービスレベル(SL)0、すなわち、SL0 - minRelayerfee<0.20サトシであり、どのマイナーもマイニングすることを保証せず、二重支払保護もない。すなわち、マイニングのための如何なるサービスの保証もない。マイニングされないトランザクションを、二重支払に対してチェックするための補助メモリプールに含めることを、手数料がカバーしないので、追加の二重支払保護はない。
【0088】
SL1 - (minRelayrfee)=<0.20サトシであり且つ(txnfee)=<0.3サトシである場合、低優先度であり、二重支払保護はない。すなわち、そのトランザクションは、マイニングキュー内の他のトランザクションよりも優先してマイニングされたりしないとすることができ、従って、(例えば)あと24時間程度マイニングされないことがあり得る。マイニングされないトランザクションを、二重支払に対してチェックするための補助メモリプールに含めることを、手数料がカバーしないので、追加の二重支払保護はない。
【0089】
SL2 - (minRelayrfee)=0.25サトシであり且つ(txnfee)=<0.4サトシである場合、中間優先度であり、二重支払保護がある。すなわち、そのトランザクションは、マイニングキュー内の他のトランザクションの全て又は大部分ではないが一部よりも優先され、従って、(例えば)12時間から24時間程度の期間内にマイニングされ得る。マイニングされないトランザクションを、二重支払に対してチェックするために使用されるものである補助メモリプールに含めることを、手数料がカバーするので、追加の二重支払保護がある。
【0090】
SL3 - (minRelayrfee)>=0.25サトシであり且つ(txnfee)=0.5サトシである場合、高優先度であり、二重支払保護がある。すなわち、そのトランザクションは、マイニングキュー内の他のトランザクションの大部分よりも優先され、従って、(例えば)12時間程度の期間内にマイニングされ得る。マイニングされないトランザクションを、二重支払に対してチェックするために使用されるものである補助メモリプールに含めることを、手数料がカバーするので、追加の二重支払保護がある。
【0091】
SL4 - txnfee>0.5サトシであり、最高優先度であり、全マイナーがマイニングすることになり、フルでの二重支払保護である。すなわち、そのトランザクションは、マイニングキュー内の他の全てのトランザクションよりも優先され、従って、(例えば)2時間程度の期間内にマイニングされ得る。マイニングされないトランザクションを、二重支払に対してチェックするために使用されるものである補助メモリプールに含めることを、手数料がカバーするので、追加の二重支払保護がある。
【0092】
このケースでは、ステップ104に記載の上述のJSONオブジェクトFeeQuotesはまた、以下を含み得る:
[
{
# MinerFeeQuote
“minerID”:<Alphanumeric>, #ヌルはminerIDなしを指し示す
“currentHighestBlockHash”:<Alphanumeric>,
“currentHighestBlockHeight”:<Alphanumeric>,
“timestamp”:<UTC timestamp>, # Fee timeStamp
“minerSignature”:<Alphanumeric>, #現在ブロックハッシュ+ブロック高さを含む
“minerReputation”:<Alphanumeric>, #ヌルであり得る
[
{
# FeeTypes
“feeType”:<“SPB”||“SPDB”>, #Satoshis-per-byte,Satoshis-per-data-byte等
{
# currentFee # 手数料単位タプル(xサトシ/yバイト)
“satoshis”:<Unsigned Integer>
“bytes”:<Unsigned Integer>
}
“expiry”:<Integer>, expiry datetime as set by miner
“feeOnExpiry”:<Floating Point Number>, #Expiryが0である場合、これはCurrentFeeに設定されるべきである
“keepInMempoolFee”:<Floating Point Number>, #補助メモリプールにTxを保持することの手数料
“mempoolExpiryFee”:<Floating Point Number>, #keepInMempoolFee満了後の手数料
},
{…}
]
{
# Service Level
“service level”:<Unsigned Integer>
“SLDescription”:<String>
}
“apiVersion”:<Numeric> #商業APIバージョンNN.nn (major.minorバージョン番号)
},
【0093】
一部の実施形態において、第2の要求は、POST submitTransaction(Tx)の形式のHTTPS要求であり、Txは、一部の実施形態において、クライアントとカスタマとの間での決済に関する所与のトランザクションに関連するJSONフォーマットのオブジェクトである。従って、Tx(JSONオブジェクト)は、第2の要求を決済プロセッサに提出してマイナーに引き渡すようにするのに先立って、クライアントがJSON構造として提供又は構築し得るトランザクションをブロックチェーン上に作成するのに必要なデータを含む。
【0094】
ステップ110は、ステップ108での所与のトランザクションに対応するブロックチェーントランザクションを生成することの要求を、複数のマイナーの中の1つ以上のマイナーに送信するステップを示している。このステップにて、決済プロセッサは、一部の実施形態において、前のステップでのHTTPS POST要求を、マイナーへの提出用のRPC要求に変換する。これは、要求RPC createRawTransaction(Tx)を用いて行われることができ、Txは、ステップ108で説明したようなJSONオブジェクトとして与えられる所与のトランザクションに関連するデータを含む。RPC createRawTransaction(Tx)は、与えられたインプットを使って新たなアウトプットを作成するトランザクションを作り出すためのRPCコールであり、アウトプットはアドレス又はデータであることができる。このRPC要求は、上記複数のマイナーに送られることができ、あるいは、ステップ108でクライアントからの選択された手数料見積もりを満たす又は満足するマイナーに送られることができる。上述のように、選択された手数料見積もり以下の現在手数料見積もりを提供したマイナーは、それらそれぞれの見積もった現在手数料でトランザクションをマイニングすることができるので、選択された手数料見積もりの要件を満たしていると見なされる。応答して、選択された手数料見積もりを満たすマイナーが、所与のトランザクションに対応するブロックチェーントランザクションを作成する。一部の実施形態において、所与のトランザクションに対応する16進符号化されたロートランザクションが決済プロセッサに返される。
【0095】
ステップ112にて、複数のマイナーの中の選択された手数料見積もりを満たす少なくとも1つのマイナーによって作成された対応するブロックチェーントランザクションに関連するアウトプット又はアウトプットスクリプトが、決済プロセッサにて受信される。アウトプットスクリプトは、該当マイナーによって作成された対応するブロックチェーントランザクションに関連するUTXOとし得る。一部の実施形態において、UTXOはまた、選択された手数料見積もりを満たす該当マイナーのメモリプールに格納され得る。このステップのアウトプットは、該当マイナーによって作成された対応するブロックチェーントランザクションのトランザクション識別子(TxID)を含むことになる。TxIDは、マイナーのメモリプールに提出される16進符号化トランザクションへの参照であり、そして、これが、決済プロセッサによってブロックチェーントランザクションに然るべくマッピングされる。
【0096】
そして、このブロックチェーントランザクションが、即座に又は後の時点においてのいずれかでマイニングされて、現在手数料見積もりでのマイニングプロセスを完了させ得る。一部のケースにおいて、別のマイナーがそれをブロックチェーンに書き込んだために、作成されたトランザクションがマイニングされないことがあり、あるいは、例えば二重支払又は時間経過若しくは無効などの何らかの理由で保留されたり拒否されたりすることがある。
【0097】
ステップ114は、トランザクション結果TxResultをクライアントに送信することを示しており、該結果は、該当マイナーによってステップ108で所与のトランザクションに対応して作成されたブロックチェーントランザクションのトランザクション識別子TxIDを含む。一部の実施形態において、トランザクション結果TxResultは、ステップ110及び112で選択された手数料見積もりを満たす該当マイナーによって作成された対応するブロックチェーントランザクションの詳細に基づいて、決済プロセッサからHTTPSプロトコルを用いてクライアントに送信されるJSONオブジェクトである。
【0098】
クライアントに対する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バージョン番号)
}
]
【0099】
上に記載したReturnResultは、以下の通りの取り得る値のうちの1つを含み得る:
・Submitted - 問題なし、トランザクションはメモリプールに提出された
・Rejected_DS - 二重支払のために拒否された - DoubleSpendTxIDはヌルであることができない
・Rejected_Policy - ポリシー違反のため拒否された
・Rejected_Invalid - トランザクションが無効であるために拒否された
・Rejected_FeeTooLow - 手数料が低すぎるため、マイナーはTxをブロックに含めない
・Rejected_KeepInMemPool - Txは拒否されるが、二重支払をチェックするためにメモリプールに保持される。
【0100】
クライアントに関連する複数のトランザクションが存在し、同じエンドポイントを用いてまとめて又は決済プロセッサに関連付けられた別個のエンドポイントを用いて提出される場合、第2の要求に返される応答ボディは、以下のJSONフォーマットにあるとし得る:
(外1)
【0101】
一部の実施形態において、第2の要求で提出された複数のトランザクションに対して、応答ボディは以下を提供する:
- 応答グループヘッダ情報及びトランザクションレベル(ペイロード)情報
- 各トランザクションに対して返される結果(又は現在ステータス)についての応答レポート
- 応答はエラーカウント:count(result<>success)を返す
- 応答はエラー閾値を返し、Xは、予め定められるか動的に定められるかし得るコンフィギュラブルパラメータであるとして、エラーカウント>Xである場合、トランザクションの更なる処理が停止され、第2の要求で提出された複数のトランザクションの全てが拒否される。第2の要求でまとめて提出された複数のトランザクションのバッチが、エラーカウントがXより大きいためにマイナーによってマイニングを拒否された場合、エラーコードが、コードの適切な説明とともに割り当てられ得る。
【0102】
JSONエンベロープ項を、それらの機能の説明とともに以下に示す:
【表3】
【0103】
ペイロード又はメッセージフィールドリターンの一例を以下に示す:
{
"apiVersion":"string",
"timestamp":"string",
"errorCount":"integer (count of where txn returnResult <> success)",
"txs":[
{
"txid":"string",
"minerid":"string | null",
"returnResult":"string",
"resultDescription":"string",
"currentHighestBlockHash":"string",
"currentHighestBlockHeight":"integer",
"txSecondMempoolExpiry":"string",
"confirmations": "integer (0 for unconfirmed)"
}
]
}
【0104】
ステップ116は、複数のマイナーに送信するために、クライアントから、トランザクション識別子TxIDに関連付けられたステータスクエリを受信するステップを示している。このステップ以降は、複数のマイニング手数料見積もりの中から手数料見積もりを選択した後にトランザクションを提出するためのアレンジの上記ステップとは非同期に行われることができ、第1の態様の動作に本質的なものであると見なされるべきでない。ステップ116以降の実施形態は、ステップ108で行われた1つ以上の第2の要求のステータスをクライアントが知ることを望む場合のシナリオに関する。
【0105】
ステップ116は、ステップ108で説明したHTTPS POST submitTransaction(Tx)を介してクライアントが決済プロセッサに提出したトランザクションのステータスをクライアントが照会することを可能にする。従って、このステップにおけるTxIDは、クライアントとそのカスタマとの間でのデジタル資産決済に関連する任意の所与のトランザクションについて行われる任意の第2の要求に対応することができる。上述のステップで説明したように、ステータスクエリは、伝送プロトコルとしてHTTPSを用いてクライアントから受信され、当該クエリは、例えばGET queryTransactionStatus(TxID)などのJSONフォーマットで送信され、そして、それが、複数のマイナーの中の1つ以上のマイナーに送信するためのRPC要求であるRPC getRawTransaction(TxID)に変換される。
【0106】
第2の要求においてクライアントによって複数のトランザクションが提出された場合、上述のように、一部の実施形態において、複数のトランザクションのステータスが、クライアントによって、トランザクションごとに別々の要求を送信するのではなく、単一のクエリトランザクションステータス要求で照会され得る。複数のトランザクションのステータスを照会することに関する要求は、同一の決済プロセッサAPIに送られてもよいし、あるいは、決済プロセッサに関連付けられた別のエンドポイントに送られてもよい。決済プロセッサに関連付けられた全てのエンドポイントが、クライアントに知られたものとなり、あるいは、クライアントに提供されることになる。これは、決済プロセッサに関連するサービスにクライアントが登録する時に提供され得る。上述のように、クライアントにAPIを提供することには、例えばSwaggerなどの既知のオープンAPIツールを使用し得る。
【0107】
複数のトランザクションが照会される場合、第2の要求のボディは、トランザクション識別子(TxID)の配列の形式とし得る。要求フォーマットの一例を以下に示す:
POST /mapi/txs
[
"txId",
"txId",
“etc….."
]
【0108】
ステップ118にて、決済プロセッサは、TxIDに関連付けられたブロックチェーントランザクションを作成及び/又は処理することに関連する複数のマイナーの中の該当マイナーからの応答を受信する。一部の実施形態において、上のRPC getRawTransaction(TxID)は、1に設定された引数に関連し得るものであるVerboseパラメータを含み得る。その場合、成功の場合に該当マイナーから返される結果は、一部の実施形態において、ステップ110及び112での復号された対応するブロックチェーントランザクションを含むJSONフォーマットにあることになる。これは、有利なことに、その中のデータを捕捉して処理することの柔軟性を提供する。Verboseパラメータが0に設定される場合、JSONデータタイプ又はドキュメントフォーマットの代わりに、16進符号化されたトランザクションが決済プロセッサに返される。TxIDに関係するこのようなトランザクションが見つからない場合には、ヌルが返されることができ、そして、それが、ReturnResultオブジェクトが‘Unknown’に設定されることをもたらす。任意の他の返されるエラーも、ReturnResult及びResultDescriptionオブジェクトを介してマイナーによって決済プロセッサに報告され得る。これらのオブジェクトは、ステップ114に関連して示されている。
【0109】
ステップ120にて、TxIDに関係するTxResultがクライアントに返され、この応答はHTTPSを用いて送信される。これは、ステップ116のステータスクエリでクライアントによって送信された所与のTxIDに関連付けられたマイニング結果を表す。決済プロセッサからクライアントに送信されるTxResultの一例は以下にて与えられる。
【0110】
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バージョン番号)
}
]
【0111】
BlockHash及びMinerIDは、該当マイナーによってトランザクションが成功裏にマイニングされて確認済みとしてフラグ付けられた(すなわち、ブロックに追加された)場合に入力され得る。マイナーがMinerIDを設定していない場合、それは“NULL”に設定されることになる。
【0112】
そして、ReturnResultオブジェクトは、次のマイニング結果のうちの1つを含み得る:
・Submitted - 問題なし、トランザクションはメモリプールに提出された
・Confirmed - トランザクション確認済み、コンファメーションは0又はヌルであることはできない
・Rejected_DS - 二重支払のために拒否された - DoubleSpendTxIDはヌルであることができない
・Rejected_Policy - ポリシー違反のため拒否された
・Rejected_Invalid - トランザクションが無効であるために拒否された
・Rejected_FeeTooLow - 手数料が低すぎるため、マイナーはそのTxをブロックに含めない
・Rejected_KeepInMemPool - Txは拒否されるが、二重支払をチェックするためにメモリプールに保持される
・Unknown - トランザクションが見えない又は存在しない - 提供されたTxIDを持つトランザクションがメモリプール又はブロックチェーンの中に存在しない可能性がある。そうであれば、これはResultDescriptionに記述されるべきである。
【0113】
同じエンドポイントを用いてまとめて又は決済プロセッサに関連付けられた別個のエンドポイントを用いてクエリされるべき、クライアントに関連する複数のトランザクションが存在する場合、返される応答ボディは、以下のJSONフォーマットにあるとし得る:
(外2)
【0114】
一部の実施形態において、クエリされた複数のトランザクションに対して、応答ボディは、ヘッダ情報とトランザクションレベル(ペイロード)情報とを共にグループ化する。
【表4】
【0115】
返されるペイロード又はメッセージフィールドリターンの一例を以下に示す:
{
"apiVersion":"string",
"timestamp":"string",
"txs":[
{
"txid":"string",
"minerid":"string | null",
"returnResult":"string",
"resultDescription":"string",
"currentHighestBlockHash":"string",
"currentHighestBlockHeight":"integer",
"txSecondMempoolExpiry":"string",
"confirmations": "integer (0 for unconfirmed)"
}
]
}
【0116】
第2の態様 - クライアント
図2は、本開示の第2の態様に関するものであり、クライアントに関連付けられた1つ以上のプロセッサによって実行される方法を示しており、クライアントは、第1の態様に関連して説明した方法を実装する少なくとも1つの決済プロセッサに通信可能に結合される。決済プロセッサは、上述のように、クライアントのために
図1に関連して説明した決済サービス又は決済APIを実装する。
【0117】
図2に示されたシナリオ例では、複数のマイニング手数料見積もりを取得すること、取得した複数のマイニング手数料見積もりの中から選択された手数料見積もりに基づいてトランザクションを提出すること、並びにトランザクション識別子に関するステータスクエリを送信することに関する実施形態が、全て順次に行われるものとして説明され、すなわち、
図2のフローチャートでの単一のプロセスとして説明される。しかしながら、本開示及び第2の態様は、そのように限定されると見なされるものではない。以下に記載されるステップ202-206における第1の要求で手数料見積もりを取得することに関するステップは、残りのステップとは別に独立して実施され得る。同様に、ステップ208-212における第2の要求でトランザクションを提出することに関するステップは、手数料見積もりを取得する先行ステップとは別に異なる時に実施され得る。同じように、ステップ214以降のトランザクションステータス照会に関するステップは、クライアントがトランザクションの識別子を認識した後の任意の時に実施されることができ、
図2のシーケンスに従う必要はない。ここでは、説明及び理解を容易にするために、全てのステップを単純にシーケンスで示しており、本開示は、如何なる状況でも、このようなシーケンス又はシナリオに限定されると見なされるべきでない。さらに、
図1に関連して上述したように、手数料見積もりは、その都度、単一のトランザクションに対して別々に、あるいは、単一の要求で、すなわち、同時にクライアントによって提出される複数のトランザクションのセット又はバッチに対して、要求及び/又は取得及び/又は提出及び/又は照会されることができる。説明及び理解を容易にするために、
図2はクライアントに関連する第1の要求/第2の要求並びにステータスクエリでの単一のトランザクションに関して説明されるが、本開示は決してそのように限定されるものではない。
【0118】
ステップ202は、それぞれの決済サービスを提供するためにクライアントに関連付けられた少なくとも1つの決済プロセッサの中のある決済プロセッサに第1の要求を送信することを示している。
図1のステップ102に関連して説明したように、この要求は、クライアントのためのトランザクションをマイニングすることに関する1つ以上の手数料見積もりに関係している。この第1の要求は、ステップ102に関連して説明したHTTPS GET getFeeQuoteに関する。上述のように、この要求は、クライアントに関する任意のトランザクションをマイニングするためのものであってもよいし、あるいは、クライアントと関連するカスタマからのデジタル資産決済に関連するトランザクションをマイニングすることに関する手数料見積もりを得るための要求であってもよい。上述のように、一部の実施形態において、第1の要求は、マイニングされる1つ以上のトランザクションに必要とされるサービスのレベルの詳細も含み得る。これは、マイニングの速さ及び/又はマイナーによって提供される二重支払に対する保護に関するものとし得る。
【0119】
ステップ204にて、複数のマイニング手数料見積もりが決済プロセッサから受信され、手数料見積もりは、クライアントにサービス提供する決済プロセッサに通信可能に結合された複数のマイナーの各々についてのマイニング手数料に関係する。受信される手数料見積もりの構造及び詳細については、
図1のステップ104に関連して既に説明されている。
【0120】
ステップ206は、ステップ204で受信した1つ以上の手数料見積もりの中から手数料見積もりを選択することを示している。一部の実施形態において、選択された手数料見積もりは、決済プロセッサによって提案された推奨手数料見積もりに基づき得る。一部の実施形態において、この選択は、クライアントと関連付けられた1つ以上のプロセッサによって行われる。選択された手数料見積もりは、上述のように、取得した手数料見積もりの平均値若しくは中央値、又は複数のマイナーから取得した手数料見積もりの最大値、又は補助メモリプール内の最も高い手数料見積もりとし得る。従って、クライアントは、第1の要求に応答する複数のマイナーから取得した最も高い手数料の値を選択することができる。斯くして、全てのマイナーに、それらそれぞれが現在見積もった手数料でそのトランザクションをマイニングする機会を等しく与えることができる。一方、クライアントは代わりに、受信した全ての手数料見積もりの中央値又は平均値にあるかその上である手数料見積もりを選択することで、より高い見積もりを持つマイナーは、そのトランザクションを単に補助メモリプールに保持し、それを用いてトランザクションの任意の二重支払に対するチェックを行ってそれを排斥するようにすることができる。
【0121】
ステップ208は、クライアントに関連するカスタマからのデジタル資産決済を要求及び/又は処理するステップを示している。これは、支払要求、又は双方の当事者それぞれのデジタルウォレット実装に適用される既知の方法を用いて、デジタル資産決済に関してクライアントによってカスタマに送られるインボイスとし得る。任意のトランザクションをブロックチェーンにマイニングすることに関する選択された手数料見積もりは既知であるので、この要求は選択された手数料見積もりを含むか、それに関連付けるかすることができる。
【0122】
ステップ210は、カスタマからのデジタル資産決済に関連する所与のトランザクションをブロックチェーンに提出することの第2の要求を決済プロセッサに送信するステップを示している。このステップでの提出は、ステップ206での所与のトランザクションをマイニングすることに関する選択された手数料見積もりに基づく。このステップは、
図1のステップ108で、クライアントが、所与のトランザクションに対してJSONデータ型フォーマットにおける関連する詳細を用いて、HTTPS POST submitTransaction(Tx)要求を決済プロセッサに送信することに関係する。
【0123】
ステップ212は、提出したトランザクションに対応するブロックチェーントランザクションのトランザクション識別子(TxID)を受信するステップを示している。
図1のステップ110及び112で説明したように、TxIDは、選択された手数料見積もりを満たす少なくとも1つのマイナーによって作成される。一部の実施形態において、これは、トランザクション結果、すなわち、該当マイナーに関する対応するブロックチェーントランザクションの現在のマイニングステータスを示すTxResultと共に又はその一部として送信され得る。これは、
図1のステップ114に関連して説明されている。
【0124】
ステップ214は、クライアントとカスタマとの間での決済に関係して、以前にステップ210で提出したトランザクションのマイニングステータスを照会することをクライアントが望むときに、クライアントがステータスクエリを送信することに関する。クライアントは、提出したトランザクションのTxIDをステップ212で受信しているので、この要求は、TxIDに基づくことができ、また、
図1のステップ116で説明したように、HTTPS GET queryTransactionStatus(TxID)の形式であることができる。
【0125】
ステップ216は、ステップ214でクエリしたトランザクション識別子TxIDに対応するブロックチェーントランザクションについてのマイニングステータス結果を取得することを示している。これは、JSONフォーマットにあることができ、対応するトランザクションの詳細を決済プロセッサが受信した後に、決済プロセッサによって、HTTPSを用いてクライアントに送信される。ステータス結果は、
図1のステップ120で見らたようなTxResult JSONオブジェクトの形式にあることができる。
【0126】
第3の態様 - マイナー実装
図3は、本開示の第3の態様に関するものであり、複数のマイナーの中のあるマイナーによって実行される方法を示しており、複数のマイナーは、第1の態様に関連して説明した方法を実装する少なくとも1つの決済プロセッサに通信可能に結合される。決済プロセッサは、クライアントのために
図1に関連して説明した決済サービス又は決済APIを実装する。クライアントは、
図2に関連して説明した方法を実装するように構成される。
【0127】
図3に示されたシナリオ例では、複数のマイニング手数料見積もりを提供すること、取得された複数のマイニング手数料見積もりの中から選択された手数料見積もりに基づいてブロックチェーントランザクションを生成/作成すること、並びにトランザクション識別子に関するマイニングステータスを提供することに関する実施形態が、全て順次に行われるものとして説明され、すなわち、
図3のフローチャートでの単一のプロセスとして説明される。しかしながら、本開示及び第3の態様は、そのように限定されると見なされるものではない。以下に記載されるステップ302及び304における第1の要求に応答して手数料見積もりを提供することに関するステップは、残りのステップとは別に独立して実施され得る。同様に、ステップ308-314における第2の要求に応答して対応するブロックチェーントランザクションを生成することに関するステップは、手数料見積もりを取得する先行ステップとは別に異なる時に実施され得る。同じように、ステップ316のトランザクションステータスを提供することに関するステップは、クライアントがトランザクションの識別子を認識した後の任意の時に実施されることができ、
図3のシーケンスに従う必要はない。ここでは、説明及び理解を容易にするために、全てのステップを単純にシーケンスで示しており、本開示は、如何なる状況でも、このようなシーケンス又はシナリオに限定されると見なされるべきでない。さらに、
図1及び
図2に関連して上述したように、手数料見積もりは、その都度、単一のトランザクションに対して別々に、あるいは、単一の要求で、すなわち、同時にクライアントによって提出される複数のトランザクションのセット又はバッチに対して、要求及び/又は取得及び/又は提出及び/又は照会されることができる。説明及び理解を容易にするために、
図3はクライアントに関連する第1の要求/第2の要求並びにステータスクエリでの単一のトランザクションに関して説明されるが、本開示は決してそのように限定されるものではない。
【0128】
ステップ302は、クライアントに代わってトランザクションをマイニングすることに関する手数料見積もりを提供することの第1の要求を、決済プロセッサから受信することを示している。この要求は、
図1のステップ104に関連して説明したように、決済プロセッサから送信されるRPC getFeeQuote()要求に関する。
【0129】
ステップ304は、ブロックチェーンにおいてトランザクションをマイニングすることに関して、複数のマイナーの中の各マイナーに関係する現在手数料見積もりを提供することを示している。手数料見積もりは、
図1のステップ104に関連して説明したようにJSONオブジェクトFeeQuoteのフォーマットで提供され得る。
【0130】
ステップ306は、クライアントに関連する所与のトランザクションをブロックチェーンに提出することの第2の要求を複数のマイナーの中のあるマイナーが受信するステップを示しており、所与のトランザクションは、クライアントからの選択された手数料見積もりに基づく。所与のトランザクションは、
図2のステップ210のPOST submitTransaction(Tx)におけるTx、すなわち、クライアントとカスタマとの間の所与のデジタル資産決済トランザクションに関係する。
図1のステップ110に関連して説明したように、決済プロセッサから受信されるこれのRPCバージョンは、所与のトランザクションのRPC createRawTransaction(Tx)である。
【0131】
ステップ308は、マイナーがクライアントからの選択された手数料見積もりを満足する又は満たすことをチェックすることを示している。これは、ステップ304で該当マイナーによって決済プロセッサに提供された現在手数料見積もりが、所与のトランザクションTxをマイニングするためにクライアントが支払う用意があるものである選択された手数料見積もり以下であるか否かの判定を含み得る。
【0132】
現在手数料見積もりが選択された手数料見積もりを満たす場合、ステップ310にて、所与のトランザクションに対応するブロックチェーントランザクションが作成される。これは、
図1のステップ110に関連して説明されている。一部の実施形態において、所与のトランザクションに対応する16進符号化されたロートランザクションが決済プロセッサに返される。
図1のステップ112で説明したように、アウトプットスクリプト又はUTXOも決済プロセッサに提供され、アウトプットスクリプトは、該当マイナーによって作成された対応するブロックチェーントランザクションに関連付けられたトランザクション識別子(TxID)を含む。そして、ブロックチェーントランザクションについてのアウトプットスクリプト(UTXO)は、即座に又は後の時点で、マイニングに関するマイナーに関連付けられたメモリプールに追加され得る。
【0133】
現在手数料見積もりが選択された手数料見積もりを満たさない場合、すなわち、該当マイナーの現在手数料見積もりがクライアントによって許容される又は選択された手数料見積もりよりも高い場合、該当マイナーは、一部の実施形態において、現在手数料見積もりよりも低い手数料でマイニングすることを選択するか、あるいは、選択された手数料がそれぞれの現在見積もった手数料よりも低いから所与のトランザクションをマイニングしないことを選択するかし得る。該当マイナーが、より低いものである選択された手数料見積もりでトランザクションをマイニングしないことを選択する実施形態では、ステップ312にて、該当マイナーは、代わりに、所与のトランザクションに対して構築されたブロックチェーントランザクションに関する詳細を、該当マイナーに関連付けられた補助メモリプールに追加し得る。このトランザクションは、一部の実施形態において、補助メモリプールに保持され、二重支払をチェックするために使用され得る。補助メモリプールに格納されたトランザクションは全て、満了時間を有することができ、それの後に除去されることができる。
【0134】
ブロックチェーントランザクションが作成されたと仮定して、すなわち、該当マイナーがクライアントによって設定された選択された手数料見積もりの要件を満たすと仮定して、ステップ316は、クライアントのために作成されたブロックチェーントランザクションのTxIDに関連付けられたステータスクエリを該当マイナーが受信することに関する。このステータスクエリは、
図1のステップ116及び118に関連して説明したように、APIコンバータを介して受信されたRPC要求RPC getRawTransaction(TxID)に基づく。
【0135】
ステップ318にて、該当マイナーに関係する対応するブロックチェーントランザクションの現在のマイニングステータスに基づく結果が決済プロセッサに提供される。これは、
図1のステップ120に関連して説明したように、TxStatusについてのJSONオブジェクト構造に基づき得る。
【0136】
図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との間のセキュア通信チャネルを提供する。
【0137】
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が受け取る報酬である。
【0138】
図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に送信される。
【0139】
図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オブジェクトとしてクライアントに返される。
【0140】
図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オブジェクトとしてクライアントに返される。
【0141】
また、
図1-
図3に関連して上述したように、手数料見積もりは、その都度、単一のトランザクションに対して別々に、あるいは、単一の要求で、すなわち、同時にクライアントによって提出される複数のトランザクションのセット又はバッチに対して、要求及び/又は取得及び/又は提出及び/又は照会されることができる。説明及び理解を容易にするために、
図4-
図7はクライアントに関連する第1の要求及び/又は第2の要求及び/又はステータスクエリでの単一のトランザクションに関して説明されているが、本開示は決してそのように限定されるものではない。
【0142】
次に
図8を参照するに、本開示の少なくとも1つの実施形態を実施するのに使用され得るコンピューティング装置2600の例示的で簡略化したブロック図が提供されている。様々な実施形態において、コンピューティング装置2600は、上で例示及び説明したシステムのうちのいずれかを実装するのに使用され得る。例えば、コンピューティング装置2600は、図のDBMSの1つ以上のコンポーネントとして使用されるように構成されてもよく、あるいは、コンピューティング装置2600は、所与のユーザに関連付けられたクライアントエンティティであって、
図8のDBMSによって管理されるデータベースに対してデータベース要求を行うクライアントエンティティであるように構成されてもよい。故に、コンピューティング装置2600は、ポータブルコンピューティング装置、パーソナルコンピュータ、又は任意の電子コンピューティング装置とし得る。
図8に示すように、コンピューティング装置2600は、1つ以上のレベルのキャッシュメモリと、メインメモリ2608及び永続的ストレージ2610を含むストレージサブシステム2606と通信するように構成されることができるメモリコントローラと、を備えた1つ以上のプロセッサ(集合的にラベル2602を付す)を含み得る。メインメモリ2608は、図示のように、ダイナミックランダムアクセスメモリ(DRAM)2618及び読み出し専用メモリ(ROM)2620を含むことができる。ストレージサブシステム2606及びキャッシュメモリ2602は、例えば本開示に記載されるようなトランザクション及びブロックに関連する詳細などの情報の記憶のために使用され得る。(1つ以上の)プロセッサ2602は、本開示に記載されるいずれかの実施形態のステップ又は機能を提供するために使用され得る。
【0143】
(1つ以上の)プロセッサ2602はまた、1つ以上のユーザインタフェース入力装置2612、1つ以上のユーザインタフェース出力装置2614、及びネットワークインタフェースサブシステム2616と通信することができる。
【0144】
バスサブシステム2604が、コンピューティング装置2600の様々なコンポーネント及びサブシステムが意図通りに相互に通信することを可能にするメカニズムを提供し得る。バスサブシステム2604は単一のバスとして概略的に示されているが、バスサブシステムの他の実施形態は複数のバスを利用してもよい。
【0145】
ネットワークインタフェースサブシステム2616は、他のコンピューティング装置及びネットワークへのインタフェースを提供し得る。ネットワークインタフェースサブシステム2616は、コンピューティング装置2600とは別の他のシステムからデータを受信するため及びそれにデータを送信するためのインタフェースとして機能し得る。例えば、ネットワークインタフェースサブシステム2616は、データ技術者が例えばデータセンターなどの遠隔位置にいながら装置にデータを送信すること及び装置からデータを受信することができるように、データ技術者が装置をネットワークに接続することを可能にし得る。
【0146】
ユーザインタフェース入力装置2612は、例えばキーボードなどの1つ以上のユーザ入力装置;例えば統合マウス、トラックボール、タッチパッド、又はグラフィックスタブレットなどのポインティング装置;スキャナ;バーコードスキャナ;ディスプレイに組み込まれたタッチスクリーン;例えば音声認識システム、マイクロフォンなどの音声入力装置;及び他のタイプの入力装置を含み得る。一般に、用語“入力装置”の使用は、情報をコンピューティング装置2600に入力するためのあらゆる可能なタイプの装置及び機構を含むことを意図する。
【0147】
1つ以上のユーザインタフェース出力装置2614は、ディスプレイサブシステム、プリンタ、又は例えば音声出力装置などの非視覚的ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、例えば液晶ディスプレイなどのフラットパネル装置、発光ダイオード(LED)ディスプレイ、又はプロジェクション若しくは他の表示装置とし得る。一般に、用語“出力装置”の使用は、コンピューティング装置2600から情報を出力するためのあらゆる可能なタイプの装置及び機構を含むことを意図する。1つ以上のユーザインタフェース出力装置2614は、例えば、そのようなインタラクションが適切であり得るときに、説明されたプロセス及びそれにおけるバリエーションを実行するアプリケーションとのユーザインタラクションを容易にするためのユーザインタフェースを提示するために使用され得る。
【0148】
ストレージサブシステム2606は、本開示の少なくとも1つの実施形態の機能を提供し得る基本プログラミング及びデータ構成体を記憶するためのコンピュータ読み取り可能記憶媒体を提供し得る。アプリケーション(プログラム、コードモジュール、命令)が、1つ以上のプロセッサによって実行されるときに本開示の1つ以上の実施形態の機能を提供し得るとともに、ストレージサブシステム2606に記憶され得る。これらのアプリケーションモジュール又は命令は、1つ以上のプロセッサ2602によって実行され得る。ストレージサブシステム2606は更に、本開示に従って使用されるデータを格納するためのリポジトリを提供してもよい。例えば、メインメモリ2608及びキャッシュメモリ2602は、プログラム及びデータの揮発性ストレージを提供することができる。永続的ストレージ2610は、プログラム及びデータのための永続的(不揮発性)ストレージを提供することができ、フラッシュメモリ、1つ以上のソリッドステートドライブ、1つ以上の磁気ハードディスクドライブ、関連するリムーバブルメディアを備えた1つ以上のフロッピー(登録商標)ディスクドライブ、関連するリムーバブルメディアを備えた1つ以上の光学ドライブ(例えば、CD-ROM又はDVD又はBlue-Ray(登録商標))ドライブ、並びに他の同様の記憶媒体を含み得る。このようなプログラム及びデータは、本開示に記載される1つ以上の実施形態のステップを実行するためのプログラム、並びに本開示に記載されるようなトランザクション及びブロックに関連するデータを含むことができる。
【0149】
コンピューティング装置2600は、ポータブルコンピュータ装置、タブレットコンピュータ、ワークステーション、又は以下に記載される任意の他の装置を含め、様々なタイプのものとし得る。加えて、コンピューティング装置2600は、1つ以上のポート(例えば、USB、ヘッドフォンジャック、ライティングコネクタなど)を介してコンピューティング装置2600に接続され得る別の装置を含んでいてもよい。コンピューティング装置2600に接続され得る装置は、光ファイバコネクタを受け入れるように構成された複数のポートを含んでいてもよい。従って、この装置は、光信号を、処理のために、当該装置をコンピューティング装置2600に接続するポートを介して伝送され得る電気信号へと変換するように構成され得る。コンピュータ及びネットワークの絶えず変化する性質のため、
図8に示すコンピューティング装置2600の説明は、装置の好適実施形態を例示する目的での単なる一具体例を意図している。
図8に示したシステムよりも多数又は少数のコンポーネントを持つ数多くの他の構成が可能である。
【0150】
実施形態例の列挙
ここに、本開示を、上の態様に関係する以下の項に基づいて説明するが、これらは、特許請求される態様及び実施形態をよりよく説明し、記述し、及び理解するための例示的な実施形態としてここに提供されるものである。
【0151】
1. ブロックチェーンに関連付けられるトランザクションに関して1つ以上のクライアントに決済サービスを提供するコンピュータ実装された方法であって、当該方法は、決済プロセッサによって実行され、当該方法は、
ブロックチェーンにおいてトランザクションをマイニングすることに関連する第1の要求をクライアントから受信するステップと、
当該決済プロセッサに通信可能に結合された複数のマイナーの中の各マイナーに、手数料見積もりの要求を送信するステップと、
各マイナーから、前記トランザクションをマイニングすることに関する手数料見積もりを取得するステップと、
前記複数のマイナーからの前記取得した手数料見積もりを前記クライアントに提供するステップであり、前記トランザクションをマイニングすることに関する選択された手数料見積もりが、前記取得した手数料見積もりに基づいて決定される、ステップ、又は
前記取得した手数料見積もりに基づいて、前記クライアントのために、前記トランザクションをマイニングするための選択された手数料見積もりを決定するステップと、
を有する、方法。
【0152】
2. 前記第1の要求に関連する前記トランザクションは、複数のトランザクションのバッチを含む、項1に記載の方法。
【0153】
3. 前記取得した手数料見積もりの中の前記選択された手数料見積もりに関係する所与のトランザクションを提出するための前記クライアントからの第2の要求に応答して、前記所与のトランザクションに対応するブロックチェーントランザクションを生成することの要求を、前記複数のマイナーの中の1つ以上のマイナーに送信するステップと、
前記複数のマイナーの中の、前記選択された手数料見積もりを満たす少なくとも1つのマイナーから、前記対応するブロックチェーントランザクションに関連するアウトプットスクリプトを受信するステップと、
結果を前記クライアントに送信するステップであり、該結果は、前記所与のトランザクションに対応する前記ブロックチェーントランザクションのトランザクション識別子を含む、ステップと、
を有する項1又は2に記載の方法。
【0154】
4. 前記所与のトランザクションは、複数のトランザクションのバッチを含む、項3に記載の方法。
【0155】
5. 前記取得した手数料見積もりを提供する前記ステップは更に、前記取得した手数料見積もりの平均値又は前記取得した手数料見積もりの中の最大値に基づいて推奨手数料見積もりを決定することを有する、項1乃至4のいずれか一項に記載の方法。
【0156】
6. 当該方法は更に、前記推奨手数料見積もりを提供すること、又は前記推奨手数料見積もりを含めて前記取得した手数料見積もりの全てを提供することを有し、前記推奨手数料見積もりは識別子を含む、項5に記載の方法。
【0157】
7. 前記選択された手数料見積もりは、前記推奨手数料見積もりと同じであり又は前記推奨手数料見積もりとは異なり、該異なる手数料見積もりは、予め決定されているか任意に選択されるかのいずれかである、項5又は6に記載の方法。
【0158】
8. 選択された手数料見積もりを決定する前記ステップは、前記取得した手数料見積もりの各々に、複数のサービスレベルの中のあるサービスレベルを割り当てることを有し、各サービスレベルが、前記トランザクションをマイニングすることに関するそれぞれの選択された手数料見積もりと関連付けられる、項1乃至7のいずれか一項に記載の方法。
【0159】
9. 前記サービスレベルは、前記取得した手数料見積もりと、それぞれの手数料見積もりに関係するマイナーに関連付けられた最低リレー手数料とに基づいて割り当てられる、項8に記載の方法
10. 前記割り当てられたサービスレベルは、前記トランザクションをマイニングすることに対する優先順位、及び/又は推奨手数料に対するトランザクションに関連する二重支払に対する保護のレベルを指し示す、項8又は9に記載の方法。
【0160】
11. マイニングされる前記トランザクションに対する前記サービスレベルは、前記クライアントから得られる1つ以上のサービス要件に基づいて割り当てられる、項8乃至10のいずれか一項に記載の方法。
【0161】
12. 当該方法は、前記複数のマイナーの中の所与のマイナーの身元を検証するステップを有し、該検証は、前記所与のマイナーに関連するデジタル署名に基づき又は前記所与のマイナーに関係する識別子に基づき、該識別子は、オプションで、前記所与のマイナーに関する評判インジケータに関連付けられる、項1乃至11のいずれか一項に記載の方法。
【0162】
13. 当該方法は、前記複数のマイナーの中の所与のマイナーから取得したそれぞれの手数料見積もりを、マイナー署名に基づいて認証するステップを有し、前記マイナー署名は、前記それぞれの手数料見積もりについて前記トランザクションをマイニングすることの、及びオプションで、相反するトランザクションを拒否することの、前記所与のマイナーからのコミットメントとしての役割を果たす、項1乃至12のいずれか一項に記載の方法。
【0163】
14. 各マイナーから取得する前記手数料見積もりはデータ型で提供され、該データ型は、JavaScriptオブジェクト表記(JSON)オブジェクトフォーマットにおけるものである、項1乃至13のいずれか一項に記載の方法。
【0164】
15. 前記受信するアウトプットスクリプトは、前記少なくとも1つのマイナーのためのメモリプールに関連付けられた未使用トランザクションアウトプット(UTXO)であり、該UTXOは、前記ブロックチェーントランザクションの前記トランザクション識別子(TxID)を含む、項1乃至14のいずれか一項に記載の方法。
【0165】
16. 前記クライアントからのトランザクション識別子に関連付けられたステータスクエリに応答して、前記トランザクション識別子に対応するブロックチェーントランザクションを取得することの要求を前記複数のマイナーに送信するステップと、
前記複数のマイナーの中の少なくとも1つのマイナーから前記対応するブロックチェーントランザクションを取得するステップと、
前記取得したブロックチェーントランザクションに関係するステータス結果を前記クライアントに送信するステップと、
を有する項1乃至15のいずれか一項に記載の方法。
【0166】
17. 当該決済プロセッサは、前記1つ以上のクライアントに対するREST(Representational State Transfer)エンドポイントとして実装され、当該方法は更に、
ハイパーテキスト転送プロトコルセキュア(HTTPS)伝送プロトコルフォーマットを用いて、前記クライアントから、前記第1の要求、及び/又は前記第2の要求、及び/又は所与のトランザクションに関係するステータスクエリを受信するステップと、
それぞれの要求をリモートプロシージャコール(RPC)フォーマットに変換し、該RPCを前記複数のマイナーのうちの1つ以上のマイナーに送信するステップと、
前記複数のマイナーのうちの前記1つ以上のマイナーから、対応するブロックチェーントランザクションに関連する応答をRPCフォーマットで受信するステップと、
それぞれの応答を、HTTPS伝送プロトコルを用いて前記クライアントに送信され得るように変換するステップと、
を実行するためのアプリケーションプログラミングインタフェース(API)コンバータを、当該決済プロセッサに付随して設けるステップ、を有する、項1乃至16のいずれか一項に記載の方法。
【0167】
18. ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法であって、当該方法は、クライアントに関連付けられた1つ以上のプロセッサによって実行され、前記クライアントは、前記クライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合され、当該方法は、
少なくとも1つの決済プロセッサの中のある決済プロセッサに第1の要求を送信するステップであり、該要求は、トランザクションをマイニングすることに関する1つ以上の手数料見積もりに関係し、前記トランザクションは、カスタマからのデジタル資産決済に関係する、ステップと、
前記決済プロセッサからの1つ以上の手数料見積もりの受信に応答して、受信した前記1つ以上の手数料見積もりの中から手数料見積もりを選択するステップと、
を有する、方法。
【0168】
19. 前記カスタマからの前記デジタル資産決済を要求及び/又は処理するステップであり、該要求は前記選択した手数料見積もりに関連する、ステップと、
前記カスタマから前記デジタル資産決済に関連する所与のトランザクションを前記ブロックチェーンに提出するための第2の要求を、前記決済プロセッサに送信するステップであり、該提出は、前記所与のトランザクションをマイニングすることに関する前記選択した手数料見積もりに基づく、ステップと、
前記提出されたトランザクションに対応するブロックチェーントランザクションのトランザクション識別子(TxID)を取得するステップと、
を有する項18に記載の方法。
【0169】
20. 前記第2の要求における前記所与のトランザクションは、複数のトランザクションのバッチを含む、項19に記載の方法。
【0170】
21. 前記取得したトランザクション識別子に関連付けられたステータスクエリを送信するステップと、
前記トランザクション識別子に対応する前記ブロックチェーントランザクションのステータス結果を取得するステップと、
を有する項18乃至20のいずれか一項に記載の方法。
【0171】
22. 前記クライアントは、項1乃至17のいずれか一項に記載の方法を実施するように構成された前記少なくとも1つの決済プロセッサを含む又はそれに通信可能に結合される、項18乃至21のいずれか一項に記載の方法。
【0172】
23. 前記第1の要求及び/又は前記ステータスクエリはHTTPS GET要求であり、前記第2の要求はHTTPS POST要求である、項18乃至22のいずれか一項に記載の方法。
【0173】
24. 手数料見積もりを選択する前記ステップは、取得した前記手数料見積もりの平均値を決定することと、該決定した平均値に基づいて手数料見積もりを選択することとを有する、項18乃至23のいずれか一項に記載の方法。
【0174】
25. 手数料見積もりを選択する前記ステップは、取得した前記手数料見積もりのなかの手数料見積もりの最大値を決定することと、該最大値に基づいて手数料見積もりを選択することとを有する、項18乃至24のいずれか一項に記載の方法。
【0175】
26. 前記第1の要求及び/又は前記第2の要求及び/又は前記ステータスクエリに関連するデータは、JavaScriptオブジェクト表記(JSON)オブジェクトフォーマットで提供される、項18乃至25のいずれか一項に記載の方法。
【0176】
27. ブロックチェーンに関連付けられるトランザクションを処理するためのコンピュータ実装された方法であって、当該方法は、複数のマイナーの中のあるマイナーに関連付けられた1つ以上のプロセッサによって実行され、前記複数のマイナーは、クライアントに対する決済サービスを実装する少なくとも1つの決済プロセッサに通信可能に結合され、当該方法は、
前記クライアントに関連するトランザクションをマイニングすることに関する手数料見積もりのための第1の要求を決済プロセッサから受信するステップと、
前記ブロックチェーンにおいて前記トランザクションをマイニングすることに関する当該マイナーに関係する現在手数料見積もりを提供するステップであり、該現在手数料見積もりは、該現在手数料見積もりでトランザクションをマイニングするという約束を表す、ステップと、
を有する、方法。
【0177】
28. 選択された手数料見積もりに基づく、前記クライアントに関連する所与のトランザクション、を前記ブロックチェーンに提出することに関する第2の要求に応答して、当該方法は更に、
前記所与のトランザクションに関連する選択された手数料見積もりが当該マイナーの前記現在手数料見積もりを満たすとの決定に基づいて、前記所与のトランザクションに対応するブロックチェーントランザクションを生成するステップと、
前記ブロックチェーントランザクションのアウトプットスクリプト(UTXO)を生成するステップと、
前記生成したアウトプットスクリプトを、当該マイナーに関連付けられたメモリプールに追加するステップと、
前記アウトプットスクリプトを前記決済プロセッサに送信するステップであり、前記アウトプットスクリプトは、前記対応するブロックチェーントランザクションに関連するトランザクション識別子(TxID)を含む、ステップと、
を有する、項27に記載の方法。
【0178】
29. 前記トランザクション識別子に関連するステータスの要求に応答して、前記対応するブロックチェーントランザクションのマイニングステータスに基づいて結果を返す、ことを有する項28に記載の方法。
【0179】
30. 前記現在手数料見積もりを提供する前記ステップ及び/又は前記アウトプットスクリプトを送信する前記ステップ及び/又は前記結果を返す前記ステップは、リモートプロシージャコール(RPC)として実施される、項27乃至29のいずれか一項に記載の方法。
【0180】
31. 当該マイナーからの前記RPCを、無線通信ネットワークを介して前記RPCを前記クライアントに対する前記決済プロセッサに伝播させる前に、ノードコネクタに、及びオプションで前記複数のマイナーに対するファイアウォールに、送信するステップ、を含む項30に記載の方法。
【0181】
32. 前記所与のトランザクションに関連する前記選択された手数料見積もりが、当該マイナーの前記現在手数料見積もりを満たさないとの決定に基づいて、対応するブロックチェーントランザクションに関連するアウトプットを、当該マイナーに関連付けられた補助メモリプールに追加する、項27乃至31のいずれか一項に記載の方法。
【0182】
33. 当該マイナーは、項1乃至9のいずれか一項に記載の方法を実施するように構成された少なくとも1つの決済プロセッサに通信可能に結合され、該少なくとも1つの決済プロセッサは、項12乃至19のいずれか一項に記載の方法を実施するように構成されたクライアントに関連付けられる又は通信可能に結合される、項27乃至32のいずれか一項に記載の方法。
【0183】
34. ブロックチェーンに関連付けられるトランザクションに関して1つ以上のクライアントに決済サービスを提供するコンピュータ実装された方法であって、当該方法は、決済プロセッサによって実行され、当該方法は、
ブロックチェーンにおいてマイニングされるべきトランザクションについて、クライアントからの1つ以上のサービス要件を受信する又はそれに同意するステップと、
ブロックチェーンにおいて1つ以上のトランザクションをマイニングするための第1の要求をクライアントから受信するステップと、
当該決済プロセッサに通信可能に結合された複数のマイナーの中の各マイナーに、手数料見積もりの要求を送信するステップと、
各マイナーから、前記1つ以上のトランザクションをマイニングすることに関する手数料見積もりを取得するステップと、
前記取得した手数料見積もりを、マイニングのために提供される複数のサービスレベルの中の所与のサービスレベルに分類するステップであり、各サービスレベルが、ある設定マイニング手数料に関連付けられる、ステップと、
受信した前記1つ以上のサービス要件に基づいて前記クライアントに対するサービスレベルを決定するステップであり、該決定するサービスレベルに関連する前記設定マイニング手数料が、前記クライアントに関連する前記1つ以上のトランザクションをマイニングすることに関する選択された手数料見積もりであり、該決定するサービスレベルは、前記トランザクションをマイニングすることに対する優先順位及び/又は二重支払に対する保護のレベルを指し示す、ステップと、
を有する、方法。
【0184】
35. プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に項1乃至17及び項33のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置は決済プロセッサに係る、コンピューティング装置。
【0185】
36. プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に項18乃至26のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はクライアントに係る、コンピューティング装置。
【0186】
37. プロセッサとメモリとを有するコンピューティング装置であって、前記メモリは実行可能命令を含み、該実行可能命令は、前記プロセッサによる実行の結果として、当該装置に項27乃至33のいずれか一項に記載のコンピュータ実装された方法を実行させ、当該コンピューティング装置はマイナーに係る、コンピューティング装置。
【0187】
38. 無線通信ネットワークを介して少なくとも1つのクライアント及び少なくとも1つのマイナーに通信可能に結合された決済プロセッサであり、当該決済プロセッサは、オプションで、前記クライアントからのHTTPS要求の、前記マイナーに対するRPC要求への変換、及びその逆の変換のためのAPI変換器に付随され、当該決済プロセッサは、項35に記載のコンピューティング装置に従って実装される、決済プロセッサと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合され、且つ少なくとも1つのカスタマと通信可能であるクライアントであり、当該クライアントは、項36に記載のコンピューティング装置に従って実装される、クライアントと、
前記無線通信ネットワークを介して前記決済プロセッサに通信可能に結合される複数のマイナーであり、各マイナーが、項37に記載のコンピューティング装置に従って実装される、複数のマイナーと、
を有するコンピュータシステム。
【0188】
39. 実行可能命令を格納したコンピュータ読み取り可能記憶媒体であって、前記実行可能命令は、コンピュータのプロセッサによって実行される結果として、前記コンピュータに項1乃至34のいずれか一項に記載の方法を実行させる、コンピュータ読み取り可能記憶媒体。
【0189】
なお、上述の態様及び実施形態は、本開示を限定するものではなく、例示するものであり、当業者は、添付の請求項によって規定される本開示の範囲から逸脱することなく、数多くの代わりの実施形態を設計することができる。請求項において、括弧内に置かれた如何なる符号も、請求項を限定するものと解釈されるべきでない。用語“有している”及び“有する”並びにこれらに類するものは、いずれかの請求項又は明細書全体に列挙されたもの以外の要素又はステップの存在を除外するものではない。本明細書において、“有する”は“含む又はからなる”を意味し、“有している”は“含んでいる又はからなっている”を意味する。単数形での要素の参照は、それらの要素の複数形での参照を除外するものではなく、その逆もまた然りである。本開示は、幾つかの別個の要素を有するハードウェアによって、また、適切にプログラムされたコンピュータによって実装され得る。幾つかの手段を列挙するデバイスクレームにおいて、それらの手段のうちの幾つかが、同一のハードウェアアイテムによって具現化されてもよい。特定の複数の手段が相互に異なる従属請求項に記載されているという単なる事実は、それらの手段の組み合わせが有利に使用され得ないということを指し示すものではない。