IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7511629ブロックチェーンを構成するためのセキュリティ層
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-27
(45)【発行日】2024-07-05
(54)【発明の名称】ブロックチェーンを構成するためのセキュリティ層
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240628BHJP
   G06F 16/28 20190101ALI20240628BHJP
【FI】
H04L9/32 200Z
G06F16/28
【請求項の数】 16
(21)【出願番号】P 2022503484
(86)(22)【出願日】2020-07-02
(65)【公表番号】
(43)【公表日】2022-09-21
(86)【国際出願番号】 EP2020068694
(87)【国際公開番号】W WO2021013499
(87)【国際公開日】2021-01-28
【審査請求日】2022-12-23
(31)【優先権主張番号】16/520,479
(32)【優先日】2019-07-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ベール、ダッシアント
(72)【発明者】
【氏名】ジャヤチャンドラン、プラヴィーン
【審査官】金沢 史明
(56)【参考文献】
【文献】国際公開第2018/057719(WO,A1)
【文献】国際公開第2018/045574(WO,A1)
【文献】特表2019-526945(JP,A)
【文献】米国特許出願公開第2018/0268152(US,A1)
【文献】米国特許出願公開第2015/0058054(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 16/27-16/28
(57)【特許請求の範囲】
【請求項1】
コンピューティング・システムであって、前記コンピューティング・システムはパーサー及びセキュリティ層を含んでおり、
ブロックチェーン仕様を受信し、前記ブロックチェーン仕様には、ブロックチェーンのセキュリティ要件が記載されており、
前記パーサーが、ブロックチェーン仕様の妥当性を確認し、
前記パーサーによって構文解析し、
前記パーサーは、ブロックチェーン仕様ファイルを読み取り、読み取られたデータに基づいて複数の構成ファイルを生成し、前記構成ファイルは、インフラストラクチャの異なるコンポーネントに固有のセキュリティ・ルールを生成・実装するために使用され、前記構成ファイルには、少なくともブロックチェーンのネットワーク構成、ストレージ構成、オペレーティング・システム構成、アプリケーション・ポリシー構成に対応する複数の構成ファイルがあり、
前記セキュリティ層は、さまざまなモジュールを使用して、対応する構成ファイルをパーサーから受信し、ブロックチェーンの内部の機密性、分離などのような保証を提供するために必要なセキュリティ・ルールを策定し、前記モジュールには、ネットワーク・モジュール、ストレージ・モジュール、OSポリシー・モジュール、アプリケーション・ポリシー・モジュールがあり、
デプロイメント中に、前記モジュールは、ブロックチェーンが起動されているプラットフォームに接続し、ルールによって必要とされる通りにブロックチェーンの設定を構成し、
ブロックチェーンはピア、チャネルなどの追加または削除により変更され、同じレベルの保証を提供するためにセキュリティ・ルールが変更するので、前記セキュリティ層は、そのような変更を監視し、入力として受け取り、同じ保証を提供するように、必要なセキュリティ・ルールを更新/拡張する
ように構成されたプロセッサとを備えている、コンピューティング・システム。
【請求項2】
前記ブロックチェーン仕様が、ブロックチェーン・ピア・ノード、順序付けノード、ブロックチェーン・チャネル、および認証機関のうちの1つまたは複数に関する情報を含んでいるファイルを含む、請求項1に記載のコンピューティング・システム。
【請求項3】
前記プロセッサが、前記ブロックチェーンのファイアウォール、ルータ、ポート、ソフトウェア定義ネットワーク(SDN)、および管理iptableのうちの1つまたは複数を含むネットワーク設定を構成する、請求項1に記載のコンピューティング・システム。
【請求項4】
前記プロセッサが、前記ブロックチェーンのファイル・システム、ソフトウェア定義ストレージ(SDS)、バックアップ・ストレージ、およびストレージ・プロトコルのうちの1つまたは複数のストレージ設定を構成する、請求項1に記載のコンピューティング・システム。
【請求項5】
前記プロセッサが、前記ブロックチェーンのアプリケーション・コンテナおよびチェーンコードを構成する、請求項1に記載のコンピューティング・システム。
【請求項6】
前記プロセッサが、アプリケーション・スタック管理およびデバイス管理のうちの1つまたは複数を含む、前記ブロックチェーンのオペレーティング・システム・ポリシーを構成する、請求項1に記載のコンピューティング・システム。
【請求項7】
前記プロセッサが、回復サービスおよびクラウド・プラットフォーム・ホスト・サービスのうちの1つまたは複数を含む、前記ブロックチェーンの高可用性(HA)ポリシーを構成する、請求項1に記載のコンピューティング・システム。
【請求項8】
コンピューティング・システムのプロセッサで実行される方法であって、前記コンピューティング・システムはパーサー及びセキュリティ層を含んでおり、
ブロックチェーン仕様を受信することであって、前記ブロックチェーン仕様には、ブロックチェーンのセキュリティ要件が記載されており、
前記パーサーが、ブロックチェーン仕様の妥当性を確認することと、
前記パーサーによって構文解析することと
前記パーサーは、ブロックチェーン仕様ファイルを読み取り、読み取られたデータに基づいて複数の構成ファイルを生成することであって、前記構成ファイルは、インフラストラクチャの異なるコンポーネントに固有のセキュリティ・ルールを生成・実装するために使用され、前記構成ファイルには、少なくともブロックチェーンのネットワーク構成、、ストレージ構成、オペレーティング・システム構成、アプリケーション・ポリシー構成に対応する複数の構成ファイルがあり、
前記セキュリティ層は、さまざまなモジュールを使用して、対応する構成ファイルをパーサーから受信し、ブロックチェーンの内部の機密性、分離などのような保証を提供するために必要なセキュリティ・ルールを策定することであって、前記モジュールには、ネットワーク・モジュール、ストレージ・モジュール、OSポリシー・モジュール、アプリケーション・ポリシー・モジュールがあり、
デプロイメント中に、前記モジュールは、ブロックチェーンが起動されているプラットフォームに接続し、ルールによって必要とされる通りにブロックチェーンの設定を構成することと、
ブロックチェーンはピア、チャネルなどの追加または削除により変更され、同じレベルの保証を提供するためにセキュリティ・ルールが変更するので、前記セキュリティ層は、そのような変更を監視し、入力として受け取り、同じ保証を提供するように、必要なセキュリティ・ルールを更新/拡張することと
を含む、方法。
【請求項9】
前記ブロックチェーン仕様が、ブロックチェーン・ピア・ノード、順序付けノード、ブロックチェーン・チャネル、および認証機関のうちの1つまたは複数に関する情報を含んでいるファイルを含む、請求項に記載の方法。
【請求項10】
前記構成することが、前記ブロックチェーンのファイアウォール、ルータ、ポート、ソフトウェア定義ネットワーク(SDN)、および管理iptableのうちの1つまたは複数のためのネットワーク設定を構成することを含む、請求項に記載の方法。
【請求項11】
前記構成することが、前記ブロックチェーンのファイル・システム、ソフトウェア定義ストレージ(SDS)、バックアップ・ストレージ、およびストレージ・プロトコルのうちの1つまたは複数のストレージ設定を構成することを含む、請求項に記載の方法。
【請求項12】
前記構成することが、前記ブロックチェーンのアプリケーション・コンテナおよびチェーンコードを構成することを含む、請求項に記載の方法。
【請求項13】
前記構成することが、アプリケーション・スタック管理およびデバイス管理のうちの1つまたは複数を含む、前記ブロックチェーンのオペレーティング・システム・ポリシーを構成することを含む、請求項に記載の方法。
【請求項14】
前記構成することが、回復サービスおよびクラウド・プラットフォーム・ホスト・サービスのうちの1つまたは複数を含む、前記ブロックチェーンの高可用性(HA)ポリシーを構成することを含む、請求項に記載の方法。
【請求項15】
コンピュータ・プログラムであって、請求項ないし14のいずれか1項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
【請求項16】
請求項15に記載のコンピュータ・プログラムを記録した、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、一般に、ブロックチェーン・ネットワークを構成するためのシステムに関連しており、より詳細には、ブロックチェーンのセキュリティ要件に一致するように、ブロックチェーン・ネットワークをホストするホスト・プラットフォームを動的に構成できるシステムに関連している。
【背景技術】
【0002】
集中データベースは、データを単一のデータベース(例えば、データベース・サーバ)に格納して一か所で維持する。集中データベースは、単一の位置のため、特にセキュリティの目的で、管理、維持、および制御するのが容易である。
【0003】
しかし、集中データベースは重大な欠点を抱えている。例えば、集中データベースには、単一障害点が存在する。したがって、ハードウェア故障が発生した場合、データベース内のすべてのデータが失われ、すべてのユーザの作業が中断される。加えて、集中データベースは、ネットワークの接続性に大きく依存している。その結果、接続の速度が低下すると、各データベース・アクセスに必要な時間が増加する。別の欠点は、集中データベースの通信量が増えた場合のボトルネックの発生である。さらに、集中データベースは、データの1つのコピーのみがデータベースによって維持されるため、データへの制限されたアクセスを提供する。さらに、データベース・ストレージ・システムがデータの冗長性を最小限しか持たないか、または全く持たないため、突然失われたデータを、手動の操作によってバックアップ・ストレージから取り出す以外に、取り出すことが非常に困難である。
【0004】
近年、組織は、従来のデータベースを超える改良されたストレージ・システムとして、ブロックチェーンに目を向けている。ブロックチェーンは、中央機関なしで、データの冗長性、アクセスの複数のノードなどを提供する。しかし、ブロックチェーン・ネットワークのデプロイメントは複雑であり、分離、データの機密性、および制限されたアクセスなどの、基礎になるインフラストラクチャに関するさまざまなセキュリティ要件を含んでいる。ネットワークは、複数の組織の境界、複数のクラウドにわたって広がることができ、各組織内にハイブリッド・デプロイメントを含むことがある。すべての主要なクラウド・プロバイダは、ブロックチェーン・デプロイメント・サービスを提供するが、デプロイメントに対する変更(例えば、ピアが追加されたときに開く新しい接続)に伴ってインフラストラクチャのセキュリティを管理することにおける自動化を欠いている。むしろインフラストラクチャは、人間/管理オペレータによって管理され、構成される。さらに、各変更時に、インフラストラクチャのルールが独立して更新され、この更新は、手動の性質に起因して煩雑であり、間違いを起こしやすく、時間がかかることがある。
【0005】
そのため、ブロックチェーンの構成およびデプロイメントを改良し、これらの欠点および制限を克服する解決策が必要とされている。
【発明の概要】
【0006】
1つの例示的な実施形態は、ブロックチェーン仕様情報を格納するように構成されたストレージと、ブロックチェーン仕様情報からブロックチェーンの1つまたは複数のセキュリティ構成ファイルを生成することと、ホスト・プラットフォーム上でブロックチェーンを起動することと、1つまたは複数のモジュールを介してホスト・プラットフォームに接続し、1つまたは複数のセキュリティ構成ファイルに基づいてブロックチェーンのセキュリティ設定を構成することとのうちの1つまたは複数を実行するように構成されたプロセッサとのうちの1つまたは複数を含んでいるシステムを提供する。
【0007】
別の例示的な実施形態は、ブロックチェーン仕様情報を受信することと、ブロックチェーン仕様情報からブロックチェーンの1つまたは複数のセキュリティ構成ファイルを生成することと、ホスト・プラットフォーム上でブロックチェーンを起動することと、1つまたは複数のモジュールを介してホスト・プラットフォームに接続し、1つまたは複数のセキュリティ構成ファイルに基づいてブロックチェーンのセキュリティ設定を構成することとのうちの1つまたは複数を含んでいる方法を提供する。
【0008】
別の例示的な実施形態は、命令を含んでいる非一過性コンピュータ可読媒体を提供し、これらの命令は、プロセッサによって読み取られたときに、プロセッサに、ブロックチェーン仕様情報を受信することと、ブロックチェーン仕様情報からブロックチェーンの1つまたは複数のセキュリティ構成ファイルを生成することと、ホスト・プラットフォーム上でブロックチェーンを起動することと、1つまたは複数のモジュールを介してホスト・プラットフォームに接続し、1つまたは複数のセキュリティ構成ファイルに基づいてブロックチェーンのセキュリティ設定を構成することとのうちの1つまたは複数を実行させる。
【0009】
第1の態様から見ると、本発明は、ブロックチェーン仕様情報を格納するように構成されたストレージと、ブロックチェーン仕様情報からブロックチェーンの1つまたは複数のセキュリティ構成ファイルを生成することと、ホスト・プラットフォーム上でブロックチェーンを起動することと、1つまたは複数のセキュリティ構成ファイルに基づいてブロックチェーンのセキュリティ設定を構成する1つまたは複数のモジュールを介して、ホスト・プラットフォームに接続することとを実行するように構成されたプロセッサとを備えているコンピューティング・システムを提供する。
【0010】
本発明は、ブロックチェーン仕様情報が、ブロックチェーン・ピア・ノード、順序付けノード、ブロックチェーン・チャネル、および認証機関のうちの1つまたは複数に関する情報を含んでいるファイルを含む、コンピューティング・システムを提供するのが好ましい。
【0011】
本発明は、プロセッサが、ブロックチェーン仕様情報を複数の下位構成ファイルに構文解析することと、複数の下位構成ファイルを、ホスト・プラットフォーム上でブロックチェーンを構成する複数のモジュールに送信することとを実行するように構成される、コンピューティング・システムを提供するのが好ましい。
【0012】
本発明は、プロセッサが、ブロックチェーンのファイアウォール、ルータ、ポート、ソフトウェア定義ネットワーク(SDN:software-defined network)、および管理iptableのうちの1つまたは複数を含むネットワーク設定を構成する、コンピューティング・システムを提供するのが好ましい、本発明は、プロセッサが、ブロックチェーンのファイル・システム、ソフトウェア定義ストレージ(SDS:software-defined storage)、バックアップ・ストレージ、およびストレージ・プロトコルのうちの1つまたは複数のストレージ設定を構成する、コンピューティング・システムを提供するのが好ましい。
【0013】
本発明は、プロセッサが、ブロックチェーンのアプリケーション・コンテナおよびチェーンコードを構成する、コンピューティング・システムを提供するのが好ましい。
【0014】
本発明は、プロセッサが、アプリケーション・スタック管理およびデバイス管理のうちの1つまたは複数を含む、ブロックチェーンのオペレーティング・システム・ポリシーを構成する、コンピューティング・システムを提供するのが好ましい。
【0015】
本発明は、プロセッサが、回復サービスおよびクラウド・プラットフォーム・ホスト・サービスのうちの1つまたは複数を含む、ブロックチェーンの高可用性(HA:high availability)ポリシーを構成する、コンピューティング・システムを提供するのが好ましい。
【0016】
第2の態様から見ると、本発明は、ブロックチェーン仕様情報を受信することと、ブロックチェーン仕様情報からブロックチェーンの1つまたは複数のセキュリティ構成ファイルを生成することと、ホスト・プラットフォーム上でブロックチェーンを起動することと、1つまたは複数のセキュリティ構成ファイルに基づいてブロックチェーンのセキュリティ設定を構成する1つまたは複数のモジュールを介して、ホスト・プラットフォームに接続することとを含んでいる方法を提供する。
【0017】
本発明は、ブロックチェーン仕様情報が、ブロックチェーン・ピア・ノード、順序付けノード、ブロックチェーン・チャネル、および認証機関のうちの1つまたは複数に関する情報を含んでいるファイルを含む、方法を提供するのが好ましい。
【0018】
本発明は、生成することが、ブロックチェーン仕様情報を複数の下位構成ファイルに構文解析することと、ブロックチェーンを構成するために、複数の下位構成ファイルを複数のモジュールに送信することとを含む、方法を提供するのが好ましい。
【0019】
本発明は、構成することが、ブロックチェーンのファイアウォール、ルータ、ポート、ソフトウェア定義ネットワーク(SDN)、および管理iptableのうちの1つまたは複数のためのネットワーク設定を構成することを含む、方法を提供するのが好ましい。
【0020】
本発明は、構成することが、ブロックチェーンのファイル・システム、ソフトウェア定義ストレージ(SDS)、バックアップ・ストレージ、およびストレージ・プロトコルのうちの1つまたは複数のストレージ設定を構成することを含む、方法を提供するのが好ましい。
【0021】
本発明は、構成することが、ブロックチェーンのアプリケーション・コンテナおよびチェーンコードを構成することを含む、方法を提供するのが好ましい。
【0022】
本発明は、構成することが、アプリケーション・スタック管理およびデバイス管理のうちの1つまたは複数を含んでいる、ブロックチェーンのオペレーティング・システム・ポリシーを構成することを含む、方法を提供するのが好ましい。
【0023】
本発明は、構成することが、回復サービスおよびクラウド・プラットフォーム・ホスト・サービスのうちの1つまたは複数を含んでいる、ブロックチェーンの高可用性(HA)ポリシーを構成することを含む、方法を提供するのが好ましい。
【0024】
第3の態様から見ると、本発明は、命令を含んでいる非一過性コンピュータ可読媒体を提供し、これらの命令は、プロセッサによって読み取られたときに、プロセッサに、ブロックチェーン仕様情報を受信することと、ブロックチェーン仕様情報からブロックチェーンの1つまたは複数のセキュリティ構成ファイルを生成することと、ホスト・プラットフォーム上でブロックチェーンを起動することと、1つまたは複数のセキュリティ構成ファイルに基づいてブロックチェーンのセキュリティ設定を構成する1つまたは複数のモジュールを介して、ホスト・プラットフォームに接続することとを含んでいる方法を実行させる。
【0025】
本発明は、ブロックチェーン仕様情報が、ブロックチェーン・ピア・ノード、順序付けノード、ブロックチェーン・チャネル、および認証機関のうちの1つまたは複数に関する情報を含んでいるファイルを含む、非一過性コンピュータ可読媒体を提供するのが好ましい。
【0026】
本発明は、生成することが、ブロックチェーン仕様情報を複数の下位構成ファイルに構文解析することと、ブロックチェーンを構成するために、複数の下位構成ファイルを複数のモジュールに送信することとを含む、非一過性コンピュータ可読媒体を提供するのが好ましい。
【0027】
本発明は、構成することが、ブロックチェーンのファイアウォール、ルータ、ポート、ソフトウェア定義ネットワーク(SDN)、および管理iptableのうちの1つまたは複数のためのネットワーク設定を構成することを含む、非一過性コンピュータ可読媒体を提供するのが好ましい。
【図面の簡単な説明】
【0028】
図1】実施形態例に従って、ブロックチェーンのセキュリティ設定を動的に構成するためのシステムを示す図である。
図2A】実施形態例に従って、例示的なブロックチェーン・アーキテクチャの構成を示す図である。
図2B】実施形態例に従って、ノード間のブロックチェーン・トランザクション・フローを示す図である。
図3A】実施形態例に従って、許可型ネットワークを示す図である。
図3B】実施形態例に従って、別の許可型ネットワークを示す図である。
図3C】実施形態例に従って、許可なしネットワーク(permissionless network)を示す図である。
図4A】実施形態例に従って、ブロックチェーン・ネットワーク構成を示す図である。
図4B】実施形態例に従って、セキュリティ層のアーキテクチャを示す図である。
図4C】実施形態例に従って、セキュリティ層によって生成されてよい構成ファイルを示す図である。
図5】実施形態例に従って、ブロックチェーンのセキュリティ設定を動的に構成する方法を示す図である。
図6A】実施形態例に従って、本明細書に記載された1つまたは複数の動作を実行するように構成された例示的なシステムを示す図である。
図6B】実施形態例に従って、本明細書に記載された1つまたは複数の動作を実行するように構成された別の例示的なシステムを示す図である。
図6C】実施形態例に従って、スマート・コントラクトを利用するように構成された、さらに別の例示的なシステムを示す図である。
図6D】実施形態例に従って、ブロックチェーンを利用するように構成された、さらに別の例示的なシステムを示す図である。
図7A】実施形態例に従って、分散型台帳に追加されている新しいブロックのプロセスを示す図である。
図7B】実施形態例に従って、新しいデータ・ブロックのデータの内容を示す図である。
図7C】実施形態例に従って、デジタル・コンテンツのためのブロックチェーンを示す図である。
図7D】実施形態例に従って、ブロックチェーン内のブロックの構造を表すことができるブロックを示す図である。
図8A】実施形態例に従って、機械学習(人工知能)データを格納する例示的なブロックチェーンを示す図である。
図8B】実施形態例に従って、例示的な量子セキュアなブロックチェーンを示す図である。
図9】実施形態例のうちの1つまたは複数をサポートする例示的なシステムを示す図である。
【発明を実施するための形態】
【0029】
本明細書の図において一般的に説明され、示されているように、本明細書のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、添付の図において表された方法、装置、非一過性コンピュータ可読媒体、およびシステムのうちの少なくとも1つの実施形態に関する以下の詳細な説明は、請求されている本出願の範囲を制限するよう意図されておらず、単に選択された実施形態を代表している。
【0030】
本明細書全体を通して説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせられるか、または削除されてよい。例えば、語句「実施形態例」、「一部の実施形態」、またはその他の同様の言葉の使用は、本明細書全体を通じて、実施形態に関連して説明された特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれてよいということを指している。したがって、語句「実施形態例」、「一部の実施形態において」、「その他の実施形態において」、またはその他の同様の言葉の出現は、本明細書全体を通じて、必ずしもすべてが実施形態の同じグループを指しておらず、説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせられるか、または削除されてよい。さらに、各図では、要素間の任意の接続は、示された接続が一方向または双方向の矢印である場合でも、一方向通信または双方向通信あるいはその両方を許可することができる。また、図面に示された任意のデバイスは、異なるデバイスであることができる。例えば、情報を送信しているモバイル・デバイスが示された場合、その情報を送信するために、有線デバイスも使用され得る。
【0031】
加えて、「メッセージ」という用語が実施形態の説明において使用されていることがあるが、本出願は、多くの種類のネットワークおよびデータに適用されてよい。さらに、特定の種類の接続、メッセージ、および信号伝達が実施形態例において示されることがあるが、本出願は、特定の種類の接続、メッセージ、および信号伝達に限定されない。
【0032】
実施形態例は、ブロックチェーン・ネットワーク(本明細書では、ブロックチェーンとも呼ばれる)を構成するためのセキュリティ層を提供する、方法、システム、コンポーネント、非一過性コンピュータ可読媒体、デバイス、またはネットワーク、あるいはその組み合わせを提供する。
【0033】
1つの実施形態では、システムは、互いに通信する複数のノードを含んでいる分散ストレージ・システムである分散型データベース(ブロックチェーンなど)をデプロイして構成する。分散型データベースは、相互に信頼できない関係者間でレコードを維持することができる分散型台帳に似ている、追加専用の変更不可能なデータ構造を含む。信頼できない関係者は、本明細書ではピアまたはピア・ノードと呼ばれる。各ピアは、データベース・レコードのコピーを維持し、単一のピアは、分散されたピア間で合意に達することなく、データベース・レコードを変更することができない。例えば、ピアは、ブロックチェーン格納トランザクションの妥当性を確認し、それらの格納トランザクションをブロックにグループ化し、ブロック上にハッシュ・チェーンを構築するために、合意プロトコルを実行してよい。このプロセスは、一貫性のために、必要に応じて、格納トランザクションを順序付けることによって台帳を形成する。さまざまな実施形態では、許可型ブロックチェーンまたは許可なしブロックチェーンあるいはその両方が使用され得る。パブリック・ブロックチェーンまたは許可なしブロックチェーンには、特定の識別情報なしで、誰でも参加することができる。パブリック・ブロックチェーンは、ネイティブ暗号通貨を含み、プルーフ・オブ・ワーク(PoW:Proof of Work)などのさまざまなプロトコルに基づいて、合意を使用することができる。一方、許可型ブロックチェーン・データベースは、資金、商品、情報などを交換する企業などの、共通の目標を共有しているが、互いに完全には信用していない実体のグループ内で、安全な相互作用を提供する。
【0034】
ブロックチェーンは、分散型ストレージ方式に合わせてある、「スマート・コントラクト」または「チェーンコード」と呼ばれる、任意のプログラム可能な論理を操作することができる。場合によっては、システム・チェーンコードと呼ばれる、管理機能およびパラメータのための特殊なチェーンコードが存在することがある。アプリケーションは、ブロックチェーン・データベースの改ざん防止の特性、および署名または署名ポリシーと呼ばれるノード間の基礎になる合意を活用する、信頼できる分散されたアプリケーションであるスマート・コントラクトをさらに利用することができる。このアプリケーションに関連付けられたブロックチェーン・トランザクションは、ブロックチェーンにコミットされる前に「署名される」ことができ、一方、署名されていないトランザクションは無視される。署名ポリシーは、チェーンコードが、トランザクションの署名者を、署名に必要なピア・ノードのセットの形態で指定できるようにする。クライアントが、トランザクションを、署名ポリシーで指定されたピアに送信するときに、トランザクションの妥当性を確認するためのトランザクションが実行される。妥当性確認の後に、トランザクションが順序付けフェーズに移行し、順序付け段階では、合意プロトコルが使用され、ブロックにグループ化された、署名されたトランザクションの順序付けられたシーケンスを生成する。
【0035】
ブロックチェーンは、ブロックチェーン・システムの通信実体である構成されたノードを含むことができる。「ノード」は、異なる種類の複数のノードが同じ物理サーバ上で実行され得るという意味で、論理機能を実行してよい。ノードは、信頼できるドメイン内でグループ化され、さまざまな方法でそれらのノードを制御する論理的実体に関連付けられる。ノードは、トランザクション呼び出しを署名者(例えば、ピア)にサブミットし、トランザクション提案を順序付けサービス(例えば、順序付けノード)にブロードキャストするクライアントまたはサブミット・クライアント・ノードなどの、さまざまな種類を含んでよい。別の種類のノードは、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードである。ピアは署名者の役割を持つこともできるが、これは必須要件ではない。順序付けサービス・ノードまたは順序付けノードは、すべてのノードのための通信サービスを実行するノードであり、トランザクションをコミットするとき、およびブロックチェーンの世界状態(world state)(通常は制御情報および設定情報を含んでいる初期ブロックチェーン・トランザクションの別名)を変更するときの、システム内のピア・ノードの各々へのブロードキャストなどの、配信保証を実施する。
【0036】
ブロックチェーンは、ブロックチェーンのすべての状態遷移の順序付けられた改ざん防止機能付きレコードである台帳を含むことができる。状態遷移は、参加している関係者(例えば、クライアント・ノード、順序付けノード、署名者ノード、ピア・ノードなど)によってサブミットされたチェーンコード呼び出し(すなわち、トランザクション)から生じてよい。各参加している関係者(ピア・ノードなど)は、台帳のコピーを維持することができる。トランザクションは、1つまたは複数のオペランド(作成、更新、削除など)として台帳にコミットされているアセットのキーと値のペアのセットをもたらしてよい。台帳は、変更不可能な順序付けられたレコードをブロックに格納するために使用されるブロックチェーン(チェーンとも呼ばれる)を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。
【0037】
(ブロックチェーンの)チェーンは、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであり、各ブロックはN個のトランザクションのシーケンスを含んでおり、Nは1以上である。ブロック・ヘッダーは、ブロックのトランザクションのハッシュ、および前のブロックのヘッダーのハッシュを含んでいる。このようにして、台帳のすべてのトランザクションが順序付けられ、暗号によって一緒にリンクされてよい。したがって、ハッシュ・リンクを壊さずに台帳データを改ざんすることはできない。直前に追加されたブロックチェーンのブロックのハッシュは、それ以前に発生したチェーン上のすべてのトランザクションを表し、すべてのピア・ノードが一貫性のある信頼できる状態にあることを保証できるようにする。チェーンは、ブロックチェーンのワークロードの追加専用という性質を効率的にサポートするピア・ノードのファイル・システム(すなわち、ローカル、取り付けられたストレージ、クラウドなど)に格納されてよい。
【0038】
変更不可能な台帳の現在の状態は、チェーンのトランザクション・ログに含まれているすべてのキーの最新の値を表す。現在の状態は、チャネルに知られている最新のキーの値を表すため、世界状態と呼ばれることもある。チェーンコード呼び出しは、台帳の現在の状態のデータに対してトランザクションを実行する。それらのチェーンコードの相互作用を効率的にするために、最新のキーの値が状態データベースに格納されてよい。状態データベースは、単にチェーンのトランザクション・ログへのインデックス付きビューであってよく、したがって、いつでもチェーンから再生成され得る。状態データベースは、ピア・ノードの起動時に、トランザクションが受け取られる前に、自動的に回復されて(必要な場合は、生成されて)よい。
【0039】
本明細書に記載された実施形態例では、ブロックチェーン・ネットワークのノード、順序付けノード、チャネル、認証機関などに関する情報を含むことがあるブロックチェーン仕様を受信できるセキュリティ層が提供される。セキュリティ層は、複数の構成モジュールに提供されてよい複数の構成ファイルを、構文解析するか、またはその他の方法で生成することができる。ブロックチェーンが(例えば、最初に)起動されたときに、構成モジュールが、ブロックチェーンが操作されているインフラストラクチャ(例えば、クラウド、サーバなどのホスト・プラットフォーム)に接続し、ブロックチェーンのさまざまな設定を構成してよい。例えば、ネットワーク設定、ストレージ設定、仮想化/コンテナ設定、オペレーティング・システム設定、高可用性設定などが、セキュリティ層によって自動的に構成されてよく、それによって、このプロセスを手動で実行されることから解放する。
【0040】
セキュリティ層は、ブロックチェーン仕様に従ってデータ分離、機密性、およびアクセス制限などの属性を提供することによって、セキュリティ構成のデプロイメントを自動化することができる。これらの例では、セキュリティ層は、入力ファイルであってよいブロックチェーン仕様に記載されたブロックチェーンのセキュリティ要件に一致するように、インフラストラクチャ(ホスト・プラットフォーム)を動的に構成することができる。セキュリティ層は、ブロックチェーンの仕様を入力として受け取り、ポリシーに基づくルールのセットを生成してよい。これらのルールは、ネットワーク、ストレージ、コンテナ、OSポリシー、およびHAポリシーを含む、ブロックチェーンのさまざまな属性にわたることができる。これらのポリシーは、ブロックチェーン・ネットワークに対する変更の発生時に、自動的かつ動的に適応され得る。
【0041】
ブロックチェーン・ネットワークのデプロイメントは、複雑になることがある。その結果、デプロイメントは、通常、手動のプロセスであるか、またはIBM Blockchain Platformなどの極めて特殊な自動化されたデプロイメントを使用して実行される。どちらの場合も、セキュリティ制限に必要な一連の複雑なルールは、完全にデプロイされないか、または正しくデプロイされないか、あるいはその両方であることがある。ネットワーク内に変更(例えば、新しいチャネル、ピアなど)があるたびに、ルールが更新される必要があるため、このプロセスは非常に時間がかかる。ネットワークに対して更新が行われるたびに、ユーザは、セキュリティ・ルールの変更を拡張/監視するために、ネットワークに接続する必要がある。さらに、手動でのルールの作成は、単に制限に必要なルールの数のために、誤りの可能性につながることがある。
【0042】
本明細書において説明され、図に示されるセキュリティ層の利点は、ブロックチェーン・ネットワークが外部の世界から適切に分離され、チャネルのような抽象化における場合などに、ネットワークの内部が適切に分離されるように、ブロックチェーン・ネットワークを構成することを含む。セキュリティ層は、プライベートな極秘データと連携するため、ブロックチェーン・システムの基本的要件であるデータの機密性を実現することもできる。セキュリティ層は、機密情報への不要なアクセスを防ぐように、ブロックチェーンの複雑なアクセス制御要件を構成することによって、アクセス制御を実現することができる。セキュリティ層は、ほとんどのデプロイメントがリアルタイムのシステムと連携し、高い評価を有しているため実施できる、監視および災害復旧を含む、高可用性(HA)を実現することもできる。また、セキュリティ層は完全に自動化され得る。その結果、サービスおよびセキュリティ制限のデプロイメントは、特に、チェーンコード・コンテナ、新しいチャネル、プライベートな集合などのような動的な行為者の存在下で、自動化されてよい。
【0043】
図1は、実施形態例に従って、ブロックチェーンのセキュリティ設定を動的に構成するためのシステム100を示している。図1を参照すると、システム100は、サーバ、クラウド・コンピューティング環境、データベース、ユーザ・デバイスなどのプラットフォーム上でホストされてよい、パーサー120およびセキュリティ層130を含んでいる。システム100は、ファイルまたはその他の情報などのブロックチェーン仕様110を受信し、ブロックチェーン142を、ブロックチェーン142をホストするためのハードウェア・リソースを含むことができるインフラストラクチャ140上にデプロイしてよい。図1に示されていないが、インフラストラクチャ140は、別の例として、パーサー120およびセキュリティ層130と共にシステム100に含まれてもよい。
【0044】
ブロックチェーン仕様110は、デプロイされるべきブロックチェーンに関する情報を含んでもよい。例えば、ブロックチェーン仕様は、関わっている組織、(例えば、キー、ネットワーク・アドレスなどによって)ブロックチェーン・ピア・ノード、(例えば、キー、ネットワーク・アドレスなどによって)順序付けノード、チャネル情報、証明書情報などを識別してよい。より複雑なブロックチェーンは、複数のチャネルを含むことができ、ノードは、チャネルのすべてではなく、一部のみに対するアクセス権限を有してよい。これらの環境では、各チャネルは、他のチャネルなどから分離されなければならない異なる順序付けノードを含んでよい。
【0045】
例えば、ユーザは、単一のブロックチェーン仕様ファイル110をアップロードしてよい。ここで、インフラストラクチャ140およびそのコンポーネントの知識が、セキュリティ層130によって知られてよい。仕様ファイル110がパーサー・モジュール120によって構文解析されてよく、パーサー・モジュール120は、ブロックチェーン仕様ファイル110内の入力構成の妥当性を確認し、各下位構成が各サブモジュールに関連する情報を含むように、さまざまなサブモジュール(例えば、図4Bなどに示されている)のための別々の下位構成を生成してよい。パーサー120は、ネットワーク、ストレージ、ドッカー、オペレーティング・システム、およびHAを含むが、これらに限定されない、ブロックチェーンの異なるコンポーネントに関連付けられた関連するデータを識別し、インフラストラクチャ140の異なるコンポーネントに固有のデプロイメントおよび制限ルールを生成し、その後、基礎になるインフラストラクチャ140によって提供されたフックを使用して、それらのデプロイメントおよび構成ルールをインフラストラクチャ140に実装してよい。例えば、ブロックチェーン・プラットフォームの既存のフレームワークを使用して、ネットワーク設定が実行されてよく、セキュリティ層130は、インフラストラクチャ140内でセキュリティ構成を直接拡張してよい。
【0046】
構成ファイルが生成され、ブロックチェーン142がインフラストラクチャ140上にデプロイされるときに、セキュリティ層は、パーサー120によって生成された下位構成ファイルに基づいて、自動化された方法で、ブロックチェーンのさまざまなコンポーネントの設定を構成するか、またはその他の方法で管理してよい。ここで、ネットワーク層130のさまざまなモジュールが、下位構成ファイルを、ブロックチェーン142およびインフラストラクチャ140によって実装されるルールに変換してよい。さらに、ブロックチェーン142に対する変更がアップロードされた(例えば、新しいノードが追加された、チャネルが変更されたなどの)場合、ネットワーク層130は、そのような変更に一致するようにブロックチェーン142の構成を更新してよい。
【0047】
さまざまな実施形態によれば、システム100は、分離、データの機密性、および制限されたアクセスを含むブロックチェーン・ネットワークのセキュリティ構成を自動化する、ブロックチェーンを認識するインフラストラクチャ層(セキュリティ層130)を含んでよい。一部の実施形態では、インフラストラクチャ140は、複数のクラウド環境にわたってよく、またはハイブリッド・クラウドのデプロイメントを含んでよく、あるいはその両方であってよい。ここで、各クラウドでの自動化されたブロックチェーンを認識するインフラストラクチャのセキュリティ管理のために、セキュリティ層140がデプロイされてよい。図1の例では、システム100が、ブロックチェーンの仕様を入力として受け取ってよく、ポリシーに基づくルールのセットを生成し、その後、それらのルールが、必要なセキュリティ機能と共に、ブロックチェーンの各コンポーネントをデプロイするために使用される。一部の実施形態では、セキュリティ・ポリシーは、ネットワーク、ストレージ、コンテナ、OSポリシー、およびHAポリシーにわたってよい。一部の実施形態では、これらのポリシーは、ブロックチェーン・ネットワークに対する変更の発生時に、動的かつ自動的に適応され得る。
【0048】
図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にインストールすることができる。
【0049】
ブロックチェーン・ベースまたはプラットフォーム212は、ブロックチェーン・データのさまざまな層と、サービス(例えば、暗号信用サービス、仮想実行環境など)と、新しいトランザクションを受信して格納し、データ・エントリにアクセスしようとしている監査人にアクセスを提供するために使用されてよい、基盤になる物理的コンピュータ・インフラストラクチャとを含んでよい。ブロックチェーン層216は、プログラム・コードを処理し、物理的インフラストラクチャ214に参加させるために必要な仮想実行環境へのアクセスを提供するインターフェイスを公開してよい。暗号信用サービス218は、アセット交換トランザクションなどのトランザクションを検証し、情報をプライベートに保つために使用されてよい。
【0050】
図2Aのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム212によって公開された1つまたは複数のインターフェイスおよび提供されたサービスを介して、プログラム/アプリケーション・コード220を処理および実行してよい。コード220は、ブロックチェーンのアセットを制御してよい。例えば、コード220は、データを格納および転送することができ、スマート・コントラクトおよび条件を含む関連するチェーンコードまたは実行の対象になるその他のコード要素の形態で、ノード204~210によって実行されてよい。非限定的な例として、リマインダ、更新、または変更、更新の対象になるその他の通知、あるいはその組み合わせなどを実行するために、スマート・コントラクトが作成されてよい。スマート・コントラクト自体は、権限付与およびアクセスの要件ならびに台帳の使用に関連付けられたルールを識別するために使用され得る。例えば、読み取りセット226は、ブロックチェーン層216に含まれている1つまたは複数の処理実体(例えば、仮想マシン)によって処理されてよい。書き込みセット228は、1つまたは複数のスマート・コントラクトを介して、読み取りセット226の処理の結果を含んでよい。物理的インフラストラクチャ214は、本明細書に記載されたデータまたは情報のいずれかを取り出すために利用されてよい。
【0051】
高水準のアプリケーションおよびプログラミング言語を使用して、スマート・コントラクトが作成され、その後、ブロックチェーン内のブロックに書き込まれてよい。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散ネットワーク)への登録、格納、または複製、あるいはその組み合わせが実行される実行可能コードを含んでよい。トランザクションは、スマート・コントラクトが満たされていることに関連付けられた条件に応答して実行され得る、スマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼できる変更をトリガーしてよい。スマート・コントラクトの実行によって引き起こされるブロックチェーン台帳に対する変更は、1つまたは複数の合意プロトコルを介して、ブロックチェーン・ピアの分散ネットワーク全体に自動的に複製されてよい。
【0052】
スマート・コントラクトは、データをキーと値のペアの形式でブロックチェーンに書き込んでよい。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納された値を読み取り、それらをアプリケーションの動作において使用することができる。スマート・コントラクト・コードは、さまざまな論理演算の出力をブロックチェーンに書き込むことができる。このコードは、仮想マシンまたはその他のコンピューティング・プラットフォーム内の一時的データ構造を作成するために使用されてよい。ブロックチェーンに書き込まれたデータは、パブリックになること、またはプライベートとして暗号化されて維持されること、あるいはその両方が行われ得る。スマート・コントラクトによって使用/生成される一時的データは、提供された実行環境によってメモリ内に保持され、ブロックチェーンに必要なデータが識別された後に削除される。
【0053】
チェーンコードは、追加機能と共に、スマート・コントラクトのコード解釈を含んでよい。本明細書に記載されているように、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードであってよく、合意プロセス中に、チェーン・バリデータによって一緒に実行されて妥当性を確認される。チェーンコードは、ハッシュを受信し、以前に格納された特徴抽出機能の使用によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取り出す。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュが一致する場合、チェーンコードは、権限付与キーを、要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連付けられたデータをブロックチェーンに書き込んでよい。
【0054】
図2Bは、実施形態例に従って、ブロックチェーンのノード間のブロックチェーン・トランザクション・フロー250の例を示している。図2Bを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード260によって署名ピア・ノード281に送信されるトランザクション提案291を含んでよい。署名ピア281は、クライアントの署名を検証し、チェーンコード関数を実行してトランザクションを開始してよい。出力は、チェーンコードの結果、チェーンコードに読み取られたキー/値のバージョンのセット(読み取りセット)、およびチェーンコードに書き込まれたキー/値のセット(書き込みセット)を含んでよい。提案応答292が、承認されている場合は署名と共に、クライアント260に返送される。クライアント260は、署名をトランザクションのペイロード293にまとめて、順序付けサービス・ノード284にブロードキャストする。その後、順序付けサービス・ノード284は、順序付けられたトランザクションをチャネル上でブロックとしてすべてのピア281~283に配信する。ブロックチェーンへのコミットの前に、各ピア281~283がトランザクションの妥当性を確認してよい。例えば、ピアは、指定されたピアの正しい割り当てが結果に署名し、トランザクションのペイロード293に対する署名を認証したことを確認するために、署名ポリシーをチェックしてよい。
【0055】
再び図2Bを参照すると、クライアント・ノード260が、要求を構築してピア・ノード281(署名者)に送信することによって、トランザクション291を開始する。クライアント260は、サポートされているソフトウェア開発キット(SDK:software development kit)を利用するアプリケーションを含んでよく、このアプリケーションは、使用可能なAPIを利用してトランザクション提案を生成する。提案は、データが台帳から読み取られること、または台帳に書き込まれること(すなわち、アセットの新しいキーと値のペアを書き込むこと)、あるいはその両方を実行できるように、チェーンコード関数を呼び出すことの要求である。SDKは、トランザクション提案を、適切に設計された形式(例えば、遠隔手続き呼び出し(RPC:remote procedure call)を経由するプロトコル・バッファ)にパッケージ化するためのシムとして機能し、クライアントの暗号認証情報を受け取って、トランザクション提案の一意の署名を生成してよい。
【0056】
それに応じて、署名ピア・ノード281は、(a)トランザクション提案が適切に形成されていること、(b)トランザクションが過去にすでにサブミットされていないこと(リプレイアタック保護)、(c)署名が有効であること、および(d)そのチャネルに対する提案された操作を実行するための適切な権限がサブミッター(例では、クライアント260)に与えられていることを検証してよい。署名ピア・ノード281は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として受け取ってよい。その後、チェーンコードが、現在の状態データベースに対して実行され、応答値、読み取りセット、および書き込みセットを含んでいるトランザクション結果を生成する。ただしこの時点では、台帳に対する更新は行われない。292で、値のセットが、署名ピア・ノード281の署名と共に、提案応答292としてクライアント260のSDKに返され、このSDKが、アプリケーションが使用するためのペイロードを構文解析する。
【0057】
それに応じて、クライアント260のアプリケーションが、署名ピアの署名を検査/検証し、提案応答を比較して、提案応答が同じであるかどうかを判定する。チェーンコードが単に台帳に問い合わせた場合、アプリケーションは問い合わせ応答を検査し、通常は、トランザクションを順序付けノード・サービス284にサブミットしない。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けノード・サービス284にサブミットしようとしている場合、アプリケーションは、サブミットする前に、指定された署名ポリシーが満たされているかどうか(すなわち、トランザクションに必要なすべてのピア・ノードがトランザクションに署名したかどうか)を判定する。ここで、クライアントは、トランザクションの複数の関係者のうちの1つのみを含んでよい。この場合、各クライアントは、それ自身の署名ノードを含んでよく、各署名ノードがトランザクションに署名する必要がある。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、またはその他の方法で署名されていないトランザクションを転送する場合でも、署名ポリシーが、ピアによってまだ実施され、コミット妥当性確認フェーズで維持されるようにする。
【0058】
検査に成功した後に、ステップ293で、クライアント260が、署名をトランザクションにまとめ、順序付けノード284へのトランザクション・メッセージ内でトランザクション提案およびトランザクション応答をブロードキャストする。トランザクションは、読み取り/書き込みセット、署名ピアの署名、およびチャネルIDを含んでよい。順序付けノード284は、その動作を実行するために、トランザクションの内容全体を検査する必要はなく、代わりに順序付けノード284は、単に、トランザクションをネットワーク内のすべてのチャネルから受信して、チャネル別に経時的に順序付けし、チャネルごとにトランザクションのブロックを作成してよい。
【0059】
トランザクションのブロックは、順序付けノード284からチャネル上のすべてのピア・ノード281~283に配信される。いずれかの署名ポリシーが満たされていることを保証するため、および読み取りセットがトランザクションの実行によって生成されて以来、読み取りセットの変数に関して台帳の状態に対する変更がないことを保証するために、ブロック内のトランザクション294の妥当性が確認される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ295で、各ピア・ノード281~283は、ブロックをチャネルのチェーンに追加し、有効なトランザクションごとに、書き込みセットが現在の状態データベースにコミットされる。トランザクション(呼び出し)が変更不可能なようにチェーンに追加されたことをクライアント・アプリケーションに通知するため、およびトランザクションの妥当性が確認されたか、または無効にされたかを通知するために、イベントが発行される。
【0060】
図3Aは許可型ブロックチェーン・ネットワーク300の例を示しており、許可型ブロックチェーン・ネットワーク300は、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ302は、許可型ブロックチェーン304に対するトランザクションを開始してよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、SDKを利用するクライアント側のアプリケーションを介して、APIを介して直接的に、などによって、発行されてよい。ネットワークは、監査人などのレギュレータ306へのアクセスを提供してよい。ブロックチェーン・ネットワーク・オペレータ308は、レギュレータ306を「監査人」として登録し、ブロックチェーン・ユーザ302を「クライアント」として登録するなど、メンバーの許可を管理する。監査人を、台帳への問い合わせのみに制限することができ、一方、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うための権限をクライアントに与えることができる。
【0061】
ブロックチェーン開発者310は、チェーンコードおよびクライアント側のアプリケーションを書き込むことができる。ブロックチェーン開発者310は、インターフェイスを介して、チェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース312からの認証情報をチェーンコードに含めるために、開発者310は、帯域外接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ302は、ピア・ノード314を介して許可型ブロックチェーン304に接続する。ピア・ノード314は、いずれかのトランザクションを開始する前に、ユーザの登録およびトランザクションの証明書を、ユーザの役割および許可を管理する認証機関316から取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン304上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用しようとしているユーザは、従来のデータ・ソース312上のそれらのユーザの認証情報を検証することが必要になることがある。ユーザの権限付与を確認するために、チェーンコードは、従来の処理プラットフォーム318を介して、このデータへの帯域外接続を使用することができる。
【0062】
図3Bは許可型ブロックチェーン・ネットワーク320の別の例を示しており、許可型ブロックチェーン・ネットワーク320は、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ322は、トランザクションを許可型ブロックチェーン324にサブミットしてよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、SDKを利用するクライアント側のアプリケーションを介して、APIを介して直接的に、などによって、発行されてよい。ネットワークは、監査人などのレギュレータ326へのアクセスを提供してよい。ブロックチェーン・ネットワーク・オペレータ328は、レギュレータ326を「監査人」として登録し、ブロックチェーン・ユーザ322を「クライアント」として登録するなど、メンバーの許可を管理する。監査人を、台帳への問い合わせのみに制限することができ、一方、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うための権限をクライアントに与えることができる。
【0063】
ブロックチェーン開発者330は、チェーンコードおよびクライアント側のアプリケーションを書き込む。ブロックチェーン開発者330は、インターフェイスを介して、チェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース332からの認証情報をチェーンコードに含めるために、開発者330は、帯域外接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ322は、ピア・ノード334を介してネットワークに接続する。ピア・ノード334は、いずれかのトランザクションを開始する前に、ユーザの登録およびトランザクションの証明書を認証機関336から取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン324上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用しようとしているユーザは、従来のデータ・ソース332上のそれらのユーザの認証情報を検証することが必要になることがある。ユーザの権限付与を確認するために、チェーンコードは、従来の処理プラットフォーム338を介して、このデータへの帯域外接続を使用することができる。
【0064】
一部の実施形態では、本明細書におけるブロックチェーンは、許可なしブロックチェーンであってよい。参加するために許可を必要とする許可型ブロックチェーンとは対照的に、誰でも許可なしブロックチェーンに参加することができる。例えばユーザは、許可なしブロックチェーンに参加するために、個人のアドレスを作成し、トランザクションをサブミットすることによって、したがってエントリを台帳に追加することによって、ネットワークとの情報のやりとりを開始してよい。さらに、すべての関係者が、ノードをシステム上で実行すること、およびトランザクションの検証に役立つようにマイニング・プロトコルを採用することを選択できる。
【0065】
図3Cは、複数のノード354を含んでいる許可なしブロックチェーン352によって処理されているトランザクションのプロセス350を示している。送信側356は、許可なしブロックチェーン352を介して、支払いまたはその他の形態の値(例えば、証書、医療記録、契約、商品、サービス、またはデジタル・レコードにカプセル化され得る任意のその他のアセット)を受信側358に送信することを望んでいる。1つの実施形態では、送信側デバイス356および受信側デバイス358の各々は、トランザクション・パラメータのユーザ・インターフェイス制御および表示を提供する(ブロックチェーン352に関連付けられた)デジタル・ウォレットを有してよい。それに応じて、トランザクションがブロックチェーン352全体のノード354にブロードキャストされる。ブロックチェーン352のネットワーク・パラメータに応じて、ノードが、許可なしブロックチェーン352の作成者によって確立されたルール(事前に定義されるか、または動的に割り当てられてよい)に基づいてトランザクションを検証する(360)。例えば、この検証は、関わっている関係者の識別情報を検証することなどを含んでよい。トランザクションは、直ちに検証されてよく、またはトランザクションは、他のトランザクションと共にキューに配置されてよく、ノード354は、ネットワーク・ルールのセットに基づいてトランザクションが有効であるかどうかを判定する。
【0066】
構造362内で、有効なトランザクションがブロック内に形成され、ロック(ハッシュ)を使用して封印される。このプロセスは、マイニング・ノードによって、ノード354間で実行されてよい。マイニング・ノードは、特に、許可なしブロックチェーン352のブロックをマイニングして作成するために、追加のソフトウェアを利用してよい。各ブロックは、ネットワークによって合意されたアルゴリズムを使用して作成されたハッシュ(例えば、256ビットの数値など)によって識別されてよい。各ブロックは、ヘッダー、チェーン内の前のブロックのヘッダーのハッシュへのポインタまたは参照、および有効なトランザクションのグループを含んでよい。前のブロックのハッシュへの参照は、ブロックの安全な独立したチェーンの作成に関連付けられる。
【0067】
ブロックをブロックチェーンに追加できるようになる前に、ブロックの妥当性が確認されなければならない。許可なしブロックチェーン352の妥当性確認は、ブロックのヘッダーから得られたパズルに対する解であるプルーフ・オブ・ワーク(PoW)を含んでよい。図3Cの例には示されていないが、ブロックの妥当性確認ための別のプロセスは、プルーフ・オブ・ステークである。アルゴリズムが、数学問題を解くマイナーに報酬を与えるプルーフ・オブ・ワークとは異なり、プルーフ・オブ・ステークでは、ウェルス(「ステーク」としても定義される)に応じて、新しいブロックの作成者が確定的方法で選択される。その後、選択されたノードによって、同様の証明が実行される。
【0068】
マイニング364で、ノードは、解がネットワーク全体にわたるターゲットを満たすまで、1つの変数に対して漸進的な変更を行うことによって、ブロックを解こうとする。これによってPoWを作成し、それによって、正しい答えを保証する。言い換えると、可能性のある解は、計算リソースが問題を解くことにおいて消耗されたということを証明しなければならない。一部の種類の許可なしブロックチェーンでは、マイナーに、ブロックを正しくマイニングしたことに対する報酬として価値(例えば、コインなど)が与えられることがある。
【0069】
ここで、攻撃者が、1つのブロックの変更を受け入れるために、その後のすべてのブロックを変更しなければならないため、PoWプロセスは、ブロックの変更と共に、ブロックチェーンの変更を極めて困難にする。さらに、新しいブロックがマイニングされるにつれて、ブロックを変更することの困難さが増大し、その後のブロックの数が増加する。配布366で、正常に妥当性が確認されたブロックが、許可なしブロックチェーン352全体に配布され、すべてのノード354が、そのブロックを、許可なしブロックチェーン352の監査可能な台帳であるマジョリティ・チェーン(majority chain)に追加する。さらに、送信側356によってサブミットされたトランザクションにおける価値が、受信側デバイス358のデジタル・ウォレットに預け入れられるか、またはその他の方法で転送される。
【0070】
図4Aは、実施形態例に従って、ブロックチェーン・ネットワーク構成400の例を示している。この例では、構成は、2つのチャネル(チャネルAおよびチャネルB)、チャネルのマウンティング・ルール(mounting rules)、順序およびチャネルのための分離要件、機密性要件などを含んでいる。構成400に関する情報が、図1に示されているブロックチェーン仕様110などの、ブロックチェーン仕様入力ファイルに記述されるか、またはその他の方法で識別されてよい。
【0071】
この例では、構成400は、ピア・ノード401、402、403、404、チャネルA、チャネルB、順序付けノード411、順序付けノード412、マウント421、マウント422、およびネットワーク内のさまざまな構成/制限を含む。構成の非限定的な例としては、ピア(チャネルの一部)が、ネットワーク・データをそのチャネルの一部ではないノードに送信するべきではないということ、順序付けノードの内部のKafkaノードが、データを、姉妹ブローカー(sister brokers)またはZookeeperノードとして構成されていないいずれかのノードに向けて外部に送信するべきではないということ、チェーンコード・コンテナが、関連するピアのみからアクセス可能であるということ、通信が、承認されたプロトコルおよびポート(例えば、GRPCなど)のみを介して発生するということ、ピアが、チャネルのデータを特定のストレージ位置に保存することを許可され、他の場所に保存することを許可されるべきではないこと、Kafkaブローカーが、データを事前に定義されたZookeeperノードに保存することのみを許可され、他のノードに保存することを許可されるべきではないことなどが挙げられる。
【0072】
図4Bは、実施形態例に従って、セキュリティ層130のアーキテクチャ430Aを示しており、図4Cは、実施形態例に従って、セキュリティ層130によって生成されてよい構成ファイルの図430Bを示している。図4Bのアーキテクチャでは、パーサー120、セキュリティ層130、およびインフラストラクチャ140を含む、図1に示されているシステムのコンポーネントが示されている。この例では、パーサー120が、ネットワーク構成、ストレージ構成、オペレーティング・システム構成、アプリケーション・ポリシー構成、および高可用性ポリシー構成に対応する複数の構成ファイル(または下位構成ファイル)450、460、470、480、および490を生成する。これらは例にすぎず、ブロックチェーンの異なるコンポーネントの異なる構成ファイルが作成されてよいということが理解されるべきである。また、これらのすべてのファイルがセキュリティ層130によって作成または実装される必要はない。代わりに、構成ファイル450~490のうちの1つまたは複数が実装されてよい。
【0073】
この例では、パーサー120は、ブロックチェーン仕様ファイル110を読み取り、読み取られたデータに基づいて複数の構成ファイル450~490を生成してよい。構成ファイル450~490の各々に追加されるデータの種類の例が、図4Cの例に示されている。例えば、ネットワーク構成ファイル450は、ファイアウォール・アプリケーション・プログラミング・インターフェイス(API)、ルータAPI、ソフトウェア定義ネットワーク(SDN)API、iptable、ポート情報などに関する情報を含んでよい。ストレージ構成ファイル460は、チェーン外およびチェーン内のストレージのネットワーク接続ストレージ(NAS:network-attached storage)API、ファイル・システムAPI、ソフトウェア定義ストレージ(SDN)APIなどに関する情報を含んでよい。アプリケーション・ポリシー構成ファイル480は、Docker API、名前空間APIなどに関する情報を含んでよい。システム構成ファイル470は、デバイス分離API、Selinux APIなどを含んでいるオペレーティング・システム情報を含んでよい。高可用性構成ファイル490は、Openstack API、Docker API、IBP APIなどを含んでよい。
【0074】
再び図4Bを参照すると、パーサー120が、ブロックチェーン仕様に含まれている入力ファイル(入力構成)の妥当性を確認し、各構成が必要なデプロイメントおよび制限ルールを含むように、サブモジュールごとに別々の下位構成を生成する。セキュリティ層130は、ブロックチェーン・ネットワークの必要性に従って、インフラストラクチャ140においてセキュリティ保証を提供する。セキュリティ層130は、ブロックチェーン仕様110を入力として受け取り、さまざまなモジュール150~190を使用して、ブロックチェーン・ネットワークの内部の機密性、分離などのような保証を提供するために必要なセキュリティ・ルールを策定し、実装する。セキュリティ層130は、デプロイメント時にセキュリティを構成し、ブロックチェーン・ネットワーク内のすべての変更に従ってセキュリティ・ルールを絶えず更新し続ける。これは、これらのセキュリティ・ルールがネットワークの必要性に基づいて手動で設定されることが多い従来のブロックチェーンのデプロイメントとは対照的である。さらに、新しいノードがネットワークに参加するか、またはノードがネットワークから離れるとき、あるいは新しいチャネルが作成されるときに、セキュリティ層130によってセキュリティ・ルールが更新され得る。
【0075】
仕様ファイル110は、ブロックチェーン内で実装されている組織、ブロックチェーン・ピア、チャネル、順序付けサービス、認証機関などのセットを含んでよい。セキュリティ層130は、ブロックチェーン・ネットワークを作成しているどの人でも提供できる、基礎になるインフラストラクチャ(例えば、クラウドのAPI)の知識に依存してもよい。パーサー120は、ブロックチェーン仕様ファイル110を複数の構成ファイル450~490に変換し、構成ファイル450~490は、その後、インフラストラクチャの異なるコンポーネントに固有のセキュリティ・ルールを生成して実装するために、セキュリティ層130のモジュール150~190によって使用される。さまざまな実施形態によれば、モジュール150~190は、ブロックチェーンに固有の知識に基づいてセキュリティ制限ルールを構築してよい。1つの実施形態では、同じことが、多様なレベルの厳密性を有するように、ポリシーを使用して微調整されることができ、これはポリシーに基づくメカニズムとも呼ばれる。
【0076】
図4Bの例では、異なるモジュールは、ネットワーク・モジュール150、ストレージ・モジュール160、OSポリシー・モジュール170、アプリケーション・ポリシー・モジュール180(例えば、Dockerなど)、および高可用性モジュール190を含んでいるが、これらに限定されない。これらのモジュールは、インフラストラクチャの異なるコンポーネントとインターフェイスを取り、必要なセキュリティ保証を提供するために必要とされる制限ルールを実装する、セキュリティ層130の異なるサブコンポーネントである。これらのモジュールは、モジュール、サブコンポーネントなどと呼ばれることができる。ここで、モジュール150~190は、対応する構成ファイル450~490をパーサー120から受信し、パーサー120は、個別のモジュールによって必要とされる情報を渡す。
【0077】
各モジュール150~190の内部には、インフラストラクチャのさまざまなサブコンポーネントとインターフェイスを取り、接続することができる、異なるコンポーネントが構築されている。例えば、ネットワーク・モジュール150は、異なるネットワーク・コンポーネントをそれぞれ表す、SDNマネージャ、ポート・マネージャ、ファイアウォール・マネージャ、ルータ・マネージャ、およびiptableマネージャなどを含んでよい。異なるモジュール150~190の各々は、ブロックチェーン・ネットワーク内のチャネルおよび異なるノードの分離、機密性、およびアクセス制御を保証することができる。モジュールの内部の各管理コンポーネントは、そのコンポーネントの内部で必要とされるセキュリティ・ルールを実装するために、フック(例えば、インフラストラクチャのAPI)を使用することによって、インフラストラクチャ上で実行される特定のコマンドを出力する。
ブロックチェーン・ネットワークは、ピア、チャネルなどが定期的に追加または削除されている、発達するネットワークであり、同じレベルの保証を提供するために、セキュリティ・ルールが絶えず発達することを必要とする。セキュリティ層130は、そのような変更要求を監視し、入力として受け取り、同じ保証を提供するように、必要なセキュリティ・ルールを更新/拡張することができる。ストレージ・モジュール160は、ファイル・システム、バックアップ・ストレージ、ストレージ・プロトコル、アプリケーション・コンテナなどを管理してよい。OSポリシー・モジュール170は、デバイス、アプリケーション・スタックなどを管理することができる。アプリケーション・ポリシー・モジュール180は、コンテナ、名前空間などを管理することができる。
【0078】
モジュール150~190の各々は、構成ファイルを入力として受信し、ブロックチェーンによって実装されるべきルールのセットを出力してよい。さらに、デプロイメント中に、モジュールは、ブロックチェーンが起動されているプラットフォームに接続し、ルールによって必要とされる通りにブロックチェーンの設定を構成してよい。
【0079】
図5は、実施形態例に従って、ブロックチェーンのセキュリティ設定を動的に構成する方法500を示している。図5を参照すると、510で、この方法はブロックチェーン仕様情報を受信することを含んでよい。例えば、ブロックチェーン仕様情報は、ブロックチェーン・ピア・ノード、順序付けノード、ブロックチェーン・チャネル、および認証機関のうちの1つまたは複数に関する情報を含んでいるファイルを含んでよい。
【0080】
520で、この方法は、ブロックチェーン仕様情報からブロックチェーンの1つまたは複数のセキュリティ構成ファイルを生成することを含んでよい。例えば、生成することは、ブロックチェーン仕様情報を複数の下位構成ファイルに構文解析することと、ブロックチェーンを構成するために、複数の下位構成ファイルを複数のモジュールに送信することとを含んでよい。530で、この方法は、ホスト・プラットフォーム上でブロックチェーンを起動することを含んでよく、540で、この方法は、1つまたは複数のセキュリティ構成ファイルに基づいてブロックチェーンのセキュリティ設定を構成する1つまたは複数のモジュールを介して、ホスト・プラットフォームに接続することを含んでよい。
【0081】
一部の実施形態では、構成することが、ブロックチェーンのファイアウォール、ルータ、ポート、ソフトウェア定義ネットワーク(SDN)、および管理iptableのうちの1つまたは複数のためのネットワーク設定を構成することを含んでよい。一部の実施形態では、構成することが、ブロックチェーンのファイル・システム、ソフトウェア定義ストレージ(SDS)、バックアップ・ストレージ、およびストレージ・プロトコルのうちの1つまたは複数のストレージ設定を構成することを含んでよい。一部の実施形態では、構成することが、ブロックチェーンのアプリケーション・コンテナおよびチェーンコードを構成することを含んでよい。一部の実施形態では、構成することが、アプリケーション・スタック管理およびデバイス管理のうちの1つまたは複数を含んでいる、ブロックチェーンのオペレーティング・システム・ポリシーを構成することを含んでよい。別の例として、構成することが、回復サービスおよびクラウド・プラットフォーム・ホスト・サービスのうちの1つまたは複数を含んでいる、ブロックチェーンの高可用性(HA)ポリシーを構成することを含んでよい。
【0082】
図6Aは、実施形態例に従ってさまざまな動作を実行するように構成された物理的インフラストラクチャ610を含んでいる例示的なシステム600を示している。図6Aを参照すると、物理的インフラストラクチャ610は、モジュール612およびモジュール614を含んでいる。モジュール614は、実施形態例のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含んでいる。ステップ/動作608は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。物理的インフラストラクチャ610、モジュール612、およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。さらに、モジュール612およびモジュール614は同じモジュールであってよい。
【0083】
図6Bは、実施形態例に従ってさまざまな動作を実行するように構成された別の例示的なシステム640を示している。図6B参照すると、システム640はモジュール612および614を含んでいる。モジュール614は、実施形態例のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含んでいる。ステップ/動作608は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。物理的インフラストラクチャ610、モジュール612、およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。さらに、モジュール612およびモジュール614は同じモジュールであってよい。
【0084】
図6Cは、実施形態例に従って、契約当事者間でのスマート・コントラクトの構成、およびブロックチェーンに対してスマート・コントラクトの条件を実施するように構成された仲介サーバを利用するように構成された例示的なシステムを示している。図6Cを参照すると、構成650は、通信セッション、アセット転送セッション、あるいはプロセスまたは手順を表してよく、これらは、1つまたは複数のユーザ・デバイス652または656あるいはその両方を明示的に識別するスマート・コントラクト630によって動作させられる。スマート・コントラクトの実行の、実行、動作、および結果は、サーバ654によって管理されてよい。スマート・コントラクト630の内容は、スマート・コントラクト・トランザクションの関係者である実体652および656のうちの1つまたは複数によるデジタル署名を要求してよい。スマート・コントラクトの実行結果は、ブロックチェーン・トランザクションとしてブロックチェーン620に書き込まれてよい。スマート・コントラクト630は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせに存在してよい、ブロックチェーン620に存在する。
【0085】
図6Dは、実施形態例に従って、ブロックチェーンを含んでいるシステム660を示している。図6Dの例を参照すると、アプリケーション・プログラミング・インターフェイス(API)ゲートウェイ662が、ブロックチェーンの論理(例えば、スマート・コントラクト630またはその他のチェーンコード)およびデータ(例えば、分散型台帳など)にアクセスするための共通インターフェイスを提供する。この例では、APIゲートウェイ662は、1つまたは複数の実体652および656をブロックチェーン・ピア(すなわち、サーバ654)に接続することによってブロックチェーンに対してトランザクション(呼び出し、問い合わせなど)を実行するための共通インターフェイスである。ここで、サーバ654は、世界状態および分散型台帳のコピーを保持するブロックチェーン・ネットワークのピア・コンポーネントであり、これらのコピーは、クライアント652および656が世界状態に関するデータを問い合わせること、およびトランザクションをブロックチェーン・ネットワークにサブミットすることを可能にし、スマート・コントラクト630および署名ポリシーに応じて、署名ピアがスマート・コントラクト630を実行する。
【0086】
前述の実施形態は、ハードウェアにおいて、プロセッサによって実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、またはこれらの組み合わせにおいて実装されてよい。コンピュータ・プログラムは、ストレージ媒体などのコンピュータ可読媒体に具現化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(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)、または従来技術において知られた任意のその他の形態のストレージ媒体に存在してよい。
【0087】
例示的なストレージ媒体は、プロセッサがストレージ媒体から情報を読み取り、ストレージ媒体に情報を書き込むことができるように、プロセッサに結合されてよい。代替方法では、ストレージ媒体はプロセッサと一体であってよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路(ASIC:application specific integrated circuit)に存在してよい。代替方法では、プロセッサおよびストレージ媒体は、個別のコンポーネントとして存在してよい。
【0088】
図7Aは、実施形態例に従って、分散型台帳720に追加されている新しいブロックのプロセス700を示しており、図7Bは、実施形態例に従って、ブロックチェーンの新しいデータ・ブロック構造730の内容を示している。図7Aを参照すると、クライアント(図示されていない)は、トランザクションをブロックチェーン・ノード711、712、または713、あるいはその組み合わせにサブミットしてよい。クライアントは、ブロックチェーン720に対する活動を規定するための、いずれかのソースから受信された命令であってよい。一例として、クライアントは、ブロックチェーンのトランザクションを提案するデバイス、人、または実体などの要求者の代わりに動作するアプリケーションであってよい。複数のブロックチェーン・ピア(例えば、ブロックチェーン・ノード711、712、および713)が、ブロックチェーン・ネットワークの状態および分散型台帳720のコピーを維持してよい。クライアントによって提案されたトランザクションをシミュレートして署名する署名ピア、および署名を検証し、トランザクションの妥当性を確認し、トランザクションを分散型台帳720にコミットするコミット・ピアを含む、さまざまな種類のブロックチェーン・ノード/ピアが、ブロックチェーン・ネットワーク内に存在してよい。この例では、ブロックチェーン・ノード711、712、および713は、署名者ノード、コミッター・ノード(committer node)、あるいはその両方の役割を実行してよい。
【0089】
分散型台帳720は、ブロック内の変更不可能な順序付けられたレコードを格納するブロックチェーン、およびブロックチェーン722の現在の状態を維持する状態データベース724(現在の世界状態)を含む。1つのチャネルにつき1つの分散型台帳720が存在してよく、各ピアが、そのピアがメンバーであるチャネルごとに、分散型台帳720のそれ自身のコピーを維持する。ブロックチェーン722は、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであり、各ブロックがN個のトランザクションのシーケンスを含む。ブロックは、図7Bに示されているコンポーネントなどの、さまざまなコンポーネントを含んでよい。ブロックのリンク(図7Aの矢印によって示されている)は、前のブロックのヘッダーのハッシュを、現在のブロックのブロック・ヘッダー内に追加することによって生成されてよい。このようにして、ブロックチェーン722上のすべてのトランザクションが、順序付けられ、暗号によって一緒にリンクされ、ハッシュ・リンクを壊さずにブロックチェーン・データを改ざんすることを防ぐ。さらに、これらのリンクのため、ブロックチェーン722内の最新のブロックが、その前に来たすべてのトランザクションを表す。ブロックチェーン722は、追加専用のブロックチェーンのワークロードをサポートするピアのファイル・システム(ローカルまたは取り付けられたストレージ)に格納されてよい。
【0090】
ブロックチェーン722および分散型台帳720の現在の状態が、状態データベース724に格納されてよい。ここで、現在の状態データは、ブロックチェーン722のチェーン・トランザクション・ログにこれまで含まれたすべてのキーの最新の値を表す。チェーンコード呼び出しは、状態データベース724内の現在の状態に対してトランザクションを実行する。それらのチェーンコードの相互作用を極めて効率的にするために、すべてのキーの最新の値が状態データベース724に格納される。状態データベース724は、ブロックチェーン722のトランザクション・ログへのインデックス付きビューを含んでよく、したがって、いつでもチェーンから再生成され得る。状態データベース724は、ピアの起動時に、トランザクションが受け取られる前に、自動的に回復されてよい(または必要な場合に生成されてよい)。
【0091】
署名ノードは、トランザクションをクライアントから受信し、シミュレーション結果に基づいてトランザクションに署名する。署名ノードは、トランザクション提案をシミュレートするスマート・コントラクトを保持する。署名ノードがトランザクションに署名するときに、署名ノードは、シミュレートされたトランザクションの署名を示す署名ノードからクライアント・アプリケーションへの署名された応答である、トランザクションの署名を生成する。トランザクションに署名する方法は、チェーンコード内で指定されることがある署名ポリシーによって決まる。署名ポリシーの例は、「署名ピアの大部分がトランザクションに署名しなければならない」である。異なるチャネルは、異なる署名ポリシーを有してよい。署名されたトランザクションは、クライアント・アプリケーションによって順序付けサービス710に転送される。
【0092】
順序付けサービス710は、署名されたトランザクションを受け取り、それらをブロック内に順序付けし、ブロックをコミット・ピアに配信する。例えば、順序付けサービス710は、トランザクションのしきい値に達したか、タイマーがタイムアウトするか、または別の条件の場合に、新しいブロックを開始してよい。図7Aの例では、ブロックチェーン・ノード712は、ブロックチェーン720に格納するための新しいデータの新しいデータ・ブロック730を受信したコミット・ピアである。ブロックチェーン内の第1のブロックは、ブロックチェーン、ブロックチェーンのメンバー、格納されたデータなどに関する情報を含んでいるジェネシス・ブロックと呼ばれてよい。
【0093】
順序付けサービス710は、順序付けノードのクラスタで構成されてよい。順序付けサービス710は、トランザクション、スマート・コントラクトを処理することも、共有台帳を維持することもない。むしろ、順序付けサービス710は、署名されたトランザクションを受け取ってよく、それらのトランザクションが分散型台帳720にコミットされる順序を指定する。ブロックチェーン・ネットワークのアーキテクチャは、「順序付け」の特定の実装(例えば、Solo、Kafka、BFTなど)が着脱可能なコンポーネントになるように設計されてよい。
【0094】
トランザクションは、一貫性のある順序で分散型台帳720に書き込まれる。トランザクションの順序は、トランザクションがネットワークにコミットされるとき状態データベース724に対する更新が有効であることを保証するように確立される。暗号パズルを解くことまたはマイニングによって順序付けが発生する暗号通貨ブロックチェーン・システム(例えば、ビットコインなど)とは異なり、この例では、分散型台帳720の関係者が、そのネットワークに最も適した順序付けメカニズムを選択してよい。
【0095】
順序付けサービス710は、新しいデータ・ブロック730を初期化し、新しいデータ・ブロック730がコミット・ピア(例えば、ブロックチェーン・ノード711、712、および713)にブロードキャストされてよい。それに応じて、各コミット・ピアは、読み取りセットおよび書き込みセットが状態データベース724内の現在の世界状態にまだ一致することをチェックして確認することによって、新しいデータ・ブロック730内のトランザクションの妥当性を確認する。特に、コミット・ピアは、署名者がトランザクションをシミュレートしたときに存在していた読み取られたデータが、状態データベース724内の現在の世界状態と同一であるかどうかを判定することができる。コミット・ピアがトランザクションの妥当性を確認した場合、トランザクションが分散型台帳720のブロックチェーン722に書き込まれ、状態データベース724が、読み取り/書き込みセットからの書き込みデータに更新される。トランザクションが失敗した場合、すなわち、コミット・ピアが、読み取り/書き込みセットが状態データベース724内の現在の世界状態に一致しないということを検出した場合、ブロック内に順序付けられたトランザクションは、そのブロックにまだ含まれるが、無効としてマーク付けされ、状態データベース724が更新されない。
【0096】
図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から開始する漸進的/連続的順序などのさまざまな順序で割り当てられてよい。
【0097】
ブロック・データ750は、新しいデータ・ブロック730内に記録された各トランザクションのトランザクション情報を格納してよい。例えば、トランザクション・データは、トランザクションの種類、バージョン、タイムスタンプ、分散型台帳720のチャネルID、トランザクションID、エポック、ペイロードの可視性、チェーンコード・パス(トランザクションのデプロイ)、チェーンコード名、チェーンコードのバージョン、入力(チェーンコードおよび関数)、公開鍵および証明書などのクライアント(作成者)の識別、クライアントの署名、署名者の識別情報、署名者の署名、提案のハッシュ、チェーンコード・イベント、応答の状態、名前空間、書き込みセット(トランザクションによって読み取られたキーおよびバージョンのリストなど)、書き込みセット(キーと値のリストなど)、開始キー、終了キー、キーのリスト、マークル・ツリー・クエリ・サマリー(Merkle tree query summary)などのうちの1つまたは複数を含んでよい。トランザクション・データは、N個のトランザクションの各々に格納されてよい。
【0098】
ブロック・メタデータ760は、メタデータの複数のフィールドを(例えば、バイト配列などとして)格納してよい。メタデータ・フィールドは、ブロック作成時の署名、最後の構成ブロックへの参照、ブロック内の有効なトランザクションと無効なトランザクションを識別するトランザクション・フィルタ、ブロックを順序付けた順序付けサービスの永続的な最後のオフセットなどを含んでよい。順序付けサービス710によって署名、最後の構成ブロック、および順序付けノードのメタデータが追加されてよい。一方、ブロックのコミッター(ブロックチェーン・ノード712など)は、署名ポリシー、読み取り/書き込みセットの検証などに基づいて、有効/無効情報を追加してよい。トランザクション・フィルタは、ブロック・データ750内のトランザクションの数に等しいサイズのバイト配列、およびトランザクションが有効/無効だったかどうかを識別する妥当性確認コードを含んでよい。
【0099】
図7Cは、本明細書に記載された実施形態に従って、デジタル・コンテンツのためのブロックチェーン770の実施形態を示している。デジタル・コンテンツは、1つまたは複数のファイルおよび関連する情報を含んでよい。これらのファイルは、媒体、画像、ビデオ、音声、テキスト、リンク、グラフィックス、アニメーション、Webページ、文書、またはデジタル・コンテンツのその他の形態を含んでよい。ブロックチェーンの変更不可能な追加専用の特徴は、デジタル・コンテンツの完全性、有効性、および信頼性を保護するための予防手段として役立ち、認容性ルールが適用される法的手続きにおいて、あるいは証拠が考慮されるか、またはデジタル情報の提示および使用がその他の方法で対象になる、その他の設定において、ブロックチェーンの使用を適切にする。この場合、デジタル・コンテンツはデジタル証拠と呼ばれることがある。
【0100】
ブロックチェーンは、さまざまな方法で形成されてよい。1つの実施形態では、デジタル・コンテンツは、ブロックチェーン自体に含まれ、ブロックチェーン自体からアクセスされてよい。例えば、ブロックチェーンの各ブロックは、参照情報(例えば、ヘッダー、値など)のハッシュ値を、関連するデジタル・コンテンツと共に格納してよい。その後、ハッシュ値および関連するデジタル・コンテンツは、一緒に暗号化されてよい。したがって、各ブロックのデジタル・コンテンツは、ブロックチェーン内の各ブロックを復号することによってアクセスされてよく、各ブロックのハッシュ値は、前のブロックを参照するための基礎として使用されてよい。これは、次のように示されてよい。
ブロック1 ブロック2・・・・ブロックN
ハッシュ値1 ハッシュ値2 ハッシュ値N
デジタル・コンテンツ1 デジタル・コンテンツ2 デジタル・コンテンツN
【0101】
1つの実施形態では、デジタル・コンテンツがブロックチェーンに含まれなくてよい。例えば、ブロックチェーンは、デジタル・コンテンツを含んでいない各ブロックの内容の暗号化されたハッシュを格納してよい。デジタル・コンテンツは、元のファイルのハッシュ値に関連して、別のストレージ領域またはメモリ・アドレスに格納されてよい。他のストレージ領域は、ブロックチェーンを格納するために使用されるストレージ・デバイスと同じストレージ・デバイスであってよく、または異なるストレージ領域もしくは分離したリレーショナル・データベースであってもよい。各ブロックのデジタル・コンテンツは、対象のブロックのハッシュ値を取得するか、または問い合わせ、次に、実際のデジタル・コンテンツに対応して格納されているハッシュ値をストレージ領域内で検索することによって、参照またはアクセスされてよい。この動作は、例えば、データベース・ゲートキーパーによって実行されてよい。これは、次のように示されてよい。
ブロックチェーン ストレージ領域
ブロック1のハッシュ値 ブロック1のハッシュ値・・・内容
・ ・
・ ・
・ ・
ブロックNのハッシュ値 ブロックNのハッシュ値・・・内容
【0102】
図7Cの実施形態例では、ブロックチェーン770は、順序付けられたシーケンスで暗号によってリンクされた複数のブロック778、778、...778を含んでおり、N≧1である。ブロック778、778、...778をリンクするための使用される暗号化は、複数の鍵付きハッシュ関数または鍵なしハッシュ関数のいずれかであってよい。1つの実施形態では、ブロック778、778、...778は、ブロック内の情報に基づいて入力からnビットの英数字出力を生成するハッシュ関数の対象になる(nは256または別の数である)。そのようなハッシュ関数の例としては、SHA型(SHAは、セキュア・ハッシュ・アルゴリズム(Secured Hash Algorithm)を表す)アルゴリズム、マークル・ダンガード・アルゴリズム、HAIFAアルゴリズム、マークル・ツリー・アルゴリズム、ノンスに基づくアルゴリズム、および非衝突耐性PRFアルゴリズムが挙げられるが、これらに限定されない。別の実施形態では、ブロック778、778、...778は、ハッシュ関数とは異なる関数によって、暗号によってリンクされてよい。例示の目的で、以下では、ハッシュ関数(例えば、SHA-2)を参照して説明が行われる。
【0103】
ブロックチェーン内のブロック778、778、...778の各々は、ヘッダー、ファイルのバージョン、および値を含む。ヘッダーおよび値は、ブロックチェーン内のハッシュ処理の結果として、ブロックごとに異なる。1つの実施形態では、値がヘッダーに含まれてよい。以下でさらに詳細に説明されるように、ファイルのバージョンは、元のファイルであるか、または元のファイルの異なるバージョンであってよい。
【0104】
ブロックチェーン内の最初のブロック778は、ジェネシス・ブロックと呼ばれ、ヘッダー772、元のファイル774、および初期値776を含んでいる。ジェネシス・ブロックに使用される(実際には、その後のすべてのブロックにおいて使用される)ハッシュ処理方式は、変化してよい。例えば、最初のブロック778内のすべての情報が一緒に同時にハッシュされてよく、または最初のブロック778内の情報の各々または一部が別々にハッシュされ、その後、別々にハッシュされた部分のハッシュが実行されてよい。
【0105】
ヘッダー772は、1つまたは複数の初期パラメータを含んでよく、初期パラメータは、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル、期間、媒体形式、ソース、記述的キーワード、あるいは元のファイル774もしくはブロックチェーンまたはその両方に関連付けられたその他の情報、あるいはその組み合わせを含んでよい。ヘッダー772は、自動的に(例えば、ブロックチェーン・ネットワーク管理ソフトウェアによって)生成されるか、またはブロックチェーンの参加者によって手動で生成されてよい。ブロックチェーン内の他のブロック778~778内のヘッダーとは異なり、ジェネシス・ブロック内のヘッダー772は、単に前のブロックが存在しないため、前のブロックを参照しない。
【0106】
ジェネシス・ブロック内の元のファイル774は、例えば、ブロックチェーンに含まれる前の処理を伴うか、または伴わずに、デバイスによって捕捉されたデータであってよい。元のファイル774は、システムのインターフェイスを介して、デバイス、媒体ソース、またはノードから受信される。元のファイル774はメタデータに関連付けられ、メタデータは、例えば、ユーザ、デバイス、またはシステム・プロセッサあるいはその組み合わせによって、手動または自動のいずれかで、生成されてよい。メタデータは、元のファイル774に関連して、最初のブロック778に含まれてよい。
【0107】
ジェネシス・ブロック内の値776は、元のファイル774の1つまたは複数の一意の属性に基づいて生成された初期値である。1つの実施形態では、1つまたは複数の一意の属性は、元のファイル774のハッシュ値、元のファイル774のメタデータ、およびファイルに関連付けられたその他の情報を含んでよい。1つの実装では、初期値776は、以下の一意の属性に基づいてよい。
1)SHA-2によって元のファイルに対して計算されたハッシュ値
2)発信デバイスID
3)元のファイルの開始タイムスタンプ
4)元のファイルの初期ストレージ位置
5)元のファイルおよび関連するメタデータを現在制御するためのソフトウェアのブロックチェーン・ネットワーク・メンバーID
【0108】
ブロックチェーン内の他のブロック778~778も、ヘッダー、ファイル、および値を含む。しかし、最初のブロック772とは異なり、他のブロック内のヘッダー772~772の各々は、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、単に前のブロックのヘッダーのハッシュであってよく、または前のブロック全体のハッシュ値であってよい。先行するブロックのハッシュ値を残りのブロックの各々に含めることによって、矢印780によって示されているように、N番目のブロックからジェネシス・ブロック(および関連する元のファイル)まで戻りブロックごとのトレースを実行することができ、監査可能かつ変更不可能な証拠保全を確立する。
【0109】
他のブロック内のヘッダー772~772の各々は、一般に、他の情報(例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル、あるいは対応するファイルもしくはブロックチェーンまたはその両方に関連付けられたその他のパラメータまたは情報、あるいはその組み合わせ)を含んでもよい。
【0110】
他のブロック内のファイル774~774は、例えば実行される処理の種類に応じて、ジェネシス・ブロック内の元のファイルと同じであってよく、または元のファイルの変更されたバージョンであってよい。実行される処理の種類は、ブロックごとに変化してよい。処理は、例えば、情報を編集するか、またはその他の方法で情報の内容を変更するか、情報をファイルから取り除くか、または情報をファイルに追加するなどの、先行するブロック内のファイルの任意の変更を含んでよい。
【0111】
追加的または代替的に、処理は、先行するブロックからファイルを単にコピーすること、ファイルのストレージ位置を変更すること、1つまたは複数の先行するブロックからのファイルを分析すること、ファイルをあるストレージまたはメモリ位置から別のストレージまたはメモリ位置に移動すること、あるいはブロックチェーンのファイルもしくは関連するメタデータまたはその両方に対して動作を実行することを含んでよい。ファイルを分析することを含んでいる処理は、例えば、さまざまな分析、統計値、またはファイルに関連付けられたその他の情報を追加すること、含めること、またはその他の方法で関連付けることを含んでよい。
【0112】
他のブロック内の他のブロック776~776の各々に含まれる値は、実行された処理の結果として、一意の値であり、すべて異なっている。例えば、いずれか1つのブロック内の値は、前のブロック内の値の更新されたバージョンに対応する。この更新は、値が割り当てられたブロックのハッシュに反映される。したがって、ブロックの値は、ブロック内で何の処理が実行されたかの指示を提供し、ブロックチェーンを元のファイルまで戻りトレースすることも可能にする。このトレースは、ブロックチェーン全体を通じて、ファイルの証拠保全を確認する。
【0113】
例えば、ファイル内で示されている人の識別情報を保護するために、前のブロック内のファイルの一部が編集されるか、遮断されるか、または画素化される場合について考える。この場合、編集されたファイルを含んでいるブロックは、例えば、編集がどのように実行されたか、誰が編集を実行したか、編集が発生したタイムスタンプなどの、編集されたファイルに関連付けられたメタデータを含むであろう。このメタデータがハッシュされ、値を形成してよい。ブロックのメタデータが、前のブロック内の値を形成するためにハッシュされた情報と異なっているため、値は、互いに異なっており、復号されたときに回復されてよい。
【0114】
1つの実施形態では、次のうちのいずれか1つまたは複数が発生した場合に、現在のブロックの値を形成するように、前のブロックの値が更新されてよい(例えば、新しいハッシュ値が計算されてよい)。新しいハッシュ値は、この実施形態例では、以下に示された情報のすべてまたは一部をハッシュすることによって計算されてよい。
a)ファイルがいずれかの方法で処理された場合(例えば、ファイルが編集されたか、コピーされたか、変更されたか、アクセスされたか、またはその他の動作が実行された場合)に、新しいSHA-2によって計算されたハッシュ値
b)ファイルの新しいストレージ位置
c)ファイルに関連付けられている識別された新しいメタデータ
d)あるブロックチェーンの参加者から別のブロックチェーンの参加者へのファイルのアクセスまたは制御の移動
【0115】
図7Dは、1つの実施形態例に従って、ブロックチェーン790内のブロックの構造を表すことができるブロックの実施形態を示している。ブロック(ブロック)は、ヘッダー772、ファイル774、および値776を含んでいる。
【0116】
ヘッダー772は、本明細書において説明された、前のブロック(ブロックi-1)のハッシュ値、および例えば情報の種類のいずれかであってよい、追加の参照情報(例えば、参照、特性、パラメータなどを含んでいるヘッダー情報)を含む。すべてのブロックは、当然ながらジェネシス・ブロックを除いて、前のブロックのハッシュを参照する。前のブロックのハッシュ値は、単に前のブロック内のヘッダーのハッシュであるか、またはファイルおよびメタデータを含む、前のブロック内の情報のすべてもしくは一部のハッシュであってよい。
【0117】
ファイル774は、データ1、データ2、...、データNなどの複数のデータを順に含んでいる。データは、データに関連付けられた内容または特性あるいはその両方を記述するメタデータ(メタデータ1、メタデータ2、...、メタデータN)でタグ付けされる。例えば、データごとのメタデータは、データのタイムスタンプ、データのプロセス、データに示された人またはその他の内容を示しているキーワード、またはファイルの有効性および内容を全体として確立し、特に、例えば以下で説明される実施形態に関連して説明されるように、デジタル証拠を使用するのに役立つことができるその他の特徴、あるいはその組み合わせを示すための情報を含んでよい。メタデータに加えて、各データは、改ざん、ファイル内のギャップ、およびファイル全体の連続的な参照を防ぐために、前のデータへの参照(参照、参照、...、参照)でタグ付けされてよい。
【0118】
メタデータが(例えば、スマート・コントラクトを介して)データに割り当てられた後に、ハッシュを変更せずにメタデータを変更することはできず、ハッシュの変更は、無効であると容易に識別され得る。したがって、メタデータは、ブロックチェーン内の参加者による使用のためにアクセスされてよい、情報のデータ・ログを作成する。
【0119】
値776は、前に説明された情報の種類のいずれかに基づいて計算されたハッシュ値またはその他の値である。例えば、いずれかの特定のブロック(ブロック)の場合、そのブロックの値は、そのブロックに対して実行された処理(例えば、新しいハッシュ値、新しいストレージ位置、関連するファイルの新しいメタデータ、制御もしくはアクセスの移動、識別子、またはその他の動作もしくは追加される情報)を反映するように更新されてよい。各ブロック内の値が、ファイルおよびヘッダーのデータのメタデータから分離しているように示されているが、別の実施形態では、値は、このメタデータに部分的または全体的に基づいてよい。
【0120】
ブロックチェーン770が形成された後に、いずれかの時点で、ブロック全体にわたる値のトランザクション履歴に関してブロックチェーンに問い合わせることによって、ファイルの変更不可能な証拠保全が取得されてよい。この問い合わせ手順または追跡手順は、最後に含まれたブロック(例えば、最後の(N番目の)ブロック)の値を復号することから開始してよく、その後、ジェネシス・ブロックに達し、元のファイルが回復されるまで、他のブロックの値を復号し続ける。復号は、さらに各ブロックでヘッダーおよびファイルならびに関連するメタデータを復号することを含んでもよい。
【0121】
復号は、各ブロックで行われた暗号化の種類に基づいて実行される。この復号は、秘密鍵、公開鍵、または公開鍵と秘密鍵のペアの使用を含んでよい。例えば、非対称暗号化が使用される場合、ブロックチェーンの参加者またはネットワーク内のプロセッサが、既定のアルゴリズムを使用して公開鍵および秘密鍵のペアを生成してよい。公開鍵および秘密鍵は、何らかの数学的関係によって互いに関連付けられる。公開鍵は、他のユーザからメッセージを受信するためのアドレス(例えば、IPアドレスまたは自宅住所)として機能するように、パブリックに配布されてよい。秘密鍵は、秘密に保たれ、他のブロックチェーンの参加者に送信されるメッセージにデジタル署名するために使用される。署名は、受信者が送信者の公開鍵を使用して検証することができるように、メッセージに含まれる。このようにして、受信者は、送信者のみがこのメッセージを送信できたということを確信することができる。
【0122】
鍵のペアを生成することは、ブロックチェーンにアカウントを作成することに類似しているが、実際は、どこにも登録する必要はない。また、ブロックチェーンに対して実行されたすべてのトランザクションが、秘密鍵を使用して送信者によってデジタル署名される。この署名は、アカウントの所有者のみが(スマート・コントラクトによって決定された許可の範囲内である場合に)ブロックチェーンのファイルを追跡して処理することができるということを保証する。
【0123】
図8Aおよび8Bは、本明細書に組み込まれて使用されてよい、ブロックチェーンの追加の使用事例を示している。特に、図8Aは、機械学習(人工知能)データを格納するブロックチェーン810の例800を示している。機械学習は、新しいデータに対する正確な予測のための予測モデルを構築するために、大量の履歴データ(またはトレーニング・データ)に依存する。機械学習ソフトウェア(例えば、ニューラル・ネットワークなど)は、多くの場合、非直感的パターンを発見するために、数百万レコードを取捨選択することができる。
【0124】
図8Aの例では、ホスト・プラットフォーム820が、アセット830の予測監視のための機械学習モデルを構築してデプロイする。ここで、ホスト・プラットフォーム820は、クラウド・プラットフォーム、工業用サーバ、Webサーバ、パーソナル・コンピュータ、ユーザ・デバイスなどであってよい。アセット830は、航空機、機関車、タービン、医療機器、石油ガス機器、ボート、船、車両などの、任意の種類のアセット(例えば、機械または機器など)であることができる。別の例として、アセット830は、株式、通貨、デジタル・コイン、保険などの、無形のアセットであってよい。
【0125】
ブロックチェーン810は、機械学習モデルのトレーニング・プロセス802およびトレーニング済み機械学習モデルに基づく予測プロセス804の両方を大幅に改善するために使用され得る。例えば、802では、データを収集するためにデータ科学者/技術者またはその他のユーザを必要とするのではなく、アセット830自体によって(または、図示されていない中間物を介して)、ブロックチェーン810に関する履歴データが格納されてよい。これによって、予測モデルのトレーニングを実行するときにホスト・プラットフォーム820によって必要とされる収集時間を大幅に減らすことができる。例えば、スマート・コントラクトを使用して、データを、元の場所からブロックチェーン810に真っすぐに、直接かつ確実に転送することができる。スマート・コントラクトは、ブロックチェーン810を使用して、収集されたデータのセキュリティおよび所有権を保証することによって、アセットから、機械学習モデルを構築するためにデータを使用する個人に、データを直接送信することができる。これによって、アセット830間のデータの共有を可能にする。
【0126】
収集されたデータは、合意メカニズムに基づいてブロックチェーン810に格納されてよい。合意メカニズムは、記録されているデータが検証されており、正確であることを保証するために、(許可されたノードを)制御する。記録されたデータは、タイムスタンプが付与され、暗号によって署名されており、変更不可能である。したがって、記録されたデータは、監査可能、透過的、かつ安全である。ブロックチェーンに直接書き込むIoTデバイスを追加することによって、特定の場合(すなわち、サプライ・チェーン、医療、物流などの場合)に、データが記録される頻度を増やし、その精度を向上させることができる。
【0127】
さらに、収集されたデータに対する機械学習モデルのトレーニングは、ホスト・プラットフォーム820による一連の改良およびテストを必要とし得る。各改良およびテストは、機械学習モデルの知識を拡張するのに役立つように、追加データまたは以前に考慮されなかったデータに基づいてよい。802では、ホスト・プラットフォーム820によって、異なるトレーニング・ステップおよびテスト・ステップ(および関連するデータ)がブロックチェーン810に格納されてよい。機械学習モデルの各改良(例えば、変数、重みなどにおける変更)は、ブロックチェーン810に格納されてよい。これによって、モデルがどのようにトレーニングされたか、およびモデルをトレーニングするためにどのデータが使用されたかの検証可能な証明を提供する。さらに、ホスト・プラットフォーム820が最終的なトレーニング済みモデルを実現した場合、得られたモデルがブロックチェーン810に格納されてよい。
【0128】
モデルがトレーニングされた後に、そのモデルは、活動中の環境にデプロイされてよく、最終的なトレーニング済み機械学習モデルの実行に基づく予測/決定を行うことができる。例えば、804で、機械学習モデルは、航空機、風力タービン、医療機械などのアセットのための状態監視保全(CBM:condition-based maintenance)に使用されてよい。この例では、アセット830からフィードバックされたデータが機械学習モデルに入力され、故障イベント、エラー・コードなどのイベント予測を行うために使用されてよい。ホスト・プラットフォーム820で機械学習モデルの実行によって行われた決定は、監査可能/検証可能な証明を提供するために、ブロックチェーン810に格納されてよい。1つの非限定的な例として、機械学習モデルは、アセット830の部品での将来の停止/故障を予測し、その部品を交換するように警告または通知を作成してよい。この決定の背後にあるデータが、ホスト・プラットフォーム820によってブロックチェーン810に格納されてよい。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン810で、またはブロックチェーン810に関して発生することができる。
【0129】
ブロックチェーンの新しいトランザクションが新しいブロックに一緒に集められ、既存のハッシュ値に追加されることができる。次に、このハッシュ値が暗号化されて、新しいブロックの新しいハッシュを生成する。この新しいハッシュが、トランザクションが暗号化されるときなどに、トランザクションの次のリストに追加される。この結果は、先行するすべてのブロックのハッシュ値をそれぞれ含んでいるブロックのチェーンである。これらのブロックを格納するコンピュータは、ブロックのハッシュ値を定期的に比較し、それらのコンピュータがすべて合意していることを確認する。合意していないすべてのコンピュータは、問題を引き起こしているレコードを破棄する。この方法は、ブロックチェーンの改ざん防止を保証することに適しているが、完璧ではない。
【0130】
このシステムを不正に操作する1つの方法は、不正なユーザが、ハッシュを変更しないような方法で、トランザクションのリストを自分の都合の良いように変更することである。これは、総当たり攻撃によって実行されることができ、言い換えると、レコードを変更し、結果を暗号化し、ハッシュ値が同じであるかどうかを確認することによって、実行されることができる。ハッシュ値が同じでない場合、一致するハッシュを見つけるまで、何度も繰り返して試みる。ブロックチェーンのセキュリティは、通常のコンピュータが、宇宙の年齢などの、全く非実用的な時間的尺度にわたってしかこの種の総当たり攻撃を実行できないという考えに基づく。それに対して、量子コンピュータは非常に高速(数千倍高速)であり、したがって、非常に大きい脅威をもたらす。
【0131】
図8Bは、量子コンピューティング攻撃に対して保護するために量子鍵配送(QKD:quantumkey distribution)を実装する量子セキュアなブロックチェーン852の例850を示している。この例では、ブロックチェーン・ユーザは、QKDを使用して互いの識別情報を検証することができる。この検証では、光子などの量子的粒子を使用して情報を送信し、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、送信者および受信者が、ブロックチェーンを介して、互いの識別情報を確認することができる。
【0132】
図8Bの例では、4人のユーザ(854、856、858、および860)が存在している。ユーザのペアの各々は、ユーザ自身の間で秘密鍵862(すなわち、QKD)を共有することができる。この例には4つのノードが存在するため、ノードの6つのペアが存在し、したがって、QKDAB、QKDAC、QKDAD、QKDBC、QKDBD、およびQKDCDを含む6つの異なる秘密鍵862が使用される。各ペアは、光子などの量子的粒子を使用して情報を送信することによってQKDを作成することができ、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、ユーザのペアが互いの識別情報を確認することができる。
【0133】
ブロックチェーン852の動作は、(i)トランザクションの作成、および(ii)新しいトランザクションを集めるブロックの構築という2つの手順に基づく。新しいトランザクションは、従来のブロックチェーン・ネットワークと同様に作成されてよい。各トランザクションは、送信者、受信者、作成時間、転送される量(または値)、送信者が操作のための資金を持っていることを正当化する参照トランザクションのリストに関する情報などを含んでよい。次に、このトランザクション・レコードは、すべての他のノードに送信され、未確認トランザクションのプールに入力される。ここで、2人の関係者(すなわち、854~860のうちのユーザのペア)が、共有秘密鍵862(QKD)を提供することによって、トランザクションを認証する。この量子署名は、すべてのトランザクションに添付され、改ざんを極めて困難にすることができる。各ノードは、ブロックチェーン852のローカル・コピーに関してトランザクションのエントリをチェックし、各トランザクションが十分な資金を持っていることを検証する。しかし、トランザクションはまだ確認されていない。
【0134】
ブロックに対して従来のマイニング・プロセスを実行するのではなく、ブロードキャスト・プロトコルを使用して、分散された方法でブロックが作成されてよい。既定の期間(例えば、数秒、数分、数時間など)に、ネットワークがブロードキャスト・プロトコルをいずれかの未確認トランザクションに適用してよく、それによって、トランザクションの正しいバージョンに関してビザンチン合意(合意)を達成する。例えば、各ノードは、プライベートな値(その特定のノードのトランザクション・データ)を所有してよい。1回目に、ノードは、プライベートな値を互いに送信する。その後、ノードは、前回他のノードから受信した情報を伝達する。ここで、本物のノードが、新しいブロック内のトランザクションの完全なセットを作成することができる。この新しいブロックは、ブロックチェーン852に追加されることができる。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン852で、またはブロックチェーン852に関して発生することができる。
【0135】
図9は、本明細書において説明されたか、または示されたか、あるいはその両方である実施形態例のうちの1つまたは複数をサポートする例示的なシステム900を示している。システム900は、他の多数の汎用または特殊用途のコンピューティング・システム環境または構成で運用できるコンピュータ・システム/サーバ902を備えている。コンピュータ・システム/サーバ902と共に使用するのに適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0136】
コンピュータ・システム/サーバ902は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含んでよい。コンピュータ・システム/サーバ902は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
【0137】
図9に示すように、クラウド・コンピューティング・ノード900内のコンピュータ・システム/サーバ902は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ902のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット904、システム・メモリ906、およびシステム・メモリ906を含むさまざまなシステム・コンポーネントをプロセッサ904に結合するバスを含んでよいが、これらに限定されない。
【0138】
バスは、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含むが、これらに限定されない。
【0139】
コンピュータ・システム/サーバ902は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ902によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。システム・メモリ906は、1つの実施形態では、他の図のフロー図を実装する。システム・メモリ906は、ランダム・アクセス・メモリ(RAM:random access memory)910またはキャッシュ・メモリ912あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ902は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム914を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバスに接続することができる。下で詳細に示され、説明されるように、メモリ906は、本出願のさまざまな実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含んでよい。
【0140】
例えば、一連の(少なくとも1つの)プログラム・モジュール918を含んでいるプログラム/ユーティリティ916がメモリ906に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール918は、通常、本明細書に記載された本出願のさまざまな実施形態の機能または方法あるいはその両方を実行する。
【0141】
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化されてよい。したがって、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様を組み合わせる実施形態の形態を取ってよく、これらはすべて、本明細書では、一般に「回路」、「モジュール」、または「システム」と呼ばれてよい。さらに、本出願の形態は、コンピュータ可読プログラム・コードが具現化されている1つまたは複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態を取ってよい。
【0142】
また、コンピュータ・システム/サーバ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システム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0143】
システム、方法、および非一過性コンピュータ可読媒体のうちの少なくとも1つの実施形態例が添付の図面において示され、前述の詳細な説明において説明されたが、本出願が、開示された実施形態に限定されず、以下の特許請求の範囲によって示され、定義されているように、多数の再配置、変更、および置き換えを行うことができるということが理解されるであろう。例えば、さまざまな図のシステムの機能は、本明細書に記載されたモジュールまたはコンポーネントのうちの1つまたは複数によって、あるいは分散アーキテクチャにおいて実行することができ、送信器、受信器、またはその両方のペアを含んでよい。例えば、個々のモジュールによって実行される機能の全部または一部は、それらのモジュールのうちの1つまたは複数によって実行されてよい。さらに、本明細書に記載された機能は、さまざまな時間に、さまざまなイベントに関して、モジュールまたはコンポーネントの内部または外部で、実行されてよい。また、さまざまなモジュールの間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、または複数のプロトコルを介して、あるいはその組み合わせを介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、または他のモジュールのうちの1つまたは複数を介して、あるいはその両方によって、送信または受信されてよい。
【0144】
当業者は、「システム」を、パーソナル・コンピュータ、サーバ、コンソール、PDA(personal digital assistant)、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意のその他の適切なコンピューティング・デバイス、あるいはデバイスの組み合わせとして具現化できるということを、理解するであろう。「システム」によって実行されている前述の機能を提示することは、本出願の範囲を限定するように全く意図されておらず、多くの実施形態のうちの1つの例を提供するよう意図されている。実際に、本明細書で開示された方法、システム、および装置は、計算技術に一致する局所的な分散された形態で実装されてよい。
【0145】
本明細書において説明されたシステムの特徴の一部が、それらの実装の独立性を特により強調するために、モジュールとして提示されていることに、注意するべきである。例えば、モジュールは、カスタム超大規模集積(VLSI:very large-scale integration)回路またはゲート・アレイ、論理チップなどの市販の半導体、トランジスタ、またはその他の個別のコンポーネントを備えているハードウェア回路として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理デバイス、グラフィックス・プロセッシング・ユニットなどの、プログラム可能なハードウェア・デバイスにおいて実装されてもよい。
【0146】
モジュールは、さまざまな種類のプロセッサによって実行するために、ソフトウェアにおいて少なくとも部分的に実装されてもよい。例えば、実行可能コードの識別されたユニットは、例えばオブジェクト、プロシージャ、または関数として編成されてよいコンピュータ命令の1つまたは複数の物理的または論理的ブロックを備えてよい。それにもかかわらず、識別されたモジュールの実行可能によって、物理的に一緒に配置される必要はなく、異なる位置に格納された異種の命令を含んでよく、それらの命令は、論理的に一緒に結合された場合にモジュールを備え、モジュールの規定された目的を達成する。さらに、モジュールはコンピュータ可読媒体に格納されてよく、このコンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、またはデータの格納に使用される任意のその他の媒体であってよい。
【0147】
実際に、実行可能コードのモジュールは、単一の命令であるか、または多くの命令であることができ、複数の異なるコード・セグメントにわたって、異なるプログラム間および複数のメモリ・デバイスにまたがって、分散されてもよい。同様に、操作可能なデータが、識別され、本明細書ではモジュール内で示されてよく、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内で編成されてよい。操作可能なデータは、単一のデータ・セットとして収集されてよく、または異なるストレージ・デバイスを含む、異なる位置にわたって分散されてよく、システムまたはネットワーク上の単なる電子信号として、少なくとも部分的に存在してよい。
【0148】
本明細書の図において概略的に説明され、示されているように、本出願のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、実施形態の詳細な説明は、請求される本出願の範囲を限定するよう意図されておらず、単に、本出願の選択された実施形態を表している。
【0149】
当業者は、開示された順序とは異なる順序でステップを使用して、または開示された構成におけるハードウェア要素とは異なるハードウェア要素を使用して、あるいはその両方を使用して、前述の内容を実践できるということを、容易に理解するであろう。したがって、本出願は、これらの好ましい実施形態に基づいて説明されたが、特定の変更、変形、および代替の構造が明白であるということは、当業者にとって明らかであろう。
【0150】
本出願の好ましい実施形態が説明されたが、説明された実施形態が単なる例であり、それらの実施形態と同等のものおよびそれらの実施形態に対する変更の完全な範囲(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど)で考えた場合、本出願の範囲が添付の特許請求の範囲のみによって定義されるべきであるということが、理解されるべきである。
図1
図2A
図2B
図3A
図3B
図3C
図4A
図4B
図4C
図5
図6A
図6B
図6C
図6D
図7A
図7B
図7C
図7D
図8A
図8B
図9