JP2024512256A - 実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートの削減 - Google Patents

実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートの削減 Download PDF

Info

Publication number
JP2024512256A
JP2024512256A JP2023550252A JP2023550252A JP2024512256A JP 2024512256 A JP2024512256 A JP 2024512256A JP 2023550252 A JP2023550252 A JP 2023550252A JP 2023550252 A JP2023550252 A JP 2023550252A JP 2024512256 A JP2024512256 A JP 2024512256A
Authority
JP
Japan
Prior art keywords
transaction
cache
version number
next transaction
ordering
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
Application number
JP2023550252A
Other languages
English (en)
Inventor
ヴコリック、マルコ
カロ、アンジェロ デ
ソルニオッティ、アレッサンドロ
ナタラジャン、センティルネイサン
バーガー、アルテム
マネヴィッチ、ヤコブ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2024512256A publication Critical patent/JP2024512256A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

プロセッサが、トランザクションの書込みセットをキャッシュに記憶することができる。前記キャッシュは、状態情報を含み得、前記キャッシュは、ブロックチェーンに非コミットであり得る。前記プロセッサは、次のトランザクションを特定することができる。前記次のトランザクションは、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行うことができる。前記プロセッサは、前記キャッシュから何が読み取られるかに基づいて前記トランザクションおよび前記次のトランザクションを順序付けすることができる。前記トランザクションおよび前記次のトランザクションを順序付けすることで、前記次のトランザクションのアボートを避けることができる。

Description

