(57)【要約】【課題】ブロックチェーン上の大量トランザクション性能を最適化するための方法、装置、およびコンピュータ・プログラムを提供する。【解決手段】例示的な動作は、ブロックチェーンの新たに提案されたトランザクションを識別すること、コンセンサス動作を開始して新たに提案されたトランザクションを承認するかどうかを判定すること、前のトランザクションから識別されたキーと値のペアを取得すること、前のトランザクションのキーと値のペアに関連付けられたインデックス値を、新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較すること、および前のトランザクションのキーと値のペアに関連付けられたインデックス値が新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と連続的に続く場合、新たに提案されたトランザクションをブロックチェーンに受け入れるための肯定のコンセンサスを提供することのうちの１つまたは複数を含んでよい。【選択図】図１
2021503643.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンの新たに提案されたトランザクションを識別することと、
コンセンサス動作を開始して前記新たに提案されたトランザクションを承認するかどうかを判定することと、
前のトランザクションから識別されたキーと値のペアを取得することと、
前記前のトランザクションの前記キーと値のペアに関連付けられたインデックス値を、前記新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較することと、
前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続く場合、前記新たに提案されたトランザクションを前記ブロックチェーンに受け入れるための肯定のコンセンサスを提供することと
を含む、方法。
【請求項２】
前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続いていない場合、前記新たに提案されたトランザクションを拒否することをさらに含む、請求項１に記載の方法。
【請求項３】
前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続いていない場合、前記新たに提案されたトランザクションが１つまたは複数の他のトランザクションと順不同であると判断することをさらに含む、請求項１に記載の方法。
【請求項４】
前記コンセンサス動作が前記ブロックチェーンの複数のバリデータ・ノード・メンバを呼び出し、前記新たに提案されたトランザクションを検証し前記ブロックチェーンに追加するために必要となるのが、前記ブロックチェーンの１人のバリデータ・ノード・メンバのみである、請求項１に記載の方法。
【請求項５】
前記ブロックチェーンにアクセスすることと、
キー値の最初のインスタンスを有する複数のブロックチェーン・トランザクションを抽出することと、
前記複数のブロックチェーン・トランザクションに基づいて圧縮された台帳を生成することであって、前記圧縮された台帳がキー値の連続的に続くセットとして構成された前記複数のブロックチェーン・トランザクションを含む、前記生成することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記ブロックチェーンのバリデータ・メンバから、前記新たに提案されたトランザクションに関する提案されたキーと値のペアを受信することと、
前に受け入れられたキーと値のペアに基づいて、前記ブロックチェーンのリーダ・メンバを介して、前記提案されたキーと値のペアを受け入れるか、または拒否することと
をさらに含む、請求項１に記載の方法。
【請求項７】
前記ブロックチェーンの前記リーダ・メンバを介して、前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値を、前記新たに提案されたトランザクションに割り当てることをさらに含む、請求項６に記載の方法。
【請求項８】
装置であって、
プロセッサを備え、前記プロセッサが、
ブロックチェーンの新たに提案されたトランザクションを識別し、
コンセンサス動作を開始して前記新たに提案されたトランザクションを承認するかどうかを判定し、
前のトランザクションから識別されたキーと値のペアを取得し、
前記前のトランザクションの前記キーと値のペアに関連付けられたインデックス値を、前記新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較し、
前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続く場合、前記新たに提案されたトランザクションを前記ブロックチェーンに受け入れるための肯定のコンセンサスを提供する
ように構成された、装置。
【請求項９】
前記プロセッサが、前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続いていない場合、前記新たに提案されたトランザクションを拒否するようにさらに構成された、請求項８に記載の装置。
【請求項１０】
前記プロセッサが、前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続いていない場合、前記新たに提案されたトランザクションが１つまたは複数の他のトランザクションと順不同であると判断するようにさらに構成された、請求項８に記載の装置。
【請求項１１】
前記コンセンサス動作が前記ブロックチェーンの複数のバリデータ・ノード・メンバを呼び出し、前記新たに提案されたトランザクションを検証し前記ブロックチェーンに追加するために必要となるのが、前記ブロックチェーンの１人のバリデータ・ノード・メンバのみである、請求項８に記載の装置。
【請求項１２】
前記プロセッサが、
前記ブロックチェーンにアクセスし、
キー値の最初のインスタンスを有する複数のブロックチェーン・トランザクションを抽出し、
前記複数のブロックチェーン・トランザクションに基づいて、圧縮された台帳を生成する
ようにさらに構成され、前記圧縮された台帳が、キー値の連続的に続くセットとして構成された前記複数のブロックチェーン・トランザクションを含む、請求項８に記載の装置。
【請求項１３】
前記ブロックチェーンのバリデータ・メンバから前記新たに提案されたトランザクションに関する提案されたキーと値のペアを受信するように構成された受信機をさらに備え、
前記プロセッサが、前に受け入れられたキーと値のペアに基づいて、前記ブロックチェーンのリーダ・メンバを介して、前記提案されたキーと値のペアを受け入れるか、または拒否するようにさらに構成された、請求項８に記載の装置。
【請求項１４】
前記プロセッサが、前記ブロックチェーンの前記リーダ・メンバを介して、前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値を、前記新たに提案されたトランザクションに割り当てるようにさらに構成された、請求項１３に記載の装置。
【請求項１５】
命令を格納するように構成された非一過性コンピュータ可読記憶媒体であって、前記命令は、実行されると、プロセッサに、
ブロックチェーンの新たに提案されたトランザクションを識別することと、
コンセンサス動作を開始して前記新たに提案されたトランザクションを承認するかどうかを判定することと、
前のトランザクションから識別されたキーと値のペアを取得することと、
前記前のトランザクションの前記キーと値のペアに関連付けられたインデックス値を、前記新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較することと、
前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続く場合、前記新たに提案されたトランザクションを前記ブロックチェーンに受け入れるための肯定のコンセンサスを提供することと
を実行させる、非一過性コンピュータ可読記憶媒体。
【請求項１６】
前記プロセッサが、前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続いていない場合、前記新たに提案されたトランザクションを拒否することを実行するようにさらに構成された、請求項１５に記載の非一過性コンピュータ可読記憶媒体。
【請求項１７】
前記プロセッサが、前記前のトランザクションの前記キーと値のペアに関連付けられた前記インデックス値が前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値と連続的に続いていない場合、前記新たに提案されたトランザクションが１つまたは複数の他のトランザクションと順不同であると判断することを実行するようにさらに構成された、請求項１５に記載の非一過性コンピュータ可読記憶媒体。
【請求項１８】
前記コンセンサス動作が前記ブロックチェーンの複数のバリデータ・ノード・メンバを呼び出し、前記新たに提案されたトランザクションを検証し前記ブロックチェーンに追加するために必要となるのが、前記ブロックチェーンの１人のバリデータ・ノード・メンバのみである、請求項１５に記載の非一過性コンピュータ可読記憶媒体。
【請求項１９】
前記プロセッサが、
前記ブロックチェーンにアクセスすることと、
キー値の最初のインスタンスを有する複数のブロックチェーン・トランザクションを抽出することと、
前記複数のブロックチェーン・トランザクションに基づいて、圧縮された台帳を生成することと
を実行するようにさらに構成され、前記圧縮された台帳が、キー値の連続的に続くセットとして構成された前記複数のブロックチェーン・トランザクションを含む、請求項１５に記載の非一過性コンピュータ可読記憶媒体。
【請求項２０】
前記プロセッサが、
前記ブロックチェーンのバリデータ・メンバから前記新たに提案されたトランザクションに関する提案されたキーと値のペアを受信することと、
前に受け入れられたキーと値のペアに基づいて、前記ブロックチェーンのリーダ・メンバを介して、前記提案されたキーと値のペアを受け入れるか、または拒否することと、
前記ブロックチェーンの前記リーダ・メンバを介して、前記新たに提案されたトランザクションの前記キーと値のペアに関連付けられた前記インデックス値を、前記新たに提案されたトランザクションに割り当てることと
を実行するようにさらに構成された、請求項１５に記載の非一過性コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ブロックチェーン上のトランザクション管理に関し、より詳細には、ブロックチェーン上の大量トランザクション性能の最適化に関する。
【背景技術】
【０００２】
ブロックチェーンは、任意のタイプの情報を格納するためのパブリック台帳として使用されることがある。ブロックチェーンは主に金融取引に使用されるが、資産（すなわち、製品、パッケージ、サービス、ステータスなど）を含む任意のタイプの情報を格納することができる。非中央集権方式は、権限および信用を分散型ネットワークに移転し、そのノードがそのトランザクションをパブリック「ブロック」に継続的かつ連続的に記録できるようにし、ブロックチェーンと呼ばれる固有の「チェーン」を作成する。ハッシュ・コードによる暗号技術を使用して、トランザクション・ソースの認証を安全なものにし、中央の仲介者を排除する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
多くのユース・ケースにおいて、株式取引および資本取引などの大量かつ時間的制約のあるトランザクションは、最適なタイミングを必要とする。大量のトランザクションに対処するブロックチェーンの場合、ブロックチェーン・ネットワーク・インフラストラクチャは、トランザクションのタイムリーな順序付けを確保するだけでなく、速度および否認防止性を伴うトランザクション処理を確保するための構成要素を必要とし、これは、クリアリングハウスおよびそのような機能を実行する他のものなど、あるエンティティに対する構成要素である。
【０００４】
一般に、ブロックチェーン関連のトランザクションは、正確に順序付けられ、遅延なくコミットされるべきである。
【課題を解決するための手段】
【０００５】
本発明の一実施形態は、ブロックチェーンの新たに提案されたトランザクションを識別すること、コンセンサス動作を開始して新たに提案されたトランザクションを承認するかどうかを判定すること、前のトランザクションから識別されたキーと値のペア（key-value pair）を取得すること、前のトランザクションのキーと値のペアに関連付けられたインデックス値を新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較すること、および前のトランザクションのキーと値のペアに関連付けられたインデックス値が新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と連続的に続く場合、新たに提案されたトランザクションをブロックチェーンに受け入れるための肯定のコンセンサスを提供することのうちの１つまたは複数を含む方法を提供することができる。
【０００６】
本発明の別の実施形態は、装置であって、プロセッサを備え、プロセッサが、ブロックチェーンの新たに提案されたトランザクションを識別すること、コンセンサス動作を開始して新たに提案されたトランザクションを承認するかどうかを判定すること、前のトランザクションから識別されたキーと値のペアを取得すること、前のトランザクションのキーと値のペアに関連付けられたインデックス値を新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較すること、および前のトランザクションのキーと値のペアに関連付けられたインデックス値が新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と連続的に続く場合、新たに提案されたトランザクションをブロックチェーンに受け入れるための肯定のコンセンサスを提供することのうちの１つまたは複数を実行するように構成された、装置を含む。
【０００７】
本発明のさらに別の実施形態は、命令を格納するように構成された非一過性コンピュータ可読記憶媒体であって、命令は、実行されると、プロセッサに、ブロックチェーンの新たに提案されたトランザクションを識別すること、コンセンサス動作を開始して新たに提案されたトランザクションを承認するかどうかを判定すること、前のトランザクションから識別されたキーと値のペアを取得すること、前のトランザクションのキーと値のペアに関連付けられたインデックス値を新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較すること、および前のトランザクションのキーと値のペアに関連付けられたインデックス値が新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と連続的に続く場合、新たに提案されたトランザクションをブロックチェーンに受け入れるための肯定のコンセンサスを提供することのうちの１つまたは複数を実行させる、非一過性コンピュータ可読記憶媒体を含む。
【図面の簡単な説明】
【０００８】
【図１】本発明を具現化する、コンセンサス・サービス・モジュールを介してコンセンサス判定を処理する論理図である。
【図２】本発明を具現化する、例示的な台帳圧縮動作の図である。
【図３】本発明を具現化する、ブロックチェーン・コンセンサス管理を実行するための例示的なブロックチェーン構成の図である。
【図４】本発明を具現化する、トランザクション・コンセンサス処理を処理するためのシステム・メッセージング図である。
【図５】本発明を具現化する、トランザクションのコンセンサス処理を管理する方法のフロー図である。
【図６】本発明を具現化する、トランザクションのコンセンサス処理を管理する方法の別のフロー図である。
【図７】本発明を具現化する、トランザクションのコンセンサス処理を管理する方法の論理フロー図である。
【図８】本発明の実施形態の１つまたは複数をサポートするように構成されたコンピュータ・システム／サーバの図である。
【発明を実施するための形態】
【０００９】
本明細書の図面において全体として説明および図示されるような本構成要素は、多種多様な異なる構成で配置および設計され得ることが容易に理解されよう。したがって、添付の図面に示される方法、装置、非一過性コンピュータ可読媒体、およびシステムの以下の詳細な説明は、特許請求される本発明の範囲を限定するよう意図されておらず、本発明の選択された実施形態の代表的なものにすぎない。
【００１０】
本明細書全体にわたって説明されるような本特徴、構造、または特性は、本発明の１つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。例えば、本明細書全体にわたる「例示的な実施形態」、「いくつかの実施形態」という語句、または他の類似の文言の使用は、実施形態に関連して説明される特定の特徴、構造、または特性が少なくとも１つの実施形態に含まれてよいことを意味する。したがって、本明細書全体にわたる「例示的な実施形態」、「いくつかの実施形態において」、「他の実施形態において」という語句、または他の類似の文言の出現は、必ずしもすべてが本発明の実施形態の同じグループを指しているわけではなく、説明されている特徴、構造、または特性は、本発明の１つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。
【００１１】
さらに、本発明の実施形態の説明において「メッセージ」という用語が使用されている場合があるが、本発明は、パケット、フレーム、データグラムなどの多くのタイプのネットワーク・データに適用されてよい。また、「メッセージ」という用語は、パケット、フレーム、データグラム、およびそれらの任意の均等物を含む。さらに、本発明の例示的な実施形態においてある種のメッセージおよびシグナリングが示される場合があるが、それらは、ある種のメッセージに限定されず、アプリケーションは、ある種のシグナリングに限定されない。
【００１２】
本発明の一実施形態における本アプリケーションは、ブロックチェーン上のトランザクション管理に関し、本発明の別の実施形態では、トランザクションを順序付けること、およびブロックチェーン上の最適な性能のために大量トランザクションを最適化することに関する。
【００１３】
本発明の例示的な実施形態によれば、複数のバリデータがコンセンサス／検証メカニズムを使用することによって維持されるアプリケーションが、ブロックチェーン・コンピューティング・システム・プラットフォーム上で実行されてよい。一例では、ブロックチェーンの各ブロックまたはトランザクションは、キーと値のペア、または一定数のキーと値のペアを含んでよい。例示のために、ブロックおよびトランザクションという用語は、交換可能に使用されることがある。ブロックチェーン・ブロックは複数のブロックチェーン・トランザクションを含んでよいが、どちらの例も、ブロックチェーンにコミットされる前にコンセンサス判定を必要とする場合がある。コンセンサス管理アプリケーションは、キーと値のペア内の情報を維持することを実行することもでき、キーは、単調で連続したシーケンスを形成してよい。キーは、コンセンサス／検証手順が最近採掘されたブロック／トランザクションを実施できることを照会するため、およびブロック／トランザクションが確立されたキー・シーケンス内に次のキーを保持しているかどうかに応じてブロック／トランザクションが有効と見なされるかどうかを照会するための、インデックスとして使用されてよい。ブロック／トランザクションが追加されると、そのキーに対応する値は今後のブロック／トランザクションで上書きされることが許可されず、それによって高速なブロック取得が可能になる。
【００１４】
ログ／台帳／ブロックチェーンの圧縮／冪等性は、台帳データの所望の順序付けを確実に保証するため、および依存関係によりトランザクション処理の性能につながる順序付けの最適な性能を確保してマーケット・インフラストラクチャの需要を満たし、否認防止性（non-repudiation）を提供するための、構成または手順あるいはその両方である。コンセンサスは、ネットワークの要求またはトランザクションの順序を検証するための方法である。多くのタイプのネットワーク・トランザクションは１つまたは複数の以前のトランザクションとの依存関係を有するので（例えば、口座の借方は、しばしば以前の貸方との依存関係を有する）、トランザクションの正しい順序付けは重要である。ブロックチェーン・ネットワーク上にトランザクションの順序を決定する単一の権限は存在せず、代わりに、各ブロックチェーン・ノード（ピア）が、ネットワーク・コンセンサス・プロトコルを実施することによってトランザクションの順序を確立する権利を有する。したがって、コンセンサスは、トランザクションが共有の台帳に追加される順序についてノードの定足数が合意することを確保する。コンセンサスは、提案されたトランザクションの順序におけるあらゆる矛盾を解決することによって、すべてのネットワーク・ノードが同一のブロックチェーン上で動作することを可能にする。言い換えれば、コンセンサスは、ブロックチェーン・ネットワーク・トランザクションの整合性および一貫性を保証する。
【００１５】
コンセンサス／検証の構成手順は、各キーの最初の値が維持されるログ圧縮を提供してよい。連続したシーケンスが予測可能なシーケンスでもあり、迅速に処理および照会され得るので、この手法は、高速な取得を提供することができる。このコンセンサス・メカニズムは、連続したシーケンスを徹底し、それにより照会しているノードは、効率的かつ簡単な方法でキーの値を識別することができる。この手法は、新たに接続されたブロックチェーン・ノードが照会に迅速に応答するのにも役立つ。例えば、キー値が分かっている場合、特定のトランザクションを探し出すためにブロックのチェーン全体を解析する必要がない。
【００１６】
図１は、例示的な実施形態による、コンセンサス・サービス・モジュールを介してコンセンサス判定を処理する論理図を示す。図１を参照すると、構成１００は、ピア・ノード１３０のコンセンサスに基づいてトランザクションまたは新しいブロックあるいはその両方を受信および格納するように構成されたブロックチェーン構成１１０を含む。動作に際しては、コンセンサス・サービス１２０は、トランザクション１１６、１１８または１２２あるいはその組合せを受信し、トランザクションを台帳に受け入れることができるかどうかを判定するように構成されたソフトウェア・モジュールであってよい。この例では、ブロックチェーン１１０は、ピア１３０からコンセンサスを介してブロックチェーンにすでに受け入れられているトランザクション１１２および１１４を格納する。新しいトランザクションが受信されると、コンセンサス・サービス・モジュール１２０によってキーと値のペア「ＫＶＰ」が識別されて、続く１、２、３などの連続した一連のものを決定する。次のトランザクションが連続した一連の数値識別子を保持しない場合、トランザクションは無効と見なされ、拒否される可能性がある。例えば、トランザクション１１８はＫＶＰ値５を有し、１１６の後に処理されているので、次の識別子は「５」ではなく「４」になる。したがって、このトランザクションは無効として識別され、拒否されることになる。その後のトランザクション１２２は、ＫＶＰ−３に続く正しいＫＶＰ−４を有しており、したがって受け入れられ、コミットされることになる。
【００１７】
図２は、本発明を具現化する台帳圧縮の例を示す。図２を参照すると、台帳圧縮手順１５０は、１１個のエントリ０〜１０を有する通常の台帳１５２を含むことができる。各エントリは、キー（Ｋ１〜Ｋ６）、カウンタ、時間値などの数値識別子、およびそのエントリに関連付けられた値を有し、それによってキーと値のペアＫ／Ｖを作成する。元の圧縮されていない台帳１５２から分かるように、キーは１回を超えて使用され、Ｋ１などの特定のキー値のどれを参照しても、その使用に関連付けられた複数の値を有している。しかし、圧縮手順によって、キーの最初のインスタンスのみが関連し、連続するキー値の単調シーケンスが必要であると仮定すると、連続するキー値Ｋ１〜Ｋ６の新しい順序付けられたセットは、圧縮された台帳１５４という結果になり、正しいと見なされる。これは、連続したエントリを高速で取得する機会をもたらす。
【００１８】
提案するログ圧縮メカニズムは、常に同じログ・プレフィックスが返されるように読み取りの冪等性を提供する。図２を参照すると、従来のログ圧縮メカニズムでは、台帳に追加されるエントリが２つしか存在しないとき、ログ・プレフィックスはＫ１であるが、３番目のエントリ（Ｋ１／Ｖ３）が追加されるとき、ログ・プレフィックスはＫ２になる。ログ圧縮メカニズムは、プレフィックスとして常にＫ１を返す。
【００１９】
図３は、本発明の一実施形態による、トランザクションのスケジューリングおよびコンセンサス管理を実行するための例示的なブロックチェーン構成を示す。図３を参照すると、ブロックチェーン・システム２００は、ブロックチェーン・ノード群２８０などのある種の共通のブロックチェーン要素を含んでよく、これらには、ブロックチェーン・トランザクションの追加および検証プロセス（コンセンサス）に参加するピア・ブロックチェーン・ノード「ピア・ノード」２８２〜２８５が割り当てられてよい。ブロックチェーン・ピア・ノード２８０のいずれかは、新しいトランザクションを開始し、ブロックチェーン不変元帳２７２への書き込みを求めてもよく、ブロックチェーン不変元帳のコピーは、ブロックチェーン２７０の基盤となる物理的インフラストラクチャ２７１に格納されている。この構成では、カスタマイズされたブロックチェーン構成は、格納されたプログラム／アプリケーション・コード（例えば、チェーン・コードまたはスマート・コントラクトあるいはその両方）２７５にアクセスして実行するためのＡＰＩ２７６にリンクされた１つまたは複数のアプリケーション２７７を含んでもよく、これらは、参加者が求めるカスタマイズされた構成に従って作成され、自身の状態をメンテナンスし、自身の資産を管理し、外部情報を受信することができる。このコードは、分散型台帳に追加することによって、すべてのブロックチェーン・ピア・ノード上にトランザクションとして展開され、インストールされてよい。
【００２０】
本明細書で説明されるように、スマート・コントラクトは、ブロックチェーン（例えば、ブロックチェーン・ピアの分散型ネットワーク）で登録、格納、および複製される実行可能コードである。トランザクションは、スマート・コントラクトに関連する条件が満たされたことに応答して実行され得るスマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼できる変更をトリガすることができる。スマート・コントラクトの実行によってもたらされるブロックチェーン台帳への変更は、１つまたは複数のコンセンサス・プロトコルを介してブロックチェーン・ピアの分散型ネットワーク全体に自動的に複製されてよい。
【００２１】
ブロックチェーン・プラットフォーム２７０は、ブロックチェーン・データ、サービス（例えば、暗号化トラスト・サービス（cryptographic trust service）、仮想実行環境）、および新しいトランザクションを受信および格納し、データ・エントリへのアクセスを求めているオーディタにアクセスを提供するために必要な基盤となる物理的コンピュータ・インフラストラクチャの様々な層を含む。ブロックチェーン層２７２は、プログラム・コードを処理し、物理的プラットフォーム２７１に関与するために必要な仮想実行環境へのアクセスを提供するインターフェースを公開する。暗号化トラスト・サービス２７３は、トランザクションを検証し、個人情報を維持するために使用される。
【００２２】
図３のブロックチェーン構成は、ブロックチェーン・プラットフォーム２７０によって公開されるインターフェースおよび提供されるサービスを通してプログラム／アプリケーション・コード２７５を処理および実行することができる。コードは、ブロックチェーンの資産を管理してもよく、例えば、コードは、データを格納および転送することができ、例えば、スマート・コントラクトおよび条件付きの関連するチェーン・コードまたはその実行対象となる他のコード要素の形で、ブロックチェーンによって実行されてよい。スマート・コントラクト２７５は、リマインダ、更新、または変更、更新などを受ける他の通知あるいはその組合せを実行するために作成されてよい。スマート・コントラクト自体を使用して、承認およびアクセス要件に関連する規則ならびに使用状況を識別することができる。一例では、新しいトランザクション２１２は、ピア・ノード２８０によって識別されてよい。一定の条件が満たされていれば、ノードは、コンセンサス２１４に到達し、トランザクションをブロックチェーン台帳２７２にコミットすることを許可する。例えば、トランザクションは、コンセンサス・ピアによって承認されるように、コンセンサス・サービスを介してキーと値のペアを要求してよい。この場合、ピアは、ブロックチェーン内の前のトランザクションを識別し、現在のトランザクションが続いて連続する（番号順で次の）キーと値のペアの識別子を有すると識別されるかどうかを判定することができる。この情報は、トランザクションのキーと値のペアの識別番号によって容易に識別することができ、識別番号を識別し比較して、トランザクションをブロックチェーンにコミットすることを許可するためのコンセンサスを検証および提供することができる。
【００２３】
図４は、本発明の一実施形態による、トランザクション・コンセンサス処理を処理するためのシステム・メッセージング図を示す。図４を参照すると、この例示的なシステム構成３００では、ブロックチェーン・メンバ３１０は、ブロックチェーン３３０へのコミットメントのためにトランザクションを送信する役割を担うことができる３１２。コンセンサス・サービス３２０は、要求および新しいトランザクションを識別し、ブロックチェーン・トランザクションを識別することによって、キーと値のペアに関連付けられたシーケンス値の識別のために前のトランザクションを監査してよい３１４。３１６で識別された最後の値は、続いて連続するシーケンスについて新しいトランザクションと比較されてよい３１８。シーケンスが続いて連続する場合、トランザクションはそれに応じてコミットされ３２６、遅延なく台帳に追加されてよい３２２。シーケンスが正しくない場合、新しいトランザクションは破棄されてよい３２４。
【００２４】
図５は、本発明の一実施形態による、トランザクションのコンセンサス処理を管理する例示的な方法のフロー図を示す。図５を参照すると、方法４００は、ブロックチェーンの新たに提案されたトランザクションを識別すること４１２、コンセンサス動作を開始して新たに提案されたトランザクションを承認するかどうかを判定すること４１４、前のトランザクションから識別されたキーと値のペアを取得すること４１６、前のトランザクションのキーと値のペアに関連付けられたインデックス値を、新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と比較すること４１８、および前のトランザクションのキーと値のペアに関連付けられたインデックス値が、新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と連続的に続く場合、新たに提案されたトランザクションをブロックチェーンに受け入れるための肯定のコンセンサスを提供すること４２２を含んでよい。
【００２５】
また、方法は、前のトランザクションのキーと値のペアに関連付けられたインデックス値が新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と連続的に続いていない場合、新たに提案されたトランザクションを拒否すること、前のトランザクションのキーと値のペアに関連付けられたインデックス値が新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値と連続的に続いていない場合、新たに提案されたトランザクションが１つまたは複数の他のトランザクションと順不同であると判断することを含んでよい。コンセンサス動作は、ブロックチェーンの複数のバリデータ・ノード・メンバを呼び出す。新たに提案されたトランザクションを検証しブロックチェーンに追加するために必要となるのは、ブロックチェーンの１人のバリデータ・ノード・メンバのみである。方法は、ブロックチェーンにアクセスすること、キー値の最初のインスタンスを有する複数のブロックチェーン・トランザクションを抽出すること、複数のブロックチェーン・トランザクションに基づいて圧縮された台帳を生成することを含んでもよく、圧縮された台帳は、キー値の連続的に続くセットとして構成された複数のブロックチェーン・トランザクションを含む。
【００２６】
また、方法は、ブロックチェーンのバリデータ・メンバから、新たに提案されたトランザクションに関する提案されたキーと値のペアを受信し、前に受け入れられたキーと値のペアに基づいて、ブロックチェーンのリーダ・メンバを介して提案されたキーと値のペアを受け入れるか、または拒否すること、およびブロックチェーンのリーダ・メンバを介して、新たに提案されたトランザクションのキーと値のペアに関連付けられたインデックス値を新たに提案されたトランザクションに割り当てることを含んでもよい。
【００２７】
図６は、本発明の一実施形態による、トランザクションのコンセンサス処理を管理する例示的な方法の別のフロー図を示す。図６を参照すると、方法４５０は、ブロックチェーンの新たに提案されたトランザクションを識別すること４５２、コンセンサス動作を開始して新たに提案されたトランザクションを承認するかどうかを判定すること４５４、新たに提案されたトランザクションのキーと値のペアに関連付けられた通し番号が、新たに提案されたトランザクションに関連付けられたブロックチェーン・メンバに前に割り当てられた通し番号のリスト内で識別されると判断すること４５６、および新たに提案されたトランザクションのキーと値のペアに関連付けられた通し番号が、前に受け入れられた他のブロックチェーン・トランザクションと連続的に一貫している場合、新たに提案されたトランザクションをブロックチェーンに受け入れるための肯定のコンセンサスを提供すること４５８を含んでよい。
【００２８】
この代替例では、キーと値のペアは、特定のシーケンス番号を有する必要がなく、代わりに、前に割り当てられた使用可能な通し番号のプールから選択され、かつ新しいブロックに割り当てられたバー・コードまたは通し番号を有してよい。通し番号は、それらが割り当てられた時間およびブロックチェーン・メンバまで追跡され得る。通し番号は、時間およびシーケンスにリンクされており、ブロックまたはトランザクションが処理され、前のブロック、トランザクション、および対応するブロックチェーン・メンバの他の通し番号と順番になっていることを保証することができる。このラベリング手法は、正確性および順序付けのためにトランザクションを追跡する方法を提供する。通し番号が他のブロックと連続的に一貫しているかどうかの判定は、対象の通し番号の時間および割当てを識別することを含んでよく、前のブロックで他の通し番号の前に行われるように通し番号の割当てを識別することができる場合、トランザクションは受け入れ可能である。また、トランザクションまたはブロックをコミットするためにコンセンサスを承認すべきかどうかを判定するとき、受け入れ可能な通し番号の割当ての期間として、時間枠が使用されてもよい。
【００２９】
図７は、本発明の一実施形態による、トランザクションのコンセンサス処理を管理する例示的な方法の論理フロー図を示す。図７を参照すると、論理構成４７０は、コンセンサスを必要とするトランザクションを順にバッファリングするために使用されるアウトバウンド・トランザクション・バッファから、新しいトランザクションを受信することを含んでよい４７２。新しいトランザクションは、そのキーと値のペアが識別され、対応するシーケンス番号が抽出されてよい４７４。情報は、次の期待値と比較され４７６、前の値と続いて連続していない場合、破棄されてよい４７７。あるいは、シーケンスに一貫性がある場合、トランザクションはブロックチェーンのコミットメントのために準備され４７８、ブロックチェーンに追加される４８０。
【００３０】
本発明の上記の実施形態は、ハードウェアにおいて、プロセッサによって実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、またはこれらの組合せにおいて実装されてよい。コンピュータ・プログラムは、記憶媒体などのコンピュータ可読媒体上で具現化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ（「ＲＡＭ」）、フラッシュメモリ、読み取り専用メモリ（「ＲＯＭ」）、消去可能プログラマブル読み取り専用メモリ（「ＥＰＲＯＭ」）、電気的消去可能プログラマブル読み取り専用メモリ（「ＥＥＰＲＯＭ」）、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク読み取り専用メモリ（「ＣＤ−ＲＯＭ」）、または当技術分野で知られている任意の他の形式の記憶媒体に存在してよい。
【００３１】
例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合されてよい。代替方法では、記憶媒体はプロセッサと一体であってよい。プロセッサおよび記憶媒体は、特定用途向け集積回路（「ＡＳＩＣ」）に存在してよい。代替方法では、プロセッサおよび記憶媒体は、個別の構成要素として存在してよい。例えば、図８は、前述した構成要素などのいずれかを表すか、またはそれに統合され得る例示的なコンピュータ・システム・アーキテクチャ５００を示す。
【００３２】
図８は、本明細書に記載の本発明の実施形態の使用または機能の範囲に関して、いかなる制限を示唆することも意図されていない。いずれにせよ、コンピューティング・ノード５００は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
【００３３】
コンピューティング・ノード５００内には、多数の他の汎用または専用のコンピューティング・システム環境または構成で動作可能なコンピュータ・システム／サーバ５０２が存在する。コンピュータ・システム／サーバ５０２と共に使用するのに適したよく知られているコンピューティング・システム、環境、または構成あるいはその組合せの例には、パソコン・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
【００３４】
コンピュータ・システム／サーバ５０２は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システムで実行可能な命令の一般的なコンテキストで説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、ロジック、データ構造などを含むことができる。コンピュータ・システム／サーバ５０２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実現されてよい。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体に配置されてよい。
【００３５】
図８に示すように、クラウド・コンピューティング・ノード５００内のコンピュータ・システム／サーバ５０２が、汎用コンピューティング・デバイスの形で示されている。コンピュータ・システム／サーバ５０２の構成要素には、１つまたは複数のプロセッサまたは処理ユニット５０４、システム・メモリ５０６、およびシステム・メモリ５０６を含む様々なシステム構成要素をプロセッサ５０４に結合するバスが含まれ得るが、これらに限定されない。
【００３６】
バスは、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意の様々なバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、１つまたは複数の任意のいくつかのタイプのバス構造を表す。例として、そのようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス規格協会（ＶＥＳＡ）ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスが含まれるが、これらに限定されない。
【００３７】
コンピュータ・システム／サーバ５０２は、典型的には、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ５０２によってアクセスできる任意の利用可能な媒体であってよく、揮発性媒体と不揮発性媒体の両方、取り外し可能な媒体と取り外し不可の媒体の両方を含む。システム・メモリ５０６は、ランダム・アクセス・メモリ（ＲＡＭ）５１０またはキャッシュ・メモリ５１２あるいはその両方などの、揮発性メモリの形でコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ５０２は、他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含んでよい。単に例として、ストレージ・システム５１４は、取り外し不可、不揮発性の磁気媒体（図示せず、通常「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために提供されてよい。図示しないが、取り外し可能、不揮発性の磁気ディスク（例えば「フロッピー・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブが提供されてよい。そのような例において、それぞれは、１つまたは複数のデータ媒体インターフェースによってバスに接続されてよい。以下でさらに詳細に示され、説明されるように、メモリ５０６は、本発明の様々な実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを有する少なくとも１つのプログラム製品を含んでよい。
【００３８】
例えば、メモリ５０６には、一連の（少なくとも１つの）プログラム・モジュール５１８を有するプログラム／ユーティリティ５１６が格納されてよく、同様にオペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも格納され得るが、これらに限定されない。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組合せは、それぞれネットワーキング環境の実装を含んでよい。プログラム・モジュール５１８は、概して、本明細書に記載されるような本発明の様々な実施形態の機能または方法あるいはその両方を実行する。
【００３９】
当業者によって理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化されてよい。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェア態様とハードウェア態様を組み合わせた実施形態の形をとることができ、これらはすべて、本明細書では、概して「回路」、「モジュール」、または「システム」と呼ばれることがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている１つまたは複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形をとることができる。
【００４０】
また、コンピュータ・システム／サーバ５０２は、キーボード、ポインティング・デバイス、ディスプレイ５２２などの１つまたは複数の外部デバイス５２０、ユーザがコンピュータ・システム／サーバ５０２と対話できるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ５０２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組合せと通信してもよい。そのような通信は、Ｉ／Ｏインターフェース５２４を介して行うことができる。さらに、コンピュータ・システム／サーバ５０２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般的な広域ネットワーク（ＷＡＮ）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ５２６を介して通信することができる。図示するように、ネットワーク・アダプタ５２６は、コンピュータ・システム／サーバ５０２のその他の構成要素とバスを介して通信する。図示していないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方を、コンピュータ・システム／サーバ５０２と併せて使用できることが理解されるべきである。例として、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれるが、これらに限定されない。
【００４１】
本発明をそれぞれ具現化するシステム、方法、および非一過性コンピュータ可読媒体が、添付の図面に示され、前述の詳細な説明において説明されたが、本発明が、開示された本発明の実施形態に限定されず、添付の特許請求の範囲によって示され、定義されているように、多数の再構成、変更、および置換を行うことができることが理解されよう。例えば、様々な図面のシステムの機能は、本明細書に記載のモジュールまたは構成要素のうちの１つまたは複数によって、あるいは分散型アーキテクチャにおいて実行することができ、送信機、受信機、またはその両方のペアを含んでよい。例えば、個々のモジュールによって実行される機能の全部または一部は、それらのモジュールのうちの１つまたは複数によって実行されてよい。さらに、本明細書に記載の機能は、様々な時間に、様々なイベントに関して、モジュールまたは構成要素の内部または外部で、実行されてよい。また、様々なモジュール間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、ワイヤレス・デバイス、有線デバイスのうちの少なくとも１つを介して、または複数のプロトコルを介して、あるいはその組合せを介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、またはその他のモジュールのうちの１つまたは複数を介して、あるいはその両方で、送信または受信されてよい。
【００４２】
当業者は、「システム」が、パーソナル・コンピュータ、サーバ、コンソール、携帯情報端末（ＰＤＡ：personal digital assistant）、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、もしくは任意の他の適切なコンピューティング・デバイス、またはデバイスの組合せとして具現化され得ることを理解するであろう。「システム」によって実行されているような上述の機能を提示することは、本出願の範囲を何らかの形で限定することを意図するものではなく、多くの実施形態の一例を示すことを意図するものである。実際には、本明細書で開示されている方法、システム、および装置は、コンピューティング技術と整合する局所化および分散された形態で実装されてよい。
【００４３】
本明細書に記載のシステムの特徴のいくつかは、それらの実装形態の独立性を特に強調するためにモジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタム超大規模集積（ＶＬＳＩ：very large-scale integration）回路もしくはゲート・アレイ、ロジック・チップなどの既製の半導体、トランジスタ、または他の個別の構成要素を備えるハードウェア回路として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィックス処理ユニットなどのプログラマブル・ハードウェア・デバイスに実装されてもよい。
【００４４】
モジュールは、様々なタイプのプロセッサによって実行するために、ソフトウェアに少なくとも部分的に実装されてもよい。例えば、実行可能コードの識別されるユニットは、例えばオブジェクト、プロシージャ、または関数として編成可能なコンピュータ命令の１つまたは複数の物理ブロックまたは論理ブロックを含むことができる。それでもやはり、識別されるモジュールの実行ファイルは、物理的に一緒に配置される必要はなく、論理的に一緒に結合されるとき、モジュールを含み、モジュールの定められた目的を実現する、異なる場所に格納された異種の命令を含むことができる。さらに、モジュールは、コンピュータ可読媒体に格納されてよく、媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ（ＲＡＭ）、テープ、またはデータを格納するために使用される他のこのような任意の媒体であってよい。
【００４５】
実際には、実行可能コードのモジュールは、単一の命令、または多くの命令であってよく、いくつかの様々なコード・セグメント上、様々なプログラム間、およびいくつかのメモリ・デバイスにわたって分散されてもよい。同様に、動作上のデータは、本明細書ではモジュール内に識別され、図示されることがあり、任意の適切な形で具現化され、任意の適切なタイプのデータ構造内で編成されてもよい。動作上のデータは、単一のデータ・セットとして収集されてもよく、または様々な記憶デバイス上を含む様々な場所に分散されてもよく、少なくとも一部が単にシステムまたはネットワーク上の電子信号として存在してもよい。
【００４６】
本発明の構成要素は、本明細書の図面において全体的に説明され、図示されるように、多種多様な構成で配置および設計されてよいことが容易に理解されよう。したがって、本発明の実施形態の詳細な説明は、特許請求される本出願の範囲を限定することを意図するものではなく、本発明の選択された実施形態を表すにすぎない。
【００４７】
当業者は、上記が、異なる順序のステップで、または開示された構成とは異なる構成のハードウェア要素で、あるいはその両方で実現されてよいことを容易に理解するであろう。したがって、本発明が本発明のこれらの好ましい実施形態に基づいて説明されたが、一定の変更形態、変形形態、および代替の構成が明白であることが当業者には明らかであろう。
【００４８】
本発明の好ましい実施形態が説明されたが、説明された本発明の実施形態は例示的なものにすぎず、本発明の範囲は、すべての範囲の均等物およびその変更形態（例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど）で考慮されるとき、添付の特許請求の範囲によってのみ定義されるべきであることを理解されたい。
【図１】
2021503643.tif 000003
【図２】
2021503643.tif 000004
【図３】
2021503643.tif 000005
【図４】
2021503643.tif 000006
【図５】
2021503643.tif 000007
【図６】
2021503643.tif 000008
【図７】
2021503643.tif 000009
【図８】
2021503643.tif 000010
【国際調査報告】
2021503643.tif 000011
2021503643.tif 000012