JP2021508876A - 高性能分散型記録システムにおける同時トランザクション処理 - Google Patents
高性能分散型記録システムにおける同時トランザクション処理 Download PDFInfo
- Publication number
- JP2021508876A JP2021508876A JP2020535096A JP2020535096A JP2021508876A JP 2021508876 A JP2021508876 A JP 2021508876A JP 2020535096 A JP2020535096 A JP 2020535096A JP 2020535096 A JP2020535096 A JP 2020535096A JP 2021508876 A JP2021508876 A JP 2021508876A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- utxo
- handler
- block
- node
- 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
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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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/02—Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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
- 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
- G06Q2220/00—Business processing using cryptography
-
- 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)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Business, Economics & Management (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Accounting & Taxation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(情報または値の変形、変換または転送を含む)多数のトランザクションがスケーラブルで信頼性があり、安全且つ効率的な方法で同時に処理される高性能分散型台帳およびトランザクション・コンピューティング・ネットワーク・ファブリックである。一実施形態では、コンピューティング・ネットワーク・ファブリックまたは「コア」は、チェーンのブロックの通信、処理および記憶が、トランザクション自体が遠く離れたソースから発生している場合であっても、ほとんど同期せずに、非常に高い性能および低いレイテンシで、同時に実行されることを可能にするように、データを編成する分散型ブロックチェーンネットワークをサポートするように構成される。このデータ編成は、処理メッシュとして構成された自律的で協調的なコンピューティングノード内のトランザクション空間のセグメント化に依存している。各コンピューティングノードは、通常、コア内の他の全てのノードと機能的に同等である。ノードは、全体としてブロックチェーンの一貫した論理的に完全なビューを維持しながら、互いに独立してブロックを操作する。他の特徴によれば、安全で高性能なトランザクション処理は、衝突検出および取り消し機構を含む楽観的同時制御を使用して提供される。
Description
本特許出願は、一般に、分散型ネットワークにおけるコンピューティングリソースのセットにわたる分散型記録システムを管理することに関する。
分散型コンピュータシステムは、従来技術においてよく知られている。そのような分散型コンピュータシステムの1つは、サービスプロバイダによって運用および管理される「コンテンツ配信ネットワーク」(CDN)または「オーバーレイネットワーク」である。サービスプロバイダは、通常、サービスプロバイダの共有インフラストラクチャを使用するサードパーティ(顧客)に代わってコンテンツ配信サービスを提供する。この種の分散型システムは、通常、コンテンツ配信、ウェブ・アプリケーション・アクセラレーション、または外部委託元サイトのインフラストラクチャの他のサポートなどの様々なサービスを容易にするように設計されたソフトウェア、システム、プロトコルおよび技術とともに、ネットワークまたは複数のネットワークによってリンクされた自律型コンピュータの集まりを指す。CDNサービスプロバイダは、通常、顧客ポータルに用意された後にネットワークに展開されるデジタルプロパティ(ウェブサイトなど)を介してサービス配信を提供する。
ブロックチェーンは、暗号化を使用してリンクおよび保護されるブロックと呼ばれる継続的に増加するレコードのリストである。各ブロックは、通常、前のブロックにそれをリンクする暗号化ハッシュとトランザクションデータとを含む。分散型台帳として使用する場合、ブロックチェーンは、通常、新たなブロックを有効化するためのプロトコルに集合的に準拠するピアツーピアネットワークによって管理される。記録されると、任意の所与のブロックのデータは、ネットワークの大多数の結託を必要とする後続の全てのブロックを変更せずに遡及的に変更されることはできない。ブロックチェーンは、イベントの記録、様々なレコード管理アクティビティ(識別子管理、トランザクション処理、出所の文書化など)およびその他に適している。一般化すると、ブロックチェーンは、後続の全てのブロックの変更およびネットワークの結託なしにはレコードを遡及的に変更することができないように、多くのコンピュータにわたるトランザクションを記録するために使用される非中央集権化された分散型デジタル台帳である。典型的なブロックチェーンでは、ブロックは、ハッシュされてデータ構造に符号化される有効なトランザクションのバッチを保持する。この構造では、前述のように、各ブロックは、ブロックチェーン内の前のブロックにそれをリンクする暗号化ハッシュを含む。リンクされたブロックは、チェーンを形成する。この反復プロセスは、元の起源(または最初の)ブロックに遡って、前のブロックの整合性を確認する。
従来のブロックチェーンの実装では、ブロックチェーンを単純なブロックのシーケンスとして扱う。そのようなアプローチは、通常、処理のボトルネックを形成し、ブロックチェーンをその集約形式で通信および記憶することによって、ブロックチェーン実装の達成可能な性能を厳しく制限する。
本開示は、(情報または値の変形、変換または転送を含む)多数のトランザクションがスケーラブルで信頼性があり、安全且つ効率的な方法で同時に処理される高性能分散型台帳およびトランザクション・コンピューティング・ネットワーク・ファブリックを提供する。一実施形態では、コンピューティング・ネットワーク・ファブリックまたは「コア」は、チェーンのブロックの通信、処理および記憶が、トランザクション自体がリモートソースから発生している場合であっても、ほとんど同期せずに、非常に高い性能および低いレイテンシで、同時に実行されることを可能にするように、ブロックチェーンのデータを編成する分散型ブロックチェーンネットワークをサポートするように構成される。このデータ編成は、処理メッシュとして構成された自律的で協調的なコンピューティングノード内のトランザクション空間のセグメント化に依存している。各コンピューティングノードは、通常、コア内の他の全てのノードと機能的に同等であり、各ノードは、システムの全負荷を負担できることが好ましい。コンピューティングノードは、通常、コンピューティング、通信および記憶要素のクラスタを備える。より一般的には、コアネットワークを構成する全てのコンピューティングノードは、互いに等しいと見なされることが好ましく、スタンドアロンの個々のノードは、信頼できると見なされない。さらに、互いに関して、ノードは、自律的に動作し、好ましくは、いずれのノードも他のノードを制御することができない。ノードは、全体としてブロックチェーンの一貫した論理的に完全なビューを維持しながら、互いに独立してブロックを操作する。
性能分散型記録システムは、未使用トランザクション出力(UTXO)空間が複数のUTXOハンドラにわたってパーティション化され、UTXOデータベースをトランザクション処理から分離することが好ましい。結果として得られるデータ編成は、同期を減らしつつ同時処理の増加を促進し、それにより、より高いトランザクションスループットおよびより短いトランザクション処理時間を有するシステムをもたらす。他の特徴によれば、この同時処理構造が与えられた安全で高性能なトランザクション処理は、衝突検出および取り消し機構を含む楽観的同時制御を使用して提供される。
上記は、主題のより適切な特徴のいくつかを概説している。これらの特徴は、単なる例示であると解釈されるべきである。開示された主題を異なる方法で適用することによって、または説明されるように主題を変更することによって、多くの他の有益な結果を得ることができる。
主題およびその利点をより完全に理解するために、ここで添付の図面と併せて以下の説明を参照する。
本開示にかかる、トランザクションがブロックチェーンに編成された分散型記録システムを提供するネットワーキングアーキテクチャを示すブロック図である。
本明細書の技術にかかるブロックセグメンテーションを示している。
セグメント化されたブロックチェーンを示している。
セグメントの移行および再割り当てプロセスを示している。
本開示のノード間セグメント処理プロセスを示している。
トランザクション有効化を実行しているときの代表的なコンピューティングノードのブロック図およびその動作を示している。
ブロックマイニングおよび検証を実行しているときの図6Aのコンピューティングノードおよびその動作を示している。
本開示の同時処理技術の高レベル描写である。
本開示にかかるストリーミングブロックの生成、送信および有効化を提供するために様々なノードおよびノード要素の間で実行される動作の詳細な描写である。
コンピューティング・ネットワーク・ファブリックに関連付けられることができるコンテンツ配信ネットワーク(CDN)アーキテクチャを示している。
代表的なマシン構成を示している。
本開示にかかる同時トランザクション処理を容易にするためのトランザクションおよびUTXOハンドラの代表的な構成を示している。
トランザクションハンドラとUTXOハンドラとの間の代表的なトランザクションダイアログを示している。
失敗したトランザクションの代表的なダイアログを示している。
競合状態の代表的なダイアログを示している。
本開示の技術にかかる、失敗したトランザクションを元に戻す代表的なダイアログを示している。
全体的な高レベル設計
図1は、トランザクションがブロックチェーンに編成された分散型記録システムを実装するためのスケーラブルな高性能アーキテクチャを示している。高レベルでは、システムは、示されているように複数の機能領域、すなわち、周辺100a、エッジ100b、およびコア100cに分割されている。システムは、配信、管理、運用、管理、構成、分析などを容易にするために他の機能領域を備えることができるが、簡単にするために、これらの領域は示されていない。本明細書において使用される場合、周辺100aは、一般に、境界101に関連付けられた要素を指す。これらの要素は、通常、クライアントサーバベースの電子ウォレットまたはウォレットデバイス、端末および販売時点管理デバイス、レガシー金融ネットワーク要素および関連するアダプタを含む。一般に、本明細書において使用される場合、限定されるものではないが、金融トランザクションを含む、トランザクションの作成および消費に関与する任意の要素は、周辺101内の要素とすることができる。周辺は、グローバルに広がることができる。エッジ100bは、通常、境界102に関連付けられたオーバーレイネットワークの要素を指す。代表的な要素は、これらに限定されるものではないが、オーバーレイ・エッジ・ネットワーク(例えば、Akamai(登録商標)などのCDN)で実行される処理、通信および記憶要素(エッジサーバ、スイッチ/ルータ、ディスク/SSD)を含む。上述したようなCDNは、有利には、要求されたトランザクションおよびそれらに関連する結果を集約し、(周辺機器における要素との間で)後述するように効率的にルーティングする、(エンドユーザ/デバイスと比べて)低レイテンシのプレゼンスポイントを提供する。ウォレットサービスは、エッジ内に配置されることができる。エッジ要素はまた、個別に、集合的に、および他のサービスと連携して、攻撃および他の敵対的な活動からコア100cを保護するセキュリティ境界として機能する。CDN固有の実装が好ましいが、本明細書のシステムにおける典型的なエッジネットワークは、CDNエッジネットワークに限定される必要はない。これに限定されるものではないが、クラウドベースのシステムを含む新規なまたは既存の任意の適切なネットワークが使用されることができる。
図1は、トランザクションがブロックチェーンに編成された分散型記録システムを実装するためのスケーラブルな高性能アーキテクチャを示している。高レベルでは、システムは、示されているように複数の機能領域、すなわち、周辺100a、エッジ100b、およびコア100cに分割されている。システムは、配信、管理、運用、管理、構成、分析などを容易にするために他の機能領域を備えることができるが、簡単にするために、これらの領域は示されていない。本明細書において使用される場合、周辺100aは、一般に、境界101に関連付けられた要素を指す。これらの要素は、通常、クライアントサーバベースの電子ウォレットまたはウォレットデバイス、端末および販売時点管理デバイス、レガシー金融ネットワーク要素および関連するアダプタを含む。一般に、本明細書において使用される場合、限定されるものではないが、金融トランザクションを含む、トランザクションの作成および消費に関与する任意の要素は、周辺101内の要素とすることができる。周辺は、グローバルに広がることができる。エッジ100bは、通常、境界102に関連付けられたオーバーレイネットワークの要素を指す。代表的な要素は、これらに限定されるものではないが、オーバーレイ・エッジ・ネットワーク(例えば、Akamai(登録商標)などのCDN)で実行される処理、通信および記憶要素(エッジサーバ、スイッチ/ルータ、ディスク/SSD)を含む。上述したようなCDNは、有利には、要求されたトランザクションおよびそれらに関連する結果を集約し、(周辺機器における要素との間で)後述するように効率的にルーティングする、(エンドユーザ/デバイスと比べて)低レイテンシのプレゼンスポイントを提供する。ウォレットサービスは、エッジ内に配置されることができる。エッジ要素はまた、個別に、集合的に、および他のサービスと連携して、攻撃および他の敵対的な活動からコア100cを保護するセキュリティ境界として機能する。CDN固有の実装が好ましいが、本明細書のシステムにおける典型的なエッジネットワークは、CDNエッジネットワークに限定される必要はない。これに限定されるものではないが、クラウドベースのシステムを含む新規なまたは既存の任意の適切なネットワークが使用されることができる。
コア100cは、境界103に関連付けられた要素を指す。後述するように、コア100cは、これらに限定されるものではないが、スループット、応答時間、セキュリティおよびデータの整合性を含む特定の性能要件を満たすトランザクションブロックチェーンの処理および記憶をともにサポートするノードの高性能ネットワークであることが好ましい。この文脈におけるノード(「コンピューティングノード」と呼ばれることもある)は、通常、コンピューティング、通信および記憶要素のクラスタである。より一般的には、本明細書において使用されるクラスタは、1つ以上の、そしておそらく多くのコンピューティング、通信および記憶要素を指す。一実施形態では、コア100cは、オーバーレイネットワークノードを備えるが、コア100cは、CDNとは異なり且つ(説明されるように)コア動作専用のノードのセットを備えることができるため、これは要件ではない。通常、コンピューティングノードは、ネットワークトランジットによって相互接続され、トポロジ的なボトルネックを軽減または排除する高度な相互接続性を有する。
高性能を促進するために、好ましくは、コアネットワークは、高品質、大容量、および多様な相互接続を使用して構築される。コアネットワークの特定の構成は、通常、ブロックチェーンに実装されているコンセンサスプロトコルの性質に少なくとも部分的に基づく実装に依存している。使用されるコンセンサスプロトコルに応じて、コアネットワーク全体のレイテンシが十分に低いネットワーク通信を確保するために、必要に応じて、コアネットワークのサイズ(および/またはその中の様々なコンピューティングノードの分布)が制限されることもできる。
非限定的な一実装では、CDNエッジ100bは、(例えば、所与の地理における複数のネットワーク化されたデータセンタにわたって配置される)コアネットワーク100cに関連付けられたグローバルベースのサービスをサポートする。
再び図1を参照すると、メッセージ104は、トランザクション要求をエッジサーバ(例えば、CDNエッジサーバなど)に送信するデバイス(例えば、エンドユーザデバイス、電子ウォレットなど)の例である。多数のそのようなメッセージ(そして本明細書で説明するようにコアネットワークに送信されてコアネットワークによって処理されるものである)は、世界中のサーバ、デバイス、およびウォレットから発信されると予想されることを理解されたい。メッセージは、永続的な接続または一時的な接続を介して送信されるだけでなく、それらのネットワークが本明細書で説明するシステム機能をネイティブにサポートするために構築されたレガシーまたはネットワークインフラストラクチャの目的の一部とすることができる新たなまたは既存のネットワークを介して送信されることができる。さらに、メッセージは、システムへの任意の単一の進入ポイントへの依存を減らすために1つ以上のエッジサーバに送信されることができる。
メッセージ105は、トランザクション(おそらくメッセージ104に含まれるものを含む)をコアノード110(ノード110のセットが描かれている)の適切な要素にルーティングするエッジ要素の例である。所与のトランザクションの場合、同じトランザクションまたは同じトランザクションのハッシュ(または他のダイジェスト)を他のコアノードの適切な要素にルーティングする複数のメッセージ105が存在することができる。全てのメッセージ105がトランザクションの完全な表現を含む必要はない。トランザクションのダイジェストが送信され、(1)コア要素にトランザクションの存在を認識させ、(2)完全なトランザクションを含むメッセージの整合性をチェックする堅牢な方法を提供することができる。これは、全てのコアノードの適切な要素に対する到来トランザクションメッセージの完全な、さらに効率的な伝播を可能にする。また、従来のゴシッププロトコルに関連するネットワーク負荷を大幅に削減し、さらに、例えば侵害されたエッジエレメントのトランザクションの検閲や破損からの保護を提供する。
メッセージ106は、トランザクションを他のコアノードの適切な要素にルーティングするコアノード要素の例である。コアノード要素がシステムのコアノードにわたるトランザクションまたはトランザクションダイジェストの伝播に参加するように、複数のメッセージ106が存在することができる。メッセージ106を受信するコアノードは、次に、他のメッセージ106を生成し、システムのコアノード全体にメッセージをさらに伝播することができる。
トポロジ認識データ伝播
任意のデータ伝播プロトコルが使用されることができるが、本明細書の1つの好ましいアプローチは、基盤となるネットワークトポロジへの伝播を形成することにより、従来のランダム化ピアツーピアゴシッププロトコルのコストとレイテンシを改善することである。協調して、メッセージ104、105、および106は、トポロジ的に最も近い要素から始まり、トポロジ的に少ないまたは最も近くない要素に到達する伝播の経路を含む。他のエッジ要素にメッセージ104を送信するデバイスは、通常、ネットワーク全体の様々な伝播経路をたどる。これは、異なる方向に伝播するメッセージ107、108、および109によって示されている。さらに、所与のデバイスから始まる伝播の経路は、一般に、適切な負荷バランシングとセキュリティを実現するために時間とともに変化することがある。
任意のデータ伝播プロトコルが使用されることができるが、本明細書の1つの好ましいアプローチは、基盤となるネットワークトポロジへの伝播を形成することにより、従来のランダム化ピアツーピアゴシッププロトコルのコストとレイテンシを改善することである。協調して、メッセージ104、105、および106は、トポロジ的に最も近い要素から始まり、トポロジ的に少ないまたは最も近くない要素に到達する伝播の経路を含む。他のエッジ要素にメッセージ104を送信するデバイスは、通常、ネットワーク全体の様々な伝播経路をたどる。これは、異なる方向に伝播するメッセージ107、108、および109によって示されている。さらに、所与のデバイスから始まる伝播の経路は、一般に、適切な負荷バランシングとセキュリティを実現するために時間とともに変化することがある。
サービス発見および高性能マッピング
再び図1を参照すると、メッセージが送信される前に、メッセージを発信する各要素は、通常、受信要素のアドレスを発見しなければならない。アドレスは、インターネットプロトコル(IP)アドレス、またはいくつかの種類のネットワーク(例えば、ピアツーピアネットワークまたはオーバーレイネットワーク)のアドレス空間における他の名称もしくは番号とすることができる。他の要素のアドレスの発見は、様々な方法で実現されることができるが、一般に、一連の要素属性を発見サービスに送信することと、返信としてアドレス情報を受信することとを含む。好ましい一実施形態では、発見されるシステム要素の属性は、ドメイン名として符号化され、それにより、システムがCDNの高性能ドメイン名ルックアップサービスを使用して必要なアドレス情報を返信することを可能にする。オーバーレイネットワークのマッピング技術を使用することは、いくつかの利点を提供する。それは、最大規模の展開さえも可能とするように大規模なドメイン名空間をサポートする。これは、例えば、エッジ要素が、トランザクションをコアノードだけでなく、トランザクションの識別子空間の関連部分を処理するコアノード内の特定の要素にさえもルーティングすることを可能にする。これと同じ種類の細粒度ルーティングは、コアノード要素間の通信のために行うことができ、特に、CDN DNSサービスを使用すると、セグメントのセット、パーティション、またはトランザクション情報の他のグループを処理する1つのノードの要素は、同じセグメント、パーティション、またはトランザクション情報の他のグループを処理する他のコアノードの要素にメッセージを直接送信することができる。トラフィックは、低レベルのネットワークルータ/スイッチの一般的なセットを通過することができるが、コアノードは、各トランザクションを個別に検査してルーティングする必要がないことから、これは有利である。この方法でCDNネームサービスを使用すると、再構成もサポートする。特に、ノードの構成が変化した場合、例えば、トランザクション空間の一部の責任が1つのサーバから他のサーバに移行されることから、変化は、ネームサービスのマッピングシステムを介して迅速に且つ効率的に伝達される。CDNネームサービスを使用する他の利点は、一時停止の概念をサポートすることである。したがって、エッジ要素またはコアノード要素が正常に機能しなくなったり、動作不能になったりした場合、マッピングシステムは、問題から遠ざけるようにトラフィックをマッピングすることができる。CDNネームサービスを使用するさらなる利点は、高解像度の容量消費測定に基づいてトラフィックの負荷バランシングをサポートするためのそのようなシステムの能力である。このアプローチはまた、周辺のデバイスが最小限の基盤となるサービスおよびネットワークコンポーネントを共有するエッジ要素のアドレス情報を受信することができるように、ルートと領域の多様性もサポートする。CDN DNSサービスはまた、レイテンシの最適化もサポートする。例えば、コアノード要素は、いくつかの近接基準を満たす他のコアノード要素のアドレスを受信することができる。
再び図1を参照すると、メッセージが送信される前に、メッセージを発信する各要素は、通常、受信要素のアドレスを発見しなければならない。アドレスは、インターネットプロトコル(IP)アドレス、またはいくつかの種類のネットワーク(例えば、ピアツーピアネットワークまたはオーバーレイネットワーク)のアドレス空間における他の名称もしくは番号とすることができる。他の要素のアドレスの発見は、様々な方法で実現されることができるが、一般に、一連の要素属性を発見サービスに送信することと、返信としてアドレス情報を受信することとを含む。好ましい一実施形態では、発見されるシステム要素の属性は、ドメイン名として符号化され、それにより、システムがCDNの高性能ドメイン名ルックアップサービスを使用して必要なアドレス情報を返信することを可能にする。オーバーレイネットワークのマッピング技術を使用することは、いくつかの利点を提供する。それは、最大規模の展開さえも可能とするように大規模なドメイン名空間をサポートする。これは、例えば、エッジ要素が、トランザクションをコアノードだけでなく、トランザクションの識別子空間の関連部分を処理するコアノード内の特定の要素にさえもルーティングすることを可能にする。これと同じ種類の細粒度ルーティングは、コアノード要素間の通信のために行うことができ、特に、CDN DNSサービスを使用すると、セグメントのセット、パーティション、またはトランザクション情報の他のグループを処理する1つのノードの要素は、同じセグメント、パーティション、またはトランザクション情報の他のグループを処理する他のコアノードの要素にメッセージを直接送信することができる。トラフィックは、低レベルのネットワークルータ/スイッチの一般的なセットを通過することができるが、コアノードは、各トランザクションを個別に検査してルーティングする必要がないことから、これは有利である。この方法でCDNネームサービスを使用すると、再構成もサポートする。特に、ノードの構成が変化した場合、例えば、トランザクション空間の一部の責任が1つのサーバから他のサーバに移行されることから、変化は、ネームサービスのマッピングシステムを介して迅速に且つ効率的に伝達される。CDNネームサービスを使用する他の利点は、一時停止の概念をサポートすることである。したがって、エッジ要素またはコアノード要素が正常に機能しなくなったり、動作不能になったりした場合、マッピングシステムは、問題から遠ざけるようにトラフィックをマッピングすることができる。CDNネームサービスを使用するさらなる利点は、高解像度の容量消費測定に基づいてトラフィックの負荷バランシングをサポートするためのそのようなシステムの能力である。このアプローチはまた、周辺のデバイスが最小限の基盤となるサービスおよびネットワークコンポーネントを共有するエッジ要素のアドレス情報を受信することができるように、ルートと領域の多様性もサポートする。CDN DNSサービスはまた、レイテンシの最適化もサポートする。例えば、コアノード要素は、いくつかの近接基準を満たす他のコアノード要素のアドレスを受信することができる。
代替の実施形態は、位置または方向認識マッピングを利用する。したがって、例えば、コアノード要素は、所望の位置もしくは方向にあるまたは方向性グラフを構成するノード要素に応答がアドレスを提供するように、位置または方向情報(地理的またはトポロジ方向のいずれか)によって符号化されたドメイン名を使用することができる。この機能は、マッピングシステムに固有とすることができるかまたはマッピングシステムに付属することができる。この方法でのトポロジ的マッピングは、低レイテンシのトポロジ認識データ伝播機構を提供する。
一般化
本明細書において使用される場合、ブロックは、一般に、トランザクションデータの任意の集約または関連付けを指す。特定のフォーマットは必要ない。ブロックチェーンは、暗号化を使用してリンクおよび保護されるブロックと呼ばれる継続的に拡大するレコードのリストである。ブロックチェーンの各ブロックは、通常、前のブロックにリンクする暗号化ハッシュとトランザクションデータとを含む。分散型台帳として使用する場合、ブロックチェーンは、通常、ノード間通信と新たなブロックの有効化のためのプロトコルに集合的に準拠するピアツーピアネットワークによって管理される。記録されると、任意の所与のブロックのデータは、ネットワークの大多数の結託を必要とする後続の全てのブロックを変更せずに遡及的に変更されることはできない。
本明細書において使用される場合、ブロックは、一般に、トランザクションデータの任意の集約または関連付けを指す。特定のフォーマットは必要ない。ブロックチェーンは、暗号化を使用してリンクおよび保護されるブロックと呼ばれる継続的に拡大するレコードのリストである。ブロックチェーンの各ブロックは、通常、前のブロックにリンクする暗号化ハッシュとトランザクションデータとを含む。分散型台帳として使用する場合、ブロックチェーンは、通常、ノード間通信と新たなブロックの有効化のためのプロトコルに集合的に準拠するピアツーピアネットワークによって管理される。記録されると、任意の所与のブロックのデータは、ネットワークの大多数の結託を必要とする後続の全てのブロックを変更せずに遡及的に変更されることはできない。
本明細書の技術は、ブロックチェーンを使用してトランザクションデータを記録することができるが、本開示のシステムのアーキテクチャおよび関連するトランスポート機構は、トランザクションデータの他の編成にも適用することができるため、これは限定されるものではない。さらに、ブロックのチェーンまたはシーケンスにおけるようなブロックチェーンの概念は、これらに限定されるものではないが、ブロックツリー、ブロックグラフなどを含むブロックの任意の編成とすることができる。
マイニングは、ブロックチェーンにおける前のブロックを参照するヘッダを有する順序付けられたトランザクションのブロックを生成する行為である。公の(無許可の)ブロックチェーンコンセンサスシステムでは、マイニングは、一般に、競争として構成され、生成されたブロック(およびその祖先)がマイニング競争およびその後のコンセンサスプロセスに耐えた場合、それは確定され、永続的な記録の一部と見なされる。理想的なシステムでは、あるラウンドから次のラウンドへの(すなわち、あるブロックから次のブロックへの)マイニング責任は、参加者間でランダムに分散される。正式には、理想的なシステムでは、マイニングの決定は、予測可能ではなく、影響を与えることができず、検証可能である。しかしながら、現実世界の用途では、分散は、完全にランダムである必要はない。例えば、作業証明システムでは、マイニング能力が高いエンティティほど競争に勝つ確率が高いため、分散は、実際にはランダムではない。
セグメンテーション
従来のブロックチェーンの実装では、ブロックチェーンを単純なブロックのシーケンスとして扱う。そのようなアプローチは、通常、処理のボトルネックを形成し、ブロックチェーンをその集約形式で通信および記憶することによって、ブロックチェーン実装の達成可能な性能を厳しく制限する。
従来のブロックチェーンの実装では、ブロックチェーンを単純なブロックのシーケンスとして扱う。そのようなアプローチは、通常、処理のボトルネックを形成し、ブロックチェーンをその集約形式で通信および記憶することによって、ブロックチェーン実装の達成可能な性能を厳しく制限する。
対照的に、本明細書で説明するアプローチは、その通信、処理および記憶が非常に高い性能でほとんど同期せずに同時に実行されることを可能にするように単一チェーンのデータを編成することにより、公知の技術から逸脱している。理解されるように、このデータ編成は、ブロックチェーンの一貫した論理的に完全なビューを維持しながら、各ノード内のトランザクション空間のセグメント化に依存することが好ましい。このアプローチはまた、連合またはシャーディングされたブロックチェーンのセットを構成する複数のチェーンのそれぞれにも適用されることができ、ブロックチェーン操作の性能を改善し、それにより、作業を減らし、オフチェーン(いわゆる「レイヤ2」)システムの性能を向上させる。
このアプローチでは、ネットワークにまたがるコンセンサスアルゴリズムが使用され、システムが正しい最終結果を生成することを確実にする。使用できる特定のコンセンサスアルゴリズムは、限定されるものではない。しかしながら、各ノード内の操作では、ノードの要素が正しく信頼できると想定している。ノードに障害が発生したり、攻撃者によって破壊された場合、システムは、ネットワークの残りの部分に依存して、サービスの整合性と可用性を維持するとともに、障害および侵入検出機能をサポートする。見てわかるように、この設計アーキテクチャは、システム要素がブロックチェーンデータ編成と整合するように、ノードの内部が、高性能、低レイテンシの通信ファブリックで実行される疎結合分散型システムとして編成されることを可能にする。結果として得られるアーキテクチャは、公知の技術と比較してはるかに高い性能の実装を提供する。
ブロックセグメンテーション
図2を参照すると、ブロック200は、トランザクションid(Txi)によって、いくつかのセグメント202a−n(ここで、n=1000)と、ヘッダ(Hdr)204とにセグメント化される。セグメント202およびヘッダ204は、ブロックチェーンのブロックを表すが、それらは、(多くの場合)個別に処理、送信および記憶されることができる。図2に1000として示されるセグメント202の数は、数がより多くても少なくてもよく、時間とともにまたは動的に変化してもよい。好ましくは、十分な数のセグメントが選択されて、データのセグメンテーション(編成)を変更する必要なしに、基礎となるリソースの実質的な将来の成長を可能にするのに十分な大きさの空間を形成する。
図2を参照すると、ブロック200は、トランザクションid(Txi)によって、いくつかのセグメント202a−n(ここで、n=1000)と、ヘッダ(Hdr)204とにセグメント化される。セグメント202およびヘッダ204は、ブロックチェーンのブロックを表すが、それらは、(多くの場合)個別に処理、送信および記憶されることができる。図2に1000として示されるセグメント202の数は、数がより多くても少なくてもよく、時間とともにまたは動的に変化してもよい。好ましくは、十分な数のセグメントが選択されて、データのセグメンテーション(編成)を変更する必要なしに、基礎となるリソースの実質的な将来の成長を可能にするのに十分な大きさの空間を形成する。
この実施形態では、ブロックセグメンテーションは、通常、ネットワークの全てのノードによって共有される外部から見える属性である。見てわかるように、セグメントによってブロックデータを編成することにより、ブロック情報を交換するノードの性能と効率を大幅に向上させる。特に、本明細書のアプローチは、所与のセグメントの処理を担当するノードのコンポーネントが、所与のセグメントの処理を担当する他のノードのコンポーネントと直接通信することを可能にする。さらに、コンポーネントへのセグメントのマッピングは、ノード間で異なることができ、それにより、例えば、トランザクションデータの総量を処理する際にノードが異なる数のリソースを使用することを可能にすることによるなど、スケールアップ(またはスケールダウン)展開を可能にする。
代替の実施形態では、セグメンテーションの詳細は、厳密にノードの内部属性のままであってもよい。そのような実施形態では、ノードのコンポーネントへのセグメントのマッピングは、任意とすることができる。この代替手段は、ノードの構成の独立性を高めることができるが、一般に、ノード内のトランザクションレイヤルーティングのいくつかの形式を含む、ノード間のより詳細な(例えば、トランザクションごとの)データ交換を必要とする。
本明細書で使用される場合、セグメンテーションという用語は、暗黙的であれ明示的であれ、1つのノードの要素が他のノードの要素と相互作用して一度に複数のトランザクションのデータを交換することができるように、トランザクションデータの任意のグループ化、パーティション化、シャーディングなどを意味するために使用される。
ヘッダ204は、いくつかの必須要素、すなわち、前のブロックヘッダのハッシュ210、ブロックのコンテンツのマークルルート208、およびブロックのマイナーが実際に正当なマイナーであったことを示す証明206を含む。他の情報が含まれてもよい。
ブロックチェーンセグメンテーション
図3を参照すると、セグメント化されたブロックは、一時的に、セグメント化されたブロックチェーンを形成し、そのいくつかのブロックは保留されている(すなわち、まだ確定されていない)が、その他のブロックは確定されている(すなわち、ブロックチェーンに追加されている)。この例では、図示されている各マシン300は、保留中のブロックと確定されたブロックとの双方をサポートするが、これは要件ではない。この分散型の編成は、このアプローチがブロックツリーまたはブロックグラフ構造などに関して、他のシナリオにも適用可能とすることができるため、ブロック「チェーン」に限定されるものではない。ブロックはまだ全体であるが、そのセグメントは、ブロックをモノリシックに処理するよりも効率的に処理されることから、このアプローチは有利である。図3に示されるように、様々な数のセグメントが異なるマシンリソースに割り当てられ、組み合わせられることができる。この種の編成は、仮想化およびコンテナ化された環境に特に適用可能であるが、いずれも恩恵を達成するために必要ではない。
図3を参照すると、セグメント化されたブロックは、一時的に、セグメント化されたブロックチェーンを形成し、そのいくつかのブロックは保留されている(すなわち、まだ確定されていない)が、その他のブロックは確定されている(すなわち、ブロックチェーンに追加されている)。この例では、図示されている各マシン300は、保留中のブロックと確定されたブロックとの双方をサポートするが、これは要件ではない。この分散型の編成は、このアプローチがブロックツリーまたはブロックグラフ構造などに関して、他のシナリオにも適用可能とすることができるため、ブロック「チェーン」に限定されるものではない。ブロックはまだ全体であるが、そのセグメントは、ブロックをモノリシックに処理するよりも効率的に処理されることから、このアプローチは有利である。図3に示されるように、様々な数のセグメントが異なるマシンリソースに割り当てられ、組み合わせられることができる。この種の編成は、仮想化およびコンテナ化された環境に特に適用可能であるが、いずれも恩恵を達成するために必要ではない。
図4を参照すると、システムリソースへのセグメントの割り当ては、例えば、アップグレード、メンテナンスおよび障害回復をサポートするために、時間とともに変化することができる。この場合、1つのマシン402が故障したかまたはオフラインになり、それが処理していたセグメントが他のマシンに移行される。このアプローチは、日常的および緊急の理由の双方で、仮想またはコンテナ化されたコンピューティング要素を移行するという確立された概念によく適合する。
セグメンテーションおよびノード間通信
図5を参照すると、セグメンテーションをノードの公開された属性にすることにより、ノード内の要素は、他のノードの要素と直接通信して、セグメントの細分性に関する情報を交換することができる。ノードへのセグメントのマッピングは、全てのノードにわたって同じである必要はない。
図5を参照すると、セグメンテーションをノードの公開された属性にすることにより、ノード内の要素は、他のノードの要素と直接通信して、セグメントの細分性に関する情報を交換することができる。ノードへのセグメントのマッピングは、全てのノードにわたって同じである必要はない。
後述するように、好ましい実施形態では、システムのコンピューティングノードは、それぞれ、トランザクション有効化、ならびにブロックマイニングおよび検証などの複数の別個の機能またはモード(動作役割)を実行することができる(多くの場合に実行する)。実際、所与のコンピューティングノードは、多くの場合、同時に複数のそのようなモードで動作する。典型的な動作シナリオでは、特定のノードは、マイニングに使用されることができるが、通常、全てのコンピューティングノードは、何がマイニングされるかを検証する。
図5は、ブロックマイニングおよびブロック検証の編成が好ましくはセグメンテーションの存在下で達成される方法を示している。この例では、他のコンピューティングノード500b、500cおよび500dがブロックを検証する(本明細書では「検証」と呼ぶ)マシンを備える一方で、コンピューティングノード500aにおけるブロックの生成/マイニングのために使用される多数のマシンが存在すると想定している。図示のように、ブロック・マイニング・イベントは、ブロックのマイニングまたは生成を開始しようとしていることを通知する、マイニングノード500aによって(一般に、生成および有効化ブロックヘッダを処理する要素によって)ネットワークの他のノード(この例では、ノード500b、500cおよび500d)に送信されるメッセージ502によって開始される。ノード500b、500cおよび500dの対応する要素は、このメッセージを受信し、マイニングノードの要素からのマイニングされたブロックデータを予期するようにそれらのノードの処理要素に通知する。同時に、503などの複数のメッセージシーケンスが、生成されたセグメントごとに、それらのセグメントを処理するマイニングノードの要素によって、リモート検証ノードの各セグメントを処理する要素に(それぞれ)送信される。
マイニングされたセグメントが終了すると、そのセグメントを担当する要素からブロックヘッダを担当する要素にメッセージ504が送信される。メッセージは、とりわけ、生成されたセグメントのマークルルートを含む。全てのメッセージ504が送受信されると、ブロックヘッダを担当する要素は、ブロック・マークル・ツリーの上部を作成し、ヘッダにマークルルートを保存する。そして、ヘッダの生成および検証の処理を担当する他のノードの要素にメッセージ505を送信する。有効化を実行する際、セグメントのメッセージ503を受信すると、セグメントを処理する受信ノード要素は、受信したトランザクションを有効化し、セグメントのマークルツリーを計算し、完了すると、ヘッダを処理するノードの要素にメッセージ506を送信する。その要素は、全てのセグメントのメッセージ506からブロックヘッダを再構築し、それをメッセージ505内のマイニングノードから受信したヘッダと比較する。ヘッダがマッチする場合、ブロックは受け入れられ、そのノードの事前に確定されたブロックのセットに追加される。
一実施形態では、トランザクションが検証に失敗するかまたは再構築されたヘッダがマイニングノードから送信されたヘッダとマッチしない場合、ブロックは拒否され、全ての変更が逆行されてノードから消去される。
他の実施形態では、有効化ノードは、同じセグメントについてメッセージ506の異なる値にマイニングするマシンにフラグを立てることができ、それにより、1つ以上の故障または悪意のあるマシンからシステムを保護する。
上述した処理を以下により詳細に説明する。
セグメンテーションおよびノード編成
図6Aおよび図6Bは、システムのコンピューティングノードの動作を示し、図6Aは、初期トランザクション有効化に関与するノード要素の動作を示し、図6Bは、ブロックマイニングおよび検証に関与するノード要素の動作を示している。
図6Aおよび図6Bは、システムのコンピューティングノードの動作を示し、図6Aは、初期トランザクション有効化に関与するノード要素の動作を示し、図6Bは、ブロックマイニングおよび検証に関与するノード要素の動作を示している。
図6Aおよび図6Bに示されるように、ノードは、トランザクション有効化ならびにブロックマイニングおよび検証に関連する個別にスケーラブルなタスクを実行するためにともに機能するいくつかの要素またはコンポーネントを含む。これらのコンポーネントは、ノードコーディネータ601、1組のセグメントハンドラ604、1組のトランザクションハンドラ609、1組のUTXO(未使用トランザクション出力、Unspent Transaction Output)ハンドラ614、および1組の署名検証部617を含む。セグメントハンドラおよびトランザクションハンドラは、別個のものとして示されているが(これが好ましい)、これらの機能は、後述するように双方の機能を実行する複合ハンドラに組み合わせられることができる。さらに、通常、各ハンドラには複数のインスタンスがあるが、その処理能力に応じて1つで十分な場合もある。
背景として、そして上記のように、好ましくは、各ノードは、システムにおける他の全てのノードと機能的に同等であり、各ノードは、システムの全負荷を担う。より一般的には、システムにおける全てのノードは、互いに等しいと見なされ、スタンドアロンの個々のノードは、信頼できると見なされない。さらに、互いに関して、ノードは、自律的に動作し、いずれのノードも、別のノードを制御することができない。
ノードは、一般に、以下のように動作する。トランザクション有効化においては、図6Aを参照すると、通常、未処理のトランザクションがエッジマシン(または他のノード)から転送されるときに、612においてそれら未処理のトランザクションがノードにおいて継続的に受信され、最初にトランザクションハンドラ609によって処理される。トランザクションは、通常、(例えば、それに関連付けられたまたはそこで実行されているウォレットサービスによって)ウォレットまたはウォレットのセットに作成され、ウォレットは、通常、エッジマシンと相互作用し、周辺からトランザクション要求を受信するか、または612において受信されてトランザクションハンドラ609によって処理される場合、ブロックチェーントランザクションをコアに転送する。一般に、トランザクションハンドラによる未処理のトランザクションの処理が「有効化」であり、未処理のトランザクションがトランザクションハンドラによって「有効化」されると、トランザクションは、トランザクションハンドラのメモリプール(または「memプール」)に配置される。トランザクションハンドラによって有効であると見出されなかった未処理のトランザクションは拒否され、ハンドラのメモリプールに配置されない。
この目的のために、受信(すなわち、未処理のトランザクションがノードへ進入)すると、トランザクションハンドラ609は、通常、2つの基本的なアクションを実行する。図6Aに示されるように、トランザクションハンドラ609は、(615において)UTXOハンドラ614にクエリを出し、トランザクションへの入力が存在するかどうかを判定し、存在する場合、(616において)UTXOハンドラ614によって管理されているUTXO空間からそれらの入力を取得する。入力が存在しない場合、クエリを受信したUTXOハンドラは、トランザクションハンドラに通知し、トランザクションハンドラは、未処理のトランザクションを拒否する。UTXOハンドラ614から入力を受信すると、トランザクションハンドラ609は、(618において)署名検証部617を参照して、各入力に関連付けられたロック解除スクリプト(デジタル署名)が有効かどうかを判定する。通常、各入力は、トランザクションのロック解除スクリプト(デジタル署名)を含むため、署名検証部によって実行される署名検証は、トランザクションによって使用される各UTXOに関連付けられたロックスクリプト(公開鍵)と署名がマッチするかを確認する署名検証を含む。この動作の詳細については、以下に説明する。したがって、この確認は、暗号化動作を含み、計算集約的であり、したがって、署名検証部は、UTXOハンドラから受信した有効な入力についてのみトランザクションハンドラによって参照されることが好ましい。署名検証部617は、619において入力(特に、入力署名)の有効性を確認する。トランザクションハンドラは、入力がトランザクションハンドラによって受信されると、UTXOハンドラおよび署名検証部と同時に相互作用することができる。全ての入力署名が署名検証部617によって検証されると、未処理のトランザクションは、トランザクションハンドラによって「有効」または「有効化済み」と見なされ、615において、トランザクションハンドラ609は、新たなトランザクションに関連付けられたUTXOを担当するUTXOハンドラ614において新たなトランザクション出力(UTXO)を作成する。この動作では、作成要求は、1つのUTXOハンドラ、すなわち、トランザクションに関連付けられたトランザクションid空間の部分においてUTXOを処理する1つのハンドラにのみ送信される。また、図示されているように、(615において)作成呼び出しが送信され(クエリおよび署名検証が成功した後)、新たなトランザクション出力(UTXO)を開始する。
この方法で全ての入力が検証されると、未処理のトランザクションがトランザクションハンドラのメモリプールに配置される。そして、(有効化された)未処理のトランザクションは、613を介して全ての他のノードに出力(すなわち、伝播)され、未処理のトランザクションを受信する他の各ノードは、ここで説明したのと同様の一連の動作を実行する。これで未処理のトランザクションのローカル有効化動作を完了し、これは、結果としてトランザクションハンドラのメモリプールに入れられる。上述したプロセスは、未処理のトランザクションがノードにおいて(再度、エッジマシンまたは他のノードのいずれかから)受信されると継続する。
したがって、未処理のトランザクションを受信するトランザクションハンドラは、トランザクションへの入力が存在するかどうかを(UTXOハンドラのクエリから)判定し、存在する場合は、それらの値とロックスクリプト(アドレスまたはウォレットアドレスと呼ばれることもある公開鍵を含む)が何であるかを判定する。それは、各入力のロック解除スクリプト(デジタル署名)を確認し、全ての署名が有効である場合、トランザクションハンドラは、未処理のトランザクションをその関連するメモリプールに収容(保存)する。このようにして、有効化済みの未処理のトランザクションは、各ハンドラのメモリプールに蓄積される。したがって、各トランザクションハンドラのメモリプールには、ブロックチェーンにおけるブロックセグメント(したがってブロック)に対してマイニングされる(すなわち、割り当てられる)ことを実質的に「待機している」トランザクションの集合(セット)が存在する。好ましくは、システムは、最小待機時間を強制して、新たなトランザクションが伝播してシステムの他のノードによって有効化されることを可能にする。
ここで、ノードコーディネータ601がブロックをブロックチェーンにマイニングするときだと判定したと想定する。ブロックをマイニングするという概念は、ブロックがシステムの所定のコンセンサスアルゴリズムにしたがって確定的であるとノードコーディネータが判断したときに生じる(以下により詳細に説明する)ものであり、実際にブロックをブロックチェーンに追加するという概念とは異なる。通常、「マイナー」として機能するノードのサブセットが常に存在する。本明細書の技術によれば、説明したように、ブロックをコンポジットとしてマイニングする代わりに、ブロックは、「セグメント」単位でマイニングされる。すなわち、ブロックの個々のセグメントは(同時か並列式であるかにかかわらず)別個に、具体的にはセグメントハンドラ604によってマイニングされる。
このために、ここで図6Bを参照すると、ノードコーディネータ601は、605を介してそれらのセグメントのマイニングを開始するように、その関連するセグメントハンドラ604に指示する。このコマンドは、通常、開始時刻、期間、および終了時刻を含む。ノードコーディネータはまた、マイニングされたブロックセグメントデータがマイニングノードのセグメントハンドラからシステムの他のノードのセグメントハンドラに直接(607を介して)送信されることを予期するように、(602を介して)システム内の他のノードコーディネータに通知する。セグメントハンドラのジョブは、トランザクションハンドラのメモリプールから有効化済みの未処理のトランザクションを取得および受信し、ブロックが確定されてブロックチェーンに追加される場合に、それらの有効化済みトランザクションをブロックセグメント(したがって、ブロック)で最終的に永続化するためにステージング(stage)することである。代替の実施形態では、セグメントハンドラは、有効化済みのトランザクションのダイジェスト(ハッシュ)を取得および受信することができ、その場合、将来の永続化のためにトランザクションをステージングするジョブは、トランザクションハンドラにシフトする。
後述するように、好ましくは、ブロック内の各セグメントの実際の永続性(およびブロックチェーン自体でのブロックの永続性)は、セグメントハンドラがノードコーディネータによってブロックを確定するように指示されるまで発生しない。通常、これは限定されるものではないが、セグメントハンドラ604とトランザクションハンドラ609との間に1:1の関係がある。上記のように、これらの機能は、実装において組み合わせることができ、1:1の関係が示されているが、ノードは、任意数のいずれかの種類のハンドラによって構成されることができる。
マイニングを開始するコマンドを受信すると、610において、セグメントハンドラ604は、それぞれのメモリプール内のトランザクションをブロックに割り当て、未処理の各トランザクション(またはそのハッシュ)を返すように、(セグメントハンドラのためにセグメントを処理する)トランザクションハンドラに対して要求する。しかしながら、トランザクションハンドラは、そのメモリプールから要求元のセグメントハンドラに未処理のトランザクションを返す前に、マイニングされるブロックに関してトランザクション入力を最初に「使用する(spend)」(すなわち、実際のトランザクション値を入力に適用する)必要があり、それは(620を介して)使用要求をUTXOハンドラに送信することによって行われる。示されているように、UTXOハンドラは、使用要求を適用し、それらのローカルデータを更新して、(621を介して)その結果(成功または失敗)をトランザクションハンドラに返す。
失敗の応答が発生した場合、トランザクションハンドラは、620を介してUTXOハンドラにトランザクションの全ての成功した使用動作を取り消すように指示する必要がある。この衝突検出およびロールバックは、UTXOハンドラにおいてロック(または複数のUTXOハンドラを有するノードの場合には分散型ロック)を取得することを未然に防ぎ、したがって高コストを回避する楽観的同時並行処理制御機構を構成する。これは、UTXO使用動作の効率的な高スループットの低レイテンシ処理を可能にする。
全てのトランザクション入力の使用に成功すると、トランザクションハンドラは、620を介してUTXOハンドラにトランザクション出力(トランザクションのUTXO)をブロックに割り当てるように指示し、611を介して未処理のトランザクション(および/またはそのダイジェスト)を要求元のセグメントハンドラに転送して戻す。
ここで説明したセグメントハンドラとトランザクションハンドラとの相互作用は、トランザクションハンドラが図6Aに示され且つ上述したように未処理のトランザクションを受信して処理し続けるときに実行される。図6Bを再び参照すると、セグメントハンドラ604は、互いに対して並列に動作し、各セグメントハンドラは、関連するトランザクションハンドラに同様の要求を行う。したがって、通常、マイニングされるブロックの特定のセグメントに関連付けられたセグメントハンドラとトランザクションハンドラとのペアがある。トランザクションハンドラ609は、要求元のセグメントハンドラ604に、そのメモリプールからの未処理の各トランザクションを、未処理のトランザクションについて計算されたダイジェストとともに提供することによって応答する。セグメントハンドラ604は、各トランザクション(およびそのダイジェスト)を受信し、トランザクションを当該セグメントの論理シーケンスにシーケンス化する。各セグメントハンドラは、その関連付けられているトランザクションハンドラから受信する未処理のトランザクションに対しても同様に動作するため、ブロックのセグメントは、同時に(セグメントハンドラによって)マイニングされる。セグメントハンドラが未処理のトランザクションをシーケンス処理するときに、それは、(607を介して)トランザクションのダイジェストを取得し、それらを(好ましくはダイジェストのみ)他の全てのノードに出力する。ネットワークの他のノードは、セグメントハンドラから伝播されたダイジェストを使用して、ローカルにマイニングされているセグメントを有効化する。セグメントハンドラはまた、608を介して(他のノードの)他のセグメントハンドラからダイジェストを受信する。
セグメントハンドラ604は、セグメントが有効であると判定すると、その処理の結果、すなわち、セグメントに対して計算されたマークルツリーのルートを、606を介してノードコーディネータに返す。マイニング中、ノードコーディネータは、セグメントが有効であると信頼する。(同時に動作する)他のセグメントハンドラ604は、同様に機能し、それらのセグメントが同様に完了したことを示すそれらのマイニング結果を返す。
(全てのセグメントのマークルルートを使用して)全てのセグメントハンドラがノードコーディネータに応答すると、ノードコーディネータは、(全てのセグメントマークルルートから)全体的なブロック・マークル・ツリーを計算し、全体的なブロック・マークル・ルートおよびその他の情報を組み込んだブロックヘッダを生成する。次に、ノードコーディネータは、602を介してブロックヘッダを含むマイニング完了メッセージをネットワーク内の他のノードコーディネータに送信/伝播した後、それらの他のノードコーディネータは、ブロック・マークル・ルートを使用して、次に説明するようにそれらのブロック検証プロセスを完了する。
特に、ここで、ノードコーディネータ601が、603を介して、それ自体のブロックマイニング動作を開始する他のノードのノードコーディネータから送信されたマイニング開始メッセージを受信すると仮定する。これは、他のノードからマイニングおよび送信されたブロックデータのブロック検証プロセスを開始する。ブロック検証プロセスは、ブロックマイニングプロセスのバリエーションであるが、2つは異なり、多くの場合、ノードは、双方のプロセスに同時に関与する。実際、ノードは、通常、一度に1つのブロックのみをマイニングするが、同時に複数の到来ブロックを検証することもできる。マイニングと同様に、本明細書で説明する技術にしたがって、説明したように、ブロックをコンポジットとして検証する代わりに、好ましくは、ブロックは「セグメント」単位で検証される。すなわち、ブロックの個々のセグメントは(同時か並列式であるかにかかわらず)別個に、具体的にはセグメントハンドラ604によって検証される。
このために、605を介して、ノードコーディネータ601は、それらがマイニングプロセスにおいてブロックにトランザクションをマイニング/割り当てるため、608において他のノードからトランザクションハッシュを受信し、それに応答して、マイニングノードのセグメントハンドラによって行われた関連するトランザクションブロックの割り当てを検証するようにその関連するセグメントハンドラ604に指示する。好ましくは、セグメントデータの検証は、(データが受信されるのにともない)漸進的に、およびマイニングノード内のブロックセグメントへの追加のトランザクションのマイニング/割り当てと同時に実行される。
608を介して、トランザクションハッシュを受信すると、セグメントハンドラ604は、610を介してトランザクションハッシュをセグメントのトランザクションの処理を担当するトランザクションハンドラ609に転送する。セグメントハンドラからトランザクションハッシュを受信すると、トランザクションハンドラ609は、そのメモリプール内の関連するトランザクションレコードを調べる。
トランザクションがメモリプールから欠落している場合、トランザクションハンドラ609は、(622を介して)要求を送信し、(623を介して)好ましくはトランザクションのマイニングを担当するマイニングノードにおけるトランザクションハンドラから欠落した未処理のトランザクションを受信する。この要求/応答アクションは、優先度の高い方法で迅速に処理されることが好ましい。欠落した未処理のトランザクションを受信すると、トランザクションのブロック割り当ての検証を再開する前に、トランザクションハンドラ609は、トランザクションをメモリプールに追加する前に、上述したようにトランザクションを有効化する必要がある。
そのメモリプールからトランザクションを正常に取得すると、トランザクションハンドラは、上述したようにローカルにマイニングされているブロックにトランザクションを割り当てるのと同じように、検証されているブロックセグメントへのトランザクションの割り当てを実行する。しかしながら、割り当てが失敗した場合、セグメントおよびそれがその一部であるブロックの検証は失敗する(すなわち、ブロックは拒否される)。
その後、ノードコーディネータは、所定のコンセンサスアルゴリズムを適用して、ブロックを確定することを決定する。このため、ノードコーディネータは、ブロックヘッダを永続化し、ノードのセグメントハンドラにブロックを確定するように指示する。そうすることで、ノードコーディネータは、ブロック・マークル・ツリー全体を各セグメントハンドラに提供する。次に、各セグメントハンドラは、ブロックに関連付けられたセグメントのセットを永続化し、関連するトランザクションハンドラにブロックを確定するように指示する。そうすることで、セグメントハンドラは、各トランザクションハンドラがそのセグメントのセットに必要とするブロック全体のマークルツリーの一部を生成してトランザクションハンドラに提供する。次に、各トランザクションハンドラは、そのアクティブなメモリプールから確定されたトランザクションを削除し、特に、トランザクションハンドラがセグメントハンドラから受信したブロックの全体的なマークルツリーの一部から派生したマークル証明を使用して、確定されたトランザクションについてエッジ(またはウォレット)から受信した任意の未処理のトランザクション要求に応答する。そして、トランザクションハンドラは、トランザクションの処理に関してトランザクションハンドラが受信することができる後続のクエリをサポートするために使用されることができる場合、確定されたトランザクションをメモリに保存する。次に、トランザクションハンドラは、ブロックを確定するように全てのUTXOハンドラに指示する。それに応じて、UTXOハンドラは、確定されたブロックにおいて使用されたUTXOを永続的に使用済みとしてマークし、確定されたブロックに割り当てられたUTXOを永続的に作成済みとしてマークする。したがって、このようにブロックヘッダおよびセグメントをディスクに永続化することは、ブロックチェーンにブロックを追加する。実装に応じて、ブロックチェーンにそのように書き込まれたブロックは、最終的なものと見なされることができる(したがって、実質的に不変である)。
要約すると、上述したノード処理では、トランザクションハンドラは、通常はエッジマシンから未処理のトランザクションを受信する。トランザクションハンドラが未処理のトランザクションを有効化(およびローカルメモリプールに配置)した後、トランザクションハンドラは、未処理のトランザクションを、その未処理のトランザクションの有効化も担当する他のノードの適切なトランザクションハンドラに伝播する。その後、ブロックセグメントのマイニングを開始するというノードコーディネータの決定に応じて、トランザクションハンドラは、そのメモリプールからブロックセグメントに未処理のトランザクションのセットをマイニングし(割り当て)、各セグメントを処理している要求元のセグメントハンドラにそれらの未処理のトランザクション(およびそれらの関連するダイジェスト)を送信する。セグメントハンドラは、受信したトランザクションをセグメントにシーケンス化し、その際、セグメントハンドラは、セグメントを構成するトランザクションのダイジェストのリストを、他のマイナーノードにおいてそれらのセグメントの処理を担当する他のセグメントハンドラに転送する。したがって、未処理のトランザクションは、全てのノードのトランザクションハンドラ全体に伝播するが、セグメントハンドラは、検証されることになるセグメントのトランザクションダイジェストのみを送信するのが好ましい。ブロックセグメントのマイニングおよび検証中に、トランザクションハンドラは、上述したように他のノードのセグメントハンドラと通信する、それらのローカルセグメントハンドラを参照する。したがって、異なるノードのトランザクションハンドラは、互いに通信して、(UTXOおよび署名検証機能を使用して)それらの各メモリプールに有効化されたトランザクションを投入する。セグメントハンドラ(したがって、マイニングを処理するノードコーディネータ)は、互いに通信して、ブロックチェーンにセグメントを含むブロックを投入する。前述のように、トランザクションハンドラおよびセグメントハンドラは、別個のサービスである必要はない。
上述したように、ブロック検証は、ブロックマイニングと同様である。ただし、検証の場合は、セグメントハンドラがトランザクションハッシュをそのトランザクションハンドラに供給しており、そのトランザクションハンドラは「有効」(未処理のトランザクションに関して)または「無効」(受信したブロック全体に関して)の応答を示すが、後者の応答は、マイナーが誤ってまたは敵対的に行動している場合を除き発生してはならないことを除く。マークルツリーおよびルートを生成および処理する上述した技術は、トランザクションをそれらのブロックに結び付ける好ましい暗号化機構である。検証中、および完了時に、ノードコーディネータが全てのセグメントハンドラから結果を取得すると、コーディネータは、ブロック全体のマークルルートを再度計算するが、今回は、そのルートを、マイニングブロックコーディネータによって送信されたブロックヘッダに提供されるルートと比較する。それらがマッチしない場合、ブロックは、無効として破棄される。
本明細書で使用される用語は、限定を意図するものではない。本明細書において使用される場合、「有効化」という用語は、そのメモリプールに入れられる未処理のトランザクションを受信したときにトランザクションハンドラが実行する動作のために使用される。上記のように、トランザクションを有効化するために、トランザクションハンドラは、UTXOハンドラにクエリを出して、参照されているUTXOの利用可能性を確認し、(入力の)署名を確認するために署名検証部と会話する。対照的に、「検証」という用語は、ノードコーディネータによって開始されたコンセンサスを同様に実行している他のノードから受信したブロックセグメントのコンテンツを検証する行為のために使用される。トランザクション有効化はまた、「ブロックセグメント検証」(コーディネータおよびセグメントハンドラが他のノードから受信したブロックセグメントデータに対して行う処理)との対比で、コーディネータが(ブロックセグメントを含む)ブロックに対してマイニング動作を開始したことに応答する、「初期トランザクション検証」と見なすこともできる。また、「マイニング」という用語は、「割り当て」と呼ばれることもあり、これは、トランザクションをブロックセグメントに割り当てまたは関連付けるようにセグメントハンドラによって指示されたときにトランザクションハンドラが実行すること、すなわち、セグメントハンドラによるブロックセグメントへのその組み込みに関するトランザクションのトランザクションハンドラによる検証を意味する。上記のように、これを達成するために、トランザクションハンドラは、そのUTXOハンドラと通信して、既存のUTXOを「使用」し、新たなUTXOをブロックセグメントに「割り当てる」。
また、「ハンドラ」の概念は、限定を意図するものではない。ハンドラは、本明細書では「コーディネータ」と呼ばれることがあり、ハンドラの基本的な動作または機能は、プロセス、プログラム、インスタンス、実行スレッド、プログラム命令セットなどとして実装することができる。
上記は好ましい動作を説明しているが、ハンドラがそのタスクを単数で処理する必要はない。したがって、セグメントハンドラは、ブロックを構成するセグメントの一部または全てを処理することができる。トランザクションハンドラは、特定の、または複数の(さらには全ての)セグメントに属するトランザクションを処理することができる。UTXOハンドラは、UTXO空間内の一部または全てのパーティションを処理することができる。ここでの「パーティション」という用語は、セグメントから区別するために便宜上使用されているが、いずれの用語も限定とみなれるべきではない。
以下は、好ましい実装における上述したノードコンポーネントに関する追加の詳細を提供する。
ノードの調整(コーディネーション)
ノードコーディネータ601は、ネットワーク・コンセンサス・アルゴリズムに参加して、ノードがブロックをマイニングするかどうか、および他のどのノードからマイニングされたブロックデータを受信することを予期すべきかを決定する。ノードがブロックをマイニングする場合、ノードコーディネータ601は、メッセージを(602を介して)ネットワーク内の他のノードコーディネータに送信する。ノードコーディネータ601はまた、ブロックをマイニングしているノード内の他のノードコーディネータから(603を介して)メッセージを受信する。説明したように、ノードコーディネータ601は、(605を介して)ノードのセグメントハンドラ604に対してメッセージの形で、ブロックセグメントのマイニングを開始することと、他のいずれかのノードからマイニングされたブロックセグメントを受信して有効化するかを通知する。ノードのセグメントハンドラ604は、各ブロックセグメントを構成するトランザクションのマークルルートを(606を介して)メッセージの形でノードコーディネータ601に返す。
ノードコーディネータ601は、ネットワーク・コンセンサス・アルゴリズムに参加して、ノードがブロックをマイニングするかどうか、および他のどのノードからマイニングされたブロックデータを受信することを予期すべきかを決定する。ノードがブロックをマイニングする場合、ノードコーディネータ601は、メッセージを(602を介して)ネットワーク内の他のノードコーディネータに送信する。ノードコーディネータ601はまた、ブロックをマイニングしているノード内の他のノードコーディネータから(603を介して)メッセージを受信する。説明したように、ノードコーディネータ601は、(605を介して)ノードのセグメントハンドラ604に対してメッセージの形で、ブロックセグメントのマイニングを開始することと、他のいずれかのノードからマイニングされたブロックセグメントを受信して有効化するかを通知する。ノードのセグメントハンドラ604は、各ブロックセグメントを構成するトランザクションのマークルルートを(606を介して)メッセージの形でノードコーディネータ601に返す。
ノード調整の他の態様は、任意の所与の時点でネットワークにおいてアクティブになっている可能性がある1つ以上のチェーンブランチに対応するノードローカル表現を管理することである。通常、ブロックチェーンは、確定の時点までの単一のブロックシーケンスから構成される。確定は、多くの場合、チェーン内のいくつかの深いブロックに設定されるが、確定する内容とタイミングの決定は、ネットワーク全体のコンセンサスを管理するルールにしたがう。予め確定されるブロックチェーンの部分は、確定前に解決される可能性のある複数のブランチチェーンから構成される。上記のように、例えば、複数のノードが同時にマイニングする場合、それらは、いくつかの共通の祖先ブロックを有する複数のブランチにブロックチェーンをフォークする。ノードコーディネータ601は、アクティブなブランチを追跡し、ノードがマイニングしている場合、それらがマイニングしているブランチ、および各リモートマイナーがマイニングしているブランチを、セグメントハンドラ604に通知する責を担う。
セグメント処理
また説明されるように、セグメントハンドラ604は、ブロックセグメンテーション空間の一部を表すいくつかのブロックセグメントの生成および/または有効化を処理する。具体的には、セグメントハンドラは、(605を介して)メッセージの形でノードコーディネータ601によって指示されたようにブロックセグメントの生成を開始する。マイニングするとき、セグメントハンドラ604は、607を介して、マイニングされたブロックセグメントデータを、検証される他のノードのセグメントハンドラに送信する。セグメントハンドラ604は、(608を介して)メッセージの形でマイニングノードのセグメントハンドラからブロックセグメントデータを受信する。トランザクションのマイニングおよび有効化を実行するために、セグメントハンドラ604は、また前述したように、関連するトランザクションハンドラのセット609と相互作用する。
また説明されるように、セグメントハンドラ604は、ブロックセグメンテーション空間の一部を表すいくつかのブロックセグメントの生成および/または有効化を処理する。具体的には、セグメントハンドラは、(605を介して)メッセージの形でノードコーディネータ601によって指示されたようにブロックセグメントの生成を開始する。マイニングするとき、セグメントハンドラ604は、607を介して、マイニングされたブロックセグメントデータを、検証される他のノードのセグメントハンドラに送信する。セグメントハンドラ604は、(608を介して)メッセージの形でマイニングノードのセグメントハンドラからブロックセグメントデータを受信する。トランザクションのマイニングおよび有効化を実行するために、セグメントハンドラ604は、また前述したように、関連するトランザクションハンドラのセット609と相互作用する。
トランザクション処理
トランザクションハンドラ609は、メモリプールに追加されてネットワークに伝播されるトランザクションの有効化、マイニングされたブロックに含まれるトランザクションの生成、およびマイニングノードから受信したブロックの一部として含まれるトランザクションの検証を処理する。上記のように、トランザクションセグメンテーション空間の分布は、トランザクションハンドラ609とセグメントハンドラ604とで同じであってもよく、または異なっていてもよい。例えば、セグメントハンドラ機能によって必要とされる計算リソースは、ごく少数のそのようなハンドラが全てのブロックセグメントを処理するために使用される程度に十分に少なくてもよいのに対して、トランザクションハンドラ機能によって必要とされる計算リソースは、そのような各ハンドラが関連するセグメントハンドラ604よりも少ない数のセグメントのトランザクションを管理することが必要となる程度に十分多くなる可能性がある。
トランザクションハンドラ609は、メモリプールに追加されてネットワークに伝播されるトランザクションの有効化、マイニングされたブロックに含まれるトランザクションの生成、およびマイニングノードから受信したブロックの一部として含まれるトランザクションの検証を処理する。上記のように、トランザクションセグメンテーション空間の分布は、トランザクションハンドラ609とセグメントハンドラ604とで同じであってもよく、または異なっていてもよい。例えば、セグメントハンドラ機能によって必要とされる計算リソースは、ごく少数のそのようなハンドラが全てのブロックセグメントを処理するために使用される程度に十分に少なくてもよいのに対して、トランザクションハンドラ機能によって必要とされる計算リソースは、そのような各ハンドラが関連するセグメントハンドラ604よりも少ない数のセグメントのトランザクションを管理することが必要となる程度に十分多くなる可能性がある。
トランザクションハンドラ機能は、また前述したように、システムにおける他の重要な役割、すなわち、トランザクションアドミッション(「有効化」とも呼ばれる)および伝播を果たす。トランザクションハンドラ609は、エッジから直接的にまたはネットワーク内の他のトランザクションハンドラを介して間接的に(612を介して)メッセージの形でトランザクションを受信する。トランザクションハンドラ609は、受信した全てのトランザクションを有効化し、有効な場合、トランザクションを未処理のトランザクションのプール(そのメモリプール)に保存し、随意にトランザクションをメッセージの形でネットワーク内の他のノードに伝播する(613を介して)。このように、トランザクションハンドラ機能は、全てのノードが全ての到来トランザクションおよび関連する到来トランザクションダイジェストを適時に且つ効率的な方法で受信するように、トランザクションデータの伝播を編成する。
UTXOの処理
好ましくは、UTXOは、発信トランザクションのハッシュまたはダイジェストである識別子(txid)、および発信トランザクションにおける出力のインデックスによって識別される。UTXOはまた、2つの他の情報部分(その識別には使用されない)、すなわち、値および「ロックスクリプト」を有する。一般に、ロックスクリプトは、指示のセットまたは単に出力に関連付けられた公開鍵である。公開鍵は、アドレスまたはウォレットアドレスと呼ばれることもある。ロックスクリプト(例えば、公開鍵)は、値とともにトランザクションの出力において伝達され、通常、UTXO識別情報およびその値とともにUTXOデータベースに記憶される。したがって、初期トランザクション有効化時にUTXOハンドラにクエリを出すと、値およびロックスクリプト(公開鍵)の双方を返す。UTXOを新たなトランザクションへの入力として使用するために、新たなトランザクション(基本的にはその出力)は、使用されるUTXOの公開鍵と暗号的にマッチする秘密鍵によって署名される必要がある。この署名は、各トランザクション入力で提供され、一般に「ロック解除スクリプト」と呼ばれる。ロック解除スクリプトは、指示のセットまたは単にデジタル署名とすることができる。したがって、デジタル署名は、トランザクションの出力値を、値の受信者がおそらく対応する秘密鍵(後でロック解除スクリプトの作成に使用される)を有するロックスクリプト(公開鍵)にバインドする。署名検証部は、(ウォレットまたはその暗号化要素のみが秘密鍵を有するため)秘密鍵を有しない。署名検証部は、(ロックスクリプトからの)公開鍵および(ロック解除スクリプトからの)署名を受信し、署名検証部は、公開鍵に対して署名を検証し、それにより、マッチする秘密鍵によって署名が作成されたことを証明する。要約すると、所与のインデックスにおけるトランザクション出力は、ロックスクリプト(公開鍵)および値を有する。トランザクション入力は、発信元のtxid、インデックス、およびロック解除スクリプト(署名)を有する。
好ましくは、UTXOは、発信トランザクションのハッシュまたはダイジェストである識別子(txid)、および発信トランザクションにおける出力のインデックスによって識別される。UTXOはまた、2つの他の情報部分(その識別には使用されない)、すなわち、値および「ロックスクリプト」を有する。一般に、ロックスクリプトは、指示のセットまたは単に出力に関連付けられた公開鍵である。公開鍵は、アドレスまたはウォレットアドレスと呼ばれることもある。ロックスクリプト(例えば、公開鍵)は、値とともにトランザクションの出力において伝達され、通常、UTXO識別情報およびその値とともにUTXOデータベースに記憶される。したがって、初期トランザクション有効化時にUTXOハンドラにクエリを出すと、値およびロックスクリプト(公開鍵)の双方を返す。UTXOを新たなトランザクションへの入力として使用するために、新たなトランザクション(基本的にはその出力)は、使用されるUTXOの公開鍵と暗号的にマッチする秘密鍵によって署名される必要がある。この署名は、各トランザクション入力で提供され、一般に「ロック解除スクリプト」と呼ばれる。ロック解除スクリプトは、指示のセットまたは単にデジタル署名とすることができる。したがって、デジタル署名は、トランザクションの出力値を、値の受信者がおそらく対応する秘密鍵(後でロック解除スクリプトの作成に使用される)を有するロックスクリプト(公開鍵)にバインドする。署名検証部は、(ウォレットまたはその暗号化要素のみが秘密鍵を有するため)秘密鍵を有しない。署名検証部は、(ロックスクリプトからの)公開鍵および(ロック解除スクリプトからの)署名を受信し、署名検証部は、公開鍵に対して署名を検証し、それにより、マッチする秘密鍵によって署名が作成されたことを証明する。要約すると、所与のインデックスにおけるトランザクション出力は、ロックスクリプト(公開鍵)および値を有する。トランザクション入力は、発信元のtxid、インデックス、およびロック解除スクリプト(署名)を有する。
トランザクションを処理するために、上記のように、トランザクションハンドラは、(615および620を介して)メッセージによってUTXOハンドラ614のセットと相互作用し、各トランザクションに関連付けられた未使用のトランザクション出力(UTXO)を作成し、クエリを出し、使用し、および割り当てる。各UTXO動作はまた、(620を介して)メッセージの形の取り消し要求を用いて逆行することもできる。この可逆性は、トランザクションが全体として完了できなかった場合に、トランザクションハンドラ609が首尾よく完了することができたトランザクションの部分を取り消すことを可能にすることから、価値がある。同時並行性を可能にし且つ競合を防止するためにUTXOデータベースをロックする代わりに、ここでシステムは、競合の検出および部分的に完了したトランザクションのUTXO動作の逆行に頼ることが好ましい。この文脈における競合は、これらに限定されるものではないが、(ポリシーが規定するところに応じて)それが存在するかまたは確定される前にUTXOを使用する試み、他のトランザクションによって既に使用されているUTXOの使用、またはトランザクションを不完全な状態にする任意の他のUTXO動作の失敗を含む。
上記のように、各UTXOは、有効化するためにトランザクションについて正常に実行される必要がある値およびロックスクリプトを有する。スクリプトは、他のトランザクションへの入力としてUTXOの使用をロックするために実行される必要がある指示のセットである。通常、スクリプトは、UTXOを入力として使用するトランザクションに署名するために使用される必要がある秘密鍵に対応する公開鍵素材を含む。
累積するUTXOの数は大きくなる可能性があることから、UTXO空間はまた、ブロックがトランザクション識別子によってセグメント化されるのと同様の方法でトランザクション識別子によってパーティション化されることが好ましいが、パーティション化空間およびセグメンテーション空間は、独立してそれぞれのニーズに応じて分割されることが好ましい。UTXO処理は、UTXOを生成するトランザクションハンドラによって実行されることができるが、UTXOの処理は、以下の2つの理由のためにトランザクション処理から分離されることが好ましい:(1)リソース要求が異なるため、および(2)トランザクションハンドラ機能を分離することが、トランザクションおよびUTXOハンドラがより効率的に実行することを可能にするため。好ましくは、UTXO空間はまた、ノードの集約メモリおよび記憶リソースをより効率的に使用するためにパーティション化される。このセグメンテーションを適用することにより(すなわち、トランザクションセグメンテーション空間を介して)、高度にスケーラブルでタイミングが制約されたソリューションが提供される。
署名検証
図6Aのブロック図の最後の要素は、署名検証部617のセットによって提供される署名検証機能である。上記のように、トランザクションは、トランザクションの入力に関連付けられた秘密鍵のセットによって署名されることが好ましい。ノードにおいて最も計算量の多いタスクは、トランザクションの署名を検証することである。そのため、重要な計算リソースは、好ましくは署名検証専用である。各署名検証部617は、署名検証負荷の一部をサポートするのに必要な計算リソースを利用することが好ましく、トランザクションハンドラ機能は、(618を介して)メッセージを使用して利用可能な署名検証部617のセット全体に署名検証負荷を分散させ、有効化されることになるデータを送信し、(619を介して)返信としてメッセージの形で肯定応答または否定応答を受信する。一実施形態では、これらの動作は、署名検証をいくつかの他の処理(例えば、トランザクション処理)と組み合わせることによって実行される。他の実施形態では、図示および説明されるように、より高いスケーラビリティを可能にするために、他の要素から分離した署名検証部617を有効にすることにより、処理要求に対応する。
図6Aのブロック図の最後の要素は、署名検証部617のセットによって提供される署名検証機能である。上記のように、トランザクションは、トランザクションの入力に関連付けられた秘密鍵のセットによって署名されることが好ましい。ノードにおいて最も計算量の多いタスクは、トランザクションの署名を検証することである。そのため、重要な計算リソースは、好ましくは署名検証専用である。各署名検証部617は、署名検証負荷の一部をサポートするのに必要な計算リソースを利用することが好ましく、トランザクションハンドラ機能は、(618を介して)メッセージを使用して利用可能な署名検証部617のセット全体に署名検証負荷を分散させ、有効化されることになるデータを送信し、(619を介して)返信としてメッセージの形で肯定応答または否定応答を受信する。一実施形態では、これらの動作は、署名検証をいくつかの他の処理(例えば、トランザクション処理)と組み合わせることによって実行される。他の実施形態では、図示および説明されるように、より高いスケーラビリティを可能にするために、他の要素から分離した署名検証部617を有効にすることにより、処理要求に対応する。
ブロックの生成、送信、および検証のパイプライン化
図7を参照すると、従来のブロックチェーンベースのシステムは、ブロックの生成(マイニング)、送信、および検証をシリアル化する。そのようなシステムでは、マイナーによってブロックが生成され(701)、ブロックの生成が完了すると、ブロックは検証のために他のノードに送信され(702)、ノードがブロックの受信を完了すると、それらはブロックの検証を開始する(703)。そのようなシリアルベースの処理は、特に前述の動作文脈、すなわち、潜在的にグローバルベースのネットワークにわたってトランザクションメッセージが生成されている場合、非効率的であり、スケーリングしない。
図7を参照すると、従来のブロックチェーンベースのシステムは、ブロックの生成(マイニング)、送信、および検証をシリアル化する。そのようなシステムでは、マイナーによってブロックが生成され(701)、ブロックの生成が完了すると、ブロックは検証のために他のノードに送信され(702)、ノードがブロックの受信を完了すると、それらはブロックの検証を開始する(703)。そのようなシリアルベースの処理は、特に前述の動作文脈、すなわち、潜在的にグローバルベースのネットワークにわたってトランザクションメッセージが生成されている場合、非効率的であり、スケーリングしない。
例えば、1秒あたり数百万のリアルタイムトランザクションを処理することができるなど、高い性能要件を有するシステムを構築しようとする場合、そのような現在の実装アプローチは、完全に不十分である。このため、本明細書のアプローチでは(および上述したように)、これらの処理ステージは、同時並行性のためにパイプライン化される。したがって、本明細書の技術によれば、マイナーがブロックデータを生成する(704)一方で、以前に生成されたブロックデータは、検証のためにノードに送信される(705)。検証ノードは、完全なブロックを受信する前に、且つおそらくはマイナーがブロックのマイニングを完了するずっと前に、マイニングされたブロックデータを受信し、ブロックのトランザクションの検証を開始する(706)。
図5によれば、ブロックの生成、送信、および検証のパイプラインもまた、ブロックの各セグメント毎にインスタンス化され、したがって、ブロックセグメントが並列に動作されることを理解されたい。その結果、並列処理およびパイプライン処理を組み合わせることにより、同時並行性が向上する。
ブロック生成、送信、および有効化のストリーミング
図8を参照すると、パイプライン化されたブロックの生成、送信、および検証をサポートするために、ストリーミングされたブロックセグメントの生成、送信、および検証プロセスが、2つのノード、すなわち、マイナーノード801と検証ノード805との間で示されている。1つの検証ノード805が示されているが、上述したように、通常、ネットワーク内の全てのノードは、マイニングされたブロックを検証する。また説明したように、このプロセスはまた、通常、マイナーノード801によってマイニングされる他のブロックセグメントの同じプロセスと同時に実行される。上記のように、ネットワーク内で同時に動作する、複数のマイナーノード801と、複数のストリーミングされた生成、送信、および有効化プロセスが存在することができる。この例では、永続化のためにセグメントをステージングする責任は、前述のように、セグメントハンドラではなくトランザクションハンドラに関連付けられることに留意されたい。
図8を参照すると、パイプライン化されたブロックの生成、送信、および検証をサポートするために、ストリーミングされたブロックセグメントの生成、送信、および検証プロセスが、2つのノード、すなわち、マイナーノード801と検証ノード805との間で示されている。1つの検証ノード805が示されているが、上述したように、通常、ネットワーク内の全てのノードは、マイニングされたブロックを検証する。また説明したように、このプロセスはまた、通常、マイナーノード801によってマイニングされる他のブロックセグメントの同じプロセスと同時に実行される。上記のように、ネットワーク内で同時に動作する、複数のマイナーノード801と、複数のストリーミングされた生成、送信、および有効化プロセスが存在することができる。この例では、永続化のためにセグメントをステージングする責任は、前述のように、セグメントハンドラではなくトランザクションハンドラに関連付けられることに留意されたい。
生成
図8に示すように、プロセスは、マイニングノードコーディネータ802がネットワーク上のブロックをマイニングするための基準を満たしたときに開始される。一実施形態では、この基準は、それが満たすことをマイナーが証明することができる確率条件(例えば、ある閾値を下回る信頼できるあるいは検証可能な乱数)とすることができる。マイナー選択(リーダー選出)の任意の基準が適用可能である。ノードコーディネータ802は、メッセージ809を送信して、マイニングノードセグメントハンドラ803がブロックセグメントの生成を開始することを要求する。ノードコーディネータ802はまた、マイナーノードのセグメントハンドラ803からのマイニングされたブロックセグメントを予期するように有効化ノードのコーディネータ806に指示するメッセージ810を送信する。各マイニングセグメントハンドラ803は、トランザクションハンドラ804が各々に関連付けられて収集された未処理のトランザクションのプールからブロックへのトランザクションの割り当てを開始することを指示するメッセージ811を、関連するトランザクションハンドラ804に送信する。トランザクションハンドラ804は、(直接的にまたは他のノードのトランザクションハンドラを介して)エッジから受信した未処理のトランザクション(ブロックまたはその任意の祖先に対して以前に割り当てられていなかったトランザクション)を繰り返し検査する。トランザクション検証(上述したトランザクション有効化)のいくつかの態様は、トランザクションが最初に受信されたときに事前に実行されることができることを理解されたい。検証済みのトランザクション割り当てごとに、トランザクションハンドラ804は、(1)完全なトランザクションレコード813をブロックセグメント831に追加し、(2)ダイジェスト(例えば、ハッシュ)を含むメッセージ814をストリームの形でセグメントハンドラ803に送信する。
図8に示すように、プロセスは、マイニングノードコーディネータ802がネットワーク上のブロックをマイニングするための基準を満たしたときに開始される。一実施形態では、この基準は、それが満たすことをマイナーが証明することができる確率条件(例えば、ある閾値を下回る信頼できるあるいは検証可能な乱数)とすることができる。マイナー選択(リーダー選出)の任意の基準が適用可能である。ノードコーディネータ802は、メッセージ809を送信して、マイニングノードセグメントハンドラ803がブロックセグメントの生成を開始することを要求する。ノードコーディネータ802はまた、マイナーノードのセグメントハンドラ803からのマイニングされたブロックセグメントを予期するように有効化ノードのコーディネータ806に指示するメッセージ810を送信する。各マイニングセグメントハンドラ803は、トランザクションハンドラ804が各々に関連付けられて収集された未処理のトランザクションのプールからブロックへのトランザクションの割り当てを開始することを指示するメッセージ811を、関連するトランザクションハンドラ804に送信する。トランザクションハンドラ804は、(直接的にまたは他のノードのトランザクションハンドラを介して)エッジから受信した未処理のトランザクション(ブロックまたはその任意の祖先に対して以前に割り当てられていなかったトランザクション)を繰り返し検査する。トランザクション検証(上述したトランザクション有効化)のいくつかの態様は、トランザクションが最初に受信されたときに事前に実行されることができることを理解されたい。検証済みのトランザクション割り当てごとに、トランザクションハンドラ804は、(1)完全なトランザクションレコード813をブロックセグメント831に追加し、(2)ダイジェスト(例えば、ハッシュ)を含むメッセージ814をストリームの形でセグメントハンドラ803に送信する。
送信
セグメントハンドラ803は、メッセージのストリーム814から1つ以上のトランザクションダイジェストを収集し、メッセージのストリーム815の形でトランザクションダイジェストを、生成されたセグメントデータの有効化を担当する各有効化ノード805におけるセグメントハンドラ807に送信する。示されるように、メッセージのストリーム814におけるメッセージの数は、メッセージのストリーム815におけるメッセージの数とは異なることができるが、双方のストリームにおいて送信されるトランザクションダイジェストの総数は、通常同じである。
セグメントハンドラ803は、メッセージのストリーム814から1つ以上のトランザクションダイジェストを収集し、メッセージのストリーム815の形でトランザクションダイジェストを、生成されたセグメントデータの有効化を担当する各有効化ノード805におけるセグメントハンドラ807に送信する。示されるように、メッセージのストリーム814におけるメッセージの数は、メッセージのストリーム815におけるメッセージの数とは異なることができるが、双方のストリームにおいて送信されるトランザクションダイジェストの総数は、通常同じである。
ノード805を有効化する際に、セグメントハンドラ807は、メッセージのストリーム815を受信し、トランザクションダイジェストを抽出し、1つ以上のメッセージ816をトランザクションハンドラ808に送信する。メッセージのストリーム815および816を構成するメッセージの数は、異なることができる。この実施形態では、送信されたメッセージ810、メッセージ833で終わるメッセージのストリーム815、およびメッセージ823は、ノード要素からノード要素に直接的にユニキャストまたはマルチキャストで送信され、他のノードの要素を介して間接的に伝播され、またはネットワーク要素を介してルーティングもしくは転送されることができる。データは、集約または分離されて移動することができる。
検証
検証トランザクションハンドラ808は、トランザクションダイジェストを受信し、(他のノードのトランザクションコーディネータを介して直接)エッジから受信した未処理のトランザクションを検索する。検索が成功すると、それは、トランザクションの割り当てを検証する。検証が成功すると、トランザクションハンドラ808は、(1)メッセージ818において検証確認をセグメントハンドラ807に送信し、(2)完全なトランザクションレコード817をブロックセグメント832に追加する。
検証トランザクションハンドラ808は、トランザクションダイジェストを受信し、(他のノードのトランザクションコーディネータを介して直接)エッジから受信した未処理のトランザクションを検索する。検索が成功すると、それは、トランザクションの割り当てを検証する。検証が成功すると、トランザクションハンドラ808は、(1)メッセージ818において検証確認をセグメントハンドラ807に送信し、(2)完全なトランザクションレコード817をブロックセグメント832に追加する。
ストリーム処理の終了
一実施形態では、ストリーミング生成、送信、および検証プロセスは、マイニングノードコーディネータ802が生成停止メッセージ819を全てのマイニングセグメントハンドラ803に送信すると終了する。このシナリオでは、ノードは、非同期で動作し、実行ラウンド間に明示的な時間境界がないものと仮定される。他の実施形態では、ノードは、同期して動作することができ、プロセスは、特定の時間に到達したときに終了する。
一実施形態では、ストリーミング生成、送信、および検証プロセスは、マイニングノードコーディネータ802が生成停止メッセージ819を全てのマイニングセグメントハンドラ803に送信すると終了する。このシナリオでは、ノードは、非同期で動作し、実行ラウンド間に明示的な時間境界がないものと仮定される。他の実施形態では、ノードは、同期して動作することができ、プロセスは、特定の時間に到達したときに終了する。
プロセスが終了すると、各セグメントハンドラ803は、生成停止メッセージ820をその関連するトランザクションハンドラ804に送信する。各トランザクションハンドラ804はまだ進行中の任意のトランザクション割り当てを終了または中止し、セグメントハンドラ803に対するメッセージ821の形で、ブロックセグメントに含まれる任意の残りの割り当てられたトランザクションとともにマイニングを停止したことを認める。
セグメントハンドラ803は、任意の未送信のトランザクションハッシュとストリームの終わりの指示とをメッセージ833の形で有効化ノードのセグメントハンドラ807に送信する。各セグメントハンドラ803は、各セグメントのトランザクションハッシュからマークルツリーを計算し、メッセージ822においてノードコーディネータ802にマークルツリールート(マークルルートまたはMR)を送信する。ノードコーディネータ802は、ブロックの全てのセグメントのマークルルートを受信すると、セグメントのマークルルートからブロック全体のマークルツリーの上部を計算し、前のブロックヘッダのハッシュ、そのマイニング証明、およびブロック全体のマークルルート、ならびにその他のデータから構成されるブロックヘッダを生成する。失敗すると、ノードコーディネータ802はパージメッセージ827を各セグメントハンドラ803に送信し、次に、各セグメントハンドラがパージメッセージ828をその関連するトランザクションハンドラ804に送信し、次いでトランザクションハンドラがブロックセグメントを破棄する。成功すると、ノードコーディネータ802は、メッセージ823の形でブロックヘッダを全ての有効化ノードコーディネータ806に送信する。
各検証ノードのセグメントハンドラ807がメッセージ833の形でストリームの終わりの指示を受信すると、それらは、次に、それらの関連するトランザクションハンドラ808に、ストリームの終わりの検証を指示するメッセージ834を送信する。各セグメントハンドラ807は、その関連するトランザクションコーディネータ808から全ての未処理のトランザクション割り当て検証の確認を受信すると、そのセグメントのマークルツリーを計算し、メッセージ824における各セグメントのマークルルートを検証ノードコーディネータ806に送信する。検証ノードコーディネータが各セグメントのマークルルートを受信すると、ブロックヘッダを生成し、生成されたブロックヘッダがメッセージ823の形で受信したブロックヘッダとマッチすることを検証する。ブロックヘッダがマッチしない場合には、パージメッセージ825を各有効化セグメントハンドラ807に送信し、次に、各検証セグメントハンドラがパージメッセージ826をその関連するトランザクションハンドラ808に送信し、次いでトランザクションハンドラがブロックセグメントを破棄する。
ブロックの確定
上述のように、上述したシステムでは、ブロックは、それが確定されるまで永続化されていない。好ましくは、ブロックは、ノードコーディネータが規定されたコンセンサスアルゴリズムに準拠して確定されるべきだと結論付けるまでは、確定されない。対照的に、好ましくはマイニングの終わりでは、ブロックは永続化されていない。むしろ、マイニング後、ブロックは、(コンセンサスアルゴリズムにしたがって)確定されるまで、またはコンセンサスアルゴリズムの適用に耐えられなかったことから破棄(パージ)されるまで、追跡されるだけである。
上述のように、上述したシステムでは、ブロックは、それが確定されるまで永続化されていない。好ましくは、ブロックは、ノードコーディネータが規定されたコンセンサスアルゴリズムに準拠して確定されるべきだと結論付けるまでは、確定されない。対照的に、好ましくはマイニングの終わりでは、ブロックは永続化されていない。むしろ、マイニング後、ブロックは、(コンセンサスアルゴリズムにしたがって)確定されるまで、またはコンセンサスアルゴリズムの適用に耐えられなかったことから破棄(パージ)されるまで、追跡されるだけである。
本開示の技術は、重要な利点を提供する。特に、このアプローチは、ブロックセグメンテーションおよび他の上述した特徴(例えば、トポロジ認識データ伝播、非ブロッキングアーキテクチャ、楽観的同時並行制御、パーティション化、マルチキャストおよびその他の特徴)と組み合わせて、高品質、低レイテンシ、高度に相互接続されたコアネットワーク(メッシュ)を活用することにより、中央のいかなるトランザクションのルーティングまたはスイッチング(例えば、大量のトランザクションのルートを占める必要があるレイヤ7スイッチ)も用いることなく、計算効率の高いトランザクション処理システムを提供する。好ましくは、アーキテクチャは、グローバルCDNネットワークと組み合わせて使用され、グローバルな範囲を提供し、このアプローチは、コアネットワークにおけるコンピューティング要素を発見して相互作用するために、CDNマッピング技術が(例えば、クライアントおよび他のトランザクションサービスにより)便利に活用されることを有利に可能にする。
同時トランザクション処理
上述した高性能分散型記録システムの設計は、ブロックのセグメント化、および未使用トランザクション出力(UTXO)データ構造のパーティション化の概念を導入する。説明したように、結果として得られるデータ編成は、同期を減らしつつ同時処理の増加を促進し、それにより、より高いトランザクションスループットおよびより短いトランザクション処理時間を有するシステムをもたらす。
上述した高性能分散型記録システムの設計は、ブロックのセグメント化、および未使用トランザクション出力(UTXO)データ構造のパーティション化の概念を導入する。説明したように、結果として得られるデータ編成は、同期を減らしつつ同時処理の増加を促進し、それにより、より高いトランザクションスループットおよびより短いトランザクション処理時間を有するシステムをもたらす。
以下のセクションでは、同時処理構造を前提として、安全で性能の高いトランザクション処理を実現する方法について説明する。特に、システムは、例えばUTXOを2回以上使用しようとする、誤ったまたは敵対的な行為に対して弾力性がある必要がある。これは、例えば、ウォレットの2つのインスタンスが、現在ウォレットに関連付けられているUTXOを同時に使用しようとした場合に発生する可能性がある。これは、意図的であることも、意図的ではないこともある。見てわかるように、以下の設計はまた、好ましくはノードのより広いネットワークに依存することによって、コンポーネントが故障した場合にも対処する。見てわかるように、本明細書の技術は、1つ以上の動作シナリオ、すなわち、(a)基盤となるコンポーネントが正しく動作している場合、(b)壊れたコンポーネントが正しく動作しているように見えるように、基盤となるコンポーネントに冗長性がある場合、および/または(c)基盤となるコンポーネントにある冗長性が影響を受ける関連システム要素(すなわち、トランザクションハンドラおよびUTXOハンドラ)によって明示的に管理されている場合において、同時処理を安全に行うことを容易にする。
図11を参照し、上述した分散型アーキテクチャを背景にして、スイッチ1103などのネットワーク要素から構成される通信ネットワークを介していくつか(K)のUTXOハンドラ1102と通信するいくつか(N)のトランザクションハンドラ1101を備えた一般的な構成が示されている。上記で詳細に説明したように、トランザクションハンドラ1101は、セグメント化されたトランザクション空間内のセグメントのセットのトランザクションを処理し、UTXOハンドラ1102は、パーティション化されたUTXO空間内のトランザクションに関連付けられた未使用トランザクション出力(UTXO)を処理する。この文脈におけるセグメント化(セグメンテーション)およびパーティション化(パーティショニング)は、同様のこと、すなわち、空間の諸部分が別個に処理されることができるように空間を分割することを意味する。便宜上、これらの異なる用語を用いるのは、これらの空間が独立した方法でセットアップされることができることを強調するためである(ただし、これは、以下で説明するように必須ではない)。図11に示されるように、例えば、トランザクションハンドラ1101は、入力UTXO1106と出力UTXO1107およびUTXO1108から成るトランザクション1105を有効化している。この単に代表的なものである例では、UTXO1106はUTXOハンドラ1102によって処理される一方、UTXO1107およびUTXO1108は異なるUTXOハンドラ1104によって処理される。
一般化
上記のように、通常、トランザクションセグメンテーションおよびUTXOパーティショニングの空間は異なる。代替の実施形態では、トランザクションセグメンテーション空間およびUTXOパーティショニング空間は、同じとすることができ、その場合、通常、UTXO処理はトランザクション処理に結合(フォールディング)される。例えば、このアプローチでは、特定のトランザクションハンドラは、一般に、他のトランザクションハンドラと通信して、当該特定のトランザクションハンドラが処理しないトランザクションセグメンテーション空間の部分に関連付けられたUTXOを使用する。
上記のように、通常、トランザクションセグメンテーションおよびUTXOパーティショニングの空間は異なる。代替の実施形態では、トランザクションセグメンテーション空間およびUTXOパーティショニング空間は、同じとすることができ、その場合、通常、UTXO処理はトランザクション処理に結合(フォールディング)される。例えば、このアプローチでは、特定のトランザクションハンドラは、一般に、他のトランザクションハンドラと通信して、当該特定のトランザクションハンドラが処理しないトランザクションセグメンテーション空間の部分に関連付けられたUTXOを使用する。
図12を参照すると、図11の使用例に関して、例示的なトランザクションハンドラおよびUTXOハンドラのダイアログが示されている。特に、描かれているように、トランザクションハンドラ1201は、UTXOハンドラ1202およびUTXOハンドラ1203と通信する。この例では、トランザクションハンドラ1201は、(1204において)UTXOハンドラ1202がUTXO0を使用することを要求し、(1205および1206において)UTXOハンドラ1203がUTXO1およびUTXO2を作成することを要求する。完了すると、UTXOハンドラ1202は、(1207において)使用済みメッセージを返す。同様に、UXXハンドラ1203は、作成されたUTXOを(1208および1209において)返す。最適化として、要求1205および1206、ならびに応答1208および1209は、それぞれの方法で単一のメッセージに集約できることを理解されたい。トランザクションハンドラ1201は、どのUTXOパーティション化方式が使用されるかに基づいて、各場合においてどのUTXOハンドラを使用するかを認識している。例えば、UTXOは、UTXOトランザクションID(UTXOを作成したトランザクションのハッシュ)の一部に基づいてUTXOパーティションにマッピング可能であり、UTXOパーティションは、システムを駆動するメタデータに基づいてUTXOハンドラにマッピング可能である。
1つのUTXOを使用して結果として2つを作成することは、一般的なケースである(例えば、一方で請求書の支払いをし、他方でお釣りを収集する)が、本明細書の同時トランザクション処理設計における入力および出力の数に困難な限定はない。また、トランザクションの多くの入力が1つの出力を生成する場合や1つの入力が多くの出力を生成する場合、更にはマッピングが多対多の場合があることが想定される。
再び図12を参照すると、トランザクションの入力および出力は、順次または同時に処理することができる。図12は、それらが同時に処理されていることを示しており、一般に、ブロック生成および検証のために割り当てられた時間内で順次処理するには入力または出力が多すぎるいくつかのトランザクションが存在する。
衝突検出およびトランザクションの逆行
上述した同時処理を容易にするために複数のUTXOハンドラを使用することは必須ではない。実際、例えば、トランザクションの1つ以上の部分が失敗する一方で、1つ以上の他の部分が成功した場合、または2つ以上のトランザクションハンドラがもう1つのUTXOの使用によって衝突した場合などの特定の状況があり得て、その場合、このアプローチは、必ずしも最適ではない。以下のセクションは、これらの問題に対処し、図13は、トランザクションが部分的に失敗するシナリオを示し、図14は、トランザクションハンドラの衝突シナリオを示している。
上述した同時処理を容易にするために複数のUTXOハンドラを使用することは必須ではない。実際、例えば、トランザクションの1つ以上の部分が失敗する一方で、1つ以上の他の部分が成功した場合、または2つ以上のトランザクションハンドラがもう1つのUTXOの使用によって衝突した場合などの特定の状況があり得て、その場合、このアプローチは、必ずしも最適ではない。以下のセクションは、これらの問題に対処し、図13は、トランザクションが部分的に失敗するシナリオを示し、図14は、トランザクションハンドラの衝突シナリオを示している。
図13は、図12のシナリオにおけるトランザクションハンドラとUTXOハンドラとの間の例示的な失敗例ダイアログを示している。ここでは、トランザクションハンドラ1301と、2つのUTXOハンドラ1302および1303がある。失敗の場合のダイアログは、図12の場合と同様に(ステップ1304、1305および1306によって)開始するが、この場合(図12とは異なり)、1つ以上の要求が失敗した。特に、UTXO0を使用する要求1304は失敗し、理由が応答1307の形で返される。例えば、UTXOが見つからなかったか、または既に使用済みであることが知られている、という理由である。また、UTXO2を作成する要求1306は、いくつかのシステムの内部的な理由(リソースの枯渇または適時な態様での応答の失敗)のために失敗し、応答1309がその失敗を示している。しかしながら、UTXO1を作成する要求1305は、UTXOが首尾よく作成されたことを示す通常の応答1308を返したことに留意されたい。トランザクションの成功が部分的であった、換言すれば、トランザクションが失敗したのにUTXOが作成されたことから、このダイアログの結果は影響を受けるハンドラにとって無効な状態である。
上記のように、図14は、別の失敗ケースシナリオを示しており、このシナリオでは、第1のトランザクションハンドラ1401が要求1405ではUTXO0を使用しようとし、且つ要求1407ではUTXO1を使用しようとするが、ほぼ同時に、第2のトランザクションハンドラ1402が要求1406では同じUTXO1を使用しようとし、且つ要求1408ではUTXO0を使用しようとしている。そのような同時アクションの結果は、関連するトランザクションの一方または双方の部分的な成功となり得る。前の例と同様に、部分的な成功は、影響を受けるハンドラの状態を無効にする。これは、古典的な競合状態の失敗である。
従来のトランザクションデータベースでは、上記失敗シナリオの双方において実行ロック(相互排除)が使用され、様々なコンポーネント動作が全て成功するかまたは全て失敗するかを確実にする。通常、この相互排除は、トランザクションプリミティブとして表現されるため、データベースサーバによって実行されることができる。しかしながら、この従来のアプローチの問題は、このロックが非常に高価であり、特に動作が分散されている場合に、非常に変動する応答時間を生み出すということである。オブジェクトのバージョン管理をサポートする非SQLデータベースであっても、失敗ケースに対処することができない。特に、後者のアプローチは、その予期される値を有しない場合にオブジェクトが更新されないように保護するが、そのような複数のオブジェクトにまたがる競合状態からは保護しない。
この問題に対処するために、本明細書の同時処理の設計は、UTXOの固有の特性を利用する。すなわち、それらは存在するかまたは存在しないかのいずれかである。(UTXOが存在したが使用済みの場合、定義により、それはもはや存在しない)。この目的のために、好ましくは、必要な場合に動作を取り消すことができるように、各動作をトランザクションハンドラが提供するハンドルによってタグ付けすることが要求されるように設計する。そして、ある期間にわたって固有のハンドルを使用するかどうかは、トランザクションハンドラが共同で決定する。期間は、好ましくはシステムの性能パラメータに基づいて設定可能である。別の好ましい態様では、同じブロックにおいて作成されたUTXO、または確定される前のUTXOの使用を禁止するという1つ以上のポリシーが適用される。
UXTOハンドラは、様々なコンピューティングノードに配置される。コンピューティングノード内で、UXTOデータは、UXTOハンドラと関連付けてメモリまたはその他のデータ記憶装置に記憶される。したがって、説明したように、本開示の技術は、ロックのない分散型UTXOデータベースを提供する。
図15を参照すると、この動作は、図14に示されるのと同じシナリオを使用して説明される。この実施形態では、図14とは対照的に、ここでは、各動作に与えられる、トランザクションハンドラが提供するハンドルがある。したがって、第1のトランザクションハンドラ1501が要求1505においてUTXO0を、そして要求1507においてUTXO1を使用しようとすると、示されるように、トランザクションハンドラが提供するハンドル、例えば11、12をそれぞれに関連付ける。同様に、第2のトランザクションハンドラ1502が要求1506においてUTXO0を、そして要求1508においてUTXO1を使用しようとすると、トランザクションハンドラが提供するハンドル、例えば21、22をそれぞれに関連付ける。そして、トランザクションの一部が失敗すると、トランザクションハンドラは、関連付けられたハンドルを使用して、さもなければ成功した可能性のある全ての動作を取り消す。この例のシナリオでは、第1のトランザクションハンドラ1501がUTXO1の使用に失敗したことを示す応答1510を受信した後、ハンドラh=11を用いて取り消し要求1512を発行し、さもなければ成功した可能性のある要求1505の動作を取り消す。同様に、第2のトランザクションハンドラ1502は、h=21を用いて取り消し要求1515を発行して、要求1506の効果を取り消す。取り消し要求は、冪等であることに留意されたい。
示されていないが、UTXOハンドラによって返されたハンドル(すなわち、サーバ側のハンドル)を使用して同様の機構を構築することができる。この後者のアプローチは、要求のタイムアウト(この場合、サーバ側のハンドルが利用可能でない)のためにハンドラの状態を無効にすることが許容される限り機能する。トランザクションハンドラが提供するハンドル(すなわち、クライアント側のハンドル)を使用すると、タイムアウトした要求の影響さえも取り消すことができる。
したがって、一時的なネットワーク遅延の場合、上述した機構は、影響を受けるハンドラの状態を再構築する必要がなくなる。
したがって、説明した一般的な戦略は、UTXOの使用における衝突を検出し、影響を受けたトランザクションを安全に逆行(バックアウトまたはバックオフ)することである。エラーによってトランザクションが拒否されなければならない場合もあれば、トランザクションが将来再試行される場合もある。後者の例は、ウォレットがUTXOを利用可能になる前に使用する場合である。
上述した衝突検出および取り消し機構は、パーティション化されて同時に処理されるUTXOデータ全体で一貫性を実現する際に、楽観的同時並行制御を提供する。また、上述したように、好ましくは、システムは、前のブロックにマイニングされた後でのみUTXOの使用を可能にするというポリシーを実装する。このアプローチの結果として、ブロックセグメントの処理を順序付けて同期する必要はない(ただし、順序は、マークルツリーの作成に関して依然として重要である)。
使用例
上記は、例えば(これに限定されるものではないが)決済ネットワークにおいて使用するための高性能コア分散型台帳およびトランザクションファブリックについて説明している。トランザクションは、ソースの値を宛先に移動するプリミティブに限定されず、むしろ、値または情報の変形、変換または転送を伴う任意の処理に限定される。性能コアは、限定されるものではないが、金融システムへの高性能トランザクション処理を含む無数の使用例をサポートするための基盤を提供する。
上記は、例えば(これに限定されるものではないが)決済ネットワークにおいて使用するための高性能コア分散型台帳およびトランザクションファブリックについて説明している。トランザクションは、ソースの値を宛先に移動するプリミティブに限定されず、むしろ、値または情報の変形、変換または転送を伴う任意の処理に限定される。性能コアは、限定されるものではないが、金融システムへの高性能トランザクション処理を含む無数の使用例をサポートするための基盤を提供する。
本明細書において使用される場合、処理時間は、動作要求(例えば、金融動作要求)が受信されてから応答が利用可能になるまでの経過時間として定義される。特定の動作は、台帳において複数のトランザクションを必要とすることができる。必要な全てのトランザクションが台帳に安全に記憶され、関連する全てのビジネスロジックが実行された場合、動作は完全に処理されたと見なされる。好ましくは、処理時間は、それよりも短くない場合(例えば、サブ秒)、数秒程度である。この方法で処理時間を維持することに加えて、コアネットワークは、大量の動作をサポートする。動作スループットは、コアネットワークによって動作が処理される速度として定義される。これは限定されるものではないが、望ましいスループットは、1秒あたり最大106(以上)の動作とすることができる。
一実施形態では、上述したアーキテクチャは、分散型台帳、すなわち、金融メッセージ台帳を提供する。台帳は、前述のブロックチェーン技術によって保護されたトランザクションの不滅のログを提供する。この文脈において使用される場合、ネットワークは、取得者(ACQ)および/または発行者(ISS)への要求およびそれらからの応答を転送する既存の金融取引システムとインターフェース接続する機能を含む。代替の使用例は、管理値台帳であり、これは、管理された信用枠(または借方)に対するトランザクションの処理を可能にする。この使用例は、ACQ/ISSが、ACQ/ISSに連絡することなく後で貸方に記入/借方に記入されるネットワーク上のアカウント残高をプロビジョニングすることを可能にする。管理されたクレジットラインを超えるトランザクションは、ACQ/ISSにクエリを送信して承認を要求するためのフォールバックをトリガすることができる。典型的な使用では、トランザクションフローは、以下のとおりである。メッセージは、サイズが約1KBと仮定される。そのメッセージは、エッジによって受信され、コアブロックチェーンネットワークにわたって(そこから)配信される。トランザクションが確定した後(およびブロックチェーン受信が受信されると)、エッジから応答が送信される。全体として、最大往復時間は、好ましくは2秒以下のオーダーである。さらに、決済ネットワークは、処理された全てのトランザクションについて追加の1KBメッセージが決済のために決済ネットワークから送信される1日の終わりのバッチ決済プロセスを処理することができる。これらのバッチ処理されたトランザクションは、数時間以内に処理されてログに記録されることが予期される。
トランザクションを高速且つ低レイテンシで処理する必要がある任意の他の使用例は、このアーキテクチャから恩恵を受けることができる。ロイヤルティポイントの管理は、非金銭的用途の1つの非限定的な例である。
本明細書のアーキテクチャもまた非常に安全である。暗号化、認証、デジタル署名およびその他の技術が使用され、顧客のプライバシおよびデータの整合性を保証する。
本明細書の技術は、データセキュリティを全て犠牲にすることなく、(処理されたトランザクションの数に関して)高性能および非常に低いレイテンシを示すグローバルな記録システムを提供する。
本明細書の管理対象ネットワークは、非常に安全な許可ネットワークである。したがって、トランザクションの収集およびブロックの構築時間は、ネットワーク全体にブロックを伝播するのにかかる時間近くまで低減される。本明細書のアプローチは、ネットワークのレイテンシがインターネット上の任意のリモート位置間で一般に1秒未満であるという事実を利用しており、さらに、これらのレイテンシは、前述した方法で高度に分散されたエッジ周辺および分散性の低いコアを使用することによってさらに短縮される。
説明されているアーキテクチャは、高性能であり、既知のブロックチェーンネットワーク環境に存在する多くの問題、すなわち、ネットワークレイテンシ、ネットワーク使用率、確認深度、クロックスキュー、トポロジ的ボトルネックおよびその他の要因を解消する。ソリューションを容易にするために、上記のように、コアネットワーク自体は、良好な地理的およびトポロジ的近接性を有することが好ましい。コンセンサスプロトコル(ブロックチェーンネットワークにおいて使用されるプロトコルなど)は、大容量のメッセージングに依存することが多いため、これは望ましいことである。これは、ブロックの伝播時間がシステムの応答時間要件に対して適時に留まることを保証するため、好ましくは、使用されるコンセンサスプロトコルに応じて、コアネットワークは、低いネットワークレイテンシおよび高い相互接続性を有する。オーバーレイの安全なエッジネットワークを活用して、非常に安全で高性能な完全にグローバルな決済ネットワークを確保します。
ブロックチェーンシステムは、確認の概念を含む。トランザクションが確認され、ブロックチェーンのブロックに追加されると、1つの確認があると見なされる。ブロックチェーンに追加される後続の各ブロックは、そのトランザクションの確認レベルを上げる。トランザクションの確認が多いほど、トランザクションをブロックチェーンから削除することが困難になる。ほとんどのブロックチェーンシステムは、トランザクションが確定されて永続的であると見なされるまで、特定の数の確認を待機する規則を採用しており、これは、「確認深度」と呼ばれる。好ましくは、本明細書のソリューションは、構成可能または可変の確認深度を利用して、トランザクションの回復力要件をサポートする。
コア内のコンピューティングノードは、好ましくはタイムサーバを使用して時間同期される。
コアネットワークは、非ブロッキングフルメッシュ相互接続トポロジとして構成されることができる。1つの好ましいアプローチは、コアネットワークを高回復力の部分メッシュ相互接続トポロジとして実装する。しかしながら、(ネットワークの停止および攻撃に対する)回復力とブロック伝播時間のバランスをとるために、前述したように、効率的なトポロジ認識データ伝播プロトコルが実装されることが好ましい。プロトコルは、編成がネットワークレイヤにおいて行われるマルチキャストプロトコルに基づいて構築されることが好ましい。
本明細書において使用される場合、ノードは、ネットワーク上のコンピューティングの高(上位)レベルユニットである。通常、ノードは、ノードの作業負荷を処理する1つ以上の物理マシン(サーバ)から構成される。好ましくは、ノードの実装は、他のノードから抽象化され、そのような他のノードに対して、各ピアノードは、ネットワーク上で単一のエンティティとして見える。トランザクションレート(例えば、1秒あたり100万トランザクション)をサポートするために、ノードは、複数の物理マシンに構成されることが好ましい。上記のように、好ましくは、ノードはまた、ミリ秒未満の正確なタイムスタンプを生成するために使用されるタイムサーバも有する。さらに、ノードは、コンセンサスに必要な署名およびエントロピを生成するために使用される暗号化エンジンおよび乱数ジェネレータ(RNG)サーバを含む。最後に、ノードは、到来トランザクションを処理し且つ上述した方法でブロックチェーンにそれらを追加するトランザクション処理サーバを含む。
本明細書で説明した許可ベースのアプローチでは、ノードは、マイニング証明を提供することにより、それ自体がマイナーであることを証明する。マイニング証明は、ノードがブロック(またはそのセグメント)の正当なマイナーであることを数学的に証明するノードによって提示されるデータである。証明は、適切なブロックチェーンの構築(すなわち、信頼)が自己検証可能であるように、ブロックヘッダに記録される。限定を意図するものではないが、分散型検証可能ランダム機能(DVRF)が使用され、マイニング証明を容易にすることができる。代替のアプローチは、ハードウェアで生成された信頼できる乱数の使用を含む。
実現技術
上記のように、本開示の技術は、コンテンツ配信ネットワーク(CDN)などのオーバーレイネットワークの文脈内で実装されることができるが、これは限定ではない。図9に示すようなこの種の既知のシステムでは、分散型コンピュータシステム100は、コンテンツ配信ネットワーク(CDN)として構成され、インターネットの周りに分散された1組のマシン102a−nを有すると仮定される。通常、ほとんどのマシンは、インターネットのエッジの近く、すなわち、エンドユーザアクセスネットワークまたはその近くにあるサーバである。ネットワーク動作コマンドセンタ(NOCC)104は、システム内の様々なマシンの動作を管理する。ウェブサイト106などのサードパーティサイトは、コンテンツ(例えば、HTML、埋め込みページオブジェクト、ストリーミングメディア、ソフトウェアダウンロードなど)の配信を、分散型コンピュータシステム100、特に「エッジ」サーバにオフロードする。通常、コンテンツプロバイダは、コンテンツプロバイダのドメインまたはサブドメインをサービスプロバイダの権限のあるドメイン名サービスによって管理されるドメインに指定すると、エイリアスによって(例えば、DNS CNAMEによって)それらのコンテンツ配信をオフロードする。コンテンツを希望するエンドユーザは、そのコンテンツをより確実に且つ効率的に取得するために分散型コンピュータシステムに誘導される。詳細は示していないが、分散型コンピュータシステムはまた、エッジサーバから使用状況やその他のデータを収集し、そのデータを領域または領域セットにわたって集約し、監視、ロギング、アラート、請求、管理およびその他の運用および管理機能を容易にするために他のバックエンドシステム110、112、114および116にそのデータを渡す分散型データ収集システム108などの他のインフラストラクチャを含むこともできる。分散型ネットワークエージェント118は、ネットワークならびにサーバの負荷を監視し、ネットワーク、トラフィックおよび負荷データを、CDNによって管理されるコンテンツドメインについて信頼できるDNSクエリ処理機構115に提供する。分散型データ伝送機構120が使用され、制御情報(例えば、負荷バランシングを容易にするためにコンテンツを管理するためのメタデータなど)をエッジサーバに配信することができる。
上記のように、本開示の技術は、コンテンツ配信ネットワーク(CDN)などのオーバーレイネットワークの文脈内で実装されることができるが、これは限定ではない。図9に示すようなこの種の既知のシステムでは、分散型コンピュータシステム100は、コンテンツ配信ネットワーク(CDN)として構成され、インターネットの周りに分散された1組のマシン102a−nを有すると仮定される。通常、ほとんどのマシンは、インターネットのエッジの近く、すなわち、エンドユーザアクセスネットワークまたはその近くにあるサーバである。ネットワーク動作コマンドセンタ(NOCC)104は、システム内の様々なマシンの動作を管理する。ウェブサイト106などのサードパーティサイトは、コンテンツ(例えば、HTML、埋め込みページオブジェクト、ストリーミングメディア、ソフトウェアダウンロードなど)の配信を、分散型コンピュータシステム100、特に「エッジ」サーバにオフロードする。通常、コンテンツプロバイダは、コンテンツプロバイダのドメインまたはサブドメインをサービスプロバイダの権限のあるドメイン名サービスによって管理されるドメインに指定すると、エイリアスによって(例えば、DNS CNAMEによって)それらのコンテンツ配信をオフロードする。コンテンツを希望するエンドユーザは、そのコンテンツをより確実に且つ効率的に取得するために分散型コンピュータシステムに誘導される。詳細は示していないが、分散型コンピュータシステムはまた、エッジサーバから使用状況やその他のデータを収集し、そのデータを領域または領域セットにわたって集約し、監視、ロギング、アラート、請求、管理およびその他の運用および管理機能を容易にするために他のバックエンドシステム110、112、114および116にそのデータを渡す分散型データ収集システム108などの他のインフラストラクチャを含むこともできる。分散型ネットワークエージェント118は、ネットワークならびにサーバの負荷を監視し、ネットワーク、トラフィックおよび負荷データを、CDNによって管理されるコンテンツドメインについて信頼できるDNSクエリ処理機構115に提供する。分散型データ伝送機構120が使用され、制御情報(例えば、負荷バランシングを容易にするためにコンテンツを管理するためのメタデータなど)をエッジサーバに配信することができる。
図10に示すように、所与のマシン200は、1つ以上のアプリケーション206a−nをサポートするオペレーティングシステムカーネル(Linuxまたはバリアントなど)204を実行するコモディティハードウェア(例えば、インテルペンティアムプロセッサ)202を備える。例えば、コンテンツ配信サービスを容易にするために、所与のマシンは、通常、HTTPプロキシ207(「グローバルホスト」プロセスと呼ばれることもある)、ネームサーバ208、ローカル監視プロセス210、分散型データ収集プロセス212などのアプリケーションのセットを実行する。ストリーミングメディアの場合、マシンは、通常、サポートされるメディア形式によって要求される1つ以上のメディアサーバを含む。
CDNエッジサーバは、好ましくは構成システムを使用してエッジサーバに配信される構成ファイルを使用して、好ましくはドメイン固有で顧客固有ベースで、1つ以上の拡張コンテンツ配信特徴を提供するように構成される。所与の構成ファイルは、好ましくはXMLベースであり、1つ以上の高度なコンテンツ処理特徴を容易にするコンテンツ処理ルールおよびディレクティブのセットを含む。構成ファイルは、データ転送機構を介してCDNエッジサーバに配信されることができる。米国特許第7,111,057号明細書は、エッジサーバのコンテンツ制御情報を配信および管理するための有用なインフラストラクチャを示しており、このおよび他のエッジサーバ制御情報は、CDNサービスプロバイダ自体、または(エクストラネットなどを介して)発信元サーバを動作させるコンテンツプロバイダの顧客によってプロビジョニングされることができる。
CDNは、米国特許第7,472,178号明細書に記載されているような記憶サブシステムを含むことができ、その開示は、参照により本明細書に組み込まれる。
CDNは、サーバキャッシュ階層を動作させて、顧客コンテンツの中間キャッシングを提供し、そのようなキャッシュ階層サブシステムの1つは、米国特許第7,376,716号明細書に記載されており、その開示は、参照により本明細書に組み込まれる。
CDNは、米国特許出願公開第20040093419号明細書に記載されている方法で、クライアントブラウザ、エッジサーバおよび顧客発信元サーバ間で安全なコンテンツ配信を提供することができる。そこで説明されているアプローチは、SSLで保護されたエッジネットワークと呼ばれることもある。一般的な運用シナリオでは、安全なコンテンツ配信は、一方ではクライアントとエッジサーバプロセスとの間、他方ではエッジサーバプロセスと発信元サーバプロセスとの間でSSLベースのリンクを行使する。これは、SSLで保護されたウェブページおよび/またはそのコンポーネントを、エッジサーバを介して配信されることを可能にする。セキュリティを強化するために、サービスプロバイダは、エッジサーバに関連する追加のセキュリティを提供することができる。これは、セキュリティカメラによって監視されるロックされたケージに配置されたエッジサーバを備える安全なエッジ領域の動作と、鍵管理サービスの提供などを含むことができる。ここでの一実施形態では、ウォレットサービスは、SSLで保護されたエッジネットワークの前または後に配置されることができる。
一般的な動作では、コンテンツプロバイダは、CDNによって提供したいコンテンツプロバイダのドメインまたはサブドメインを識別する。CDNサービスプロバイダは、コンテンツプロバイダドメインをエッジネットワーク(CDN)ホスト名に(例えば、正規名またはCNAMEを介して)関連付け、そして、CDNプロバイダは、そのエッジネットワークホスト名をコンテンツプロバイダに提供する。コンテンツプロバイダのドメインまたはサブドメインへのDNSクエリがコンテンツプロバイダのドメイン名サーバにおいて受信されると、それらのサーバは、エッジネットワークのホスト名を返すことによって応答する。エッジネットワークのホスト名は、CDNを指し、そのエッジネットワークのホスト名は、その後にCDNネームサービスを介して解決される。そのために、CDNネームサービスは、1つ以上のIPアドレスを返す。次に、要求元のクライアントブラウザは、IPアドレスに関連付けられたエッジサーバに対して(例えば、HTTPまたはHTTPSを介して)コンテンツ要求を行う。要求は、発信元のコンテンツプロバイダのドメインまたはサブドメインを含むホストヘッダを含む。ホストヘッダを有する要求を受信すると、エッジサーバは、その構成ファイルを確認して、要求されたコンテンツドメインまたはサブドメインが実際にCDNによって処理されているかどうかを判定する。その場合、エッジサーバは、構成において指定されるように、そのドメインまたはサブドメインのコンテンツ処理ルールおよびディレクティブを適用する。これらのコンテンツ処理ルールおよびディレクティブは、XMLベースの「メタデータ」構成ファイル内に配置されることができる。
上述したクライアントからエッジサーバへのマッピング技術は、ウォレットまたはウォレットサービス(「クライアント」)をエッジサーバに関連付けるために使用されることができる。典型的な使用例では、そのウォレットまたはウォレットサービスから開始された、またはそれに関連付けられたトランザクションは、その後、本明細書で説明するようなさらなる処理のためにエッジサーバを通過してコアに進む。上記のように、ウォレットまたはウォレットサービス(またはその一部)はまた、ウォレット要求がエッジを介してウォレットまたはウォレットサービスに渡り、コアに進むように、エッジの内側に存在することもある。トランザクション処理の一部は、エッジサーバにおいて実行されることができる。
上述した各プロセスは、好ましくは、専用マシンとして、1つ以上のプロセッサにおいて実行可能なプログラム命令のセットとしてコンピュータソフトウェアに実装される。
本明細書の主題が提供される代表的なマシンは、LinuxまたはLinuxバリアントオペレーティングシステムを実行するインテルハードウェアプロセッサベースのコンピュータと、説明した機能を実行するための1つ以上のアプリケーションである。上述したプロセスの1つ以上は、説明された機能を実行するためのコンピュータプログラムとして、すなわち、コンピュータ命令のセットとして実装される。
上記は、本発明の特定の実施形態によって実行される特定の動作の順序を説明しているが、代替の実施形態は、異なる順序で動作を実行し、特定の動作を組み合わせ、特定の動作を重複することができるなどのため、そのような順序は例示であることを理解されたい。本明細書における所与の実施形態への言及は、記載された実施形態が特定の特徴、構造、または特性を含むことができることを示すが、全ての実施形態は、必ずしも特定の特徴、構造、または特性を含まなくてもよい。
開示された主題は、方法またはプロセスの文脈において説明されてきたが、主題はまた、本明細書の動作を実行するための装置にも関する。この装置は、必要な目的のために特別に構築された特定のマシンであってもよく、またはコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化または再構成されるコンピュータを備えてもよい。そのようなコンピュータプログラムは、これらに限定されるものではないが、光ディスク、CD−ROM、および光磁気ディスクを含む任意の種類のディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気もしくは光カード、または電子命令を記憶するのに適した任意の種類の媒体などの、それぞれがコンピュータシステムバスに接続されているコンピュータ可読記憶媒体に記憶されることができる。本発明の所与の実装は、Linuxなどのオペレーティングシステムを実行する標準のインテルハードウェアプラットフォーム上のDNS準拠ネームサーバ(例えば、BIND)と連動して実行される所与のプログラミング言語で書かれたソフトウェアである。機能は、ネームサーバコードに組み込まれてもよく、またはそのコードの補助として実行されてもよい。本明細書における技術を実装するマシンは、プロセッサ、上述した方法を実行するためにプロセッサによって実行される命令を保持するコンピュータメモリを備える。
システムの所与のコンポーネントは別個に説明されているが、当業者は、機能のいくつかが所与の命令、プログラムシーケンス、コード部分などにおいて組み合わされるまたは共有されることができることを理解するであろう。
システムの所与のコンポーネントは別個に説明されているが、当業者は、機能のいくつかが所与の命令、プログラムシーケンス、コード部分などにおいて組み合わされるまたは共有されることができることを理解するであろう。本明細書で説明するアプリケーションまたは機能は、他のアプリケーションへのフックの提供、プラグインとしての機構の使用の促進、機構へのリンクなどによって、ネイティブコードとして実装されることができる。
本明細書の技術は、一般に、技術または技術分野に対する上述した改善、ならびに様々な分野に対する特定の技術改善を提供する。
上述した各プロセスは、好ましくは、専用マシンとして、1つ以上のプロセッサにおいて実行可能なプログラム命令のセットとしてコンピュータソフトウェアに実装される。
エッジネットワークは、様々な技術を使用してコアと通信することができる。利用されることができる代表的なオーバーレイネットワーク技術は、米国特許出願公開第2015/0188943号明細書および同2017/0195161号明細書に記載されているものを含み、それらの開示は、参照により本明細書に組み入れられる。とりわけ、これらの公開は、一般にオーバーレイを介した、ならびに(非公開で管理されることができる)企業データセンタとサードパーティのソフトウェア・アズ・ア・サービス(SaaS)プロバイダとの間の広域ネットワーク(WAN)アクセラレーションサービスを促進するために使用されるCDNリソースを説明している。1つの典型的なシナリオでは、いわゆるルーティングオーバーレイは、既存のコンテンツ配信ネットワーク(CDN)インフラストラクチャを活用して、ダウンリンクを迂回するかまたは最小レイテンシを有する経路を見つけることにより、トランスポートプロトコルとしてインターネットプロトコル(IP)を使用する任意のアプリケーションの大幅な性能向上を提供する。他のアプローチは、マルチキャスト、ユニキャスト、ブロードキャストまたはその他のパケット転送技術を使用して、エッジからコアにメッセージを提供することである。
本明細書の技術は、一般に、技術または技術分野に対する上述した改善、ならびに全て上述したように、分散型ネットワーキング、分散型トランザクション処理、広域ネットワークにアクセス可能なトランザクション処理システム、高性能、低レイテンシのトランザクション処理システム、非ブロッキングフルメッシュ相互接続システムなどを含む様々な分野に対する特定の技術改善を提供する。
我々の発明を説明してきたが、主張されているのは以下のとおりである。
Claims (14)
- 1つ以上のトランザクションハンドラのセットを含むトランザクション処理レイヤを提供することと、
UTXOハンドラのセットから構成される、前記トランザクション処理レイヤとは異なるUTXO処理レイヤを提供することと、
1つ以上のトランザクションハンドラがメッセージを受信し、それらのメッセージをブロックチェーンの1つ以上のブロックに加工する処理を行うことを備え、
メッセージが前記ブロックチェーンに含まれるトランザクションと関連付けられ、前記トランザクションが未使用トランザクション出力(UTXO)のセットと関連付けられており、
更に、前記ブロックチェーン内のブロックの所与のセグメントの処理時に、所与のトランザクションハンドラが第1および第2のUTXOハンドラと同時に相互作用することと、
前記トランザクションの第2の部分に関連付けられている第2のUTXO動作が前記第2のUTXOハンドラにおいて失敗したことを検出すると、前記第1のUTXOハンドラにおいて首尾よく完了した前記トランザクションの第1の部分に関連付けられた第1のUTXO動作を特定して逆行することとを備える、方法。 - 前記UTXOハンドラのセットにわたってUTXO空間をパーティション化することをさらに含む、請求項1に記載の方法。
- 前記所与のトランザクションハンドラが、前記UTXOハンドラへの要求に固有に関連付けられたトランザクションハンドラが提供するハンドルを用いて各UTXOハンドラと相互作用する、請求項1に記載の方法。
- 前記第2のUTXO動作に関連付けられた前記UTXO動作が、他のトランザクションによって既に使用済みのUTXOを使用する要求に関連付けられていることから失敗する、請求項1に記載の方法。
- 前記第2のUTXO動作に関連付けられた前記UTXO動作が、存在する前かまたは確定される前のUTXOを使用する要求に関連付けられていることから失敗する、請求項1に記載の方法。
- UTXOの使用を前記ブロックチェーンの前のブロックにマイニングされた後でのみ可能にするというポリシーを実施することをさらに含む、請求項5に記載の方法。
- 前記第1のUTXO動作を前記所与のトランザクションハンドラからのメッセージの受信時に前記第1のUTXOハンドラによって逆行することによって、前記トランザクションについての関連する使用動作を取り消す、請求項1に記載の方法。
- 首尾よく完了した前記第1のUTXO動作を逆行することによって、前記第1のUTXOハンドラのロックを取得することを回避し、それにより、前記UTXO使用動作の処理に関連付けられるレイテンシを低減する、請求項1に記載の方法。
- 前記所与のトランザクションハンドラと各UTXOハンドラとの間の相互作用がタイムアウトを伴う、請求項1に記載の方法。
- メッセージを受信してブロックチェーンに加工する処理を行うコンピューティング要素のセットを含むトランザクション処理システムに関連付けられて実行される方法であって、メッセージが前記ブロックチェーンに含まれるトランザクションに関連付けられ、前記トランザクションが1つ以上の未使用トランザクション出力(UTXO)のセットに関連付けられる、方法において、
UTXO処理からのトランザクション処理を分岐させることと、
UTXOハンドラのセットにわたってUTXO空間をパーティション化することと、
前記ブロックチェーンへのメッセージの処理時に、競合を検出し、部分的に完了したトランザクションのUTXO動作を逆行することとを備える、方法。 - 前記UTXO空間が、前記コンピューティング要素のセットに配置されたロックフリーの分散型UTXOデータベースを含む、請求項10に記載の方法。
- トランザクション処理が、トランザクションハンドラのセットによって実行される、請求項10に記載の方法。
- 所与のトランザクションハンドラが、前記UTXOハンドラへの要求に固有に関連付けられたトランザクションハンドラが提供するハンドルを使用して、各UTXOハンドラと相互作用する、請求項12に記載の方法。
- メッセージを受信してブロックチェーンに加工する処理を行うトランザクション処理コンピューティング要素のセットであって、メッセージが前記ブロックチェーンに含まれるトランザクションに関連付けられ、トランザクションが1つ以上の未使用トランザクション出力(UTXO)のセットに関連付けられる、コンピューティング要素のセットと、
前記コンピューティング要素のセットにわたってサポートされるロックフリーの分散型UTXOデータベースとを備える、装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762610318P | 2017-12-26 | 2017-12-26 | |
US62/610,318 | 2017-12-26 | ||
US16/053,349 | 2018-08-02 | ||
US16/053,349 US11018850B2 (en) | 2017-12-26 | 2018-08-02 | Concurrent transaction processing in a high performance distributed system of record |
PCT/US2018/067465 WO2019133577A1 (en) | 2017-12-26 | 2018-12-26 | Concurrent transaction processing in a high performance distributed system of record |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021508876A true JP2021508876A (ja) | 2021-03-11 |
Family
ID=66950723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020535096A Pending JP2021508876A (ja) | 2017-12-26 | 2018-12-26 | 高性能分散型記録システムにおける同時トランザクション処理 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11018850B2 (ja) |
EP (1) | EP3732865B1 (ja) |
JP (1) | JP2021508876A (ja) |
WO (1) | WO2019133577A1 (ja) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018224955A1 (en) * | 2017-06-07 | 2018-12-13 | nChain Holdings Limited | Computer-implemented system and method for managing large blocks over a blockchain network |
US10630769B2 (en) * | 2017-12-26 | 2020-04-21 | Akamai Technologies, Inc. | Distributed system of record transaction receipt handling in an overlay network |
GB201807389D0 (en) * | 2018-05-04 | 2018-06-20 | Hubii As | Controlling transactions on a network |
AU2019304235A1 (en) * | 2018-07-19 | 2021-03-11 | Asia Top Loyalty Limited | A method of loyalty exchange transaction by using blockchain for reward point exchange |
US11620152B2 (en) * | 2018-07-20 | 2023-04-04 | Ezblock Ltd. | Blockchain sharding with parallel threads |
US10893123B2 (en) * | 2018-09-05 | 2021-01-12 | Moac Block Chain Tech Inc. | Apparatus and method for flexible access control and resource control in a decentralized system |
RU2731321C2 (ru) | 2018-09-14 | 2020-09-01 | Общество С Ограниченной Ответственностью "Яндекс" | Способ определения потенциальной неисправности запоминающего устройства |
RU2718215C2 (ru) | 2018-09-14 | 2020-03-31 | Общество С Ограниченной Ответственностью "Яндекс" | Система обработки данных и способ обнаружения затора в системе обработки данных |
RU2721235C2 (ru) * | 2018-10-09 | 2020-05-18 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для маршрутизации и выполнения транзакций |
RU2711348C1 (ru) | 2018-10-15 | 2020-01-16 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для обработки запросов в распределенной базе данных |
KR102444425B1 (ko) * | 2018-10-23 | 2022-09-16 | 삼성에스디에스 주식회사 | 블록체인 트랜잭션에 대하여 배치 프로세싱을 수행하는 장치 및 그 방법 |
US20200153605A1 (en) * | 2018-11-13 | 2020-05-14 | Accelor Ltd. | Systems and methods for pre-executing transaction validation for blockchain applications |
US11386078B2 (en) * | 2018-12-17 | 2022-07-12 | Sap Se | Distributed trust data storage system |
JP6618138B1 (ja) * | 2019-01-23 | 2019-12-11 | 株式会社Scalar | 改ざん検知性を有するデータ管理システム |
US20220121643A1 (en) * | 2019-01-23 | 2022-04-21 | Scalar, Inc. | System with tamper-evidence |
RU2746042C1 (ru) | 2019-02-06 | 2021-04-06 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и система для передачи сообщения |
GB2582978B (en) * | 2019-04-12 | 2022-05-04 | Nchain Holdings Ltd | Methods and devices for propagating blocks in a blockchain network |
US11115188B2 (en) * | 2019-04-29 | 2021-09-07 | Advanced New Technologies Co., Ltd. | Blockchain-based data processing method, apparatus, and blockchain node |
CN110471795B (zh) * | 2019-07-31 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 区块链状态数据恢复方法及装置、电子设备 |
CN110673966B (zh) * | 2019-09-25 | 2023-03-07 | 东北大学 | 一种基于区块链链上-链下协同的数据交互方法 |
US11544252B2 (en) * | 2019-12-17 | 2023-01-03 | Akamai Technologies, Inc. | High performance distributed system of record with extended transaction processing capability |
CN111311264B (zh) * | 2020-01-22 | 2023-12-22 | 数据通信科学技术研究所 | 一种交易发送者的监管方法和系统 |
CN111414421B (zh) * | 2020-03-18 | 2024-05-14 | 中国人民大学 | 一种分段式区块链存储方法和存储装置 |
CN111444203B (zh) * | 2020-03-24 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 一种同步处理方法、装置、设备及介质 |
CN111581214B (zh) * | 2020-05-07 | 2023-07-18 | 成都汉为科技有限公司 | 适用于能源区块链的并行merkle树构建与验证方法 |
US20210374843A1 (en) * | 2020-05-26 | 2021-12-02 | Mitsubishi Electric Research Laboratories, Inc. | Debt Resource Management in a Distributed Ledger System |
CN112416905A (zh) | 2020-07-03 | 2021-02-26 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
CN111598571A (zh) * | 2020-07-20 | 2020-08-28 | 百度在线网络技术(北京)有限公司 | 区块链的事务处理方法、装置、设备和存储介质 |
WO2022093256A1 (en) * | 2020-10-30 | 2022-05-05 | Hewlett-Packard Development Company, L.P. | Provisioning of computational resources |
CN113064764B (zh) * | 2021-04-19 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行区块的方法及装置 |
CN113254486A (zh) * | 2021-06-28 | 2021-08-13 | 卓尔智联(武汉)研究院有限公司 | 一种区块链信息处理方法及装置 |
CN114338455B (zh) * | 2022-03-16 | 2022-06-17 | 北京微芯感知科技有限公司 | 一种多机构分布式冲突检测系统及方法 |
CN115208898B (zh) * | 2022-03-29 | 2023-12-08 | 深圳大学 | 区块广播方法、装置、计算机设备和存储介质 |
CN116501801B (zh) * | 2023-05-11 | 2023-10-13 | 天津大学 | 一种面向许可型区块链的高性能事务异步并发处理方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170337534A1 (en) * | 2015-11-06 | 2017-11-23 | Cable Television Laboratories, Inc | Systems and methods for blockchain virtualization and scalability |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5944779A (en) | 1996-07-02 | 1999-08-31 | Compbionics, Inc. | Cluster of workstations for solving compute-intensive applications by exchanging interim computation results using a two phase communication protocol |
US6108703A (en) | 1998-07-14 | 2000-08-22 | Massachusetts Institute Of Technology | Global hosting system |
US7240100B1 (en) | 2000-04-14 | 2007-07-03 | Akamai Technologies, Inc. | Content delivery network (CDN) content server request handling mechanism with metadata framework support |
US6996616B1 (en) | 2000-04-17 | 2006-02-07 | Akamai Technologies, Inc. | HTML delivery from edge-of-network servers in a content delivery network (CDN) |
US7036146B1 (en) | 2000-10-03 | 2006-04-25 | Sandia Corporation | System and method for secure group transactions |
US7111057B1 (en) | 2000-10-31 | 2006-09-19 | Akamai Technologies, Inc. | Method and system for purging content from a content delivery network |
EP1410217A4 (en) | 2001-04-02 | 2006-09-20 | Akamai Tech Inc | SCALABLE, VERY EFFICIENT AND VERY AVAILABLE DISTRIBUTED STORAGE SYSTEM FOR INTERNET CONTENT |
US7133905B2 (en) | 2002-04-09 | 2006-11-07 | Akamai Technologies, Inc. | Method and system for tiered distribution in a content delivery network |
US20040093419A1 (en) | 2002-10-23 | 2004-05-13 | Weihl William E. | Method and system for secure content delivery |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7720377B2 (en) | 2006-01-23 | 2010-05-18 | Hewlett-Packard Development Company, L.P. | Compute clusters employing photonic interconnections for transmitting optical signals between compute cluster nodes |
US9251214B2 (en) | 2010-04-08 | 2016-02-02 | Microsoft Technology Licensing, Llc | In-memory database system |
US9069610B2 (en) | 2010-10-13 | 2015-06-30 | Microsoft Technology Licensing, Llc | Compute cluster with balanced resources |
US8661449B2 (en) | 2011-06-17 | 2014-02-25 | Microsoft Corporation | Transactional computation on clusters |
US8990177B2 (en) | 2011-10-27 | 2015-03-24 | Yahoo! Inc. | Lock-free transactional support for large-scale storage systems |
US9384257B2 (en) | 2013-06-24 | 2016-07-05 | International Business Machines Corporation | Providing multiple concurrent transactions on a single database schema using a single concurrent transaction database infrastructure |
US10270809B2 (en) | 2013-12-02 | 2019-04-23 | Akamai Technologies, Inc. | Virtual private network (VPN)-as-a-service with delivery optimizations while maintaining end-to-end data security |
US9813343B2 (en) | 2013-12-03 | 2017-11-07 | Akamai Technologies, Inc. | Virtual private network (VPN)-as-a-service with load-balanced tunnel endpoints |
US9679003B2 (en) | 2015-01-07 | 2017-06-13 | International Business Machines Corporation | Rendezvous-based optimistic concurrency control |
US20170109735A1 (en) | 2015-07-14 | 2017-04-20 | Fmr Llc | Computationally Efficient Transfer Processing and Auditing Apparatuses, Methods and Systems |
US20170031676A1 (en) | 2015-07-27 | 2017-02-02 | Deja Vu Security, Llc | Blockchain computer data distribution |
US20170132625A1 (en) | 2015-11-05 | 2017-05-11 | Mastercard International Incorporated | Method and system for use of a blockchain in a transaction processing network |
US10269012B2 (en) | 2015-11-06 | 2019-04-23 | Swfl, Inc. | Systems and methods for secure and private communications |
US11025477B2 (en) | 2015-12-31 | 2021-06-01 | Akamai Technologies, Inc. | Overlay network ingress edge region selection |
US11321299B2 (en) | 2016-02-01 | 2022-05-03 | Verizon Patent And Licensing Inc. | Scalable conflict detection in transaction management |
US20170236123A1 (en) | 2016-02-16 | 2017-08-17 | Blockstack Inc. | Decentralized processing of global naming systems |
AU2017223126B2 (en) | 2016-02-23 | 2022-12-15 | nChain Holdings Limited | Blockchain-based exchange with tokenisation |
US10346406B2 (en) | 2016-03-28 | 2019-07-09 | International Business Machines Corporation | Decentralized autonomous edge compute coordinated by smart contract on a blockchain |
US10521775B2 (en) | 2016-04-18 | 2019-12-31 | R3 Ltd. | Secure processing of electronic transactions by a decentralized, distributed ledger system |
US10803537B2 (en) * | 2016-04-18 | 2020-10-13 | R3 Ltd. | System and method for managing transactions in dynamic digital documents |
US10333705B2 (en) * | 2016-04-30 | 2019-06-25 | Civic Technologies, Inc. | Methods and apparatus for providing attestation of information using a centralized or distributed ledger |
US10417188B2 (en) | 2016-05-27 | 2019-09-17 | Mastercard International Incorporated | Method and system for transferring trust across block chain segments |
US10305694B2 (en) | 2016-05-27 | 2019-05-28 | Mastercard International Incorporated | Method and system for efficient distribution of configuration data utilizing permissioned blockchain technology |
US11531974B2 (en) | 2016-08-17 | 2022-12-20 | International Business Machines Corporation | Tracking transactions through a blockchain |
US10291627B2 (en) | 2016-10-17 | 2019-05-14 | Arm Ltd. | Blockchain mining using trusted nodes |
US20180130034A1 (en) | 2016-11-07 | 2018-05-10 | LedgerDomain, LLC | Extended blockchains for event tracking and management |
GB201707296D0 (en) * | 2017-05-08 | 2017-06-21 | Nchain Holdings Ltd | Computer-implemented system and method |
EP3632037A4 (en) * | 2017-05-22 | 2020-04-08 | Visa International Service Association | IMPROVED VERIFICATION SPEED NETWORK COMPRISING INVIOLABLE DATA |
US20190172026A1 (en) * | 2017-12-02 | 2019-06-06 | Alchemy Limited LLC | Cross blockchain secure transactions |
US10250708B1 (en) | 2017-12-26 | 2019-04-02 | Akamai Technologies, Inc. | High performance distributed system of record |
US10630769B2 (en) | 2017-12-26 | 2020-04-21 | Akamai Technologies, Inc. | Distributed system of record transaction receipt handling in an overlay network |
-
2018
- 2018-08-02 US US16/053,349 patent/US11018850B2/en active Active
- 2018-12-26 JP JP2020535096A patent/JP2021508876A/ja active Pending
- 2018-12-26 WO PCT/US2018/067465 patent/WO2019133577A1/en unknown
- 2018-12-26 EP EP18896215.3A patent/EP3732865B1/en active Active
-
2021
- 2021-05-24 US US17/328,496 patent/US11791982B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170337534A1 (en) * | 2015-11-06 | 2017-11-23 | Cable Television Laboratories, Inc | Systems and methods for blockchain virtualization and scalability |
Also Published As
Publication number | Publication date |
---|---|
US11018850B2 (en) | 2021-05-25 |
EP3732865A4 (en) | 2021-09-08 |
EP3732865B1 (en) | 2023-02-22 |
US20190199515A1 (en) | 2019-06-27 |
EP3732865A1 (en) | 2020-11-04 |
US11791982B2 (en) | 2023-10-17 |
US20210281397A1 (en) | 2021-09-09 |
WO2019133577A1 (en) | 2019-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11791982B2 (en) | Concurrent transaction processing in a high performance distributed system of record | |
JP2021508877A (ja) | 高性能分散型記録システム | |
US11622001B2 (en) | Distributed system of record transaction receipt handling in an overlay network | |
US20230239135A1 (en) | High performance distributed system of record with cryptographic service support | |
US11977924B2 (en) | High performance distributed system of record with distributed random oracle | |
US11687522B2 (en) | High performance distributed system of record with delegated transaction signing | |
JP2022508247A (ja) | 信頼度ベースのコンセンサスを伴う高性能分散型記録システム | |
JP2022509933A (ja) | 鍵管理を伴う高性能分散型記録システム | |
JP2022512324A (ja) | 外部システムに対してのセキュアな相互運用性を伴う高性能分散型記録システム | |
JP2022508211A (ja) | ホストされたオリジンサービスを伴う高性能分散型記録システム | |
US11720453B2 (en) | High performance distributed system of record with unspent transaction output (UTXO) database snapshot integrity | |
US20230185794A1 (en) | High performance distributed system of record with ledger configuration system | |
US20220237594A1 (en) | High performance distributed system of record with wallet services resiliency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211101 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221130 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20230623 |