本明細書の図面に一般的に記載された図示された実施例のコンポーネントは、異なる構成において配置され、設計されることについては容易に理解されるであろう。したがって、以下の、少なくとも1つの方法、装置、非過渡的なコンピュータ可読な媒体及びシステムの添付する図面において示されるような実施形態の詳細な説明は、請求項の本出願の範囲を制限することを意図するものではなく、選択した実施形態を表現するにすぎない。
本明細書を通して説明される実施例の特徴、構造、又は特性は、1つ又はそれ以上の実施形態において如何なる好適な仕方で組み合せ、又は削除されることができる。例えば、“実施例の実施形態”、“いくつかの実施形態”、又は他の類似の言葉のフレーズの使用は、本明細書を通じて、実施例に関連して説明された特定の特徴、構造又は特性は、少なくとも1つの実施形態に含まれることができることを参照する。したがって、フレーズ“実施例の実施形態”、“いくつかの実施形態”、又は他の同様の言葉は、本明細書を通して実施形態の同一のグループのすべてを参照する必要はなく、説明される特徴、構造又は特性は、1つ又はそれ以上の実施形態において如何なる好適な仕方で組み合わせ、又は削除されることができる。さらに、図面において、要素の間の如何なる接続は、説明された接続が1方向又は2方向矢線であったとしても、1方向又は2方向通信又はこれらの組み合わせを許容することができる。また、図面に示した如何なるデバイスでも異なるデバイスとすることができる。例えば、モバイル・デバイスが情報を送付するものとして示されている場合、有線デバイスは、また、情報を使用するために使用することができるであろう。
追加的に、用語“メッセージ”が実施形態の説明において使用される場合であっても、アプリケーションは、多くのタイプのネットワーク及びデータについて適用することができる。さらに、一定のタイプの接続、メッセージ、及びシグナリングが例示的な実施形態において記述されていたとしても、アプリケーションは、一定のタイプの接続、メッセージ、及びシグナリングに限定されることはない。
実施例の実施形態は、方法、システム、コンポーネント、非過渡的なコンピュータ可読な媒体、デバイス、又はネットワーク又はこれらの組み合わせを提供し、これらはブロックチェーン・ピアの間のチェーン・コードの関係のグラフを構築し、かつマイニングすること、及び1つ又はそれ以上のブロックチェーン・ピアの間に新たなチェーン・コードの関係を推奨することができる。
アプリケーションの1つの実施形態において、本アプリケーションは、分散ストレージ・システムである非中央化されたデータベース(ブロックチェーンといった)を使用し、これは、互いに通信する多数のノードを含む。非中央化されたデータベースは、相互に信頼の無い当事者相互の間でレコードを維持することを可能とする分散台帳に類似する、追加のみで変更不能のデータ構造である。信頼されていない当事者は、本明細書においてピア又はピア・ノードとして参照される、それぞれのピアは、データベース・レコードの複製を維持し、かつ単一のピアは、分散ピアの間に到達したコンセンサス無くしてデータベース・レコードを修正できない。例えば、複数のピアは、ブロックチェーン・トランザクションを有効化し、ブロックへとストレージ・トランザクションをグループ化し、そしてブロックに渡るハッシュ・チェーンを構築するためのコンセンサス・プロトコルを実装することができる。このプロトコルは、必要に応じて一貫性のためストレージ・トランザクションを指示することにより台帳を形成する。種々の実施形態においては、パーミッションされた、又はパーミッション無し、又はそれら両方のブロックチェーンを使用することができる。公開され、又はパーミッションされたブロックチェーンにおいては、誰もが特定の識別性なく参加することができる。公開ブロックチェーンは、本来的な暗号通貨を含むことができ、プルーフ・オブ・ワーク(PoW)といった種々のプロトコルに基づくコンセンサスを使用することができる。他方で、パーミッションされたブロックチェーン・データベースは、共通のゴールを共有するものの互いに完全には信頼していない、ファンド、商品、情報などといったエンティティのグループの間のセキュアなインタラクションを提供する。
本アプリケーションは、任意で、プログラム可能な論理であり、非中央化されたストレージ・スキームに適合され、かつ“スマート・コントラクト”又は“チェーン・コード”として参照される、ブロックチェーンを使用することができる。いくつかの場合、専用化されたチェーン・コードは、管理機能及びシステム・チェーンコードとして参照されるパラメータが存在することができる。アプリケーションは、さらにブロックチェーン・データベースの改竄プルーフ特性に影響する、信頼された分散アプリケーションであるスマート・コントラクト及びエンドースメント、又はエンドースメント・ポリシーとして参照され、底流に流れるノード間の合意を使用する。本アプリケーションに関連するブロックチェーン・トランザクションは、エンドースされていないトランザクションが考慮無しにブロックチェーンがコミットされる前に“エンドース”されることができる。エンドースメント・ポリシーは、チェーン・コードがエンドースメントのために必要な、ピア・ノードのセットの形態におけるトランザクションのためのエンドーサを特定することを可能とする。クライアントがエンドースメント・ポリシーにおいて特定されたピアにトランザクションを送付する場合、トランザクションが実行されて、トランザクションを有効化する。有効化の後、トランザクションは、順序付けフェーズに入り、ここでは、コンセンサス・プロトコルがブロックにグループ化され、エンドースされたトランザクションの順序付けされたシーケンスを生成するために使用される。
本アプリケーションは、ブロックチェーン・システムの通信エンティティであるノードを使用することができる。“ノード”は、異なるタイプの多数のノードが同一の物理的サーバ上で動作することができるという意味で、論理機能を実行することができる。ノードは、信頼ドメイン内でグループ化され、それらを種々の方法で制御する論理エンティティに関連する。ノードは、クライアント又はエンドーサ(例えば、ピア)に対してトランザクションの呼び出しを提出し、順序付けサービスに対するトランザクション申出(例えば、順序付けノード)をブロードキャストする提出クライアント・ノードといった、異なるタイプを含むことができる。ノードのもう1つのタイプは、クライアントが提出したトランザクションを受領し、トランザクションのコミットし、かつ状態及びブロックチェーン・トランザクションの台帳の複製を維持することができるピア・ノードである。ピアは、また、要請ではないがエンドーサのロールを有することができる。順序付けサービス・ノード又は順序付け手段は、全ノードに対して通信サービスを動作し、かつトランザクションをコミットし、かつブロックチェーンの世界的状態を修正する場合に、システム内のそれぞれのピア・ノードにブロードキャストするというようなデリバリ保証を実装するノードであり、これは、通常、制御及びセットアップ情報を含む最初のブロックチェーン・トランザクションについてのもう1つの名称である。
本アプリケーションは、ブロックチェーンの全状態のトランザクションの、連続化され、改竄耐性のあるレコードである台帳を使用することができる。状態遷移は、参加する当事者(例えばクライアント・ノード、順序付けノード、エンドーサ・ノード、ピア・ノードなど)により提出されたチェーン・コードの呼び出し(すなわち、トランザクション)から生じることができる。それぞれの参加当事者(ピア・ノードといった)は、台帳のコピーを維持することができる。トランザクションは、生成、アップデートなどといった1つ又はそれ以上のオペランドとして台帳にコミットされる、アセット鍵-値のセットを与えることができる。台帳は、ブロックの変更不能の、連続したレコードを格納するために使用されるブロックチェーン(また、チェーンとして参照される)を含む。台帳は、また、ブロックチェーンの現在状態を維持する状態データベースを含む。
本アプリケーションは、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであるチェーンを使用することができ、それぞれのブロックは、Nトランザクションのシーケンスを含む。ここで、Nは、1又はそれ以上に等しい。ブロック・ヘッダは、以前のブロックのヘッダに加えてブロックのトランザクションのハッシュを含む。この方法において台帳上のすべてのトランザクションは、連続化され、かつ暗号的に互いにリンクされることができる。したがって、ハッシュ・リンクを破らない限り台帳データを改竄することは可能ではない。最も最近に追加されたブロックチェーン・ブロックのハッシュは、それ以前に到来したチェーン上のすべてのトランザクションを表し、全ピア・ノードが、首尾一貫した信頼された状態にあることを保証することを可能とする。チェーンは、ピア・ノードのファイル・システム(すなわち、ローカルで、取付けられたストレージ、クラウドなど)上に格納することができる。
変更不能な台帳の現在状態は、チェーン・トランザクション・ログ内に含まれる全鍵についての最新の値を表す。現在状態は、チャネルに知られた最新の鍵値を表すので、これは時々世界状態として参照される。チェーン・コードの呼び出しは、台帳の現在状態のデータに対してトランザクションを実行する。これらのチェーン・コードのインタラクションを効率的にするために、鍵の最新値は、状態データベースに格納することができる。状態データベースは、単にチェーンのトランザクション・ログへのインデックス付けされたビューであり、これは、したがって、如何なる時点でもチェーンから生成されることができる。状態データベースは、ピア・ノードのスタートアップに際してトランザクションが受容される前に、自動的にリカバー(又は必要が有れば生成される)することができる。
ブロックチェーン・ネットワークにおいては、ネゴシエーション・プロセスがアセット・トランザクションのためのビジネス規約を規定するために、ブロックチェーン参加者(ピア)の間で発生する。一旦規定されると、ビジネス規約は、典型的にはスマート・コントラクト内にハード・コードされ、新たな機会について自己適応させるために変更されることはできない。加えて、機会のそのような損失は、参加者がトランザクションするべきビジネス機会を有するが、そのようなトランザクションを管理できない場合に、より重大となる。
実施例の実施形態は、既存のスマート・コントラクトの関係及びキュレートされ、かつそのような参加者により申出られた参加者プロファイルに基づいて、新たなスマート・コントラクト(チェーンコード)を動的に示唆することができるシステムを使用して本問題に対処する。一度合意がピア・ノードにより新たなスマート・コントラクトに到着すると、新たなスマート・コントラクトが公開されると共に、参加者は、新たなスマート・コントラクトの下でトランザクションすることができる。
本システムは、トランザクションの構築されたナレッジ・ベースにおいて識別されたパターンに基づいてブロックチェーン・ネットワーク内に新たなスマート・コントラクトを自動的に示唆する。パターンは、関係及びそれらのアトリビュートを識別するためのチェーン・コードの関連性のグラフをマイニングし、かつ既存のスマート・コントラクト内のアトリビュートのパターンを識別するための機械学習といった、人工知能技術を実行することが可能な、グラフ・マイニングを使用して識別することができる。一度システムが新たな規約を含むスマート・コントラクトを示唆すると、それは参加者の申出のために提出され、申出に際して公開/活性化されることができる。例えば、リカレント・ニューラル・ネットワーク(RNNs)などといった機械学習が、ブロックチェーンの参加者の間での履歴的なスマート・コントラクトに基づいて、示唆するべきスマート・コントラクト及び示唆されたスマート・コントラクトのアトリビュートを予測するために使用することができる。
本システムは、グラフ上のノードとしてブロックチェーン・ネットワーク内のスマート・コントラクトの関係をモデル化することができる。例えば、ノードの第1のセットがネットワーク内のブロックチェーン・ピアを表すことができると共に、ノードの第2のセットがその中の異なるスマート・コントラクトを表すことができる。エッジは、ピアを、それらが参加するスマート・コントラクトへと結合することができる。グラフ構造は、新たなスマート・コントラクトについてパターン付けし、かつ推奨するためにシステムによりマイニングされる。システムが新たなスマート・コントラクトを推奨する場合、システムは、既存のブロックチェーン・ピアの間にグラフの新たなエッジを推奨する。いくつかの実施形態においては、システムは、ブロックチェーン・ピア内に統括ピアといったものを実装することができる。もう1つの実施形態として、システムは、ブロックチェーン・ネットワーク内のそれぞれのピア又はピアのグループ上にインストールされ動作することができる。システムは、プロックチェーンからのデータ及びトランザクションを分析することができると共に、新たなアトリビュートで新たなスマート・コントラクトについて示唆することができる。
実施例の実施形態は、すでにシステム内にあるブロックチェーン・ピアの間に新たなスマート・コントラクトを推奨すると共に、また、この新たなスマート・コントラクトのアトリビュートを推奨する。新たなスマート・コントラクトの実施例は、スーパーマーケットと生産者、病院と実験室、輸出者と運送会社などの間での推奨を含む。これらは単に実施例であり、スマート・コントラクトは、過去のトランザクション及び必要性(ここでは、人工知能はまた、推奨のロールを担うことができるであろう。)に基づいて、新たなビジネス規約(スマート・コントラクト)が識別され、かつ推奨されることができる如何なるサプライチェーンを含む、異なるタイプのエンティティに対しても推奨することができることについて認識されるべきである。例えば、ネットワークにあるが、接続されていない病院及び実験室は、システムが、もしトランザクションすればそれらの接続がビジネス的な利益をもたらすと識別する場合(例えば、価格、サービス提供の期限、量など)、新たなスマート・コントラクトを開始させるべきとの推奨を受領することができる。
新たに指示されたスマート・コントラクトのアトリビュートは、現在のスマート・コントラクトのアトリビュート、市場データ、地理的データ、エンティティへの変化などを含む種々の要因に基づいて、推奨されるべきアトリビュート/コントラクトのタイプを予測できる人工知能(AI)、又は、機械学習、又はこれらの両方を通じて決定することができる。例えば、リカレント・ニューラル・ネットワーク(RNN)は、スマート・コントラクトを示唆するために使用することができる人工知能のタイプの実施例である。RNNsは、ノード間の接続が時間的シーケンスに沿った有向グラフの形態を形成する人工知能のクラスである。これはRNNsが時間的動的挙動を示すことを可能とする。フィードフォワード型のニューラル・ネットワークのようにではなく、RNNsは、それらの内部状態(メモリ)を、入力のシーケンスを処理するために使用することができる。既存のスマート・コントラクト及びそれらのアトリビュートは、RNNsを使用して処理されて、示唆されるスマート・コントラクト及びそれらのアトリビュートを識別することができる。
例えば、システムは、ネットワークのトランザクション、それらのコントラクト及びアトリビュート(ピア関係)をモニタすることができる。ピア及びスマート・コントラクトは、グラフ化されると共に、それらの間のエッジで表現することができる。グラフは、挙動の共通するパターンでマイニングされる。さらに、機械学習又は人工知能又はそれらの両方は、既存のスマート・コントラクトの関係を修正するため、及び新たなスマート・コントラクトの関係を示唆するために使用することができる。示唆は、価格、納品日、SLA、罰金などといったアトリビュートに基づくことができる。いくつかの実施形態では、新たなスマート・コントラクトは、含まれるピアが相互に合意を有するまで有効とされる可能性はない。
実施例の実施形態のいくつかの利益は、それが開始された後にブロックチェーン・ネットワーク規約の動的な変更を含むことである。本システムは、ブロックチェーンの1つ又はそれ以上のメンバーに対して利益的な新たなチェーン・コードの関係及び新たなチェーン・コードを管理する新たなチェーン・コード(スマート・コントラクト)の示唆を識別することができる。したがって、ビジネス機会は、ブロックチェーン内で動的に拡張/変更され、当事者に労力を取らせる変更を支援することができる。
図1は、複数のブロックチェーン・ピア110,120,130,140,150及び160を含むブロックチェーン・ネットワーク100を示す。本実施例では、ブロックチェーン・ネットワークは、ブロックチェーンがプライベートであるパーミッションされたブロックチェーンである。ピア110-160は、それぞれブロックチェーン及び状態データベースを含むブロックチェーン台帳の複製/コピーを格納することができる。ピア110-160は、インターネット、プライベート・ネットワークなどといったネットワークを通して互いに接続することができる。図1には示されていないが、ブロックチェーン・ネットワーク100は、1つ又はそれ以上の順序付けサービス、クライアント、オフ-チェーンのストレージ・エンティティなどといった、他のエンティティを含むことができることについて認識されるべきである。本実施例では、ピア110-160の何れもが新たなスマート・コントラクトを推奨するための推奨ピアとして機能することができる。実施例の目的で、ブロックチェーン・ピア120は、インストールされ、その内部で実行する種々の実施形態による推奨システムを有する管理ピアである。
本実施例では、ブロックチェーン・ピア110-160は、サプライチェーン、コールドチェーン、ファイナンス、メディカル、流通、製造など、如何なる数のフィールド及び産業においても互いにトランサクションできる。個別的ピアは、互いに契約して、前もって異なるスマート・コントラクトを生成することができる。これらのスマート・コントラクトは、ジェネシス・ブロックなどというようなブロックチェーン台帳内に格納される。新たなピアがネットワークに参加すると、これらは1つ又はそれ以上の既存のスマート・コントラクトに参加することができる。
種々の実施形態により、推奨ピア(すなわち、ブロックチェーン・ピア)120は、また、既存のスマート・コントラクトの関係、ビジネス・プロファイルなどに基づいて、新たなスマート・コントラクト(チェーンコード)を、ピア110-160に対して推奨することができる。例えば、ブロックチェーン・ピア120は、ブロックチェーン・ピア110-160との間の既存のスマート・コントラクトの関係を格納するスマート・コントラクト関係グラフ122を維持することができる。スマート・コントラクト関係グラフ122の実施例が図4Bに示されているが、実施形態は、これに限定されない。ピア110-160の何れもが推奨ピアとして機能する。また、1つより多いピアが推奨ピアとして機能する。もう1つの実施形態として、信頼された、チェーン外のエンティティ、クライアントなどは、それらがブロックチェーン・データへのアクセスを有する場合にスマート・コントラクトを作成することができる。
図1の実施例においては、推奨ブロックチェーン・ピア120は、ピア110及び150に対応する組織の間で実装することができる新たなスマート・コントラクトを識別し、ピア110及び150のそれぞれに、新たなスマート・コントラクトを示唆するメッセージを送信する。両方のピア110及び150が新たなスマート・コントラクトを承認する場合、推奨ピア120は、そのようなスマート・コントラクトを公開し、かつブロックチェーン・ネットワーク100へとそれを活性化する。もう1つの実施形態として、ピア110又は150、又はそれら両方の1つがスマート・コントラクトを拒否する場合、拒否の理由がそれぞれのピアから提供され、推奨ピア120により格納されて、将来の推奨を増強する。もう1つの実施例として、ピア110及び150は新たに示唆されたスマート・コントラクトの条件/基準の1つ又はそれ以上を修正することができ、ネゴシエーションの後に合意に達することができる。一度合意に達すると、新たなスマート・コントラクトは、リアルタイムで公開/発効されることができる。さらに、新たなスマート・コントラクト又は新たなスマート・コントラクトを示唆するために使用されるグラフ又はこれらの両方の存在の証明は、図7Bの実施例に示されるブロックチェーン上に格納することができる。
図2Aは、実施形態の実施例によるブロックチェーン・アーキテクチャの構成200を示す。図2Aを参照すると、ブロックチェーン・アーキテクチャ200は、例えば、ブロックチェーン・ノード202のグループといった、一定のブロックチェーン要素を含むことができる。ブロックチェーン・ノード202は、1つ又はそれ以上のノード204-210(これら4つのノードは、例示のみによって図示される。)を含む。これらのノードは、ブロックチェーンのトランザクション及び有効化プロセス(コンセンサス)といった多数のアクティビティにおいて参加する。ブロックチェーン・ノード204-210の1つ又はそれ以上は、エンドースメント・ポリシーに基づいてエンドース・トランザクションを行うことができると共に、アーキテクチャ200内の全ブロックチェーン・ノードに対して順序付けサービスを提供することができる。ブロックチェーン・ノードは、ブロックチェーンの確認を開始し、ブロックチェーン・レイヤ216に格納された、土台となる物理的なインフラ基盤214上にも格納されることができるコピーである、ブロックチェーンの変更不能の台帳に書き込みをしようとすることができる。ブロックチェーンの構成は、格納されたプログラム/アプリケーション・コード220(例えば、チェーン・コード、スマート・コントラクトなど)にアクセスし、かつ実行するためのアプリケーション・プログラミング・インタフェース(APIs)222にリンクされた、1つ又はそれ以上のアプリケーション224を含むことができ、これらは、参加者により得られたカスタマイズされた構成に従って生成されることができ、かつそれら自身の状態、それら自身の所有するアセットを維持することができ、かつ外部情報を受領することができる。これは、トランザクションとして及び全ブロックチェーン・ノード204-210に付随する分散台帳を介して配置することができる。
ブロックチェーン・ベース又はプラットホーム212は、ブロックチェーン・データ、サービス(例えば、暗号資産サービス、仮想実行環境など)の種々のレイヤ及び新たなトランザクションを受領し、格納するために使用され、データ・エントリにアクセスしようとする監査手段(auditor)へのアクセスを提供することができる、土台の物理的コンピュータ・インフラ基盤を含む。ブロックチェーン・レイヤ216は、プログラム・コードを処理するために必要な仮想実行環境へのアクセスを提供すると共に、物理的インフラ基盤214への接続を提供するインタフェースを公開することができる。暗号資産サービス218は、アセット交換トランザクションといったトランザクションを確認し、かつ情報をプライベートに保持するために使用することができる。
図2Aのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットホーム212により公開され、サービスが提供される1つ又はそれ以上のインタフェースを介してプログラム/アプリケーション・コードを処理し、かつ実行することができる。コード220は、ブロックチェーンのアセットを制御することができる。例えば、コード220は、データを格納及び移転することができ、かつ条件又はその実行の対象とされる他のコード要素と共にスマート・コントラクト及び関連するチェーン・コードの形態において、ノード204-210により実行可能である。非限定的な実施例として、スマート・コントラクトは、リマインド、アップデート、又は変更、アップデートなどの対象とされる他の通知、又はこれらの組み合わせを実行するために生成されることができる。スマート・コントラクトは、それ自体が許可及びアクセス要求及び台帳の使用に関連する規約を識別するために使用されることができる。例えば、データ読み出し226は、ブロックチェーン・レイヤ216内に含まれる1つ又はそれ以上のプロセッシング・エンティティ(例えば仮想機械)によって処理されて、書き込みデータ228を含むブロックチェーンへと書き込ませるべき処理結果を生成する。物理的インフラ基盤214は、本明細書で説明する如何なるデータ又は情報でも検索するために使用することができる。
スマート・コントラクトは、高レベルのアプリケーション及びプログラミング言語を介して生成され、その後、ブロックチェーン内のブロックに書き込まれることができる。スマート・コントラクトは、登録され、格納され、又はブロックチェーン内で複製(例えばブロックチェーン・ピアの分散ネットワーク)されるか、これら両方の実行可能なコードを含むことができる。トランザクションは、満足されるべきスマート・コントラクトに関連する条件に応答して実行されることができるスマート・コントラクトのコードの実行である。スマート・コントラクトの既存のものは、デジタル・ブロックチェーン台帳の状態へと信頼された修正(複数でも良い)をトリガすることができる。スマート・コントラクトの実行により生成されたブロックチェーン台帳への修正(複数でも良い)は、1つ又はそれ以上のコンセンサス・プロトコルを通してブロックチェーン・ピアの分散ネットワーク全体に自動的に複製することができる。
スマート・コントラクトは、ブロックチェーンに対して鍵-値のペアの形態においてデータを書き込むことができる。さらに、スマート・コントラクトは、ブロックチェーンに格納された値を読み出し、かつアプリケーション操作においてそれらを使用することができる。スマート・コントラクトのコードは、ブロックチェーン内へと種々の論理操作の出力を書き込むことができる。コードは、仮想機械又は他のコンピューティング・プラットホーム内に一時的なデータ構造を生成するために使用することができる。ブロックチェーンへの書き込まれたデータは、公開されるか、又は暗号化されてプライベートに維持されることができるか、又はそれらの両方である。スマート・コントラクトにより使用/生成される一時的データは、供給された実行環境によりメモリ内に保持され、その後、ブロックチェーンについて必要とされたデータが識別されてしまえば、削除される。
チェーン・コードは、スマート・コントラクトのコード・インタプリテーションを含むことができる。本明細書で説明するように、チェーン・コードは、コンピューティング・ネットワークに配置されるプログラム・コードとすることができ、ここで、これはチェーン確認手段(chain validator)により、コンセンサス・プロセスの間に実行され、かつ確認される。チェーン・コードは、ハッシュを受領し、ブロックチェーンから事前に格納されたフィーチャ・イクストラクタを使用して生成されたデータ・テンプレートに関連する、ハッシュを検索する。ハッシュ識別子のハッシュと、格納された識別子テンプレートから生成されたハッシュとがマッチした場合、その後、チェーン・コードは、要求されたサービスに対するオーソライゼーション鍵を送付する。チェーン・コードは、暗号化の詳細と共にブロックチェーン・データに書き込みを行う。
図2Bは、実施例の実施形態による、ブロックチェーンのノードの間のブロックチェーン・トランザクションの実施例を示す。図2Bを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード260により送付されるエンドース・ピア・ノード281へのトランザクション・プロポーザル291を含むことができる。エンドース・ピア281は、クライアントの署名を確認し、チェーン・コードを実行してトランザクションを開始することができる。出力は、チェーン・コードの結果、チェーン・コードにおいて読取られた鍵/値バージョンのセット(読み取りセット)及びチェーン・コード内に書き込まれた鍵/値のセット(書き込みセット)を含むことができる。プロポーザルへの応答292は、クライアント260へと、エンドースメントの署名と共に返信される(認証された場合)。クライアント260は、エンドースメントをトランザクション・ペイロード293内に組み込み、順序付けサービス・ノード284へとブロードキャストする。順序付けサービス・ノード284は、その後、チャネル上の全ピア281-283へとブロックとして指示トランザクションを配布する。ブロックチェーンにコミットする前に、それぞれのピア281-283は、トランザクションを有効化する。例えば、ピアは、エンドースメント・ポリシーをチェックして、特定されたピアの正確な分担が結果に署名されており、トランザクション・ペイロード293に対する署名が証明されたことを保証する。
再度図2Bを参照すると、クライアント・ノード260は、要求を構成し、エンドーサであるピア・ノード281に対して送付することによってトランザクション291を開始する。クライアント260は、サポートされたソフトウェア開発キット(SDK)に影響するアプリケーションを含むことができ、これは、利用可能なAPIを使用してトランザクション・プロポーザルを生成する。プロポーザルは、チェーン・コード機能を呼び出す要求なので、データは台帳との間で読み取り又は書き込み又はそれらの両方が可能とされる(すなわち、アセットについての新たな鍵値のペアの書き込み)。SDKは、トランザクション・プロポーザルを、適切に設計されたフォーマット(例えば、リモート・プロシジャ・コール(RPC)上のプロトコル・バッファ)へとパッケージするためのシムとして機能すると共に、クライアントの暗号化証明書を取得して、トランザクション・プロポーザルに対して固有の署名を生成することができる。
応答して、エンドース・ピア・ノード281は、(a)トランザクション・プロポーザルが良好に形成されていること、(b)トランザクションが過去にすでに提出されていないこと、(c)署名が有効であること、及び(d)提出手段(実施例では、クライアント260)が適切に認証されて、そのチャネル上で提案された操作を実行したことを確認する。エンドース・ピア・ノード281は、呼び出されたチェーン・コード機能への主張としてトランザクション・プロポーザルへと入力することができる。チェーン・コードはその後、実行され、現在状態のデータベースに対して応答の値、読み込みセット、及び書き込みセットを含むトランザクション結果を生成する。しかしながら、この時点では台帳には何らアップデートされない。292において、値のセットは、エンドース・ピア・ノード381の署名と共に、アプリケーションが使用するためにペイロードをパースするクライアント260のSDKへと、プロポーザル応答292として戻される。
応答して、クライアント260のアプリケーションは、エンドース・ピアの署名を検査/確認すると共に、プロポーザル応答を比較して、プロポーザル応答が同一であるか否かを判断する。もし、チェーン・コードが台帳を問い合わせただけならば、アプリケーションは、問い合わせ応答を検査し、かつ典型的には、順序付けノード・サービス284へとトランザクションを提出しない。もし、クライアント・アプリケーションが順序付けノード・サービス284に対してトランザクションを提出して、台帳をアップデートすることを意図する場合、アプリケーションは、提出する前に(すなわち、トランザクションについて全ピア・ノードがトランザクションをエンドースする)、特定されたエンドースメント・ポリシーが完備しているか否かを判断する。ここで、クライアントは、トランザクションへの多数の当事者のうちのただ1つを含むことができる。このアーキテクチャは、アプリケーションが応答を検査しないことを選択しない、若しくはそれでなければエンドースされていないトランザクションを転送する場合であっても、エンドースメント・ポリシーが依然としてピアにより効力であり、コミットの有効化フェーズにおいて維持されたことを示す。
検査が成功した後、トランザクション293ではクライアント260は、エンドースメントをトランザクションへと組み込み、順序付けノード284へのトランザクション・メッセージ内のトランザクション・プロポーザル及び応答をブロードキャストする。トランザクションは、読み出し/書き込みのセット、エンドース・ピアの署名及びチャネルIDを含むことができる。順序付けノード284は、この操作を実行するためにトランザクションの全コンテントを検査する必要はなく、その代わりに順序付けノード284は、単にネットワークにおけるすべてのチャネルからのトランザクションを受領し、それらをチャネルにより時系列的に順序付けすると共に、チャネル当たりのトランザクションのブロックを生成することができる。
トランザクションのブロックは、順序付けノード284から全ピア・ノード281-283へと、チャネル上で配布される。ブロック内のトランザクション294は、確認され、如何なるエンドースメント・ポリシーも完備していることを確認し、かつ読み出しセットがトランザクションの実行により生成されて以来、読み出しセットの台帳状態が不変であったことを保証する。ブロック内でのトランザクションは、有効又は無効であるものとしてタグ付けされる。さらに、ステップ295では、それぞれのピア・ノード281-283は、ブロックに対してチャネルのチェーンを追加し、それぞれの有効なトランザクションについて、書き込みセットが現在の状態データベースに対してコミットされる。イベントが発行され、トランザクションが有効か又は無効かの通知に加えて、トランザクション(呼び出し)がチェーンに不変的に追加される。
図3Aは、パーミッションされたブロックチェーン・ネットワーク300の実施例を示し、分散された非中央化されたピア-ツウ-ピア・アーキテクチャを特徴づけている。本実施例では、ブロックチェーンのユーザ302は、パーミッションされたブロックチェーン304へとトランザクションを開始することができる。本実施例では、トランザクションは、配置、呼び出し、又は問合せとすることができ、SDKにより影響を受けるか又はAPIを通して直接にクライアント・サイドのアプリケーションを通じて発行される。ネットワークは、監査手段といったレギュレータ306に対してアクセスを提供する。ブロックチェーン・ネットワークの操作手段(operator)308は、レギュレータ306を“監査手段”としてのロールを与えると共に、ブロックチェーンのユーザ302を“クライアント”とするといったメンバ・パーミッションを管理する。監査手段は、台帳に問い合わせを行うだけに制限されるが、クライアントは、一定のタイプのチェーン・コードを配置、呼び出し、及び問合せについて許可されることができる。
ブロックチェーン・ディベロッパ310は、チェーン・コード及びクライアント・サイドのアプリケーションを記述することができる。ブロックチェーン・ディベロッパ310は、インタフェースを通してネットワークに対して直接チェーン・コードを配置することができる。チェーン・コード内の従来のデータ・ソース312からの証明書を含ませるために、ディベロッパ310は、データにアクセスするため、バンド外の接続を使用することができる。本実施形態においては、ブロックチェーンのユーザ302は、パーミッションされたブロックチェーン304に、ピア・ノード314を通して接続する。如何なるトランザクションにでも進む前に、ピア・ノード314は、ユーザのロール及びパーミッションを管理するため、ユーザのロール及び証明書オーソリティ316からのトランザクション証明書を検索する。いくつかの実施形態では、ブロックチェーンのユーザは、パーミッションされたブロックチェーン304にトランザクションするため、これらの電子証明書を所有しなければならない。そうしている間に、チェーン・コードを使用しようとしているユーザは、トランザクション・データ・ソース312上のそれらの証明書を確認するように要求されることができる。ユーザの権限を承認するため、チェーン・コードは、従来の処理プラットホーム318を通してこのデータに対してバンド外接続を使用する。
図3Bは、パーミッションされたブロックチェーン・ネットワーク320のもう1つの実施形態を示し、分散された非中央化されたピア-ツウ-ピア・アーキテクチャを特徴づけている。本実施例では、ブロックチェーンのユーザ322は、パーミッションされたブロックチェーン324へとトランザクションを提出する。本実施例では、トランザクションは、トランザクションは、配置、呼び出し、又は問合せとすることができ、SDKにより影響を受けるか又はAPIを通して直接にクライアント・サイドのアプリケーションを通じて発行される。ネットワークは、監査手段といったレギュレータ326に対してアクセスを提供する。ブロックチェーン・ネットワークの操作手段328は、レギュレータ326を“監査手段”としてのロールを与える、及びブロックチェーンのユーザ322を“クライアント”とするといったメンバ・パーミッションを管理する。監査手段は、台帳に問い合わせを行うだけに制限されるが、クライアントは、一定のタイプのチェーン・コードを配置、呼び出し、及び問合せについて許可されることができる。
ブロックチェーンのディベロッパ330は、チェーン・コード及びクライアント・サイドのアプリケーションを記述することができる。ブロックチェーンのディベロッパ330は、インタフェースを通してネットワークに対して直接チェーン・コードを配置することができる。チェーン・コード内の従来のデータ・ソース332からの証明書を含ませるために、ディベロッパ330は、データにアクセスするため、バンド外の接続を使用することができる。本実施形態においては、ブロックチェーンのユーザ322は、ピア・ノード334を通してネットワークに接続する。如何なるトランザクションにでも進む前に、ピア・ノード334は、ユーザのロール及びパーミッションを管理するため、ユーザのロール及び証明書オーソリティ336からのトランザクション証明書を検索する。いくつかの実施形態では、ブロックチェーンのユーザは、パーミッションされたブロックチェーン324にトランザクションするためにこれらの電子証明書を所有しなければならない。そうしている間に、チェーン・コードを使用しようとしているユーザは、トランザクション・データ・ソース332上のそれらの証明書を確認するように要求されることができる。ユーザの権限を承認するため、チェーン・コードは、従来の処理プラットホーム338を通してこのデータに対してバンド外接続を使用する。
いくつかの実施形態においては、本明細書におけるブロックチェーンは、パーミッション無しのブロックチェーンとすることができる。参加するためにパーミッションが必要なパーミッションされたブロックチェーンとは対照的に、誰でもパーミッション無しのブロックチェーンに参加することができる。例えば、パーミッションの無いブロックチェーンに参加するため、ユーザは個人のアドレスを生成し、トランザクションを提出することにより、ネットワーク内でのインタラクションを開始することができ、このため、台帳へのエントリの追加を開始することができる。加えて、全当事者は、システム上でノードを動作させること及びトランザクションの確認を支援するためのマイニング・プロトコルを使用することの選択肢を有する。
図3Cは、複数のノード354を含むパーミッション無しのブロックチェーン352により処理されるトランザクションのプロセス350を示す。送付者356は、支払い又は価値のいくつかの他の形態(例えば、証書、医療記録、契約、商品、サービス、又はデジタル・レコードにカプセルかすることができる如何なる他のアセット)を、パーミッション無しのブロックチェーン352を介して受領者358に送付することを希望する。1つの実施形態においては、送付者デバイス356及び受領者デバイス358のそれぞれは、ユーザ・インタフェース制御及びトランザクション・パラメータの表示が提供されたユーザ・インタフェースを提供する、デジタル・ウォレット(ブロックチェーン352に関連する)を有することができる。応答して、トランザクションは、ブロックチェーン352全体を通してノード354へとブロードキャストされる。ブロックチェーン352のネットワーク・パラメータに依存して、ノードは、パーミッションのブロックチェーン352の生成者により確立された規約(事前決定されるか又は動的に割当てられる)に基づいてトランザクションを確認360する。例えば、これは、当事者が含まれる識別値などを確認することを含む。トランザクションは、即時的に確認されるか、又はそれはトランザクションがネットワーク規約に基づいて有効であるか否かを判断するため、他のトランザクション及びノード354と共にキューに配置することができる。
構造362においては、有効なトランザクションがブロックへと形成され、ロック(ハッシュ)で証明付けされる。このプロセスは、ノード354の内のマイニング・ノードにより実行される。マイニング・ノードは、パーミッション無しのブロックチェーン352に対してブロックをマイニングし、かつ生成するための特定の追加的ソフトウェアを使用することができる。それぞれのブロックは、ネットワークにより合意されたアルゴリズムを使用して生成されたハッシュ(例えば、256ビット数など)により識別することができる。それぞれのブロックは、ヘッダ、チェーン内の以前のブロックのヘッダのハッシュへ、及び有効なトランザクションのグループへのポインタ又は参照を含むことができる。
ブロックがブロックチェーンに追加される前に、ブロックは、確認されなければならない。パーミッション無しのブロックチェーン352についての確認は、ブロックのヘッダから導出されるパズルを解決するプルーフ・オブ・ワーク(PoW)を含むことができる。図3Cの実施例では示されていないが、ブロックを確認することのもう1つのプロセスは、プルーフ・オブ・ステークである。アルゴリズムが数学的問題を解いた採掘者に対して報奨を与えるプルーフ・オブ・ワークのようにではなく、プルーフ・オブ・ステークでは新たなブロックの生成者が決定論的なやり方で、その資産、また“ステーク”として規定されるものに依存して選択される。その後、同様のプルーフが、選定/選択されたノードにより実行される。
マイニング364では、ノードは、解がネットワーク・ワイドのターゲットを満足するまで、1つの変数から増分的に変更を行うことによってブロックを解決しようと試みる。これは、PoWを生成し、これにより、正確な回答が保証される。言い換えれば、可能な解は、コンピューティング・リソースが問題を解き切ったことを証明しなければならない。パーミッション無しのブロックチェーンのいくつかのタイプでは、採掘者は、ブロックを正確に掘り出したことについて価値(例えばコインなど)で報奨することができる。
ここで、PoWプロセスは、ブロックのチェーン化と共に、攻撃者が許可されるべき1つのブロックを修正するため、連続する全ブロックを修正しなければならないことから、ブロックチェーンの修正を極めて困難にする。さらに、新たなブロックが発掘されると、ブロックの修正の困難性は増加し、かつ後続するブロックの数は増加する。分散化366では、成功裏に確認されたブロックは、パーミッション無しのブロックチェーン352を通して配布され、全ノード354は、ブロックを、パーミッション無しのブロックチェーン352の監査可能な台帳であるマジョリティ・チェーンに追加する。さらに、送付者356により提出されたトランザクション内の価値は、受領者デバイス358のデジタル・ウォレットに預金されるか又は移転される。
実施例の実施形態は、ブロックチェーン・ピアを、グラフ構造を使用してスマート・コントラクトにマッピングする概念を導入する。さらに、本システムは、グラフ構造からマイニングされたパターンに基づいて、ブロックチェーン・ピアの間で新たなスマート・コントラクトの推奨を可能とする。本明細書で説明するように、グラフは、ノード及びそれらの間の関係(エッジ)のネットワークであり、ブロックチェーン環境内で互いに相互作用する個人又はオブジェクトの挙動をモデル化するために使用することができる。
図4Aは、実施例の実施形態による、ブロックチェーン・ピアへの、新たなチェーン・コードを示唆するプロセス400Aを示しており、図4Bは、実施形態の実施例により、既存のチェーン・コードの関係を表すピア及びチェーン・コードのグラフ400Bを示すと共に、図4Cは、実施例の実施形態による、存在するチェーン・コードに基づき新たに示唆されたチェーン・コード450を有するグラフ400Cを示す。
図4A~4Cにおいて、ブロックチェーン・ネットワークに参加するそれぞれの組織は、ブロックチェーン内でその自己に対応するピアを有し、かつビジネス・プロセスを実行するためのサービスを受ける。チェーン・コード(又はスマート・コントラクトとして参照される。)は、プログラミング言語内に記述されたビジネス規約である。チェーン・コードは、人間の介在を必要とすること無しに、かつ第3者の管理無しに、自動的に動作することができる。ブロックチェーン台帳は、提出された全トランザクションの、連続し、かつ不可侵のレコードである。これは、ブロックチェーン及び状態データベースから構成される。さらに、プロセス400Aを実行し、かつグラフ400B及び400Cを生成する本システムは、ピア・ノード、クライアント、信頼されたチェーン外のエンティティなどとすることができる。本システムは、ブロックチェーン・ネットワークの参加者の動的な必要性及び変更に基づいて、適応的な仕様で新たなスマート・コントラクトを推奨する推奨システムとして参照することができる。本システム及び方法は、企業に対するサービス契約をマッチさせるため、ナレッジ・ベース及び人工知能を使用する。
図4Aを参照すると、402で、システムは、ストレージから検索される存在するエンティティ及びスマート・コントラクトをマッピングするグラフ400B(図4Bに示す。)を生成する。本ステップにおいて、システムは、共通のオントロジー概念へとスマート・コントラクトの入力及び出力をマップする。本実施例では、グラフ400Bは、ブロックチェーン・ネットワークに含まれるブロックチェーン・ピア430を表すノードの第1のセット431及びブロックチェーン・ネットワーク内に現在存在する異なるチェーン・コードを表すノードの第2のセット441を含む。追加的に、エッジ432は、ブロックチェーン・ピアをそれらが参加するスマート・コントラクトへと接続する。さらに、スマート・コントラクトAのアトリビュート442の実施例が図4Bに示される。アトリビュートは、規約、制約及び制約に対する価値、配布要請、出力要請、SLAの同意などを含むスマート・コントラクトにより管理されるべき基準を含む。
例えば、グラフ400Bは、エンティティ、スマート・コントラクト、及び新たなスマート・コントラクトのシステム示唆を許容しないエンティティからのフィードバックをマッピングするグラフを格納するために使用される、ナレッジ・データベース418内に格納することができる。この最後の情報は、推奨されたスマート・コントラクトに関連する1つ又はそれ以上のエンティティにより既に拒否されたスマート・コントラクトを推奨することを避け、将来の推奨のために使用されることに留意されたい。
再度図4Aを参照すると、404で本システムは、共通のスマート・コントラクトについて探索するため、グラフ400Bをマイニングすることができる。本実施例では、本システムは、多数のスマート・コントラクト内に存在する類似の規約及びアセットを探索することができる。本ステップにおいて使用されるべきアルゴリズムの実施例は、分類及び回帰分析のために使用されるデータを分析する、学習アルゴリズムを伴う教師あり学習モデルである、サポート・ベクトル・マシンを含むことができる。既存のスマート・コントラクトの関係から識別される新たなスマート・コントラクト450の例は、図4Cのグラフ400に示される。
図4Cの実施例においては、新たなスマート・コントラクト450は、以前には互いに接続されていない2つのピア/組織を接続する(すなわち、ピア3とピア7)。新たなスマート・コントラクト450は、ピア3と、ピア2と、ピア7と、ピア9の間の既存のスマート・コントラクトに基づいて識別/判断することができる。さらに、スマート・コントラクト450のアトリビュート452は、既存のスマート・コントラクトの関係、参加者のプロファイルなどから学習すると共に、新たなスマート・コントラクト450に対する示唆されたアトリビュート452を生成する機械学習モデル又は人工知能又はそれら両方(RNNといった)から決定することができる。
図4Aを参照すると、406で、本システムは、ブロックチェーン・ネットワーク内の2つ又はそれ以上の組織/ピア(すなわち、ピア3及びピア7)に対して新たなスマート・コントラクト450を動的に示唆することができる。例えば、新たなスマート・コントラクト450を実装するための示唆を含むメッセージは、管理ピアから新たなスマート・コントラクトに含まれるピアへと送信することができる。新たなスマート・コントラクトは、互いにすでにトランザクションしていないブロックチェーン・ネットワークの2つ又はそれ以上のピアの間の新たな条件の可能性があることについて理解されたい。もう1つの実施例として、新たなスマート・コントラクトは、ブロックチェーン・ネットワーク内の2つ又はそれ以上のピアの間の既存のスマート・コントラクトに対する修正又は新しい条件とすることができる。
言換えれば、存在するスマート・コントラクトのアトリビュートに基づいて、本システムは、すでに接続されているエンティティに対して新たなスマート・コントラクトを示唆することを可能とすると共に、接続されていないエンティティに対して新たなスマート・コントラクトを示唆することさえも可能とする。本ステップで使用されるべきアルゴリズムの実施例は、これに限定されないが、共通近隣係数(common neighbor)又はJaccard係数といったリンク予測を含むことができる。
408では、本システムは、提案が新たなスマート・コントラクト450に含まれるそれぞれのピアから受領されたか否かを判断することができる。例えば、簡単な条件を、示唆が本システムにより示唆されたスマート・コントラクトに関連する全エンティティにより合意されたか否かを確認するために使用することができる。本プロセスは、ネットワークの管理ボード又はコンセンサスを使用して自動的に完了させることができる。
408において合意を受領することに応答して、410で本システムは、新たなスマート・コントラクトを公開し、それを、有効なスマート・コントラクトを含み、したがってスマート・コントラクトを有効化するスマート・コントラクトのリポジトリ416内に格納することができる。本ステップにおいて、新たなスマート・コントラクトに関連するすべてのエンティティは、新たなスマート・コントラクト(すなわち、アセット、規約(複数でもよい)に存在する条件を受領したので、本システムは、新たなスマート・コントラクトを、ここで公開する。
しかしながら、408で1つの当事者から拒否を受領したことに応答して、412において、本システムは、エンティティからのフィードバックを要求することができる。1つ又はそれ以上のエンティティが示唆されたスマート・コントラクトに同意しない場合において、本システムは、示唆に同意しないエンティティに対して将来の同様の示唆を回避するために、フィードバックを依頼する。さらに、414で本システムは、同意しないことについてエンティティの理由を登録することができる。例えば、本システムは、フィードバックを登録し、かつ同意されなかった示唆にフラグを付すことができるので、本システムは、示唆に同意しないエンティティに対して将来的な同様の示唆を回避する。
図4Aには示されていないが、1つ又はそれ以上の当事者は、また、新たなスマート・コントラクト450に対する変更を行うための示唆を提供することができる。例えば、1つのピア/組織は、1つ又はそれ以上のアトリビュートの変更を要求することができる。両方の当事者が修正されたスマート・コントラクトに合意する場合、その後、それは公開され、有効にされる。
図5は、実施例の実施形態による、ブロックチェーン・ネットワークのピアに対して新たなチェーン・コードを示唆する方法500を示す。図5を参照すると、本方法は、510でブロックチェーン・ネットワーク内のブロックチェーン・ピアのグループの既存のチェーン・コードを格納することを含むことができる。チェーン・コードの関係は、ブロックチェーン・ネットワーク内で動作しているスマート・コントラクトのアトリビュートを含むことができる。アトリビュートは、コントラクト、価値、条件、制約など、契約している当事者間などに施行される特性を識別することができる。
チェーン・コードは、それぞれのブロックチェーン・ピアがノードの第1のセット及びスマート・コントラクトを使用して表されるグラフに格納することができ、スマート・コントラクトのそれぞれは、ノードの第2のセットを使用して表される。エッジは、ブロックチェーン・ピアのノードを、スマート・コントラクトに接続して、ピアがスマート・コントラクトに参加することを識別するために使用することができる。グラフ内に表されるこれらの関係は、1つ又はそれ以上の予測アルゴリズムを使用してマイニング(例えば、グラフ・マイニング、構造マイニング、パターン・マイニングなど)することができる。
いくつかの実施形態では、格納することは、グラフ上のノードの第1のセットとして既存のチェーン・コードのそれぞれの識別子を格納すること、グラフ上のノードの第2のセットとしてブロックチェーン・ピアのグループのそれぞれの識別子を格納すること、及び既存のチェーン・コードの関係に基づいて、既存のチェーン・コードに対応するノードの第1のセットを、ブロックチェーン・ピアに対応するするノードの第2のセットへと、エッジで接続することを含むことができる。
520では、本方法は、ブロックチェーン・ピアのグループの間の既存のチェーン・コードの関係に基づいて、ブロックチェーン・ネットワークのブロックチェーン・ピアのグループの間の1つ又はそれ以上のブロックチェーン・ピアのために、新たなチェーン・コードを施行することについての予測を含むことができる。例えば、機械学習アルゴリズム又は人工知能又はそれらの両方(例えばRNNsなど)は、ピア間の関係及びピア間のスマート・コントラクトのアトリビュートに基づいて、パターンの識別、可能な改善の識別、ギャップの識別などのために実行することができる。本システムは、グラフ・マイニング・プロセスを使用してグラフを処理することができる。例えば、グラフ・マイニングは、グラフの特性を分析する種々のソフトウェア・ツールを使用して実行することができ、グラフの構造及び特性が、どのようにチェーン・コードの関係に影響する可能性が有るかを予測し、かつグラフのパターンにマッチする新たなチェーン・コードを開発することができる。
いくつかの実施形態においては、予測は、1つ又はそれ以上の機械学習及び人工知能を介して、既存のチェーン・コードに含まれるアトリビュートに基づいて、新たなチェーン・コード内に含まれるアトリビュートのセットを予測することを含むことができる。例えば、RNNsといった人工知能は、スマート・コントラクトを示唆するために使用することができる。RNNsは、履歴的なスマート・コントラクト及びアトリビュートからトレーニングすることができる。いくつかの実施形態では、新たなチェーン・コードは、1つのブロックチェーン・ピアの間の既存のチェーン・コードの関係の1つ又はそれ以上の変化を含むことができる。いくつかの実施形態では、新たなチェーン・コードは、既存のチェーン・コードの関係を有していない、2つ又はそれ以上のブロックチェーン・ピアの間の新たなチェーン・コードの関係を含むことができる。
530では、本方法は、新たなチェーン・コードを施行するための示唆を有するメッセージを1つ又はそれ以上のブロックチェーン・ピアに送信することを含むことができる。いくつかの実施形態では、本方法はさらに、1つ又はそれ以上のブロックチェーン・ピアから新たなチェーン・コードを施行することに対する申出を受領することを含む。もう1つの実施形態として、本方法は、1つ又はそれ以上のブロックチェーン・ピアから新たなチェーン・コードの施行についての拒否を受領することを含むこと、及び応答して、将来の予測のために新たなチェーン・コードの拒否に関する情報を格納することを含むことができる。もう1つの実施形態として、本方法は、新たなチェーン・コードへの修正を受領すること、及びブロックチェーン・ネットワーク内で、修正された新たなチェーン・コードを有効にすることを含むことができる。
図6Aは、実施例の実施形態により種々の操作を実行するように構成された物理的インフラ基盤610を含む実施例のシステム600を示す。図6Aを参照すると、物理的インフラ基盤610は、モジュール612及びモジュール614を含む。モジュール614は、ブロックチェーン620及び実施例の実施形態の何れにも含まれる如何なる操作ステップ608(モジュール612)を実行することができるスマート・コントラクト630(これはブロックチェーン620上に存在する)を含む。ステップ/操作608は、説明又は図示された実施形態の1つ又はそれ以上を含むことができると共に、1つ又はそれ以上のスマート・コントラクト630又はブロックチェーン620又はそれら両方から読み出し又は書き込みされる出力又は書き込まれた情報を表すことができる。物理的なインフラ基盤610、モジュール612及びモジュール614は、1つ又はそれ以上のコンピュータ、サーバ、プロセッサ、メモリ、又はワイヤレス通信デバイス又はこれらの組み合わせを含むことができる。さらにモジュール612及びモジュール614は、同一のモジュールとすることができる。
図6Bは、実施例の実施形態による種々の操作を実行するために構成されたもう1つの実施例のシステム640を示す。図6Bを参照すると、システム640は、モジュール612及びモジュール614を含む。モジュール614は、ブロックチェーン620及び実施例の実施形態の何れにも含まれる如何なる操作ステップ608(モジュール612)を実行することができるスマート・コントラクト630(これはブロックチェーン620上に存在する)を含む。ステップ/操作608は、説明又は図示された実施形態の1つ又はそれ以上を含むことができると共に、1つ又はそれ以上のスマート・コントラクト630又はブロックチェーン620又はそれら両方から読み出し又は書き込みされる出力又は書き込まれた情報を表すことができる。物理的なインフラ基盤610、モジュール612及びモジュール614は、1つ又はそれ以上のコンピュータ、サーバ、プロセッサ、メモリ、又はワイヤレス通信デバイス又はこれらの組み合わせを含むことができる。さらにモジュール612及びモジュール614は、同一のモジュールとすることができる。
図6Cは、実施例の実施形態による、契約当事者の間のスマート・コントラクトの構成を使用するために構成された実施例のシステム及びブロックチェーン上で契約条件を有効とするために構成された調停サーバを示す。図6Cを参照すると、構成650は、通信セッション、1つ又はそれ以上のユーザ・デバイス652又は656又はそれら両方を明示的に識別したスマート・コントラクト630により駆動される通信セッション、アセット移転セッション、又はプロセス、又は手順を表す。実行、操作及びスマート・コントラクトの実行の結果は、サーバ654により管理される。スマート・コントラクト630のコンテントは、スマート・コントラクトのトランザクションに参加するユーザ・デバイス652及び656の1つ又はそれ以上による電子署名を要求することができる。スマート・コントラクト630は、1つ又はそれ以上のコンピュータ、サーバ、プロセッサ、メモリ、又はワイヤレス通信デバイス又はこれらの組み合わせ上に存在することができるブロックチェーン620上に存在する。
図6Dは、実施例の実施形態による、ブロックチェーンを含むシステム660を示す。図6Dの実施例を参照すると、アプリケーション・プログラミング・インタフェース(API)ゲートウェイ662は、ブロックチェーンの論理(例えば、スマート・コントラクト又は他のチェーン・コード)及びデータにアクセスするための共通のインタフェースを提供する。本実施例では、APIゲートウェイ662は、1つ又はそれ以上のエンティティ652及び656をブロックチェーン・ピア(すなわち、サーバ654)へと接続することにより、トランザクション(呼び出し、問い合わせなど)を実行するための、ブロックチェーン上の共通のインタフェースである。ここで、サーバ654は、クライアント652及び656がブロックチェーン・ネットワークへとトランザクションを提出することに加え、世界状態上のデータの問合せを可能とする、世界状態のコピー及び分散台帳を保有するブロックチェーン・ネットワークのピア・コンポーネントであり、ここで、スマート・コントラクト630及びエンドースメント・ポリシーに依存してエンドース・ピアは、スマート・コントラクト630を動作させるであろう。
上述の実施形態は、ハードウェア内、プロセッサによって実行されるコンピュータ・プログラム内、ファームウェア内、又は上記のものの組み合わせ内に実装することができる。コンピュータ・プログラムは、記録媒体といったコンピュータ可読な媒体上に実体化することができる。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(“RAM”)、フラッシュ・メモリ(登録商標)、リード・オンリー・メモリ(“ROM”)、消化可能なプログラマブル・リード・オンリー・メモリ(“EEPROM”)レジスタ、ハードディスク、取り外し可能なディスク、コンパクト・ディスク・リード・オンリー・メモリ(“CD-ROM”)、又は当技術において知れた如何なる他の記録媒体内に存在することができる。
例示的な記録媒体は、プロセッサにカップルされ、プロセッサが記録媒体との間で情報の読み出し及び情報の書き込みが可能である。代替的に、記録媒体は、プロセッサに一体化することができる。プロセッサ及び記録媒体は、用途特定集積回路(“ASIC”)内に存在することができる。代替的に、プロセッサ及び記録媒体は、別々のコンポーネントとして存在することができる。
図7Aは、実施例の実施形態による、分散台帳720に追加される新たなブロックのプロセスを示し、図7Bは、実施例の実施形態による、ブロックチェーンのための新たなデータ・ブロック構造730の内容を示す。図7Aを参照すると、クライアント(不図示)は、ブロックチェーン・ノード711,712,713へとトランザクションを提出することができる。クライアントは、ブロックチェーン722上での活動を規定する如何なるソースから受領される命令とすることができる。実施例として、クライアントは、デバイス、人、又はブロックチェーンに対してトランザクションを提供するためのエンティティといった要求者の代理として行動するアプリケーションとすることができる。複数のブロックチェーン・ピア(例えば、ブロックチェーン・ノード711,712,713)は、ブロックチェーン・ネットワークの状態及び分散台帳720のコピーを維持することができる。クライアントにより提供されたトランザクションをシミュレートしかつエンドースする、エンドース・ピア及びエンドースメントを確認し、トランザクションを有効化し、かつ分散台帳720へとトランザクションをコミットするコミッティング・ピアを含む異なるタイプのブロックチェーン・ノード/ピアがブロックチェーン・ネットワークに存在することができる。本実施形態では、ブロックチェーン・ノード711,712,713は、エンドーサ・ノード、コミッタ・ノード、又はそれら両方のロールを実行することができる。
分散台帳720は、変更不能で、ブロックの連続するレコード及びブロックチェーン722の現在状態を維持する状態データベース724(現在の世界状態)を格納するブロックチェーンを含む。1つの分散台帳720は、チャネル当たりに存在することができ、それぞれのピアは、それらがメンバーであるそれぞれのチャネルについての分散台帳720のその自らのコピーを維持する。ブロックチェーン722は、ハッシュでリンクされたブロックとして構造化されたトランザクション・ログであり、ここで、それぞれのブロックは、Nトランザクションのシーケンスを含む。ブロックは、図7Bに示されるような種々のコンポーネントを含むことができる。ブロックのリンク(図7Aの矢線により示される)は、現在のブロックのブロック・ヘッダ内に以前のブロックのヘッダのハッシュを追加することにより生成することができる。このやり方において、ブロックチェーン722内の全トランザクションがシーケンス化され、かつ互いに暗号的にリンクされることで、ハッシュ・リンクの破綻なく、ブロックチェーン・データの改竄を防止する。さらに、リンクであるが故に、ブロックチェーン722内の最新のブロックは、それ以前に由来した全部のトランザクションを表す。ブロックチェーン722は、追加のみのブロックチェーン・ワークロードだけをサポートするだけで、ピアのファイル・システム(ローカル又は取り付けられたストレージ)上に格納することができる。
ブロックチェーン722の現在状態及び分散台帳720は、状態データベース724に格納することができる。ここで、現在状態データは、ブロックチェーン722のトランザクション・ログ内に含まれる全鍵についての最新の値を表す。チェーン・コードの呼び出しは、状態データベース724内の現在状態に対してトランザクションを実行する。状態データベース724は、ブロックチェーン722のトランザクション・ログへのインデックス付けされたビューを含むことができ、これは、したがって如何なる時点からでも再生することができる。状態データベース724は、ピアがスタートアップするや否や、トランザクションが受領される前に、自動的にリカバー(又は必要に応じて生成される)することができる。
エンドース・ノードは、クライアントからのトランザクションを受領して、シミュレーションされた結果に基づいて、トランザクションをエンドースする。エンドース・ノードは、トランザクション提案をシミュレートするスマート・コントラクトを保持する。エンドース・ノードが、トランザクションをエンドースする場合、エンドース・ノードは、エンドース・ノードからクライアント・ノードへと、シミュレーションされたトランザクションを示す署名された応答であるトランザクション・エンドースメントを生成する。トランザクションをエンドースする方法は、チェーン・コード内で特定されることができるエンドースメント・ポリシーに依存する。エンドースメント・ポリシーの実施例は、“エンドース・ピアの大多数がトランザクションをエンドースしなければならない。”ことである。異なるチャネルは、異なるエンドースメント・ポリシーを有する可能性がある。エンドースされたトランザクションは、クライアント・アプリケーションにより順序付けサービス710へと、転送される。
順序付けサービス710は、エンドースされたトランザクションを受領し、それらをブロックへと順序付けし、かつブロックをコミッティング・ピアへと配布する。例えば、順序付けサービス710は、トランザクションの閾値に達した場合、タイマのタイム・アウト、又はその他の場合に新たなブロックを開始することができる。図7Aの実施例では、ブロックチェーン・ノード712は、ブロックチェーン722への格納のため、新たなデータの新たなデータ・ブロック730を受領するコミッティング・ピアである。ブロックチェーン内の第1のブロックは、ブロックチェーンについての情報、そのメンバー、その内部に格納されたデータなどを含むジェネシス・ブロックとして参照することができる。
順序付けサービス710は、順序付けのクラスタにより形成することができる。順序付けサービス710は、トランザクション、スマート・コントラクト、又は共有台帳を持たない。その代わりに、順序付けサービス710は、エンドースされたトランザクションを受領して、それらのトランザクションが分散台帳720にコミットされた順序を特定する。ブロックチェーン・ネットワークのアーキテクチャは、“順序”(例えば、ソロ、カフカ、BFTなど)の特定の実装が、プラグイン可能なコンポーネントとなるように、設計することができる。
トランザクションは、矛盾しない順序で分散台帳720に書き込まれる。トランザクションの順序は、状態データベース724へのアップデートがそれらのネットワークへのコミットの時点で有効であることを保証するために確立される。順序付けが暗号化パズル、又はマイニングの解決を通して発生する暗号通貨のブロックチェーン(例えばビットコインなど)のようにではなく、本実施形態においては、分散台帳720の当事者は、ネットワークに最も適合する順次付け機構を選択することができる。
順序付けサービス710が新たなデータ・ブロック730を開始する場合、新たなデータ・ブロック730は、コミッティング・ピア(例えば、ブロックチェーン・ノード711,712,713)へとブロードキャストすることができる。応答して、それぞれのコミッティング・ピアは、新たなデータ・ブロック730内のトランザクションを、読み出しセット及び書き込みセットが依然として、状態データベース724内の現在の世界状態とマッチすることを確実にするためにチェックすることにより、確認する。特に、コミッティング・ピアは、エンドーサがトランザクションをシミュレートした時点で存在していた読み出しデータが、状態データベース724内の現在の世界状態と同一であるか否かを判断することができる。コミッティング・ピアがトランザクションを確認した場合、トランザクションは、分散台帳720上のブロックチェーン722へと書き込みされ、状態データベース724は、読み出し-書き込みのセットからの書き込みデータでアップデートされる。もし、トランザクションに失敗する場合、すなわち、もしコミッティング・ピアが読み出し・書き込みのセット状態データベース724内の現在の世界状態に一致しないことを見出した場合、ブロックへと順序付けされたトランザクションはそのブロック内に依然として含まれるであろうこととはなるが、無効としてマークされることとなって状態データベース724はアップデートされない。
図7Bを参照すると、分散台帳720のブロックチェーン722上に格納された新たなデータ・ブロック730(また、データ・ブロックとしても参照される)は、ブロック・ヘッダ740、ブロック・データ750、及びブロック・メタデータ760といった多数のデータ・セグメントを含むことができる。図7Bに示された種々の図示されたブロック及び新たなデータ・ブロック730といったそれらのコンテンツ及びそのコンテンツは、単なる例示であり、実施例の実施形態の制限を意味しないことについて理解されたい。新たなデータ・ブロック730は、Nトランザクション(複数でもよい)(例えば、1,10,100,500,1000,2000,3000,など)をブロック・データ750内に格納することができる。新たなデータ・ブロック730は、またブロック・ヘッダ740内の以前のブロック(例えば、図7Aにおけるブロックチェーン722)へのリンクを含むことができる。特に、ブロック・ヘッダ740は、以前のブロックのヘッダのハッシュを含むことができる。ブロック・ヘッダ740は、また、固有のブロック番号、新たなデータ・ブロック730のブロック・データ750のハッシュなどを含むことができる。新たなデータ・ブロック730のブロック番号は、固有的であり、ゼロから開始して増分的/連続的な順序といったような種々の順序付けにおいて割り当てることができる。
ブロック・データ750は、新たなブロック730内に記録されたそれぞれのトランザクションのトランザクション情報を格納することができる。例えば、トランザクション・データは、トランザクションの1つ又はそれ以上のタイプ、バージョン、タイムスタンプ、分散台帳720のチャネルID、トランザクションID、エポック、ペイロード可視性、チェーン・コードのパス(配置tx)、チェーン・コードの名称、チェーン・コードのバージョン、入力(チェーンコード及び機能)、公開鍵及び証明書といったクライアント(生成者)識別子、クライアントの署名、エンドーザの識別子、エンドーザの署名、提供されたハッシュ、チェーン・コードのイベント、応答ステータス、名前空間、読み出しセット(トランザクションにより読み出された鍵及びバージョンのリストなど)、書き込みセット(鍵及び値のリストなど)、開始鍵、終了鍵、鍵リスト、Merkle木問合せサマリなどを含むことができる。
種々の実施形態により、ブロック・データ750は、また、新たな推奨されたチェーン・コードをサポートするブロックチェーン内でのピアノ間の既存のチェーン・コードの関係のグラフ・データ752を格納することができる。グラフ・データ752は、ピア及びそれらの間の関係を表すエッジを有するノードとして表されるスマート・コントラクトを含むことができる。グラフ・データ752は、本明細書において説明又は図示された1つ又はそれ以上のステップ、特徴、処理又は活動を含む。したがって、グラフ・データ752は、分散台帳720上のブロックの変更不能のログ内に格納することができる。グラフ・データ752をブロックチェーン上に格納することの利益のいくつかは、本明細書で説明し及び図示された種々の実施形態において参照される。図7Bにおいては、グラフ・データ762は、ブロック・データ750において示されているが、これはブロック・ヘッダ740内又はブロック・メタデータ760内に配置することもできる。
ブロック・メタデータ760は、メタデータ(例えば、バイト・アレイなど)の多数のフィールドを格納することができる。メタデータ・フィールドは、ブロック生成に際しても署名、最後の構成ブロック、ブロック内の有効及び無効のトランザクションを識別するトランザクション・フィルタ、及びブロックを順序付けた順序付けサービスの最後に存続するオフセットなどを含むことができる。署名、最後の構成ブロック及び順序付けのメタデータは、順序付けサービス710によって追加される。その間に、ブロックのコミッタ(ブロック・チェーン・ノード712)は、エンドースメント・ポリシーに基づく有効/無効、読み出し/書き込みセットの確認などを追加する。トランザクション・フィルタは、ブロック・データ750内のトランザクションの数に等しいサイズのバイトアレイ及びトランザクションが有効/無効かを識別する確認コードを含むことができる。いくつかの実施形態においては、図7Bには示されていないが、ブロック・メタデータ760は、その中に推奨されたスマート・コントラクトのメタデータを格納することができる。
図7Cは、本明細書において説明する実施形態による、デジタル・コンテントのためのブロックチェーン770の実施形態を示す。デジタル・コンテントは、1つ又はそれ以上のファイル及びそれに関連する情報を含むことができる。ファイルは、メディア、イメージ、ビデオ、オーディオ、テキスト、リンク、グラフィックス、アニメーション、ウェブ・ページ、ドキュメント、又はデジタル・コンテントの他の形式のものを含むことができる。変更不能の追加のみのブロックチェーンの特徴は、許容性ルールが適用される場合若しくは、証明が考慮に入れられる場合、若しくはデジタル情報のプレゼンテーション及び使用がその他の点で価値を有する場合に、一体性、有効性及びデジタル・コンテントの権限を保護するためのセーフ・ガードとしてブロックチェーンを機能させ、それを法的議事録において好適に利用させる。この場合、デジタル・コンテントは、デジタル証明として参照することができる。
ブロックチェーンは、種々のやり方において形成することができる。1つの実施形態においては、デジタル・コンテントは、ブロックチェーン自体に含まれ、かつアクセスされることができる。例えば、ブロックチェーンのそれぞれのブロックは、参照情報(例えばヘッダ、値など)のハッシュ値を関連するできたるコンテントと共に格納することができる。ハッシュ値及び関連するデジタル・コンテントは、その後、互いに暗号化することができる。したがって、それぞれのブロックのデジタル・コンテントは、ブロックチェーン内のそれぞれのブロックを復号することによってアクセスすることができ、かつそれぞれのブロックのハッシュ値は、以前のブロックを参照するための基礎として使用することができる。これは、以下のように例示することができる:
1つの実施形態においては、デジタル・コンテントは、ブロックチェーン内に含まれない可能性がある。例えば、ブロックチェーンは、如何なるデジタル・コンテンツをも含まないそれぞれのブロックの暗号化されたハッシュを格納することができる。デジタル・コンテントは、オリジナル・ファイルのハッシュ値に関連するもう1つのストレージ領域又はメモリ・アドレスに格納することができる。それぞれのブロックのデジタル・コンテントは、興味のあるブロックのハッシュ値を取得するか、又は問い合わせるかすることにより参照又はアクセスすることができ、その後、実際のデジタル・コンテントに対応して格納されたストレージ領域内で値を有するものをルックアップすることができる。この操作は、例えば、データベースのゲートキーパーにより実行されることができる。これは、以下のように例示できる:
図7Cの実施形態においては、ブロックチェーン770は、暗号的にリンクされた多数のブロック7781,7782,...778Nを、順序だったシーケンスで含む。ここで、N≧1である。ブロック7781,7782,...778Nをリンクするために使用された暗号は、如何なる数の鍵あり又は鍵無しのハッシュ関数とすることができる。1つの実施形態では、ブロック7781,7782,...778Nは、ブロック内の情報に基づく入力から、nビットのアルファベットと、数字とを組み合わせた出力(nは、256又はそれ以外の数)を生成するハッシュ関数に従う。そのようなハッシュ関数の実施例としては、これらに限定されないが、SHAタイプ(SHAは、セキュアード・ハッシュ・アルゴリズム)のアルゴリズム、Merkle-Damgardアルゴリズム、HAIFAアルゴリズム、Merkle木アルゴリズム、ナンス・ベース・アルゴリズム、及びノン・コリジョン・レジスタントPRFアルゴリズムを挙げることができる。もう1つの実施形態では、ブロック7781,7782,...,778Nは、ハッシュ関数とは異なる関数により暗号的にリンクされることができる。例示の目的として、以下に、例えばハッシュ関数SHA-2を参照して説明する。
ブロックチェーン内のそれぞれのブロック7781,7782,...,778Nは、ヘッダ、ファイルのバージョン、及び値を含む。ヘッダ及び値は、それぞれのブロックについてブロックチェーン内のハッシュの結果として異なる。1つの実施形態においては、値は、ヘッダ内に含まれることができる。以下に、より詳細に説明するように、ファイルのバージョンは、オリジナル・ファイルであるか、又はオリジナル・ファイルの異なるバージョンであるかとすることができる。
ブロックチェーンの第1のブロック7781は、ジェネシス・ブロックとして参照され、ヘッダ7721、オリジナル・ファイル7741、及び初期値7761を含む。ジェネシス・ブロック及び実際に連続する全ブロックに使用されるハッシュ・スキームは、変更することができる。例えば、第1のブロック7781の全情報は、互いに1回でハッシュすることができるか、若しくは、第1のブロック7781内の情報のそれぞれ又は一部が別々にハッシュされ、その後、別々のハッシュされた部分のハッシュを実行することができる。
ヘッダ7721は、1つ又はそれ以上の初期パラメータを含むことができ、これは例えば、バージョン・ナンバー、タイムスタンプ、ナンス、ルート情報、困難性レベル、コンセンサス・プロトコル、期間、媒体フォーマット、ソース、説明的キーワード、又はオリジナル・ファイル7741に関連する他の情報を含むことができる。ヘッダ7721は、自動的に(例えば、ブロックチェーン・ネットワーク管理ソフトウェア)生成することができるし、又はブロックチェーンの参加者により手動で生成することができる。ブロックチェーン内の他のブロック7782,778Nのヘッダのようにではなく、ジェネシス・ブロック内のヘッダ7721は、以前のブロックを参照しないが、これは単にそれ以前のブロックがないためである。
ジェネシス・ブロック内のオリジナル・ファイル7741は、デバイスによってキャプチャされたといったデータ、又はブロックチェーン内に含まれる前に処理されていないデータとすることができる。オリジナル・ファイル7741は、デバイス、メディア・ソース又はノードからシステムのインタフェースを通して受領される。オリジナル・ファイル7741は、メタデータを伴っており、これは例えば、ユーザ、デバイス、又はシステム・プロセッサ又はこれらの組み合わせにより、手動又は自動的の何れかで生成することができる。メタデータは、第1のブロック7781内にオリジナル・ファイル7741に関連付けて含まれることができる。
ジェネシス・ブロック内の値7761は、オリジナル・ファイル7741の1つ又はそれ以上の固有のアトリビュートに基づいて生成された初期値である。1つの実施形態においては、1つ又はそれ以上の固有のアトリビュートは、オリジナル・ファイル7741についてのハッシュ値、オリジナル・ファイル7741についてのメタデータ、及びファイルに関連する他の情報を含むことができる。1つの実施形態では、初期値7761は、以下の固有のアトリビュートに基づくことができる:
1)オリジナル・ファイルに対してSHA-2で計算されたハッシュ値
2)オリジナルのデバイスID
3)オリジナル・ファイルの開始タイムスタンプ
4)オリジナル・ファイルの初期の格納場所
5)現在オリジナル・ファイルを制御し、メタデータに関連するソフトウェアに対するブロックチェーン・ネットワーク・メンバID
ブロックチェーン内の他のブロック7782~778Nはまた、ヘッダ、ファイル、及び値を有する。しかしながら、第1のブロック7721のようにではなく、他のブロック内のヘッダ7721~772Nのそれぞれは、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、まさしく直前のブロックのヘッダのハッシュ値、又は以前の全部のブロックのハッシュ値とすることができる。残りのブロックのそれぞれの中に先行するブロックのハッシュ値を含ませることによって、N番目のブロックからジェネシス・ブロックまで戻ってブロックごとの基準で、矢線780で示されるようにトレースの実行が可能となり(及び関連するオリジナル・ファイル)、監査可能かつ変更不能な保護チェーンを確立する。
他のブロック内のヘッダ7722~772Nのそれぞれは、また、例えば、バージョン・ナンバー、タイムスタンプ、ナンス、ルート情報、困難性レベル、コンセンサス・プロトコル、又は対応するファイル又は一般的にはブロックチェーン又はそれら両方に対応した関連する他のパラメータ又は情報を含むことができる。
他のブロックにおけるファイル7742~774Nは、オリジナル・ファイルと等しいことができ、また、例えば、実行された処理のタイプに応じてジェネシス・ブロック内のオリジナル・ファイルの修正バージョンとすることができる。実行された処理のタイプは、ブロックからブロックで変化する可能性がある。処理は、例えば先行する、縮小情報、またはそうでない場合、コンテントの変更、情報の除去、又はファイルへの情報の追加又は添付といった以前のブロックにおけるファイルの如何なる修正を含むことができる。
追加的に、又は代替的に、処理は、単に以前のブロックからファイルをコピーすること、ファイルの格納ロケーションを変更すること、1つ又はそれ以上の以前のブロックからファイルを分析すること、1つのストレージ又はメモリ・ロケーションをもう1つへとファイルを移動すること、若しくはブロックチェーンのファイル又はその関連するメタデータ又はこれら両方に対して相対的に活動を実行すること、を含むことができる。
他のブロック7762~776Nは、固有の値であり、かつ実行された処理の結果として全部異なる。例えば、如何なる1つのブロックの値でも以前のブロック内の値のアップデートされたバージョンに対応する。アップデートは、値が割り当てられるブロックのハッシュ内に反映される。ブロック内の値は、したがって、どの処理がブロック内で実行されたかの識別を提供すると共に、またオリジナル・ファイルに戻るブロックチェーンを通しての追跡を許容する。この追跡は、ブロックチェーン全体にわたってファイルの保護チェーンを強化する。
例えば、以前のブロック内のファイルの部分が縮小、除外、又はファイル内に示された個人の識別を保護するためにピクセル化された場合について考察する。この場合、縮小されたファイルを含むブロックは、例えばどのようにして縮小が実行されたか、誰が縮小を実行したか、縮小(複数)が発生したタイムスタンプなどに関連するメタデータを含むであろう。メタデータは、値を形成するためにハッシュすることができる。ブロックについてのメタデータは、以前のブロックで値を形成するためにハッシュされた情報とは異なるので、値は、互いに異なり、かつ複合された場合に回復することができる。
1つの実施形態においては、以下の1つ又はそれ以上が発生した場合に、以前のブロックの値は、アップデート(例えば、新たなハッシュ値が計算される)されて、現在のブロックの値を形成する。本実施形態においては新たなハッシュ値は、以下の記載の情報の全部又は一部をハッシュすることにより計算することができる。
a)ファイルが如何なるやり方においてでも処理された場合(例えば、ファイルが縮小、コピー、代替、アクセス又はいくつかの他の行為がなされた場合)に新たに計算されたSHA-2ハッシュ値
b)ファイルの新たなストレージ・ロケーション
c)ファイルに関連して識別された新たなメタデータ
d)1つのブロックチェーンの参加者からもう1人のブロックチェーンの参加者へとファイルのアクセス又は制御の移転
図7Dは、1つの実施形態によるブロックチェーン790内のブロックの構造を表すことができるブロックの実施例を示す。ブロック、ブロックiは、ヘッダ772i、ファイル774i、及び値776iを含む。
ヘッダ772iは、以前のブロックブロックi-1のハッシュ値、及び例えば本明細書で議論される、如何なるタイプの情報(例えば、参照、特徴、パラメータなどを含むヘッダ)とすることができる追加的な参照情報を含む。全ブロックは、当然にしてジェネシス・ブロックを除き、以前のブロックのハッシュを参照する。以前のブロックのハッシュ値は、まさしく以前のブロック内のヘッダのハッシュ、又はファイル及びメタデータを含む、以前のブロック内の情報の全部又は一部のハッシュとすることができる。
ファイル774iは、連続的にデータ1,データ2,..,データNといった複数のデータを含む。データは、データに関連するコンテント又は特性又はそれらの両方を記述するメタデータ1,メタデータ2,...,メタデータNである。例えば、それぞれのデータに対するメタデータは、データのタイムスタンプ、データ処理、個人又はデータ内に示された他のコンテントを含むキーワード、又は合法性、及びファイルが全体としてのコンテントを確立することを支援することが可能な他の特徴、又はこれらの組み合わせ、及び特に、例えば、以下の説明する実施例に関連して説明されるように、デジタル証明としてのその使用を示す情報を含むことができる。メタデータに加えて、それぞれのデータは、改竄防止、ファイルの相違、及びファイルを通した連続する参照のために、以前のデータに対して参照値、REF1,REF2,...,REFNでタグ付けすることができる。
一度メタデータがデータに対して割り当てられると(例えば、スマート・コントラクト)、メタデータはハッシュを変更することなく変えることはできず、このことは無効化について容易に識別することを可能とする。メタデータは、したがって、ブロックチェーン内の参加者の使用のためにアクセスされることができる情報のデータ・ログを生成する。
値776iは、ハッシュ値、又は以前に議論した如何なる情報のタイプに基づいて計算された他の値である。例えば、如何なる所与のブロック、ブロックiについて、そのブロックについての値は、そのブロックについて実行された処理、例えば、新たなハッシュ値、新たな格納ロケーション、関連するファイルに対する新たなメタデータ、制御又はアクセスの移転、識別子、又は追加される可能性のある他の行為又は情報を反映させるためにアップデートすることができる。それぞれのブロック内の値は、ファイルのデータについてメタデータとは別になるように示されているが、値は、もう1つの実施形態においては、このメタデータに部分的、又は完全に基づくものとすることができる。
一度ブロックチェーン770が形成されると、如何なる時点においても、ブロックを横断して値のトランザクション履歴についてブロックチェーンに問い合わせることにより、ファイルについての変更不能の保護チェーンを得ることができる。この問い合わせ、又は追跡手順は、最も最近に導入された(例えば、最後の(Nth)ブロック)ブロックの値を復号すること、及びその後、ジェネシス・ブロックに達し、かつオリジナル・ファイルが回復されるまで他のブロックの値を復号し続けることにより開始することができる。復号は、同様にそれぞれのブロックでヘッダ及びファイル、及び関連するメタデータを復号することを含む。
復号は、それぞれのブロック内で発生した暗号化のタイプに基づいて実行される。これは、秘密鍵、公開鍵、又は公開鍵・秘密鍵ペアの使用を含むことができる。例えば、非非対称暗号法が使用される場合、ブロックチェーンの参加者、すなわちネットワーク上のプロセッサは、事前決定された関係を使用して公開鍵と、秘密鍵ペアを生成することができる。公開鍵及び秘密鍵は、いくつかの数学的関係を通して互いに関連される。公開鍵は、他のユーザからメッセージを受領するための、例えばIPアドレス又はホーム・アドレスといったアドレスとして機能させるため広く配布されることができる。秘密鍵は、秘密のまま保持され、かつ他のブロックチェーン参加者へと送付されるメッセージにデジタル署名するために使用される。署名は、メッセージに含まれるので、受領者は、送付者の公開鍵を使用して確認することができる。この方法では、受領者は、送付者がこのメッセージを送付したことだけを保証することができる。
鍵ペアを生成することは、何れかの場所の実際の登録者がいなくてもよいことを除き、ブロックチェーン上にアカウントを生成することに類似することができる。また、ブロックチェーン上で実行されるすべてのトランザクションは、送付者がそれらの秘密鍵を使用することによりデジタル的に署名される。この署名は、アカウントの所有者のみがブロックチェーンのファイルを追跡し、かつ処理(スマート・コントラクトにより決定されるパーミッションの範囲内である場合)することを可能とする。
図8A及び8Bは、本明細書に含ませることができ、使用することができるブロックチェーンのユース・ケースの追加的な実施形態を示す。特に図8Aは、機械学習(人工知能)データを格納するブロックチェーン810の実施例800を示す。機械学習は、膨大な量の履歴的データ(又はトレーニング・データ)に依存する。機械学習ソフトウェア(例えば、ニューラル・ネットワークなど)は、多くの場合、数百万のレコードを通してシフトし、非直感的なパターンを発見することができる。
図8Aの実施例においては、ホスト・プラットホーム820は、アセット830を予測的にモニタするための機械的学習モデルを構築し、かつ配置する。ここで、ホスト・プラットホーム820は、クラウド・プラットホーム、工業的サーバ、ウェブ・サーバ、パーソナル・コンピュータ、ユーザ・デバイスなどとすることができる。アセット830は、航空機、機関車、タービン、医療器械及び設備、石油及びガス設備、ボート、船舶、車両など、如何なるタイプのアセット(例えば、機械又は装置など)とすることができる。もう1つの実施例として、アセット830は、株式、通貨、デジタル・コインなどの、非過渡的なアセットとすることができる。
ブロックチェーン810は、機械学習モデルのトレーニング・プロセス802及びトレーニングされた機械学習モデルに基づく予測プロセス804の両方を著しく改善するために使用することができる。例えば、802において、データを収集するデータ・サイエンティスト/エンジニア又は他のユーザを必要とするのではなく、履歴的データがアセット830それら自体(又は図示しない仲介を通して)によりブロックチェーン810上に格納することができる。これは、予測的モデルのトレーニングを実行する場合にホスト・プラットホーム820により必要とされる収集時間を著しく削減することができる。例えば、スマート・コントラクトを使用し、データは、その元の場所から直接的、かつ容易にストレートにブロックチェーン810へと移転することができる。収集されたデータの安全性及び所有権を保証するためブロックチェーン810を使用することにより、スマート・コントラクトは、アセットから、機械学習モデルを構築しようとするために使用する個々への直接的なデータ送信を可能とする。これは、アセット830の間でデータを共有することを許容する。
収集されたデータは、コンセンサス機構に基づいてブロックチェーン810内に格納することができる。コンセンサス機構は、記録されたデータが確認され、かつ正確であることを保証するように構成される(パーミッションされたノード)。記録されたデータは、タイムスタンプが付され、暗号的に署名され、変更不能である。したがって、これは、監査可能であり、透明であり、かつ安全である、ブロックチェーンに直接書き込みを行うIoTデバイスに加えて、一定の場合(すなわち、サプライチェーン、健康管理、運輸など)においては、記録されるデータの頻度及び精度の両方が高まっている。
さらに、収集されたデータへの機械学習モデルのトレーニングは、ホスト・プラットホーム820による改善及びテストを反復する可能性がある。それぞれの反復は、機械学習モデルの知識を拡張するのを支援するため、追加のデータ又は以前には考慮されていなかったデータに基づくことができる。802では、異なるトレーニング及びテストステップ(及びそれに伴うデータ)は、ホスト・プラットホーム802により、ブロックチェーン810上に格納することができる。機械学習モデルのそれぞれの改善(例えば、変数、重みの変更など)は、ブロックチェーン810上に格納される。これは、モデルがどのようにしてトレーニングされ、どのデータがモデルをトレーニングするために使用されたかについての確認可能なプルーフを提供する。さらに、ホスト・プラット補0ム820が最終的なモデルに到達した場合、得られるモデルは、ブロックチェーン810内に格納することができる。
モデルがトレーニングされた後、モデルは、最後にトレーニングされた機械学習モデルの実装に基づいて予測/判断を行うことができる、ライブ環境に配置することができる。例えば、804で、機械学習モデルは、航空機、風力タービン、健康管理機器などといったアセットについてコンディション-ベースの維持(condition-based maintenance:CBM)のために使用することができる。この実施例において、アセット830からフィードバックされたデータは、機械学習モデルに入力することができ、かつ故障イベント、エラー・コードなどといったイベント予測を行うために使用することができる。ホスト・プラットホーム820での機械学習モデルの実行によりなされた判断は、ブロックチェーン810内に格納されて、監査可能/確認可能なプルーフを提供する。1つの非制限的ではない実施例として、機械学習モデルは、アセット830の部品の将来の破損/故障を予測し、部品の交換について警告又は通知を生成することを可能とする。この決定の背後のデータは、ブロックチェーン810上のホスト・プラットホーム820により格納される。1つの実施形態においては、本明細書で記載され、又は図示され又はこれら両方の特徴又は活動又はそれら両方は、ブロックチェーン810上で、又は関連して発生することができる。
ブロックチェーンに対する新たなトランザクションは、新たなブロックへと収集され、既存のハッシュ値へと追加することができる。これはその後に暗号化されて、新たなブロックに対する新たなハッシュが生成される。結果は、それぞれが以前の全ブロックのハッシュ値を含むブロックのチェーンである。これらのブロックを格納するコンピュータは、定期的にそれらのハッシュ値を比較して、それらが全部一致していることを保証する。一致していない如何なるコンピュータは、レコードが問題を生じているものとして、レコードを廃棄する。このアプローチは、完全ではないものの、ブロックチェーンの改竄耐性を保証するには良好である。
本システムに対して勝負を行う1つのやり方は、誠意的ではないユーザが、それらの好みにおいてハッシュを不変に残しながらトランザクションのリストを修正することである。これは、ブルート・フォース、言い換えればレコードを変更し、結果を暗号化し、ハッシュ値が同一であるか否かを調べることによりなされる可能性がある。そうでない場合、ハッシュがマッチを見出すまで、それは再度、再度及び再度、試行する。ブロックチェーンのセキュリティは、通常のコンピュータは、この種類のブルート・フォース攻撃を、宇宙の寿命といった完全に現実的ではない時間スケールにわたって遂行することばかりしかできない、という信念に基づくものである。対照的に量子コンピュータは、より早く(何千倍も高速)、この結果、より大きな脅威を提示する。
図8Bは、量子コンピューティングの攻撃に対して防御するための量子鍵配布(QKD)を実装する、量子的にセキュアなブロックチェーン852の実施例850を示す。この実施例においては、ブロックチェーンのユーザは、QKDを使用して互いに他の識別を確認することができる。これは、光子といった、それらを破壊することなく盗聴することによってはコピーすることができない量子的粒子を使用して情報を送付する。この方法において、ブロックチェーンを通した送付者及び受領者は、それぞれ他の識別を確認することができる。
図8Bの実施形態では、4のユーザ854,856,858,860が存在する。ユーザのそれぞれのペアは、それらの間で秘密鍵862(すなわちQKD)を共有することができる。本実施例では、4ノードが存在するので、ノードの6ペアが存在し、したがって、QKDAB、QKDAC、QKDAD、QKDBC、QKDBD、及びQKDCDを含む6つの異なる秘密鍵862が使用される。それぞれのペアは、光子といった、それらを破壊することなく盗聴することによってはコピーすることができない量子的粒子を使用して情報を送付することによりQKDを生成することができる。このやり方において、ユーザのペアは、それぞれ他の識別を確認することができる。
ブロックチェーン852の操作は、2つの手順(i)トランザクションの生成、及び(ii)新たなトランザクションをアグリゲートするブロックの構築に基づく。新たなトランザクションは、従来のブロックチェーン・ネットワークと同様にして生成することができる。それぞれのトランザクションは、送付者、受領者、生成した時刻、転送するべき量(又は値)、送付者が操作のための資金を有することを正当化する参照トランザクションのリストなどを含むことができる。このトランザクションはその後、他の全ノードへと送付され、ここでは未承認トランザクションのプールへと入れられる。ここで、2つの当事者(すなわち、854-860の間のユーザのペア)がそれらの共有の秘密鍵862(QKD)を提供することによりトランザクションを証明する。この量子証明は、トランザクション毎に添付することができるので、改竄を極めて困難とする。それぞれのノードは、それらのエントリを、ブロックチェーン852のローカル・コピーについてチェックして、それぞれのトランザクションが十分な資金を有していることを確認する。しかしながら、トランザクションは、依然として承認されていない。
ブロックに対して従来のマイニング・プロセスを実行する代わりに、ブロックは、ブロードキャスト・プロトコルを使用した、非中央化されたやり方において生成することができる。所定の時間間隔(例えば、秒、分、時間など)において、ネットワークは、未承認トランザクションの何れに対してもブロードキャスト・プロトコルを適用することができ、それによってトランザクションの正確なバージョンに関してビザンチン合意(コンセンサス)を達成する。第1のラウンドでは、ノードは、それらの秘密値を互いに通信する。これに続いたラウンドにおいて、ノードは、他のノードからの以前のラウンドでそれらが受領した情報を通信する。ここで、誠実なノードは、新たなブロック内でトランザクションの完全なセットを生成することができる。この新たなブロックがブロックチェーン852に追加することができる。1つの実施形態における、本明細書で説明し、又は図示し、又はそれら両方の本特徴又は行為又はそれら両方は、ブロックチェーン852上で、又は関連して発生することができる。
図9は、本明細書で説明又は図示又はそれら両方がされた1つ又はそれ以上の実施例の実施形態をサポートする、実施例のシステム900を示す。システム900は、コンピュータ・システム/サーバ902を備え、これは、多数の他の汎用目的又は特定目的のコンピューティング環境又は構成と共に操作される。コンピュータ・システム/サーバ902と共に使用するために好適な周知のコンピューティング・システム、環境、又は構成又はそれらの両方の実施例は、これらに限定されることはなく、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シンクライアント、シッククライアント、ハンドヘルド又はラップトップデバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セットトップ・ボックス、プログラム可能なコンシューマ電子機器、ネットワークPCs、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上述したシステム又はデバイスの如何なるものでも含む分散クラウド・コンピューティング環境などを含む。
コンピュータ・システム/サーバ902は、コンピュータ・システムにより実行されるプログラム・モジュールといったコンピュータ・システム実行可能な命令の一般的なコンテキストにおいて説明することができる。一般には、プログラム・モジュールは、特定のタスクを実行し、又は特定の抽象データ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ902は、タスクが通信ネットワークを通してリンクされたリモート・プロセッシング・デバイスにより実行される分散クラウド・コンピューティング環境において実施することができる。分散クラウド・コンピューティング環境においては、プログラム・モジュールは、ローカル及びリモート・コンピュータ・システムの両方のメモリ・ストレージ・デバイスを含む、記録媒体に配置することができる。
図9に示されるように、クラウド・コンピューティング・ノード900内のコンピュータ・システム/サーバ902は、汎用目的のコンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ902のコンポーネントは、これらに限定されないが、1つ又はそれ以上のプロセッサ又はプロセッサ・ユニット904、システム・メモリ906、及びシステム・メモリ906及びプロセッサ904を含む種々のシステム・コンポーネントを結合するバスを含むことができる。
バスは、メモリ・バス又はメモリ・コントローラ、ペリフェラル・バス、グラフィックス・アクセラレータ・ポート、及びプロセッサ又は種々のバス・アーキテクチャの如何なるものを使用するローカル・バスを含む、1つ又はそれ以上のバス構造のいくつかのタイプの如何なるものも表す。例示の目的で、限定的でなく、そのようなアーキテクチャは、インダストリー・スタンダード・アーキテクチャ(ISA)バス、マイクロ-チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA)ローカル・バス、及びペリフェラル・インタコネクト(PCI)バスを含む。
コンピュータ・システム/サーバ902は、典型的には種々のコンピュータ・システム可読な記録媒体を含む。そのような媒体は、コンピュータ・システム/サーバ902によりアクセス可能な如何なる利用可能な媒体とすることができ、それは、揮発性及び不揮発性媒体、取り外し可能及び取り外し不可能な媒体を含む。システム・メモリ906は、1つの実施形態では、他の図面のフロー図を実装する。システム・メモリ906は、揮発性メモリの形式で、ランダム・アクセス・メモリ(RAM)910又はキャッシュ・メモリ912といった、コンピュータ・システム可読な媒体を含むことができる。コンピュータ・システム/サーバ902は、さらに他の取り外し可能/取り外し不可能、揮発性/不揮発性な、コンピュータ・システムのストレージ媒体を含むことができる。実施例としての目的のみにより、ストレージ・システム914は、取り外し不可能な、不揮発性の磁性媒体(図示しないが典型的には、“ハードドライブ”と呼ばれる)との間で読み出し及び書き込みするために提供することができる。図示しないが、取り外し可能な不揮発性の磁気ディスク・ドライブ(例えば、“フロッピーディスク”(登録商標))との間で読み出し及び書き込みするための磁気ディスク・ドライブ、及びCD-ROM、DVD-ROM、又は他の光学的媒体との間で読み出し及び書き込みするための光学的ディスク・ドライブを提供することができる。そのような例においては、それぞれは、1つ又はそれ以上のデータ媒体インタフェースによりバスへと接続されることができる。以下にさらに図示し、説明されるように、メモリ906は、種々の実施形態の機能を遂行するように構成されたプログラム・モジュールのセット(例えば少なくとも1つ)を含む、少なくとも1つのプログラム製品を含むことができる。
プログラム/ユーティリティ916は、オペレーティング・システム、1つ又はそれ以上のアプリケーション・プログラム、他のプログラム・モジュール及びプログラム・データに加えて、プログラム・モジュール918のセット(少なくとも1つ)を有しており、メモリ906内に格納することができる。1つ又はそれ以上のオペレーティング・システム、1つ又はそれ以上のアプリケーション・プログラム、他のプログラム・モジュール及びプログラム・データまたはそれらのいくつかの組み合わせは、それぞれネットワーク環境の実装を含むことができる。プログラム918は、一般に種々の実施形態の機能又は方法論又はそれらの両方を実行する。
当業者により認識されるであろう様に、本出願の側面は、システム、方法、又はコンピュータ・プログラム製品として実体化することができる。したがって、本発明の側面は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロ・コードなど)、又は本明細書において、“回路、”“モジュール”、又は“システム”として一般的に参照されることができる、ソフトウェア及びハードウェアの側面が組み合わされた実施形態の形態を取ることができる。さらに、本出願の側面は、それ上に実体化されたコンピュータ可読なプログラム・コードを有する1つ又はそれ以上のコンピュータ可読な媒体(複数でもよい)に実体化されたコンピュータ・プログラム製品の形態を取ることができる。
コンピュータ・システムサーバ902は、また、キーボード、ポインティング・デバイス、ディスプレイ922などの1つ又はそれ以上の外部デバイス920;コンピュータ・システム/サーバ902と、ユーザとをインタラクトさせることを可能とする1つ又はそれ以上のデバイス;又はコンピュータ・システム/サーバ902を1つ又はそれ以上の他のコンピューティング・デバイスと通信可能とする如何なるデバイス(例えば、ネットワーク・カード又はモデムなど)又はこれらの組み合わせと通信可能とすることができる。さらにまた、コンピュータ・システム/サーバ902は、ローカル・エリア・ネットワーク(LAN)、汎用ワイド・エリア・ネットワーク(WAN)、又は公衆ネットワーク(インターネット)又はそれらの組み合わせといった、1つ又はそれ以上のネットワークとネットワーク・アダプタ926を介して通信可能である。図示するように、ネットワーク・アダプタ926は、コンピュータ・システム/サーバ902の他のコンポーネントとバスを介して通信する。図示しないが、他のハードウェア又はソフトウェア又はそれら両方のコンポーネントは、コンピュータ・システム/サーバ902との組み合わせで使用することができるであろうことは理解されるべきである。実施例は、限定することではなく、マイクロ・コード、デバイス・ドライバ、冗長処理ユニット、及び外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどを含む
システム、方法及び非過渡的なコンピュータ可読な媒体の少なくとも1つの実施例の実施形態を貼付する図面に例示し、上述の詳細な説明において説明してきたが、本出願は、開示された実施形態に限定されることはなく、上述及び以下の請求項により規定されるとおり、数多くの再配置、修正、及び置換が可能であることについて理解されるであろう。例えば、種々の図面のシステムの能力は、本明細書で説明した1つ又はそれ以上のモジュール又はコンポーネント又は分散アーキテクチャにより実行することができ、かつ通信機、受信機、又は両方のペアを含むことができる。例えば、個別的なモジュールにより実行される機能の全部又は一部は、1つ又はそれ以上のそれらのモジュールにより実行することができる。さらに、本明細書で説明した機能は、種々の回数で、かつモジュール又はコンポーネントの内部又は外部の種々のイベントにおいて実行することができる。また、種々のモジュールの間で送付される情報は:データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、ワイヤレス・デバイス、有線デバイス又は複数のプロトコル又はこれらの組み合わせのうちの少なくとも1つを介して、モジュール間で送信することができる。また、如何なるモジュールによって送付され又は受領されたメッセージは、直接、又は1つ又はそれ以上の他のモジュール又はそれらの組み合わせにより送付又は受領されることができる。
当業者は、“システム”が、パーソナル・コンピュータ、サーバ、コンソール、パーソナル・デジタル・アシスタント(PDA)、セル・ホン、タブレット・コンピューティング・デバイス、スマートホン又は如何なる他の好適なコンピューティング・デバイス又はデバイスの組み合わせとして実体化することができることについて認識するであろう。“システム”によって実行される上述の機能の提示は、本出願の範囲を限定することを意図するものではなく、如何なる方法においても多数の実施形態の1つの実施形態を提供することを意図する。実際に、本明細書に記載した方法、システム、及び装置は、コンピューティング技術に矛盾しないローカライズされかつ分散された形態において実装することができる。
本明細書において説明された本システムの特徴のいくつかは、それらの実装の独立性を特により強調するためにモジュールとして提示されたことについて留意するべきである。例えば、モジュールは、カスタム化された大規模集積(VLSI)回路又はゲート・アレイ、論理チップ、トランジスタ、又は他の別々のコンポーネントといった市販の半導体として実装することができる。モジュールは、また、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、グラフィックス・プロセッシング・ユニットなどにおいて実装することができる。
モジュールは、また、少なくとも部分的に種々のタイプのプロセッサの実行のためのソフトウェア内に実装することができる。実行可能なコードの識別されたユニットは、例えば、コンピュータ命令の1つ又はそれ以上の、例えばオブジェクト、プロシジャ、又は関数として組織化されることができる物理的又は論理的ブロックを含むことができる。それにもかかわらず、識別されたモジュールの実行可能性は、物理的に互いに配置される必要性は無く、論理的に互いに結合された場合にモジュールを構成し、かつ上述した目的を達成する異なるロケーションに格納された異種の命令を含むことができる。さらに、モジュールは、例えばハードディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、又はデータを格納するために使用される如何なる他の媒体といったコンピュータ可読な媒体上に格納することができる。
実際に、実行可能なコードのモジュールは、単一の命令又は多数の命令とすることができ、異なるプロクラムの間でかついくつかの異なるメモリ・デバイスを横断して、いくつかの異なるコード・セグメントに渡って分散させることさえ可能である。同様に、操作データは、モジュール内にあるものとして識別され、説明することができ、かつ如何なる好適なタイプのデータ構造において如何なる好適な形態及び組織化において実体化することができる。操作データは、単一のデータセット又は異なるストレージ・デバイスにわたることを含む異なるロケーションにわたって分散することができ、かつシステム又はネットワーク上に少なくとも部分的に単に電子的信号として存在することができる。
アプリケーションのコンポーネントは、本明細書において一般に説明され、かつ図面において図示された通り、異なる構成の広範な変更において配置され、かつ設計することができる。したがって、実施形態の説明は、請求された本出願の範囲を制限することを意図するものではなく、本出願の代表的で、選択された実施形態に過ぎない。
当業者は、上記のものが異なる順序のステップで又は、説明されたもの以外の異なる構成のハードウェア要素又はこれらの両方において実施できることについて、容易に理解するであろう。したがって、本出願は、それらの好ましい実施形態に基づいて説明してきたが、当業者によれば、一定の修正、変更、及び代替的な構成は明らかであろう。
本出願の好ましい実施形態を説明してきたが、説明した実施形態は、単に例示的であり、本出願の範囲は、それに対する均等及びそれに対する修正の完全な範囲と共に考慮される場合、添付する請求項によって規定されるべきである(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットホームなど)。