(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-08
(45)【発行日】2024-03-18
(54)【発明の名称】共有の秘密及び読み取りの合意を用いてメタデータ駆動型ブロックチェーン上で忘れられる権利を実施するシステム又は方法
(51)【国際特許分類】
H04L 9/32 20060101AFI20240311BHJP
H04L 9/08 20060101ALI20240311BHJP
【FI】
H04L9/32 200Z
H04L9/08 A
(21)【出願番号】P 2021569434
(86)(22)【出願日】2020-05-21
(86)【国際出願番号】 IB2020054809
(87)【国際公開番号】W WO2020234814
(87)【国際公開日】2020-11-26
【審査請求日】2022-01-24
(32)【優先日】2019-05-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】パドマナブハン,プリトヴィ クリシュナン
【審査官】青木 重徳
(56)【参考文献】
【文献】米国特許出願公開第2019/0065764(US,A1)
【文献】国際公開第2018/109010(WO,A1)
【文献】国際公開第2018/149385(WO,A1)
【文献】島 幸司 ほか,階層的秘密分散法の新しい構成法と評価,CSS2017 コンピュータセキュリティシンポジウム2017 論文集 [CD-ROM] ,日本,一般社団法人情報処理学会,2017年10月16日,Vol.2017, No.2,p.457-464
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
H04L 9/08
JSTPlus/JMEDPlus/JST7580(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
ブロックチェーン内のデータを忘れる要求を管理するためにホスト組織のシステムにより実行される方法であって、前記システムは、ブロックチェーンネットワーク内のノードとして機能する前記ホスト組織の複数のテナントのために前記ブロックチェーンに対するブロックチェーンインターフェースを提供し、当該方法は、
要求元の識別子を含む要求を受信するステップであり、前記要求はプライベートとして指定されたトランザクションデータにアクセスするためのものである、ステップと、
前記要求元の前記識別子又は前記トランザクションデータの識別子が、前記要求元に関連づけられたデータに対して又は前記トランザクションデータに対して忘れる要求が受信されたことを示すリストに含まれるかどうかを決定するステップと、
前記リストに含まれることが、前記トランザクションデータがアクセスするのに恒久的に利用できないことを示すときに、前記要求元の前記識別子又は前記トランザクションデータの前記識別子が前記リストに含まれるとき、前記トランザクションデータへのアクセスを拒否するステップと、
前記要求元の前記識別子又は前記トランザクションデータの前記識別子が前記リストに含まれないと決定することに応答して、
前記ブロックチェーンネットワーク内の前記ノードからの前記トランザクションデータへのアクセスを要求することであり、前記アクセスを要求することは前記要求元の前記識別子を含む、ことと、
前記ブロックチェーンネットワークによる合意を確立するのに不十分な数の共有秘密を前記ノードから受信することに応答して、前記トランザクションデータへのアクセスを拒否することと、
前記ブロックチェーンネットワークによる合意を確立するのに十分な数の共有秘密を前記ノードから受信することに応答して、前記トランザクションデータを復号することと、
を実行するステップと、
を含む方法。
【請求項2】
前記要求元の前記識別子が前記リスト上にあることを決定するステップ、
をさらに含む請求項1に記載の方法。
【請求項3】
一意ユーザ識別子に関連づけられたデータを忘れる要求を受信するステップと、
前記一意ユーザ識別子を前記リストに追加するステップと、
をさらに含む請求項1に記載の方法。
【請求項4】
前記トランザクションデータは、閾値数の共有秘密を受信することに応答して復号される、請求項1に記載の方法。
【請求項5】
復号鍵は、受信した共有秘密から復元される、請求項1に記載の方法。
【請求項6】
前記トランザクションデータへのアクセスを拒否することは、受信した共有秘密の数が暗号化の鍵を復元するための閾値を下回ることに応答したものである、請求項1に記載の方法。
【請求項7】
オブジェクト及びフィールドのプライベート情報の識別を含む、前記ブロックチェーンに記憶される前記トランザクションデータのオブジェクト及びメタデータを定義するステップ、
をさらに含む請求項1に記載の方法。
【請求項8】
ブロックチェーン内のデータを忘れる要求を管理する方法を実行するように構成されたホスト組織のコンピューティングシステムであって、当該コンピュー
ティングシステムは、各々がブロックチェーンネットワーク内のノードとして機能する前記ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを提供し、
前記ブロックチェーンインターフェース及びパーミッションマネージャを内部に記憶させたコンピュータ読取可能媒体と、
前記ブロックチェーンインターフェース及び前記パーミッションマネージャを実行するプロセッサであり、前記パーミッションマネージャは、請求項1乃至7のうちいずれか1項に記載の方法を実行する、プロセッサと、
を含む、コンピューティングシステム。
【請求項9】
ホスト組織のコンピュータシステムにブロックチェーン内のデータの読み取りアクセスを管理する方法の動作のセットを実行させるコンピュータプログラムであって、前記コンピュータシステムは、ブロックチェーンネットワーク内のノードとして機能する前記ホスト組織の複数のテナントのために前記ブロックチェーンに対するブロックチェーンインターフェースを提供し、前記動作のセットは、請求項1乃至7のうちいずれか1項に記載の方法を実施する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2019年5月22日に出願された米国仮出願第62/851,589号の利益を主張する、2019年10月29日に出願された米国出願第16/667,846号に対する優先権を主張し、これらは参照により本明細書に組み込まれる。
【0002】
[技術分野]
本明細書に開示される実施形態は、概して、分散台帳技術及びブロックチェーンプラットフォームの分野に関する。より詳細には、開示される実施形態は、クラウドベースのコンピューティング環境と関連して分散台帳技術(DLT)を使用するメタデータ駆動型ブロックチェーンプラットフォーム内のブロックチェーンからデータを読み取ることに関連するアクセス制限を実施するシステム、方法、及び装置に関する。
【背景技術】
【0003】
ブロックチェーンは、暗号法を用いてリンク及び安全化されるレコード/ブロックの継続的に拡張されるリストである。詳細には、ブロックチェーン内のあらゆるブロックは、直前のブロックの暗号ハッシュ、現在のブロックのタイムスタンプ、及びトランザクションデータ(例えば、ブロックチェーンネットワーク内のピアに関連づけられた情報の追加/修正)を含むことができる。さらに、ブロックチェーンは、チェーンに追加される新しいブロックを立証/検証するシステムを介してピアツーピアネットワークを通じて共有及び管理することができ、それにより、ブロックチェーン内のブロックは、全ての後続ブロックの改変なしに改変することはできず、これは、ネットワークの合意を必要とする。このアーキテクチャは、暗号法の使用を通じてブロック内に記憶された情報のセキュリティ、ピアツーピアネットワークの使用を通じた情報の共有/分散、ブロック追加の合意の使用を通じた信頼性、並びに暗号法の使用、ブロックのチェーン化/リンク、及びピア分散を通じてブロック内に記憶された情報の不変性(immutability)を可能にする(例えば、ブロックチェーンネットワークの各ピアは、ネットワーク内の全ての立証/検証されたトランザクションの台帳を維持することができる)。ブロックチェーンは、金融データを含む多くの異なるタイプのデータを記憶するために利用することができる。このような金融データは、分散された台帳として機能するブロックチェーンに記憶することができる。
【0004】
ブロックチェーン内の分散された台帳は、そのブロックチェーンの参加者全てにより共有される。分散台帳技術(Distributed Ledger Technology、DLT)は、従来の金融システムの欠点の種類の多くに対処及び克服するのに役立つが、この技術は、それにもかかわらず、このようなDLT及び関連するブロックチェーンプラットフォームを利用する者にさらなる利益をもたらすように拡張することができる。現在利用可能なDLT及びこのようなDLT技術を利用するブロックチェーンは、固定された、不変の、及び静的な方法でデータを記憶する。したがって、ひとたびデータがブロックチェーンに書き込まれると、それはそこに固定され、記憶されたデータを記述し、データの形状を記述し、又はデータのタイプを記述するコンテキスト、メタデータ、又は任意の他の情報が全くない。結果的に、それは、ブロックチェーンから取り出されたデータをビジネス目的のために受け入れ可能なフォーマットに戻すことが、その記憶されたデータを記述する他のメタデータのコンテキストの欠如に起因して極めて困難であることを示し得る。
【0005】
またさらに、現在利用可能なDLT及びそのようなDLT技術を利用するブロックチェーンは、その全体をブロックチェーンに再書き込みされるために更新又は修正されるブロックチェーン上のいかなるレコードも必要とし、結果として、ブロックチェーン上における記憶データの合計ボリュームの激増をもたらし、これは、持続不可能であり最もリソース集約的でない可能性がある。他の考えられるアプローチは、ブロックチェーンにレコードの修正部分のみを書き込み、これは、非効率的なデータ取り出しを結果としてもたらし、なぜならば、完全なレコードが今やブロックチェーン上の複数のブロックの間で分割され、したがって、ブロックチェーン上の複数のブロックからデータを検索し、検査し、取り出すために、修正されたレコードの任意の取り出しを必要とするためである。
【0006】
さらに、現在利用可能なDLT及びブロックチェーンは、データを、それがネットワーク内の任意のノードにアクセス可能であるようにブロックチェーンに記憶する。ブロックチェーン内のデータは、決して除去されない。これらの特性に起因して、DLT及びブロックチェーンは、データを恒久的に削除することが必要である場合、又はブロックチェーンに格納されたデータへのアクセス特権を制限することが望ましい場合に、アプリケーションでの使用に対して適合が不十分な可能性がある。
【図面の簡単な説明】
【0007】
以下の図は、同様の要素を参照するために同様の参照番号を使用している。以下の図は様々な例示的な実装を示すが、代替的な実装は別記の特許請求の範囲の主旨及び範囲内にある。
【
図1A】説明される実施形態による一例示的なアーキテクチャを示す。
【
図1B】説明される実施形態による、ブロックバリデータと関連して動作するブロックチェーンプロトコルブロックのさらなる詳細を有する別の例示的なアーキテクチャを示す。
【
図1C】説明される実施形態による、さらに詳細に説明されるブロックチェーンメタデータ定義マネージャのさらなる詳細を有する別の例示的なアーキテクチャを示す。
【
図1D】説明される実施形態による、ホスト組織サービスのブロックチェーンサービスインターフェースとの統合をより詳細に示す別の例示的なアーキテクチャを示す。
【
図1E】説明される実施形態による、ブロックチェーンサービスインターフェースを利用する例示的なデータフローを示す別の例示的なアーキテクチャを示す。
【
図2A】説明される実施形態による、ブロックチェーン及びフォークしたブロックチェーンのさらなる詳細を有する別の例示的なアーキテクチャを示す。
【
図2B】説明される実施形態による、サイドチェーンについてのさらなる詳細を有する別の例示的なアーキテクチャを示す。
【
図3A】説明される実施形態による一例示的なアーキテクチャを示す。
【
図3B】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図3C】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図3D】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図4A】説明される実施形態による、スマートフローコントラクトエンジンを利用して作成されたブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャを示す。
【
図4B】説明される実施形態による、Apex翻訳エンジンを利用して作成されたブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャを示す。
【
図4C】説明される実施形態による、ブロックチェーンに永続的に記憶されたレコードのためにApex翻訳エンジンを利用するSQLフィルタリング及びクエリトランスレータのさらなる詳細を有する別の例示的なアーキテクチャを示す。
【
図5A】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図5B】説明される実施形態による、記憶されるデータの動的メタデータ検証を実行する別の例示的なアーキテクチャを示す。
【
図5C】説明される実施形態による、関連エンティティを記憶する別の例示的なアーキテクチャを示す。
【
図6A】説明される実施形態による、インデキシングスキームを使用してアドレス指定可能ブロックから記憶されたレコードを取り出す別の例示的なアーキテクチャを示す。
【
図6B】説明される実施形態による、ブロックチェーン内のレコードからインデックスを構築してインデックスを維持する別の例示的なアーキテクチャを示す。
【
図6C】説明される実施形態による、インデックスから情報を取り出すためのアドレスを形成するためにアドレス指定構造を利用する別の例示的なアーキテクチャを示す。
【
図6D】説明される実施形態による、インデックスから情報を取り出すためにアドレスを利用する別の例示的なアーキテクチャを示す。
【
図6E】説明される実施形態による、現在の更新を記憶するためにインデックスを使用して記憶レコードのためのブロックチェーン資産を増分的に更新する別の例示的なアーキテクチャを示す。
【
図7A】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図7B】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図7C】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図8A】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図8B】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図8C】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図8D】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図8E】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図8F】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図9A】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図9B】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図9C】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図10】読み取りに関する合意のためのプロセスの一実施形態のフローチャートである。
【
図11A】ブロックチェーンサービスインターフェース内で忘れる権利機能を実施するプロセスのセットに関連するフローチャートである。
【
図11B】ブロックチェーンサービスインターフェース内で忘れる権利機能を実施するプロセスのセットに関連するフローチャートである。
【
図11C】ブロックチェーンサービスインターフェース内で忘れる権利機能を実施するプロセスのセットに関連するフローチャートである。
【
図11D】一例示的な欧州連合一般データ保護規則(GDPR)実装の図である。
【
図12A】ブロックチェーンサービスインターフェース内でアクセス制御機能を実施するプロセスのセットに関連するフローチャートである。
【
図12B】ブロックチェーンサービスインターフェース内でアクセス制御機能を実施するプロセスのセットに関連するフローチャートである。
【
図12C】ブロックチェーンサービスインターフェース内でアクセス制御機能を実施するプロセスのセットに関連するフローチャートである。
【
図12D】一例示的なアクセス制御プロセスの実装の図である。
【
図13】説明される実施形態による、分散台帳技術(DLT)を使用するブロックチェーン内のデータ及びメタデータの効率的な記憶及び検証を実施する方法を示すフロー図を示す。
【
図14】説明される実施形態による、実施形態が動作し、設置され、統合され、又は構成され得るシステムの概略表現を示す。
【
図15A】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図15B】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図15C】説明される実施形態による別の例示的なアーキテクチャを示す。
【
図16】説明される実施形態による、クラウドベースのコンピューティング環境と関連して分散台帳技術(DLT)を使用して宣言型及びメタデータ駆動型ブロックチェーンプラットフォームを実施する方法を示すフロー図を示す。
【
図17】説明される実施形態による、クラウドベースのコンピューティング環境と関連して、宣言型の、メタデータ駆動型の、暗号的に立証可能なマルチネットワーク(マルチテナント)共有台帳を実施する方法を示すフロー図を示す。
【
図18A】説明される実施形態による、オンデマンドデータベースサービスが動作し得る一環境のブロック図を示す。
【
図18B】説明される実施形態による、
図10Aの要素及びこのような要素間の様々な可能な相互接続の一実施形態の別のブロック図を示す。
【
図19】いくつかの実施形態による、コンピュータシステムの例示的な形態のマシンの概略表現を示す。
【発明を実施するための形態】
【0008】
本明細書では、メタデータ駆動型(metadata driven)ブロックチェーンプラットフォームにおける読み取りに関する合意プロセスに基づいてアクセス制御及び忘れる権利を実施するシステム、方法、及び装置について説明する。いくつかの実施形態において、メタデータ駆動型ブロックチェーンプラットフォームは、クラウドベースのコンピューティング環境と関連して分散台帳技術(Distributed Ledger Technology、DLT)を使用する。
【0009】
図1Aは、説明される実施形態による一例示的なアーキテクチャ100を示す。
【0010】
一実施形態において、ホストされた(hosted)コンピューティング環境111は、ホスト組織110を介して複数のユーザクライアントデバイス106A~C(例えば、モバイルデバイス、スマートフォン、タブレット、PCなど)と通信可能にインターフェースされる。一実施形態において、データベースシステム130は、データベース155A及び155Bを含み、例えば、顧客組織105A~C(例えば、そのようなデータベースシステム130のユーザ、又はマルチテナントデータベースタイプのデータベースシステムのテナント、又はそのようなデータベースシステムの加入ユーザ)のために、アプリケーションコード、オブジェクトデータ、テーブル、データセット、及びユーザデータを含む基礎をなすデータベースレコードを記憶する。そのようなデータベースは、例えば、特定の実施形態による関係データベースシステム155A及び非関係データベースシステム155Bを含む様々なデータベースシステムタイプを含む。
【0011】
特定の実施形態において、クライアント‐サーバコンピューティングアーキテクチャが、データベースシステム130の特徴、機能性、又はコンピューティングリソースを補足するために利用されてもよく、あるいは代わりに、コンピューティンググリッド、又はワークサーバのプール、又はホストされたコンピューティングアーキテクチャの何らかの組み合わせが、データベースシステム130に関連してホスト組織110の要求される計算ワークロード及び処理の一部又は全部を提供してもよい。
【0012】
図示の実施形態に示されるデータベースシステム130は、ホスト組織110内のデータベース機能性とコード実行環境を実現する、複数の基礎をなすハードウェア、ソフトウェア、及び論理要素120を含む。
【0013】
一実施形態によれば、データベースシステム130は、基礎をなすデータベースシステム実装155A及び155Bを利用して、クエリインターフェース180を介してデータベースシステム130と通信するデータベースクエリ及び他のデータベースシステム130とのデータ相互作用をサービスする。データベースシステム130のハードウェア、ソフトウェア、及び論理要素120は、顧客組織(105A、105B、及び105C)とは別個及び区別可能であり、顧客組織は、ネットワーク152を介してホスト組織110に通信可能にインターフェースすることにより、ホスト組織110により提供されるウェブサービス及び他のサービス提供を利用する。このような方法で、ホスト組織110は、サブスクライブしている(subscribing)顧客組織105A~Cに対するオンデマンドサービス、オンデマンドデータベースサービス、又はクラウドコンピューティングサービスを実現し得る。
【0014】
一実施形態において、各顧客組織105A~Cは、別個及び区別可能なリモート組織、ホスト組織110内の組織グループ、ホスト組織110のビジネスパートナー、又はホスト組織110により提供されるクラウドコンピューティングサービスをサブスクライブする顧客組織105A~Cからなる群から選択されるエンティティである。
【0015】
さらに、ホスト組織110は、ネットワーク125(例えば、パブリックネットワーク、インターネット、又は同様のネットワーク)を介して顧客組織105A~Cからの入力及び他の要求115を受信することが示されている。例えば、入ってくる検索クエリ、データベースクエリ、API要求、ユーザクライアントデバイス106A~Cで表示されたグラフィカルユーザインターフェース及び表示との相互作用、又は他の入力が、顧客組織105A~Cから受信されてデータベースシステム130に対して処理されてもよく、あるいは、そのようなクエリが、データベース155又はクエリインターフェース180に対する実行のために入力及び他の要求115から構築されてもよく、それに従って、結果116が、次いで、顧客組織105A~Cのユーザクライアントデバイス106A~Cのうち1つのユーザなどの発信元又は要求元に返される。
【0016】
一実施形態において、要求115は、ホスト組織110内のウェブサーバ175で受信され、あるいは該ウェブサーバ175にサブミットされる。ホスト組織110は、ホスト組織110及びそのデータベースシステム130による処理に対する様々な要求を受け取ることができる。ウェブサーバ175で受信される、入ってくる要求115は、ホスト組織110からどのサービスが提供されるべきかを指定することができ、例えば、クエリ要求、検索要求、ステータス要求、データベーストランザクション、グラフィカルユーザインターフェース要求及び相互作用、顧客組織105A~Cの1つのためにデータを取り出し、更新し、又は記憶する処理要求、コード実行要求などである。ウェブサーバ175は、クエリインターフェース180のためにネットワーク125を介して様々な顧客組織105A~Cからの要求115を受信し、ウェブベースのインターフェース又は他のグラフィカル表示を、エンドユーザユーザクライアントデバイス106A~C又はそのようなデータ要求115を発するマシンに提供することを担うことができる。
【0017】
ホスト組織で受信される特定の要求115は、ホスト組織110のブロックチェーンサービスインターフェース190が仲介者として動作するブロックチェーンに向けることができる。
【0018】
クエリインターフェース180は、データベースシステム130のデータベース及び記憶コンポーネントに対して要求されたクエリを受信及び実行し、説明される方法論を促進するために結果セット、応答、又は他の要求されたデータを返すことができる。さらに、クエリインターフェース180は、クエリをウェブサーバ175から、検索クエリを処理するデータベース155に対する実行のためにデータベースシステム130に、又はホスト組織のコンピューティング環境111の他の利用可能なデータストアに渡す機能を提供する。一実施形態において、クエリインターフェース180は、データベース155又は他のデータストアに対してクエリが実行され得るアプリケーションプログラミングインターフェース(API)を実装する。さらに、クエリインターフェース180は、ブロックチェーンサービスインターフェース190との相互運用性を提供し、したがって、ホスト組織110は、クエリインターフェース180を介してデータベースシステム130との間でトランザクションを実行し、又は、ホスト組織110が参加ノードであるか又は参加ノード133と通信している接続されたブロックチェーン上へブロックチェーントランザクションをトランザクション処理する(transact)ことができ、あるいは、ホスト組織110は、データベースシステム130により永続化される(persisted)(クエリインターフェース180を介してアクセス可能な)データを伴うトランザクション、及び接続されたブロックチェーンにより永続化される(例えば、参加ノード133から、又は、ホスト組織がそのようなブロックチェーン上の参加ノードを動作させている場合には接続されたブロックチェーンから直接、アクセス可能な)データを伴うトランザクションの双方のトランザクションを実行することができる。
【0019】
特定の実施形態において、クエリインターフェース180のアプリケーションプログラミングインターフェース(API)は、プログラマ、開発者、及び管理者がAPIコール元命令の必要及び特定の要件に応じてブロックチェーンサービスインターフェース190若しくはデータベースシステム130又は双方と相互作用することができるAPIモデルを提供する。
【0020】
ホスト組織110は、ウェブサーバ175を介してか又はスタンドアロンインターフェースとして要求インターフェース176を実現して、ユーザクライアントデバイス106A~Cから要求パケット又は他の要求115を受信することができる。さらに、要求インターフェース176は、ホスト組織110からユーザクライアントデバイス106A~Cへの出て行く方向の応答パケット又は他のリプライ及び応答116の返信をサポートする。認証器(Authenticator)140は、ホスト組織のために動作し、ホスト組織へのアクセスの獲得を試みるユーザを立証し、認証し、その他の方法で認定(credential)する。
【0021】
さらに、ホスト組織110内には、ブロックチェーン合意マネージャ191の双方をその中に含むブロックチェーンサービスインターフェース190が示されており、ブロックチェーン合意マネージャ191は、テナント、顧客組織、又はホスト組織自体110がサポートされたブロックチェーン上の参加ノードとして動作するプライベート及びパブリックブロックチェーンの合意管理を容易にする。さらに、ブロックチェーンメタデータ定義マネージャ196が示されており、これは、ブロックチェーンサービスインターフェース190がメタデータを定義及び作成することを可能にし、それは次いで、ブロックチェーンインターフェースを介してインターフェースされるブロックチェーンへプッシュされ、トランザクション処理される。例えば、ブロックチェーンメタデータ定義マネージャ196を介して、ホスト組織の任意の顧客組織105A~Cがメタデータを定義及び作成することが可能であり、それは次いで、ブロックチェーンへ記録又はトランザクション処理されてその顧客組織105A~Cにより使用され、及びブロックチェーン上の他の参加ノードにより使用され、これは、それらの参加ノード133もホスト組織110との間で顧客組織105A~Cであるか否かにかかわらない。例えば、ひとたびメタデータがブロックチェーンメタデータ定義マネージャ196を介して定義及び作成され、ブロックチェーン上へプッシュされると、そのメタデータ定義が存在するブロックチェーンへのアクセスを有する参加ノード133は、次いで、データレコードを作成し、ブロックチェーン上へ情報を格納することができ、これは、定義されたメタデータ定義を採用しており、したがって、新たに作成されたメタデータ定義に準拠する。このようにして、全ての参加ノードは、そのようなデータを記憶するための標準化されたカスタマイズ可能な方法があるため、新たに作成されたメタデータ定義に準拠して記憶された情報を利用することができる。
【0022】
一実施形態において、ブロックチェーン合意マネージャ191及びブロックチェーンメタデータ定義マネージャ196は、
図10~
図12を参照して本明細書で以下にさらに説明されるように、読み取りに関する合意機能を実施するために関連して動作する。読み取りに関する合意は、ブロックチェーンに記憶されたデータへの読み取りアクセスを制御するための特定のタイプの合意である。データは、暗号化されたフォーマットで記憶され、暗号化鍵は、ブロックチェーンプラットフォーム内の他のノードと共有された秘密として分散される。ネットワークのノード133は、データにアクセスする要求が行われたとき、読み取りに関する合意オペレーションを実行する。読み取りに関する合意プロセスは、クレデンシャル、又は必要とされると決定された任意の構成された基準を調べ、これは、アクセス要求内で提供される。読み取りアクセスを承認した各ノードは、共有秘密のうちのそれの部分で応答し、これは、要求ノードが共有秘密から鍵を生成してブロックチェーン上のデータを復号し、データにアクセスすることを可能にする。暗号化されたデータへのアクセスを可能にするためには、閾値数の秘密が返されなければならない。閾値数は、読み取りに関する合意プロセスで利用される共有秘密アルゴリズム(例えば、Shamirの秘密共有アルゴリズム)により構成及び/又は決定することができる。
【0023】
さらなる実施形態において、パーミッションマネージャ(permissions manager)181は、ブロックチェーンに記憶されたデータのためのメタデータに定義されるようにアクセス制御及び特権を強制するように動作する。パーミッションマネージャ181は、読み取り及び書き込みアクセス制御を含むアクセス制御においてレコード、オブジェクト、フィールド、又は同様のレベルの粒度へのアクセスに関する制限を強制することができる。パーミッションマネージャ181は、アクセス特権を定義するメタデータに基づいてブロックチェーンデータの管理を強制することができる。アクセス特権は、一意ユーザ識別子(unique user identifier、UUID)又は同様のエンティティ識別子を利用することができる。メタデータは、ブロックチェーン内のデータを読み取り又は書き込むパーミッションを有するエンティティのリストを定義することができる。メタデータは、アクセス制御された情報へのアクセスを管理するために利用される読み取りに関する合意プロセスを制御する所有者のセットを定義することもできる。いくつかの実施形態において、パーミッションマネージャ181は、忘れる権利プロセス(例えば、欧州連合一般データ保護規則(GDPR)に準拠する)又はブロックチェーンからデータを「消去」する同様のプロセスを実施することができる。忘れる権利及びアクセス特権を含む、パーミッションマネージャ181の動作及びブロックチェーン合意マネージャ191の読み取りに関する合意プロセスは、
図10~
図12に関連して本明細書でさらに論じられ、説明される。
【0024】
ここで示すように、ブロックチェーンサービスインターフェース190は、ホスト組織110を他の参加ノード133と(例えば、ネットワーク125を介して)通信上インターフェースして、ホスト組織110がブロックチェーンプロトコル準拠ノードとして作用することにより利用可能なブロックチェーンプロトコルに参加することを可能にし、これは次に、ホスト組織110がそのようなブロックチェーン内の情報にアクセスすることを可能にすると共に、ホスト組織110が他の参加ノード133に、ホスト組織110によりサポートされ、ホスト組織110により顧客及びサブスクライバ(subscribers)に提供される任意の数のブロックチェーンプロトコルについてブロックチェーンサービスを提供することを可能にする。特定の実施形態において、ホスト組織110は双方、ホスト組織が参加ノードとしても動作するブロックチェーンプロトコルを提供する。他の実施形態において、ホスト組織は、ホスト組織110が他者により提供されたブロックチェーンプロトコルと相互作用することができるように、単に参加ノードとして動作する。
【0025】
特定の実施形態によれば、ブロックチェーンメタデータ定義マネージャ196は、さらに、ホスト組織の非サブスクライバ(例えば、顧客組織105A~Cでないエンティティ)がそれにもかかわらず、そのようなサブスクライブしていない顧客に対して公開されたAPIインターフェースを介してブロックチェーンメタデータ定義マネージャ196及びブロックチェーンメタデータ定義マネージャ196に関連づけられたグラフィカルユーザインターフェース(GUI)を利用することを可能にし、サブスクライブしていない顧客は次いで、メタデータ定義を作成及び定義することができ、これは次いで、ホスト組織のブロックチェーンサービスインターフェース190を介してブロックチェーン上へプッシュされる。
【0026】
ブロックチェーンは、ブロック単位でグループ化されたレコードの連続的に成長するリストであり、該ブロックは、一緒にリンクされ、暗号法を用いて安全化されている。各ブロックは、前のブロックへのリンクとしてのハッシュポインタ、タイムスタンプ、及びトランザクションデータを典型的に含む。設計により、ブロックチェーンは本来的に、データの修正に対して耐性がある。ブロックチェーンシステムは本質的に、2者間のトランザクションを効率的かつ立証可能な方法で記録するオープンな分散された台帳であり、これもまた不変(immutable)かつ恒久的である。分散台帳(共有又は共通台帳とも呼ばれ、あるいは分散台帳技術(DLT)と呼ばれる)は、複数のノードにわたり地理的に分散された複製、共有、及び同期されたデジタルデータの合意である。ノードは、異なるサイト、国、機関、ユーザコミュニティ、顧客組織、ホスト組織、ホストされたコンピューティング環境、又はアプリケーションサーバに位置してもよい。中央管理者や中央集権的なデータストレージは存在しない。
【0027】
ブロックチェーンシステムは、ノードのピアツーピア(P2P)ネットワークを使用し、合意アルゴリズムは、ノードにわたるデジタルデータの複製を保証する。ブロックチェーンシステムは、パブリック又はプライベートのいずれでもよい。必ずしも全ての分散台帳が、分散された合意の安全かつ有効な達成を成功裏に提供するためにブロックのチェーンを使用するわけではなく、ブロックチェーンは、分散台帳と考えられるデータ構造の1つのタイプに過ぎない。
【0028】
P2Pコンピューティング又はネットワーキングは、ピア間でタスク又はワークロードを分ける分散アプリケーションアーキテクチャである。ピアは、ノードのピアツーピアネットワークを形成するアプリケーションにおいて、同等に特権を与えられ、同等に能力を有する参加者である。ピアは、そのリソースの一部、例えば処理パワー、ディスクストレージ、又はネットワーク帯域幅などを、サーバ又はホストによる中央の協調の必要なく、他のネットワーク参加者が直接利用できるようにする。リソースの消費と供給が分けられている従来のクライアント‐サーバモデルと対照的に、ピアは、リソースの供給者と消費者の双方である。ゆえに、ピアツーピアネットワークは、クライアントとサーバの双方としてネットワーク上の他のノードに同時に機能する等しいピアノードの概念を中心に設計されている。
【0029】
分散台帳として使用するために、ブロックチェーンは、新しいブロックを検証するプロトコルに集合的に従うピアツーピアネットワークにより典型的に管理される。ひとたび記録されると、任意の所与のブロック内のデータは、全ての後続ブロックの改変なしに遡及的に改変することはできず、これには、ネットワークの過半数(majority)の共謀を必要とする。このようにして、ブロックチェーンは、設計上安全であり、高いビザンチンフォールトトレラント性(Byzantine fault tolerance)を有する分散コンピューティングシステムの一例である。したがって、非中央集権的な合意がブロックチェーンにより達成されている。これにより、ブロックチェーンは、イベント、医療記録、保険記録、及び他の記録管理アクティビティ、例えばアイデンティティ管理、トランザクション処理、文書化の出所、又は投票などの記録に適している。
【0030】
ブロックチェーンデータベースは、ピアツーピアネットワークと分散タイムスタンプ付け(timestamping)サーバを使用して自律的に管理される。ブロック形式のレコードは、集合的な自己利益により動機づけられるノード間の協働により、ブロックチェーン内で認証される。結果として、データセキュリティに関する参加者の不確実性が最小化される。ブロックチェーンの使用は、デジタル資産の再現性という特性を取り除く。それは、各価値単位、例えば資産が1回だけ移転されたことを裏付け、二重支出(double spending)の問題を解決する。
【0031】
ブロックチェーン内のブロックは各々、ハッシュされてマークルツリーに符号化される有効なトランザクションのバッチ(「ブロック」)を保持する。各ブロックは、ブロックチェーン内の先行ブロックのハッシュを含み、この2つをリンクする。リンクされたブロックはチェーンを形成する。この反復プロセスが、時にジェネシスブロック又はルートブロックと呼ばれるチェーン内の最初のブロックまで遡って、前のブロックの完全性を裏付ける。
【0032】
ブロックチェーンは、そのネットワークにわたりデータを記憶することにより、データが中央に保持され、単一のオーソリティにより制御されることに伴うリスクを排除する。ホスト組織110は、ホスト組織110などの単一の責任を負うエージェントに大量のデータを提供する能力を含む広範なデータ処理及び記憶サービスを提供するが、ブロックチェーンサービスは異なり、それにより、ホスト組織110は、そのようなサービスの単一のオーソリティではなく、むしろ、ブロックチェーンサービスインターフェース190を介し、利用可能なブロックチェーンプロトコルのための多くのノードのうちの1つであり、あるいはブロックチェーンプロトコルマネージャ及びプロバイダとして動作し、一方、ブロックチェーンサービスインターフェース190を介してホスト組織110と通信する他の参加ノード133は、ホスト組織110により提供される利用可能なブロックチェーンプロトコルに従って準拠した分散台帳技術(DLT)を実現することにより、ブロックチェーン内に記憶された情報のリポジトリとして集合的に動作する。
【0033】
非中央集権的なブロックチェーンは、アドホックメッセージパッシング及び分散ネットワーキングを使用することができる。ブロックチェーンネットワークは、コンピュータハッカーが活用し得る脆弱性の中央集権的なポイントがない。同様に、それは中央の障害点も有さない。ブロックチェーンセキュリティメソッドは、公開鍵暗号の使用を含む。公開鍵は、ブロックチェーン上のアドレスである。ネットワークにわたり送信される値トークンは、そのアドレスに属するものとして記録される。秘密鍵は、その所有者にデジタル資産へのアクセスを与えるパスワードのようなもの、又は、その他の方法でブロックチェーンがサポートする様々な機能と相互作用する手段である。ブロックチェーンに記憶されたデータは、一般に破損しないと考えられる。これは、ブロックチェーンがその利点を有するところである。中央集権的なデータはより制御可能であるが、情報及びデータ操作が共通する。ブロックチェーンは、そのようなデータを非中央集権化することにより、関与する誰に対してもデータを透過的にする。
【0034】
非中央集権的なシステム内の特定のブロックチェーンプロトコルのためのあらゆる参加ノード133は、その特定のブロックチェーンプロトコルのためのブロックチェーンのコピーを有する。データ品質は、大規模なデータベース複製及び計算的信頼により維持される。データベースの中央集権的なオフィシャルのコピーは存在せず、デフォルトでは、どのユーザも参加ノード133のいずれも、他より信頼されているわけではないが、このデフォルトは、以下でより詳細に説明されるように、特定の特化されたブロックチェーンプロトコルを介して改変されてもよい。ブロックチェーントランザクションは、ソフトウェアを使用してネットワークにブロードキャストされ、該ソフトウェアを介して、ノードとして動作しているときのホスト組織110を含む任意の参加ノード133が、このようなトランザクションブロードキャストを受信する。ブロードキャストメッセージは、ベストエフォートベースで配信される。ノードは、トランザクションを検証し、該トランザクションをそれらが構築しているブロックに追加し、次いで、完成したブロックを他のノードにブロードキャストする。ブロックチェーンは、プルーフオブワーク(proof-of-work)などの様々なタイムスタンプ付けスキームを使用して、変更をシリアライズする。代わりの合意が、ホスト組織により提供されかつサポートされる様々なブロックチェーンプロトコルと関連して利用されてもよく、そのような合意メカニズムには、例えば、いくつか例を挙げると、プルーフオブステーク(proof-of-stake)、プルーフオブオーソリティ(proof-of-authority)、及びプルーフオブバーン(proof-of-burn)が含まれる。
【0035】
オープンブロックチェーンは、一般に公開されているが閲覧するために物理的なアクセスを依然として必要とする従来の伝統的な所有権記録よりユーザフレンドリである。早期のブロックチェーンのほとんどが許可なし(permissionless)であったため、いわゆる「ブロックチェーン」の特定の受け入れられる定義についていくらかの議論があり、例えば、中央オーソリティによりタスクを課され認可された(許可された)立証者(verifiers)を有するプライベートシステムはブロックチェーンと考えられるかどうかなどである。許可された立証者の概念は、本明細書に記載される許可ありのアクセス制御プロセスとは別個である。許可あり(permissioned)又はプライベートのチェーンの支持者は、用語ブロックチェーンが、データをタイムスタンプ付きブロックにグループ化する任意のデータ構造に適用され得ると主張している。これらのブロックチェーンは、データベースにおけるマルチバージョン同時実行制御(multiversion concurrency control、MVCC)の分散バージョンとして機能する。MVCCが、2つのトランザクションがデータベース内の単一のオブジェクトを同時に修正することを防止するのと同様に、ブロックチェーンは、2つのトランザクションが一ブロックチェーン内で同じ単一のアウトプットを消費することを防止する。様々なタイプのブロックチェーン技術に適用される意味又は特定の用語にかかわらず、「ブロックチェーン」に関して本明細書に記載される方法論は、従来のブロックチェーンプロトコル実装を拡張してさらなる柔軟性を提供し、記載のブロックチェーン実装に対する新しいサービス及びユースケースを切り開き、ホスト組織110のブロックチェーンサービスインターフェース190により提供又はサポートされる特定のブロックチェーンプロトコルに依存して、プライベート及びパブリック双方のメカニズムが本明細書で説明され、ホスト組織110によりサポートされる異なる実装のために必要に応じて利用される。
【0036】
本明細書で論じられるように、実施形態は、許可あり又はパブリックのブロックチェーンに適用可能な特定の場合のためのブロックチェーンアクセス制御を提供するが、オープンで、許可なしの、又はパブリックのブロックチェーンネットワークの利点は、悪い行為者に対する防護が必要なく、アクセス制御が一般に必要ないことである。これは、ブロックチェーンをトランスポート層として使用して、他者の承認や信頼なくアプリケーションがネットワークに追加され得ることを意味する。反対に、許可ありの(例えば、プライベートの)ブロックチェーンは、アクセス制御層を使用して、ネットワークに対して誰がアクセスを有するかを管理する。実施形態は、さらに、プライベート又はパブリックのブロックチェーンの内部又は外部のエンティティのためのアクセス制御を提供する。パブリックブロックチェーンネットワークと対照的に、プライベートブロックチェーンネットワーク上のバリデータは、例えば、ネットワーク所有者、又はコンソーシアムの1以上のメンバにより調べられる。これらは、既知のノードに依存してトランザクションを検証する。許可ありのブロックチェーンは、「コンソーシアム」又は「ハイブリッド」ブロックチェーンとも呼ばれている。今日、多くの企業は、パブリックブロックチェーンシステムから独立した、プライベートブロックチェーンを有するブロックチェーンネットワーク、又はブロックチェーンベースの分散台帳を使用している。
【0037】
図1Bは、説明される実施形態による、ブロックバリデータ192と関連して動作するブロックチェーンプロトコルブロック160のさらなる詳細を有する別の例示的なアーキテクチャ101を示す。
図10~
図12に関連して本明細書で以下にさらに説明されるように、ブロックチェーン合意マネージャ191は読み取りに関する合意を実施し、パーミッションマネージャ181はアクセス制御及び同様の動作をサポートする。
【0038】
詳細には、ブロックチェーンプロトコルブロック160は、ホスト組織110のブロックバリデータ192により検証されるようにここでは示されており、ブロックチェーンプロトコルブロックは、その様々なサブコンポーネントと特定の任意の要素のさらなる詳細を含み、該任意の要素は、ブロックチェーンサービスインターフェース190を介して利用される特定のブロックチェーンプロトコルに依存してブロックチェーンプロトコルブロック160と関連して利用され得る。
【0039】
特定の実施形態によれば、ここに示されるブロックチェーンプロトコルブロック160は、ホスト組織110によりサポートされる任意の所与のブロックチェーンプロトコルの基本ブロックがどのように編成されるかについての特定の構造を定義する。
【0040】
特定の実施形態によれば、ここに図示されるブロックチェーンメタデータ定義マネージャ196は、ホスト組織110により提供される、したがって適用可能なブロックチェーンプロトコルがホスト組織110により定義される特定のブロックチェーン実装を利用することができ、あるいは代わりに、ブロックチェーンメタデータ定義マネージャ196は、アクセスを確立するためにホスト組織が参加ノードとして動作する任意のパブリックにアクセス可能なブロックチェーンを利用してもよく、あるいは、ブロックチェーンメタデータ定義マネージャ196は、ホスト組織110により提供されないものを含むプライベートブロックチェーンを、ホスト組織がそのようなプライベートブロックチェーンで認証し、プライベートブロックチェーン上の参加ノードとして動作することによりブロックチェーンにアクセスすることができる限り、利用してもよい。
【0041】
以下により詳細に説明されるように、ブロックチェーンメタデータ定義マネージャ196は、特化されたメタデータ定義及び作成スキームを実施し、このスキームは、ウェブサーバ175などの、APIを介してか又はホスト組織のインターフェースを介してかのいずれかでホスト組織により提供されるGUI及び他のユーザフレンドリなインターフェースの使用を含むことができ、上記を介し、ユーザ及び顧客組織は、ホスト組織と、より詳細にはホスト組織により提供されるサービス及びアプリケーションと相互作用することができ、これには、ブロックチェーンメタデータ定義マネージャ196により提供されるGUIの使用が含まれ、これは、クラウドコンピューティングプラットフォームを介してホスト組織のテナントにアクセス可能にされ、特定の実施形態では、ホスト組織110の非テナント及び非サブスクライバに利用可能にされ、これらのいずれも、次いで、ブロックチェーンメタデータ定義マネージャ196により提供されるGUI及び機能を利用することができる。
【0042】
特定の実施形態によれば、ブロックチェーンメタデータ定義マネージャ196により実施される特化されたメタデータ定義及び作成スキームの使用をサポートするために、カスタマイズされたブロックチェーンプロトコルの実装がホスト組織により提供されることが必要であり得るが、メタデータがホスト組織110により許容される方法で(permissibly)定義され、ブロックチェーン上へ記憶され得る実施形態において、そのようなデータを記憶するために利用される任意のブロックチェーンは、その他の点で影響を受けず、なぜならば、どんなタイプのメタデータがホスト組織により定義又は作成され、ブロックチェーン上へトランザクション処理されるかについて、ブロックチェーンは不可知的であるためである。言い換えると、ホスト組織110がそのようなメタデータの定義及び作成を容易にし、その情報をブロックチェーン上へトランザクション処理する間、ブロックチェーンにとって、どんなアプリケーションがそのようなデータを利用することを選択するかは重要ではない。一方、ホスト組織は、アプリケーションが定義及び作成されたメタデータに準拠するデータのみを利用することを選択することができるプラットフォームを容易にし、したがって、そのようなデータの転送可能性(transferability)と、多くの他の利点を可能にする。
【0043】
ブロックチェーンプロトコルブロック160に関して(それが既存の既に利用可能なブロックチェーンプロトコルであるか又はカスタム実装されたブロックチェーンプロトコルであるかにかかわらず)、先行ハッシュ161は、先行ブロック159からのデータを入力として使用する不可逆的数学計算の結果である。先行ブロック159は、同様に、n個の前のブロック158からのデータを利用して、これらのそれぞれのブロックの先行ハッシュを形成する不可逆的数学計算を形成した。例えば、一実施形態によれば、利用される不可逆的数学計算はSHA256ハッシュ関数であるが、他のハッシュ関数が利用されてもよい。そのような実施形態によれば、ハッシュ関数は、チェーン内の先行ブロック159又はn個の前のブロック158のいずれかにおけるデータに対する任意の変更を結果としてもたらし、これらの先行ブロックのハッシュに予測不可能な変更を引き起こし、結果的に、目下又は現在のブロックチェーンプロトコルブロック160を無効にする。先行ハッシュ161はブロック間のリンクを作成し、それらを一緒にチェーン化して、現在のブロックチェーンプロトコルブロック160を形成する。
【0044】
ブロックバリデータ192が、先行ブロック159の先行ハッシュ161を算出するとき、ハッシュは、プルーフ基準(standard of proof)165として記憶されたデータにより定義された特定の基準を満たさなければならない。例えば、一実施形態において、このプルーフ基準165は、算出されたハッシュがこれ未満でなければならないという数である。ハッシュ関数の出力は予測不可能であるため、ハッシュが計算される前に、どの入力がプルーフ基準165未満の出力を結果としてもたらすかを知ることはできない。ノンス162は、ブロックのデータ内容を変化させるために使用され、プルーフ基準165を満たす出力の追求においてハッシュ関数により多数の異なる出力が生成されることを可能にし、ゆえに、プルーフ基準165の基準を満たすハッシュ値を結果としてもたらすノンス162を有する有効なブロックの生成を極めて計算上高価に(したがって、統計的に可能性を低く)する。
【0045】
ペイロードハッシュ163は、ブロックチェーンプロトコルブロック160のブロックペイロード169部分内に記憶されたデータのハッシュを提供し、いずれの特定のプルーフ基準165も満たす必要はない。しかしながら、ペイロードハッシュは、ハッシュが次の又は後続のブロックの先行ハッシュ161として記憶する目的で算出されるとき、入力の一部として含まれる。タイムスタンプ164は、特定のエラー範囲内でブロックチェーンプロトコルブロック160がいつ作成されたかを示す。ブロックチェーンサービスインターフェース190を介して提供される特定のブロックチェーンプロトコル実装によれば、ユーザ(例えば、ブロックチェーンプロトコルノード)の分散ネットワークは、その自身の既知の時間に対してタイムスタンプ164をチェックし、エラー閾値を超えるタイムスタンプ164を有するいかなるブロックも拒絶するが、このような機能性は任意であり、特定のブロックチェーンプロトコルにより必要とされ、他者には利用されなくてもよい。
【0046】
ブロックチェーンプロトコル証明書(certification)166は、ブロックペイロード169の必要なサイズ及び/又はデータ構造を定義し、特定のブロックチェーンプロトコル実装への準拠を証明し、ゆえに、ブロックチェーンプロトコルブロックが、示されたブロックチェーンプロトコルの特定の要件及び構成選択肢をサブスクライブし、実現し、守ることを証明する。ブロックチェーンプロトコル証明書166は、所与のブロックチェーンプロトコルのバージョンをさらに示してもよく、ブロックチェーンプロトコルは、ノードが新しいブロックチェーンプロトコルブロックを非準拠のため拒絶し始める前に、ブロックに対する限られた後方及び前方互換性を許可してもよい。
【0047】
ブロックタイプ167は、利用される特定のブロックチェーンプロトコルに依存して任意である。ブロックチェーンサービスインターフェース190を介して公開される特定のブロックチェーンプロトコルに必要とされる場合、ブロックタイプ167は、以下でより詳細に説明されるように、許容可能なブロックタイプ167の列挙されたリストの1つとして示されなければならない。特定のブロックチェーンプロトコルは複数の異なるブロックタイプ167を使用し、これらの全てが可変のペイロードを有し得るが、利用されるブロックチェーンプロトコル、宣言されたブロックタイプ167、及びそのような要件への準拠を証明するブロックチェーンプロトコル証明書166に従って先験的に分かる構造を有する。非準拠若しくは無効なブロックタイプ、又は所与の宣言されたブロックタイプ167に対して予期されていない構造若しくはペイロードは、ネットワークノードによるそのブロックの拒絶を結果としてもたらす。
【0048】
可変サイズのブロックペイロード169が利用される場合、ブロックタイプ167は、そのような可変サイズのブロックペイロード169の許容性を示すと共に、ブロックペイロード169内の最初のバイトのインデックスとブロックペイロード169の合計サイズを示すことができる。ブロックタイプ167は、ブロックペイロード169の読み出し、アクセス、並びに正しい処理及び解釈に関連する他の情報を記憶するために利用されてもよい。
【0049】
ブロック内に記憶されたブロックペイロード169のデータは、例えば、金融トランザクション、所有権情報、データアクセス記録、文書バージョニング、医療記録、投票記録、準拠及び証明書、教育上の成績証明書、購入レシート、デジタル権利管理記録、又は本質的にデジタル化可能な任意のデータであるブロックチェーンプロトコルブロック160のペイロードを介して記憶可能な文字どおり任意の種類のデータに関連するペイロード情報を含む、利用される特定の実装及びブロックチェーンプロトコルに依存した、任意の数の広範なトランザクションデータに関連し得る。選ばれた特定のブロックチェーンプロトコルに依存して、ペイロードサイズは固定サイズでも可変サイズでもよく、いずれの場合も、ペイロードハッシュ163を生成するハッシュのための入力の少なくとも一部として利用される。
【0050】
様々なプルーフ基準165が、選ばれた特定のブロックチェーンプロトコルに従って利用されてもよく、例えば、プルーフオブワーク、ハッシュ値要件、プルーフオブステーク、鍵、又は、合意若しくはプルーフオブコンセンサス(proof of consensus)のような他の何らかのインジケータなどである。合意に基づく手法が利用される場合、ブロックチェーン合意マネージャ191は、ホスト組織110のために合意管理を提供するが、ホスト組織110は、ブロックチェーンサービスインターフェース190を介してホスト組織110によりアクセスされる所与のブロックチェーンプロトコルのための単に多くのノードのうちの1つとして動作してもよく、あるいは代わりに、ホスト組織110は、ブロックチェーンサービスインターフェース190を介して、顧客及びサブスクライバに対する(及び、潜在的には、認証されていないパブリックノード参加者に対する)クラウドベースのサービスとして特定のブロックチェーンプロトコルを定義し、提供してもよい。このようなプルーフ基準165は、ハッシュ値がプルーフ基準より小さい、プルーフ基準より大きいことを要求するルールとして適用されてもよく、あるいは、特定のビットシーケンス(例えば、10個のゼロ、又は定義されたバイナリシーケンス)、又は必要な数の先頭若しくは後端のゼロ(例えば、20個の先頭又は後端のゼロを結果としてもたらす入力のハッシュなどであり、これは、既知の有効な入力なしに提供することが計算上実行不可能である)を必要としてもよい。
【0051】
先行ハッシュ161、ペイロードハッシュ163、又は認可されたハッシュ168に使用されるハッシュアルゴリズムは、特定のブロックチェーンプロトコル実装に依存して、全て同じタイプのものでも異なるタイプのものでもよい。例えば、許容可能なハッシュ関数は、MD5、SHA‐1、SHA‐224、SHA‐256、SHA‐384、SHA‐515、SHA‐515/224、SHA‐515/256、SHA‐3、又は原像攻撃に耐性のある任意の適切なハッシュ関数を含む。さらに、ハッシュが1回だけ計算されるという要件もない。ハッシュ関数の結果は、最終結果を生成するために、別の又は同じハッシュ関数への入力として再度、複数回再使用されてもよい。
【0052】
図1Cは、説明される実施形態による、さらに詳細に説明されるブロックチェーンメタデータ定義マネージャ196のさらなる詳細を有する別の例示的なアーキテクチャ102を示す。
【0053】
ここに見られるように、ブロックチェーンメタデータ定義マネージャ196を含むブロックチェーンサービスインターフェース190がある。さらに、ブロックチェーンメタデータ定義マネージャ196の様々な要素と相互作用するように示されているのは、メタデータ定義及び作成スキームに参加するネットワークメンバを確立することができる統合ビルダ153、並びにブロックチェーン合意マネージャ191及びブロックバリデータ192である。
【0054】
ブロックチェーンメタデータ定義マネージャ196の内部には、ホスト組織のテナント及び顧客組織の双方、並びにホスト組織のサービスの非サブスクライバと相互作用することができる信頼層154及び中央集権型信頼インターフェース152を含む、様々なさらなる要素がある。さらに、アクセス可能なブロックチェーンに対して作成及びプッシュされる全ての現在定義されているメタデータ定義の知識を有するメタデータ層156があり、その後に、様々にアクセス可能なブロックチェーンへのインターフェースとして機能するネットワーク組織(network organization)157層又は共有台帳が続く。状態台帳159は、アクセス可能なブロックチェーンのステータス及び任意の接続又は非接続状態を維持し、一方、履歴161のブロックは、プラットフォームのトランザクション履歴及びログを維持する。統合プラットフォーム層158は、ブロックチェーンメタデータ定義マネージャ196のコンポーネントとインターフェースするためにホスト組織110内の他のコンポーネントへのインターフェースを提供し、一方、アクセス制御層162は、以下により詳細に説明されるが、パブリックアクセスに対して完全にオープンではないプライベートの及び許可ありのブロックチェーンに対して特定のアクセス権及び制限を提供する。
【0055】
最後、様々なブロック台帳クライアントが示されており、ホスト組織のサブスクライブ顧客としてフルプラットフォームライセンスを享受するホスト組織の顧客164が含まれるが、ホスト組織のパートナー#1を有するブロック166における次のブロック台帳クライアントは、ホスト組織により提供される限られたユーザ能力を有する基本ライセンス及びブロック台帳ライセンスのみを享受し、その後に、ホスト組織のパートナー#2を有するブロック167における最後のブロック台帳クライアントが続いており、これは、ホスト組織により提供されるいかなるサブスクリプション必要ユーザサービスへのサブスクリプションもなく全ての当事者に利用可能なコミュニティライセンスに厳密に制限されている。
【0056】
高レベルからは、図示のアーキテクチャは同様のサービスをパブリックブロックチェーンに提供し、例外としては、この特定の実施形態によれば、共有台帳157がホスト組織の内部でブロックチェーンを動作させ、ホストされたネットワークorg(network org)のブロックチェーンプロトコル、又はここで示されるいわゆる「共有台帳(shared ledger)157」を定義する点である。したがって、図示の共有台帳157は、顧客及び非顧客がorg及びクライアント並びに非サブスクライブクライアントと相互作用することを可能にするが、必ずしも第三者インスタンスではなく、なぜならば、この特定の実施形態はホスト組織の内部で共有台帳157を動作させるためである。このようにして、パブリック及びプライベートのブロックチェーンにより提供される機能性は依然として実現及び利用され得るが、共有台帳157は完全にホスト組織110の内部であるため、修正された分散台帳技術(DLT)を利用して共有台帳を動作させることが可能であり、これは、本文献により説明される他の関連する実施形態で典型的であるように、ブロックチェーン合意マネージャ191のより慣例的な使用よりもむしろ、中央集権的な信頼オーソリティとしての(及び、中央集権型信頼インターフェース152を介して信頼の検証を提供する)ホスト組織110の信頼層154に依存するように修正される。
【0057】
信頼オーソリティ(例えば、ホスト組織110、又はブロックチェーン合意マネージャ191により管理されるように合意に達する分散ノードである)にかかわらず、全てのデータは透過的であり、暗号的に立証可能であり、データ及びユーザは、ホスト組織の内部でホストされるにもかかわらず単一の当事者により所有されず、履歴161及び状態台帳159は、強化された監査証跡を提供する。統合ビルダ153は、共有データ上で実行され、及びネットワークorg157自体により所有されるデータに対して実行されるスマートコントラクトの実行を可能にし、上記データは、例えば、全てのメンバにアクセス可能であるがそれにもかかわらずホスト組織により所有されたままであるメタデータ定義である。
【0058】
この特定の実施形態では、上述のように、信頼がホスト組織自体により信頼層154を介して確立されるため、合意の必要はないが、合意は、実装に応じて任意で利用されてもよい。
【0059】
特定の実施形態によれば、マルチテナント台帳プラットフォームがあり、これは、提供するネットワークレベルで機能し、ブロックチェーンを通して利用可能である同等量の透過性及び出所を提供するが、完全にホスト組織110の制御の範囲内にあり、したがって、ホスト組織110による中央集権的な信頼の確立などの特定の利益を提供する。
【0060】
このアーキテクチャは、中央集権型データベースと非中央集権型データベースとの間の折衷物を表し、注目すべきことに、分散台帳技術を利用したブロックチェーンの基本から逸脱しており、ゆえに分散データベースとして動作する。それにもかかわらず、ここに示されているのは、中央当事者として動作するホスト組織110であり、これは、ブロックチェーンサービスインターフェース190により、及びブロックチェーンサービスインターフェース190を通じて全てのテナントのために信頼を提供し、これは、信頼がネットワークにより、具体的には合意に達するネットワーク全体に分散されたノードにより提供されるブロックチェーンと対照的である。
【0061】
ホスト組織の共有台帳157を介して永続化されるデータ及び情報は、ネットワークにより、具体的には確立されたネットワークメンバにより完全に所有されるが、インフラストラクチャは中央当事者により所有され、この場合、ホスト組織110は、共有台帳157が動作するコンピューティングインフラストラクチャ及びリソースを所有、制御、及び管理する。したがって、任意の確立されたネットワークメンバがホスト組織を中央当事者として信頼する場合、システム及びアーキテクチャはその確立されたネットワークメンバのために動作する。しかしながら、注目すべきことに、確立されたネットワークメンバは、それらの信頼を第三者に、この場合はホスト組織110に置かなければならない。そうすることが、様々なデータセキュリティ要件、規制、又は他の懸念に基づいて可能でないか又は許容可能でない場合、ブロックチェーン合意マネージャ191により管理される分散ノードによる合意を必要とする分散台帳技術(DLT)は、これらの当事者に対してより適切である。
【0062】
特定の実施形態によれば、テナント焦点ネットワークorg又はテナント焦点共有台帳157が、再度、ホスト組織110(具体的には、ホスト組織のブロックチェーンサービスインターフェース190)の内部に設けられ、これにおいて、全てのユーザは、中央集権的な顧客により制御されるのではなく、各それぞれの顧客組織により制御される。言い換えると、テナント特有の顧客制御が存在し得、それにより、共有台帳157の所与のインスタンスに対する任意のユーザは、共有台帳157のそのインスタンスに対する権限を有するテナント又は顧客orgにより制御される。このようにして、共有台帳157の複数のインスタンスが存在することができ、各々が特定の顧客orgにより制御されるそのユーザセットを有し、ユーザを含めることを承認又は拒否するために任意の他の顧客org、テナント、又は任意の他のエンティティに交渉し又は依存する必要がない。これは、共有台帳157のインスタンスがホスト組織により内部的にホストされているにもかかわらず、ホスト組織に承認される必要なく、共有台帳157のそれらのインスタンスにおいてどのユーザが許可されるかをそれ自身のために決定することができるテナントの顧客orgを含む。これは、ホスト組織110が、共有台帳157の各それぞれのインスタンスに対してユーザを含めることに対する完全な制御を、その特定の共有台帳157が動作する顧客orgに効果的に委譲するためである。
【0063】
特定の実施形態によれば、共有台帳157は、マークル有向非巡回グラフ(Merkle Directed Acyclic Graph)(DAG)又は「マークルDAG」を具現化し、これは、ネイティブなマークルツリーと同様のデータ構造であり、例外としては、マークルDAG構造は平衡を保たれる必要がなく、その非リーフノードはデータを含むことを許容されることである。このような方法では、マークルDAGは、ネイティブのマークルツリーと、それらが双方ともハッシュのツリーを具現化する点で同様である。マークルツリーはトランザクションをシーケンスで接続するが、マークルDAGは、それがトランザクションをハッシュで接続する程度まで区別される。したがって、マークルDAG構造では、アドレスはマークルハッシュにより表現される。結果として生じるマークルハッシュのスパイダーウェブは、マークルグラフによりデータアドレスを一緒にリンクする。したがって、マークルDAGの有向非巡回グラフ(DAG)部分は、情報をモデル化するために利用されてもよく、例えば、どんな特定のアドレスが特定のデータを記憶するかをモデル化する。
【0064】
別の実施形態によれば、データは、共有台帳157の各インスタンス内で暗号化され、暗号的に立証可能である。例えば、ブロックチェーンサービスインターフェース190プラットフォームの拡張を利用し、共有台帳157のインスタンスを有する任意のテナントは、共有台帳157のそれらのインスタンス内の任意の記憶された暗号化データを暗号的に立証することができる。
【0065】
上述のように、多くの顧客にとって、クラウドベースのコンピューティングインフラストラクチャ及びソフトウェアをリース又はサブスクライブすることは、こうしたコンピューティングインフラストラクチャをそれら自身で所有、運用、保守、及び構成する必要があるよりもはるかに好ましい。特定の顧客とパートナーが、それらのデータと台帳の透過性のみを必要とする(例えば、分散ノード間の合意を必ずしも必要としない)場合、そのようなソリューションは、競合する代替策に対して実質的な改善を表す。ブロックチェーン技術は多くの利点を提示し、その多くは本文献で他の箇所でより詳細に説明されるが、現実には、特定の顧客は単にデータ及び台帳の非中央集権化に関心がなく、したがって、中央集権型信頼インターフェース152によりホスト組織110内で完全に運用される共有台帳157インスタンスを利用することから相当な利益を実現し、したがって、分散ブロックチェーン台帳に共通の他の合意レジームに参加する必要を否定することができる。
【0066】
一実施形態によれば、共有台帳157は、ホスト組織110によることを含むいかなる当事者によっても不変である監査証跡を提供し、したがって、競合するソリューションにより提供される標準的な監査証跡より優れたセキュリティ、透過性、及び保証を提供する。したがって、標準的な中央集権型システムと比較したとき、共有台帳157を利用するとき、テナント及び顧客組織に付加価値がもたらされる。
【0067】
またさらに、共有台帳157は、マルチテナント認識であり(例えば、各テナント又は顧客組織は、共有台帳157のそれ自身のインスタンスを利用することができる)、メタデータ駆動型であり、トリガを介して実行可能なスマートコントラクトを有するため、ホスト組織のテナントサブスクライバにとって、ホスト組織により提供されるプラットフォームの利益を上回る及び超える複数の利点がある。
【0068】
衣料品から生鮮品までに及ぶ製品のサプライチェーンを管理するためにブロックチェーンを利用して市場に進出したい大規模小売業者の例について考える。このような例は、衣料用の原材料としての綿と、包装された製品として店舗で販売される葉物野菜を用いて始めてもよい。最終的には、大規模小売業者は完全なブロックチェーンソリューションに進化し得るが、最初、多くの顧客は、ホスト組織により提供される共有台帳157などの完全に制御された単一の信頼点及びホストされたソリューションを利用することを好む可能性がある。ホストされた共有台帳ソリューションで最初始める理由は、それらにクラウドベースのサービスをすでに提供しているそれらの現在のホスト組織を介して単一のログイン又は単一の認証ポータルを可能にし得、これは次いで、大規模小売業者がそれらの検証された台帳情報をシングルサインオンポータルから閲覧することを可能にすると同時に、大規模小売業者が分散台帳技術(DLT)を試すことを可能にする。
【0069】
したがって、このような構造は、大規模小売業者が、例として、ホスト組織110内であるにもかかわらず不変の共有台帳157内にデータが記憶されていることに起因してデータの不変性にそれらの信頼を置くことを可能にする。これは、ホスト組織でさえ共有台帳157の監査証跡を改変することができないため、可能である。これは、従前のクラウドベースのプラットフォームの使用と対照的であり、それは、標準化された監査証跡を提供するが、監査証跡が全ての当事者によって不変ではないため、それは理論的には、そのようなシナリオはかなり可能性が低いものの、悪意のある行為者により操作される可能性がある。それにもかかわらず、修正されたDLT技術を利用する共有台帳157は、設計上、その監査証跡の観点で全当事者により不変であり、したがって、ホスト組織でさえ共有台帳157内に記憶された履歴レコードを改変する能力がないと仮定し、ホスト組織などの中央集権的な信頼オーソリティにより高いレベルの信頼が適宜置かれ得る。
【0070】
同じ論理は、1つの会社内及びその子会社内で内部的にこのような台帳を利用することを望む企業に適用されてもよく、なぜならば、そうすることで、会社及びその子会社間のより良い統合及びデータ共有を可能にし、一方、共有台帳の不変性からの恩恵を受け、これは、ローカル及びリモートで運用されるデータベース又は厳密にオンデマンドのクラウドベースのソリューションなどの競合するソリューションにより提供され得るものを上回り、超える。
【0071】
例えば、販売リード情報を商業銀行部門や全国にわたり複数の部門を有するヘルスケア企業と共有したいモーゲージ部門について考える。これらは、様々な部門間で十分に統合されておらず、結果として、重複した業務センターをもたらしており、例えば、北カリフォルニアのクレーム処理グループと南カリフォルニアの別のクレーム処理グループなどであり、これらは、現在は完全な統合を欠いているが、ホストされた共有台帳157ソリューションにマイグレートして、より良い統合、プラットフォームに書かれたレコードの不変性を通じて信頼された監査証跡、ひいては、大規模ヘルスケアプロバイダの様々な部門により利用されるデータの改善された使いやすさと透過性を実現することができる。
【0072】
したがって、特定の実施形態によれば、ホスト組織のシステムによる動作があり、これには、共有台帳に対する複数の認可されたネットワーク参加者のために共有台帳へのインターフェースを動作させ、これにおいて、共有台帳は複数の分散共有台帳ノードを介してデータを永続化すること;共有台帳内にネットワークorgを生成して、複数の認可されたネットワーク参加者のうちの最初の認可されたネットワーク参加者としての創設者org(founder org)のためにデータを記憶すること;創設者orgから、ネットワークorgに対するさらなる認可されたネットワーク参加者としての複数のパートナーorgを定義する入力を受信し、これにおいて、認可されたネットワーク参加者の全てが、データを複製することなく共有台帳を介してネットワークorgにより記憶されたデータへの読み取りアクセスを有すること;創設者orgから、パートナーorgの各々が共有台帳内でネットワークorgと相互作用するためのパーミッションを定義する入力を受信すること;共有台帳に、少なくともネットワークorgに対して認可されたネットワーク参加者とパートナーorgの各々に対して定義されたパーミッションとを定義するメタデータを書き込むこと;認可されたネットワーク参加者から、ネットワークorgと相互作用する要求を受信すること;及び、要求の履行(fulfillment)において共有台帳との間でトランザクション処理することが含まれる。
【0073】
別の実施形態の動作によれば、共有台帳は、ホスト組織の内部の関係データベースシステム上で動作する宣言型の、メタデータ駆動型の、暗号的に立証可能なマルチネットワーク(マルチテナント)共有台帳を含み、この方法はさらに、パートナーorgの各々に、及び創設者orgに一意ネットワークIDを割り当てることと、ネットワークIDによりネットワークorgのデータを記憶させた関係データベースシステムのテーブルを区分することを含む。
【0074】
別の実施形態の動作によれば、関係データベースシステムは、複数の共有台帳ノードを介してネットワークorg内に記憶されたデータに影響を及ぼす全ての挿入、削除、及び更新を記録する監査ログを不変に記憶する。
【0075】
別の実施形態の動作によれば、要求の履行において共有台帳との間でトランザクション処理することは、少なくとも、(i)共有台帳からネットワークorgのためのメタデータを取り出すこと、(ii)各要求が、ネットワークorgに対して認可されたネットワーク参加者のうちの1つに由来することを検証すること、(iii)各要求が、ネットワークorgのための取り出されたメタデータにより定義されるパーミッションに準拠した創設者orgによる相互作用又はパートナーorgのうちの1つによる相互作用を指定していることを検証すること、及び(iv)成功裏の検証に従って要求の履行において共有台帳を介してネットワークorgとの間でトランザクション処理することを含む。
【0076】
別の実施形態の動作によれば、パートナーorgの各々についてメタデータにより定義されるパーミッションは、パートナーorgのうちの1つの要求におけるメタデータへの書き込みアクセスであり、創設者orgにより付与されるメタデータへの書き込みアクセス;及び、パートナーorgのうちの1つの要求におけるネットワークorgにより記憶されたデータへの書き込みアクセスであり、創設者orgにより付与されるデータへの書き込みアクセス;のうちの1つ以上を含む。
【0077】
別の実施形態の動作によれば、パートナーorgの各々についてメタデータにより定義されるパーミッションは、パートナーorgの1つに関連づけられた新しいユーザを作成するパーミッションを含む。
【0078】
別の実施形態の動作によれば、パートナーorgの各々についてメタデータにより定義されるパーミッションは、ネットワークorgに対する認可されたネットワーク参加者として新しいパートナーorgを追加するパーミッションを含む。
【0079】
別の実施形態の動作によれば、メタデータにより定義されるパーミッションはさらに、メタデータを修正するために創設者orgにより付与される、創設者orgに対するパーミッション;ネットワークorgにより記憶されたデータを修正するために創設者orgにより付与される、創設者orgに対するパーミッション;ネットワークorgからパートナーorgの1つを除去し、ネットワークorgに対して認可されたネットワーク参加者の1つとしての除去されたパートナーorgを排除するために創設者orgにより付与される、創設者orgに対するパーミッション;ネットワークorgに対して認可されたネットワーク参加者として新しいパートナーorgを追加するために創設者orgにより付与される、創設者orgに対するパーミッション;ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通の新しいビジネスロジックを宣言するために創設者orgにより付与される、創設者orgに対するパーミッション;及び、ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通の新しいビジネスルールを宣言するために創設者orgにより付与される、創設者orgに対するパーミッション;のうちの1つ以上を含む。
【0080】
別の実施形態の動作によれば、共有台帳内にネットワーク組織により記憶されるデータは、ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通のアプリケーションデータレコード;ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通のビジネスデータレコード;ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通の宣言されたビジネスロジック;及び、ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通の宣言されたビジネスルール;のうちの1つ以上を含む。
【0081】
別の実施形態によれば、そのような動作はさらに、認可されたネットワーク参加者のうちの1つからの、共有台帳を介してローカライズされたデータを記憶する要求を受信すること;共有台帳を介してローカライズされたデータを記憶すること;これにおいて、記憶されたローカライズされたデータは、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のみがアクセス可能であり、記憶されたローカライズされたデータは、他の認可されたネットワーク参加者に公開されないこと;を含んでもよい。
【0082】
別の実施形態の動作によれば、記憶されたローカライズされたデータは、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のみがアクセス可能な、ネットワークorgにより記憶されたデータへの修正;ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通のアプリケーションデータレコードへの修正であり、これにおいて、この修正は、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のみがアクセス可能であること;ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通のビジネスデータレコードへの修正であり、これにおいて、この修正は、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のみがアクセス可能であること;ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通の宣言されたビジネスロジックへの修正であり、これにおいて、この修正は、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のみがアクセス可能であること;及び、ネットワークorgに対して認可されたネットワーク参加者の全てにわたり共通の宣言されたビジネスルールへの修正であり、これにおいて、この修正は、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のみがアクセス可能であること;のうち少なくとも1つを含む。
【0083】
別の実施形態の動作によれば、記憶されたローカライズされたデータは、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のための新しいユーザアカウントと、新しいユーザアカウントに対して定義されたユーザパーミッションを含み、これにおいて、各認可されたネットワーク参加者は、共有台帳内にネットワーク組織により記憶されたデータに影響を及ぼすことなく区別可能なユーザ制御を有する。
【0084】
別の実施形態の動作によれば、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者は、ホスト組織内に複数のユーザを有する顧客組織であり、これにおいて、記憶されたローカライズされたデータは、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者のための新しいユーザアカウントを含み、新しいユーザアカウントは、顧客組織の複数のユーザアカウントに関連づけられたいずれのユーザアカウントとも区別可能である。
【0085】
別の実施形態の動作によれば、ローカライズされたデータを記憶する要求を発信した認可されたネットワーク参加者は、ホスト組織内にテナンシーを有する顧客組織であり、これにおいて、記憶されたローカライズされたデータは、ネットワークorgにより記憶されたデータに影響を及ぼす変更に基づいて顧客組織のCRMデータに対して実行するための顧客組織特有のワークフローを含む。
【0086】
別の実施形態の動作によれば、ネットワークorgにより記憶されたデータ及びメタデータに影響を及ぼす全ての変更は暗号的に立証可能であり、少なくとも、どんなデータが変更されたか、データがいつ変更されたか、及び誰がデータに変更を行ったかを含むフルの監査ログを提供する。
【0087】
別の実施形態の動作によれば、認可されたネットワーク参加者の各々は、ホスト組織のテナントである。
【0088】
別の実施形態の動作によれば、創設者orgは、ネットワークorgの生成を要求したホスト組織の複数のテナントのうちの最初のテナントであり、これにおいて、パートナーorgの各々は、創設者orgとは異なるホスト組織のテナントであり、創設者orgにより共有台帳に対して認可されたネットワーク参加者として追加されている。
【0089】
別の実施形態の動作によれば、ホスト組織のシステムは、オンデマンドサービス、オンデマンドデータベースサービス、及びクラウドコンピューティングサービスをサブスクライブ顧客組織に提供するクラウドベースの機能性を実施するためのハードウェア、ソフトウェア、及び論理要素を具現化し、これにおいて、創設者のorgとパートナーのorgの各々は、サブスクライバ顧客組織の中から選択され、クラウドベースの機能性は、パブリックインターネットを通じてサブスクライブ顧客組織がアクセス可能である。
【0090】
別の実施形態の動作によれば、ネットワークorgは、ホスト組織の複数の顧客組織のうちの1つとしてホスト組織により表される。
【0091】
別の実施形態の動作によれば、共有台帳は、ホスト組織の内部の関係データベースシステムを含み、これにおいて、ネットワークorgにより記憶されたデータのコピーは、複数の共有台帳ノードのうちの1つ以上を介してホスト組織の複数のデータセンターの各々からアクセス可能であり、この方法はさらに、ホスト組織の複数のデータセンターのうちの1つにおける停止に基づいて、又は複数の共有台帳ノードのうちの第1のものからの無応答に従って、複数の共有台帳ノードのうちの1つがアクセス不可能であると決定することと、決定の後、複数の共有台帳ノードのうちの第2のものから、共有台帳により記憶されたネットワークorgとの間でトランザクション処理することを含む。
【0092】
別の実施形態の動作によれば、共有台帳は、ホスト組織の内部の分散台帳技術(DLT)データストアを実施し、これにおいて、ネットワークorgにより記憶されたデータのコピーは、ホスト組織の複数の地理的に分散されたデータセンターに分散された複数の共有台帳ノードの各々からアクセス可能であり、DLTデータストアは、DLTデータストアに追加された資産内の全てのデータを不変に記憶する。
【0093】
別の実施形態の動作によれば、ネットワークorgにおけるデータ削除トランザクションは、DLTデータストアからいかなるデータも除去することなくネットワークorgから削除されるデータを指定する新しい資産により表され、これにおいて、ネットワークorgにおけるデータ更新トランザクションは、DLTデータストアからいかなるデータも除去することなくネットワークorgで更新されたデータの現在のバージョンを指定する新しい資産により表され、ネットワークorgにトランザクション処理されたデータの全ての先行バージョンは、DLTデータストアにより不変に永続化され、DLTデータストアの監査ログを介して利用可能であり、これには、削除されたと指定された任意のデータと、1つ以上の更新により影響を受けたネットワークorgへトランザクション処理されたデータの全ての先行バージョンが含まれる。
【0094】
別の実施形態の動作によれば、ホスト組織は、ネットワークorgに対して認可されたネットワーク参加者のためにDLTデータストアに対する任意のトランザクションを検証するために、中央集権的な信頼オーソリティとして動作する。
【0095】
別の実施形態の動作によれば、DLTデータストアは、完全にホスト組織の排他的制御下で動作するハードウェア及びソフトウェアインフラストラクチャを介して実施される。
【0096】
別の実施形態の動作によれば、共有台帳へのインターフェースを動作させることは、共有台帳に対して認可されたネットワーク参加者のためにブロックチェーンへのブロックチェーンサービスインターフェースを動作させることを含み、これにおいて、認可されたネットワーク参加者の各々は、ブロックチェーン上の参加ノードとして動作し、ホスト組織により動作するブロックチェーンサービスインターフェースを介してブロックチェーンとの間でトランザクション処理する。
【0097】
別の実施形態の動作によれば、ネットワークorgにより記憶されたデータのコピーは、ブロックチェーン上の参加ノードとして動作する認可されたネットワーク参加者のいずれからもアクセス可能であり、さらに、ブロックチェーン上の任意の他の参加ノードからアクセス可能であり、これにおいて、ブロックチェーンは、ブロックチェーンに追加された全てのレコードを不変に記憶し、削除及び更新により影響を受けたネットワークorgにより記憶されたデータは、ブロックチェーンの監査ログを介してデータの非現在のバージョンとしてブロックチェーンからアクセス可能なままである。
【0098】
別の実施形態の動作によれば、ホスト組織は、ブロックチェーン上の参加ノードを動作させ、これにおいて、ブロックチェーンは、ホスト組織の外部で動作し、ホスト組織の排他的制御の範囲外で動作する。
【0099】
別の実施形態の動作によれば、ネットワークorgは、共有台帳を介して動作する複数の区別可能なネットワークorgのうちの1つを含み、又は代わりに、ネットワークorgは、ホスト組織の固有の共有台帳インスタンス上で動作し、異なるネットワークorgは、ネットワークorgが動作する固有の共有台帳インスタンスとは別個のホスト組織内の他の共有台帳インスタンス上で動作する。
【0100】
別の実施形態の動作によれば、ネットワークorgにより記憶されたデータは、第1の宣言されたアプリケーション及び第2の宣言されたアプリケーションに関連づけられ、第1の宣言されたアプリケーションと第2の宣言されたアプリケーションの双方が、創設者org及び複数のパートナーorgにより利用され、これにおいて、メタデータにより定義されたパーミッションは、パートナー組織の各々がデータに第1の宣言されたアプリケーションを利用してアクセスするか又は第2の宣言されたアプリケーションを利用してアクセスするかに基づいて、ネットワークorgにより記憶されたデータに対する異なるアクセスパーミッションを規定する。
【0101】
別の実施形態の動作によれば、共有台帳に書き込まれるメタデータはさらに、複数のエンティティタイプと、複数のエンティティタイプの各々についての複数のフィールド定義とを定義し、この方法はさらに、ホスト組織のデータベースシステム内に仮想テーブルを生成することと、共有台帳に書き込まれたメタデータに基づいてホスト組織のデータベースシステム内で仮想テーブルを構造化することを含み、これにおいて、共有台帳に書き込まれたメタデータからのエンティティは仮想テーブル内のテーブルとして表され、さらに、複数のエンティティタイプの各々についての1つ以上の新しいフィールド定義が仮想テーブルにおけるテーブル内の列として表される。
【0102】
別の実施形態の動作によれば、仮想テーブルは、新しいアプリケーションに対して宣言されたメタデータに基づいて構造化されたホスト組織のデータベースシステムでホストされたマテリアライズドビュー(materialized view)を含み、これにおいて、ホスト組織のデータベースシステムにホストされたマテリアライズドビューは、新しいアプリケーションに関連づけられたいかなるデータも記憶せず、読取専用アクセスを要求するSQLクエリは、この読取専用SQLクエリを共有台帳から要求されたデータを取り出すための共有台帳トランザクションに翻訳する(translating)ことにより、マテリアライズドビューに対して処理される。
【0103】
別の実施形態の動作によれば、共有台帳に書き込まれるメタデータはさらに、複数のエンティティタイプと、複数のエンティティタイプの各々についての複数のフィールド定義とを定義し、この方法はさらに、複数のエンティティタイプと複数のエンティティタイプの各々についての1つ以上の新しいフィールド定義と1つ以上のフィールド定義に適用される任意のフィールドタイプとを含む、共有台帳からのメタデータを取り出すことと、定義されたメタデータに基づいて仮想テーブルを構造化することにより、ホスト組織における仮想テーブル内に共有台帳を介して記憶されたデータのマテリアライズドビューを生成することを含み、これにおいて、マテリアライズドビューは、ホスト組織におけるマテリアライズドビュー内にデータを記憶することなく、共有台帳により記憶された、関連づけられたデータの構造を表す。
【0104】
別の実施形態によれば、そのような動作はさらに、ホスト組織において、ユーザデバイスからSQL文を受信することであり、これにおいて、SQL文はマテリアライズドビューに向けられ、ブロックチェーンに永続化され及び新しいアプリケーションに関連づけられたデータのためのSQL update又はSQL insertを要求することと、共有台帳において新しいアプリケーションに関連づけられたデータを更新又は追加するために、SQL update又はSQL insertを要求するSQL文を対応する共有台帳トランザクションに翻訳することにより、マテリアライズドビューに対してSQL文を処理することと、対応する共有台帳トランザクションが共有台帳により受け入れられ、共有台帳において新しいアプリケーションに関連づけられたデータを成功裏に更新又は追加することに従って、マテリアライズドビューに対するSQL文の成功裏の処理を確認する確認応答をユーザデバイスに発行することを含んでもよい。
【0105】
別の実施形態によれば、そのような動作はさらに、ホスト組織においてマテリアライズドビューに向けられたSQL文を受信することを含んでもよく、これにおいて、SQL文は、(i)SELECT fromのSQL文(ii)INSERT intoのSQL文、及び(iii)UPDATE setのSQL文のうちの1つ以上を指定し、受信されたSQL文は、SQL文を対応する共有台帳トランザクションに翻訳し、ホスト組織におけるマテリアライズドビューに向けられたSQL文の履行において共有台帳に対して対応する共有台帳トランザクションを実行することにより処理される。
【0106】
特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令が少なくともプロセッサ及びメモリをその中に有するシステムのプロセッサにより実行されると、命令はシステムに動作を実行させ、該動作は、共有台帳に対する複数の認可されたネットワーク参加者のために共有台帳へのインターフェースを動作させ、これにおいて、共有台帳は複数の分散共有台帳ノードを介してデータを永続化すること;共有台帳内にネットワークorgを生成して、複数の認可されたネットワーク参加者のうちの最初の認可されたネットワーク参加者としての創設者orgのためにデータを記憶すること;創設者orgから、ネットワークorgに対するさらなる認可されたネットワーク参加者としての複数のパートナーorgを定義する入力を受信し、これにおいて、認可されたネットワーク参加者の全てが、データを複製することなく共有台帳を介してネットワークorgにより記憶されたデータへの読み取りアクセスを有すること;創設者orgから、パートナーorgの各々が共有台帳内でネットワークorgと相互作用するためのパーミッションを定義する入力を受信すること;共有台帳に、少なくともネットワークorgに対して認可されたネットワーク参加者とパートナーorgの各々に対して定義されたパーミッションとを定義するメタデータを書き込むこと;認可されたネットワーク参加者から、ネットワークorgと相互作用する要求を受信すること;及び、要求の履行において共有台帳との間でトランザクション処理することを含む。
【0107】
別の実施形態によれば、ホスト組織において実行するシステムがあり、当該システムは、命令を記憶するメモリと、命令を実行するプロセッサであり、プロセッサは、共有台帳に対する複数の認可されたネットワーク参加者のために共有台帳への共有台帳インターフェースを実行し、これにおいて、共有台帳は複数の分散共有台帳ノードを介してデータを永続化し、プロセッサは、共有台帳内にネットワークorgを生成して、複数の認可されたネットワーク参加者のうちの最初の認可されたネットワーク参加者としての創設者orgのためにデータを記憶する、プロセッサと、創設者orgから、ネットワークorgに対するさらなる認可されたネットワーク参加者としての複数のパートナーorgを定義する入力を受信する受信インターフェースであり、これにおいて、認可されたネットワーク参加者の全てが、データを複製することなく共有台帳を介してネットワークorgにより記憶されたデータへの読み取りアクセスを有し、受信インターフェースはさらに、創設者orgから、パートナーorgの各々が共有台帳内でネットワークorgと相互作用するためのパーミッションを定義する入力を受信し、これにおいて、共有台帳インターフェースは、少なくともネットワークorgに対して認可されたネットワーク参加者とパートナーorgの各々に対して定義されたパーミッションとを定義する、共有台帳に対するメタデータに対し、受信インターフェースはさらに、認可されたネットワーク参加者から、ネットワークorgと相互作用する要求を受信し、これにおいて、共有台帳インターフェースはさらに、要求の履行において共有台帳との間でトランザクション処理する、受信インターフェースと、を含む。
【0108】
注目すべきことに、共有台帳は、ブロックチェーンと同様の非中央集権化能力を提供するが、前述のように、共有台帳は、ホスト組織の内部の共有台帳インスタンス上で実行されてもよく、ホスト組織の外部のパブリックブロックチェーン上で実行されてもよく、ホスト組織の外部のプライベートブロックチェーン又はホスト組織により実施されるプライベートブロックチェーン上で実行されてもよく、あるいは、共有台帳は、分散関係データベースシステム上で実行されてもよい。
【0109】
従来の解決策での1つの問題は、2つ以上の組織がデータを共有することに同意するときはいつでも、最終的に、組織の少なくとも1つが、アクセスパーミッションを変更し又は共有データの構造に対して任意の変更を行う援助のために、データリポジトリの創設者組織に戻らなければならないことである。さらに悪いことに、データリポジトリの創設者組織は、支援のために、例えば特定の管理権限を委譲するために、別の第三者に行かなければならない状況がある。
【0110】
共有台帳により、創設者組織は、どんな他のエンティティがパートナー組織として動作し得るかを指定することができ、さらに、創設者組織は、強化された管理特権をそれら及び他のパートナー組織に委譲することができる。例えば、パートナー組織は、ユーザを作成すること、又は共有台帳により永続化又は保存されるネットワークorgデータの構造を定義するメタデータを修正することを可能にされ得る。さらに、共有台帳は、特定の実施形態に従って、宣言型の、メタデータ駆動型の、暗号的に立証可能なマルチネットワーク(マルチテナント)共有台帳を実施し、これは、共有能力の履行において任意のデータを何であれ複製する必要なく、又は共有台帳の分散ノードの分散された性質から恩恵を受ける必要なく、創設者orgとパートナーorgとの間におけるデータの共有を可能にする。
【0111】
例えば、アメリカンエキスプレスなどのクレジットカード会社により実施されるロイヤルティリワードプログラムについて考える。Amexは、情報が創設者組織及びパートナー組織としてAmexの利益のために中央集権的な場所に収集され得るように、複数の異なるパートナー組織とデータを共有したい場合があり得る。従来の解決策では、パートナー組織の各々は、データアクセスのためにシステムにユーザを追加し、又はシステムに記憶されたデータに任意の変更を何であれ行うなどの必要があるときはいつでも、援助のために絶えずアメックスに戻る必要があるであろう。
【0112】
しかしながら、共有台帳の使用により、Amexなどの創設者orgは、特定の権利をパートナーorgに委譲することができる。例えば、Amexは、パートナーorgがそれら独自のユーザアカウントを作成し、あるいは創設者orgとパートナーorgにより共有されるビジネスロジックを修正し、あるいは全てのパートナーorg及び創設者orgにより共有される共有台帳内のデータの共通プールに影響を及ぼすことなくパートナーorgのうちの1つのみに特有のローカライズされたデータ(例えば、パートナー組織のうちの1つに対して実行するCRMフローなど)を作成し、あるいはパートナー組織の特定のアプリケーションが共有データへの書き込みアクセスを有することを許可するなどの特定のデータ修正動作を実行することなどを可能にしてもよい。
【0113】
特定の実施形態によれば、ホスト組織は、共有台帳のコンピューティングインフラストラクチャの全体を実施、管理、維持、及び制御するが、創設者orgが特定の権利をそれらに、又はパートナーorgに委譲し又は割り当てることを可能にし(例えば、創設者orgは、創設者orgに特権を割り当てることができる)、例えば、記憶されたデータへの書き込みアクセス、又は所与のネットワークorgに対するパートナーorg及び創設者orgのために記憶されたデータの構造を定義する記憶されたメタデータへの書き込み及び更新アクセスなどである。
【0114】
特定の実施形態によれば、創設者orgの各々とパートナーorgは、ホスト組織の既存の顧客組織又はテナントであり、したがって、認可されたネットワーク参加者としての共有台帳への参加を通じて、ホスト組織からの管理支援を求める必要なく、それら自体のため及びそれらのユーザのためにそれら独自のアクセス制御を定義することを可能にされる。
【0115】
さらに、共有台帳が全ての情報を暗号法による方法で提供するため、あるタイプの監査証跡又は完全に透過的な監査ログが作成され、創設者org及び可能性としてパートナーorgは誰が何のデータをいつ変更したかを確認することができ、ゆえに、法律、会計原則、又は契約上の義務により必要とされる、データレコードに変更が行われたことの誰、何、どこ、いつ、及びなぜについて、完全なトレースバックが可能となる。
【0116】
注目すべきことに、共有台帳では、ホストorgのデータに対して1つのみの単一のリポジトリがあり、データは、パートナーノードの各々に対して複製されない(ただし、特定の分散技術は、複数のノード間で分散される単一のデータリポジトリを提供する)。しかしながら、注目すべきことに、提供される同期メカニズムはなく、なぜならば、データは共有台帳を介して常に永続化され、データ共有の問題に対する多くの従前の解決策のように他の場所にコピーされず、参照されないためである。
【0117】
特定の実施形態によれば、パートナーの一部又は全部は、それら独自のビジネスルール及びビジネスロジックを作成することができ、これは次いで、共有台帳内のネットワークorgにより記憶されるデータの共通プールに書き込まれる。他の実施形態において、パートナーは、それら独自のパートナーorg特有のルール及びビジネスロジックを書いてもよく、これは、共有台帳を介して永続化されるがネットワークorgのためのデータの共通プールには置かれず、したがって他のパートナーorg又は創設者orgに公開されない。これは、パートナーorgが、共有台帳内のネットワークorgにより記憶されたデータに対する修正に基づいて実行すべきCRMデータフローを作成したとき、生じ得る。その場合、データの共通プールは、パートナーorgのCRMデータフローにより参照されるが、CRMデータフロー自体は、その特定のパートナーorgに対してのみ有用である。しかしながら、注目すべきことに、全ての認可されたネットワーク参加者のための共通のビジネスルール及びロジックが、実現可能であるだけでなく、複数の区別可能なエンティティにより共有されたデータを有する任意の所与のネットワークorg上で発生する可能性がかなり高い。
【0118】
またさらに、データが共有台帳内に永続化されるにもかかわらず、特定の実施形態に従い、データなし仮想テーブルがホスト組織内に「マテリアライズドビュー」として作成されることが提供され、これにおいて、創設者org及びパートナーorgは、共有台帳の特定の実施形態がホスト組織内のDLTベースのデータストア又はブロックチェーン(プライベート又はパブリック)などの非関係データストアに永続化され得るという事実にもかかわらず、マテリアライズドビューに対してそれが従来の関係データベーステーブルであるかのようにSQLベースのクエリを発行し、処理することができ、一方、他の状況において、共有台帳は、それが暗号的に立証可能である限り、許容される方法で関係データベースに永続化されてもよい。
【0119】
そのような実施形態では、マテリアライズドビューは、認可されたネットワーク参加者(例えば、創設者及びパートナー)のうちのあらゆるものに提供されてよく、これは次いで、SQLトランザクションがそのような参加者の観点からマテリアライズドビューに対して処理されることを可能にし、ホスト組織は次いで、受信したSQL文から必要な共有台帳トランザクションコマンドへの必要な翻訳を提供し、これはブロックチェーン、DLTデータストア、又はさらには別の関係データベースストアである。
【0120】
特定の実施形態によれば、共有台帳は、マルチテナント認識及びマルチネットワーク認識であり、あらゆる認可されたネットワーク参加者は、一意的なネットワークIDを割り当てられ、さらにこれにおいて、共有台帳を介してネットワークorg内に記憶された全てのデータは次いで、ネットワークIDにより区分され、かつ/あるいはネットワークIDを介して参照可能であり、したがって、1つ以上の指定された認可されたネットワーク参加者のみに特有のデータが参照されることを可能にする。
【0121】
別の実施形態によれば、ネットワークorgのためのデータの同じ共通プールは、宣言されたアプリがそのようなデータにアクセスするために利用されることに基づいて、異なるアクセスパーミッションを受けてもよい。例えば、Amexが創設者orgであり、Chevronがパートナーorgである場合、ネットワークorgにより使用される在庫管理のための第1のアプリケーションは、Chevronの、データの共通プールへの読み取りアクセスのみを許可するが、同じパートナー組織のChevronは、顧客リワードポイントアプリなどの異なるアプリを利用してデータの同じ共通プールにアクセスするとき、Chevronがネットワークorgに記憶されたデータの一部への書き込みアクセスを有することを許可し、ゆえに、特定のパートナーorgに基づくだけでなく、宣言されたアプリに基づいて、異なるパーミッションが可能となる。
【0122】
図1Dは、説明される実施形態による、ホスト組織サービスのブロックチェーンサービスインターフェース190との統合をより詳細に示す別の例示的なアーキテクチャ103を示す。
【0123】
特に、ここで統合ビルダ153とアクセス可能クラウドプラットフォーム186の双方が示されており、これらの各々はブロックチェーンサービスインターフェースのブロックチェーンメタデータ定義マネージャ196にインターフェースされる。統合ビルダ153は、様々な機能性を提供し、これは集合的に、ホスト組織の内部にホストされた共有台帳157へのエンティティ及びメタデータ定義を可能にし、あるいは、ホスト組織を通じてアクセス可能にされるブロックチェーンへのエンティティ及びメタデータ定義を、そのようなブロックチェーンがホスト組織の最終的な制御下にないパブリックブロックチェーンであるときでも可能にする。
【0124】
統合ビルダ153に具体的に示されているのはワンクリックブロックチェーンコネクタ131であり、これにより、ユーザは、コンポーネントをクリック及びドラッグして、それらのアプリケーションをホスト組織の内部の、ホスト組織を介してアクセス可能な利用可能ブロックチェーンとリンクすることができ、したがって、ユーザがリンクを確立するために必ずしもコードを書く必要なく、アプリケーションとブロックチェーンとの間のリンクが指定される。
【0125】
ネットワーク形成マネージャ132により、ユーザは、どのエンティティ(例えば、アプリケーション等)、パートナー、テナント、ユーザ、顧客組織等がそれらのアプリケーションを介してブロックチェーンに書き込まれた情報へのアクセスを有するかを定義することができる。
【0126】
エンティティ定義セットアップGUI133により、ユーザは、コードを書くことなく、指定されたメタデータが適用されるアプリケーション又はエンティティを定義することができる。例えば、これは、エンティティ定義セットアップGUI133で指定された新しいエンティティでもよく、あるいは、これは既存のアプリケーションでもよく、既存のアプリケーションは、メタデータ定義GUI134を介して指定及び確立されたメタデータ定義と互換性のあるものにされる。
【0127】
最後、ブロックチェーン資産又はコインデプロイメント(deployment)135により、ユーザは、それらの指定したエンティティを、定義されたメタデータ、及びネットワーク形成マネージャ132を介して指定された任意の関連するアプリケーション、パートナー、顧客org、テナント、ユーザ等と共に、接続性と適切な場合には関連するアクセス権とを有するアプリケーション又は誰かによる使用のために、接続されたブロックチェーン上へデプロイする(deploy)ことができる。GUIを介して定義されたエンティティとメタデータがブロックチェーン上にデプロイされると、それらは、問題のブロックチェーンへのアクセスと関連するアクセス権とを有する任意のアプリケーションやエンティティにより利用することができる。言い換えると、ブロックチェーン資産又はコインデプロイメント135のコンポーネントは、定義されたエンティティ及びメタデータを「パブリッシュ」又は「稼働開始」するのに役立つ。
【0128】
さらに示されているは、アクセス可能クラウドプラットフォーム186であり、これを介して、リンクされたブロックチェーンの外側に記憶されているがホスト組織を介してアクセス可能な情報が、定義されたエンティティを通じてリンクされ得る。
【0129】
したがって、ユーザが新しいアプリケーションを作成し、そのアプリケーションのためのメタデータを定義し、定義されたエンティティとメタデータを選択されたブロックチェーン上へデプロイする場合、さらに、その特定のアプリケーションについて問題の選択されたブロックチェーン内で永続化されていない、ホスト組織を介してアクセス可能な様々にアクセス可能クラウドプラットフォーム171上に記憶されたデータを取り出し、参照し、読み取り、及び書き込むことが許容可能である。
【0130】
例えば、ホスト組織を介してアクセス可能な共有台帳157又は別のブロックチェーン上のアプリケーションは、ホスト組織により提供される商業クラウド171からデータを取り出し、あるいはホスト組織により提供されるマーケティングクラウド172からデータを取り出すことができ、あるいは、ここで173A、173B、及び173Cとして示される外部にリンクされたクラウドなどの、第三者及び外部リンククラウド173から情報を参照することができ、これは、現実には、例えば、Amazon(登録商標) AWSクラウドサービスインターフェース、又はMicrosoft(登録商標) Azureクラウドサービスインターフェース、又はOracle(登録商標)クラウドサービスインターフェースなどに対応し得る。このような第三者クラウドがホスト組織サービス107を介して外部リンクされている限り、該第三者クラウドは、ホスト組織を介してアクセス可能な、又はホスト組織の内部にホストされたブロックチェーン内にそれらのデータを永続化するエンティティ及びアプリケーションにより参照され得る。
【0131】
さらに示されているのは、ネットワークorg共有台帳157のより詳細なブレイクアウトであり、これは、前述したように、パブリックブロックチェーンへの完全なデプロイメントを回避したい顧客orgに特定の分散台帳技術(DLT)の機能態様を提供し、さらに、合意を必要とするのでなく信頼層154を介して中央集権的な信頼オーソリティを実施する(ホスト組織内の)内部ホスト型台帳機能を提供することができる。任意で、共有台帳157は、顧客orgがテスト又は検証の目的で同意管理プロトコル157Aを参照することを許可してもよく、これにおいて、顧客組織は、任意のトランザクションに対してそれら独自の合意を単に提供することができ、なぜならば、それらは、顧客組織がその独自のインスタンスを有する内部でホストされた共有台帳157内で行うことを許可されているためであり、ゆえに、最終的なオーソリティである。これは、中央集権型信頼インターフェース152への依存と機能が類似しているが、顧客組織が合意管理決定における制御を保有しながら、パブリックブロックチェーン上で観測されるであろうようなDLTベースの合意管理を利用することを可能にする。後に、顧客orgがそれらのアプリケーションをパブリックブロックチェーンに移行する場合、それらのマイグレーションパスは、合意管理コンポーネントとの統合がすでにあるため簡素化される。
【0132】
同意管理157A、157Bにより、共有台帳157を利用する顧客orgは、どのエンティティ、ユーザ、パートナー、顧客orgなどが定義されたアプリケーションに関連づけられたトランザクションを参照、読み取り、書き込み、更新、又は削除する権限を有するかを定義し、これらの同じエンティティ、ユーザ、パートナー、顧客orgなどがそれらのデータを参照するための権限を付与することを可能にすることができる。メタデータ定義デプロイメント157Cモジュールは、定義されたメタデータが資産として又はコインとして問題のブロックチェーンに書き込まれ、又は共有台帳157に書き込まれることを可能にし、その後、メタデータが定義された対象の情報と相互作用するエンティティ、アプリケーション、及びいかなるコードも、定義されたメタデータに準拠しなければならず、メタデータ準拠検証を実行するスマートコントラクト実行を介して準拠へ強制され得る。
【0133】
図1Eは、説明される実施形態による、ブロックチェーンサービスインターフェース190を利用する例示的なデータフローを示す別の例示的なアーキテクチャ104を示す。
【0134】
特に、ここに示すように、パートナーユーザが存在し、パートナーユーザは、ブロックチェーンサービスインターフェース190と、具体的には、アクセス可能なブロックチェーンを発見及び参照することができるブロックチェーンエクスプローラと相互作用する。次いで、パートナーユーザは、パーミッションが適切である場合、要素178に示されているようにREST APIを介してブロックチェーンからのデータを更新し、読み取ることができる。ブロックチェーンは、前述したメタデータ定義に準拠して、定義されたエンティティアプリケーションの情報を永続化する。
【0135】
REST API178又は「表現状態転送(Representational State Transfer)」APIは、Webサービスを作成及び利用するために使用される制約のセットを定義するソフトウェアアーキテクチャスタイルである。RESTアーキテクチャスタイルに従うWebサービスは、RESTful Webサービス(RWS)と称され、パブリックインターネット上のコンピュータシステム間の相互運用性を提供する。RESTful Webサービスにより、要求システムは、一様な予め定義されたステートレス動作のセットを使用することによりWebリソースのテキスト表現にアクセスし、操作することができ、一方、SOAP Webサービスなどの他のサポートされたWebサービスは、それら独自の任意の動作セットを公開する。
【0136】
このようなWebサービスは、パブリックインターネットを介して、アプリケーションにより許可される任意の方法で識別、命名、アドレス指定、又は処理され得る任意のアプリケーションエンティティを含むことができ、いわゆるRESTful Webサービスは、リソースのURIに対して要求が行われることを可能にし、リソースのURIは、次いで今度は、HTML、XML、JSON、又は何らかの他の選択されたフォーマットでフォーマットされた応答ペイロードを引き出す。ステートレスプロトコル及び標準動作を利用し、RESTfulシステムは、それが稼動中であってもシステムに全体として影響を及ぼすことなく管理及び更新することができるコンポーネントを再利用することにより、高速なパフォーマンス、信頼性、及び成長能力を目指し、したがって、図示のブロックチェーンと、パートナーユーザ、ホストorgユーザ、及び統合ビルダ153などの接続された要素との間のより完全な相互運用性を可能にする。
【0137】
ここに示すように、プラットフォームイベントに翻訳され、アクセス可能クラウドプラットフォーム186に送信されるブロックチェーンイベントがある。
【0138】
ホスト組織のユーザは、このようなアクセス可能クラウドプラットフォーム186と相互作用してデータを作成し、記録することができ、適切な場合には、データ及びイベントは、構成された仮想オブジェクトを通じてブロックチェーンへプッシュバックすることができ、該仮想オブジェクトは、REST APIと通信してブロックチェーンに情報を書き込み、あるいはブロックチェーン内の情報を参照し、あるいはブロックチェーン内の管理されたイベントの状態情報を更新する。
【0139】
さらにここに示されているのは、ブロックチェーン管理者であり、これは、例えば、前述のGUIを利用して統合ビルダ153でメタデータを定義し、ゆえに、ブロックチェーン管理者は、グローバルアプリケーションレジスタに記録されるネットワーク参加者を定義し、あるいは、ブロックチェーンサービスインターフェースにおいてREST APIにより次いで参照されるアプリケーションをデプロイすることができると共に、デプロイされたエンティティアプリケーションのためのメタデータ及びパーミッションを定義し、ゆえに、そのデプロイされたアプリケーションのための情報がブロックチェーンに書き込まれるとき、アプリケーションに関連づけられたそのような情報のための定義されたメタデータに準拠しなければならないことを保証することができる。このような準拠は、ブロックチェーンサービスインターフェース190におけるブロックチェーン内にここで示されるスマートコントラクトにより強制することができる。
【0140】
前述のように、ブロックチェーンは、内部ホスト型ブロックチェーン、例えば、ホスト組織により内部にホストされ完全に制御される共有台帳157でもよく、あるいはブロックチェーンは、ホスト組織を介してアクセス可能な任意のパブリックブロックチェーンでもよい。
【0141】
図2Aは、説明される実施形態による、ブロックチェーン及びフォークしたブロックチェーン(forked blockchain)のさらなる詳細を有する別の例示的なアーキテクチャ200を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0142】
より詳細には、次に、プライマリブロックチェーン(例えば、合意ブロックチェーン)が示され、これは、ジェネシスブロック141(時にルートブロックと呼ばれる)で始まり、各々がヘッダを有する一連の標準ブロック142が後に続き、該ヘッダは、それに先行するブロックのヘッダのハッシュに少なくとも部分的に基づいて形成される。さらに、最初のフォークルートブロック144と共に形成されたフォークしたブロックチェーンが示されており、次いで、一連の標準ブロック142が後に続いている。ブロックチェーン内の各ブロックは、前のハッシュに記憶された直前のブロックのハッシュを含むため、各ブロックからチェーンに戻るリンクは、ブロックチェーンを介して効果的に作成され、悪意を持ってチェーンを修正することを法外に困難又は計算上実行不可能にするキーコンポーネントである。
【0143】
図示されるように、プライマリブロックチェーンは、フォークブロック143から始まる単一のフォークを含む。ここに示すように、ジェネシスブロック141は、プライマリブロックチェーンを開始する特殊ブロックであり、他のブロックとは異なり、なぜならば、それがプライマリブロックチェーンの最初のブロックであり、したがって、定義上、何らかの前のブロックのハッシュを含むことができないからである。ジェネシスブロック141は、利用される特定のブロックチェーンプロトコルに対するプライマリブロックチェーンの開始を示す。ブロックチェーンプロトコルは、プライマリブロックチェーンが成長する方法、どのデータが記憶され得るか、及びフォークしたブロックチェーンが作成されるかを管理し、また、任意のブロック及び任意のチェーンの有効性は、ブロックチェーンプロトコル証明書166により定められたルール及び要件に従って、ホスト組織のブロックバリデータ192又はブロックチェーンの任意の他の参加ネットワークノードを介して立証されてもよく、該ブロックチェーンプロトコル証明書は、ジェネシスブロック141に埋め込まれ、次いで、プライマリブロックチェーン又は任意のフォークしたブロックチェーン内のあらゆる後続ブロックにより証明され(certified)、準拠されなければならない。
【0144】
ジェネシスチェーン内の各ブロック内のブロックチェーンプロトコル証明書166は、フォークの作成と、もしあればそれらのフォークにおけるルール及び構成パラメータの修正を可能にする、ルール及び構成パラメータのデフォルトセットを定義する。いくつかのブロックチェーンプロトコル実装は、ブロックチェーンプロトコル証明書166を介して確立されたルールのデフォルトセットへのいかなるバリエーション又は非準拠も許可せず、したがって、いかなるフォークも、複数の競合する及び潜在的に有効なプライマリブロックチェーンについての合意の保留の結果である。ひとたび合意が達せられると(典型的には、新しいブロック形成の1又は2サイクル後)、合意を有する分岐が採用され、フォークは切り捨てられ、ゆえに、単一のプライマリ合意ブロックチェーンに戻る。反対に、他の実装において、フォークしたブロックチェーンが、ブロックチェーンプロトコル証明書166と、そのブロックチェーンプロトコル内のフォークしたブロックチェーンに対するルール及び構成パラメータの許容可能なバリエーションに準拠する限り、フォークしたブロックチェーンは、許容される方法で作成され、プライマリブロックチェーンと共に無限に存在し続けてもよい。
【0145】
フォークブロック143は、フォークしたブロックチェーンをプライマリブロックチェーンに固定し(anchors)、それにより、プライマリブロックチェーンとフォークチェーンの双方が、ブロックチェーンプロトコル証明書166に従って許可される場合に有効かつ許容可能なチェーンと考えられる。通常、ブロックチェーンでは、全ての非合意フォークは最終的に無視され、あるいは切り捨てられ、ゆえに、合意を有する最も長いチェーンを表す1つのチェーンを除いて無効と考えられる。それにもかかわらず、フォークブロック143は、それが標準ブロック142であるかのように動作し、出現する一方で、許容可能なフォークしたブロックチェーンの最初のブロックを識別するフォークハッシュ149への参照をさらに含むことにより、従前のブロックチェーンプロトコルの従来の水準を超えて拡張し、ここで、該最初のブロックは、有効なフォークしたブロックチェーンのフォークルートブロック144として表されている。次いで、フォークしたブロックチェーンのフォークルートブロック144は、各々が先行の有効ブロックのハッシュに基づくヘッダを有する標準ブロックが後に続き、無限に続くことになる。
【0146】
特定の実施形態によれば、フォークしたブロックチェーンは、プライマリ合意ブロックチェーン内でデフォルトで利用されるルール及び構成パラメータからのいくらかのバリエーションを利用し、結果として、有効なフォークしたブロックチェーンの必要をもたらす。したがって、ルール及び構成パラメータのバリエーションは、フォークルートブロック144の新しいブロックチェーンプロトコル証明書166内で符号化され、これは、上述のように、プライマリブロックチェーンのオリジナルのジェネシスブロック141のブロックチェーンプロトコル証明書166により定められているオリジナルのルール及び構成パラメータの有効範囲に準拠したままでなければならない。フォークルートブロック144はオリジナルのブロックチェーンプロトコル証明書166を運び続けなければならないため、フォークしたブロックチェーンプロトコル証明書は、フォークルートブロック144のブロックペイロード169セグメント内に記憶されてもよく、ゆえに、フォークしたブロックチェーン内の後続の標準ブロック142のルール及び許容可能な構成パラメータを確立する。
【0147】
例えば、フォークしたブロックチェーンは、ホスト組織により有効にされた宣言型スマートアクションをサポートするために利用されてもよく、この場合、パブリック又はプライベートブロックチェーンのフォークしたブロックチェーンは、新しいブロックチェーンプロトコル証明書166を介してカスタマイズされて、管理者により定義されるスマートアクションの宣言的な確立とそれらの必要な情報捕捉規定との双方、並びに、そのような宣言されたスマートアクションを利用してトランザクションで捕捉されたデータをホスト組織により提供されるクラウドプラットフォームエンティティに戻すようにマッピングする能力をサポートする。
【0148】
新しいブロックチェーンプロトコル証明書166が有効なフォークに適用されるとき、そのルール及び構成は、該フォークと、さらなるフォークが許可される場合には全ての後続のサブフォークの、全ての後続の標準ブロックに適用され、参加ノードにより、フォークしたブロックチェーンがオリジナルのプライマリブロックチェーンであるかのように強制される。このようなフォークは、ワーキンググループなどの特定のグループ、トランザクションの特定のサブタイプ、又は、完全に別個の「サイドチェーン」が必要とされず又は望ましくない場合のプライマリブロックチェーンからの何らかの他のバリエーションのために、ルール又は構成の特化されたセットを適用することを求める特定の顧客に対して望ましい場合がある。フォークしたブロックチェーンは、それが同じブロックチェーンプロトコルの一部のままであり、フォークブロック143においてプライマリブロックチェーンと恒久的に接続され、戻りフォークハッシュ149がプライマリ合意ブロックチェーンに戻され、不変的に書き込まれるとき、サイドチェーンから区別でき、それは、プライマリブロックチェーンの全ての後続の標準ブロックに対してチェーンハッシュスキームを介して残ることになる。かなり簡単に述べると、フォークしたブロックチェーンは、フォークブロック143を介してプライマリブロックチェーンに明示的に結び付けられる。反対に、サイドチェーンは、プライマリブロックチェーン内に埋め込まれたいかなる明示的な参照又はフォークハッシュ149もなくプライマリブロックチェーンと任意のサイドチェーンとの間で渡される全ての情報又は値に対して、合意されたレートの交換又はコンバージョンファクタが適用される完全に区別可能なブロックチェーンプロトコルであり得る。
【0149】
したがって、サイドチェーン化は、1つのブロックチェーンからの資産、トークン、値、又はペイロードエントリに対して宣言されたスマートアクションが、予め定義された交換又はコンバージョンスキームを介して完全に別個のブロックチェーン内で安全に使用され、さらに、必要な場合には許容される方法でオリジナルのチェーンに戻され得るメカニズムである。慣例により、オリジナルのブロックチェーンは、メインチェーン又はプライマリブロックチェーンと呼ばれ、一方、ユーザがメインチェーンのトークン、値、又はペイロードを利用してそれらの中で取り引きすることを可能にする任意のさらなるブロックチェーンは、サイドチェーンと呼ばれる。例えば、パブリックブロックチェーンへの定義されたリンクを有するプライベートブロックチェーンがあり得、ゆえに、トークン、値、ペイロードデータをパブリックブロックチェーンとプライベートブロックチェーンの間で安全に移動することができる。
【0150】
例えば、ブロックチェーンメタデータ定義マネージャ196により提供されるサービスの実装のために、ホスト組織が以前に存在していたブロックチェーンを使用することについて考える。既存のブロックチェーンを利用することは有利であり得るが、次いで、具体的にブロックチェーンメタデータ定義マネージャ196により提供されるサービスのために特化したサイドチェーン又はフォークしたブロックチェーンを作成することは、依然として、プライマリ(合意)ブロックチェーンにより必要とされるブロックチェーンプロトコル証明書166に準拠したままである。他の例では、
図1Cの共有台帳157などの修正された分散台帳技術が利用されてもよく、これは、完全にホスト組織の制御下のホストされた台帳であり、したがって、プライマリチェーンからサイドチェーン化することが必要ない可能性がある。さらに他の例には、ホスト組織がパブリックブロックチェーンのためのブロックチェーンプロトコルを提供及び定義することを含むことができ、その場合、ホスト組織は、ブロックチェーンメタデータ定義マネージャ196(例えば、
図1A参照)の拡張された能力がプロトコルに対しネイティブであるような方法で、利用されるブロックチェーンプロトコルを定義してもよく、ゆえにサイドチェーン化を必要とせず、あるいは反対に、ホスト組織は、パブリックに利用可能な機能性の限定されたサブセットを有するパブリックブロックチェーンを定義し、動作させ、次いで、パブリックブロックチェーンからサイドチェーン化することによりブロックチェーンメタデータ定義マネージャ196の能力を拡張して強化された機能性を提供してもよい。
【0151】
説明される実施形態によれば、フォークしたチェーンのプロトコルルールを定義するブロックチェーンプロトコル証明書166は、Python、Ruby、Perl、JavaScript(登録商標)、PHP、Scheme、VBScript、Java(登録商標)、Microsoft.NET、C++、C#、C、又はプロトコルルールを定義するためのカスタム作成言語などの、任意の関連プログラミング言語又はスクリプティング言語で開発されてもよい。
【0152】
通常の作動条件下では、従来のブロックチェーンでさえ、時折自然にフォークするが、既知のブロックチェーンでは、最終的に1つの分岐のみがプライマリ合意チェーンを形成し得、全ての他のフォークは無視され又は切り捨てられなければならず、プライマリ合意ブロックチェーンのみが有効とみなされる。どのチェーンが有効であるかの合意は、最も長いチェーンを選択することにより達成されてもよく、ゆえに、これは、それを完成させることに最も多くのワークを投入されたブロックチェーンを表す。したがって、本明細書で説明されるフォークブロック143を利用して、許容される方法でフォークしたチェーンが作成され、フォークハッシュ149を介して認可されたフォークとして証明されることを可能にし、参加ノードがフォークを無視し又は切り捨てることを防止する必要がある。各ノードが、フォークしたブロックチェーンを独立して検証し得るため、それはちょうど、検証されたプライマリブロックチェーンが合意を有すると無視されないように、無視されないことになる。
【0153】
図2Bは、説明される実施形態による、サイドチェーンについてのさらなる詳細を有する別の例示的なアーキテクチャ201を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0154】
より詳細には、親ブロックチェーン188(例えば、プライマリチェーン)からサイドチェーン189への対称的な双方向ペグの移転(two-way pegged transfer)を行うためのメカニズムがここに示されており、該サイドチェーン189は、ホスト組織110によりサポート及び提供される異なるブロックチェーンプロトコルでもよく、あるいはサイドチェーンは、ホスト組織110のサイドチェーン交換マネージャ193がノードとして参加し、サイドチェーンとのアクセス及びトランザクション能力を可能にするための、パブリック又はプライベートの、外部のブロックチェーンでもよい。
【0155】
それにもかかわらず、説明される実施形態によれば、親ブロックチェーン188とサイドチェーン189との間のチェーン間(inter-chain)移転は、各それぞれのブロックチェーンのルール及び条件に準拠して許容される方法で実行され得る。注目すべきことに、ここで記載されるように、各ブロックチェーンの視点は、ここで示されるサイドチェーン189がそれ自体をプライマリ又は親ブロックチェーンとみなし、示される親ブロックチェーン188を子ブロックチェーン又はサイドチェーンとみなし得るように交換可能である。それにもかかわらず、各ブロックチェーンは独立して動作し、さらに、宣言されたスマートアクションを利用してトランザクションにより作成されたそれらの間で資産、コイン、トークン、値、又は他のペイロード情報を交換するための定義された交換メカニズムを有する。
【0156】
ここに示されるように、ホスト組織のサイドチェーン交換マネージャ193は、動作151において親ブロックチェーン188の出力として親チェーン資産を送信し得る。
【0157】
親ブロックチェーン188資産に関連づけられた簡易支払立証(Simplified Payment Verification、SPV)プルーフ181が出力として生成され、サイドチェーン189に通信される。SPVプルーフはワークの閾値レベルを含んでもよく、生成は所定の期間にわたり実施されてもよく、これは確認期間(confirmation period)152とも呼ばれることがある。チェーン間の移転の確認期間は、コイン、トークン、又は他の交換される値がサイドチェーン189に成功裏に移転され得る前に親ブロックチェーン188上でロックされる継続時間でもよい。この確認期間は、十分なワークが作成されることを可能にし得、それにより、次の待機期間におけるサービス拒否攻撃は、より計算的に困難になる。
【0158】
例えば、1~2日のオーダであり得る一例示的な確認期間を考える。確認期間は、そのような例では、より高いセキュリティと引き換えにクロスチェーン移転速度をトレードオフするサイドチェーンごとのセキュリティパラメータとして実現されてもよい。十分に困難なプルーフオブワーク条件が果たされ、適切なセキュリティを保証して双方のブロックチェーンの完全性を保護し、不正なトランザクションの可能性を否定する場合、一層短い他の確認期間が利用されてもよい。
【0159】
親ブロックチェーン188上で作成される出力は、(例えば、親ブロックチェーン188の各ブロックのブロックチェーンプロトコル証明書部分に記憶される)ルール及び構成パラメータを介して、将来に出力により受信される資産の任意の支出、移転、又は消費が、親チェーン内の移転を管理するルールに追加でさらなる条件を負うという要件を指定してもよい。例えば、出力により受信された資産の任意の解放(release)は、宛先チェーンからのプルーフを立証するためのさらなる条件を必要としてもよく、例えば、宛先チェーンプルーフのルールが、宛先チェーンが資産を解放したことを示し、かつどこに対して資産が解放されたかを示すことを検証することなどである。親ブロックチェーン188上で出力を作成した後、ユーザは確認期間122の終わりを待ち、一方、チェーン内(intra-chain)移転153は引き続き発生する。確認期間の終わりを待った後、次いで、トランザクションがサイドチェーン189上に作成され、親ブロックチェーン188からの出力を参照する。
【0160】
次いで、サイドチェーンは、ホスト組織のブロックバリデータ192などのサイドチェーンバリデータサービスを使用し、親チェーン資産が作成され、かつ親チェーン内の十分なワークにより担保された(encumbered)ことを示すSPVプルーフを提供される。次いで、サイドチェーンバリデータサービス(例えば、ホスト組織の利用可能なサービスにより実行される場合、ブロックバリデータ192)は、親ブロックチェーン188資産に関連づけられたSPVプルーフが動作154においてSPVプルーフにより示されるワークの必要な閾値レベルを満たし、親ブロックチェーン188資産に対応するサイドチェーン189資産が次いで生成されることを検証する。
【0161】
生成されたサイドチェーン189の資産もまた、動作154において所定のコンテスト期間(contest period)の間保持されてもよく、その時間の間、親ブロックチェーン188の資産に関連づけられた再編成(reorganization)プルーフ183が親ブロックチェーンにおいて検出された場合、移転は無効にされる。
【0162】
動作154におけるコンテスト期間は、新たに移転されたトークン、コイン、値、又はペイロードデータがサイドチェーン189で支出され、アクセスされ、又は消費されることがない継続時間であり得る。所定のコンテスト期間は、再編成の間、前にロックされたコイン、トークン、値、又はペイロードデータを移転することによる親ブロックチェーン188での二重支出のいかなる可能性も防止するために実現される。この遅延の間のいずれかの時点で、SPVロック出力121が作成されたブロックを含まないより集約的なワークを有するチェーンを含む、新しいSPVプルーフ184(「再編成プルーフ」として知られる)が公開された場合、コンバージョンは、遡及的に無効にされる。再編成プルーフが検出されない場合、サイドチェーン資産は解放されてもよい。サイドチェーン上の全ての参加ノードは、可能であれば、再編成プルーフを作成するインセンティブを有し、なぜならば、悪いプルーフが認められた結果、全てのサイドチェーントークン、コイン、値、又はサイドチェーン189により記憶されたペイロードデータの真正性における信頼の価値を低下させるためである。
【0163】
上記と同様に、動作156における一例示的なコンテスト期間126も、1~2日のオーダであり得る。これらの遅延を回避するために、ユーザは代わりに、流動性のある市場が利用可能である限り、代替可能な移転のためにアトミックスワップを採用し、使用してもよい。交換された資産が、ユニーク又はあまり一般的でないトークン、値、又はペイロードデータである場合、潜在的に長い1~2日の待機期間の必要にもかかわらず、アトミックスワップは実行不可能であり、代わりにサイドチェーン移転が生じなければならない。
【0164】
サイドチェーン資産の最終的な解放に対して、親チェーン資産に対応するサイドチェーン資産は、次いで、サイドチェーン内で、1回以上、サイドチェーン189のチェーン内移転123を移転され、あるいは消費され得る。親ブロックチェーン188上でロックされている間、資産は、サイドチェーン内で、親ブロックチェーン188とのいかなるさらなる相互作用も必要なく自由に移転可能であり、ゆえに、サイドチェーン189が再度、完全に独立して動作することを可能にする。上記にもかかわらず、サイドチェーン資産は、そのアイデンティティを親チェーントークン、コイン、値、又はペイロードデータとして保有し、したがって、必要が生じた場合、サイドチェーン資産が発生した元の発生親ブロックチェーン188に戻されてもよい。特定の実施形態において、移転は単一のホップのみに委託され、それにより資産は、サイドチェーン189に移転され、次いで再度別のサイドチェーンに移転されることはできず、その場合、ソースの不明瞭化を防止することが必要である。このような制限は、選択された特定のブロックチェーンプロトコルと、親ブロックチェーン188及びサイドチェーン189の間に確立された定義交換合意(例えば、ペグ条件(pegging conditions))に依存する。
【0165】
親ブロックチェーン188内のサイドチェーン資産を引き換える(redeem)ことが必要になった場合、サイドチェーン資産は、動作157に示されるように、サイドチェーンの出力に送られ得る。ゆえに、サイドチェーン資産に関連づけられたSPVプルーフ182が生成され、親ブロックチェーン188に通信される。ホスト組織110のブロックバリデータ192などの親チェーンバリデータサービスは、動作156においてサイドチェーン資産に関連づけられたSPVプルーフ182を検証し得る。サイドチェーン189資産に関連づけられた検証されたSPVプルーフ182は、例えば、サイドチェーン資産に関連づけられたSPVプルーフ182が、サイドチェーン資産に関連づけられたSPVプルーフ182により示されるワークの閾値レベルを満たすという検証を含んでもよい。
【0166】
前述のように、サイドチェーン資産に関連づけられた親チェーン資産は、ステップ129において第2の所定のコンテスト期間の間保持され得、その間、親チェーン資産の解放は、サイドチェーン資産に関連づけられた再編成プルーフ183がサイドチェーンにおいて検出された場合、コンテスト期間が終了している動作128において拒否される。親チェーン資産は、サイドチェーン資産に関連づけられた再編成プルーフ183が検出されない場合、解放されてもよい。
【0167】
再編成プルーフ183が受信された後、新しい第2のSPVプルーフ184に関して検証の失敗が発生した場合、サイドチェーン資産に関連づけられた新しい第2のSPVプルーフ184は、動作159において第3の所定のコンテスト期間中に親ブロックチェーン188により受信され、検証され得る。親ブロックチェーン188資産は、サイドチェーン資産に関連づけられた再編成プルーフが第3の所定のコンテスト期間中に検出されない場合、解放されてもよく、その後、親チェーン資産は、親ブロックチェーン188フローの最右端に示される図示のチェーン内移転123を介して親チェーン内で自由に移転できる。
【0168】
ペグのサイドチェーンは多くの異なるブロックチェーンからの資産を運ぶことがあるため、他の外部のブロックチェーンのセキュリティについて仮定を行うことは問題がある可能性がある。したがって、特定の実施形態によれば、異なる資産はサイドチェーン内で(明示的な取引によるものを除き)交換可能でないことが要求される。さもなければ、悪意のあるユーザが潜在的に、価値のない資産を有する価値のないチェーンを作成することにより不正な取引を実行し、次いで、価値のないチェーンからの価値のない資産をプライマリブロックチェーン188に、又はプライマリブロックチェーン188が相互作用して交換を行うサイドチェーン189に続けて移動する可能性がある。これは、価値のないチェーンがサイドチェーンとのペグ交換合意を保証することを前提とする。しかしながら、サイドチェーン189のルール、構成選択肢、及びセキュリティスキームは、(サイドチェーンが外部のサイドチェーンであり、ホスト組織110により提供される別のブロックチェーンプロトコルでないと仮定すると)親ブロックチェーン188により制御されないため、相互作用されるサイドチェーン189がそのような脆弱性を含まないことを、単純に、確信を持って知ることができない。この潜在的なセキュリティ脆弱性を否定するために、サイドチェーン189は、ペグ交換合意により、
図1B、要素167で示されるブロックチェーンプロトコルブロックのブロックタイプ部分により示されるように、別個の親ブロックチェーンからの資産を完全に別個の資産タイプとして取り扱うように要求されてもよい。
【0169】
対称的な双方向ペグのサイドチェーン移転では、特に、親ブロックチェーン188がホスト組織で提供される場合、及び、サイドチェーンが、ホスト組織がサイドチェーン交換マネージャノード193を介した参加ノードに過ぎない外部のサイドチェーンである場合、親ブロックチェーン188とサイドチェーン189の双方が、互いにおいてデータのSPV検証サービスを実行してもよい。親ブロックチェーン188クライアント(例えば、参加ノード)は、あらゆるサイドチェーンを観測するわけではないため、ユーザは、サイドチェーンからのプルーフオブワークを親チェーンにインポートして所有を証明する。対称的な双方向ペグでは、その逆もまた当てはまる。例えば、親ブロックチェーン188としてビットコインを使用するために、このようなSPVプルーフを認識及び検証する拡張スクリプトが利用されてもよい。このようなトランザクションを容易にするために、SPVプルーフは、ビットコイントランザクションペイロード内に適合するようにサイズが十分小さい。しかしながら、このような変更は代替的に、前述のように、ペグのサイドチェーントランザクションに関与しないトランザクションに影響を及ぼすことなく、フォークトランザクションとして実現されてもよい。言い換えると、上述のように対称的な双方向ペグのサイドチェーンを使用すると、ビットコイン内で有効とみなされる任意のトランザクションに対して、さらなる制限が課される必要はない。
【0170】
このようなペグのサイドチェーントランザクションの使用により、独立したブロックチェーンは、チェーンが最初に作成されたときには存在しなかった資産を含む多くの資産をサポートするのに十分な柔軟性を有するようにされる。これらの資産の各々は、それが移転された元のブロックチェーンでラベル付けされて、移転が正しく解消され(unwound)(例えば、戻され)得ることを保証してもよい。
【0171】
特定の実施形態によれば、コンテスト期間の継続時間は、親チェーンとサイドチェーンとの相対的なハッシュ能力に応じて作られ、それにより、受信サイドチェーン(又は、入ってくる移転を有する親ブロックチェーン)は、その自身のプルーフオブワークの1日分のSPVプルーフを前提としてのみトークン、コイン、値、又はデータペイロードをアンロックしてもよく、該プルーフオブワークは、例えば、送信ブロックチェーンのプルーフオブワークの数日に対応し得る。ゆえに、特定のサイドチェーンのブロックチェーンプロトコル実装のセキュリティパラメータは、各特定のサイドチェーンの実装に合わせられてもよい。
【0172】
説明される実施形態によれば、ブロックバリデータ192は、検証を必要とするブロックに対して様々なタイプの合意管理を必要とし、利用し、あるいは適用してもよい。
【0173】
特定の資産又はトランザクションを含むブロックがブロックチェーンに追加されるべきとき、トランザクションタイプデータベースは、ブロックチェーンに追加されるべき特定の資産又はトランザクションのタイプを使用してクエリされ、特定の資産若しくはトランザクション、又は特定の資産若しくはトランザクションを含むブロックをブロックチェーンにコミットするために使用されるべき対応する合意プロトコルタイプを決定する。例えば、データベースにおいて、「ローン」のトランザクションタイプが「プルーフオブステーク」(PoS)の合意プロトコルタイプに関連づけられてもよく、「文書」の資産タイプが「ビザンチンフォールトトレラント」(Byzantine Fault Tolerant、BFT)の合意プロトコルタイプに関連づけられてもよく、「通貨」の資産又はトランザクションタイプが「プルーフオブワーク」(PoW)の合意プロトコルタイプに関連づけられてもよく、データベース内の他の列挙されていないトランザクションタイプの場合に使用されるデフォルトトランザクションタイプが、デフォルト合意プロトコルタイプ、例えばPoSに関連づけられてもよい。別のトランザクションタイプが、メタデータをその中に記憶させた資産タイプに対応してもよく、可能性として「メタデータ」とタイプ付けられ(typed)、一方、密接関連トランザクションタイプが、ブロックチェーン内にメタデータとして「関連エンティティ」を記憶し、それが通常のメタデータと同じタイプを共有する場合には「メタデータ」のトランザクションタイプを有し、あるいは別個である場合には「関連エンティティ」のトランザクションタイプを有する。またさらに、「記憶レコード」トランザクションタイプが利用されて、複数の区別可能なデータ要素をその中に埋め込ませたレコードを記憶してもよく、これは典型的には、アプリケーション開発者により指定されたメタデータにより定義される。
【0174】
例えば、宣言されたスマートアクションを利用するトランザクションに対応する特定のトランザクションタイプを有するブロック又はブロック内のトランザクションがブロックチェーンに追加されるべきとき、ブロック又はその中のトランザクションをブロックチェーンに対してコミットするために使用される合意プロトコルタイプはPoSであり、「文書」タイプを有する特定の資産を有するブロック又はその中のトランザクションがブロックチェーンに追加されるべきとき、ブロック又はその中のトランザクションをブロックチェーンに対してコミットするために使用される合意プロトコルタイプはBFTであり、データベース内で規定されていないトランザクションタイプを有する特定のトランザクションを有するブロック又はその中のトランザクションがブロックチェーンに追加されるべきとき、デフォルト合意プロトコルタイプのPoSが使用されて、ブロック又はその中のトランザクションをブロックチェーンに対してコミットする。
【0175】
この選択された合意プロトコルタイプは、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求の検証に使用するために、コンソーシアムのノードに通信され得る。特定の実施形態によれば、コンソーシアム内のノードが、選択された合意プロトコルに従ってブロックチェーンにブロック又はその中のトランザクションを追加するための合意に達し、そのことをホストに通信したとき、ホスト組織110は、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求の検証を受信する。
【0176】
任意の関連ファクタが、どのノードが合意プロトコルに参加するかを決定する際に使用されてもよく、例えば、選択された合意プロトコル自体、特定のノードのコンピューティングリソース、特定のノードがコンソーシアム又は選択された合意プロトコルにおいて有する利害関係(stake)、特定のノードが有する関連(ドメイン)知識、その知識がブロックチェーン又はコンソーシアムに関して内部(オンチェーン)であるか外部(オフチェーン)であるか、選択された合意プロトコルに参加する際の、速度の点か正確さの点か、又はこれらが欠如しているかどうかの、特定のノードの以前又は過去のパフォーマンス、ブロックチェーンに追加される新しいブロックのブロック番号、新しいブロック内のトランザクションの数、ブロックのサイズ、及びブロックチェーンに追加されるブロック内の資産又はトランザクションの信用又は非信用性(fiduciary or nonfiduciary nature)が含まれる。
【0177】
特定の実施形態によれば、ホスト組織は、ピアツーピアネットワーク内のノードのうち1つ以上の各々から、要求に応答して、又はブロックチェーンプラットフォームホストにより発行された投票の要求に応答して、ブロックチェーンへの新しいブロック又はその中のトランザクションを検証し又は追加するための重み付き投票(weighted vote)を受信する。これらのノードは、要求を生成したノードによりブロードキャストされたブロックチェーンプロトコルパケットを介して、あるいは、コンソーシアム内の他のノード、又はブロックチェーンプラットフォームホストにより送信された投票の要求と関連して又は組み合わせて要求の通知を提供するブロックチェーンプラットフォームホストと通信することにより、要求を学習する。ホスト組織は、次いで、受信した重み付き投票の合計が閾値を超えているとき、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を応答的に検証し、あるいは該要求の検証を受信する。
【0178】
別の実施形態によれば、ノードのコンソーシアムは、プライベートの、又は許可ありのブロックチェーンに参加し、この中で、各ノードは、例えば、ノードがブロックチェーンにおいて新しいブロックに追加し得るトランザクション又はトランザクションのタイプに関するドメイン(一般)知識に基づいて、その投票に与えられる重みを割り当てられる。特定のノードは、そのような許可ありのブロックチェーン内でゼロの重みを与えられてもよいが、他のノードは、それらの投票が、特定の実装に依存して、制限された数の他の高度に重み付けされたノードと組み合わせられたときに、ほぼ支配又は支配さえしているような、有意な重みを与えられてもよい。
【0179】
ノードがブロックチェーンの新しいブロックにトランザクションを追加する前、あるいはトランザクションを含む新しいブロックがブロックチェーンに追加され得る前に、コンソーシアム内の他のノードは、ブロックチェーンの新しいブロックにトランザクションを追加すること、及び/又はブロックチェーンに新しいブロックを追加することについて投票する。ノードの過半数がトランザクションに合意し、かつ/あるいは新しいブロックが有効であり、したがって、プライマリブロックチェーン上の有効ブロックとして受け入れられ得るとき、トランザクション及び/又は新しいブロックは、時にメインチェーン又は合意チェーンと呼ばれるそのプライマリブロックチェーンに追加され、受け入れられる。例えば、無効なブロックがブロックチェーンに追加され得る間、そのような無効なブロックは事実上、合意を獲得することができないサイドチェーンを作成し、したがって、メイン又はプライマリブロックチェーン内で追加有効ブロックとして決して受け入れられない。ノードは、プライベートブロックチェーンに参加しているノードのうち1つ以上の投票に基づいて「過半数(majority)」が取得され又は拒否され得るように、すなわち、ブロックチェーンに参加しているノードの全部より少数から過半数が取得され得るように重み付けされる。
【0180】
この実施形態によれば、コンソーシアム内の当事者は、例えば、当事者のドメイン知識、及び/又は、例えば、当事者の別のブロックチェーン又はサイドチェーンへの参加を含む他の基準に基づいて、コンソーシアム内の各ノードを割り当てる重みwに合意する。コンソーシアム内のノードの合計重みWは、個々のノード重みの和、w1+w2+...wnに等しく、nは、コンソーシアム内のノード数である。一実施形態において、いずれか1つのメンバの重みw、又はw/Wの比は、特定の閾値を超えても超えなくてもよい。各ノードの重みは、それぞれのノードの投票に起因する。投票したノードの重みの合計が特定の閾値を超えている場合、トランザクション/新しいブロックが検証され、ブロックチェーンに追加される。詳細には、投票に起因する合計重みWが、ブロックチェーンの合意に達するための閾値(例えば、コンソーシアムにより合意されたものは何でも、w/Wのパーセンテージの観点での相対多数、過半数、圧倒的多数、又はwの絶対値)を満たし又は超えている場合、トランザクション/新しいブロックが追加される。この実施形態において、ブロックチェーン内のノードは、ブロックチェーンにトランザクション及び/又は新しいブロックを追加することについて全員一致の合意に達する必要はなく、実際、閾値が満たされた後、ノードは、投票プロセスへの参加を開始又は継続する必要はない。
【0181】
一実施形態において、少なくとも最小数のノードkが、ブロックチェーン内の新しいブロックにトランザクションを追加すること、又はブロックチェーンにトランザクションを含む新しいブロックを追加することについて投票して、詐欺又は二重支出のリスクを軽減し、あるいは大きい重みwを有する1つのノード又は集合的に大きい重みを有するノードのスモールグループが投票の結果を制御することを防止する。一実施形態において、投票に参加するノード数k、又はk/nの比率は、最小閾値を満たさなければならない。
【0182】
図3Aは、説明される実施形態による例示的なアーキテクチャ300を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0183】
ここに示すように、ホスト組織110が再び存在し、これは、プロセッサ及びメモリを(例えば、データベースシステム130の実行ハードウェア、ソフトウェア、及び論理120内に)有するホストされたコンピューティング環境111を含み、これらは、ブロックチェーン合意マネージャ191及びブロックチェーンメタデータ定義マネージャ196を含むブロックチェーンサービスインターフェース190を動作させるのに役立つ。さらに、ブロックチェーンに書き込まれ又はブロックチェーン上へトランザクション処理されるデータ、メタデータ、及びレコードのアドレス指定(addressing)能力を提供するインデックス316が示されている。
【0184】
さらに示されているのは、複数のテナントorg305A、305B、及び305C(時に顧客orgとも呼ばれる)であり、これらの各々は、テナントクライアントデバイス306A、306B、及び306Cを有し、これらを介して、テナント及びテナントのユーザは、ホスト組織110及びそのサービスと相互作用することができる。例えば、テナントorgは、ホスト組織にクエリ又はデータ311をサブミットしてブロックチェーンからのデータ取り出しを要求し、あるいはブロックチェーンにデータを記憶することができ、これらのいずれも、図示のインデックス316を利用することができる。
【0185】
特定の実施形態によれば、インデックス316は、マークルツリーインデックス又はマークル有向非巡回グラフ(DAG)又は「マークルDAG」木インデックスを実現する。暗号法及びコンピュータ科学において、ハッシュツリー又はマークルツリーは、あらゆるリーフノードがデータブロックのハッシュでラベル付けされ、あらゆる非リーフノードがその子ノードのラベルの暗号ハッシュでラベル付けされるツリーである。そのようなツリーは、大規模データ構造の内容の効率的で安全な立証を可能にし、したがって、大規模データ構造からのデータ取り出しの有意な効率を提供する。このような実施形態によれば、マークルツリー又はマークルDAGツリーを介してインデックス316を実装することは、親ノードがその子のハッシュであり、リーフノードが元のデータブロックのハッシュであるハッシュリストの二分木として、インデックスを再帰的に定義する。マークルDAGツリーは、不均衡なツリーを可能にし、リーフ(終端)ノード内のデータを可能にする。
【0186】
マークルツリーを介してインデックス316を実現することは、インデックス内に記憶されたデータの完全性及び妥当性を証明する手段を提供し、証明が計算的に容易かつ高速であるため比較的小さいメモリ又はディスクスペースを必要とし、さらに、マークルツリーインデックスのプルーフ及び管理は、かなり少量又はわずかな量の情報だけをネットワークにわたり送信することを要し、ゆえに、ネットワークリソースの消費に関してより動作上効率的である。多くのブロックチェーンがブロック立証の目的でマークルツリーの使用に大きく依存しているが、マークルツリーを用いて実装されたインデックス316はブロックチェーンのブロック立証機能とは無関係であり、本明細書では、インデックス316情報を記憶するためのロバストで効率的な手段として使用される。
【0187】
図3Bは、説明される実施形態による別の例示的なアーキテクチャ301を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0188】
ホスト組織110が再び存在し、これは、プロセッサ及びメモリを(例えば、データベースシステム130の実行ハードウェア、ソフトウェア、及び論理120内に)有するホストされたコンピューティング環境111を含み、これらは、ブロックチェーン合意マネージャ191及びブロックチェーンメタデータ定義マネージャ196を含むブロックチェーンサービスインターフェース190を動作させるのに役立つ。さらに、ブロックチェーン399に書き込まれ又はブロックチェーン上へトランザクション処理されるデータ、メタデータ、及びレコードのアドレス指定能力を提供するインデックス316が示されている。
【0189】
図示のように、インデックス316はホスト組織のデータベースシステム130内に記憶されるが、代替的に、マークルツリーインデックス316はブロックチェーン自体に書き込まれ、記憶されてもよく、したがって、ホスト組織のクエリインターフェース180へのアクセスを欠くブロックチェーンの参加ノードは、それにもかかわらずマークルツリーインデックス316を(ブロックチェーンに記憶されているとき)取り出し、次いで、マークルツリーインデックス316から取り出されたアドレスを使用してブロックチェーン上のアドレス指定可能ブロックを直接参照し、所望のレコード、データ又はメタデータを取り出すことができ、ブロックチェーン全体をトラバースし又は必要なレコードのためにブロックチェーンを検索する必要はない。
【0190】
図示のように、ブロックチェーン399の最後の標準ブロック142内に示されるように別のインデックス316が示されている。1つのインデックス316のみが必要とされるが、インデックス316は許容される方法でいずれかの場所に記憶されてよい。
【0191】
下部でより詳細に示されるマークルツリーインデックス316は、ABCDEのハッシュを有するレベル0のマークルルートを示しており、その後に、2つのハッシュノードを有するハッシュ層が続き、ハッシュABCを有する第1のハッシュノード及びハッシュDEを有する第2のハッシュノードであり、その後に、ハッシュA、B、C、D、及びEにより識別されるデータリーフ内のデータブロックが続き、各々がブロックチェーン上のアドレス指定可能ブロックのアドレス指定情報を含む。
【0192】
マークルツリーインデックス316の使用と関連してブロックチェーンメタデータ定義マネージャ196を介してブロックチェーン399上にデータ及びメタデータを記憶することは、データレコードを取り出すためにブロックチェーンの複数のブロック141及び142を検索することが必要ないため、既知のデータ記憶スキームより一層効率的である。むしろ、インデックス316は、所望のブロックのアドレスを取り出すために最初検索され、これはかなり高速で効率的であり、次いで、インデックス316から取り出されたアドレスを用いて、ブロックチェーン399上のアドレス指定可能ブロックからレコードが直接取り出される。
【0193】
データが従来の手法を用いてブロックチェーン内に記憶されると、ブロックチェーン内のデータ量は記憶データの総ボリュームの点で激増し、スケーラビリティの問題を生じ、結果として問題のある非効率性をもたらす。ブロックチェーンに記憶されるデータの総ボリュームは、時間と共に持続不可能に激増又は増大する傾向があり、なぜならば、記憶されたレコードが更新又は修正されるたび、修正されたレコードの全体をブロックチェーンに再書き込みすることが必要だからであり、これは次いで、最も最近の、最新のレコードになるが、全ての前のバージョン及びコピーがブロックチェーン内に保有されており、ゆえに、相当な重複したデータエントリが記憶される結果をもたらす。このようなアプローチの利点は、レコード全体がブロックチェーン上の単一のブロックから取り出され得ることであり、同じレコードのためにブロックチェーン上の前のブロックを戻って参照する必要がない。しかし、このような記憶スキームは、記憶の観点からはかなり非効率的である。
【0194】
あるいは、従来のアプローチによれば、ブロックチェーン内に記憶されたレコードに対する修正のみが記憶されてもよく、ゆえに、結果として、修正されたデータはブロックチェーン上の新しいブロックに書き込まれ、修正不可能なデータはブロックチェーンの先行ブロックから取り出し可能である。このアプローチは、ブロックチェーンにより記憶されるデータの総量を減らす。残念ながら、修正されたレコードのいかなるデータ取り出しもブロックチェーン上の複数のブロックからの検査及び取り出しを必要とし、ゆえに、データの冗長性及び持続不可能な増大の問題を軽減するが、その問題を望ましくないデータ取り出しの非効率の問題と交換している。
【0195】
このようにして、ブロックチェーン399内に記憶されるレコード及び情報のデータ管理が改善される。さらに、メタデータがブロックチェーン内にさらに記憶されて、記憶されたレコードに関するさらなる情報及びコンテキストを提供してもよく、データレコードの各々とそのようなデータレコードを記述するメタデータは、インデックス316の使用を通じてより容易に取り出し可能である。このようなメタデータにより、ビジネス又は他のエンティティは、ブロックチェーンに書き込まれたレコードのそのようなコンテキスト及びメタデータを失う従来のアプローチを用いるより一層容易に、ブロックチェーンから取り出されたデータレコードを使用可能なフォーマットに戻すように変換することができる。
【0196】
図3Cは、説明される実施形態による別の例示的なアーキテクチャ302を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0197】
ホスト組織110が再び存在し、これは、プロセッサ及びメモリを(例えば、データベースシステム130の実行ハードウェア、ソフトウェア、及び論理120内に)有するホストされたコンピューティング環境111を含み、これらは、ブロックチェーン合意マネージャ191及びブロックチェーンメタデータ定義マネージャ196を含むブロックチェーンサービスインターフェース190を動作させるのに役立ち、ブロックチェーンメタデータ定義マネージャ196は、インデックス316を利用して、所望のレコードが記憶されたブロックチェーン399のアドレス指定可能ブロックを識別する。さらに、ブロックチェーン399の第2のブロックから最後のブロックに例示的な記憶されたレコード390が示されている。
【0198】
ここで、記憶レコード390は、学生ファーストネーム315A、学生ラストネーム315B、学生電話番号315C、及び学生ID 315Dを含む学生情報を記憶する。
【0199】
ひとたび、例えば、記憶レコード390が具現化されている資産をブロックチェーンに追加することにより、記憶レコード390がブロックチェーン上へトランザクション処理されると、学生データはブロックチェーンにより永続的に記憶され、ブロックチェーン399へのアクセスを有する参加ノードにとってアクセス可能であるが、このようなデータが取り出されるとき、記憶レコードそれ自体は、そのようなデータを使用する方法、そのようなデータの特定のフォーマット、又はそのようなデータを検証する方法を記述しない。したがって、ブロックチェーン内にメタデータを記憶することがさらに許容可能であり、これは次いで、そのようなデータのためのフォーマット、検証手段、及び使用法を定義するために使用され得るが、メタデータの記憶は、ブロックチェーンからのデータを検索し、取り出す問題を悪化させるだけであり、なぜならば、今や、記憶レコード390と、さらにそのレコードに関連づけられた記憶メタデータ391が存在するためである。したがって、ブロックチェーンに記憶されたデータのより効率的な記憶、取り出し、及び検証を提供するインデックス316の使用と関連してブロックチェーンメタデータ定義マネージャ196により実施されるインデキシングスキームにより、組織方法論が提供される。
【0200】
一実施形態によれば、したがって、記憶レコード390は、ブロックチェーン内の記憶のためにより効率的なフォーマットにコンバートされる。学生情報が記憶されている記憶レコード390について考える。最初、記憶レコード390は、学生ファーストネーム315A及び学生ラストネーム315Bのみを含んでもよく、次いで、記憶される。その後、学生レコードは、学生電話番号315Cを含むように更新され、したがって、記憶レコード390はその全体を更新され、ブロックチェーンに再書き込みされ、ゆえに、更新されるにもかかわらず記憶レコード390の第2のコピーが作り出されるか、あるいは代替的に、新しい部分のみ、学生電話番号315Cが、先行レコードへ戻る参照と共にブロックチェーンに書き込まれ、その場合、総記憶ボリュームは低減されるが、レコード全体の取り出しは、記憶レコード390全体を再構成するためにブロックチェーン上の複数のブロックを検索し、発見することを必要とする。さらに悪いことに、学生ID 315Dが後に割り当てられた場合、記憶レコード390は再度更新される必要があり、ゆえに、さらに別の記憶レコード390全体がブロックチェーンに書き込まれ、その結果、今やブロックチェーン上に3つの異なるバージョン及びコピーがもたらされ、あるいは前述のように、記憶レコードの新しい部分のみをブロックチェーン399に書き込み、その場合、記憶レコード390はブロックチェーンの少なくとも3つのブロックにわたってフラグメント化される。
【0201】
このフラグメント化は問題があり、なぜならば、学生情報を探している場合、第1のブロックが学生のファーストネーム及びラストネームを含み、第2のブロックが更新に起因して学生のラストネームの変更を含み、第3のブロックが学生電話番号のみを含むなどの結果をもたらし得るためである。結果的に、データを必要とするどんなアプリケーションに対してでも、それが使用され得る前に記憶レコード390全体を再構成するために、ブロックチェーンのブロックを移動して全てのフラグメント化されたピースをピックアップすることが必要である。
【0202】
図3Dは、説明される実施形態による別の例示的なアーキテクチャ303を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0203】
一実施形態によれば、ブロックチェーンメタデータ定義マネージャ196は、ブロックチェーンに対して資産をトランザクション処理すること、又はブロックチェーンとの新しいトランザクションを介してブロックチェーンに資産を追加することにより、ブロックチェーン上へデータ又はメタデータを書き込む。特定の実施形態によれば、トランザクションは、特定のトランザクションタイプを有し、例えば、ブロックチェーン記憶トランザクションタイプとして定義され、これは、スマートコントラクトの実行をトリガしてトランザクションの検証を実行し、具体的には、ブロックチェーンに追加され又はブロックチェーン上へトランザクション処理される資産内のデータ又はメタデータの検証を実行する。
【0204】
例えば、このようなスマートコントラクト363は、ホスト組織のブロックチェーンサービスインターフェース190を介して実行することができ、これは、検証を実行し、次いで、ブロックチェーン上に記憶されている資産内のデータ又はメタデータの成功裏の検証に従ってブロックチェーン上へ新しい資産をトランザクション処理する。ここで要素363に示すように、スマートコントラクトはブロックチェーンのトランザクションを実行し、検証する。その後、検証されたトランザクション364が次いでブロックチェーン399に追加され、あるいはブロックチェーン399上へトランザクション処理される。
【0205】
図4Aは、説明される実施形態による、スマートフローコントラクトエンジン405を利用して作成されるブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャ400を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ(図示せず)は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0206】
詳細には、ここで、スマートフローコントラクトエンジン405を今や含み、GUIマネージャ410をさらに含むブロックチェーンサービスインターフェース190がホスト組織内に示される。
【0207】
ブロックチェーンは分散台帳を利用するため、スマートコントラクトの作成と実行は、特に初心者ユーザには、技術的に複雑な可能性がある。その結果、スマートフロービジュアルデザイナは、スマートコントラクトの実装をより容易に可能にする。結果として生じるスマートフローコントラクトは、顧客及びユーザが任意の所与のブロックチェーンプロトコルで使用されるプログラミング言語について心配する必要をなくすブロックチェーントランスレータ(blockchain translator)430により作成される、数学的に立証可能な自動生成コードを有する。さらに、スマートフローコントラクトエンジンは、ブロックチェーントランスレータ430と協調してブロックチェーンの参加ノードの各々で実行可能な必須のネイティブコードを生成するビジュアルデザイナを実現し、ゆえに、スマートコントラクトの容易な処理及び立証をさらに可能にする。特定の実施形態によれば、各スマートフローコントラクトは、数学コードに基づく立証可能な暗号化スキームを利用する。
【0208】
フローデザイナは、GUIベースのガイド付きフロー設計体験を通してアプリケーション及びカスタマイズされたプロセスフローを設計するための簡素な、直感的な、ウェブベースのインターフェースをユーザに提供する。フローデザイナは、必ずしもコーディング技能を有さず又はブロックチェーンに精通していない初心者ユーザでも、さもなければ複雑な機能を作成することを可能にする。
【0209】
GUIマネージャ410は、フローデザイナGUI411インターフェースをユーザデバイスに提示し、これを介し、ユーザは、ホスト組織と相互作用することができる。スマートフローコントラクトエンジン405は、GUIマネージャと協調して、ユーザにより提供される様々なルール、条件、及び動作を解釈してスマートフローコントラクトを生成し、これは次いで、ターゲットブロックチェーンプロトコルに翻訳され、あるいは書き込まれる。
【0210】
フローデザイナGUI411を介して、ユーザは、ビジュアルフロー要素を利用して、特定のプロセス、イベント、合意、コントラクト、購入、又は何らかの他のトランザクションがどのように発生する必要があるかを、依存関係、チェック、必要なプロセス入力及び出力、トリガ等を含み、完全に定義することができる。
【0211】
フローデザイナGUI411を使用し、ユーザは、動作ブロックを単にドラッグアンドドロップし、様々な条件と「if then else」イベント、例えば、このイベントが発生した場合にこのアクションをとる、などを定義する。ここで示されるように、ユーザ定義条件421、モニタリングすべきイベント421、「if」then「else」トリガ423、及び資産識別子424を含む様々なユーザ定義のスマートコントラクトブロックが存在する。
【0212】
ユーザが、その動作ブロック、条件、トリガ、及びイベントの全てを含むフローの定義を完了すると、スマートフローコントラクトエンジンは、個々のブロックの各々を取得し、それらをブロックチェーントランスレータ430を介してネイティブターゲットブロックチェーンプロトコルに翻訳し、次いで、ブロックチェーンサービスインターフェース190を介して、翻訳されたスマートフローコントラクト445をブロックチェーン440に書き込むためのトランザクションを生成する。
【0213】
ブロックチェーンへトランザクション処理されると、ブロックチェーンでのあらゆる参加ノードはスマートコントラクトのコピーを有することになり、したがって、任意の所与のイベントが発生した場合、対応するトリガ又はルール又は条件が全ての参加ノードに閲覧可能になり、そのうちのいくつかは、次いで、スマートコントラクトにより定義されるイベントに基づいてアクションをとることができる。
【0214】
ホスト組織のブロックチェーンサービスインターフェース190は、顧客、ユーザ、及びサブスクライバに、異なるブロックチェーンへのアクセスを提供し、そのうちいくつかはホスト組織110により管理され、例えばプライベートブロックチェーンであり、他はパブリックブロックチェーンであり、このようなパブリックブロックチェーン上のノードとして参加するホスト組織110を介してアクセス可能である。いずれにせよ、各ブロックチェーンは、異なるブロックチェーンプロトコルを利用し、様々なルール、構成、及び、可能性として異なる言語を有し、これらを介し、インターフェースは、それぞれのブロックチェーンと通信するために使用しなければならない。結果的に、ここに示されるブロックチェーントランスレータ430は、ユーザ定義のスマートコントラクトブロックを、結果として生じるスマートコントラクトが書き込まれ又はトランザクション処理されるべきターゲットブロックチェーン440のネイティブの又は必要な言語及び構造に翻訳する。
【0215】
スマートコントラクトがブロックチェーン445へトランザクション処理され、ブロードキャストされると、それはブロックチェーン内で実行され、次いで、ユーザ定義のスマートコントラクトブロックにより定められるその規定が実行され、強制される。
【0216】
一実施形態によれば、ユーザ定義のスマートコントラクトブロックを生成するために、セールスフォースドットコムのビジュアルフローデザイナが利用され、それらは、次いで、ブロックチェーンスマートコントラクトに翻訳される。他の実施形態によれば、異なるビジュアルフローデザイナが利用され、ブロックチェーントランスレータ430が、ユーザ定義のスマートコントラクトブロックをブロックチェーンスマートコントラクトに翻訳する。
【0217】
結果として生じるネイティブブロックチェーンプロトコルスマートコントラクト要素435は、スマートコントラクトが書き込まれるべきブロックチェーン440により指示されたコード、構造、又は言語内に具現化され得る。例えば、スマートコントラクトがイーサリアムに書き込まれるべき場合、ブロックチェーントランスレータ430は、ユーザ定義のスマートコントラクトブロックをイーサリアム準拠の「ソリディティ(Solidity)」プログラミング言語に翻訳しなければならない。ソリディティは、具体的にイーサリアムでスマートコントラクトを実現するためのコントラクト指向の高水準言語である。この言語は、C++、Python、及びJavaScriptの影響を受け、イーサリアム仮想マシン(Ethereum Virtual Machine、EVM)をターゲットにするように設計されている。スマートコントラクト要素は、投票、クラウドファンディング、ブラインドオークション、マルチシグネチャウォレット、及びその他多くの機能のためのサポートを含む。
【0218】
反対に、スマートコントラクトがハイパーレジャー(Hyperledger)に書き込まれるべき場合、言語は異なり、他の機能の中でも、スマートコントラクトのための分散台帳ブロックチェーンの使用を可能にするGoプログラミング言語を利用する。
【0219】
スマートコントラクトは有益であり、多くのブロックチェーンプロトコルによりサポートされるが、それらは、ターゲットにされる特定のブロックチェーンに依存して異なる言語でプログラムされるという要件に対して、実現するのに煩雑な可能性がある。したがって、ユーザは、プログラミング構造だけでなく、問題のブロックチェーンプロトコルに必要なプログラミング言語の特定の構文的ニュアンスも理解しなければならない。
【0220】
スマートフローコントラクトエンジン405を利用することにより、初心者ユーザでも、フローデザイナでスマートコントラクト要素を生成し、次いでブロックチェーントランスレータ430を利用して、ユーザにより定義されたスマートコントラクト要素を具現化するネイティブブロックチェーンプログラミング言語コードを実際にレンダリングすることにより、準拠したスマートコントラクトを作成することができ、その後、ブロックチェーンサービスインターフェース190は、ブロックチェーンへのスマートコントラクトのトランザクション処理を取り扱う。
【0221】
例えば、ホームデポに販売し、イーサリアムを使用するホームデポとのスマートコントラクトを実行したいベンダについて考える。ベンダは、ホスト組織でログインし、ベンダは認証されたユーザであり、クラウドサブスクリプションサービスへのアクセスを有すると仮定し、次いで、スマートフローコントラクトエンジン405にアクセスし、これを介して、ユーザは、自身が望むどんなフローでも生成することができる。完了すると、ユーザは、フローデザイナGUI411を介して、ブロックチェーンサービスインターフェース190にスマートコントラクトを実行するように指示し、ゆえに、スマートフローコントラクトエンジンに、ユーザのカスタム設計のスマートフローコントラクトをイーサリアム準拠の「ソリディティ」コードに翻訳させ、その後、スマートコントラクトは、次いで、実行のためにブロックチェーンに書き込まれる。ベンダは、ブロックチェーンとのトランザクション処理の詳細をプログラムする方法を知る必要がなく、あるいは理解さえする必要がない。むしろ、ホスト組織110を介してアクセス可能なクラウドベースのサービスは、プロセスから複雑さを除去し、ユーザに簡素なフローデザイナGUI411を提示し、ゆえに、これを介して、全ての必要な動作が実施され得る。
【0222】
そのような実施形態によれば、スマートコントラクトをブロックチェーンに書き込むことは、特定のブロックチェーンプロトコルによりサポートされるようにブロックチェーンにスマートコントラクトを定義するメタデータを記憶することを要する。一実施形態によれば、トランザクションがブロックチェーン上で発生したとき、スマートコントラクトのメタデータをその中に有すると、スマートコントラクトが実行され、次いで、様々なユーザ定義のスマートコントラクトイベント、条件、及び動作が果たされる。
【0223】
特定の実施形態によれば、ユーザ定義のスマートコントラクトは、翻訳され、ブロックチェーンへトランザクション処理され、ホスト組織においてイベントをトリガする。
【0224】
例えば、ウォルマートとネスレが、貨物は気候制御されたトレーラー内で常時華氏35~39度の範囲内で輸送されなければならないという合意を有することを考える。さらに、温度がいつでも39度を超えた場合、支払いは取り消される。
【0225】
ホスト組織内では、顧客関係管理(Customer Relationship Management、CRM)プラットフォームが、顧客、ベンダ、潜在顧客、サプライヤ等の間の様々な関係及び相互作用を定義し、管理する。用語CRMは、CRMシステムを通常指し、これは、コンタクト管理、販売管理、ワークフロープロセス、生産性などでビジネスに役立つツールである。
【0226】
上記のウォルマートとネスレの例では、CRMシステムは、貨物の要件を所持する。ホスト組織がCRMシステムを介して貨物を監視し、温度データなどの貨物イベントをサブスクライブするため、CRMシステムは、特定の貨物に関する温度関連イベントについて監視し、それを認識し、これは次いで、自動的にスマートコントラクトに向けてリンクされ得る。より詳細には、ホスト組織が、スマートコントラクトが実行されているブロックチェーンの参加ノードとして動作するため、ホスト組織は、ブロックチェーンを介してアクセス可能なスマートコントラクトの取り決め及び条件(terms and conditions)と、さらに要求される温度範囲などの貨物に関するCRM要件との双方に対して可視性を有する。
【0227】
したがって、スマートコントラクト条件違反が発生すると、ホスト組織は、その違反をCRMシステム(ブロックチェーンの一部ではない)と同期させて、実行中のスマートコントラクトの条件に従い、その特定の貨物に関連づけられた支払いを停止する。
【0228】
一実施形態によれば、ブロックチェーンは、ホスト組織のCRMシステムがリッスンするイベントを送出し、次いで、ユーザ定義のスマートコントラクトフローにより指定されるものに従って、イベントに基づいて何らかの実質的なアクションを実行する。上記の例では、実質的なアクションは、ブロックチェーン上のスマートコントラクトに従って貨物に対する支払いを停止することである。
【0229】
実行中のスマートコントラクトに対する参加当事者の各々は、そのそれぞれのCRMシステムに、実行中のスマートコントラクトに関連づけられたブロックチェーンのイベントをサブスクライブさせている可能性があり、したがって、双方の当事者が、イベントを認識している可能性がある。
【0230】
一実施形態によれば、ブロックチェーンイベントに応答した特定のアクションを容易にするために、論理がCRMシステムに書き込まれる。言い換えると、非ブロックチェーンアクションが、実行中のブロックチェーンスマートコントラクトに従って実行されてもよい。
【0231】
図4Bは、説明される実施形態による、Apex翻訳エンジン(Apex translation engine)455を利用して作成されたブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャ401を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ(図示せず)は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0232】
ここで示されるように、ブロックチェーンサービスインターフェース190内にApex翻訳エンジン455が存在する。
【0233】
Apexは、開発者向けにフォースドットコム(登録商標)(Force.com)プラットフォームにより提供されるプログラミング言語である。Apexは、強く型付けされたオブジェクト指向ベースの言語であり、ドット表記及び波括弧の構文を利用するため、Java及びC#と類似している。Apexは、スケジューリングを介して、又はビジュアルフォース(Visualforce)ページのカスタムコントローラを介して、カスタムボタンとリンク、レコードの挿入、更新、又は削除におけるイベントハンドラを含むフォースドットコムプラットフォーム上の大抵のプロセスの間のプログラムされた機能を実行するために使用され得る。
【0234】
セールスフォースドットコムのホスト組織の開発者は、Apexを頻繁に利用して、SQLプログラミング、データベース相互作用、GUIインターフェースのカスタムイベント、レポート生成、及び多数の他の機能を実現する。結果として、Apexにかなり精通し、あまり精通していないプログラミング言語を利用する必要があるよりもApex言語でプログラムすることを好む、ホスト組織110に関連づけられた開発者の大きいコミュニティが存在する。
【0235】
問題として、スマートコントラクトは、それぞれのブロックチェーン上のスマートコントラクトの実行に対してターゲットにされているブロックチェーンプロトコルのネイティブ言語で書かれなければならない。
【0236】
例えば、上述のように、スマートコントラクトがイーサリアムに書き込まれるべき場合、スマートコントラクトは、イーサリアム準拠の「ソリディティ」プログラミング言語で書かれなければならない。
【0237】
スマートコントラクトと同様に、Apexはメタデータの一種である。したがって、Apex翻訳エンジン455は、Apexに精通した開発者が、ブロックチェーンに対するそれらのスマートコントラクトを、ネイティブスマートコントラクトプロトコルプログラミング言語を利用するのでなくApexプログラミング言語を利用してプログラムすることを可能にする。
【0238】
ここに示されるように、開発者は、そのスマートコントラクトをApexプログラミング言語を利用して書き、次いで、図示のApexコードインターフェースを介して、例えば、開発者のApexコードを中に埋め込ませたテキストファイルをアップロードすることにより、Apex翻訳エンジン455にApex入力456を提供する。
【0239】
Apex翻訳エンジン455は、Apex入力456をパースして(parses)Apex定義のスマートコントラクトブロックを識別し、翻訳の準備のためにそれらを取り出す。ここで示されるように、Apex定義条件471と、監視すべきApexイベント472と、「if」then「else」Apexトリガ473と、前述のように、Apex特有ではない資産識別子424がある。
【0240】
次いで、Apex定義のスマートコントラクトブロックは、Apexブロックトランスレータ480に提供され、Apexブロックトランスレータ480は、それらを、ターゲットにされたブロックチェーンプロトコルのネイティブブロックチェーンプロトコルスマートコントラクト要素435にコンバートする。ひとたび翻訳されると、プロセスは上述のとおりであり、翻訳されたスマートコントラクトは、実行445のためにブロックチェーン440へトランザクション処理され、ブロードキャストされる(445)。
【0241】
ビジュアルフローGUIとは異なり、Apexはプログラム的であるため、Apexコードを書くユーザは、スマートコントラクトで実行するプログラムを書くことができ、ビジュアルフローGUI内で利用可能な機能により制限されない。
【0242】
特定の実施形態によれば、Apex入力456は、JavaScriptに最初翻訳され、次いでその後、スマートコントラクトが実行されるべきターゲットにされたブロックチェーンプロトコルに適した特定のブロックチェーンAPIに翻訳される。
【0243】
別の実施形態によれば、リッスンイベント(listening events)がApex言語を使用して書かれ、Apex入力456で提供されてもよく、しかしながら、このようなリッスンイベントは、ホスト組織により実行されるべきである。したがって、Apexブロックトランスレータ480は、任意の識別されたApexリスナ478を分離し、これらをホスト組織110に返し、そこで、これらは適切なCRMシステム又は他のイベント監視システム内で実現されてもよい。このような方法で、開発者は、Apex入力456を単一のプログラムとして書くことができ、スマートコントラクトとさらに関連するリッスンイベントを別個のシステムで別個に作成する必要はない。
【0244】
図4Cは、説明される実施形態による、ブロックチェーンに永続的に記憶されたレコードのためにApex翻訳エンジン455を利用するSQLフィルタリング及びクエリトランスレータのさらなる詳細を有する別の例示的なアーキテクチャ402を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0245】
ここで見られるように、今、SQLフィルタ又はSQLクエリを受信するApex翻訳エンジン455が存在し、これは、ホスト組織110クエリインターフェース180に対してサブミットされるが、ブロックチェーン440により永続化されるレコードについて、クエリインターフェース180は、ワークの一部をブロックチェーンサービスインターフェース190に委譲することが必要である。
【0246】
問題として、ブロックチェーンは関係データベースシステムではないため、ブロックチェーンは、SQLベースのクエリ又はフィルタを受信、処理、又はトランザクション処理する能力を全く有さない。それにもかかわらず、ホスト組織110は、ホスト組織のユーザに技術的複雑性を負担させないように、ユーザが簡素化されたツールを用いながらもより大きい技術的能力(例えば、ブロックチェーン440の使用を許可すること)を提供されることを前提として、少なくとも部分的に、オンデマンド及びクラウドベースのサービスをそのユーザに提供する。
【0247】
したがって、ホスト組織は、ここに示されるようにApex翻訳エンジン455を実施し、これは、apexコードインターフェース454と関連して動作して、ホスト組織110のクエリインターフェース180からSQLフィルタ/クエリ457を受信する。
【0248】
SQLフィルタ/クエリ457は、Apex翻訳エンジン455に通信され、これは、そのApex定義のSQLクエリ及びフィルタターム翻訳ブロックの一部として、入ってくるSQLフィルタ/クエリ457を読み取り、その構成要素部分へパースし、分析することができるSQLタームマッパ(mapper)458を含むように示されており、それにより、ブロックチェーンの資産内の様々なペイロードデータを実際に記憶する適切な資産識別子424を参照することができ、それにより、基礎をなすデータレコードをブロックチェーン440から取り出すことができる。
【0249】
次いで、パースされたターム及び適切な資産識別子424は、次いで、Apexブロックトランスレータ480を通じて送信され、次いで、要素459におけるペイロードデータ取り出しのためのネイティブブロックチェーンプロトコルにコンバートされる。
【0250】
次いで、要素459におけるペイロードデータ取り出しのためのネイティブブロックチェーンプロトコルは、ブロックチェーン440上へブロックチェーン読み取り要求461をトランザクション処理することにより、ブロックチェーン440に対して実行され得、結果として、要素462におけるブロックチェーンから取り出されたペイロードデータがブロックチェーン440から返される。
【0251】
ブロックチェーンから取り出されたペイロードデータ462により表されるこのレコードセットは、SQLフィルタ/クエリ457に対して適切なフォーマットではないが、それは、受信したSQLフィルタ/クエリ457を最終的に履行するために必要なデータを含む。言い換えると、ブロックチェーンの資産から取り出されたペイロードデータは、クエリされるレコードを表すデータを含むが、完全に互換性のないフォーマットにおけるものであり、ブロックチェーンのフォーマットに対応し、しばしばデータはハッシュ又はシリアライズされており、ゆえに、記憶されたデータの構造を記述するブロックチェーンから取り出されたメタデータ489に基づく読取可能なフォーマットへの逆のコンバージョンを必要とする。
【0252】
ブロックチェーンから取り出されたペイロードデータ462は、次に、apex翻訳エンジン455に戻され、これは、ブロックチェーンからのデータを読取可能なフォーマットにコンバートする。次に、翻訳されたレコードは、戻されたレコードセットの一時ビュー463においてデータベースシステム130に通信され、その時点で、次いで、SQLクエリ/フィルタ(例えば、要素457)は、元のSQLフィルタ/クエリタームを利用し、又は翻訳及び最適化されたSQLフィルタ/クエリタームを利用してデータベースシステム130において一時ビュー463に適用され、入ってくるSQLフィルタ/クエリに応答した元々要求されたレコードセットを返す。
【0253】
このような方法で、ユーザがブロックチェーン440上に記憶されたデータに対してSQLクエリ/フィルタを発行することがゆえに可能であり、ユーザは、ブロックチェーンと相互作用する方法又はブロックチェーンとの間でトランザクション処理する方法の理解を何ら必要とせず、実際、そのようなデータがブロックチェーン440上に記憶されているという知識をユーザが有することさえ必要としない。
【0254】
一実施形態によれば、ブロックチェーンに記憶されたデータは、SQLフィルタ/クエリ457要求を使用してクエリ又はフィルタリングされ、より詳細には、要求されたフィルタリングは、ブロックチェーン内に記憶されたデータ要素間の関係に基づいて行われる。
【0255】
しかしながら、注目すべきことに、ブロックチェーンは関係データベースシステムではないため、ブロックチェーン上の資産内に記憶されたペイロードデータのデータ要素間の「関係」のための構造は存在しない。
【0256】
それにもかかわらず、そのようなSQLフィルタ/クエリ457要求は、例えば宣言されたアプリケーションによりブロックチェーンに書き込まれるデータの構造及び関係を記述するためにブロックチェーンに対してメタデータをトランザクション処理することにより、ブロックチェーンに対して宣言され、定義され、記憶される定義されたメタデータ489に基づいて、ホスト組織110を通じて可能にされる。そのようなメタデータは、以下により詳細に説明されるように関連する実施形態に従ってアプリケーションの作成及び宣言を通じて定義されてもよい。
【0257】
このような方法で、互いに関連づけられるエンティティを、エンティティが関係データベースシステムにおいて互いに関連づけられる方法と同様に、そのようなレコードがブロックチェーン440などのDLTプラットフォームに書き込まれるという区別と共に、定義することが可能である。注目すべきことに、ブロックチェーン内のレコードは本質的には、関係データベースのように互いに関連づけられておらず、むしろ、データとさらにそのようなレコードを定義するメタデータとの双方を取り出すことが必要である。
【0258】
したがって、そのような実施形態によれば、Apex翻訳エンジン455は、ブロックチェーンのために定義されたエンティティ間の関係を翻訳し、これにより、次いで今度は、ホスト組織のデータベースシステム130及び/又はクエリインターフェース180が、データに対する必要なJOIN操作を実行して統合テーブル又はJOINテーブルビューを形成することができ、これに対して、SQLフィルタ/クエリ457要求が次いで適用され得る。
【0259】
特定の実施形態によれば、ブロックチェーン上に書き込まれた任意のトランザクションは、後にApex翻訳エンジン455によりRDBMSフォーマットに相互関連づけされ得るオフチェーン記憶データベース表現としてデータを永続化するリーフノードを結果としてもたらす。
【0260】
そのような実施形態によれば、関係テーブルは、ブロックチェーンから取り出されたペイロードデータに基づいて、及び、ブロックチェーンへトランザクション処理され、取り出されたペイロードデータと同時に取り出されたメタデータ489に基づいて、Apex翻訳エンジンにより後に作成される。
【0261】
説明される実施形態によれば、このようなデータの構造を定義するメタデータへの変更があるときはいつでも、ブロックチェーン上へ新しいメタデータ定義をトランザクション処理することによりメタデータの変更が更新され、その結果、メタデータへのいかなるこのような変更も、取り出されたデータ上で構築される任意のRDBMSフォーマットのテーブルに自動的に翻訳され、なぜならば、Apex翻訳エンジンは、更新されたメタデータ定義を取り出し、参照するためである。
【0262】
そのような実施形態によれば、ひとたびRDBMSフォーマットのテーブルがApex翻訳エンジンにより構築されると、SQLフィルタ/クエリ457要求は、次いで、ホスト組織の110のデータベースシステム130において構築されたRDBMSテーブルに対してクエリされる。別の実施形態によれば、RDBMSテーブルは、最初、ブロックチェーンからメタデータ489を取り出すことにより、ペイロードデータを取り出すことなく構築される。その後、SQLフィルタ/クエリ457要求は、RDBMSフォーマットのテーブルに適用され、クエリに基づいて、Apex翻訳エンジンは、ブロックチェーン440上でペイロードデータが記憶されている適切な資産識別子424を識別する。次いで、ブロックチェーンからペイロードデータを取り出し、取り出されたデータを、構造化されているが空である前にフォーマットされたRDBMSテーブルに投入する前に、ブロックチェーン上のデータの対応するブロック番号を識別する。次いで、取り出されたペイロードデータは、空のRDBMSテーブルに投入されて、SQLフィルタ/クエリ457要求が要求の履行において今や投入されたRDBMSテーブルに対して適用されるのを容易にする。
【0263】
このような方法で、次いで、データの正式なソースが最終的に関係データベースシステムではなくブロックチェーン440上へトランザクション処理された資産に書き込まれたペイロードデータであるという事実にもかかわらず、SQLクエリを利用してブロックチェーン内のデータに対してクエリすることが可能であり、関係に基づいてSQLを使用してフィルタリングすることが可能である。
【0264】
いかなる変更に対してもブロックチェーンに永続化されるブロック番号及びブロックIDを有する別個のテーブルビューを作成することにより、別個のビューを利用して一層高速なルックアップを実行すると同時に、ブロックチェーンにおけるデータをチェックするためにブロックIDを利用して参照データが現在のものであることを検証することが可能であり、問題のデータについてブロックチェーンの時間集中的な検索を実行する必要はなく、なぜならば、ブロックIDが直接、単一のブロックへの参照を可能にするためである。
【0265】
明確にするために、このような実施形態によれば、2つのクエリがある。RDBMSフォーマットのテーブルを通じたデータベースシステム内の一時ビューに対する最初のSQLベースのクエリが実行され、次いでブロックID及びブロック番号の高速ルックアップが実行され、次いで、Apex翻訳エンジンはブロックチェーンに戻って、Apex翻訳エンジンにより資産識別子424として維持されるブロック番号及びブロックIDのテーブルルックアップに基づいて、クエリされたデータが現在のものであり正確であることを検証する。
【0266】
さらに、データはRDBMSフォーマットで表現されるため、ブロックチェーン内に記憶されたデータに対してJOINを実行することがさらに許容される。そのようなJOINは、さもなければ不可能であろうブロックチェーンに記憶されたデータを利用した分析が実行されることをそれらが可能にするため、重要である。
【0267】
このような実施形態によれば、データベースシステム130内のRDBMSフォーマットのテーブル表現は不変テーブルではないが、エンティティがRDBMSフォーマットのテーブルに対する変更を行う権限を有さないように制限され、例外は、以下で論じられるApex翻訳エンジンのトランザクション再生メカニズムである。
【0268】
したがって、ブロックチェーン監視/イベントリスナコンポーネントのみが、このテーブルを更新することを可能にされ、ブロックチェーンの正式なソースからRDBMSフォーマットのテーブル及びホスト組織のデータベースシステム130内の一時ビューへの必要な同期を実行し、これは、メタデータへの変更又はブロックチェーンに記憶された永続化されたデータへの変更のいずれかがイベントリスナにより観測されるときいつでもである。
【0269】
さらなる実施形態によれば、さらに、ブロックチェーンがアクセス不可能なときSQLフィルタ/クエリ457要求を処理するトランザクション再生メカニズムと、ブロックチェーンが恒久的にアクセス不可能になった場合、又はブロックチェーン上のデータが破損した可能性がかなり低い場合におけるブロックチェーンデータリストアのための復元メカニズムがある。
【0270】
そのような実施形態によれば、再生メカニズムは、データの一時的なホスト組織のビューが現在のものであることを検証するために、ブロックチェーン内に記憶されたデータを検証することなく、ホスト組織110によりSQLフィルタ/クエリ457要求が処理されることを可能にする。
【0271】
ブロックチェーン440がアクセス不可能である間、SQLフィルタ/クエリ457要求が受信される可能性がある。したがって、Apex翻訳エンジンはホスト組織のデータベースシステム130と関連して、一時ビューのデータを追加、更新、又は削除する全てのトランザクションを記録する。このような変更はブロックチェーン上へトランザクション処理されるが、これらの変更は一連の更新として記録され、ホスト組織で維持される。これらの変更は、非正式ソースを表すが、それにもかかわらず参照されてもよい。
【0272】
したがって、ブロックチェーン440がアクセス不可能である場合、記録されたデータへの変更はデータベースシステム130によりリプレイされて、リプレイされた追加、削除、及び更新トランザクションを利用してホスト組織におけるデータの一時ビューを更新することができ、ゆえに、一時ビューを、ブロックチェーンに記憶された同じデータの正式なソースと同期させる。ひとたびリプレイが完了すると、SQLフィルタ/クエリ457要求はデータの一時ビューに対して処理することができ、データが現在のものであることを検証及び立証するためにブロックチェーンに記憶されたデータの資産識別子424の位置を特定するApex翻訳エンジンの中間動作を必要としない。
【0273】
したがって、ブロックチェーンが一時的にアクセスできないときでも、SQLベースの言語のクエリ及びフィルタを利用して、ブロックチェーンがクエリされ、SQLフィルタ/クエリ457要求が履行され得る。
【0274】
このようなトランザクション再生メカニズムは、RDBMSフォーマットのテーブル及び一時ビューがブロックチェーンを参照する必要なく自己修復し、ブロックチェーンレベルで完全にリストアされた状態に戻ることを可能にする。例えば、ホスト組織のシステムは、ブロックチェーンノードがダウンしたか又はアクセス不可能であることを認識し、ゆえに次いで、観測された全てのトランザクションをリプレイし、メタデータを再適用して適切な状態を決定し、これは、ブロックチェーン上の全ての参加ノードが自己更新する方法と同様であり、例外は、参照がブロックチェーンのノードに対して行われず、おそらくブロックチェーンから直接状態データと現在の情報を取り出すより一層遅いことである。速度のペナルティにもかかわらず、利点は、ブロックチェーンノードがダウンしているにもかかわらず、有効なデータがそれにもかかわらず取り出され得ることである。
【0275】
別の実施形態によれば、ブロックチェーン440が恒久的にアクセス不可能になった場合のブロックチェーンに記憶されたデータのための復元及びリストアメカニズムがある。このシナリオはかなり可能性が低いが、必要に応じてデータリストアを実行する機会を提示する。さらに、ホスト組織又はユーザがそれらのデータを再配置することを望む場合に、データが永続化されるブロックチェーン440から正式なソースとして新しいブロックチェーンにデータマイグレーションを実行する能力が許容される。
【0276】
そのような実施形態は、上述した全ての記録されたトランザクションの再生と同様に動作し、追加される追加は、ひとたび再生が完了すると、ホスト組織のデータベースシステム130における全てのメタデータ489及び一時ビューからのレコードがリストアされたブロックチェーン440に書き込まれ、あるいは新しいブロックチェーンリポジトリに書き込まれ、ゆえに、レコードがペイロードデータとして永続化されるブロックチェーン上に新しい資産を作成し、そのようなデータについてブロックID及び資産識別子424を更新して、破局的な故障の後、又は意図的なデータマイグレーションに従って、ブロックチェーン440上の全てのデータを完全に復元又はリストアすることである。
【0277】
特定の実施形態によれば、メタデータへの変更はホスト組織のイベントリスナにより認識され、このイベントリスナは、このようなメタデータが記憶される資産のいずれかに影響を及ぼすブロックチェーンでの変更を探す。したがって、ひとたび、トランザクション処理された資産についての合意に従ってメタデータがブロックチェーンにコミットされると、ブロックチェーンサービスインターフェースはメタデータの更新されたバージョンを取り出し、それにより、ホスト組織110内の一時ビューのためのRDBMSフォーマットのテーブルは、メタデータの新しいバージョンに基づいて再構築され得る。例えば、メタデータはSQLデータ定義言語に翻訳され、次いで、メタデータに基づいて、空であるRDBMSデータテーブル、又は投入されたテーブルのRDBMSデータ表現が、翻訳されたSQLデータ定義言語を利用する新しいメタデータに従って再構築され、あるいは再構成される。
【0278】
説明される実施形態によれば、ブロックチェーンイベントが発生するときはいつでも、暗号データが返され、データは次いでメタデータフォーマットで永続化される。暗号データは、例えば、他のシステムが参照及び消費するためにSQLデータ定義又はREST標準又は他の標準化された復号フォーマットを使用して、他のシステムにより理解されるフォーマットに翻訳される。次いで、このデータは、今やアクセス不可能であるブロックチェーンに記憶されたデータに依存する他のシステムにプッシュアウトされ、それにより、これらのシステムは、データの一時ビューと任意の他のデータベースを同期させ、あるいはそのようなデータに影響を及ぼすブロックチェーンからのイベントについての任意のエンティティリストを同期させることができる。例えば、分析エンジンは、ブロックチェーンへの変更についてイベントリスナからのデータフィードを常にリッスンすることができ、それにより、それは分析エンジンにフィードすることができる。同様に、AIエンジンがフィードをリッスンしてもよく、それにより、それがAI等に訓練データを入力してもよい。
【0279】
図5Aは、説明される実施形態による別の例示的なアーキテクチャ501を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0280】
従来の解決策は、ブロックチェーン上へトランザクション処理される資産内に自由形式のテキストを記憶することを可能にし、例えば、そのようなデータを資産のペイロード部分内に記憶するが、このようなデータは検証されていないため、破損した又は不正確なデータがブロックチェーンに書き込まれ、後に、そのようなデータが有効であるという仮定で取り出されるリスクがある。
【0281】
したがって、ブロックチェーン上へトランザクション処理されるエンティティ又は資産のトランザクション検証を実行するためにスマートコントラクトを実行することにより、そのようなデータがブロックチェーン399に書き込まれる前に様々なマスク、データ構造、データタイプ、データフォーマット、又は他の要件を強制することが可能である。
【0282】
そのような実施形態によれば、ブロックチェーンメタデータ定義マネージャ196はスマートコントラクト検証563を実行し、ブロックチェーンに書き込まれるデータが実行されたスマートコントラクトにより定められた要件に準拠しない場合、トランザクションは拒絶され(565)、例えば、トランザクションをクエリインターフェースに送り返してトランザクションの発信元に知らせる。そうでない場合、トランザクションがスマートコントラクト実行に従って準拠していると仮定し、トランザクションは検証され(564)、ブロックチェーンに書き込まれる。
【0283】
一実施形態によれば、スマートコントラクトは、データマスクを適用して、ブロックチェーンに書き込まれるデータ又はメタデータの準拠を検証する。他の実施形態において、スマートコントラクトは、検証手順の一部としてデータに適用されるルールを強制する。
【0284】
一実施形態によれば、スマートコントラクトは、スマートコントラクトの使用を許可する任意のブロックチェーンで実行される予め定義されたスマートコントラクトシステムの一部として実行され、スマートコントラクトは、必要なデータ検証を実行する。
【0285】
一実施形態によれば、ブロックチェーン399に書き込まれるデータ又はメタデータは、記憶効率を改善するためにJSONフォーマットにコンバートされる。JavaScript Object Notation(JSON)は、属性‐値ペア及び配列データ型又は他のシリアライズ可能な値を含むデータオブジェクトを送信するために、人間が読めるテキストを使用するオープン標準のファイルフォーマットを提供する。これは、いくつかのAJAXスタイルのシステムにおけるXMLの代替としてのものを含め、非同期のブラウザ‐サーバ通信に使用されるかなり一般的なデータフォーマットである。さらに、JSONが言語非依存のデータフォーマットであるため、それは、そのようなプラットフォームに利用される基礎をなすプログラミング言語にかかわらず、様々な異なるスマートコントラクト実行プラットフォーム及びブロックチェーンプラットフォーム上のスマートコントラクトにより検証され得る。
【0286】
したがって、ここに示されるように、ブロックチェーンに書き込まれるデータ又はメタデータは、JSONフォーマット566に(例えば、ホスト組織110のデータベースシステム130内で)コンバートされ得、次いで、検証及びコンバートされたJSONデータは、ブロックチェーン上でトランザクション処理される。
【0287】
図5Bは、説明される実施形態による、記憶されるデータの動的メタデータ検証を実行する別の例示的なアーキテクチャ502を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0288】
特定の実施形態によれば、ブロックチェーン399に記憶されるデータの効率を改善することが望ましく、したがって、ブロックチェーンに書き込まれるべきデータを有する全ての新規トランザクションは、ブロックチェーンに新しいデータを書き込む前に、データマージ569プロセスを実行する。これは、ブロックチェーンから、前に書き込まれた記憶されたレコードなどの古いデータを最初取り出し、例えば、取り出されたデータ566をホスト組織のデータベースシステム130にプルし、次いで、取り出されたデータ566を、実行されたスマートコントラクトによりチェックされた新しい検証されたデータ567とマージすることにより実行され、結果として、マージされたデータ568をもたらす。次いで、マージされたデータ568は、例えば、マージされたデータ568をブロックチェーンに追加される新しい資産内に埋め込むことにより、又は既存の資産を更新し、既存の資産のペイロード部分をマージされたデータ568で置き換えることによりブロックチェーンに書き込まれ、したがって、より効率的な取り出しのために、更新及び検証されたレコード全体をブロックチェーンの1つのブロック上に記憶させる。
【0289】
一実施形態によれば、データマージ569プロセスはprotobuf生成器599により実行され、これは、取り出されたデータ566を新しい検証されたデータ567とマージすることに加えて、データの合計サイズを低減する。例えば、新しい検証されたデータ567を用いる取り出されたデータ566の動的protobuf生成の実行を介して、データは極めて小さく、効率的であるようにされる。
【0290】
プロトコルバッファ(protobuf又はprotobuffと呼ばれる)は、構造化されたデータをシリアライズする(serializing)手段を提供し、したがって、取り出されたデータ566及び新しい検証されたデータ567を、protobuf生成器599においてマージされたシリアライズされたバイトストリームにコンバートする。これは、マージされたデータの暗号化を可能にし、記憶されたデータを後に取り出す任意の他のアプリケーションにより容易に使用可能なバイトストリームフォーマットでそのようなデータを提供するという追加的な利点を有する。protobuf生成器599は、取り出されたデータ566及び新しい検証されたデータ567により表される構造化されたデータを表すバイトストリームを生成又はパースするために、その記述からソースコードを生成するプログラムを用いて記憶されるデータの構造を記述するインターフェース記述言語を利用する。
【0291】
このようなアプローチは、全ての種類の構造化された情報を記憶し、交換することを可能にする。例えば、ソフトウェア開発者は、データ構造(取り出されたデータ566及び新しい検証されたデータ567など)を定義することができ、次いで、protobuf生成器599は、データを、コンパクトで前方及び後方互換性があるが自己記述しない(すなわち、外部指定なしにフィールドの名前、意味、又は完全なデータ型を伝える方法がない)バイナリフォーマットにシリアライズし、ゆえに、記憶されたデータのための暗号化及びデータセキュリティのレイヤを提供する。
【0292】
このような方法で、protobuf生成器599は、ネットワーク通信の効率を改善し、そのようなデータを後に参照する可能性のある他の言語又はシステムとの相互運用性を改善する。
【0293】
そこで、学生のファーストネーム、ラストネーム、電話番号、及び学生IDを有する学生の記憶レコードの前述の例について考える。
【0294】
特定の実施形態によれば、処理は、ブロックチェーン上にデータを記憶しようとするアプリケーションにより提供及び定義される学生レコードを記述するメタデータのprotobufを生成することで始まり、したがって、プロトコルバッファリングされた(protobuffed)学生レコードメタデータ又はシリアライズされた(例えば、JSON)準拠の学生レコードメタデータを結果としてもたらす。次に、処理は、記憶レコード内の学生データをメタデータに対して検証して準拠を保証し(例えば、スマートコントラクトを実行することにより)、次いで、処理は、記憶レコード内の学生データのprotobufを生成し、プロトコルバッファリングされた学生レコードデータを結果としてもたらす。次に、学生レコードを記述するプロトコルバッファリング又はシリアライズされたメタデータと、学生レコードのプロトコルバッファリング又はシリアライズされたデータの双方が、ブロックチェーンに書き込まれる。したがって、データのプロトコルバッファリング又はシリアライズされたバージョンを記憶することは、ブロックチェーン上のそのようなデータのより効率的な記憶を結果としてもたらす。そのような実施形態によれば、検証目的で使用されるアプリケーションにより定義されたメタデータは、そのプロトコルバッファリング又はシリアライズされたバージョンにも記憶され、したがって、ブロックチェーン上でのプロトコルバッファリング又はシリアライズされたメタデータの効率的な記憶を結果としてもたらす。
【0295】
そのような実施形態によれば、データマージ569プロセスは、新しいフィールド及び新しいデータを記憶レコードに追加することを含み、これは次いで、メタデータを使用して新しいフィールドを動的に検証した後、ブロックチェーン399に再書き込みされる。
【0296】
例えば、そのような実施形態によれば、処理は、取り出されたデータ566を取得し、新しいフィールドを追加し、例えば、前に記憶された学生のファーストネーム、ラストネーム、及び電話番号に対して学生の新たに割り当てられたユニバーサルID(例えば、ホスト組織内の情報を識別するために使用される128ビット番号としてのユニバーサル一意識別子(universally unique identifier、UUID)又はグローバル一意識別子(globally unique identifier、GUID)など)を追加して、マージされたデータ568を生成することを含み、その後、処理は、スマートコントラクトを実行することによりメタデータに基づいてマージされたデータ568を動的に検証する。メタデータが前にブロックチェーンに書き込まれている場合、メタデータを再度更新又は保存する必要はなく、これはおそらく、更新されたレコードを構成するマージされたデータ568の場合である。したがって、マージされたデータ568のみがブロックチェーンに書き込まれる。データが新しい(例えば、取り出されず、マージされない)場合、処理は、アプリケーションにより提供されたメタデータを使用して新しいデータを動的に検証し、次いで、新しいデータとメタデータの双方をブロックチェーン上へ記憶する。
【0297】
データをブロックチェーン上に記憶しようとするアプリケーションにより定義されるメタデータは、例えば、学生レコードが3つの必須フィールドと1つの任意のフィールド、例えば、必須のファーストネーム、ラストネーム、及び学生IDと、任意で学生電話番号とを有することを指定することができ、したがって、ブロックチェーンに書き込まれるデータの検証を可能にする。メタデータはさらに、データフィールドのフォーマット、データマスク、又は制限を定義してもよく、例えば、名前は数字を有してはならない、電話番号は特定の桁数を有さなければならない等である。
【0298】
複数の異なるアプリケーションがブロックチェーン上へデータを記憶し、複数の異なるアプリケーションの各々がそれらそれぞれの記憶レコードに対して異なるメタデータを定義してもよく、したがって、スマートコントラクト実行は、それぞれのアプリケーションに対して様々に定義されたメタデータに基づいて異なる種類のデータの検証を実行することができる。例えば、学生名、電話番号、UUIDを有する学生レコードは、クレジットカード番号、期限切れデータ、セキュリティコードなどを有するクレジットカードレコードの異なるデータ検証を必要とする異なるメタデータを有する。それにもかかわらず、動的に適用されるメタデータ検証プロセスが基礎をなすデータに依存しないとき、そのようなデータが記憶されるデータレコードのデータに対して定義されたメタデータに準拠している限り、同じ処理が適用される。
【0299】
図5Cは、説明される実施形態による、関連エンティティを記憶する別の例示的なアーキテクチャ503を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0300】
上述の保存された学生レコードの例では、例えば、学生ファーストネーム、学生ラストネーム、学生電話番号、及び学生IDを有する学生レコードがブロックチェーンに保存された。さらに、学生レコードを記憶しようとするアプリケーションにより定義されたメタデータも記憶され、そのようなメタデータは学生レコードの動的な検証に利用された。
【0301】
さらなる実施形態によれば、関連エンティティはブロックチェーン上に記憶され、前に記憶されたレコードとリンクされる。例えば、新しい学生成績証明書が提供されるブロックチェーン上の記憶された学生レコードについて考える。
【0302】
ここに示されるように、リンク関連エンティティ579プロセスが実行され、これにおいて、取り出されたデータ572は、関連エンティティを識別するUUIDフィールド573を追加するように修正され、関連エンティティ571と、前にブロックチェーンに記憶され、修正のために取り出されたデータレコード572との間のリンクを提供する。これは次に、まだ記憶されていないUUIDフィールド574を有するデータを結果としてもたらす。次に、新しい関連エンティティ571をリンク及び識別するUUIDフィールド574を有するデータがブロックチェーンに書き込まれ、ブロックチェーン内に記憶され、記憶レコードが今や、記憶レコードの元のデータを有するが、新しい関連エンティティにリンクし識別するUUIDフィールド574も有する結果をもたらす。次に、関連エンティティ571は、同じUUIDデータフィールドを有するメタデータとしてブロックチェーンに書き込まれ、したがって、ブロックチェーンからの関連エンティティ571のその後の取り出しを、記憶されたレコード内のUUIDを最初参照し、次いでメタデータとしてブロックチェーン内に記憶されたリンクされた関連エンティティ571を取り出すことにより可能にする。
【0303】
したがって、学生レコードが学生の名前、電話番号、及び学生IDを定義する場合、学生の成績証明書がブロックチェーン上にメタデータとして記憶され得る。新しいUUIDは、成績証明書が記憶されるために自動的に生成され、次いで、学生レコード内で、学生レコード内の関連エンティティフィールドが更新されて、成績証明書について生成された新しいUUIDを記憶し、したがって、成績証明書についてのUUIDを識別する関連エンティティフィールドで更新された学生レコードを、記憶されたメタデータとしてブロックチェーンに書き込まれる別個に記憶された成績証明書とリンクする。このようにして、任意の数の関連エンティティがブロックチェーンに追加され、各々がブロックチェーン内のメタデータとして記憶され、関連エンティティのためのデータフィールドを介して別の記憶レコードにリンクされ得る。複数の関連エンティティフィールドが任意のレコードに追加され、各々が問題の関連エンティティにリンクし識別するための異なるUUIDを使用してもよい。例えば、学生が成績証明書とさらに医療記録を有する場合、各々がメタデータとしてブロックチェーンに別個に保存され、各々が一意のUUIDにより別個に識別され、各UUIDは学生の記憶レコード内で別個の関連エンティティフィールドとして更新される。前述のように、別個に記憶された関連エンティティのためのUUIDを識別する関連エンティティフィールドを有する更新されたレコードは、そのプロトコルバッファリング又はシリアライズされたバージョンに記憶されてもよい。
【0304】
図6Aは、説明される実施形態による、インデキシングスキームを使用してアドレス指定可能(addressable)ブロックから記憶されたレコードを取り出す別の例示的なアーキテクチャ601を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ(図示せず)は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0305】
マークルツリーインデックス616又はマークルDAGツリーインデックスの使用は、マークルツリーインデックスに基づいてブロックチェーンの特定のブロックに行くことにより、ブロックチェーンからの記憶されたレコードの取り出しを可能にし、したがって、より効率的な方法での記憶されたレコードの取り出しを可能にする。例えば、マークルツリーインデックスは、ブロックチェーン上の多くのアドレス指定可能ブロック618のうち1つのアドレスを識別し、次いで、記憶されたレコードの取り出しは、問題の記憶されたレコードを探してブロックチェーンをトラバースする必要を否定し、代わりに、マークルツリーインデックスにより識別されたブロックから直接、記憶されたレコードの取り出しを可能にする。
【0306】
したがって、ここに示されるように、処理は、インデックス616へのクエリ651を実行して所望のデータのアドレスを識別し、その後、アドレスに基づいてアドレス指定可能ブロック618に記憶されたデータを取り出すために特定のブロック617へのクエリが実行され、データを見つけるためにブロックチェーンをトラバースし、又はツリーをトラバースする必要はない。
【0307】
特定の実施形態によれば、インデックス616は、エンティティとしてブロックチェーン399内に記憶され、例えば、インデックスは、ブロックチェーン上の資産として記憶されてもよい。さらに、ブロックチェーン上にそれ自体が記憶されるマークルツリーインデックス616内に記憶されたレコードを記憶することにより、インデックスを有する特定のブロックに行くことによってインデックス616から任意のデータを取り出すことが可能である。したがって、インデックスが既知である場合、アドレスのためにインデックス616をクエリする(651)ことは不要であるが、代わりに、インデックス内の既知のアドレスに対するノードに直接行き、そのノードで何らかを受け取る。アドレスがインデックス616内のリーフを指し示す場合、リーフ内に記憶されたデータは、インデックス616内のそのアドレスへの直接クエリに基づいて返される。アドレスが、さらなるノード又は単に複数のリーフなどの、その下にサブツリーを有するノードを指し示す場合、サブツリー全体が返される。例えば、アドレスABCが使用される場合、ハッシュABCを有するノード全体が返され、ハッシュAを有するリーフ、ハッシュBを有するリーフ、及びハッシュCを有するリーフを含む、そのノードの下の3つのリーフが含まれる。
【0308】
インデックス616がブロックチェーン内の特定のブロックのアドレス指定情報を記憶している場合、返されたアドレス指定情報に基づいて、取り出されるべき記憶レコードを取り出すために、ブロックチェーンの特定のブロックがチェックされ得る。あるいは、アドレス指定が、記憶されたレコードの最新情報と共にインデックス616内に記憶されている場合、アドレスを使用してインデックス616に行くと、記憶されたレコードが位置するブロックチェーン上のブロックのアドレス指定情報を返すと共に、その記憶されたレコードの最新情報を返すことの双方がなされ、ゆえに、ブロックチェーンをさらにクエリする必要を否定する。
【0309】
図6Bは、説明される実施形態による、ブロックチェーン内のレコードからインデックスを構築してインデックスを維持する別の例示的なアーキテクチャ602を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ(図示せず)は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0310】
特定の実施形態によれば、インデックス616の使用により、ブロックチェーン内に記憶されたデータレコードへの極めて高速なアクセスを可能にすることが望ましい。上述のように、インデックス616は、基礎をなす記憶されたレコードが保持されるブロックチェーン上のアドレス指定可能ブロックのアドレスのみを記憶することができ、したがって、インデックス616から取り出されたアドレスを使用するブロックチェーンからのレコードの取り出しを可能にする。あるいは、最新情報、すなわち、ブロックチェーンにより記憶された特定のレコードの最新かつ現在のバージョンの双方が、基礎をなす記憶されたレコードがブロックチェーンにより保持されている場合にブロックチェーンのアドレス指定可能ブロックと共にインデックス内に記憶されてもよい。明確さのために言うと、これは、重複レコードが永続化される結果をもたらす。レコードの最新かつ現在のバージョンはブロックチェーン内に保持され、正式なレコードとみなされるが、クエリ速度を改善するために、同じレコードの第2のコピーが、そのレコードの正式なバージョンが維持されるところのブロックチェーン上のアドレスと共にインデックス616内に保持される。
【0311】
そのような実施形態によれば、インデックス616は、したがって、ブロックチェーン内の基礎をなす記憶されたレコードを参照することによりホスト組織によって構築又は生成されてもよい。
【0312】
ここに示すように、ブロックチェーン699内には、ブロックチェーンの異なるアドレス指定可能ブロックに複数の記憶されたレコードが存在する。記憶レコード691はルートブロック684に位置する。記憶レコード692はブロック685Aに位置し、記憶レコード693Aはブロック685Bに位置し、最後、更新レコード693Bはブロック685Cに記憶され、更新レコードは、もはや現在のものでないとして前の記憶レコード693Aの価値を下げる。
【0313】
これらの記憶されたレコードのいずれも、関連レコードを検索してブロックチェーンをウォーク(walking)又はトラバースし、関連レコードの位置を特定し、次いで位置を特定されたブロックから記憶されたレコードを取り出すことにより、ブロックチェーンから取り出すことができる。
【0314】
インデックス616を構築することは、記憶されたレコードが保持されるブロックチェーン内のブロックの少なくともアドレスを提供することにより、このプロセスの取り出し効率を改善する。上述のように、そのようなアドレス指定情報を有するインデックス616がチェックされ、記憶されたレコードについてのブロックチェーンのアドレス指定可能ブロックを返すことができ、次いで、記憶されたレコードは、ブロックチェーンの複数のブロックをトラバース又ウォークする必要なくブロックチェーンから取り出すことができる。例えば、インデックス616が更新レコード693Bの位置についてチェックされ、インデックスはアドレス指定可能ブロックチェーンブロック685Cの位置を返してもよく、次いで、ブロック685Cは、標準ブロック685Cにおける更新レコード693Bである正式な記憶されたレコードの最新かつ最も最近のバージョンを取り出すために、直接クエリされ得る。
【0315】
代替的に、更新レコード693Bの内容又はデータと、正式な記憶されたレコード693Bの最新のバージョンがどこに保持されているかを識別するアドレス指定可能ブロックチェーンブロック685Cの位置の双方が、インデックス616内に永続化されてもよく、したがって、ブロックチェーンから何らかのものを取り出す必要を完全に否定する。これは、更新レコード693Bのさらなるコピーがインデックス616内に記憶される結果をもたらすが、更新レコード693Bのデータが取り出され得る速度は大幅に改善される。これは、インデックス616自体がブロックチェーンに書き込まれるのでなくホスト組織内に記憶される場合に特に当てはまる。このような実施形態において、インデックス616はホスト組織110内でチェックされ、記憶レコードの内容又はデータと共に記憶レコードの位置の双方が返され、ブロックチェーン内の記憶レコードからのデータのコピーに対応するそのようなデータは、ホスト組織に記憶されたインデックス616から返される。したがって、このような情報を受信したアプリケーションは、その後、インデックス616により返されたブロックチェーン内の記憶レコードの位置を使用してブロックチェーンから記憶レコードを取り出すことにより、ブロックチェーン内に記憶された情報を検証するためにチェックされ、あるいは、アプリケーションは、その特定のアプリケーションのデータ一貫性要件及び懸念に依存して、インデックス616自体から返されたデータのコピーを単に利用してもよい。
【0316】
したがって、ここで観察されるように、インデックス616のデータリーフは今や、ブロックチェーン内の問題のブロックの位置を提供するアドレス指定情報を含むだけでなく、さらに、ブロックチェーン内の記憶されたレコードのコピーを永続化し、ゆえに、そのようなデータを取り出すための重複した位置を提供する。記憶されたレコードの1つのコピーは、ブロックチェーン自体から取り出し可能であるが、ブロックチェーン内の記憶されたレコードのコピーは、インデックス616からも取り出し可能である。
【0317】
ここに示されるように、リーフハッシュAは今、位置684へのリンクを有し、したがって、記憶レコード691が永続化されるブロックチェーン699上のブロック684の位置又はアドレス指定情報を提供する。しかしながら、リーフハッシュAはさらに今、インデックス616自体の中に永続化される記憶レコード691のコピーを有し、したがって、ブロックチェーンが記憶レコード691の正式なコピーを有するにもかかわらず、必ずしも記憶レコードをブロックチェーンから取り出す必要なく、ホスト組織上に記憶されたインデックス616から直接的に、記憶レコード618からのデータ又は内容の取り出しを可能にする。インデキシングされるべきレコード(例えば、全ての学生レコード)を識別し、次いでブロックチェーンからこれらのレコードを検索して取り出し、これらのレコードの位置をインデックス616内に、取り出された記憶レコードのコピーと共に記録することにより、このようなインデックス616を構築し、レコード内容のかなり高速な取り出しに利用することができる。さらに、ブロックチェーンブロック位置685Aへのリンクを、インデックス616内に位置する記憶レコード692のコピーと共に有するリーフハッシュBが示されており、また、記憶レコード693Aは更新され、ゆえに記憶レコード693Bにより廃止された(deprecated)ため、リーフハッシュCは、ブロックチェーンブロック位置685Cへのリンクを用いて、ホスト組織110に(例えば、ホスト組織110のデータベースシステム130内に)記憶されるインデックス616内に永続化されるブロックチェーンからの記憶レコード693Bのコピーと共に構築される。インデックス616がブロックチェーン内に保存される代替の実施形態では、インデックス616のみが取り出される必要があるため取り出し効率は依然として改善されており、これは、上述のようにその中に記憶レコードの重複コピーを有する。
【0318】
次いで、インデックス616は、ブロックチェーンを検索するより一層迅速に検索され得、あるいは、インデックス616内のリーフ又はノードについてハッシュ又はアドレスが既知である場合、アドレスは、インデックス616内のリーフ又はノードに直接行くために利用されてもよく、そこから、全ての内容がゆえに取り出され得る。例えば、アドレス又はハッシュがリーフを指し示す場合、ブロックチェーン内のアドレス指定可能ブロックの位置情報が、そのブロックチェーン位置における記憶レコードの永続化された重複コピーと共に返される。アドレス又はハッシュが、その下にサブノード又は複数のリーフを有するノードを指し示す場合、サブツリー全体が返され、ゆえに、返されたサブツリーのそれぞれのリーフ(エンドポイント)内の複数のレコードの内容が提供される。
【0319】
図6Cは、説明される実施形態による、インデックスから情報を取り出すためのアドレスを形成するためにアドレス指定構造を利用する別の例示的なアーキテクチャ603を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0320】
マークルツリーインデックス内のアドレスの構造化は、ブロックチェーン上のブロック内の記憶されたレコードのための位置情報が提供される特定のノード又はリーフと、特定の実施形態によれば、記憶されたレコードのコピーへの、かなり高速なアクセスを可能にする。構造化されたアドレスなしでは、マークルツリーインデックス616のルートで開始し、次いで、所望のノード又はリーフが見つかるまで各レベルを進むことが必要である。インデックス616のこのトラバースは、ブロックチェーンのブロックをウォーク又はトラバースするより高速であるが、ここに示されるアドレス指定構造640を介して示されるように、構造化されたアドレスを介して単一のリーフ又はノード(したがって、それはサブノード又はリーフである)を直接参照することにより、より高速なアクセスが実現される。
【0321】
ここで具体的に示されるのは、16進数字列を構成する4つの主なコンポーネントに分けられるマークルツリーインデックス616を利用するインデキシングスキームのためのアドレス指定データ構造640である。第1の部分は、特定のアプリケーションがコード化され得る例示的な6~10ビット(ただし、サイズは異なり得る)のアプリケーション名前空間を提供する。例えば、上記で論じられた学生レコードは、16進数「534c4442」にコンバートされる「SLDB」(例えば、学生ルックアップデータベース(Student Lookup DataBase))としてコード化された学生レコードルックアップAPI又はインターフェースにより定義され、関連して利用されてもよい。このアプリケーション名前空間フィールドの後に、次いで、記憶されたレコード又はメタデータエンティティ、又はメタデータとして記憶された関連エンティティなどの、記憶された情報のタイプ又は種類を識別するための例示的な3~4ビット(ただし、サイズは異なり得る)のエンティティタイプ識別子が続く。例えば、情報は、16進数「5352」にコンバートされるSRとしてコード化され得る学生レコードの内容でもよく、あるいは、情報は、16進数「4d44」にコンバートされるMDとしてコード化され得る学生レコードを定義するメタデータでもよく、あるいは、情報は、関連エンティティでもよい。特定の関連エンティティは、同じタイプ識別子(例えば、MD/4d44)を有するメタデータとして記憶され、あるいは代替的に、16進数「5245」にコンバートされる関連エンティティに対してコード化されたREであるなど、一意のエンティティタイプ識別子を有するメタデータとして記憶されてもよい。
【0322】
次に、アドレス指定構造640内には、何が記憶されているか(内容ではなく、記憶された情報の名前)を指定するための例示的な10~20ビット(ただし、サイズは異なり得る)のエンティティ又はデータレコードの名前がある。したがって、学生レコードを定義するメタデータは、16進数「5352414d4420」にコンバートされるSRAMD(例えば、学生レコードアプリケーションメタデータ(Student Record Application MetaData)の場合)としてコード化されてもよく、あるいは、記憶された情報は、学生レコード自体でもよく、したがって16進数「5354554452454320」にコンバートされるSTUDREC(例えば、学生レコード(Student Record)の場合)と命名され、あるいはおそらく、記憶された情報は、16進数「54524e534352505420」にコンバートされるTRNSCRPTと命名された学生の成績証明書が記憶されている関連エンティティであり、あるいは、記憶された情報は、関連エンティティであり得る16進数「4d454452454320」情報にコンバートされるMEDRECと命名された記憶された学生の医療記録でもよい。アドレス指定構造のそれぞれの部分の任意の余分なスペースが、アプリケーションの使用法及びそのようなデータをパースする手段に依存して、先行するゼロでパディングされてもよい。
【0323】
最後、記憶されたレコードの内容(例えば、学生のレコードを構成する値)、又はレコードを定義するメタデータ(例えば、実際の記憶された内容を定義、検証、構造化、マスク、又はタイプ付けするためのメタデータ)などの、記憶されるべき実際の情報をその中に有するアドレス指定構造の内容又はペイロード部分がある。同様に、アドレス指定構造640のペイロード又は内容部分内に、記憶されたレコード内のUUIDフィールドに対応するリンクされたUUIDを介して関連するエンティティを識別するメタデータが記憶されてもよい(例えば、学生レコードは、学生の成績証明書についてのUUIDを有する関連エンティティフィールドを含んでもよく、したがって、学生のレコードを、ブロックチェーン上の関連エンティティメタデータの記憶された資産内の学生の別個に記憶された成績証明書とリンクする)。
【0324】
アドレス指定構造640のペイロード又は内容部分内で、インデキシングスキームを利用するアプリケーション開発者は、極めて小さく効率的であるが制限的なアドレス指定構造640に対しての70ビットの合計制限から、有意に多くの情報が記憶され得る最大でnビット(例えば、使用事例に依存して数百又は数千)などの、記憶され得るもののほとんど制限されない柔軟性を有する。
【0325】
情報が16進数字列として記憶されるため、情報は容易にプロトコルバッファリングされ、シリアライズされ、暗号化され、解読され得ると共に、ネットワークにわたり効率的に伝送され、いかなる特化されたフォーマットにも関係なく異種アプリケーションにより利用され得る。
【0326】
図6Dは、説明される実施形態による、インデックスから情報を取り出すためにアドレスを利用する別の例示的なアーキテクチャ604を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0327】
ここに示されるように、クエリインターフェース180はアドレス653を提供し、これを介して、アドレスを使用してインデックスに対してクエリ652を実行し、ゆえに、どんな取り出しデータがアドレスを介してクエリされるかに依存してインデックス616のリーフ又はサブツリーのいずれかのインデックス616からの直接取り出しを可能にする。
【0328】
上記の例からのインデキシングスキーム及びアドレス構造を使用して、インデックス616のアドレスに対するクエリ652について考える。
【0329】
例えば、学生レコードルックアップAPI又はインターフェースのアプリケーション名前空間は、16進数「534c4442」にコンバートされる「SLDB」(例えば、学生ルックアップデータベース)としてコード化され、その後に、16進数「4d44」に変換されるMD(メタデータの場合)としてコード化された情報のタイプ又は種類が続き、その後に、16進数「5352414d4420」に変換されるSRAMDとしてコード化された学生レコードを定義するメタデータが続く。
【0330】
これは、534c4442+4d44+5352414d4420又は534c44424d445352414d4420のアドレスを結果としてもたらす。内容又はペイロードのアドレスを定義することは必要なく、なぜならば、これは取り出されるデータであるためだが、このようなデータは、内容又はペイロードの16進表現と連結された上記アドレスを使用してインデックスに書き込まれてもよい。
【0331】
それにもかかわらず、アドレス534c4442+4d44+5352414d4420を使用してインデックス616に対してクエリすることは、取り出されるペイロード又は内容をその中に有するマークルツリーインデックス内のリーフまでの完全修飾アドレスを提供し、それは、この場合では「SLDB」(例えば、学生ルックアップデータベース)と呼ばれるアプリケーションのメタデータであり、これは、そのアプリケーションのための学生レコードのコード化を定義する。
【0332】
同様に、学生レコードが取り出されるべき場合、アドレス534c4442(学生のルックアップデータベースの場合)+5352(SR又は学生レコードの場合)+5354554452454320を使用してインデックス616にクエリすることは、取り出される学生レコードペイロード又は内容をその中に有するマークルツリーインデックス内のリーフまでの完全修飾アドレスを提供し、それは、この場合では「SLDB」(例えば、学生ルックアップデータベース)と呼ばれるアプリケーションの学生レコード情報であり、これは、上記の取り出されたメタデータにより定義されている。学生のUUID又は学生IDが、記憶された学生レコードペイロードの先頭部分として利用される場合、アドレスは、その特定の学生のためだけの特定レコードの内容を取り出すために、さらに修飾されてもよい。
【0333】
そのようなインデキシングスキームの別の利点は、非完全修飾アドレス又は部分的アドレスを使用して情報についてクエリする能力である。例えば、上記の例を続けると、開発者は、直接取り出しのために、それらのアドレスとそれらのメタデータのエンティティタイプ識別子を指定することにより、インデックス616に部分的アドレスをサブミットすることにより、それらの特定のアプリケーションの全てのメタデータを返すようにインデックスをトリガすることができる。したがって、このような部分的アドレスは、16進数「534c4442」にコンバートされる「SLDB」(例えば、学生ルックアップデータベース)に対応するアプリケーション名前空間部分の後に16進数「4d44」にコンバートされるMD(メタデータの場合)としてコード化された記憶された情報のタイプ又は種類が続く16進数字列を形成し、ゆえに、534c4442+4d44又は単に534c44424d44を結果としてもたらす。
【0334】
この部分的アドレスを使用して直接取り出しのためにインデックス616にクエリすることは、「SLDB」(例えば、学生ルックアップデータベース)アプリケーションのための全てのメタデータを、そのようなメタデータが何と命名されているか又はそのようなデータを記憶するためにいくつのリーフ又はサブツリーが消費されているかにかかわらず、インデックスに返させることになる。より詳細には、部分的アドレスを使用してインデックス616にクエリすることは、16進数字列534c4442+4d44でハッシュされたマークルツリーインデックスのノード下のサブツリー全体を返す。同様に、全ての学生レコードは、いずれの具体的に命名された学生レコードもなく、インデックス616のクエリにアドレス534c4442(学生ルックアップデータベースの場合)+5352(SR又は学生レコードの場合)を指定するなど、直接取り出しのための部分的アドレスを指定することにより(返されるサブツリー全体を介して)取り出すことができる。
【0335】
インデックス内の内容又はペイロード情報が、ブロックチェーン内の記憶されたレコードの位置情報と、ブロックチェーンからインデックス616へコピーされた記憶されたレコードの内容との双方を含む場合、ブロックチェーンからさらに何かを取り出すことは必要ない。ブロックチェーンの指定されたブロック内のコンテンツの位置情報のみが提供される(したがって、より小さいインデックスに起因して、一層小さい記憶ボリュームとより高速な取り出しを結果としてもたらす)場合、ブロックチェーンサービスインターフェース190は、その後、位置情報を利用して、ブロックチェーン上の指定されたブロックから直接、記憶されたレコードの内容を取得し、指定された記憶レコードの検索においてブロックチェーンの複数のブロックをトラバース又はウォークする必要はない。
【0336】
図6Eは、説明される実施形態による、現在の更新を記憶するためにインデックスを使用して記憶レコードのためのブロックチェーン資産を増分的に更新する別の例示的なアーキテクチャ605を示す。この例示的なアーキテクチャにおいて、ブロックチェーン合意マネージャ191及びパーミッションマネージャ181は、
図10~
図12に関連してさらに説明される読み取り及びアクセス制御プロセスに関する合意をサポートするように動作する。
【0337】
特定の状況では、情報をブロックチェーン内に記憶することが望ましいが、ブロックチェーンストレージが、高頻度での多くの更新を伴う情報ストレージへの適合がかなり不十分であると仮定すると、記憶レコードの情報更新のボリューム及び頻度は、ブロックチェーンの使用を非実用的にする。
【0338】
ここに示されるように、多くの更新を有する入ってくるデータストリーム681がホスト組織で受信され、更新がインデックス616に書き込まれ、結果として、データストリーム更新が要素682に示されるようにインデックスを介して記憶される。次いで、周期的に、増分更新が、例えば、記憶レコードをインデックス616から取得されブロックチェーンに記憶レコードとしてプッシュされる増分更新と共に有する新しい資産を追加するためにブロックチェーンとの間でトランザクション処理することにより、ブロックチェーンに書き込まれる。例えば、記憶レコード684Aは、最初、データストリームからのデータの初期バッチによりブロックチェーン699上に記憶される。次に、さらなるデータストリーム更新がホスト組織におけるインデックス616に最初書き込まれ、ある期間の後、次いで、増分更新が再びブロックチェーンに書き込まれ、結果として、反復的な増分更新をもたらし、ここでは、増分更新684B、次いで増分更新684C、次いで増分更新684Dとして示され、以下同様である。
【0339】
例えば、ステータス、エラー、位置、イベント、構成変更などの様々なテレメトリデータを報告しているIoTデバイス(モノのインターネット(Internet of Things))デバイスからの情報ストリームの記憶について考える。そのようなデータの収集が、数百のIoTデバイスの大規模グループにスケーリングされる場合、ブロックチェーンは、データ記憶要求の頻度に起因して圧倒される可能性がある。
【0340】
しかしながら、インデックス616内に情報を記憶することは、特にインデックスがホスト組織内に記憶されるとき、この問題を克服し、なぜならば、ホスト組織のデータベースシステム130は、高頻度のデータベース更新及び相互作用を容易に収容するためである。
【0341】
したがって、それにもかかわらず、そのようなデータをブロックチェーン上で利用可能にし、ブロックチェーン上に記憶することが望ましい場合、頻度問題は、最初、多くの更新(例えば、IoTデバイス又は他のそのような更新からの)をホスト組織110内のインデックス616に直接書き込み、次いで、ブロックチェーン内のデータの永続的な記憶のためにブロックチェーンに増分更新を周期的に書き込むことにより克服され得る。例えば、IoTデバイスデータストリームは、ホスト組織110によりインデックスに収集されてもよく、次いで、24時間(又は、何らかの他の期間)毎に1回、IoTデバイスデータストリームへの増分アップデート(ブロックチェーンへの最後の更新から現在利用可能なデータまで測定される)が、ブロックチェーン上へプッシュ、フラッシュ、追加、又はトランザクション処理される。したがって、ブロックチェーンの最新ブロックは、次いで、IoTデバイスデータストリームの最新部分を永続的に記憶し、したがって、ブロックチェーンから直接アクセス可能であり、あるいは代替的に、ホスト組織においてインデックス616から利用可能である。
【0342】
特定の実施形態において、インデックスは、ブロックチェーンに増分更新を記憶することにより増分データをパージ又はフラッシュし、次いで、インデックスは、記憶された内容又はペイロード部分をインデックス616から除去し、基礎をなす記憶されたレコードの位置を特定するためのブロックチェーン上のブロック位置情報のみを保有する。言い換えると、ひとたび増分情報がブロックチェーンに書き込まれると、インデックス616は、それがブロックチェーンの特定ブロック上の増分情報を有する記憶されたレコードの位置を特定する場所を保有するようにクリーンアップされ得るが、インデックス616自体は、そのような記憶されたレコードの内容を、これらがブロックチェーン内で利用可能であるためもはや保有せず、なぜならば、かなり急速に増大するそのようなデータは、望ましくない方法でインデックスを遅くする可能性があるためである。
【0343】
全体的な変更(例えば、これまでに収集されたIoTデータストリームの全て)をその全体でブロックチェーンにプッシュすることは、増分更新の前の全てのデータがブロックチェーン内で何度も繰り返し複製されるため、問題がある。したがって、増分変更又は更新のみをブロックチェーンにプッシュすることは、記憶の目的のためのブロックチェーンの効率的な使用と、インデックス616の効率的な使用を提供し、これにより、入ってくるデータストリーム又は入ってくる高頻度更新をバッファリングすると共に、これを介し、インデックス616は、増分情報がブロックチェーン上でどこに(例えば、どのブロック内に)記憶されているかを示す位置情報の高速な識別を可能にする。
【0344】
図7Aは、説明される実施形態による別の例示的なアーキテクチャ701を示す。
【0345】
多くの顧客組織や企業は、それらが顧客の問題を解決するように市場により義務付けられているため、ネットワーク中心の方法で経営されている。したがって、無関係の企業組織を時に含む企業間で、顧客のために互いの間でデータを共有することが必要となる。
【0346】
しかしながら、理解できるように、異なる企業は互いの信頼を根本的に欠いている。ゆえに、多くの企業は、今日、それらの顧客を満足させるためにデータを共有する必要があるが、それらがデータを共有する他の企業が信頼できることを信頼することができない状況に置かれている。
【0347】
分散台帳技術とブロックチェーンプラットフォームは、上記のように、信頼の問題を具体的に解決する。これが真である理由は、ブロックチェーン上に書き込まれたデータは不変であり、その結果、更新が提供され得るが、履歴データは常にアクセス可能であり、さらに依然として、ブロックチェーンに対する全ての参加ノードは同意された合意モデルに基づいて合意に協調的に寄与するためである。これに対する例外は、上記で論じられた修正されたDLT技術であり、これについては、共有台帳(例えば、
図1Cの要素157及びそれ以降参照)がホスト組織の内部でホストされ、ホスト組織が単一かつ中央集権的な信頼オーソリティとして動作し、あるいは代替的に、信頼決定が修正DLT共有台帳インスタンス157を動作させる顧客組織に委譲され、それに従って、顧客組織は、次いで自力で、どのパートナー組織又はユーザ等が修正DLT共有台帳のデータにアクセスするための顧客組織からの同意を有するかなどの、誰がアクセス権を有するかを決定する。
【0348】
したがって、DLT技術とブロックチェーン技術の利用は具体的に、データを共有したい企業間の信頼の問題を解決すると考えられる。
【0349】
信頼の問題が大きく解決されたにもかかわらず、技術の採用を妨げる2つのさらなる障害が残っている。
【0350】
第1に、ブロックチェーンの採用は、ほとんどの企業が独自に実施するには技術的に複雑であり、極めて困難である。そのようなデータの技術的評価でさえ、しばしばテクニカルビジネスアナリストにより提供されるビジネスのニーズの理解と結び付けられたこの特定分野の専門知識と、次いで、さらなるコンピューティングインフラストラクチャの調達と、ブロックチェーンプラットフォーム及びプロトコル自体の開発か、又はビジネスのニーズを満たす既存のパブリック又はプライベートブロックチェーンの識別及びその後の参加かのいずれかとにおける適切なスキルを有する専門のコンピュータプログラマ及び開発者を必要とする。これらの開発者は、ブロックチェーン上への資産(時に「コイン」と呼ばれる)をパッケージ化及びトランザクション処理する方法と、関心のあるそれらの情報が埋め込まれている資産をノード間で転送する方法を理解し、そのようなデータをブロックチェーン上の他の参加ノードに利用可能にし、情報が共有され得るようにしなければならない。さらに依然として、企業にとって受け入れ可能な、そのようなブロックチェーンによる合意モデルがあることが必要である。これらの理由だけでも、ブロックチェーン技術の採用は、有望ではあるが多くの企業にとって乗り越えられない負担のままである。
【0351】
第2に、上述の障害が克服されたと仮定しても、ブロックチェーンに書き込まれ、ブロックチェーン内に記憶され、又はブロックチェーンにより永続化される情報についてのアプリケーションにわたるデータ標準化に重要な問題が残る。例えば、企業がブロックチェーンに対して情報をトランザクション処理することを成し遂げ、そのデータを他の企業にとってアクセス可能にしたと仮定しても、単純に、第1の企業によりブロックチェーンに書き込まれた情報が第2の企業により理解できるという保証は全くない。したがって、データを共有したい企業間のデータの輸送可能性(transportability)は、様々に利用可能なブロックチェーンプラットフォーム上に書き込まれるデータの標準化の欠如に起因して、別の重要な問題を提示する。
【0352】
ここで、
図7に示される例示的な図について考える。2つのビジネス705A及び705Bがあり、これらは、互いにデータを共有することに同意することを成し遂げており、ブロックチェーン699とトランザクション処理するのに必要な計算アーキテクチャを成功裏に実施している。
【0353】
全データ共有同意が実施されて、ビジネス705Aは、ユーザクライアントデバイス706Aで実行されるそのアプリケーション#1を介して資産を作成し、図示のように、顧客レコードをその資産714に埋め込み、これは次いで、ブロックチェーン699へトランザクション処理される。ここに示すように、アプリケーション#1は、以下の情報を有する資産を作成する。
【表1】
【0354】
注目すべきことに、このレコードでは、4つのフィールドが存在し、「First_Name」及び「Last_Name」、その後に続く、特定の桁の間にハイフン「‐」が必要とされる同様に使用される特定のフォーマットマスクを有する「Phone_Number」、並びに最後に、「E_Mail_Address」のフィールド識別子を有する電子メールアドレスが含まれる。
【0355】
次いで、様々なフィールドの各々がデータを投入される。
【0356】
次いで、作成された資産は、ブロックチェーンへ書き込まれる資産715により示されるように、ブロックチェーン699上へトランザクション処理され、いくらか後の時間に、ビジネス705Bは、その独自のアプリケーション#2を介して情報を取り出すことを選択する。
【0357】
ここに示すように、ビジネス705Bは、ブロックチェーンとの間でトランザクション処理し、取り出された資産716は、ユーザクライアントデバイス706Bで実行されているアプリケーション#2に正常に送信される。
【0358】
アプリケーション#2が、データのその独自の理解を利用してアプリケーション#2で実行されるコードを介して資産717を解釈するまで、全てうまくいくように見え、これは、以下の情報を予期する。
【表2】
【0359】
予期され得るように、アプリケーション#2は、取り出しエラーメッセージ「資産内にデータが見つかりません(No Data found in Asset)」に直面する。
【0360】
これは、アプリケーション#2が「Customer_Name」と命名されたフィールドを探したがそのようなフィールドが存在しないときの結果である。アプリケーション#2は、フィールド「Phone」をさらに探し、そのようなフィールドを見つけず、最後に「email」を検索し、再度、そのようなフィールドを見つけない。
【0361】
人間の読み手は、値「John」を有する「First_Name」がフィールド「Customer_Name」のサブ部分を表すことを容易に理解し得るが、このようなロジックは、「First_Name」と「Last_Name」の組み合わせでなく「Customer_Name」である、それらが検索するように指示された(例えば、プログラムされた)フィールド名を単に検索するアプリケーション及び計算プログラム内では、単に利用できない。
【0362】
2つのフィールドタイプ間のこのようなコンバージョンはプログラマにとって些細であるが、それぞれのビジネスの各々による2つのアプリケーションは単に互換性がないという事実に変わりはなく、それらが互換的にされるべき場合、これらのフィールドのカスタム翻訳がプログラムされる必要がある。
【0363】
基本的に、このデータの転送不可能性(non-transferability)は、データ標準化の欠如に起因している。2つの区別可能なアプリケーションエンティティは各々、ブロックチェーンに書き込み、それから取り出すことを可能にされ、そのようなデータを共有するためにビジネス間で同意が実施されているが、2つのエンティティアプリケーションはデータを共有する能力を欠いており、なぜならば、何が顧客の名前を構成するかの定義がないためである。1つのアプリケーションは、これが「First_Name」フィールドと「Last_Name」フィールドの組み合わせであることを予期するが、別のアプリケーションは、顧客のフルネームに対する単一フィールドとしてフィールド「Customer_Name」が利用されることを予期している。
【0364】
図7Bは、説明される実施形態による別の例示的なアーキテクチャ702を示す。
【0365】
詳細には、次に、アプリケーションにより利用されるデータのためのメタデータを定義するブロックチェーン管理者が示され、これは次いで、2つのビジネス、ビジネス705A及びビジネス705Bのためにブロックチェーンに書き込まれるデータを標準化する。
【0366】
ここに示されるように、ブロックチェーン管理者は、統合ビルダのGUIを介して、又は統合ビルダのAPIを介してメタデータを定義し、定義されたメタデータ721は、次いで、指定されたブロックチェーン799上へプッシュされる。
【0367】
次に、ブロックチェーン上へトランザクション処理される、明確に定義されたメタデータが存在し、これは、宣言されたアプリケーション「ApplicationXYZ」と、具体的に「Customer_Record」の要件を規定し、これは次に、定義されたメタデータにより以下のように構造化される。
【表3】
【0368】
定義されたメタデータ721はブロックチェーン上へトランザクション処理されるため、ブロックチェーン799上のデータレコードにアクセスするためのパーミッションを有するいかなるアプリケーションも、定義されたメタデータ721により規定された要件に準拠してデータを読み書きすることができる。これは、具体的に宣言されたアプリケーション「ApplicationXYZ」でもよく、あるいはこれは、宣言されたアプリケーションにより生成又は管理されたデータを利用する他のアプリケーションでもよい。任意のアプリケーションが、定義されたメタデータ721を読み出し、要件に準拠して動作することができる。
【0369】
図7Cは、説明される実施形態による別の例示的なアーキテクチャ703を示す。
【0370】
詳細には、次に、ビジネス705A及び705Bが、ブロックチェーン799上へトランザクション処理されたデータを共有可能にされることが示される。定義されたメタデータ721がそのようなデータをフォーマットするための要件を規定しているため、ブロックチェーン799に書き込まれブロックチェーンから取り出されるデータは既知のフォーマットを具現化し、したがって、様々なビジネス間で転送可能になる。
【0371】
ここに示されるように、ブロックチェーン管理者はブロックチェーンサービスインターフェース190を介してメタデータを定義し、これはブロックチェーンにトランザクション処理され、次いでその後、ビジネス705Aがアプリケーション#1を介して資産714を作成し、それは顧客レコードの詳細を有するその資産をブロックチェーンに書き込む。その後、ビジネス705Bがブロックチェーンから資産を取り出し、資産がビジネス705Bで実行されているアプリケーション#2を介して解釈されるとき(717)、そのデータはアプリケーションにより成功裏に解釈及び理解され、なぜならば、顧客レコードデータに対して既知の定義されたメタデータ構造が存在するためである。
【0372】
したがって、特定の実施形態によれば、新しいアプリケーションを宣言し、新しいアプリケーションのために定義されたメタデータをブロックチェーン上へトランザクション処理するホスト組織のシステムによる動作がある。例えば、そのような動作は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させることを含んでもよく、複数のテナントの各テナントは、ブロックチェーンへのアクセスを有する参加ノードとして動作する。このような動作は、システムと通信上インターフェースされたユーザデバイスから、新しいアプリケーションを宣言する第1の入力を受信することをさらに含んでもよい。このような動作は、新しいアプリケーションのために複数のネットワーク参加者を追加するユーザデバイスからの第2の入力を受信することをさらに含んでもよく、ネットワーク参加者は、新しいアプリケーションへのアクセス権を付与される。このような動作は、新しいアプリケーションのための複数のエンティティタイプを宣言するユーザデバイスからの第3の入力を受信することをさらに含んでもよい。このような動作は、複数のエンティティタイプの各々について1つ以上の新しいフィールド定義を宣言するユーザデバイスからの第4の入力を受信することをさらに含んでもよい。このような動作は、新しいアプリケーションのために定義されたメタデータとして少なくとも(i)宣言された複数のネットワーク参加者、(ii)宣言された複数のエンティティタイプ、及び(iii)複数のエンティティタイプの各々について宣言された1つ以上の新しいフィールド定義をその中に符号化されたブロックチェーン資産を生成することをさらに含んでもよい。このような動作は、ブロックチェーン上へ新しいアプリケーションのために定義されたメタデータをその中に符号化されたブロックチェーン資産をトランザクション処理することをさらに含んでもよい。
【0373】
別の実施形態の動作によれば、ブロックチェーン資産は定義されたトランザクションタイプを有し、これにおいて、定義されたメタデータをその中に符号化されたブロックチェーン資産の定義されたトランザクションタイプは、新しいアプリケーションのために定義されたメタデータを、新しいアプリケーションのためにブロックチェーン上へトランザクション処理された任意のデータのデータ検証を実行するためのスマートコントラクトに関連づけ、これにおいて、スマートコントラクトは、新しいアプリケーションのためにブロックチェーン上へトランザクション処理されたデータが、ブロックチェーン上へトランザクション処理された新しいアプリケーションのために定義されたメタデータに準拠していることを検証する。
【0374】
別の実施形態によれば、このような動作は、新しいアプリケーションのためのデータを指定するブロックチェーンにおけるトランザクションを受信することと、新しいアプリケーションのためのデータを指定する受信したトランザクションに基づいてスマートコントラクトをトリガすることと、スマートコントラクトを実行して、新しいアプリケーションのために指定されたデータが新しいアプリケーションのために定義されたメタデータに準拠していることを検証することをさらに含んでもよく、これにおいて、トランザクションは、指定されたデータが新しいアプリケーションのために定義されたメタデータに準拠していない場合、拒絶される。
【0375】
別の実施形態の動作によれば、ブロックチェーン上へブロックチェーン資産をトランザクション処理することは、トランザクションのペイロードデータとして新しいアプリケーションのために定義されたメタデータ指定する、ブロックチェーン上の新しいブロックへのトランザクションを追加することと、追加されたトランザクションにブロックチェーンの参加ノードによる合意を受けさせる(subjecting)ことであり、追加されたトランザクションは、追加されたトランザクションがブロックチェーンの参加ノードによりブロックチェーンのプライマリチェーンの一部として受け入れられる前にブロックチェーンの参加ノードによる合意プロトコルを受ける(subjected to)ことを含み、これにおいて、新しいアプリケーションのために定義されたメタデータは、追加されたトランザクションの成功裏の合意に従ってブロックチェーンの新しいブロック上の受け入れられたトランザクション内に永続化される。
【0376】
別の実施形態によれば、このような動作は、システムにおいて新しい入力を受信することであり、新しい入力は第2の新しいアプリケーションを宣言することと、第1の新しいアプリケーションのために宣言された複数のエンティティタイプのうちの1つを第2の新しいアプリケーションのために選択されたエンティティタイプとして選択する、システムにおけるさらなる入力を受信することであり、選択されたエンティティタイプは、第1の新しいアプリケーションに関連づけられたそれぞれの1つ以上のエンティティタイプのために定義されたメタデータを介して指定された1つ以上の新しいフィールド定義を継承する。
【0377】
別の実施形態の動作によれば、複数の異なる宣言されたアプリケーションは、第1の新しいアプリケーションのために宣言された複数のエンティティタイプのうちの少なくとも1つを、複数の異なる宣言されたアプリケーションのために選択されたエンティティタイプとして指定し、これにおいて、第1の新しいアプリケーションのために宣言された複数のエンティティタイプのそれぞれのエンティティタイプに対応する定義されたメタデータの単一のインスタンスと、第1の新しいアプリケーションのために宣言されたそれぞれのエンティティタイプに関連づけられた1つ以上の新しいフィールド定義の全てが、(i)第1の新しいアプリケーションのために宣言された複数のエンティティタイプのそれぞれのエンティティタイプと、(ii)第1のアプリケーションのために宣言されたそれぞれのエンティティタイプを選択した、複数の異なる宣言されたアプリケーションの全てのための選択されたエンティティタイプとの双方を制御する。
【0378】
別の実施形態の動作によれば、複数のエンティティタイプの各々について1つ以上の新しいフィールド定義を宣言するユーザデバイスからの第4の入力を受信することは、1つ以上の新しいフィールド定義の各々についてフィールド定義タイプを定義する第4の入力を受信することをさらに含み、各フィールド定義タイプは、整数、ブーリアン、数字、英数字、日付、ハイパーリンク、計算されたもの、又はカスタムを含むグループから選択される。
【0379】
別の実施形態によれば、このような動作は、ユーザデバイスを複数のテナントのうちの1つに関連づけられるものとしてホスト組織を用いて認証することをさらに含み、複数のテナントのうちの1つは、パブリックインターネットを通じてホスト組織により提供されるクラウドベースのオンデマンドサービスのサブスクライバである。
【0380】
別の実施形態によれば、このような動作は、イベントリスナを実行して、新しいアプリケーションに関連づけられたブロックチェーンに対する変更を監視することと、新しいアプリケーションに関連づけられたブロックチェーンに対する変更がイベントリスナにより観測されたときイベントをトリガすることをさらに含んでもよい。
【0381】
別の実施形態によれば、このような動作は、宣言された新しいアプリケーションのためのイベント及び1つ以上の観測イベント条件を宣言するユーザデバイスからの第5の入力を受信することであり、宣言されたイベントは、(i)ブロックチェーンにおけるイベントの発生に応答してホスト組織において実行されるプロセスフロー、又は(ii)ブロックチェーンにおけるイベントの発生に応答してホスト組織の内部のデータベースシステムに対して実行されるデータベーストランザクション、のうちの1つを指定することと、イベントリスナを介して、指定されたイベント及び1つ以上のイベント条件を満たすブロックチェーンに対する変更を監視することをさらに含んでもよい。
【0382】
別の実施形態の動作によれば、各ネットワーク参加者は、新しいアプリケーション及び新しいアプリケーションに関連づけられたブロックチェーン上のデータへのアクセス権を付与される。
【0383】
別の実施形態の動作によれば、複数のネットワーク参加者の各々は、ホスト組織の複数のテナントのうちの1つに関連づけられたホスト組織のユーザと、ホスト組織の複数のテナントのうちの1つに対応するパートナーユーザと、ホスト組織の複数のテナントのうちの1つに対応する顧客組織と、ホスト組織の非ユーザと、ホスト組織の複数のテナントのうちの1つではないパートナー組織と、ホスト組織のテナント又はホスト組織からのクラウドコンピューティングサービスをサブスクライブする顧客組織のいずれかに対応するブロックチェーン上の1つ以上の参加ノードと、ホスト組織からのクラウドコンピューティングサービスをサブスクライブしていないブロックチェーン上の1つ以上の参加ノードと、を含むグループの中から選択される。
【0384】
別の実施形態の動作によれば、アプリケーションを宣言するユーザデバイスからの第1の入力を受信することは、宣言された新しいアプリケーションのための第1の入力で、新しいアプリケーションのための指定された管理制御又は宣言された新しいアプリケーションの所有権のうちの一方又は双方を受信することをさらに含む。
【0385】
別の実施形態によれば、このような動作は、宣言された新しいアプリケーションと新しいアプリケーションのために定義されたメタデータをブロックチェーン上へデプロイする命令を受信することをさらに含んでもよく、ブロックチェーン上へ新しいアプリケーションのために定義されたメタデータをその中に符号化されたブロックチェーン資産をトランザクション処理することは、デプロイする命令を受信することに応答してブロックチェーンを介して新しいアプリケーションと定義されたメタデータをデプロイすることを含む。
【0386】
別の実施形態の動作によれば、(i)宣言された複数のネットワーク参加者、(ii)宣言された複数のエンティティタイプ、及び(iii)複数のエンティティタイプの各々について宣言された1つ以上の新しいフィールド定義、の各々を定義する入力を受信することは、ホスト組織により公開されたブロックチェーンメタデータ定義マネージャにおけるAPIを介してプログラミングコードとして入力を受け取ることを含む。
【0387】
別の実施形態によれば、このような動作は、ブロックチェーンメタデータ定義マネージャからユーザデバイスにGUIを送信することをさらに含んでもよく、これにおいて、GUIは、(i)宣言された複数のネットワーク参加者、(ii)宣言された複数のエンティティタイプ、及び(iii)複数のエンティティタイプの各々について宣言された1つ以上の新しいフィールド定義、の各々を定義する入力を促し(prompts)、入力は、1つ以上のインタラクティブなクリックイベント、ドラッグイベント、ドロップダウン選択イベント、テキスト入力イベント、及びタッチイベントを介してGUIにおいて受け取られ、入力を受信することは、ユーザデバイスに送信されたGUIから入力を受け取ることを含む。
【0388】
別の実施形態の動作によれば、ブロックチェーンのブロックチェーンプロトコルはホスト組織により定義され、さらに、ホスト組織は、ブロックチェーン上の参加ノードとして動作するホスト組織の複数のテナントに対してブロックチェーンへのアクセスを許可し、あるいは代替的に、ブロックチェーンのブロックチェーンプロトコルは、ホスト組織以外の第三者のブロックチェーンプロバイダにより定義され、さらに、ホスト組織も、ホスト組織がブロックチェーンへのアクセスを有するブロックチェーン上の参加ノードとして動作する。
【0389】
別の実施形態によれば、このような動作は、新しいアプリケーションに関連づけられたデータを要求するSQLクエリを受信インターフェースにおいて受信することと、ホスト組織におけるApexトランスレータエンジンを介してSQLクエリをネイティブブロックチェーン実行可能コードに翻訳することと、ブロックチェーンに対してネイティブブロックチェーン実行可能コードを実行して、要求されたデータを取り出すことと、SQLクエリの受信に応答して要求されたデータを返すことをさらに含んでもよい。
【0390】
別の実施形態によれば、このような動作は、ホスト組織のデータベースシステム内で仮想テーブルを生成することと、新しいアプリケーションのために宣言されたメタデータに基づいてホスト組織のデータベースシステムに仮想テーブルを構造化することをさらに含んでもよく、これにおいて、エンティティタイプは仮想テーブル内のテーブルとして表現され、さらに、新しいアプリケーションのための複数のさらなるエンティティタイプの各々について宣言された1つ以上の新しいフィールド定義は、仮想テーブルにおいてテーブル内の列として表現される。
【0391】
別の実施形態の動作によれば、仮想テーブルは、新しいアプリケーションのために宣言されたメタデータに基づいて構造化された、ホスト組織のデータベースシステムにホストされたマテリアライズドビューを含み、ホスト組織のデータベースシステムにホストされたマテリアライズドビューは、新しいアプリケーションに関連づけられたデータを記憶せず、読取専用アクセスを要求するSQLクエリは、ブロックチェーンから新しいアプリケーションに関連づけられた要求されたデータを取り出すために読取専用SQLクエリをブロックチェーントランザクションに変換することにより、マテリアライズドビューに対して処理される。
【0392】
別の実施形態によれば、このような動作は、新しいアプリケーションのために宣言された複数のエンティティタイプと、複数のエンティティタイプの各々について宣言された1つ以上の新しいフィールド定義と、1つ以上の新しいフィールド定義に適用される任意のフィールドタイプとを含む、新しいアプリケーションのために定義されたメタデータをブロックチェーンから取り出すことと、新しいアプリケーションのために定義されたメタデータに基づいて仮想テーブルを構造化することにより、ホスト組織における仮想テーブル内にブロックチェーンで永続化されるデータのマテリアライズドビューを生成することをさらに含んでもよく、マテリアライズドビューは、ホスト組織におけるマテリアライズドビュー内に新しいアプリケーションに関連づけられたデータを記憶することなく、ブロックチェーンに永続化される新しいアプリケーションに関連づけられたデータの構造を表す。
【0393】
別の実施形態によれば、このような動作は、ホスト組織において、ユーザデバイスからSQL文を受信することであり、SQL文はマテリアライズドビューに向けられ、ブロックチェーンに永続化され及び新しいアプリケーションに関連づけられたデータのためのSQL update又はSQL insertを要求することと、ブロックチェーンにおいて新しいアプリケーションに関連づけられたデータを更新又は追加するために、SQL update又はSQL insertを要求するSQL文を対応するブロックチェーントランザクションに翻訳することにより、マテリアライズドビューに対してSQL文を処理することと、対応するブロックチェーントランザクションがブロックチェーンに対する合意により受け入れられ、ブロックチェーンにおいて新しいアプリケーションに関連づけられたデータを成功裏に更新又は追加したことに従って、マテリアライズドビューに対するSQL文の成功裏の処理を確認する確認応答をユーザデバイスに発行することをさらに含んでもよい。
【0394】
別の実施形態によれば、このような動作は、ホスト組織におけるマテリアライズドビューに向けられたSQL文を受信することをさらに含んでもよく、これにおいて、SQL文は、(i)SELECT from SQL文、(ii)INSERT into SQL文、及び(iii)UPDATE set SQL文のうちの1つ以上を指定し、受信したSQL文は、SQL文を対応するブロックチェーントランザクションに翻訳し、ホスト組織におけるマテリアライズドビューに向けられたSQL文の履行においてブロックチェーンに対して対応するブロックチェーントランザクションを実行することにより処理される。
【0395】
別の実施形態によれば、このような動作は、新しいアプリケーションのために定義されたメタデータが、ブロックチェーンにおける資産を一緒にリンクすることにより複数のエンティティタイプのうちの2つ以上の間のユーザ指定の関係を表すことをさらに含んでもよい。
【0396】
別の実施形態によれば、このような動作は、ホスト組織において、新しいアプリケーションのための新しいビジネスロジックを、新しいビジネスロジックの要素と新しいアプリケーションの複数のエンティティタイプのうちの1つ以上との間の1つ以上の関係を有するテーブル構造内に宣言することと、ブロックチェーンに永続化されたメタデータ内の全ての関係を新しいビジネスロジックを定義することをさらに含んでもよい。
【0397】
別の実施形態によれば、このような動作は、イベントリスナを実行して、ブロックチェーンにおける新しいアプリケーションのために定義されたメタデータに対する変更を監視することと、ブロックチェーンにおける新しいアプリケーションのためのメタデータに対する変更がイベントリスナにより観測されたときイベントをトリガすることと、をさらに含んでもよく、トリガされたイベントは、イベントリスナによりトリガされたメタデータ更新に基づいてホスト組織におけるマテリアライズドビューを再構造化することにより、新しいアプリケーションに関連づけられたデータのマテリアライズドビューを更新するためにホスト組織へのメタデータ更新を自動的にプッシュする。
【0398】
別の実施形態の動作によれば、新しいアプリケーションのためのメタデータに対する変更に基づいてイベントリスナを介してイベントをトリガすることは、ブロックチェーンに永続化された定義されたメタデータに対する変更に応答して実行するビジネスユーザ定義のプロセスフロー、ブロックチェーンに永続化された定義されたメタデータに対する変更に応答して実行するビジネスユーザ定義のデータ取り出し動作、ブロックチェーンに永続化された定義されたメタデータに対する変更に応答して実行するビジネスユーザ定義のデータフィルタリング動作、ブロックチェーンに永続化された定義されたメタデータに対する変更に応答してデータ分析フィードを更新する管理者定義のプロセスフロー、及びブロックチェーンに永続化された定義されたメタデータに対する変更に応答して人工知能(AI)訓練データストリームを更新する管理者定義のプロセスフロー、のうちの1つ以上をトリガすることをさらに含む。
【0399】
特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令が少なくともプロセッサ及びメモリをその中に有するシステムのプロセッサにより実行されると、命令はシステムに動作を実行させ、該動作は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させることであり、複数のテナントの各テナントは、ブロックチェーンへのアクセスを有する参加ノードとして動作することと、システムと通信上インターフェースされたユーザデバイスから、新しいアプリケーションを宣言する第1の入力を受信することと、新しいアプリケーションのために複数のネットワーク参加者を追加するユーザデバイスからの第2の入力を受信することであり、ネットワーク参加者は、新しいアプリケーションへのアクセス権を付与されることと、新しいアプリケーションのための複数のエンティティタイプを宣言するユーザデバイスからの第3の入力を受信することと、複数のエンティティタイプの各々について1つ以上の新しいフィールド定義を宣言するユーザデバイスからの第4の入力を受信することと、新しいアプリケーションのために定義されたメタデータとして少なくとも(i)宣言された複数のネットワーク参加者、(ii)宣言された複数のエンティティタイプ、及び(iii)複数のエンティティタイプの各々について宣言された1つ以上の新しいフィールド定義をその中に符号化されたブロックチェーン資産を生成することと、ブロックチェーン上へ新しいアプリケーションのために定義されたメタデータをその中に符号化されたブロックチェーン資産をトランザクション処理することを含む。
【0400】
さらに別の実施形態によれば、ホスト組織において実行するシステムがあり、当該システムは、命令を記憶するメモリと、命令を実行するプロセッサであり、プロセッサは、ホスト組織の複数のテナントのためにブロックチェーンサービスインターフェースを実行し、複数のテナントの各々はブロックチェーンへのアクセスを有する参加ノードとして動作する、プロセッサと、システムと通信上インターフェースされたユーザデバイスから第1の入力を受信する受信インターフェースであり、受信インターフェースはさらに、新しいアプリケーションのために複数のネットワーク参加者を追加するユーザデバイスからの第2の入力を受信し、ネットワーク参加者は、新しいアプリケーションへのアクセス権を付与され、受信インターフェースはさらに、新しいアプリケーションのための複数のエンティティタイプを宣言するユーザデバイスからの第3の入力を受信し、受信インターフェースはさらに、複数のエンティティタイプの各々について1つ以上の新しいフィールド定義を宣言するユーザデバイスからの第4の入力を受信する、受信インターフェースと、新しいアプリケーションのために定義されたメタデータとして少なくとも(i)宣言された複数のネットワーク参加者、(ii)宣言された複数のエンティティタイプ、及び(iii)複数のエンティティタイプの各々について宣言された1つ以上の新しいフィールド定義をその中に符号化されたブロックチェーン資産を生成するブロックチェーンサービスインターフェースであり、ブロックチェーンサービスインターフェースはさらに、ブロックチェーン上へ新しいアプリケーションのために定義されたメタデータをその中に符号化されたブロックチェーン資産をトランザクション処理する、ブロックチェーンサービスインターフェースと、を含む。
【0401】
システムの実施形態によれば、受信インターフェースはさらに、宣言された新しいアプリケーションのためのイベント及び1つ以上の観測イベント条件を宣言するユーザデバイスからの第5の入力を受信し、宣言されたイベントは、(i)ブロックチェーンにおけるイベントの発生に応答してホスト組織において実行されるプロセスフロー、又は(ii)ブロックチェーンにおけるイベントの発生に応答してホスト組織の内部のデータベースシステムに対して実行されるデータベーストランザクション、のうちの1つを指定し、システムは、イベントリスナをさらに含み、イベントリスナは、指定されたイベント及び1つ以上のイベント条件を満たすブロックチェーンに対する変更を監視し、ブロックチェーンでの監視された変更に応答して宣言されたイベントをトリガする。
【0402】
図8Aは、説明される実施形態による別の例示的なアーキテクチャ801を示す。
【0403】
ここに示すように、ブロックチェーン管理者のユーザデバイスなどのコンピューティングデバイス899で実行されるGUI810があり、GUI810は、ホスト組織のブロックチェーンメタデータ定義マネージャ196によりコンピューティングデバイス800にプッシュされる。
【0404】
ここに示されるように、ブロックチェーン管理者は、GUI810の上部に示されているようにデプロイされたアプリケーション(deployed applications)を見ることができ、GUI810における「新規(new)」ボタンをクリックすることにより、宣言型機能が、ブロックチェーン管理者が新しいアプリケーションを宣言するために提供される。ここで示されるのは、GUI810を介した新しいアプリケーションの宣言であるが、ブロックチェーン管理者は代替的に、ブロックチェーンメタデータ定義マネージャ196を介して提供されるAPIを利用して新しいアプリケーションを作成してもよい。
【0405】
図8Bは、説明される実施形態による別の例示的なアーキテクチャ802を示す。
【0406】
新しいアプリケーションの宣言に追加で、又は新しいアプリケーションを宣言すると、さらに、ブロックチェーン管理者はどのような参加者がこの特定のアプリケーションに関連づけられたデータへのアクセスを有するかを定義する能力を有し、ゆえに、この新たに宣言されたアプリケーションに対するネットワーク参加者を定義する。
【0407】
図8Cは、説明される実施形態による別の例示的なアーキテクチャ803を示す。
【0408】
GUI810が再び示されているが、次に示されるのは、ブロックチェーン管理者が「銀行レコードアプリケーション(bank record application)」のためのエンティティをそのアプリケーションをクリックすることにより閲覧及び編集することである。
【0409】
このように、ブロックチェーン管理者は最初、新しい「アプリケーション」を宣言又は作成し、次いで、ひとたび作成されると、ブロックチェーン管理者は、そのアプリケーションを編集又は閲覧することができ、アプリケーション内の新しい「エンティティ」を作成又は宣言することができ、各宣言型エンティティは、特定のカスタムフィールドのためのメタデータを定義し、その中で、アプリケーションは、定義されたメタデータに準拠する情報を最終的に記憶することができ、また、他のアプリケーションもそのようなデータと相互作用し、そのようなデータを参照し、可能性として、適切なパーミッションが存在する場合にそのようなデータを更新、追加、又は削除することができ、ただし再びになるが、定義されたメタデータに準拠してそのようにする。
【0410】
例えば、銀行レコードアプリケーションについてここでは、エンティティ名「Auto_Claim」を有する「claim」が定義されており、したがって、クレーム(claims)に属するブロックチェーンに対する情報を書き込むことを望むアプリケーションは、少なくともそのような情報が銀行レコードアプリケーションにより利用される範囲で、定義されたエンティティ「Auto_Claim」の要件に準拠することが必要である。
【0411】
図8Dは、説明される実施形態による別の例示的なアーキテクチャ804を示す。
【0412】
ここに示されているのは、ブロックチェーン管理者が新たに作成されたアプリケーション内又は表示されたアプリケーション内で新しいエンティティを宣言及び作成するために前の画面で「新規(new)」ボタンをクリックしたことから生じるGUI810である。
【0413】
ここに示すように、「新規エンティティ定義(New Entity Definition)」GUIが提示されており、ブロックチェーン管理者はここで、エンティティ名、エンティティラベルを入力し、エンティティの所有者を選択することにより新しいエンティティを作成することができ、この所有者はデフォルトでは、エンティティを作成しているユーザである。次いで、「保存(save)」をクリックすることにより、この新しいエンティティを作成し、宣言する。ブロックチェーン管理者はさらに、ステータスを「デプロイ済み(deployed)」に変更することができ、ひとたび保存されると、エンティティはブロックチェーン上へトランザクション処理されるが、ドラフト(draft)ステータスでは、それはホスト組織のブロックチェーンメタデータ定義マネージャ196でのみ保有される。
【0414】
特定の実施形態によれば、あらゆるGUIは、ブロックチェーンメタデータ定義マネージャ196と相互作用するための対応するAPIを有する。
【0415】
図8Eは、説明される実施形態による別の例示的なアーキテクチャ805を示す。
【0416】
図8Dに示される先行GUI810でちょうど作成されたエンティティを含む既存のエンティティをクリックすると、フィールド定義(Field Definition)GUIが提示される結果となり、これを介して、ブロックチェーン管理者はここで、その特定のエンティティ内に記憶される任意の数のフィールドを作成することができる。
【0417】
類推として、宣言されたアプリケーションを、クラウドを介して実行されるものではあるがコンピュータプログラムとして考え、宣言型エンティティを、関係データベース内のテーブルに相当するテーブルとして考え、最後に、宣言型フィールドを、テーブル内の列識別子又は投入可能な(populatable)フィールドとして考えることは役立つ可能性があり、最後、フィールドの集合は、レコードを形成することになる。比較は正確ではないが、様々な宣言型要素とそれらのために定義されたメタデータとの関係は、それらの使用を説明するのに役立つはずである。
【0418】
定義されたメタデータは、どんなデータが許容されるかと、そのデータのフォーマット及びタイプを正確に規定しているため、許可されたアプリケーションは、メタデータにより規定された予測可能かつ予め定義されたフォーマットでブロックチェーンに情報を成功裏に書き込むことができ、さらに、それらが共有しているアプリケーションも、ブロックチェーンから情報を成功裏に取り出すことができ、定義されたメタデータに基づいて、その情報がどのように見え、構造化されることになるか、したがってその情報がどのように解釈されるべきかが分かる。
【0419】
情報がメタデータを介してブロックチェーン内に定義されるため、全ての参加者は、定義されたメタデータに基づいてデータの各要素が何を意味するかが分かり、したがって、参加者のそのネットワークでは、全ての参加ノードがブロックチェーンを介して情報を共有することができる。
【0420】
さらに、参加者は、ブロックチェーン上へトランザクション処理された既存のメタデータに制限されず、さらなる要素を作成する、新しいメタデータ定義を作成する、メタデータ定義を改変する等を行ってもよい。
【0421】
例えば、銀行ウェルズファーゴは、それらが参加者として、フィールドX、Y、及びZを有する新しいエンティティを必要とすると決定し得る。したがって、参加者は、フィールドX、Y、及びZを有する新しいエンティティのためのそのメタデータを(API又はGUIを介して)定義し、次いで、ブロックチェーン上へその新しいエンティティをトランザクション処理することができる。
【0422】
その後、新しいエンティティは、他の参加ノードによる合意を受ける。他の参加ノードが同意しない場合、合意が達せられず、その変更は否定される。しかしながら、合意が達せられた場合、フィールドX、Y、及びZを有する新しいエンティティは、合意ブロック内にブロックチェーン上へのその新しいエンティティのために定義されたメタデータを書き込むことによりブロックチェーン上へトランザクション処理され、あるいは言い換えると、ブロックチェーン上へすでに書き込まれたエンティティは、ひとたび合意が獲得されると、ブロックチェーン上の「プライマリ」チェーンの一部になり、これは、全ての参加者によりメインチェーンとして受け入れられる。
【0423】
別の実施形態によれば、スマートコントラクトは、定義されたメタデータを有するエンティティのためにブロックチェーン上にデータを書き込もうとし又は更新しようとするブロックチェーン上のトランザクションに対して実行される。例えば、スマートコントラクトの実行を引き起こすトリガが存在し得、その場合、スマートコントラクトは、定義されたメタデータを取り出すか又は適用して、エンティティ内のあらゆるフィールドが定義されたメタデータの要件に準拠しているデータタイプ、データ命名準拠、及び日付マスクを有することを検証する。
【0424】
スマートコントラクトが定義されたメタデータを強制する場合、準拠に失敗したトランザクションは、ブロックチェーン上へトランザクション処理されることを禁止されるか、あるいはブロックチェーンに書き込まれた場合、トランザクションはメインチェーン上のブロックに決して受け入れられず、なぜならば、スマートコントラクト検証失敗は、トランザクションが受け入れの合意に達することを妨げるためである。
【0425】
したがって、説明されたGUIの使用により、プログラミング及びプログラム開発の専門知識を欠くビジネスユーザがそれにもかかわらず新しいアプリケーションを宣言し、新しいエンティティ名を宣言すると共に、それらのエンティティ名のための新しいフィールド定義を宣言的に作成することが可能である。より多くの技術的な専門知識を有する人については、彼らがそのようにすることが望ましい場合、APIを利用してブロックチェーンのメタデータ定義マネージャ196と相互作用することができる。
【0426】
選択された方法にかかわらず、ブロックチェーン管理者は、新しいアプリケーション、新しいエンティティ、及び新しいフィールド定義を、全てコードを全く書くことなく宣言的に作成することができ、次いで、ブロックチェーンメタデータ定義マネージャ196は、新しいアプリケーション、新しいエンティティ、及び/又は新しいフィールド定義のために定義されたメタデータを投票及び合意のためにブロックチェーン上へトランザクション処理する。
【0427】
合意が達せられるまで、定義されたメタデータは利用できない。しかしながら、ひとたびブロックチェーン上へトランザクション処理され、合意が達せられると、ブロックチェーン上の他の参加ノード又は参加者は、宣言されたアプリケーションの全てのデータと相互作用することができ、ブロックチェーンサービスインターフェース190によるスマートコントラクト実行は、これらの相互作用との準拠を強制し、あるいは義務付ける。
【0428】
図8Fは、説明される実施形態による別の例示的なアーキテクチャ806を示す。
【0429】
ここで示されるのは、アプリケーションを定義し、エンティティを宣言し、様々な定義されたフィールドを宣言するために、ブロックチェーン管理者の宣言型アクションのために作成された生成コードであり、結果として、ブロックチェーン管理者によりコードが書かれていないにもかかわらず、API準拠コードが定義されたメタデータ内に表現される。他の実施形態において、プログラマ又は開発者は、このコードを生成するためにAPIを利用することを選択してもよく、その場合、GUIは、コード化されたエンティティ及びコード化された定義されたフィールドを、それらが元々GUIを介して宣言されたかのように反映することになる。
【0430】
したがって、開示されたプラットフォームは、ブロックチェーンとの間でトランザクション処理し、ブロックチェーンと相互作用し、アプリケーション及びそのアプリケーションのためのエンティティを定義及び宣言し(これは、以下で論じられるようにマテリアライズドビューを介してデータベースシステム内のテーブルとして示され得る)、さらに、各エンティティのための新しいフィールド定義を定義及び宣言し、さらに、宣言されたアプリケーションを利用することができる許容可能なネットワーク参加者を定義するための必要なコードの作成を可能にする。
【0431】
このような方法で、宣言型メタデータプラットフォームは、ブロックチェーン管理者のために全ての重労働を実行し、非プログラマは、一連のGUIを通じてのポイント及びクリック動作のみを用いることにより、新たに宣言されたアプリケーションのためにブロックチェーンと相互作用するための全ての必要なコードを作成することができる。
【0432】
さらに、アプリケーションの構成、及び許可されたネットワーク参加者、並びに新しい宣言型エンティティ及び新しい宣言型フィールド定義は、ブロックチェーン管理者になじみのある方法で提示され、なぜならば、様々な要素が、データベースエントリ及びデータベーステーブルが作成されていない事実にもかかわらず、データベーステーブル、列、フィールド、及びレコード等として考えられ得るためである。その代わりに、情報は、資産としてブロックチェーン上へトランザクション処理され、一方、ブロックチェーン管理者は、基礎をなすブロックチェーンに対してトランザクション処理する方法、又はブロックチェーン上の資産を追加及び更新又は移転する方法をブロックチェーン管理者が理解する知識又は要件なく、プロセス全体を通じてそれらの方法をポイント及びクリックすることができる。したがって、開示された実施形態の実施は、ブロックチェーン管理者として運用する非プログラマユーザの側の複雑さを大幅に低減する。
【0433】
それにもかかわらず、ブロックチェーンのプログラミング知識及び理解を有するより洗練されたユーザについては、同じコードが、ホスト組織により提供されるブロックチェーンサービスインターフェース190、具体的にはブロックチェーンメタデータ定義マネージャ196により公開されたAPIを介して書き込まれ、生成されてもよい。
【0434】
図9Aは、説明される実施形態による別の例示的なアーキテクチャ901を示す。
【0435】
ここに示すように、ブロックチェーン管理者は、定義されたメタデータ910をブロックチェーン上へトランザクション処理し、これは推定上、ひとたび合意が達せられると受け入れられ、次に、パートナーユーザが、メタデータ準拠トランザクション915をブロックチェーン上へトランザクション処理する。
【0436】
さらにここで示されるのは、マテリアライズドビュー920であり、これは、ホスト組織ユーザ925が、ホスト組織110を介して利用可能なアクセス可能クラウドプラットフォーム186から、メタデータ準拠トランザクション915を介してブロックチェーン上へトランザクション処理されたデータと相互作用することを可能にする。
【0437】
コンピューティングにおいて、マテリアライズドビュー920は、クエリの結果を含むデータベースオブジェクトである。例えば、マテリアライズドビュー920は、リモートに位置するデータのローカルコピーでもよく、あるいはテーブル又はjoin結果の行及び/又は列のサブセットでもよく、あるいは集約関数を使用するサマリでもよい。
【0438】
マテリアライズドビューを設定するプロセスは、時にマテリアライゼーション(materialization)と呼ばれる。意味上、データマテリアライゼーションは、クエリの結果をキャッシュする形式であり、データベース管理者が最適化の目的のためにパフォーマンスの理由でマテリアライズドビューを活用する他の形式の事前計算と同様である。
【0439】
関係モデルに従うデータベース管理システムにおいて、ビューは、データベースクエリの結果を表す仮想テーブルである。クエリ又は更新が、通常のビューの仮想テーブルをアドレス指定するときはいつでも、DBMSはこれらを、基礎をなすベーステーブルに対するクエリ又は更新にコンバートする。
【0440】
反対に、マテリアライズドビューは異なるアプローチをとり、その結果、クエリ結果は、元のベーステーブルとは別個に更新され得る具体的な(「マテリアライズド(materialized)」)テーブルとしてキャッシュされる。このようなアプローチは、付加的な記憶と、いくらかのデータが潜在的に古いことを犠牲にして、より効率的なアクセスを可能にする。マテリアライズドビューは、特にデータウェアハウスのシナリオで使用され、これにおいて、実際のベーステーブルの頻繁なクエリは高価になる可能性がある。
【0441】
ここに示す例では、アクセス可能クラウドプラットフォーム186は、一般に、ホスト組織110のデータベース130内に記憶された情報を利用するが、特定の情報がブロックチェーンに対してトランザクション処理され、したがってブロックチェーンに永続化される場合、マテリアライズドビューは、アクセス可能クラウドプラットフォーム186がマテリアライズドビュー920を介してブロックチェーンにより記憶されたデータと相互作用することを可能にする。このような方法で、ホスト組織ユーザ925及びアクセス可能クラウドプラットフォームの双方が、単にマテリアライズドビューを参照することにより、それがホスト組織のデータベース130内に記憶されたデータであるかのようにブロックチェーンデータと相互作用することができる。
【0442】
したがって、特定の実施形態によれば、情報がブロックチェーンに対してトランザクション処理されるときはいつでも、スマートコントラクトが、ブロックチェーン上へトランザクション処理されたデータの検証スキームをトリガ及び実行して、それが定義されたメタデータ910に準拠していることを保証し、スマートコントラクトはさらに、マテリアライズドビュー920を生成してホスト組織110のデータベース130内に参照可能なコピーを作成し、したがって、ホスト組織の標準クエリインターフェースはマテリアライズドビュー内の情報を参照することがき、これは次に、ブロックチェーン上へトランザクション処理された情報に対応する。
【0443】
したがって、ブロックチェーンのために宣言及び作成されるエンティティであって、それのためにデータがブロックチェーン上へ書き込まれ又はトランザクション処理される、エンティティは、マテリアライズドビュー内に、ホスト組織110のデータベース内に作成された同等のエンティティ(例えば、関係データベース内のテーブル)を自動的に有し、定義されたフィールドがブロックチェーン上へ作成され、受け入れられたとき、次いで、それらの対応する列がホスト組織データベースシステム130内に作成され、次いで、データがブロックチェーン上へトランザクション処理されると、ホスト組織のデータベースシステム130内のその対応するエンティティテーブルがマテリアライズドビュー内に投入され、それにより、ホスト組織の側からのデータと相互作用するユーザ及びプロセスは、マテリアライズドビューからの情報にアクセスすることができる。
【0444】
結果的に、開発者とユーザは、彼らが実際にはブロックチェーンを利用しているという知識なしに、また、そのようなユーザがブロックチェーンと相互作用する方法について何らかの知識を有しているという要件なしに、ブロックチェーンに永続化されたデータ及び定義されたメタデータを利用する宣言されたアプリケーションと相互作用することができる。
【0445】
特定の実施形態によれば、ホスト組織のデータベース130内に新しいテーブルは作成されず、したがって、ホスト組織のデータベース130とブロックチェーンとの間でデータを同期させることは必要ない。むしろ、ホストから外部のブロックチェーンにより永続化されたデータのチャネル、パイプライン、又はビューは、ホスト組織のデータベース130においてマテリアライズドビューを介して表現されるが、マテリアライズドビューは、参照可能であるが、ブロックチェーンに戻すように同期されるコピーではなく、更新又は修正を許可しない。マテリアライズドビューは、ホスト組織のデータベース130からの読取専用の参照に対してのみ許容される。全ての修正、更新、変更等は、ブロックチェーン上へトランザクション処理されなければならず、リフレッシュされたマテリアライズドビューは、次いで、それらの変更をブロックチェーンからプルし、それらの修正をデータベース130において反映する。そのような構成はさらなるオーバーヘッドを生じるが、この構成はマテリアライズドビュー内のデータを同期化する必要を明示的に否定し、なぜならば、そのようなデータは完全に非正式であるためである。
【0446】
結果的に、開発者、プログラム、プロセス、及びユーザは、マテリアライズドビュー920を参照することにより、ブロックチェーンデータと相互作用するために標準SQLクエリを利用することができる。例えば、SELECT from $Table_Name WHERE...を指定することは、エンティティ名をマテリアライズドビュー920のテーブル名として指定するとき、結果として、データの正式なコピーがブロックチェーン自体の中に存在するという事実にもかかわらず、データベースクエリ結果がホスト組織のデータベース130により返されることになる。この構造はいくつかの重複データを作成し、したがっておそらく無駄な記憶を結果としてもたらすが、この構造は、標準SQLを利用し得るアクセス可能クラウドプラットフォーム186のいずれかから発生するクエリを大幅に簡素化するという利点を有し、データを取り出すためにブロックチェーンを識別し、又はより複雑なブロックチェーントランザクションを構築する必要はなく、なぜならば、マテリアライズドビュー920へのデータの複製が、スマートコントラクトトリガにより自動的に実行されるためである。そのような実施形態によれば、レコードを更新、作成、又は削除するSQLコマンドは、マテリアライズドビューに対する実行については許可されないが、レコードを更新、作成、又は削除するそのようなSQLコマンドは、apex翻訳エンジン及びApexコードインターフェース454(
図4Bに示される)に受け入れられ、SQL更新、作成、又は削除コマンドの同等のアクションを実行するためのネイティブブロックチェーン実行可能準拠コードに翻訳されるが、これは次いで、ブロックチェーントランザクションとして、ブロックチェーンに対してトランザクション処理され、同意のためにサブミットされ、次いで、投票又は合意が成功であると仮定するとブロックチェーン上に受け入れられる。さらに、スマートコントラクトは、ブロックチェーンで永続化される定義されたメタデータへのデータ準拠を強制するために、ブロックチェーンに対するトランザクションを検証するために実行されることに留意する。
【0447】
例えば、ホスト組織ユーザからサブミットされたSQLクエリは、指定されたアプリケーションの顧客レコードJohn Doeの更新を要求することができる。このような情報はブロックチェーンで永続化されるため、SQLはホスト組織のデータベースシステム130に対して実行することができない。さらに、ブロックチェーンは、「顧客レコードJohn Doeの全てのデータを返してください」と要求するSQLクエリを受け入れない。ブロックチェーン上の情報は人間が読めるものではなく、また、この種類のクエリを許可しない。
【0448】
結果的に、Apexコードインターフェース454は、指定されたアプリケーションの顧客レコードJohn Doeについてブロックチェーン上へ更新されたペイロードデータをトランザクション処理するために、受信したSQLコードをネイティブブロックチェーンコードに翻訳する。これが発生すると、顧客レコードJohn Doeの最も新しいかつ最新の情報は、次に、最も最新の情報としてブロックチェーンに、また、同じデータのマテリアライズドビューにも反映されるが、顧客レコードJohn Doeの古い情報は、ブロックチェーンレコードが不変であるためブロックチェーン内にとどまり、ゆえに、いつでも参照できる不変の監査証跡が作成される。したがって、このようなデータへのアクセス権を有する当事者は、ブロックチェーンの前のブロックを振り返って、顧客レコードJohn Doeについてどんな情報が前に記録されたかを決定することができ、あるいは、顧客レコードJohn Doeが削除されている場合、このような変更はブロックチェーンにより再び反映されるが、古いレコード自体はブロックチェーンの前のブロック内に不変にとどまる。ただし、アプリケーションは、このような情報が「削除された」として示されていることを理解し、したがって、削除されたレコードは、ライブカレントデータとして参照されないが、それは、DLTブロックチェーン技術の固有の設計により常に利用可能なままである。
【0449】
代替的な実施形態において、Apexコードインターフェース454(
図4Bに示される)は、SQLデータベースクエリをネイティブブロックチェーンプロトコルに翻訳するために利用され、翻訳されたSQLクエリが次いでブロックチェーンに対して実行され、結果セットを生成することを可能にし、それは次いで、SQL準拠のフォーマットに戻すように翻訳され、SQLクエリに応答して返される。さらに他の実施形態において、スマートコントラクトエンジンは、ブロックチェーンに対してトランザクションを実行して、定義されたエンティティ及び定義されたフィールドを取り出し、それらをマテリアライズドビューに翻訳し、これは次いで、ホスト組織データベースシステム130内に記憶され、その後、翻訳されていないSQLクエリを実行して、ブロックチェーンデータをマテリアライズドビューから直接取り出すことができる。
【0450】
アプリケーション自体は、宣言されたエンティティ及びそれらのエンティティのための宣言された定義されたフィールドと同様に宣言的であるため、全てのデータ構成は完全にカスタマイズ可能であり、ビジネスの特定のニーズに合わせることができ、ブロックチェーン上で、その特定のブロックチェーン上で動作するネットワーク参加者又は参加ノードによる合意を受けるのみである。
【0451】
図9Bは、説明される実施形態による別の例示的なアーキテクチャ902を示す。
【0452】
ここに示されるように、定義されたメタデータ910はここで、要素911で示されるようにブロックチェーンにデプロイされている。結果的に、宣言的に定義されたアプリケーション、そのエンティティ、及びフィールド定義は今や、任意の認可されたネットワーク参加者により利用することができる。多くの状況において、認可されたネットワーク参加者は、ホスト組織110の様々なクラウドサービスへのアクセス権を有するホスト組織ユーザ925であり、したがって、ホストされたアプリケーション920は、ひとたびブロックチェーンにデプロイされると使用のために顧客に公開される。
【0453】
しかしながら、特定の状況では、パートナーユーザが認可されたネットワーク参加者としてソフトウェアにアクセスする必要がある。問題として、ネットワーク参加者として認可され、したがって宣言されたアプリケーションと相互作用するためのパーミッションを付与されたこのようなパートナーユーザは、必ずしもホスト組織の顧客ではなく、それらにホスト組織のサブスクライブ顧客になるよう強制することは、望ましくない場合がある。
【0454】
宣言されたアプリケーションをホスト組織の非顧客による使用のためにデプロイするためには、特定の実施形態によれば2つの要件がある。第1に、ブロックチェーン管理者は、許容されるネットワーク参加者を定義しなければならず、これは、特定の実施形態によれば、それらのネットワーク参加者のインターネットプロトコル(IP)アドレスを定義することにより行われてもよい。IPアドレスは、IPにより識別されるホスト組織ユーザに対応することができ、あるいは、ネットワーク参加者が、再びIPにより識別されるホスト組織の非顧客でもよい。このような方法で、許容される方法でアプリケーションにアクセスし、アプリケーションを利用することができるブロックチェーン上の参加ノードは、それらがその特定のアプリケーションに対する追加されたネットワーク参加者としてブロックチェーン管理者により定義されたIPアドレスにより正しく識別可能であると仮定して、識別することができ、互いに通信し、互いとデータを共有することができる。
【0455】
特定の実施形態において、追加されたネットワーク参加者の一部又は全部は、ホスト組織の非ユーザ又は非サブスクライバであり、したがって、それらはホスト組織で認証することができず、したがって、認証クレデンシャルを介してホスト組織に対してそれら自身の身元を明らかにすることができない。したがって、そのような実施形態によれば、ホスト組織の非顧客であり、かつホスト組織の非顧客であるが許容されるネットワーク参加者(ブロックチェーン管理者により定義される)としてアプリケーションを利用することを望む識別されたネットワーク参加者は、2段階の認証プロセスを進む。第1に、それらは、追加されるネットワーク参加者に対応しなければならないそれらのIPを提供しなければならない。次いで、非顧客はチャレンジを提示され、これに応答して、それらは公開鍵を返す必要がある。非顧客は、事前にブロックチェーン管理者により公開鍵を与えられ、それにより、それらは認証チャレンジを成功裏に通過することができる。
【0456】
ひとたび非顧客がそれらのIPを提供し、公開鍵でチャレンジに応答すると、その公開鍵は、その非顧客がブロックチェーン上の参加ノード間の信頼をネゴシエートするために宣言されたアプリケーションを利用しようと試みるたび、利用される。
【0457】
したがって、特定の実施形態によれば、デプロイ可能インストールパッケージ925がパートナーユーザに送信され、これにおいて、デプロイ可能インストールパッケージ925は、非顧客のためのソフトウェアを実行し、それらが宣言されたアプリケーションにアクセスすることを可能にする。
【0458】
特定の実施形態によれば、デプロイ可能インストールパッケージ925は、宣言されたアプリケーションの機能を含まない汎用ソフトウェアパッケージであるが、むしろ、ホスト組織のブロックチェーンサービスインターフェースにアクセスするための非顧客パートナー組織を提供し、それにより、非顧客パートナーorgは次いで、その特定の非顧客パートナーorgが認可されたネットワーク参加者として追加された宣言されたアプリケーションの使用を通して、ホスト組織を通してブロックチェーンとの間でトランザクション処理することができる。
【0459】
そのような実施形態によれば、汎用的なデプロイ可能インストールパッケージ925は、ひとたびインストール及び実行されると、共有公開鍵について非顧客パートナー組織に促し(prompt)、これは、その特定の宣言されたアプリケーションのための認可されたネットワーク参加者として非顧客パートナーorgを追加したブロックチェーン管理者により、それらに対して別個に送信される。
【0460】
一実施形態によれば、デプロイ可能インストールパッケージ925は、非顧客パートナー組織を認可されたネットワーク参加者として追加するとき、宣言されたアプリケーションのためのメタデータの一部としてブロックチェーン管理者により構成されている、非顧客パートナー組織のIPアドレスに基づいてチャレンジを発行する。
【0461】
したがって、同一の汎用デプロイ可能インストールパッケージ925は、それがどこで実行されるかに基づいて別様に動作する。デプロイ可能インストールパッケージ925が、認可されたネットワーク参加者に対して構成されたIPに対する範囲内でないか又は対応しないIPアドレスを有するシステムから実行される場合、デプロイ可能インストールパッケージ925は実行されると、そのIPアドレスに関連づけられた場所が宣言されたアプリケーションに対して認可されたネットワーク参加者ではないことを単に示す。
【0462】
同一のデプロイ可能インストールパッケージ925が、異なる宣言されたアプリケーションに対して認可されたネットワーク参加者である、異なる人に送信される場合、デプロイ可能インストールパッケージ925は実行されると、ユーザにその異なる宣言されたアプリケーションのための共有公開鍵を入力するよう促し、したがって、正しい共有公開鍵が提供されることと、デプロイ可能インストールパッケージ925が認可されたネットワーク参加者に対応するものとしてすでに構成されているIPアドレスから実行されることの双方を必要とする。
【0463】
このような方法で、デプロイ可能インストールパッケージ925は、共有され、配布され、又はホスト組織のサポートページを介して公開さえされ得、いかなる非認可ユーザも、それらがIPをなりすますこと及びチャレンジに応答して正しい共有公開鍵を提供することの双方をなし得ないかぎり、問題の宣言されたアプリケーションに対して承諾されることはない。
【0464】
特定の実施形態において、ユーザベースの認証チャレンジが既知のユーザに対してさらに提供されてもよく、そのようなユーザ又はユーザに関連づけられた非顧客パートナー組織がホスト組織からのサービスをサブスクライブすることは必要ない。
【0465】
宣言されたアプリケーションのユーザは、APIを利用して宣言されたアプリケーションと相互作用し、したがって宣言されたアプリケーションを通じて間接的にブロックチェーンと相互作用することができるが、ユーザがそのようにすることは必要ではない。
【0466】
むしろ、特定の実施形態によれば、デプロイ可能インストールパッケージ925は、デプロイ可能インストールパッケージ925の実行者が認可されたネットワーク参加者である宣言されたアプリケーションのためにブロックチェーンに永続化されたメタデータから動的に生成されるUIを提供する。
【0467】
したがって、デプロイ可能インストールパッケージ925がアプリケーション特有のUIを有することは必要ではない。むしろ、宣言されたアプリケーションに必要とされるGUI、API、又はUIは、宣言されたアプリケーションのために関連づけられたメタデータに基づいてデプロイ可能インストールパッケージ925により動的に構築される。
【0468】
このようにして、ホスト組織からサービスを全くサブスクライブしない非顧客パートナー組織は、それにもかかわらず、ホスト組織のブロックチェーンサービスインターフェースを(宣言されたアプリケーションを通じて)利用し、ホスト組織のブロックチェーンサービスインターフェースを通じてアクセス可能にされているブロックチェーン上のデータを利用し、相互作用し、記憶することができる。
【0469】
特定の実施形態によれば、ひとたびデプロイ可能インストールパッケージ925が実行されると、ユーザは、初期チャレンジに応答してユーザにより提供された公開鍵を関連づける、動的に構築されたUIを通して宣言されたアプリケーションで認証し、次いで、任意の定義されたエンティティ及び任意の定義されたフィールド定義を含む宣言されたアプリケーションの定義されたメタデータに基づいて、GUI表示画面を生成することに進み、これを介してホスト組織の非顧客は、ブロックチェーン上へトランザクション処理されるデータを入力し、そのようなデータをブロックチェーン上で更新し、ブロックチェーンからのデータを取り出すことができ、これには、別の組織によりブロックチェーンに書き込まれたデータであるが、宣言されたアプリケーションに関連づけられたデータがその別の組織と共有されている、データが含まれ、したがって、新しい宣言されたアプリケーションを利用する全ての認可されたネットワーク参加者に対して、ブロックチェーン上のデータの共通のコレクションを形成する。
【0470】
したがって、GUIは、ブロックチェーン管理者がアプリケーションを定義し、エンティティを定義し、それらのエンティティの各々についてのフィールドを定義し、許容可能なネットワーク参加者を定義することを可能にし、次いで、ホスト組織ユーザと非顧客ユーザの双方が、全ての宣言型メタデータがブロックチェーン内に存在するホストされたソフトウェアにアクセスすることを可能にする。そのようなブロックチェーンは、ブロックチェーンがホスト組織にとってアクセス可能である限り、完全にホスト組織の外部で、またホスト組織の制御外でさえも動作することができる。代替的な実施形態において、宣言型メタデータは修正DLT内に存在し、これはホスト組織の内部で運用され、また、これについてホスト組織は単一の中央集権的信頼オーソリティである。
【0471】
宣言型メタデータが、ここに示されるブロックチェーン999などのホスト組織外のアクセス可能ブロックチェーン上にホストされる場合、宣言されたアプリケーションは、資産からペイロードデータを取り出す、資産を更新する、資産を作成する等を行うために、ブロックチェーンとの間でトランザクション処理することによりブロックチェーン上の情報と相互作用する。
【0472】
しかしながら、注目すべきことに、データの正式なコピーは、アクセス可能なブロックチェーン999上でホスト組織の外部にホストされ、ホスト組織のデータベース130内のいかなるテーブルによっても記憶されていない。上記で論じられたマテリアライズドビューは任意の機能であるが、使用されるとしても、マテリアライズドビュー内の情報は正式なコピーではない。アプリケーションに関連づけられたデータに修正を行うトランザクションは、定義されたメタデータに準拠しなければならないだけでなく、ブロックチェーン999で更新もされなければならない。修正されたDLTが内部で運用される場合、アプリケーションに関連づけられたデータは、正式なソースとして修正されたDLT内で更新されなければならない。したがって、このようなアプリケーションデータは、データの最終的な正式コピーとしてアクセス可能なブロックチェーン999により永続化される。したがって、マテリアライズドビューが削除又は破壊され、あるいはアクセス可能ブロックチェーンと同期しなくなったとしても、宣言されたアプリケーションの動作に対する影響はなく、なぜならば、そのアプリケーションのためのデータ及び構造を定義するメタデータ並びにそのようなデータは、アクセス可能なブロックチェーン999により記憶されるためである。
【0473】
図9Cは、説明される実施形態による別の例示的なアーキテクチャ903を示す。
【0474】
ここに示されるように、ブロックチェーンサービスインターフェース190内にイベントリスナ960があり、これは、ブロックチェーン管理者から定義されたトリガ961を受け入れ、次いで、ブロックチェーン上で発生する指定されたイベントをリッスンするように動作し、これに応答して、イベントがトリガ又は始動され、ここではトリガされたイベント962として示され、ホスト組織にトランザクションをプッシュし、あるいはブロックチェーン管理者により指定されたフロー若しくはデータ処理フロー又は任意の定義された動作の実行を開始する。これは、定義されたメタデータへのデータ準拠を強制するためにスマートコントラクト実行を自動的にトリガするために利用されるものと同様のメカニズムであるが、イベントリスナ及び定義されたトリガ961は、スマートコントラクト実行により実行される動作にかかわらず、発生すべき実行可能動作をそれらの独自のカスタマイズされた基準に基づいてブロックチェーン管理者が定義することを可能にする。
【0475】
したがって、特定の実施形態によれば、何らかの変更がアクセス可能ブロックチェーン内で生じ、イベントリスナ960に所有されている定義されたトリガ961に一致するときはいつでも、イベントリスナは、アクセス可能クラウドプラットフォーム186内へ戻すように1つ又は複数のイベントを始動させ(トリガされたイベント962)、ブロックチェーン管理者は、任意の種類のフローを、ブロックチェーンサービスインターフェース190へのAPIを介してサブミットされるコードを介して、又はGUIを介して(例えば、統合ビルダ及び関連GUIを介して)書き込むことができ、これにより、ブロックチェーン管理者はフローを作成し、例えば、実行されるスマートコントラクト、又はブロックチェーン管理者により定義される何らかの他のフローを作成することができ、次いで、そのフローは、イベントリスナ960により監視されるブロックチェーン上で生じた変更に応答して、トリガされたイベント962により定義されたとおりアクセス可能クラウドプラットフォーム186内での更新を引き起こす。一実施形態によれば、データベーストランザクションが、トリガされたイベント962に応答してホスト組織のデータベース130内で、又はアクセス可能クラウドプラットフォーム内で実行される。別の実施形態において、GUIがトリガされ、ユーザクライアントデバイスにプッシュされて、イベントリスナ960により監視されるブロックチェーン内で発生した変更に基づく情報を提示する。
【0476】
図10は、読み取りに関する合意(consensus on read)のためのプロセスの一実施形態のフローチャートである。このプロセスは、ブロックチェーンサービスインターフェース190のブロック合意マネージャ191又は同様のコンポーネントにより実現することができる。読み取りに関する合意プロセスは、ブロックチェーン内のデータにアクセスしてそのデータを読み取ろうとしているブロックチェーンネットワーク内のノード133によりトリガすることができ、これにおいて、データは、該データへのアクセスを制御するパーミッションスキーム又は同様のメカニズムにより保護されている。このプロセスは、ブロックチェーンサービスインターフェース190内のアクセス制御層162とは別個である。アクセスされるデータが、読み取りに関する合意プロセスにより管理されている場合、読み取りに関する合意プロセスは、要求ノードが暗号化により保護されているブロックチェーンからのデータにアクセスできるように満たされなければならない。ブロックチェーン内のデータを読み取る要求は、任意のレベルの粒度を有することができ、これにおいて、ブロックチェーン内のフィールド、レコード、メタデータ、又は同様のデータは、このプロセスにより別個に保護することができる。
【0477】
データが読み取りのアクセスを制限したブロックチェーンに最初記憶されるとき、トランザクションはブロックチェーンサービスインターフェース190により受信される(ブロック1001)。ブロックチェーン合意マネージャ191は、ブロックチェーンネットワークの合意プロトコルに従って、トランザクションがブロックチェーンに確認されるかどうかを決定する。トランザクションがコミットされる場合、ブロックチェーン合意マネージャ191は、記憶されるデータを暗号化するための鍵を生成する(ブロック1003)。鍵は、データを暗号化するために利用され、さらに、鍵は、データを復号してそれにアクセスするために復元され、利用される。暗号化のための鍵は、共有秘密(shared secrets)のセットに変換される(ブロック1005)。鍵をブロックチェーンネットワークにおける合意に参加するノードの数に等しい数の共有秘密のセットに変換することができる、任意の秘密共有プロセス又はプロトコルを利用することができる(例えば、Shamirの秘密共有アルゴリズム)。同様に、所望の閾値又は構成可能な閾値を有する任意の秘密共有アルゴリズムを選択して、共有秘密を生成することができる。このような共有秘密アルゴリズムを使用することにより、復号に必要とされる鍵を再構成するためにブロックチェーンネットワーク内の他のノードにより閾値数の共有秘密が提供されている場合にのみデータにアクセスできることを保証する。閾値は、固定又は構成可能とすることができる。閾値は、参加ノードの数の半分又は3分の2に等しい数などの、任意の値とすることができる。
【0478】
各共有秘密が、秘密共有アルゴリズムにより生成されるとき、ブロックチェーンネットワーク内の特定のノードに対して指定された共有秘密は、そのノードの公開鍵を使用して暗号化される(ブロック1007)。したがって、関連するノードのみが、それに割り当てられた共有秘密を復号し、読み取りに関する合意プロセスの一部として承諾された読み取り要求の場合にそれを提供することができる。これらの暗号化された共有秘密は、ブロックチェーンにトランザクションをコミットするための合意に基づいて、関連するトランザクションデータのメタデータとして記憶される(ブロック1009)。
【0479】
その後、保護されたデータがブロックチェーンに記憶された後、保護されたデータにアクセスする要求にサービス提供しようとする任意のノード(ブロック1011)は、ブロックチェーンネットワークの他のノードにブロードキャストされる読み取り要求を開始しなければならない。この読み取り要求は、アクセスされるデータを識別し、データにアクセスすることを要求しているノード又はエンティティに関する情報(例えば、エンティティのためのクレデンシャルのセット)を含んでもよい(ブロック1013)。次いで、ノードの各々は、その読み取りに関する合意プロセスを実行し、要求されたデータにアクセスするためのクレデンシャル又は他の基準が満たされているかどうかの決定を行う。データを読み取るための基準が満たされていると決定した各ノードは、その共有秘密を要求ノードに提供する(ブロック1015)。要求ノードは、共有秘密を収集し、定義された閾値数の共有秘密が提供されたかどうかを決定することができる(ブロック1017)。閾値数の共有秘密が返されない場合、読み取りに関する合意プロセスは読み取り要求を拒否し、それは完了できない(ブロック1019)。いくつかの実施形態において、読み取りに関する合意プロセスは、プロセスが閾値数の共有秘密を受信しなければならない時間制限又はウィンドウを有することができる。閾値数の共有秘密が他のノードにより提供された場合、要求ノードは、共有秘密アルゴリズムを利用して、共有秘密を、要求されたデータを暗号化するために使用された鍵に変換することができ、次いで、要求されたデータは復号され、アクセスされ得る(ブロック1021)。データがアクセスされた後、要求ノードは鍵を破棄することができ、それにより、それは後のアクセスで再度要求及び再形成される必要があることになる。
【0480】
最初のトランザクションからの暗号化されたデータがブロックチェーンに記憶されるとき、ブロックチェーンネットワーク内の各ノードの共有秘密を含む関連メタデータもブロックチェーンに記憶される。メタデータフォーマットは、他の開示される実施形態に関連して本明細書で詳述されるように定義され、構成され得る。メタデータは、共有秘密、トランザクションデータの所有者、トランザクションデータに関連づけられたアクセス制御のためのパーミッション又は特権、トランザクションデータに関連するプライバシー情報、トランザクションデータの所有者情報、及び同様の情報を識別することができる。メタデータは、トランザクションのこれらの属性を、トランザクションデータのフォーマットと一貫性のあるオブジェクト、レコード、フィールド、又は同様のコンポーネントレベルで定義することができる。トランザクションデータの所有者は、ブロックチェーンネットワーク上で動作し、ブロックチェーンネットワークを利用するユーザ、ノード、又は同様のエンティティとすることができる。アクセス制御プロセス及び忘れる権利プロセスについてのさらなる実施形態が本明細書で以下に定義され、これらは、読み取りに関する合意プロセスの原理と共にこのさらなる詳細なメタデータを利用する。
【0481】
図11A~
図11Cは、ブロックチェーンサービスインターフェース190内で忘れる権利(right to forget)機能を実施するためのプロセスのセットに関連するフローチャートである。忘れる権利機能は、読み取りに関する合意プロセスの態様を利用して、エンティティがデータをプライベートデータとして指定し、エンティティの要求に基づいてプライベートであるデータをブロックチェーンに「忘れ」させることを可能にする。この機能性は、忘れる権利機能を実現するブロックチェーンがGDPRに準拠できるようにするのに役立つことができる。
図11A~
図11Cのフローチャートは、忘れる権利プロセスの3つの関連する態様、すなわち、プライベート情報又はPI情報とも呼ばれるプライベートデータの初期記憶、データが「忘れられる」ことの要求、及びアクセス要求を説明している。これらの機能は一緒に、データに再度アクセスできないことを保証するために、制御エンティティの要求に基づいてプライベートデータを暗号化し、次いで暗号化鍵を削除することにより、ブロックチェーンがデータを「忘れる」能力を提供し、したがって、忘れる権利機能は、データをブロックチェーンにより「忘れられる」ものとして効果的に指定することができ、なぜならば、それはその後、データがブロックチェーン上に暗号化された形式で存在していても、アクセスすることはできないためである。
【0482】
図11Aにおいて、忘れる権利プロセスは、ブロックチェーンインターフェースでブロックチェーンに記憶されるべきトランザクションを受信するノードにより開始され、これにおいて、トランザクションは、このデータに関連づけられたエンティティに対する一意ユーザ識別子(UUID)を含む(ブロック1101)。さらに、受信したトランザクションには、プライベートと指定されるべきデータの態様のインジケータが含まれる。データの全体、又は任意のレベルの粒度におけるデータの任意の態様をプライベートと指定することができ、例えば、データ及び/又はメタデータのオブジェクト、レコード、フィールドである。ブロックチェーン内のノードの合意に基づいて、トランザクションがブロックチェーンにコミットされたと決定されると、トランザクションデータのためのオブジェクト及びメタデータフォーマットが決定され、これは、ブロックチェーン上にデータを記憶するために利用され、これにおいて、オブジェクト及びメタデータは、所有エンティティUUID又は同様の識別子と、プライベートとして指定されるデータのオブジェクト、レコード、フィールド、又は同様のコンポーネントを識別するためのインジケータのセットを含むことになる(ブロック1103)。
【0483】
ブロックチェーン合意マネージャ191又はパーミッションマネージャは、記憶されるデータを暗号化するための鍵を生成する(ブロック1105)。データを暗号化するために利用される鍵は、データを復号してそれにアクセスするために利用されることになる。次いで、鍵は、共有秘密のセットに変換される(ブロック1107)。鍵をブロックチェーンネットワークにおける合意に参加するノードの数に等しい数の共有秘密のセットに変換することができる、任意の秘密共有プロセス又はプロトコルを利用することができる(例えば、Shamirの秘密共有アルゴリズム)。同様に、所望の閾値又は構成可能な閾値を有する秘密共有アルゴリズムを選択して、共有秘密を生成することができる。このような共有秘密アルゴリズムを使用することにより、復号に必要とされる鍵を再構成するためにブロックチェーンネットワーク内の他のノードにより閾値数の共有秘密が提供されている場合にのみデータにアクセスできることを保証する。閾値は、固定又は構成可能とすることができる。閾値は、参加ノードの数の半分又は3分の2に等しい数などの、任意の値とすることができる。
【0484】
各共有秘密が、秘密共有アルゴリズムにより生成されるとき、ブロックチェーンネットワーク内の特定のノードに対して指定された共有秘密は、そのノードの公開鍵を使用して暗号化される(ブロック1109)。したがって、関連するノードのみが、それに割り当てられた共有秘密を復号し、読み取りに関する合意プロセスの一部として承諾された読み取り要求の場合にそれを提供することができる。これらの暗号化された共有秘密は、ブロックチェーンにトランザクションをコミットするための合意に基づいて、関連するトランザクションデータのメタデータとして記憶される(ブロック1111)。
【0485】
図11Bは、ブロックチェーンネットワーク内のプライベートデータを「忘れる」要求にサービス提供するプロセスのフローチャートである。パーミッションマネージャ181は、エンティティから、UUIDに関連づけられた指定されたデータを忘れる要求を受信する(ブロック1121)。パーミッションマネージャ181又は関連するコンポーネントは、要求を認証して、十分なクレデンシャルが提示されていることを立証して、要求元が識別されたデータを忘れるプロセスを開始することを認可されていることを保証できる。要求元は、認可を立証するために、セキュリティトークン、パスワード、暗号化鍵、及び/又は同様のクレデンシャルを提示することができる。認証された場合、要求は、UUID及び/又は忘れられるデータの識別子を追加するように処理される(ブロック1123)。プロセスは、UUIDに関連づけられた全てのデータ、又は要求により識別される特定のオブジェクト、レコード、フィールドを「忘れる」ように構成することができる。次いで、UUIDと任意のデータ識別情報は、「忘れられた」項目のリストに記録することができる。UUID又はUUIDに関連づけられた識別された情報に特有の鍵又は共有秘密がある場合、ノードは、このローカル情報を削除することができる(ブロック1125)。さらに、ノードは、忘れられたUUID及び/又は情報のリストをブロードキャストし、あるいはブロックチェーン内の他のノードと同様に同期させることもできる。
【0486】
図11Cは、ブロックチェーンネットワーク内の「忘れられた」プライベートデータにアクセスする要求にサービス提供するプロセスのフローチャートである。後に、プライベートデータがブロックチェーンに記憶された後、保護されたデータにアクセスする要求にサービス提供しようとするノード(ブロック1131)は、忘れられたUUID/データリストに対する、要求元のUUID及び/又は要求されたデータの識別情報の初期チェックを行う(ブロック1133)。UUID又は要求されたデータが「忘れられた」として列挙されている場合、このデータにアクセスする要求は拒否される(ブロック1135)。UUID又は要求されたデータがリスト上に見つからない場合、パーミッションマネージャ181は読み取り要求を開始しなければならず、これは、ブロックチェーンネットワークの他のノードにブロードキャストされ、アクセスされるデータを識別し、データにアクセスすることを要求しているノード又はエンティティに関する情報(すなわち、UUID、及び可能性として、エンティティのためのクレデンシャルのセット)を含む(ブロック1137)。次いで、ノードの各々は、その合意プロセスをプライベート情報のために実行し、要求されたデータにアクセスするためのクレデンシャル又は他の基準が満たされているかどうかの決定を行う。データを読み取るための基準が満たされていると決定した各ノードは、その共有秘密を要求ノードに提供する(ブロック1139)。次いで、要求ノードは、共有秘密を収集し、定義された閾値数の共有秘密が提供されたかどうかを決定することができる(ブロック1141)。閾値数の共有秘密が返されない場合、合意プロセスは読み取り要求を拒否し、それは完了できない(ブロック1143)。いくつかの実施形態において、合意プロセスは、プロセスが閾値数の共有秘密を受信しなければならない時間制限又はウィンドウを有することができる。閾値数の共有秘密が他のノードにより提供された場合、要求ノードは、共有秘密アルゴリズムを利用して共有秘密を鍵に変換することができ、次いで、要求されたデータは復号され、アクセスされ得る(ブロック1145)。データがアクセスされた後、要求ノードは鍵を破棄することができ、それにより、それは後のアクセスで再度要求及び再形成される必要があることになる。
【0487】
図11Dは、GDPRの一例示的な実装の図である。
図11Dの例において、プライベート情報(PI情報)は、ブロックチェーンに、又は分散ストレージに直接記憶することができる。ブロックチェーンにPI情報を追加しようとするノードは、REST APIと相互作用してPI情報を作成/更新することができる。PI情報に関連づけられたメタデータ、すなわちPIメタデータは、ブロックチェーンプラットフォームのメタデータAPIを介して定義される。次に、REST APIは、PI情報を有するレコードのための鍵の作成と、(図示のような)ブロックチェーンにおける、又は分散ストレージにおけるPIN情報の記憶を管理する。非PIデータ及びPIデータのハッシュは、REST APIを介してブロックチェーンに記憶することができる。メタデータは、別個のメタデータとして、及び/又は同意及びGDPRモデルの一部として、メタデータAPIを介してブロックチェーンに記憶することができる。
【0488】
分散ストレージの場合、PIデータのハッシュはブロックチェーンに記憶され、一方、実際のPIデータはブロックチェーンから離れて記憶される。オフチェーンの記憶場所におけるPI情報を削除することは、ブロックチェーン内にPI情報のハッシュのみを残す。ハッシュは一方向関数であり、削除されるとPI情報を取り出すために使用することはできない。いくつかの場合、ハッシュは、それをさらに保護するために暗号文と共に記憶することができる。
【0489】
図12A~
図12Cは、ブロックチェーンサービスインターフェース190内でアクセス制御機能を実施するプロセスのセットに関連するフローチャートである。アクセス制御機能は、合意上の読み取りプロセスの態様を利用して、エンティティがデータに対するアクセス制御を指定することを可能にし、ブロックチェーンに対する読み取り及び書き込みパーミッションを可能にする。
図12A~
図12Cのフローチャートは、アクセス制御の3つの関連する態様、すなわち、パーミッションのセットを有するデータの初期記憶、データに書き込む要求、及びデータの読み取り要求を説明している。これらの機能は一緒に、データを暗号化し、次いでスマートコントラクトを使用してデータへの書き込みを制御しながら、読み取りに関する合意を使用してデータの読み取りを制御することにより、ブロックチェーンがデータに対するアクセス制御を実施する能力を提供する。これらのアクセス制御機能は、許可ありの(すなわち、プライベート)ブロックチェーンとパブリックブロックチェーンの双方に適用可能であり、許可ありのブロックチェーンに関連づけられたアクセス制御層とは別個である。
【0490】
図12Aにおいて、アクセス制御プロセスは、ブロックチェーンインターフェースでブロックチェーンに記憶されるべきトランザクションを受信するノードにより開始され、これにおいて、トランザクションは、データの所有権及びアクセス特権(すなわち、パーミッション)の指標と共に、このデータに関連づけられたエンティティのための一意ユーザ識別子(UUID)を含む(ブロック1201)。さらに、受信したトランザクションには、定義されたパーミッションを有すべきデータの態様のインジケータが含まれる。データの全体、又は任意のレベルの粒度におけるデータの任意の態様が、定義されたパーミッションを有することができ、例えば、データ及び/又はメタデータのオブジェクト、レコード、フィールドである。ブロックチェーン内のノードの合意に基づいて、トランザクションがブロックチェーンにコミットされたと決定されると、トランザクションデータのためのオブジェクト及びメタデータフォーマットが決定され、これは、ブロックチェーン上にデータを記憶するために利用され、これにおいて、オブジェクト及びメタデータは、所有エンティティUUID又は同様の識別子と、プライベートとして指定されるデータのオブジェクト、レコード、フィールド、又は同様のコンポーネントを識別するためのパーミッションのセットを含むことになる(ブロック1203)。
【0491】
ブロックチェーン合意マネージャ191又はパーミッションマネージャ181は、記憶されるデータを暗号化するための鍵を生成する(ブロック1205)。データを暗号化するために利用され、かつデータを復号してそれにアクセスするために利用されることにもなる鍵は、次いで、共有秘密のセットに変換される(ブロック1207)。鍵をブロックチェーンネットワークにおける指定された所有者ノードの数に等しい数の共有秘密のセットに変換することができる、任意の秘密共有プロセス又はプロトコルを利用することができる(例えば、Shamirの秘密共有アルゴリズム)。同様に、所望の閾値又は構成可能な閾値を有する秘密共有アルゴリズムを選択して、共有秘密を生成することができる。このような共有秘密アルゴリズムを使用することにより、復号に必要とされる鍵を再構成するためにブロックチェーンネットワーク内の所有者ノードにより閾値数の共有秘密が提供されている場合にのみデータにアクセスできることを保証する。
【0492】
各共有秘密が、秘密共有アルゴリズムにより生成されるとき、ブロックチェーンネットワーク内の特定の所有者ノードに対して指定された共有秘密は、そのノードの公開鍵を使用して暗号化される(ブロック1209)。したがって、関連するノードのみが、それに割り当てられた共有秘密を復号し、読み取りに関する合意の一部として承諾された読み取り要求の場合にそれを提供することができる。これらの暗号化された共有秘密は、データに対するアクセス特権と共に、ブロックチェーンにトランザクションをコミットするための合意に基づいて、関連するトランザクションデータのメタデータとして記憶される(ブロック1211)。
【0493】
図12Bは、ブロックチェーンネットワークにデータを書き込む要求にサービス提供するプロセスのフローチャートである。パーミッションマネージャ181は、エンティティから、UUID及びアクセス制御特権に関連づけられた指定されたデータを書き込む要求を受信する(ブロック1221)。パーミッションマネージャ181又は関連するコンポーネントは、要求を認証して、十分なクレデンシャルが提示されていることを立証して、要求元が識別されたデータを変更するための書き込みプロセスを開始することを認可されていることを保証できる。要求元は、認可を立証するために、セキュリティトークン、パスワード、暗号化鍵、及び/又は同様のクレデンシャルを提示することができる。認証された場合、要求は、UUID及び/又は書き込むデータの識別子に結びつけられたスマートコントラクトを決定するために処理される(ブロック1223)。スマートコントラクトは、データの書き込みとして機能する、データがブロックチェーンに追加されるプロセスを定め、管理することができ、それにより、ブロックチェーンに追加されるデータは、ブロックチェーン内の前のデータを、そのデータ自体は修正できないが置き換えるように機能する。UUID、又はUUIDに関連づけられたデータ、又は要求により識別される特定のオブジェクト、レコード、若しくはフィールドのためのスマートコントラクトが、ブロックチェーン内でルックアップされ、書き込まれるデータに関連づけられたメタデータが、特権が書き込みを許容するかを決定するために調べられる(ブロック1225)。メタデータ及び管理するスマートコントラクトが要求元によるデータの書き込みを許可しない場合、プロセスは書き込みを拒否し、関連するトランザクションはコミットされず、あるいは、アクセス制御により管理される特定のデータに関連する部分はコミットされない(ブロック1227)。識別されたデータ及び要求元のUUIDに関連づけられたスマートコントラクト及び特権が書き込みを許可する場合、トランザクション及び/又は書き込まれるように識別されたトランザクション中のデータの一部は、ブロックチェーンにコミットされ得、書き込まれるデータを参照することになり、それにより、それを置き換えるように機能することになる。
【0494】
図12Cは、ブロックチェーンネットワーク内のアクセス制御特権を有するデータを読み取る要求にサービス提供するプロセスのフローチャートである。アクセス制御されたデータがブロックチェーンに記憶された後、データにアクセスする要求にサービス提供しようとするノード(ブロック1131)は、要求されたデータの要求元及び/又は識別情報のパーミッションの初期チェックを行って、関連するメタデータ内のパーミッションを調べる(ブロック1233)。パーミッションが、要求元がパーミッションを有さないことを示す場合、このデータにアクセスする要求は拒否される(ブロック1235)。要求されたデータのUUID及びメタデータがアクセスを禁止しない場合、パーミッションマネージャ181は読み取り要求を開始しなければならず、これは、ブロックチェーンネットワークにおけるデータの所有者として示される他のノードにブロードキャストされ、アクセスされるデータを識別し、データにアクセスすることを要求しているノード又はエンティティに関する情報(すなわち、UUID、及び可能性として、エンティティのためのクレデンシャルのセット)を含む(ブロック1237)。次いで、ノードの各々は、その合意プロセスをアクセス制御されたデータのために実行し、要求されたデータにアクセスするためのクレデンシャル又は他の基準が満たされているかどうかの決定を行う。データを読み取るための基準が満たされていると決定した各ノードは、その共有秘密を要求ノードに提供する(ブロック1239)。次いで、要求ノードは、共有秘密を収集し、定義された閾値数の共有秘密が提供されたかどうかを決定することができる(ブロック1241)。閾値数の共有秘密が返されない場合、合意プロセスは読み取り要求を拒否し、それは完了できない(ブロック1243)。いくつかの実施形態において、合意プロセスは、プロセスが閾値数の共有秘密を受信しなければならない時間制限又はウィンドウを有することができる。閾値数の共有秘密が他のノードにより提供された場合、要求ノードは、共有秘密アルゴリズムを利用して共有秘密を鍵に変換することができ、次いで、要求されたデータは復号され、アクセスされ得る(ブロック1245)。閾値は、固定又は構成可能とすることができる。閾値は、参加ノードの数の半分又は3分の2に等しい数などの、任意の値とすることができる。データがアクセスされた後、要求ノードは鍵を破棄することができ、それにより、それは後のアクセスで再度要求及び再形成される必要があることになる。
【0495】
図12Dは、アクセス制御の一例示的な使用事例の図である。例示的な使用事例は、本明細書に記載されるアクセス制御及び読み取りに関する合意プロセスと関連して実施することができる。使用事例は、ポリシーとも呼ばれるパーミッションルールの定義を可能にする。分散エンタープライズプラットフォームの文脈において、ロールベース及び属性ベース双方の制御を実施することができる。ロールベースの制御は、ユーザのアクセス権を定義し、属性ベースの制御は、アクセス権をリソース、エンティティ、及び実行環境のプロパティなどの属性に拡張する。アクセス制御は、ブロックチェーンと組み合わせて、エンティティレベル及びレコードレベルのアクセスに分割することができる。エンティティレベルのアクセスは、オブジェクト又はフィールドレベルの制御と同様であり、これは、定義されたユーザ又はパートナーのセットがブロックチェーン内のエンティティ及び関連するフィールドにアクセスできるようにする。レコードレベルのアクセスは、他のプラットフォームにおける共有設定と同様とすることができ、これは、レコード所有者により定義されたパーミッションに基づいてレコードへのアクセスを可能にする。
【0496】
この例示的な使用事例において、アクセス制御は、参加者、レコード、レコードポリシー、及びレコード認可に関連して定義することができる。この使用事例における参加者は、ブロックチェーン内の参加者メタデータで表され、これは、ブロックチェーン内の指定されたデータに対して所有権又はアクセス特権を有するユーザ又はエンティティの定義されたセットとすることができる。この文脈におけるレコードは、レコードを拡張するエンティティの識別子を含むメタデータエンティティとすることができる(例えば、顧客エンティティはレコードエンティティの識別子を含む)。参加者は、この例ではレコードエンティティに関連づけられる。アクセスは、エンティティアクセスを管理するためにレコードレベルで定義される。
【0497】
この使用事例において、レコードポリシーは、レコード及び参加者アクセスポリシーを保持するジャンクション(junction)オブジェクトとすることができる。アクセスレベルは、2つのタイプ、パーミッションレベル(例えば、読み取り、書き込み、読み取り/書き込み)と、1又は過半数などの合意レベル(例えば、複数の所有者が存在する場合)で定義することができる。レコード認可は、レコードポリシーに関連する各レコード所有者による個々の認可に関するトランザクションを追跡することができる。
【0498】
図12Dに関し、アクセス制御の例示的な使用事例は、第三者(すなわち、非所有者)からのアクセス要求に関連して説明されている。例のために、第三者は、本明細書に記載されるようにブロックチェーンを使用して成績証明書を管理する別の機関(例えば、高校)からの学生(すなわち、所有者)の成績証明書をレビューすることを求める大学でもよい。このプロセスは、第三者(大学)が成績証明書にアクセスすることを求めることで始まる。アクセス要求ハンドラは、アクセスのパーミッションを決定するためにブロックチェーンにクエリする。アクセスがすでに承諾されている場合、立証(verification)を返すことができる。
【0499】
アクセスがまだ承諾されていない場合、アクセス要求ハンドラはアクセス要求を所有者に送信することができる。所有者の全て(又は、過半数)がアクセスを承認すると、成績証明書のポリシー/パーミッションがブロックチェーン内で更新される。次いで、第三者のアクセス要求を受け入れて、ブロックチェーン内の要求されたレコード(例えば、成績証明書)へのアクセスを付与することができる。アクセスが所有者により承認されない場合、アクセスはブロックされる。
【0500】
図13は、クラウドベースのオンデマンドの機能性をユーザ、顧客、及びサブスクライバに提供するような機能性を実行するためにプロセッサ及びメモリによりサポートされるデータベースシステム実装などのクラウドベースのコンピューティング環境と関連して分散台帳技術(DLT)を使用してブロックチェーン内のデータ及びメタデータの効率的な記憶及び検証を実施する方法1200を示すフロー図を示す。
【0501】
方法1300は、本明細書に記載される他のプロセスと同様に、本明細書に記載されるシステム及び方法の遂行において運用、定義、宣言、関連づけ、書き込み、受信、取り出し、追加、トランザクション処理、訓練、配布、処理、伝送、分析、トリガ、プッシュ、推奨、パース、永続化、公開、ロード、生成、記憶、維持、作成、戻し、提示、インターフェース、通信、クエリ、提供、決定、表示、更新、送信等の様々な動作を実行するためのハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)を含み得る処理論理により実行することができる。例えば、
図1A及びそれ以降に示されるホストされたコンピューティング環境111、ブロックチェーンサービスインターフェース1350、及びそのデータベースシステム130、並びに本明細書に記載される他のシステム及びコンポーネントは、記載される方法論を実施することができる。以下に列挙されるブロック及び/又は動作のいくつかは、特定の実施形態によれば任意である。提示されるブロックの番号付けは明りょうさのためのものであり、様々なブロックが発生しなければならない動作の順序を規定することを意図したものではない。
【0502】
図13に示す方法1300を参照し、ブロック1305において、処理論理は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させ、複数のテナントの各テナントは、ブロックチェーンへのアクセスを有する参加ノードとして動作する。
【0503】
ブロック1310において、処理論理は、ブロックチェーン上に永続的に記憶されたデータレコードを更新するようにホスト組織に要求する、ブロックチェーンに対するトランザクションを受信し、該トランザクションは、データレコードの複数のデータ要素のうちの1つ以上のための更新値を指定する。
【0504】
ブロック1315において、処理論理は、ブロックチェーン上のデータレコードを更新値で更新するためにトランザクションがブロックチェーンに追加されることを許可する前に、トランザクションにより指定された更新値を検証するためにスマートコントラクトを実行する。
【0505】
ブロック1320において、処理論理は、スマートコントラクトによる更新データ値の成功裏の検証に従ってブロックチェーン上の新しいブロックにトランザクションを追加することにより、データレコードに対する更新値をブロックチェーンに書き込む。
【0506】
別の実施形態によれば、方法1300は、ブロックチェーン上に永続的に記憶されたデータレコードのためのデータマージ操作を実行することを含み、データマージ操作は、ブロックチェーンからデータレコードをその全体として取り出して、データレコードの複数のデータ要素の全てを取り出すことと、ブロックチェーンに対するトランザクションにより指定された検証された更新値をデータレコードの複数のデータ要素にマージして、検証された更新値をその中に具現化させた完全なデータレコードを形成することを含み、ブロックチェーン上の新しいブロックにトランザクションを追加することにより、ブロックチェーンにデータレコードに対する更新値を書き込むことは、ブロックチェーンの新しいブロックに、検証された更新値をその中に具現化させた完全なデータレコードを書き込むことを含み、完全なデータレコードは、ブロックチェーン上に記憶されたデータレコードの全ての前のバージョンを廃止し、ブロックチェーン上に記憶されたデータレコードの前のバージョンを参照しない。
【0507】
例えば、データマージ操作は、データレコードが以前に何回の更新を受けたかにかかわらず、データレコードのデータがブロックチェーンの単一ブロックから取り出されることを可能にする。ゆえに、一方で、一部のデータは複製される(例えば、非更新値は今や、前のブロックと、マージされた完全なレコードが書き込まれた新しいブロックにも存在する)。データ冗長性にもかかわらず、データ取り出しは、より効率的かつ高速に行われる。
【0508】
方法1300の別の実施形態によれば、ブロックチェーン上の新しいブロックにトランザクションを追加することにより、ブロックチェーンにデータレコードに対する更新値を書き込むことは、ブロックチェーン上の前のブロックへの参照を有するブロックチェーン上の新しいブロックに更新値を書き込むことを含み、データレコードの完全な現在のバージョンの取り出しは、更新値により修正されない記憶されたデータレコードのデータ要素が参照に基づいてブロックチェーン上の前のブロックから取り出されることと、ブロックチェーン上の新しいブロックからの更新値の取り出しを必要とする。
【0509】
例えば、取り出しを改善するが記憶されたデータの冗長性を結果としてもたらすデータマージ操作を実行するのでなく、記憶されたデータレコードは代わりにブロックチェーン上の複数のブロックにより表現され、より新しい更新された情報は、ブロックチェーンの新しいブロック内に、記憶されたデータレコードの非更新値が取り出され得るブロックチェーン上の前の位置への参照ポインタと共に記憶される。
【0510】
別の実施形態によれば、方法1300はさらに、ブロックチェーン上に永続的に記憶されたデータレコードに対するデータマージ操作及びデータシリアライズを実行することを含み、データマージ操作は、(i)ブロックチェーンからデータレコードをその全体として取り出すことと、(ii)取り出されたデータレコードに更新値をマージして、更新値をその中に具現化させた完全なデータレコードを形成することを含み、データシリアライズ操作は、データマージ操作により形成され、かつ更新値をその中に具現化させた完全なデータレコードを、シリアライズされたバイトストリームにコンバートすることを含み、ブロックチェーン上の新しいブロックにトランザクションを追加することにより、ブロックチェーンにデータレコードに対する更新値を書き込むことは、ブロックチェーン上の新しいブロックにシリアライズされたバイトストリームを書き込むことを含む。
【0511】
例えば、データマージ操作から結果として生じる更新レコードは、ブロックチェーンに記憶されるより小さくより効率的なレコードを形成するために(例えば、protobuf生成器又は他のシリアライズ手段を介して)シリアライズされ得、潜在的に、シリアライズの結果として生じる抽象化を通してデータセキュリティのレイヤを提供し、任意で、高度のデータセキュリティが保証されるシリアライズされた更新レコードの更なる暗号化を可能にする。
【0512】
別の実施形態によれば、方法1300はさらに、protobuf生成器を実行して、データマージ操作により形成され、かつ更新値をその中に具現化された完全なデータレコードを、シリアライズされたバイトストリームにコンバートすることを含む。
【0513】
方法1300の別の実施形態によれば、シリアライズされたバイトストリームは、バイナリフォーマットのシリアライズされたバイトストリーム、JavaScript Object Notification(JSON)互換フォーマットのシリアライズされたバイトストリーム、平文又は情報交換用米国標準コード(American Standard Code for Information Interchange、ASCII)互換フォーマットのシリアライズされたバイトストリーム、暗号化されたシリアライズされたバイトストリーム、プロトコルバッファリングされたシリアライズされたバイトストリーム、及び16進数フォーマットのシリアライズされたバイトストリーム、のうちの少なくとも1つを形成する。
【0514】
例えば、データシリアライズ操作は、シリアライズされたデータのセキュリティ及び相互運用性の容易さに関するアプリケーション開発者のニーズの必要に依存して、様々なフォーマットのいずれかを生成することができる。
【0515】
別の実施形態によれば、方法1300はさらに、新しい記憶データレコードとしてブロックチェーン上にデータレコードを記憶するようにホスト組織に要求する、ブロックチェーンに対する第1のトランザクションを受信することを含み、新しい記憶データレコードは、第1のトランザクションにより指定されたその中に埋め込まれた複数のデータ要素を含み、ブロックチェーン上に永続的に記憶されたデータレコードを更新するようにホスト組織に要求する、ブロックチェーンに対するトランザクションを受信することは、ブロックチェーンに対する第2のトランザクションを受信することを含み、第2のトランザクションは、ブロックチェーン上へ前にトランザクション処理された新しい記憶データレコードに対する更新値を指定する。
【0516】
例えば、ブロックチェーンに記憶されるオリジナルかつ新規のレコードは依然としてデータ検証を受けるが、オリジナルかつ新規のレコードを更新する必要はない。その後、オリジナルのデータレコードへの更新は、データ検証を条件としてブロックチェーン上で適用され、記憶され得る。
【0517】
別の実施形態によれば、方法1300はさらに、ブロックチェーン上にメタデータを記憶するようにホスト組織に要求する、ブロックチェーンに対する第1のトランザクションを受信することであり、メタデータは、データレコードとデータレコードにより記憶される複数のデータ要素との有効なフォーマットを定義することを含み、ブロックチェーン上に永続的に記憶されたデータレコードを更新するようにホスト組織に要求する、ブロックチェーンに対するトランザクションを受信することは、ブロックチェーンに対する第2のトランザクションを受信することを含み、第2のトランザクションは、ブロックチェーン上へ前にトランザクション処理された記憶データレコードに対する更新値を指定し、トランザクションにより指定された更新値を検証するためにスマートコントラクトを実行することは、第1のトランザクションに従って記憶されたブロックチェーンからメタデータを取り出し、取り出されたメタデータを使用して更新値を検証することを含む。
【0518】
例えば、レコードの適切なフォーマットを定義するメタデータは、許容される方法でブロックチェーン上に記憶され、次いで、データ検証を実行する際に実行されたスマートコントラクトによる使用のために取り出され得る。さらに、所望に応じて、ブロックチェーンに記憶されたメタデータをプロトコルバッファリング又はシリアライズすることが許容される。
【0519】
別の実施形態によれば、方法1300はさらに、トランザクションにより指定された更新値の失敗した検証に基づいて、トランザクションを拒絶し、ブロックチェーンに永続的に記憶されたデータレコードに更新値が書き込まれるのを禁止することを含む。
【0520】
別の実施形態によれば、方法1300はさらに、受信したトランザクションに基づいてトランザクションタイプを決定することと、決定されたトランザクションタイプに基づいて実行されるスマートコントラクトを識別することを含み、更新値を検証するためにスマートコントラクトを実行することは、トランザクションタイプに基づいて識別されたスマートコントラクトを実行することを含む。
【0521】
例えば、ブロックチェーンとのトランザクションは、異なるトランザクションが異なるトランザクションタイプに対応するように「タイプ付け」されてもよい。このような実施形態によれば、トランザクションタイプに基づいて、スマートコントラクトが、決定されたトランザクションタイプに従って識別又はルックアップされ得る。その後、スマートコントラクトの実行は、決定されたトランザクションタイプとスマートコントラクトの識別に基づく。特定の実施形態において、トランザクションタイプはトランザクションと共に明示的に指定されるが、他の実施形態において、トランザクションタイプは、トランザクションの内容に基づいて導出される。
【0522】
方法1300の別の実施形態によれば、トランザクションにより指定された更新値を検証するためにスマートコントラクトを実行することは、ブロックチェーン上に永続的に記憶されたデータレコードの有効なフォーマットを定義するメタデータを取り出すことと、取り出されたメタデータを使用してトランザクションにより指定された更新値を検証することと、検証に基づいて成功裏の検証結果又は失敗した検証結果を発行することを含み、トランザクションは、失敗した検証結果に従ってブロックチェーンに追加されることを禁止され、トランザクションは、成功裏の検証結果に従ってブロックチェーンに追加されることを許可される。
【0523】
例えば、スマートコントラクトの実行は、品質コントロールの役割を果たし、破壊された、悪意のある、又は不正な形式のデータがブロックチェーン上へトランザクション処理されないことを保証するために利用され得る。
【0524】
方法1300の別の実施形態によれば、データレコードは、ブロックチェーンに対するCREATE assetコマンドタームを介して資産のペイロード部分内でブロックチェーン上に記憶され、データレコードは、データレコードの前のバージョンを廃止するブロックチェーンの新しいブロック内の更新と共にその全体として記憶される記憶データレコードに対するトランザクションタイプに関連づけられる。
【0525】
方法1300の別の実施形態によれば、データレコードは、ブロックチェーンに対するCREATE assetコマンドタームを介して資産のペイロード部分内でブロックチェーンに記憶され、データレコードは、増分的に記憶される記憶データレコードに対するトランザクションタイプに関連づけられ、記憶データレコードへの任意の更新は、記憶データレコードが前に記憶されたブロックチェーン上の前のブロックへの参照を有するブロックチェーン上の新しいブロックに、トランザクションにより指定された更新値を書き込み、ブロックチェーンからの記憶データレコードの取り出しは、ブロックチェーン上の新しいブロックからの更新値の取り出しと、ブロックチェーン上の前のブロックからの、更新値により修正されない残りの値の取り出しを必要とする。
【0526】
例えば、ブロックチェーン上にレコードを記憶することは、CREATE assetコマンドタームを活用してブロックチェーン上へ新しい資産をトランザクション処理してもよく、その中で、記憶データレコードは、次いで、例えば、新しい資産のペイロード部分内で符号化又は具現化される。次いで、記憶データレコードへのその後の更新は、UPDATE assetコマンド機能を使用して資産を更新し、あるいは、上記で論じられたデータマージ操作を介して生成された更新情報を有する完全なレコードのために完全に新しい資産を生成することができる。その場合、ブロックチェーンプロトコル及びアプリケーション開発者の考慮事項に依存して、UPDATE assetコマンド機能が利用されてもよく、その場合、新しいバージョンはその全体として作成されるが記憶データレコードの前の廃止されたバージョンへの参照を有し、あるいは、CREATE assetコマンドタームを利用して、前のバージョンへの全ての参照を単に除去し、新しい資産としてブロックチェーンに完全な更新レコードを書き込んでもよい。
【0527】
別の実施形態によれば、方法1300はさらに、関連エンティティを記憶するようにホスト組織に要求する、ブロックチェーンに対する第2のトランザクションを受信することであり、関連エンティティは、記憶データレコードがブロックチェーン上に永続的に記憶された第1の資産とは別個かつ区別可能な第2の資産を介してブロックチェーンに永続的に記憶されることと、CREATE assetトランザクションを介してブロックチェーンとの間でトランザクション処理して第2の資産をブロックチェーンに追加し、第2の資産のペイロード部分内に関連エンティティを記憶することと、関連エンティティに割り当てられたユニバーサル一意識別子(UUID)を介して、第2の資産内に記憶された関連エンティティを第1の資産内の記憶データレコードに関連させることを含む。
【0528】
別の実施形態によれば、方法1300はさらに、ブロックチェーンから記憶データレコードを取り出すことと、関連するエンティティに割り当てられたUUIDを含むように記憶データレコードを更新することと、UUIDをその中に含ませた更新された記憶データレコードをブロックチェーンに書き込むことを含む。
【0529】
方法1300の別の実施形態によれば、記憶データレコードは、複数のデータ要素を介して少なくとも学生ファーストネーム、学生ラストネーム、及び学生IDをその中に埋め込ませた学生レコードを含み、関連エンティティは学生成績証明書を含み、関連エンティティに割り当てられたユニバーサル一意識別子(UUID)を介して、第2の資産内に記憶された関連エンティティを第1の資産内の記憶データレコードに関連させることは、学生成績証明書に割り当てられたUUIDを介して学生成績証明書を学生レコードとリンクすることを含み、UUIDを含むように記憶データレコードを更新することは、学生レコードを学生成績証明書とリンクするUUIDを含むように学生レコードを更新することを含み、UUIDをその中に含ませた更新された記憶データレコードをブロックチェーンに書き込むことは、学生ファーストネーム、学生ラストネーム、学生ID、及び別個かつ区別可能な第2の資産を介してブロックチェーン上に記憶された学生成績証明書に割り当てられたUUIDをその中に埋め込まれた学生レコードをブロックチェーンに書き込むことを含む。
【0530】
例えば、記憶データレコードのデータ要素のうちの1つの一部ではない他の情報の記憶は、それにもかかわらず、関連エンティティ機能を介してブロックチェーン上に記憶されてもよく、これにおいて、関連エンティティ(例えば、学生成績証明書又は学生医療記録など)は、記憶データレコードとは別個の資産内に記憶されたメタデータとしてブロックチェーンに書き込まれ、次いで、関連エンティティに自動的に割り当てられたUUIDを記憶データレコードの複数のデータ要素内に含むことにより記憶データレコードとリンクされ、したがって、リンクを果たすために記憶データレコードへの更新が必要である。
【0531】
方法1300の別の実施形態によれば、データレコードのための有効なフォーマットを定義するメタデータは、ブロックチェーンに対するCREATE assetコマンドタームを介して資産のペイロード部分内でブロックチェーン上に記憶され、メタデータは、記憶されたメタデータのためのトランザクションタイプに関連づけられる。
【0532】
例えば、メタデータの記憶は、CREATE assetコマンドタームを活用してもよいが、それは、そのトランザクションタイプ及びさらに記憶される内容の観点で異なる。
【0533】
方法1300の別の実施形態によれば、追加されるトランザクションは、追加されるトランザクションがブロックチェーンの参加ノードによりブロックチェーンのプライマリチェーンの一部として受け入れられる前に、ブロックチェーンの参加ノードによる合意プロトコルを受ける。
【0534】
例えば、ブロックチェーン上のトランザクション処理は、トランザクション有効性を保証するためにそのブロックチェーンに対して必要とされる合意スキームを保有する。
【0535】
方法1300の別の実施形態によれば、メタデータは、ブロックチェーン上へメタデータを定義及びトランザクション処理したホスト組織の複数のテナントのうちの1つのみにアクセス可能であり、あるいは代替的に、メタデータは、複数のテナントのうちのどの1つがブロックチェーン上へメタデータを定義及びトランザクション処理したかにかかわらず、ブロックチェーンへのアクセスを有する参加ノードのうちの1つとして動作する複数のテナントの全てにアクセス可能である。
【0536】
例えば、ブロックチェーンに対するメタデータを、それが特定のアプリケーションのためにメタデータを作成した特定のテナント組織に対してドメイン特有なままであるという意図と共に定義し、記憶することが可能である。しかしながら、ホスト組織の管理者が、ブロックチェーン内の参加ノードとして動作しているいかなるテナント組織にもアクセス可能にされる非ドメイン特有のメタデータを作成することを望む場合があり得、あるいは、特定の場合に、テナント組織が、他のテナント組織に対してアクセス可能にされる特定の適用のためのそのようなメタデータを作成することを望む場合もある。
【0537】
方法1300の別の実施形態によれば、ブロックチェーン上へトランザクション処理されたメタデータの修正は、ブロックチェーンを介した永続的な記憶のためにブロックチェーン上へメタデータをトランザクション処理した複数のテナントのうちの1つの排他的制御下にあり、これにおいて、メタデータが、ブロックチェーンへのアクセスを有する参加ノードのうちの1つとして動作する複数のテナントのいずれかにアクセス可能であるとき、ブロックチェーン上へメタデータへの変更を書き込むために、新しい合意が必要とされ、メタデータが、ブロックチェーン上へメタデータを元々トランザクション処理した複数のテナントのうちの1つのみにより排他的使用のためにアクセス可能であるとき、ブロックチェーン上へメタデータへの変更を書き込むために、合意は必要とされない。
【0538】
例えば、メタデータが他のテナント組織にアクセス可能である場合、修正は合意コントロールを受けるが、メタデータがドメイン特有のものであり、元々それを作成してブロックチェーン上に記憶したテナント組織による排他的使用に限定されている場合、そのような修正の合意を強制することは必要ないが、任意で、ブロックチェーンプロトコルは、それにもかかわらず合意オペレーションを必要としてもよい。
【0539】
方法1300の別の実施形態によれば、ブロックチェーンのブロックチェーンプロトコルはホスト組織により定義され、さらに、ホスト組織は、ブロックチェーン上の参加ノードとして動作するホスト組織の複数のテナントのためのブロックチェーンへのアクセスを許可し、あるいは代替的に、ブロックチェーンのブロックチェーンプロトコルは、ホスト組織以外の第三者のブロックチェーンプロバイダにより定義され、さらに、ホスト組織は、ホスト組織がブロックチェーンへのアクセスを有するブロックチェーン上の参加ノードとしても動作する。
【0540】
例えば、特定のブロックチェーンは、ホスト組織自体により実施され、ホスト組織は、ブロックチェーンプロトコルを定義し、そのテナント組織のためにブロックチェーンへのアクセスを容易にし、これらは次いで、ホストorg提供ブロックチェーン上の参加ノードとして動作し、任意で、非テナント組織もホスト組織の裁量で参加ノードとして許可される。しかしながら、ホスト組織により定義又は実施されておらず、したがってホスト組織の外部で動作する既存のブロックチェーン実装も存在し、そのようなブロックチェーンプロトコルは、第三者又は外部のコンソーシアム若しくは標準化団体により定義されている。このような場合に、ホスト組織は、それにもかかわらず、ブロックチェーン上でそれ自体参加ノードとして動作することによりブロックチェーンへのアクセスを容易にすることができ、これを介して、ホスト組織は次いで、ブロックチェーンの機能へのアクセスを有することができる。このような場合に、ホスト組織に対してテナントorgにより、それらのためにプロキシとして作用するために、パーミッション及びアクセス権を付与することができ、あるいは、ホスト組織は、各テナントorgが参加ノードとして動作し得るブロックチェーン上の仮想参加ノードを実施することができ、したがって、テナント組織と、ホスト組織により実施される仮想ノード又はホスト組織との間の1:1の対応を提供することにより、関連するスマートコントラクトを実行し、ブロックチェーンに対する記憶データレコード更新トランザクションの検証を実行するが、次いで、テナント組織の独自の参加ノードが、例えばホスト組織提供APIを介して、ブロックチェーンとの間で自己認証し、次いでブロックチェーンとの間で実際にトランザクション処理することを可能にすることができる。このようにして、テナントorgは、どのブロックチェーンがホスト組織又は第三者により実施されているかにかかわらず、ブロックチェーンにトランザクションを(合意を条件として)追加することができる。
【0541】
別の実施形態によれば、方法1300はさらに、ブロックチェーンに永続的に記憶された複数のデータレコードのインデックスを維持することを含み、インデックスは、ブロックチェーンに永続的に記憶された複数のデータレコードの各々についての少なくとも位置を定義し、この位置は、ブロックチェーンに永続的に記憶されたそれぞれのデータレコードを取り出すためのブロックチェーンの1つのアドレス指定可能ブロックを定義する。
【0542】
方法1300の別の実施形態によれば、インデックスは、マークルツリー互換インデックスを含み、インデックスは、ホスト組織で永続的に記憶され、あるいはブロックチェーンに永続的に記憶され、あるいはホスト組織とブロックチェーンの双方で永続的に記憶される。
【0543】
例えば、そのようなインデックスを利用して、取り出し速度を改善することができ、インデックスは、ホスト組織及びブロックチェーンの一方又は双方の内部に維持される。重複データが永続的に記憶されるが、インデキシングされたレコードを取得する取り出し時間は、このようなデータがどのブロックに記憶されるかなどのブロックチェーン内のデータの特定の位置を定義するインデックスに起因して、大幅に短縮される。
【0544】
方法1300の別の実施形態によれば、インデックスは、ブロックチェーンに永続的に記憶される複数のデータレコードの各々について、(i)ブロックチェーンに永続的に記憶される複数のレコードの各々についての位置と、(ii)ブロックチェーンに永続的に記憶される複数のレコードレコードの内容のコピーとの双方を定義し、インデックスを維持することは、データレコードに対する更新値が更新値の成功裏の検証に従ってブロックチェーンに書き込まれるとき、データレコードに対する更新値をインデックスに書き込むことを含む。
【0545】
別の実施形態によれば、方法1300はさらに、ブロックチェーンに前に書き込まれた更新されたデータレコードの、ブロックチェーンからの取り出しを要求する第2のトランザクションを受信することと、ブロックチェーンと相互作用することなく、インデックスから更新されたデータレコードを取り出すことと、取り出しを要求する第2のトランザクションに応答して、インデックスから取り出された更新されたデータレコードを返すことを含む。
【0546】
例えば、位置情報をインデキシングすることに加えて、レコードの内容も取り出されてもよく、これは、前にインデキシングされた読取専用の取り出し要求についてブロックチェーンとトランザクション処理する必要を完全に否定する。このような記憶レコードの内容がこのようにしてインデキシングされる場合、取り出し速度は、特にインデックスがホスト組織で永続化及び維持され、したがって読取専用の取り出しのためのブロックチェーンとの相互作用を何でも排除するとき、従来のブロックチェーン取り出しトランザクションに対して劇的に増加することになる。
【0547】
方法1300の別の実施形態によれば、インデックスのノード及びリーフは、インデックスのアドレス指定構造により定義される完全又は部分アドレスを介して取り出し可能であり、この方法はさらに、インデックスのアドレス指定構造を維持することを含み、これにおいて、アドレス指定構造は、アプリケーション名前空間を定義するアドレス指定構造の第1の部分と、エンティティタイプ識別子を定義するアドレス指定構造の第2の部分と、ブロックチェーンにより記憶されインデックスによりインデキシングされるエンティティ又はデータレコードの名前を定義するアドレス指定構造の第3の部分と、を少なくとも含む。
【0548】
例えば、ノード又はリーフ又はノード下のサブツリー654は、アドレスが分かっているとき、インデックスをウォーク、トラバース、又は検索する必要なく直接参照され、インデックスから取り出され得、したがって、取り出し速度をさらに増加させる。
【0549】
方法1300の別の実施形態によれば、完全修飾アドレスを有するインデックスを参照することは、インデックスからのリーフの内容、リーフの内容を返し、部分アドレスを有するインデックスを参照することは、部分アドレスに一致するインデックスのノード下のサブツリーを返し、サブツリーは、部分アドレスに一致するインデックスのノード下に構造化されたインデックスの複数のリーフを含む。
【0550】
例えば、任意のリーフの内容は、アプリケーション名前空間、エンティティタイプ識別子、及びエンティティ又はレコードの名前を指定する完全アドレスを有するインデックスへの呼び出しにより返され得るが、部分アドレスの使用は、それがノード下のサブツリー内の全ての一致するレコードの返しを可能にするとき、極めて有益であり得る。例えば、所望される場合、学生レコードを記憶するアプリケーションは、アプリケーション名前空間及びエンティティタイプ識別子を有するが特定のエンティティ名の指定を欠く部分アドレスを指定することにより、アプリケーションの全てのメタデータを返すことができる。同様に、全ての学生レコードは、アプリケーション名前空間コードを指定し、学生データレコードのエンティティタイプ識別子を指定するが特定のエンティティ名の指定を欠く部分アドレスを使用して、返され得る。
【0551】
別の実施形態によれば、方法1300はさらに、ブロックチェーンに永続的に記憶されたデータレコードの複数のデータ要素のうちの1つ以上に対するさらなる更新値を指定する複数の後続トランザクションを受信することと、ブロックチェーンに対応する更新を書き込むことなく、受信に基づいて複数の後続トランザクションの各々を用いてインデックスを更新することにより、インデックスにさらなる更新値を指定する複数の後続トランザクションをバッファリングすることと、複数の後続トランザクションを介して受信したさらなる更新値の全てを表す単一の増分更新トランザクションをブロックチェーンに周期的に追加することにより、ブロックチェーンに永続的に記憶されたデータレコードを増分的に更新することを含む。
【0552】
例えば、IoTデバイス(モノの情報(Information of Things))のグループからのデータストリームなどの特定のアプリケーションは、ブロックチェーン内での記憶に関して実用的であるためには、あまりに高い頻度の変更を有する更新と、データの終わりのないストリームに起因する更新を結果としてもたらす。しかしながら、インデックスを介してそのような情報をバッファリングし、次いで、単一の増分更新トランザクションを介してそのようなデータをブロックチェーンに周期的にフラッシュすることは、この問題を克服し、したがって、このような高頻度のデータレコード更新がそれにもかかわらずブロックチェーン上でトランザクション処理され、記憶されることを可能にする。
【0553】
特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令が少なくともプロセッサ及びメモリをその中に有するシステムのプロセッサにより実行されると、命令はシステムに以下の動作を実行させ、該動作は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させることであり、複数のテナントの各テナントは、ブロックチェーンへのアクセスを有する参加ノードとして動作する、ことと、ブロックチェーン上に永続的に記憶されたデータレコードを更新するようにホスト組織に要求する、ブロックチェーンに対するトランザクションを受信することであり、トランザクションは、データレコードの複数のデータ要素のうちの1つ以上に対する更新値を指定することと、ブロックチェーン上のデータレコードを更新値で更新するためにトランザクションがブロックチェーンに追加されることを許可する前に、トランザクションにより指定された更新値を検証するためにスマートコントラクトを実行することと、スマートコントラクトによる更新データ値の成功裏の検証に従ってブロックチェーン上の新しいブロックにトランザクションを追加することにより、データレコードに対する更新値をブロックチェーンに書き込むことを含む。
【0554】
図14は、実施形態が動作し、設置され、統合され、又は構成され得るシステム1401の概略表現を示す。一実施形態によれば、本明細書に記載される方法論のための実装アプリケーションコードを実行するために少なくともプロセッサ1490及びメモリ1495をその中に有するシステム1401がある。このようなシステム1401は、ホスト組織、マルチテナント環境、オンデマンドサービスプロバイダ、クラウドベースのサービスプロバイダ、クライアント‐サーバ環境などのホストされたコンピューティング環境の恩恵を受けて通信上インターフェースし、協調して実行することができる。
【0555】
図示の実施形態によれば、ホスト組織内で動作し得るシステム1401は、システム1401で命令を実行するためにプロセッサ1490及びメモリ1495を含む。このような実施形態によれば、プロセッサ1490は、ホスト組織の複数のテナント1498のためにブロックチェーンサービスインターフェース1465を実行し、複数のテナント1498の各テナントは、ブロックチェーン1499へのアクセスを有する参加ノードとして動作する。ブロックチェーンサービスインターフェース1465の内部には、ブロックチェーンメタデータ定義マネージャ1492が示されており、ここでは、ブロックチェーンサービスインターフェース1465により提供されるブロックチェーン1499へのそのアクセスを介してブロックチェーン上へメタデータを書き込むものとして示されている。
【0556】
システム1401の受信インターフェース1426は、ブロックチェーン上に永続的に記憶されたデータレコードを更新するようにホスト組織に要求する、ブロックチェーンに対するトランザクション1441を受信し、これにおいて、トランザクションは、データレコードの複数のデータ要素のうちの1つ以上に対する更新値を指定する。このようなシステムはさらに、プロセッサ1490を介して実行可能なスマートコントラクト1439と、スマートコントラクト実行器及びバリデータ1443を含み、これを介し、トランザクション1441により指定された更新値は、ブロックチェーン上のデータレコードを更新値で更新するためにトランザクションがブロックチェーンに追加されることを許可する前に、検証される。ブロックチェーンサービスインターフェース1465がシステム1401にさらに提供され、これを介し、スマートコントラクト1439による更新データ値の成功裏の検証に従ってブロックチェーン上の新しいブロックにトランザクション1441を追加することにより、データレコードに対する更新値をブロックチェーンに書き込む。
【0557】
ブロックチェーンのためのブロックチェーンプロトコル1486は、ブロックチェーンのための機能のグループ(例えば、ブロックチェーン実施マネージャ1485により提供される)を定義し、これにおいて、基本機能のグループは、ブロックチェーンの任意の参加ノード1498にとってアクセス可能である。システム1401はさらに、メタデータ1489をブロックチェーン上に永続化することができ、これにおいて、受信インターフェース1426はさらに、そのようなメタデータ1489がブロックチェーンに記憶されることを要求するトランザクション1441を受信し、これは時に、受信したトランザクション1441の更新値の検証で使用される。このようなシステム1401によれば、ブロックチェーンサービスインターフェース1465はさらに、スマートコントラクト1439による成功裏の検証に従ってブロックチェーン上の新しいブロックにトランザクション1441を追加する。
【0558】
システム1401のこのような実施形態によれば、受信インターフェース1426は、データベースシステム1446により永続化されるインデックス内に記憶されるトランザクション1441のトランザクションデータ内容を渡すことができる。
【0559】
システム1401のこのような実施形態によれば、ユーザデバイス1497にGUI1440がプッシュされてもよく、これを介して、ユーザデバイス又は管理コンピューティングデバイスは、ブロックチェーンメタデータ定義マネージャ1492と相互作用することができる。
【0560】
システム1401の別の実施形態によれば、ブロックチェーンサービスインターフェース1465は、ブロックチェーン1499と相互作用し、ブロックチェーン1499へのアクセスを提供する。
【0561】
システム1401の別の実施形態によれば、受信インターフェース1426は、システムからリモートのユーザクライアントデバイス1497と通信し、パブリックインターネットを介してユーザデバイスをシステムと通信上リンクする。このような実施形態によれば、システムは、ユーザデバイス1499に対するクラウドベースのサービスプロバイダとしてホスト組織で動作し、クラウドベースのサービスプロバイダは、パブリックインターネットを介してユーザクライアントデバイスに公開された受信インターフェース1426をホストし、さらに、受信インターフェース(又は、ウェブアプリケーションインターフェース1445)は、クラウドベースのサービスプロバイダからのサービスの要求としてユーザデバイスからの入力を受信する。
【0562】
バス1416は、システム1401の様々なコンポーネントを互いの間で、システム1401の任意の他の周辺機器と、及び外部ネットワーク要素、他のマシン、クライアントデバイス、クラウドコンピューティングサービスなどの外部コンポーネントとインターフェースする。通信はさらに、LAN、WAN、又はパブリックインターネットを通じてネットワークインターフェースを介して外部装置と通信することを含んでもよく、一方、認証器1450は、システム1401により公開されたホスト組織からのデータにアクセスしようとするユーザデバイス及びユーザを認証する。
【0563】
図15Aは、説明される実施形態による別の例示的なアーキテクチャ1501を示す。
【0564】
詳細には、次に、メタデータルールユーザ1550がコンピューティングデバイス1599を利用し、具体的にグラフィカルユーザインターフェース(GUI)1510を利用して、ブロックチェーン上で発生するトランザクションに適用されるメタデータルールを構成することが示されている。
【0565】
ここに示すように、アプリケーション選択GUIがあり、これを介して、メタデータルールユーザ1550は、新しいメタデータルールが適用されるべき1つ以上のアプリケーションを最初に選択することができ、次いで下部に、ルール作成GUIがあり、これを介して、メタデータルールユーザ1550は、ブロックチェーンにデプロイされる新しいルールを作成することができる。
【0566】
ここに示すように、ルール作成(Rule Creation)GUIは、メタデータルールユーザ1550に条件ビルダインターフェースを提供し、これを介して、ユーザはGUIを通じて、存在しなければならない状態(states)と、演算子、例えば、「である(is)」又は「でない」又は「を含む」又は「を含まない」又は「に等しい」又は「より大きい」又は「より小さい」等と、次いで、記述子、例えば、「状態が保留中の変更である(State is pending change)」とき又は「状態が既知のエラーである(state is known error)」とき適用されるべきルールのための「保留中の変更」、又は追加されるべき何らかの他の新しい基準などを選択することができる。
【0567】
さらにGUIにより、ユーザは、システムを介して既に宣言され、利用可能な既存のフィルタ又はルールをロードし、あるいは新たに作成されたルール又はフィルタを保存し、あるいはソートする等を行うことができる。またさらに、以下により詳細に論じられる「実行(Run)」機能により、メタデータルールユーザ1550は、実際にブロックチェーン上へ何もトランザクション処理することなく、また、合意及び受け入れのために新たに作成されたルールをブロックチェーンにプッシュすることなく、新たに定義されたルールの実行をシミュレートすることができる。
【0568】
注目すべきことに、アプリケーション選択GUIにより、メタデータルールユーザ1550は、「銀行レコードアプリケーション(bank record application)」などの特定のアプリケーションに関連づけられたトランザクションに適用されるべきルールを作成することができ、該アプリケーションはここで、アプリケーション選択GUI内で選択されたものとして示されている。しかしながら、ブロックチェーン上の特定のトランザクションに、又はブロックチェーン上の全てのトランザクションに適用されるメタデータルールを有することも許容される。
【0569】
図15Bは、説明される実施形態による別の例示的なアーキテクチャ1502を示す。
【0570】
再度、メタデータルールユーザ1550がコンピューティングデバイス1599を利用し、具体的にグラフィカルユーザインターフェース(GUI)1510を利用して、ブロックチェーン上で発生するトランザクションに適用されるメタデータルールを構成することが示されている。
【0571】
前のGUIは、メタデータルールユーザが新たに定義されたルールを適用し、又は、前に宣言された特定のアプリケーションに関連づけられたトランザクションに前に作成されたルールを適用することを可能にしたが、ここに示されるトランザクション選択GUIは、メタデータルールユーザ1550が、タイプにかかわらず、及びそのようなトランザクションが任意の宣言されたアプリケーションに期せずして関連づけられているかどうかにかかわらず、具体的に所与のタイプのトランザクションに、又はブロックチェーン上の全てのトランザクションにルールを適用することを可能にする。
【0572】
ここに示すように、新たに定義されたメタデータルールに対して、又は利用可能な前に定義されたメタデータルールに対して、様々な許容可能な構成がある。例えば、メタデータルールユーザ1550は、新規又は既存のルールを「全てのトランザクション‐事前実行(All transactions - Pre Execution)」に適用することができ、その場合、ルールは、説明されたように、トランザクション自体を実行する前にブロックチェーン上に到着するあらゆるトランザクションに対して実行される。このような事前実行ルールは、任意の定義された基準及び条件に利用されてよいが、理想的には検証手順に適し、例えば、英数字文字が数値フィールドに入力されていないこと、あるいは、日付フィールドに入力された日付が有効な日付フォーマットに対応し、又は許容可能な日数の範囲内などの特定の制限に準拠し、又は未来でない若しくは過去でない日付を表すことなどを検証することである。ブロックチェーンで受け取ったトランザクションの実行の前に生じるべきさらなる検証スキームには、例えば、アカウント保持者が要求された資金移転に利用可能な十分な資金を有することの検証を含んでもよい。例えば、ユーザが、1ビットコイン値又は何らかの他の単位の価値を別のユーザに移転したい場合、事前実行ルールは、ユーザ又はアカウント保持者が移転されるべき資金の額以上の資金を所有していることを検証するために、チェックすることができる。
【0573】
さらに、全てのトランザクションに対して事後実行メタデータルールが許容可能である。このようなルールは、ブロックチェーン上でトランザクションが発生した後に何らかのアクションをとるために利用することができ、例えば、通知をトリガすること、又はトランザクション要求元に確認を発行すること、又はトランザクションデータをログに、若しくは分析エンジンに、若しくはAIエンジン等にプッシュすることなどである。多くの可能性が存在するが、事後実行トランザクションに対するルール作成及び適用は、ルールが、トランザクションの実行後にブロックチェーン上のあらゆるトランザクションに、又は代替的に、ルールの条件及び基準に基づき、ブロックチェーン上のトランザクションの実行後に定義された基準及び条件に一致するブロックチェーン上のあらゆるトランザクションに適用されることを意味する。
【0574】
さらに、特定のトランザクションタイプ(事前又は事後のトランザクション実行のため)を有するトランザクションに対して、又は、特定のトランザクションタイプを有し、かつルール作成GUIで定められた定義ルールに従う特定の定義された基準及び条件を満たすトランザクションに対して、定義されたメタデータルールの適用が許容される。例えば、ここでは、メタデータルールユーザ1550が特定のルールの適用のために「ローン承認トランザクションタイプ(Loan Approval Transaction Type)」を選択していることが示されており、これは、GUIで示されているように、事前実行(pre-execution)についてブロックチェーンに期せずしてすでに定義及びデプロイされている。デプロイされた状態は、この既存のメタデータルールについて合意がすでに達せられていることを示し、一方、新たに定義されたルールは、ステータスが「デプロイ済み(deployed)」状態を示す前に合意が達せられる必要がある。
【0575】
最終的に、GUIは、メタデータルールユーザ1550により提供される入力されたデータを消費し、アプリケーションコードを自動生成する。例えば、ここに示される例示的なコードは、GUIにより出力され、合意とその後の合致するトランザクションに対する実行のためにブロックチェーン上へトランザクション処理され得る。
【表4】
【0576】
したがって、ここに示されるように、GUIは適切な構文を出力し、これは、この例によれば、「現在の在庫品」が5未満であるか、又は「当月」が12月の状況で「現在の在庫品」が20未満であるトランザクションに適用され、推定上、なぜならば、12月の月には需要の急上昇があり、ゆえに、メタデータルール作成者が、在庫品が5未満に該当するときはいつでも、又は12月の特別な状況では在庫品が20未満に該当するときに、そのようなルールが適用されるべきと指示したためである。
【0577】
このような構文は、次いで、ブロックチェーンプラットフォーム非依存の構文をターゲットにされたブロックチェーンのネイティブブロックチェーン構文に変換するためにApex翻訳エンジンを通して処理され得、上記ターゲットにされたブロックチェーンに対し、ルールが適用され、スマートコントラクトを介してそのそれぞれのブロックチェーン上で実行されることになり、これは、例えば、
図4Cに示されているブロックチェーンへのメタデータの発行(デプロイメント)及びその取り出しと共に、
図4A及び4Bに関して前述したとおりである。
【0578】
構文に従うコードは、次いで、スマートコントラクト実行を介して必要なルールを実現する。注目すべきことに、このコードは、メタデータルールユーザ1550のためにGUIインターフェースにより作成され、したがって、このようなルールの構成及び作成を大幅に簡素化する。
【0579】
ブロックチェーン技術の機能を活用しようとするビジネスユーザにとっての最大の問題の1つは、スマートコントラクト実行のためのビジネスルールの作成とプログラミングである。
【0580】
問題として、異なるブロックチェーンプラットフォームの各々は、そのようなビジネスルールを実行するための異なるスマートコントラクト要件を有しており、結果として、異なる構文、異なる許容可能な条件及び基準、並びに任意の作成されたルールをそれぞれのブロックチェーンにデプロイするための異なるメカニズムがもたらされる。
【0581】
結果的に、そのようなビジネスルールを実行するための検証スキーム及びワークフローはスマートコントラクトを介して書かれ、該スマートコントラクトは次いで、それぞれのブロックチェーンにデプロイされる。異なる構文のため、このようなルールは、具体的に、このようなルールが適用及び利用されるべき特定のブロックチェーンのために、プログラマ及び開発者により手動で書かれなければならない。
【0582】
したがって、説明される実施形態によれば、メタデータ駆動型ブロックチェーンプラットフォームを利用するメタデータルールユーザ、ブロックチェーン管理者、及びプログラマは、メタデータ駆動型ビジネスルールを作成することができ、該メタデータ駆動型ビジネスルールは次いで、同じスマートコントラクトを介してそれぞれのブロックチェーンプラットフォーム上で実行されるが、メタデータルールユーザ、ブロックチェーン管理者、及びプログラマがあらゆる異なるプラットフォームに対して異なるルール構文を作成する必要がない。
【0583】
したがって、ブロックチェーン管理者及びメタデータルールユーザは、それら独自のクラウド環境内のビジネスルールを、ホスト組織により提供されたGUIを利用して定義することが許容され、これは次いで、そのようなルールを定義する必要な構文及びメタデータを生成し、これは次いで、メタデータとしてブロックチェーンに記憶されると共に、特定の実施形態によれば、ネイティブブロックチェーンスマートコントラクト実行フォーマットにコンバートされる。
【0584】
ブロックチェーンを利用するソフトウェアシステムが複雑さと使用法を増すとき、それは、システムのロジック及び/又は挙動に対するあらゆる変更が前に構成されたスマートコントラクト及びビジネスルールを破る場合に、ビジネスユーザにとって負担になる。したがって、ビジネスユーザは新しいコードを書き、デプロイする必要があり、これは、非中央集権的なネットワークでは、ビジネスユーザがしばしば、彼らが使用しているブロックチェーンプラットフォームがどのように及びいつ更新又は修正されるかを指示する立場にないことを考えると、重要な問題である。
【0585】
したがって、ブロックチェーンにおけるメタデータ駆動型ビジネスルールエンジンの使用は、このようなビジネスユーザに簡素なインターフェースを提供し、システムの挙動を定義する新しいルール及びロジックを誰でも捕捉できるようにし、これには、GUIの使用を通して非プログラマが含まれる。ブロックチェーンに書き込まれたメタデータにより表される、このようなルールは次いで、スマートコントラクト実行を介してブロックチェーンにより実行され得る。ブロックチェーンプラットフォームの挙動に対する変更が生じたとき、メタデータは再書き込み又は再コード化される必要はなく、むしろ、ブロックチェーンに記憶されたメタデータは、ブロックチェーンプラットフォームの新しい挙動に従って単に読み取られ、実行され、なぜならば、定義されたメタデータルールは、基礎をなすブロックチェーンプラットフォームに対するそのような変更に関して不可知的であるためである。しかしながら、特定の状況では、ホスト組織のブロックチェーンメタデータ定義マネージャ196は、定義されたメタデータルールの、問題のブロックチェーンのネイティブスマートコントラクト実行可能コードへの再コンバージョンをトリガする必要があり得るが、そのようなイベントは自動化され得、ビジネスユーザの側の特定のアクションを必要とせず、確かに、ビジネスユーザがそのようなルールを実現するためにそれらのビジネスルール又は関連コードを再び書く必要はない。他の実施形態において、ブロックチェーンに書き込まれたメタデータは、ビジネスルールが適用された特定のブロックチェーンプラットフォームの能力に依存して、ホスト組織又はビジネスユーザによるアクションなく、スマートコントラクト実行エンジンにより単に再び読み取られ、ブロックチェーンのバックエンドプロセッサで適切に解釈及び実行され得る。
【0586】
特定の実施形態によれば、ブロックチェーン管理者は、
図15Aにおけるアプリケーション選択GUIを介して選択されたものなどの特定の宣言されたアプリケーション(DApp)のためのマーケティングロジック及びビジネスルールを定義することができる。例えば、適切なパーミッションを有するブロックチェーン管理者又は他のメタデータルールユーザは、次いで、ブロックチェーン内のトランザクションに基づいて、特定の顧客又はアイテムがいつ割引きに適格であるかを指定する条件を定義することができる。条件は、特定の顧客、又は特定のアイテム、又は特定の基準について、例えば、在庫水準、日付範囲、又はビジネスの目標のニーズのビジネスロジックが適する何にでも指定することができる。
【0587】
通常、このようなビジネスルールの作成は、ブロックチェーンプラットフォームのスマートコントラクト実行エンジンを介した実行のために、特化された構文をプログラマにより開発する必要があり、そのような構文は、異なるブロックチェーンプラットフォームでは異なる。しかしながら、メタデータルールユーザ又はブロックチェーン管理者が、ホスト組織のブロックチェーンサービススイートにより提供されるブロックチェーンメタデータ定義マネージャ196を利用する場合、ブロックチェーン管理者は、GUIを介してルールを定義すればよく、これらを特定の宣言されたアプリケーション又は特定のタイプのトランザクション(又は、全てのトランザクション)に関連づけ、次いで、サブミットされたルールがひとたびブロックチェーンネットワークの合意メカニズムにより承認されると、定義されたルールは、ホスト組織のブロックチェーンサービスインターフェース並びに関連するスマートコントラクト実行及び管理エンジンにより自動的に実行される。
【0588】
図15Cは、説明される実施形態による別の例示的なアーキテクチャ1503を示す。
【0589】
ここに示されるように、メタデータルールプログラマ1551又は開発者がルール構文を手動で作成したい場合、又は別のアプリケーションが適切な構文をメタデータルール作成エンジンにプッシュするために利用される場合に、メタデータルールユーザによる、アプリケーションプログラミングインターフェース(API)1511を介した、メタデータルールの許容可能なエントリがさらにあり、これは、メタデータルールユーザがGUIを介してそのようなルールを構成する場合と同じ効果で、メタデータルールAPIを介して許容される方法で達成され得る。
【0590】
そのようなメタデータルールがどのように書かれるかにかかわらず、それが提供されるGUI又はAPIインターフェースを介する場合、定義されたルールは、アプリケーションにサブミットされたデータエントリ及び入力に対する検証要件を強制するために、あるいは上述したような特定の顧客のための又は特定の在庫水準に基づく商品の割引きなどの様々な実行フローをトリガするために利用され得る。
【0591】
ひとたび定義されると、ブロックチェーンに書き込まれたメタデータルールは、利用可能な場合にはブロックチェーンのスマートコントラクト実行エンジンを使用してブロックチェーンネットワークレベルで実行され、あるいは、そのような能力がブロックチェーンプラットフォームを介して利用できないときにはホスト組織のスマートコントラクト実行エンジンを介して実行される。
【0592】
そのようなメタデータルール駆動型のスマートコントラクトを利用し、例示的な検証には、例えば、誤ったデータのエントリ(例えば、誤った桁数の電話番号、又は誤った電子メールアドレス等)、又は不適切な型のデータのエントリ、例えば数字のみのフィールドへの英字の入力などの禁止を含んでもよい。
【0593】
しかしながら、かなりしばしば、ルールは検証特有のものではなく、ブロックチェーンメタデータ定義マネージャ196を介して定義されるより複雑なビジネスルールを表す。例えば、在庫品の適用例で上述したように、在庫水準が高すぎること又は在庫水準が低下していること等に基づいて取られる様々なアクションがあり得る。したがって、このようなメタデータルールは、複数のパートナーにわたるストック水準の管理に利用することができ、パートナーの各々は、それら独自のローカルの在庫品を有し得るが、パートナーに対して、ルールは総計の在庫品等に基づいて適用される。
【0594】
従来のソリューションでは、プログラマ及び開発者がルールをスマートコントラクト実行のためのネイティブブロックチェーン実行可能フォーマットにコード化する必要があり、そのプロセスは複雑で、エラーを起こしやすく、まさにそのようなルールを作成及び定義する可能性が最も高い個人である初心者又は非プログラマのビジネスユーザにとって単純に利用できなかった。したがって、この構成は、ブロックチェーン技術を利用し、スマートコントラクト実行の能力を活用することを望む企業の側にコストと複雑さを加え、なぜならば、エラーの高い可能性の問題に対処せずに、エンジンへのルールをコード化するために高度に熟練した開発者に支払う必要があったためである。
【0595】
メタデータルールが、ブロックチェーン非依存のフォーマットを利用して定義され、ブロックチェーンに書き込まれるため、同じメタデータルールが1回作成され、次いで複数の異なるブロックチェーンプラットフォームに適用されることが可能である。さらに、UIが、ユーザが完全な構文を(GUI又はAPIを介して)作成することを可能にするため、GUI条件ビルダが、ビジネス開発者のニーズに特有の条件を指定し、又はAPIを通じてそのような条件をプログラムすることがさらに可能である。
【0596】
またさらに、GUI又はAPIが利用されるかどうかにかかわらず、定義されたメタデータルールは、関連するアプリケーションに対して、又は関連するトランザクションに対して許容可能なエンティティ、フィールド定義、及びフィールドタイプの作成に制限され、なぜならば、メタデータ駆動型ブロックチェーンプラットフォームは、宣言されたアプリケーション、又は宣言されたエンティティ、又はその従属するフィールド定義及びフィールドタイプに対して定義されたメタデータに違反するルール又は条件の作成を許可しないためである。
【0597】
このようにして、メタデータルールの作成は、ブロックチェーン管理者又はメタデータルールユーザが相互作用するためのパーミッションを有する、及びそのような定義されたビジネスルールが関連する宣言されたアプリケーション(DApp)、エンティティなどのメタデータに準拠している、条件、基準、トランザクション、及び宣言されたアプリケーションに制限される。
【0598】
したがって、メタデータルールの定義を、既存のアプリケーション、エンティティ、トランザクションタイプなどの前に定義されたメタデータ定義に準拠する許容可能なエントリのみに制限することにより、そのようなルールのコードが自由形式で書かれた場合に発生し得るセキュリティホール、論理エラー、又は他の不正な形式のビジネスルールの可能性を大幅に低減することがさらに可能であり、これは、そのようなメタデータ定義に、又は条件ビルダGUI上の許容可能な基準に制限されない。
【0599】
さらに別の実施形態によれば、ひとたびメタデータルールコードがGUIから出力され、あるいはAPIにより受け入れられると、それは次いで、メタデータルールコードがブロックチェーンにサブミットされる前に、メタデータ管理モデルを通じて処理され、トラバースされる。
【0600】
次いで、管理モデルを通じてコードを処理することにより、メタデータルールを作成したメタデータルールユーザ又はブロックチェーン管理者に、作成されたコードがブロックチェーントランザクション及び資産にどのように影響するかについての情報を提示し、したがって、ユーザは、シミュレートされた又はサンドボックスの環境内でオンザフライで(on the fly)、ルールがブロックチェーントランザクションに対して実行されたときどのように機能するかを確認することができる。例えば、管理モデル及びルールシミュレーションは、特定の値を模倣又はシミュレートして、ルールがブロックチェーン上で実行されたとき何を作成するか、及びデータ、資産、及びトランザクション実行がブロックチェーン上でどのように影響を受けるかを示すことができる。
【0601】
別の実施形態によれば、ひとたびコードが作成され、管理モデルを通じて処理されると、ユーザは、メタデータルール及びそのようなルールを定義するコードがブロックチェーン上に受け入れられる前に、評価及び合意のために、コードをブロックチェーンプラットフォーム上のパートナーにサブミットすることができる(例えば、コードを他のブロックチェーン参加ノードにサブミットする)。
【0602】
このような実施形態によれば、ブロックチェーン上のパートナー及び参加ノードは、ブロックチェーン上で何も実際に実行することなく、同じ管理モデルを適用し、また、作成されたメタデータルールの実行をシミュレートして、ルールがブロックチェーンのデータ、資産、及びトランザクションにどのように影響するかを観測することができる。
【0603】
シミュレートされた実行に基づいて、パートナー及び参加ノードは次いで、定義されたメタデータルールがブロックチェーン上で受け入れられるか否かを決定するために、合意のために投票し、あるいはルールなどを拒否するために投票することができる。
【0604】
特定の実施形態によれば、ルールのためのコード及び構文は、JSON互換フォーマットで作成されるが、その後、合意の後にブロックチェーン上に書き込まれるときWebアセンブリ言語に翻訳され、したがって、ブロックチェーン上へひとたびデプロイされると誰にも変更できないコントラクトの暗号学的特性を有するより安全なバイナリフォーマットをとる。言い換えると、参加ノードの全ては、デプロイされ及び受け入れられたコードをWebアセンブリ言語フォーマットで見ることができるが、これらはそれを変更できず、ルールの作成/編集、メタデータ定義に対する検証、管理への従属、及び合意のための再度のサブミットとその後のブロックチェーン上での受け入れの全体を通じて再度進むことはない。
【0605】
WebAssembly(Wasm又はWASMとしばしば短縮される)は、Webページにより使用される実行ファイルのためのバイナリフォーマット及び対応するアセンブリ様のテキストフォーマットを定義する標準である。Wasmの目的は、WebブラウザのJavaScriptエンジンがネイティブマシンコードとほぼ同じ速さでページスクリプトを実行できるようにすることである。JavaScriptの完全な置き換えではないが、Wasmは、ページスクリプトのパフォーマンスに不可欠な部分の実行の改善を提供し、通常のスクリプトコードと同じサンドボックス内で実行される。
【0606】
WebAssemblyコード又はWasmコードの表現は、JavaScriptをパースするよりも速いように、並びに実行するのにより速く、極めてコンパクトなコード表現に従うように設計された、ポータブルな抽象構造化スタックマシン上で実行されることが意図されている。
【0607】
ひとたびブロックチェーンに受け入れられると、スマートコントラクトは、トランザクションタイプに基づいて、又は全てのトランザクションに基づいて、又は定義された基準及び条件が何であれ定義され受け入れられたことに基づいて、トリガされ、実行される。
【0608】
そのような実施形態によれば、スマートコントラクトの実行は、ブロックチェーン上の複数のノードにより、又はブロックチェーン上の全てのノードにより実行され、次いで、出力が複数のブロックチェーンノードにより比較されて、同時実行からの出力が同一であることを保証し、改ざん、又はなりすましの試み、又は悪意のある若しくは詐欺的なスマートコントラクト実行出力の真正としてのサブミットを防止する。
【0609】
スマートコントラクトを実行した複数の参加ノードについて出力が同一であると仮定すると、合意は満たされ、スマートコントラクト実行の結果又は出力はブロックチェーン上に受け入れられる。
【0610】
上述のように、事前及び事後双方のトランザクション実行構成が可能にされ、これにおいて、事前実行は、典型的には、ブロックチェーンで受け取ったトランザクションをちょうど実行しようとする前の、データの検証に対して好ましく、事後実行は、イベント又はトランザクションが特定の方法で発生し、次いでトランザクションの実行の後にスマートコントラクトを介して何らかのアクションをとるか否かを評価するために利用される。
【0611】
メタデータルールは、オンザフライでメタデータ駆動型及び宣言型であると考えられ、なぜならば、ルールは、条件ビルダを利用して作成され、トランザクション又はルール実行がサンドボックス環境内でどのように見えるかをテストするためにシミュレートされ得るためである。このようにして、ブロックチェーン上のパートナー及びその他の参加ノードは、彼らも、コストがかかり、時間がかかり、負担のかかるプロセスで数千行のコードをレビューするためにプログラマ又は開発者に支払う必要なくGUIを介してルールをレビューすることができるため、安心し、したがって、これは次に、GUI及びAPIからスマートコントラクトにコード化できる条件及び値を、特定のトランザクションに対して宣言されたアプリケーション又はその関連するエンティティ又はエンティティ及びフィールド定義等に対する定義されたメタデータと互換性があるものに制限することにより、セキュリティを大幅に改善する。
【0612】
さらに、コードはWebAssembly(WASM)フォーマットにコンバートされ、バイナリとして表現されるため、それは改ざん及び悪意のある行為者から安全である。
【0613】
またさらなる実施形態によれば、メタデータルールを介して指定される条件はさらに、ブロックチェーン上のトランザクションが宣言されたアプリケーションの「所有者」によるものか、又は宣言されたアプリケーション(DApp)の「当事者」によるものかによって制限される。例えば、アプリケーションの所有者は、例えば、ブロックチェーン上へトランザクション処理されたレコードを修正する強化された権利を有してもよく、一方、宣言されたアプリケーションに対して認可されたネットワーク参加者は、単にアプリケーションの「当事者」であってよく、ゆえに、レコードを読み取ると共に新規レコードを作成し、レコードのさらなる情報をサブミットするパーミッションを有し得るが、おそらくこれらは、特定のレコードを修正又は改変する権限を欠き、したがって、ブロックチェーン上のデータに対するパーミッション強制メカニズムを可能にし、これにおいて、メタデータルールは、例えば、既存のレコードを変更しようとするトランザクションが、事前トランザクション実行スマートコントラクトにおいて、トランザクションサブミット者がアプリケーションの単に「当事者」ではなくアプリケーションの「所有者」であることを最初に「検証」しなければならないことを要求するルールを定義する。パーミッション強制の多くの他のバリエーションが可能である。またさらに、そのようなルールは、「所有者」ではない「当事者」がレコード変更トランザクションをサブミットしたとき通知をトリガするために利用されてもよく、定義されたメタデータにより、ルールは次いで、そのトランザクションが処理されるか否か、又は拒絶されるか否かを定義する。
【0614】
図16は、クラウドベースのオンデマンドの機能性をユーザ、顧客、及びサブスクライバに提供するような機能性を実行するためにプロセッサ及びメモリによりサポートされるデータベースシステム実装などのクラウドベースのコンピューティング環境と関連して分散台帳技術(DLT)を使用して宣言型及びメタデータ駆動型のブロックチェーンプラットフォームを実施する方法1600を示すフロー図を示す。
【0615】
方法1600は、本明細書に記載されるシステム及び方法の遂行において運用、定義、宣言、関連づけ、書き込み、受信、取り出し、追加、トランザクション処理、訓練、配布、処理、伝送、分析、トリガ、プッシュ、推奨、パース、永続化、公開、ロード、生成、記憶、維持、作成、戻し、提示、インターフェース、通信、クエリ、提供、決定、表示、更新、送信等の様々な動作を実行するためのハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)を含み得る処理論理により実行することができる。例えば、
図1及びそれ以降に示されるホストされたコンピューティング環境111、ブロックチェーンサービスインターフェース1650、及びそのデータベースシステム130、並びに本明細書に記載される他のシステム及びコンポーネントは、記載される方法論を実施することができる。以下に列挙されるブロック及び/又は動作のいくつかは、特定の実施形態によれば任意である。提示されるブロックの番号付けは明りょうさのためのものであり、様々なブロックが発生しなければならない動作の順序を規定することを意図したものではない。
【0616】
図16に示す方法1600を参照し、ブロック1605で開始し、ホスト組織のシステムによる、新しいアプリケーションを宣言し、新しいアプリケーションに対して定義されたメタデータをブロックチェーン上へトランザクション処理するための動作が、以下の動作により説明される。
【0617】
ブロック1610において、処理論理は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させ、複数のテナントの各テナントは、ブロックチェーンへのアクセスを有する参加ノードとして動作する。
【0618】
ブロック1615において、処理論理は、システムと通信上インターフェースされたユーザデバイスから、新しいアプリケーションを宣言する第1の入力を受信する。
【0619】
ブロック1620において、処理論理は、新しいアプリケーションのために複数のネットワーク参加者を追加する、ユーザデバイスからの第2の入力を受信し、ネットワーク参加者は、新しいアプリケーションへのアクセス権を付与される。
【0620】
ブロック1625において、処理論理は、新しいアプリケーションのための複数のエンティティタイプを宣言する、ユーザデバイスからの第3の入力を受信する。
【0621】
ブロック1630において、処理論理は、複数のエンティティタイプの各々についての1つ以上の新しいフィールド定義を宣言する、ユーザデバイスからの第4の入力を受信する。
【0622】
ブロック1635において、処理論理は、新しいアプリケーションに対して定義されたメタデータとして少なくとも(i)宣言された複数のネットワーク参加者、(ii)宣言された複数のエンティティタイプ、及び(iii)複数のエンティティタイプの各々に対して宣言された1つ以上の新しいフィールド定義をその中に符号化されたブロックチェーン資産を生成する。
【0623】
ブロック1640において、処理論理は、新しいアプリケーションに対して定義されたメタデータをその中に符号化されたブロックチェーン資産をブロックチェーン上へトランザクション処理する。
【0624】
図17は、クラウドベースのオンデマンドの機能性をユーザ、顧客、及びサブスクライバに提供するような機能性を実行するためにプロセッサ及びメモリによりサポートされるデータベースシステム実装などのクラウドベースのコンピューティング環境と関連して宣言型の、メタデータ駆動型の、暗号的に立証可能なマルチネットワーク(マルチテナント)共有台帳を実施する方法1700を示すフロー図を示す。
【0625】
方法1700は、本明細書に記載されるシステム及び方法の遂行において運用、定義、宣言、関連づけ、書き込み、受信、取り出し、追加、トランザクション処理、訓練、配布、処理、伝送、分析、トリガ、プッシュ、推奨、パース、永続化、公開、ロード、生成、記憶、維持、作成、戻し、提示、インターフェース、通信、クエリ、提供、決定、表示、更新、送信等の様々な動作を実行するためのハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)を含み得る処理論理により実行することができる。例えば、
図1及びそれ以降に示されるホストされたコンピューティング環境111、ブロックチェーンサービスインターフェース1650、及びそのデータベースシステム130、並びに本明細書に記載される他のシステム及びコンポーネントは、記載される方法論を実施することができる。以下に列挙されるブロック及び/又は動作のいくつかは、特定の実施形態によれば任意である。提示されるブロックの番号付けは明りょうさのためのものであり、様々なブロックが発生しなければならない動作の順序を規定することを意図したものではない。
【0626】
図17に示す方法1700を参照し、ブロック1705で開始し、処理論理は、共有台帳に対する複数の認可されたネットワーク参加者のために共有台帳へのインターフェースを動作させ、共有台帳は、複数の分散された共有台帳ノードを介してデータを永続化する(persists)。
【0627】
ブロック1710において、処理論理は、複数の認可されたネットワーク参加者のうちの最初の認可されたネットワーク参加者としての創設者orgのためにデータを記憶するために、共有台帳内にネットワークorgを生成する。
【0628】
ブロック1715において、処理論理は、ネットワークorgに対するさらなる認可されたネットワーク参加者としての複数のパートナーorgを定義する、創設者orgからの入力を受信し、認可されたネットワーク参加者の全てが、データを複製することなく共有台帳を介してネットワークorgにより記憶されたデータへの読み取りアクセスを有する。
【0629】
ブロック1720において、処理論理は、パートナーorgの各々が共有台帳内のネットワークorgと相互作用するためのパーミッションを定義する、創設者orgからの入力を受信する。
【0630】
ブロック1725において、処理論理は、共有台帳に、少なくともネットワークorgに対して認可されたネットワーク参加者と、パートナーorgの各々に対して定義されたパーミッションとを定義するメタデータを書き込む。
【0631】
ブロック1730において、処理論理は、認可されたネットワーク参加者からの、ネットワークorgと相互作用する要求を受信する。
【0632】
ブロック1735において、処理論理は、要求の遂行において共有台帳との間でトランザクション処理する。
【0633】
図18Aは、説明される実施形態による、オンデマンドデータベースサービスが動作し得る環境1898のブロック図を示す。環境1898は、ユーザシステム1812、ネットワーク1814、システム1816、プロセッサシステム1817、アプリケーションプラットフォーム1818、ネットワークインターフェース1820、テナントデータストレージ1822、システムデータストレージ1824、プログラムコード1826、及びプロセス空間1828を含んでもよい。他の実施形態において、環境1898は、列挙されたコンポーネントの全てを有するわけではない場合があり、かつ/あるいは上に列挙されたコンポーネントに代わって又は追加で他のコンポーネントを有してもよい。
【0634】
環境1898は、オンデマンドデータベースサービスが存在する環境である。ユーザシステム1812は、データベースユーザシステムにアクセスするためにユーザにより使用される任意のマシン又はシステムでもよい。例えば、ユーザシステム1812のいずれかは、ハンドヘルドコンピューティングデバイス、モバイルフォン、ラップトップコンピュータ、ワークステーション、及び/又はコンピューティングデバイスのネットワークでもよい。
図18Aに(及び、
図18Bでより詳細に)示されるように、ユーザシステム1812は、ネットワーク1814を介してオンデマンドデータベースサービスと相互作用してもよく、それがシステム1816である。
【0635】
システム1816などのオンデマンドデータベースサービスは、必ずしもデータベースシステムの構築及び/又は維持に関係する必要はない外部ユーザに利用可能にされるデータベースシステムであるが、代わりに、ユーザがデータベースシステムを必要とするときに(例えば、ユーザの要求に応じて)それらの使用に利用可能でもよい。いくつかのオンデマンドデータベースサービスは、共通データベースイメージのテーブルに記憶された1つ以上のテナントからの情報を記憶してマルチテナントデータベースシステム(multi-tenant database system、MTS)を形成し得る。したがって、「オンデマンドデータベースサービス1816」と「システム1816」は、本明細書において交換可能に用いられる。データベースイメージは、1つ以上のデータベースオブジェクトを含んでもよい。関係データベース管理システム(RDMS)又は同等物が、データベースオブジェクトに対して情報の記憶及び取り出しを実行してもよい。アプリケーションプラットフォーム1818は、ハードウェア及び/又はソフトウェア、例えばオペレーティングシステムなどの、システム1816のアプリケーションを実行可能にするフレームワークでもよい。一実施形態において、オンデマンドデータベースサービス1816は、オンデマンドデータベースサービスのプロバイダにより開発された1つ以上のアプリケーションを作成、管理、及び実行すること、ユーザがユーザシステム1812を介してオンデマンドデータベースサービスにアクセスすること、又はサードパーティアプリケーション開発者がユーザシステム1812を介してオンデマンドデータベースサービスにアクセスすることを可能にするアプリケーションプラットフォーム1818を含んでもよい。
【0636】
ユーザシステム1812のユーザは、そのそれぞれのキャパシティが異なってもよく、特定のユーザシステム1812のキャパシティは専ら、現在のユーザに対するパーミッション(パーミッションレベル)により決定されてもよい。例えば、販売員が、特定のユーザシステム1812を使用してシステム1816と相互作用している場合、そのユーザシステムは、その販売員に割り振られたキャパシティを有する。しかしながら、管理者が、そのユーザシステムを使用してシステム1816と相互作用している間、そのユーザシステムは、その管理者に割り振られたキャパシティを有する。階層的役割モデルを有するシステムでは、1つのパーミッションレベルのユーザは、より下位のパーミッションレベルのユーザによりアクセス可能なアプリケーション、データ、及びデータベース情報へのアクセスを有し得るが、より上位のパーミッションレベルのユーザによりアクセス可能な特定のアプリケーション、データベース情報、及びデータへのアクセスを有さない場合がある。したがって、異なるユーザは、ユーザのセキュリティ又はパーミッションレベルに依存して、アプリケーション及びデータベース情報へのアクセス及び修正に関して異なる能力を有する。
【0637】
ネットワーク1814は、互いに通信するデバイスの任意のネットワーク又はネットワークの組み合わせである。例えば、ネットワーク1814は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうち任意の1つ又は任意の組み合わせであり得る。現在使用されているコンピュータネットワークの最も一般的なタイプは、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)ネットワーク、例えば、大文字「I」を用いて「インターネット(Internet)」としばしば呼ばれるネットワークのグローバルインターネットワークなどであるため、そのネットワークが、本明細書の例の多くで用いられる。しかしながら、TCP/IPは頻繁に実装されるプロトコルであるが、請求される実施形態が利用し得るネットワークはそのように限定されないことが理解される。
【0638】
ユーザシステム1812は、TCP/IPを使用してシステム1816と通信し、より上位のネットワークレベルでは、HTTP、FTP、AFS、WAPなどの他の一般的なインターネットプロトコルを通信するのに使用してもよい。HTTPが使用される例では、ユーザシステム1812は、システム1816におけるHTTPサーバとの間でHTTPメッセージを送受信するために、一般に「ブラウザ」と呼ばれるHTTPクライアントを含んでもよい。そのようなHTTPサーバは、システム1816とネットワーク1814との間の単独のネットワークインターフェースとして実装されてもよいが、他の手法が同様に又は代わりに使用されてもよい。いくつかの実装において、システム1816とネットワーク1814との間のインターフェースは、ラウンドロビンHTTPリクエスト分配器などの負荷共有機能を含み、負荷のバランスをとり、入ってくるHTTPリクエストを複数のサーバにわたり均等に分配する。少なくとも、そのサーバにアクセスしているユーザについて、複数のサーバの各々は、MTSのデータへのアクセスを有するが、代わりに、他の代替的な構成が使用されてもよい。
【0639】
一実施形態において、
図18Aに示すシステム1816は、ウェブベースの顧客関係管理(CRM)システムを実現する。例えば、一実施形態において、システム1816は、CRMソフトウェアアプリケーションを実装及び実行し、ユーザシステム1812との間で関連データ、コード、フォーム、ウェブページ、及び他の情報を提供し、関連データ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すように構成されたアプリケーションサーバを含む。マルチテナントシステムでは、複数のテナントのデータが同じ物理データベースオブジェクト内に記憶され得るが、テナントデータは典型的には、当該データが明示的に共有されない限り、1つのテナントのデータが他のテナントのデータと論理的に別個に保持され、それにより、1つのテナントが他のテナントのデータへのアクセスを有さないように配置される。特定の実施形態において、システム1816は、CRMアプリケーション以外の、又は追加のアプリケーションを実現する。例えば、システム1816は、CRMアプリケーションを含む複数のホストされた(標準及びカスタム)アプリケーションへのテナントアクセスを提供してもよい。ユーザ(又はサードパーティ開発者)アプリケーションは、CRMを含んでも含まなくてもよいが、アプリケーションプラットフォーム1818によりサポートされてもよく、アプリケーションプラットフォーム1818は、アプリケーションの作成、1つ以上のデータベースオブジェクトへの記憶、及びシステム1816のプロセス空間内の仮想マシンにおけるアプリケーションの実行を管理する。
【0640】
システム1816の要素の1つの配置が
図18Aに示されており、ネットワークインターフェース1820、アプリケーションプラットフォーム1818、テナントデータ1823のためのテナントデータストレージ1822、システム1816と可能性として複数のテナントがアクセス可能なシステムデータ1825のためのシステムデータストレージ1824、システム1816の様々な機能を実現するプログラムコード1826、及びアプリケーションホスティングサービスの一部としてアプリケーションを実行するなど、MTSシステムプロセス及びテナント特有のプロセスを実行するプロセス空間1828が含まれる。システム1816上で実行され得るさらなるプロセスには、データベースインデキシングプロセスが含まれる。
【0641】
図18Aに示されるシステムにおけるいくつかの要素は、ここではごく簡単に説明される従来の良く知られた要素を含む。例えば、各ユーザシステム1812は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話、若しくは任意のワイヤレスアクセスプロトコル(WAP)対応デバイス、又はインターネット若しくは他のネットワーク接続に直接又は間接的にインターフェースすることが可能な任意の他のコンピュータデバイスを含んでもよい。ユーザシステム1812は典型的には、HTTPクライアント、例えば、MicrosoftのInternet Explorerブラウザ、Mozilla又はFirefoxブラウザ、Opera、又はスマートフォン、タブレット、PDA、若しくは他の無線デバイスの場合のWAP対応ブラウザなどのブラウジングプログラムを実行し、ユーザシステム1812のユーザ(例えば、マルチテナントデータベースシステムのサブスクライバ)が、ネットワーク1814を介してシステム1816からそれが利用可能な情報、ページ、及びアプリケーションにアクセスし、処理し、閲覧することを可能にする。各ユーザシステム1812はさらに典型的には、システム1816又は他のシステム若しくはサーバにより提供されるページ、フォーム、アプリケーション、及び他の情報と関連してディスプレイ(例えば、モニタ画面、LCDディスプレイ等)にブラウザにより提供されるグラフィカルユーザインターフェース(GUI)と相互作用するための、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つ以上のユーザインターフェースデバイスを含む。例えば、ユーザインターフェースデバイスを使用して、システム1816によりホストされるデータ及びアプリケーションにアクセスし、記憶されたデータに対して検索を実行し、さもなければ、ユーザがユーザに提示され得る様々なGUIページと相互作用することを可能にすることができる。上で論じられたように、実施形態は、ネットワークの特定のグローバルインターネットワークを参照するインターネットでの使用に適している。しかしながら、インターネットの代わりにイントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースのネットワーク、任意のLAN又はWANなどの他のネットワークを使用できることが理解される。
【0642】
一実施形態によれば、各ユーザシステム1812及びそのコンポーネントの全てが、インテル(登録商標)ペンティアム(登録商標)プロセッサなどの中央処理ユニットを使用して実行されるコンピュータコードを含むブラウザなどのアプリケーションを使用してオペレータ構成可能である。同様に、システム1816(及び、複数が存在する場合のMTSのさらなるインスタンス)及びそれらのコンポーネントの全てが、インテルペンティアム(登録商標)プロセッサなど及び/又は複数のプロセッサユニットを含み得るプロセッサシステム1817などの中央処理ユニットを使用して実行するコンピュータコードを含むアプリケーションを使用してオペレータ構成可能でもよい。
【0643】
一実施形態によれば、各システム1816は、ウェブページ、フォーム、アプリケーション、データ、及びメディアコンテンツをユーザ(クライアント)システム1812に提供してシステム1816のテナントとしてのユーザシステム1812によるアクセスをサポートするように構成される。したがって、システム1816は、各テナントのデータを、該データが共有されない限り別個に保持するセキュリティメカニズムを提供する。複数のMTSが使用される場合、それらは互いに近接して(例えば、単一の建物又はキャンパス内に位置するサーバファームに)配置されてもよく、あるいは互いから遠隔の場所に分散されてもよい(例えば、1つ以上のサーバがA市に配置され、1つ以上のサーバがB市に配置される)。本明細書で用いられるとき、各MTSは、局所的に又は1つ以上の地理的位置にわたり分散された1つ以上の論理的及び/又は物理的に接続されたサーバを含んでもよい。さらに、用語「サーバ」は、処理ハードウェア及びプロセス空間と、当該分野で良く知られた関連するストレージシステム及びデータベースアプリケーション(例えば、OODBMS又はRDBMS)とを含むコンピュータシステムを含むことが意図される。「サーバシステム」及び「サーバ」はしばしば、本明細書で交換可能に使用されることが理解される。同様に、本明細書に記載のデータベースオブジェクトは、単一のデータベース、分散データベース、分散データベースの集合、冗長のオンライン若しくはオフラインバックアップ又は他の冗長性を有するデータベース等として実現することができ、分散データベース又はストレージネットワーク及び関連する処理インテリジェンスを含んでもよい。
【0644】
図18Bは、説明される実施形態による、
図18Aの要素とそのような要素間の様々な可能な相互接続との実施形態の別のブロック図を示す。
図18Bは、環境1899をさらに示す。しかしながら、
図18Bでは、一実施形態におけるシステム1816の要素及び様々な相互接続がさらに詳細に示される。より具体的には、
図18Bは、ユーザシステム1812が、プロセッサシステム1812A、メモリシステム1812B、入力システム1812C、及び出力システム1812Dを含み得ることを示す。
図18Bは、ネットワーク1814及びシステム1816を示す。さらに、
図18Bは、システム1816がテナントデータストレージ1822を含み得、テナントデータストレージ1822はその中にテナントデータ1823を有することを示し、テナントデータ1823は、例えば、テナントストレージ空間1827、テナントデータ1829、及びアプリケーションメタデータ1831を含む。システムデータストレージ1824は、その中にシステムデータ1825を有するものとして示されている。さらに、アプリケーションサーバ1800
1~Nの拡大された詳細の中に示されているのは、ユーザインターフェース(UI)1830、アプリケーションプログラムインターフェース(API)1832、アプリケーションプラットフォーム1818が含むPL/SOQL1834、保存ルーチン1836、アプリケーションセットアップメカニズム1838、プロセス空間1828が含むシステムプロセス空間1802、テナント1~Nのプロセス空間1804、及びテナント管理プロセス空間1810である。他の実施形態において、環境1899は、上に列挙されたものと同じ要素を有さなくてもよく、かつ/あるいは上に列挙されたものに代わって又は追加で他の要素を有してもよい。
【0645】
ユーザシステム1812、ネットワーク1814、システム1816、テナントデータストレージ1822、及びシステムデータストレージ1824は、
図18Aにおいて上で論じた。
図18Bに示すように、システム1816は、HTTPアプリケーションサーバ1800、アプリケーションプラットフォーム1818、テナントデータストレージ1822、及びシステムデータストレージ1824のセットとして実現される(
図18Aの)ネットワークインターフェース1820を含んでもよい。さらに、個々のテナントプロセス空間1804及びテナント管理プロセス空間1810を含むシステムプロセス空間1802が示されている。各アプリケーションサーバ1800は、ユーザシステム1812の要求にサービスするために、テナントデータストレージ1822及びその中のテナントデータ1823、並びにシステムデータストレージ1824及びその中のシステムデータ1825に対して構成されてもよい。テナントデータ1823は、個々のテナントストレージエリア(例えば、テナントストレージ空間1827)に分割されてもよく、これは、データの物理的配置及び/又は論理的配置のいずれかでもよい。各テナントストレージ空間1827内で、テナントデータ1829、及びアプリケーションメタデータ1831が、各ユーザに対して同様に割り当てられてもよい。例えば、ユーザの最も最近使用した(most recently used、MRU)アイテムのコピーが、テナントデータ1829に記憶されてもよい。同様に、テナントである組織全体のためのMRUアイテムのコピーが、テナントストレージ空間1827に保管されてもよい。UI1830はユーザインターフェースを提供し、API1832は、システム1816常駐プロセスへのアプリケーションプログラマインターフェースを、ユーザシステム1812のユーザ及び/又は開発者に提供する。テナントデータ及びシステムデータは、1つ以上のOracle(登録商標)データベースなどの様々なデータベースに格納されてもよい。
【0646】
アプリケーションプラットフォーム1818は、アプリケーション開発者によるアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズム1838を含み、これは、例えば、テナント管理プロセス空間1810により管理される1つ以上のテナントプロセス空間1804としてのサブスクライバによる実行のために、保存ルーチン1836によりテナントデータストレージ1822にメタデータとして保存されてもよい。このようなアプリケーションへの呼び出しは、API1832へのプログラミング言語スタイルインターフェース拡張を提供するPL/SOQL1834を使用してコード化されてもよい。アプリケーションへの呼び出しは、1つ以上のシステムプロセスにより検出されてもよく、該システムプロセスは、呼び出しを行うサブスクライバのためのアプリケーションメタデータ1831の取り出しと、仮想マシンにおけるアプリケーションとしてのメタデータの実行を管理する。
【0647】
各アプリケーションサーバ1800は、異なるネットワーク接続を介して、例えばシステムデータ1825及びテナントデータ1823へのアクセスを有するデータベースシステムに通信上結合されてもよい。例えば、1つのアプリケーションサーバ18001が、ネットワーク1814(例えば、インターネット)を介して結合されてもよく、別のアプリケーションサーバ1800N‐1が、直接ネットワークリンクを介して結合されてもよく、別のアプリケーションサーバ1800Nが、さらに異なるネットワーク接続により結合されてもよい。トランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)は、アプリケーションサーバ1800とデータベースシステムとの間で通信するための典型的なプロトコルである。しかしながら、使用されるネットワーク相互接続に依存してシステムを最適化するために他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
【0648】
特定の実施形態において、各アプリケーションサーバ1800は、テナントである任意の組織に関連づけられた任意のユーザの要求を取り扱うように構成される。任意の理由で任意の時点にサーバプールからアプリケーションサーバを追加及び除去できることが望ましいため、好ましくは、特定のアプリケーションサーバ1800に対するユーザ及び/又は組織のサーバアフィニティは存在しない。したがって、一実施形態において、ロードバランシング機能(例えば、F5 Big‐IPロードバランサ)を実現するインターフェースシステムは、アプリケーションサーバ1800とユーザシステム1812との間で通信上結合され、アプリケーションサーバ1800への要求を分配する。一実施形態において、ロードバランサは、最小接続アルゴリズムを使用して、ユーザ要求をアプリケーションサーバ1800にルーティングする。ラウンドロビン及び観測応答時間などのロードバランシングアルゴリズムの他の例がさらに使用されてもよい。例えば、特定の実施形態において、同じユーザからの3つの連続した要求が3つの異なるアプリケーションサーバ1800に当たることがあり、異なるユーザからの3つの要求が同じアプリケーションサーバ1800に当たることがある。このようにして、システム1816はマルチテナントであり、システム1816は、異なるユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶及びそれらへのアクセスを取り扱う。
【0649】
ストレージの一例として、1つのテナントが、各販売員がシステム1816を使用してその販売プロセスを管理する販売陣(sales force)を採用する会社であり得る。ゆえに、ユーザは、全てがそのユーザの個人的販売プロセスに適用可能なコンタクトデータ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、目標及び進捗データ等を(例えば、テナントデータストレージ1822に)維持することができる。MTS構成の一例において、アクセス、閲覧、修正、報告、送信、計算等すべきデータ及びアプリケーションの全てが、ネットワークアクセス以上のものを有さないユーザシステムにより維持及びアクセスできるため、ユーザは、多くの異なるユーザシステムのいずれかから自身の販売努力及びサイクルを管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーでインターネットアクセスを有する場合、販売員は、顧客がロビーに到着するのを待つ間、その顧客に関する重要なアップデートを得ることができる。
【0650】
各ユーザのデータは、各ユーザの雇用者にかかわらず他のユーザのデータとは別個であり得るが、いくつかのデータは、テナントである所与の組織に対する複数のユーザ又は全ユーザにより共有され又はアクセス可能な組織全体のデータでもよい。ゆえに、システム1816により管理される、テナントレベルで割り振られるいくつかのデータ構造があり得、一方、他のデータ構造はユーザレベルで管理され得る。MTSは、あり得る競合者を含む複数のテナントをサポートする可能性があるため、MTSは、データ、アプリケーション、及びアプリケーション使用を別個に保つセキュリティプロトコルを有してもよい。さらに、多くのテナントが、独自のシステムを維持するのでなくMTSへのアクセスを選択する可能性があるため、冗長性、アップタイム、及びバックアップは、MTSで実装され得るさらなる機能である。ユーザ特有のデータ及びテナント特有のデータに追加で、システム1816は、複数のテナントにより使用可能なシステムレベルのデータ又は他のデータをさらに維持してもよい。このようなシステムレベルのデータには、テナント間で共有可能な産業レポート、ニュース、投稿などを含んでもよい。
【0651】
特定の実施形態において、ユーザシステム1812(クライアントシステムでもよい)は、アプリケーションサーバ1800と通信してシステム1816からのシステムレベル及びテナントレベルのデータを要求及び更新し、これは、テナントデータストレージ1822及び/又はシステムデータストレージ1824への1つ以上のクエリの送信を必要としてもよい。システム1816(例えば、システム1816内のアプリケーションサーバ1800)は、所望の情報にアクセスするように設計された1つ以上のSQL文(例えば、1つ以上のSQLクエリ)を自動的に生成する。システムデータストレージ1824は、データベースからの要求されたデータにアクセスするためのクエリプランを生成してもよい。
【0652】
各データベースは、一般に、予め定義されたカテゴリに適合されたデータを含む論理テーブルのセットなどのオブジェクトの集合として見ることができる。「テーブル」は、データオブジェクトの1つの表現であり、本明細書では、本明細書で説明されるオブジェクト及びカスタムオブジェクトの概念的な説明を簡略化するために使用されることがある。「テーブル」及び「オブジェクト」は、本明細書では交換可能に用いられ得ることが理解される。各テーブルは通常、閲覧可能スキーマ内に列又はフィールドとして論理的に配置された1つ以上のデータカテゴリを含む。テーブルの各行又はレコードは、フィールドにより定義された各カテゴリのデータのインスタンスを含む。例えば、CRMデータベースは、名前、住所、電話番号、ファックス番号などの基本コンタクト情報のためのフィールドを有する顧客を記述するテーブルを含み得る。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報のフィールドを含む購入注文を記述してもよい。いくつかのマルチテナントデータベースシステムにおいて、全てのテナントによる使用のために標準エンティティテーブルが提供されてもよい。CRMデータベースアプリケーションでは、このような標準エンティティには、各々が予め定義されたフィールドを含むアカウント、コンタクト、リード、及び機会データのテーブルを含んでもよい。語「エンティティ」は、本明細書において「オブジェクト」及び「テーブル」と交換可能に用いられ得ることが理解される。
【0653】
いくつかのマルチテナントデータベースシステムにおいて、テナントは、カスタムオブジェクトを作成及び記憶することを可能にされてもよく、あるいは、例えば、カスタムインデックスフィールドを含む標準オブジェクトに対するカスタムフィールドを作成することにより、標準エンティティ又はオブジェクトをカスタマイズすることを可能にされてもよい。特定の実施形態において、例えば、全てのカスタムエンティティデータ行は、組織ごとの複数の論理テーブルを含み得る単一のマルチテナント物理テーブルに記憶される。それらの複数の「テーブル」が実際には1つの大きいテーブルに記憶されていること、又はそれらのデータが他の顧客のデータと同じテーブルに記憶され得ることは、顧客に対して透過的である。
【0654】
図19は、一実施形態による、コンピュータシステムの例示的な形態のマシン1900の概略表現を示し、その中で、マシン/コンピュータシステム1900に本明細書で論じられる方法のうちのいずれか1つ以上を実行させる命令セットが実行され得る。代替的な実施形態において、マシンは、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、又はパブリックインターネット内の他のマシンに接続され(例えば、ネットワーク化され)てもよい。マシンは、クライアント‐サーバネットワーク環境のサーバ又はクライアントマシンのキャパシティで、ピアツーピア(又は分散)ネットワーク環境のピアマシンとして、オンデマンドサービス環境内のサーバ又は一連のサーバとして動作してもよい。マシンの特定の実施形態は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、セルラー電話、ウェブ電化製品、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、コンピューティングシステム、又はそのマシンが取るべきアクションを指定する(順次又はその他の)命令のセットを実行することができる任意のマシンの形態でもよい。さらに、単一のマシンのみが示されているが、用語「マシン」はさらに、本明細書で論じられる方法のいずれか1つ以上を実行するための命令のセット(又は、複数のセット)を個々又は連帯的に実行するマシン(例えば、コンピュータ)の任意の集合を含むとみなされるものとする。
【0655】
例示的なコンピュータシステム1900は、プロセッサ1902、メインメモリ1904(例えば、読取専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えば同期DRAM(SDRAM)又はランバスDRAM(RDRAM)等、スタティックメモリ、例えばフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、揮発性だが高データレートのRAM等)、及びセカンダリメモリ1918(例えば、ハードディスクドライブ及び永続的データベース及び/又はマルチテナントデータベース実装を含む永続的記憶デバイス)を含み、これらは、バス1930を介して互いに通信する。メインメモリ1904は、ブロックチェーンメタデータ定義マネージャ1924と、パーミッションマネージャ1923と、ブロックチェーンインターフェース1925(ブロックチェーン合意マネージャ(図示せず)を含む)とを含む。メインメモリ1904及びそのサブ要素は、本明細書で論じられる方法を実行するために、処理論理1926及びプロセッサ1902と関連して動作可能である。
【0656】
プロセッサ1902は、マイクロプロセッサ、中央処理ユニット等の1つ以上の汎用処理デバイスを表す。より詳細には、プロセッサ1902は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、他の命令セットを実現するプロセッサ、又は命令セットの組み合わせを実現するプロセッサでもよい。プロセッサ1902はさらに、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つ以上の専用処理デバイスでもよい。プロセッサ1902は、本明細書で論じられる動作及び機能を実行する処理論理1926を実行するように構成される。
【0657】
コンピュータシステム1900は、ネットワークインターフェースカード1908をさらに含んでもよい。コンピュータシステム1900は、ユーザインターフェース1910(ビデオディスプレイユニット、液晶ディスプレイなど)、英数字入力装置1912(例えば、キーボード)、カーソル制御装置1914(例えば、マウス)、及び信号生成装置1916(例えば、統合型スピーカ)をさらに含んでもよい。コンピュータシステム1900は、周辺装置1936(例えば、無線又は有線通信装置、メモリ装置、記憶装置、オーディオ処理装置、ビデオ処理装置等)をさらに含んでもよい。
【0658】
セカンダリメモリ1918は、本明細書に記載される方法又は機能のいずれか1つ以上を具現化する命令の1つ以上のセット(例えば、ソフトウェア1922)が記憶される非一時的マシン読取可能記憶媒体又は非一時的コンピュータ読取可能記憶媒体又は非一時的マシンアクセス可能記憶媒体1931を含んでもよい。ソフトウェア1922はさらに、コンピュータシステム1900によるその実行の間、メインメモリ1904内及び/又はプロセッサ1902内に完全に又は少なくとも部分的に存在することがあり、メインメモリ1904及びプロセッサ1902もまた、マシン読取可能記憶媒体を構成する。ソフトウェア1922はさらに、ネットワークインターフェースカード1908を介してネットワーク1920を通じて送信又は受信されてもよい。
【0659】
実施形態
【0660】
実施形態A - ブロックチェーン内のデータを忘れる権利を提供するためにホスト組織のシステムにより実行される方法であって、前記システムは、各々がブロックチェーンネットワーク内のノードとして機能する前記ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを提供し、当該方法は、要求元の識別子を含む要求を受信するステップであり、前記要求はプライベートとして指定されたトランザクションデータにアクセスするためのものである、ステップと、前記要求元の前記識別子を含む、前記ブロックチェーンネットワーク内のノードからの前記トランザクションデータへのアクセスを要求するステップと、前記要求元により前記トランザクションデータにアクセスすることへの合意を示す、前記ブロックチェーンネットワーク内のノードからの少なくとも1つの共有秘密を受信するステップと、前記トランザクションデータがアクセスするのに恒久的に(permanently)利用できないことを示す、前記ノードからの不十分な共有秘密を受信することに応答して、前記トランザクションデータへのアクセスを拒否するステップと、を含む。
【0661】
実施形態Aの方法であって、当該方法は、前記トランザクションデータへのアクセスを要求する前に、前記要求元の前記識別子が忘れられたリスト(forgotten list)上にあるかどうかを決定するステップをさらに含む。
【0662】
実施形態Aの方法であって、当該方法は、一意ユーザ識別子に関連づけられたデータを忘れる要求を受信するステップと、前記一意ユーザ識別子を忘れられたリストに追加するステップと、をさらに含む。
【0663】
実施形態Aの方法であって、前記トランザクションデータは、閾値数の共有秘密を受信することに応答して復号される。
【0664】
実施形態Aの方法であって、復号鍵は、受信した共有秘密から復元される。
【0665】
実施形態Aの方法であって、前記トランザクションデータへのアクセスを拒否することは、受信した共有秘密の数が暗号化の鍵を復元するための閾値を下回ることに応答したものである。
【0666】
実施形態Aの方法であって、オブジェクト及びフィールドのプライベート情報の識別を含む、前記ブロックチェーンに記憶される前記トランザクションデータのオブジェクト及びメタデータを定義するステップをさらに含む。
【0667】
実施形態B - ブロックチェーン内のデータを忘れる権利を提供する方法を実行するように構成されたホスト組織のコンピューティングシステムであって、当該コンピュータシステムは、各々がブロックチェーンネットワーク内のノードとして機能するホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを提供し、前記ブロックチェーンインターフェース及びパーミッションマネージャを内部に記憶させたコンピュータ読取可能媒体手段と、前記ブロックチェーンインターフェースに結合されたプロセッサと、を含み、前記プロセッサは、前記ブロックチェーンインターフェース及び前記パーミッションマネージャを実行するように構成され、前記パーミッションマネージャは、要求元の識別子を含む要求を受信し、前記要求はプライベートとして指定されたトランザクションデータにアクセスするためのものであり、前記要求元の前記識別子を含む、前記ブロックチェーンネットワーク内のノードからの前記トランザクションデータへのアクセスを要求し、前記要求元により前記トランザクションデータにアクセスすることへの合意を示す、前記ブロックチェーンネットワーク内のノードからの少なくとも1つの共有秘密を受信し、前記トランザクションデータがアクセスするのに恒久的に利用できないことを示す、前記ノードからの不十分な共有秘密を受信することに応答して、前記トランザクションデータへのアクセスを拒否する。
【0668】
実施形態Bのコンピュータシステムであって、前記パーミッションマネージャはさらに、前記トランザクションデータへのアクセスを要求する前に、前記要求元の前記識別子が忘れられたリスト上にあるかどうかを決定する。
【0669】
実施形態Bのコンピュータシステムであって、前記パーミッションマネージャはさらに、一意ユーザ識別子に関連づけられたデータを忘れる要求を受信し、前記一意ユーザ識別子を忘れられたリストに追加する。
【0670】
実施形態Bのコンピュータシステムであって、前記トランザクションデータは、閾値数の共有秘密を受信することに応答して復号される。
【0671】
実施形態Bのコンピュータシステムであって、復号鍵は、受信した共有秘密から復元される。
【0672】
実施形態Bのコンピュータシステムであって、前記トランザクションデータへのアクセスを拒否することは、受信した共有秘密の数が暗号化の鍵を復元するための閾値を下回ることに応答したものである。
【0673】
実施形態Bのコンピュータシステムであって、前記パーミッションマネージャはさらに、オブジェクト及びフィールドのプライベート情報の識別を含む、前記ブロックチェーンに記憶される前記トランザクションデータのオブジェクト及びメタデータを定義する。
【0674】
実施形態C - 命令のセットを内部に記憶させたコンピュータ読取可能媒体であって、前記命令は実行されると、ホスト組織のコンピュータシステムにブロックチェーン内のデータの読み取りアクセスを管理する方法の動作のセットを実行させ、前記コンピュータシステムは、前記ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを提供し、前記動作のセットは、要求元の識別子を含む要求を受信することであり、前記要求はプライベートとして指定されたトランザクションデータにアクセスするためのものである、ことと、前記要求元の前記識別子を含む、前記ブロックチェーンネットワーク内のノードからの前記トランザクションデータへのアクセスを要求することと、前記要求元により前記トランザクションデータにアクセスすることへの合意を示す、前記ブロックチェーンネットワーク内のノードからの少なくとも1つの共有秘密を受信することと、前記トランザクションデータがアクセスするのに恒久的に利用できないことを示す、前記ノードからの不十分な共有秘密を受信することに応答して、前記トランザクションデータへのアクセスを拒否することと、を含む。
【0675】
実施形態Cのコンピュータ読取可能媒体であって、前記動作は、前記トランザクションデータへのアクセスを要求する前に、前記要求元の前記識別子が忘れられたリスト上にあるかどうかを決定することをさらに含む。
【0676】
実施形態Cのコンピュータ読取可能媒体であって、前記動作は、一意ユーザ識別子に関連づけられたデータを忘れる要求を受信することと、前記一意ユーザ識別子を忘れられたリストに追加することと、をさらに含む。
【0677】
実施形態Cのコンピュータ読取可能媒体であって、前記トランザクションデータは、閾値数の共有秘密を受信することに応答して復号される。
【0678】
実施形態Cのコンピュータ読取可能媒体であって、復号鍵は、受信した共有秘密から復元される。
【0679】
実施形態Cのコンピュータ読取可能媒体であって、前記トランザクションデータへのアクセスを拒否することは、受信した共有秘密の数が暗号化の鍵を復元するための閾値を下回ることに応答したものである。
【0680】
前述の説明では、様々な実施形態の完全な理解を提供するために、特定のシステム、言語、コンポーネント等の例などの、多数の特定の詳細が記載されている。しかしながら、当業者には、これらの特定の詳細が本明細書に開示された実施形態を実施するために採用される必要はないことが明らかであろう。他の例では、開示された実施形態を不必要に分かりにくくすることを避けるために、周知の材料又は方法は詳細に説明されていない。
【0681】
図に示され本明細書で説明される様々なハードウェアコンポーネントに追加で、実施形態は、上記で説明された様々な動作をさらに含む。このような実施形態により説明される動作は、ハードウェアコンポーネントにより実行されてもよく、あるいはマシン実行可能命令で具現化されてもよく、これは、命令でプログラムされた汎用又は専用プロセッサに動作を実行させるために使用されてもよい。あるいは、動作は、ハードウェアとソフトウェアの組み合わせにより実行されてもよい。
【0682】
実施形態は、さらに、本明細書に開示される動作を実行する装置に関する。この装置は、必要な目的のために特別に構築されてもよく、あるいはコンピュータに記憶されたコンピュータプログラムにより選択的にアクティブ化又は再構成される汎用コンピュータでもよい。そのようなコンピュータプログラムは、これらに限られないが、光ディスク、CD‐ROM、及び磁気光ディスクを含む任意のタイプのディスク、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光学カード、又はコンピュータシステムバスに各々結合された電子命令を記憶するのに適した任意のタイプの媒体などのコンピュータ読取可能記憶媒体に記憶されてもよい。
【0683】
本明細書で提示されるアルゴリズム及び表示は本来的に、いずれかの特定のコンピュータ又は他の装置に関連しない。様々な汎用システムが本明細書における教示に従うプログラムと共に使用されてもよく、あるいは、必要な方法ステップを実行するためにより特化した装置を構築することが便利であることが判明し得る。種々のこれらシステムに必要な構造は、以下の説明に記載されているとおり明らかになる。さらに、実施形態は、いずれかの特定のプログラミング言語を参照して記載されていない。種々のプログラミング言語が、本明細書に記載される実施形態の教示を実現するために使用され得ることが理解されるであろう。
【0684】
実施形態は、命令を記憶したマシン読取可能媒体を含み得るコンピュータプログラムプロダクト又はソフトウェアとして提供されてもよく、命令を使用して、開示の実施形態に従う処理を実行するようにコンピュータシステム(又は他の電子デバイス)をプログラムしてもよい。マシン読取可能媒体は、マシン(例えば、コンピュータ)により読取可能な形式で情報を記憶又は伝送するための任意の機構を含む。例えば、マシン読取可能(例えば、コンピュータ読取可能)媒体は、マシン(例えば、コンピュータ)読取可能記憶媒体(例えば、読取専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス等)、マシン(例えば、コンピュータ)読取可能伝送媒体(電気、光学、音響)等を含む。
【0685】
開示される実施形態のいずれも、単独で、又は互いに組み合わせて一緒に使用することができる。様々な実施形態が従来の技術及びアプローチでの欠陥により部分的に動機づけられている可能性があり、これらのいくつかが本明細書内で記載又は言及されているが、実施形態は、必ずしもこれらの欠陥のいずれかを対処又は解決する必要はなく、むしろ、欠陥のいくつかのみに対処し、欠陥のいずれにも対処せず、あるいは直接論じられていない異なる欠陥及び問題に向けられている場合がある。