本開示は、一般には、トランザクション処理の分野に関し、より詳細には、実行-順序付け-有効化(EOV)ブロックチェーントランザクションモデル内でのトランザクションアボートの削減に関する。
ハイパーレジャーファブリックなどのブロックチェーンプラットフォームは、EOVプロトコル/モデルに従う。このプロトコルには、3つのフェーズが存在する。第1のフェーズでは、ブロックチェーントランザクションが実行/シミュレートされて、読取り/書込みセットが収集される。第2のフェーズでは、実行されたブロックチェーントランザクションが、順序付けされる。第3および最後のフェーズでは、ブロックチェーントランザクションの読取りセットが有効化されて、任意の直列化可能性違反についてチェックされる。
本開示の実施形態は、実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減するための方法、システム、および、コンピュータプログラムを含む。プロセッサが、トランザクションの書込みセットをキャッシュに記憶し得る。前記キャッシュは、状態情報を含み得、前記キャッシュは、ブロックチェーンに非コミットであり得る。前記プロセッサは、次のトランザクションを特定し得る。前記次のトランザクションは、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行うことができる。前記プロセッサは、前記キャッシュから何が読み取られるかに基づいて前記トランザクションおよび前記次のトランザクションを順序付けし得る。前記トランザクションおよび前記次のトランザクションを順序付けすることで、前記次のトランザクションのアボートを避けることができる。
上記の概要は、例示された各実施形態または本開示の全ての実装形態を説明することを意図したものではない。
本開示に含まれる図面は、本明細書に組み込まれ、その一部を形成する。それらは、本開示の実施形態を例示し、説明とともに、本開示の原理を説明するのに役立つ。図面は、特定の実施形態を単に例示するものであり、本開示を限定するものではない。
本開示の実施形態に係る例示的なブロックチェーンアーキテクチャを示す。
本開示の実施形態に係るブロックチェーントランザクションフローを示す。
本開示の実施形態に係る、実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減するための分散システムの一例を示す。
本開示の実施形態に係る、トランザクションアボートを削減するためのハイパーレジャーファブリックシステムの一例を示す。
本開示の実施形態に係る改善された実行-順序付け-有効化手法の一例を示す。
本開示の実施形態に係る、実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減する例示的な方法のフローチャートを示す。
本開示の実施形態に係る、クラウドコンピューティング環境を示す。
本開示の実施形態に係る、抽象化モデル層を示す。
本開示の実施形態に係る、方法、ツールおよびモジュール、および、本明細書で説明される任意の関連機能のうちの1つまたは複数を実施するのに使用され得る、例示的なコンピュータシステムの上位ブロック図を示す。
本明細書で説明される実施形態は、様々な修正および代替形態が可能であるが、それらの具体的な内容は、例として図面に示されており、詳細に説明される。しかしながら、説明される特定の実施形態は、限定的な意味に解釈されるべきではないことを理解されるべきである。これに対して、本開示の趣旨および範囲内の全ての修正、均等物、および、代替物を包含することを意図している。
本開示の態様は、一般には、トランザクション処理の分野に関し、より詳細には、EOVブロックチェーントランザクションモデル内でのトランザクションアボートの削減に関する。ハイパーレジャーファブリックなどのブロックチェーンプラットフォームは、EOVプロトコル/モデルに従う。このプロトコルには、3つのフェーズが存在する。第1のフェーズでは、ブロックチェーントランザクションが実行/シミュレートされて、読取り/書込みセットが収集される。第2のフェーズでは、実行されたブロックチェーントランザクションが、順序付けされる。第3および最後のフェーズでは、ブロックチェーントランザクションの読取りセットが有効化されて、任意の直列化可能性違反についてチェックされる。
しかし、EOVプロトコルの共通の問題は、実行および有効化フェーズ間の時間的隔たりに起因して、競合する複数のトランザクションが短いタイムスパンでサブミットされる場合に直列化可能性違反の可能性が高いことである。したがって、それにより、全体的なブロックチェーンプラットフォームのグッドプットが低減される。例えば、アカウントの残高を増やすために、2つのトランザクションがサブミットされると、1つのトランザクションのみコミットされ、他は直列化可能性違反(例えば、読取りセット内に存在する読取りバージョンが、現在コミットされているバージョンに一致しない)に起因してアボートされる。
したがって、直列化可能性違反を回避/軽減するための解決法について、本明細書で詳細に議論される。一般的概要として、説明される解決法では、ブロックチェーンネットワーク内の各ノードにおいて非コミット状態キャッシュを維持し、実行フェーズの終わりで書込みセットをキャッシュすることとなる。次の従属的トランザクションが実行される際、それは、前に実行されたトランザクションにより近々修正されるであろう現在コミットされたバージョンからの読取りではなく、非コミット状態キャッシュからの読取りを行うことができる。
こうした開示の解決法にとっての利点は、EOVモデルでは、実行フェーズが既に決定論的なことである。よって、ポストオーダ実行で必要あるような決定論については気にする必要がない。したがって、開示の解決法は、数/整数のみでなく任意のデータをサポート可能であり、この結果、ポストオーダ実行と比較して、より高いグッドプットとなる(直列実行がないため)。
図面を参照の前に言っておくと、広く本明細書において説明され、図面に示されている簡単なコンポーネントは多種多様な異なる構成内で配置および設計され得ることが容易に理解されるであろう。したがって、添付図面に表されるような、方法、装置、非一時的コンピュータ可読媒体、および、システムのうちの少なくとも1つの実施形態の以下の詳細な説明は、特許請求される本願の範囲を限定することを意図するものではなく、単に選択された実施形態を表すものである。
本明細書を通して説明される本件特徴、構造、または、特性は、1つまたは複数の実施形態において任意の適当なやり方で組み合わせること、または、取り除くことができる。例えば、「例示的な実施形態」、「いくつかの実施形態」という語句、または他の同様の文言の使用は、本明細書を通して、実施形態に関連して説明される特定の特徴、構造、または特性が、少なくとも1つの実施形態において含まれ得ることを指す。したがって、本明細書を通して、「例示的な実施形態」、「いくつかの実施形態では」、「他の実施形態では」という言い回し、または、他の同様の言い回しが出現すると、それは、必ずしも全てが同じ実施形態グループを指すわけではなく、説明される特徴、構造、または、特性は、1つまたは複数の実施形態において任意の適当なやり方で組み合わせること、または、取り除くことができる。さらに、図面では、要素間の接続があるとそれは、その図示された接続が一方向の矢印であっても、双方向の矢印であっても、一方向および/または双方向の通信を許容可能である。また、図面内に示されるデバイスがあれば、それは、異なるデバイスにもなり得る。例えば、情報を送っているモバイルデバイスが示される場合、その情報を送るために有線デバイスを使用することも可能である。
さらに、「メッセージ」という語が実施形態の説明において使用される場合があるが、本願は、多くのタイプのネットワークおよびデータに適用され得る。さらに、例示的実施形態において、特定のタイプの接続、メッセージ、および、シグナリングが示されている場合があるが、本願は、特定のタイプの接続、メッセージ、および、シグナリングに限定されるものではない。
さらに、トランザクション、トランザクションプロポーザル、または、プロポーザルという語が本明細書中で使用される場合があるが、それらは、ブロックチェーントランザクション/トランザクションプロポーザルと置換え可能であり得、かつ、それらと同義であり、ビジネス上または金融上のトランザクションとみなされるものではないことに留意されたい。ブロックチェーンについてのトランザクションプロポーザルは、ブロックチェーンにデータをコミットさせるプロポーザルであり、ブロックチェーンについてのトランザクションは、上記のデータコミットであるか、または、スマートコントラクトが満足されることに関連する条件に応答して実行可能なスマートコントラクトコードの実行である。
EOVブロックチェーンモデル内のトランザクションアボートを削減する方法、システム、および、コンピュータプログラム製品について、本明細書で詳述される。
いくつかの実施形態では、方法、システム、および/または、コンピュータプログラム製品は、互いに通信する複数のノードを含む分散記憶システムである非集中データベース(ブロックチェーンなど)を利用する。非集中データベースは、相互に信用されていない当事者間の記録を維持することができる分散型台帳に似たアペンド専用のイミュータブルデータ構造を含む。これらの信用されていない当事者は、本明細書において、ピア、ノード、および/または、ピアノードと呼ばれる。各ピアはデータベース記録のコピーを維持し、分散されたピア間でコンセンサスに達しない限り、どの単一のピアもデータベース記録を修正できない。例えば、ピアはコンセンサスプロトコルを実行して、ブロックチェーンストレージトランザクションを有効化し、記憶トランザクションをブロックにグループ化し、ブロックにわたってハッシュチェーンを構築し得る。このプロセスでは、整合性を保つために、必要に応じて記憶トランザクションを順序付けすることによって、台帳が形成される。
様々な実施形態において、許可型および/または自由参加型ブロックチェーンを使用することが可能である。パブリックのまたは自由参加型のブロックチェーンは、特定の身元なく(例えば、匿名性を保持しながら)、誰でもが参加可能である。パブリックブロックチェーンは、ネイティブ暗号通貨を関与させることができ、プルーフオブワークなどの様々なプロトコルに基づくコンセンサスを使用することができる。一方、許可型ブロックチェーンデータベースは、資金、商品、および、(プライベートな)情報などをやり取りする企業など、共通の目的を共有するが、互いに完全には信用していないエンティティのグループの間でのセキュアな対話を提供する。
さらに、いくつかの実施形態では、本方法、システム、および/または、コンピュータプログラム製品は、非集中型記憶スキームに適合され、「スマートコントラクト」または「チェーンコード」と称される任意のプログラマブルロジックを動作させるブロックチェーンを利用できる。いくつかのケースでは、管理機能およびパラメータのために専用のチェーンコードが存在し得、これらは、システムチェーンコード(ブロックチェーンネットワークにコミットされるべきトランザクションの順序付け/直列化の管理など)と称される。いくつかの実施形態では、本方法、システム、および/または、コンピュータプログラム製品は、ブロックチェーンデータベースのタンパー防止特性、および、ノード間での基礎合意を活用する、信用された分散アプリケーションであるスマートコントラクトをさらに利用可能であり、これらは、エンドースメントまたはエンドースメントポリシと称される。
エンドースメントポリシにより、チェーンコードは、エンドースメントに必要なピアノードのセットの形態でトランザクションのエンドーサを指定することが可能になる。クライアントがエンドースメントポリシで指定されたピア(例えば、エンドーサ)にトランザクションを送信すると、そのトランザクションが実行され、トランザクションが有効化される。有効化後、トランザクションは順序付けフェーズに入り、ここでは、コンセンサスプロトコルを使用して、ブロックにグループ化されたエンドースされたトランザクションの順序付けられたシーケンスが生成される。
いくつかの実施形態では、本方法、システム、および/または、コンピュータプログラム製品は、ブロックチェーンシステムの通信エンティティであるノードを利用可能である。「ノード」は、同じ物理サーバ上で異なるタイプの複数のノードが動作できるという意味で、論理機能を実行し得る。ノードは信用ドメインにグループ化され、様々な方法でこれらを制御する論理エンティティに関連付けられる。ノードは、エンドーサ(例えば、ピア)にトランザクション呼び出しをサブミットし、順序付けサービス(例えば、順序付けノード)にトランザクションプロポーザルをブロードキャストするクライアントまたはサブミットクライアントノードのような様々なタイプを含み得る。
他のタイプのノードは、クライアントがサブミットしたトランザクションを受け取り、トランザクションをコミットし、ブロックチェーンのトランザクションの台帳の状態、および、そのコピーを維持することができるピアノードである。ピアは、エンドーサの役割を持つこともできるが、必須ではない。順序付けサービスノードまたは順序付け器は、全てのピアノードについて通信サービスを実行し、トランザクションをコミット/承認し、また、ブロックチェーンのワールドステートを修正する際に、システム内のピアノードのそれぞれへのブロードキャストなどの送達保証を実装するノードであるが、この送達保証とは、制御およびセットアップ情報を通常は含む最初のブロックチェーントランザクションの他の名称である。
いくつかの実施形態では、本方法、システム、および/または、コンピュータプログラム製品は、ブロックチェーンの状態遷移の全ての耐タンパー性記録を順番に並べたものである台帳を利用することが可能である。状態遷移は、参加当事者(例えば、クライアントノード、順序付けノード、エンドーサノード、ピアノードなど)によってサブミットされたチェーンコード呼び出し(例えば、トランザクション)によってもたらされ得る。各参加当事者(ピアノードなど)は、台帳のコピーを維持できる。トランザクションの結果、アセットキー値ペアのセットが、作成、更新、削除などの1つまたは複数のオペランドとして台帳にコミットされ得る。台帳は、順番に並べられたイミュータブルな記録をブロックに記憶するのに使用されるブロックチェーン(チェーンとも称される)を含む。また、台帳には、ブロックチェーンの現在の状態を維持する状態データベースが含まれる。
いくつかの実施形態では、本明細書に記載される方法、システム、および/または、コンピュータプログラム製品は、ハッシュでリンクされたブロックとして構造化されたトランザクションログであるチェーンを利用可能であり、各ブロックは、N個のトランザクションのシーケンスを含み、ここで、Nは、1と等しいか、または、それより大きい。ブロックヘッダは、ブロックのトランザクションのハッシュ、ならびに、前のブロックのヘッダのハッシュを含む。このようにして、台帳上の全てのトランザクションを順番に並べ、暗号によりリンクさせることができる。したがって、ハッシュリンクを壊さずに台帳データにタンパリングを行うことは不可能である。直近で加えられたブロックチェーンブロックのハッシュは、それより前に発生したチェーン上の全てのトランザクションを表し、これにより、全てのピアノードが整合し、信用された状態であることを確実にすることが可能になる。チェーンは、ピアノードファイルシステム(例えば、ローカル、取付けストレージ、クラウドなど)上に記憶することができ、これにより、ブロックチェーンワークロードのアペンド専用の性質が、効率的にサポートされる。
イミュータブル台帳の現在の状態は、チェーントランザクションログに含まれる全てのキーについての最新の値を表す。現在の状態は、チャネルに認識されている最新のキー値を表すので、それは、ワールドステートと称されることもある。チェーンコード呼び出しは、台帳の現在の状態データと突き合わせてトランザクションを実行する。これらのチェーンコード対話を効率的にするために、キーの最新値を状態データベースに記憶することができる。状態データベースは単に、チェーンのトランザクションログ内のインデクス付きビューであってもよく、したがって、それは、チェーンからいつでも再生成することが可能である。この状態データベースは、ピアノードの起動時や、トランザクションを受け入れる前に、自動的に回復(または生成)されてもよい。
本明細書で説明および図示される本件解決法のいくつかの利点には、EOVブロックチェーンモデル内でのトランザクションアボートを削減するための方法、システム、および、コンピュータプログラム製品が含まれる。それらの例示的実施形態は、相対的に同じ時刻にコミットされることとなり、同じエンドポイントを含み得るトランザクション(例えば、最も新しい情報が要されるアカウント、データベースなど)の問題を解消する。
ブロックチェーンは中央ストレージではなく、非集中型のイミュータブルでセキュアなストレージという点で、ブロックチェーンは、従来型のデータベースとは異なっており、ここで、ノードは、ストレージ内の記録への変更を共有することができることに留意されたい。ブロックチェーンに固有の、ブロックチェーンの実施を助けるいくつかの性質としては、限定されるものではないが、イミュータブル台帳、スマートコントラクト、セキュリティ、プライバシー、非集中化、コンセンサス、エンドースメント、アクセシビリティなどが挙げられ、これらは本明細書においてさらに説明される。様々な態様によれば、本明細書に記載のシステムは、ブロックチェーンに固有かつ特有のものであるイミュータブルなアカウンタビリティ、セキュリティ、プライバシー、認められた非集中性、スマートコントラクトのアベイラビリティ、エンドースメント、および、アクセシビリティにより実装される。
具体的には、ブロックチェーン台帳データは、イミュータブルであり、これにより、EOVブロックチェーンモデル内のトランザクションアボートを削減する効率的な方法が提供される。また、ブロックチェーンで暗号化を使用することで、セキュリティが提供され、信用が構築される。スマートコントラクトは、アセットの状態を管理して、ライフサイクルを完成させる。例示的なブロックチェーンは、許可制非集中型である。したがって、各エンドユーザは、アクセスするための自身の台帳コピーを有し得る。複数の組織(およびピア)が、ブロックチェーンネットワーク上にオンボードされ得る。キーとなる組織は、スマートコントラクトの実行結果、読取りセット、および、書込みセットを有効化するためのエンドースピアとして働くことができる。換言すると、ブロックチェーン固有の特徴により、EOVブロックチェーンモデル内でのトランザクションアボート削減の効率的実装、および、最も新しい/正しい情報のブロックチェーンへのコミットの確保がもたらされ、これにより、トランザクションの処理に関する処理パワーおよび時間がセーブされ、ブロックチェーンネットワーク(例えば、ピア、ノード、コンポーネントなど)への負担が削減される。よって、ブロックチェーンは、単なるデータベースではないこと、ブロックチェーンは、協働し、スマートコントラクト(トランザクションの直列化に関連し得、ブロックチェーンネットワーク自体への負担を削減可能である)の形態でサービスプロセスを実行するための、ユーザおよびオンボード/オフボードの組織/エンティティ/ユーザのネットワークを作成するための能力を備えることに留意されたい。
例示的な実施形態は、従来型データベースに対して多数の利点を提供する。例えば、ブロックチェーンを通して、これらの実施形態は、イミュータブルなアカウンタビリティ、セキュリティ、プライバシー、許容された非集中性、スマートコントラクトのアベイラビリティ、エンドースメント、および、アクセシビリティを提供し、それらは、ブロックチェーンにしかなく、それに特有のものである。ブロックチェーンにより提供されるこうした利点なしでは、トランザクションの処理/コミットに対して、不要な処理時間およびコンピューティングパワーが消費されるはずである。
また、従来型のデータベースは、全ての当事者をネットワークに導くわけではなく、信用のある協調性を作り出さず、また、トランザクションの効率的な直列化を提供しないので例示的な実施形態を実装するのには使用することができない。従来型のデータベースは、タンパー防止ストレージを提供せず、トランザクションアボートを避けるための手段を提供しない。よって、従来型のデータベースでは、本明細書で説明されるブロックチェーンネットワークを利用する提案実施形態は実装することができず、なぜならば、ブロックチェーンによりもたらされる上記のような利点なしではやはり、トランザクションの処理に対して、不要な処理時間およびコンピューティングパワーが消費されるからである。
一方、例示的な実施形態を実装するのに従来型のデータベースが使用されると、これらの例示的な実施形態は、セキュリティの欠如および低速なデータ処理などの不要な欠点を被るはずである。したがって、例示的な実施形態は、ブロックチェーントランザクション処理の技術/分野における課題への具体的な解決法を提供する。
ここで図1Aを参照すると、本開示の実施形態に係るブロックチェーンアーキテクチャ100が示されている。いくつかの実施形態では、ブロックチェーンアーキテクチャ100は、特定のブロックチェーン要素、例えば、ブロックチェーンノード102のグループを含み得る。ブロックチェーンノード102は、1つまたは複数のブロックチェーンノード、例えば、ピア104から110(これら4つのノードは例としてのみ示されている)を含み得る。これらのノードは、ブロックチェーントランザクションの追加および有効化プロセス(コンセンサス)など、いくつかの活動に参加する。ピア104から110のうちの1つまたは複数は、エンドースメントポリシに基づいてトランザクションのエンドースおよび/または推奨を行うことができ、ブロックチェーンアーキテクチャ100内の全てのブロックチェーンノード102についての順序付けサービスを提供し得る。ブロックチェーンノードは、ブロックチェーン認証を開始し、ブロックチェーン層116に記憶されたブロックチェーンイミュータブル台帳への書込みを試みることができ、その台帳のコピーも、基礎となる物理的インフラストラクチャ114上に記憶することができる。このブロックチェーン構成は、1つまたは複数のアプリケーション124を含み得、これらアプリケーションは、記憶されたプログラム/アプリケーション・コード120(例えば、チェーンコード、スマートコントラクトなど)にアクセスし、それを実行するためにアプリケーションプログラミングインタフェース(API)122にリンクされ、そのプログラム/アプリケーション・コードは、参加者が求めているカスタマイズされた構成に応じて作成することが可能であり、自体の状態を維持し、自体のアセットを制御し、外部情報を受け取ることができる。これをトランザクションとして展開し、分散型台帳へのアペンドを通じて、全てのブロックチェーンノード104から110にインストールすることができる。
ブロックチェーンベースまたはプラットフォーム112は、様々な層のブロックチェーンデータ、サービス(例えば、暗号信用サービス、仮想実行環境など)、および、新たなトランザクションを受け取って記憶し、データエントリにアクセスしようとしているオーディタにアクセスを提供するのに使用することができる基礎となる物理的コンピュータインフラストラクチャを含み得る。ブロックチェーン層116は、プログラムコードを処理し、物理的インフラストラクチャ114に従事するために必要な仮想実行環境へのアクセスを提供するインタフェースを提示し得る。暗号信用サービス118は、暗号化およびキー生成などのトランザクションを検証し、情報をプライベートに保つために使用され得る。
図1Aのブロックチェーンアーキテクチャ100は、ブロックチェーンプラットフォーム112によって提示される1つまたは複数のインタフェース、および、同ブロックチェーンプラットフォームにより提供されるサービスを介して、プログラム/アプリケーション・コード120を処理し、実行することができる。アプリケーションコード120はブロックチェーンアセットを制御し得る。例えば、アプリケーションコード120は、データを記憶および転送することが可能であり、スマートコントラクトおよび関連するチェーンコードの形態でピア104から110により実行され得、これらのスマートコントラクトおよび関連するチェーンコードは、その実行の対象となる条件または他のコード要素を伴う。非限定的な例としては、スマートコントラクトは、アセット/リソースの転送、アセット/リソースの生成などを実行するために生成され得る。スマートコントラクト自体を使用して、認証(例えば、アセット転送規則、規制、暗号化/キー生成など)、アクセス要件(例えば、データベースのもの、チェーン外のデータ記憶のもの、トランザクションに参加し得る人のものなど)、および/または、台帳の使用に関連する規則を特定することが可能である。例えば、トランザクション126(例えば、コミットの中断を避けるために書込みセットのキャッシュを使用して直列化されるべきもの)が、ブロックチェーン層116に含まれる1つまたは複数の処理エンティティ(例えば、仮想マシン)により処理され得る。結果128が、複数のリンクされた共有ドキュメント(例えば、リンクされた各共有ドキュメントは、トランザクション126がどのように処理されるか/処理されるべきかを記録する)を含み得る。いくつかの実施形態では、物理的インフラストラクチャ114は、本明細書で説明されるデータ/情報/アセット/その他のいずれかを取り出すために利用されてもよい。
スマートコントラクトは、高レベルのアプリケーションおよびプログラミング言語により作成し、次いで、ブロックチェーン内のブロックに書き込むことができる。スマートコントラクトは、ブロックチェーン(例えば、ブロックチェーンピアの分散ネットワーク)を用いて登録、記憶、および/または、複製される実行可能なコードを含み得る。トランザクションとは、スマートコントラクトに関連する条件が満たされることに応じて実行可能なスマートコントラクトコードの実行である。スマートコントラクトを実行することで、デジタルブロックチェーン台帳の状態に対して、信用された修正を起動することができる。スマートコントラクトの実行によって引き起こされるブロックチェーン台帳に対する修正は、1つまたは複数のコンセンサスプロトコルを介して、ブロックチェーンピアの分散ネットワーク全体にわたって自動的に複製され得る。
スマートコントラクトは、データをキー値ペアのフォーマットでブロックチェーンに書き込むことができる。さらに、スマートコントラクトコードは、ブロックチェーン内に記憶された値を読み取り、これらをアプリケーション動作において使用することができる。スマートコントラクトコードは、様々な論理演算の出力をブロックチェーンに書き込むことができる。このコードは、仮想マシンまたは他のコンピューティングプラットフォーム内で一時的なデータ構造を作成するために使用され得る。ブロックチェーンに書き込まれるデータは、公開することが可能であり、かつ/または、暗号化し、プライベートなものとして維持することが可能である。スマートコントラクトによって使用/生成される一時的なデータは、供給される実行環境によってメモリ内に保持され、次いで、ブロックチェーンに必要なデータが特定されると削除される。
チェーンコードは、スマートコントラクトのコード解釈を、追加の特徴とともに含み得る。本明細書で説明されるように、チェーンコードは、コンピューティングネットワーク上に展開されるプログラムコードであり得、そのコンピューティングネットワークにおいて、チェーンコードは、チェーンバリデータにより、コンセンサスプロセス中に一斉に実行および有効化される。チェーンコードは、ハッシュを受け取り、予め記憶された特徴抽出器の使用により作成されるデータテンプレートに関連するハッシュをブロックチェーンから取り出す。ハッシュ識別子のハッシュ、および、記憶された識別子テンプレートデータから作成されるハッシュが一致すると、チェーンコードは、要求されるサービスに認証キーを送る。チェーンコードは、暗号詳細に関連するブロックチェーンデータに書込みを行うことができる(例えば、これにより、トランザクション126、または、トランザクション126のうちの1つのトランザクションがコミットされるなどする)。
図1Bは、例示的な実施形態に係る、ブロックチェーンのノード間のブロックチェーントランザクションフロー150の一例を示す。図1Bを参照すると、このトランザクションフローは、アプリケーションクライアントノード160によりエンドースピアノード181に送られるトランザクションプロポーザル191を含み得る。エンドースピア181は、クライアント署名を検証し、チェーンコード関数を実行してトランザクションを開始することができる。出力は、チェーンコード結果、チェーンコード内で読み取られたキー/値バージョンのセット(読取りセット)、および、チェーンコードに書き込まれたキー/値のセット(書込みセット)を含み得る。許可されると、プロポーザル応答192が、エンドースメント署名とともにクライアント160に返送される。クライアント160は、エンドースメントを集めてトランザクションペイロード193とし、それを順序付けサービスノード184にブロードキャストする。次いで、順序付けサービスノード184は、順序付けされたトランザクションをブロックとして、チャネル上の全てのピア181から183に送達する。ブロックチェーンに付託される前に、各ピア181から183が、トランザクションを有効化してもよい。例えば、ピアは、エンドースメントポリシをチェックして、正しい割当ての指定されたピアにより、結果に署名がなされ、かつ、トランザクションペイロード193と突き合わせて署名が認証されることを確実にすることができる。
再度図1Bを参照すると、クライアントノード160は、この例ではエンドーサであるピアノード181への要求を構築し、それを送ることにより、トランザクション191を開始する。クライアント160は、サポートされたソフトウェア開発キット(SDK)を活用するアプリケーションを含み得、このキットは、利用可能なAPIを利用して、トランザクションプロポーザル191を生成する。このプロポーザルは、台帳からデータを読み取ること、および/または、そこにデータを書き込むことが可能になるようにチェーンコード関数を呼び出すための要求である。SDKは、トランザクションプロポーザル191のパッケージを、適切に構成されたフォーマット(例えば、リモートプロシージャコール(RPC)上のプロトコルバッファ)に縮小し、クライアントの暗号クレデンシャルを取り入れて、トランザクションプロポーザル191についての特有な署名を作成することができる。
これに応答して、エンドースピアノード181は、(a)トランザクションプロポーザル191が適切に形成されていること、(b)過去にトランザクションがサブミットされていないこと(リプレイアタック保護)、(c)署名が有効であること、および、(d)サブミッタ(この例ではクライアント160)が、そのチャネル上で提案された動作を実行する権限を適当に付与されていることを検証することができる。エンドースピアノード181は、呼び出されたチェーンコード関数への引数としてトランザクションプロポーザル191の入力を受け取り得る。次いで、チェーンコードが、現在の状態データベースと突き合わせて実行されて、応答値、読取りセット、および、書込みセットを含めたトランザクション結果が作成される。しかしながら、この時点では台帳は更新されない。いくつかの実施形態では、値のセットが、エンドースピアノード181の署名とともに、クライアント160のSDKにプロポーザル応答192として戻され、このクライアントは、アプリケーションが消費するペイロードをパースする。
これに応答して、クライアント160のアプリケーションが、エンドースピアの署名を検査/検証し、プロポーザル応答を比較して、プロポーザル応答が同じであるかどうかを判定する。チェーンコードが台帳の照会のみを行う場合は、アプリケーションは、照会応答を検査し、一般には、順序付けサービスノード184にトランザクションをサブミットしない。クライアントアプリケーションが、順序付けサービスノード184にトランザクションをサブミットして台帳を更新することを意図する場合、アプリケーションは、サブミットする前に、指定されたエンドースメントポリシが満たされているかどうかを判定する。ここで、クライアントは、トランザクションに対する複数の当事者のうちの1つのみを含み得る。このケースでは、各クライアントが、自体のエンドースノードを有し得、各エンドースノードは、トランザクションをエンドースする必要がある。このアーキテクチャでは、アプリケーションが、応答を検査しないことを選択した場合でも、または、エンドースされないトランザクションを転送する場合でも、エンドースメントポリシは、ピアにより実施され、コミット有効化フェーズにて支持される。
検査が成功した後、トランザクションペイロードステップ193で、クライアント160は、エンドースメントを集めてトランザクションとし、トランザクションメッセージ内のトランザクションプロポーザル191および応答を順序付けノード184にブロードキャストする。トランザクションは、読取り/書込みセット、エンドースピアの署名、および、チャネルIDを含む場合がある(例えば、特定の(チェーン外)データ記憶を利用する場合など)。順序付けノード184は、自体の動作を実行するために、トランザクションの内容全体を検査する必要はなく、そうする代わりに、順序付けノード184は単に、ネットワーク内の全てのチャネルからトランザクションを受け取り、これらをチャネルごとに順序付けし、チャネルごとにトランザクションのブロックを作成することもできる。
トランザクションのブロックは、順序付けノード184からチャネル上の全てのピアノード181から183に送達される。ブロック内のトランザクション194が有効化されて、任意のエンドースメントポリシが満たされることが確実になり、かつ、読取りセットがトランザクションの実行により生成されて以降は、読取りセット変数について台帳状態に変更がないことが確実になる。ブロック内のトランザクションは、有効であるか、または、無効であるかがタグ付けされる。さらに、ステップ195で、各ピアノード181から183は、ブロックをチャネルのチェーンにアペンドし、各有効トランザクションについて、書込みセットが、現在の状態データベースにコミットされる。イベントが発されて、トランザクション(呼び出し)がイミュータブルにチェーンへとアペンドされたことがクライアントアプリケーションに通知され、かつ、トランザクションが有効化されたか、または、無効化されたかが通知される。
ここで図2Aを参照すると、本開示の実施形態に係る、実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減するための分散システム200の一例が示されている。図示のように、分散システム200は、クライアント202、順序付けサービス204、ピア208、ゴシッププロトコル212を有するリードピア210、キャッシュ更新普及器214、キャッシュ更新バリデータ216、第1の状態キャッシュ218、第1のスマートコントラクト220、第2の状態キャッシュ222、第2のスマートコントラクト224、状態データベース226、履歴データベース228、ブロック記憶230、エンドーサ232、ブロックキュー234、エンドースメントポリシバリデータ236、および、コミッタ240を備える。
いくつかの実施形態では、リードピア210が、ゴシッププロトコル212を介してゴシップ/情報の通信および受取りを行う。リードピアは、クライアント202、順序付けサービス204、ピア208、エンドーサ232、キャッシュ更新普及器214、および、リストされた他のもののうちのいずれかと通信し得る。いくつかの実施形態では、リストされたコンポーネントとの通信は、リモートプロシージャコール(例えば、gRPC)を介したものであり得る。
いくつかの実施形態では、分散システム200は、ブロックチェーン(例えば、ブロック記憶230)に加えられるべき1つまたは複数のトランザクションが分散システム200に送られる際に使用されるピアプロセスを示す。本明細書で説明されるように、リードピア210は、キャッシュ更新普及器214と最初に通信し、このキャッシュ更新普及器が、第1のスマートコントラクト220または第2のスマートコントラクト224の他のエンドーサ(またはエンドーサ232)にキャッシュ更新を送る。下記でより十分に議論されるように、キャッシュ更新は、1つまたは複数のトランザクションの書込みセットから特定することができ、または、こうした書込みセットであってもよく、よって、それらが複数のトランザクションに関するものである際に、アボートの削減が可能になる。いくつかの実施形態では、キャッシュ更新バリデータ216が、分散システム200中で通信を行い、ピア208からキャッシュ更新を収集し、全てのエンドーサ(例えば、エンドーサ232を含む)が、一致している1つまたは複数の更新を付与しているかどうかを確認する。
いくつかの実施形態では、キャッシュ更新バリデータ216およびキャッシュ更新普及器214が、自体のキャッシュ更新を、第1の状態キャッシュ218および/または第2の状態キャッシュ222のいずれか、または、両方から受け取る。いずれの例でも、第1の状態キャッシュ218および第2の状態キャッシュ222の両方が、自体それぞれのスマートコントラクト220、224により制御され、スマートコントラクト220、224により権限を付与されたピア208のうちのいずれかに位置する。第1の状態キャッシュ218および第2の状態キャッシュ222は、それぞれ第1および第2のトランザクション(図示せず)にさらに関連させられてもよく、第1および第2のトランザクションの書込みセットに関する情報の非コミットのキャッシュであってもよい。
いくつかの実施形態では、任意のトランザクションアボートを避けるために、リードピア210により規定され、かつ/または、エンドーサ232により承認された逐次/順次の順序で、1つまたは複数のトランザクションが、リードピア210により/そのリードピアを通して、順序付けサービス204にサブミットされる。いくつかの実施形態では、順序付けサービス204での再順序付けを避けるために、リードピア210は、全てのトランザクションを単一のトランザクションでまとめて処理することが可能である。
いくつかの実施形態では、ピアプロセスは、通常動作で進行する。例えば、エンドーサ232は、ユーザによりリードピア210(またはピア208)に直接的にサブミットされるトランザクションをシミュレートする。いくつかの実施形態では、次いで、ブロックキュー234のブロック235が、図示されているように、分散システム200の残りのコンポーネントにより処理される。いくつかの実施形態では、エンドーサ232が、決定論的なトランザクションをブロックキュー234に提供する。実施形態に関係なく、次いで、エンドースメントポリシバリデータ236が、正しいエンドーサ232が使用されたこと、および/または、正しいエンドースメント・プロトコル/プロシージャが使用されたことを確認する。次いで、直列化可能性バリデータ238が、読取りバージョンのうちのいずれかが、コミット済み状態において変更されたかどうかをチェックする。変更がない場合、トランザクションは有効であるとマークされる。そうでなければ、トランザクションは無効であるとマークされる。つまり、トランザクションは、第1の状態キャッシュ218および第2の状態キャッシュ222内で何が特定されるかに基づいて順序付けされ、こうすることで、1つのトランザクションが他からの情報を使用する場合、そのトランザクションは、他のトランザクションが最初に分散システム200により受け取られていればアボートされない。
いくつかの実施形態では、コミッタ240が、ブロックチェーン状態(例えば、226、228、および、230)を更新し、また、キャッシュ218、222からエントリを取り除く。キャッシュ218、222から取り除かれるエントリは、コミットされたトランザクションの書込みセット内に存在するものである。いくつかの実施形態では、状態データベース226が、履歴データベース228にセーブされ、次いで、ブロック記憶230に記憶される。本開示で提示され、図2Aに示される新規なコンポーネントは、キャッシュ更新普及器214、キャッシュ更新バリデータ216、および、状態キャッシュ218、222であることに留意されたい。さらに、ゴシッププロトコル212および直列化可能性バリデータ238が、新規に修正されている。こうした新規のコンポーネントおよび修正では、ファブリック内の既存のバージョン管理への変更は存在しない。
フローで示されてはいるが、分散システム200内での情報普及は、任意の方式で実行することができ、例えば、1つまたは複数のトランザクションの情報を、最初に解析することができ、キャッシュ更新普及器214および/またはキャッシュ更新バリデータ216との通信/対話が行われる前に、それらの情報をキャッシュ218、222のうちのいずれかに送ることも可能であることをさらに留意されたい。
ここで図2Bを参照すると、本開示の実施形態に係る、トランザクションアボートを削減するためのハイパーレジャーファブリックシステム250の一例が示されている。図示のように、ピア252Aが、組織258Aにより制御され、スマートコントラクト254A、254Bが、どのトランザクションがピア252Aにより対処されるかを指示する。こうした実施形態では、各スマートコントラクト254A、254Bは、ブロックチェーンへのコミットの前にトランザクションの書込みセット/情報がキャッシュ256Aまたは256Bのどちらに保持されるかをそれぞれ制御する。組織258Bにより制御されるピア252B、および、組織258Cにより制御されるピア252Cがさらに示されている。これらその他のピア252Bおよび252Cのそれぞれは、同じスマートコントラクト254A、254Bにより制御されてもよい。添付の図面内では、同様の部分を指定するために同様の参照番号が使用されていることを留意されたい。
いくつかの実施形態では、スマートコントラクト254Aは、「AND(orgA、orgB、orgC)」エンドースメントポリシを有し、スマートコントラクト254Bは、「AND(orgA、orgC)」エンドースメントポリシ」を有する。こうした実施形態では、エンドースメントポリシにより、スマートコントラクト254Aおよび/または254Bのホストとして働く全てのピア252Aから252Cが要求を実行することが指示され、それゆえに、(非コミット状態の)キャッシュ256A、256Bの更新を、すなわち、シミュレートされる要求の書込みセットを普及させる必要がない。
いくつかの実施形態では、ハイパーレジャーファブリックシステム250が、第1のトランザクションプロポーザルおよび第2のトランザクションプロポーザルを同時に、または、実質的に同時に受け取ることができ、各プロポーザルは、スマートコントラクト254Bに関連し得る。図示のように、スマートコントラクト254Bがピア252Aおよび252Cのみを含む際には、プロポーザルは、全てのピア252Aから252Cには行き渡らないこともある。従来では、ピア252Aは、プロポーザルをシミュレートした後に、スマートコントラクト254Bの他のエンドーサへと、例えば、ピア252Cへと書込みセットを普及させる必要があり、エンドースメントポリシに従って、ピア252Aが署名された書込みセットをピア252Cに送ると、それは、受け取られた書込みセットを信用することとなる(署名がエンドースメントポリシを満足しているため)。
しかし、本明細書で開示される実施形態では、第1のトランザクションプロポーザルおよび第2のトランザクションプロポーザルが同じキーを修正するか、または、キー/値が不整合になる場合がある。こうした例では、キャッシュ更新の普及が(例えば、図2Aのキャッシュ更新普及器214によるものなど)が行われ、第1のトランザクションプロポーザルおよび第2のトランザクションプロポーザルが同じキーを修正した場合、ピア252Aおよび252Bにおける非コミットの状態キャッシュ256A(トランザクションそれぞれがスマートコントラクト254Aに関係するため)が相違するはずである。ピア252Aにおけるキャッシュ256Aは、ピア252Bの更新を有するはずであり、ピア252Bにおけるキャッシュ256Aは、ピア252Aの更新を有するはずである。もっとも、各ピア252A、252Bにおける状態キャッシュのこうした新規な使用のおかげで、コミットされた状態のみと突き合わせた最適同時並列制御(OCC)有効化が常に実行されるので、直列化可能な分離特性は影響を受けないことを留意されたい。その結果は、トランザクション無効化(トランザクションのアボートではない)になるのみである。キャッシュの相違は一時的であり、それは、クライアントが競合するトランザクションを同時にサブミットすることを停止すると同期することとなる。
いくつかの実施形態では、効率のために、競合するトランザクションは、クライアントにより次々にサブミットされなければならない。スマートコントラクト254A、254B(例えば、図2Aの220/224)毎のリーダピア(例えば、図2Aのリードピア210)が、そのスマートコントラクト254Aまたは254Bについて各キャッシュ更新のシーケンス番号を発行するために提案される。このシーケンスを使用することで、ハイパーレジャーファブリックシステム250は、更新を順序付けし、全てのピア252Aから252C(または図2Aの208)においてキャッシュ256A/256Bを常に整合させて維持することができる。いくつかの実施形態では、スマートコントラクト254Aから254Bのエンドーサ(例えば、ピア252Aから252C)の間でコンセンサスが実行されて、キャッシュ更新が順序付けされる。
いくつかの実施形態では、順序付けの前に、エンドースメントポリシがファブリックピア(例えば、252Aから252C)のセットを特定し、そのセットの署名は、所与のチェーンコードネームスペースへの任意の変更を許可するのに必要かつ十分なものである。この点で、ピア252Aから252C(または、それらの任意の組み合わせ)のセットは、カストディアンまたはガーディアンと総称される論理エンティティを形成する。さらに、これらのピア252Aから252C(または、それらの任意の組み合わせ)の間でプライベートデータの集合が存在すると、それらは、自体がガードするネームスペース内の状態値を認識している、ネットワーク内の唯一のノードにもなる。
この実施形態では、カストディアンは、カストディアンがガードしているネームスペースを対象とする全てのトランザクションの調整を担う。具体的には、カストディアンは、トランザクションを収集し、従属グラフを解析し、必要に応じてトランザクション/プロポーザルを再順序付けし、順序付けサービスにトランザクションをサブミットする。いくつかの実施形態では、順序付けサービスでの再順序付けを避けるために、カストディアンは、全てのトランザクションを単一のトランザクションでまとめて処理することが可能である。この実施形態では、コミットフェーズは影響されないので、それはフルスピードで進行可能であることを留意されたい。この実施形態は、カストディアンを形成するファブリックピア252Aから252C(または、それらの任意の組み合わせ)の間での調整を要し、順序付けサービスへのトランザクションのサブミットを担うリーダの選出を要することをさらに留意されたい。
一例として、銀行顧客が2つの(または、それより多くの)異なる送金(何らかのオートメーションソフトウェアを使用したもの)を行うことを望んでいるという従来式銀行業務ユースケースを考慮されたい。各トランザクションが並行してサブミットされると、1つのトランザクションのみが受け入れられる。オートメーションソフトウェアは、各トランザクションを、前のトランザクションがコミットされたことを検証した後に直列的にサブミットする必要があり、これにより、総合的スループットが著しく低減される。本明細書で説明される提案解決法では、トランザクションの書込みセットをキャッシュに入れ、こうすることで、単に受信されたか、または後続のトランザクションの後に順序付けられた先行のトランザクションによって使用され得る情報を、それら書込みセットが変更することができないようにすることで、直列的検証の必要性が軽減される。
この例を推し進める。銀行業務システムにより受け取られる1つ目のトランザクションが実際にはトランザクション2(T2)であり、T2は、読取りセット[k1,1](ここで、読取りセットはキーおよび読取りバージョンを含む)、および、書込みセット[k1,v3](ここで、書込みセットはキーおよび新たな値を含む)を有するものとする。さらに、銀行業務システムは、[k1,v1,1]を伴う状態データベースを有する。提案解決策では、T2のシミュレーションが行われ、そのシミュレーション中、T2の実行フェーズの終わりで、書込みセット[k1,v3]、および、T2に関連するインジケータが、非コミットの状態キャッシュ(例えば、[k1,v3|T2])に記憶される。
引き続き、読取りセット[k1,T2]および[k1,v2]の書込みセットを有する次のトランザクションT1(実際には1つ目のトランザクション)を、T2の実行フェーズの後にシミュレートすることができ、T1の実行フェーズ中に、要求されたキー(k1)がT1内に存在するので、T1が、実行前の非コミットの状態キャッシュから読み取られる。いくつかの実施形態では、T1の実行フェーズの後の時点で、非コミットの状態キャッシュは、[k1,v2|T1](例えば、インジケータを伴うT1の書込みセット)である。
次いで、順序付けフェーズ中では、T1の読取りセットがT2を含むので、T2がT1の前に処理される必要があると特定される。よって、トランザクションT1が自体の読取りセット内にバージョンT2を有するので、トランザクションT2からT1へのエッジが加えられ、次いで、T1の後に処理されるように順序付けされる。トランザクションの順序付けを実行するために、従属グラフに対してトポロジカルソートアルゴリズムを実行可能である。したがって、有効化フェーズ中、トランザクションT2がT1の前にコミットされ、T1がT2により書き込まれ、陳腐化状態ではないバージョンを読み取るので、T1またはT2のアボートが避けられる。いくつかの実施形態では、T1および/またはT2の有効化の後に、トランザクションT1および/またはT2の正しいコミットを反映するように状態データベースが更新され、例えば、状態データベースが、[k1,v1,1]から[k1,v3,2](例えば、T2に由来する正しいバージョンを伴う正しいキー)に遷移する。同時に、非コミットのキャッシュに存在するこれらのトランザクションに関連するエントリは、状態データベース自体の中で入手可能になっているので、それらも取り除かれる。
従来式のEOVに対する先で提示された新規手法の違いに再度焦点を当てる。T1の有効化中のみ、T2が読取りセット[k1,T2]を有する読取りバージョンT1であることがバリデータにより把握される。よって、T2がまだコミットされていない場合は、T1はアボートされ、または、T2がアボートされた場合は、T1はアボートされ、または、T2がコミットされ、次の条件が満たされた場合は、T1はコミットされ、そうでない場合は、T1はアボートされる。つまり、データベース内の現在のコミットされたバージョンのk1が、T2によるコミットされたキーと同じであり、コミットされたバージョンのk1が、読取りセット毎に同じである場合のみ、T1もコミットされる。
ここで図2Cを参照すると、本開示の実施形態に係る改善された実行-順序付け-有効化(EOV)手法270Bの一例が示されている。図示のように、ナイーブEOV手法270Aでは、E-O-V274Aが完了した後のみトランザクション272Aが処理され、次いで、E-O-V274Bが完了された後のみトランザクション272Bが処理され、最後に、E-O-V274Bが完了された後のみトランザクション272Cが処理される。よって、ナイーブEOV手法270Aでは、トランザクション272Aから272Cの処理についての総合的スループットが著しく増し、同様に、システム(例えば、200、250など)がトランザクション272Aから272Cを処理するのにかかるコンピューティングパワーおよび負担が著しく増す。
このことは改善(EOV)手法270Bとは反対であり、この手法は、E-O-V274Aから274Cにおける各実行フェーズの終わりに、書込みセットをキャッシュし、トランザクションバランス(バランシング)276を提供することができ、このトランザクションバランス(バランシング)は、トランザクションが決定論的であるかどうか、他のトランザクション272Aから272Cのうちのいずれかより前に処理されるべきかどうかを特定する。こうした実施形態では、開示の改善(EOV)手法270Bは、トランザクション272Aから272Cの処理について、パフォーマンス伸長の改善/総合的スループットの低減を実質的に行う。
ここで図3を参照すると、本開示の実施形態に係る、実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減する例示的な方法300のフローチャートが示されている。いくつかの実施形態では、方法300は、ブロックチェーン・ネットワーク/システム(図2Aの分散システム200および/または図2Bのハイパーレジャーファブリックシステム250など)内のプロセッサ、ノード、および/または、ピアノードにより実行され得る。いくつかの実施形態では、方法300は動作302から始まり、ここでは、プロセッサが、トランザクションの書込みセットをキャッシュに記憶する。そのキャッシュは、状態情報を含み得、また、そのキャッシュは、ブロックチェーンに非コミットであり得る。
いくつかの実施形態では、方法300は動作304に進み、ここでは、プロセッサが、次のトランザクション(実際には、厳密に言うと2つ目であるトランザクションの後に受け取られる1つ目のトランザクションである場合もある)を特定する。いくつかの実施形態では、上記次のトランザクションは、キャッシュ内に要求されたキーが存在する場合にキャッシュからの読み取りを行い得る。
いくつかの実施形態では、方法300は動作306に進み、ここでは、プロセッサは、キャッシュから何が読み取られるかに基づいて、上記トランザクションおよび上記次のトランザクションを順序付けする。上記トランザクションおよび上記次のトランザクションを順序付けすることで、上記次のトランザクションのアボートを避けることができる。いくつかの実施形態では、方法300は終了してもよい。
下記で議論されるいくつかの実施形態では、簡潔にするために示されていない方法300の1つまたは複数の動作がある。したがって、いくつかの実施形態では、書込みセットをキャッシュに記憶することで、状態の記憶に使用されるバージョン番号、ならびに、上記トランザクションに関連するアイデンティフィケーションの両方を、読取りセットが含むことを可能にすることができる。いくつかの実施形態では、アイデンティフィケーションは、非コミットのキャッシュ内にある状態(例えば、キー、値、バージョン番号、イテレーションなど)を示す。
いくつかの実施形態では、上記トランザクションおよび上記次のトランザクションを順序付けすることは、上記次のトランザクションを有効化することを含み得る。いくつかの実施形態では、上記次のトランザクションを有効化することは、プロセッサが、状態の記憶に使用される第1のバージョン番号を上記トランザクションに関連するものであると特定することを含み得る。プロセッサは、状態の記憶に使用される第2のバージョン番号を上記次のトランザクションに関連するものであると特定することができ、プロセッサは、第1のバージョン番号または第2のバージョン番号のどちらが従属したバージョン番号であるかを判定することができる。
いくつかの実施形態では、プロセッサは、第1のバージョン番号が第2のバージョン番号に従属していると特定し得る。プロセッサは、上記トランザクションの前に、上記次のトランザクションをコミットさせ得る。いくつかの実施形態では、プロセッサは、第2のバージョン番号が第1のバージョン番号に従属していると特定し得る。プロセッサは、上記次のトランザクションの前に、上記トランザクションをコミットさせ得る。
本開示はクラウドコンピューティングについての詳細な説明を含むが、本明細書で記載される教示内容の実装は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本開示の実施形態は、現在知られている、または、今後開発される他の任意のタイプのコンピューティング環境と併せて実装することが可能である。
クラウドコンピューティングは、管理の労力またはサービスのプロバイダとの対話を最小限に抑えながら迅速にプロビジョニングおよびリリースできる構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、および、サービス)の共有プールに対する便利なオンデマンドネットワークアクセスを可能にするための、サービス提供モデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および、少なくとも4つの展開モデルを含み得る。
以下が特性である。
オンデマンドセルフサービス:クラウドコンシューマは、サービスのプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワークストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
幅広いネットワークアクセス:ネットワークを介して能力を利用可能であり、異種混交のシンクライアントプラットフォームまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、および、PDA(登録商標))による使用を促進する標準的なメカニズムを通して能力がアクセスされる。
リソースプーリング:プロバイダのコンピューティングリソースが、マルチテナントモデルを使用して複数のコンシューマにサービスを提供するようにプールされ、様々な物理および仮想リソースの、需要に従った動的な割当ておよび再割当てが行われる。コンシューマは、一般には、提供されるリソースの厳密な部分を制御できない、または、その知識がないが、より高い抽象レベル(例えば、国、州、または、データセンタ)では部分を指定可能である場合もある点で部分独立性がある。
迅速な拡張性:能力を迅速にかつ伸縮自在に、場合によっては自動的にプロビジョニングし、即座にスケールアウトすることも、迅速にリリースして即座にスケールインすることもできる。コンシューマにとっては、多くの場合、プロビジョニングに利用可能な能力が無制限にあるように感じられ、また、いつでもどんな量でも購入可能である。
計測されるサービス:クラウドシステムが、サービスのタイプ(例えば、ストレージ、処理、帯域幅、および、アクティブなユーザアカウント)に適したある程度の抽象化レベルで計量能力を活用することにより、リソースの使用を自動的に制御し最適化する。リソース使用が、モニタ、制御、および、レポートされ、こうすることで、利用されるサービスのプロバイダおよびコンシューマの両方に透明性を提供することができる。
以下がサービスモデルである。
サービスとしてのソフトウェア(Software as a Service:SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で実行しているプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインタフェースを通して様々なクライアントデバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、または、個々のアプリケーション能力さえも含む基礎となるクラウドインフラストラクチャを管理することも、制御することもない。ただし、限定されたユーザ固有のアプリケーション構成設定は例外となる場合がある。
サービスとしてのプラットフォーム(Platform as a Service:PaaS):コンシューマに提供される能力は、プロバイダによりサポートされるプログラミング言語およびツールを使用して作成される、コンシューマが作成または取得したアプリケーションをクラウドインフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、または、ストレージを含む基礎となるクラウドインフラストラクチャを管理することも、制御することもないが、展開されたアプリケーション、また場合によっては、アプリケーションホスティング環境構成を制御することができる。
サービスとしてのインフラストラクチャ(Infrastructure as a Service:IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および、他の基本的なコンピューティングリソースをプロビジョニングすることであり、ここで、コンシューマは、オペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアを展開して実行することができる。コンシューマは、基礎となるクラウドインフラストラクチャを管理することも、制御することもないが、オペレーティングシステム、ストレージ、展開されたアプリケーションを制御することができ、場合によっては、選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)を限定された形で制御することができる。
展開モデルは以下の通りである。
プライベートクラウド:クラウドインフラストラクチャが、一組織のためだけに運用される。それは、組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
コミュニティクラウド:クラウドインフラストラクチャが、いくつかの組織で共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシ、および、法令順守に関わる考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者が管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリッククラウド:クラウドインフラストラクチャが、一般大衆または大規模業界団体により利用可能になり、クラウドサービスを販売する組織により所有される。
ハイブリッドクラウド:クラウドインフラストラクチャが、2つまたはそれより多くのクラウド(プライベート、コミュニティ、または、パブリック)を組み合わせたものであり、これらクラウドは、独特なエンティティであり続けるが、データおよびアプリケーションの移植性(例えば、クラウド間で負荷分散するためのクラウドバースト)を可能にする標準化技術または独自技術によって結びつけられている。
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、および、セマンティック相互運用性を重視したサービス指向型である。クラウドコンピューティングの中核には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
図4Aには、クラウドコンピューティング環境410が示されている。図示のように、クラウドコンピューティング環境410は、クラウドコンシューマにより使用されるローカルコンピューティングデバイス(例えば、パーソナルデジタルアシスタント(PDA)またはセルラ電話機400A、デスクトップコンピュータ400B、ラップトップコンピュータ400C、および/または、自動車コンピュータシステム400Nなど)が通信をすることができる1つまたは複数のクラウドコンピューティングノード400を含む。ノード400は、互いに通信し得る。それらは、上記で説明されたようなプライベートクラウド、コミュニティクラウド、パブリッククラウドまたはハイブリッドクラウド、または、それらの組み合わせなどの1つまたは複数のネットワーク内で物理的にまたは仮想的にグループ分け(図示せず)することができる。
これにより、クラウドコンピューティング環境410は、サービスとしてインフラストラクチャ、プラットフォーム、および/または、ソフトウェアを提供することが可能になり、そのサービスのために、クラウドコンシューマがローカルのコンピューティングデバイス上にリソースを維持する必要はない。図4Aに示されたコンピューティングデバイス400Aから400Nのタイプは例示のみを意図しており、コンピューティングノード400およびクラウドコンピューティング環境410は、任意のタイプのネットワークおよび/またはネットワークアドレス指定可能な接続を介して(例えば、ウェブブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信できることを理解されたい。
図4Bには、クラウドコンピューティング環境410(図4A)によって提供される機能抽象化層のセットが示されている。図4Bに示されているコンポーネント、層、および、機能は例示のみを意図したものであり、本開示の実施形態がそれらに限定されないことを予め理解されたい。下記で示されているように、以下の層および対応する機能が提供される。
ハードウェアおよびソフトウェア層415は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム402;RISC(縮小命令セットコンピュータ)アーキテクチャベースのサーバ404;サーバ406;ブレードサーバ408;記憶デバイス411;および、ネットワークおよびネットワーキングコンポーネント412が含まれる。いくつかの実施形態では、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア414およびデータベースソフトウェア416を含む。
仮想化層420は、抽象化層を提供する。抽象化層から、以下の仮想エンティティの例が提供され得る:仮想サーバ422;仮想ストレージ424;仮想プライベートネットワークを含む仮想ネットワーク426;仮想アプリケーションおよびオペレーティングシステム428;および、仮想クライアント430。
1つの例では、管理層440は、以下に説明する機能を提供し得る。リソースプロビジョニング442では、クラウドコンピューティング環境内でタスクを実行するのに利用されるコンピューティングリソースおよび他のリソースの動的な調達を行う。計測および価格設定444では、クラウドコンピューティング環境内でリソースが利用されると費用の追跡を行い、これらのリソースの消費に対して請求書作成または請求書送付を行う。1つの例では、これらのリソースは、アプリケーションソフトウェアライセンスを含み得る。セキュリティでは、クラウドコンシューマおよびタスクについての身元確認、ならびに、データおよび他のリソースについての保護が行われる。ユーザポータル446では、コンシューマおよびシステムアドミニストレータにクラウドコンピューティング環境へのアクセスが与えられる。サービスレベル管理448では、必要なサービスレベルが満たされるように、クラウドコンピューティングリソースの割当ておよび管理を行う。サービス水準合意(SLA)立案および履行450では、SLAに従って将来的に必要になることが予想されるクラウドコンピューティングリソースについての事前調整、および、その調達を行う。
ワークロード層460では、複数の機能例が提供される。それらの機能ためにクラウドコンピューティング環境を利用することができる。この層から提供することができるワークロードおよび機能の例には、マッピングおよびナビゲーション462;ソフトウェア開発およびライフサイクル管理464;仮想教室教育提供466;データ解析処理468;トランザクション処理470;および、トランザクションアボート削減472が含まれる。
図5は、本開示の実施形態に係る例示的なコンピュータシステム501の高レベルブロック図を示しており、このコンピュータシステムは、本明細書で説明される方法、ツール、および、モジュール、および、関係する任意の機能のうちの1つまたは複数を(例えば、コンピュータの1つまたは複数のプロセッサ回路またはコンピュータプロセッサを使用して)実装するのに使用され得る。いくつかの実施形態では、コンピュータシステム501の主要コンポーネントは、1つまたは複数のCPU502、メモリサブシステム504、端末インタフェース512、記憶インタフェース516、I/O(入出力)デバイスインタフェース514、および、ネットワークインタフェース518を備えてもよく、これらは全て、メモリバス503、I/Oバス508、および、I/Oバスインタフェースユニット510を介して、コンポーネント間通信のために直接的にまたは間接的に通信可能に結合することができる。
コンピュータシステム501は、1つまたは複数の汎用プログラマブル中央処理ユニット(CPU)502A、502B、502C、および、502D(本明細書では、CPU502と総称される)を含み得る。いくつかの実施形態では、コンピュータシステム501は、相対的に大きなシステムに特有の複数のプロセッサを含み得るが、他の実施形態では、そうである代わりに、コンピュータシステム501は単一のCPUシステムであり得る。各CPU502は、メモリサブシステム504に記憶された命令を実行することができ、1つまたは複数のレベルのオンボードキャッシュを含んでもよい。
システムメモリ504は、ランダムアクセスメモリ(RAM)522またはキャッシュメモリ524などの揮発性メモリの形態のコンピュータシステム可読媒体を含み得る。コンピュータシステム501は、他の取り外し可能/取り外し不能な揮発性/不揮発性のコンピュータシステム記憶媒体をさらに含むことができる。例としてのみ言うと、「ハードドライブ」など、取り外し不能な不揮発性の磁気媒体からの読取り、および、それへの書込みのための記憶システム526を設けることができる。図示していないが、取り外し可能な不揮発性の磁気ディスク(例えば、「フロッピーディスク」)からの読取り、および、それへの書込みのための磁気ディスクドライブ、または、CD-ROM、DVD-ROM、または、他の光学媒体など、取り外し可能な不揮発性の光学ディスクからの読取り、または、それへの書込みのための光学ディスクドライブを設けることができる。さらに、メモリ504は、フラッシュメモリ、例えば、フラッシュメモリスティックドライブまたはフラッシュドライブを含むことができる。メモリデバイスは、1つまたは複数のデータ媒体インタフェースによってメモリバス503に接続することができる。メモリ504は、様々な実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つのプログラムモジュール)を含む少なくとも1つのプログラム製品を備えてよい。
プログラムモジュール530の少なくとも1つのセットをそれぞれが有する1つまたは複数のプログラム/ユーティリティ528が、メモリ504に記憶され得る。プログラム/ユーティリティ528は、ハイパーバイザ(仮想マシンモニタとも称される)、1つまたは複数のオペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュール、および、プログラムデータを含み得る。これらのオペレーティングシステム、1つまたは複数のアプリケーションプログラム、他のプログラムモジュール、および、プログラムデータのそれぞれ、または、これらの何らかの組み合わせは、ネットワーキング環境の実装形態を含み得る。プログラム528および/またはプログラムモジュール530は、一般に、様々な実施形態の機能または方法体系を実行する。
メモリバス503は、CPU502、メモリサブシステム504、および、I/Oバスインタフェース510の間での直接的な通信経路を提供する単一のバス構造として図5で示されているが、いくつかの実施形態では、メモリバス503は、複数の異なるバスまたは通信経路を含んでもよく、それらは、階層的な星型または網状構成内のポイントツーポイントリンク、複数の階層バス、並列および冗長パス、または、他の任意の適当なタイプの構成などの様々な形態のうちの任意の形態に配置され得る。さらに、I/Oバスインタフェース510およびI/Oバス508は、それぞれ単一のユニットとして示されているが、いくつかの実施形態では、コンピュータシステム501は、複数のI/Oバスインタフェースユニット510、複数のI/Oバス508、または、それらの両方を含んでもよい。さらに、I/Oバス508を、様々なI/Oデバイスまで延びる様々な通信経路から分離する複数のI/Oインタフェースユニットが示されているが、他の実施形態では、I/Oデバイスのうちのいくつか、または、全てが、1つまたは複数のシステムI/Oバスに直接的に接続されてもよい。
いくつかの実施形態では、コンピュータシステム501は、マルチユーザメインフレームコンピュータシステム、シングルユーザシステム、または、直接的なユーザインタフェースをほとんど有さない、または、全く有さないが、他のコンピュータシステム(クライアント)からの要求を受け取るサーバコンピュータまたはそれに類似するデバイスであり得る。さらに、いくつかの実施形態では、コンピュータシステム501は、デスクトップコンピュータ、ポータブルコンピュータ、ラップトップコンピュータまたはノートブックコンピュータ、タブレットコンピュータ、ポケットコンピュータ、電話機、スマートフォン、ネットワークスイッチまたはネットワークルータ、または、他の任意の適当なタイプの電子デバイスとして実装され得る。
図5は、例示的なコンピュータシステム501の代表的な主要コンポーネントを示すことを意図していることに留意されたい。しかし、いくつかの実施形態では、個々のコンポーネントが、図5に表されているものよりも高いまたは低い複雑性を有することもあり、図5に示されているもの以外のコンポーネント、または、それらを加えたコンポーネントが存在してよく、こうしたコンポーネントの数、タイプ、および、構成は様々であってよい。
本明細書でより詳細に議論されるように、本明細書で説明される方法の実施形態のうちのいくつか動作のうちのいくつか、または、全てが、代替的な順序で実行されることもあること、または、全く実行されないこともあることが企図され、さらに、複数の動作が同時に、または、より大きなプロセスの内部分として発生してもよい。
本開示は、任意の可能な技術詳細レベルで統合化されたシステム、方法、および/または、コンピュータプログラム製品であり得る。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持および記憶することのできる有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または、上述のものの任意の適当な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的なリストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロピーディスク、パンチカードまたは命令が記録されている溝内の隆起構造などの機械的に符号化されたデバイス、および、上述のものの任意の適当な組み合わせを含む。本明細書では、コンピュータ可読記憶媒体自体は、電波または自由伝搬する他の電磁波、導波路または他の伝送媒体を介して伝搬する電磁波(例えば、ファイバオプティックケーブルを通過する光パルス)、または、ワイヤを介して伝送される電気信号などの一時的な信号とみなされるものではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてもよく、または、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/または、無線ネットワークを介して、外部コンピュータまたは外部記憶デバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/または、エッジサーバを備え得る。各コンピューティング/処理デバイスにおけるネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
本開示の動作を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、または、Smalltalk(登録商標)またはC++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含めた1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で全体を実行すること、ユーザのコンピュータ上で一部分を実行することができ、ユーザのコンピュータ上で一部分を、遠隔のコンピュータ上で一部分を実行すること、または、遠隔のコンピュータまたはサーバ上で全体を実行することができる。後者のシナリオでは、遠隔のコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、その接続は、外部コンピュータに対して(例えば、インターネットサービスプロバイダを使用してインターネットを介して)行われてもよい。いくつかの実施形態では、例えば、プログラム可能型ロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、または、プログラム可能型ロジックアレイ(PLA)を含む電子回路が、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによりコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズ化することができる。
本開示の態様は、本明細書において、本開示の実施形態による方法、装置(システム)、および、コンピュータプログラム製品のフローチャート図および/またはブロック図を参照して説明されている。フローチャート図および/またはブロック図の各ブロック、および、フローチャート図および/またはブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、コンピュータのプロセッサ、または、マシンを生成するための他のプログラマブルデータ処理装置に提供し、こうすることで、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置を介して実行される命令が、フローチャートおよび/またはブロック図における1つまたは複数のブロックにおいて指定された機能/動作を実装する手段を作成するようにしてもよい。また、これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブルデータ処理装置、および/または、他のデバイスに特定の様式で機能するように指示することが可能なコンピュータ可読記憶媒体にも記憶することができ、これにより、命令を記憶したコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図の1つまたは複数のブロックで指定される機能/動作の態様を実装する命令を有する製品を備えるようになる。
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または、他のデバイスにロードして、コンピュータ、他のプログラマブル装置、または、他のデバイス上で一連の動作ステップを実行させることでコンピュータ実装プロセスを作成することもでき、これにより、コンピュータ、他のプログラマブル装置、または、他のデバイス上で実行される命令が、フローチャートおよび/またはブロック図の1つまたは複数のブロックで指定される機能/動作を実装するようになる。
図面におけるフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、および、コンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能性、および、動作を示している。これに関して、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または、一部分を表し得る。いくつかの代替実装形態では、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックが、実際には、1つの段階として実現されてもよく、同時に、実質的に同時に、部分的にまたは全体的に時間重複するように実行されてもよく、または、こうしたブロックは、場合によっては、関係する機能性次第で逆の順序で実行されてもよい。ブロック図および/またはフローチャート図の各ブロック、および、ブロック図および/またはフローチャート図におけるブロックの組み合わせが、指定された機能または動作を実行する、または、特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けのハードウェアベースのシステムによって実装され得ることにも留意されたい。
本開示の様々な実施形態の説明は、例示目的で提示されるが、包括的になること、または、開示された実施形態に限定されることが意図されるものではない。説明される実施形態の範囲および趣旨から逸脱することのない多くの修正形態および変形形態が、当業者には明らかになるであろう。本明細書で使用される専門用語は、実施形態の原理、市場で見られる技術の実用的な適用、または、それに対する技術的改善を最適に説明するように、または、本明細書で開示される実施形態を他の当業者が理解することを可能にするように選択された。
本開示は、具体的な実施形態について説明されてきたが、それらの変更形態および修正形態が当業者には明らかになることが予想される。したがって、以下の特許請求の範囲は、本開示の真の趣旨および範囲に含まれる変更形態および修正形態の全てを対象にすることと解釈されることが意図される。
本開示は、具体的な実施形態について説明されてきたが、それらの変更形態および修正形態が当業者には明らかになることが予想される。したがって、以下の特許請求の範囲は、本開示の真の趣旨および範囲に含まれる変更形態および修正形態の全てを対象にすることと解釈されることが意図される
[項目1]
実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減するためのシステムであって、
メモリ;および
前記メモリと通信するプロセッサ
を備え、前記プロセッサが、
トランザクションの書込みセットをキャッシュに記憶すること、ここで、前記キャッシュが、状態情報を含んでおり、ここで、前記キャッシュが、ブロックチェーンに非コミットである;
次のトランザクションを特定すること、ここで、前記次のトランザクションが、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行う;および
前記トランザクションおよび前記次のトランザクションを前記キャッシュから何が読み取られるかに基づいて順序付けすること、ここで、前記トランザクションおよび前記次のトランザクションを順序付けすることで、前記次のトランザクションのアボートが避けられる
を有する動作を実行するように構成された、
システム。
[項目2]
前記書込みセットを前記キャッシュに記憶することが、状態の記憶に使用されるバージョン番号、ならびに、前記トランザクションに関連するアイデンティフィケーションの両方を、読取りセットが含むことを可能にする、項目1に記載のシステム。
[項目3]
前記アイデンティフィケーションが、非コミットの前記キャッシュ内にある状態を示す、項目2に記載のシステム。
[項目4]
前記トランザクションおよび前記次のトランザクションを順序付けすることが、前記次のトランザクションを有効化することを含む、項目1に記載のシステム。
[項目5]
前記次のトランザクションを有効化することが、
状態の記憶に使用される第1のバージョン番号を前記トランザクションに関連するものであると特定すること;
状態の記憶に使用される第2のバージョン番号を前記次のトランザクションに関連するものであると特定すること;および
前記第1のバージョン番号または前記第2のバージョン番号のどちらが従属したバージョン番号であるかを判定すること
を含む、項目4に記載のシステム。
[項目6]
前記動作が、
前記第1のバージョン番号が前記第2のバージョン番号に従属していると特定すること;および
前記トランザクションの前に、前記次のトランザクションをコミットさせること
をさらに有する、項目5に記載のシステム。
[項目7]
前記動作が、
前記第2のバージョン番号が前記第1のバージョン番号に従属していると特定すること;および
前記次のトランザクションの前に、前記トランザクションをコミットさせること
をさらに有する、項目5に記載のシステム。
[項目8]
実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減する方法であって、
プロセッサにより、トランザクションの書込みセットをキャッシュに記憶する段階、ここで、前記キャッシュが、状態情報を含んでおり、ここで、前記キャッシュが、ブロックチェーンに非コミットである;
次のトランザクションを特定する段階、ここで、前記次のトランザクションが、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行う;および
前記トランザクションおよび前記次のトランザクションを前記キャッシュから何が読み取られるかに基づいて順序付けする段階、ここで、前記トランザクションおよび前記次のトランザクションを順序付けする段階により、前記次のトランザクションのアボートが避けられる
を備える方法。
[項目9]
前記書込みセットを前記キャッシュに記憶する段階が、状態の記憶に使用されるバージョン番号、ならびに、前記トランザクションに関連するアイデンティフィケーションの両方を、読取りセットが含むことを可能にする、項目8に記載の方法。
[項目10]
前記アイデンティフィケーションが、非コミットの前記キャッシュ内にある状態を示す、項目9に記載の方法。
[項目11]
前記トランザクションおよび前記次のトランザクションを順序付けする段階が、前記次のトランザクションを有効化する段階を有する、項目8に記載の方法。
[項目12]
前記次のトランザクションを有効化する段階が、
状態の記憶に使用される第1のバージョン番号を前記トランザクションに関連するものであると特定する段階;
状態の記憶に使用される第2のバージョン番号を前記次のトランザクションに関連するものであると特定する段階;および
前記第1のバージョン番号または前記第2のバージョン番号のどちらが従属したバージョン番号であるかを判定する段階
を含む、項目11に記載の方法。
[項目13]
前記第1のバージョン番号が前記第2のバージョン番号に従属していると特定する段階;および
前記トランザクションの前に、前記次のトランザクションをコミットさせる段階
をさらに備える、項目12に記載の方法。
[項目14]
前記第2のバージョン番号が前記第1のバージョン番号に従属していると特定する段階;および
前記次のトランザクションの前に、前記トランザクションをコミットさせる段階
をさらに備える、項目12に記載の方法。
[項目15]
実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減するためのコンピュータプログラム製品であって、プログラム命令が具現化されたコンピュータ可読記憶媒体を備え、前記プログラム命令が、プロセッサに機能を実行させるように前記プロセッサにより実行可能であり、前記機能が、
トランザクションの書込みセットをキャッシュに記憶する手順、ここで、前記キャッシュが、状態情報を含んでおり、ここで、前記キャッシュが、ブロックチェーンに非コミットである;
次のトランザクションを特定する手順、ここで、前記次のトランザクションが、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行う;および
前記トランザクションおよび前記次のトランザクションを前記キャッシュから何が読み取られるかに基づいて順序付けする手順、ここで、前記トランザクションおよび前記次のトランザクションを順序付けする手順により、前記次のトランザクションのアボートが避けられる、
を有する、
コンピュータプログラム製品。
[項目16]
前記書込みセットを前記キャッシュに記憶する手順が、状態の記憶に使用されるバージョン番号、ならびに、前記トランザクションに関連するアイデンティフィケーションの両方を、読取りセットが含むことを可能にする、項目15に記載のコンピュータプログラム製品。
[項目17]
前記トランザクションおよび前記次のトランザクションを順序付けする手順が、前記次のトランザクションを有効化する手順を含む、項目15に記載のコンピュータプログラム製品。
[項目18]
前記次のトランザクションを有効化する手順が、
状態の記憶に使用される第1のバージョン番号を前記トランザクションに関連するものであると特定する手順;
状態の記憶に使用される第2のバージョン番号を前記次のトランザクションに関連するものであると特定する手順;および
前記第1のバージョン番号または前記第2のバージョン番号のどちらが従属したバージョン番号であるかを判定する手順
を含む、項目17に記載のコンピュータプログラム製品。
[項目19]
前記第1のバージョン番号が前記第2のバージョン番号に従属していると特定する手順;および
前記トランザクションの前に、前記次のトランザクションをコミットさせる手順
をさらに備える、項目18に記載のコンピュータプログラム製品。
[項目20]
前記機能が、
前記第2のバージョン番号が前記第1のバージョン番号に従属していると特定する手順;および
前記次のトランザクションの前に、前記トランザクションをコミットさせる手順
をさらに有する、項目18に記載のコンピュータプログラム製品。

Claims (20)

  1. 実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減するためのシステムであって、
    メモリ;および
    前記メモリと通信するプロセッサ
    を備え、前記プロセッサが、
    トランザクションの書込みセットをキャッシュに記憶すること、ここで、前記キャッシュが、状態情報を含んでおり、ここで、前記キャッシュが、ブロックチェーンに非コミットである;
    次のトランザクションを特定すること、ここで、前記次のトランザクションが、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行う;および
    前記トランザクションおよび前記次のトランザクションを前記キャッシュから何が読み取られるかに基づいて順序付けすること、ここで、前記トランザクションおよび前記次のトランザクションを順序付けすることで、前記次のトランザクションのアボートが避けられる
    を有する動作を実行するように構成された、
    システム。
  2. 前記書込みセットを前記キャッシュに記憶することが、状態の記憶に使用されるバージョン番号、ならびに、前記トランザクションに関連するアイデンティフィケーションの両方を、読取りセットが含むことを可能にする、請求項1に記載のシステム。
  3. 前記アイデンティフィケーションが、非コミットの前記キャッシュ内にある状態を示す、請求項2に記載のシステム。
  4. 前記トランザクションおよび前記次のトランザクションを順序付けすることが、前記次のトランザクションを有効化することを含む、請求項1に記載のシステム。
  5. 前記次のトランザクションを有効化することが、
    状態の記憶に使用される第1のバージョン番号を前記トランザクションに関連するものであると特定すること;
    状態の記憶に使用される第2のバージョン番号を前記次のトランザクションに関連するものであると特定すること;および
    前記第1のバージョン番号または前記第2のバージョン番号のどちらが従属したバージョン番号であるかを判定すること
    を含む、請求項4に記載のシステム。
  6. 前記動作が、
    前記第1のバージョン番号が前記第2のバージョン番号に従属していると特定すること;および
    前記トランザクションの前に、前記次のトランザクションをコミットさせること
    をさらに有する、請求項5に記載のシステム。
  7. 前記動作が、
    前記第2のバージョン番号が前記第1のバージョン番号に従属していると特定すること;および
    前記次のトランザクションの前に、前記トランザクションをコミットさせること
    をさらに有する、請求項5に記載のシステム。
  8. 実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減する方法であって、
    プロセッサにより、トランザクションの書込みセットをキャッシュに記憶する段階、ここで、前記キャッシュが、状態情報を含んでおり、ここで、前記キャッシュが、ブロックチェーンに非コミットである;
    次のトランザクションを特定する段階、ここで、前記次のトランザクションが、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行う;および
    前記トランザクションおよび前記次のトランザクションを前記キャッシュから何が読み取られるかに基づいて順序付けする段階、ここで、前記トランザクションおよび前記次のトランザクションを順序付けする段階により、前記次のトランザクションのアボートが避けられる
    を備える方法。
  9. 前記書込みセットを前記キャッシュに記憶する段階が、状態の記憶に使用されるバージョン番号、ならびに、前記トランザクションに関連するアイデンティフィケーションの両方を、読取りセットが含むことを可能にする、請求項8に記載の方法。
  10. 前記アイデンティフィケーションが、非コミットの前記キャッシュ内にある状態を示す、請求項9に記載の方法。
  11. 前記トランザクションおよび前記次のトランザクションを順序付けする段階が、前記次のトランザクションを有効化する段階を有する、請求項8に記載の方法。
  12. 前記次のトランザクションを有効化する段階が、
    状態の記憶に使用される第1のバージョン番号を前記トランザクションに関連するものであると特定する段階;
    状態の記憶に使用される第2のバージョン番号を前記次のトランザクションに関連するものであると特定する段階;および
    前記第1のバージョン番号または前記第2のバージョン番号のどちらが従属したバージョン番号であるかを判定する段階
    を含む、請求項11に記載の方法。
  13. 前記第1のバージョン番号が前記第2のバージョン番号に従属していると特定する段階;および
    前記トランザクションの前に、前記次のトランザクションをコミットさせる段階
    をさらに備える、請求項12に記載の方法。
  14. 前記第2のバージョン番号が前記第1のバージョン番号に従属していると特定する段階;および
    前記次のトランザクションの前に、前記トランザクションをコミットさせる段階
    をさらに備える、請求項12に記載の方法。
  15. 実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートを削減するためのコンピュータプログラム製品であって、プログラム命令が具現化されたコンピュータ可読記憶媒体を備え、前記プログラム命令が、プロセッサに機能を実行させるように前記プロセッサにより実行可能であり、前記機能が、
    トランザクションの書込みセットをキャッシュに記憶する手順、ここで、前記キャッシュが、状態情報を含んでおり、ここで、前記キャッシュが、ブロックチェーンに非コミットである;
    次のトランザクションを特定する手順、ここで、前記次のトランザクションが、前記キャッシュ内に要求されたキーが存在する場合に前記キャッシュからの読取りを行う;および
    前記トランザクションおよび前記次のトランザクションを前記キャッシュから何が読み取られるかに基づいて順序付けする手順、ここで、前記トランザクションおよび前記次のトランザクションを順序付けする手順により、前記次のトランザクションのアボートが避けられる、
    を有する、
    コンピュータプログラム製品。
  16. 前記書込みセットを前記キャッシュに記憶する手順が、状態の記憶に使用されるバージョン番号、ならびに、前記トランザクションに関連するアイデンティフィケーションの両方を、読取りセットが含むことを可能にする、請求項15に記載のコンピュータプログラム製品。
  17. 前記トランザクションおよび前記次のトランザクションを順序付けする手順が、前記次のトランザクションを有効化する手順を含む、請求項15に記載のコンピュータプログラム製品。
  18. 前記次のトランザクションを有効化する手順が、
    状態の記憶に使用される第1のバージョン番号を前記トランザクションに関連するものであると特定する手順;
    状態の記憶に使用される第2のバージョン番号を前記次のトランザクションに関連するものであると特定する手順;および
    前記第1のバージョン番号または前記第2のバージョン番号のどちらが従属したバージョン番号であるかを判定する手順
    を含む、請求項17に記載のコンピュータプログラム製品。
  19. 前記第1のバージョン番号が前記第2のバージョン番号に従属していると特定する手順;および
    前記トランザクションの前に、前記次のトランザクションをコミットさせる手順
    をさらに備える、請求項18に記載のコンピュータプログラム製品。
  20. 前記機能が、
    前記第2のバージョン番号が前記第1のバージョン番号に従属していると特定する手順;および
    前記次のトランザクションの前に、前記トランザクションをコミットさせる手順
    をさらに有する、請求項18に記載のコンピュータプログラム製品。
JP2023550252A 2021-03-24 2022-03-07 実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートの削減 Pending JP2024512256A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/210,925 US20220311595A1 (en) 2021-03-24 2021-03-24 Reducing transaction aborts in execute-order-validate blockchain models
US17/210,925 2021-03-24
PCT/IB2022/051984 WO2022200891A1 (en) 2021-03-24 2022-03-07 Reducing transaction aborts in execute-order-validate blockchain models

Publications (1)

Publication Number Publication Date
JP2024512256A true JP2024512256A (ja) 2024-03-19

Family

ID=83363897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023550252A Pending JP2024512256A (ja) 2021-03-24 2022-03-07 実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートの削減

Country Status (7)

Country Link
US (1) US20220311595A1 (ja)
JP (1) JP2024512256A (ja)
KR (1) KR20230132878A (ja)
CN (1) CN116997895A (ja)
AU (1) AU2022245375A1 (ja)
GB (1) GB2620039B (ja)
WO (1) WO2022200891A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3933612A1 (en) * 2020-06-30 2022-01-05 Atlassian Pty Ltd Systems and methods for creating and managing tables

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11941588B2 (en) * 2015-11-06 2024-03-26 Cable Television Laboratories, Inc. Systems and methods for blockchain virtualization and scalability
US11240035B2 (en) * 2017-05-05 2022-02-01 Jeff STOLLMAN Systems and methods for extending the utility of blockchains through use of related child blockchains
US10601665B2 (en) * 2017-07-26 2020-03-24 International Business Machines Corporation Using blockchain smart contracts to manage dynamic data usage requirements
CN107423426B (zh) * 2017-08-02 2020-06-02 众安信息技术服务有限公司 一种区块链块数据的数据归档方法及电子设备
CN110807047A (zh) * 2018-07-20 2020-02-18 富士通株式会社 管理信息处理任务的有效性的方法和装置
US11488158B2 (en) * 2018-09-05 2022-11-01 Atrium Separate Ip Holdings Number 4, Llc Blockchain architecture, system, method and device for automated cybersecurity and data privacy law compliance with proprietary off-chain storage mechanism
AU2018256664A1 (en) * 2018-11-02 2020-05-21 Australian Bond Exchange Holdings Limited System and Computer Implemented Method for Facilitating the Transaction and Settlement of a Financial Instrument
US11048593B2 (en) * 2018-11-28 2021-06-29 International Business Machines Corporation Data aggregation node for blockchain rollup
CN110930149B (zh) * 2018-12-07 2023-09-26 深圳市智税链科技有限公司 在区块链网络中确定记账节点的方法、代理节点和介质
CN111382119B (zh) * 2018-12-29 2023-08-22 华为技术有限公司 区块数据归档方法及相关设备
US10860259B1 (en) * 2019-07-17 2020-12-08 Tyson York Winarski Multi-tiered storage system for blockchain
CN111241061B (zh) * 2020-01-09 2023-04-07 平安科技(深圳)有限公司 状态数据库的写入方法、数据处理装置及存储介质
CN111209093B (zh) * 2020-01-16 2022-07-22 华东师范大学 一种分布式数据库系统中分布式事务的处理方法
CN111752685B (zh) * 2020-05-22 2022-09-23 清华大学 多核架构下的持久性内存事务提交方法
CN112039987B (zh) * 2020-08-28 2022-05-20 平安科技(深圳)有限公司 区块链中区块的处理方法、装置、节点设备及存储介质

Also Published As

Publication number Publication date
GB2620039A (en) 2023-12-27
CN116997895A (zh) 2023-11-03
GB202314108D0 (en) 2023-11-01
KR20230132878A (ko) 2023-09-18
GB2620039B (en) 2024-04-03
US20220311595A1 (en) 2022-09-29
AU2022245375A1 (en) 2023-08-31
WO2022200891A1 (en) 2022-09-29

Similar Documents

Publication Publication Date Title
US11853291B2 (en) Privacy preserving architecture for permissioned blockchains
US10944560B2 (en) Privacy-preserving identity asset exchange
US11431503B2 (en) Self-sovereign data access via bot-chain
WO2022007548A1 (en) Blockchain implementation to securely store information off-chain
US11361324B2 (en) Blockchain-issued verifiable credentials for portable trusted asset claims
US11888981B2 (en) Privacy preserving auditable accounts
JP2023542681A (ja) ブロックチェーンの許可フレームワークへのデバイスアイデンティティの統合
US20220100733A1 (en) Transaction reordering in blockchain
US20220156725A1 (en) Cross-chain settlement mechanism
US11943360B2 (en) Generative cryptogram for blockchain data management
JP2023538497A (ja) 編集可能なブロックチェーン
JP2023551124A (ja) 自己監査ブロックチェーン
JP2024501401A (ja) 非集中型のブロードキャスト暗号化および鍵生成ファシリティ
JP2024512256A (ja) 実行-順序付け-有効化ブロックチェーンモデル内でのトランザクションアボートの削減
US11818206B2 (en) Visibility of digital assets at channel level
JP2022088326A (ja) ブロックチェーン・ネットワークにおけるワールドステート・データベースを選択的に更新するための方法、システム、およびコンピュータ・プログラム
US11683173B2 (en) Consensus algorithm for distributed ledger technology
US11755562B2 (en) Score based endorsement in a blockchain network
US20220255990A1 (en) Topological ordering of blockchain associated proposals

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231005