(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-19
(45)【発行日】2024-12-27
(54)【発明の名称】ブロックチェーン・ネットワークのための合意サービス
(51)【国際特許分類】
H04L 9/08 20060101AFI20241220BHJP
H04L 9/32 20060101ALI20241220BHJP
【FI】
H04L9/08 A
H04L9/32 200Z
(21)【出願番号】P 2023517291
(86)(22)【出願日】2021-07-15
(86)【国際出願番号】 CN2021106480
(87)【国際公開番号】W WO2022068318
(87)【国際公開日】2022-04-07
【審査請求日】2023-12-12
(32)【優先日】2020-09-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】マネヴィッチ、ヤコブ
(72)【発明者】
【氏名】イェリック、ジェイソン カール
【審査官】平井 誠
(56)【参考文献】
【文献】米国特許出願公開第2019/0342084(US,A1)
【文献】国際公開第2020/074358(WO,A1)
【文献】国際公開第2019/179277(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00-40
G09C 1/00-5/00
(57)【特許請求の範囲】
【請求項1】
ブロックチェーン・ネットワーク内の合意を確立するためのコンピュータ実装方法であって、
ブロックチェーン・ネットワーク内の組織に第1の全順序付けサービス(TOS)ゲートウェイを提供することであって、前記TOSゲートウェイが、共有メッセージ・キューに対する読み取り/書き込みアクセス権限を持ち、前記共有メッセージ・キューが、前記ブロックチェーン・ネットワーク内の他の各TOSゲートウェイがメッセージを使用できるようにする、前記提供することと、
前記第1のTOSゲートウェイで対称鍵を生成することと、
前記対称鍵を分割して複数の鍵割り当てを生成することと、
前記複数の鍵割り当てのうちの少なくとも1つを前記ブロックチェーン・ネットワーク内の第2のTOSゲートウェイに配布することと
を含む、コンピュータ実装方法。
【請求項2】
前記対称鍵が、前記ブロックチェーン・ネットワーク内の複数のTOSゲートウェイのみに知られている、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記複数の鍵割り当てのうちの少なくとも1つを永続的メモリに格納することと、
前記対称鍵を揮発性メモリのみに格納することと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記第1のTOSゲートウェイでトランザクション・ペイロードを受信することと、
前記対称鍵を使用して前記トランザクションを暗号化することと、
前記暗号化されたトランザクションを前記共有メッセージ・キューに公開することと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記トランザクションに関連付けられた1つまたは複数のブロックを形成することと、
ブロックチェーン鍵を使用して前記1つまたは複数のブロックに自律的に署名することと
をさらに含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
前記共有メッセージ・キューを管理している実体が前記トランザクション・ペイロードを読み取ることができない、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記署名された1つまたは複数のブロックを、前記ブロックチェーン・ネットワークに関連付けられたブロックチェーンに追加することをさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項8】
前記ブロックチェーン・ネットワーク内の前記第2のゲートウェイに対して前記鍵割り当てのうちの1つを要求することと、
前記鍵割り当てのうちの前記1つを使用して前記対称鍵を再構築することと
を含む、前記対称鍵を回復することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記第2のゲートウェイに対して前記鍵割り当てのうちの前記1つを要求することが、
前記第1のTOSゲートウェイで一時鍵のペアを生成することであって、前記一時鍵のペアが、一時秘密鍵および対応する一時公開鍵を含む、前記生成することと、
前記対応する一時公開鍵を前記共有キューに公開することと、
前記共有キューを介して、前記第2のTOSゲートウェイから一時対称鍵を受信することであって、前記一時対称鍵が、前記第1のTOSゲートウェイの前記対応する一時公開鍵を一部分において使用して生成される、前記受信することと、
前記共有キューを介して、前記第2のTOSゲートウェイから前記鍵割り当てのうちの前記1つを受信することであって、前記一時対称鍵を使用して前記鍵割り当てのうちの前記1つが暗号化される、前記受信することと、
前記一時対称鍵を使用して前記鍵割り当てのうちの前記1つを復号することと、
前記一時鍵のペアを忘れることと
を含む、請求項8に記載のコンピュータ実装方法。
【請求項10】
前記第1のTOSゲートウェイで、前記共有キューを介して、前記第2のTOSゲートウェイから前記対称鍵に対する要求を受信することと、それに応じて、
前記第2のTOSゲートウェイから対応する一時公開鍵を受信することと、
一時鍵のペアを生成することであって、前記一時鍵のペアが、前記第1のTOSゲートウェイの一時秘密鍵および対応する一時公開鍵を含む、前記生成することと、
一時対称鍵を生成することと、
前記第2のTOSゲートウェイからの前記対応する一時公開鍵を使用して前記一時対称鍵を暗号化することと、
前記一時対称鍵を使用して共有鍵を暗号化することと、
前記暗号化された共有鍵を前記共有キューに公開することと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項11】
前記第2のTOSゲートウェイが、前記ブロックチェーン・ネットワーク内の新しいTOSゲートウェイである、請求項9に記載のコンピュータ実装方法。
【請求項12】
前記第1のTOSゲートウェイでチャネル再構成メッセージを受信することと、
前記第1のTOSゲートウェイで一時鍵のペアを生成することであって、前記一時鍵のペアが、一時秘密鍵および対応する一時公開鍵を含む、前記生成することと、
前記対応する一時公開鍵を前記共有キューに公開することと、
前記共有キューを介して、前記第2のTOSゲートウェイから鍵分割を受信することであって、前記対応する一時公開鍵を使用して前記鍵分割が暗号化される、前記受信することと、
前記一時秘密鍵を使用して前記鍵分割を復号することと
を含む前記対称鍵を循環させることをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記チャネル再構成メッセージが、TOSゲートウェイの除去動作に応答したものである、請求項12に記載のコンピュータ実装方法。
【請求項14】
コンピュータ・プログラムであって、請求項1ないし13のいずれか1項に記載の方法をコンピュータに実行させるための、コンピュータ・プログラム。
【請求項15】
請求項14に記載のコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【請求項16】
ブロックチェーン・ネットワークの全順序付けサービスのためのコンピュータ・プログラムであって、
ブロックチェーン・ネットワーク内の複数のメンバー組織のうちの1つにそれぞれ関連付けられた複数の全順序付けサービス(TOS)ゲートウェイを備え、前記複数のTOSゲートウェイが、メモリに動作可能に接続されたプロセッサをそれぞれ備え、前記メモリが、前記プロセッサ上で実行された場合に、
前記複数のTOSゲートウェイのうちの第1のTOSゲートウェイで対称鍵を生成することと、
前記対称鍵を複数の鍵割り当てに分割することと、
前記複数の鍵割り当てのうちの少なくとも1つを前記ブロックチェーン・ネットワーク内の第2のTOSゲートウェイに配布することと
を実行するためのプログラム命令を含み、
共有メッセージ・キューが、前記対称鍵を前記ブロックチェーン・ネットワーク内の前記複数のTOSゲートウェイに再配布するように適応される、コンピュータ・プログラム。
【請求項17】
前記複数のTOSゲートウェイが、
トランザクション・ペイロードを受信するためのプログラム命令と、
前記対称鍵を使用して前記トランザクション・ペイロードを暗号化するためのプログラム命令と、
前記暗号化されたトランザクション・ペイロードを前記共有メッセージ・キューに公開するためのプログラム命令と
をさらに含み、
前記共有メッセージ・キューが、前記暗号化されたトランザクション・ペイロードを前記ブロックチェーン・ネットワーク内の前記複数のTOSゲートウェイに再配布するようにさらに適応され、前記共有メッセージ・キューが前記トランザクション・ペイロードを読み取ることができない、請求項16に記載のコンピュータ・プログラム。
【請求項18】
前記複数のTOSゲートウェイが、
前記鍵割り当てのうちの1つを永続的メモリに格納するためのプログラム命令と、
前記対称鍵を揮発性メモリのみに格納するためのプログラム命令と
をさらに含む、請求項17に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、トランザクションを完成させ、コミットすることに関し、より詳細には、非集中的な分散トランザクション処理システム内の合意を可能にすることに関する。
【背景技術】
【0002】
コンピュータ時代の始まりとして、1948年のEDVACシステムの開発が引用されることが多い。そのとき以来、コンピュータ・システムは極めて複雑なデバイスに進化した。現在のコンピュータ・システムは、通常、洗練されたハードウェア・コンポーネントおよびソフトウェア・コンポーネント、アプリケーション・プログラム、オペレーティング・システム、プロセッサ、バス、メモリ、入出力デバイスなどの組合せを含む。半導体処理およびコンピュータ・アーキテクチャにおける進歩によって性能がますます向上するにつれて、より高性能な能力を利用するために、さらにいっそう高度なコンピュータ・ソフトウェアが発達し、ほんの数年前のコンピュータ・システムよりはるかに強力な現在のコンピュータ・システムをもたらした。
【0003】
コンピューティング・システムを適用することに成功した1つの領域は、トランザクション処理である。歴史的に、集中データベースは、1つの位置にある1つの物理的システム上で実行される専用データベース・プログラムでトランザクション・データを格納し、維持する。この位置は、多くの場合、中央コンピュータであり、例えば、サーバ・コンピュータまたはメインフレーム・コンピュータである。集中データベースは、1か所の制御のため、特にセキュリティの目的で維持し、管理するのが比較的容易である。
【発明の概要】
【0004】
本開示の実施形態による、ブロックチェーン・ネットワーク内の合意を確立するためのコンピュータ実装方法。1つの実施形態は、ブロックチェーン・ネットワーク内の組織に第1の全順序付けサービス(TOS:total ordering service)ゲートウェイを提供することと、第1のTOSゲートウェイで対称鍵を生成することと、対称鍵を分割して複数の鍵割り当てを生成することと、複数の鍵割り当てのうちの少なくとも1つをブロックチェーン・ネットワーク内の第2のTOSゲートウェイに配布することとを含んでよい。TOSゲートウェイは、一部の実施形態では、共有メッセージ・キューに対する読み取り/書き込みアクセス権限を持ってよく、共有メッセージ・キューは、ブロックチェーン・ネットワーク内の他の各TOSゲートウェイがメッセージを使用できるようにする。一部の実施形態は、ブロックチェーン・ネットワーク内の第2のゲートウェイに対して鍵割り当てのうちの1つを要求することと、鍵割り当てのうちの1つを使用して対称鍵を再構築することとによって、対称鍵を回復することをさらに含んでよい。
【0005】
本開示の実施形態による、1つまたは複数のコンピュータ可読ストレージ媒体、および1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令を備える、機密の順序付けサービスのためのコンピュータ・プログラム製品。プログラム命令は、ブロックチェーン・ネットワーク内の組織ごとに全順序付けサービス・ゲートウェイを実行するためのプログラム命令であって、各全順序付けサービス・ゲートウェイが、メッセージを各組織に配布する共有メッセージ・キューに対する読み取り/書き込みアクセス権限を持つ、プログラム命令と、組織内の組織のグループを識別するためのプログラム命令と、組織のグループを含むチャネルを生成するためのプログラム命令であって、組織のグループが自律的に協力する、プログラム命令とを含んでよい。プログラム命令は、組織のグループのみに知られている対称鍵を生成するためのプログラム命令と、対称鍵を、組織のグループ内の複数の組織に関連付けられた各割り当てに分割するためのプログラム命令と、割り当てを格納する一方で、対称鍵を全体として格納しないためのプログラム命令とをさらに含んでよい。
【0006】
本開示の実施形態による、ブロックチェーン・ネットワークのための全順序付けサービス。1つの実施形態は、ブロックチェーン・ネットワーク内の複数のメンバー組織のうちの1つにそれぞれ関連付けられた複数の全順序付けサービス(TOS)ゲートウェイ、および対称鍵をブロックチェーン・ネットワーク内の複数のTOSゲートウェイに再配布するように適応された共有メッセージ・キューを含んでよい。複数のTOSゲートウェイは、メモリに動作可能に接続されたプロセッサをそれぞれ備えてよく、メモリは、プロセッサ上で実行された場合に、複数のTOSゲートウェイのうちの第1のTOSゲートウェイで対称鍵を生成することと、対称鍵を複数の鍵割り当てに分割することと、複数の鍵割り当てのうちの少なくとも1つをブロックチェーン・ネットワーク内の第2のTOSゲートウェイに配布することとを実行するためのプログラム命令を含んでよい。
【0007】
上記の概要は、本開示の各実施形態例もすべての実装も説明するよう意図されていない。
【0008】
本出願に含まれている図面は、本明細書に組み込まれ、本明細書の一部を形成する。図面は、説明と共に本開示の実施形態を示し、本開示の原理を説明するのに役立つ。図面は、特定の実施形態の単なる例であり、本開示を限定していない。
【図面の簡単な説明】
【0009】
【
図1】一部の実施形態と一致する、データ処理システムを示す図である。
【
図2】一部の実施形態と一致する、クラウド・コンピューティング環境を示す図である。
【
図3】一部の実施形態と一致する、抽象モデル・レイヤを示す図である。
【
図4】一部の実施形態と一致する、ブロックチェーン・システムの上位の図である。
【
図5A】一部の実施形態と一致する、例示的なブロックチェーン・アーキテクチャ構成を示す図である。
【
図5B】一部の実施形態と一致する、ブロックチェーン・トランザクション・フローを示す図である。
【
図6A】一部の実施形態と一致する、フロー図を示す図である。
【
図6B】一部の実施形態と一致する、さらなるフロー図を示す図である。
【
図6C】一部の実施形態と一致する、本明細書に記載された1つまたは複数の動作を実行するように構成された例示的なシステムを示す図である。
【
図6D】一部の実施形態と一致する、本明細書に記載された1つまたは複数の動作を実行するように構成された別の例示的なシステムを示す図である。
【
図6E】一部の実施形態と一致する、スマート・コントラクトを利用するように構成された、さらなる例示的なシステムを示す図である。
【
図6F】一部の実施形態と一致する、ブロックチェーンを含むシステムを示す図である。
【
図7A】一部の実施形態と一致する、チャネルを作成する1つの方法を示す図である。
【
図7B】一部の実施形態と一致する、チャネルを作成する1つの方法を示す図である。
【
図8】一部の実施形態と一致する、全順序付けサービス・ゲートウェイ(TOSゲートウェイ)による対称鍵の回復の1つの方法を示す図である。
【
図9】一部の実施形態と一致する、ブロックチェーン内のメンバーシップを拡張する1つの方法900を示すフロー・チャートの図である。
【
図10A】一部の実施形態と一致する、鍵を循環させる1つの方法を示す図である。
【
図10B】一部の実施形態と一致する、鍵を循環させる1つの方法を示す図である。
【
図11A】実施形態例に従って、分散型台帳に追加されている新しいブロックに関するプロセスを示す図である。
【
図11B】実施形態例に従って、新しいデータ・ブロックの内容を示す図である。
【
図11C】実施形態例に従って、デジタル・コンテンツのためのブロックチェーンを示す図である。
【
図11D】実施形態例に従って、ブロックチェーン内のブロックの構造を表し得るブロックを示す図である。
【
図12A】実施形態例に従って、機械学習(人工知能)データを格納する例示的なブロックチェーンを示す図である。
【
図12B】実施形態例に従って、例示的な量子セキュアなブロックチェーンを示す図である。
【発明を実施するための形態】
【0010】
本発明は、さまざまな変更および代替の形態を受け入れるが、その詳細が、図面において例として示されており、詳細に説明され得る。しかし、本発明を説明されている特定の実施形態に限定することが意図されていないということが、理解されるべきである。反対に、本発明の思想および範囲に含まれるすべての変更、均等物、および代替手段を対象にすることが意図されている。
【0011】
本開示の態様は、トランザクションを完成させ、コミットすることに関し、より詳細な態様は、非集中的な分散トランザクション処理システム内の合意を可能にすることに関する。本開示はそのような適用に必ずしも限定されないが、この文脈を使用するさまざまな実施例の説明を通じて、本開示のさまざまな態様が理解されてよい。
【0012】
非集中的データベースは、一般に、複数のノードが協力してデータを格納するか、またはデータへのアクセスを提供するか、あるいはその両方を行う、分散ストレージ・システムのことを指す。ブロックチェーンは、非集中的データベースの例であり、一般に、相互に信頼されていない/信頼できない関係者間でレコードを維持することができる分散型台帳に似ている、追加専用の変更不可能なデータ構造を含む。これらの相互に信頼されていない/信頼できない関係者は、本明細書ではピアまたはピア・ノードと呼ばれる。
【0013】
一部のブロックチェーンの実施形態では、各ピアは、分散データベース・レコードのコピーを維持し、単一のピアは、ピア間で合意に達することなく、分散データベース・レコードを変更することができない。一部のブロックチェーンの実施形態では、ピアは、ブロックチェーン・トランザクションの妥当性を確認し、それらのブロックチェーン・トランザクションをブロックにグループ化し、ブロック上にハッシュ・チェーンを構築するために、合意プロトコルを実行してよい。このプロセスは、一貫性のために、格納トランザクションを順序付けることによって分散型台帳を形成してよい。
【0014】
パブリック・ブロックチェーンまたは許可なしブロックチェーンの実施形態では、特定の許可なしで、誰でも参加することができる。これに対して、許可型ブロックチェーンの実施形態は、資金、商品、情報などを交換する企業などの、共通の目標を共有しているが、互いに完全には信用していない許可された実体のグループ内の動作間を保護することができるシステムを提供する。
【0015】
一部のブロックチェーンの実施形態は、「スマート・コントラクト」または「チェーンコード」などの、非集中的ストレージ方式に合わせた任意のプログラム可能な論理を操作してよい。これらの実施形態の一部では、システム・チェーンコードと呼ばれる、管理機能およびパラメータのための特殊なチェーンコードが存在することがある。スマート・コントラクトは、ブロックチェーンの改ざん防止の特性、およびノード間の基礎になる合意(多くの場合、署名または署名ポリシーと呼ばれる)を活用する、信頼できる分散されたアプリケーションである。
【0016】
ブロックチェーン・トランザクションは、一部の実施形態では、ブロックチェーンにコミットされる前に「署名されて」よく、一方、「署名されて」いないトランザクションは無視されてよい。一部の実施形態と一致する署名ポリシーは、チェーンコードがトランザクションの署名者を、署名に必要なピア・ノードのセットの形態で指定できるようにする。クライアントが、トランザクションを、署名ポリシーで指定されたピアに送信するときに、トランザクションの妥当性を確認するためのトランザクションが実行されてよい。妥当性確認の後に、トランザクションが順序付け段階に移行してよく、順序付け段階では、合意プロトコルが使用され、ブロックにグループ化された、署名されたトランザクションの順序付けられたシーケンスを生成する。
【0017】
一部のブロックチェーンの実施形態では、ノードが、ブロックチェーン・システムの通信実体として機能してよい。「ノード」は、これらの実施形態では、異なる種類の複数のノードが同じ物理サーバ上で実行され得るという意味で、論理機能を実行してよい。ノードは、信頼できるドメイン内でグループ化されてよく、さまざまな方法でそれらのノードを制御する論理的実体に関連付けられてよい。ノードは、トランザクション呼び出しを署名者(例えば、ピア)にサブミットするクライアントまたはサブミット・クライアント・ノード、およびトランザクション提案を順序付けサービスにブローキャストする順序付けノードなどの、さまざまな種類を含んでもよい。さらに別の種類のノードは、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードである。ピア・ノードは、一部の実施形態では、署名者の役割を持ってよいが、これは必須要件ではない。
【0018】
順序付けサービス・ノード(または「順序付けノード」)は、一部の実施形態では、トランザクションをコミットし、ブロックチェーンの世界状態を変更する場合の、システム内のピア・ノードの各々へのブロードキャストなどの、すべてのノードのための通信サービスを実行し、配信保証を実施してよい。一部の実施形態では、この世界状態は、通常は制御情報および設定情報を含む初期ブロックチェーン・トランザクションを含んでよい。
【0019】
しかし、ブロックチェーン技術の一部のユーザは、順序付けノードをホストするのを嫌がることがある。これは、エンドポイントをパブリックなインターネットに公開することが、本質的なセキュリティ上のリスクを伴い、多くのユーザが、そのリスクに対処するために必要とされる技術的専門知識、集中力、およびリソースを欠いているためであることがある。さらに、交代のないリーダーに基づく合意プロトコルは、不均一なネットワーク帯域幅分布につながる可能性がある。これはさらに、一部のユーザが、それらのユーザに関与しないトランザクションに計算、ディスクI/O、ネットワーク帯域幅を費やす結果をもたらすことがある。さらに、他のユーザは、特に、特定のブロックチェーンの実装が順序付けノードを実行することに対する報奨金を含まない場合に、規制、サービス水準合意などへの適合性について心配することがある。
【0020】
反対に、第三者(例えば、ブロックチェーンに記録されたトランザクションのうちの大きな割合に関係していない誰か)によって合意サービスがホストされるブロックチェーン・ネットワークを形成することには、課題が存在することもある。例えば、順序付けサービスが第三者によって実行される場合、順序付けサービスが基本的にブロック自体を作成するということ、および新たに参加したノードが、ブロックチェーンの状態に追いつくためにブロックを構文解析する必要があるということのために、その第三者は、ブロックチェーンの内容に対するアクセス権限を持つことがある。しかしこれは、次のような不要な副作用を伴うことがある。(i)第三者は、暗号化されていない(in the clear)(例えば、暗号化されていない(unencrypted))すべてのチャネルのすべてのトランザクションを見ることができることがあり、したがって、秘密情報または機密情報あるいはその両方に対するアクセス権限を持つことがある。(ii)ブロックチェーン・ネットワークの関係者は、新しい順序付けサービス・プロバイダに移行したい場合、第三者の順序付けサービスからの協力を必要とすることがあるが、これは簡単な作業ではないため、ベンダーの恒久的な固定のリスクを引き起こす。
【0021】
したがって、本開示の一部の実施形態は、順序付けサービス・ノードをホストできない組織のシンジケートの場合でもブロックチェーン・ネットワークの作成を可能にし得る。これらのブロックチェーン・ネットワークは、一部の実施形態では、複数の全順序付けサービス・ゲートウェイ(TSOゲートウェイ)から暗号化されたトランザクション・ペイロードを受信し、再送信し得る機密の全順序付けサービス(TSO)を含んでよい。
【0022】
データ処理システム
図1は、一部の実施形態と一致する、データ処理システム(DPS:data processing system)100aの実施形態を示している。DPS100aは、この実施形態では、パーソナル・コンピュータ、サーバ・コンピュータ、ラップトップ・コンピュータもしくはノートブック・コンピュータ、PDA(パーソナル・デジタル・アシスタント)、タブレット・コンピュータ、またはスマートフォンなどのポータブル・コンピュータ、自動車、航空機、テレビ会議システム、アプライアンスなどのより大きいデバイスに組み込まれたプロセッサ、スマート・デバイス、あるいは任意の他の適切な種類の電子デバイスとして実装されてよい。さらに、
図1に示されたコンポーネント以外のコンポーネント、または
図1に示されたコンポーネントに加えたコンポーネントが提示されてよく、そのようなコンポーネントの数、種類、および構成は変化してよい。さらに、
図1は、DPS100aの代表的な主要コンポーネントのみを示しており、個別のコンポーネントは、
図1で表された複雑さより大きい複雑さを有してよい。
【0023】
図1のデータ処理システム100aは、システム・バス122によってメモリ112、マス・ストレージ・インターフェイス114、端末/ディスプレイ・インターフェイス116、ネットワーク・インターフェイス118、および入出力(I/O:input/output)インターフェイス120に接続された、複数の中央処理装置110a~110d(本明細書では、総称的にプロセッサ110またはCPU110と呼ばれる)を備える。この実施形態では、マス・ストレージ・インターフェイス114は、システム・バス122を、直接アクセス・ストレージ・デバイス140、ユニバーサル・シリアル・バス(USB:universal serial bus)ストレージ・デバイス141、または読み取り可能/書き込み可能な光ディスク・ドライブ142などの1つまたは複数のマス・ストレージ・デバイスに接続する。ネットワーク・インターフェイス118は、通信媒体106を経由してDPS100aが他のDPS100bと通信できるようにする。メモリ112は、オペレーティング・システム124、複数のアプリケーション・プログラム126、およびプログラム・データ128も含む。
【0024】
図3のデータ処理システム100aの実施形態は、汎用コンピューティング・デバイスである。したがって、プロセッサ110は、メモリ112に格納されたプログラム命令を実行できる任意のデバイスであってよく、プロセッサ110自体は、1つまたは複数のマイクロプロセッサまたは集積回路あるいはその両方から構築されてよい。この実施形態では、DPS100aは、より大きく能力が高いコンピュータ・システムでは標準的であるように、複数のプロセッサまたはプロセッシング・コアあるいはその両方を含むが、他の実施形態では、コンピューティング・システム100aは、マルチプロセッサ・システムをエミュレートするように設計された単一のプロセッサ・システムまたは単一のプロセッサあるいはその両方を備えてよい。さらに、プロセッサ110は、単一チップ上にメイン・プロセッサが二次プロセッサと共に存在する複数の異種データ処理システム100aを使用して実装されてよい。別の例として、プロセッサ110は、同じ種類の複数のプロセッサを含む対称型マルチプロセッサ・システムであってよい。
【0025】
データ処理システム100aが起動するときに、関連するプロセッサ110が、オペレーティング・システム124を構成するプログラム命令を最初に実行し、オペレーティング・システム124は、DPS100aの物理リソースおよび論理リソースを管理する。これらのリソースは、メモリ112、マス・ストレージ・インターフェイス114、端末/ディスプレイ・インターフェイス116、ネットワーク・インターフェイス118、およびシステム・バス122を含む。プロセッサ110と同様に、一部のDPS100aの実施形態は、複数のシステム・インターフェイス114、116、118、120、およびバス122を利用してよく、これらのシステム・インターフェイスおよびバスは、それぞれ、自分自身の個別の完全にプログラムされたマイクロプロセッサを含んでよい。
【0026】
オペレーティング・システム、アプリケーション、またはプログラム、あるいはその組合せ(総称的に「プログラム・コード」、「コンピュータ使用可能プログラム・コード」、または「コンピュータ可読プログラム・コード」と呼ばれる)の命令は、最初はマス・ストレージ・デバイス140、141、142内にあってよく、これらのマス・ストレージ・デバイスは、システム・バス122を介してプロセッサ110と通信する。さまざまな実施形態におけるプログラム・コードは、システム・メモリ112またはマス・ストレージ・デバイス140、141、142などの、異なる物理的な、または有形のコンピュータ可読媒体上で具現化されてよい。
図3の例では、命令が、直接アクセス・ストレージ・デバイス140上の永続的ストレージの機能的形態で格納される。これらの命令は、その後、プロセッサ110によって実行するために、メモリ112に読み込まれる。しかし、プログラム・コードは、選択的に取り外すことができるコンピュータ可読媒体142上に機能的形態で配置されてもよく、プロセッサ110によって実行するために、DPS100aに読み込まれるか、または転送されてよい。
【0027】
システム・バス122は、プロセッサ110、メモリ112、およびインターフェイス114、116、118、120の間の通信を容易にする任意のデバイスであってよい。さらに、この実施形態でのシステム・バス122は、システム・バス122内で直接通信経路を提供する比較的単純な単一のバス構造であるが、階層的構成、星形構成、またはWeb構成でのポイントツーポイント・リンク、複数の階層的バス、冗長な並列経路などを含むが、これらに限定されない他のバス構造が、本開示と一致する。
【0028】
メモリ112およびマス・ストレージ・デバイス140、141、142は、共同して機能し、オペレーティング・システム124、アプリケーション・プログラム126、およびプログラム・データ128を格納する。この実施形態では、メモリ112は、データおよびプログラムを格納できるランダムアクセス半導体デバイスである。
図3はこのデバイスを単一のモノリシックな実体として概念的に示しているが、一部の実施形態では、メモリ112は、キャッシュおよび他のメモリ・デバイスの階層などの、より複雑な構成であってよい。例えば、メモリ112は、キャッシュの複数のレベルに存在してよく、これらのキャッシュは、あるキャッシュが命令を保持している間に、別のキャッシュが、1つまたは複数のプロセッサによって使用される、命令以外のデータを保持するように、機能別にさらに分割されてよい。メモリ112は、さまざまな、いわゆる不均等メモリ・アクセス(NUMA:non-uniform memory access)コンピュータ・アーキテクチャのいずれかにおいて知られているように、異なるプロセッサ110またはプロセッサ110のセットにさらに分散され、関連付けられてよい。さらに、一部の実施形態は、仮想アドレス指定メカニズムを利用してよく、仮想アドレス指定メカニズムは、DPS100aが、メモリ112およびマス・ストレージ・デバイス140、141、142などの複数のより小さいストレージ実体へのアクセスの代わりに、大きい単一のストレージ実体にアクセスできるかのように振る舞うことができるようにする。
【0029】
オペレーティング・システム124、アプリケーション・プログラム126、およびプログラム・データ128は、メモリ112内に含まれているように示されているが、一部の実施形態では、これらのうちの一部または全部が、異なるコンピュータ・システム上に物理的に位置してよく、例えば通信媒体106を介して、リモートでアクセスされてよい。したがって、オペレーティング・システム124、アプリケーション・プログラム126、およびプログラム・データ128は、メモリ112内に含まれているように示されているが、これらの要素は、必ずしもすべてが同じ物理デバイスに同時に、完全には含まれず、他のDPS100bの仮想メモリに存在してもよい。
【0030】
システム・インターフェイス114、116、118、120は、さまざまなストレージ・デバイスおよびI/Oデバイスとの通信をサポートする。マス・ストレージ・インターフェイス114は、1つまたは複数のマス・ストレージ・デバイス140、141、142の接続をサポートし、これらのマス・ストレージ・デバイスは、通常、回転する磁気ディスク・ドライブ・ストレージ・デバイス、データを永続的に格納するためのメモリとして集積回路アセンブリを使用する(通常はフラッシュ・メモリを使用する)ソリッドステート・ストレージ・デバイス(SSD:solid-state storage device)、またはこれら2つの組合せである。しかし、マス・ストレージ・デバイス140、141、142は、ホストには単一の大きいストレージ・デバイスのように見えるように構成されたディスク・ドライブのアレイ(一般に、RAIDアレイと呼ばれる)、またはハード・ディスク・ドライブ、テープ(例えば、ミニDV)、書き込み可能コンパクト・ディスク(例えば、CD-RおよびCD-RW)、デジタル・バーサタイル・ディスク(例えば、DVD、DVD-R、DVD+R、DVD+RW、DVD-RAM)、ホログラフィ・ストレージ・システム、青色レーザー・ディスク、IBM(R) Millipedeデバイスなどのアーカイブ・ストレージ媒体、あるいはその両方を含む、他のデバイスを備えてもよい。
【0031】
端末/ディスプレイ・インターフェイス116は、モニタ180などの1つまたは複数のディスプレイ・ユニットをデータ処理システム100aに直接接続するために使用される。これらのディスプレイ・ユニット180は、LEDモニタなどのインテリジェントでない(すなわち、データ処理能力のない)端末であってよく、またはIT管理者および顧客がDPS100aと通信できるようにするために使用される、それ自体が完全にプログラム可能なワークステーションであってよい。ただし、1つまたは複数のディスプレイ・ユニット180との通信をサポートするために、ディスプレイ・インターフェイス116が提供されているが、顧客との必要なすべての対話および他のプロセスがネットワーク・インターフェイス118を介して発生してよいため、コンピュータ・システム100aが必ずしもディスプレイ・ユニット180を必要としないということに注意する。
【0032】
通信媒体106は、任意の適切なネットワークまたはネットワークの組合せであってよく、複数のDPS100a、100bとの間でのデータまたはコードあるいはその両方の通信に適した任意の適切なプロトコルをサポートしてよい。したがって、ネットワーク接続が、現在のアナログ技術もしくはデジタル技術またはその両方を使用して行われるのか、あるいは将来の何らかのネットワーク・メカニズムを介して行われるのかに関わらず、ネットワーク・インターフェイス118は、そのような通信を容易にする任意のデバイスであることができる。適切な通信媒体106は、「インフィニバンド」またはIEEE(Institute of Electrical and Electronics Engineers:電気電子技術者協会)802.3x「イーサネット(R)」仕様のうちの1つまたは複数を使用して実装されたネットワーク、セルラー伝送ネットワーク(cellular transmission networks)、IEEE 802.11x、IEEE 802.16、ジェネラル・パケット・ラジオ・サービス(GPRS:General Packet Radio Service)、FRS(Family Radio Service)、またはBluetooth(R)仕様のうちの1つを使用して実装された無線ネットワーク、FCC 02-48に記載されているような超広帯域(UWB:Ultra-Wide Band)技術などを含むが、これらに限定されない。当業者は、通信媒体106を実装するために、多くの異なるネットワークおよびトランスポート・プロトコルが使用され得るということを理解するであろう。一連の伝送制御プロトコル/インターネット・プロトコル(TCP/IP:Transmission Control Protocol/Internet Protocol)は、適切なネットワークおよびトランスポート・プロトコルを含む。
【0033】
クラウド・コンピューティング
図2は、一部の実施形態と一致する、1つまたは複数のDPS100aを含むクラウド環境を示している。本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないということが理解されるべきである。むしろ、本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0034】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0035】
特徴は、次のとおりである。
・オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
・幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
・リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
・迅速な順応性:クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、無制限に見え、任意の量をいつでも購入できる。
・測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブな顧客のアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることができ、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0036】
サービス・モデルは、次のとおりである。
・SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的な顧客固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
・PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
・IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0037】
デプロイメント・モデルは、次のとおりである。
・プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
・コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
・パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
・ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0038】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0039】
ここで
図2を参照すると、例示的なクラウド・コンピューティング環境SOが示されている。図示されているように、クラウド・コンピューティング環境SOは、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話S4A、デスクトップ・コンピュータS4B、ラップトップ・コンピュータS4C、または自動車コンピュータ・システムS4N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図に示されたコンピューティング・デバイスS4A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0040】
ここで
図3を参照すると、クラウド・コンピューティング環境50(
図2)によって提供される機能的抽象レイヤのセットが示されている。
図2に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0041】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0042】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0043】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。顧客ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0044】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、ならびに順序付けサービス96が挙げられる。
【0045】
ブロックチェーン・システム
図4は、一部の実施形態と一致する、ブロックチェーン・システム400の上位の図である。
図4の実施形態では、ブロックチェーンを使用するシンジケートの(例示的な目的A、B、およびCのための)各メンバー組織は、全順序付けサービス・ゲートウェイ(TOSゲートウェイ)GA、Gii、Geなどを実行してよく、これらの全順序付けサービス・ゲートウェイは、シンジケートのメンバー組織A、B、C内のクラスタまたはクラウド・サービスとしてデプロイされてよい。TOSゲートウェイGA、Gii、Geなどは、それぞれ、第三者のサービス・プロバイダによって維持され得る、全順序付けサービスTSOに対する読み取り/書き込みアクセス権限を持ってよい。
【0046】
全順序付けサービスTOSは、一部の実施形態では、共有メッセージ・キュー450を維持してよく、共有メッセージ・キュー450は、メッセージをブロックチェーン・シンジケート(blockchain syndicate)のすべての参加者に公開するために使用され得る。組織A、Bなどのサブセットに広がるチャネルの場合、TOSゲートウェイGA、Giiなどは、自律的に協力して、組織A、Bなどのサブセットのみに知られている対称鍵Kを作成し、次に、共有鍵(すなわち、記号的に(KA、KBなど)+-Split(K))を分割し、対称鍵の一部および鍵割り当てを他のTOSゲートウェイに配布し、その後、(対称鍵K自体ではなく)鍵割り当てKA、KBなどのみを不揮発性メモリ内で保持してよい。これに対して、共有対称鍵Kは、一部の実施形態および実装では、揮発性メモリ(例えば、RAM)内でのみ維持されてよい。
【0047】
次に、TOSゲートウェイGA、Gii、Geは、シンジケート・メンバー組織A、B、C内の内部クライアントCA、CB、Ccからトランザクションを受信し、共有対称鍵Kを使用してそれらのトランザクションを暗号化し、暗号化されたトランザクションの全順序を確立し、全順序付けされたトランザクションを復号してブロックを形成し、各長期プライベート・ブロックチェーン鍵(long term private blockchain key)を自律的に使用してブロックに署名し、組織A、B、C内でブロックをブロードキャストしてよい。TOSゲートウェイGA、Gii、Geは、一部の実施形態では、互いのパブリック証明書を認識し、それらのパブリック証明書を署名検証に使用してよい(一部の実施形態では、すべてのプロトコル・メッセージが署名されてよい)。さらに、
図7~10を参照してさらに詳細に説明されるように、一部の実施形態または実装あるいはその両方では、TOSゲートウェイGA、Gii、Geは、メンバーシップの再構成などの場合に、これらの鍵を自律的に循環させてもよい。
【0048】
図4の実施形態における全順序付けサービスTOSは、内部クライアントCA、CB、Ccによって生成された暗号化されていないトランザクション情報に対するアクセス権限を必要とせず、通常はそのようなアクセス権限を持っていない。すなわち、本開示の一部の実施形態は、全順序付けサービスTOSが、第三者によって実行されている間でも、処理しているデータに関するどのような情報も学習できないため、シンジケートおよびシンジケート組織A、B、Cの機密性を保護し得る。このようにして、全順序付けサービスTOSを提供する組織は、信頼できるシンジケート・メンバーである必要がなく、代わりに、クラウド・コンピューティング・サービスのプロバイダなどの、無関係の第三者であってよい。したがって、本開示の一部の実施形態は、(i)全順序付けサービスが第三者によって実行されることを可能にし、(ii)機密であろうとなかろうと、どのようなトランザクション情報もその第三者に開示しない、委任された全順序付けサービスを含むブロックチェーンを含んでよい。
【0049】
全順序付けサービスTOSを実行している第三者は、一部の実施形態では、永続的な全順序メッセージング・サービスとして使用されてもよい。有利なことに、これによって、メッセージを送信し、同じ順序でメッセージを受信する能力のみを提供する制限されたTOSゲートウェイGA、Gs、Geを可能にすることができ、それらのメッセージは削除されない。
【0050】
一部の実施形態の別の特徴および利点は、ブロックチェーンの動作が完全に自律的であることができるため、相対的に低い一般管理費を必要とし得るということである。これはさらに、シンジケート・メンバーA、B、Cなどにとって相対的に円滑なブロックチェーン体験を可能にし得る。
【0051】
全順序付けサービスTOSは、一部の実施形態では、通常は処理が共有メッセージ・キュー450に対するトランザクションのアップロードおよびトランザクションのダウンロードを含むため、ブロックチェーン・シンジケートのメンバー間のリソース割り当てにおける公平性をさらに実現し得る。しかし、ダウンロードが単にアップロードの集約であるため、各組織A、B、Cからの内部クライアントCA、Cs、Ccは、単に全順序付けサービスTOSへのトランザクションのアップロードの代金を支払うことができ、この支払いは、すべての組織A、B、Cによるダウンロードを暗黙的に考慮する。
【0052】
さらに、一部の実施形態は、(i)人的要素が方程式から除去される自律的動作、(ii)全順序付けサービスTOSとローカルTOSゲートウェイのファイル・システムに対するアクセス権限を持っている不正な管理者との間の共謀に対する耐性、(iii)標準的な鍵確立プロトコルに加えて、量子耐性がある方式を使用するように変更されることが可能であり、したがって、量子コンピュータが存在する場合の将来のセキュリティを実現する、鍵確立プロトコル、ならびに(iv)異なるチャネル用の異なる鍵、およびしたがって、それらの鍵を適切に保護するために、他のすべての組織に対する完全な信頼を必要としないということ、というセキュリティの特徴のうちの1つまたは複数を含んでもよい。
【0053】
分散型台帳
一部の実施形態では、分散型台帳は、ブロックチェーンのすべての状態遷移の順序付けられた改ざん防止機能付きレコードであってよい。状態遷移は、参加している関係者(例えば、クライアント・ノード、順序付けノード、署名者ノード、ピア・ノードなど)によってサブミットされたチェーンコード呼び出し(すなわち、トランザクション)から生じてよい。次に、トランザクションは、作成、更新、削除などの、アセットのキーと値のペア(key-value pairs)のセットが1つまたは複数のオペランドとして分散型台帳にコミットされることをもたらしてよい。分散型台帳は、変更不可能な順序付けられたレコードをブロックに格納するために使用されるブロックチェーン(チェーンとも呼ばれる)を含んでよい。分散型台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含んでもよい。一部の実施形態は、チャネルごとに1つの分散型台帳を使用するが、他の実施形態も可能である。各ピア・ノードは、これらの実施形態では、それらのピア・ノードがメンバーになっているチャネルごとに、分散型台帳のコピーを維持する。
【0054】
チェーンは、一部の実施形態では、ハッシュ・リンク・ブロックとして構造化され得るトランザクション・ログを含んでよく、各ブロックはN個のトランザクションのシーケンスを含み、Nは1以上である。ブロック・ヘッダーは、ブロックのトランザクションのハッシュ、および前のブロックのヘッダーのハッシュを含んでよい。このようにして、台帳のすべてのトランザクションが順序付けられ、暗号によって互いにリンクされてよい。したがって、これらの実施形態では、ハッシュ・リンクを壊さずに台帳データを改ざんすることは合理的に可能ではない。直前に追加されたブロックチェーンのブロックのハッシュは、それ以前に発生したチェーン上のすべてのトランザクションを表し、すべてのピア・ノードが一貫性のある信頼できる状態にあることを保証できるようにする。チェーンは、ブロックチェーンのワークロードの追加専用という性質を効率的にサポートするピア・ノードのファイル・システム(すなわち、ローカル、取り付けられたストレージ、クラウドなど)に格納されてよい。
【0055】
変更不可能な台帳の現在の状態は、一部の実施形態では、チェーンのトランザクション・ログに含まれているすべてのキーの最新の値を表してよい。現在の状態は、チャネルに知られている最新のキーの値を表すため、世界状態と呼ばれることもある。チェーンコード呼び出しは、台帳の現在の状態のデータに対してトランザクションを実行する。それらのチェーンコードの相互作用を効率的にするために、最新のキーの値が状態データベースに格納されてよい。状態データベースは、一部の実施形態では、単にチェーンのトランザクション・ログへのインデックス付きビューであってよく、したがって、いつでもチェーンから再生成され得る。状態データベースは、ピア・ノードの起動時に、トランザクションが受け取られる前に、自動的に回復されてよい(または必要な場合に生成されてよい)。
【0056】
ブロックチェーン・アーキテクチャ
図5Aは、一部の実施形態と一致する、ブロックチェーン・アーキテクチャの構成500を示している。これらの実施形態では、ブロックチェーン・アーキテクチャ500は、特定のブロックチェーン要素(例えば、ブロックチェーン・ノード502のグループ)を含んでよい。次に、ブロックチェーン・ノード502のグループは、1つまたは複数のメンバー・ノード504~510を含んでよい(単に例として、これらの4つのノードが示されている)。これらのメンバー・ノード504~510は、ブロックチェーン・トランザクションの追加および妥当性確認プロセス(合意)などの、複数の活動に参加してよい。メンバー・ノード504~510のうちの1つまたは複数は、署名ポリシーに基づいてトランザクションに署名してよく、アーキテクチャ500内のすべてのブロックチェーン・ノードに順序付けサービスを提供してよい。メンバー・ノード504~510は、ブロックチェーン認証を開始し、ブロックチェーン層516に格納されたブロックチェーンの変更不可能な台帳に書き込もうとしてよく、この台帳のコピーが、基盤になる物理的インフラストラクチャ514にも格納されてよい。
【0057】
一部の実施形態では、ブロックチェーン・アーキテクチャ500は、格納されたプログラム/アプリケーション・コード520(例えば、チェーンコード、スマート・コントラクトなど)にアクセスして実行するために、アプリケーション・プログラミング・インターフェイス(API)522にリンクされた1つまたは複数のアプリケーション524を含んでよい。次に、参加者によって要求されてカスタマイズされた構成に従って、格納されたプログラム/アプリケーション・コード520が作成されることができ、それ自身の状態を維持し、参加者のアセットを制御し、外部の情報を受信することができる。格納されたプログラム/アプリケーション・コード520は、トランザクションとしてデプロイされ、分散型台帳に追加することによって、すべてのブロックチェーン・ノード504~510にインストールされることができる。
【0058】
ブロックチェーン・ベースまたはプラットフォーム512は、ブロックチェーン・データのさまざまな層と、サービス(例えば、暗号信用サービス、仮想実行環境など)と、新しいトランザクションを受信して格納し、データ・エントリにアクセスしようとしている監査人にアクセスを提供するために使用されてよい、基盤になる物理的コンピュータ・インフラストラクチャとを含んでよい。ブロックチェーン層516は、プログラム・コードを処理し、物理的インフラストラクチャ514を参加させるために必要な仮想実行環境へのアクセスを提供するインターフェイスを公開してよい。暗号信用サービス518は、アセット交換トランザクションなどのトランザクションを検証し、情報をプライベートに保つために使用されてよい。
【0059】
図5Aのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム512によって公開された1つまたは複数のインターフェイスおよび提供されたサービスを介して、プログラム/アプリケーション・コード520を処理および実行してよい。プログラム/アプリケーション・コード520は、ブロックチェーンのアセットを制御してよい。例えば、コード520は、データを格納および転送することができ、スマート・コントラクトおよび条件を含む関連するチェーンコードまたは実行の対象になるその他のコード要素の形態で、メンバー・ノード504~510によって実行されてよい。非限定的な例として、リマインダ、更新、または変更、更新の対象になるその他の通知、あるいはその組合せなどを実行するために、スマート・コントラクトが作成されてよい。スマート・コントラクト自体は、許可およびアクセスの要件ならびに台帳の使用に関連付けられたルールを識別するために使用されることができる。例えば、文書属性情報526は、ブロックチェーン層516に含まれている1つまたは複数の処理実体(例えば、仮想マシン)によって処理されてよい。結果528は、複数のリンクされた共有文書を含んでよい。物理的インフラストラクチャ514は、本明細書に記載されたデータまたは情報のいずれかを取り出すために利用されてよい。
【0060】
一部の実施形態では、高水準のアプリケーションおよびプログラミング言語を使用して、スマート・コントラクトが作成され、その後、ブロックチェーン内のブロックに書き込まれてよい。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散ネットワーク)への登録、格納、または複製、あるいはその組合せが実行される実行可能コードを含んでよい。トランザクションは、スマート・コントラクトが満たされていることに関連付けられた条件に応答して実行されることができる、スマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼できる変更をトリガーしてよい。スマート・コントラクトの実行によって引き起こされるブロックチェーン台帳に対する変更は、一部の実施形態では、1つまたは複数の合意プロトコルを介して、ブロックチェーン・ピアの分散ネットワーク全体に自動的に複製されてよい。
【0061】
スマート・コントラクトは、データをキーと値のペアの形式でブロックチェーンに書き込んでよい。一部の実施形態では、スマート・コントラクト・コードは、ブロックチェーンに格納された値を読み取り、それらをアプリケーションの動作において使用することもできる。これらの実施形態では、スマート・コントラクト・コードは、さまざまな論理演算の出力をブロックチェーンに書き込むことができる。一部の実施形態では、スマート・コントラクト・コードは、仮想マシンまたはその他のコンピューティング・プラットフォーム内の一時的データ構造を作成するために使用されてよい。これらの実施形態では、ブロックチェーンに書き込まれたデータは、パブリックであってよく、またはプライベートとして暗号化されて維持されてよい。スマート・コントラクトによって使用/生成される一時的データは、提供された実行環境によってメモリ内に保持されてよく、その後、ブロックチェーンに必要なデータが識別された後に、削除されてよい。
【0062】
一部の実施形態では、チェーンコードは、追加機能と共に、スマート・コントラクトのコード解釈を含んでよい。一部の実施形態では、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードとして実装されてよく、合意プロセス中に、チェーン・バリデータによって一緒に実行されて妥当性を確認される。チェーンコードは、ハッシュを受信してよく、以前に格納された特徴抽出機能の使用によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取り出してよい。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュが一致する場合、チェーンコードは、許可キーを、要求されたサービスに送信してよい。チェーンコードは、暗号の詳細に関連付けられたデータをブロックチェーンに書き込んでよい。
【0063】
図5Bは、一部の実施形態に従って、ブロックチェーンのノード間のブロックチェーン・トランザクション・フロー550の例を示している。これらの実施形態のトランザクション・フローは、アプリケーション・クライアント・ノード560によって署名ピア・ノード581に送信されるトランザクション提案591を含んでよい。署名ピア581は、クライアントの署名を検証し、チェーンコード関数を実行してトランザクションを開始してよい。出力は、チェーンコードの結果、チェーンコードに読み取られたキー/値のバージョンのセット(読み取りセット)、およびチェーンコードに書き込まれたキー/値のセット(書き込みセット)を含んでよい。次に、提案応答592が、承認されている場合は署名と共に、クライアント560に返送されてよい。
【0064】
それに応じて、クライアント560は、署名をトランザクションのペイロード593にまとめてよく、順序付けサービス・ノード584にブロードキャストする。その後、順序付けサービス・ノード584は、順序付けられたトランザクションをチャネル上でブロックとしてすべてのピア581~583に配信してよい。ブロックチェーンへのコミットの前に、各ピア581~583がトランザクションの妥当性を確認してよい。例えばピアは、一部の実施形態では、指定されたピアの正しい割り当てが結果に署名し、トランザクションのペイロード593に対する署名を認証したことを確認するために、署名ポリシーをチェックしてよい。
【0065】
引き続き
図5Bを参照すると、一部の実施形態では、クライアント・ノード560が、要求を構築し、署名者の役割を果たし得るピア・ノード581に送信することによって、トランザクション591を開始してよい。クライアント560は、サポートされているソフトウェア開発キット(SDK:software development kit)を利用するアプリケーションを含んでよく、このアプリケーションは、使用可能なAPIを利用してトランザクション提案を生成してよい。さらに、トランザクション提案は、データが分散型台帳から読み取られること、または分散型台帳に書き込まれること(すなわち、アセットの新しいキーと値のペアを書き込むこと)、あるいはその両方を実行できるように、チェーンコード関数を呼び出すことの要求であってよい。SDKは、トランザクション提案を、適切に設計された形式(例えば、遠隔手続き呼び出し(RPC:remote procedure call)を経由するプロトコル・バッファ)にパッケージ化するためのシムとして機能し、クライアントの暗号認証情報を受け取って、トランザクション提案の一意の署名を生成してよい。
【0066】
それに応じて、署名ピア・ノード581は、(a)トランザクション提案が適切に形成されていること、(b)トランザクションが過去にすでにサブミットされていないこと(リプレイアタック保護)、(c)署名が有効であること、および(d)サブミッター(この実施形態例では、クライアント560)が、そのチャネルに対する提案された操作を実行することを適切に許可されていることを検証してよい。署名ピア・ノード581は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として受け取ってよい。その後、チェーンコードが、現在の状態データベースに対して実行され、応答値、読み取りセット、および書き込みセットを含むトランザクション結果を生成してよい。一部の実施形態では、この時点では、台帳に対する更新は行われない。代わりに、値のセットが、署名ピア・ノード581の署名と共に、提案応答592としてクライアント560のSDKに返されてよく、このSDKが、アプリケーションが使用するためのペイロードを構文解析する。
【0067】
それに応じて、クライアント560のアプリケーションが、署名ピアの署名を検査/検証してよく、提案応答を比較して、提案応答が同じであるかどうかを判定してよい。チェーンコードが単に台帳に問い合わせた場合、アプリケーションは問い合わせ応答を検査してよく、通常は、トランザクションを順序付けサービス584にサブミットしない。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けサービス584にサブミットしようとしている場合、アプリケーションは、サブミットする前に、指定された署名ポリシーが満たされているかどうか(すなわち、トランザクションに必要なすべてのピア・ノードがトランザクションに署名したかどうか)を判定してよい。ここで、クライアントは、トランザクションの複数の関係者のうちの1つのみを含んでよい。この場合、各クライアントは、それ自身の署名ノードを含んでよく、各署名ノードがトランザクションに署名する必要がある。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、またはその他の方法で署名されていないトランザクションを転送する場合でも、署名ポリシーが、ピアによってまだ実施され、コミット妥当性確認フェーズで維持されるようにする。
【0068】
検査に成功した後に、動作594で、クライアント560が、署名をトランザクションにまとめてよく、順序付けサービス584へのトランザクション・メッセージ内でトランザクション提案およびトランザクション応答をブロードキャストしてよい。トランザクションは、読み取り/書き込みセット、署名ピアの署名、およびチャネルIDを含んでよい。順序付けサービス584は、その動作を実行するために、トランザクションの内容全体を検査する必要はなく、代わりに順序付けサービス584は、単に、トランザクションをネットワーク内のすべてのチャネルから受信して、チャネル別に経時的に順序付けし、チャネルごとにトランザクションのブロックを作成してよい。
【0069】
トランザクションのブロックは、順序付けサービス584からチャネル上のすべてのピア・ノード581~583に配信されてよい。いずれかの署名ポリシーが満たされていることを保証するため、および読み取りセットがトランザクションの実行によって生成されて以来、読み取りセットの変数に関して台帳の状態に対する変更がないことを保証するために、ブロック内のトランザクションの妥当性が確認されてよい。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされてよい。さらに、動作595で、各ピア・ノード581~583は、ブロックをチャネルのチェーンに追加してよく、有効なトランザクションごとに、書き込みセットが現在の状態データベースにコミットされる。トランザクション(呼び出し)が変更不可能なようにチェーンに追加されたことをクライアント・アプリケーションに通知するため、およびトランザクションの妥当性が確認されたか、または無効にされたかを通知するために、イベントが発行されてよい。
【0070】
許可型ブロックチェーン
図6Aは、一部の実施形態と一致する許可型ブロックチェーン・ネットワークの例を示しており、許可型ブロックチェーン・ネットワークは、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ602は、許可型ブロックチェーン604に対するトランザクションを開始してよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであってよく、SDKを利用するクライアント側のアプリケーションを介して、APIを介して直接的に、などによって、発行されてよい。ネットワークは、監査人などのレギュレータ606へのアクセスを提供してよい。ブロックチェーン・ネットワーク・オペレータ608は、レギュレータ606を「監査人」として登録し、ブロックチェーン・ユーザ602を「クライアント」として登録するなど、メンバーの許可を管理する。監査人は、台帳への問い合わせのみに制限されてよく、一方、クライアントは、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うことを許可されてよい。
【0071】
ブロックチェーン開発者610は、一部の実施形態では、チェーンコードおよびクライアント側のアプリケーションを書き込むことができる。ブロックチェーン開発者610は、これらの実施形態では、インターフェイスを介して、チェーンコードをネットワークに直接デプロイしてよい。従来のデータ・ソース612からの認証情報をチェーンコードに含めるために、開発者610は、帯域外接続を使用してデータにアクセスしてよい。この例では、ブロックチェーン・ユーザ602は、ピア・ノード614を介して許可型ブロックチェーン604に接続してよい。ピア・ノード614は、いずれかのトランザクションを開始する前に、ユーザの登録およびトランザクションの証明書を、ユーザの役割および許可を管理する認証機関616から取得してよい。一部の実施形態では、ブロックチェーン・ユーザは、許可型ブロックチェーン604上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。他の実施形態では、ブロックチェーン・ユーザは、分散された信用のチェーンによることなどの、その他の技術を使用して認証されてよい。一方、チェーンコードを利用しようとしているユーザは、従来のデータ・ソース612上のそれらのユーザの認証情報を検証することが必要になることがある。ユーザの許可を確認するために、チェーンコードは、従来の処理プラットフォーム618を介して、このデータへの帯域外接続を使用してよい。
【0072】
図6Bは、一部の実施形態と一致する許可型ブロックチェーン・ネットワークの別の例を示しており、許可型ブロックチェーン・ネットワークは、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ622は、トランザクションを許可型ブロックチェーン624にサブミットしてよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、SDKを利用するクライアント側のアプリケーションを介して、APIを介して直接的に、などによって、発行されてよい。ネットワークは、監査人などのレギュレータ626へのアクセスを提供してよい。ブロックチェーン・ネットワーク・オペレータ628は、レギュレータ626を「監査人」として登録し、ブロックチェーン・ユーザ622を「クライアント」として登録するなど、メンバーの許可を管理する。監査人は、台帳への問い合わせのみに制限されることができ、一方、クライアントは、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うことを許可されることができる。
【0073】
ブロックチェーン開発者631は、これらの実施形態では、チェーンコードおよびクライアント側のアプリケーションを書き込んでよい。ブロックチェーン開発者631は、インターフェイスを介して、チェーンコードをネットワークに直接デプロイしてよい。従来のデータ・ソース632からの認証情報をチェーンコードに含めるために、開発者631は、帯域外接続を使用してデータにアクセスしてよい。この例では、ブロックチェーン・ユーザ622は、ピア・ノード634を介してネットワークに接続する。ピア・ノード634は、いずれかのトランザクションを開始する前に、ユーザの登録およびトランザクションの証明書を認証機関636から取得する。一部の実施形態では、ブロックチェーン・ユーザは、許可型ブロックチェーン624上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。他の実施形態では、ブロックチェーン・ユーザは、分散された信用のチェーンによることなどの、その他の技術を使用して認証されてよい。一方、チェーンコードを利用しようとしているユーザは、従来のデータ・ソース632上のそれらのユーザの認証情報を検証することが必要になることがある。ユーザの許可を確認するために、チェーンコードは、従来の処理プラットフォーム638を介して、このデータへの帯域外接続を使用することができる。
【0074】
図6Cは、一部の実施形態と一致する、さまざまな動作を実行するように構成された物理的インフラストラクチャ611を含む例示的なシステムを示している。
図6Cを参照すると、物理的インフラストラクチャ611は、モジュール688およびモジュール689を含む。モジュール619は、実施形態例のいずれかに含まれる(モジュール688内の)動作ステップ678のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含む。ステップ/動作678は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。物理的インフラストラクチャ611、モジュール688、およびモジュール689は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組合せを含んでよい。さらに、モジュール688およびモジュール689は同じモジュールであってよい。
【0075】
図6Dは、一部の実施形態と一致する、さまざまな動作を実行するように構成された別の例示的なシステムを示している。
図6Dを参照すると、システムはモジュール692および694を含む。モジュール694は、実施形態例のいずれかに含まれる(モジュール692内の)動作ステップ678のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含む。ステップ/動作678は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。物理的モジュール692およびモジュール694は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組合せを含んでよい。さらに、モジュール692およびモジュール694は同じモジュールであってよい。
【0076】
図6Eは、一部の実施形態と一致する、契約当事者間でのスマート・コントラクトの構成、およびブロックチェーン620に対してスマート・コントラクトの条件を実施するように構成された仲介サーバを利用するように構成された例示的なシステムを示している。
図6Eを参照すると、この構成は、通信セッション、アセット転送セッション、あるいはプロセスまたは手順を表してよく、これらは、1つまたは複数のユーザ・デバイス652または656あるいはその両方を明示的に識別するスマート・コントラクト630によって動作させられる。スマート・コントラクトの実行、動作、および実行結果は、サーバ654によって管理されてよい。スマート・コントラクト630の内容は、スマート・コントラクト・トランザクションの関係者である実体652および656のうちの1つまたは複数によるデジタル署名を要求してよい。スマート・コントラクトの実行結果は、ブロックチェーン・トランザクションとしてブロックチェーン620に書き込まれてよい。スマート・コントラクト630は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組合せに存在してよい、ブロックチェーン620に存在する。
【0077】
図6Fは、一部の実施形態と一致する、ブロックチェーンを含むシステム660を示している。
図6Dの例を参照すると、アプリケーション・プログラミング・インターフェイス(API)ゲートウェイ662が、ブロックチェーンの論理(例えば、スマート・コントラクト630またはその他のチェーンコード)およびデータ(例えば、分散型台帳など)にアクセスするための共通インターフェイスを提供する。この例では、APIゲートウェイ662は、1つまたは複数の実体652および656をブロックチェーン・ピア(すなわち、サーバ654)に接続することによってブロックチェーンに対してトランザクション(呼び出し、問い合わせなど)を実行するための共通インターフェイスである。ここで、サーバ654は、世界状態および分散型台帳のコピーを保持するブロックチェーン・ネットワークのピア・コンポーネントであり、これらのコピーは、クライアント652および656が世界状態に関するデータを問い合わせること、およびトランザクションをブロックチェーン・ネットワークにサブミットすることを可能にし、スマート・コントラクト630および署名ポリシーに応じて、署名ピアがスマート・コントラクト630を実行する。
【0078】
チャネルの作成
図7Aおよび7B(集合的に
図7)は、一部の実施形態と一致する、ブロックチェーン・ネットワーク内のチャネルを作成する1つの方法700を示している。動作710で、ブロックチェーン管理者が、チャネル作成トランザクション・メッセージ(tx)をTOSゲートウェイGAに送信する。動作720で、TOSゲートウェイGAが、チャネル初期化メッセージ(「CHAN INIT BEGIN」)を共有メッセージ・キュー450に公開することによって応答してよい。動作730で、組織BおよびCにそれぞれ関連付けられたTOSゲートウェイGa、Geが、全順序付けサービスTOSからメッセージを受信してよい。それに応じて、各受信側TOSゲートウェイGii、Geが、動作732で、ランダムな一時秘密鍵および対応する公開鍵PB、Pcのペアを生成してよく、次に、動作734で、公開鍵Pa、Pcを共有メッセージ・キュー450に公開してよい。
【0079】
次に、組織AのTOSゲートウェイGAが、動作740で、ランダムな対称鍵Kを生成してよく、動作742で、生成された鍵Kを「t」個の割り当て(この例では、ブロックチェーン内のTOSゲートウェイGA、Gs、Geなどごとに1つの3つの割り当て)に分割してよい。次に、TOSゲートウェイGAは、鍵割り当てを他のTOSゲートウェイに配布してよい。これは、動作744で、他のゲートウェイの分割された鍵
Ps(Ks)、Pc(Kc)など
を暗号化すること、および動作746で、結果として得られた暗号文を公開することを含んでよい。他の各TOSゲートウェイGe、Geなどは、動作750で、その鍵割り当て(Ks、Kcなど)を復号してよく、動作752で、復号された鍵割り当てを、対称鍵H(K)の一部と共にローカルな永続的ストレージに格納してよい。代替として、下でさらに詳細に説明されるように、各TOSゲートウェイGA、Gs、Geは、対称鍵からそれ自身の鍵割り当てを生成してよい。
【0080】
動作760で、他の各TOSゲートウェイGs、Geが、CHAN INIT ENDメッセージを公開してよく、その後、それらのTOSゲートウェイの一時秘密鍵を忘れてよい(すなわち、削除してよい)。TOSゲートウェイGA、Gs、Geは、動作762で、鍵分割KA、Ke、Kcを自分自身の永続的ストレージに格納してよく、動作764で、K(tx)を公開してよい。このようにして、公開されたトランザクション(tx)は、チャネル・トランザクションの作成であってよい。上記の動作は、トランザクションを暗号化する暗号鍵を確立してよい。鍵が、チャネル内の関係者が誰であるかなどの機密情報を含むことがあるため、この鍵は、一部の実施形態では、TOSが鍵の内容を見るのを防ぐために暗号化されてよい。
【0081】
対称鍵の導出
一部の実施形態では、暗号鍵は、次のように、複数のメッセージごとに確定的に鍵を変更する鍵導出アルゴリズムでシードとして使用されてよい。
{SHA256(K||X||i)}XE{”0A”’,00B00,”C00
)
ここで、「i」は、事前に定義された数のメッセージ(例えば、232個のメッセージ、296個のメッセージ)の後、毎週、毎月、3か月ごとなどに定期的にインクリメントされ得るカウンタである。次に、使用される分野に従って一様にランダムに、割り当てが配布されてよい。このシステムを使用する1つの利点は、さまざまなTOSゲートウェイGA、Gsなどが、同じカウンタ値を使用しなくてよく、カウンタをシードにする方法について調整する必要がなくてよいということである。別の利点は、このシステムが、ブロックチェーン・メンバー間で鍵割り当ての順序を自動的に循環させ得るということである(例えば、TOSゲートウェイChiは、第1のカウンタ期間の間に第1の鍵割り当てを有してよく、第2のカウンタ期間の間に第5の鍵割り当てを有してよい、などである)。
【0082】
対称鍵の回復
一部の実施形態では、チャネルの対称鍵Kは、不揮発性ストレージ(例えば、ディスク)に書き込まれず、代わりに、揮発性ストレージ(例えば、ランダム・アクセス・メモリ)のみに保存される。
図8は、一部の実施形態と一致する、TOSゲートウェイGAによる対称鍵の回復の1つの方法800を示している。全順序付けサービスから取得されたメッセージを復号するか、または暗号化するために、TOSゲートウェイGAは、リモートのTOSゲートウェイGn、Geなどから十分な鍵割り当てを取得することによって秘密を再構築するか、または単に、すでに秘密を再構築した別のTOSゲートウェイGn、Geなどから秘密を取得してよい。TOSゲートウェイは、一部の実施形態では、十分な情報を欠いているため、他のゲートウェイの割り当てを知らずに、それ自身の割り当てを計算することができない。
【0083】
別のTOSゲートウェイから対称鍵を取得するために、動作810で、TOSゲートウェイGAが、ラウンドロビン方式で、最初にTOSゲートウェイGn、Geなどに接触し、対称鍵を要求してよい。他のTOSゲートウェイGn、Geなどが対称鍵を持っていない場合、TOSゲートウェイGAが、「t-1」個のTOSゲートウェイGn、Geなどの鍵割り当てKa、Kcなどを使用して、対称鍵の再構築を開始し、ここで「t」は、ネットワークのセキュリティの必要性に基づいて、ブロックチェーン・ネットワークの管理者によって選択されてよい。
【0084】
しかし、TOSゲートウェイは、一部の実施形態では、どのピアツーピアIP接続も共有しなくてよい。代わりに、TOSゲートウェイは、動作820~836で、共有メッセージング・キューを介して、最初に一時鍵のペアの確立プロトコルを開始/実行し、Kまたはその割り当てあるいはその両方の交換を暗号化するために使用される対称暗号鍵を確立することによって、共有メッセージング・キュー450を介して通信してよい。より詳細には、動作820で、TOSゲートウェイGAが、最初に一時秘密鍵aおよびそれに対応する公開鍵Paを生成し、暗号化されていなくてよい鍵交換メッセージを公開してよい。一般に、鍵交換プロトコルは、一部の実施形態において、対称暗号鍵を確立するために、安全でない媒体上で機能するように設計される。しかし、一部の鍵交換の実施形態は、動作822で、共有メッセージ・キューに対して暗号化)を使用してもよく、別のTOSゲートウェイ(例えば、TOSゲートウェイGn)に向けられ、共有メッセージング・キュー450への新しい一時公開鍵(記号的に{KEX_Gn,Pa})を含む。TOSゲートウェイGAが元のランダムな対称鍵Kを回復したい場合、TOSゲートウェイGAは、動作822で、鍵要求(「KEY」)をメッセージに追加することもでき、同様に、TOSゲートウェイGAが鍵割り当てを取得したい場合、TOSゲートウェイGAは、動作822で、鍵割り当て要求(「SHR」)を追加することもできる。
【0085】
鍵交換メッセージに応答して、動作830で、TOSゲートウェイGiiが、一時秘密鍵pおよびそれに対応する公開鍵Ppを生成してよい。次に、動作832で、TOSゲートウェイGiiが、一時対称鍵(KEXAB)をpおよびPAから計算してよい。その後、動作834で、TOSゲートウェイGiiが、TOSゲートウェイGAからの「KEY」要求に応答して、(KEXABを使用して)対称鍵(すなわち、{Pp,KEXAB(K)})を暗号化して、共有メッセージング・キューに公開してよく、またはTOSゲートウェイGAからの「SHR」要求に応答して、TOSゲートウェイGiiの鍵割り当て(すなわち、{Pp,KEXAB(Ks)})を暗号化して、共有メッセージング・キューに公開してよい。
【0086】
動作840で、TOSゲートウェイGiiが、一時秘密鍵pを忘れてよい。すなわち、TOSゲートウェイGiiは、一時秘密鍵を揮発性メモリから削除してよく、一時秘密鍵を不揮発性メモリに格納していない。動作850で、TOSゲートウェイGAが、元のランダムな対称鍵Kを復号するか、または鍵の断片KA、Ksなどを使用してKを再構築してよい。次に、動作855で、TOSゲートウェイGAが一時秘密鍵aを忘れてもよい。このようにして、ある実体が共有メッセージング・キュー450に対するアクセス権限を獲得した場合でも、元のランダムな対称鍵Kがまだ保護される。
【0087】
シンジケートのメンバーシップの拡張
図9は、一部の実施形態と一致する、ブロックチェーン内のメンバーシップを拡張する1つの方法900を示すフロー・チャートである。この実施形態では、新しいメンバー/組織「D」がチャネルに参加するたびに、TOSゲートウェイGnが共有鍵Kおよびそれ自身の鍵割り当てKoを取得してよい。動作910で、TOSゲートウェイGnが、現在の対称鍵Kを再構築し、揮発性メモリ(のみ)に格納するために、
図8を参照して説明されたプロトコルを使用して既存のチャネル・メンバーA、B、Cなどのうちの「t」個に接触することによって開始し、「t」は、セキュリティ・プロファイルに基づいてブロックチェーンの管理者によって選択された数である。次に、新しいTOSゲートウェイGnは、動作920で、前述の方法を使用して、それ自身の一意の鍵割り当てKo(すなわち、他のすべての鍵割り当てKA、Ks、Kcなどと異なる鍵割り当て)を計算してよく、動作930で、Koを永続的ストレージに格納してよい。代替として、他のTOSゲートウェイのうちの1つが、鍵割り当てKoを計算し、共有対称鍵と共にそのKoを送信してよい。
【0088】
同様に、チャネルの構成において新しいメンバーDが検出された場合、既存のすべてのTOSゲートウェイGA、Gs、Geなどは、新しいTOSゲートウェイGoと共に、一時鍵のペアの確立セッションを行ってもよく、その後、新しいTOSゲートウェイGoがKおよびKoを獲得する。
【0089】
シンジケートのメンバーシップの除去
ブロックチェーン・メンバーA、B、C、またはブロックチェーンのIT管理者、あるいはその組合せによって、あるメンバーがチャネルから除去された場合、全順序付けサービスTOSは、除去されたメンバーが共有メッセージ・キュー450内のメッセージを復号できなくなるように、暗号鍵Kを循環させてよい。
図10Aおよび10B(集合的に、
図10)は、一部の実施形態と一致する、鍵を循環させる1つのそのような方法1000を示している。この例では、単に例示の目的で、組織AおよびBが組織Cをチャネルから除去したいと思っていると仮定する。動作1010で、ブロックチェーン管理者が、チャネル構成トランザクション(tx)をTOSゲートウェイGAに送信し、動作1020で、TOSゲートウェイGAが、チャネル再構成(「CHAN RECONF A B BEGIN」)メッセージtxを全順序付けサービスTOSに公開することによって応答してよい。
【0090】
動作1030で、TOSゲートウェイGsが、チャネル再構成メッセージを受信してよく、ランダムな一時秘密鍵βおよび対応する公開鍵Pを生成することによって応答してよい。次に、動作1035で、TOSゲートウェイGaが公開鍵Ppを全順序付けサービスTOSに公開してよい。
【0091】
TOSゲートウェイGAは、動作1040で、新しいランダムな対称鍵K1を生成し、動作1042で、対称鍵K1をn個の割り当てに分割することによって、応答してよい(この場合、nは残りのメンバーの数(この場合は2)に等しい)。次に、TOSゲートウェイGAは、動作1045で、他のTOSゲートウェイGsの一時公開鍵(例えば、Gsの場合、Pp(K1a)、Pp(K1)、およびK1(tx))を使用して鍵割り当てを暗号化してよく、動作1047で、それらの鍵割り当てを全順序付けサービスTOSに公開する。すなわち、一部の実施形態は、最初に鍵を変更し、次に、除去された組織を除くすべての組織に、新しい鍵を学習させる。しかし、これらの実施形態は、再構成をブロックチェーン自体に適用することをまだ必要とすることがあるため、これらの実施形態は、新しい鍵を使用して再構成トランザクションを暗号化し、送信してよい。代替として、TOSゲートウェイGsは、前述の方法を使用して、新しい対称鍵K1を使用してそれ自身の鍵割り当てを計算してよい。
【0092】
動作1050で、TOSゲートウェイGsが、鍵割り当てK1a、新しい対称鍵K1、およびtxを復号してよい。次に、TOSゲートウェイGsは、動作1052で、組織Cがチャネルから実際に除去されたことを確認してよく、除去されている場合、動作1054で、K1aを永続的ストレージに格納し、動作1056で、チャネル再構成終了(「CHAN RECONF A B END」)メッセージを全順序付けサービスTOSに公開する。
【0093】
シンジケートのメンバーシップの再構成
除去された組織を再び追加すること、またはチャネルを再構成すること(例えば、チャネルの作成)、あるいはその両方をサポートするために、各TOSゲートウェイGA、Gnなどは、継続的なメンバーシップを含むブロック範囲に従って、鍵割り当てKA、KBなどを格納してよい。そのような場合、チャネルの現在および将来のすべてのメンバーが、鍵割り当てを保持することを承認した場合に、以前の鍵割り当てがブロック範囲内で使用されてよい。同様に、組み込まれたすべての新しい組織は、過去の対称鍵を学習する必要がある。
【0094】
否認不可および完全性の保証
一部の実施形態は、否認不可をサポートし、完全性の保証を提供してよい。これらの実施形態は、全順序付けサービスTOSが正しく動作しないか、または誤動作し、その結果、個々のTOSゲートウェイGA、Gnなどが異なる順序でメッセージを受信する場合に、望ましいことがある。同様に、これらの実施形態は、1つのメンバー組織A、Bなどが、全順序付けサービスTOSがそれらのメンバー組織に受信した順序と異なる順序でメッセージを送信したと不当に主張する場合に、望ましいことがある。
【0095】
そのような事象が実際に発生した場合に、それを検出できるようにするため、または正しくない主張に反論できるようにするために、各TOSゲートウェイは、一部の実施形態では、(i)メッセージのブロック範囲[i,j]、および(ii)マークル・ルート(例えば、ブロックチェーン・ネットワーク内のブロックの一部であるすべてのトランザクションのすべてのハッシュのハッシュ)を含み得るメッセージを定期的に(例えば、B個のブロックごと、またはT時間ごとに)公開してよく、[i,j]とインデックス付けされたブロックは、マークル・ルートの葉である。TOSゲートウェイGA、Gnなどが、他のネットワーク・メンバーの大部分から分岐したということを検出した場合、TOSゲートウェイは、動作を停止してよく、API呼び出しのサービスを提供するときに、特殊なエラーを返す。
【0096】
ブロックの処理
図11Aは、一部の実施形態と一致する、分散型台帳1120に追加されている新しいデータ・ブロック1130のプロセス1100を示しており、
図11Bは、一部の実施形態と一致する、ブロックチェーンの新しいデータ・ブロック1130の内容を示している。新しいデータ・ブロック1130は、データをリンクする文書を含んでよい。
【0097】
図11Aを参照すると、クライアント(図示されていない)は、トランザクションをブロックチェーン・ノード1111、1112、または1113、あるいはその組合せにサブミットしてよい。クライアントは、ブロックチェーン1122に対する活動を規定するための、いずれかのソースから受信された命令であってよい。一例として、クライアントは、ブロックチェーンのトランザクションを提案するデバイス、人、または実体などの要求者の代わりに動作するアプリケーションであってよい。複数のブロックチェーン・ピア(例えば、ブロックチェーン・ノード1111、1112、および1113)が、ブロックチェーン・ネットワークの状態および分散型台帳1120のコピーを維持してよい。クライアントによって提案されたトランザクションをシミュレートして署名する署名ピア、および署名を検証し、トランザクションの妥当性を確認し、トランザクションを分散型台帳1120にコミットするコミット・ピアを含む、さまざまな種類のブロックチェーン・ノード/ピアが、ブロックチェーン・ネットワーク内に存在してよい。一部の実施形態では、ブロックチェーン・ノード1111、1112、および1113は、署名者ノード、コミッタ・ノード、またはその両方の役割を実行してよい。
【0098】
分散型台帳1120は、ブロック内の変更不可能な順序付けられたレコードを格納するブロックチェーン、およびブロックチェーン1122の現在の状態を維持する状態データベース1124(現在の世界状態)を含んでよい。1つのチャネルにつき1つの分散型台帳1120が存在してよく、各ピアが、そのピアがメンバーであるチャネルごとに、分散型台帳1120のそれ自身のコピーを維持する。ブロックチェーン1122は、ハッシュリンクされたブロックとして構造化されたトランザクション・ログであってよく、各ブロックがN個のトランザクションのシーケンスを含む。ブロックは、
図11Bに示されているコンポーネントなどの、さまざまなコンポーネントを含んでよい。ブロックのリンク(
図11Aの矢印によって示されている)は、前のブロックのヘッダーのハッシュを、現在のブロックのブロック・ヘッダー内に追加することによって生成されてよい。このようにして、ブロックチェーン1122上のすべてのトランザクションが、順序付けられ、暗号によって一緒にリンクされてよく、ハッシュ・リンクを壊さずにブロックチェーン・データを改ざんすることを防ぐ。さらに、これらのリンクのため、ブロックチェーン1122内の最新のブロックが、その前に来たすべてのトランザクションを表す。ブロックチェーン1122は、追加専用のブロックチェーンのワークロードをサポートするピアのファイル・システム(ローカルまたは取り付けられたストレージ)に格納されてよい。
【0099】
ブロックチェーン1122および分散型台帳1120の現在の状態が、状態データベース1124に格納されてよい。ここで、現在の状態データは、ブロックチェーン1122のチェーン・トランザクション・ログにこれまで含まれたすべてのキーの最新の値を表す。チェーンコード呼び出しは、状態データベース1124内の現在の状態に対してトランザクションを実行する。それらのチェーンコードの相互作用をより効率的にするために、すべてのキーの最新の値が状態データベース1124に格納されてよい。状態データベース1124は、ブロックチェーン1122のトランザクション・ログへのインデックス付きビューを含んでよく、したがって、いつでもチェーンから再生成されることができる。状態データベース1124は、ピアの起動時に、トランザクションが受け取られる前に、自動的に回復されてよい(または必要な場合に生成されてよい)。
【0100】
署名ノードは、トランザクションをクライアントから受信し、シミュレーション結果に基づいてトランザクションに署名する。署名ノードは、トランザクション提案をシミュレートするスマート・コントラクトを保持する。署名ノードがトランザクションに署名するときに、署名ノードは、シミュレートされたトランザクションの署名を示す署名ノードからクライアント・アプリケーションへの署名された応答である、トランザクションの署名を作成する。トランザクションに署名する方法は、チェーンコード内で指定されることがある署名ポリシーによって決まる。署名ポリシーの例は、「署名ピアの大部分がトランザクションに署名しなければならない」である。異なるチャネルは、異なる署名ポリシーを有してよい。署名されたトランザクションは、クライアント・アプリケーションによって順序付けサービス1110に転送される。
【0101】
順序付けサービス1110は、署名されたトランザクションを受け取り、それらをブロック内に順序付けし、ブロックをコミット・ピアに配信する。例えば、順序付けサービス1110は、トランザクションのしきい値に達したか、タイマーがタイムアウトするか、または別の条件の場合に、新しいブロックを開始してよい。
図11Aの例では、ブロックチェーン・ノード1112は、ブロックチェーン1122に格納するための新しいデータの新しいデータ・ブロック1130を受信したコミット・ピアである。ブロックチェーン内の第1のブロックは、ブロックチェーン、ブロックチェーンのメンバー、格納されたデータなどに関する情報を含むジェネシス・ブロックと呼ばれてよい。
【0102】
順序付けサービス1110は、順序付けノードのクラスタで構成されてよい。一部の実施形態では、順序付けサービス1110は、トランザクション、スマート・コントラクトを処理しなくてもよく、共有台帳を維持しなくてもよい。むしろ、これらの実施形態では、順序付けサービス1110は、署名されたトランザクションを受け取り、それらのトランザクションが分散型台帳1120にコミットされる順序を指定してよい。ブロックチェーン・ネットワークのアーキテクチャは、「順序付け」の特定の実装(例えば、Solo、Kafka、BFTなど)が着脱可能なコンポーネントになるように設計されてよい。
【0103】
一部の実施形態では、トランザクションは、一貫性のある順序で分散型台帳1120に書き込まれてよい。これらの実施形態では、トランザクションの順序は、トランザクションがネットワークにコミットされるときに、状態データベース1124に対する更新が有効であることを保証するように、確立されてよい。暗号パズルを解くことまたはマイニングによって順序付けが発生する暗号通貨ブロックチェーン・システム(例えば、ビットコインなど)とは異なり、この例では、分散型台帳1120の関係者が、そのネットワークに最も適した順序付けメカニズムを選択してよい。
【0104】
一部の実施形態では、順序付けサービス1110は、新しいデータ・ブロック1130を初期化し、新しいデータ・ブロック1130がコミット・ピア(例えば、ブロックチェーン・ノード1111、1112、および1113)にブロードキャストされてよい。それに応じて、各コミット・ピアは、読み取りセットおよび書き込みセットが状態データベース1124内の現在の世界状態にまだ一致することをチェックして確認することによって、新しいデータ・ブロック1130内のトランザクションの妥当性を確認してよい。特に、コミット・ピアは、署名者がトランザクションをシミュレートしたときに存在していた読み取られたデータが、状態データベース1124内の現在の世界状態と同一であるかどうかを判定してよい。コミット・ピアがトランザクションの妥当性を確認した場合、トランザクションが分散型台帳1120のブロックチェーン1122に書き込まれてよく、状態データベース1124が、読み取り/書き込みセットからの書き込みデータに更新されてよい。一部の実施形態では、トランザクションが失敗した場合(例えば、コミット・ピアが、読み取り/書き込みセットが状態データベース1124内の現在の世界状態に一致しないということを検出した場合)、ブロック内に順序付けられたトランザクションは、そのブロックにまだ含まれるが、無効としてマーク付けされてよく、状態データベース1124が更新されない。
【0105】
図11Bを参照すると、一部の実施形態では、分散型台帳1120のブロックチェーン1122に格納された新しいデータ・ブロック1130(データ・ブロックとも呼ばれる)が、ブロック・ヘッダー1140、ブロック・データ1150、およびブロック・メタデータ1160などの、複数のデータ・セグメントを含んでよい。
図11Bに示された新しいデータ・ブロック1130およびその内容などの、さまざまな示されたブロックおよびそれらの内容が、例にすぎず、実施形態例の範囲を制限するよう意図されていないということが、理解されるべきである。新しいデータ・ブロック1130は、ブロック・データ1150内のN個(例えば、1、10、100、200、1000、2000、3000など)のトランザクションのトランザクション情報を格納してよい。新しいデータ・ブロック1130は、(例えば、
図11Aのブロックチェーン1122上の)前のブロックへのリンクをブロック・ヘッダー1140内に含んでもよい。特に、ブロック・ヘッダー1140は、前のブロックのヘッダーのハッシュを含んでよい。ブロック・ヘッダー1140は、新しいデータ・ブロック1130の一意のブロック番号、ブロック・データ1150のハッシュなどを含んでもよい。新しいデータ・ブロック1130のブロック番号は、一意であり、0から開始する漸進的/連続的順序などのさまざまな順序で割り当てられてよい。
【0106】
ブロック・データ1150は、新しいデータ・ブロック1130内に記録された各トランザクションのトランザクション情報を格納してよい。例えば、トランザクション・データは、トランザクションの種類、バージョン、タイムスタンプ、分散型台帳1120のチャネルID、トランザクションID、エポック、ペイロードの可視性、チェーンコード・パス(トランザクションのデプロイ)、チェーンコード名、チェーンコードのバージョン、入力(チェーンコードおよび関数)、公開鍵および証明書などのクライアント(作成者)の識別、クライアントの署名、署名者の識別情報、署名者の署名、提案のハッシュ、チェーンコード・イベント、応答の状態、名前空間、読み取りセット(トランザクションによって読み取られたキーおよびバージョンのリストなど)、書き込みセット(キーと値のリストなど)、開始キー、終了キー、キーのリスト、マークル・ツリー・クエリ・サマリー(Merkel tree query summary)などのうちの1つまたは複数を含んでよい。トランザクション・データは、N個のトランザクションの各々に格納されてよい。
【0107】
一部の実施形態では、ブロック・データ1150は、追加情報をブロックチェーン1122内のブロックのハッシュリンクされたチェーンに追加する新しいデータ1162を格納してもよい。追加情報は、本明細書で説明されたか、または示された、ステップ、特徴、プロセス、または動作、あるいはその組合せのうちの1つまたは複数を含んでよい。それに応じて、新しいデータ1162が、分散型台帳1120上のブロックの変更不可能なログに格納されてよい。そのような新しいデータ1162を格納することの利点の一部が、本明細書において開示されて示されたさまざまな実施形態に反映されている。
図11Bでは、新しいデータ1162がブロック・データ1150内で示されているが、一部の実施形態では、新しいデータ1162は、ブロック・ヘッダー1140またはブロック・メタデータ1160内にあることもできる。新しいデータ1162は、組織内の文書をリンクするために使用される文書複合キー(document composite key)を含んでもよい。
【0108】
ブロック・メタデータ1160は、メタデータの複数のフィールドを(例えば、バイト配列などとして)格納してよい。メタデータ・フィールドは、ブロック作成時の署名、最後の構成ブロックへの参照、ブロック内の有効なトランザクションと無効なトランザクションを識別するトランザクション・フィルタ、ブロックを順序付けた順序付けサービスの永続的な最後のオフセットなどを含んでよい。順序付けサービス1110によって署名、最後の構成ブロック、および順序付けノードのメタデータが追加されてよい。一方、ブロックのコミッタ(ブロックチェーン・ノード1112など)は、署名ポリシー、読み取り/書き込みセットの検証などに基づいて、有効/無効情報を追加してよい。トランザクション・フィルタは、ブロック・データ1150内のトランザクションの数に等しいサイズのバイト配列、およびトランザクションが有効/無効だったかどうかを識別する妥当性確認コードを含んでよい。
【0109】
図11Cは、一部の実施形態と一致する、デジタル・コンテンツのためのブロックチェーン1170の実施形態を示している。デジタル・コンテンツは、1つまたは複数のファイルおよび関連する情報を含んでよい。これらのファイルは、トランザクション・データ、媒体、画像、ビデオ、音声、テキスト、リンク、グラフィックス、アニメーション、Webページ、文書、またはデジタル・コンテンツのその他の形態を含んでよい。一部のブロックチェーンの実施形態の変更不可能な追加専用の特徴は、デジタル・コンテンツの完全性、有効性、および信頼性を保護するための予防手段として機能することにおいて望ましいことがあり、認容性ルールが適用される法的手続きにおいて、あるいは証拠が考慮されるか、またはデジタル情報の提示および使用がその他の方法で対象になる、その他の状況において、デジタル・コンテンツの使用を適切にする。この場合、デジタル・コンテンツはデジタル証拠と呼ばれることがある。
【0110】
これらの実施形態では、ブロックチェーンは、さまざまな方法で形成されてよい。1つの実施形態では、デジタル・コンテンツは、ブロックチェーン自体に含まれ、ブロックチェーンからアクセスされてよい。例えば、ブロックチェーンの各ブロックは、参照情報(例えば、ヘッダー、値など)のハッシュ値を、関連するデジタル・コンテンツと共に格納してよい。その後、ハッシュ値および関連するデジタル・コンテンツは、一緒に暗号化されてよい。したがって、各ブロックのデジタル・コンテンツは、ブロックチェーン内の各ブロックを復号することによってアクセスされてよく、各ブロックのハッシュ値は、前のブロックを参照するための基礎として使用されてよい。これは、次のように示されてよい。
ブロック1 ブロック2 ・・・・・・・ ブロックN
ハッシュ値1 ハッシュ値2 ハッシュ値N
デジタル・コンテンツ1 デジタル・コンテンツ2 デジタル・コンテンツN
【0111】
1つの実施形態では、デジタル・コンテンツがブロックチェーンに含まれなくてよい。例えば、ブロックチェーンは、デジタル・コンテンツを含んでいない各ブロックの内容の暗号化されたハッシュを格納してよい。デジタル・コンテンツは、元のファイルのハッシュ値に関連して、別のストレージ領域またはメモリ・アドレスに格納されてよい。他のストレージ領域は、ブロックチェーンを格納するために使用されるストレージ・デバイスと同じストレージ・デバイスであってよく、または異なるストレージ領域もしくは分離したリレーショナル・データベースであってもよい。各ブロックのデジタル・コンテンツは、対象のブロックのハッシュ値を取得するか、または問い合わせ、次に、実際のデジタル・コンテンツに対応して格納されているハッシュ値をストレージ領域内で検索することによって、参照またはアクセスされてよい。この動作は、例えば、データベース・ゲートキーパーによって実行されてよい。これは、次のように示されてよい。
ブロックチェーン ストレージ領域
ブロック1のハッシュ値 ブロック1のハッシュ値・・・内容
・ ・
・ ・
・ ・
ブロックNのハッシュ値 ブロックNのハッシュ値・・・内容
【0112】
図7Cの実施形態例では、ブロックチェーン1170は、順序付けられた順序で暗号によってリンクされた複数のブロック11781、11782、...1178Nを含み、N::”. 1である。ブロック11781、11782、...1178Nをリンクするための使用される暗号化は、複数の鍵つきハッシュ関数または鍵なしハッシュ関数のいずれかであってよい。1つの実施形態では、ブロック11781、11782、...1178Nは、ブロック内の情報に基づいている入力からnビットの英数字出力を生成するハッシュ関数の対象になる(nは256または別の数である)。そのようなハッシュ関数の例としては、SHA型(SHAは、セキュア・ハッシュ・アルゴリズム(Secured Hash Algorithm)を表す)アルゴリズム、マークル・ダンガード・アルゴリズム、HAIFAアルゴリズム、マークルツリー・アルゴリズム、ノンスに基づくアルゴリズム、および非衝突耐性PRFアルゴリズムが挙げられるが、これらに限定されない。別の実施形態では、ブロック11781、11782、...、1178Nは、ハッシュ関数とは異なる関数によって、暗号によってリンクされてよい。例示の目的で、以下では、ハッシュ関数(例えば、SHA-2)を参照して説明が行われる。
【0113】
ブロックチェーン内のブロック11781、11782、...、1178Nの各々は、ヘッダー、ファイルのバージョン、および値を含んでよい。ヘッダーおよび値は、ブロックチェーン内のハッシュ処理の結果として、ブロックごとに異なってよい。1つの実施形態では、値がヘッダーに含まれてよい。下でさらに詳細に説明されるように、ファイルのバージョンは、元のファイルであってよく、または元のファイルの異なるバージョンであってよい。
【0114】
ブロックチェーン内の最初のブロック11781は、ジェネシス・ブロックと呼ばれ、ヘッダー11721、元のファイル11741、および初期値11761を含んでよい。ジェネシス・ブロックに使用される(実際には、その後のすべてのブロックにおいて使用される)ハッシュ処理方式は、変化してよい。例えば、最初のブロック11781内のすべての情報が一緒に同時にハッシュされてよく、または最初のブロック11781内の情報の各々または一部が別々にハッシュされ、その後、別々にハッシュされ部分のハッシュが実行されてよい。
【0115】
ヘッダー11721は、1つまたは複数の初期パラメータを含んでよく、初期パラメータは、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル、期間、媒体形式、ソース、記述的キーワード、あるいは元のファイル11741もしくはブロックチェーンまたはその両方に関連付けられたその他の情報、あるいはその組合せを含んでよい。ヘッダー11721は、自動的に(例えば、ブロックチェーン・ネットワーク管理ソフトウェアによって)生成されるか、またはブロックチェーンの参加者によって手動で生成されてよい。ブロックチェーン内の他のブロック11782~1178N内のヘッダーとは異なり、ジェネシス・ブロック内のヘッダー11721は、単に前のブロックが存在しないため、前のブロックを参照しなくてよい。
【0116】
ジェネシス・ブロック内の元のファイル11741は、例えば、ブロックチェーンに含まれる前の処理を伴うか、または伴わずに、デバイスによって捕捉されたデータであってよい。元のファイル11741は、システムのインターフェイスを介して、デバイス、媒体ソース、またはノードから受信されてよい。元のファイル11741はメタデータに関連付けられてよく、メタデータは、例えば、ユーザ、デバイス、またはシステム・プロセッサ、あるいはその組合せによって、手動または自動のいずれかで、生成されてよい。メタデータは、元のファイル11741に関連して、最初のブロック11781に含まれてよい。
【0117】
ジェネシス・ブロック内の値11761は、元のファイル11741の1つまたは複数の一意の属性に基づいて生成された初期値であってよい。1つの実施形態では、1つまたは複数の一意の属性は、元のファイル11741のハッシュ値、元のファイル11741のメタデータ、およびファイルに関連付けられたその他の情報を含んでよい。1つの実装では、初期値11761は、以下の一意の属性に基づいてよい。
(1)SHA-2によって元のファイルに対して計算されたハッシュ値
(2)発信デバイスID
(3)元のファイルの開始タイムスタンプ
(4)元のファイルの初期ストレージ位置
(5)元のファイルおよび関連するメタデータを現在制御するためのソフトウェアのブロックチェーン・ネットワーク・メンバーID
【0118】
ブロックチェーン内の他のブロック11782~1178Nも、ヘッダー、ファイル、および値を含む。しかし、最初のブロックのヘッダー11721とは異なり、他のブロック内のヘッダー11722~1172Nの各々は、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、単に前のブロックのヘッダーのハッシュであってよく、または前のブロック全体のハッシュ値であってよい。先行するブロックのハッシュ値を残りのブロックの各々に含めることによって、矢印1180によって示されているように、N番目のブロックからジェネシス・ブロック(および関連する元のファイル)までのブロックごとのトレースを実行することができ、監査可能かつ変更不可能な証拠保全を確立する。
【0119】
他のブロック内のヘッダー11722~1172Nの各々は、一般に、他の情報(例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル)、あるいは対応するファイルもしくはブロックチェーンまたはその両方に関連付けられたその他のパラメータまたは情報、あるいはその組合せを含んでもよい。
【0120】
他のブロック内のファイル11742~1174Nは、例えば実行される処理の種類に応じて、ジェネシス・ブロック内の元のファイルと同じであってよく、または元のファイルの変更されたバージョンであってよい。実行される処理の種類は、ブロックごとに変化してよい。処理は、例えば、情報を編集するか、またはその他の方法で情報の内容を変更するか、情報をファイルから取り除くか、または情報をファイルに追加するなどの、先行するブロック内のファイルの任意の変更を含んでよい。
【0121】
追加的または代替的に、処理は、先行するブロックからファイルを単にコピーすること、ファイルのストレージ位置を変更すること、1つまたは複数の先行するブロックからのファイルを分析すること、ファイルをあるストレージまたはメモリ位置から別のストレージまたはメモリ位置に移動すること、あるいはブロックチェーンのファイルもしくは関連するメタデータまたはその両方に対して動作を実行することを含んでよい。ファイルを分析することを含む処理は、例えば、さまざまな分析、統計値、またはファイルに関連付けられたその他の情報を追加すること、含めること、またはその他の方法で関連付けることを含んでよい。
【0122】
他のブロック内の他のブロック11762~1176Nの各々に含まれる値は、実行された処理の結果として、一意の値であり、すべて異なっている。例えば、いずれか1つのブロック内の値は、前のブロック内の値の更新されたバージョンに対応する。この更新は、値が割り当てられたブロックのハッシュに反映される。したがって、ブロックの値は、ブロック内で何の処理が実行されたかの指示を提供し、ブロックチェーンを元のファイルまでトレースすることも可能にする。この追跡は、ブロックチェーン全体を通じて、ファイルの証拠保全を確認する。
【0123】
例えば、ファイル内で示されている人の識別情報を保護するために、前のブロック内のファイルの一部が編集されるか、遮断されるか、または画素化される場合について考える。この場合、編集されたファイルを含むブロックは、例えば、編集がどのように実行されたか、誰が編集を実行したか、編集が発生したときのタイムスタンプなどの、編集されたファイルに関連付けられたメタデータを含むであろう。このメタデータがハッシュされ、値を形成してよい。ブロックのメタデータが、前のブロック内の値を形成するためにハッシュされた情報と異なっているため、値は、互いに異なっており、復号されたときに回復されてよい。
【0124】
1つの実施形態では、次のうちのいずれか1つまたは複数が発生した場合に、現在のブロックの値を形成するように、前のブロックの値が更新されてよい(例えば、新しいハッシュ値が計算されてよい)。新しいハッシュ値は、この実施形態例では、以下に示された情報のすべてまたは一部をハッシュすることによって計算されてよい。
(a)ファイルがいずれかの方法で処理された場合(例えば、ファイルが編集されたか、コピーされたか、変更されたか、アクセスされたか、またはその他の動作が実行された場合)に、新しいSHA-2によって計算されたハッシュ値
(b)ファイルの新しいストレージ位置
(c)ファイルに関連付けられている識別された新しいメタデータ
(d)あるブロックチェーンの参加者から別のブロックチェーンの参加者へのファイルのアクセスまたは制御の移動
【0125】
図11Dは、一部の実施形態と一致する、ブロックチェーン1190内のブロックの構造を表し得るブロックの実施形態を示している。ブロック(ブロックi)は、ヘッダー1172i、ファイル1174i、および値1176iを含んでよい。
【0126】
ヘッダー1172iは、本明細書において説明された、前のブロック(ブロックi.1)のハッシュ値、および例えば情報の種類のいずれかであってよい、追加の参照情報(例えば、参照、特性、パラメータなどを含むヘッダー情報)を含んでよい。一部の実施形態では、すべてのブロックが前のブロックのハッシュを参照してよいが、一部の実施形態ではジェネシス・ブロックを除く。前のブロックのハッシュ値は、単に前のブロック内のヘッダーのハッシュであるか、またはファイルおよびメタデータを含む、前のブロック内の情報のすべてもしくは一部のハッシュであってよい。
【0127】
ファイル1174-iは、データ1、データ2、...、データNなどの複数のデータを順に含んでよい。データは、データに関連付けられた内容または特性あるいはその両方を記述するメタデータ1、メタデータ2、...、メタデータNでタグ付けされる。例えば、データごとのメタデータは、データのタイムスタンプ、データのプロセス、データに示された人もしくはその他の内容を示しているキーワード、またはファイルの有効性および内容を全体として確立し、特に、例えば下で説明される実施形態に関連して説明されるように、デジタル証拠を使用するのに役立ち得るその他の特徴、あるいはその組合せを示すための情報を含んでよい。メタデータに加えて、各データは、改ざん、ファイル内のギャップ、およびファイル全体の連続的な参照を防ぐために、前のデータへの参照(参照1、参照2、...、参照N)でタグ付けされてよい。
【0128】
一部の実施形態では、メタデータが(例えば、スマート・コントラクトを介して)データに割り当てられた後に、ハッシュを変更せずにメタデータを変更することはできず、ハッシュの変更は、無効であると容易に識別されることができる。したがって、これらの実施形態では、メタデータは、ブロックチェーン内の参加者による使用のためにアクセスされてよい、情報のデータ・ログを作成する。
【0129】
一部の実施形態では、値1176iは、前に説明された情報の種類のいずれかに基づいて計算されたハッシュ値またはその他の値であってよい。例えば、いずれかの特定のブロック(ブロックi)の場合、そのブロックの値は、そのブロックに対して実行された処理(例えば、新しいハッシュ値、新しいストレージ位置、関連するファイルの新しいメタデータ、制御もしくはアクセスの移動、識別子、またはその他の動作もしくは追加される情報)を反映するように更新されてよい。各ブロック内の値が、ファイルおよびヘッダーのデータのメタデータから分離しているように示されているが、別の実施形態では、値は、このメタデータに部分的または全体的に基づいてよい。
【0130】
一部の実施形態では、ブロックチェーン1170が形成された後に、いずれかの時点で、ブロック全体にわたる値のトランザクション履歴に関してブロックチェーンに問い合わせることによって、ファイルの変更不可能な証拠保全が取得されてよい。この問い合わせ手順または追跡手順は、最後に含まれたブロック(例えば、最後の(N番目の)ブロック)の値を復号することから開始してよく、その後、ジェネシス・ブロックに達し、元のファイルが回復されるまで、他のブロックの値を復号し続ける。復号は、各ブロックでヘッダーおよびファイルならびに関連するメタデータを復号することを含んでもよい。
【0131】
復号は、各ブロックで行われた暗号化の種類に基づいて実行されてよい。この復号は、秘密鍵、公開鍵、または公開鍵と秘密鍵のペアの使用を含んでよい。例えば、非対称暗号化が使用される場合、ブロックチェーンの参加者またはネットワーク内のプロセッサが、既定のアルゴリズムを使用して公開鍵および秘密鍵のペアを生成してよい。公開鍵および秘密鍵は、何らかの数学的関係によって互いに関連付けられてよい。公開鍵は、他のユーザからメッセージを受信するためのアドレス(例えば、IPアドレスまたは自宅住所)として機能するように、パブリックに配布されてよい。秘密鍵は、秘密に保たれてよく、他のブロックチェーンの参加者に送信されるメッセージにデジタル署名するために使用されてよい。署名は、次に、受信者が送信者の公開鍵を使用して検証することができるように、メッセージに含まれてよい。このようにして、受信者は、送信者のみがこのメッセージを送信できたということを確信することができる。
【0132】
一部の実施形態では、鍵のペアを生成することは、ブロックチェーンにアカウントを作成することに類似してよいが、実際は、どこにも登録する必要はない。これらの実施形態では、ブロックチェーンに対して実行されたすべてのトランザクションが、秘密鍵を使用して送信者によってデジタル署名されてよい。この署名は、アカウントの所有者のみが(スマート・コントラクトによって決定された許可の範囲内である場合に)ブロックチェーンのファイルを追跡して処理することができるということを保証するのに役立つことがある。
【0133】
図12Aおよび12Bは、本明細書に組み込まれて使用されてよい、ブロックチェーンの追加の使用事例を示している。特に、
図12Aは、機械学習(人工知能)データを格納するブロックチェーン1210の例1200を示している。機械学習は、通常、新しいデータに対する正確な予測のための予測モデルを構築するために、大量の履歴データ(またはトレーニング・データ)に依存する。機械学習ソフトウェア(例えば、ニューラル・ネットワークなど)は、多くの場合、非直感的パターンを発見するために、数百万レコードを取捨選択することができる。
【0134】
図12Aの例では、ホスト・プラットフォーム1220が、アセット1230の予測監視のための機械学習モデルを構築してデプロイする。ここで、ホスト・プラットフォーム1220は、クラウド・プラットフォーム、工業用サーバ、Webサーバ、パーソナル・コンピュータ、ユーザ・デバイスなどであってよい。アセット1230は、航空機、機関車、タービン、医療機械および医療機器、石油ガス機器、ボート、船、車両などの、任意の種類のアセット(例えば、機械または機器など)であることができる。別の例として、アセット1230は、株式、通貨、デジタル・コイン、保険などの、無形のアセットであってよい。
【0135】
ブロックチェーン1210は、機械学習モデルのトレーニング・プロセス1202およびトレーニング済み機械学習モデルに基づく予測プロセス1204の両方を大幅に改善するために使用されてよい。例えば、1202では、データを収集するためにデータ科学者/技術者または他のユーザを必要とするのではなく、アセット1230自体によって(または、図示されていない中間物を介して)、履歴データがブロックチェーン1210に格納されてよい。これによって、予測モデルのトレーニングを実行するときにホスト・プラットフォーム1220によって必要とされる収集時間を大幅に減らし得る。例えば、スマート・コントラクトを使用して、データを、元の場所からブロックチェーン1210に真っすぐに、直接かつ確実に転送することができる。スマート・コントラクトは、ブロックチェーン1210を使用して、収集されたデータのセキュリティおよび所有権を保証することによって、アセットから、機械学習モデルを構築するためにデータを使用する個人に、データを直接送信し得る。これによって、アセット1230間のデータの共有を可能にする。
【0136】
収集されたデータは、合意メカニズムに基づいてブロックチェーン1210に格納されてよい。合意メカニズムは、記録されているデータが検証されており、正確であることを保証するために、(許可されたノードを)制御してよい。記録されたデータは、タイムスタンプが付与され、暗号によって署名されており、変更不可能であってよい。したがって、記録されたデータは、監査可能、透過的、かつ安全である。ブロックチェーンに直接書き込むIoTデバイスを追加することによって、特定の場合(すなわち、サプライ・チェーン、医療、物流などの場合)に、データが記録される頻度を増やし、その精度を向上させることができる。
【0137】
さらに、収集されたデータに対する機械学習モデルのトレーニングは、ホスト・プラットフォーム1220による一連の改良およびテストを受けてよい。各一連の改良およびテストは、機械学習モデルの知識を拡張するのに役立つように、追加データまたは以前に考慮されなかったデータに基づいてよい。1202では、ホスト・プラットフォーム1220によって、異なるトレーニング・ステップおよびテスト・ステップ(および関連するデータ)がブロックチェーン1210に格納されてよい。機械学習モデルの各改良(例えば、変数、重みなどにおける変更)は、ブロックチェーン1210に格納されてよい。これによって、モデルがどのようにトレーニングされたか、およびモデルをトレーニングするためにどのデータが使用されたかの検証可能な証明を提供する。さらに、ホスト・プラットフォーム1220が最終的なトレーニング済みモデルを実現した場合、得られたモデルがブロックチェーン1210に格納されてよい。
【0138】
モデルがトレーニングされた後に、そのモデルは、活動中の環境にデプロイされてよく、最終的なトレーニング済み機械学習モデルの実行に基づく予測/決定を行うことができる。例えば、1204で、機械学習モデルは、航空機、風力タービン、医療機械などのアセットのための状態監視保全(CBM:condition-based maintenance)に使用されてよい。この例では、アセット1230からフィードバックされたデータが機械学習モデルに入力され、故障イベント、エラー・コードなどのイベント予測を行うために使用されてよい。ホスト・プラットフォーム1220で機械学習モデルの実行によって行われた決定は、監査可能/検証可能な証明を提供するために、ブロックチェーン1210に格納されてよい。1つの非限定的な例として、機械学習モデルは、アセット1230の部品での将来の停止/故障を予測し、その部品を交換するように警告または通知を作成してよい。この決定の背後にあるデータが、ホスト・プラットフォーム1220によってブロックチェーン1210に格納されてよい。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン1210で、またはブロックチェーン1210に関して発生することができる。
【0139】
ブロックチェーンの新しいトランザクションが新しいブロックに一緒に集められ、既存のハッシュ値に追加されてよい。次に、このハッシュ値が暗号化されて、新しいブロックの新しいハッシュを作成してよい。この新しいハッシュが、トランザクションが暗号化されるときなどに、トランザクションの次のリストに追加されてよい。この結果は、先行するすべてのブロックのハッシュ値をそれぞれ含むブロックのチェーンである。これらのブロックを格納するコンピュータは、ブロックのハッシュ値を定期的に比較し、それらのコンピュータがすべて合意していることを確認する。合意していないすべてのコンピュータは、問題を引き起こしているレコードを破棄する。この方法は、ブロックチェーンの改ざん防止を保証することに適しているが、完璧ではない。
【0140】
このシステムを不正に操作する1つの方法は、不正なユーザが、ハッシュを変更しないような方法で、トランザクションのリストを自分の都合の良いように変更することである。これは、総当たりによって実行されることが可能であり、言い換えると、レコードを変更し、結果を暗号化し、ハッシュ値が同じであるかどうかを確認することによって、実行され得る。ハッシュ値が同じでない場合、一致するハッシュを見つけるまで、何度も繰り返して試みる。ブロックチェーンのセキュリティは、通常のコンピュータが、宇宙の年齢などの、全く非実用的な時間的尺度にわたってしかこの種の総当たり攻撃を実行できないという考えに基づく。それに対して、一部の種類の問題の場合、量子コンピュータは非常に高速(数千倍高速)であり、したがって、非常に大きい脅威をもたらす。
【0141】
図12Bは、量子コンピューティング攻撃に対して保護するために量子鍵配送(QKD:quantum key distribution)を実装する量子セキュアなブロックチェーン1252の例1250を示している。この例では、ブロックチェーン・ユーザは、QKDを使用して互いの識別情報を検証することができる。この検証では、光子などの量子的粒子を使用して情報を送信してよく、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、送信者および受信者が、ブロックチェーンを介して、互いの識別情報を確認することができる。
【0142】
図12Bの例では、4人のユーザ(1254、1256、1258、および1260)が存在している。ユーザのペアの各々は、ユーザ自身の間で秘密鍵1262(すなわち、QKD)を共有することができる。この例には4つのノードが存在するため、ノードの6つのペアが存在し、したがって、QKD
AB、QKD
AC、QKD
AD、QKD
BC、QKD
BD、およびQKD
CDを含む6つの異なる秘密鍵1262が使用される。各ペアは、光子などの量子的粒子を使用して情報を送信することによってQKDを作成することができ、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、ユーザのペアが、互いの識別情報を確認することができる。
【0143】
ブロックチェーン1252の動作は、(i)トランザクションの作成、および(ii)新しいトランザクションを集めるブロックの構築という2つの手順に基づいてよい。新しいトランザクションは、従来のブロックチェーン・ネットワークと同様に作成されてよい。各トランザクションは、送信者、受信者、作成時間、転送される量(または値)、送信者が操作のための資金を持っていることを正当化する参照トランザクションのリストなどに関する情報を含んでよい。次に、このトランザクション・レコードは、すべての他のノードに送信され、未確認トランザクションのプールに入力される。ここで、2人の関係者(すなわち、1254~1260のうちのユーザのペア)が、共有秘密鍵1262(QKD)を提供することによって、トランザクションを認証してよい。この量子署名は、すべてのトランザクションに添付され、改ざんを困難にし得る。各ノードは、ブロックチェーン1252のローカル・コピーに関してトランザクションのエントリをチェックし、各トランザクションが十分な資金を持っていることを検証する。しかし、トランザクションはまだ確認されていない。
【0144】
ブロックに対して従来のマイニング・プロセスを実行するのではなく、ブロードキャスト・プロトコルを使用して、分散された方法でブロックが作成されてよい。既定の期間(例えば、数秒、数分、数時間など)に、ネットワークがブロードキャスト・プロトコルをいずれかの未確認トランザクションに適用してよく、それによって、トランザクションの正しいバージョンに関してビザンチン合意(agreement)(合意(consensus))を達成する。例えば、各ノードは、プライベートな値(その特定のノードのトランザクション・データ)を所有してよい。1回目に、ノードは、プライベートな値を互いに送信する。その後、ノードは、前回他のノードから受信した情報を伝達する。ここで、本物のノードが、新しいブロック内のトランザクションの完全なセットを作成することができる。この新しいブロックは、ブロックチェーン1252に追加され得る。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン1252で、またはブロックチェーン1252に関して発生することができる。
【0145】
コンピュータ・プログラム製品
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含むコンピュータ可読ストレージ媒体を含んでよい。
【0146】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0147】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、futemet、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0148】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行するか、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行するか、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行するか、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行してよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路を個人向けにするためのコンピュータ可読プログラム命令を実行してよい。
【0149】
本発明の態様は、本明細書において、本発明の実施形態によって、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0150】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製品を含むように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0151】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされ、一連の動作ステップを、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行させるものであってもよい。
【0152】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現され得、同時に、実質的に同時に、時間的に部分的または完全に重複する方法で実行され得るか、あるいは場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装されることができるということにも注意する。
【0153】
一般
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明された。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装されることができるということが理解されるであろう。さらに、図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0154】
本説明において使用された特定のプログラムの名前は単に便宜のためであり、したがって、本発明は、そのような名前によって識別されたか、または暗示されたか、あるいはその両方である特定のアプリケーションのみで使用するように限定されるべきではない。したがって、例えば、本発明の実施形態を実施するために実行されるルーチンは、オペレーティング・システムまたは特定のアプリケーション、コンポーネント、プログラム、モジュール、オブジェクト、あるいは命令のシーケンスのいずれの一部として実施されようと、「プログラム」、「アプリケーション」、「サーバ」、またはその他の意味のある名前で呼ばれることができた。実際、他の代替的ハードウェア環境またはソフトウェア環境あるいはその両方が、本発明の範囲から逸脱することなく使用されてよい。
【0155】
したがって、本明細書に記載された実施形態が、あらゆる点で制限ではなく例示であると見なされ、本発明の範囲を決定するために添付の特許請求の範囲に対する参照が行われるのが望ましい。