JP7382108B2 - ブロックチェーンのための効率的な検証 - Google Patents

ブロックチェーンのための効率的な検証 Download PDF

Info

Publication number
JP7382108B2
JP7382108B2 JP2020567217A JP2020567217A JP7382108B2 JP 7382108 B2 JP7382108 B2 JP 7382108B2 JP 2020567217 A JP2020567217 A JP 2020567217A JP 2020567217 A JP2020567217 A JP 2020567217A JP 7382108 B2 JP7382108 B2 JP 7382108B2
Authority
JP
Japan
Prior art keywords
blockchain
database
transaction
state
validation
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.)
Active
Application number
JP2020567217A
Other languages
English (en)
Other versions
JP2021525931A (ja
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 JP2021525931A publication Critical patent/JP2021525931A/ja
Application granted granted Critical
Publication of JP7382108B2 publication Critical patent/JP7382108B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/32Cryptographic 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/3236Cryptographic 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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Description

本出願は、一般にブロックチェーン・ネットワークのためのトランザクション検証に関し、より詳細には、ブロックチェーンのための効率的な検証に関する。
台帳は、トランザクションが記録されるエントリのアカウント・ブックとして一般的に定義されている。分散型台帳は、複数のコンピュータに全体的にまたは部分的に複製される台帳である。暗号分散型台帳(CDL)は、不可逆性(トランザクションが一旦記録されると元に戻せない)、アクセス可能性(いかなる当事者も全体的または部分的にCDLにアクセス可能である)、時系列かつタイムスタンプされている(全ての当事者が、トランザクションがいつ台帳に追加されたかを知っている)、合意ベース(ネットワーク上の当事者により、典型的には満場一致で承認された場合にのみ、トランザクションが追加される)、検証可能性(全てのトランザクションが暗号により検証され得る)のこれらの特性の少なくともいくつかを有し得る。ブロックチェーンは、CDLの一例である。本明細書における説明および図面は、ブロックチェーンに関して説明されるが、本出願は、いかなるCDLにも同様に適用する。
分散型台帳は、他のブロックに関する暗号ハッシュを記憶するなど暗号技術を典型的に適用する、連続的に増大するレコードのリストである。ブロックチェーンは、分散型台帳の1つの共通事例であり、情報を記憶するための公開台帳として使用され得る。ブロックチェーンは、主に金融トランザクションのために用いられるが、商品およびサービスに関する様々な情報(即ち、製品、パッケージ、状態など)を記憶し得る。非集中型方式は、非集中型ネットワークに権限および信用を与え、そのノードが連続的かつ逐次的にそれらのトランザクションを公開「ブロック」上に記録することを可能にして、ブロックチェーンと呼ばれる一意の「チェーン」を生成する。ハッシュ・コードを介した暗号法が、トランザクション元の認証を保証するために使用され、中央の仲介者を除去する。ブロックチェーンは、連続的に増大するレコードのリストをブロックチェーンのブロックに維持する分散型データベースであり、ブロックチェーンのブロックは、それらの不変性特性に起因して改ざんおよび改訂から保護される。各ブロックは、タイムスタンプおよび前のブロックへのリンクを含む。ブロックチェーンは、情報を保持し、追跡し、移転し、確認するために使用され得る。ブロックチェーンは分散型システムであるため、ブロックチェーン台帳にトランザクションを追加する前に、全てのピアが合意状態に達する必要がある。
従来、ブロックチェーン・トランザクションは、ブロックチェーン内の全てのブロックについて状態データベースに対して検証され、それは、データベースから状態データを取り出すためにかかる時間によって制限される。したがって、必要とされるものは、これらの制限を克服するためのトランザクション検証のより高速かつ効率的な形態である。
1つの例としての実施形態は、ブロックチェーン・ノードによって、メモリ内に検証データベースを生成することと、1つまたは複数のトランザクションのそれぞれをシミュレーションすることと、新規ブロック内の各トランザクションが検証データベースを用いて検証され得ると判断することと、検証データベースを用いて新規ブロック内の各トランザクションを検証することと、新規ブロックをブロックチェーンにコミットすることと、のうちの1つまたは複数を含む方法を提供し得る。検証データベースは、ブロックチェーンのための状態データベースの所定の数の直近ブロックに対応することを含む。
別の例としての実施形態は、プロセッサおよびメモリを含むシステムを提供し得る。プロセッサは、1つまたは複数のトランザクションのそれぞれをシミュレーションすることと、新規ブロック内の各トランザクションが検証データベースを用いて検証され得ると判断することと、検証データベースを用いて新規ブロック内の各トランザクションを検証することと、新規ブロックをブロックチェーンにコミットすることと、のうちの1つまたは複数を実行するように構成される。
1つの態様によれば、ブロックチェーン・ネットワークを含むシステムが提供され、ブロックチェーン・ネットワークは、ブロックチェーン・トランザクションを検証する1つまたは複数のブロックチェーン・ノードを含み、各ブロックチェーン・ノードは、プロセッサと、プロセッサに連結されるメモリ・デバイスと、を含み、メモリ・デバイスは、検証データベースを含み、検証データベースは、ブロックチェーンの所定の数の直近ブロックに対応するデータを含み、プロセッサは、1つまたは複数のトランザクションのそれぞれをシミュレーションし、新規ブロック内の各トランザクションが検証データベースを用いて検証され得ると判断し、検証データベースを用いて新規ブロック内の各トランザクションを検証し、新規ブロックをブロックチェーンにコミットするように構成される。
さらなる例としての実施形態は、プロセッサによって読み出されるときに、ブロックチェーン・ノードによって、メモリ内に検証データベースを生成することと、1つまたは複数のトランザクションのそれぞれをシミュレーションすることと、新規ブロック内の各トランザクションが検証データベースを用いて検証され得ると判断することと、検証データベースを用いて新規ブロック内の各トランザクションを検証することと、新規ブロックをブロックチェーンにコミットすることと、のうちの1つまたは複数をプロセッサに実行させる命令を含む、非一過性コンピュータ可読媒体を提供し得る。検証データベースは、ブロックチェーンのための状態データベースの所定の数の直近ブロックに対応するデータを含む。
発明の実施形態は、ここで単なる例として添付図面を参照して説明される。
例としての実施形態による、ブロックチェーンでトランザクションを効率的に検証するためのシステムのネットワーク図である。 例としての実施形態による、ブロックチェーンを用いた状態データベース・パラメータのネットワーク図である。 例としての実施形態による、資産共有シナリオのための例としてのピア・ノード・ブロックチェーン・アーキテクチャ構成を示す図である。 例としての実施形態による、例としてのピア・ノード・ブロックチェーン構成を示す図である。 例としての実施形態による、許可型ブロックチェーン・ネットワークを示す図である。 例としての実施形態による、ブロックチェーン状態シミュレーションおよび検証を実行するためのシステム・メッセージング図である。 例としての実施形態による、ブロックチェーンにおいて検証データベースを用いてトランザクションをシミュレーションおよび検証する例としての方法のフロー図である。 例としての実施形態による、ブロックチェーンにおいて分岐チェーン検証を解決する例としての方法のフロー図である。 例としての実施形態による、本明細書に説明される1つまたは複数の動作に従ってブロックチェーン上で様々な動作を実行するように構成される例としての物理インフラストラクチャを示す図である。 例としての実施形態による、ブロックチェーン上でスマート・コントラクト条件を施行するように構成される契約当事者と仲介サーバとの間の例としてのスマート・コントラクト構成を示す図である。 例としての実施形態のうちの1つまたは複数をサポートするように構成される、例としてのコンピュータ・システムを示す図である。
本コンポーネントは、本明細書において概して説明され図面に示されるように、多種多様な異なる構成において配列され設計され得ると、容易に理解される。よって、添付図面において表される、方法、装置、非一過性コンピュータ可読媒体、およびシステムのうちの少なくとも1つの実施形態の以下の詳細な説明は、特許請求されているように本出願の範囲を限定することを意図しておらず、単に選択された実施形態を表している。
本明細書全体を通して説明される、本特徴、構造、または特性は、1つまたは複数の実施形態において任意の適当なやり方で結合され得る。例えば、「例としての実施形態」、「いくつかの実施形態」という語句、または他の類似の言葉の使用は、本明細書全体を通して、実施形態に関連して説明される特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれ得るという事実を指す。よって、「例としての実施形態」、「いくつかの実施形態において」、「他の実施形態において」という語句、または他の類似の言葉の出現は、本明細書全体を通して、必ずしも全てが実施形態の同一グループを指しておらず、説明される特徴、構造、または特性が、1つまたは複数の実施形態において任意の適当なやり方で結合され得る。
さらに、「メッセージ」という用語が、実施形態の説明において使用されていることがあるが、本出願は、パケット、フレーム、データグラムなどの多くの種類のネットワーク・データに適用され得る。「メッセージ」という用語は、パケット、フレーム、データグラム、およびそれらの任意の均等物も含む。さらに、ある種類のメッセージおよびシグナリングが、例示的実施形態に示されることがあるが、それらは、ある種類のメッセージに限定されず、本出願は、ある種類のシグナリングに限定されない。例としての実施形態は、方法、システム、非一過性コンピュータ可読媒体、デバイス、またはネットワーク、あるいはそれらの組み合わせを提供し、それらは、ブロックチェーンのための効率的なトランザクション検証を提供する。
ブロックチェーンは、分散型システムであり、それは、互いに通信する複数のノードを含む。ブロックチェーンは、チェーンコード(例えばスマート・コントラクトなど)と呼ばれるプログラムを動作させ、状態および台帳データを保持し、トランザクションを実行する。いくつかのトランザクションは、チェーンコード上で呼び出される動作である。概して、ブロックチェーン・トランザクションは、典型的には、あるブロックチェーン・メンバによって「エンドース(endorse)」されなければならず、エンドースされたトランザクションのみが、ブロックチェーンにコミットされ、ブロックチェーンの状態に対する影響を有し得る。エンドースされない他のトランザクションは、無視される。管理機能およびパラメータについての1つまたは複数の特定のチェーンコードが存在してもよく、まとめてシステム・チェーンコードと呼ばれる。
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なる種類の複数のノードが同一の物理サーバ上で実行し得るという意味で、論理関数を実行し得る。ノードは、信頼できるドメイン内にグループ化され、様々な方法でそれらを制御する論理エンティティに関連付けられる。ノードは、トランザクション呼び出しをエンドーサ(endorser)(例えば、ピア)にサブミットし、トランザクション提案を順序付けサービス(例えば、順序付けノード(ordering node))にブロードキャストする、クライアントまたはサブミット・クライアント・ノードなどの異なる種類を含み得る。ノードの別の種類は、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持し得るピア・ノードである。ピアは、エンドーサの役割も有し得るが、それは必須ではない。順序付けサービス・ノードまたはオーダラ(orderer)は、全てのノードについて通信サービスを実行するノードであり、トランザクションをコミットし、ブロックチェーンの世界状態を修正するときに、システム内のピア・ノードのそれぞれに対するブロードキャストなどの、配信保証を実施する。世界状態は、制御およびセットアップ情報を通常含む、初期のブロックチェーン・トランザクションについての別名である。
台帳は、ブロックチェーンの全ての状態遷移の、順番に配列された耐改ざんレコードである。状態遷移は、参加している当事者(例えば、クライアント・ノード、順序付けノード、エンドーサ・ノード、ピア・ノードなど)によってサブミットされるチェーンコード呼び出し(即ち、トランザクション)から生じ得る。トランザクションは、生成、更新、削除などの1つまたは複数のオペランドとして台帳にコミットされている資産キーバリュー・ペアのセットをもたらし得る。台帳は、不変性の、順番に配列されたレコードをブロックに記憶するために使用されるブロックチェーン(チェーンとも呼ばれる)を含む。台帳は状態データベースも含み、状態データベースは、ブロックチェーンの現在の状態を維持する。典型的には、チャネル毎に1つの台帳が存在する。各ピア・ノードは、それらがメンバであるチャネル毎に台帳のコピーを維持する。
チェーンは、ハッシュでリンクされたブロックとして構築されるトランザクション・ログであり、各ブロックは、N個のトランザクションのシーケンスを含み、Nは1以上である。ブロック・ヘッダは、ブロックのトランザクションのハッシュだけでなく、前のブロックのヘッダのハッシュも含む。このようにして、台帳上の全てのトランザクションが、順番に配列され、暗号によって共にリンクされ得る。したがって、ハッシュ・リンクを壊すことなく台帳データを改ざんすることはできない。最新の追加されたブロックチェーン・ブロックのハッシュは、その前に来たチェーン上のあらゆるトランザクションを表し、全てのピア・ノードが整合性および信頼性のある状態にあることを保証することを可能にしている。チェーンは、ピア・ノード・ファイル・システム(即ち、ローカルな、アタッチされたストレージ、クラウドなど)上に記憶されてもよく、ブロックチェーンの作業負荷の追加専用の性質を効率的にサポートする。
不変性台帳の現在の状態は、チェーン・トランザクション・ログに含まれる全てのキーについての最新の値を表す。現在の状態は、チャネルにとって既知の最新のキーバリューを表すため、それは、世界状態と呼ばれることがある。チェーンコード呼び出しは、台帳の現在の状態データに対してトランザクションを実行する。これらのチェーンコードの相互作用を効率的にするために、キーの最新の値が、状態データベース124内に記憶され得る。状態データベース124は、単にチェーンのトランザクション・ログ内にインデックスされたビューであってもよく、したがって、それはいかなるときでもチェーンから再生成され得る。状態データベース124は、ピア・ノードが起動した後、およびトランザクションが受け取られる前に、自動的に回復され得る(または必要であれば生成され得る)。
例としての実施形態は、方法、デバイス、ネットワーク、非一過性コンピュータ可読媒体、またはシステム、あるいはそれらの組み合わせを目的とし、それらは、高速トランザクション検証をサポートするブロックチェーン・ソリューションをサポートする。利益のいくつかが、新規ブロックにおいてトランザクションを検証するための新たなソリューションを提供することを含む。任意のブロックチェーンにおいて、新規ブロックがネットワークに発行されるとき、トランザクションの検証を実行することは重要なステップである。このステップは、ブロック内のどのトランザクションが有効または無効として受け取られるべきかを最終的に決定する。検証の結果は、同様に、ブロックがコミットされるときにブロックチェーンの状態がどのように変化するかを決定する。この検証ステップの実行は、ブロックチェーン・ネットワークが提供し得るトランザクションの全体スループットに対して直接的な影響を有する。本出願は、本来包括的であり、実行/エンドース/順序付け/コミット・パラダイム(Hyperledger Fabricなどの)を実施する、ブロックチェーン技術におけるこの検証ステップに対する性能改善を可能にする。
検証が実行されるとき、コミット段階の間の技術水準は、(ディスク上に記憶され、潜在的にサイズが非常に大きい可能性がある)状態データベースにアクセスすることである。本出願は、新たな検証データベース内に制限された量のデータのみを維持することによって、検証プロセスの効率および性能を改善する新たな技術を提示する。この技術は、(時間と共に増大し続ける)ブロックチェーン内のブロックの実際の数に関わりなく、検証データベース内に所定の数の直近ブロックに対応する制限された量のデータを維持することを必要とする。この制限された量のデータのために、検証データベースは、ディスク上ではなくインメモリで潜在的に維持されてもよく、したがって、検証のためにより低速の記憶媒体にアクセスすることを回避する。
ブロックチェーンは、中央記憶装置ではなく非集中型で不変性の安全な記憶装置であるという点において従来のデータベースとは異なり、その場合に、ノードは記憶装置内のレコードに対する変更を共有しなければならない。ブロックチェーンにおいて固有であり、ブロックチェーンを実施する助けとなるいくつかの特性は、本明細書においてさらに説明される、不変性台帳、スマート・コントラクト、セキュリティ、プライバシー、非集中型、合意、エンドースメント、アクセス可能性などを含むが、これらに限定されない。様々な実施形態によれば、検証データベースは、概してブロックチェーン技術に対する改善として実施され、全てのブロックチェーン・ネットワークは、より高速のトランザクション検証から利益を受ける。
例としての実施形態の利益のうちの1つは、トランザクション検証性能および効率を改善することによるコンピューティング・システムの機能性の改善である。本明細書に説明されるブロックチェーン・ソリューションを通して、コンピューティング・システムは、検証データベースをインメモリで維持することによって新規の機能性を実行し得る。これによって、新規ブロック内のトランザクションの検証を実行するためにブロックチェーン・ノードが維持するデータの量が著しく減少する。
例としての実施形態は、従来のデータベースよりも多くの利益を提供する。例えば、ブロックチェーンにおけるトランザクション検証性能を改善することによって、様々な利点が達成される。例えば、より多くのトランザクションが、ネットワーク速度/性能またはブロックチェーン・ノード・ハードウェアを増加させることなく時間単位で検証され得る。また、そのような性能向上は、より高速なブロックチェーン・ノードまたはネットワーキング・ハードウェアを代用することによってブロックチェーン・ネットワークにコストを追加することなく達成され得る。本出願によって提供される改善は、既存のブロックチェーン・ネットワークに透過的である。
一方、本明細書で説明される改善は、ブロックチェーン技術およびブロックチェーン・インフラストラクチャに固有であるため、従来のデータベースは、例としての実施形態を実施するために使用されることはない。したがって、例としての実施形態は、ブロックチェーンのための効率的な検証の当技術分野/領域における問題点に対する特定のソリューションを提供する。
図1Aは、例としての実施形態による、ブロックチェーンでトランザクションを効率的に検証するためのシステムの論理ネットワーク図を示す。多くのブロックチェーン・システムにおいてブロック・コミットの間、トランザクション検証は、性能ボトルネックのうちの1つである。これは、主に、検証プロセスが、データベースの現在の状態に対してトランザクションを検証するために、データベースに対して大量のランダムな読み出しを引き起こすためである。これは、Hyperledger Fabricにおいて現在実施されている検証方式を反映する。本出願は、はるかに小さなデータ・セットに対して検証が実行されることを可能にすることによって、この検証プロセスをより一層効率的にするシステムおよび方法を導入する。小さなデータ・セットは、インメモリで維持されてもよく、したがってディスクまたはより低速の主記憶装置にアクセスすることを回避し得る。
ブロックチェーン・トランザクションは、「begin_tran」および「commit_tran」というステートメントによってマークされる境界で囲まれた照会および更新ステートメントのシーケンスを含む。「begin_tran」というステートメントは、トランザクションのシミュレーション開始に相当し、「commit_tran」というステートメントは、トランザクションの検証およびコミットに相当する。しかしながら、ブロックチェーンの分散型の性質のために、シミュレーションは、1つまたは複数のノードにおいて実行され、検証およびコミットは、全てのノード上で実行される。トランザクションの持続期間中(即ち、「begin_tran」と「commit_tran」との間であり、それは、それぞれ「シミュレーション」および「コミット」である)、トランザクションが照会を一回よりも多く実行する場合、照会結果は変化するべきではない。これは、直列化可能トランザクション分離レベルと呼ばれる。しかしながら、何らかの他のトランザクションが、第1のトランザクションの「begin_tran」と「commit_tran」との間にデータ変更を行う場合、第1のトランザクションは、同じ照会について異なる結果を受信し得る。第2の照会については、それは、追加のエントリを受信することとなり、その場合、追加のエントリはファントム・エントリと呼ばれる。
図1Aを参照すると、ネットワーク100は、状態データベース124を含み、状態データベース124は、ブロックチェーン内の全てのブロックについての現在の状態120を記憶する。図1Aは、状態0 120A、状態1 120B、状態2 120C~状態L 120L、状態M 120M、および状態N 120Nを含むブロックチェーンを示している。このように、例示されるブロックチェーンには、N個の状態120がある。各状態120について、対応するブロック(図示せず)があり、ブロックは、検証されたトランザクションを記憶し、状態120は、全ての一意なキーについて<キー,値>のタプルの集合を記憶する。「キー」は、ブロックのうちのいずれかにおけるライトセットのいずれかに存在するキーを表し、「値」は、ブロックチェーン内の有効トランザクション(ライトセットを含む)におけるキーの直近の発生に存在する値を表す。例えば、キー「バランス」が、異なるブロック(<「バランスA」:30>としてブロック#1、<「バランスB」:50>としてブロック#20、<「バランスC」:70>としてブロック#45)内の3つの有効トランザクションに存在する場合、状態データベース124においてキー「バランス」が、(直近ブロックから)値70と共に1度だけ出現し得る。
ネットワーク100は、また、検証データベース116を含み、検証データベース116は、状態データベース124のサブセットを記憶する。サブセットは、所定の数の直近ブロック128に対応する。図1Aは、状態L 120L、状態M 120M、および状態N 120Nについての状態情報を記憶する検証データベース116を示している。よって、示される例では、検証データベース116内に3つの状態120が示されている。状態120に等しい数のブロック(図示せず)が存在すると、概して理解されるべきである。実際の実施形態では、検証データベース116内に3つより多くの状態120、100個の状態120などが概して存在する。検証データベース116に対応するブロックの所定の数は、ブロックチェーン・ネットワークまたはネットワーク100の性能、ブロック内のトランザクションの数、ならびに検証データベース116内の状態120を記憶するために使用されるメモリのサイズおよび性能を含む、多くの要因に依存する。
トランザクション104のシミュレーション108は、そのシミュレーション108の間にトランザクション104によって実行される照会112Aの結果に影響を受けることがないため、検証データベース116は、最後の数ブロックによって引き起こされる状態変化120を含み、検証156の間、ブロックチェーン・ネットワークは、(他のコミットされたトランザクション160によって)もたらされる状態変化を確認する。検証データベース116に関連するのは、最小高さ164であり、最小高さ164は、検証データベース116内の最も古いブロック120の位置を識別するマーカである。図1Aでは、最小高さ164は、状態L 120Lに現在対応し、より多くのブロックがブロックチェーンに追加され、状態120が状態データベース124に追加されるときに、上向きに調整される。
(Hyperledger Fabricにおいて実施されるような)従来のブロックチェーン検証構成において、ブロック内に存在するトランザクションの検証中に、照会(シミュレーション中にトランザクションによって実行される)が、結果が同じであることを確認するために状態データベース124に対して実行される。これに対して、本出願は、検証を効率的に実行するために、著しく小さなデータ・セット(検証データベース116)をメモリ内に維持する。
トランザクション提案104は、状態データベース124に対するシミュレーション照会112Aとしてシミュレーション108により実行される。シミュレーション108の間、トランザクションは、完全に実行されるが、状態データベース124に対するいかなる変更もコミットされない。その代わりに、それらは、バイナリ形式で記録されバンドルされる。これは、リード-ライトセットと呼ばれる。リードセットは、トランザクションによって読み出されたデータ項目およびトランザクションによって実行された照会についての情報を含む。ライトセットは、トランザクションが更新したいデータ項目についての情報を含む。
状態データベース124は、シミュレーション108にリードセット132を提供し、それは、後の検証のためにシミュレーション結果136を一時的に記憶する。一実施形態では、検証データベース116は、ディスクまたは他の大規模記憶装置ではなく、ブロックチェーン・ノード・メモリに提供される。別の実施形態では、検証データベース116は、ディスクまたは他の大規模記憶装置ではなく、ブロックチェーン・ノードSSDメモリ(ソリッド・ステート・ディスク)内に提供される。
それぞれの参加しているブロックチェーン・ノードは、トランザクション144に署名することによってシミュレーションされたトランザクション136をエンドースする。署名されたトランザクション144は、オーダラ148に移送され、オーダラ148は、署名されたトランザクション144を実行順序で置く。次に、順序付けされたトランザクション152は、検証156を実行するブロックチェーン・ノードに送信される。検証156の間、検証照会112Bは、検証データベース116に提示される。検証データベース116は、全てのデータ項目についてのバージョン数を含む結果で応答する。結果は、シミュレーション結果136と比較される。それらが合致する場合、検証は成功であり、順序付けされたトランザクション156は、新規ブロック(図示されない)内でグループ化され、新たな状態は、コミットされた状態160になる。
新規ブロック120がブロックチェーンにコミットされるとき、それは、最新ブロック120として状態データベース124に追加され、最新ブロック120は、図1Aにおける状態O 120Oに対応する。新たな状態120もまた、最も古い状態(状態L 120L)を削除した後、状態O 120Oとして検証データベース116に追加される。最小高さ164は、状態L 120Lの代わりに状態M 120Mを検証データベース116内の最も古い状態120として反映するように調整される。
図1Bは、例としての実施形態による、ブロックチェーンを用いた状態データベース・パラメータの別の論理ネットワーク図を示す。図1Bを参照すると、ネットワーク100は、状態データベース124を含み、状態データベース124は、ブロックチェーン内の各ブロックに対応する状態120を含む。シミュレーション108の間に、シミュレーション高さ170は、状態データベース124内の最新状態120を観測することによって、それぞれのシミュレーションするブロックチェーン・ノードにより判断される。図1Bに示される例では、シミュレーション高さ170は、状態L 120Lに対応する。
その後で、新規ブロックについてのトランザクションが検証される。検証の一部として、検証高さ174は、再び状態データベース124内の最新状態120を観測することによって、それぞれの検証するブロックチェーン・ノードにより判断される。図1Bに示される例では、検証高さ174は、状態N 120Nに対応する。シミュレーションに続くある時に検証が発生するため、追加のブロックは、状態データベース124内のより多くの対応する状態120で、ブロックチェーンにコミットされてもよい。したがって、図1Bに示されるように、検証の間状態データベース124内にはN個の状態120Nが存在するが、シミュレーションの間はL個の状態120Lが存在する。
図2Aは、例としての実施形態による、ブロックチェーン・アーキテクチャ構成200を示す。図2Aを参照すると、ブロックチェーン・アーキテクチャ200は、あるブロックチェーン要素、例えばブロックチェーン・ノードのグループ202を含み得る。ブロックチェーン・ノード202は、1つまたは複数のノード204~210を含み得る(これらのノードは単なる例として示されている)。これらのノードは、ブロックチェーン・トランザクション追加および検証プロセス(合意)などのいくつかの活動に参加する。ブロックチェーン・ノード204~210のうちの1つまたは複数は、トランザクションをエンドースしてもよく、アーキテクチャ200内の全てのブロックチェーン・ノードに順序付けサービスを提供し得る。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層216に記憶されるブロックチェーン不変性台帳に書き込みしようとしてもよく、そのコピーもまた、支持物理インフラストラクチャ214上に記憶され得る。ブロックチェーン構成は、1つまたは複数のアプリケーション224を含んでもよく、アプリケーション224は、記憶されたプログラム/アプリケーション・コード220(例えば、チェーンコード、スマート・コントラクトなど)にアクセスし実行するために、アプリケーション・プログラミング・インターフェース(API)222にリンクされる。プログラム/アプリケーション・コード220は、参加者によって求められるカスタマイズされた構成に従って生成されてもよく、それ自体の状態を維持し、それ自体の資産を制御し、外部情報を受信し得る。これは、トランザクションとして展開され、分散型台帳に付加することによって、全てのブロックチェーン・ノード204~210上にインストールされ得る。
ブロックチェーン・ベースまたはプラットフォーム212は、ブロックチェーン・データの様々な層、サービス(例えば、暗号による信用サービス、仮想実行環境など)、ならびに新たなトランザクションを受信および記憶し、データ・エントリにアクセスしようとしている監査役へのアクセスを提供するために使用され得る支持物理コンピュータ・インフラストラクチャを含み得る。ブロックチェーン層216は、プログラム・コードを処理し物理インフラストラクチャ214に関与するのに必要な仮想実行環境へのアクセスを提供するインターフェースを公開し得る。暗号による信用サービス218は、資産交換トランザクションなどのトランザクションを確認し、情報を秘密のままにするために使用され得る。
図2Aのブロックチェーン・アーキテクチャ構成は、公開された1つまたは複数のインターフェースおよび提供されるサービスを介して、ブロックチェーン・プラットフォーム212によってプログラム/アプリケーション・コード220を処理および実行し得る。コード220は、ブロックチェーン資産を制御し得る。例えば、コード220は、データを記憶および移転してもよく、スマート・コントラクトの形態でノード204~210によって実行されてもよく、その実行の影響を受ける条件または他のコード要素とチェーンコードを関連付けられてもよい。非限定的な例として、スマート・コントラクトは、変更、更新などの影響を受けるリマインダ、更新、または他の通知、あるいはそれらの組み合わせを実行するために生成され得る。スマート・コントラクト自体は、認可およびアクセス要件、ならびに台帳の使用に関連するルールを識別するために使用され得る。例えば、遮断されるシミュレーション照会226は、ブロックチェーン層216に含まれる1つまたは複数の処理エンティティ(例えば、仮想機械)によって処理され得る。シミュレーション結果228は、状態データベース124のシミュレーション高さ170を含み得る。物理インフラストラクチャ214は、本明細書で説明されるデータまたは情報のいずれかを取り出すために利用され得る。
チェーンコード内で、スマート・コントラクトは、高レベル・アプリケーションおよびプログラミング言語を介して生成されてもよく、次いでブロックチェーン内のブロックに書き込まれてもよい。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散型ネットワーク)を用いて登録される、記憶される、または複製される、あるいはそれらの組み合わせである実行可能コードを含み得る。トランザクションは、スマート・コントラクトに関連付けられた条件が満たされていることに応答して実行され得るスマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼性のある修正をトリガし得る。スマート・コントラクト実行により生じるブロックチェーン台帳への修正は、1つまたは複数の合意プロトコルを通してブロックチェーン・ピアの分散型ネットワーク全体で自動的に複製され得る。
スマート・コントラクトは、キーバリュー・ペアのフォーマットでブロックチェーンにデータを書き込み得る。さらに、スマート・コントラクト・コードは、ブロックチェーンに記憶された値を読み出し、アプリケーション動作においてそれらを使用し得る。スマート・コントラクト・コードは、様々な論理演算の出力をブロックチェーン内に書き込み得る。コードは、仮想機械または他のコンピューティング・プラットフォームにおいて一時データ構造を生成するために使用され得る。ブロックチェーンに書き込まれたデータは、公開であってもよく、または秘密として暗号化され維持されてもよく、あるいはその両方であってもよい。スマート・コントラクトによって使用され/生成される一時データは、供給される実行環境によってメモリ内に保持され、次いでブロックチェーンに必要なデータが識別された時点で削除される。
チェーンコードは、追加の特徴と共に、スマート・コントラクトのコード解釈を含み得る。本明細書で説明されるように、チェーンコードは、コンピューティング・ネットワーク上に展開されるプログラム・コードであってもよく、そこで、チェーンコードは合意プロセス中にチェーン・バリデータによって共に実行され検証される。チェーンコードは、ハッシュを受信し、以前記憶された特徴抽出器の使用により生成されるデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取り出す。ハッシュ識別子のハッシュと記憶された識別子テンプレート・データから生成されるハッシュとが合致する場合、チェーンコードは、認可キーを要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連するブロックチェーン・データに書き込み得る。図2Aにおいて、状態データベース124に対するシミュレーション照会は、ボックス226において遮断される。1つの機能は、ボックス228内にシミュレーション高さを含むシミュレーション結果を提供することであってもよく、シミュレーション結果は、ノード204~210のうちの1つまたは複数に提供され得る。
図2Bは、例としての実施形態による、ブロックチェーンのノード間のトランザクション・フロー250の例を示す。図2Bを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード260によってエンドーシング・ピア・ノード281に送信されたトランザクション提案291を含み得る。エンドーシング・ピア281は、クライアント署名を確認し、トランザクションを開始するためにチェーンコード関数を実行し得る。出力は、チェーンコード結果、チェーンコードにおいて読み出されたキー/値バージョンのセット(リードセット)、およびチェーンコードに書き込まれたキー/値のセット(ライトセット)を含み得る。提案応答292は、承認された場合、エンドースメント署名と共にクライアント260に返送される。クライアント260は、トランザクション・ペイロード293内にエンドースメントを集め、順序付けサービス・ノード284にそれをブロードキャストする。順序付けサービス・ノード284は、次いで、チャネル上の全てのピア281~283に順序付けされたトランザクションをブロックとして配信する。ブロックチェーンへの引き渡しの前に、各ピア281~283は、トランザクションを検証し得る。例えば、ピアは、指定されたピアの正しい分配が結果に署名し、トランザクション・ペイロード293に対して署名を認証したことを保証するために、エンドースメント・ポリシーをチェックし得る。
再び図2Bを参照すると、クライアント・ノード260は、ピア・ノード281への要求を構築し送信することによって、トランザクション291を開始する。ピア・ノード281は、エンドーサである。クライアント260は、NODE、JAVA(登録商標)、PYTHONなどのサポートされるソフトウェア開発キット(SDK)を活用するアプリケーションを含んでもよく、それは、利用可能なAPIを利用してトランザクション提案を生成する。データが読み出され得る、または台帳に書き込まれ得る(資産についての新たなキーバリュー・ペアを書き込む)、あるいはその両方であるように、提案は、チェーンコード関数を呼び出すための要求である。SDKは、トランザクション提案を適切に設計されたフォーマット(例えば、リモート・プロシージャ・コール(RPC)上のプロトコル・バッファ)にパッケージ化し、トランザクション提案についての一意の署名を作り出すためにクライアントの暗号による信用証明書を取るためのシム(Shim)の役割をし得る。Java(登録商標)およびJava(登録商標)に基づく商標およびロゴは、Oracleまたはその関連会社、あるいはその両方の商標または登録商標である。
それに応答して、エンドーシング・ピア・ノード281は、(a)トランザクション提案がうまく形成されること、(b)トランザクションが既に過去にサブミットされていないこと(リプレイ・アタック防御)、(c)署名が有効であること、(d)サブミッタ(例におけるクライアント260)が提案された動作をそのチャネル上で実行するように適切に認可されていること、を確認し得る。エンドーシング・ピア・ノード281は、呼び出されたチェーンコード関数への引数としてトランザクション提案入力を取り得る。チェーンコードは、次いで、応答値、リードセット、およびライトセットを含むトランザクション結果を作り出すために現在の状態データベースに対して実行される。しかしながら、この時点では台帳に更新は行われない。292において、値のセットは、エンドーシング・ピア・ノード281の署名と共に、消費するアプリケーションについてのペイロードを解析するクライアント260のSDKに提案応答292として渡される。
それに応答して、クライアント260のアプリケーションは、エンドーシング・ピアの署名を検査/確認し、提案応答が同一であるかどうかを判断するために提案応答を比較する。チェーンコードが台帳に照会のみをした場合、アプリケーションは、クエリ応答を検査し、典型的には順序付けノード・サービス284にトランザクションをサブミットしない。クライアント・アプリケーションが、台帳を更新するために順序付けノード・サービス284にトランザクションをサブミットする予定である場合、指定されたエンドースメント・ポリシーがサブミットの前に満たされている(即ち、トランザクションに必要な全てのピア・ノードがトランザクションをエンドースした)かどうかを、アプリケーションが判断する。ここで、クライアントは、トランザクションに対する複数の当事者のうちの1つだけを含み得る。この場合、各クライアントが、それ自体のエンドーシング・ノードを有してもよく、各エンドーシング・ノードは、トランザクションをエンドースする必要がある。アーキテクチャは、アプリケーションが、応答を検査しないように選択するか、またはエンドースされていないトランザクションを転送する場合であっても、エンドースメント・ポリシーが依然としてピアによって施行され、コミット検証段階において支持されるようにする。
検査成功後、ステップ293において、クライアント260は、エンドースメントをトランザクション内に集め、トランザクション・メッセージ内のトランザクション提案および応答を順序付けノード284にブロードキャストする。トランザクションは、リードセット/ライトセット、エンドーシング・ピアの署名、およびチャネルIDを含み得る。順序付けノード284は、その動作を実行するためにトランザクションの内容全体を検査する必要はなく、その代わりに、順序付けノード284は、ネットワーク内の全てのチャネルからトランザクションを単に受信し、チャネルによって時系列にそれらを順序付けし、チャネル毎にトランザクションのブロックを生成し得る。
トランザクションのブロックは、順序付けノード284からチャネル上の全てのピア・ノード281~283に配信される。ブロック内のトランザクション294は、任意のエンドースメント・ポリシーが満たされていることを保証するため、およびリードセットがトランザクション実行によって生成されて以降にリードセット変数についての台帳状態に変更がなかったことを保証するために、検証される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ295において、各ピア・ノード281~283は、ブロックをチャネルのチェーンに付加し、有効トランザクション毎に、ライトセットが、現在の状態データベースにコミットされる。トランザクション(呼び出し)が、チェーンに不変的に付加されていることをクライアント・アプリケーションに通知するため、およびトランザクションが有効化されたかまたは無効化されたかを通知するために、イベントが発行される。
図3は、許可型ブロックチェーン・ネットワーク300の例を示す。許可型ブロックチェーン・ネットワーク300は、分散型で、非集中型ピアツーピア・アーキテクチャ、ならびにユーザの役割および許可を管理する証明書権限318を特徴とする。この例では、ブロックチェーン・ユーザ302は、許可型ブロックチェーン・ネットワーク310にトランザクションをサブミットし得る。この例では、トランザクションは、展開、呼び出し、または照会であってもよく、SDKを活用するクライアント側アプリケーションを通して、REST APIを通して直接、などで発行されてもよい。信頼性のあるビジネス・ネットワークは、監査役(例えば、米国株式市場における証券取引委員会)などの規定者システム314へのアクセスを提供し得る。一方、ノード308のブロックチェーン・ネットワーク事業者システムは、規制者システム310を「監査役」として、ブロックチェーン・ユーザ302を「クライアント」として登録するなど、メンバ許可を管理する。監査役は、台帳を照会することのみに制限されてもよく、クライアントは、ある種類のチェーンコードを展開し、呼び出し、照会するように認可されてもよい。
ブロックチェーン開発者システム316は、チェーンコードおよびクライアント側アプリケーションを書き込む。ブロックチェーン開発者システム316は、RESTインターフェースを通してネットワークに直接チェーンコードを展開し得る。従来のデータ・ソース330からの信用証明書をチェーンコードに含めるために、開発者システム316は、帯域外接続を使用して、データにアクセスし得る。この例では、ブロックチェーン・ユーザ302は、ピア・ノード312を通してネットワークに接続する。任意のトランザクションを続行する前に、ピア・ノード312は、証明書権限318からユーザの登録およびトランザクション証明書を取り出す。いくつかの場合において、ブロックチェーン・ユーザは、許可型ブロックチェーン・ネットワーク310上で取引するために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを駆動しようとするユーザは、従来のデータ・ソース330上で彼らの信用証明書を確認することを必要とされ得る。ユーザの認可を確かめるために、チェーンコードは、従来の処理プラットフォーム320を通してこのデータへの帯域外接続を使用し得る。
図4は、例としての実施形態による、ブロックチェーン状態シミュレーションおよび検証を実行するためのシステム・メッセージング図を示す。図4を参照すると、システム図400が、1つまたは複数のブロックチェーン・ノード410、状態データベース420、および検証データベース430を含む。状態データベース420は、概して、ブロックチェーン・ノード410によってアクセスされるディスクベースの記憶デバイス上に記憶されるが、検証データベース430は、概してブロックチェーン・ノード410によって制御されるシステムRAMまたはソリッド・ステート・デバイス(SSD)を含む半導体ベースの記憶デバイス上に記憶される。半導体ベースの記憶デバイスは、ディスクベースの記憶デバイスよりも高速の性能特性を有すると知られている。
ブロックチェーン・ノード410は、まず、検証データベース430を生成する。状態情報は、状態データベース420から検証データベース430に移送416される。状態情報416は、ブロックチェーンについての所定の数の直近ブロックに対応する。検証データベース430が開設されると、ブロックチェーン・ノード410は、ブロックチェーン・トランザクション425を受信し得る。ブロックチェーンについての直近ブロックの所定の数は、検証データベース430に割り当てられることが可能なメモリ量、メモリの性能、メモリと比較した状態データベース420の性能、および新規ブロックを生成するのに影響があり得るタイミング要件に依存する変数である。
検証データベース430は、最小高さ164を含み、最小高さ164は、検証データベース430において利用可能なデータを有する最も古いブロック(即ち、最も古い状態120)の高さである。ブロックチェーン・ノード410は、各トランザクションのシミュレーション高さが検証データベース430に維持されるデータに対応する最小高さ164以上であることを確認することによって、新規ブロック内の各トランザクションが検証データベース430を用いて検証され得ると判断する。
トランザクション425を受信することに応答して、ブロックチェーン・ノード410は、トランザクション435をシミュレーションする。ブロックチェーン・ノード410が状態データベース420への照会436を遮断し、ブロックチェーン・ノード410へのシミュレーション結果437をレビューするときに、トランザクションはシミュレーションされる。一実施形態では、ブロックチェーン・ノード410は、各シミュレーションされたトランザクション435についてブロックチェーン高さを判断する。ブロックチェーン高さは、シミュレーション時点におけるブロックチェーン内のブロックの数であり、シミュレーション高さ170をブロックチェーン高さの最小値として設定する。別の実施形態では、ブロックチェーン・ノード410は、シミュレーション高さ170を複数のトランザクションについての最小ブロックチェーン高さとして設定する。別の実施形態では、ブロックチェーン・ノード410は、各シミュレーションされるトランザクションについてブロックチェーン高さを判断し、各シミュレーションされるトランザクションについて状態データベース124に対する1つまたは複数の照会を遮断し、1つまたは複数のデータ・バージョンを取得し、1つまたは複数のデータ・バージョンの最大データ・バージョンをシミュレーション高さ170として選択する。
次に、ブロックチェーン・ノード410は、トランザクション440を検証する。ブロックチェーン・ノード410は、検証データベース430から検証データ441を要求し、検証データベースは、それに応答して検証結果442を提供する。検証440は、シミュレーション435の間に状態データベース・スナップショットの識別を記録することと、シミュレーション435と検証440との間で状態データベース420に差異があるかどうかを検出することと、を含む。検証440の間、ブロックチェーン・ノード410は、状態データベース420内のファントム項目(phantom item)を識別し、トランザクションについて1つまたは複数のファントム項目を識別することに応答して、トランザクションを無効として記録する。ファントム項目は、反復される項目である。
シミュレーション結果437が検証結果442と一貫している場合、ブロックチェーン・ノード410は、ブロックチェーンへの状態更新をコミットする。トランザクションは、ブロック(図示せず)に記憶され、状態データベースは、更新451され、検証データベースは、更新452される。ブロックチェーン・ノード410は、新規ブロック内の有効トランザクションについての書き込みを状態データベース420および検証データベース430の両方へ更新として適用し、検証データベース430内の最も古いブロックに対応するデータを削除し、検証データベース430に維持されるデータに対応するブロックを反映するように最小高さ164を調整する。状態データベース420、検証データベース430、およびブロックがコミットされた更新を含むと、コミット段階が完了する。
図5Aは、例としての実施形態による、ブロックチェーンにおいて検証データベースを用いてトランザクションをシミュレーションおよび検証する例としての方法のフロー図500を示す。図5Aを参照すると、方法500は、示されるステップのうちの1つまたは複数を含み得る。ブロック504において、ブロックチェーン・ノードは、検証データベース116を生成する。検証データベース116は、ブロックチェーンのための状態データベース124から生成され、所定の数の直近ブロックに対応する状態情報を含む。検証データベース116は、状態データベース124よりも高速なメモリに記憶され、それによって、従来のシステムよりも高速なトランザクション検証がもたらされる。
ブロック508において、受信されるトランザクションは、ブロックチェーン・ノードによってシミュレーションされる。状態データベース124に対する照会は遮断され、データ項目についての情報が、照会の結果として返される。一実施形態において、データ項目は、1つまたは複数のトランザクションについてのシミュレーション高さを含み得る。シミュレーション高さは、トランザクションのシミュレーション時点におけるブロックチェーン内のブロック数に対応する。
ブロック512において、ブロックチェーン・ノードは、各トランザクションが検証データベース116を用いて検証され得ると判断する。これは、検証データベース116が、より大きな、かつ低速の状態データベース124の代わりにトランザクション検証のために使用されることを可能にし、それがより少ないトランザクション検証時間をもたらす。
ブロック516において、新規ブロック内の各トランザクションは、検証データベース116を用いて検証される。一実施形態では、検証は、検証高さ174とシミュレーション高さ170とを比較することを含み、検証高さ174は、検証時点におけるブロックチェーン内のブロック数に対応する。
ブロック520において、新たに検証されたブロックが、ブロックチェーンにコミットされる。状態データベース124は、新規ブロックに対応して付加された新たな状態120を有する。新規ブロックに対応する新たな状態120が検証データベース116に追加される一方で、検証データベースにおける最も古い状態120は、削除される。これは、所定の数の直近ブロックに対応するいくつかの状態120を記憶するように検証データベース116を維持する。最後に、最小高さ164のパラメータが、検証データベース116における最も古い状態120の高さを反映するように更新される。
図5Bは、例としての実施形態による、ブロックチェーンにおいて分岐チェーン検証を解決する例としての方法のフロー図550を示す。図5Bを参照すると、方法550は、また、以下のステップのうちの1つまたは複数を含み得る。
ブロック554において、ブロックチェーン・ネットワークは、ブロックチェーンに分起点を生成する新規ブロックを識別する。アプリケーションが複数の有効トランザクション履歴または分岐チェーンの間で選択しなければならないとき、合意ソフトウェア・アプリケーションのユーザは、典型的には警告される。これは、分岐するブロックチェーンの存在が、二重使用の目的でトランザクション履歴を変更するための他のユーザによる意図的な攻撃を示し得るためである。
ブロック558において、ブロックチェーン・ネットワークは、ブロックチェーン検証権限(validating authority)の制限されたセットを定義する。ブロックチェーン検証権限(VA)の制限されたセットは、ブロックが作り出された時点で各ブロックについて定義され、これらの検証権限は、そのブロックを起点とする任意の分岐点の曖昧性を回避するために使用される。
ブロック562において、ブロックチェーン・ネットワークは、検証権限のパーセンテージに基づいて分岐チェーンを評価する。検証権限のセット内の各検証権限は、完全な検証権限セットのうちの結合された権限の指定パーセンテージを占めるように理解され得る。分岐チェーンは、各分岐チェーンを承認している検証権限のパーセンテージによって評価される。
ブロック566において、ブロックチェーン・ネットワークは、最高パーセンテージを有する分岐チェーンを合意チェーンとして割り当てる。検証権限承認のパーセンテージは、分岐チェーンの幅と呼ばれ得る。最高パーセント承認を有する分岐チェーンは、最も幅の広いチェーンと考えられ、(チェーンが全ての他の合意ルールに従うと仮定して)合意チェーンとして受け取られる。分岐点を評価し、かつ特定の権限が分岐チェーンに署名しているとき、同一権限を有する同一の分岐チェーンに再び署名することによって、幅は増加しない。
ブロック570において、ブロックチェーン・ネットワークは、検証権限のサブセットを用いて新規ブロックを検証する。検証権限リストは、最高ランクの選択されたブロック署名者の小さなグループのように小さくてもよい。検証権限リストが小さいことによって、分岐点を比較する際のチェックがより速くなり、台帳への変更を確認するのがより早くなり、結果としてより高速のトランザクション/ブロック検証がもたらされる。
図6Aは、例としての実施形態による動作の例としての方法のうちの1つまたは複数に従って、ブロックチェーン上の様々な動作を実行するように構成される例としての物理インフラストラクチャを示す。図6Aを参照すると、例としての構成600Aは、ブロックチェーン620およびスマート・コントラクト630を有する物理インフラストラクチャ610を含み、それは、例としての実施形態のうちのいずれかに含まれる動作ステップ612のいずれかを実行し得る。ステップ/動作612は、1つまたは複数のフロー図またはロジック図あるいはその両方において説明され、または示されるステップのうちの1つまたは複数を含み得る。ステップは、コンピュータ・システム構成の物理インフラストラクチャ610上に存在する、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方に書き込まれ、または読み出される、出力または書き込み情報を表し得る。データは、実行されたスマート・コントラクト630またはブロックチェーン620あるいはその両方から出力され得る。物理インフラストラクチャ610は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはそれらの組み合わせを含み得る。
図6Bは、例としての実施形態による、ブロックチェーン上のスマート・コントラクト条件を施行するように構成される契約当事者と仲介サーバとの間の例としてのスマート・コントラクト構成を示す。図6Bを参照すると、構成650は、1つまたは複数のユーザ・デバイス652または656あるいはその両方を明示的に識別するスマート・コントラクト630によって駆動される、通信セッション、資産移転セッション、またはプロセスもしくは手続きを表し得る。実行、動作、およびスマート・コントラクト実行の結果が、サーバ654によって管理され得る。スマート・コントラクト630の内容は、スマート・コントラクト・トランザクションに対する当事者であるエンティティ652および656のうちの1つまたは複数によるデジタル署名を必要とし得る。スマート・コントラクト実行の結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書き込まれ得る。
上記実施形態は、ハードウェアにおいて、プロセッサにより実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、または上記の組み合わせにおいて実施され得る。コンピュータ・プログラムは、記憶媒体などのコンピュータ可読媒体上で具現化され得る。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(「RAM」)、フラッシュ・メモリ、読み出し専用メモリ(「ROM」)、消去可能プログラマブル読み出し専用メモリ(「EPROM」)、電気的消去可能プログラマブル読み出し専用メモリ(「EEPROM(登録商標)」)、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク読み出し専用メモリ(「CD-ROM」)、または当技術分野において既知の任意の他の形態の記憶媒体に存在し得る。
プロセッサが記憶媒体から情報を読み出し、かつ情報を書き込み得るように、例示的記憶媒体は、プロセッサに連結され得る。代替的には、記憶媒体が、プロセッサと一体であってもよい。プロセッサおよび記憶媒体は、特定用途向け集積回路(「ASIC」)に存在してもよい。代替的には、プロセッサおよび記憶媒体は、個別のコンポーネントとして存在してもよい。例えば、図7は、例としてのコンピュータ・システム・アーキテクチャ700を示し、それは、上述したコンポーネントのうちのいずれかを表してもよく、または上述したコンポーネントのうちのいずれかにおいて一体化されてもよい、などである。
図7は、本明細書で説明されるアプリケーションの実施形態の使用または機能性の範囲に関するいかなる限定も示唆することを意図しない。それにかかわらず、コンピューティング・ノード700は、実装されること、または上述した機能性のいずれかを実行すること、あるいはその両方が可能である。
コンピューティング・ノード700には、コンピュータ・システム/サーバ702が存在し、コンピュータ・システム/サーバ702は、多数の他の汎用または専用コンピューティング・システム環境または構成を用いて動作可能である。コンピュータ・システム/サーバ702を用いた使用に適当であり得る周知のコンピューティング・システム、環境、または構成、あるいはそれらの組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル家電、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されない。
コンピュータ・システム/サーバ702は、コンピュータ・システムによって実行されている、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的状況において説明され得る。概して、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ702は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型クラウド・コンピューティング環境において実施され得る。分散型クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ記憶デバイスを含むローカルおよびリモート両方のコンピュータ・システム記憶媒体に位置し得る。
図7に示されるように、クラウド・コンピューティング・ノード700内のコンピュータ・システム/サーバ702は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ702のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット704、システム・メモリ706、およびシステム・メモリ706を含む様々なシステム・コンポーネントをプロセッサ704に連結するバスを含み得るが、これらに限定されない。
バスは、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
コンピュータ・システム/サーバ702は、典型的には多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ702によってアクセス可能な任意の利用可能な媒体であってもよく、それは、揮発性媒体および不揮発性媒体の両方、リムーバブル媒体および非リムーバブル媒体の両方を含む。一実施形態において、システム・メモリ706は、他の図面のフロー図を実施する。システム・メモリ706は、コンピュータ・システム可読媒体を、ランダム・アクセス・メモリ(RAM)710またはキャッシュ・メモリ712あるいはその両方などの揮発性メモリの形態で含み得る。コンピュータ・システム/サーバ702は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単なる例として、記憶システム714は、非リムーバブル不揮発性磁気媒体(図示せず、かつ典型的には「ハード・ドライブ」と呼ばれる)から読み出し、かつ書き込むために提供され得る。図示されないが、リムーバブル不揮発性磁気ディスク(例えば、「フロッピー(登録商標)・ディスク」)からの読み出しおよび書き込みのための磁気ディスク・ドライブ、ならびにCD-ROM、DVD-ROM、または他の光学媒体などのリムーバブル不揮発性光ディスクからの読み出しまたは書き込みのための光学ディスク・ドライブが、提供され得る。このような場合、それぞれが、1つまたは複数のデータ媒体インターフェースによってバスに接続され得る。以下でさらに示され、説明されるように、メモリ706は、本出願の様々な実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
プログラム・モジュール718のセット(少なくとも1つ)を有するプログラム/ユーティリティ716は、限定ではなく例として、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ706に記憶され得る。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそれらの何らかの組み合わせは、ネットワーキング環境の実施を含み得る。プログラム・モジュール718は、概して、本明細書に説明されるような、本出願の様々な実施形態の機能または方法論あるいはその両方を実行する。
当業者に理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本出願の態様は、完全なハードウェア実施形態、完全なソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書で「回路」、「モジュール」、もしくは「システム」と全て概して呼ばれ得るソフトウェアおよびハードウェア態様を組み合わせた実施形態の形態を取ってもよい。さらに、本出願の態様は、その上で具現化されるコンピュータ可読プログラム・コードを有する、1つまたは複数のコンピュータ可読媒体において具現化されるコンピュータ・プログラム製品の形態を取ってもよい。
コンピュータ・システム/サーバ702は、また、キーボード、ポインティング・デバイス、ディスプレイ722などの1つもしくは複数の外部デバイス720、ユーザがコンピュータ・システム/サーバ702と対話することを可能にする1つもしくは複数のデバイス、またはコンピュータ・システム/サーバ702が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはそれらの組み合わせと通信し得る。このような通信は、I/Oインターフェース724を介して発生し得る。さらに、コンピュータ・システム/サーバ702は、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはそれらの組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ726を介して通信し得る。図示されるように、ネットワーク・アダプタ726は、バスを介してコンピュータ・システム/サーバ702の他のコンポーネントと通信する。図示されないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネント、あるいはその両方が、コンピュータ・システム/サーバ702と併せて使用され得ると理解されるべきである。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶システムなどを含むが、これらに限定されない。
システム、方法、および非一過性コンピュータ可読媒体のうちの少なくとも1つの例としての実施形態は、添付図面に示され、前述の詳細な説明に記載されているが、本出願は、開示される実施形態に限定されず、以下の特許請求の範囲によって明記され定義されるように、多数の再配列、修正、および代用が可能であると理解されたい。例えば、様々な図面のシステムのケイパビリティは、本明細書に説明されるモジュールもしくはコンポーネントのうちの1つもしくは複数によって、または分散型アーキテクチャにおいて実行されてもよく、送信機、受信機、またはその両方の対を含んでもよい。例えば、個々のモジュールによって実行される機能性の全てまたは一部が、これらのモジュールのうちの1つまたは複数によって実行され得る。さらに、本明細書に説明される機能性は、様々な時に、かつ様々なイベントに関連して、モジュールまたはコンポーネントの内部または外部で実行され得る。また、様々なモジュール間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、または複数のプロトコルを介して、あるいはその両方を介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接、または他のモジュールの1つもしくは複数を介して、あるいはその両方で、送信または受信され得る。
「システム」は、パーソナル・コンピュータ、サーバ、コンソール、携帯情報端末(PDA)、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意の他の適当なコンピューティング・デバイス、あるいはデバイスの組み合わせとして具現化され得ると、当業者は理解するであろう。「システム」によって実行される上述の機能を提示することは、いかなる方法でも本出願の範囲を限定することを意図しておらず、多くの実施形態のうちの一例を提供することを意図している。実際に、本明細書において開示された方法、システム、および装置は、コンピューティング技術と一貫した局所型および分散型形態で実施され得る。
本明細書において説明されたシステム特徴のうちのいくつかが、より詳細にはそれらの実施の独立性を強調するために、モジュールとして提示されていることに留意すべきである。例えば、モジュールは、カスタム超大規模集積(VLSI)回路またはゲート・アレイ、論理チップなどのオフザシェルフ半導体、トランジスタ、または他の個別のコンポーネントを含むハードウェア回路として実施され得る。モジュールは、また、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル論理デバイス、グラフィック処理ユニットなどのプログラマブル・ハードウェア・デバイスにおいて実施され得る。
モジュールは、また、様々な種類のプロセッサによる実行のためにソフトウェアにおいて少なくとも部分的に実施され得る。実行可能コードの識別されるユニットは、例えば、オブジェクト、手続き、または関数として組織され得るコンピュータ命令の1つまたは複数の物理または論理ブロックを含み得る。それにもかかわらず、識別されるモジュールの実行可能ファイルは、物理的に共に位置されなくともよいが、論理的に接合されるときに、モジュールを含み、モジュールについての述べられた目的を達成する、異なる位置に記憶された別個の命令を含んでもよい。さらに、モジュールは、コンピュータ可読媒体上に記憶されてもよく、コンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、またはデータを記憶するために使用される任意の他のそのような媒体であってもよい。
実際に、実行可能コードのモジュールは、単一の命令または多数の命令であってもよく、複数の異なるコード・セグメントにわたって、異なるプログラムの間に、かつ複数のメモリ・デバイスにわたって分散されてもよい。同様に、動作データは、モジュール内において本明細書に識別され、例示されてもよく、任意の適当な形態で具現化され、任意の適当な種類のデータ構造内に編成されてもよい。動作データは、単一のデータ・セットとして収集されてもよく、または異なる記憶デバイスを含む異なる位置にわたって分散されてもよく、かつ単にシステムまたはネットワーク上の電子信号として少なくとも部分的に存在してもよい。
本出願のコンポーネントは、本明細書において概して説明され図面に示されるように、多種多様な異なる構成において配列され設計され得ると、容易に理解されるであろう。したがって、実施形態の詳細な説明は、特許請求されているように本出願の範囲を限定することを意図しておらず、単に本出願の選択された実施形態を表している。
上記は、異なる順序のステップで実施されてもよく、または開示されたものとは異なる構成におけるハードウェア要素で実施されてもよく、あるいはその両方であってもよいと、当業者は容易に理解するであろう。したがって、本出願は、これらの好適な実施形態に基づいて説明されているが、ある修正、変形、および代替的な構造が明らかであることが、当業者には明らかであろう。
本出願の好適な実施形態が説明されてきたが、説明された実施形態が単なる例示であり、本出願の範囲は、均等物およびそれに対する修正(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど)の全範囲と共に考慮されるときに、添付の特許請求の範囲のみによって定義されるものと理解されるべきである。

Claims (16)

  1. 方法であって、
    ブロックチェーン・ノードが、メモリ内に検証データベースを生成するステップであって、前記検証データベースが、ブロックチェーンのための状態データベースの一部から得られる、前記ブロックチェーンの所定の数の直近ブロックに対応する状態データを含む、前記生成するステップと、
    前記ブロックチェーン・ノードが、1つまたは複数のトランザクションのそれぞれをシミュレーションするステップと、
    前記ブロックチェーン・ノードが、前記検証データベースに維持される前記状態データに対応する最も古いブロックの位置を識別する情報に基づいて、新規ブロック内の各トランザクションが前記検証データベースを用いて検証され得ると判断するステップと、
    前記ブロックチェーン・ノードが、前記検証データベースを用いて前記新規ブロック内の各トランザクションを検証するステップと、
    前記ブロックチェーン・ノードが、前記新規ブロックを前記ブロックチェーンにコミットし、前記検証データベースを更新するステップと、
    を含む、方法。
  2. 前記検証データベースを生成するステップが、
    前記検証データベースに前記状態データを含めるための前記所定の数の直近ブロックを判断するステップと、
    前記ブロックチェーンの前記所定の数の直近ブロックの状態情報を、前記状態データベースから前記状態データベースが記憶される記憶媒体より高速な記憶媒体に前記状態データとして移行するステップと、
    を含む、請求項1に記載の方法。
  3. 前記1つまたは複数のトランザクションのそれぞれをシミュレーションするステップが、
    それぞれのシミュレーションされたトランザクションについての前記ブロックチェーンの高さを判断するステップであって、前記ブロックチェーンの前記高さが、シミュレーション時における前記ブロックチェーン内のブロックの数に対応する、前記判断するステップと、
    シミュレーション高さを、前記ブロックチェーンの前記高さであるとして設定するステップと
    シミュレーションされたトランザクションのそれぞれについて前記状態データベースに対する1つまたは複数の照会をインターセプトするステップと、
    前記1つまたは複数の照会に応答した1つまたは複数のデータ・バージョンを取得するステップと、
    前記1つまたは複数のデータ・バージョンの最大のデータ・バージョンを前記シミュレーション高さとして選択するステップと、
    のうちの1つを含む、請求項1または2に記載の方法。
  4. 前記検証データベースが、最小高さを含み、前記最小高さが、前記検証データベースに状態データを有する最も古いブロックの高さであり、前記新規ブロック内の各トランザクションが前記検証データベースを用いて検証され得ると判断するステップが、
    前記位置を識別する情報に基づくこととして、各トランザクションの前記シミュレーション高さが前記最小高さ以上であることを確認するステップを含む、請求項3に記載の方法。
  5. 前記新規ブロックを前記ブロックチェーンにコミットするステップが、
    前記新規ブロック内の有効トランザクションについての書き込みを前記検証データベースおよび前記状態データベースに適用して状態を更新するステップと、
    前記検証データベースにおける最も古いブロックに対応するデータを削除するステップと、
    前記適用するステップおよび前記削除するステップの結果、前記検証データベースにおいて維持されるようになる状態データに対応する前記所定の数のブロックを反映して前記最小高さを調整するステップと、
    を含む、請求項4に記載の方法。
  6. 前記ブロックチェーン・ノードが、前記検証データベースに対して検証を実行することによって検証されているトランザクションについて前記状態データベース内のファントム項目を識別するステップと、
    前記ブロックチェーン・ノードが、前記トランザクションについての1つまたは複数のファントム項目を識別するステップに応答して、トランザクションを無効として記録するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 前記新規ブロック内の各トランザクションを検証するステップが、
    トランザクションがシミュレーションされる間に、前記状態データベースのスナップショットの識別を記録するステップと、
    前記トランザクションのシミュレーションと後続するトランザクションの検証との間で前記状態データベースに差異があるかどうかを検出するステップと、
    を含む、請求項5または6に記載の方法。
  8. システムであって、
    ブロックチェーン・ネットワークを備え、前記ブロックチェーン・ネットワークが、
    ブロックチェーン・トランザクションを検証する1つまたは複数のブロックチェーン・ノードを含み、各ブロックチェーン・ノードが、
    プロセッサと、
    前記プロセッサに連結されるメモリ・デバイスと
    を含み、前記メモリ・デバイスが、
    検証データベースを含み、前記検証データベースが、
    ブロックチェーンのための状態データベースの一部から得られる、前記ブロックチェーンの所定の数の直近ブロックに対応する状態データを含み、
    前記プロセッサが、
    1つまたは複数のトランザクションのそれぞれをシミュレーションし、
    前記検証データベースに維持される前記状態データに対応する最も古いブロックの位置を識別する情報に基づいて、新規ブロック内の各トランザクションが前記検証データベースを用いて検証され得ると判断し、
    前記検証データベースを用いて前記新規ブロック内の各トランザクションを検証し、
    前記新規ブロックを前記ブロックチェーンにコミットし、前記検証データベースを更新する
    ように構成される、システム。
  9. 前記検証データベースが、前記状態データベースが記憶される記憶媒体よりも高速な記憶媒体上に記憶され、前記状態データベースが、前記ブロックチェーン内の全てのブロックに対応する状態データを記憶する、請求項8に記載のシステム。
  10. 前記プロセッサによって前記1つまたは複数のトランザクションのそれぞれをシミュレーションすることは、前記プロセッサが、
    それぞれのシミュレーションされたトランザクションについての前記ブロックチェーンの高さを判断することであって、前記ブロックチェーンの前記高さが、シミュレーション時における前記ブロックチェーン内のブロックの数に対応する、前記判断することと、
    シミュレーション高さを、前記ブロックチェーンの前記高さであるとして設定することと、
    シミュレーションされたトランザクションのそれぞれについて前記状態データベースに対する1つまたは複数の照会をインターセプトすることと、
    前記1つまたは複数の照会に応答した1つまたは複数のデータ・バージョンを取得することと、
    前記1つまたは複数のデータ・バージョンの最大のデータ・バージョンを前記シミュレーション高さとして選択することと、
    のうちの1つを行うように構成されることを含む、請求項9に記載のシステム。
  11. 前記検証データベースが、最小高さを含み、前記最小高さが、前記検証データベースに状態データを有する最も古いブロックの高さに対応し、前記1つまたは複数のブロックチェーン・ノードによって、前記新規ブロック内の各トランザクションが前記検証データベースを用いて検証され得ると判断することは、
    前記位置を識別する情報に基づくこととして、前記1つまたは複数のブロックチェーン・ノードが、各トランザクションの前記シミュレーション高さが前記最小高さ以上であることを確認するように構成されることを含む、請求項10に記載のシステム。
  12. 前記プロセッサが前記新規ブロックを前記ブロックチェーンにコミットすることは、前記プロセッサが、
    前記新規ブロック内の有効トランザクションについての書き込みを前記検証データベースおよび前記状態データベースに適用して状態を更新し、
    前記検証データベースの最も古いブロックに対応するデータを削除し、
    前記適用および前記削除の結果、前記検証データベースにおいて維持されるようになる状態データに対応する前記所定の数のブロックを反映して前記最小高さを調整する、
    ように構成されることを含む、請求項11に記載のシステム。
  13. 前記プロセッサが、
    トランザクションが前記検証データベースに対して検証される間に、前記状態データベース内のファントム項目を識別し、
    前記プロセッサが前記トランザクションについての1つまたは複数のファントム項目を識別することに応答して、トランザクションを無効として記録する、
    ようにさらに構成される、請求項12に記載のシステム。
  14. 前記プロセッサが前記新規ブロック内の各トランザクションを検証することは、前記プロセッサが、
    1つまたは複数のトランザクションがシミュレーションされる間に、前記状態データベースのスナップショットの識別を記録し、
    前記トランザクションのシミュレーションと後続するトランザクションの検証との間で前記状態データベースに差異があるかどうかを検出する、
    ように構成されることを含む、請求項12または13に記載のシステム。
  15. コンピュータ・プログラムであって、請求項1ないし7のいずれか1項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
  16. 請求項15に記載のコンピュータ・プログラムを記録した、コンピュータ可読記憶媒体。
JP2020567217A 2018-06-07 2019-05-23 ブロックチェーンのための効率的な検証 Active JP7382108B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/002,150 US10972279B2 (en) 2018-06-07 2018-06-07 Efficient validation for blockchain
US16/002,150 2018-06-07
PCT/EP2019/063295 WO2019233773A1 (en) 2018-06-07 2019-05-23 Efficient validation for blockchain

Publications (2)

Publication Number Publication Date
JP2021525931A JP2021525931A (ja) 2021-09-27
JP7382108B2 true JP7382108B2 (ja) 2023-11-16

Family

ID=66810759

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020567217A Active JP7382108B2 (ja) 2018-06-07 2019-05-23 ブロックチェーンのための効率的な検証

Country Status (5)

Country Link
US (1) US10972279B2 (ja)
EP (1) EP3804217B1 (ja)
JP (1) JP7382108B2 (ja)
CN (1) CN112136291B (ja)
WO (1) WO2019233773A1 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11120434B2 (en) * 2018-06-08 2021-09-14 AnApp Technologies Limited System and method for securing transaction in a blockchain network
CN109033832B (zh) * 2018-06-22 2021-02-09 深圳前海益链网络科技有限公司 一种防范对区块链网络进行短暂分叉双花攻击的方法
GB201811263D0 (en) * 2018-07-10 2018-08-29 Netmaster Solutions Ltd A method and system for managing digital using a blockchain
US10671315B2 (en) 2018-08-17 2020-06-02 Bank Of America Corporation Blockchain architecture for selective data restore and migration
US11032063B2 (en) 2018-09-19 2021-06-08 International Business Machines Corporation Distributed platform for computation and trusted validation
US11940978B2 (en) * 2018-09-19 2024-03-26 International Business Machines Corporation Distributed platform for computation and trusted validation
US11212076B2 (en) 2018-09-19 2021-12-28 International Business Machines Corporation Distributed platform for computation and trusted validation
US11243917B2 (en) 2018-10-03 2022-02-08 International Business Machines Corporation Blockchain implementing reliability database
US11314749B2 (en) 2018-10-03 2022-04-26 International Business Machines Corporation Blockchain implementing reliability database
US11226971B2 (en) * 2018-10-03 2022-01-18 International Business Machines Corporation Blockchain implementing reliability database
WO2020073277A1 (zh) * 2018-10-11 2020-04-16 合肥达朴汇联科技有限公司 资源流的交易方法和装置
US10942916B2 (en) * 2018-11-03 2021-03-09 International Business Machines Corporation Fraud prevention via database referencing
US20200153605A1 (en) * 2018-11-13 2020-05-14 Accelor Ltd. Systems and methods for pre-executing transaction validation for blockchain applications
EP3549022B1 (en) * 2018-11-30 2021-08-18 Advanced New Technologies Co., Ltd. Testing platform for blockchain networks
US10671515B1 (en) * 2018-11-30 2020-06-02 Bank Of America Corporation Recording and playback of electronic event sequence in a distributed ledger system
US20220067147A1 (en) * 2018-12-03 2022-03-03 Nagravision S.A. Secure deployment and operation of a virtual platform system
US20200210170A1 (en) * 2018-12-27 2020-07-02 Hcl America Inc Resolving potential merge conflicts by utilizing a distributed blockchain framework
EP3545665B1 (en) * 2018-12-29 2023-05-03 Advanced New Technologies Co., Ltd. System and method for detecting replay attack
US11283634B2 (en) 2018-12-29 2022-03-22 Advanced New Technologies Co., Ltd. System and method for detecting replay attack
US11222099B2 (en) * 2019-02-08 2022-01-11 Synergex Group Methods, systems, and media for authenticating users using blockchains
US20200334229A1 (en) * 2019-04-17 2020-10-22 Hill-Rom Services, Inc. Medical device blockchain exchange
JP7256064B2 (ja) * 2019-04-18 2023-04-11 三菱重工業株式会社 管理システム、管理方法、上位ブロックチェーンの演算装置、及びプログラム
US10936581B2 (en) * 2019-08-30 2021-03-02 Advanced New Technologies Co., Ltd. Blockchain transaction processing method and apparatus
WO2019233500A2 (en) * 2019-09-12 2019-12-12 Alibaba Group Holding Limited Log-structured storage systems
WO2021130968A1 (ja) * 2019-12-26 2021-07-01 富士通株式会社 送信制御方法、送信制御プログラム及び情報処理装置
CN111274317A (zh) * 2020-01-07 2020-06-12 书生星际(北京)科技有限公司 多节点数据同步的方法和装置,以及计算机设备
US12099997B1 (en) 2020-01-31 2024-09-24 Steven Mark Hoffberg Tokenized fungible liabilities
WO2021207830A1 (en) * 2020-04-14 2021-10-21 Dfuse Platform Inc. Method and systems for indexing databases based on states and state transitions
CN111611310A (zh) * 2020-04-28 2020-09-01 深圳壹账通智能科技有限公司 区块链数据裁剪方法、节点恢复方法、装置、设备及介质
CN111694852B (zh) * 2020-05-28 2024-06-25 平安科技(深圳)有限公司 基于分布式事务的数据处理方法、装置、终端及存储介质
CN111680105B (zh) * 2020-06-15 2023-09-22 浙江创邻科技有限公司 基于区块链的分布式关系型数据库的管理方法及系统
CN111475501B (zh) * 2020-06-24 2020-10-30 支付宝(杭州)信息技术有限公司 区块链网络的数据清理方法及装置
CN112131235A (zh) * 2020-09-21 2020-12-25 中国电子科技网络信息安全有限公司 一种区块链系统内交易可信校验实现方法
CN112131236B (zh) * 2020-09-21 2022-07-05 中国电子科技网络信息安全有限公司 一种新型区块链并行处理性能优化方法
US11763296B2 (en) * 2020-09-22 2023-09-19 Bank Of America Corporation Information security using integrated data control ledgers
CN112417054B (zh) * 2020-12-09 2024-03-05 北京万古科技股份有限公司 分布式数据存储方法、数据查询方法、设备和存储介质
WO2022250047A1 (ja) * 2021-05-24 2022-12-01 株式会社Scalar ビザンチン故障を検知するデータ管理システム及び方法
EP4350518A1 (en) * 2021-05-24 2024-04-10 Scalar, Inc Data management system and method for detecting byzantine fault
US12020246B2 (en) 2021-06-01 2024-06-25 Bank Of America Corporation Intelligent distributed ledger consent optimizing apparatus for asset transfer
US11625698B2 (en) 2021-06-01 2023-04-11 Bank Of America Corporation Intelligent distributed ledger consent optimizing apparatus for asset transfer
US11811944B2 (en) 2021-07-15 2023-11-07 Bank Of America Corporation Electronic system for resource origination tracking
US11985256B2 (en) 2021-07-22 2024-05-14 Bank Of America Corporation Electronic system for automatic provisioning of limited-transferability electronic digital certificates associated with events
CN114691686B (zh) * 2021-12-30 2023-03-24 北京连琪科技有限公司 生成区块状态承诺的方法
WO2023201032A1 (en) * 2022-04-15 2023-10-19 Kanovitz Michael Ira Secure retrieval of off-network data by trusted network entities
US11930043B1 (en) 2023-02-28 2024-03-12 Blockaid Ltd Techniques for digital wallet integration and for scanning transactions using integrated modules
US12045826B1 (en) 2023-02-28 2024-07-23 Blockaid Ltd Techniques for decentralized application discovery and scanning

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180121909A1 (en) 2016-10-28 2018-05-03 International Business Machines Corporation System and method to dynamically setup a private sub-blockchain based on agility of transaction processing
JP2019520752A (ja) 2016-06-03 2019-07-18 ジエマルト・エス・アー 移動体通信ネットワークの分散型データベース内でアサーションを公開するため、およびモノのインターネットデバイスをパーソナライズするための方法および装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016161073A1 (en) 2015-03-31 2016-10-06 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
US20160299918A1 (en) * 2015-04-07 2016-10-13 Dell Software, Inc. Device Control Using a Secure Decentralized Transactional Ledger
US10304143B2 (en) 2016-05-05 2019-05-28 Lance Timothy Kasper Consensus system for manipulation resistant digital record keeping
EP3317775B1 (en) 2015-07-02 2022-02-16 Nasdaq, Inc. Systems and methods of secure provenance for distributed transaction databases
US20170132626A1 (en) 2015-11-05 2017-05-11 Mastercard International Incorporated Method and system for processing of a blockchain transaction in a transaction processing network
US9948467B2 (en) 2015-12-21 2018-04-17 Mastercard International Incorporated Method and system for blockchain variant using digital signatures
WO2017109140A1 (en) 2015-12-22 2017-06-29 Bigchaindb Gmbh Decentralized, tamper-resistant, asset-oriented database system and method of recording a transaction
US20170243193A1 (en) 2016-02-18 2017-08-24 Skuchain, Inc. Hybrid blockchain
US10404469B2 (en) 2016-04-08 2019-09-03 Chicago Mercantile Exchange Inc. Bilateral assertion model and ledger implementation thereof
US10803537B2 (en) 2016-04-18 2020-10-13 R3 Ltd. System and method for managing transactions in dynamic digital documents
US20170345011A1 (en) * 2016-05-26 2017-11-30 Hitfin, Inc. System and method executed on a blockchain network
US10587628B2 (en) * 2016-09-29 2020-03-10 Microsoft Technology Licensing, Llc Verifiable outsourced ledgers
US10262140B2 (en) * 2016-09-29 2019-04-16 Intel Corporation Methods and apparatus to facilitate blockchain-based boot tracking
US10523421B2 (en) 2016-11-30 2019-12-31 International Business Machines Corporation Checkpoints for permissionless blockchains
US20180276626A1 (en) * 2017-03-21 2018-09-27 Dappsters, LLC Blockchain systems and methods
US10880071B2 (en) * 2018-02-23 2020-12-29 Samsung Electronics Co., Ltd. Programmable blockchain solid state drive and switch

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019520752A (ja) 2016-06-03 2019-07-18 ジエマルト・エス・アー 移動体通信ネットワークの分散型データベース内でアサーションを公開するため、およびモノのインターネットデバイスをパーソナライズするための方法および装置
US20180121909A1 (en) 2016-10-28 2018-05-03 International Business Machines Corporation System and method to dynamically setup a private sub-blockchain based on agility of transaction processing

Also Published As

Publication number Publication date
CN112136291B (zh) 2024-04-09
WO2019233773A1 (en) 2019-12-12
US20190379543A1 (en) 2019-12-12
EP3804217A1 (en) 2021-04-14
CN112136291A (zh) 2020-12-25
EP3804217B1 (en) 2023-09-06
US10972279B2 (en) 2021-04-06
JP2021525931A (ja) 2021-09-27

Similar Documents

Publication Publication Date Title
JP7382108B2 (ja) ブロックチェーンのための効率的な検証
JP7304117B2 (ja) ブロックチェーン上のプロキシ・エージェントおよびプロキシ台帳
EP3776208B1 (en) Runtime self-correction for blockchain ledgers
US11469886B2 (en) System or method to implement record level access on metadata driven blockchain using shared secrets and consensus on read
US11899817B2 (en) Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information
US11611560B2 (en) Systems, methods, and apparatuses for implementing consensus on read via a consensus on write smart contract trigger for a distributed ledger technology (DLT) platform
US11070360B2 (en) Parallel transaction validation and block generation in a blockchain
US10171992B1 (en) Switching mobile service provider using blockchain
US10917233B2 (en) Selective exchange of transaction data
US11165826B2 (en) On-chain governance of blockchain
US10756884B2 (en) On-chain governance of blockchain
US10671308B2 (en) Private and fault-tolerant storage of segmented data
US11227057B2 (en) Membership access management of a database
US11341121B2 (en) Peer partitioning
JP7350845B2 (ja) ブロックチェーン・リソースを格納するブロックチェーン通知ボード
US11924323B2 (en) On-chain governance of blockchain
US20200013025A1 (en) Conditional deferred transactions for blockchain
JP7228322B2 (ja) ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理
US11544249B2 (en) Reducing signature verifications of database entries
US20200050691A1 (en) Database node functional testing
US11270017B2 (en) Selective exchange of transaction data
US11070563B2 (en) Trace-based transaction validation and commitment
CN111698198B (zh) 秘密生成和份额分发
JP7319461B2 (ja) コンソーシアムブロックチェーンを用いてプライベートデータを保持する方法および装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201209

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20201202

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210927

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230721

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231017

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20231017

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231101

R150 Certificate of patent or registration of utility model

Ref document number: 7382108

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150