(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-26
(45)【発行日】2024-03-05
(54)【発明の名称】ブロックチェーンの設定可能なオフチェーンストレージに関するコンピューティングシステム
(51)【国際特許分類】
G06F 16/28 20190101AFI20240227BHJP
H04L 9/32 20060101ALI20240227BHJP
【FI】
G06F16/28
H04L9/32 200Z
(21)【出願番号】P 2022558213
(86)(22)【出願日】2021-02-26
(86)【国際出願番号】 US2021020061
(87)【国際公開番号】W WO2021194692
(87)【国際公開日】2021-09-30
【審査請求日】2022-11-21
(32)【優先日】2020-03-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522376667
【氏名又は名称】ハイランド ソフトウェア インコーポレイテッド
【氏名又は名称原語表記】HYLAND SOFTWARE, INC.
(74)【代理人】
【識別番号】110003476
【氏名又は名称】弁理士法人瑛彩知的財産事務所
(72)【発明者】
【氏名】ヨーク,スコット
(72)【発明者】
【氏名】シーザー,スコット
(72)【発明者】
【氏名】バビッチ,サム
【審査官】和田 財太
(56)【参考文献】
【文献】特開2017-204707(JP,A)
【文献】特開2018-133080(JP,A)
【文献】米国特許出願公開第2019/0356493(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
サーバコンピューティングデバイスであって、
プロセッサと、データストアと、命令を記憶したメモリとを含み、
前記命令を実行する前記プロセッサが、
第1のエンタープライズの第1のコンピューティングデバイスから、コンピュータ可読コンテンツと該コンピュータ可読コンテンツのメタデータとを含んだ第1のトランザクションリクエストを受信し、
前記第1のトランザクションリクエストを受信すると前記コンピュータ可読コンテンツの前記メタデータに基づいて第1のハッシュを生成し、
前記コンピュータ可読コンテンツと前記コンピュータ可読コンテンツの前記メタデータとを前記データストアに保存すると前記コンピュータ可読コンテンツのコンテンツ識別子を生成し、
前記第1のハッシュと前記コンテンツ識別子とに基づいて第2のハッシュを生成し、
ブロックチェーンネットワーク内の複数のコンピューティングデバイスによって維持されるブロックチェーンに対し、前記第2のハッシュを含むブロックが追加されるようにし、前記複数のコンピューティングデバイスは前記ブロックチェーンに対する前記ブロックの追加に関してコンセンサスを達成し、このコンセンサスの達成に応じてトランザクション識別子が生成され、
前記コンセンサスが達成されると前記データストアに前記トランザクション識別子を保存し、
第2のエンタープライズの第2のコンピューティングデバイスから、前記コンピュータ可読コンテンツの識別子を含む第2のトランザクションリクエストを受信すると、前記コンピュータ可読コンテンツの前記識別子、前記ブロックチェーン内の前記ブロック、及び前記トランザクション識別子に基づいて、前記コンピュータ可読コンテンツへのアクセスを前記第2のコンピューティングデバイスに提供
し、
選択的に、前記第1のトランザクションリクエストを受信する前に、前記ブロックチェーンのインスタンスが前記複数のコンピューティングデバイスの各々に配布されるようにし、これにより前記ブロックチェーンネットワークを生成する、機能を実行する、サーバコンピューティングデバイス。
【請求項2】
前記ブロックが前記ブロックチェーンに追加されるようにする前に、シェアトークンを生成し、該シェアトークンが前記第2のコンピューティングデバイスのユーザの識別子を含み、前記ブロックが、タイムスタンプ、前記シェアトークン、及び前記ブロックチェーン内の前のブロックのハッシュをさらに含んでいる、機能をさらに含む、請求項1に記載のサーバコンピューティングデバイス。
【請求項3】
前記コンピュータ可読コンテンツへのアクセスを前記第2のコンピューティングデバイスに提供する機能は、
前記コンピュータ可読コンテンツの前記識別子及び前記コンテンツ識別子に基づいて、前記データストアから前記コンピュータ可読コンテンツを検索し、
前記コンピュータ可読コンテンツのテストハッシュを生成し、
前記トランザクション識別子を使用して前記ブロックチェーンから前記第2のハッシュを検索し、
前記テストハッシュと前記第2のハッシュとの比較を実行し、
該比較によって前記テストハッシュと前記第2のハッシュとが一致することが示された場合に、前記コンピュータ可読コンテンツへのアクセスを提供する、ことを含む、請求項1に記載のサーバコンピューティングデバイス。
【請求項4】
前記第1のコンピューティングデバイス及び前記第2のコンピューティングデバイスが前記ブロックチェーンネットワークのメンバーである、請求項1に記載のサーバコンピューティングデバイス。
【請求項5】
前記第2のコンピューティングデバイスが前記ブロックチェーンネットワークのメンバーではない、請求項1に記載のサーバコンピューティングデバイス。
【請求項6】
前記コンピュータ可読コンテンツが、オーディオコンテンツ、ビデオコンテンツ、又はイメージコンテンツを含む、請求項1に記載のサーバコンピューティングデバイス。
【請求項7】
前記ブロックチェーンネットワークがプライベートブロックチェーンネットワークである、請求項1に記載のサーバコンピューティングデバイス。
【請求項8】
当該サーバコンピューティングデバイスは、エンタープライズコンテンツ管理システム
を含む、請求項1に記載のサーバコンピューティングデバイス。
【請求項9】
サーバコンピューティングデバイスのプロセッサによって実行される方法であって、
第1のエンタープライズの第1のコンピューティングデバイスから、コンピュータ可読コンテンツと該コンピュータ可読コンテンツのメタデータとを含む第1のトランザクションリクエストを受信し、
前記第1のトランザクションリクエストを受信すると前記コンピュータ可読コンテンツの前記メタデータに基づいて第1のハッシュを生成し、
前記サーバコンピューティングデバイスのアクセス可能なデータストアに前記コンピュータ可読コンテンツと前記コンピュータ可読コンテンツの前記メタデータとを保存すると、前記コンピュータ可読コンテンツのコンテンツ識別子を生成し、
前記第1のハッシュと前記コンテンツ識別子に基づいて第2のハッシュを生成し、
ブロックチェーンネットワーク内の複数のコンピューティングデバイスによって維持されるブロックチェーンに対し、前記第2のハッシュを含むブロックが追加されるようにし、前記複数のコンピューティングデバイスは前記ブロックチェーンに対する前記ブロックの追加に関してコンセンサスを達成し、このコンセンサスの達成に応じてトランザクション識別子及びキーが生成され、
前記コンセンサスが達成されると前記データストアに前記トランザクション識別子及び前記キーを保存し、
第2のエンタープライズの第2のコンピューティングデバイスから、前記コンピュータ可読コンテンツの識別子を含む第2のトランザクションリクエストを受信すると、前記コンピュータ可読コンテンツの前記識別子、前記ブロックチェーン内の前記ブロック、前記トランザクション識別子、及び前記キーに基づいて、前記コンピュータ可読コンテンツへのアクセスを前記第2のコンピューティングデバイスに提供する、ことを含
み、
さらに、選択的に、
前記第2のエンタープライズの前記第2のコンピューティングデバイスから、変更されたコンピュータ可読コンテンツと該変更されたコンピュータ可読コンテンツの変更されたメタデータとを含む第3のトランザクションリクエストを受信し、
前記第3のトランザクションリクエストを受信すると前記変更されたコンピュータ可読コンテンツの前記変更されたメタデータに基づいて第3のハッシュを生成し、
前記変更されたコンピュータ可読コンテンツと前記変更されたコンピュータ可読コンテンツの前記変更されたメタデータとを前記データストアに保存すると、前記コンピュータ可読コンテンツの変更されたコンテンツ識別子を生成し、
前記第3のハッシュと前記変更されたコンテンツ識別子とに基づいて第4のハッシュを生成し、
前記ブロックチェーンに対し、前記第4のハッシュを含む第2のブロックが追加されるようにし、前記複数のコンピューティングデバイスは前記ブロックチェーンに対する前記第2のブロックの追加に関して第2のコンセンサスを達成し、この第2のコンセンサスの達成に応じて第2のトランザクション識別子及び第2のキーが生成され、
前記第2のコンセンサスが達成されると前記第2のトランザクション識別子及び前記第2のキーを前記データストアに保存する、ことを含む、方法。
【請求項10】
前記コンピュータ可読コンテンツへのアクセスを前記第2のコンピューティングデバイスに提供するときに、
前記コンピュータ可読コンテンツの前記識別子及び前記コンテンツ識別子に基づいて前記データストアから前記コンピュータ可読コンテンツを検索し、
前記コンピュータ可読コンテンツのテストハッシュを生成し、
前記トランザクション識別子に基づいて前記ブロックチェーンから前記第2のハッシュを検索し、
前記テストハッシュと前記第2のハッシュとの比較を実行し、
該比較によって前記テストハッシュと前記第2のハッシュとが一致することが示された場合に、前記コンピュータ可読コンテンツへのアクセスを提供する、ことを含む、
請求項9に記載の方法。
【請求項11】
前記第1のコンピューティングデバイスが、前記コンピュータ可読コンテンツと前記コンピュータ可読コンテンツの前記メタデータを発生し、
前記第1のエンタープライズのエンタープライズサーバコンピューティングデバイスが、前記コンピュータ可読コンテンツと前記コンピュータ可読コンテンツの前記メタデータとを検証し、
前記エンタープライズサーバコンピューティングデバイスが前記コンピュータ可読コンテンツと前記メタデータとを検証すると、前記第1のコンピューティングデバイスが、前記コンピュータ可読コンテンツと前記メタデータとを前記サーバコンピューティングデバイスに送信し、
又は、
前記コンピュータ可読コンテンツが前記キーを用いて暗号化され、
該コンピュータ可読コンテンツは、前記第2のコンピューティングデバイスが前記コンピュータ可読コンテンツへのアクセスを提供されるときに、前記キーを用いて復号される、請求項9に記載の方法。
【請求項12】
前記コンピュータ可読コンテンツの複数のコピーを生成し、
前記コンピュータ可読コンテンツの前記複数のコピーが複数のデータストアに保存されるようにする、ことをさらに含む、
請求項9記載の方法。
【請求項13】
前記コンピュータ可読コンテンツと前記コンピュータ可読コンテンツの前記メタデータとを受信する前に、前記第1のコンピューティングデバイスのユーザのユーザクレデンシャルを受信し、
前記ユーザクレデンシャルに基づいて前記ユーザを認証するとトークンを生成し、
該トークンを前記第1のコンピューティングデバイスに送信し、前記第1のコンピューティングデバイスは、前記ブロックチェーンにアクセスするために前記トークンを利用する、ことをさらに含む、
請求項9に記載の方法。
【請求項14】
命令を記憶したコンピュータ可読ストレージ媒体であって、
前記命令は、サーバコンピューティングデバイスのプロセッサによって実行されたときに、
第1のエンタープライズの第1のコンピューティングデバイスから、コンピュータ可読コンテンツと該コンピュータ可読コンテンツのメタデータとを含む第1のトランザクションリクエストを受信し、
前記第1のトランザクションリクエストを受信すると前記コンピュータ可読コンテンツの前記メタデータに基づいて第1のハッシュを生成し、
前記コンピュータ可読コンテンツと前記コンピュータ可読コンテンツの前記メタデータをデータストアに保存すると、前記コンピュータ可読コンテンツのコンテンツ識別子を生成し、
前記第1のハッシュと前記コンテンツ識別子とに基づいて第2のハッシュを生成し、
ブロックチェーンネットワーク内の複数のコンピューティングデバイスによって維持されるブロックチェーンに対し、前記第2のハッシュを含むブロックが追加されるようにし、前記複数のコンピューティングデバイスは前記ブロックチェーンに対する前記ブロックの追加に関してコンセンサスを達成し、このコンセンサスの達成に応じてトランザクション識別子が生成され、
前記コンセンサスが達成されると前記データストアに前記トランザクション識別子を保存し、
第2のコンピューティングデバイスから前記コンピュータ可読コンテンツの識別子を含む第2のトランザクションリクエストを受信すると、前記コンピュータ可読コンテンツの前記識別子、前記ブロックチェーン内の前記ブロック、及び前記トランザクション識別子に基づいて、前記コンピュータ可読コンテンツへのアクセスを前記第2のコンピューティングデバイスに提供する、機能を前記プロセッサに実行させる、コンピュータ可読ストレージ媒体。
【請求項15】
前記第1のコンピューティングデバイス及び前記第2のコンピューティングデバイスが、それぞれ前記ブロックチェーンのインスタンスを維持する、
請求項14に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンのオフチェーンストレージに関する。
【背景技術】
【0002】
ブロックチェーン(ブロック-チェーンとされることもある)技術は、さまざまな暗号化方法を使用してリンクされたコンピュータ可読レコード(ブロックと呼ばれる)の連続拡張リストを指す。ブロックチェーン内の各ブロックは、ブロックチェーン内の前のブロックの暗号化ハッシュ、タイムスタンプ、及びトランザクションデータで構成される。ブロックチェーンは、コンソーシアムと呼ばれることもある、関連ユーザのグループのコンピューティングデバイスによって利用される。ユーザそれぞれのコンピューティングデバイスにはブロックチェーンのコピーがある。ブロックチェーン中のブロックは、それぞれの後続のブロックを変更することなく変更することはできず、これにはユーザのコンピューティングデバイス間でのコンセンサスが必要である。各後続ブロックを変更するには相当な量のコンピューティングパワーが必要であり、これによりブロックチェーンは、ユーザが独自にトランザクションを検証し監査する集中型ではない分散させた方法を提供する。ブロックチェーン技術は、暗号通貨やスマートコントラクトを含む様々な分野で応用される。
【0003】
コンソーシアムの各コンピューティングデバイスがブロックチェーンの完全なコピーを維持し、各トランザクションがブロックチェーンの新しいブロックに記録されることから、ブロックチェーンを記憶するコンピュータストレージの要件が時間の経過と共に大きくなる可能性がある。さらに言えば、コンピュータの記憶容量は限られているため、ある種のデータ(例えば、イメージ、ドキュメント、オーディオ)をブロックチェーンそのものに記憶することは現実的ではない。その結果、ある種のデータはブロックチェーンで参照とされる場合があり、ブロックチェーンそのものとは別に保存されることがある(「オフチェーンコンテンツ」と呼ばれる)。
【0004】
オフチェーンコンテンツを保存する従来の手法には様々な不具合がある。第一に、従来の手法は、ブロックチェーンネットワークで維持されるブロックチェーンとオフチェーンストレージのストレージフォーマットとの間の密結合に依存する傾向がある。第二に、従来の手法は、様々なエンタープライズに属する多数のユーザにはうまく拡大しない傾向がある。第三に、従来の手法は、ブロックチェーンネットワークのメンバーではないユーザにオフチェーンコンテンツへのアクセスを許可しない傾向がある。第四に、従来の手法は、既存のエンタープライズプラットフォームにうまく統合されない。
【発明の概要】
【0005】
次に述べるのは、本明細書でより詳細に説明される主題の概要である。当概要は、特許請求の範囲に対して限定を加えるものではない。
【0006】
サーバコンピューティングデバイスは、第1のエンタープライズの第1のコンピューティングデバイスから第1のトランザクションリクエストを受信する。第1のトランザクションリクエストは、コンピュータ可読コンテンツと、該コンピュータ可読コンテンツのメタデータとを含む。サーバコンピューティングデバイスは、第1のトランザクションリクエストを受信すると、コンピュータ可読コンテンツのメタデータに基づいて第1のハッシュを生成する。コンピュータ可読コンテンツと該コンピュータ可読コンテンツのメタデータとをデータストアに保存すると、サーバコンピューティングデバイスは、コンピュータ可読コンテンツのコンテンツ識別子を生成する。サーバコンピューティングデバイスは、第1のハッシュとコンテンツ識別子とに基づいて第2のハッシュを生成する。サーバコンピューティングデバイスは、ブロックチェーンネットワーク内の複数のコンピューティングデバイスにより維持されるブロックチェーンに対しブロックが追加されるようにする。このブロックが第2のハッシュを含んでおり、これら複数のコンピューティングデバイスは、当該ブロックのブロックチェーンへの付加に関してコンセンサスを達成し、このコンセンサスの達成は、当該ブロックのトランザクション識別子を発生させる。サーバコンピューティングデバイスは、トランザクション識別子を、コンピュータ可読コンテンツ及びメタデータと関連付けてデータストアに保存する。コンピュータ可読コンテンツの識別子を含む第2のトランザクションリクエストを第2のコンピューティングデバイスから受信すると、サーバコンピューティングデバイスは、コンピュータ可読コンテンツの識別子、ブロックチェーン内のブロック、及びトランザクション識別子に基づいて、コンピュータ可読コンテンツに対するアクセスを第2のコンピューティングデバイスに提供する。
【0007】
以上の概要は、本明細書で述べるシステム及び/又は方法のいくつかの態様について基本的な理解を提供するために、簡単な概要を提示する。当概要は、本明細書で述べるシステム及び/又は方法の広範な概略ではない。また、核心的/重要な要素を特定すること、又は、それらシステム及び/又は方法の範囲を画定することを意図したものではない。概要の唯一の目的は、後述するより詳細な説明の前置きとして、いくつかの概念を概略的に提示することである。
【図面の簡単な説明】
【0008】
【
図1】ブロックチェーンのオフチェーンストレージを容易にするコンピューティングシステムを例示するの機能ブロック図。
【
図2】ブロックチェーンを例示する機能ブロック図。
【
図3】クライアントコンピューティングデバイスを例示する機能ブロック図。
【
図4】エンタープライズサーバコンピューティングデバイスを例示する機能ブロック図。
【
図5】サーバコンピューティングデバイスによって実行される方法であって、ブロックチェーンネットワークにおいて参照されるコンピュータ可読コンテンツに対するアクセスを追加し提供する方法の一例を説明するフロー図。
【
図6】サーバコンピューティングデバイスによって実行される方法であって、ブロックチェーンネットワークにおいて参照されるコンピュータ可読コンテンツにアクセスする方法の一例を説明するフロー図。
【発明を実施するための形態】
【0009】
ブロックチェーンのオフチェーンストレージに関する各種技術について図面を参照して説明する。図中、同様の参照番号が同様の要素を参照するべく使用される。以下の説明では、解説を目的として、一つ以上の態様の十分な理解を提供するために多数の具体的な詳細を説明する。ただし、当該態様は、その具体的な詳細ではなくとも実施され得ることが明白である。他の実施例において、周知の構造及び装置が、一つ以上の態様の説明を容易にするためにブロック図形式で示されている。また、特定のシステムコンポーネントによって行われていると説明されている機能が複数のコンポーネントによって実施され得ることは理解されるべきである。同様に、例えば、複数のコンポーネントによって行われていると説明されている機能を1つのコンポーネントが実施するようにも構成され得る。
【0010】
さらに、「又は」は、排他的な「又は」よりも包括的な「又は」を意味する意図で用いられる。すなわち、特に明記しない限り又は文脈から明らかでない限り、「XはA又はBを採用する」という表現は、当然包括される組み合わせのいずれかを意味することを意図している。つまり、「XはA又はBを採用する」という表現は、XはAを採用する、XはBを採用する、XはA及びBの両方を採用する、という例のいずれでも満足される。加えて、本願と特許請求の範囲において使用される冠詞「a」及び「an」は、特に明記しない限り又は文脈から明らかでない限り、全体的に「1つ以上」を意味すると解釈されるべきである。
【0011】
さらに、ここで使用される「コンポーネント/構成要素/部品」、「アプリケーション」、及び「システム」は、プロセッサによって実行されることで特定の機能を実行させるコンピュータ実行可能命令で構成されるコンピュータ可読データストレージを包含する意図をもつ。コンピュータ実行可能命令は、ルーチン、ファンクションなどを含み得る。また、コンポーネント又はシステムは、1つのデバイスに配置されている場合もあれば、いくつかのデバイスにまたがって分布している場合もあることが理解されるべきである。加えて、ここで使用される「例示/例」は、あるものの例証又は一例として役立つ意味での使用を意図してあり、好ましいことを示す意図をもってはいない。あるいは、ここで使用される「オフチェーンコンテンツ」は、ブロックチェーンで参照されるけれどもブロックチェーン自体とは別に保存されるコンピュータ可読コンテンツを意味する。
【0012】
ここに説明するのは、オフチェーンのブロックチェーンストレージに関連する各種技術である。ここに説明する技術は、ドキュメントコンテンツ、オーディオコンテンツ、及びビデオコンテンツなどのコンピュータ可読コンテンツを、ブロックチェーンによって複数のエンタープライズの中で及びエンタープライズを横断して共有することを可能にし、このときに、各エンタープライズがそれぞれのネットワークを互いに開くことを要求されることはない。ここに説明された技術は、コンピュータ可読コンテンツの生成、アクセス、及び変更の信頼できるレコードを(ブロックチェーンを介して)発生できるようにもする。オフチェーンストレージに関する従来の手法とは異なり、ここに説明される技術は、ブロックチェーンとオフチェーンコンテンツのストレージフォーマットとの間の疎結合を提供する。さらに、従来の技術と比較して、ここに説明される技術は、ブロックチェーンによって提供される機能を十分に利用しながら、アクセス許可ルールのより細かい粒度のセットを提供する。そして、ここに説明される技術は、個々のユーザがソフトウェアを手動インストールする必要がなく且つブロックチェーンで参照されるコンピュータ可読コンテンツにあらゆるデバイスからアクセスできるように、十分なクラウドホストを提供することができる。
【0013】
図1を参照すると、ブロックチェーンのオフチェーンコンテンツストレージを容易にするコンピューティングシステム100が例示されている。コンピューティングシステム100は、サーバコンピューティングデバイス102を含む。一実施形態において、サーバコンピューティングデバイス102は、クラウドベースのコンピューティングプラットフォームである。別の実施形態では、サーバコンピューティングデバイス102は、エンタープライズコンテンツ管理(ECM)システムであってもよいし、該システムを含んでいてもよい。
【0014】
サーバコンピューティングデバイス102は、プロセッサ104及びメモリ106を含み、そのメモリ106は、ファイル管理アプリケーション108、サーバオフチェーンストレージアプリケーション110、及びメモリにロードされたブロックチェーンクライアント112のインスタンスを有する。エンタープライズのファイル管理アプリケーション108は、プロセッサ104で実行されると、コンピュータ可読コンテンツ(例えば、ブロックチェーンのオフチェーンコンテンツ)を暗号化し、保存し、アクセスを提供するように、構成される。
【0015】
サーバオフチェーンストレージアプリケーション110は、プロセッサ104で実行されると、ブロックチェーンで参照される(そしてオフチェーンストレージに保存される)コンピュータ可読コンテンツの、複数の別々のエンタープライズ及び/又はエンドユーザを横断する共有を容易にするように、構成される。サーバオフチェーンストレージアプリケーション110は、複数のエンタープライズ(例えば、ヘルスケア企業、政府団体、保険会社)のコンピューティングデバイスが、サーバコンピューティングデバイス102によって維持されているオフチェーンコンテンツにアクセスするように構成されるようにする、コンフィグレーションエンジンを提供する。サーバオフチェーンストレージアプリケーション110は、ユーザがオフチェーンストレージの態様をユーザそれぞれのエンタープライズのワークフローに統合することを可能にする、ワークフローモデリング機能を提供することができる。オフチェーンストレージアプリケーション110は、サーバコンピューティングデバイス102と複数のエンタープライズのコンピューティングデバイスとの間の統合を可能にするサービス(SaaS)機能としてのソフトウェアも提供する。一実施形態において、サーバオフチェーンストレージアプリケーション110は、ブロックチェーンで参照されるオフチェーンコンテンツを閲覧し、追加し、変更することを可能にする、アプリケーションプログラミングインターフェイス(API)を提供する。
【0016】
ブロックチェーンクライアント112は、プロセッサ104によって実行されると、ブロックチェーンに保存されているデータに対し追加、アクセス、及び/又は変更を行うように構成される。ブロックチェーンクライアント112を実行するコンピューティングデバイスは、ブロックチェーンネットワークの一員であると見なされる。ブロックチェーンクライアント112は、ブロックチェーンネットワーク上のノードと見なすことができる。一実施形態において、ブロックチェーンクライアント112は、クライアントノード、ピアノード、及び/又はオーダリング(オーダラー)ノードとして機能する。クライアントノードとして機能する場合、ブロックチェーンクライアント112は、ユーザがブロックチェーンネットワークのメンバーにトランザクションを出すことができるようにする。例えば、そのトランザクションは、ブロックチェーンのデータを閲覧する要求や、ブロックチェーンにデータを追加する要求であり得る。ピアノードとして機能する場合、ブロックチェーンクライアント112は、ブロックチェーンに対しトランザクションをコミットする。オーダリングノードとして機能する場合、ブロックチェーンクライアント112は、クライアントノードとピアノードとの間の通信を円滑にし、そして、ピアノードによってブロックチェーンに追加されるブロックにトランザクションをパッケージする。一実施形態において、ブロックチェーンクライアント112は、ウェブブラウザで実行される。
【0017】
サーバコンピューティングデバイス102は、データストア114をさらに含む。データストア114は、ブロックチェーン116のインスタンス、オフチェーンコンテンツ118、及びデータモデル120を含む。一実施形態において、ブロックチェーン116は、信頼されたエンティティによってのみアクセスすることができるプライベートブロックチェーンである。別の実施形態では、ブロックチェーン116は、パブリックブロックチェーンである。さらに別の実施形態では、ブロックチェーン116の代わりに、分散型公開台帳が使用される。
【0018】
図2を簡単に参照すると、ブロックチェーン200が例示されている。一実施形態において、ブロックチェーン200がブロックチェーン116であるか又はこれを含み、そしてブロックチェーン116がブロックチェーン200であるかこれを含む。ブロックチェーン200は、複数のブロック202~206を含む。例えば、複数のブロック202~206は、第1の(1番目の)ブロック202、第2の(2番目の)ブロック204、及びR番目のブロック206を含む。なお、Rは2よりも大きい正の整数である。複数のブロック202~206のうちの各ブロックは、ブロックチェーン200内の前のブロックの暗号ハッシュ、各ブロックが生成されたときのタイムスタンプ、及びデータを含む。例えば、第1のブロック202は、ブロックチェーン200内の前のブロック(
図2には示されていない)のハッシュである第1のハッシュ208、第1のブロック202が生成されたときの第1のタイムスタンプ210、そして第1のデータ212を含む。一例として、第1のデータ212は、コンピュータ可読コンテンツのメタデータのハッシュ、及び/又は、コンピュータ可読コンテンツのシェアトークンである。より具体的に言うとメタデータは、ブロックチェーン200とは別に保存されたオフチェーンコンテンツを示す。第2のブロック204は、第2のハッシュ214(第2のハッシュ214はブロックチェーン200内の前のブロック=第1のブロック202のハッシュである)、第2のブロック204が生成されたときの第2のタイムスタンプ216、及び第2のデータ218を含む。一例として、第2のデータ218は、メタデータのハッシュを介して第1のブロック202で参照されるコンピュータ可読コンテンツにアクセス(すなわち閲覧)するブロックチェーンネットワークのメンバーを示す。R番目のブロック206は、ブロックチェーン200内の前のブロック(第2のブロック204か又はブロックチェーン200内の
図2に示されていない他のブロック)のハッシュであるR番目のハッシュ220、R番目のブロック206が生成されたときのR番目のタイムスタンプ222、及びR番目のデータ224である。一例として、R番目のデータ224は、メタデータのハッシュを介して第1のブロック202で参照されるコンピュータ可読コンテンツの変更を示す。
【0019】
図1に戻って、データストア114はさらに、オフチェーンコンテンツ118を含む。オフチェーンコンテンツ118は、ブロックチェーン116で参照されているけれども直接には保存されていないコンピュータ可読コンテンツを含む。オフチェーンコンテンツ118は、コンピュータ可読コンテンツのメタデータも含み得る。オフチェーンコンテンツ118のメタデータのハッシュ後バージョンがブロックチェーン116に保存される。このメタデータはオフチェーンコンテンツ118を参照する。一例として、オフチェーンコンテンツ118は、ドキュメント(例えば、ポータブルドキュメントフォーマット(PDF)ドキュメント、ワードドキュメント)、ビデオコンテンツ、オーディオコンテンツ、又はイメージコンテンツである。より具体的な例としてのオフチェーンコンテンツ118は、患者の臨床データである。一実施形態において、オフチェーンコンテンツ118は、ブロックチェーンネットワークを介し生成されるキーを使用して暗号化及び復号される。データストア114はさらに、各種の規制スキームに準じてオフチェーンコンテンツをフォーマットすることを可能にするデータモデル120を含む。
【0020】
コンピューティングシステム100は、さらに、第1の(1番目の)エンタープライズ128の第1の(1番目の)クライアントコンピューティングデバイス1,1124と、第1のエンタープライズ128のN番目のクライアントコンピューティングデバイス1,N126とを含む。ここで、添え字の下付き文字の1つ目は、クライアントコンピューティングデバイスが属するエンタープライズを指し、添え字の下付き文字の2つ目は、そのエンタープライズ内のクライアントコンピューティングデバイスの番号を指し、Nは1より大きい正の整数である(なお、ここでは「第1の複数のクライアントコンピューティングデバイス124~126」として総称する)。第1の複数のクライアントコンピューティングデバイス124~126は、ネットワーク122(例えば、インターネット、イントラネット)を経てサーバコンピューティングデバイス102と通信する。第1の複数のクライアントコンピューティングデバイス124~126の一部又は全てが、ブロックチェーンクライアント112のインスタンスを実行し、ブロックチェーン116のインスタンスを維持し、したがって、第1の複数のクライアントコンピューティングデバイス124~126の一部又は全てが、ブロックチェーン116を維持するブロックチェーンネットワークのメンバーである。第1の複数のクライアントコンピューティングデバイス124~126は、第1のエンタープライズ128に属する(すなわち制御下にある)。一例として、第1のエンタープライズ128は、第1の医療組織、第1の政府機関、又は第1の保険会社である。
【0021】
コンピューティングシステム100は、M番目のエンタープライズ136の第1の(1番目の)クライアントコンピューティングデバイスM,1132と、M番目のエンタープライズ136のR番目のクライアントコンピューティングデバイスM,R134とを含む(なお、ここでは「第2の複数のクライアントコンピューティングデバイス132~134」として総称する)。MとRは1より大きい正の整数である。第2の複数のクライアントコンピューティングデバイス132~134は、ネットワーク122を経てサーバコンピューティングデバイス102と通信する。第2の複数のクライアントコンピューティングデバイス132~134の一部又は全部は、ブロックチェーンクライアント112のインスタンスを実行し、ブロックチェーン116のインスタンスを維持し、したがって、第2の複数のクライアントコンピューティングデバイス132~134の一部又は全部は、ブロックチェーン116を維持するブロックチェーンネットワークのメンバーである。第2の複数のクライアントコンピューティングデバイス132~134は、M番目のエンタープライズ136に属する(すなわち制御下にある)。一例として、M番目のエンタープライズ136は、第2の医療組織、第2の政府機関、又は第2の保険会社である。
【0022】
図3を簡単に参照すると、クライアントコンピューティングデバイス300が例示されている。クライアントコンピューティングデバイス300は、第1の複数のクライアントコンピューティングデバイス124~126のうちのクライアントコンピューティングデバイス、又は、第2の複数のクライアントコンピューティングデバイス132~134のうちのクライアントコンピューティングデバイスであり得る。一例として、クライアントコンピューティングデバイス300は、第1のエンタープライズ128の第1のクライアントコンピューティングデバイス
1,1124である。別の例では、クライアントコンピューティングデバイス300は、M番目のエンタープライズ136の第1のクライアントコンピューティングデバイス
M,1132である。クライアントコンピューティングデバイス300は、エンタープライズ(例えば、第1のエンタープライズ128、M番目のエンタープライズ136)に属するユーザ318によって操作される。
【0023】
クライアントコンピューティングデバイス300は、プロセッサ302及びメモリ304を含み、そのメモリ304は、メモリにロードされたクライアントエンタープライズアプリケーション306を有する。クライアントエンタープライズアプリケーション306は、プロセッサ302によって実行されると、エンタープライズの目的に応じた機能を提供する当該エンタープライズによって利用されるアプリケーションである。一例として、エンタープライズは医療組織であり、この場合のクライアントエンタープライズアプリケーション306は、医療施設における患者ケアに関係したタスクを行うように構成されたクライアント電子カルテ(EHR)アプリケーションであり得る。メモリ304は、さらに、プロセッサ302によって実行される、メモリにロードされたクライアントオフチェーンストレージアプリケーション308を含む。一実施形態において、クライアントコンピューティングデバイス300は、ウェブブラウザ内でクライアントオフチェーンストレージアプリケーション308を実行することができる。クライアントオフチェーンストレージアプリケーション308は、基本モードで又は管理者モードで実行可能である。基本モードで実行の場合、クライアントオフチェーンストレージアプリケーション308は、ブロックチェーン116で参照されるオフチェーンコンテンツを追加、閲覧、及び/又は変更するためのインターフェイスをユーザ318に提供するように構成される。管理者モードで実行の場合、クライアントオフチェーンストレージアプリケーション308は、ブロックチェーン116を維持し、既存のブロックチェーンネットワークを変更し、ブロックチェーンネットワークの複数のユーザにアクセス許可を与えようとするブロックチェーンネットワークをユーザ318が設定できるようにするインターフェイスを提供するように構成される。一実施形態において、クライアントオフチェーンストレージアプリケーション308は、クライアントエンタープライズアプリケーション306に直接統合することができる。一実施形態において、クライアントオフチェーンストレージアプリケーション308は、クライアントコンピューティングデバイス300のウェブブラウザで実行されるウェブアプリケーションであってもよい。メモリ304は、(上述の)メモリにロードされたブロックチェーンクライアント112のインスタンスも有している。
【0024】
クライアントコンピューティングデバイス300は、さらに、上述のブロックチェーン116のインスタンスを保存するデータストア310を含む。クライアントコンピューティングデバイス300は、ディスプレイ312をさらに含むことができ、ここにグラフィック機能314を提示可能である。例えば、クライアントエンタープライズアプリケーション306、ブロックチェーンクライアント112、及び/又はクライアントオフチェーンストレージアプリケーション308のグラフィカルユーザインターフェイス(GUI)が、グラフィック機能314の一部としてディスプレイ312に表示される。一実施形態において、ディスプレイ312はタッチスクリーンである。クライアントコンピューティングデバイス300は、さらに、ユーザ318がクライアントコンピューティングデバイス300の入力を示すことができるようにする入力コンポーネント316を含むことができる。一実施形態において、入力コンポーネント316は、マウス、キーボード、トラックパッド、スクロールホイール、マイクロホン、カメラ、ビデオカメラ、及び/又はタッチスクリーンを含む。
【0025】
再び
図1を参照すると、コンピューティングシステム100は、第1の(1番目の)エンタープライズサーバコンピューティングデバイス130と、M番目のエンタープライズサーバコンピューティングデバイス138とを含むこともできる。なお、Mは1より大きい正の整数である。第1のエンタープライズサーバコンピューティングデバイス130及びM番目のエンタープライズサーバコンピューティングデバイス138は、それぞれ第1のエンタープライズ128及びM番目のエンタープライズ136の制御下にある。
【0026】
図4には、エンタープライズサーバコンピューティングデバイス400を例示する。一例として、エンタープライズサーバコンピューティングデバイス400は、第1のエンタープライズサーバコンピューティングデバイス130又はM番目のエンタープライズサーバコンピューティングデバイス138であるか又はこれを含む。第1のエンタープライズサーバコンピューティングデバイス130である場合のエンタープライズサーバコンピューティングデバイス400は、ネットワーク122(又は他のネットワーク)を介して、サーバコンピューティングデバイス102及び第1の複数のクライアントコンピューティングデバイス124~126と通信することができる。M番目のエンタープライズサーバコンピューティングデバイス138である場合のエンタープライズサーバコンピューティングデバイス400は、ネットワーク122(又は他のネットワーク)を介して、サーバコンピューティングデバイス102及び第2の複数のクライアントコンピューティングデバイス132~134と通信することができる。
【0027】
エンタープライズサーバコンピューティングデバイス400は、プロセッサ402及びメモリ404を含み、メモリ404は、メモリにロードされたサーバエンタープライズアプリケーション406を有する。サーバエンタープライズアプリケーション406は、プロセッサ402によって実行されると、エンタープライズサーバコンピューティングデバイス400の属するエンタープライズの目的に従う機能を提供するように構成される。一例として、エンタープライズは医療組織であり、この場合のサーバエンタープライズアプリケーション406は、患者カルテの作成及び保守、処方作成などの医療施設における患者ケアに関係するタスクを行うように構成された、サーバEHRアプリケーションである。メモリ404は、さらに、メモリにロードされた(上述の)ブロックチェーンクライアント112のインスタンスをもつことができる。エンタープライズサーバコンピューティングデバイス400は、さらに、データストア408を含む。データストア408は、(上述の)ブロックチェーン116のインスタンスを含む。データストア408は、コンピュータ可読コンテンツ及びメタデータ410を含むこともでき、そのコンピュータ可読コンテンツ及びメタデータ410は、上述のオフチェーンコンテンツ118のローカルコピーである。
【0028】
少し
図1に戻って、コンピューティングシステム100には、エンタープライズに属さず及び/又はブロックチェーンネットワークのメンバーではない外部コンピューティングデバイス140も含まれ得る。例えば、外部コンピューティングデバイス140は、第1のエンタープライズ128及び/又はM番目のエンタープライズ136がサービスを提供するエンドユーザによって、操作可能とされる。以下でより詳細に説明するように、サーバオフチェーンストレージアプリケーション110は、ブロックチェーン116で参照されるオフチェーンコンテンツ118を外部コンピューティングデバイス140と共有するように構成され得る。
【0029】
広く
図1~
図5を参照して、コンピューティングシステム100の作動を説明する。コンピューティングシステム100は、ブロックチェーンネットワークを登録する。より具体的には、クライアントオフチェーンストレージアプリケーション308を管理者モードで実行するクライアントコンピューティングデバイス300が、ユーザ318からの入力としてコンフィグレーションデータを受信する。一例として、コンフィグレーションデータは、生成されるブロックチェーン116のパラメータを含み、例えばパラメータは、(オフチェーンコンテンツのメタデータのハッシュを介して)ブロックチェーン116で参照されるべきオフチェーンコンテンツのタイプ、ブロックチェーン116へのアクセス許可、オフチェーンコンテンツの追加及び/又はアクセス時にあり得るエラーを処理する設定、及びブロックチェーンネットワークでコンセンサスを達成するために使用されるべきコンセンサスプロトコル、である。例えば、コンセンサスプロトコルは、Proof of Work (PoW) モデル、Proof State (PoS) モデル、Delegated Proof State (DPoS) モデル、Proof Authority (PoA) モデル、Proof Weight (PoWeight) モデル、又はByzantine Fault Tolerance (BFT) モデルとすることができる。コンフィグレーションデータは、ブロックチェーンネットワークに参加することになっているコンピューティングデバイスの識別子(例えば、第1の複数のクライアントコンピューティングデバイス124~126の識別子、及びオフチェーンコンテンツ118が保存されるストレージロケーション(例えばサーバコンピューティングデバイス102)の識別子)を含むこともできる。
【0030】
次に、クライアントコンピューティングデバイス300は、コンフィグレーションデータに基づいてブロックチェーンネットワークが生成されるようにする。より具体的には、ブロックチェーンクライアント112が、クライアントコンピューティングデバイス300でブロックチェーン116のインスタンスを生成する。このブロックチェーン116は、最初に、ブロックチェーン116のルートとして働くジェネシスブロックを含む。クライアントコンピューティングデバイス300はまた、ブロックチェーン116のインスタンスとブロックチェーンクライアント112のインスタンスとが、ブロックチェーンネットワークに参加することになっているコンピューティングデバイス(例えば、第1の複数のクライアントコンピューティングデバイス124~126)の各々に配布されるようにし、これに応じて各コンピューティングデバイスが、それぞれブロックチェーンクライアント112のインスタンスを各自のメモリにロードし、そしてそれぞれブロックチェーン116のインスタンスを各自のデータストアに保存する。
【0031】
上述したように、コンピューティングシステム100は、別々のエンタープライズが、ブロックチェーン116で参照されるオフチェーンコンテンツ118について追加、アクセス、変更を行えるようにする。この場合、ブロックチェーンネットワークのレジストレーションの一部として(又はブロックチェーンネットワークの生成に続いて)、クライアントコンピューティングデバイス300は、M番目のエンタープライズ136の第2の複数のクライアントコンピューティングデバイス132~134にインバイト(招待)を送信することができ、これに応じて第2の複数のクライアントコンピューティングデバイス132~134の各々が、コンピューティングデバイス(例えばサーバコンピューティングデバイス102)から、ブロックチェーン116のインスタンスとブロックチェーンクライアント112のインスタンスとを受信し得る。次いで、第2の複数のクライアントコンピューティングデバイス132~134の各々は、それぞれブロックチェーンクライアント112のインスタンスを各自のメモリにロードし、そしてそれぞれブロックチェーン116のインスタンスを各自のデータストアに保存することができる。
【0032】
ブロックチェーンネットワークのレジストレーションに続いて、クライアントコンピューティングデバイス300のユーザ318が、ブロックチェーンネットワークにオフチェーンコンテンツを追加しようとすることが想定される。すなわちこのユーザは、ブロックチェーン116に、コンピュータ可読コンテンツのハッシュ後メタデータを追加しようとしている。ハッシュ後メタデータはコンピュータ可読コンテンツを参照する。クライアントコンピューティングデバイス300は、ユーザ318からの入力としてユーザ318のユーザクレデンシャル(資格情報)を受信する。ユーザクレデンシャルを受信したクライアントコンピューティングデバイス300は、ユーザクレデンシャルをサーバコンピューティングデバイス102に送信し、これに応じてサーバコンピューティングデバイス102が、ユーザクレデンシャルに基づいてユーザ318を認証する。ユーザ318を認証したサーバコンピューティングデバイス102は、トークン(例えばエクステンシブルマークアップランゲージ(XML)トークン)を生成し、該トークンをクライアントコンピューティングデバイス300に送信する。クライアントコンピューティングデバイス300は、このトークンを利用して、ブロックチェーン116を維持するブロックチェーンネットワークにアクセスすることができる。一実施形態において、コンピューティングシステム100は、ブロックチェーンネットワークに対するオフチェーンコンテンツの追加及びアクセスを容易にするために、REST(RESTful)ウェブサービスを利用することができる。
【0033】
クライアントコンピューティングデバイス300は、サーバコンピューティングデバイス102にトランザクションリクエストを受信させる。このトランザクションリクエストは、コンピュータ可読コンテンツと、コンピュータ可読コンテンツのメタデータとを含む。クライアントコンピューティングデバイス300は、ユーザ318から、クライアントコンピューティングデバイス300にコンピュータ可読コンテンツ及びコンピュータ可読コンテンツのメタデータを生成させる入力を受信することができる。クライアントコンピューティングデバイス300は、クライアントオフチェーンストレージアプリケーション308のビューア(すなわちGUI)においてコンピュータ可読コンテンツ及びコンピュータ可読コンテンツのメタデータを表示し、オフチェーンコンテンツとして保存すべき特定のコンピュータ可読コンテンツについて曖昧性を減らすことができる。一実施形態において、クライアントコンピューティングデバイス300は、ビューアをポップアップウィンドウとしてクライアントエンタープライズアプリケーション306に提示し、該ビューアがクライアントエンタープライズアプリケーション306のGUIの上にオーバーレイ表示されるようにできる。別の実施形態では、クライアントコンピューティングデバイス300は、ビューアをクライアントエンタープライズアプリケーション306に並べて提示し、該ビューアがクライアントエンタープライズアプリケーション306の一部として現れるようにすることができる。一実施形態において、クライアントエンタープライズアプリケーション306は、コンピュータ可読コンテンツ及び/又はコンピュータ可読コンテンツのメタデータを検証するために、サーバエンタープライズアプリケーション406と通信してもよい。
【0034】
コンピュータ可読コンテンツのメタデータは、コンピュータ可読コンテンツの属するソースシステム(例えば第1のエンタープライズ128)の識別子、コンピュータ可読コンテンツのファイルタイプ、コンピュータ可読コンテンツの生成日、及びコンピュータ可読コンテンツのファイルサイズを含む。メタデータは、コンピュータ可読コンテンツの最終アクセス日及びコンピュータ可読コンテンツのアクセス許可(例えば、コンピュータ可読コンテンツに対しアクセス及び/又は変更することの可能なユーザ及び/又はエンタープライズの識別子)を含んでもよい。クライアントオフチェーンストレージアプリケーション308、サーバオフチェーンストレージアプリケーション110、クライアントエンタープライズアプリケーション306、及び/又はサーバエンタープライズアプリケーション406は、コンピュータ可読コンテンツのメタデータを自動的に生成することが想定されるが、ただし、クライアントオフチェーンストレージアプリケーション308のビューアにより、ユーザがコンピュータ可読コンテンツのメタデータを手動で編集できるようにし得ることも想定される。
【0035】
具体的な例として、コンピュータ可読コンテンツは、個人の名前及び生年月日を含んだ出生証明書であり得る。一実施形態において、クライアントコンピューティングデバイス300は、コンピュータ可読コンテンツ及び/又はコンピュータ可読コンテンツのメタデータを検証するために、エンタープライズサーバコンピューティングデバイス400と通信する。コンピュータ可読コンテンツが出生証明書である先の例の場合、エンタープライズサーバコンピューティングデバイス400は、出生証明書にある誕生日が有効な日付であることを検証する。コンピュータ可読コンテンツを検証した後、エンタープライズサーバコンピューティングデバイス400は、コンピュータ可読コンテンツのローカルコピーとコンピュータ可読コンテンツのメタデータとを、コンピュータ可読コンテンツ410の一部としてデータストア408に保存する。クライアントコンピューティングデバイス300は、コンピュータ可読コンテンツとコンピュータ可読コンテンツのメタデータとを含むトランザクションリクエストを生成し、このトランザクションリクエストをサーバコンピューティングデバイス102に送信する。
【0036】
サーバコンピューティングデバイス102は、クライアントコンピューティングデバイス300からトランザクションリクエストを受信する。トランザクションリクエストを受信したサーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介してトランザクションリクエストを処理する。具体的には、サーバコンピューティングデバイス102は、コンピュータ可読コンテンツにハッシュ関数(例えばセキュアハッシュアルゴリズム(SHA)-256)を適用することによって、コンピュータ可読コンテンツのハッシュを生成する。次に、サーバコンピューティングデバイス102は、コンピュータ可読コンテンツのハッシュがメタデータに含まれるようにする。あるいは、クライアントコンピューティングデバイス300が、コンピュータ可読コンテンツのハッシュを生成し、サーバコンピューティングデバイス102によって受信されるメタデータにコンピュータ可読コンテンツのハッシュを含める。
【0037】
次に、サーバコンピューティングデバイス102は、ハッシュ関数をメタデータ(コンピュータ可読コンテンツのハッシュを含んでいる)に適用して、第1のハッシュを生成する。サーバコンピューティングデバイス102は、ファイル管理アプリケーション108を介して、コンピュータ可読コンテンツのコンテンツ識別子を生成する。そして、サーバコンピューティングデバイス102は、第1のハッシュとコンテンツ識別子との組み合わせにハッシュ関数を適用して、第2のハッシュを生成する。サーバコンピューティングデバイス102は、ファイル管理アプリケーション108を介して、上述のようにコンピュータ可読コンテンツのアクセス許可を含むメタデータに基づいてコンピュータ可読コンテンツのシェアトークンも生成する。シェアトークンは、コンピュータ可読コンテンツ及び/又はコンピュータ可読コンテンツのメタデータを複数のコンピューティングデバイス間で共有することを可能にする。例えば、シェアトークンは、コンピュータ可読コンテンツにアクセスすることができるユーザ及び/又はエンタープライズの識別子を含む。トランザクションリクエストを処理したサーバコンピューティングデバイス102は、ファイル管理アプリケーション108を介して、コンピュータ可読コンテンツとコンピュータ可読コンテンツのメタデータ(第2のハッシュ及びコンテンツ識別子を含む)とを、オフチェーンコンテンツ118の一部としてデータストア114に保存する。一実施形態において、サーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介して、ブロックチェーンネットワークの要件に合致させるために、コンピュータ可読コンテンツのメタデータにフォーマッティングを実行する。
【0038】
コンピュータ可読コンテンツとコンピュータ可読コンテンツのメタデータとをオフチェーンコンテンツ118の一部として保存した後、サーバコンピューティングデバイス102は、ブロックチェーン116に対しブロックが追加されるようにする。より詳細には、サーバオフチェーンストレージアプリケーション110は、サーバコンピューティングデバイス102で実行されるブロックチェーンクライアント112のインスタンスによって第2のハッシュ及びシェアトークンが受信されるようにする。第2のハッシュ及びシェアトークンを受信するとブロックチェーンクライアント112は、第2のハッシュ及びシェアトークンを処理する。具体的には、サーバコンピューティングデバイス102で実行されるブロックチェーンクライアント112は、ブロックチェーン116への第2のハッシュ(それ自体がコンピュータ可読コンテンツを示す)の追加に関して、ブロックチェーンネットワークで(コンセンサスプロトコルを介して)コンセンサスが達成されるようにする。ブロックチェーンネットワークでコンセンサスが達成されると、ブロックのトランザクション識別子が生成される。一実施形態において、ブロックチェーンネットワークでコンセンサスが達成されると、キーが生成される。コンセンサスの達成によりさらに、ブロックがブロックチェーン116に追加される。このブロックは、第2のハッシュ、タイムスタンプ、シェアトークン、及びブロックチェーン116の前のブロックのハッシュを含んでいる。コンセンサスが達成された後、ブロックチェーンネットワークの各メンバーは、ブロックを含んだブロックチェーン116のインスタンスを有する。一実施形態において、サーバコンピューティングデバイス102は、バリデーションルール(スマートコントラクトとも呼ばれる)を、コンピュータ可読コンテンツのメタデータに適用する。この実施形態の場合、バリデーションルールを用いてバリデーションに成功したときに、ブロックがブロックチェーン116に追加される。
【0039】
コンセンサスが達成されると、サーバオフチェーンストレージアプリケーション110は、トランザクション識別子(及び選択的にキー)を受信し、トランザクション識別子(及び選択的にキー)をファイル管理アプリケーション108に提供する。ファイル管理アプリケーション108は、トランザクション識別子(及び選択的にキー)を、コンピュータ可読コンテンツと、オフチェーンコンテンツ118の一部として保存されたコンピュータ可読コンテンツのメタデータとに関連付けて保存する。一実施形態において、サーバオフチェーンストレージアプリケーション110は、コンピュータ可読コンテンツとコンピュータ可読コンテンツのメタデータとを、キーで暗号化する。追加の検証手段として、サーバオフチェーンストレージアプリケーション110は、ブロックチェーン116から第2のハッシュを検索し、第1のハッシュとコンテンツ識別子との組み合わせ(上述)にハッシュ関数を適用することによってテストハッシュを生成し、ブロックチェーン116からの第2のハッシュがテストハッシュと一致することを確認してもよい。次に、サーバオフチェーンストレージアプリケーション110は、コンピュータ可読コンテンツをアクセス可能としてマークすることができる。
【0040】
この後に、M番目のエンタープライズ136の第1のクライアントコンピューティングデバイスM,1132のユーザが、ブロックチェーン116内のブロックで参照されているコンピュータ可読コンテンツを閲覧しようとすることが想定される。さらに、ブロックチェーン116内のブロックのシェアトークンが、ユーザ及び/又はユーザが属する第1のエンタープライズ128を参照することが想定される。第1のクライアントコンピューティングデバイスM,1132は、ブロックチェーンネットワークのメンバーであってもなくてもよい(すなわち、第1のクライアントコンピューティングデバイスM,1132は、インストールされたブロックチェーンクライアント112のインスタンスをもっていてももっていなくてもよい)。第1のクライアントコンピューティングデバイスM,1132は、トランザクションリクエストを発生させる入力をユーザから受信する。このトランザクションリクエストは、ユーザの識別子及びコンピュータ可読コンテンツの識別子を含む。第1のクライアントコンピューティングデバイスM,1132は、トランザクションリクエストをサーバコンピューティングデバイス102に送信する。
【0041】
トランザクションリクエストを受信したサーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介し、ユーザの識別子に基づいて、コンピュータ可読コンテンツにアクセスする資格をユーザがもっていることを判断する。より具体的には、サーバオフチェーンストレージアプリケーション110は、認可済みユーザのリストを維持しており、サーバオフチェーンストレージアプリケーション110は、そのリストを検索することでコンピュータ可読コンテンツの閲覧がユーザに認可されているか否かを判断する。認可済みユーザであることが判断されると、サーバコンピューティングデバイス102は、ファイル管理アプリケーション108を介し、第1のクライアントコンピューティングデバイスM,1132から受信したコンピュータ可読コンテンツの識別子と、(先に生成された)コンテンツ識別子とに基づいて、オフチェーンコンテンツ118の一部として保存されたコンピュータ可読コンテンツ及びコンピュータ可読コンテンツのメタデータを、検索する。次に、サーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介して、ハッシュ関数をメタデータに適用することにより、メタデータのテストハッシュを生成する。また、サーバコンピューティングデバイス102は、ブロックチェーンクライアント112のインスタンスを介して、トランザクション識別子を使用しブロックチェーン116内のブロック(第2のハッシュを含んでいる)を検索する。サーバコンピューティングデバイス102は、再び、ブロックチェーン116内のブロックに含まれているシェアトークンに基づいて、ユーザがコンピュータ可読コンテンツにアクセスする資格をもつことを判断してもよい。
【0042】
サーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介して、テストハッシュとブロックチェーン116に保存された第2のハッシュとの比較を実行する。この比較の結果、テストハッシュと第2のハッシュが同一であることが示されると、サーバコンピューティングデバイス102は、コンピュータ可読コンテンツのコピー(及び選択的にメタデータ)を第1のクライアントコンピューティングデバイスM,1132に送信し、これに応じる第1のクライアントコンピューティングデバイスM,1132は、コンピュータ可読コンテンツのコピー及び/又はコンピュータ可読コンテンツのメタデータをディスプレイに表示する。前記比較の結果、テストハッシュと第2のハッシュが一致していないことが示されると、サーバコンピューティングデバイス102は、真正性の期待が満たされないことを示すアラームを生成することができる。次に、サーバコンピューティングデバイス102は、第1のクライアントコンピューティングデバイスM,1132及び/又は他のコンピューティングデバイスにアラームを送信してもよい。コンピュータ可読コンテンツ及び/又はコンピュータ可読コンテンツのメタデータがキーを使用して暗号化されている実施形態において、サーバコンピューティングデバイス102は、コンピュータ可読コンテンツのコピー及び/又はコンピュータ可読コンテンツのメタデータを第1のクライアントコンピューティングデバイスM,1132へ送信する前に、コンピュータ可読コンテンツ及び/又はコンピュータ可読コンテンツのメタデータを(キーを使用して)復号する。一実施形態において、サーバコンピューティングデバイス102は、ログのアクセスを維持することができ、アクセスログは、オフチェーンコンテンツにアクセスしたユーザの識別子を含む。サーバコンピューティングデバイス102は、アクセスログをデータストア114に格納することができる。一実施形態において、アクセスログはブロックチェーン116の一部であり、つまり、ブロックチェーンに追加されるブロックは、ブロックチェーン116内のどのブロックにユーザがアクセスしたのかを示す。
【0043】
この後、M番目のエンタープライズ136の第1のクライアントコンピューティングデバイスM,1132のユーザがコンピュータ可読コンテンツを変更しようとする(例えば、エラーを訂正しようとする)ことが想定される。この場合、第1のクライアントコンピューティングデバイスM,1132は、コンピュータ可読コンテンツに対する変更をユーザからの入力として受信する。コンピュータ可読コンテンツの変更に伴ってメタデータも変更される。第1のクライアントコンピューティングデバイスM,1132は、変更されたコンピュータ可読コンテンツと変更されたメタデータとを含むトランザクションリクエストを構成し、このトランザクションリクエストをサーバコンピューティングデバイス102に送信する。
【0044】
上述のプロセスと同様に、サーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介して、トランザクションリクエストを処理する。サーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介して、変更されたメタデータにハッシュ関数を適用して、第3のハッシュを生成する。サーバコンピューティングデバイス102は、ファイル管理アプリケーション108を介して、変更されたコンピュータ可読コンテンツの変更後コンテンツ識別子を生成する。サーバコンピューティングデバイス102は、サーバオフチェーンストレージアプリケーション110を介して、第3のハッシュと変更後コンテンツ識別子との組み合わせにハッシュ関数を適用し、第4のハッシュを生成する。サーバコンピューティングデバイス102は、ファイル管理アプリケーション108を介して、変更されたコンピュータ可読コンテンツの第2のシェアトークンも生成する。トランザクションリクエストを処理したサーバコンピューティングデバイス102は、ファイル管理アプリケーション108を介して、変更されたコンピュータ可読コンテンツと、変更されたコンピュータ可読コンテンツの変更されたメタデータ(第4のハッシュ及び変更後コンテンツ識別子を含む)とを、オフチェーンコンテンツ118の一部としてデータストア114に保存する。
【0045】
変更されたコンピュータ可読コンテンツと、変更されたコンピュータ可読コンテンツの変更されたメタデータとをオフチェーンコンテンツ118の一部として保存した後、サーバコンピューティングデバイス102は、ブロックチェーン116に対し第2のブロックが追加されるようにする。第2のブロックは、第4のハッシュ、タイムスタンプ、及びブロックチェーン116内の前のブロックのハッシュを含む。より詳細には、サーバオフチェーンストレージアプリケーション110は、サーバコンピューティングデバイス102で実行されるブロックチェーンクライアント112のインスタンスによって、第4のハッシュ及び第2のシェアトークンが受信されるようにする。第4のハッシュ及び第2のシェアトークンを受信したブロックチェーンクライアント112は、第4のハッシュ及び第2のシェアトークンを処理する。より詳細には、サーバコンピューティングデバイス102で実行されるブロックチェーンクライアント112は、ブロックチェーン116に対する第4のハッシュ(それ自体が変更されたコンピュータ可読コンテンツを示す)の追加に関して、ブロックチェーンネットワークで(コンセンサスプロトコルを介して)コンセンサスが達成されるようにする。コンセンサスが達成されると、第2のトランザクション識別子が生成される。一実施形態において、ブロックチェーンネットワークでコンセンサスが達成されると、第2のキーが生成される(オフチェーンコンテンツ118の一部として保存されたコンピュータ可読コンテンツを暗号化/復号するために使用可能)。コンセンサスの達成によりさらに、ブロックがブロックチェーン116に追加される。このブロックは、第4のハッシュ、第2のタイムスタンプ、第2のシェアトークン、及びブロックチェーン116の前のブロックのハッシュを含む。コンセンサスが達成された後、ブロックチェーンネットワークの各メンバーは、第2のブロックを含むブロックチェーン116のインスタンスを有する。
【0046】
ブロックチェーンネットワーク内でコンセンサスが達成されると、サーバコンピューティングデバイス102は、データストア114に保存されたオフチェーンコンテンツ118の一部として、第2のトランザクション識別子(及び選択的に第2のキー)を保存する。次に、サーバコンピューティングデバイス102は、データストア114に含まれたオフチェーンコンテンツ118の一部として、変更されたコンピュータ可読コンテンツ及び第2のキーを保存する。一実施形態において、変更されたコンピュータ可読コンテンツをオフチェーンコンテンツ118の一部として保存する前に、サーバコンピューティングデバイス102は、変更されたコンピュータ可読コンテンツを第2のキーを使用して暗号化してもよい。
【0047】
上述のプロセスは、オフチェーンコンテンツ118を中央で(すなわちデータストア114に)保存するものとして説明されているが、他の可能性も想定される。例えば、一実施形態として、サーバコンピューティングデバイス102は、コンピュータ可読コンテンツのコピーが複数生成されるようにし、複数のコンピューティングデバイスのデータストアに保存されるようにすることができる(例えば、オフチェーンコンテンツ118は、第1のエンタープライズサーバコンピューティングデバイス130のデータストアとM番目のエンタープライズサーバコンピューティングデバイス138のデータストアとに保存され得る)。一実施形態において、コンピュータ可読コンテンツは、上述したのと同様の方法で、外部コンピューティングデバイス140によりアクセスされ及び/又は変更され得る。
【0048】
図5及び
図6は、オフチェーンのブロックチェーンストレージに関する方法を例示する。当該方法は、ある順序で実行される一連の過程/機能として図示し説明するが、該方法がその順序のとおりに制限されるということではない、のは言う迄も無い。例えば、過程/機能の中には、ここに説明するのとは異なる順番で起こるものもある。さらに、過程/機能は別の過程/機能と同時に起こることもある。また、場合によっては、ここに説明する方法を実施するために全ての過程/機能が必要というものでもない。
【0049】
加えて言うと、ここに説明する過程/機能は、1つ以上のプロセッサによって実行可能であり及び/又はコンピュータ可読媒体に記憶可能であるコンピュータ実行可能命令で実施され得る。コンピュータ実行可能命令は、ルーチン、サブルーチン、プログラム、及び/又は実行スレッドなどを含み得る。さらに、方法の過程/機能の結果は、コンピュータ可読媒体に保存し、及び/又はディスプレイデバイスに表示することなどが可能である。
【0050】
図5を参照すると、ブロックチェーンネットワークで参照されるコンピュータ可読コンテンツに対する追加とアクセスの提供を容易にする、サーバコンピューティングデバイスによって実行される方法500が、図示されている。方法500は、過程502で始まり、過程504で、サーバコンピューティングデバイスが、第1のエンタープライズの第1のコンピューティングデバイスから第1のトランザクションリクエストを受信する。第1のトランザクションリクエストは、コンピュータ可読コンテンツと、コンピュータ可読コンテンツのメタデータとを含んでいる。過程506において、サーバコンピューティングデバイスは、コンピュータ可読コンテンツのメタデータに基づいて、第1のハッシュを生成する。過程508において、サーバコンピューティングデバイスのアクセス可能なデータストアにコンピュータ可読コンテンツ、メタデータ、及び第1のハッシュを保存したサーバコンピューティングデバイスは、コンピュータ可読コンテンツのコンテンツ識別子を生成する。過程510において、サーバコンピューティングデバイスは、第1のハッシュとコンテンツ識別子とに基づいて第2のハッシュを生成する。過程512において、サーバコンピューティングデバイスは、ブロックチェーンネットワーク内の複数のコンピューティングデバイスによって維持されているブロックチェーンに対しブロックが追加されるようにする。この複数のコンピューティングデバイスは、ブロックチェーンへのブロックの追加に関してコンセンサスを達成し、その結果、トランザクション識別子及びキーが生成される。ブロックは第2のハッシュを含む。過程514において、サーバコンピューティングデバイスは、トランザクション識別子及びキーを、コンピュータ可読コンテンツに関連付けてデータストアに保存する。過程516において、コンピュータ可読コンテンツの識別子を含む第2のトランザクションリクエストを第2のコンピューティングデバイスから受信すると、サーバコンピューティングデバイスは、コンピュータ可読コンテンツの識別子、ブロックチェーン内のブロック、トランザクション識別子、及びキーに基づいて、コンピュータ可読コンテンツへのアクセスを、第2のコンピューティングデバイスに提供する。方法500は過程518で終了する。
【0051】
図6を参照すると、ブロックチェーンネットワークで参照されるコンピュータ可読コンテンツのアクセスを容易にする、サーバコンピューティングデバイスによって実行される方法600が図示されている。方法600は、過程602でスタートし、過程604で、サーバコンピューティングデバイスは、ブロックチェーンネットワーク内の複数のコンピューティングデバイスによって維持されているブロックチェーンのブロックで参照されるコンピュータ可読コンテンツのトランザクションリクエストを、コンピューティングデバイスから受信する。トランザクションリクエストは、コンピュータ可読コンテンツにアクセスするコンピューティングデバイスのユーザの識別子と、コンピュータ可読コンテンツの識別子とを含む。過程606において、サーバコンピューティングデバイスは、コンピュータ可読コンテンツの識別子とユーザの識別子とに基づいて、オフチェーンストレージに保存されたコンピュータ可読コンテンツのメタデータを検索する。過程608において、サーバコンピューティングデバイスは、コンピュータ可読コンテンツのメタデータの第1のハッシュを生成する。過程610において、サーバコンピューティングデバイスは、ブロックがブロックチェーンに追加されたときに生成された該ブロックのトランザクション識別子に基づいて、ブロックチェーン内のブロックから第2のハッシュが検索されるようにする。第2のハッシュは、コンピュータ可読コンテンツがオフチェーンストレージに保存されたときのそのコンピュータ可読コンテンツを示す。過程612において、サーバコンピューティングデバイスは、第1のハッシュと第2のハッシュとを比較して、第1のハッシュが第2のハッシュと一致するか否かを判断する。過程614において、判断が肯定(すなわち、第1のハッシュが第2のハッシュと一致する)であれば、サーバコンピューティングデバイスは、コンピュータ可読コンテンツへのアクセスをコンピューティングデバイスに提供する。過程616において、判断が否定(すなわち、第1のハッシュが第2のハッシュと一致しない)であれば、サーバコンピューティングデバイスは、コンピュータ可読コンテンツが不適正に変更されていることを示すアラームをコンピュータ可読コンテンツに関して発生する。方法600は過程618で終了する。
【0052】
図7を参照すると、ここに開示するシステム及び方法に従って使用することができるコンピューティングデバイス700を例示する高レベル図を示してある。例えば、コンピューティングデバイス700は、ブロックチェーンのオフチェーンストレージを容易にするシステムで使用され得る。別の例として、コンピューティングデバイス700は、ブロックチェーンで参照されるコンピュータ可読コンテンツの追加、閲覧、及び変更を容易にするシステムで使用することができる。コンピューティングデバイス700は、メモリ704に保存される命令を実行する少なくとも1つのプロセッサ702を含む。命令は、例えば、上述の1つ以上のコンポーネントによって実行されると説明した機能を実行する命令、又は、上述の方法の1つ以上を実行する命令である。プロセッサ702は、システムバス706を通してメモリ704にアクセスすることができる。実行可能命令の保存に加えて、メモリ704は、ブロックチェーン、オフチェーンコンテンツ、キー、データモデルなども保存することができる。
【0053】
コンピューティングデバイス700は、さらに、システムバス706を通してプロセッサ702からアクセス可能なデータストア708を含む。データストア708には、実行可能命令、ブロックチェーン、オフチェーンコンテンツ、キー、データモデルなどが含まれる。コンピューティングデバイス700はまた、外部デバイスがコンピューティングデバイス700と通信できるようにする入力インターフェイス710を含む。例えば、入力インターフェイス710は、外部コンピューティングデバイスから、ユーザからなど、命令を受信するために使用される。コンピューティングデバイス700はさらに、コンピューティングデバイス700と1つ以上の外部デバイスとのインターフェイスとなる出力インターフェイス712を含む。例えば、コンピューティングデバイス700は、出力インターフェイス712を介してテキスト、イメージなどを表示することができる。
【0054】
入力インターフェイス710及び出力インターフェイス712を介してコンピューティングデバイス700と通信する外部デバイスは、ユーザとの対話を可能にするユーザインターフェイスのほぼすべての種類を提供する動作環境に含められると考えられる。ユーザインターフェイスの種類を例示すると、グラフィカルユーザインターフェイス、ナチュラルユーザインターフェイスなどがある。例えば、グラフィカルユーザインターフェイスは、キーボード、マウス、リモートコントロールなどの入力デバイスを使用してユーザから入力を受信し、ディスプレイなどの出力デバイスに出力を提供する。また、ナチュラルユーザインターフェイスは、キーボード、マウス、リモートコントロールなどの入力デバイスによって課される制約から離れた方式で、ユーザのコンピューティングデバイス700との対話(相互作用)を可能にする。さらに言えば、ナチュラルユーザインターフェイスは、音声認識、タッチ及びスタイラス認識、スクリーン上及びスクリーンの前の両方でのジェスチャー認識、エアジェスチャー、頭部及び眼のトラッキング、音声及び会話、視覚、タッチ、ジェスチャー、機械知能などに依存することができる。
【0055】
単一システムとして図示されているが、コンピューティングデバイス700は、分散システムであることも想定される。すなわち、例えば、いくつかのデバイスがネットワーク接続を経てつながり、コンピューティングデバイス700によって実行されるとして説明したタスクを協働して実行することもできる。
【0056】
図8を参照すると、ここに開示するシステム及び方法に従って使用することができるコンピューティングシステム800を例示する高レベル図を示してある。例えば、コンピューティングシステム800は、サーバコンピューティングデバイス102、エンタープライズサーバコンピューティングデバイス400などであるか、又はこれらを含むことができる。これに加えて又は代替的に、サーバコンピューティングデバイス102及び/又はエンタープライズサーバコンピューティングデバイス400がコンピューティングシステム800であるか又はこれを含むことができる。
【0057】
コンピューティングシステム800は、複数のサーバコンピューティングデバイス、すなわち、サーバコンピューティングデバイス802、・・・、及びサーバコンピューティングデバイス804(サーバコンピューティングデバイス802~804と総称する)を含む。サーバコンピューティングデバイス802は、少なくとも1つのプロセッサとメモリとを含み、その少なくとも1つのプロセッサが、メモリに記憶されている命令を実行する。命令は、例えば、上述の1つ以上のコンポーネントによって実行されると説明した機能を実行するための命令、又は、上述の方法の1つ以上を実行するための命令である。サーバコンピューティングデバイス802と同様に、サーバコンピューティングデバイス802以外のサーバコンピューティングデバイス802~804の少なくとも一部は、それぞれが少なくとも1つのプロセッサとメモリとを含む。さらに、サーバコンピューティングデバイス802~804の少なくとも一部は、それぞれがデータストアを含む。
【0058】
サーバコンピューティングデバイス802~804のうちの1つ以上の各プロセッサは、プロセッサ104及び/又はプロセッサ402であるか、又はこれを含むことができる。さらに、サーバコンピューティングデバイス802~804のうちの1つ以上の各メモリは、メモリ106及び/又はメモリ404であるか、又はこれを含むことができる。また、サーバコンピューティングデバイス802~804のうちの1つ以上の各データストアは、データストア114及び/又はデータストア408であるか、又はこれらを含むことができる。
【0059】
コンピューティングシステム800は、さらに、サーバコンピューティングデバイス802~804の間でデータを転送する種々のネットワークノード806を含む。ネットワークノード806は、ネットワーク808を介して、サーバコンピューティングデバイス802~804から外部ノード(例えば、コンピューティングシステム800の外部)へデータを転送する。また、ネットワークノード806は、ネットワーク808を介して外部ノードからサーバコンピューティングデバイス802~804にデータを転送する。ネットワーク808は、例えば、インターネット、セルラーネットワークなどであり得る。ネットワークノード806は、スイッチ、ルータ、ロードバランサなどを含む。
【0060】
コンピューティングシステム800のファブリックコントローラ810は、サーバコンピューティングデバイス802~804のハードウェアリソース(例えば、サーバコンピューティングデバイス802~804のプロセッサ、メモリ、データストアなど)を管理する。ファブリックコントローラ810は、さらに、ネットワークノード806を管理する。また、ファブリックコントローラ810は、サーバコンピューティングデバイス802~804にインスタンス化された仮想マシンの生成、プロビジョニング、プロビジョニング解除、及び監視を管理する。
【0061】
ここに説明する様々な機能は、ハードウエア、ソフトウェア、又はこれらのあらゆる組み合わせで実行することができる。ソフトウェアで実行される場合、当該機能は、コンピュータ可読媒体における1つ以上の命令又はコードとして、記憶され又は送信され得る。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体を含む。コンピュータ可読ストレージ媒体は、コンピュータによってアクセス可能なあらゆる利用可能なストレージ媒体であり得る。限定ではなく、一例として、このようなコンピュータ可読ストレージ媒体は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、コンパクトディスクリードオンリメモリ(CD-ROM)又は他の光ディスクストレージ、磁気ディスクストレージ又は他の磁気ストレージデバイス、又は、所望のプログラムコードを命令又はデータ構造の方式で運んだり記憶したりするために使用することができてコンピュータからアクセス可能な他のあらゆる媒体を含めることができる。ここで使用されるディスク(disk/disc)には、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル汎用ディスク(DVD)、フレキシブルディスク、及びブルーレイディスク(BD)が含まれ、「disk」はデータを磁気的に再生するのが一般的で、「disc」はレーザーで光学的にデータを再生するのが一般的である。また、伝播される信号は、コンピュータ可読ストレージ媒体の範囲には含まれない。コンピュータ可読媒体は、ある場所から別の場所へコンピュータープログラムを転送できるようにするあらゆる媒体を含めて通信媒体を含む。接続(コネクション)は、例えば、通信媒体であり得る。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、又は、赤外線、ラジオ、及びマイクロ波などのワイヤレス技術を用いて、ウェブサイト、サーバ、又は他のリモートソースから送信される場合、その同軸コード、光ファイバケーブル、ツイストペア、DSL、又は、赤外線、ラジオ、及びマイクロ波などのワイヤレス技術は、通信媒体の定義に含まれる。これらの組み合わせも、コンピュータ可読媒体の範囲に含まれるべきである。
【0062】
代わりに又は加えて、ここに説明する機能は、少なくとも一部は、1つ以上のハードウエアロジックコンポーネントによって実行することができる。例えば、限定ではなく、使用可能なハードウエアロジックコンポーネントの種類を例示すると、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)などがある。
【0063】
以上の説明には、1つ以上の実施形態の例が含まれている。当然ながら、上述した態様を説明する目的のために、上記デバイスや方法の考え得るあらゆる変更や手直しを説明することは不可能である。しかし、当業者であれば、様々な態様の多くのさらなる変更及び置き換えが可能であることを認識することができる。したがって、説明した態様は、特許請求の範囲の思想及び範囲の及ぶ全てのそれら手直し、変更、及び派生を包含することを目的としている。さらに、単語「includes」が詳細な説明か特許請求の範囲のいずれかで使用される限り、当該単語は、「comprising」が請求項において転換語として使用されているときに解釈される単語「comprising」と同じように総括的であることが意図されている。