JP2023530594A - 分散型データベースにおける許可されたイベント処理 - Google Patents
分散型データベースにおける許可されたイベント処理 Download PDFInfo
- Publication number
- JP2023530594A JP2023530594A JP2022571219A JP2022571219A JP2023530594A JP 2023530594 A JP2023530594 A JP 2023530594A JP 2022571219 A JP2022571219 A JP 2022571219A JP 2022571219 A JP2022571219 A JP 2022571219A JP 2023530594 A JP2023530594 A JP 2023530594A
- Authority
- JP
- Japan
- Prior art keywords
- event
- blockchain
- event data
- context
- identifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
例示的な動作は、実体からイベント・データを受信することと、イベント・データが署名ポリシーを満たすということを決定することと、イベント・データのコンテキストに対応する識別子を設定することと、イベント・データおよび識別子を含んでいるイベントを生成することと、分散型データベースに記録するためのイベントをサブミットすることとのうちの1つまたは複数を含み、識別子が、イベント・データ内のコンテキストに対応する状態が正しいということの妥当性を確認するために使用される。
Description
集中データベースは、データを単一のデータベース(例えば、データベース・サーバ)に格納して一か所で維持する。この位置は、多くの場合、中央コンピュータであり、例えば、デスクトップの中央処理装置(CPU:central processing unit)、サーバCPU、またはメインフレーム・コンピュータである。集中データベースに格納された情報は、通常、複数の異なる位置からアクセス可能である。複数のユーザまたはクライアント・ワークステーションが、例えばクライアント/サーバ構成に基づいて、集中データベースを使用して同時に作業することができる。集中データベースは、単一の位置のため、特にセキュリティの目的で、管理、維持、および制御するのが容易である。集中データベース内では、すべてのデータの単一の格納場所が、特定のデータのセットのみが1つの一次記録を含むということも意味するため、データの冗長性が最小限に抑えられる。
1つの実施形態例は、実体からイベント・データを受信するための受信者、スマート・コントラクトのチェーンコードを格納するためのストレージ領域、およびスマート・コントラクトを実行するためのプロセッサのうちの1つまたは複数を含んでいるシステムを提供し、スマート・コントラクトが、イベント・データが署名ポリシーを満たすということを決定することと、イベント・データのコンテキストに対応する識別子を設定することと、イベント・データおよび識別子を含んでいるイベントを生成することと、分散型データベースに記録するためのイベントをサブミットすることとのうちの1つまたは複数を実行し、識別子が、イベント・データ内のコンテキストに対応する状態が正しいということの妥当性を確認する。
別の実施形態例は、実体からイベント・データを受信することと、イベント・データが署名ポリシーを満たすということを決定することと、イベント・データのコンテキストに対応する識別子を設定することと、イベント・データおよび識別子を含んでいるイベントを生成することと、分散型データベースに記録するためのイベントをサブミットすることとのうちの1つまたは複数を含んでいる方法を提供し、識別子が、イベント・データ内のコンテキストに対応する状態が正しいということの妥当性を確認するために使用される。
さらなる実施形態例は、命令を含んでいる非一過性コンピュータ可読媒体を提供し、これらの命令は、プロセッサによって読み取られたときに、プロセッサに、実体からイベント・データを受信することと、イベント・データが署名ポリシーを満たすということを決定することと、イベント・データのコンテキストに対応する識別子を設定することと、イベント・データおよび識別子を含んでいるイベントを生成することと、分散型データベースに記録するためのイベントをサブミットすることとのうちの1つまたは複数を実行させ、識別子が、イベント・データ内のコンテキストに対応する状態が正しいということの妥当性を確認する。
本明細書の図において一般的に説明され、示されているように、本明細書のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、添付の図において表された方法、装置、非一過性コンピュータ可読媒体、およびシステムのうちの少なくとも1つの実施形態に関する以下の詳細な説明は、請求されている本出願の範囲を制限するよう意図されておらず、単に選択された実施形態を代表している。
本明細書全体を通して説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせられるか、または削除されてよい。例えば、語句「実施形態例」、「一部の実施形態」、またはその他の同様の言葉の使用は、本明細書全体を通じて、実施形態に関連して説明された特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれてよいということを指している。したがって、語句「実施形態例」、「一部の実施形態において」、「その他の実施形態において」、またはその他の同様の言葉の出現は、本明細書全体を通じて、必ずしもすべてが実施形態の同じグループを指しておらず、説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせられるか、または削除されてよい。さらに、各図では、要素間の任意の接続は、示された接続が一方向または双方向の矢印である場合でも、一方向通信または双方向通信あるいはその両方を許可することができる。また、図面に示された任意のデバイスは、異なるデバイスであることができる。例えば、情報を送信しているモバイル・デバイスが示された場合、その情報を送信するために、有線デバイスも使用され得る。
加えて、「メッセージ」という用語が実施形態の説明において使用されていることがあるが、パケット、フレーム、データグラムなどの他の種類のネットワーク・データが使用されてもよい。さらに、特定の種類のメッセージおよび信号伝達が実施形態例において示されることがあるが、メッセージおよび信号伝達は、特定の種類のメッセージおよび信号伝達に限定されない。
1つの実施形態では、本出願は、互いに通信する複数のノードを含んでいる分散ストレージ・システムである分散型データベース(ブロックチェーンなど)を利用する。分散型データベースは、相互に信頼できない関係者間でレコードを維持することができる分散型台帳に似ている、追加専用の変更不可能なデータ構造を含む。信頼できない関係者は、本明細書ではピアまたはピア・ノードと呼ばれる。各ピアは、データベース・レコードのコピーを維持し、単一のピアは、分散されたピア間で合意に達することなく、データベース・レコードを変更することができない。例えば、ピアは、ブロックチェーン格納トランザクションの妥当性を確認し、それらの格納トランザクションをブロックにグループ化し、ブロック上にハッシュ・チェーンを構築するために、合意プロトコルを実行してよい。このプロセスは、一貫性のために、必要に応じて、格納トランザクションを順序付けることによって台帳を形成する。さまざまな実施形態では、許可型ブロックチェーンまたは許可なしブロックチェーンあるいはその両方が使用され得る。パブリック・ブロックチェーンまたは許可なしブロックチェーンには、特定の識別情報なしで、誰でも参加することができる。パブリック・ブロックチェーンは、ネイティブ暗号通貨を含み、プルーフ・オブ・ワーク(PoW:Proof of Work)などのさまざまなプロトコルに基づいて、合意を使用することができる。反対に、許可型ブロックチェーン・データベースは、資金、商品、情報などを交換する企業などの、共通の目標を共有しているが、互いに完全には信用していない実体のグループ内で、安全な相互作用を提供する。
本出願は、分散型ストレージ方式に合わせてある、「スマート・コントラクト」または「チェーンコード」と呼ばれる、任意のプログラム可能な論理を操作するブロックチェーンを利用することができる。場合によっては、システム・チェーンコードと呼ばれる、管理機能およびパラメータのための特殊なチェーンコードが存在することがある。アプリケーションは、ブロックチェーン・データベースの改ざん防止の特性、および署名または署名ポリシーと呼ばれるノード間の基礎になる合意を活用する、信頼できる分散されたアプリケーションであるスマート・コントラクトをさらに利用することができる。このアプリケーションに関連付けられたブロックチェーン・トランザクションは、ブロックチェーンにコミットされる前に「署名される」ことができ、一方、署名されていないトランザクションは無視される。署名ポリシーは、チェーンコードが、トランザクションの署名者を、署名に必要なピア・ノードのセットの形態で指定できるようにする。クライアントが、トランザクションを、署名ポリシーで指定されたピアに送信するときに、トランザクションの妥当性を確認するためのトランザクションが実行される。妥当性確認の後に、トランザクションが順序付けフェーズに移行し、順序付け段階では、合意プロトコルが使用され、ブロックにグループ化された、署名されたトランザクションの順序付けられたシーケンスを生成する。
本出願は、ブロックチェーン・システムの通信実体であるノードを利用することができる。「ノード」は、異なる種類の複数のノードが同じ物理サーバ上で実行され得るという意味で、論理機能を実行してよい。ノードは、信頼できるドメイン内でグループ化され、さまざまな方法でそれらのノードを制御する論理的実体に関連付けられる。ノードは、トランザクション呼び出しを署名者(例えば、ピア)にサブミットし、トランザクション提案を順序付けサービス(例えば、順序付けノード)にブロードキャストするクライアントまたはサブミット・クライアント・ノードなどの、さまざまな種類を含んでよい。別の種類のノードは、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードである。ピアは署名者の役割を持つこともできる。順序付けサービス・ノードまたは順序付けノードは、すべてのノードのための通信サービスを実行するノードであり、トランザクションをコミットするとき、およびブロックチェーンの世界状態(world state)を変更するときの、システム内のピア・ノードの各々へのブロードキャストなどの、配信保証を実施する。世界状態は、通常は制御情報および設定情報を含んでいる初期ブロックチェーン・トランザクションを構成することができる。
本出願は、ブロックチェーンのすべての状態遷移の順序付けられた改ざん防止機能付きレコードである台帳を利用することができる。状態遷移は、参加している関係者(例えば、クライアント・ノード、順序付けノード、署名者ノード、ピア・ノードなど)によってサブミットされたチェーンコード呼び出し(すなわち、トランザクション)から生じてよい。各参加している関係者(ピア・ノードなど)は、台帳のコピーを維持することができる。トランザクションは、1つまたは複数のオペランド(作成、更新、削除など)として台帳にコミットされているアセットのキーと値のペアのセットをもたらしてよい。台帳は、変更不可能な順序付けられたレコードをブロックに格納するために使用されるブロックチェーン(チェーンとも呼ばれる)を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。
本出願は、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであるチェーンを利用することができ、各ブロックはN個のトランザクションのシーケンスを含んでおり、Nは1以上である。ブロック・ヘッダーは、ブロックのトランザクションのハッシュ、および前のブロックのヘッダーのハッシュを含んでいる。このようにして、台帳のすべてのトランザクションが順序付けられ、暗号によって一緒にリンクされてよい。したがって、ハッシュ・リンクを壊さずに台帳データを改ざんすることはできない。直前に追加されたブロックチェーンのブロックのハッシュは、それ以前に発生したチェーン上のすべてのトランザクションを表し、すべてのピア・ノードが一貫性のある信頼できる状態にあることを保証できるようにする。チェーンは、ブロックチェーンのワークロードの追加専用という性質を効率的にサポートするピア・ノードのファイル・システム(すなわち、ローカル、取り付けられたストレージ、クラウドなど)に格納されてよい。
変更不可能な台帳の現在の状態は、チェーンのトランザクション・ログに含まれているすべてのキーの最新の値を表す。現在の状態は、チャネルに知られている最新のキーの値を表すため、世界状態と呼ばれることもある。チェーンコード呼び出しは、台帳の現在の状態のデータに対してトランザクションを実行する。それらのチェーンコードの相互作用を効率的にするために、最新のキーの値が状態データベースに格納されてよい。状態データベースは、単にチェーンのトランザクション・ログへのインデックス付きビューであってよく、したがって、いつでもチェーンから再生成され得る。状態データベースは、ピア・ノードの起動時に、トランザクションが受け取られる前に、自動的に回復されて(必要な場合は、生成されて)よい。
イベントは、ブロックチェーン・ネットワークおよびその他の種類の分散型データベースにおいて送信されるメッセージの一種である。特定の条件が満たされたときに、スマート・コントラクトのチェーンコードを使用して、バリデータによってイベントが作成されてよい。ある種類のイベント(多くの場合、ベース・イベントと呼ばれる)は、例えば、トランザクションの新しいブロックがブロックチェーンにコミットされるときに作成されてよい。他の種類のイベントは、チェーンコードの一部を構成するか、またはチェーンコードの状態を示してよい。例えば、顧客イベントは、ネットワーク内またはネットワーク外の実体(例えば、ノード、ユーザ、クライアントなど)への配布のためにチェーンコードが指定した特定のメッセージに関連してよい。例えば、バリデータまたはネットワーク・ポリシーあるいはその両方によって決定された、ネットワークのイベントの機密性、アクセス権限、または制限のレベルが変化することは、めったにない。異なる状態レベルを有するイベントの作成、配布、またはアクセス、あるいはその組み合わせを管理するために、異なるチェーンコードが使用されてよい。
実施形態例は、イベントを生成し、そのイベントが、ブロックチェーンなどの、ただしこれに限定されない分散型データベースに格納される前にイベントの妥当性を確認する、方法、システム、コンポーネント、非一過性コンピュータ可読媒体、デバイス、またはネットワーク、あるいはその組み合わせを提供する。イベントの生成および妥当性確認は、ブロックチェーン情報およびアセットを管理することにおいてコンピュータの機能を改善する方法で実行される。1つの実施形態では、この改善は、イベント(および例えば、1つまたは複数の関連するトランザクション)を、データベースによって管理されているオブジェクトまたは名前空間あるいはその両方に結び付ける、イベントに関連して格納された新しい情報の追加によって実現される。この新しい情報は、例えば、キー名またはキー・アドレスなどの、ただしこれらに限定されない、キー情報であってよい。
新しい情報に基づいて動作を実行することによって、イベントをデータベースにコミットする前に、またはイベントに関連するデータベース問い合わせに関連して、あるいはその両方で、時間効率および処理効率が比較的高い方法で、関連するトランザクションと共にイベントの妥当性確認が実行されてよい。1つの実施形態では、キー情報は、オブジェクトまたはイベントに関して事前に妥当性を確認される。したがって、イベント(および例えば、1つまたは複数の付随するトランザクション)と共にブロックチェーンまたはその他のデータベースに記録されるキー情報を含めることは、イベントに関連付けられたフィールド内に存在する場合、イベント(およびトランザクション)の妥当性を自動的に確認するのに役立つ。1つの実施形態では、そのようなフィールドは、イベントに含められるか、または追加されてよい。この実施形態または別の実施形態では、イベントに関連付けられたトランザクションは、イベント・データに加えてフィールドも含むメッセージ形式を含んでよい。したがって、有効なキー情報の存在をチェックする(例えば、既知のキー情報を照合する)ことは、妥当性確認を実行するためにデータベース内の他のノードの台帳に問い合わせることを必要とせずに、イベントおよびそれに付随するトランザクションの妥当性を確認するのに役立つ。
一実施形態では、イベントを状態名前空間内の疑似書き込みと関連付けるための動作が実行される。イベントを定義するときに、イベントは、イベントの生成の妥当性を確立するキー情報を含んでよい。イベントおよび1つまたは複数の関連するトランザクションの妥当性が確認された場合、イベントは、そのキー情報の疑似書き込みとして評価されてよい。そのキーに関して状態の変更が実行されない場合でも、妥当性確認は、トランザクションがそのキー情報を変更していたとしても、イベントまたは関連するトランザクションあるいはその両方がまだ有効であるということを保証してよい。これには、イベントが期待されるキー情報に関連付けられている場合、かつその場合に限り、イベントの利用者(例えば、ノードまたはノード・クライアントあるいはその両方)が、その時点でイベントが有効であると考えてよいという利点がある。キーおよびそのアクセスが適切に選択された場合、イベントの妥当性は、1つまたは複数の関連するトランザクションの妥当性を意味する。
前述したことに加えて、本明細書において説明されて示された解決策の追加の利点は、イベントおよびそれに関連するトランザクション/コンテンツが適切に署名されているという条件で、署名ポリシーが適切に設定されているということを仮定して(例えば、署名ポリシーが正しくない場合、どの台帳のキーの正しさに関しても、主張が行われることができない)、セキュリティの観点から、データベース・クライアント(例えば、請求書送付管理アプリケーションにおける利用者)に対する、イベントおよびそのトランザクションならびにその他のコンテンツが正しいということの保証を含む。本明細書に記載された実施形態によって提供されるキー情報およびそれに付随する動作を使用すると、データベース・ユーザが(例えば、クライアント・アプリケーションを介して)イベントの正しさの確認を試みたい場合、このユーザは、イベントの条件またはその他のコンテンツが実際に真であるかどうかを十分な数のピア・ノードから検証するために、イベントの受信後に問い合わせを用いる必要がある。
図1Aは、イベントに対応するデータが生成されて分散型データベースに記録される前に、イベントが正しいということの妥当性を確認するための、システム100の実施形態例の論理図を示している。例示の目的で、分散型データベースは、ブロックチェーンとして説明される。しかし、別の実施形態では、異なる種類のデータベースが使用されてよい。
図1Aを参照すると、システム100は、クライアント(またはクライアント・アプリケーション)110に結合されたノード(N1)120などの、ネットワーク実体を含んでいる。クライアント110は、例えば、有線ネットワーク、または無線ネットワーク、あるいはその他の通信経路を含んでよい通信リンクを経由してノード120に送信されるイベント・データ115を生成してよい。イベント・データは、任意の形態の情報を含んでよいが、特に、ブロックチェーンの意図された応用に関連してよい。下でさらに詳細に説明される1つの非限定的な例では、イベント・データが、1つまたは複数のネットワーク実体の顧客に関する請求書送付情報を含む。この場合、ネットワーク実体は、例えば、同じ企業または異なる企業に属してよい。1つの実施形態では、クライアント110は、イベント・データまたは1つまたは複数の関連するトランザクションあるいはその両方を、ノード120に配信される前に暗号化してよい。対応する復号(例えば、キー)情報が、ブロックチェーン・ネットワークの1つまたは複数の他のノードまたは関連するクライアントに配置されてよく、復号を実行して、例えば、ブロックチェーンの問い合わせから生成されたイベントにアクセスするために使用されてよい。ノード120は、分散型データベースの複数のノードのうちの1つであってよい。1つの実施形態では、ノード120は、イベントおよびトランザクションをブロックチェーンにコミットする前に、イベントまたはトランザクションあるいはその両方の妥当性確認を実行する、ピア・ノードであってよい。
図1Aに示されているように、ノード120は、プロセッサ122と、プロセッサによって実行されるスマート・コントラクトのチェーンコードを格納するストレージ領域124とを含んでいる。動作中に、プロセッサは、イベント・データをクライアント110から受信し、次に、イベント・データを署名ポリシー125と比較する。署名ポリシーの条件または要件が満たされた場合、プロセッサ122は、スマート・コントラクトのチェーンコードを実行してイベントを生成する。次にイベントは、単独で、または関連する1つまたは複数のトランザクション共に、合意およびブロックチェーンへのコミットのためにサブミットされてよい。1つの実施形態では、各イベントまたは関連するトランザクションは、ブロックチェーン・データベース内で管理された同じオブジェクトまたは異なるオブジェクトに関連してよい。場合によっては、イベントおよび関連するトランザクションは、そのオブジェクトの異なる状態を示してよい。したがって、ブロックチェーンは、イベントを関連するトランザクションと共に格納してよく、各イベントのコンテンツは、関連するオブジェクトの異なる状態(または状態の変化)を表してよい。名前空間ごとにキー情報を生成するために、ノード120(および実際は、ブロックチェーン・ネットワーク内の1つまたは複数の他のノード)は、名前空間論理126を含んでよい。
図1Bは、時間と共にブロックチェーンに記録された一連のトランザクション1701~170N間の論理的関係150の例を示している。この例では、すべてのトランザクションが同じオブジェクトまたは名前空間190に関連している。請求書送付の応用では、オブジェクト190は、ノード120によって受信されたイベント・データに対応している顧客の請求書の状態に対応してよい。この場合、クライアント110は、銀行、クレジット・カード会社、公益事業会社、あるいは商品もしくはサービスまたはその両方に関する請求書を送付する別の実体であってよい。
図1Bを参照すると、トランザクション1701~170Nのうちの1つまたは複数は、クライアント110から受信されたイベント・データのさまざまな項目に基づいてノード120のプロセッサによって生成された対応するイベントに関連付けられてよい。この例では、イベント(E1)1801が、関連するトランザクション(T1)1701に対応し、イベント(E2)1802が、関連するトランザクション(T2)1702に対応する、などである。各イベントは、オブジェクト(またはそれに関連するトランザクション)の状態を示してよい。図1Bでは、イベントがトランザクションと異なるように示されているが、1つの実施形態では、イベント(またはイベント・データ)は、トランザクションまたはイベント形式の追加されたフィールドまたは追加のフィールドに含まれてよい。例えば、図1Cに示された1つの実施形態では、各トランザクションまたはイベントの形式195は、イベント・データを示す情報を含む第1のフィールド196、本明細書に記載された1つまたは複数の実施形態に従って改善された妥当性確認に使用され得るイベント・キー情報を含む第2のフィールド197、およびトランザクション情報を含む第3のフィールド198を含んでいるメッセージ構造を有してよい。
トランザクションとイベントの間の1つの可能性のある関係が、次の例に従って理解されてよい。オブジェクト190が顧客Xに関する請求書を示している場合、イベント(E1)1801は、顧客Xに関する請求書が生成されたという状態を示してよい。例えば、関連するトランザクション(T1)1701は、請求書の金額を示してよい。イベント(E2)1802は、請求書の異なる状態を示してよい。例えば、イベントE2は、請求書の最初の期日が過ぎたことを示すトランザクション(T2)1702に関して、請求書が支払われていないという状態を示してよい。1つまたは複数のその後のトランザクションは、さまざまな追加の状態の変化および関連するトランザクションを反映してよい。例えば、イベント(EN)180Nは、顧客Xに関する請求書が支払われたということを示してよく、それに関連するトランザクション(TN)170Nは、延滞料が請求書に追加されたことを示してよい。したがって、ブロックチェーン台帳は、トランザクションを、ネットワークによって管理されている同じオブジェクトの関連するイベントと共に記録してよい。
1つの実施形態では、オブジェクトは、ブロックチェーン・ネットワークの状態名前空間に関連付けられてよい。この名前空間は、Hyperledger Fabricでのプライベート・データの集合などの、スマート・コントラクトのグローバルな名前空間とは異なる妥当性確認ルールを有する、状態空間のパーティションであってよい。名前空間は、Hyperledger Fabricでの状態に基づく署名、または他のブロックチェーン・システムでのトークンなどの、それ自身の妥当性確認ルールを有する単一のキーであってもよい。
図1Aに戻り、不正を防ぎ、ブロックチェーンに格納された情報の妥当性を保証するために、プロセッサ122によって実行されたスマート・コントラクトのチェーンコードが、妥当性確認(例えば、イベントが正しいか、または真正で有効であるということの確認)に使用される追加のフィールドを含んでいるイベントを生成してよい。これは、例えば、オブジェクトにリンクされる情報(例えば、識別子)を生成するために、スマート・コントラクト124のチェーンコードを実行しているプロセッサによって実行されてよい。この識別子は、例えば、オブジェクト(または名前空間)と共に使用するために、ネットワーク機関によって生成され、事前に許可されてよい。したがって、識別子は、イベントにリンクされていることだけによって、イベントの妥当性を確認するための基礎として機能してよく、それによって、イベント(およびそれに関連するトランザクション)のコンテンツが正しいということを決定するためにブロックチェーン内のピア・ノードの台帳に問い合わせる必要性を軽減する。図1Cの例示的なイベントまたはトランザクションの形式では、識別子が第2のフィールド197に含まれてよく、第2のフィールド197は、イベントの妥当性確認の目的で確保されている、新たに生成されたフィールドである。
識別子が設定された(例えば、事前に格納された情報へのアクセスによって設定されたか、またはネットワーク機関から直接取得された)後に、プロセッサ122は、識別子を、妥当性確認に使用される第2のフィールドに挿入してよい。少なくともこのようにして、プロセッサは、イベントが合意およびブロックチェーンへのコミットのために生成される前に、情報を、イベントの妥当性を確認するために使用され得るイベント(またはトランザクション)の専用のフィールドに事前に格納することを含む、疑似書き込み動作を実行すると考えられてよい。イベント内の識別子の生成および挿入(または関連付け)は、少なくともピア・ノードおよび管理しているネットワーク実体全体の処理オーバヘッドを減らすことに関して、ブロックチェーンを管理しているコンピュータの効率を改善し得る。
1つの実施形態では、イベントの新しい第2のフィールドに格納された情報は、イベントが関連付けられたオブジェクトにリンクされてよい。例えば、1つの実施形態では、イベント/トランザクションの第2のフィールドに疑似書き込みされる生成された識別子は、イベントに対応する特定のオブジェクトに関してあらかじめ生成されたキー情報を含んでよい。キー情報がすでに、オブジェクトに関して(例えば、ネットワーク機関によって)妥当性を確認されているため、キー情報がイベントに関連付けられているということを確認することによって、イベント(およびそれに関連するトランザクション)の妥当性が確認されてよい。これによって、新しいブロックを追加するためのトランザクションをブロックチェーンにコミットする前に、イベントおよびそれに関連するトランザクションの妥当性を確認するために、ブロックチェーン・ノードの台帳に問い合わせる必要性を軽減する。したがって、キー情報は、イベントを、キー情報に基づいて妥当性確認または許可を実行するようにプログラムされた許可メカニズムまたは妥当性確認機関に効果的に結び付けることに役立ち得る。1つの実施形態では、キー情報は、オブジェクトに割り当てられたキー名を含んでよい。別の実施形態では、キー情報は、オブジェクトに割り当てられたキー・アドレスを含んでよい。さらに別の実施形態では、プロセッサは、クライアント110によって受信されたイベント・データに基づいて、イベントの生成を許可する目的でオブジェクトに関連付けられた異なる種類の識別情報を生成してよい。キー情報は、イベントまたはトランザクションの形式の追加のフィールドに挿入する前に、1つまたは複数のセキュリティ機能(例えば、さまざまな形態の暗号化)を使用してエンコードされてよい。
1つの実施形態では、プロセッサ122によって実施されるスマート・コントラクトのチェーンコードは、名前空間ごとにイベントの許可のためのキー情報を生成するようにプログラムされてよい。各名前空間は、他の名前空間に対応するオブジェクトと異なってよい複数の対応するオブジェクトを含んでよく、それらのオブジェクトの各々が、例えば、ブロックチェーンの意図された応用に応じて、1つまたは複数の対応するトランザクションまたはイベントあるいはその両方を含んでよい。
名前空間ごとにキー情報を生成するために、ノード120(および実際は、ブロックチェーン・ネットワーク内の1つまたは複数の他のノード)は、名前空間論理126を含んでよい。そのような論理は、例えば、Hyperledger Sawtoothプラットフォームなどの、ただしこれに限定されないブロックチェーン・プラットフォームの一部であってよい。名前空間論理126は、無関係のトランザクション(例えば、同じオブジェクトとは無関係のトランザクション)間を分離するように、イベントの生成を許可するために、ノード120によって使用されてよい。例えば、ノード120は、グローバルな状態ストアを使用し、このストアが異なる名前空間に分離されることを可能にする名前空間論理126を含んでよく、各名前空間は、オブジェクトの分離したカテゴリに対応する。1つの非限定的な例では、各名前空間は、異なる顧客に対応してよく、各名前空間に対応するイベントは、それらの顧客に発行された請求書に対応してよい。
ノード120が名前空間論理を含んでいる場合、各名前空間内のオブジェクトごとに、異なるキー情報があらかじめ生成されてよい。1つの実施形態では、同じ名前空間に対応する複数のオブジェクトに対して、同じキー情報が生成されてよい。いずれの場合も、関連するオブジェクトに対応するイベントまたはトランザクションあるいはその両方に関連して使用するために、キー情報の妥当性が事前に確認され、許可されてよい。このようにして、許可およびその後のブロックチェーンへの記録のためにノード120によって発行されたイベントが、イベントが対応しているオブジェクトに割り当てられた適切な対応するキー情報を含んでいるということを確認することによって、イベントの許可が実行されてよい。その結果、イベントの許可を実行するためにブロックチェーン内のノードの台帳に問い合わせるという非効率的処理が防がれてよく、それによって、ブロックチェーン・トランザクションのイベントの生成、許可、合意、およびコミットを管理することに関連しているコンピュータの動作、ならびに同じノードまたは別のノードによってブロックチェーンが問い合わせられた場合に、トランザクションおよびそれに関連するイベントの妥当性を確認することに関連するその後の動作を改善する。
前述の特徴に従って、ノード120は、本明細書に記載された1つまたは複数の実施形態を実施することにおいて、次のように動作してよい。イベント・データがクライアント110から受信された場合、プロセッサ122は、オブジェクトまたはオブジェクトが対応している名前空間あるいはその両方に対応するキー情報を含んでいるイベント(またはトランザクション形式)内の新しい(イベント妥当性確認)フィールドをさらに設定することによって、新しいイベントを発行する。前に説明したように、発行されたイベントは、イベントが疑似書き込みを実行しているトランザクションに対応する状態を示している情報を含んでよい。プラットフォームの(例えば、スマート・コントラクトのチェーンコードに含まれている)妥当性確認コードは、1つまたは複数の対応するトランザクションの妥当性を確認するときに、新しい(イベントの妥当性確認)フィールド内のキー情報を検査する。
場合によっては、発行されたイベントに関連付けられたトランザクションが、キー情報を変更していることがある。それにもかかわらず、キー情報を新しいフィールドに格納することは、トランザクションが変更された場合でも、(このトランザクションが実際に実行している変更のいずれかに加えて)例えばノード120またはプラットフォームの妥当性確認コードによって参照されているキー情報がまだ有効と見なされるということを保証する。
その後、(例えば、クライアント110、ノード120の別のクライアント、またはブロックチェーン・ネットワーク内の別のノードのクライアントに対応する)クライアント・アプリケーションが、ブロックチェーン内のブロックからトランザクション・イベントを取り出すための問い合わせを実行し、そのクライアント・アプリケーションは、そのトランザクション・イベントのイベント妥当性確認フィールドに格納されたキー情報に基づいて比較を実行することによって、トランザクション・イベントの妥当性(または正しさ)を確認することができる。例えば、クライアント・アプリケーションは、取り出されたトランザクション・イベントに関連付けられた特定のオブジェクト(または名前空間あるいはその両方)のキー情報を取得することができるか、または記録しているため、クライアント・アプリケーションは、取り出されたトランザクション・イベントのフィールドに格納されたキー情報を、そのオブジェクト(または名前空間)の既知のキー情報と比較してよい。一致が存在する場合、クライアント・アプリケーションは、ブロックチェーン・ネットワーク内の他のノードの台帳に問い合わせることを必要とせずに、トランザクション・イベントが有効であるということを決定する。一致が存在しない場合、クライアント・アプリケーションは、ブロックチェーンに記録したトランザクション・イベントが、(例えば、悪意のある攻撃者による)不正であるか、またはその他の方法で信用できなくなっているということを決定してよい。
これらの実施形態の例示的な状況は、請求書送付の応用である。例えば、ノード120のプロセッサ122によって実行されたスマート・コントラクトが、顧客の特定の請求書(オブジェクト)が完全に支払われたという状態を示すイベントを発行する場合、イベントは、請求書を参照するキー情報を参照しているフィールドを追加して拡張されることができる。この場合、「完全に支払われた請求書」イベントは、関連するトランザクション(例えば、請求書を支払うための資金の移動)が、その請求書のイベントの状態を変更する権限を持っている顧客またはその他の関係者(例えば、クレジット・カード会社)あるいはその両方によって許可された場合にのみ、有効であると見なされ得る。イベントの状態の妥当性は、イベント(またはトランザクション・メッセージ形式)の追加のフィールドに格納されたキー情報に基づいて確認されてよい。
場合によっては、前述の例示的な状況では、トランザクション自体が、キー情報が変更されることを引き起こすことがある。例えば、請求書のイベントの状態を「未支払い」から「完全に支払い済み」に更新することは、多数のキーの変更を引き起こし、それらの変更のすべてが、請求書の支払いが許可されるために同等の署名を予測することが容易であるか、または同等の署名を必要とするとは限らない。しかし、請求書の支払い済み状態を表すキーなどの、これらのキーの一部は、有効なトランザクションにおいて変更されなければならず、したがって、請求書を変更することを許可された実体によって署名されなければならない。イベントをキー情報に結び付けることによって、完全な支払いを確認しようとしている、ブロックチェーンから情報を取り出すクライアント・アプリケーションは、イベントを作成したノード120のスマート・コントラクトの状態機構のサブセットを決定することのみを必要としてよい。これは、顧客情報の機密性およびセキュリティを維持し、それと同時に、クライアント・アプリケーションが、請求書の支払いの妥当性を確認するために要求した情報を取得することを可能にするという有益な効果を有し得る。
キー情報なしでは、クライアント・アプリケーションは、安全でない方法で(イベントの妥当性確認を全く実行せずに)動作することが必要になるか、または少なくとも、ブロックチェーンにコミットする前、およびクライアント・アプリケーションによるブロックチェーンの問い合わせ後の妥当性確認中の両方で、イベントの妥当性を確認するために、時間効率および処理効率の悪い動作を実行することが必要になるであろう。例えば、クライアントは、イベントが適切に生成されたことを確認するために、台帳の状態の往復問い合わせ(round-trip query)を行う必要がある。さらに、本明細書に記載された実施形態のイベントとキーを結び付ける手法を使用しなければ、請求書を支払っていない攻撃者が、有効な(例えば、おそらく無関係のより小さい金額の請求書を支払う)トランザクションを発行し、ただし、異なるより大きい金額の請求書が支払われたことを示すイベントを添付することができる。アプリケーションは、イベントを受信した場合、(a)トランザクションの状態の変更を検査し、状態の変更がイベントのコンテンツに対応することを検証しようとするか(この手法は脆弱であり、間違いを起こしやすい)、(b)直ちに台帳に戻り、請求書の状態が何だったかを尋ね、イベントのコンテンツ正しいことを確認するか(これは高価であり、間違いを起こしやすい)、または(c)イベントを額面通りに受け入れ、攻撃を受ける可能性がある。実施形態のイベントを結び付ける手法を導入することによって、クライアント・アプリケーションは、例えば、新しいイベント・フィールド内のキー情報を照合することに基づいて、追加の妥当性チェックが実行されて、手法(c)を選択し、安全なままであることができる。
図2Aは、実施形態例に従って、ブロックチェーン・アーキテクチャの構成200を示している。図2Aを参照すると、ブロックチェーン・アーキテクチャ200は、特定のブロックチェーン要素(例えば、ブロックチェーン・ノードのグループ202)を含んでよい。ブロックチェーン・ノード202は、1つまたは複数のノード204~210を含んでよい(単に例として、これらの4つのノードが示されている)。これらのノードは、ブロックチェーン・トランザクションの追加および妥当性確認プロセス(合意)などの、複数の活動に参加する。ブロックチェーン・ノード204~210のうちの1つまたは複数は、署名ポリシーに基づいてトランザクションに署名してよく、アーキテクチャ200内のすべてのブロックチェーン・ノードのための順序付けサービスを提供してよい。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層216に格納されたブロックチェーンの変更不可能な台帳に書き込もうとしてよく、この書き込みのコピーが、基盤になる物理的インフラストラクチャ214にも格納されてよい。ブロックチェーンの構成は、格納されたプログラム/アプリケーション・コード220(例えば、チェーンコード、スマート・コントラクトなど)にアクセスして実行するためにアプリケーション・プログラミング・インターフェイス(API:application programming interfaces)222にリンクされた1つまたは複数のアプリケーション224を含んでよく、プログラム/アプリケーション・コード220は、参加者によって要求されてカスタマイズされた構成に従って作成することができ、それら自身の状態を維持し、それら自身のアセットを制御し、外部の情報を受信することができる。ブロックチェーンの構成は、例えば、トランザクションとしてデプロイし、分散型台帳に追加することによって、すべてのブロックチェーン・ノード204~210にインストールすることができる。
ブロックチェーン・ベースまたはプラットフォーム212は、ブロックチェーン・データのさまざまな層と、サービス(例えば、暗号信用サービス、仮想実行環境など)と、新しいトランザクションを受信して格納し、データ・エントリにアクセスしようとしている監査人にアクセスを提供するために使用されてよい、基盤になる物理的コンピュータ・インフラストラクチャとを含んでよい。ブロックチェーン層216は、プログラム・コードを処理し、物理的インフラストラクチャ214に参加させるために必要な仮想実行環境へのアクセスを提供するインターフェイスを公開してよい。暗号信用サービス218は、トランザクション(例えば、アセット交換トランザクション)を検証し、情報をプライベートに保つために使用されてよい。
図2Aのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム212によって公開された1つまたは複数のインターフェイスおよび提供されたサービスを介して、プログラム/アプリケーション・コード220を処理および実行してよい。コード220は、ブロックチェーンのアセットを制御してよい。例えば、コード220は、データを格納および転送することができ、スマート・コントラクトおよび条件を含む関連するチェーンコードまたは実行の対象になるその他のコード要素の形態で、ノード204~210によって実行されてよい。非限定的な例として、リマインダ、更新、または変更、更新の対象になるその他の通知、あるいはその組み合わせなどを実行するために、スマート・コントラクトが作成されてよい。スマート・コントラクト自体は、権限付与およびアクセスの要件ならびに台帳の使用に関連付けられたルールを識別するために使用され得る。例えば、情報226は、クライアント・アプリケーション、ノード、またはその他のネットワーク実体から受信されたイベント・データを含んでよい。イベント・データは、受信ノードによって、イベントを生成して妥当性を確認するための基礎として使用されてよい。イベントの生成および妥当性確認は、受信ノードによって実施されるスマート・コントラクトのチェーンコードを含んでよい論理を使用して実行されてよい。チェーンコードは、例えば、アプリケーション224に含まれてよく、またはアプリケーション224から分離してよい。スマート・コントラクトまたはアプリケーション224あるいはその両方は、ブロックチェーン層216に含まれている1つまたは複数の処理実体(1つの事例では、例えば、仮想マシン)によって実行されてよい。
動作の中でも特に、スマート・コントラクトのチェーンコードは、例えば、データベース・ネットワーク内の既存の署名ポリシーに基づいてイベントを生成し、妥当性を確認してよい。1つの実施形態では、スマート・コントラクトは、受信されたイベント・データに関連付けられたデータベース・オブジェクト(例えば、請求書)または名前空間あるいはその両方を決定してよい。次に、ノードは、署名ポリシーの条件に基づいてイベント(および付随するトランザクション)に署名し、妥当性を確認してよい。条件が署名であり、妥当性確認が満たされた場合(この妥当性確認は、例えば、イベント・データのコンテンツまたはデータベースの意図された応用あるいはその両方に応じて異なる)、ノードは、イベントにデジタル署名し、例えば、イベントがブロックチェーンにコミットされることを含めて、イベントがネットワーク全体に発行されことを許可する。
1つの実施形態では、署名は、イベント・データが、データベース・ネットワークによって管理されているオブジェクトまたは既定の名前空間に関連付けられているということを前提としてよい。例えば、イベント・データを受信しているノードのスマート・コントラクトは、データのコンテンツを、ネットワークによって管理されている既知のオブジェクトまたは名前空間あるいはその両方に対してチェックしてよい。一致が存在する場合、スマート・コントラクトは、オブジェクトまたは名前空間に関連して格納されたキー情報を取り出し、次に、キー情報を格納するための新しいフィールドを含んでいる対応するイベントを生成してよい。イベントと共にキー情報を含めることは、イベントのコンテンツ(例えば、任意の状態の変化またはイベントとのトランザクションの関連を含む)が正しく有効であるということを保証する。
結果228は、現在署名されて妥当性が確認されているイベントを、スマート・コントラクトによって生成されたキー情報を含んでいる新しいフィールドと共に含んでよい。イベントは、1つまたは複数の関連するトランザクションを含むか、または含まない出力であってよい。このイベント(および関連するトランザクション)は、合意およびその後のブロックチェーン内の新しいブロックへのコミットのために、ブロックチェーン・ネットワークに出力されてよい。1つの実施形態では、イベントは、ブロックチェーン・ネットワーク内の他のノードへの通知として送信されてよい。ブロックチェーンにコミットされた後に、ノード(例えば、ピア・ノード204、206、208、210など)と通信しているクライアント・アプリケーションが、イベントに関してブロックチェーンに問い合わせてよい。したがって、新しいフィールドに含まれているキー情報は、イベントおよび関連するトランザクションのコンテンツが正しいということの妥当性を自動的に確認することに役立ち得る。物理的インフラストラクチャ214は、本明細書に記載されたデータまたは情報のいずれかを取り出すために利用されてよい。
高水準のアプリケーションおよびプログラミング言語を使用して、本明細書に記載されたスマート・コントラクトが作成され、その後、ブロックチェーン内のブロックに書き込まれてよい。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散ネットワーク)への登録、格納、または複製、あるいはその組み合わせが実行される実行可能コードを含んでよい。トランザクションは、スマート・コントラクトが満たされていることに関連付けられた条件に応答して実行され得る、スマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼できる変更をトリガーしてよい。スマート・コントラクトの実行によって引き起こされるブロックチェーン台帳に対する変更は、1つまたは複数の合意プロトコルを介して、ブロックチェーン・ピアの分散ネットワーク全体に自動的に複製されてよい。
スマート・コントラクトは、データをキーと値のペアの形式でブロックチェーンに書き込んでよい。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納された値を読み取り、それらをアプリケーションの動作において使用することができる。スマート・コントラクト・コードは、さまざまな論理演算の出力をブロックチェーンに書き込むことができる。このコードは、仮想マシンまたはその他のコンピューティング・プラットフォーム内の一時的データ構造を作成するために使用されてよい。ブロックチェーンに書き込まれたデータは、パブリックになること、またはプライベートとして暗号化されて維持されること、あるいはその両方が行われ得る。スマート・コントラクトによって使用/生成される一時的データは、提供された実行環境によってメモリ内に保持され、ブロックチェーンに必要なデータが識別された後に削除される。
チェーンコードは、追加機能と共に、スマート・コントラクトのコード解釈を含んでよい。本明細書に記載されているように、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードであってよく、合意プロセス中に、チェーン・バリデータによって一緒に実行されて妥当性を確認される。チェーンコードは、ハッシュを受信し、以前に格納された特徴またはコンテキスト抽出機能の使用によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取り出す。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュが一致する場合、チェーンコードは、権限付与キーを、要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連付けられたデータをブロックチェーンに書き込んでよい。
図2Bは、実施形態例に従って、ブロックチェーンのノード間のブロックチェーン・トランザクション・フロー250の例を示している。図2Bを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード260によって署名ピア・ノード281に送信されるトランザクション提案291を含んでよい。署名ピア281は、クライアントの署名を検証し、チェーンコード関数を実行してトランザクションを開始してよい。出力は、チェーンコードの結果、チェーンコードに読み取られたキー/値のバージョンのセット(読み取りセット)、およびチェーンコードに書き込まれたキー/値のセット(書き込みセット)を含んでよい。提案応答292が、承認されている場合は署名と共に、クライアント260に返送される。クライアント260は、署名をトランザクションのペイロード293にまとめて、順序付けサービス・ノード284にブロードキャストする。その後、順序付けサービス・ノード284は、順序付けられたトランザクションをチャネル上でブロックとしてすべてのピア281~283に配信する。ブロックチェーンへのコミットの前に、各ピア281~283がトランザクションの妥当性を確認してよい。例えば、ピアは、指定されたピアの正しい割り当てが結果に署名し、トランザクションのペイロード293に対する署名を認証したことを確認するために、署名ポリシーをチェックしてよい。
再び図2Bを参照すると、クライアント・ノード260が、要求を構築してピア・ノード281(署名者)に送信することによって、トランザクション291を開始する。クライアント260は、サポートされているソフトウェア開発キット(SDK:software development kit)を利用するアプリケーションを含んでよく、このアプリケーションは、使用可能なAPIを利用してトランザクション提案を生成する。提案は、データが台帳から読み取られること、または台帳に書き込まれること(すなわち、アセットの新しいキーと値のペアを書き込むこと)、あるいはその両方を実行できるように、チェーンコード関数を呼び出すことの要求である。SDKは、トランザクション提案を、適切に設計された形式(例えば、遠隔手続き呼び出し(RPC:remote procedure call)を経由するプロトコル・バッファ)にパッケージ化するためのシムとして機能し、クライアントの暗号認証情報を受け取って、トランザクション提案の一意の署名を生成してよい。
それに応じて、署名ピア・ノード281は、(a)トランザクション提案が適切に形成されていること、(b)トランザクションが過去にすでにサブミットされていないこと(リプレイアタック保護)、(c)署名が有効であること、および(d)そのチャネルに対する提案された操作を実行するための適切な権限がサブミッター(例では、クライアント260)に与えられていることを検証してよい。署名ピア・ノード281は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として受け取ってよい。その後、チェーンコードが、現在の状態データベースに対して実行され、応答値、読み取りセット、および書き込みセットを含んでいるトランザクション結果を生成する。ただしこの時点では、台帳に対する更新は行われない。292で、値のセットが、署名ピア・ノードの281署名と共に、提案応答292としてクライアント260のSDKに返され、このSDKが、アプリケーションが使用するためのペイロードを構文解析する。
それに応じて、クライアント260のアプリケーションが、署名ピアの署名を検査/検証し、提案応答を比較して、提案応答が同じであるかどうかを判定する。チェーンコードが単に台帳に問い合わせた場合、アプリケーションは問い合わせ応答を検査し、通常は、トランザクションを順序付けノード・サービス284にサブミットしない。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けノード・サービス284にサブミットしようとしている場合、アプリケーションは、サブミットする前に、指定された署名ポリシーが満たされているかどうか(すなわち、トランザクションに必要なすべてのピア・ノードがトランザクションに署名したかどうか)を判定する。ここで、クライアントは、トランザクションの複数の関係者のうちの1つのみを含んでよい。この場合、各クライアントは、それ自身の署名ノードを含んでよく、各署名ノードがトランザクションに署名する必要がある。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、またはその他の方法で署名されていないトランザクションを転送する場合でも、署名ポリシーが、ピアによってまだ実施され、コミット妥当性確認フェーズで維持されるようにする。
検査に成功した後に、ステップ293で、クライアント260が、署名をトランザクションにまとめ、順序付けノード284へのトランザクション・メッセージ内でトランザクション提案およびトランザクション応答をブロードキャストする。トランザクションは、読み取り/書き込みセット、署名ピアの署名、およびチャネルIDを含んでよい。順序付けノード284は、その動作を実行するために、トランザクションの内容全体を検査する必要はなく、代わりに順序付けノード284は、単に、トランザクションをネットワーク内のすべてのチャネルから受信して、チャネル別に経時的に順序付けし、チャネルごとにトランザクションのブロックを作成してよい。
トランザクションのブロックは、順序付けノード284からチャネル上のすべてのピア・ノード281~283に配信される。いずれかの署名ポリシーが満たされていることを保証するため、および読み取りセットがトランザクションの実行によって生成されて以来、読み取りセットの変数に関して台帳の状態に対する変更がないことを保証するために、ブロック内のトランザクション294の妥当性が確認される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ295で、各ピア・ノード281~283は、ブロックをチャネルのチェーンに追加し、有効なトランザクションごとに、書き込みセットが現在の状態データベースにコミットされる。トランザクション(呼び出し)が変更不可能なようにチェーンに追加されたことをクライアント・アプリケーションに通知するため、およびトランザクションの妥当性が確認されたか、または無効にされたかを通知するために、イベントが発行される。
図3Aは許可型ブロックチェーン・ネットワーク300の例を示しており、許可型ブロックチェーン・ネットワーク300は、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ302は、許可型ブロックチェーン304に対するトランザクションを開始してよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、SDKを利用するクライアント側のアプリケーションを介して、APIを介して直接的に、などによって、発行されてよい。ネットワークは、監査人などのレギュレータ306へのアクセスを提供してよい。ブロックチェーン・ネットワーク・オペレータ308は、レギュレータ306を「監査人」として登録し、ブロックチェーン・ユーザ302を「クライアント」として登録するなど、メンバーの許可を管理する。監査人を、台帳への問い合わせのみに制限することができ、一方、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うための権限をクライアントに与えることができる。
ブロックチェーン開発者310は、チェーンコードおよびクライアント側のアプリケーションを書き込むことができる。ブロックチェーン開発者310は、インターフェイスを介して、チェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース312からの認証情報をチェーンコードに含めるために、開発者310は、帯域外接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ302は、ピア・ノード314を介して許可型ブロックチェーン304に接続する。ピア・ノード314は、いずれかのトランザクションを開始する前に、ユーザの登録およびトランザクションの証明書を、ユーザの役割および許可を管理する認証機関316から取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン304上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用しようとしているユーザは、従来のデータ・ソース312上のそれらのユーザの認証情報を検証することが必要になることがある。ユーザの権限付与を確認するために、チェーンコードは、従来の処理プラットフォーム318を介して、このデータへの帯域外接続を使用することができる。
図3Bは許可型ブロックチェーン・ネットワーク320の別の例を示しており、許可型ブロックチェーン・ネットワーク320は、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ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の例には示されていないが、ブロックの妥当性確認ための別のプロセスは、プルーフ・オブ・ステークである。アルゴリズムが、数学問題を解くマイナーに報酬を与えるプルーフ・オブ・ワークとは異なり、プルーフ・オブ・ステークでは、ウェルス(「ステーク」としても定義される)に応じて、新しいブロックの作成者が確定的方法で選択される。その後、選択されたノードによって、同様の証明が実行される。
マイニング364で、ノードは、解がネットワーク全体にわたるターゲットを満たすまで、1つの変数に対して漸進的な変更を行うことによって、ブロックを解こうとする。これによってPoWを作成し、それによって、正しい答えを保証する。言い換えると、可能性のある解は、計算リソースが問題を解くことにおいて消耗されたということを証明しなければならない。一部の種類の許可なしブロックチェーンでは、マイナーに、ブロックを正しくマイニングしたことに対する報酬として価値(例えば、コインなど)が与えられることがある。
ここで、攻撃者が、1つのブロックの変更を受け入れるために、その後のすべてのブロックを変更しなければならないため、PoWプロセスは、ブロックの変更と共に、ブロックチェーンの変更を極めて困難にする。さらに、新しいブロックがマイニングされるにつれて、ブロックを変更することの困難さが増大し、その後のブロックの数が増加する。配布366で、正常に妥当性が確認されたブロックが、許可なしブロックチェーン352全体に配布され、すべてのノード354が、そのブロックを、許可なしブロックチェーン352の監査可能な台帳であるマジョリティ・チェーン(majority chain)に追加する。さらに、送信側356によってサブミットされたトランザクションにおける価値が、受信側デバイス358のデジタル・ウォレットに預け入れられるか、またはその他の方法で転送される。
図4は、実施形態例に従って、イベントを生成して妥当性を確認するためのシステム・メッセージ図400を示している。図4を参照すると、システム図400は、第1の実体410、第2の実体420、およびブロックチェーン430を含んでいる。第1の実体410は、ブロックチェーン・ネットワークの第1のノードであってよく、第2の実体420は、ブロックチェーン・ネットワークの第2のノードであってよい。
図4を参照すると、このメッセージ図は、新しいイベントを生成することにおける考慮のためのイベント・データを含んでいる第1のメッセージ411を受信することを含む。第1のメッセージは、第1の実体410と通信しているクライアント・アプリケーション、ブロックチェーン・ネットワークの別のノード、または別の実体から受信されてよい。イベント・データは、ブロックチェーン・ネットワークのオブジェクトまたは名前空間あるいはその両方を識別するか、または識別するための基礎として使用され得る情報を提供する、コンテンツを含んでよい。1つの実施形態では、イベント・データのコンテンツは、関連するオブジェクトの状態(または状態の変化)を示してよく、例えば、企業の特定の顧客への請求書のオブジェクトの場合、イベント・データは、請求書の状態が「未支払い」の状態から「完全に支払い済み」の状態に変化したことを示してよい。
動作412で、第1のメッセージが受信された後に、第1の実体410のプロセッサが、スマート・コントラクトを実行し、第1のメッセージのコンテンツを決定する。次に、このコンテンツが、署名ポリシーにサブミットされ、署名ポリシーが、ネットワーク内でイベントが生成されるべきかどうかを判定するために、イベント・データに署名することおよびイベント・データの妥当性を確認することにおいて実行される条件または動作のセットを定義してよい。これらの条件または動作は、メッセージのコンテンツによって示されたオブジェクトが、ブロックチェーン・ネットワークによって前に生成されて維持されているキー情報に対応するかどうかを判定することを含んでよい。加えて、または代替として、第1の実体のプロセッサが、イベント・データのコンテンツに対応する既定の名前空間が存在するかどうかを判定してよい。どちらの条件も存在しない場合、イベント・データの妥当性が確認されなくてよく、イベントの生成が拒否されてよい。一方、署名ポリシーの条件が満たされた場合、イベントが生成されてよい。
動作413で、署名ポリシーの条件が満たされたという決定が行われた後に、第1の実体410のスマート・コントラクトを実行しているプロセッサが、イベント・データに関連するオブジェクトまたは名前空間あるいはその両方に対応するキー情報を格納している新しいフィールドを含むイベントを生成する。この動作は、さまざまな方法で実行されてよい。例えば、生成されたイベントは、キー情報を含んでいる新しいフィールドを含んでよい。追加的または代替的に、イベントに関連付けられたトランザクションのメッセージ形式が、キー情報を含んでいる新しいフィールドを含んでよい。
イベントが作成された後に、メッセージ414がブロックチェーン430に送信される。メッセージは、イベントおよび1つまたは複数の関連するトランザクションが存在する場合、それらと共に送信されてよい。メッセージが受信された後に、ブロックチェーンは、動作415で、合意のためにイベントをサブミットし、次に、イベントをブロックチェーン内の新しいブロックにコミットする。
次に、イベントがブロックチェーンにコミットされた後の任意の時点で、メッセージ416が第2の実体420からブロックチェーン430に送信されてよい。メッセージ416は、イベントおよびそれに付随するトランザクションにアクセスするための問い合わせを含んでよい。
動作417で、イベントを含んでいるブロックが、ブロックチェーンから取り出され、応答メッセージ418で第2の実体420に返送される。
動作419で、第2の実体420が、ブロックチェーンから取り出されたイベントのコンテンツを検索し、キー情報を取り出す。次に、キー情報が、イベントのコンテンツに対応するオブジェクト(または名前空間あるいはその両方)の既知のキー情報と比較される。一致が存在する場合、第2の実体420は、イベントが、ブロックチェーン430から取り出された情報で識別された、イベントに関連付けられたトランザクションと共に有効であるということを決定してよい。これらの動作は、例えば、第2の実体420のプロセッサによって実行されるスマート・コントラクトによって実行されてよい。
図5は、実施形態例に従って、ブロックチェーンなどの分散型データベース内の情報を管理する例示的な方法のフロー図500を示している。図5を参照すると、方法500は、510で、イベント・データを実体から受信することを含んでよい。イベント・データのコンテンツは、生成されてブロックチェーンに記録されるイベントを示すさまざまな種類の情報を含んでよい。実体は、ブロックチェーン・ノードのクライアント・アプリケーション、ブロックチェーン内のノード、別のブロックチェーンの実体、またはブロックチェーン・ネットワークの外部にあるがネットワークの1つまたは複数の実体と通信する実体であってよい。
520で、イベント・データが署名ポリシーを満たすかどうかに関する判定が行われる。署名ポリシーは、本明細書に記載されているような1つまたは複数の要件または条件を含んでよい。1つの実施形態では、署名ポリシーは、イベント・データのコンテンツが、ブロックチェーンまたはブロックチェーンの名前空間によって管理されているオブジェクトのうちの1つまたは複数に対応することを要求してよい。請求書送付の応用では、例えば、オブジェクトは特定の請求書であってよく、イベント・データは、請求書に関連するトランザクションを示してよい。例えば、イベント・データは、請求書に関する状態の変化(例えば、「未支払い」から「完全に支払い済み」への変化)が発生したということを示してよい。名前空間は、例えば、請求書を発行したか、または請求書に関連するサービスまたは商品を提供したか、あるいはその両方である企業またはサービスの顧客に対応してよい。
530で、イベント・データのコンテキストに対応する識別子が設定される。イベント・データのコンテキストは、例えば、前に示されたオブジェクトまたは名前空間であるか、あるいはそれらを含んでよい。1つの実施形態では、識別子は、本明細書に記載されたキー情報の種類のいずれかを含んでよい。例えば、イベント・データのコンテキストは、データベースに対応するチャネル名、名前空間、集合、またはキー名のうちのすべてまたはいずれか2つ以上を含んでいるタプルを含んでよい。キー情報は、例えば、オブジェクトまたは名前空間に対応するようにあらかじめ設定されてよい。したがって、イベントまたは1つまたは複数の関連するトランザクションあるいはその両方とのキー情報の関連付けは、イベントが正しいということの妥当性を自動的に確認することに役立ち得る。
540で、署名ポリシーが満たされ、識別子が設定された後に、この方法は、ブロックチェーン・ネットワークへのサブミットのためのイベントを生成することを含んでよい。生成されたイベントは、例えば、複数のフィールドを含んでよい。1つのフィールドは、データベースによって管理されている状態、オブジェクト、名前空間、またはコンテキストを示すイベント・データから取得された情報を含んでよい。別のフィールドは、識別子、例えば、オブジェクト、名前空間、またはその他のコンテキストに対して事前に決定されたキー情報を含んでよい。
550で、生成されたイベントがブロックチェーン・ネットワークにサブミットされてよい。このサブミットは、合意、およびブロックチェーンに記録される新しいブロックへの対象の記録ために、イベントをコミットすることを含んでよい。1つの実施形態では、このサブミットは、イベントがブロックチェーンに記録されるかどうかにかかわらず、イベントの通知をブロックチェーン・ネットワーク内のピア・ノードに提供することを含んでよい。
560で、イベントを取り出し、取り出されたイベント内のキー情報を、事前に許可され、イベントのコンテンツに関連付けられたオブジェクトまたは名前空間にリンクされた既知のキー情報と照合することによって、取り出されたイベントのコンテンツが確認され得るということの妥当性確認実行するために、ブロックチェーンが問い合わせられてよい。
図6Aは、実施形態例に従ってさまざまな動作を実行するように構成された物理的インフラストラクチャ610を含んでいる例示的なシステム600を示している。図6Aを参照すると、物理的インフラストラクチャ610は、モジュール612およびモジュール614を含んでいる。モジュール614は、実施形態例のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含んでいる。ステップ/動作608は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。物理的インフラストラクチャ610、モジュール612、およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。さらに、モジュール612およびモジュール614は同じモジュールであってよい。
図6Bは、実施形態例に従ってさまざまな動作を実行するように構成された別の例示的なシステム640を示している。図6B参照すると、システム640はモジュール612および614を含んでいる。モジュール614は、実施形態例のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含んでいる。ステップ/動作608は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。モジュール612およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。さらに、モジュール612およびモジュール614は同じモジュールであってよい。
図6Cは、実施形態例に従って、契約当事者間でのスマート・コントラクトの構成、およびブロックチェーンに対してスマート・コントラクトの条件を実施するように構成された仲介サーバを利用するように構成された例示的なシステムを示している。図6Cを参照すると、構成650は、通信セッション、アセット転送セッション、あるいはプロセスまたは手順を表してよく、これらは、1つまたは複数のユーザ・デバイス652または656あるいはその両方を明示的に識別するスマート・コントラクト630によって動作させられる。スマート・コントラクトの実行の、実行、動作、および結果は、サーバ654によって管理されてよい。スマート・コントラクト630の内容は、スマート・コントラクト・トランザクションの関係者である実体652および656のうちの1つまたは複数によるデジタル署名を要求してよい。スマート・コントラクトの実行結果は、ブロックチェーン・トランザクションとしてブロックチェーン620に書き込まれてよい。スマート・コントラクト630は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせに存在してよい、ブロックチェーン620に存在する。
図6Dは、実施形態例に従って、ブロックチェーンを含んでいるシステム660を示している。図6Dの例を参照すると、アプリケーション・プログラミング・インターフェイス(API)ゲートウェイ662が、ブロックチェーンの論理(例えば、スマート・コントラクト630またはその他のチェーンコード)およびデータ(例えば、分散型台帳など)にアクセスするための共通インターフェイスを提供する。この例では、APIゲートウェイ662は、1つまたは複数の実体652および656をブロックチェーン・ピア(すなわち、サーバ654)に接続することによってブロックチェーンに対してトランザクション(呼び出し、問い合わせなど)を実行するための共通インターフェイスである。ここで、サーバ654は、世界状態および分散型台帳のコピーを保持するブロックチェーン・ネットワークのピア・コンポーネントであり、これらのコピーは、クライアント652および656が世界状態に関するデータを問い合わせること、およびトランザクションをブロックチェーン・ネットワークにサブミットすることを可能にし、スマート・コントラクト630および署名ポリシーに応じて、署名ピアがスマート・コントラクト630を実行する。
前述の実施形態は、ハードウェアにおいて、プロセッサによって実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、またはこれらの組み合わせにおいて実装されてよい。コンピュータ・プログラムは、ストレージ媒体などのコンピュータ可読媒体に具現化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(RAM:random access memory)、フラッシュ・メモリ、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory)、電子的消去可能プログラマブル読み取り専用メモリ(EEPROM:electrically erasable programmable read-only memory)、レジスタ、ハード・ディスク、取り外し可能なディスク、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disk read-only memory)、または従来技術において知られた任意のその他の形態のストレージ媒体に存在してよい。
例示的なストレージ媒体は、プロセッサがストレージ媒体から情報を読み取り、ストレージ媒体に情報を書き込むことができるように、プロセッサに結合されてよい。代替方法では、ストレージ媒体はプロセッサと一体であってよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路(ASIC:application specific integrated circuit)に存在してよい。代替方法では、プロセッサおよびストレージ媒体は、個別のコンポーネントとして存在してよい。
図7Aは、実施形態例に従って、分散型台帳720に追加されている新しいブロックのプロセス700を示しており、図7Bは、実施形態例に従って、ブロックチェーンの新しいデータ・ブロック構造730の内容を示している。図7Aを参照すると、クライアント(図示されていない)は、トランザクションをブロックチェーン・ノード711、712、または713、あるいはその組み合わせにサブミットしてよい。クライアントは、ブロックチェーン720に対する活動を規定するための、いずれかのソースから受信された命令であってよい。一例として、クライアントは、ブロックチェーンのトランザクションを提案するデバイス、人、または実体などの要求者の代わりに動作するアプリケーションであってよい。複数のブロックチェーン・ピア(例えば、ブロックチェーン・ノード711、712、および713)が、ブロックチェーン・ネットワークの状態および分散型台帳720のコピーを維持してよい。クライアントによって提案されたトランザクションをシミュレートして署名する署名ピア、および署名を検証し、トランザクションの妥当性を確認し、トランザクションを分散型台帳720にコミットするコミット・ピアを含む、さまざまな種類のブロックチェーン・ノード/ピアが、ブロックチェーン・ネットワーク内に存在してよい。この例では、ブロックチェーン・ノード711、712、および713は、署名者ノード、コミッター・ノード(committer node)、あるいはその両方の役割を実行してよい。
分散型台帳720は、ブロック内の変更不可能な順序付けられたレコードを格納するブロックチェーン、およびブロックチェーン722の現在の状態を維持する状態データベース724(現在の世界状態)を含む。1つのチャネルにつき1つの分散型台帳720が存在してよく、各ピアが、そのピアがメンバーであるチャネルごとに、分散型台帳720のそれ自身のコピーを維持する。ブロックチェーン722は、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであり、各ブロックがN個のトランザクションのシーケンスを含む。ブロックは、図7Bに示されているコンポーネントなどの、さまざまなコンポーネントを含んでよい。ブロックのリンク(図7Aの矢印によって示されている)は、前のブロックのヘッダーのハッシュを、現在のブロックのブロック・ヘッダー内に追加することによって生成されてよい。このようにして、ブロックチェーン722上のすべてのトランザクションが、順序付けられ、暗号によって一緒にリンクされ、ハッシュ・リンクを壊さずにブロックチェーン・データを改ざんすることを防ぐ。さらに、これらのリンクのため、ブロックチェーン722内の最新のブロックが、その前に来たすべてのトランザクションを表す。ブロックチェーン722は、追加専用のブロックチェーンのワークロードをサポートするピアのファイル・システム(ローカルまたは取り付けられたストレージ)に格納されてよい。
ブロックチェーン722および分散型台帳720の現在の状態が、状態データベース724に格納されてよい。ここで、現在の状態データは、ブロックチェーン722のチェーン・トランザクション・ログにこれまで含まれたすべてのキーの最新の値を表す。チェーンコード呼び出しは、状態データベース724内の現在の状態に対してトランザクションを実行する。それらのチェーンコードの相互作用を極めて効率的にするために、すべてのキーの最新の値が状態データベース724に格納される。状態データベース724は、ブロックチェーン722のトランザクション・ログへのインデックス付きビューを含んでよく、したがって、いつでもチェーンから再生成され得る。状態データベース724は、ピアの起動時に、トランザクションが受け取られる前に、自動的に回復されてよい(または必要な場合に生成されてよい)。
署名ノードは、トランザクションをクライアントから受信し、シミュレーション結果に基づいてトランザクションに署名する。署名ノードは、トランザクション提案をシミュレートするスマート・コントラクトを保持する。署名ノードがトランザクションに署名するときに、署名ノードは、シミュレートされたトランザクションの署名を示す署名ノードからクライアント・アプリケーションへの署名された応答である、トランザクションの署名を生成する。トランザクションに署名する方法は、チェーンコード内で指定されることがある署名ポリシーによって決まる。署名ポリシーの例は、「署名ピアの大部分がトランザクションに署名しなければならない」である。異なるチャネルは、異なる署名ポリシーを有してよい。署名されたトランザクションは、クライアント・アプリケーションによって順序付けサービス710に転送される。
順序付けサービス710は、署名されたトランザクションを受け取り、それらをブロック内に順序付けし、ブロックをコミット・ピアに配信する。例えば、順序付けサービス710は、トランザクションのしきい値に達したか、タイマーがタイムアウトするか、または別の条件の場合に、新しいブロックを開始してよい。図7Aの例では、ブロックチェーン・ノード712は、ブロックチェーン720に格納するための新しいデータの新しいデータ・ブロック730を受信したコミット・ピアである。ブロックチェーン内の第1のブロックは、ブロックチェーン、ブロックチェーンのメンバー、格納されたデータなどに関する情報を含んでいるジェネシス・ブロックと呼ばれてよい。
順序付けサービス710は、順序付けノードのクラスタで構成されてよい。順序付けサービス710は、トランザクション、スマート・コントラクトを処理することも、共有台帳を維持することもない。むしろ、順序付けサービス710は、署名されたトランザクションを受け取ってよく、それらのトランザクションが分散型台帳720にコミットされる順序を指定する。ブロックチェーン・ネットワークのアーキテクチャは、「順序付け」の特定の実装(例えば、Solo、Kafka、BFTなど)が着脱可能なコンポーネントになるように設計されてよい。
トランザクションは、一貫性のある順序で分散型台帳720に書き込まれる。トランザクションの順序は、トランザクションがネットワークにコミットされるとき状態データベース724に対する更新が有効であることを保証するように確立される。暗号パズルを解くことまたはマイニングによって順序付けが発生する暗号通貨ブロックチェーン・システム(例えば、ビットコインなど)とは異なり、この例では、分散型台帳720の関係者が、そのネットワークに最も適した順序付けメカニズムを選択してよい。
順序付けサービス710は、新しいデータ・ブロック730を初期化し、新しいデータ・ブロック730がコミット・ピア(例えば、ブロックチェーン・ノード711、712、および713)にブロードキャストされてよい。それに応じて、各コミット・ピアは、読み取りセットおよび書き込みセットが状態データベース724内の現在の世界状態にまだ一致することをチェックして確認することによって、新しいデータ・ブロック730内のトランザクションの妥当性を確認する。特に、コミット・ピアは、署名者がトランザクションをシミュレートしたときに存在していた読み取られたデータが、状態データベース724内の現在の世界状態と同一であるかどうかを判定することができる。コミット・ピアがトランザクションの妥当性を確認した場合、トランザクションが分散型台帳720のブロックチェーン722に書き込まれ、状態データベース724が、読み取り/書き込みセットからの書き込みデータに更新される。トランザクションが失敗した場合、すなわち、コミット・ピアが、読み取り/書き込みセットが状態データベース724内の現在の世界状態に一致しないということを検出した場合、ブロック内に順序付けられたトランザクションは、そのブロックにまだ含まれるが、無効としてマーク付けされ、状態データベース724が更新されない。
図7Bを参照すると、分散型台帳720のブロックチェーン722に格納された新しいデータ・ブロック730(データ・ブロックとも呼ばれる)が、ブロック・ヘッダー740、ブロック・データ750、およびブロック・メタデータ760などの、複数のデータ・セグメントを含んでよい。図7Bに示された新しいデータ・ブロック730およびその内容などの、さまざまな示されたブロックおよびそれらの内容が、例にすぎず、実施形態例の範囲を制限するよう意図されていないということが、理解されるべきである。新しいデータ・ブロック730は、ブロック・データ750内のN個(例えば、1、10、100、500、1000、2000、3000など)のトランザクションのトランザクション情報を格納してよい。新しいデータ・ブロック730は、(例えば、図7Aのブロックチェーン722上の)前のブロックへのリンクをブロック・ヘッダー740内に含んでもよい。特に、ブロック・ヘッダー740は、前のブロックのヘッダーのハッシュを含んでよい。ブロック・ヘッダー740は、新しいデータ・ブロック730の一意のブロック番号、ブロック・データ750のハッシュなどを含んでもよい。新しいデータ・ブロック730のブロック番号は、一意であり、0から開始する漸進的/連続的順序などのさまざまな順序で割り当てられてよい。
ブロック・データ750は、新しいデータ・ブロック730内に記録された各トランザクションのトランザクション情報を格納してよい。例えば、トランザクション・データは、トランザクションの種類、バージョン、タイムスタンプ、分散型台帳720のチャネルID、トランザクションID、エポック、ペイロードの可視性、チェーンコード・パス(トランザクションのデプロイ)、チェーンコード名、チェーンコードのバージョン、入力(チェーンコードおよび関数)、公開鍵および証明書などのクライアント(作成者)の識別、クライアントの署名、署名者の識別情報、署名者の署名、提案のハッシュ、チェーンコード・イベント、応答の状態、名前空間、書き込みセット(トランザクションによって読み取られたキーおよびバージョンのリストなど)、書き込みセット(キーと値のリストなど)、開始キー、終了キー、キーのリスト、マークル・ツリー・クエリ・サマリー(Merkle tree query summary)などのうちの1つまたは複数を含んでよい。トランザクション・データは、N個のトランザクションの各々に格納されてよい。
一部の実施形態では、ブロック・データ750は、追加情報をブロックチェーン722内のブロックのハッシュリンクされたチェーンに追加する新しいデータ762を格納してもよい。追加情報は、本明細書で説明されたか、または示された、ステップ、特徴、プロセス、または動作、あるいはその組み合わせのうちの1つまたは複数を含む。それに応じて、新しいデータ762が、分散型台帳720上のブロックの変更不可能なログに格納され得る。そのような新しいデータ762を格納することの利点の一部が、本明細書において開示されて示されたさまざまな実施形態に反映されている。図7Bでは、新しいデータ762がブロック・データ750内で示されているが、ブロック・ヘッダー740またはブロック・メタデータ760内にあることもできる。
ブロック・メタデータ760は、メタデータの複数のフィールドを(例えば、バイト配列などとして)格納してよい。メタデータ・フィールドは、ブロック作成時の署名、最後の構成ブロックへの参照、ブロック内の有効なトランザクションと無効なトランザクションを識別するトランザクション・フィルタ、ブロックを順序付けた順序付けサービスの永続的な最後のオフセットなどを含んでよい。順序付けサービス710によって署名、最後の構成ブロック、および順序付けノードのメタデータが追加されてよい。一方、ブロックのコミッター(ブロックチェーン・ノード712など)は、署名ポリシー、読み取り/書き込みセットの検証などに基づいて、有効/無効情報を追加してよい。トランザクション・フィルタは、ブロック・データ750内のトランザクションの数に等しいサイズのバイト配列、およびトランザクションが有効/無効だったかどうかを識別する妥当性確認コードを含んでよい。
図7Cは、本明細書に記載された実施形態に従って、デジタル・コンテンツのためのブロックチェーン770の実施形態を示している。デジタル・コンテンツは、1つまたは複数のファイルおよび関連する情報を含んでよい。これらのファイルは、媒体、画像、ビデオ、音声、テキスト、リンク、グラフィックス、アニメーション、Webページ、文書、またはデジタル・コンテンツのその他の形態を含んでよい。ブロックチェーンの変更不可能な追加専用の特徴は、デジタル・コンテンツの完全性、有効性、および信頼性を保護するための予防手段として役立ち、認容性ルールが適用される法的手続きにおいて、あるいは証拠が考慮されるか、またはデジタル情報の提示および使用がその他の方法で対象になる、その他の設定において、ブロックチェーンの使用を適切にする。この場合、デジタル・コンテンツはデジタル証拠と呼ばれることがある。
ブロックチェーンは、さまざまな方法で形成されてよい。1つの実施形態では、デジタル・コンテンツは、ブロックチェーン自体に含まれ、ブロックチェーン自体からアクセスされてよい。例えば、ブロックチェーンの各ブロックは、参照情報(例えば、ヘッダー、値など)のハッシュ値を、関連するデジタル・コンテンツと共に格納してよい。その後、ハッシュ値および関連するデジタル・コンテンツは、一緒に暗号化されてよい。したがって、各ブロックのデジタル・コンテンツは、ブロックチェーン内の各ブロックを復号することによってアクセスされてよく、各ブロックのハッシュ値は、前のブロックを参照するための基礎として使用されてよい。これは、次のように示されてよい。
ブロック1 ブロック2 ・・・・・・ブロックN
ハッシュ値1 ハッシュ値2 ハッシュ値N
デジタル・コンテンツ1 デジタル・コンテンツ2 デジタル・コンテンツN
ブロック1 ブロック2 ・・・・・・ブロックN
ハッシュ値1 ハッシュ値2 ハッシュ値N
デジタル・コンテンツ1 デジタル・コンテンツ2 デジタル・コンテンツN
1つの実施形態では、デジタル・コンテンツがブロックチェーンに含まれなくてよい。例えば、ブロックチェーンは、デジタル・コンテンツを含んでいない各ブロックの内容の暗号化されたハッシュを格納してよい。デジタル・コンテンツは、元のファイルのハッシュ値に関連して、別のストレージ領域またはメモリ・アドレスに格納されてよい。他のストレージ領域は、ブロックチェーンを格納するために使用されるストレージ・デバイスと同じストレージ・デバイスであってよく、または異なるストレージ領域もしくは分離したリレーショナル・データベースであってもよい。各ブロックのデジタル・コンテンツは、対象のブロックのハッシュ値を取得するか、または問い合わせ、次に、実際のデジタル・コンテンツに対応して格納されているハッシュ値をストレージ領域内で検索することによって、参照またはアクセスされてよい。この動作は、例えば、データベース・ゲートキーパーによって実行されてよい。これは、次のように示されてよい。
ブロックチェーン ストレージ領域
ブロック1のハッシュ値 ブロック1のハッシュ値・・・内容
・ ・
・ ・
・ ・
ブロックNのハッシュ値 ブロックNのハッシュ値・・・内容
ブロックチェーン ストレージ領域
ブロック1のハッシュ値 ブロック1のハッシュ値・・・内容
・ ・
・ ・
・ ・
ブロックNのハッシュ値 ブロックNのハッシュ値・・・内容
図7Cの実施形態例では、ブロックチェーン770は、順序付けられたシーケンスで暗号によってリンクされた複数のブロック7781、7782、...778Nを含んでおり、N≧1である。ブロック7781、7782、...778Nをリンクするための使用される暗号化は、複数の鍵付きハッシュ関数または鍵なしハッシュ関数のいずれかであってよい。1つの実施形態では、ブロック7781、7782、...778Nは、ブロック内の情報に基づいて入力からnビットの英数字出力を生成するハッシュ関数の対象になる(nは256または別の数である)。そのようなハッシュ関数の例としては、SHA型(SHAは、セキュア・ハッシュ・アルゴリズム(Secured Hash Algorithm)を表す)アルゴリズム、マークル・ダンガード・アルゴリズム、HAIFAアルゴリズム、マークル・ツリー・アルゴリズム、ノンスに基づくアルゴリズム、および非衝突耐性PRFアルゴリズムが挙げられるが、これらに限定されない。別の実施形態では、ブロック7781、7782、...778Nは、ハッシュ関数とは異なる関数によって、暗号によってリンクされてよい。例示の目的で、以下では、ハッシュ関数(例えば、SHA-2)を参照して説明が行われる。
ブロックチェーン内のブロック7781、7782、...778Nの各々は、ヘッダー、ファイルのバージョン、および値を含む。ヘッダーおよび値は、ブロックチェーン内のハッシュ処理の結果として、ブロックごとに異なる。1つの実施形態では、値がヘッダーに含まれてよい。以下でさらに詳細に説明されるように、ファイルのバージョンは、元のファイルであるか、または元のファイルの異なるバージョンであってよい。
ブロックチェーン内の最初のブロック7781は、ジェネシス・ブロックと呼ばれ、ヘッダー7721、元のファイル7741、および初期値7761を含んでいる。ジェネシス・ブロックに使用される(実際には、その後のすべてのブロックにおいて使用される)ハッシュ処理方式は、変化してよい。例えば、最初のブロック7781内のすべての情報が一緒に同時にハッシュされてよく、または最初のブロック7781内の情報の各々または一部が別々にハッシュされ、その後、別々にハッシュされた部分のハッシュが実行されてよい。
ヘッダー7721は、1つまたは複数の初期パラメータを含んでよく、初期パラメータは、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル、期間、媒体形式、ソース、記述的キーワード、あるいは元のファイル7741もしくはブロックチェーンまたはその両方に関連付けられたその他の情報、あるいはその組み合わせを含んでよい。ヘッダー7721は、自動的に(例えば、ブロックチェーン・ネットワーク管理ソフトウェアによって)生成されるか、またはブロックチェーンの参加者によって手動で生成されてよい。ブロックチェーン内の他のブロック7782~778N内のヘッダーとは異なり、ジェネシス・ブロック内のヘッダー7721は、単に前のブロックが存在しないため、前のブロックを参照しない。
ジェネシス・ブロック内の元のファイル7741は、例えば、ブロックチェーンに含まれる前の処理を伴うか、または伴わずに、デバイスによって捕捉されたデータであってよい。元のファイル7741は、システムのインターフェイスを介して、デバイス、媒体ソース、またはノードから受信される。元のファイル7741はメタデータに関連付けられ、メタデータは、例えば、ユーザ、デバイス、またはシステム・プロセッサあるいはその組み合わせによって、手動または自動のいずれかで、生成されてよい。メタデータは、元のファイル7741に関連して、最初のブロック7781に含まれてよい。
ジェネシス・ブロック内の値7761は、元のファイル7741の1つまたは複数の一意の属性に基づいて生成された初期値である。1つの実施形態では、1つまたは複数の一意の属性は、元のファイル7741のハッシュ値、元のファイル7741のメタデータ、およびファイルに関連付けられたその他の情報を含んでよい。1つの実装では、初期値7761は、以下の一意の属性に基づいてよい。
1)SHA-2によって元のファイルに対して計算されたハッシュ値
2)発信デバイスID
3)元のファイルの開始タイムスタンプ
4)元のファイルの初期ストレージ位置
5)元のファイルおよび関連するメタデータを現在制御するためのソフトウェアのブロックチェーン・ネットワーク・メンバーID
1)SHA-2によって元のファイルに対して計算されたハッシュ値
2)発信デバイスID
3)元のファイルの開始タイムスタンプ
4)元のファイルの初期ストレージ位置
5)元のファイルおよび関連するメタデータを現在制御するためのソフトウェアのブロックチェーン・ネットワーク・メンバーID
ブロックチェーン内の他のブロック7782~778Nも、ヘッダー、ファイル、および値を含む。しかし、最初のブロック7721とは異なり、他のブロック内のヘッダー7722~772Nの各々は、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、単に前のブロックのヘッダーのハッシュであってよく、または前のブロック全体のハッシュ値であってよい。先行するブロックのハッシュ値を残りのブロックの各々に含めることによって、矢印780によって示されているように、N番目のブロックからジェネシス・ブロック(および関連する元のファイル)まで戻りブロックごとのトレースを実行することができ、監査可能かつ変更不可能な証拠保全を確立する。
他のブロック内のヘッダー7722~772Nの各々は、一般に、他の情報(例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル、あるいは対応するファイルもしくはブロックチェーンまたはその両方に関連付けられたその他のパラメータまたは情報、あるいはその組み合わせ)を含んでもよい。
他のブロック内のファイル7742~774Nは、例えば実行される処理の種類に応じて、ジェネシス・ブロック内の元のファイルと同じであってよく、または元のファイルの変更されたバージョンであってよい。実行される処理の種類は、ブロックごとに変化してよい。処理は、例えば、情報を編集するか、またはその他の方法で情報の内容を変更するか、情報をファイルから取り除くか、または情報をファイルに追加するなどの、先行するブロック内のファイルの任意の変更を含んでよい。
追加的または代替的に、処理は、先行するブロックからファイルを単にコピーすること、ファイルのストレージ位置を変更すること、1つまたは複数の先行するブロックからのファイルを分析すること、ファイルをあるストレージまたはメモリ位置から別のストレージまたはメモリ位置に移動すること、あるいはブロックチェーンのファイルもしくは関連するメタデータまたはその両方に対して動作を実行することを含んでよい。ファイルを分析することを含んでいる処理は、例えば、さまざまな分析、統計値、またはファイルに関連付けられたその他の情報を追加すること、含めること、またはその他の方法で関連付けることを含んでよい。
他のブロック内の他のブロック7762~776Nの各々に含まれる値は、実行された処理の結果として、一意の値であり、すべて異なっている。例えば、いずれか1つのブロック内の値は、前のブロック内の値の更新されたバージョンに対応する。この更新は、値が割り当てられたブロックのハッシュに反映される。したがって、ブロックの値は、ブロック内で何の処理が実行されたかの指示を提供し、ブロックチェーンを元のファイルまで戻りトレースすることも可能にする。このトレースは、ブロックチェーン全体を通じて、ファイルの証拠保全を確認する。
例えば、ファイル内で示されている人の識別情報を保護するために、前のブロック内のファイルの一部が編集されるか、遮断されるか、または画素化される場合について考える。この場合、編集されたファイルを含んでいるブロックは、例えば、編集がどのように実行されたか、誰が編集を実行したか、編集が発生したタイムスタンプなどの、編集されたファイルに関連付けられたメタデータを含むであろう。このメタデータがハッシュされ、値を形成してよい。ブロックのメタデータが、前のブロック内の値を形成するためにハッシュされた情報と異なっているため、値は、互いに異なっており、復号されたときに回復されてよい。
1つの実施形態では、次のうちのいずれか1つまたは複数が発生した場合に、現在のブロックの値を形成するように、前のブロックの値が更新されてよい(例えば、新しいハッシュ値が計算されてよい)。新しいハッシュ値は、この実施形態例では、以下に示された情報のすべてまたは一部をハッシュすることによって計算されてよい。
a)ファイルがいずれかの方法で処理された場合(例えば、ファイルが編集されたか、コピーされたか、変更されたか、アクセスされたか、またはその他の動作が実行された場合)に、新しいSHA-2によって計算されたハッシュ値
b)ファイルの新しいストレージ位置
c)ファイルに関連付けられている識別された新しいメタデータ
d)あるブロックチェーンの参加者から別のブロックチェーンの参加者へのファイルのアクセスまたは制御の移動
a)ファイルがいずれかの方法で処理された場合(例えば、ファイルが編集されたか、コピーされたか、変更されたか、アクセスされたか、またはその他の動作が実行された場合)に、新しいSHA-2によって計算されたハッシュ値
b)ファイルの新しいストレージ位置
c)ファイルに関連付けられている識別された新しいメタデータ
d)あるブロックチェーンの参加者から別のブロックチェーンの参加者へのファイルのアクセスまたは制御の移動
図7Dは、1つの実施形態例に従って、ブロックチェーン790内のブロックの構造を表すことができるブロックの実施形態を示している。ブロック(ブロックi)は、ヘッダー772i、ファイル774i、および値776iを含んでいる。
ヘッダー772iは、本明細書において説明された、前のブロック(ブロックi-1)のハッシュ値、および例えば情報の種類のいずれかであってよい、追加の参照情報(例えば、参照、特性、パラメータなどを含んでいるヘッダー情報)を含む。すべてのブロックは、当然ながらジェネシス・ブロックを除いて、前のブロックのハッシュを参照する。前のブロックのハッシュ値は、単に前のブロック内のヘッダーのハッシュであるか、またはファイルおよびメタデータを含む、前のブロック内の情報のすべてもしくは一部のハッシュであってよい。
ファイル774iは、データ1、データ2、...、データNなどの複数のデータを順に含んでいる。データは、データに関連付けられた内容または特性あるいはその両方を記述するメタデータ1、メタデータ2、...、メタデータNでタグ付けされる。例えば、データごとのメタデータは、データのタイムスタンプ、データのプロセス、データに示された人またはその他の内容を示しているキーワード、またはファイルの有効性および内容を全体として確立し、特に、例えば以下で説明される実施形態に関連して説明されるように、デジタル証拠を使用するのに役立つことができるその他の特徴、あるいはその組み合わせを示すための情報を含んでよい。メタデータに加えて、各データは、改ざん、ファイル内のギャップ、およびファイル全体の連続的な参照を防ぐために、前のデータへの参照(参照1、参照2、...、参照N)でタグ付けされてよい。
メタデータが(例えば、スマート・コントラクトを介して)データに割り当てられた後に、ハッシュを変更せずにメタデータを変更することはできず、ハッシュの変更は、無効であると容易に識別され得る。したがって、メタデータは、ブロックチェーン内の参加者による使用のためにアクセスされてよい、情報のデータ・ログを作成する。
値776iは、前に説明された情報の種類のいずれかに基づいて計算されたハッシュ値またはその他の値である。例えば、いずれかの特定のブロック(ブロックi)の場合、そのブロックの値は、そのブロックに対して実行された処理(例えば、新しいハッシュ値、新しいストレージ位置、関連するファイルの新しいメタデータ、制御もしくはアクセスの移動、識別子、またはその他の動作もしくは追加される情報)を反映するように更新されてよい。各ブロック内の値が、ファイルおよびヘッダーのデータのメタデータから分離しているように示されているが、別の実施形態では、値は、このメタデータに部分的または全体的に基づいてよい。
ブロックチェーン770が形成された後に、いずれかの時点で、ブロック全体にわたる値のトランザクション履歴に関してブロックチェーンに問い合わせることによって、ファイルの変更不可能な証拠保全が取得されてよい。この問い合わせ手順または追跡手順は、最後に含まれたブロック(例えば、最後の(N番目の)ブロック)の値を復号することから開始してよく、その後、ジェネシス・ブロックに達し、元のファイルが回復されるまで、他のブロックの値を復号し続ける。復号は、さらに各ブロックでヘッダーおよびファイルならびに関連するメタデータを復号することを含んでもよい。
復号は、各ブロックで行われた暗号化の種類に基づいて実行される。この復号は、秘密鍵、公開鍵、または公開鍵と秘密鍵のペアの使用を含んでよい。例えば、非対称暗号化が使用される場合、ブロックチェーンの参加者またはネットワーク内のプロセッサが、既定のアルゴリズムを使用して公開鍵および秘密鍵のペアを生成してよい。公開鍵および秘密鍵は、何らかの数学的関係によって互いに関連付けられる。公開鍵は、他のユーザからメッセージを受信するためのアドレス(例えば、IPアドレスまたは自宅住所)として機能するように、パブリックに配布されてよい。秘密鍵は、秘密に保たれ、他のブロックチェーンの参加者に送信されるメッセージにデジタル署名するために使用される。署名は、受信者が送信者の公開鍵を使用して検証することができるように、メッセージに含まれる。このようにして、受信者は、送信者のみがこのメッセージを送信できたということを確信することができる。
鍵のペアを生成することは、ブロックチェーンにアカウントを作成することに類似しているが、実際は、どこにも登録する必要はない。また、ブロックチェーンに対して実行されたすべてのトランザクションが、秘密鍵を使用して送信者によってデジタル署名される。この署名は、アカウントの所有者のみが(スマート・コントラクトによって決定された許可の範囲内である場合に)ブロックチェーンのファイルを追跡して処理することができるということを保証する。
図8Aおよび8Bは、本明細書に組み込まれて使用されてよい、ブロックチェーンの追加の使用事例を示している。特に、図8Aは、機械学習(人工知能)データを格納するブロックチェーン810の例800を示している。機械学習は、新しいデータに対する正確な予測のための予測モデルを構築するために、大量の履歴データ(またはトレーニング・データ)に依存する。機械学習ソフトウェア(例えば、ニューラル・ネットワークなど)は、多くの場合、非直感的パターンを発見するために、数百万レコードを取捨選択することができる。
図8Aの例では、ホスト・プラットフォーム820が、アセット830の予測監視のための機械学習モデルを構築してデプロイする。ここで、ホスト・プラットフォーム820は、クラウド・プラットフォーム、工業用サーバ、Webサーバ、パーソナル・コンピュータ、ユーザ・デバイスなどであってよい。アセット830は、航空機、機関車、タービン、医療機器、石油ガス機器、ボート、船、車両などの、任意の種類のアセット(例えば、機械または機器など)であることができる。別の例として、アセット830は、株式、通貨、デジタル・コイン、保険などの、無形のアセットであってよい。
ブロックチェーン810は、機械学習モデルのトレーニング・プロセス802およびトレーニング済み機械学習モデルに基づく予測プロセス804の両方を大幅に改善するために使用され得る。例えば、802では、データを収集するためにデータ科学者/技術者またはその他のユーザを必要とするのではなく、アセット830自体によって(または、図示されていない中間物を介して)、ブロックチェーン810に関する履歴データが格納されてよい。これによって、予測モデルのトレーニングを実行するときにホスト・プラットフォーム820によって必要とされる収集時間を大幅に減らすことができる。例えば、スマート・コントラクトを使用して、データを、元の場所からブロックチェーン810に真っすぐに、直接かつ確実に転送することができる。スマート・コントラクトは、ブロックチェーン810を使用して、収集されたデータのセキュリティおよび所有権を保証することによって、アセットから、機械学習モデルを構築するためにデータを使用する個人に、データを直接送信することができる。これによって、アセット830間のデータの共有を可能にする。
収集されたデータは、合意メカニズムに基づいてブロックチェーン810に格納されてよい。合意メカニズムは、記録されているデータが検証されており、正確であることを保証するために、(許可されたノードを)制御する。記録されたデータは、タイムスタンプが付与され、暗号によって署名されており、変更不可能である。したがって、記録されたデータは、監査可能、透過的、かつ安全である。ブロックチェーンに直接書き込むIoTデバイスを追加することによって、特定の場合(すなわち、サプライ・チェーン、医療、物流などの場合)に、データが記録される頻度を増やし、その精度を向上させることができる。
さらに、収集されたデータに対する機械学習モデルのトレーニングは、ホスト・プラットフォーム820による一連の改良およびテストを必要とし得る。各改良およびテストは、機械学習モデルの知識を拡張するのに役立つように、追加データまたは以前に考慮されなかったデータに基づいてよい。802では、ホスト・プラットフォーム820によって、異なるトレーニング・ステップおよびテスト・ステップ(および関連するデータ)がブロックチェーン810に格納されてよい。機械学習モデルの各改良(例えば、変数、重みなどにおける変更)は、ブロックチェーン810に格納されてよい。これによって、モデルがどのようにトレーニングされたか、およびモデルをトレーニングするためにどのデータが使用されたかの検証可能な証明を提供する。さらに、ホスト・プラットフォーム820が最終的なトレーニング済みモデルを実現した場合、得られたモデルがブロックチェーン810に格納されてよい。
モデルがトレーニングされた後に、そのモデルは、活動中の環境にデプロイされてよく、最終的なトレーニング済み機械学習モデルの実行に基づく予測/決定を行うことができる。例えば、804で、機械学習モデルは、航空機、風力タービン、医療機械などのアセットのための状態監視保全(CBM:condition-based maintenance)に使用されてよい。この例では、アセット830からフィードバックされたデータが機械学習モデルに入力され、故障イベント、エラー・コードなどのイベント予測を行うために使用されてよい。ホスト・プラットフォーム820で機械学習モデルの実行によって行われた決定は、監査可能/検証可能な証明を提供するために、ブロックチェーン810に格納されてよい。1つの非限定的な例として、機械学習モデルは、アセット830の部品での将来の停止/故障を予測し、その部品を交換するように警告または通知を作成してよい。この決定の背後にあるデータが、ホスト・プラットフォーム820によってブロックチェーン810に格納されてよい。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン810で、またはブロックチェーン810に関して発生することができる。
ブロックチェーンの新しいトランザクションが新しいブロックに一緒に集められ、既存のハッシュ値に追加されることができる。次に、このハッシュ値が暗号化されて、新しいブロックの新しいハッシュを生成する。この新しいハッシュが、トランザクションが暗号化されるときなどに、トランザクションの次のリストに追加される。この結果は、先行するすべてのブロックのハッシュ値をそれぞれ含んでいるブロックのチェーンである。これらのブロックを格納するコンピュータは、ブロックのハッシュ値を定期的に比較し、それらのコンピュータがすべて合意していることを確認する。合意していないすべてのコンピュータは、問題を引き起こしているレコードを破棄する。この方法は、ブロックチェーンの改ざん防止を保証することに適しているが、完璧ではない。
このシステムを不正に操作する1つの方法は、不正なユーザが、ハッシュを変更しないような方法で、トランザクションのリストを自分の都合の良いように変更することである。これは、総当たり攻撃によって実行されることができ、言い換えると、レコードを変更し、結果を暗号化し、ハッシュ値が同じであるかどうかを確認することによって、実行されることができる。ハッシュ値が同じでない場合、一致するハッシュを見つけるまで、何度も繰り返して試みる。ブロックチェーンのセキュリティは、通常のコンピュータが、宇宙の年齢などの、全く非実用的な時間的尺度にわたってしかこの種の総当たり攻撃を実行できないという考えに基づく。それに対して、量子コンピュータは非常に高速(数千倍高速)であり、したがって、非常に大きい脅威をもたらす。
図8Bは、量子コンピューティング攻撃に対して保護するために量子鍵配送(QKD:quantum key distribution)を実装する量子セキュアなブロックチェーン852の例850を示している。この例では、ブロックチェーン・ユーザは、QKDを使用して互いの識別情報を検証することができる。この検証では、光子などの量子的粒子を使用して情報を送信し、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、送信者および受信者が、ブロックチェーンを介して、互いの識別情報を確認することができる。
図8Bの例では、4人のユーザ(854、856、858、および860)が存在している。ユーザのペアの各々は、ユーザ自身の間で秘密鍵862(すなわち、QKD)を共有することができる。この例には4つのノードが存在するため、ノードの6つのペアが存在し、したがって、QKDAB、QKDAC、QKDAD、QKDBC、QKDBD、およびQKDCDを含む6つの異なる秘密鍵862が使用される。各ペアは、光子などの量子的粒子を使用して情報を送信することによってQKDを作成することができ、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、ユーザのペアが互いの識別情報を確認することができる。
ブロックチェーン852の動作は、(i)トランザクションの作成、および(ii)新しいトランザクションを集めるブロックの構築という2つの手順に基づく。新しいトランザクションは、従来のブロックチェーン・ネットワークと同様に作成されてよい。各トランザクションは、送信者、受信者、作成時間、転送される量(または値)、送信者が操作のための資金を持っていることを正当化する参照トランザクションのリストに関する情報などを含んでよい。次に、このトランザクション・レコードは、すべての他のノードに送信され、未確認トランザクションのプールに入力される。ここで、2人の関係者(すなわち、854~860のうちのユーザのペア)が、共有秘密鍵862(QKD)を提供することによって、トランザクションを認証する。この量子署名は、すべてのトランザクションに添付され、改ざんを極めて困難にすることができる。各ノードは、ブロックチェーン852のローカル・コピーに関してトランザクションのエントリをチェックし、各トランザクションが十分な資金を持っていることを検証する。しかし、トランザクションはまだ確認されていない。
ブロックに対して従来のマイニング・プロセスを実行するのではなく、ブロードキャスト・プロトコルを使用して、分散された方法でブロックが作成されてよい。既定の期間(例えば、数秒、数分、数時間など)に、ネットワークがブロードキャスト・プロトコルをいずれかの未確認トランザクションに適用してよく、それによって、トランザクションの正しいバージョンに関してビザンチン合意(合意)を達成する。例えば、各ノードは、プライベートな値(その特定のノードのトランザクション・データ)を所有してよい。1回目に、ノードは、プライベートな値を互いに送信する。その後、ノードは、前回他のノードから受信した情報を伝達する。ここで、本物のノードが、新しいブロック内のトランザクションの完全なセットを作成することができる。この新しいブロックは、ブロックチェーン852に追加されることができる。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン852で、またはブロックチェーン852に関して発生することができる。
図9は、本明細書において説明されたか、または示されたか、あるいはその両方である実施形態例のうちの1つまたは複数をサポートする例示的なシステム900を示している。システム900は、他の多数の汎用または特殊用途のコンピューティング・システム環境または構成で運用できるコンピュータ・システム/サーバ902を備えている。コンピュータ・システム/サーバ902と共に使用するのに適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
コンピュータ・システム/サーバ902は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含んでよい。コンピュータ・システム/サーバ902は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
図9に示すように、クラウド・コンピューティング・ノード900内のコンピュータ・システム/サーバ902は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ902のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット904、システム・メモリ906、およびシステム・メモリ906を含むさまざまなシステム・コンポーネントをプロセッサ904に結合するバスを含んでよいが、これらに限定されない。
バスは、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含むが、これらに限定されない。
コンピュータ・システム/サーバ902は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ902によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。システム・メモリ906は、1つの実施形態では、他の図のフロー図を実装する。システム・メモリ906は、ランダム・アクセス・メモリ(RAM:random access memory)910またはキャッシュ・メモリ912あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ902は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム914を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバスに接続することができる。下で詳細に示され、説明されるように、メモリ906は、本出願のさまざまな実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含んでよい。
例えば、一連の(少なくとも1つの)プログラム・モジュール918を含んでいるプログラム/ユーティリティ916がメモリ906に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール918は、通常、本明細書に記載された本出願のさまざまな実施形態の機能または方法あるいはその両方を実行する。
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化されてよい。したがって、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様を組み合わせる実施形態の形態を取ってよく、これらはすべて、本明細書では、一般に「回路」、「モジュール」、または「システム」と呼ばれてよい。さらに、本出願の形態は、コンピュータ可読プログラム・コードが具現化されている1つまたは複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態を取ってよい。
また、コンピュータ・システム/サーバ902は、キーボード、ポインティング・デバイス、ディスプレイ922などの1つまたは複数の外部デバイス920、ユーザがコンピュータ・システム/サーバ902と情報をやりとりできるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ902が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信することもできる。このような通信は、I/Oインターフェイス924を介して行うことができる。さらに、コンピュータ・システム/サーバ902は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ926を介して通信することができる。図示されているように、ネットワーク・アダプタ926は、バスを介してコンピュータ・システム/サーバ902の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ902と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
システム、方法、および非一過性コンピュータ可読媒体のうちの少なくとも1つの実施形態例が添付の図面において示され、前述の詳細な説明において説明されたが、本出願が、開示された実施形態に限定されず、以下の特許請求の範囲によって示され、定義されているように、多数の再配置、変更、および置き換えを行うことができるということが理解されるであろう。例えば、さまざまな図のシステムの機能は、本明細書に記載されたモジュールまたはコンポーネントのうちの1つまたは複数によって、あるいは分散アーキテクチャにおいて実行することができ、送信器、受信器、またはその両方のペアを含んでよい。例えば、個々のモジュールによって実行される機能の全部または一部は、それらのモジュールのうちの1つまたは複数によって実行されてよい。さらに、本明細書に記載された機能は、さまざまな時間に、さまざまなイベントに関して、モジュールまたはコンポーネントの内部または外部で、実行されてよい。また、さまざまなモジュールの間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、または複数のプロトコルを介して、あるいはその組み合わせを介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、または他のモジュールのうちの1つまたは複数を介して、あるいはその両方によって、送信または受信されてよい。
当業者は、「システム」を、パーソナル・コンピュータ、サーバ、コンソール、PDA(personal digital assistant)、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意のその他の適切なコンピューティング・デバイス、あるいはデバイスの組み合わせとして具現化できるということを、理解するであろう。「システム」によって実行されている前述の機能を提示することは、本出願の範囲を限定するように全く意図されておらず、多くの実施形態のうちの1つの例を提供するよう意図されている。実際に、本明細書で開示された方法、システム、および装置は、計算技術に一致する局所的な分散された形態で実装されてよい。
前述の実施形態のうちの1つまたは複数に従って、分散型データベース内の情報の格納を管理することに対する改善、より詳細には、ブロックチェーンを含むがこれに限定されない、分散型データベースのトランザクションおよびその他のイベント・データを管理することに対する改善を表すシステム、方法、およびコンピュータ可読媒体が提供される。
1つの実施形態では、実施形態のうちの1つまたは複数は、ビザンチン・クライアントが、特定の動作に対応するイベントを発行するように見えるが、前述の動作を実行しなかった、有効だが誤解を招くように形成されたトランザクションを、システムに挿入することを防ぐことによって、問題を解決する。従来のデータベースでは、任意の参加者によって、いずれかの検証ノードに信用の仮定が存在するため、トランザクションが入り口で安全にフィルタリングされてよい。これに対して、1つまたは複数の実施形態に従って、異なる参加者が、異なる権限または異なる状態あるいはその両方を有しており、それらを変更するために異なる署名を必要とするため、これらの1つまたは複数の実施形態は、従来のデータベースの下で動作することができない。
さらに、本明細書に記載された1つまたは複数の実施形態は、攻撃対象領域(その他の点では有効なトランザクションに対するなりすまされたイベント)を取り除くことによって、クライアント・アプリケーションのセキュリティを改善する。さらに、1つまたは複数の実施形態は、分散型データベースに新しい種類のデータを格納し、管理してよい。例えば、新しいデータが、イベントをカプセル化するトランザクションの内部に格納されてよい。この追加データは、その他の方法でトランザクションの妥当性を確認するために必要とされる妥当性確認チェックよりも多くの妥当性確認チェックを実行するために、トランザクション妥当性確認コンポーネントによって利用されてよい。次に、この追加データはクライアントによって利用され、クライアントは、トランザクションが有効とマーク付けされている場合、これらの追加のセキュリティ・チェックが実行されたということを知るため、現在イベントを安全に処理することができる。
本明細書において説明されたシステムの特徴の一部が、それらの実装の独立性を特により強調するために、モジュールとして提示されていることに、注意するべきである。例えば、モジュールは、カスタム超大規模集積(VLSI:very large-scale integration)回路またはゲート・アレイ、論理チップなどの市販の半導体、トランジスタ、またはその他の個別のコンポーネントを備えているハードウェア回路として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理デバイス、グラフィックス・プロセッシング・ユニットなどの、プログラム可能なハードウェア・デバイスにおいて実装されてもよい。
モジュールは、さまざまな種類のプロセッサによって実行するために、ソフトウェアにおいて少なくとも部分的に実装されてもよい。例えば、実行可能コードの識別されたユニットは、例えばオブジェクト、プロシージャ、または関数として編成されてよいコンピュータ命令の1つまたは複数の物理的または論理的ブロックを備えてよい。それにもかかわらず、識別されたモジュールの実行可能によって、物理的に一緒に配置される必要はなく、異なる位置に格納された異種の命令を含んでよく、それらの命令は、論理的に一緒に結合された場合にモジュールを備え、モジュールの規定された目的を達成する。さらに、モジュールはコンピュータ可読媒体に格納されてよく、このコンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、またはデータの格納に使用される任意のその他の媒体であってよい。
実際に、実行可能コードのモジュールは、単一の命令であるか、または多くの命令であることができ、複数の異なるコード・セグメントにわたって、異なるプログラム間および複数のメモリ・デバイスにまたがって、分散されてもよい。同様に、操作可能なデータが、識別され、本明細書ではモジュール内で示されてよく、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内で編成されてよい。操作可能なデータは、単一のデータ・セットとして収集されてよく、または異なるストレージ・デバイスを含む、異なる位置にわたって分散されてよく、システムまたはネットワーク上の単なる電子信号として、少なくとも部分的に存在してよい。
本明細書の図において概略的に説明され、示されているように、本出願のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、実施形態の詳細な説明は、請求される本出願の範囲を限定するよう意図されておらず、単に、本出願の選択された実施形態を表している。
当業者は、開示された順序とは異なる順序でステップを使用して、または開示された構成におけるハードウェア要素とは異なるハードウェア要素を使用して、あるいはその両方を使用して、前述の内容を実践できるということを、容易に理解するであろう。したがって、本出願は、これらの好ましい実施形態に基づいて説明されたが、特定の変更、変形、および代替の構造が明白であるということは、当業者にとって明らかであろう。
本出願の好ましい実施形態が説明されたが、説明された実施形態が単なる例であり、それらの実施形態と同等のものおよびそれらの実施形態に対する変更の完全な範囲(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど)で考えた場合、本出願の範囲が添付の特許請求の範囲のみによって定義されるべきであるということが、理解されるべきである。
Claims (20)
- 実体からイベント・データを受信するための受信者、
スマート・コントラクトのコードを格納するためのストレージ領域、および
前記スマート・コントラクトを実行するためのプロセッサを備えているシステムであって、前記スマート・コントラクトが、
前記イベント・データが署名ポリシーを満たすということを決定することと、
前記イベント・データのコンテキストに対応する識別子を設定することと、
前記イベント・データおよび前記識別子を含んでいるイベントを生成することと、
分散型データベースに記録するための前記イベントをサブミットすることとを実行し、前記識別子が、前記イベント・データ内の前記コンテキストに対応する状態が正しいということの妥当性を確認する、システム。 - 前記識別子が、前記イベント・データの前記コンテキストに対応する、前に生成されたキー情報を含む、請求項1に記載のシステム。
- 前記イベント・データの前記コンテキストが、前記データベースによって管理されているオブジェクトを参照する、請求項1に記載のシステム。
- 前記イベント・データの前記コンテキストが、前記データベースに対応するチャネル名、名前空間、集合、またはキー名のうちの少なくとも2つを含んでいるタプルを含む、請求項1に記載のシステム。
- 前記イベント・データの前記コンテキストが、前記データベースに対応するチャネル名、名前空間、集合、およびキー名を含んでいるタプルを含む、請求項1に記載のシステム。
- 前記プロセッサが、前記イベントに対応する形式で、既定のフィールドへの前記識別子の挿入を含んでいる動作に従って前記イベントを生成する、請求項1に記載のシステム。
- 前記コンテキストが、前記データベースによって管理されているオブジェクトまたは名前空間であり、
前記識別子が、前記オブジェクトまたは名前空間に関して事前に認証される、請求項1に記載のシステム。 - 実体からイベント・データを受信することと、
前記イベント・データが署名ポリシーを満たすということを決定することと、
前記イベント・データのコンテキストに対応する識別子を設定することと、
前記イベント・データおよび前記識別子を含んでいるイベントを生成することと、
分散型データベースに記録するための前記イベントをサブミットすることとを含んでいる方法であって、前記識別子が、前記イベント・データ内の前記コンテキストに対応する状態が正しいということの妥当性を確認するために使用される、方法。 - 前記識別子が、前記イベント・データの前記コンテキストに対応する、前に生成されたキー情報を含む、請求項8に記載の方法。
- 前記イベント・データの前記コンテキストが、前記データベースによって管理されているオブジェクトを参照する、請求項8に記載のシステム。
- 前記イベント・データの前記コンテキストが、前記データベースに対応するチャネル名、名前空間、集合、またはキー名のうちの少なくとも2つを含んでいるタプルを含む、請求項8に記載の方法。
- 前記イベント・データの前記コンテキストが、前記データベースに対応するチャネル名、名前空間、集合、およびキー名を含んでいるタプルを含む、請求項8に記載の方法。
- 前記イベントを生成することが、前記イベントに対応する形式で、前記識別子を既定のフィールドに挿入することを含む、請求項8に記載の方法。
- 前記コンテキストが、前記データベースによって管理されているオブジェクトまたは名前空間であり、
前記識別子が、前記オブジェクトまたは名前空間に関して事前に認証される、請求項8に記載の方法。 - 命令を格納している非一過性コンピュータ可読媒体であって、前記命令が、1つまたは複数のプロセッサによって実行された場合に、前記1つまたは複数のプロセッサに、
実体からイベント・データを受信することと、
前記イベント・データが署名ポリシーを満たすということを決定することと、
前記イベント・データのコンテキストに対応する識別子を設定することと、
前記イベント・データおよび前記識別子を含んでいるイベントを生成することと、
分散型データベースに記録するための前記イベントをサブミットすることとを実行させ、前記識別子が、前記イベント・データ内の前記コンテキストに対応する状態が正しいということの妥当性を確認する、非一過性コンピュータ可読媒体。 - 前記識別子が、前記イベント・データの前記コンテキストに対応する、前に生成されたキー情報を含む、請求項15に記載の非一過性コンピュータ可読媒体。
- 前記イベント・データの前記コンテキストが、前記データベースによって管理されているオブジェクトを参照する、請求項15に記載の非一過性コンピュータ可読媒体。
- 前記イベント・データの前記コンテキストが、前記データベースに対応するチャネル名、名前空間、集合、またはキー名のうちの少なくとも2つを含んでいるタプルを含む、請求項15に記載の非一過性コンピュータ可読媒体。
- 前記イベントを生成することが、前記イベントに対応する形式で、前記識別子を既定のフィールドに挿入することを含む、請求項15に記載の非一過性コンピュータ可読媒体。
- 前記コンテキストが、前記データベースによって管理されているオブジェクトまたは名前空間であり、
前記識別子が、前記オブジェクトまたは名前空間に関して事前に認証される、請求項15に記載の非一過性コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/917,247 US20210406876A1 (en) | 2020-06-30 | 2020-06-30 | Permissioned eventing in a decentralized database |
US16/917,247 | 2020-06-30 | ||
PCT/IB2021/054257 WO2022003436A1 (en) | 2020-06-30 | 2021-05-18 | Permissioned eventing in a decentralized database |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023530594A true JP2023530594A (ja) | 2023-07-19 |
Family
ID=79031106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022571219A Pending JP2023530594A (ja) | 2020-06-30 | 2021-05-18 | 分散型データベースにおける許可されたイベント処理 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20210406876A1 (ja) |
JP (1) | JP2023530594A (ja) |
KR (1) | KR20230005353A (ja) |
CN (1) | CN115668856A (ja) |
AU (1) | AU2021300620A1 (ja) |
CA (1) | CA3180249A1 (ja) |
GB (1) | GB2611687A (ja) |
IL (1) | IL298416A (ja) |
WO (1) | WO2022003436A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220129445A1 (en) * | 2020-10-28 | 2022-04-28 | Salesforce.Com, Inc. | Keyspace references |
CN115756439B (zh) * | 2022-10-20 | 2024-02-13 | 乾三(北京)科技有限公司 | 一种状态机引擎编排方法、装置及计算机设备 |
WO2024096914A1 (en) * | 2022-10-31 | 2024-05-10 | Venkataraman Mohan | Blockchain based document and data sharing |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150379510A1 (en) * | 2012-07-10 | 2015-12-31 | Stanley Benjamin Smith | Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain. |
US20180253702A1 (en) * | 2015-11-24 | 2018-09-06 | Gartland & Mellina Group | Blockchain solutions for financial services and other transactions-based industries |
EP3193299A1 (en) * | 2016-01-15 | 2017-07-19 | Accenture Global Services Limited | Device, method and system for autonomous selection of a commodity supplier through a blockchain distributed database |
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 |
US11032063B2 (en) * | 2018-09-19 | 2021-06-08 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US20200142693A1 (en) * | 2018-11-07 | 2020-05-07 | International Business Machines Corporation | Transparent code processing |
US20200151686A1 (en) * | 2018-11-14 | 2020-05-14 | Royal Bank Of Canada | System and method for cross-border blockchain platform |
US20200184548A1 (en) * | 2018-12-07 | 2020-06-11 | Honeywell International Inc. | Systems and methods for leasing equipment or facilities using blockchain technology |
US11244313B2 (en) * | 2019-01-31 | 2022-02-08 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing declarative smart actions for coins and assets transacted onto a blockchain using distributed ledger technology (DLT) |
US10726002B1 (en) * | 2019-08-19 | 2020-07-28 | DLT Global Inc. | Relational data management and organization using DLT |
US10585882B1 (en) * | 2019-09-23 | 2020-03-10 | Trace, LLC | Systems and methods for writing updates to and/or reading previously stored updates of assets implemented as smart contracts on a decentralized database |
-
2020
- 2020-06-30 US US16/917,247 patent/US20210406876A1/en active Pending
-
2021
- 2021-05-18 CN CN202180039625.7A patent/CN115668856A/zh active Pending
- 2021-05-18 KR KR1020227042214A patent/KR20230005353A/ko active Search and Examination
- 2021-05-18 AU AU2021300620A patent/AU2021300620A1/en active Pending
- 2021-05-18 WO PCT/IB2021/054257 patent/WO2022003436A1/en active Application Filing
- 2021-05-18 GB GB2300463.3A patent/GB2611687A/en active Pending
- 2021-05-18 CA CA3180249A patent/CA3180249A1/en active Pending
- 2021-05-18 IL IL298416A patent/IL298416A/en unknown
- 2021-05-18 JP JP2022571219A patent/JP2023530594A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
AU2021300620A1 (en) | 2022-11-17 |
US20210406876A1 (en) | 2021-12-30 |
CA3180249A1 (en) | 2022-01-06 |
GB202300463D0 (en) | 2023-03-01 |
CN115668856A (zh) | 2023-01-31 |
GB2611687A (en) | 2023-04-12 |
KR20230005353A (ko) | 2023-01-09 |
WO2022003436A1 (en) | 2022-01-06 |
IL298416A (en) | 2023-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2020414467B2 (en) | Partially-ordered blockchain | |
US11251938B2 (en) | Blockchain verification using non-consecutive blocks | |
JP2023501152A (ja) | 許可型ブロックチェーンのためのランダムなノード選択 | |
AU2021210206B2 (en) | Index structure for blockchain ledger | |
US11489663B2 (en) | Correlation-based hash tree verification | |
JP2023520859A (ja) | ブロックチェーンのより高速なビュー変更 | |
JP2023504492A (ja) | データ・オブジェクトの効率的しきい値ストレージ | |
JP2023530594A (ja) | 分散型データベースにおける許可されたイベント処理 | |
JP2023524715A (ja) | ネットワーク間の識別情報プロビジョニング | |
JP2023520632A (ja) | データの保護のためのノイズ・トランザクション | |
US20230208638A1 (en) | Future asset reclamation via blockchain | |
US11856092B2 (en) | Limiting data availability on distributed ledger | |
US11847234B2 (en) | Verifiable training of model in untrusted environment | |
US11924348B2 (en) | Honest behavior enforcement via blockchain | |
US20220166616A1 (en) | Key reclamation in blockchain network via oprf | |
US20210314155A1 (en) | Trusted ledger stamping | |
US20210150597A1 (en) | Automated invoicing | |
WO2023046409A1 (en) | Digital asset platform with hsm verification | |
WO2022116753A1 (en) | Automated merge of dlt networks | |
JP2023520634A (ja) | 文脈完全性の維持 | |
JP2023505686A (ja) | パートナーの匿名化 | |
US11973857B2 (en) | Data archive | |
US20230087602A1 (en) | Privacy-preserving state reference | |
US20210157783A1 (en) | Dynamic updates of decentralized invoices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230116 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231026 |