本明細書では、クラウドベースのコンピューティング環境において分散台帳技術を実現するシステム、方法、装置について説明する。
例えば、特定の実施形態によれば、分散台帳技術は、ピアツーピアネットワークにおける分散台帳技術ホスト又はブロックチェーンプラットフォームホストを企図し、ホストは、その中に少なくともプロセッサ及びメモリを有し、ブロックチェーンに新しいブロックを追加する要求を受信し、該新しいブロックは複数のトランザクションを含み、該要求は複数のトランザクションタイプのうちの1つを指定する。ホストは、指定されたトランザクションタイプに応答して、ブロックチェーンに新しいブロックを追加する要求を検証する(validating)ための複数の合意プロトコルの1つを選択する。ホストは、次いで、選択された合意プロトコルに従って合意が達せられたとき、ブロックチェーンに新しいブロックを追加する要求を検証する。最後、ホストは、ブロックチェーンに新しいブロックを追加する要求の検証に応答して、ブロックチェーンの新しいブロックを追加する。
別の実施形態によれば、その中に少なくともプロセッサ及びメモリを有する分散台帳技術プラットフォームホストがあり、プラットフォームホストは、協働文書処理アプリケーションから協働文書又はその一部を受信し、協働文書又はその一部を含むブロックチェーン資産を作成し、ブロックチェーン資産と協働文書に署名した第1のコラボレータに関連づけられたブロックチェーン資産識別子とを含むブロックチェーントランザクションを作成し、ブロックチェーン上の循環にブロックチェーントランザクションをブロードキャストし、ブロックチェーントランザクションの検証を受信し、ブロックチェーンにおけるブロックチェーントランザクションのブロードキャストに応答して、ブロックチェーンに対してブロック内の検証されたブロックチェーントランザクションをコミットする。
以下の説明では、様々な実施形態の完全な理解を提供するために、特定のシステム、言語、コンポーネント等の例などの、多数の特定の詳細が記載される。しかしながら、当業者には、これらの特定の詳細が本明細書に開示される実施形態を実施するために採用される必要はないことが明らかであろう。他の例では、開示される実施形態を不必要に分かりにくくすることを避けるために、良く知られた材料又は方法は詳細に説明されていない。
図に示され本明細書で説明される様々なハードウェアコンポーネントに追加で、実施形態は、以下で説明される様々な動作をさらに含む。このような実施形態により説明される動作は、ハードウェアコンポーネントにより実行されてもよく、あるいはマシン実行可能命令で具現化されてもよく、これは、命令でプログラムされた汎用又は専用プロセッサに動作を実行させるために使用されてもよい。あるいは、動作は、ハードウェアとソフトウェアの組み合わせにより実行されてもよい。
実施形態は、さらに、本明細書に開示される動作を実行する装置に関する。この装置は、必要な目的のために特別に構築されてもよく、あるいはコンピュータに記憶されたコンピュータプログラムにより選択的にアクティブ化又は再構成される汎用コンピュータでもよい。そのようなコンピュータプログラムは、これらに限られないが、光ディスク、CD‐ROM、及び磁気光ディスクを含む任意のタイプのディスク、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光学カード、又はコンピュータシステムバスに各々結合された電子命令を記憶するのに適した任意のタイプの媒体などのコンピュータ読取可能記憶媒体に記憶されてもよい。
本明細書で提示されるアルゴリズム及び表示は本来的に、いずれかの特定のコンピュータ又は他の装置に関連しない。様々な汎用システムが本明細書における教示に従うプログラムと共に使用されてもよく、あるいは、必要な方法ステップを実行するためにより特化した装置を構築することが便利であることが判明し得る。種々のこれらシステムに必要な構造は、以下の説明に記載されているとおり明らかになる。さらに、実施形態は、いずれかの特定のプログラミング言語を参照して記載されていない。種々のプログラミング言語が、本明細書に記載される実施形態の教示を実現するために使用され得ることが理解されるであろう。
実施形態は、命令を記憶したマシン読取可能媒体を含み得るコンピュータプログラムプロダクト又はソフトウェアとして提供されてもよく、命令を使用して、開示の実施形態に従う処理を実行するようにコンピュータシステム(又は他の電子デバイス)をプログラムしてもよい。マシン読取可能媒体は、マシン(例えば、コンピュータ)により読取可能な形式で情報を記憶又は伝送するための任意の機構を含む。例えば、マシン読取可能(例えば、コンピュータ読取可能)媒体は、マシン(例えば、コンピュータ)読取可能記憶媒体(例えば、読取専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス等)、マシン(例えば、コンピュータ)読取可能伝送媒体(電気、光学、音響)等を含む。
開示される実施形態のいずれも、単独で、又は互いに組み合わせて一緒に使用することができる。様々な実施形態が従来の技術及びアプローチでの欠陥により部分的に動機づけられている可能性があり、これらのいくつかが本明細書内で記載又は言及されているが、実施形態は、必ずしもこれらの欠陥のいずれかを対処又は解決する必要はなく、むしろ、欠陥のいくつかのみに対処し、欠陥のいずれにも対処せず、あるいは直接論じられていない異なる欠陥及び問題に向けられている場合がある。
図1Aは、説明される実施形態による一例示的なアーキテクチャ100を示す。
一実施形態において、ホストされた(hosted)コンピューティング環境111は、ホスト組織110を介して複数のユーザクライアントデバイス106A〜C(例えば、モバイルデバイス、スマートフォン、タブレット、PCなど)と通信可能にインターフェースされる。一実施形態において、データベースシステム130は、データベース155A及び155Bを含み、例えば、顧客組織105A〜C(例えば、そのようなデータベースシステム130のユーザ、又はマルチテナントデータベースタイプのデータベースシステムのテナント、又はそのようなデータベースシステムの加入ユーザ)のために、アプリケーションコード、オブジェクトデータ、テーブル、データセット、及びユーザデータを含む基礎をなすデータベースレコードを記憶する。そのようなデータベースは、例えば、特定の実施形態による関係データベースシステム155A及び非関係データベースシステム155Bを含む様々なデータベースシステムタイプを含む。
特定の実施形態において、クライアント‐サーバコンピューティングアーキテクチャが、データベースシステム130の特徴、機能性、又はコンピューティングリソースを補足するために利用されてもよく、あるいは代わりに、コンピューティンググリッド、又はワークサーバのプール、又はホストされたコンピューティングアーキテクチャの何らかの組み合わせが、データベースシステム130に関連してホスト組織110の要求される計算ワークロード及び処理の一部又は全部を提供してもよい。
図示の実施形態に示されるデータベースシステム130は、ホスト組織110内のデータベース機能性とコード実行環境を実現する、複数の基礎をなすハードウェア、ソフトウェア、及び論理要素150を含む。
一実施形態によれば、データベースシステム130は、基礎をなすデータベースシステム実装155A及び155Bを利用して、クエリインターフェースを介してデータベースシステム130と通信するデータベースクエリ及び他のデータベースシステム130とのデータ相互作用をサービスする。データベースシステム130のハードウェア、ソフトウェア、及び論理要素150は、顧客組織(105A、105B、及び105C)とは別個及び区別可能であり、顧客組織は、ネットワーク155を介してホスト組織110に通信可能にインターフェースすることにより、ホスト組織110により提供されるウェブサービス及び他のサービス提供を利用する。このような方法で、ホスト組織110は、サブスクライブしている(subscribing)顧客組織105A〜105Cに対するオンデマンドサービス、オンデマンドデータベースサービス、又はクラウドコンピューティングサービスを実現し得る。
さらに、ホスト組織110は、ネットワーク155(パブリックインターネットなど)を介して顧客組織105A〜Cからの入力及び他の要求115を受信することが示されている。例えば、入ってくる検索クエリ、データベースクエリ、API要求、ユーザクライアントデバイス106A〜Cで表示されたグラフィカルユーザインターフェース及び表示との相互作用、又は他の入力が、顧客組織105A〜Cから受信されてデータベースシステム130に対して処理されてもよく、あるいは、そのようなクエリが、データベース155又はクエリインターフェース180に対する実行のために入力及び他の要求115から構築されてもよく、それに応じて、結果116が、次いで、顧客組織105A〜Cのユーザクライアントデバイス106A〜Cのうち1つのユーザなどの発信者又は要求者に返される。
一実施形態において、各顧客組織105A〜Cは、別個及び区別可能なリモート組織、ホスト組織110内の組織グループ、ホスト組織110のビジネスパートナー、又はホスト組織110により提供されるクラウドコンピューティングサービスをサブスクライブする顧客組織105A〜Cからなる群から選択されるエンティティである。
一実施形態において、要求115は、ホスト組織110内のウェブサーバ175で受信され、あるいは該ウェブサーバ175にサブミットされる。ホスト組織110は、ホスト組織110及びそのデータベースシステム130による処理に対する様々な要求を受け取ることができる。ウェブサーバ175で受信される、入ってくる要求115は、ホスト組織110からどのサービスが提供されるべきかを指定することができ、例えば、クエリ要求、検索要求、ステータス要求、データベーストランザクション、グラフィカルユーザインターフェース要求及び相互作用、顧客組織105A〜Cの1つのためにデータを取り出し、更新し、又は記憶する処理要求、コード実行要求などのである。ウェブサーバ175は、クエリインターフェース180のためにネットワーク155を介して様々な顧客組織105A〜Cからの要求115を受信し、ウェブベースのインターフェース又は他のグラフィカル表示を、エンドユーザクライアントデバイス106A〜C又はそのようなデータ要求115を発するマシンに提供することを担うことができる。
クエリインターフェース180は、データベースシステム130のデータベース及び記憶コンポーネントに対して要求されたクエリを受信及び実行し、説明される方法論を促進するために結果セット、応答、又は他の要求されたデータを返すことができる。さらに、クエリインターフェース180は、クエリをウェブサーバ175から、検索クエリを処理するデータベース155に対する実行のためにデータベースシステム130に、又はホスト組織のコンピューティング環境111の他の利用可能なデータストアに渡す機能を提供する。一実施形態において、クエリインターフェース180は、データベース155又は他のデータストアに対してクエリが実行され得るアプリケーションプログラミングインターフェース(API)を実装する。
ホスト組織110は、ウェブサーバ175を介してか又はスタンドアロンインターフェースとして要求インターフェース176を実現して、ユーザクライアントデバイス106A〜Cから要求パケット又は他の要求115を受信することができる。さらに、要求インターフェース176は、ホスト組織110からユーザクライアントデバイス106A〜Cへの出て行く方向の応答パケット又は他のリプライ及び応答116の返信をサポートする。認証器(Authenticator)140は、ホスト組織のために動作し、ホスト組織へのアクセスの獲得を試みるユーザを検証し、認証し、その他の方法で認定(credential)する。
さらに、ホスト組織110内には、ブロックチェーン合意マネージャ191とブロックバリデータ(validator)192の双方をその中に含むブロックチェーンサービスインターフェース190が示されている。ブロックチェーンサービスインターフェース190は、ホスト組織110を他の参加ノード133と(例えば、ネットワーク155を介して)通信上インターフェースして、ホスト組織110がブロックチェーンプロトコル準拠ノードとして作用することにより利用可能なブロックチェーンプロトコルに参加することを可能にし、ホスト組織110がそのようなブロックチェーン内の情報にアクセスすることを可能にすると共に、ホスト組織110が他の参加ノード133に、ホスト組織110によりサポートされ、ホスト組織110により顧客及びサブスクライバ(subscribers)に提供される任意数のブロックチェーンプロトコルについてブロックチェーンサービスを提供することを可能にする。
ブロックチェーンは、ブロック単位でグループ化されたレコードの連続的に成長するリストであり、該ブロックは、一緒にリンクされ、暗号法を用いて安全化されている。各ブロックは、前のブロックへのリンクとしてのハッシュポインタ、タイムスタンプ、及びトランザクションデータを典型的に含む。設計により、ブロックチェーンは本来的に、データの修正に対して耐性がある。ブロックチェーンシステムは本質的に、2者間のトランザクションを効率的かつ立証可能な方法で記録するオープンな分散された台帳であり、これもまた不変(immutable)かつ永続的である。分散台帳(共有又は共通台帳とも呼ばれ、あるいは分散台帳技術(distributed ledger technology、DLT)と呼ばれる)は、複数のノードにわたり地理的に分散された複製、共有、及び同期されたデジタルデータの合意である。ノードは、異なるサイト、国、機関、ユーザコミュニティ、顧客組織、ホスト組織、ホストされたコンピューティング環境、又はアプリケーションサーバに位置してもよい。中央管理者や中央集権的なデータストレージは存在しない。
ブロックチェーンシステムは、ノードのピアツーピア(P2P)ネットワークを使用し、合意アルゴリズムは、ノードにわたるデジタルデータの複製を保証する。ブロックチェーンシステムは、パブリック又はプライベートのいずれでもよい。必ずしも全ての分散台帳が、分散された合意の安全かつ有効な達成を成功裏に提供するためにブロックのチェーンを使用するわけではなく、ブロックチェーンは、分散台帳と考えられるデータ構造の1つのタイプに過ぎない。
P2Pコンピューティング又はネットワーキングは、ピア間でタスク又はワークロードを分ける分散アプリケーションアーキテクチャである。ピアは、ノードのピアツーピアネットワークを形成するアプリケーションにおいて、同等に特権を与えられ、同等に能力を有する参加者である。ピアは、そのリソースの一部、例えば処理パワー、ディスクストレージ、又はネットワーク帯域幅などを、サーバ又はホストによる中央の協調の必要なく、他のネットワーク参加者が直接利用できるようにする。リソースの消費と供給が分けられている従来のクライアント‐サーバモデルと対照的に、ピアは、リソースの供給者と消費者の双方である。ゆえに、ピアツーピアネットワークは、クライアントとサーバの双方としてネットワーク上の他のノードに同時に機能する等しいピアノードの概念を中心に設計されている。
分散台帳として使用するために、ブロックチェーンは、新しいブロックを検証するプロトコルに集合的に従うピアツーピアネットワークにより典型的に管理される。ひとたび記録されると、任意の所与のブロック内のデータは、全ての後続ブロックの改変なしに遡及的に改変することはできず、これには、ネットワークの過半数の共謀を必要とする。このようにして、ブロックチェーンは、設計上安全であり、高いビザンチンフォールトトレラント性(Byzantine fault tolerance)を有する分散コンピューティングシステムの一例である。したがって、非中央集権的な合意がブロックチェーンにより達成されている。これにより、ブロックチェーンは、イベント、医療記録、保険記録、及び他の記録管理アクティビティ、例えばアイデンティティ管理、トランザクション処理、文書化の出所、又は投票などの記録に潜在的に適している。
ブロックチェーンデータベースは、ピアツーピアネットワークと分散タイムスタンプ付け(timestamping)サーバを使用して自律的に管理される。ブロック形式のレコードは、集合的な自己利益により動機づけられるノード間の協働により、ブロックチェーン内で認証される。結果として、データセキュリティに関する参加者の不確実性が最小化される。ブロックチェーンの使用は、デジタル資産の再現性という特性を取り除く。それは、資産などの各価値単位が1回だけ移転されたことを裏付け、二重支出(double spending)の問題を解決する。
ブロックチェーン内のブロックは各々、ハッシュされてマークル木に符号化される有効なトランザクションのバッチ(「ブロック」)を保持する。各ブロックは、ブロックチェーン内の先行ブロックのハッシュを含み、この2つをリンクする。リンクされたブロックはチェーンを形成する。この反復プロセスが、時にジェネシスブロック又はルートブロックと呼ばれるチェーン内の最初のブロックまで遡って、前のブロックの完全性を裏付ける。
ブロックチェーンは、そのネットワークにわたりデータを記憶することにより、データが中央に保持され、単一のオーソリティにより制御されることに伴うリスクを排除する。ホスト組織110は、ホスト組織110などの単一の責任を負うエージェントに大量のデータを提供する能力を含む広範なデータ処理及び記憶サービスを提供するが、ブロックチェーンサービスは異なり、それにより、ホスト組織110は、そのようなサービスの単一のオーソリティではなく、むしろ、ブロックチェーンサービスインターフェース190を介し、利用可能なブロックチェーンプロトコルのための多くのノードのうちの1つに過ぎず、あるいはブロックチェーンプロトコルマネージャ及びプロバイダとして動作し、一方、ブロックチェーンサービスインターフェース190を介してホスト組織110と通信する他の参加ノード133は、ホスト組織110により提供される利用可能なブロックチェーンプロトコルに従って準拠した分散台帳技術(DLT)を実現することにより、ブロックチェーン内に記憶された情報のリポジトリとして集合的に動作する。
非中央集権的なブロックチェーンは、アドホックメッセージパッシング及び分散ネットワーキングを使用することができる。ブロックチェーンネットワークは、コンピュータハッカーが活用できる脆弱性の中央集権的なポイントがない。同様に、中央の障害点もない。ブロックチェーンセキュリティメソッドは、公開鍵暗号の使用を含む。公開鍵は、ブロックチェーン上のアドレスである。ネットワークにわたり送信される値トークンは、そのアドレスに属するものとして記録される。秘密鍵は、その所有者にデジタル資産へのアクセスを与えるパスワードのようなもの、又は、その他の方法でブロックチェーンがサポートする様々な機能と相互作用する手段である。ブロックチェーンに記憶されたデータは、一般に破損しないと考えられる。これは、ブロックチェーンがその利点を有するところである。中央集権的なデータはより制御可能であるが、情報及びデータ操作が共通する。ブロックチェーンは、それを非中央集権化することにより、関与する誰に対してもデータを透過的にする。
非中央集権的なシステム内の特定のブロックチェーンプロトコルのためのあらゆる参加ノード133は、その特定のブロックチェーンプロトコルのためのブロックチェーンのコピーを有する。データ品質は、大規模なデータベース複製及び計算的信頼により維持される。データベースの中央集権的なオフィシャルのコピーは存在せず、デフォルトでは、どのユーザも参加ノード133のいずれも、他より信頼されているわけではないが、このデフォルトは、以下でより詳細に説明されるように、特定の特化されたブロックチェーンプロトコルを介して改変されてもよい。ブロックチェーントランザクションは、ソフトウェアを使用してネットワークにブロードキャストされ、該ソフトウェアを介して、ノードとして動作しているときのホスト組織110を含む任意の参加ノード133が、このようなトランザクションブロードキャストを受信する。ブロードキャストメッセージは、ベストエフォート方式で配信される。ノードは、トランザクションを検証し、該トランザクションをそれらが構築しているブロックに追加し、次いで、完成したブロックを他のノードにブロードキャストする。ブロックチェーンは、プルーフオブワーク(proof-of-work)などの様々なタイムスタンプ付けスキームを使用して、変更をシリアライズする。代わりの合意が、ホスト組織により提供されかつサポートされる様々なブロックチェーンプロトコルと関連して利用されてもよく、そのような合意メカニズムには、例えば、いくつか例を挙げると、プルーフオブステーク(proof-of-stake)、プルーフオブオーソリティ(proof-of-authority)、及びプルーフオブバーン(proof-of-burn)が含まれる。
オープンブロックチェーンは、一般に公開されているが閲覧するために物理的なアクセスを必要とする従来の伝統的な所有権記録よりユーザフレンドリである。早期のブロックチェーンのほとんどが許可なし(permissionless)であったため、いわゆる「ブロックチェーン」の特定の受け入れられる定義についていくらかの議論があり、例えば、中央オーソリティによりタスクを課され承認された立証者(verifiers)を有するプライベートシステムはブロックチェーンと考えられるべきかどうかなどである。許可あり又はプライベートのチェーンの支持者は、用語ブロックチェーンが、データをタイムスタンプ付きブロックにグループ化する任意のデータ構造に適用され得ると主張している。これらのブロックチェーンは、データベースにおけるマルチバージョン同時実行制御(multiversion concurrency control、MVCC)の分散バージョンとして機能する。MVCCが、2つのトランザクションがデータベース内の単一のオブジェクトを同時に修正することを防止するのと同様に、ブロックチェーンは、2つのトランザクションが一ブロックチェーン内で同じ単一のアウトプットを消費することを防止する。その意味論にもかかわらず、「ブロックチェーン」に関して本明細書に記載される方法論は、従来のブロックチェーンプロトコル実装を拡張してさらなる柔軟性を提供し、記載のブロックチェーン実装に対する新しいサービス及びユースケースを切り開き、ホスト組織110のブロックチェーンサービスインターフェース190により提供又はサポートされる特定のブロックチェーンプロトコルに依存して、プライベート及びパブリック双方のメカニズムが本明細書で説明され、ホスト組織110によりサポートされる異なる実装のために必要に応じて利用される。
オープンで、許可なしの、又はパブリックのブロックチェーンネットワークの利点は、悪い行為者に対する防護が必要なく、アクセス制御が必要ないことである。これは、ブロックチェーンをトランスポート層として使用して、他者の承認や信頼なくアプリケーションをネットワークに追加できることを意味する。逆に、許可ありの(permissioned)(例えば、プライベートの)ブロックチェーンは、アクセス制御層を使用して、ネットワークに対して誰がアクセスを有するかを管理する。パブリックブロックチェーンネットワークと対照的に、プライベートブロックチェーンネットワーク上のバリデータは、例えば、ネットワーク所有者、又はコンソーシアムの1以上のメンバにより調べられる。これらは、既知のノードに依存してトランザクションを検証する。許可ありのブロックチェーンは、「コンソーシアム」又は「ハイブリッド」ブロックチェーンとも呼ばれている。今日、多くの企業は、パブリックブロックチェーンシステムから独立した、プライベートブロックチェーンを有するブロックチェーンネットワーク、又はブロックチェーンベースの分散台帳を使用している。
図1Bは、説明される実施形態による、ブロックチェーンプロトコルブロック160のさらなる詳細を有する別の例示的なアーキテクチャ101を示す。
詳細には、ブロックチェーンプロトコルブロック160は、ホスト組織110のブロックバリデータ192により検証されるようにここでは示されており、ブロックチェーンプロトコルブロックは、その様々なサブコンポーネントと特定の任意の要素のさらなる詳細を含み、該任意の要素は、ブロックチェーンサービスインターフェース190を介して利用される特定のブロックチェーンプロトコルに依存してブロックチェーンプロトコルブロック160と関連して利用され得る。
特定の実施形態によれば、ここに示されるブロックチェーンプロトコルブロック160は、ホスト組織110によりサポートされる任意の所与のブロックチェーンプロトコルの基本ブロックがどのように編成されるかについての特定の構造を定義する。
先行ハッシュ161は、先行ブロック159からのデータを入力として使用する不可逆的数学計算の結果である。先行ブロック159は、同様に、n個の前のブロック158からのデータを利用して、これらのそれぞれのブロックの先行ハッシュを形成する不可逆的数学計算を形成した。例えば、一実施形態によれば、利用される不可逆的数学計算はSHA256ハッシュ関数であるが、他のハッシュ関数が利用されてもよい。そのような実施形態によれば、ハッシュ関数は、チェーン内の先行ブロック159又はn個の前のブロック158のいずれかにおけるデータに対する任意の変更を結果としてもたらし、これらの先行ブロックのハッシュに予測不可能な変更を引き起こし、結果的に、目下又は現在のブロックチェーンプロトコルブロック160を無効にする。先行ハッシュ161はブロック間のリンクを作成し、それらを一緒にチェーン化して、現在のブロックチェーンプロトコルブロック160を形成する。
ブロックバリデータ192が、先行ブロック159の先行ハッシュ161を算出するとき、ハッシュは、プルーフ基準(standard of proof)165として記憶されたデータにより定義された特定の基準を満たさなければならない。例えば、一実施形態において、このプルーフ基準165は、算出されたハッシュがこれ未満でなければならないという数である。ハッシュ関数の出力は予測不可能であるため、ハッシュが計算される前に、どの入力がプルーフ基準165未満の出力を結果としてもたらすかを知ることはできない。ノンス162は、ブロックのデータ内容を変化させるために使用され、プルーフ基準165を満たす出力の追求においてハッシュ関数により多数の異なる出力が生成されることを可能にし、ゆえに、プルーフ基準165の基準を満たすハッシュ値を結果としてもたらすノンス162を有する有効なブロックの生成を極めて計算上高価に(したがって、統計的に可能性を低く)する。
ペイロードハッシュ162は、ブロックチェーンプロトコルブロック160のブロックペイロード169部分内に記憶されたデータのハッシュを提供し、いずれの特定のプルーフ基準165も満たす必要はない。しかしながら、ペイロードハッシュは、ハッシュが次の又は後続のブロックの先行ハッシュ161として記憶する目的で算出されるとき、入力の一部として含まれる。タイムスタンプ164は、特定のエラー範囲内でブロックチェーンプロトコルブロック160がいつ作成されたかを示す。ブロックチェーンサービスインターフェース190を介して提供される特定のブロックチェーンプロトコル実装によれば、ユーザ(例えば、ブロックチェーンプロトコルノード)の分散ネットワークは、その自身の既知の時間に対してタイムスタンプ164をチェックし、エラー閾値を超えるタイムスタンプ164を有するいかなるブロックも拒否するが、このような機能性は任意であり、特定のブロックチェーンプロトコルにより必要とされ、他者には利用されなくてもよい。
ブロックチェーンプロトコル証明書(certification)166は、ブロックペイロード169の必要なサイズ及び/又はデータ構造を定義し、特定のブロックチェーンプロトコル実装への準拠を証明し、ゆえに、ブロックチェーンプロトコルブロックが、示されたブロックチェーンプロトコルの特定の要件及び構成選択肢をサブスクライブし、実現し、守ることを証明する。ブロックチェーンプロトコル証明書166は、所与のブロックチェーンプロトコルのバージョンをさらに示してもよく、ブロックチェーンプロトコルは、ノードが新しいブロックチェーンプロトコルブロックを非準拠のため拒否し始める前に、ブロックに対する限られた後方及び前方互換性を許可してもよい。
ブロックタイプ167は、利用される特定のブロックチェーンプロトコルに依存して任意である。ブロックチェーンサービスインターフェース190を介して公開される特定のブロックチェーンプロトコルに必要とされる場合、ブロックタイプ167は、以下でより詳細に説明されるように、許容可能なブロックタイプ167の列挙されたリストの1つとして示されなければならない。特定のブロックチェーンプロトコルは複数の異なるブロックタイプ167を使用し、これらの全てが可変のペイロードを有し得るが、利用されるブロックチェーンプロトコル、宣言されたブロックタイプ167、及びそのような要件への準拠を証明するブロックチェーンプロトコル証明書166に従って先験的に分かる構造を有する。非準拠若しくは無効なブロックタイプ、又は所与の宣言されたブロックタイプ167に対して予期されていない構造若しくはペイロードは、ネットワークノードによるそのブロックの拒否を結果としてもたらす。
可変サイズのブロックペイロード169が利用される場合、ブロックタイプ167は、そのような可変サイズのブロックペイロード169の許容性を示すと共に、ブロックペイロード169内の最初のバイトのインデックスとブロックペイロード169の合計サイズを示すことができる。ブロックタイプ167は、ブロックペイロード169の読み出し、アクセス、並びに正しい処理及び解釈に関連する他の情報を記憶するために利用されてもよい。
ブロック内に記憶されたブロックペイロード169のデータは、例えば、金融トランザクション、所有権情報、データアクセス記録、文書バージョニング、医療記録、投票記録、準拠及び証明書、教育上のトランスクリプト、購入レシート、デジタル権利管理記録、又は本質的にデジタル化可能な任意のデータであるブロックチェーンプロトコルブロック160のペイロードを介して記憶可能な文字どおり任意の種類のデータに関連するペイロード情報を含む、利用される特定の実装及びブロックチェーンプロトコルに依存した、任意の数の広範なトランザクションデータに関連し得る。選ばれた特定のブロックチェーンプロトコルに依存して、ペイロードサイズは固定サイズでも可変サイズでもよく、いずれの場合も、ペイロードハッシュ163を生成するハッシュのための入力の少なくとも一部として利用される。
様々なプルーフ基準165が、選ばれた特定のブロックチェーンプロトコルに応じて利用されてもよく、例えば、プルーフオブワーク、ハッシュ値要件、プルーフオブステーク、鍵、又は、合意若しくはプルーフオブコンセンサス(proof of consensus)のような他の何らかのインジケータなどである。合意に基づく手法が利用される場合、ブロックチェーン合意マネージャ191は、ホスト組織110のために合意管理を提供するが、ホスト組織110は、ブロックチェーンサービスインターフェース190を介してホスト組織110によりアクセスされる所与のブロックチェーンプロトコルのための単に多くのノードのうちの1つとして動作してもよく、あるいは代わりに、ホスト組織110は、ブロックチェーンサービスインターフェース190を介して、顧客及びサブスクライバに対する(及び、潜在的には、認証されていないパブリックノード参加者に対する)クラウドベースのサービスとして特定のブロックチェーンプロトコルを定義し、提供してもよい。このようなプルーフ基準165は、ハッシュ値がプルーフ基準より小さい、プルーフ基準より大きいことを要求するルールとして適用されてもよく、あるいは、特定のビットシーケンス(例えば、10個のゼロ、又は定義されたバイナリシーケンス)、又は必要な数の先頭若しくは後端のゼロ(例えば、20個の先頭又は後端のゼロを結果としてもたらす入力のハッシュなどであり、これは、既知の有効な入力なしに提供することが計算上実行不可能である)を必要としてもよい。
先行ハッシュ161、ペイロードハッシュ163、又は承認されたハッシュ168に使用されるハッシュアルゴリズムは、特定のブロックチェーンプロトコル実装に依存して、全て同じタイプのものでも異なるタイプのものでもよい。例えば、許容可能なハッシュ関数は、MD5、SHA‐1、SHA‐224、SHA‐256、SHA‐384、SHA‐515、SHA‐515/224、SHA‐515/256、SHA‐3、又は原像攻撃に耐性のある任意の適切なハッシュ関数を含む。さらに、ハッシュが1回だけ計算されるという要件もない。ハッシュ関数の結果は、最終結果を生成するために、別の又は同じハッシュ関数への入力として再度、複数回再使用されてもよい。
図1Cは、説明される実施形態による、ブロックチェーン及びフォークしたブロックチェーン(forked blockchain)のさらなる詳細を有する別の例示的なアーキテクチャ102を示す。
より詳細には、次に、プライマリブロックチェーン(例えば、合意ブロックチェーン)が示され、これは、ジェネシスブロック141(時にルートブロックと呼ばれる)で始まり、各々がヘッダを有する一連の標準ブロック142が後に続き、該ヘッダは、それに先行するブロックのヘッダのハッシュに少なくとも部分的に基づいて形成される。さらに、最初のフォークルートブロック144と共に形成されたフォークしたブロックチェーンが示されており、次いで、一連の標準ブロック142が後に続いている。ブロックチェーン内の各ブロックは、前のハッシュに記憶された直前のブロックのハッシュを含むため、各ブロックからチェーンに戻るリンクは、ブロックチェーンを介して効果的に生成され、悪意を持ってチェーンを修正することを法外に困難又は計算上実行不可能にするキーコンポーネントである。
図示されるように、プライマリブロックチェーンは、フォークブロック143から始まる単一のフォークを含む。ここに示すように、ジェネシスブロック141は、プライマリブロックチェーンを開始する特殊ブロックであり、他のブロックとは異なり、なぜならば、それがプライマリブロックチェーンの最初のブロックであり、したがって、定義上、何らかの前のブロックのハッシュを含むことができないからである。ジェネシスブロック141は、利用される特定のブロックチェーンプロトコルに対するプライマリブロックチェーンの開始を示す。ブロックチェーンプロトコルは、プライマリブロックチェーンが成長する方法、どのデータが記憶され得るか、及びフォークしたブロックチェーンが作成されるかを管理し、また、任意のブロック及び任意のチェーンの有効性は、ブロックチェーンプロトコル証明書166により定められたルール及び要件に応じて、ホスト組織のブロックバリデータ192又はブロックチェーンの任意の他の参加ネットワークノードを介して立証されてもよく、該ブロックチェーンプロトコル証明書は、ジェネシスブロック141に埋め込まれ、次いで、プライマリブロックチェーン又は任意のフォークしたブロックチェーン内のあらゆる後続ブロックにより証明され(certified)、準拠されなければならない。
ジェネシスチェーン内の各ブロック内のブロックチェーンプロトコル証明書166は、フォークの作成と、もしあればそれらのフォークにおけるルール及び構成パラメータの修正を可能にする、ルール及び構成パラメータのデフォルトセットを定義する。いくつかのブロックチェーンプロトコル実装は、ブロックチェーンプロトコル証明書166を介して確立されたルールのデフォルトセットへのいかなるバリエーション又は非準拠も許可せず、したがって、いかなるフォークも、複数の競合する潜在的に有効なプライマリブロックチェーンについての合意の保留の結果である。ひとたび合意が達せられると(典型的には、1又は2サイクルと新しいブロック形成の後)、合意を有する分岐が採用され、フォークは切り捨てられ、ゆえに、単一のプライマリ合意ブロックチェーンに戻る。反対に、他の実装において、フォークしたブロックチェーンが、ブロックチェーンプロトコル証明書166と、そのブロックチェーンプロトコル内のフォークしたブロックチェーンに対するルール及び構成パラメータの許容可能なバリエーションに準拠する限り、フォークしたブロックチェーンは、許容される方法で(permissibly)作成され、プライマリブロックチェーンと共に無限に存在し続けてもよい。
フォークブロック143は、フォークしたブロックチェーンをプライマリブロックチェーンに固定し(anchors)、それにより、プライマリブロックチェーンとフォークチェーンの双方が、ブロックチェーンプロトコル証明書166に応じて許可される場合に有効かつ許容可能なチェーンと考えられる。通常、ブロックチェーンでは、全ての非合意フォークは最終的に無視され、あるいは切り捨てられ、ゆえに、合意を有する最も長いチェーンを表す1つのチェーンを除いて無効と考えられる。それにもかかわらず、フォークブロック143は、それが標準ブロック142であるかのように動作し、出現する一方で、許容可能なフォークしたブロックチェーンの最初のブロックを識別するフォークハッシュ149への参照をさらに含むことにより、先行のブロックチェーンプロトコルの従来の水準を超えて拡張し、ここで、該最初のブロックは、有効なフォークしたブロックチェーンのフォークルートブロック144として表されている。次いで、フォークしたブロックチェーンのフォークルートブロック144は、各々が先行の有効ブロックのハッシュに基づくヘッダを有する標準ブロックが後に続き、無限に続くことになる。
特定の実施形態によれば、フォークしたブロックチェーンは、プライマリ合意ブロックチェーン内でデフォルトで利用されるルール及び構成パラメータからのいくらかのバリエーションを利用し、結果として、有効なフォークしたブロックチェーンの必要をもたらす。したがって、ルール及び構成パラメータのバリエーションは、フォークルートブロック144の新しいブロックチェーンプロトコル証明書166内で符号化され、これは、上述のように、プライマリブロックチェーンのオリジナルのジェネシスブロック141のブロックチェーンプロトコル証明書166により定められているオリジナルのルール及び構成パラメータの有効範囲に準拠したままでなければならない。フォークルートブロック144はオリジナルのブロックチェーンプロトコル証明書166を運び続けなければならないため、フォークしたブロックチェーンプロトコル証明書は、フォークルートブロック144のブロックペイロード169セグメント内に記憶され、ゆえに、フォークしたブロックチェーン内の後続の標準ブロック142のルール及び許容可能な構成パラメータを確立する。
新しいブロックチェーンプロトコル証明書166が有効なフォークに適用されるとき、そのルール及び構成は、該フォークと、さらなるフォークが許可される場合には全ての後続のサブフォークの、全ての後続の標準ブロックに適用され、参加ノードにより、フォークしたブロックチェーンがオリジナルのプライマリブロックチェーンであるかのように強制される。このようなフォークは、ワーキンググループなどの特定のグループ、トランザクションの特定のサブタイプ、又は、完全に別個の「サイドチェーン」が必要されず又は望ましくない場合のプライマリブロックチェーンからの何らかの他のバリエーションのために、ルール又は構成の特化されたセットを適用することを求める特定の顧客に対して望ましい場合がある。フォークしたブロックチェーンは、それが同じブロックチェーンプロトコルの一部のままであり、フォークブロック143においてプライマリブロックチェーンと永続的に接続され、戻りフォークハッシュ149がプライマリ合意ブロックチェーンに戻され、不変的に書き込まれるとき、サイドチェーンから区別でき、それは、プライマリブロックチェーンの全ての後続の標準ブロックに対してチェーンハッシュスキームを介して残ることになる。かなり簡単に述べると、フォークしたブロックチェーンは、フォークブロック143を介してプライマリブロックチェーンに明示的に結び付けられる。反対に、サイドチェーンは、プライマリブロックチェーン内に埋め込まれたいかなる明示的な参照又はフォークハッシュ149もなくプライマリブロックチェーンと任意のサイドチェーンとの間で渡される全ての情報又は値に対して、合意されたレートの交換又は変換ファクタが適用される完全に区別可能なブロックチェーンプロトコルであり得る。
したがって、サイドチェーン化は、1つのブロックチェーンからのトークン、値、又はペイロードエントリが、予め定義された交換又は変換スキームを介して完全に別個のブロックチェーン内で安全に使用され、さらに、必要な場合には許容される方法でオリジナルのチェーンに戻され得るメカニズムである。慣例により、オリジナルのブロックチェーンは、メインチェーン又はプライマリブロックチェーンと呼ばれ、一方、ユーザがメインチェーンのトークン、値、又はペイロードを利用してそれらの中で取り引きすることを可能にする任意のさらなるブロックチェーンは、サイドチェーンと呼ばれる。例えば、パブリックブロックチェーンへの定義されたリンクを有するプライベートブロックチェーンがあり得、ゆえに、トークン、値、ペイロードデータをパブリックブロックチェーンとプライベートブロックチェーンの間で安全に移動することができる。
説明される実施形態によれば、フォークしたチェーンのプロトコルルールを定義するブロックチェーンプロトコル証明書166は、Python、Ruby、Perl、JavaScript(登録商標)、PHP、Scheme、VBScript、Java(登録商標)、Microsoft(登録商標).NET、C++、C#、C、又はプロトコルルールを定義するためのカスタム作成言語などの、任意の関連プログラミング言語又はスクリプティング言語で開発されてもよい。
通常の作動条件下では、従来のブロックチェーンでさえ、時折自然にフォークするが、既知のブロックチェーンでは、最終的に1つの分岐のみがプライマリ合意チェーンを形成し得、全ての他のフォークは無視され又は切り捨てられなければならず、プライマリ合意ブロックチェーンのみが有効とみなされる。どのチェーンが有効であるかの合意は、最も長いチェーンを選択することにより達成されてもよく、ゆえに、これは、それを完成させることに最も多くのワークを投入されたブロックチェーンを表す。したがって、本明細書で説明されるフォークブロック143を利用して、許容される方法でフォークしたチェーンが作成され、フォークハッシュ149を介して承認されたフォークとして証明されることを可能にし、参加ノードがフォークを無視し又は切り捨てることを防止する必要がある。各ノードが、フォークしたブロックチェーンを独立して検証し得るため、それはちょうど、検証されたプライマリブロックチェーンが合意を有すると無視されないように、無視されないことになる。
図1Dは、説明される実施形態による、サイドチェーンについてさらなる詳細を有する別の例示的なアーキテクチャ103を示す。
より詳細には、親ブロックチェーン188(例えば、プライマリチェーン)からサイドチェーン189への対称的な双方向ペグの移転(two-way pegged transfer)を行うためのメカニズムがここに示されており、該サイドチェーン189は、ホスト組織110によりサポート及び提供される異なるブロックチェーンプロトコルでもよく、あるいはサイドチェーンは、ホスト組織110のサイドチェーン交換マネージャ193がノードとして参加し、サイドチェーンとのアクセス及びトランザクション能力を可能にするための、パブリック又はプライベートの、外部のブロックチェーンでもよい。それにもかかわらず、説明される実施形態によれば、親ブロックチェーン188とサイドチェーン189との間のチェーン間(inter-chain)移転は、各それぞれのブロックチェーンのルール及び条件に準拠して許容される方法で実行され得る。注目すべきことに、ここで記載されるように、各ブロックチェーンの視点は、ここで示されるサイドチェーン189がそれ自体をプライマリ又は親ブロックチェーンとみなし、示される親ブロックチェーン188を子ブロックチェーン又はサイドチェーンとみなし得るように交換不能である。それにもかかわらず、各ブロックチェーンは独立して動作し、さらに、それらの間でトークン、値、又はペイロード情報を交換するための定義された交換メカニズムを有する。
ここに示されるように、ホスト組織のサイドチェーン交換マネージャ193は、動作151において親ブロックチェーン188の出力として親チェーン資産を送信し得る。
親ブロックチェーン188資産に関連づけられた簡易支払立証(Simplified Payment Verification、SPV)プルーフ181が出力として生成され、サイドチェーン189に通信される。SPVプルーフはワークの閾値レベルを含んでもよく、生成は所定の期間にわたり実施されてもよく、これは確認期間(confirmation period)152とも呼ばれることがある。チェーン間の移転の確認期間は、コイン、トークン、又は他の交換される値がサイドチェーン189に成功裏に移転され得る前に親ブロックチェーン188上でロックされる継続時間でもよい。この確認期間は、十分なワークが作成されることを可能にし得、それにより、次の待機期間におけるサービス拒否攻撃は、より計算的に困難になる。
例えば、1〜2日のオーダであり得る一例示的な確認期間を考える。確認期間は、そのような例では、より高いセキュリティと引き換えにクロスチェーン移転速度をトレードオフするサイドチェーンごとのセキュリティパラメータとして実現されてもよい。十分に困難なプルーフオブワーク条件が果たされ、適切なセキュリティを保証して双方のブロックチェーンの完全性を保護し、不正なトランザクションの可能性を否定する場合、一層短い他の確認期間が利用されてもよい。
親ブロックチェーン188上で作成される出力は、(例えば、親ブロックチェーン188の各ブロックのブロックチェーンプロトコル証明書部分に記憶される)ルール及び構成パラメータを介して、将来に出力により受信される資産の任意の支出、移転、又は消費が、親チェーン内の移転を管理するルールに追加でさらなる条件を負うという要件を指定してもよい。例えば、出力により受信された資産の任意の解放(release)は、宛先チェーンからのプルーフを立証するためのさらなる条件を必要としてもよく、例えば、宛先チェーンプルーフのルールが、宛先チェーンが資産を解放したことを示し、かつどこに対して資産が解放されたかを示すことを検証することなどである。親ブロックチェーン188上で出力を作成した後、ユーザは確認期間の終わりを待ち、一方、チェーン内(intra-chain)移転153は引き続き発生する。確認期間の終わりを待った後、次いで、トランザクションがサイドチェーン189上に作成され、親ブロックチェーン188からの出力を参照する。
次いで、サイドチェーンは、ホスト組織のブロックバリデータ192などのサイドチェーンバリデータサービスを使用し、親チェーン資産が作成され、かつ親チェーン内の十分なワークにより担保された(encumbered)ことを示すSPVプルーフを提供される。次いで、サイドチェーンバリデータサービス(例えば、ホスト組織の利用可能なサービスにより実行される場合、ブロックバリデータ192)は、親ブロックチェーン188資産に関連づけられたSPVプルーフが動作154においてSPVプルーフにより示されるワークの必要な閾値レベルを満たし、親ブロックチェーン188資産に対応するサイドチェーン189資産が次いで生成されることを検証する。
生成されたサイドチェーン189の資産もまた、動作154において所定のコンテスト期間(contest period)の間保持されてもよく、その時間の間、親ブロックチェーン188の資産に関連づけられた再編成(reorganization)プルーフ183が親ブロックチェーンにおいて検出された場合、移転は無効にされる。
動作154におけるコンテスト期間は、新たに移転されたトークン、コイン、値、又はペイロードデータがサイドチェーン189で支出され、アクセスされ、又は消費されることがない継続時間であり得る。所定のコンテスト期間は、再編成の間、前にロックされたコイン、トークン、値、又はペイロードデータを移転することによる親ブロックチェーン188での二重支出のいかなる可能性も防止するために実現される。この遅延の間のいずれかの時点で、ロック出力が作成されたブロックを含まないより集約的なワークを有するチェーンを含む、新しいSPVプルーフ184(「再編成プルーフ」として知られる)が公開された場合、変換は、遡及的に無効にされる。再編成プルーフが検出されない場合、サイドチェーン資産は解放されてもよい。サイドチェーン上の全ての参加ノードは、可能であれば、再編成プルーフを作成するインセンティブを有し、なぜならば、悪いプルーフが認められた結果、全てのサイドチェーントークン、コイン、値、又はサイドチェーン189により記憶されたペイロードデータの真正性における信頼の価値を低下させるためである。
上記と同様に、動作156における一例示的なコンテスト期間も、1〜2日のオーダであり得る。これらの遅延を回避するために、ユーザは代わりに、流動性のある市場が利用可能である限り、代替可能な移転のためにアトミックスワップを採用し、使用してもよい。交換された資産が、ユニーク又はあまり一般的でないトークン、値、ペイロードデータである場合、潜在的に長い1〜2日の待機期間の必要にもかかわらず、アトミックスワップは実行不可能であり、代わりにサイドチェーン移転が生じなければならない。
サイドチェーン資産の最終的な解放に対して、親チェーン資産に対応するサイドチェーン資産は、次いで、サイドチェーン内で、1回以上、サイドチェーン189のチェーン内移転153を移転され、あるいは消費され得る。親ブロックチェーン188上でロックされている間、資産は、サイドチェーン内で、親ブロックチェーン188とのいかなるさらなる相互作用も必要なく自由に移転可能であり、ゆえに、サイドチェーン189が再度、完全に独立して動作することを可能にする。上記にもかかわらず、サイドチェーン資産は、そのアイデンティティを親チェーントークン、コイン、値、又はペイロードデータとして保有し、したがって、必要が生じた場合、サイドチェーン資産が発生した元の発生ブロックチェーン188に戻されてもよい。特定の実施形態において、移転は単一のホップのみに委託され、それにより資産は、サイドチェーン189に移転され、次いで再度別のサイドチェーンに移転されることはできず、その場合、ソースの不明瞭化を防止することが必要である。このような制限は、選択された特定のブロックチェーンプロトコルと、親ブロックチェーン188及びサイドチェーン189の間に確立された定義交換合意(例えば、ペグ条件(pegging conditions))に依存する。
親ブロックチェーン188内のサイドチェーン資産を引き換える(redeem)ことが必要になった場合、サイドチェーン資産は、動作157に示されるように、サイドチェーンの出力に送られ得る。ゆえに、サイドチェーン資産に関連づけられたSPVプルーフ182が生成され、親ブロックチェーン188に通信される。ホスト組織110のブロックバリデータ193などの親チェーンバリデータサービスは、動作156においてサイドチェーン資産に関連づけられたSPVプルーフ182を検証し得る。サイドチェーン189資産に関連づけられた検証されたSPVプルーフ182は、例えば、サイドチェーン資産に関連づけられたSPVプルーフ182が、サイドチェーン資産に関連づけられたSPVプルーフ182により示されるワークの閾値レベルを満たすという検証を含んでもよい。
前述のように、サイドチェーン資産に関連づけられた親チェーン資産は、ステップ156において第2の所定のコンテスト期間の間保持され得、その間、親チェーン資産の解放は、サイドチェーン資産に関連づけられた再編成プルーフ183がサイドチェーンにおいて検出された場合、動作158において拒否される。親チェーン資産は、サイドチェーン資産に関連づけられた再編成プルーフ183が検出されない場合、解放されてもよい。
再編成プルーフ183が受信された後、第2のSPVプルーフ184に関して検証の失敗が発生した場合、サイドチェーン資産に関連づけられた第2のSPVプルーフ184は、動作159において第3の所定のコンテスト期間中に親ブロックチェーン188により受信され、検証され得る。親ブロックチェーン188資産は、サイドチェーン資産に関連づけられた再編成プルーフが第3の所定のコンテスト期間中に検出されない場合、解放されてもよく、その後、親チェーン資産は、親ブロックチェーン188フローの最右端に示される図示のチェーン内移転153を介して親チェーン内で自由に移転できる。
ペグのサイドチェーンは多くの異なるブロックチェーンからの資産を運ぶことがあるため、他の外部のブロックチェーンのセキュリティについて仮定を行うことは問題がある可能性がある。したがって、特定の実施形態によれば、異なる資産はサイドチェーン内で(明示的な取引によるものを除き)交換可能でないことが要求される。さもなければ、悪意のあるユーザが潜在的に、価値のない資産を有する価値のないチェーンを作成することにより不正な取引を実行し、次いで、価値のないチェーンからの価値のない資産をプライマリブロックチェーン188に、又はプライマリブロックチェーン188が相互作用して交換を行うサイドチェーン189に続けて移動する可能性がある。これは、価値のないチェーンがサイドチェーンとのペグ交換合意を保証することを前提とする。しかしながら、サイドチェーン189のルール、構成選択肢、及びセキュリティスキームは、(サイドチェーンが外部のサイドチェーンであり、ホスト組織110により提供される別のブロックチェーンプロトコルでないと仮定すると)親ブロックチェーン188により制御されないため、相互作用されるサイドチェーン189がそのような脆弱性を含まないことを、単純に、確信を持って知ることができない。この潜在的なセキュリティ脆弱性を否定するために、サイドチェーン189は、ペグ交換合意により、図1B、要素167で示されるブロックチェーンプロトコルブロックのブロックタイプ部分により示されるように、完全に別個の親ブロックチェーンからの資産を完全に別個の資産タイプとして取り扱うように要求されてもよい。
対称的な双方向ペグのサイドチェーン移転では、特に、親ブロックチェーン188がホスト組織で提供される場合、及び、サイドチェーンが、ホスト組織がサイドチェーン交換マネージャノード193を介した参加ノードに過ぎない外部のサイドチェーンである場合、親ブロックチェーン188とサイドチェーン189の双方が、互いにおいてデータのSPV検証サービスを実行してもよい。親ブロックチェーン188クライアント(例えば、参加ノード)は、あらゆるサイドチェーンを観察するわけではないため、ユーザは、サイドチェーンからのプルーフオブワークを親チェーンにインポートして所有を証明する。対称的な双方向ペグでは、その逆もまた当てはまる。例えば、親ブロックチェーン188としてビットコインを使用するために、このようなSPVプルーフを認識及び検証する拡張スクリプトが利用されてもよい。このようなトランザクションを容易にするために、SPVプルーフは、ビットコイントランザクションペイロード内に適合するようにサイズが十分小さくなければならない。しかしながら、このような変更は、前述のように、ペグのサイドチェーントランザクションに関与しないトランザクションに影響を与えることなく、フォークトランザクションとして実現されてもよい。言い換えると、上述のように対称的な双方向ペグのサイドチェーンを使用すると、ビットコイン内で有効とみなされる任意のトランザクションに対して、必ずしもさらなる制限は課されないことになる。
このようなペグのサイドチェーントランザクションの使用により、独立したブロックチェーンは、チェーンが最初に作成されたときには存在しなかった資産を含む多くの資産をサポートするのに十分な柔軟性を有するようにされる。これらの資産の各々は、それが移転された元のブロックチェーンでラベル付けされて、移転が正しく解消される(unwound)(例えば、戻される)ことを保証してもよい。
特定の実施形態によれば、コンテスト期間の継続時間は、親チェーンとサイドチェーンとの相対的なハッシュ能力に応じて作られてもよく、それにより、受信サイドチェーン(又は、入ってくる移転を有する親ブロックチェーン)は、その自身のプルーフオブワークの1日分のSPVプルーフを前提としてのみトークン、コイン、値、又はデータペイロードをアンロックしてもよく、該プルーフオブワークは、例えば、送信ブロックチェーンのプルーフオブワークの数日に対応し得る。ゆえに、特定のサイドチェーンのブロックチェーンプロトコル実装のセキュリティパラメータは、各特定のサイドチェーンの実装に合わせられてもよい。
図2〜図4は、本発明の実施形態における分散台帳技術を実現する方法を示すフロー図を示す。実施形態では、ブロックチェーンビジネスネットワーク及びブロックチェーンベースのアプリケーションを構築するツールを含む1つ以上のブロックチェーンフレームワーク実装に基づいて、ホストされたブロックチェーンプラットフォームが提供される。ホストされたブロックチェーンプラットフォームは、本特許出願の譲受人のようなクラウドベースのコンピューティング環境サービスプロバイダの顧客にブロックチェーンアズアサービス(Blockchain as a Service、BaaS)を提供することができ、それにより、顧客は、付随するハードウェア及びソフトウェアを含むワーキングブロックチェーン及び合意モデルを構成及びセットアップする必要がない。説明される方法は、ハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)を含み得る処理論理により実行されて、本明細書に記載のシステム及び方法に従って設計、定義、取り出し、パース、持続、公開、ロード、実行、動作、受信、生成、記憶、維持、作成、返信、提示、インターフェース、通信、伝送、クエリ、処理、提供、決定、トリガ、表示、更新、送信などの様々な動作を実行し得る。例えば、図1A以下に示されるホストされたコンピューティング環境111、そのデータベースシステム130、及び本明細書に記載する他のシステム及びコンポーネントは、説明される方法論を実現することができる。以下で列挙される論理ブロック及び/又は動作のいくつかは、特定の実施形態に従って任意である。提示される論理ブロックの番号付けは明りょうさのためであり、様々な論理ブロックが発生しなければならない動作の順序を規定することは意図されない。
本発明のいくつかの実施形態は、許可ありの、又はプライベートの、ブロックチェーンベースの分散台帳技術に関連して動作し得る。一実施形態において、ノードのコンソーシアムが許可ありのブロックチェーンに参加し、各ノードは、コンソーシアム内の異なる当事者(party)において、又は該当事者により運用される。例えば、コンソーシアムは、いくらかの数の銀行若しくは金融機関、又は保険会社を含んでもよい。いずれにしても、コンソーシアムのメンバは各々、そのそれぞれノードを介してコンソーシアムの他のメンバと通信し、許可ありのブロックチェーンに対する資産及び/又は資産を伴うトランザクションを追加し、かつ/あるいは検証する。
一実施形態において、ノードは、許可ありのブロックチェーンにコミットされ得る資産及び/又はトランザクションのタイプに関する情報を維持するデータベース、オンデマンドデータベースサービス、又は分散データベースシステムなどのデータストアへのアクセスを有し、これは、本明細書において以下で時にトランザクションタイプデータベースと呼ばれる。さらに、データストアは、合意プロトコル又は合意プロトコルタイプを各トランザクションタイプに関連づける。一実施形態において、1つ以上のノードがデータベースを維持し、一方、他のノードは単にデータベースへの読み出しアクセスを有する。他の実施形態において、例えば、クラウドコンピューティングサービスプロバイダのクラウドコンピューティングシステム内のアプリケーションサーバ又はアプリケーションサーバのクラスタ上で実行するブロックチェーンベースの分散台帳プラットフォームホストが、例えば、クラウドコンピューティングサービスプロバイダによりサポートされるブロックチェーンアズアサービス(BaaS)アプリケーションの一部として、データベースをセットアップし、維持してもよい。このような実施形態において、データベースはアプリケーションサーバにアクセス可能であり、コンソーシアム内のノードは、ブロックチェーンプラットフォームホストに要求を送信し、ブロックチェーンプラットフォームホストから応答を受信することによりデータベースにアクセスする。一実施形態において、各々がクラウドコンピューティングサービスの顧客組織又はコミュニティ内で、又はそれとして表されるコンソーシアム内の1つ以上のノードが、クラウドコンピューティングサービスのサブスクライバとしてデータベースにアクセスしてもよい。いくつかの実施形態において、データベース内の情報は、クラウドコンピューティング環境内のノードによる、又は該ノードのための迅速な読み出しアクセスのために、クラウドコンピューティングサービスプロバイダのクラウドコンピューティングシステム内のブロックチェーンプラットフォームホスト、アプリケーションサーバ、又はアプリケーションサーバのクラスタによりキャッシュされてもよい。
特定の資産又はトランザクションを含むブロックがブロックチェーンに追加されるべきとき、トランザクションタイプデータベースは、ブロックチェーンに追加されるべき特定の資産又はトランザクションのタイプを使用してクエリされ、特定の資産若しくはトランザクション、又は特定の資産若しくはトランザクションを含むブロックをブロックチェーンにコミットするために使用されるべき対応する合意プロトコルタイプを決定する。例えば、データベースにおいて、「ローン」のトランザクションタイプが「プルーフオブステーク」(PoS)の合意プロトコルタイプに関連づけられてもよく、「文書」の資産タイプが「ビザンチンフォールトトレラント」(Byzantine Fault Tolerant、BFT)の合意プロトコルタイプに関連づけられてもよく、「通貨」の資産又はトランザクションタイプが「プルーフオブワーク」(PoW)の合意プロトコルタイプに関連づけられてもよく、データベース内の他の列挙されていないトランザクションタイプの場合に使用されるデフォルトトランザクションタイプが、デフォルト合意プロトコルタイプ、例えばPoSに関連づけられてもよい。
ゆえに、上述の例で続けると、タイプ「ローン」を有する特定のトランザクションを有するブロック又はその中のトランザクションがブロックチェーンに追加されるべきとき、ブロック又はその中のトランザクションをブロックチェーンに対してコミットするために使用される合意プロトコルタイプはPoSであり、「文書」タイプを有する特定の資産を有するブロック又はその中のトランザクションがブロックチェーンに追加されるべきとき、ブロック又はその中のトランザクションをブロックチェーンに対してコミットするために使用される合意プロトコルタイプはBFTであり、データベース内で規定されていないトランザクションタイプを有する特定のトランザクションを有するブロック又はその中のトランザクションがブロックチェーンに追加されるべきとき、デフォルト合意プロトコルタイプのPoSが使用されて、ブロック又はその中のトランザクションをブロックチェーンに対してコミットする。
図2は、説明される実施形態による、分散台帳技術の方法を実現する方法200を示すフロー図を示す。
図2を参照し、ブロック205において、分散台帳技術(DLT)プラットフォームホスト、例えばブロックチェーンベースのDLTプラットフォームホスト、又は単にブロックチェーンプラットフォームホストの処理論理が、ブロックチェーンに新しいブロックを追加する要求を受信する。新しいブロックは、複数のトランザクションを典型的に含む。要求はトランザクションタイプを指定し、あるいはトランザクションタイプが指定されていない場合、デフォルトトランザクションタイプが仮定又は適用される。
一実施形態において、要求は、コンソーシアムを構成するピアツーピアネットワーク内のノードのうち1つから受信される。一実施形態において、トランザクションタイプは、ノードにより送信されるブロックチェーンプロトコルパケットで指定される。一実施形態において、トランザクションタイプは、ブロックチェーンプロトコルデータパケットのペイロード部分内のアプリケーション固有のデータフィールドで指定され、その場合、ブロックチェーンプロトコル自体は、指定されているトランザクションタイプを認識せず、パケットのペイロード部分内のトランザクションタイプの検出及び復号は、ブロックチェーンプラットフォームホスト上で実行される論理次第である。別の実施形態において、トランザクションタイプは、ブロックチェーンプロトコルデータパケットのヘッダ部内のフィールドで指定され、その場合、ブロックチェーンプロトコル自体が、指定されているトランザクションタイプを認識する。
論理ブロック210において、ホストは、要求からトランザクションタイプを取得し、トランザクションタイプデータベースにクエリし(queries)、ブロック又はその中のトランザクションをブロックチェーンに対してコミットする際に使用すべき対応する合意プロトコルタイプを返す。詳細には、ホストは、指定されたトランザクションタイプについてデータベースを検索し、指定されたトランザクションタイプをデータベース内のレコード中に見つけた後、該レコードから指定されたトランザクションタイプに関連づけられた選択された合意プロトコルを取得する。次いで、この選択された合意プロトコルタイプは、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求の検証に使用するために、コンソーシアムのノードに通信される。論理ブロック215において、コンソーシアム内のノードが、選択された合意プロトコルに従ってブロックチェーンにブロック又はその中のトランザクションを追加するための合意に達し、そのことをホストに通信したとき、ホストは、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を検証し、又は該要求の検証を受信する。最後、論理ブロック220において、ホストは、検証された新しいブロック又はその中のトランザクションをブロックチェーンに追加する。
図3は、本明細書に記載される他のフロー図の動作と関連して動作し得る、クラウドベースのコンピューティング環境において分散台帳技術のためのインテリジェントな合意、スマートな合意、及び重み付き合意のモデルを実現する方法300を示すフロー図を示す。
図3の300に示される本発明の別の実施形態によれば、ブロック305において、分散台帳技術(DLT)プラットフォームホストの処理論理が、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を受信する。新しいブロックは、複数のトランザクションを典型的に含む。要求はトランザクションタイプを指定し、あるいはトランザクションタイプが指定されていない場合、デフォルトトランザクションタイプが仮定又は適用される。
一実施形態において、要求は、コンソーシアムを構成するピアツーピアネットワーク内のノードのうち1つから受信される。一実施形態において、トランザクションタイプは、ノードにより送信されるブロックチェーンプロトコルパケットで指定される。この実施形態において、トランザクションタイプは、ブロックチェーンプロトコルデータパケットのペイロード部分内のアプリケーション固有のデータフィールドで、又はブロックチェーンプロトコルデータパケットのヘッダ部内のフィールドで指定されてもよい。いずれの場合も、論理ブロック310において、ホストは、要求からトランザクションタイプを取得し、機械学習ベースのソフトウェアエージェントを連動させて、指定されたトランザクションタイプに基づいてブロック又はその中のトランザクションをブロックチェーンに対してコミットする際に使用すべき複数の合意プロトコルタイプのうちの1つを選択する。この機械学習ベースのソフトウェアエージェントは、ブロックチェーンプラットフォーム、ブロックチェーンプラットフォームホスト、クラウドコンピューティング環境プラットフォーム、クラウドコンピューティングサービスプラットフォーム内のアプリケーションサーバ又はサーバクラスタに、例えば、ビジネスプロセス及びコンソーシアムデータなどの様々な選択されたファクタに基づいて予測及び推奨を配信する人工知能のレイヤとして構築されてもよい。この人工知能レイヤは、指定されたトランザクションタイプに基づいてブロック又はその中のトランザクションをブロックチェーンに対してコミットする際に使用すべき複数の合意プロトコルタイプのうち1つの選択を自動化するためのインサイト(insights)を使用してもよい。一実施形態において、この人工知能レイヤは、セールスフォースドットコム(登録商標)(salesforce.com)のアインシュタイン(Einstein)、セールスフォースのクラウドコンピューティングサービスアーキテクチャに組み込まれた人工知能(AI)レイヤにより提供されてもよい。
一実施形態において、機械学習ベースのソフトウェアエージェントは強化学習ベースのソフトウェアエージェントであり、それは、指定されたトランザクションタイプなどの1つ以上のファクタに基づいて、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を検証するために使用すべき複数の合意プロトコルのうち1つを、あるいは同じトランザクションタイプを指定する、新しいブロック又はその中のトランザクションをブロックチェーンに追加する1つ以上の前の要求を検証するために選択された合意プロトコルを選択する。
選択された合意プロトコルタイプは、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求の検証に使用するために、コンソーシアム内のノードに通信される。詳細には、一実施形態において、分散台帳技術プラットフォームホストは、この情報を提供するブロックチェーンプロトコルデータパケットのペイロード部分内にアプリケーション固有データフィールドを含むブロックチェーンプロトコルパケットを送信する。別の実施形態において、ブロックチェーンプロトコルデータパケットのヘッダ部分内のフィールドが、選択された合意プロトコルを指定してもよい。論理ブロック315において、コンソーシアム内の参加ノードが、選択された合意プロトコルに従ってブロックチェーンにブロック又はその中のトランザクションを追加するための合意に達し、そのことをホストに通信したとき、ホストは、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を検証し、又は該要求の検証を受信する。換言すれば、コンソーシアム内の全てのノードが必ずしも合意プロトコルに参加するわけではない。この目的のために、論理ブロック315において、ホストが、コンソーシアム内の参加ノードが選択された合意プロトコルに従ってブロックチェーンにブロック又はその中のトランザクションを追加するための合意に達したことの学習に基づいて、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を検証する前に、論理ブロック311は任意で、ピアツーピアネットワーク内のどのノードが選択された合意プロトコルに参加すべきかを選択する。最後、論理ブロック320において、ホストは、検証された新しいブロック又はその中のトランザクションをブロックチェーンに追加する。
一実施形態において、選択された合意プロトコルに参加すべきピアツーピアネットワーク内のノードを選択することは、例えばブロックチェーンプラットフォーム管理者により予め定義及び構成されたファクタのルールベースのセットに従って論理ブロック311により、及び/又は、オンザフライである時間にわたり動作する機械学習ベースのソフトウェアエージェント、例えば、どのノードが選択された合意プロトコルに参加すべきかを決定する際に同じルールベースのファクタのうち一部又は全部の考慮を自動化する強化学習ベースのソフトウェアエージェントを連動させることにより、達成されてもよい。任意の関連ファクタが、どのノードが合意プロトコルに参加するかを決定する際に使用されてもよく、例えば、選択された合意プロトコル自体、特定のノードのコンピューティングリソース、特定のノードがコンソーシアム又は選択された合意プロトコルにおいて有する利害関係(stake)、特定のノードが有する関連(ドメイン)知識、その知識がブロックチェーン又はコンソーシアムに関して内部(オンチェーン)であるか外部(オフチェーン)であるか、選択された合意プロトコルに参加する際の、速度の点か正確さの点か、又はこれらが欠如しているかどうかの、特定のノードの以前又は過去のパフォーマンス、ブロックチェーンに追加される新しいブロックのブロック番号、新しいブロック内のトランザクションの数、ブロックのサイズ、及びブロックチェーンに追加されるブロック内の資産又はトランザクションの信用又は非信用性(fiduciary or nonfiduciary nature)が含まれる。上述したファクタの多くは、どのノードが選択された合意プロトコルに参加するかを選択する際に、同時に、順次、階層的に、又は反復的に考慮されてもよい。
これらの要因に関する情報は、ブロックチェーンプロトコル自体の中で、例えば、オンチェーンメッセージングプロトコルに従って、あるいはブロックチェーンプロトコルの外で、人間若しくは従来の(オフチェーン)通信プロトコル、サイドチェーンを用いて、又はブロックチェーンプロトコルデータの、制御の、又はメッセージのパケットのペイロード部分で通信されるアプリケーション固有のデータ若しくはメッセージとしてのいずれかで、ノード及びブロックチェーンプラットフォームホストにより、及びこれらの間で通信されてもよい。さらに又は代わりに、ノードは、ランダム選択スキーム、ラウンドロビンスキーム、重み付きラウンドロビンスキーム等に基づいて参加するように選択されてもよい。
図4は、説明される実施形態による、分散台帳技術の方法を実現する方法400を示すフロー図を示す。
図4の400に示される別の実施形態によれば、ブロック405において、ブロックチェーンプラットフォームホストの処理論理が、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を受信する。新しいブロックは、複数のトランザクションを典型的に含む。一実施形態において、要求は、コンソーシアムを構成するノードのピアツーピアネットワーク内のノードのうち1つから受信される。
論理ブロック410において、ホストは、ピアツーピアネットワーク内のノードのうち1つ以上の各々から、要求に応答して、又はブロックチェーンプラットフォームホストにより発行された投票の要求に応答して、ブロックチェーンに新しいブロック又はその中のトランザクションを追加するための重み付き投票(weighted vote)を受信する。これらのノードは、要求を生成したノードによりブロードキャストされたブロックチェーンプロトコルパケットを介して、あるいは、コンソーシアムの他のノード、又はブロックチェーンプラットフォームホストにより送信された投票の要求と関連して又は組み合わせて要求の通知を提供するブロックチェーンプラットフォームホストと通信することにより、要求を学習する。論理ブロック415において、ホストは、受信した重み付き投票の合計が閾値を超えているとき、ブロックチェーンに新しいブロック又はその中のトランザクションを追加する要求を検証し、あるいは該要求の検証を受信する。最後、論理ブロック420において、ホストは、検証された新しいブロック又はその中のトランザクションをブロックチェーンに追加する。
図4の400に示されるプロセスの一実施形態によれば、ノードのコンソーシアムは、プライベートの、又は許可ありのブロックチェーンに参加する。各ノードは、例えば、ノードがブロックチェーンにおいて新しいブロックに追加することができるトランザクション又はトランザクションのタイプに関するドメイン(一般)知識に基づいて、その投票に与えられる重みを割り当てられる。ノードがブロックチェーンの新しいブロックにトランザクションを追加できる前、あるいはブロックチェーンにトランザクションを含む新しいブロックを追加できる前に、コンソーシアム内の他のノードは、ブロックチェーンの新しいブロックにトランザクションを追加すること、及び/又はブロックチェーンに新しいブロックを追加することについて投票する。ノードの過半数がトランザクションに合意し、かつ/あるいは新しいブロックが追加されるべきとき、トランザクション及び/又は新しいブロックが追加される。ノードは、プライベートブロックチェーンに参加しているノードのうち1つ以上の投票に基づいて「過半数(majority)」が取得され又は否定され得るように、すなわち、ブロックチェーンに参加しているノードの全部より少数から過半数が取得され得るように重み付けされる。
この実施形態によれば、コンソーシアム内の当事者は、例えば、当事者のドメイン知識、及び/又は、例えば、当事者の別のブロックチェーン又はサイドチェーンへの参加を含む他の基準に基づいて、コンソーシアム内の各ノードを割り当てる重みwに合意する。コンソーシアム内のノードの合計重みWは、個々のノード重みの和、w1+w2+...wnに等しく、nは、コンソーシアム内のノード数である。一実施形態において、いずれか1つのメンバの重みw、又はw/Wの比は、特定の閾値を超えても超えなくてもよい。各ノードの重みは、それぞれのノードの投票に起因する。投票したノードの重みの合計が特定の閾値を超えている場合、トランザクション/新しいブロックが検証され、ブロックチェーンに追加される。詳細には、投票に起因する合計重みWが、ブロックチェーンの合意に達するための閾値(例えば、コンソーシアムにより合意された、w/Wのパーセンテージの観点での相対多数、過半数、圧倒的多数、又はwの絶対値)を満たし又は超えている場合、トランザクション/新しいブロックが追加される。この実施形態において、ブロックチェーン内のノードは、ブロックチェーンにトランザクション及び/又は新しいブロックを追加することについて全員一致の合意に達する必要はなく、実際、閾値が満たされた後、ノードは、投票プロセスへの参加を開始又は継続する必要はない。
一実施形態において、少なくとも最小数のノードkが、ブロックチェーン内の新しいブロックにトランザクションを追加すること、又はブロックチェーンにトランザクションを含む新しいブロックを追加することについて投票して、詐欺又は二重支出のリスクを軽減し、あるいは大きい重みwを有する1つのノード又は集合的に大きい重みを有するノードのスモールグループが投票の結果を制御することを防止する。一実施形態において、投票に参加するノード数k、又はk/nの比率は、最小閾値を満たさなければならない。
方法200、300、及び400の別の実施形態によれば、ブロックチェーンに新しいブロックを追加する要求を受信することは、ピアツーピアネットワーク内の複数のノードのうち1つから、ブロックチェーン内の新しいブロックにトランザクションを追加する要求を受信することを含む。
方法200、300、及び400の別の実施形態によれば、選択された合意プロトコルに従って合意が達せられたとき、ブロックチェーンに新しいブロックを追加する要求を検証することは、選択された合意プロトコルに従ってピアツーピアネットワーク内の複数のノード間で合意が達せられたとき、ブロックチェーンに新しいブロックを追加する要求を検証することを含む。
方法200、300、及び400の別の実施形態によれば、複数のトランザクションタイプのうち1つを指定する要求を受信することは、ブロックチェーンプロトコルデータパケットのペイロード部分内のアプリケーション固有のデータフィールドと、トランザクションタイプを指定するブロックチェーンプロトコルデータパケットのヘッダ部分内のフィールドと、のうち1つを含むブロックチェーンプロトコルパケットを受信することを含む。
方法200、300、及び400の別の実施形態によれば、指定されたトランザクションタイプに応答して、ブロックチェーンに新しいブロックを追加する要求を検証するための複数の合意プロトコルのうち1つを選択することは、複数のトランザクションタイプの各々を複数の合意プロトコルのうち1つに関連づけるデータストアにおいて指定されたトランザクションタイプについて検索することと、検索に応答して、指定されたトランザクションタイプに関連づけられた選択された合意プロトコルを取得することを含む。
方法200、300、及び400の別の実施形態によれば、指定されたトランザクションタイプに応答して、ブロックチェーンに新しいブロックを追加する要求を検証するための複数の合意プロトコルのうち1つを選択することは、強化学習ベースのソフトウェアエージェントが、ブロックチェーンに新しいブロックを追加する要求を検証するための複数の合意プロトコルのうち1つを選択することと、分散台帳技術プラットフォームホストが、ブロックチェーンプロトコルデータパケットのペイロード部分内のアプリケーション固有のデータフィールドと、複数の合意プロトコルのうち選択された1つを指定するブロックチェーンプロトコルデータパケットのヘッダ部分内のフィールドと、のうち1つを含むブロックチェーンプロトコルパケットを送信することを含む。
方法200、300、及び400の別の実施形態によれば、強化学習ベースのソフトウェアエージェントは、指定されたトランザクションタイプと、同じトランザクションタイプを指定する、ブロックチェーンに新しいブロックを追加する1つ以上の前の要求を検証するために選択された合意プロトコルと、のうち1つ以上に基づいて、ブロックチェーンに新しいブロックを追加する要求を検証するための複数の合意プロトコルのうち1つを選択する。
方法200、300、及び400の別の実施形態によれば、選択された合意プロトコルに従って合意が達成られたとき、ブロックチェーンに新しいブロックを追加する要求を検証することは、選択された合意プロトコルに従ってピアツーピアネットワーク内の複数のノードのうち参加ノード間で合意が達せられたとき、ブロックチェーンに新しいブロックを追加する要求を検証することを含む。
方法200、300、及び400の別の実施形態によれば、選択された合意プロトコルに従ってピアツーピアネットワーク内の複数のノードのうち参加ノード間で合意が達せられたとき、ブロックチェーンに新しいブロックを追加する要求を検証することは、複数のルールと強化学習ベースのソフトウェアエージェントとのうち1つに従って、選択された合意プロトコルに参加すべきピアツーピアネットワーク内のノードを選択することを含む。
方法200、300、及び400の別の実施形態によれば、選択された合意プロトコルのうち1つは、ピアツーピアネットワーク内の複数のノードのうち1つ以上の各々から、要求に応答して、ブロックチェーンに新しいブロックを追加するための重み付き投票を受信することと、受信した重み付き投票の和が閾値を超えているとき、ブロックチェーンに新しいブロックを追加する要求を検証することを含む。
方法200、300、及び400に関連する特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令は、少なくともプロセッサ及びメモリをその中に有する分散台帳技術プラットフォームホストにより実行されたときにシステムに、以下の動作:ブロックチェーンに新しいブロックを追加する要求を受信することであって、新しいブロックは複数のトランザクションを含み、要求は複数のトランザクションタイプのうち1つを指定する、ことと、指定されたトランザクションタイプに応答して、ブロックチェーンに新しいブロックを追加する要求を検証するための複数の合意プロトコルのうち1つを選択することと、選択された合意プロトコルに従って合意が達せられたとき、ブロックチェーンに新しいブロックを追加する要求を検証することと、ブロックチェーンに新しいブロックを追加する要求の検証に応答して、ブロックチェーンに新しいブロックを追加することと、を実行させる。
図5は、説明される実施形態による、クラウドベースのコンピューティング環境においてquipchainを使用して文書インターフェース及びコラボレーションを実現する方法500を示すフロー図を示す。
図5のフロー図を参照し、ブロックチェーンベースの分散台帳を使用して、共有された文書又はコンテンツの非中央集権的な複製されたストレージを提供し、それにより文書の監査性と不変性を向上させる文書コラボレーションシステムについて説明する。論理ブロック505において、分散台帳技術(DLT)プラットフォームホスト、例えばブロックチェーンベースのピアツーピアネットワーク内のノードが、協働文書(collaborative document)処理アプリケーションから協働文書又はその一部を受信する。一実施形態において、論理ブロック505は、協働文書処理アプリケーションのユーザインターフェースを介して第1のコラボレータ(collaborator)から協働文書又はその一部を受信する。ユーザインターフェースは、ユーザクライアントデバイス106上で実行されるデスクトップ協働文書処理アプリケーションにより、クライアントユーザデバイス106上で提供されてもよく、これは、次いで、ホスト組織110において実行されるDLTプラットフォームホストと通信する。別の実施形態において、ユーザインターフェースは、ホストされたコンピューティング環境111上で実行されるウェブサービスベースの協働文書処理アプリケーションにより、クライアントユーザデバイス106上で提供されてもよく、これは、次いで、ホスト組織110において、ホストされたコンピューティング環境111内、又はホスト組織110内の別個のホストされたコンピューティング環境内のいずれかで実行されるDLTプラットフォームホストと通信する。
一実施形態において、第1のコラボレータから受信される協働文書に関する入力は、これらに限られないが以下を含む:第1のコラボレータの識別子(例えば、電子メールアドレス又はユーザログイン識別子);第1のコラボレータが協働すべき又は協働しようとしている1以上のさらなるコラボレータの識別;第1のコラボレータとさらなるコラボレータとの間で交換されるメッセージ(例えば、文書に関するコメント若しくは質問、又は文書と共に存在するコラボレーションメモ、又は文書のバージョン情報);文書自体、又はその一部(例えば、章、ページ、段落、節、セクション、セグメント等);協働文書の、第1のコラボレータの署名;又は、文書又はその一部に関するトランザクション(例えば、第1のコラボレータが、文書の作成、修正、若しくは削除、又は文書内のその一部の作成、修正、若しくは削除を要求する)、のうち1つ以上に関する情報。
論理ブロック510において、ホストは、協働文書又はその一部を含むブロックチェーン資産を作成する。さらに、論理ブロック515において、ホストは、ブロックチェーン資産及びブロックチェーン資産識別子を含むブロックチェーントランザクションを作成する。一実施形態において、ブロックチェーン資産識別子は、協働文書に実際に署名したユーザ、コラボレータに関連づけられる。一実施形態において、ホストは、ブロックチェーン資産識別子を、ユーザが相互作用する協働文書システム又はクラウドコンピューティング環境から取得されたユーザに関する情報に関連づける。例えば、ユーザは、クラウドコンピューティング環境及び/又は協働文書処理システムにおいてユーザを識別するログイン、又は特定の暗号鍵若しくはセキュリティ情報を有してもよい。
論理ブロック520において、ホストは、ブロックチェーン上の循環(circulation)にブロックチェーントランザクションをブロードキャストし、ブロックチェーンにおけるブロックチェーントランザクションのブロードキャストに応答してブロックチェーントランザクションの検証についてリッスンする(listens)。論理ブロック525において、ホストは、検証を受信する。一実施形態において、ブロックチェーン上の循環へのブロックチェーントランザクションのブロードキャストに応答した、ブロックチェーントランザクションの検証の受信は、以下でさらに説明されるように、協働文書の第1のコラボレータの署名を立証した協働文書の第2のコラボレータからブロックチェーントランザクションの検証を受信することを含む。その後、論理ブロック530において、DLTホストは、ブロック内の検証されたブロックチェーントランザクションをブロックチェーンに対してコミットする。
さらに別の実施形態によれば、方法500は、協働文書処理アプリケーションのユーザインターフェースを介して第1のコラボレータから協働文書に関する入力を受信することをさらに含み、協働文書処理アプリケーションからの協働文書の受信は、DLTホストにより、協働文書処理アプリケーションから協働文書に関する入力を受信することを含む。
方法500の別の実施形態によれば、第1のコラボレータからの協働文書に関する入力の受信は、第1のコラボレータの識別子、1以上のさらなるコラボレータの識別、第1のコラボレータとさらなるコラボレータとの間で交換されるメッセージ、協働文書の全部又は一部、協働文書の第1のコラボレータの署名、及び協働文書の全部又は一部に関するトランザクション{例えば、挿入、修正、削除}のうち、1つ以上に関する入力を受信することを含む。
方法500の別の実施形態によれば、ブロックチェーン上の循環へのブロックチェーントランザクションのブロードキャストに応答して、ブロックチェーントランザクションの検証を受信することは、協働文書の第1のコラボレータの署名を立証した協働文書の第2のコラボレータからブロックチェーントランザクションの検証を受信することを含む。
別の実施形態によれば、方法500はさらに、第2の分散台帳技術(DLT)ホストにより実行され、第2のホストはその中に少なくともプロセッサ及びメモリを有し、当該方法は、ブロックチェーン上で循環へブロードキャストされたブロックチェーントランザクションを受信することと、受信したブロードキャストされたブロックチェーントランザクションからの協働文書又はその一部を協働文書処理アプリケーションに提供することと、協働文書の第1のコラボレータの署名を立証した協働文書の第2のコラボレータから協働文書に関する検証を受信することと、検証されたブロックチェーントランザクションをブロックチェーン上の循環にブロードキャストすることを含む。
方法500の別の実施形態によれば、ブロックチェーンにおけるブロックチェーントランザクションのブロードキャストに応答して、ブロックチェーントランザクションの検証を受信することは、ブロックチェーン上の循環にブロードキャストされた検証されたブロックチェーントランザクションの受信に応答して、ブロックチェーントランザクションの検証を受信することを含む。
方法500の別の実施形態によれば、協働文書の第1のコラボレータの署名を立証した協働文書の第2のコラボレータから協働文書に関する検証を受信することは、協働文書処理アプリケーションのユーザインターフェースを介して第2のコラボレータから協働文書に関する検証を受信することを含む。
別の実施形態によれば、方法500はさらに、第2のDLTプラットフォームホストにより実行され、当該方法はさらに、協働文書処理アプリケーションから第2の協働文書又はその一部を受信することと、第2の協働文書又はその一部を含む第2のブロックチェーン資産を作成することと、第2の協働文書に副署した(countersigned)第2のコラボレータに関連づけられた第2のブロックチェーン資産及び第2のブロックチェーン資産識別子を含む第2のブロックチェーントランザクションを作成することと、ブロックチェーン上の循環に第2のブロックチェーントランザクションをブロードキャストすることと、ブロックチェーンにおける第2のブロックチェーントランザクションのブロードキャストに応答して、第2のブロックチェーントランザクションの検証を受信することと、第2のブロック内の検証された第2のブロックチェーントランザクションをブロックチェーンに対してコミットすることを含む。
特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令は、少なくともプロセッサ及びメモリをその中に有する分散台帳技術プラットフォームホストにより実行されたときにシステムに、以下の動作:協働文書処理アプリケーションから協働文書又はその一部を受信することと、協働文書又はその一部を含むブロックチェーン資産を作成することと、協働文書に署名した第1のコラボレータに関連づけられたブロックチェーン資産及びブロックチェーン資産識別子を含むブロックチェーントランザクションを作成することと、ブロックチェーン上の循環にブロックチェーントランザクションをブロードキャストすることと、ブロックチェーンにおけるブロックチェーントランザクションのブロードキャストに応答して、ブロックチェーントランザクションの検証を受信することと、ブロック内の検証されたブロックチェーントランザクションをブロックチェーンに対してコミットすることと、を実行させる。
図6Aは、説明される実施形態による、分散台帳技術の方法を実現する方法600を示すフロー図を示す。
本明細書に記載されるさらなる実施形態に従い、図6Aのフロー図を参照し、論理ブロック605において、第2の分散台帳技術(DLT)プラットフォームホスト、例えばブロックチェーンベースのピアツーピアネットワーク内の第2のノードが、論理ブロック520によりブロックチェーン上の循環にブロードキャストされた上述のブロックチェーントランザクションを受信する。DLTプラットフォームホストは、ブロードキャストされたトランザクションを処理し、そのペイロード部分から協働文書又はその一部を抽出することが含まれ、論理ブロック610において、文書又はその一部のコピーを協働文書処理アプリケーションに提供する。
論理ブロック615において、協働文書処理アプリケーションは、協働文書処理アプリケーションのユーザインターフェースを介して第2のコラボレータから協働文書に関する検証を受信する。協働文書に対する検証は、協働文書の第1のコラボレータの署名を立証する。協働文書処理アプリケーションは、そのことをDLTプラットフォームに通信し、DLTプラットフォームは、次いで、論理ブロック620において、対応するブロックチェーントランザクションを検証し、検証されたブロックチェーントランザクションをブロックチェーン上の循環にブロードキャストする。
図6Bは、説明される実施形態による、分散台帳技術の方法を実現する方法660を示すフロー図を示す。
本明細書に記載されるさらなる実施形態に従い、図6Bのフロー図を参照し、論理ブロック625において、第2のDLTプラットフォームホストが、次いで、協働文書処理アプリケーションから第2の協働文書又はその一部を受信することができる。例えば、第2のコラボレータが、第1のコラボレータにより送付された第1の文書を改訂し(例えば、内容を挿入、修正、又は削除し)、あるいは第1の文書に関連するが独立した新しい文書を作成する場合、協働文書処理アプリケーションは、そのコピーを第2のDLTプラットフォームホストに提供する。例えば、第2のコラボレータは、第1の文書に単に副署してもよく、それにより第2の副署された文書を作成する。論理ブロック620において、第2のホストは、第2の協働文書又はその一部を含む第2のブロックチェーン資産を作成し、論理ブロック635において、例えば第2の協働文書に副署した、第2のコラボレータに関連づけられた第2のブロックチェーン資産及び第2のブロックチェーン資産識別子を含む第2のブロックチェーントランザクションを作成する。
論理ブロック640において、第2のDLTホストは、ブロックチェーン上の循環に第2のブロックチェーントランザクションをブロードキャストし、ブロックチェーンにおける第2のブロックチェーントランザクションのブロードキャストに応答して、第2のブロックチェーントランザクションの検証についてリッスンする。論理ブロック645において、第2のホストは検証を受信する。一実施形態において、ブロックチェーン上の循環への第2のブロックチェーントランザクションのブロードキャストに応答した、第2のブロックチェーントランザクションの検証の受信は、論理ブロック605〜620に関して上述したのと同様に、協働文書の第2のコラボレータの署名を立証した協働文書の第1のコラボレータから第2のブロックチェーントランザクションの検証を受信することを含む。その後、論理ブロック650において、第2のDLTホストは、ブロック内の検証された第2のブロックチェーントランザクションをブロックチェーンに対してコミットする。
図7Aは、説明される実施形態による、同意管理を有するコミュニティサイドチェーンを実現するブロックチェーンのさらなる詳細を有する別の例示的なアーキテクチャ700を示す。
ここに示すように、再度、ホスト組織110は、その中にウェブサーバ175、要求インターフェース176、認証器140、クエリインターフェース180、及びデータベースシステム130と共に動作するホストされたコンピューティング環境111を有する。前述のように、ホスト組織110が様々なブロックチェーン関連サービスを、ホスト組織110により提供されるクラウドコンピューティングサービスを利用する顧客、サブスクライバ、並びに他の組織及びテナントに提供するための、ブロックチェーンサービスインターフェース190もある。
より詳細には、次に、ブロックチェーンサービスインターフェース190内に、ブロックチェーン内に記憶されたペイロードデータのアクセス権、可読性、交換許可、及び開示能力を制御するための同意管理(consent management)を有するコミュニティサイドチェーン機能を実現するブロックチェーン同意マネージャ(consent manager)705が示される。
従来、ブロックチェーンブロックは、ブロックチェーンプロトコル実装に関する任意の参加ノードに対してフルにオープンであり、読取可能である。このようなオープン性は、任意のノードが、いかなるオーソリティからも許可を必要とせずトランザクションが独立して有効であることを認証及び検証することを可能にするとき、設計によるものである。しかしながら、そのようなオープン性は、常に望ましいわけではない。したがって、ブロックチェーン同意マネージャ705及びブロックチェーンサービスインターフェース190は、ホスト組織によりサポートされる特定のブロックチェーンプロトコル実装のためのさらなる機能を公開し、それは、特定のデータがさらなるアクセス制限を受けることを可能にする一方で、それにもかかわらず、ブロックチェーン機能内に具現化された分散台帳技術を利用し、その恩恵を受ける。
特定の実施形態によれば、ブロックチェーン同意マネージャ705は、プライベートブロックチェーン上の同意管理を有するコミュニティサイドチェーンを提供する。ここに示されるように、ブロックチェーン同意マネージャ705は、プライベートブロックチェーン740(例えば、コミュニティサイドチェーン)を提供し、これは、プライベートブロックチェーン740としてサイドチェーンを開始する最初のジェネシスブロック741を含み、プライベートブロックチェーンが成長し続けるとき、標準ブロック743のシーケンスが後に続く。プライベートブロックチェーン740は、参加ノード750A、750B、及び750Cの各々がアクセス可能である。実際には、プライベートブロックチェーン740に関して多くのさらなる参加ノードが存在する可能性がある。
コミュニティサイドチェーンは、ブロックチェーンの2つのノード間でデータを共有すること、例えば、病院と保険提供者との間で患者の医療情報を共有する能力などが望ましい場合、有用である。
従来のメカニズムでは、あらゆる参加ノード750A〜Cは、ひとたびそのデータがブロックチェーンに書き込まれると、全てのデータに対するフルアクセスを有する。多くの状況で有用であるが、医療情報は、プライバシーの懸念及びHIPAA(1996年の医療保険の携行性と責任に関する法律(Health Insurance Portability and Accountability Act of 1996))の要件に起因して、閲覧するため自由にアクセスできるべきではないことは容易に明らかである。フルの可視性を可能にする従来のブロックチェーンプロトコル実装の欠点又は設計上の特徴にもかかわらず、ホスト組織110のブロックチェーン同意マネージャj705は、特定の顧客、組織、ユーザ(例えば、患者の医療記録の例の文脈の中で、病院、診療所、保険提供者等)に、不変性及び非中央集権的な記録保持などのブロックチェーン機能の使用から利益を得る一方で、さらに患者のプライバシーを尊重し、連邦のHIPAA要件に準拠することを提供する。金融組織は、プライベート(private)情報を保護するために同様の法的要件を有するが、同様に、ブロックチェーン同意マネージャ705を介してコミュニティサイドチェーンに同意管理機能を提供するよう本明細書に記載されたブロックチェーン機能から利益を得ることができる。
一実施形態によれば、ブロックチェーン同意マネージャ705は、参加ノード750A〜Cがプライベートブロックチェーン740内に記憶された特定の情報を閲覧、読み出し、又はアクセスすることを望む場合には、それらが通過しなければならない同意管理レイヤ710を実現する。このような実施形態によれば、プライベートブロックチェーン740内のデータの一部は全ての参加ノード750A〜Cに見えるが、他のデータは制限される。
誰でもパブリックブロックチェーンにアクセスしてその中の任意の情報を閲覧することができ、プライベートブロックチェーンへのアクセスを有する誰でもその中の任意の情報にアクセスすることができる、プライベートブロックチェーンとパブリックブロックチェーンとの区別とは違って、同意管理を有するプライベートブロックチェーン740は異なり、なぜならば、参加ノードがプライベートブロックチェーン740にアクセスする権限を有していても、そのようなアクセスが必ずしもプライベートブロックチェーン740内に記憶された保護又は制限された情報にアクセスするための「同意」を与えるわけではないためである。
ここで示されるように、参加ノード750Aは、プライベートブロックチェーン740に書き込まれる同意751を提供している。したがって、新しいサイドチェーンコミュニティ761が、ブロックチェーン同意マネージャ705により形成される。具体的には、ブロックチェーン同意マネージャ705は、サイドチェーンブロック742から形成される新しいコミュニティサイドチェーン760を作成する。コミュニティサイドチェーン760は、プライベートブロックチェーン740により標準ブロックとして見なされるが新たに形成されたコミュニティサイドチェーン760をプライベートブロックチェーン740とリンクする参照を含むフォークブロック742のポイントから形成される。次いで、メインプライベートブロックチェーン740は、コミュニティサイドチェーン760の作成の後、フォークブロック742に続くさらなる標準ブロック743を介して継続する。
同意751が参加ノード750Aから受け取られ、プライベートブロックチェーン740に書き込まれると、ブロックチェーン同意マネージャ705は、同意を有する新しいコミュニティサイドチェーン752をシードし(seeds)、ゆえに、新しいコミュニティサイドチェーン760を形成する。特定の実施形態によれば、何らのペイロードデータも、コミュニティサイドチェーンのサイドチェーンブロック742に書き込まれない。例えば、保護されたデータ753は、コミュニティサイドチェーン760に書き込まれるのではなく、保護された形式でプライベートブロックチェーン740内に留まるが、同意管理レイヤを介して保護されたデータ753の取り出しを可能にするサイドチェーンコミュニティの参加ノード750A及び750Bのみがアクセス可能なサイドチェーンブロック742間の参照を介して、サイドチェーンコミュニティ761の参加ノードがアクセス可能である。他の実施形態において、保護されたデータ753は、サイドチェーンブロック742のペイロードに書き込まれてもよく、参加ノード750A及び750Bがサイドチェーンコミュニティ761内に存在する利点により、これらの参加ノード750A及び750Bは、メインチェーン(例えば、プライマリブロックチェーン740)にアクセスする必要なく、保護されたデータ753へのアクセスを有する。ここで示されるように、コミュニティサイドチェーン760はプライベートブロックチェーン740にリンクされ、したがってフォークしたブロックチェーンと考えられてもよく、一方、他の実装において、コミュニティサイドチェーンは、ブロックチェーン同意マネージャ705が、どの参加ノードが新たに作成されたサイドチェーンコミュニティ761を形成するために許可されるか、したがって、どの参加ノードが保護されたデータ753へのアクセスを有し、どの参加ノードが保護されたデータ753へのアクセスを有さないかを管理するための制御をし続ける限り、プライベートブロックチェーンから独立して動作するように形成され、許可されてもよい。
ここで示されるように、参加ノード750A及び750Bがサイドチェーンコミュニティ761の全体を形成するとき、これらはサイドチェーンへのアクセスを有し、ゆえに、データはサイドチェーンコミュニティのノード間で共有可能であり、一方、参加ノード750Cはサイドチェーンコミュニティ761のメンバノードではなく、したがって、保護されたデータにアクセスできず、参加ノード750A及び750Bとデータを共有できない。
図7Bは、説明される実施形態による、同意管理を有するコミュニティサイドチェーンのさらなる詳細を有する別の例示的なアーキテクチャ701を示す。
ここでは、新しい参加ノードのプライベートブロックチェーンへの導入に関するさらなる詳細を示す。図示のように、目下、ブロックチェーンサービスインターフェース190により管理される2つの区別可能なプライベートブロックチェーン、具体的には、ヘルスケアブロックチェーン744及び建設ブロックチェーン743が存在する。説明される実施形態によれば、多くの異なるプライベートブロックチェーンが存在でき、それらは様々な方法で編成されてもよい。例えば、ヘルスケア産業の異なる当事者が互いの間でデータを共有したい場合があり、したがって、それらが同じプライベートヘルスケアブロックチェーン744に参加してもよく、データ共有が必要とされる場合、同意が付与され得ることが考えられ、上述したように、サイドチェーンは、共有されるデータへのアクセスを必要とする参加ノードで形成され、ゆえに、サイドチェーンコミュニティを形成し、次いで、データは、新たに作成されたサイドチェーンコミュニティの参加者間で共有される。
しかしながら、医療データへのアクセスを必要としない他の参加者が存在する可能性があり、したがって、これらの参加ノードは、区別可能なプライベートブロックチェーンに形成される。例えば、ここでは、ハードウェアストア、建設材料製造業者、建築請負業者等の参加者を有する建設ブロックチェーン743が示される。このような関係者は、医療情報にアクセスする必要はない可能性があるが、購入注文、建築計画、建設契約などの建設業に関連するデータを安全に共有する機能から恩恵を受ける可能性がある。これらの関係者は、特定のタイプの情報を保護したい場合があるが、それにもかかわらず、ブロックチェーン機能の使用から恩恵を受ける場合がある。
特定の実施形態によれば、メイン建設ブロックチェーン743内の新しいユーザ登録(例えば、例として、ウェブサイトによるユーザプロファイルの作成など)は、新しいユーザ特有の(user specific)コミュニティサイドチェーン756の作成を結果としてもたらす。最初、新しいユーザ登録は、ユーザ特有のコミュニティサイドチェーン756に対する唯一の参加ノードであり、なぜならば、デフォルトでその特定のユーザのみが、プライベートかつ保護されたデータへのアクセスを有するためである。しかしながら、新しいユーザ登録ノード755は別のノードに同意してもよく、その同意は建設ブロックチェーン743に書き込まれ(例えば、例として、フォークブロック742に書き込まれ)、その結果、コミュニティサイドチェーン756は、新しいユーザ登録755とさらに同意が付与された別の参加ノードとの双方を有する方法を有することになる。図示のように、参加ノード750Bは以前、サイドチェーンへのアクセスを有さない建設ブロックチェーン743の一部であったが、新しいユーザ登録ノードに関する同意の付与で、参加ノード750Bは次いで、ユーザ特有のコミュニティサイドチェーン756に加えられ、これを介して、新しいユーザ登録ノード755に関連づけられたプライベート又は保護されたデータへのアクセスが共有され得る。ユーザ特有のコミュニティサイドチェーン756に入るための同意を有する全てのノードは、新しいユーザ登録ノード755のプライベートかつ保護された情報へのアクセスを与えられる。同じユーザが、異なるアクセスを異なる参加ノードに与える必要がある場合、ユーザは、別個の新しいユーザ登録ノードを作成する必要がある。例えば、ユーザが、建設ブロックチェーン743内のホームデポ(Home Depot)又はロウズ(Lowe’s)などのウェブサイトでプロファイルを作成し、例えばカーペット設置業者と情報を共有することを選択する場合、ユーザ特有のコミュニティサイドチェーン756に加わり、関連情報にアクセスするために、同意がカーペット設置業者に付与されてもよい。ユーザが次いで、同じ情報を例えば窓設置業者と共有したい場合、窓設置業者もまた同意751を与えられ、新しい参加ノードとしてユーザ特有のコミュニティサイドチェーン756に加わってもよいが、ユーザが各プロバイダとの間で異なる情報を共有したい場合、2つのプロファイルが必要とされる。しかしながら、実用的には、ユーザに関する同じ情報が各設置業者に関連し、したがって、ユーザがそのような問題に遭遇する可能性は低い。
したがって、特定の実施形態によれば、ユーザは、参加ウェブサイトでユーザプロファイルを作成することにより、(例えば、建設ブロックチェーン743又はヘルスケアブロックチェーン744などの)プライマリブロックチェーンにおけるユーザ特有のコミュニティサイドチェーンを作成してもよく、そのようなユーザは、次いで、他のノードに(例えば、同じウェブサイトを介して)同意を付与して、プライマリブロックチェーンに参加しているが同意を付与される前にはユーザ特有のサイドチェーンへのアクセスを有さない指定されたターゲットノードとの、プライベート又は保護された情報の共有を可能にしてもよい。
本明細書で詳細に論じられる概念に特有ではないが、ホームデポなどのウェブサイトは、建設ブロックチェーン743内のノードとして、さらにホスト組織の顧客として動作し得る。顧客のホームデポのウェブサイトを介して、新規ユーザは、ユーザプロファイルを作成することができ、ホスト組織のブロックチェーンサービスインターフェース190は、次いで、新規ユーザ登録755に対応する建設ブロックチェーン743又は他の関連するプライマリブロックチェーン内の新しいノードを生成する。ブロックチェーンサービスインターフェース190は、ユーザ特有のコミュニティサイドチェーン756をさらに生成し、これを介して、ユーザは、この例における建設ブロックチェーンなどの特定のブロックチェーンに関して他の参加ノードと情報を共有するための同意を付与することができる。例えば、一実施形態によれば、ユーザが、ホームデポなどのウェブサイトでログインし、あるいはプロファイルを作成するとき、ユーザは、ウェブサイトが動作し存在するホスト組織110との間で認証している。次いで、ユーザはホスト組織110で認証されるため、同じホスト組織110は、ブロックチェーンサービスインターフェース190を介してホスト組織110がアクセス可能な任意のブロックチェーン上に新しいユーザ登録に対する新しいノードを作成することができる。
明確化のために言うと、情報は、2つの異なるプライベートブロックチェーン間で共有されない。したがって、技術的に実行可能であるが、情報がヘルスケアブロックチェーン744と建設ブロックチェーン743との間で共有されることは企図されない。むしろ、各々が別個のプライベートブロックチェーンとして動作し、各々はその独自の参加ノード、ユーザ、及びサイドチェーンを有する。しかしながら、同じ人間のユーザが異なるウェブサイトでプロファイルを作成することができ、その結果、人間のユーザは、ヘルスケアプライベートブロックチェーン内のノードと、さらに建設プライベートブロックチェーン内のノードを有することになる。双方のプライベートブロックチェーンが同じホスト組織により管理されるという事実は無関係であり、当の特定のユーザには分からない可能性がある。
さらに、プライベートブロックチェーンのサイドチェーンはノードではなく、むしろ、メインプライベートブロックチェーンからの許容可能な分岐又はフォークであることに留意されたい。ここで示されたサイドチェーンは、プライマリブロックチェーンに不変的にアタッチされ、関連づけられたままであり、独立して動作しない。しかしながら、情報が、ホスト組織110により管理されるヘルスケアブロックチェーン744とは別個の別のヘルスケアプライベートブロックチェーンなどの、別の独立して動作するブロックチェーンと共有されるべき場合、ユーザは、定義された交換合意が2つのプライマリブロックチェーンの間に存在すると仮定し、前述の(例えば、図1Dの)方法で、保護されたデータを他の独立して動作するブロックチェーンと交換するための同意を付与することができ、その場合、ホスト組織により管理されるヘルスケアブロックチェーン744は、親ブロックチェーン(例えば、図1Dの要素188)とみなされ、別個の独立して動作するブロックチェーンは、独立して動作するサイドチェーン(例えば、図1Dの要素189)として取り扱われる。
特定の実施形態によれば、ユーザ特有のサイドチェーン内の特定のノードに関してユーザ同意が捕捉されるとき、その同意はサイドチェーンにおいて捕捉され、次いで、それが永続的に保持されるプライマリブロックチェーンに書き込まれる。このような実施形態において、同意が付与されたという事実は保護情報ではないが、制限データは保護され、同意は、同意が2される時間まで、プライマリブロックチェーンの指定された参加ノードにのみ適用可能である。特定の実施形態によれば、付与される同意は時間制限されてもよく、したがって、指定された期間の後に満了する。このような場合、保護された情報へのアクセスは、ブロックチェーンサービスインターフェース190により提供されるブロックチェーンプロトコルの一部として、ブロックチェーン同意マネージャ705を介して時間満了に対してチェックされる。
図8Aは、説明される実施形態による、同意管理を有するスーパーコミュニティサイドチェーンを実現するブロックチェーンのさらなる詳細を有する別の例示的なアーキテクチャ800を示す。
ここに示すように、再度、ホスト組織110は、その中にウェブサーバ175、要求インターフェース176、認証器140、クエリインターフェース180、及びデータベースシステム130と共に動作するホストされたコンピューティング環境111を有する。前述のように、ホスト組織110が様々なブロックチェーン関連サービスを、ホスト組織110により提供されるクラウドコンピューティングサービスを利用する顧客、サブスクライバ、並びに他の組織及びテナントに提供するための、ブロックチェーンサービスインターフェース190もある。
本明細書に記載される従来のブロックチェーン技術に対する重要な一改善は、ホスト組織110の異なるテナント間で情報を共有する能力である。しかしながら、注目すべきことに、情報の共有は、ユーザの情報が共有されるべきときにそのユーザからの適切な同意を必要とするため、その独自のデメリットを有する。
同じホスト組織110の2つ以上のテナントが同じプライベートブロックチェーンに参加する例、例えば、第1のテナントのホームデポと第2のテナントのAAAカーペット設置業者がプライベート建設ブロックチェーンに参加することを考える。テナントの各々は、ホスト組織のブロックチェーンサービスインターフェース190により提供されるプライベート建設ブロックチェーン内のノードとして動作する。ユーザが、ホスト組織110のテナントであるホームデポのウェブサイトでアカウントを作成するとき、そのユーザのデータ及びクレデンシャルはホスト組織110により記憶され、ホスト組織は、上述のように、ユーザのためにプライベート建設ブロックチェーン内にノードを作成する。しかしながら、同じ人間のユーザがホスト組織の別のテナントでのログイン及びプロファイルを作成する場合、ユーザは再度、ユーザのためにプライベート建設ブロックチェーン内にノードを作成させるが、各々は異なる一意識別子を有し、各々は異なるノードであり、同じ人間のユーザに対するログインクレデンシャル及びプロファイルは区別可能である。
これは、例えば、カイザーヘルスケアにおいてユーザプロファイルを作成する個人が、例えば、プルデンシャルヘルスケアにおいてユーザプロファイルをさらに作成することがあるため、一般的な体験である。このような個人は、同じログインクレデンシャルが双方の区別可能な組織で機能することを期待せず、実際、個人のユーザプロファイルは区別可能であり、全く別個に維持される。
しかしながら、2つの別個の組織が双方、同じホスト組織のテナントであるとき、スーパーコミュニティテナントブリッジ(super community tenant bridge)805が、同じ人間のユーザが2つの区別可能なユーザプロファイル間で情報を共有することを可能にされるメカニズムを提供する。
例えば、銀行、例えばウェルズファーゴに足を踏み入れ、口座を開設する個人を考える。ユーザは、個人の名前だけでなく、重要な情報を銀行に提供する必要がある。例えば、ユーザは、住所、雇用者、収入、婚姻状態、金融資産、社会保障番号等を提供することを要求されることがある。次いで、同じ個人が、チェイスなどの別の銀行に行ってクレジットカードを開設し、予測できるように、第2の銀行は、第1の銀行がしたように多くの同じ情報を同じ個人から要求するだろう。これは、個人にとって苛立たしく、時間がかかる。同様に、患者が医師の治療を求める場合、訪問すると、診療所は長々しい個人的な医療情報を要求する。その同じ医師が治療のために患者を病院に送る場合、病院は、同じ患者からの同一の情報を、そのような情報がすでに医師に提供されているにもかかわらず、要求する。
スーパーコミュニティテナントブリッジ805は、情報を要求する双方の組織が同じホスト組織110内のテナントである場合、個人に対するこの問題を克服する。個人が、1つのテナント組織で第1のユーザプロファイル810Aを、第2のテナント組織で異なるユーザプロファイル852を有するという事実にもかかわらず、ホスト組織110は、双方のテナントに関する情報をそれにもかかわらず所有し、双方のユーザプロファイル851及び852が実際に関連づけられている個人による適切な同意を条件として、ホスト組織のブロックチェーンサービスインターフェース190により提供されるブロックチェーンプロトコルを使用してデータ共有プロセスを容易にすることができる。
ここで示されるように、個人は、ユーザプロファイル851により表される、顧客組織810Aでのユーザプロファイルをすでに有する。ユーザプロファイルの中には、個人が提供又は入力した情報、例えば、診療所に提供された個人的な医療データがある。(顧客組織810Aとしての)診療所と病院などの第2の顧客組織810Bとの双方が、双方ともホスト組織110のテナントであり、双方ともホスト組織110により提供されるブロックチェーンサービスを利用しており、したがって、各々が適用可能なブロックチェーン(例えば、ホスト組織により管理されるヘルスケアプライベートブロックチェーンなど)上の参加ノードであると仮定し、個人は、2つの顧客組織810A及び810Bのいずれかで既知のユーザとしてログイン及び認証し、ユーザ同意891を付与して2つの顧客組織間で情報を共有することができ、その結果、ユーザの保護情報は、要素892により示されるように共有され、ユーザの保護情報は、スーパーコミュニティテナントブリッジ805により顧客組織810Bに提供され、顧客組織810B内で複製される。
あなたの顧客を知る(Know your customer)又は「KYC」は、そのクライアントのアイデンティティを識別及び立証するビジネスのプロセスである。この用語は、これらの活動を管理する銀行及び反マネーロンダリング規制を指すことにも用いられている。KYCガイドラインの目的は、意図的又は非意図的に、銀行がマネーロンダリング活動のために犯罪的要素により利用されるのを防止することである。関連する手続きもまた、銀行がその顧客や金融取引をより良く理解できるようにしている。これは、彼らが慎重にリスクを管理するのに役立つ。
KYCポリシーのいくつかは連邦法により事実上義務付けられており、銀行が取引を行ういかなる個人についても広範な立証を要求している。
同様の要件がヘルスケア組織に関して存在し、ヘルスケア組織は、該組織が会話し、治療し、又は保険でカバーされるサービスを提供している人物が本当に正しい個人であることを保証しなければならない。
銀行やヘルスケア組織は、そのようなデータを収集し、彼らが相互作用するいかなる個人に対しても必要な検証を行う際に、かなり高いコストを負担しており、結果的に、同じ情報を複数の異なる組織に何度も提供しなければならない個人にとって不便なだけでなく、情報を要求する組織もまた不便である。
スーパーコミュニティテナントブリッジ805は、ホスト組織110により定義されるブロックチェーンプロトコルを利用して関連情報を記憶し、次いで、ブロックチェーンサービスインターフェース190及びスーパーコミュニティテナントブリッジ805を使用して2つの銀行又は2つのヘルスケア組織などの同意する当事者間で反復的だがプライベートかつ保護された情報の共有を可能にすることにより、この必要に対処する。これは、個人に利益をもたらし、個人は、同一の情報を何度も複数のプロバイダに提供する必要から解放され、また、これは、プロバイダ又は顧客組織に利益をもたらし、プロバイダ又は顧客組織は、ユーザ同意891を条件として正確な情報をより迅速に受け取るが、情報がブロックチェーン内に記憶されるという事実からも利益を受け、したがって、ブロックチェーンを悪意をもって又は不正に操作するための、計算上の負担が大きく一般的に実行不可能な手段を仮定すると、有意により低リスクである。
特定の個人の情報がブロックチェーン内に蓄積され、より年季が入る(例えば、ブロックチェーン内でより古く)なると、情報はますます信頼でき、真正とみなされ、したがって、銀行、ヘルスケア組織、又はそのような情報に依存する他のエンティティにとって、より信頼できる。
例えば、ある個人がその運転免許証と保険証を診療所などの第1の組織に提供し、そのような情報が次いでブロックチェーン内に記憶される場合、病院などの第2の組織は、第2の組織がブロックチェーンブロック自体を検証することができることを仮定し、さらに、情報がブロックチェーン内にあるため別のプロバイダ、診療所が情報の真実性をすでに証明しているという事実を仮定し、ブロックチェーン内の情報を疑う理由がほとんどない。
図8Bは、説明される実施形態による、スーパーコミュニティ機能と相互作用するユーザデバイス899におけるGUI803のさらなる詳細を有する別の例示的なアーキテクチャ801を示す。
ここでわかるように、個人は、図示のものなどのユーザコンピューティングデバイス899を利用して、ホスト組織110内でその個人に対し一意(unique)であるユニバーサルIDに関連づけられた全てのプロファイルについてブロックチェーンを検索することができる。
ここで示されるように、スーパーコミュニティテナントブリッジ805は、GUIをユーザデバイスに送信し、それは次いで表示され、ゆえに、ユーザはそれらのユニバーサルIDを入力して、関連づけられたプロファイルについて検索することができる。他の実施形態において、ユーザは、不確かな場合にそれらのユニバーサルIDについて検索し、あるいは検索機能をナビゲートしてそれらのユニバーサルIDを突き止めてもよく、次いで、それは、個人に対する全ての関連づけられたユーザプロファイルについて検索するために使用される。
通常、言語、認証、及びユーザインターフェースが各それぞれの顧客組織に固有であると、双方の顧客組織が同じホスト組織110のテナントであるとしても、2つの別個及び区別可能なユーザアカウント又はユーザプロファイルに起因して、ユーザは各システムに別個にログインすることを要求される。しかしながら、スーパーコミュニティテナントブリッジ805は、ユーザが、個人がブロックチェーン内にデータ又はユーザプロファイルを記憶させたホスト組織110内の複数のテナント組織にわたり全てのアカウントを識別し、次いで、簡素なGUIインターフェースから、個人が2つの区別可能な顧客組織間でどの要素又はどの種類のデータを共有したいかを識別することを可能にする。
図8Cは、説明される実施形態による、スーパーコミュニティ機能と相互作用するユーザデバイス899におけるGUI804のさらなる詳細を有する別の例示的なアーキテクチャ802を示す。
ここで示されるように、ユーザは、GUI804において、文書及び情報を共有する要求をプロンプト表示され(prompted)、ユーザは、動作819に示されるように、どの文書及び情報を共有すべきかを選択することができる。ここでの情報は、ユーザがすでにプロファイルを作成し、情報を入力又は提供した第1の顧客組織に由来し、第2の顧客組織と共有される。特定の実施形態において、情報は第2の顧客組織に複製され、一方、他では、第2の顧客組織は、情報を共有するための同意を付与され、次いで、第2の顧客組織は、ユーザのノードを有するコミュニティサイドチェーンに配置され、それを介し、情報は、データを複製する必要なくプライマリブロックチェーン内の必要な情報へのアクセスを得るための同意管理レイヤ(例えば、図7Cの要素710)を通過し得る。一般に、同じ情報がすでに検証されており、ブロックチェーン上の全ての参加ノードの合意を有する検証されたブロック内に存在するとき、非複製が望ましい。しかしながら、特定の実装が、ブロックチェーン内の元々記憶された情報へのデータアクセスに対する同意よりも、データ複製を必要としてもよい。
ユーザが、共有されるよう選択したデータ要素をアンロックし(unlocks)、サブミットをクリックすると、上述の方法で、第2の顧客組織に対して同意が付与される。
説明される実施形態によれば、個人は、第1の又は第2の顧客組織のいずれかで認証し、ここで、一方の顧客組織は個人の保護されたデータへのアクセスを有し、他方の顧客組織は有さず、次いで、ユーザは、データへのアクセスをすでに有する顧客組織内で同意を付与するか、又はデータへのアクセスを有さない顧客組織内で共有データを受け取るための同意を付与することにより、データの共有を承認する。言い換えると、個人がどのユーザプロファイルで認証するかは、双方がその特定の個人に対する同じユニバーサルIDに関連づけられている限り、問題ではない。
ひとたびユーザにより同意が付与されると、双方の顧客組織がブロックチェーンの参加ノードであるため、それらはブロックチェーンからデータを読み出し、ブロックチェーン同意マネージャ(例えば、図7Bの要素705)により実装された同意管理レイヤ(例えば、図7Bの要素710)を通過することができる。
一実施形態によれば、ヘルスケアブロックチェーンのユニバーサルIDは、個人の社会保障番号(social security number、SSN)であるが、他の実施形態において、それは、ホスト組織により生成される値である。金融機関のためのFinTechを実現する他の実施形態では、ユニバーサルIDは、事業者のタックスID番号(Tax ID Number)又は(TIN)でもよい。異なる産業のための他のブロックチェーンは、異なる番号を利用してもよく、あるいはホスト組織のテナントで1つ以上のプロファイルを有する各一意の個人に対してホスト組織により生成されたユニバーサルIDを利用してもよい。ユニバーサルIDは、時に「ブロックチェーン識別子」と呼ばれる。あらゆるテナントでのあらゆるユーザプロファイルが区別可能であり得、そのユーザプロファイルに対して区別可能なユーザIDを有することさえあるが、ユニバーサルIDは、特定の個人に対する全てのユーザプロファイル間で共通である。
特定の実施形態によれば、個人が任意のテナントのウェブサイトで認証するとき、個人のユニバーサルIDは、個人がそれらのユニバーサルIDを入力又はそれらのユニバーサルIDについて検索する必要なく、同意を付与又は同意の付与を拒絶するだけでよいように、自動的に埋められ(populated)、あるいは取り出される。例えば、ブロックチェーンに基づくユーザのプロファイルデータに対して完全な一致がある場合、一致したデータが利用されてユニバーサルIDを自動的に埋めてもよく、ユーザがそれを提供又はそれについて検索する必要はない。例えば、完全な一致は、ブロックチェーンに基づいて一致するSSN/TIN、名、姓、及び生年月日(DOB)を必要としてもよい。
他の実施形態において、ブロックチェーン内に記憶された保護データのセキュリティ及び不注意な共有のリスクを向上させるために、個人のユニバーサルIDに基づいて任意の同意が付与され得る前に、2ファクタ認証が必要とされる。
他の実施形態によれば、共通のユニバーサルIDに関連づけられていない2つのユーザプロファイルが、同じ個人が双方のアカウントを制御していることと、携帯電話番号又は電子メールアカウントなどの別の既知の情報とを立証するための2ファクタ認証を利用して、共通のユニバーサルIDにリンクされてもよい、2ファクタ認証により、個人は、次いで、それらが実際に同じ個人であることを証明することができる。
特定の実施形態によれば、ユーザのユニバーサルIDは、個人のSSN又はTIN、生年月日、個人は知っているが他者は見つけるのが困難な他の情報などの個人的な立証情報を使用して検索され、突き止められてもよい。
個人のためのアイデンティティ管理をホスト組織の様々なテナントの間の多くのユーザプロファイルに提供することにより、ブロックチェーンから保護された情報にアクセスするために通過されなければならない一層厳格な同意管理レイヤを追加することが可能であり、一方、従来のブロックチェーン実装は、ブロックチェーン内の全てのデータを任意の参加ノードにより自由にアクセスできるようにする。特定の実施形態において、同意を付与するのは個人ではなく、むしろノード自体(例えば、ノードが属する会社代表など)である。このような方法で、ノードもまた、データを他のノードと共有することに同意でき、これは、必ずしも個人の人間のユーザに対応しなくてもよい。
個人が、2つの顧客組織のウェブサイトのうちの1つにログインし、情報を共有するための同意についてプロンプト表示され、肯定的に同意を付与すると、ブロックチェーン同意マネージャ705は、スーパーコミュニティテナントブリッジ805と関連して、今や同意を有する顧客組織のノードを、ユーザのノードとユーザの保護データへの先行アクセスを有する顧客組織のノードとを有するコミュニティサイドチェーンに加え、それにより、コミュニティサイドチェーン内の全てのノードが、ブロックチェーン内の保護されたデータにアクセス可能にされる。
このようにして、同じ個人が2つの別個のコミュニティ(例えば、各々区別可能なユーザプロファイルに対応するコミュニティサイドチェーン)にログインする必要なく、それらは全て、ホスト組織110の複数の区別可能なテナントにわたる個人の複数のユーザプロファイルにまたがる1つのコミュニティサイドチェーンに加えられる。
一実施形態によれば、ユーザの保護データは、第1の顧客組織に対応するノードにより所有されるが、第1の顧客組織がデータを共有するための同意を付与する権利は、個人により保有される。したがって、情報を共有するための個人の同意は、ブロックチェーンに参加する2つのノードが共通のコミュニティサイドチェーンに配置されることにより情報を共有することを可能にする。しかしながら、この例では、ユーザのノードはデータを所有しないため、ユーザのノードが同じコミュニティサイドチェーンに配置される必要はなく、データ共有に参加すべき2つの顧客組織が、ユーザのノードが存在するコミュニティサイドチェーンに加わる必要もない。
GUI804に示されるように、様々なタイプのデータが、別個のカテゴリ又は異なるタイプとして取り出されてもよく、したがって、ユーザは、病院ノードにより所有される血液検査文書を個人の診療所を表すノードと共有するための同意を付与するが、金融資産を共有するための同意を否定することができ、ゆえに、病院は、金融情報が要求され、ユーザがその情報を共有するための同意についてプロンプト表示された場合でも、そのような情報を診療所と共有することを禁止される。
別の実施形態によれば、ユーザは、各カテゴリをクリックし、どの文書、オブジェクト、又はフィールドを共有し又は共有しないかを具体的に選択してもよく、ゆえに、共有するための同意が付与される情報にわたり、より大きい粒度の制御をユーザに提供する。
説明される実施形態によれば、付与された同意は、ブロックチェーンプロトコルブロックのペイロードに書き込まれ、ここで、ブロックチェーン内の全てのノードは、同意を別個のブロックチェーン資産として閲覧及び検証することができ、ノードは、同意管理レイヤを貫通してユーザの保護情報にアクセスするためのリンクを有する同意を与えられ、ユーザの保護情報は、ブロックチェーンにすでに書き込まれているが、ユーザからの明示的な同意がない全てのノードがアクセスできない。一実施形態によれば、リンクはブロックチェーン内の資産IDである。
このような実施形態によれば、ノードが同意を付与されることは、ブロックチェーン内に記憶された保護情報にアクセスするために資産IDのみを必要とする。
特定の実施形態によれば、小さいコミュニティの合併であるスーパーコミュニティが確立され、各々のより小さいコミュニティは、ブロックチェーンに参加している顧客組織の各々から構成される。ブロックチェーンからデータが要求されるときはいつでも、通知がスーパーコミュニティ全体に送信され、次いで、ブロックチェーン同意マネージャ705により同意モデルが強制される。このような実施形態において、同意は、少なくとも(i)ブロックチェーンから要求されるブロックチェーン資産、(ii)アクセスを要求する顧客組織(例えば、テナント)、(iii)そのデータを所有し、あるいは許可を得なければならない消費者、及び(iv)アクセスが要求されているレコードを識別し、あるいは含む。コミュニティGUI内では、UIコンポーネントが、コミュニティユーザに、スーパーコミュニティ内のその特定のユーザに関する全ての要求された承認を表示する。ユーザアクセスは、ホスト組織のアイデンティティ管理により、例えば認証器140を介して、事前に提供される(pre-provisioned)。次いで、スーパーコミュニティのコミュニティユーザは、同意を付与するかどうかを判断し、より粒度の細かい制御のために、どの資産を共有すべきか、それらの資産をどんな他の顧客組織(例えば、テナント)と共有すべきかに関してドリルダウンすることができ、ゆえに、誰がどんなデータへのアクセスを有するかを制御する。
図9は、ユーザ、顧客、及びサブスクライバにクラウドベースのオンデマンド機能を提供するために、このような機能を実行するプロセッサ及びメモリによりサポートされるデータベースシステム実装などのクラウドベースのコンピューティング環境において、分散台帳技術のための同意管理を有するスーパーコミュニティ及びコミュニティサイドチェーンを実現する方法900を示すフロー図を示す。
方法900は、ハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)を含み得る処理論理により実行されて、本明細書に記載のシステム及び方法に従って実行、送信、受信、解析、トリガ、プッシュ、推奨、定義、取り出し、パース、持続、公開、ロード、動作、生成、記憶、維持、作成、返信、提示、インターフェース、通信、クエリ、処理、提供、決定、表示、更新、送出などの様々な動作を実行し得る。例えば、図1以下に示されるホストされたコンピューティング環境111、ブロックチェーンサービスインターフェース190、及びそのデータベースシステム130、並びに本明細書に記載する他のシステム及びコンポーネントは、説明される方法論を実現することができる。以下で列挙されるブロック及び/又は動作のいくつかは、特定の実施形態に従って任意である。提示されるブロックの番号付けは明りょうさのためであり、様々なブロックが発生しなければならない動作の順序を規定することは意図されない。
図9に示す方法900を参照し、ブロック905において、処理論理は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させ、複数のテナントの各々は、ブロックチェーンでの参加ノードである。
ブロック910において、処理論理は、ユーザデバイスからログイン要求を受信し、ログイン要求は、複数のテナントのうち第1のテナントに関連づけられたユーザプロファイルへのアクセスを要求する。
ブロック915において、処理論理は、ユーザデバイスを認証し、ユーザデバイスの認証に基づいてブロックチェーンからユーザプロファイルを取り出す。ユーザプロファイルは、ブロックチェーン内にブロックチェーン資産として記憶され、ユーザプロファイルの第1の部分は、ブロックチェーン上の全ての参加ノードがアクセス可能な非保護データを含み、ユーザプロファイルの第2の部分は、ユーザ同意を有する参加ノードのみがアクセス可能な保護データを含む。
ブロック920において、処理論理は、保護データを複数のテナントのうち第2のテナントと共有するためのユーザ同意を付与するようにユーザデバイスにプロンプト表示する。
ブロック920において、処理論理は、第2のテナントの参加ノードによるブロックチェーン資産内の保護データへのアクセスを許可することにより、保護データを複数のテナントのうち第2のテナントと共有する。
方法900の別の実施形態によれば、ホスト組織のブロックチェーン同意マネージャは、ブロックチェーンからの保護データにアクセスするために資産IDを必要とする。
別の実施形態によれば、方法900はさらに、第2のテナントから第2のユーザプロファイルを作成する要求を受信することと、第2のユーザプロファイルの非保護情報を含むブロックチェーン資産を作成することと、ブロックチェーンサービスインターフェースを介して、ブロックチェーン資産を含むブロックチェーントランザクションを生成することと、ブロックチェーン上の循環にブロックチェーントランザクションをブロードキャストすることと、ブロック内の検証されたブロックチェーントランザクションをブロックチェーンに対してコミットすることを含む。
方法900の別の実施形態によれば、保護データを複数のテナントのうち第2のテナントと共有するためのユーザ同意を付与するようにユーザデバイスにプロンプト表示することは、第2のユーザプロファイルを埋めるために保護データを第2のテナントと共有するようにユーザデバイスにプロンプト表示することを含み、第1のユーザプロファイルと第2のユーザプロファイルの双方が、共通のユニバーサルIDに関連づけられ、保護データを複数のテナントのうち第2のテナントと共有することは、第2のテナントの参加ノードによりブロックチェーン資産から取り出された保護データで第2のユーザプロファイルを埋めることを含む。
方法900の別の実施形態によれば、ブロックチェーン資産内の保護データへのアクセスを許可することにより、保護データを複数のテナントのうち第2のテナントと共有することは、ブロックチェーン資産の資産IDを第2のテナントに送信することを含み、本方法は、第2のテナントが資産IDをブロックチェーン同意マネージャに提示してブロックチェーン資産内の保護データにアクセスすることをさらに含む。
方法900の別の実施形態によれば、第1及び第2のテナントの各々は、ホスト組織により管理されるヘルスケアブロックチェーンでの参加ノードとして動作するヘルスケア顧客組織であり、非保護データは、第1のユーザプロファイルに関連づけられたユーザの名前を少なくとも含み、保護データは、ユーザのために第1のユーザプロファイルをその中に具現化させたブロックチェーン資産を介してヘルスケアブロックチェーン内に記憶されたHIPAA(医療保険の携行性と責任に関する法律)により保護された医療データを少なくとも含み、保護されたデータを複数のテナントのうち第2のテナントと共有することは、ユーザが第2のテナントに関連づけられた第2のユーザプロファイルを介して、HIPAAにより保護された医療データを第2のテナントと共有するための同意を付与することを含む。
方法900の別の実施形態によれば、第1及び第2のテナントの各々は、ホスト組織により管理される金融ブロックチェーンでの参加ノードとして動作する金融顧客組織であり、非保護データは、第1のユーザプロファイルに関連づけられたユーザの名前を少なくとも含み、保護データは、ユーザのために第1のユーザプロファイルをその中に具現化させたブロックチェーン資産を介して、金融ブロックチェーン内に記憶されたプライベート(private)金融データを少なくとも含み、保護データを複数のテナントのうち第2のテナントと共有することは、ユーザが第2のテナントに関連づけられた第2のユーザプロファイルを介してプライベート金融データを第2のテナントと共有するための同意を付与することを含む。
別の実施形態によれば、方法900はさらに、(i)第1のテナントに関連づけられた同じ個人として立証された、第2のテナントの認証されたユーザから、ユーザ同意を受信すること、又は(ii)第2のテナントに関連づけられた同じ個人として立証された、第1のテナントで認証されたユーザデバイスから、ユーザ同意を受信すること、のうち1つにより、保護データを共有するためのユーザ同意を受信することを含む。
方法900の別の実施形態によれば、保護データを複数のテナントのうち第2のテナントと共有することは、ホスト組織がブロックチェーン同意マネージャを介して、第1のテナントと第2のテナントの双方が1の個人に関連づけられたユーザプロファイルを有することを検証することを含み、検証は、第1及び第2のテナントのユーザプロファイルの双方がホスト組織内で1の個人に対し一意である共通のユニバーサルIDに関連づけられるという1の個人からの証明を受信することに基づく。
方法900の別の実施形態によれば、ブロックチェーン資産は、ブロックチェーン資産識別子、又はブロックチェーン内で一意のユニバーサルIDを介して識別され、保護データに関連づけられた1の個人は、ブロックチェーン資産識別子又はユニバーサルIDに基づいて、ホスト組織の第1のテナント及び第2のテナントの双方に対して一意に(uniquely)識別可能である。
別の実施形態によれば、方法900はさらに、ユーザプロファイルに関連づけられたユーザのためにブロックチェーンでの参加ノードを作成することと、ユーザプロファイルに関連づけられたユーザのためにユーザ特有のコミュニティサイドチェーンを生成することと、第1のテナントのノードと第2のテナントのノードの双方をユーザ特有のコミュニティサイドチェーンに追加することと、を含み、保護データを共有することは、ユーザ特有のコミュニティサイドチェーン内の全てのノードに保護データへのアクセスを付与することを含む。
方法900の別の実施形態によれば、ブロックチェーンでの参加ノードによる、ユーザプロファイルの保護データにアクセスする任意の試みは、保護データをアクセスを試みた参加ノードと共有するために同意を付与するためのユーザデバイスのプロンプト表示をトリガする。特定カテゴリの保護情報をアンロックし、又は特定の文書をアンロックし、あるいは双方を行う要求を有するGUIが、ユーザデバイスに送信される。ユーザは、GUIを介してどのカテゴリ及び/又は文書をアンロックすべきかを選択する。GUIを介した任意のカテゴリ又は文書へのアクセスをアンロックするユーザ指示は、保護データへのアクセスを試みた参加ノードにリンクを送信し、これを介して、保護された情報は、ホスト組織の同意管理レイヤを通してブロックチェーンからアクセス可能にされる。
特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令が少なくともプロセッサ及びメモリをその中に有するホスト組織のシステムに実行されたときに、命令はシステムに、以下の動作:ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させることであり、複数のテナントの各々は、ブロックチェーンでの参加ノードである、ことと、ユーザデバイスからログイン要求を受信することであり、ログイン要求は、複数のテナントのうち第1のテナントに関連づけられたユーザプロファイルへのアクセスを要求する、ことと、ユーザデバイスを認証し、ユーザデバイスの認証に基づいてブロックチェーンからユーザプロファイルを取り出すことであり、ユーザプロファイルは、ブロックチェーン内のブロックチェーン資産として記憶され、ユーザプロファイルの第1の部分は、ブロックチェーン上の全ての参加ノードがアクセス可能な非保護データを含み、ユーザプロファイルの第2の部分は、ユーザ同意を有する参加ノードのみがアクセス可能な保護データを含む、ことと、保護データを複数のテナントのうち第2のテナントと共有するためのユーザ同意を付与するようにユーザデバイスにプロンプト表示することと、第2のテナントの参加ノードによるブロックチェーン資産内の保護データへのアクセスを許可することにより、保護データを複数のテナントのうち第2のテナントと共有することと、を実行させる。
図10は、実施形態が動作し、設置され、統合され、又は構成され得るシステム1001の概略表現を示す。一実施形態によれば、本明細書に記載される方法論のための実装アプリケーションコード1096を実行するための少なくともプロセッサ1090及びメモリ1095をその中に有するシステム1001が存在する。このようなシステム1001は、ホスト組織、マルチテナント環境、オンデマンドサービスプロバイダ、クラウドベースのサービスプロバイダ、クライアント‐サーバ環境などのホストされたコンピューティング環境と通信上インターフェースし、該コンピューティング環境の恩恵を受けて協同的に実行することができる。
図示の実施形態によれば、ホスト組織内で動作し得るシステム1001は、システム1001で命令を実行するためのプロセッサ1090及びメモリ1095を含む。このような実施形態によれば、プロセッサ1090は、ホスト組織の複数のテナントのためにブロックチェーンとインターフェースするブロックチェーンサービスインターフェース1065であり、複数のテナントの各々は、ブロックチェーンでの参加ノード1099である、ブロックチェーンサービスインターフェースと、ユーザデバイス1098からログイン要求を受信する受信インターフェース1026であり、ログイン要求は、複数のテナントのうち第1のテナントに関連づけられたユーザプロファイルへのアクセスを要求する、受信インターフェースと、ユーザデバイス1098を認証し、ユーザデバイスの認証に基づいてブロックチェーンからユーザプロファイルを取り出す認証器1050であり、ユーザプロファイルは、ブロックチェーン内のブロックチェーン資産として記憶され、ユーザプロファイルの第1の部分は、ブロックチェーン上の全ての参加ノードがアクセス可能な非保護データを含み、ユーザプロファイルの第2の部分は、ユーザ同意を有するノードのみがアクセス可能な保護データ1040を含む、認証器と、(例えば、GUIマネージャ1085により送信及び管理されるGUI1086を介して)保護データを複数のテナントのうち第2のテナントと共有するためのユーザ同意を付与するように(例えば、要素1041は付与された同意を示す)ユーザデバイスにプロンプト表示するブロックチェーン同意マネージャ1042と、第2のテナントの参加ノードによるブロックチェーン資産内の保護データへのアクセスを許可することにより、保護データを複数のテナントのうち第2のテナントと共有するスーパーコミュニティテナントブリッジ1043と、を実行する。
システム1001の別の実施形態によれば、受信インターフェース1026は、システムから遠隔のユーザクライアントデバイス1098と通信し、パブリックインターネットを介してユーザデバイスをシステムと通信上リンクする。このような実施形態によれば、システムは、ユーザデバイス1099に対するクラウドベースのサービスプロバイダとしてホスト組織で動作し、クラウドベースのサービスプロバイダは、パブリックインターネットを介してユーザクライアントデバイスに公開された受信インターフェース1026をホストし、さらに、受信インターフェースは、クラウドベースのサービスプロバイダからのサービスの要求として、ユーザデバイスからの入力を受信する。
バス1016は、システム1001の様々なコンポーネントを互いに、システム1001の任意の他の周辺機器と、及び外部ネットワーク要素、他のマシン、クライアントデバイス、クラウドコンピューティングサービスなどの外部コンポーネントとインターフェースさせる。通信は、ネットワークインターフェースを介してLAN、WAN、又はパブリックインターネットを通じて外部デバイスと通信することをさらに含んでもよい。
このような実施形態によれば、システムはさらに、第2のテナントから第2のユーザプロファイルを作成する要求を受信する上記受信インターフェースと、第2のユーザプロファイルの非保護情報を含むブロックチェーン資産を作成するブロックチェーンサービスインターフェースと、ブロックチェーン資産を含むブロックチェーントランザクションを生成する上記ブロックチェーンサービスインターフェースと、ブロックチェーン上の循環にブロックチェーントランザクションをブロードキャストする上記ブロックチェーンサービスインターフェースと、ブロック内の検証されたブロックチェーントランザクションをブロックチェーンに対してコミットする上記ブロックチェーンサービスインターフェースを含んでもよい。
図11Aは、説明される実施形態による、スマートフローコントラクトエンジン1105を利用して作成されるブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャ1100を示す。
詳細には、ここで、スマートフローコントラクトエンジン1105を今や含み、GUIマネージャ1110をさらに含むブロックチェーンサービスインターフェース190がホスト組織内に示される。
ブロックチェーンは分散台帳を利用するため、スマートコントラクトの作成と実行は、特に初心者ユーザには、技術的に複雑な可能性がある。その結果、スマートフロービジュアルデザイナは、スマートコントラクトの実装をより容易に可能にする。結果として生じるスマートフローコントラクトは、顧客及びユーザが任意の所与のブロックチェーンプロトコルで使用されるプログラミング言語について心配する必要をなくすブロックチェーントランスレータ(blockchain translator)1130により作成される、数学的に立証可能な自動生成コードを有する。さらに、スマートフローコントラクトエンジンは、ブロックチェーントランスレータ1130と協調してブロックチェーンの参加ノードの各々で実行可能な必須のネイティブコードを生成するビジュアルデザイナを実現し、ゆえに、スマートコントラクトの容易な処理及び立証をさらに可能にする。特定の実施形態によれば、各スマートフローコントラクトは、数学コードに基づく立証可能な暗号化スキームを利用する。
フローデザイナは、GUIベースのガイド付きフロー設計体験を通してアプリケーション及びカスタマイズされたプロセスフローを設計するための簡素な、直感的な、ウェブベースのインターフェースをユーザに提供する。フローデザイナは、必ずしもコーディング技能を有さず又はブロックチェーンに精通していない初心者ユーザでも、さもなければ複雑な機能を作成することを可能にする。
GUIマネージャ1110は、フローデザイナGUI1111インターフェースをユーザデバイスに提示し、これを介し、ユーザは、ホスト組織と相互作用することができる。スマートフローコントラクトエンジン1105は、GUIマネージャと協調して、ユーザにより提供される様々なルール、条件、及び動作を解釈してスマートフローコントラクトを生成し、これは次いで、ターゲットブロックチェーンプロトコルに翻訳され(translated)、あるいは書き込まれる。
フローデザイナGUI1111を介して、ユーザは、ビジュアルフロー要素を利用して、特定のプロセス、イベント、合意、コントラクト、購入、又は何らかの他のトランザクションがどのように発生する必要があるかを、依存関係、チェック、必要なプロセス入力及び出力、トリガ等を含み、完全に定義することができる。
フローデザイナGUI1111を使用し、ユーザは、動作ブロックを単にドラッグアンドドロップし、様々な条件と「if then else」イベント、例えば、このイベントが発生した場合にこのアクションをとる、などを定義する。ここで示されるように、ユーザ定義条件1151、モニタリングすべきイベント1152、「if」then「else」トリガ1153、及び資産識別子1154を含む様々なユーザ定義のスマートコントラクトブロックが存在する。
ユーザが、その動作ブロック、条件、トリガ、及びイベントの全てを含むフローの定義を完了すると、スマートフローコントラクトエンジンは、個々のブロックの各々を取得し、それらをブロックチェーントランスレータ1130を介してネイティブターゲットブロックチェーンプロトコルに翻訳し、次いで、ブロックチェーンサービスインターフェース190を介して、翻訳されたスマートフローコントラクト1145をブロックチェーン1140に書き込むためのトランザクションを生成する。
ブロックチェーンへ処理される(transacted)と、ブロックチェーンでのあらゆる参加ノードはスマートコントラクトのコピーを有することになり、したがって、任意の所与のイベントが発生した場合、対応するトリガ又はルール又は条件が全ての参加ノードに閲覧可能になり、そのうちのいくつかは、次いで、スマートコントラクトにより定義されるイベントに基づいてアクションをとることができる。
ホスト組織のブロックチェーンサービスインターフェース190は、顧客、ユーザ、及びサブスクライバに、異なるブロックチェーンへのアクセスを提供し、そのうちいくつかはホスト組織110により管理され、例えばプライベートブロックチェーンであり、他はパブリックブロックチェーンであり、このようなパブリックブロックチェーン上のノードとして参加するホスト組織110を介してアクセス可能である。いずれにせよ、各ブロックチェーンは、異なるブロックチェーンプロトコルを利用し、様々なルール、構成、及び、可能性として異なる言語を有し、これらを介し、インターフェースは、それぞれのブロックチェーンと通信するために使用しなければならない。結果的に、ここに示されるブロックチェーントランスレータ1130は、ユーザ定義のスマートコントラクトブロックを、結果として生じるスマートコントラクトが書き込まれ又は処理されるべきターゲットブロックチェーン1140のネイティブの又は必要な言語及び構造に翻訳する。
スマートコントラクトがブロックチェーン1145へ処理され、ブロードキャストされると、それはブロックチェーン内で実行され、次いで、ユーザ定義のスマートコントラクトブロックにより定められるその規定が実行され、強制される。
一実施形態によれば、ユーザ定義のスマートコントラクトブロックを生成するために、セールスフォースドットコムのビジュアルフローデザイナが利用され、それらは、次いで、ブロックチェーンスマートコントラクトに翻訳される。他の実施形態によれば、異なるビジュアルフローデザイナが利用され、ブロックチェーントランスレータ1130が、ユーザ定義のスマートコントラクトブロックをブロックチェーンスマートコントラクトに翻訳する。
結果として生じるネイティブブロックチェーンプロトコルスマートコントラクト要素1135は、スマートコントラクトが書き込まれるべきブロックチェーン1140により指示されたコード、構造、又は言語内に具現化されてもよい。例えば、スマートコントラクトがイーサリアムに書き込まれるべき場合、ブロックチェーントランスレータ113は、ユーザ定義のスマートコントラクトブロックをイーサリアム準拠の「ソリディティ(Solidity)」プログラミング言語に翻訳しなければならない。ソリディティは、具体的にイーサリアムでスマートコントラクトを実現するためのコントラクト指向の高水準言語である。この言語は、C++、Python、及びJavaScriptの影響を受け、イーサリアム仮想マシン(Ethereum Virtual Machine、EVM)をターゲットにするように設計されている。スマートコントラクト要素は、投票、クラウドファンディング、ブラインドオークション、マルチシグネチャウォレット、及びその他多くの機能のためのサポートを含む。
逆に、スマートコントラクトがハイパーレジャー(Hyperledger)に書き込まれるべき場合、言語は異なり、他の機能の中でも、スマートコントラクトのための分散台帳ブロックチェーンの使用を可能にするGoプログラミング言語を利用する。
スマートコントラクトは有益であり、多くのブロックチェーンプロトコルによりサポートされるが、それらは、ターゲットにされる特定のブロックチェーンに依存して異なる言語でプログラムされるという要件に起因して、実現するのに煩雑な可能性がある。したがって、ユーザは、プログラミング構造だけでなく、問題のブロックチェーンプロトコルに必要なプログラミング言語の特定の構文的ニュアンスも理解しなければならない。
スマートフローコントラクトエンジン1105を利用することにより、初心者ユーザでも、フローデザイナでスマートコントラクト要素を生成し、次いでブロックチェーントランスレータ1130を利用して、ユーザにより定義されたスマートコントラクト要素を具現化するネイティブブロックチェーンプログラミング言語コードを実際にレンダリングすることにより、準拠したスマートコントラクトを作成することができ、その後、ブロックチェーンサービスインターフェース190は、ブロックチェーンへのスマートコントラクトの処理を取り扱う。
例えば、ホームデポに販売し、ホームデポとのイーサリアムを使用するスマートコントラクトを実行したいベンダを考える。ベンダはホスト組織でログインし、ベンダは認証されたユーザであり、クラウドサブスクリプションサービスへのアクセスを有すると仮定し、次いで、スマートフローコントラクトエンジン1105にアクセスし、これを介して、ユーザは、自身が望むどんなフローでも生成することができる。完了すると、ユーザは、フローデザイナGUI1111を介して、ブロックチェーンサービスインターフェース190にスマートコントラクトを実行するように指示し、ゆえに、スマートフローコントラクトエンジンに、ユーザのカスタム設計のスマートフローコントラクトをイーサリアム準拠の「ソリディティ」コードに翻訳させ、その後、スマートコントラクトは、次いで、実行のためにブロックチェーンに書き込まれる。ベンダは、ブロックチェーンとの処理の詳細をプログラムする方法を知る必要がなく、あるいは理解さえする必要がない。むしろ、ホスト組織110を介してアクセス可能なクラウドベースのサービスは、プロセスから複雑さを除去し、ユーザに簡素なフローデザイナGUI1111を提示し、ゆえに、これを介して、全ての必要な動作が実施され得る。
そのような実施形態によれば、スマートコントラクトをブロックチェーンに書き込むことは、特定のブロックチェーンプロトコルによりサポートされるようにブロックチェーンにスマートコントラクトを定義するメタデータを記憶することを要する。一実施形態によれば、トランザクションがブロックチェーン上で発生し、スマートコントラクトのメタデータをその中に有するとき、スマートコントラクトが実行され、次いで、様々なユーザ定義のスマートコントラクトイベント、条件、及び動作が果たされる。
特定の実施形態によれば、ユーザ定義のスマートコントラクトは、翻訳され、ブロックチェーンへ処理され、ホスト組織においてイベントをトリガする。
例えば、ウォルマートとネスレが、貨物は気候制御されたトレーラー内で常時華氏35〜39度の範囲内で輸送されなければならないという合意を有することを考える。さらに、温度がいつでも39度を超えた場合、支払いは取り消される。
ホスト組織内では、顧客関係管理(Customer Relationship Management、CRM)プラットフォームが、顧客、ベンダ、潜在顧客、サプライヤ等の間の様々な関係及び相互作用を定義し、管理する。用語CRMは、CRMシステムを通常指し、これは、コンタクト管理、販売管理、ワークフロープロセス、生産性などでビジネスに役立つツールである。
上記のウォルマートとネスレの例では、CRMシステムは、貨物の要件を所持する。ホスト組織がCRMシステムを介して貨物を監視し、温度データなどの貨物イベントをサブスクライブするため、CRMシステムは、特定の貨物に関する温度関連イベントについて監視し、それを認識し、そのとき次いで、自動的にスマートコントラクトに向けてリンクできる。より詳細には、ホスト組織が、スマートコントラクトが実行されているブロックチェーンの参加ノードとして動作するため、ホスト組織は、ブロックチェーンを介してアクセス可能なスマートコントラクトの取り決め及び条件(terms and conditions)と、さらに要求される温度範囲などの貨物に関するCRM要件との双方に対して可視性を有する。
したがって、スマートコントラクト条件違反が発生すると、ホスト組織は、その違反をCRMシステム(ブロックチェーンの一部ではない)と同期させて、実行中のスマートコントラクトの条件に従い、その特定の貨物に関連づけられた支払いを停止する。
一実施形態によれば、ブロックチェーンは、ホスト組織のCRMシステムがリッスンするイベントを送出し、次いで、ユーザ定義のスマートコントラクトフローにより指定されるものに従って、イベントに基づいて何らかの実質的なアクションを実行する。上記の例では、実質的なアクションは、ブロックチェーン上のスマートコントラクトに従って貨物に対する支払いを停止することである。
実行中のスマートコントラクトに対する参加当事者の各々は、そのそれぞれのCRMシステムに、実行中のスマートコントラクトに関連づけられたブロックチェーンのイベントをサブスクライブさせている可能性があり、したがって、双方の当事者が、イベントを認識している可能性がある。
一実施形態によれば、ブロックチェーンイベントに応答した特定のアクションを容易にするために、論理がCRMシステムに書き込まれる。言い換えると、非ブロックチェーンアクションが、実行中のブロックチェーンスマートコントラクトに従って実行されてもよい。
図11Bは、説明される実施形態による、Apex翻訳エンジン(Apex translation engine)1155を利用して作成されたブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャ1101を示す。
ここで示されるように、ブロックチェーンサービスインターフェース190内にApex翻訳エンジン1155が存在する。
Apexは、開発者向けにフォースドットコム(登録商標)(Force.com)プラットフォームにより提供されるプログラミング言語である。Apexは、強く型付けされたオブジェクト指向ベースの言語であり、ドット表記及び波括弧の構文を利用するため、Java及びC#と類似している。Apexは、スケジューリングを介して、又はビジュアルフォース(Visualforce)ページのカスタムコントローラを介して、カスタムボタンとリンク、レコードの挿入、更新、又は削除におけるイベントハンドラを含むフォースドットコムプラットフォーム上の大抵のプロセスの間のプログラムされた機能を実行するために使用できる。
セールスフォースドットコムのホスト組織の開発者は、Apexを頻繁に利用して、SQLプログラミング、データベース相互作用、GUIインターフェースのカスタムイベント、レポート生成、及び多数の他の機能を実現する。結果として、Apexにかなり精通し、あまり精通していないプログラミング言語を利用する必要があるよりもApex言語でプログラムすることを好む、ホスト組織110に関連づけられた開発者の大きいコミュニティが存在する。
問題として、スマートコントラクトは、それぞれのブロックチェーン上の任意のスマートコントラクトの実行に対してターゲットにされているブロックチェーンプロトコルのネイティブ言語で書かれなければならない。
例えば、上述のように、スマートコントラクトがイーサリアムに書き込まれるべき場合、スマートコントラクトは、イーサリアム準拠の「ソリディティ」プログラミング言語で書かれなければならない。
スマートコントラクトと同様に、Apexはメタデータの一種である。したがって、Apex翻訳エンジン1155は、Apexに精通した開発者が、ブロックチェーンに対するそれらのスマートコントラクトを、ネイティブスマートコントラクトプロトコルプログラミング言語を利用するのでなくApexプログラミング言語を利用してプログラムすることを可能にする。
ここに示されるように、開発者は、そのスマートコントラクトをApexプログラミング言語を利用して書き、次いで、図示のApexコードインターフェースを介して、例えば、開発者のApexコードを中に埋め込ませたテキストファイルをアップロードすることにより、Apex翻訳エンジン1155にApex入力1156を提供する。
Apex翻訳エンジン1155は、Apex入力1156をパースして(parses)Apex定義のスマートコントラクトブロックを識別し、翻訳の準備のためにそれらを取り出す。ここで示されるように、Apex定義条件1171と、監視すべきApexイベント1172と、「if」then「else」Apexトリガ1173と、前述のように、Apex特有ではない資産識別子1154がある。
次いで、Apex定義のスマートコントラクトブロックは、Apexブロックトランスレータ1180に提供され、Apexブロックトランスレータ1180は、それらを、ターゲットにされたブロックチェーンプロトコルのネイティブブロックチェーンプロトコルスマートコントラクト要素1135に変換する。ひとたび翻訳されると、プロセスは上述のとおりであり、翻訳されたスマートコントラクトは、実行1145のためにブロックチェーン1140へ処理され、ブロードキャストされる。
ビジュアルフローGUIとは異なり、Apexはプログラム的であるため、Apexコードを書くユーザは、スマートコントラクトで実行するプログラムを書くことができ、ビジュアルフローGUI内で利用可能な機能により制限されない。
特定の実施形態によれば、Apex入力1156は、JavaScriptに最初翻訳され、次いでその後、スマートコントラクトが実行されるべきターゲットにされたブロックチェーンプロトコルに適した特定のブロックチェーンAPIに翻訳される。
別の実施形態によれば、リッスンイベント(listening events)がApex言語を使用して書かれ、Apex入力1156で提供されてもよく、しかしながら、このようなリッスンイベントは、ホスト組織により実行されるべきである。したがって、Apexブロックトランスレータ1180は、任意の識別されたApexリスナ1178を分離し、これらをホスト組織110に返し、そこで、これらは適切なCRMシステム又は他のイベント監視システム内で実現されてもよい。このような方法で、開発者は、Apex入力1156を単一のプログラムとして書くことができ、スマートコントラクトとさらに関連するリッスンイベントを別個のシステムで別個に作成する必要はない。
図12は、ユーザ、顧客、及びサブスクライバにクラウドベースのオンデマンド機能を提供するために、このような機能を実行するプロセッサ及びメモリによりサポートされるデータベースシステム実装などのクラウドベースのコンピューティング環境において、分散台帳技術を使用してスマートフローコントラクトを実現する方法1200を示すフロー図を示す。
方法1200は、ハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)を含み得る処理論理により実行されて、本明細書に記載のシステム及び方法に従って実行、送信、受信、解析、トリガ、プッシュ、推奨、定義、取り出し、パース、持続、公開、ロード、動作、生成、記憶、維持、作成、返信、提示、インターフェース、通信、クエリ、処理、提供、決定、表示、更新、送出などの様々な動作を実行し得る。例えば、図1以下に示されるホストされたコンピューティング環境111、ブロックチェーンサービスインターフェース1120、及びそのデータベースシステム130、並びに本明細書に記載する他のシステム及びコンポーネントは、説明される方法論を実現することができる。以下で列挙されるブロック及び/又は動作のいくつかは、特定の実施形態に従って任意である。提示されるブロックの番号付けは明りょうさのためであり、様々なブロックが発生しなければならない動作の順序を規定することは意図されない。
図12に示す方法1200を参照し、ブロック1205において、処理論理は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させ、複数のテナントの各々は、ブロックチェーンでの参加ノードである。
ブロック1210において、処理論理は、ユーザデバイスからログイン要求を受信する。
ブロック1215において、処理論理は、ホスト組織でユーザデバイスを認証する。
ブロック1220において、処理論理は、複数のスマートコントラクトブロックを示すユーザデバイスからの入力を受信する。
ブロック1225において、処理論理は、スマートコントラクトブロックの各々をネイティブプログラミング言語に翻訳して、ブロックチェーンを介して実行すべきスマートコントラクトを形成する。
ブロック1230において、処理論理は、ブロックチェーンへのスマートコントラクトを処理する(transacts)。
別の実施形態によれば、方法1200はさらに、フローデザイナGUIをユーザデバイスに送信することを含み、ユーザデバイスからの入力を受信することは、フローデザイナGUIを介して、複数のフローシーケンス、フロー条件、フロートリガ、及び/又はフローイベント動作を有する複数のスマートコントラクトブロックのユーザ選択を示す入力を受信することを含む。
方法1200の別の実施形態によれば、複数のスマートコントラクトブロックを示すユーザデバイスからの入力を受信することは、Apexプログラミング言語でプログラムされたApex入力ファイルを受信することを含み、本方法は、Apex入力ファイルからの複数のApex定義のスマートコントラクトブロックをパースすることをさらに含み、スマートコントラクトブロックの各々を翻訳することは、複数のパースされたApex定義のスマートコントラクトブロックをネイティブプログラミング言語に翻訳して、ブロックチェーンを介して実行すべきスマートコントラクトを形成することを含む。
方法1200の別の実施形態によれば、スマートコントラクトブロックの各々をネイティブプログラミング言語に翻訳して、スマートコントラクトを形成することは、複数のスマートコントラクトブロックの各々を、スマートコントラクトのためのプロセス動作の定義されたシーケンス、定義されたスマートコントラクト条件、定義されたスマートコントラクトトリガ、及び/又は定義されたスマートコントラクトイベントに翻訳することを含む。
方法1200の別の実施形態によれば、ブロックチェーンへのスマートコントラクトを処理することは、スマートコントラクトをホスト組織のブロックチェーンサービスインターフェースを介してメタデータとしてブロックチェーンに書き込むことを含み、スマートコントラクトは、ブロックチェーンを介して、ブロックチェーン上で発生する1つ以上のトランザクションに対して実行される。
別の実施形態によれば、方法1200はさらに、ユーザから受信した入力からイベントリスナ(event listener)を抽出することであり、イベントリスナは、ブロックチェーンへ処理されたスマートコントラクト内の対応するスマートコントラクト条件又はスマートコントラクトトリガを有する定義されたイベントについてブロックチェーントランザクションを監視する、ことと、ブロックチェーンと別個のイベントリスナを実行することであり、イベントリスナはホスト組織内で実行され、ブロックチェーン上のトランザクション内のイベントの発生においてホスト組織内で予めプログラムされたアクションをトリガする、ことを含む。
方法1200の別の実施形態によれば、イベントリスナは、ブロックチェーン上で実行されるスマートコントラクトへの参加当事者であるホスト組織のテナントのためにホスト組織のCRMプラットフォーム内で実行され、イベントの実行は、ブロックチェーン内で実行されるスマートコントラクトにより定義される取り決め又は条件の違反に従ってCRMシステムを介して支払いを停止すること、又はブロックチェーン内で実行されるスマートコントラクトにより定義される全ての取り決め及び条件の履行に従ってCRMシステムを介して支払いを承認すること、のうち1つを含む。
方法1200の別の実施形態によれば、スマートコントラクトブロックの各々をネイティブプログラミング言語に翻訳して、ブロックチェーンを介して実行すべきスマートコントラクトを形成することは、スマートコントラクトブロックの各々を、イーサリアム準拠のソリディティプログラミング言語に翻訳することを含み、ホスト組織は、ホスト組織のブロックチェーンサービスインターフェースを介してイーサリアムブロックチェーン上の参加ノードを動作させ、ブロックチェーンへのスマートコントラクトを処理することは、イーサリアムブロックチェーンを介した実行のために参加ノードを介してイーサリアムブロックチェーンへのスマートコントラクトを処理することを含む。
方法1200の別の実施態様によれば、スマートコントラクトブロックの各々をネイティブプログラミング言語に翻訳して、ブロックチェーンを介して実行すべきスマートコントラクトを形成することは、スマートコントラクトブロックの各々をハイパーレジャー準拠のGoプログラミング言語に翻訳することを含み、ホスト組織は、ホスト組織のブロックチェーンサービスインターフェースを介してハイパーレジャーブロックチェーン上の参加ノードを動作させ、ブロックチェーンへのスマートコントラクトを処理することは、ハイパーレジャーブロックチェーンを介した実行のために参加ノードを介してハイパーレジャーブロックチェーンへのスマートコントラクトを処理することを含む。
方法1200の別の実施形態によれば、複数のスマートコントラクトブロックを示すユーザデバイスからの入力を受信することは、フローデザイナGUIをユーザデバイスにおける表示のためにホスト組織のGUIマネージャからユーザデバイスに送信することと、ユーザデバイスに表示されたフローデザイナGUIにおいて、利用可能なスマートコントラクト条件、トリガ、及びフローデザイナGUIを介して利用可能なイベントの、ドラッグアンドドロップ選択及び順序付けを示すマウス移動イベントを受信することを含む。
図13は、実施形態が動作し、設置され、統合され、又は構成され得るシステム1301の概略表現を示す。一実施形態によれば、本明細書に記載される方法論のための実装アプリケーションコード1396を実行するための少なくともプロセッサ1390及びメモリ1395をその中に有するシステム1301が存在する。このようなシステム1301は、ホスト組織、マルチテナント環境、オンデマンドサービスプロバイダ、クラウドベースのサービスプロバイダ、クライアント‐サーバ環境などのホストされたコンピューティング環境と通信上インターフェースし、該コンピューティング環境の恩恵を受けて協同的に実行することができる。
図示の実施形態によれば、ホスト組織内で動作し得るシステム1301は、システム1301で命令を実行するためのプロセッサ1390及びメモリ1395を含む。このような実施形態によれば、プロセッサ1390は、ホスト組織の複数のテナントのためにブロックチェーンとインターフェースするブロックチェーンサービスインターフェース1365であり、複数のテナントの各々は、ブロックチェーンでの参加ノード1399である、ブロックチェーンサービスインターフェースと、ユーザデバイス1398からログイン要求を受信する受信インターフェース1326と、を実行する。このような実施形態によれば、ホスト組織でユーザデバイス1398を認証する認証器1350が存在する。受信インターフェース1326は、複数のスマートコントラクトブロックを示すユーザデバイス1398からの入力1327をさらに受信し、トランスレータ(及びパーサ(parser))1343は、スマートコントラクトブロックの各々をスマートフローコントラクトエンジンのためにネイティブプログラミング言語に翻訳して、ブロックチェーンを介して実行すべきスマートコントラクト1340を形成する。次いで、ブロックチェーンサービスインターフェース1365は、ブロックチェーンへのスマートコントラクト1340を処理する。
システム1301の別の実施形態によれば、システムは、フローデザイナGUI1341をユーザデバイスに送信するGUIマネージャ1385をさらに含み、受信インターフェースは、フローデザイナGUIを介して、複数のフローシーケンス、フロー条件、フロートリガ、及び/又はフローイベント動作を有する複数のスマートコントラクトブロック1386のユーザ選択を示す入力1327を受信する。
システム1301の別の実施形態によれば、受信インターフェース1326は、システムから遠隔のユーザクライアントデバイス1398と通信し、パブリックインターネットを介してユーザデバイスをシステムと通信上リンクする。このような実施形態によれば、システムは、ユーザデバイス1399に対するクラウドベースのサービスプロバイダとしてホスト組織で動作し、クラウドベースのサービスプロバイダは、パブリックインターネットを介してユーザクライアントデバイスに公開された受信インターフェース1326をホストし、さらに、受信インターフェースは、クラウドベースのサービスプロバイダからのサービスの要求として、ユーザデバイスからの入力を受信する。
バス1316は、システム1301の様々なコンポーネントを互いに、システム1301の任意の他の周辺機器と、及び外部ネットワーク要素、他のマシン、クライアントデバイス、クラウドコンピューティングサービスなどの外部コンポーネントとインターフェースさせる。通信は、ネットワークインターフェースを介してLAN、WAN、又はパブリックインターネットを通じて外部デバイスと通信することをさらに含んでもよい。
特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令が少なくともプロセッサ及びメモリをその中に有するホスト組織のシステムにより実行されたときに、命令はシステムに、以下の動作:ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させることであり、複数のテナントの各々は、ブロックチェーンでの参加ノードである、ことと、ユーザデバイスからログイン要求を受信することと、ホスト組織でユーザデバイスを認証することと、複数のスマートコントラクトブロックを示すユーザデバイスからの入力を受信することと、スマートコントラクトブロックの各々をネイティブプログラミング言語に翻訳して、ブロックチェーンを介して実行すべきスマートコントラクトを形成することと、ブロックチェーンへのスマートコントラクトを処理することと、を実行させる。
図14は、説明される実施形態による、クラウドベースのコンピューティング環境を介して分散台帳技術に関してインターフェースするために利用される仮想チェーンモデルのさらなる詳細を有する別の例示的なアーキテクチャ1400を示す。
ここでは、前述したようなホスト組織とその様々な要素が示されるが、ブロックチェーンサービスインターフェース190内に仮想チェーンインターフェース1405がさらに示されており、これは、それらがホスト組織が参加ノードとして動作するパブリックブロックチェーンである場合のブロックチェーンプロトコル実装、又はホスト組織110により提供されるパブリックブロックチェーンプロトコル実装、若しくはホスト組織110により提供されるプライベートブロックチェーンをサポートする代わりのプログラム的インターフェースを提供する。
分散台帳技術を利用してプライベート及びパブリックのブロックチェーンとインターフェースする開発者は、従来、彼ら自身の選択のプログラミング言語を利用する能力を有するよりも、それらのブロックチェーンのネイティブプログラミング言語を利用する必要があった。この要件は、自分達がほとんと精通していない言語を使用してプログラムすることを要求され得る開発者にいくらかの困難もたらし、ゆえに、ブロックチェーン技術の使用を妨げる。
ホスト組織110内では、開発者が、SQL又はPL/SOQLなどの構造化問い合わせ言語(structured query language)を利用してクエリインターフェース180を介してデータベースシステム130と相互作用することはかなり一般的である。
したがって、上述した実施形態によれば、ホスト組織110は、関係データベースにクエリするために通常利用される通常のSQLクエリと同様の構文を利用して仮想チェーンインターフェース1405を介してブロックチェーンと相互作用する能力を提供する。
ここで示されるように、仮想チェーンインターフェース1405は、ブロックチェーンをターゲットにしているユーザから構造化クエリ1406を受信し、次いで、構造化クエリ1406をクエリパーサ1425を介してルーティングすることができ、クエリパーサ1425は、構造化クエリ1406の要素を分解する。例えば、ここで示されるクエリパーサ1425は、構造化クエリ1406をブロックチェーン更新論理1421、ブロックチェーン読み出し論理1422、ブロックチェーン削除論理1423(例えば、データベースから行を除去することと同等)、及びブロックチェーン検索論理1424に分解し、識別されるクエリ要素が、ユーザから仮想チェーンインターフェース1405で受信した構造化クエリからパースされる結果をもたらす。
次いで、識別されたクエリ要素は、クエリ論理トランスレータ1430によって対応するネイティブブロックチェーン機能、コード、又は論理にマッピングされ、結果として、ネイティブブロックチェーンプロトコルコード1435が構造化クエリ1406の同等機能を構成し、ゆえに、次いでブロックチェーン1440へ処理されるネイティブブロックチェーントランザクション1445が仮想チェーンインターフェースへのトランザクション結果のリターンをトリガする結果をもたらす。
一実施形態によれば、仮想チェーンインターフェース1405は、ブロックチェーンを模倣するエントリ及び変換の仮想テーブル又はリストを提供し、ゆえに、仮想テーブルに基づいて、ネイティブブロックチェーンコード又は機能に置き換えられるべき構造化クエリ1406内の動作要素のマッピング、変換、又は翻訳を可能にする。
機能要素が、入ってくる構造化クエリからネイティブのブロックチェーン機能に変換されると、結果として生じるネイティブブロックチェーントランザクションは、例えば、トランザクションをブロードキャストし、トランザクションをブロックチェーンのブロックに書き込み、ブロックを検証し、次いで検証されたブロックをブロックチェーンに対してコミットすることにより、ブロックチェーンを介して単に実行される。
一実施形態によれば、仮想チェーンインターフェースで受信された構造化クエリ1406は、標準SQL構文を使用して書き込まれるが、舞台裏でユーザに見えず、仮想チェーンインターフェース1405は、ユーザと、ブロックチェーンに対して適切に形成されたトランザクションを生成するために利用される構造化クエリ要素に基づいて、文脈的に関連する情報を識別する。
例えば、SQL INSERT文を提供する受信した構造化クエリ1406を考える。通常、構文は、INSERT INTO table_name(column1, column2, column3, ...)であるが、仮想チェーンインターフェースは、INSERTコマンドを適切なネイティブブロックチェーンコマンドに翻訳する。コマンドは、利用されるブロックチェーンプロトコル及びインターフェーススクリプトに依存して異なるが、ブロックチェーンへデータを挿入する1つのそのようなコマンドは、OP_RETURN <あなたが追加したいデータ>である。したがって、INSERTは、OP_RETURNに変換され、INTOは、メタデータ、コントラクト、ブロックチェーン資産などのターゲット位置に変換され、これは、サブミッタが特定のブロックチェーン要素に関連づけられるとき、ユーザが構造化クエリをサブミットした文脈を仮想チェーンインターフェースが理解することにより、自動的に識別されてもよい。
同様に、ユーザがUPDATEコマンドを指定する構造化クエリ1406を提示した場合、UPDATEコマンドをブロックチェーンの関連コマンドに変換することが必要であり、なぜならば、ブロックチェーンの不変性は、チェーンに受け入れられたブロックは決して修正できないことを意味するためである。結果的に、構造化クエリ1406のUPDATEコマンドは、追加に変換されなければならない。したがって、ユーザが例えば、UPDATE table_name,SET column1=value1,column2=value2,...,WHERE条件を指定した場合、仮想チェーンインターフェースは、入ってくる構造化クエリ要素を挿入ブロックコマンドに翻訳し、例えば、必要なユーザ鍵及びブロックチェーンで処理するために必要な任意の他の形式的手続きを追加することを含む、必要なユーザ管理を埋める。
例えば、ホスト組織はブロックチェーン上のノードとして動作し、したがってブロックチェーン内のデータへのアクセスを有するが、ブロックチェーントランザクションは、データが(例えば、古いデータに取って代わる新しい追加を介して)追加又は修正される場合、適切な参加ノードから実行される必要がある。したがって、仮想チェーンインターフェースはさらに、構造化クエリ1406のユーザID又は要求者を参加ノードにマッピングし、入ってくる構造化クエリ1406のユーザID又は要求者に対応する参加ノードからのネイティブブロックチェーントランザクションを処理する。
同様に、ユーザが、例えば、SELECT column1, column2, ... FROM table_nameを指定するなど、構造化クエリSELECT FROMコマンドを介して指定する場合、仮想チェーンインターフェースは、クエリ要素を、table_nameフィールドを適切なブロックチェーン資産、メタデータ、又は他の読み出し可能な記憶位置に翻訳又はマッピングすることを含む、ブロックチェーンからデータを取り出すのに必要な適切なブロックチェーンネイティブプロトコルコードに到達し、翻訳する。例えば、構造化クエリがオブジェクトを指定する場合、仮想チェーンインターフェースは、ターゲットオブジェクト名を対応するブロックチェーン資産に翻訳し、次いで、該ブロックチェーン資産から、ブロックチェーンのペイロードデータが読み出され、構造化クエリへのリプライで返される。
したがって、ユーザ又は顧客の観点から、構造化クエリは、ユーザ又は顧客が参加ノードを有する指定されたブロックチェーン分散台帳をターゲットにしたアプリケーション、レポート、及びアドホック内でプログラムされてもよく、仮想チェーンインターフェースは、ユーザからのさらなる関与又は技術的ノウハウを必要とすることなく、構造化クエリの、必須のネイティブブロックチェーンプロトコルコード1435への変換を透過的に取り扱う。
記載される実施形態によれば、指定されたブロックチェーン内にデータを記憶させたホスト組織の各テナントは、ブロックチェーンでの少なくとも1つの参加ノードを有するが、ホスト組織の特定のテナントは、単一のブロックチェーン上に複数の参加ノードを有してもよい。
例えば、複数の異なるプロダクト又はプロダクトラインを有するホスト組織のテナントが、各プロダクト又はプロダクトラインについてブロックチェーンでの区別可能な参加ノードを有することを選択してもよく、したがって、構造化クエリにより参照される「table_name」は、複数が存在する場合、テナントの適切な参加ノード及びブロックチェーン資産にマッピングされる。別の実施形態において、ホスト組織の単一のテナントが、複数の顧客組織を有してもよく、したがって、そのようなテナントは、各顧客組織を、ブロックチェーンでのその独自の参加ノードに編成してもよく、その場合、仮想チェーンインターフェースは、構造化クエリ1406内の指定されたテーブル名又はオブジェクトを、構造化クエリをサブミットするために使用されるテナントのOrgIDに基づいて、ブロックチェーンでの参加ノードにマッピングする。
他の実施形態において、単一のテナントが、複数の異なるブロックチェーンを利用してもよく、したがって、仮想チェーンインターフェースは、指定されたテーブル名又はオブジェクトをターゲットブロックチェーンに、及びターゲットブロックチェーンでの参加ノード及びブロックチェーン資産にマッピングする必要がある。例えば、金融プライベートブロックチェーンを利用して金融関連情報を記憶し、プライベート出荷ブロックチェーンなどの異なるブロックチェーンを利用してサプライチェーンデータを記憶するホスト組織のテナントとして、ウォルマートを考える。このような場合、ウォルマートは、金融プライベートブロックチェーンとプライベート出荷ブロックチェーンの各々に参加することになり、ゆえに、ウォルマートは、少なくともこれら2つの参加ノードを有することになる。結果的に、仮想チェーンインターフェースは、SQLコマンドで指定された任意の指定されたテーブル名又は記憶位置を、適切なブロックチェーンと、ターゲットブロックチェーンでの参加ノード及びブロックチェーン資産にマッピングしなければならない。
このようにして、ユーザ、顧客組織、及びテナントは、翻訳がユーザのために仮想チェーンインターフェース1405により取り扱われるとき、ネイティブブロックチェーンプロトコルコードを理解する必要なく、「SELECT FROM」この「オブジェクト」、又は「INSERT BLOCK」、又は「UPDATE BLOCK」などのコマンドを発行することができる。さらに、ユーザがホスト組織で認証されるため、仮想チェーンインターフェースは、必須の資産IDを提供し、自動的に埋めるなど、ブロックチェーンで処理するのに必要な全てのバックエンド管理も取り扱う。
かなり最初のトランザクションでは、仮想チェーンインターフェースは、ブロックチェーンに挿入コマンドを実行して新しい参加ノードを作成する必要があるが、ひとたび作成されると、ブロックチェーン内のエントリは決して除去されないため、それ以降には既存の参加者が使用されてもよい。例えば、ユーザがターゲットブロックチェーン上でトランザクションを一度も実行したことがない場合、仮想チェーンインターフェースは管理タスクを扱って、そのユーザのクレデンシャルに基づいてブロックチェーンに参加者を作成し、次いで、全てのトランザクションが鍵に基づくとき、そのユーザの鍵をブロックチェーンでの使用のために生成する。ひとたび完了すると、仮想チェーンインターフェースは、構造化クエリをマッピングに基づいてブロックチェーンの資産ペイロードとして参照されるステートメントに翻訳する。
特定の実施形態によれば、仮想チェーンインターフェースはさらに、ブロックチェーンとの同期を取り扱い、したがって、例えば、合意がまだ達せられていないブロックチェーン上の保留中の(pending)トランザクションと、合意を有する検証されたトランザクションとの間の差を認識することは、ブロックチェーンに対してコミットされたトランザクションとみなされてもよい。例えば、保留中のトランザクションがサブミットされても決して合意に達しない場合、仮想チェーンインターフェースは、ロールバックトランザクションの同等物を取り扱う。SQLでは、「ROLLBACK」は、最後のBEGIN WORK又はSTART TRANSACTIONからの全てのデータ変更を関係データベース管理システム(relational database management systems、RDBMS)により破棄させるコマンドであり、それにより、データの状態は、それら変更が行われる前の状態に「ロールバックされる」。同様に、ブロックチェーン参加ノードにブロードキャストされる、ブロックに書き込まれたトランザクションであり、該ブロックがその後、(例えば、合意、プルーフオブワーク等に基づいて)異なるブロックの方を選んで無効にされ、切り捨てられ、又は無視される、トランザクションは、ブロードキャストされたトランザクションが事実上取り消される結果をもたらし、ゆえに、仮想チェーンインターフェース1405は、ステータスを追跡し、そのような失敗状態を反映して、ブロックチェーンと構造化クエリ要求者との間の同期を維持する。
例えば、構造化クエリが保留中のトランザクションから読み出し、該トランザクションを更新し、又は何らかの方法で該トランザクションに影響を与える、該クエリをサブミットしたユーザに、情報が返される。そのようなクエリをサブミットすると、ユーザは、トランザクションが投稿されたが保留中のコミット上にあることを示す情報を提示される。
ひとたびトランザクションがブロックチェーンにコミットされると、ユーザは、そのとき初めて、保留中の/コミットされていないトランザクションとしてのみ取り出し可能であるのと対比して、それがコミットされたトランザクションとして取り出し可能であることがわかる。
仮想チェーンインターフェース1405はさらに、ブロックチェーンでのスマートコントラクト締結をサポートし、それにより、定義されたイベントがブロックチェーン上のトランザクション内で発生した場合、スマートコントラクト全体がブロックチェーンを介して実行される。仮想チェーンインターフェース1405は、指定されたイベントを自動的にリッスンし、次いで、これらのイベントがブロックチェーン上で発生していることを観察されたとき、予め定義されたアクションを実行する。
例えば、利用可能なブロックチェーンプロトコルと互換性がないSQL SELECT FROM文を考える。例えば、構造化クエリがSELECT a, b, c FROM, financial account_Bを指定した場合、「B」はブロックチェーン内の識別子として解釈される。同様に、修正されたドット表記が利用されてもよく、SELECT「ID」FROM blockchain_financial account_Bのそのような指定は、ゆえに、先導する「ブロックチェーン」を利用されるべきターゲットブロックチェーンとして解釈し、仮想チェーンインターフェースは適切な参加ノードを識別し、「B」は指定されたブロックチェーンでの識別子として解釈され、識別子は、データを取り出すべきブロックチェーン内の特定のペイロードを表す。
仮想チェーンインターフェース1405はさらに、ブロックチェーン内の全ての資産にわたり、その特定の顧客のためにブロックチェーンから最新のトランザクションを、又はブロックチェーンから最新のブロックを引き出すことにより、そのマッピングを維持する。
別の実施形態によれば、仮想チェーンインターフェース1405は、ブロックチェーンからの履歴データの取り出しをサポートする。例えば、financial_account_history_bを指定するエンティティについて、仮想チェーンインターフェース1405は、ネイティブブロックチェーンプロトコルコードを生成して、指定されたブロックチェーン内でその指定された資産に対してこれまで発生した全てのトランザクションを引き出し、ゆえに、ある時間にわたり生じた一連のトランザクションを返す。コミットされた更新の後にデータを上書きし得るデータベースとは異なり、ブロックチェーンは決して情報を破棄せず、したがって、最新の現在の情報を取り出すことができ、あるいは完全な履歴情報を取り出すこともできる。
例えば、顧客を追加するトランザクションを考える。第1のトランザクションは、顧客の姓名を指定しているがSSNが欠けている。次いで、第2のトランザクションは、ブロックチェーンに追加されるSSNを指定している。次いで、第3のトランザクションは、顧客のコンタクト情報を更新する。次いで、第4のトランザクションは、顧客の電話番号を変更する。これらのトランザクションの全てが同じ顧客資産に適用されるが、4つ全てがブロックチェーンで区別可能なトランザクションである。結果的に、構造化クエリは、SELECT a,b,c from customer_bを指定することができ、結果として、最後の最新の情報がその顧客に返されることになる。しかしながら、構造化クエリが代わりに、SELECT a,b,c from customer_history_bを指定した場合、仮想チェーンインターフェース1405は、customer_bに対する全ての変更の履歴レコード全体を取り出し、それにより、第1のトランザクションに従った初期エントリはSSNが欠けていたこと、第4のトランザクションは顧客の電話番号の変更を結果としてもたらしたこと、最終的にはそのブロックチェーン資産についての最後の最新の情報で終わっていることを閲覧でき得る。
特定の実施形態によれば、仮想チェーンインターフェース1405は、パースされた構造化クエリ要素とネイティブブロックチェーンプロトコルコードとの間の全てのマッピングを自動的に取り扱うが、代替的な実施形態において、顧客が、顧客の情報、テーブル名、変数、参加者ID、及びクエリ要素から対応するネイティブブロックチェーンプロトコルコード1435要素へのマッピングを提供してもよい。例えば、顧客提供マッピングを介して、顧客は、マッピングの一部としてエンティティ、テーブル、又はデータベースオブジェクトなどのオブジェクトを定義してもよい。しかしながら、顧客定義オブジェクトはマッピングの一部として存在し、データベース又はブロックチェーン内に存在しないため、それは仮想エンティティと見なされ得る。例えば、管理者が、仮想チェーンインターフェース1405を介してエンティティを定義し、ユーザ及び任意の必要な構成フィールド又はカスタム定義マッピングを定義してもよい。
例えば、顧客は、ホスト組織内のテーブル「X」にデータを記憶することができるが、それは、ブロックチェーンに入るときX+Yにマッピングされ、これは、ユーザ指定されてもよい。したがって、仮想チェーンインターフェースは、SQLタイプのコマンドを顧客提供マッピングに基づいてX+Yと呼ばれるブロックチェーンデータにマッピングする。このようなマッピングは、顧客のためにメタデータとして、例えば、仮想チェーンインターフェースにより読み出される構成ファイル内に記憶されてもよい。
顧客は、ABCと呼ばれるブロックチェーンのデータを有し、次いで、何らかの理由で、データをA1B1C1に変更したい場合がある。顧客は、そのようなマッピングを指定することができ、仮想チェーンインターフェースは、次いで、ブロックチェーンにおける資産追加トランザクションを自動的に生成し、ユーザのためにトランザクションを保留にする。それにより、ユーザは、トランザクションが保留状態であることと、合意が達せられ、トランザクションがブロックチェーンに対してコミットされるように十分なマイニングが生じるまでコミットされないことがわかる。
ひとたびコミットされると、ホスト組織のブロックチェーンサービスインターフェース190がリッスンするブロックチェーンからイベントがトリガされ、その時点で、ホスト組織もまたデータをコミットされたものとしてマークし、データステータスの同期を保つ。
さらに、合意が達せられず、したがってトランザクションが失敗することもあり得る。再度、ホスト組織のブロックチェーンサービスインターフェース190は、トランザクションの失敗を示すイベントをリッスンし、その時点で、ホスト組織は、トランザクションを失敗したものとしてマークし、仮想チェーンインターフェースは、任意の必要なロールバック動作を実行して同期を維持する。
さらに、何らかの他の参加ノードが、資産の古いデータに取って代わる更新情報をブロックチェーンに追加することも実現可能である。データが、取り出されるべきデータを要求する構造化クエリに従って仮想チェーンインターフェースにより読み出されることを含み、任意の参加ノードによりリフレッシュされるとき、どのエンティティが値を更新したかにかかわらず、最新の値が取り出される。データは分散台帳内に記憶されるため、正しい鍵を指定する任意の参加ノードが、そのような実施形態に従ってブロックチェーン資産を更新するトランザクションをサブミットすることができる。
別の実施形態によれば、ホスト組織のブロックチェーンサービスインターフェース190は、指定されたブロックチェーン資産に対する任意のイベント又は変更をリッスンし、そこでイベントがトリガされることになり、したがって、指定された資産への変更に従う通知を要求したユーザは、データを取り出しに行き、変更が行われたかをチェックして判定する必要なく、ホスト組織により通知される。
例えば、仮想チェーンインターフェースにより実行されるトランザクション管理の一部として、資産がブロックチェーン内に作成されるときはいつでも、ブロックチェーンサービスインターフェース190は、ブロックチェーン資産IDをセールスフォースIDと一緒に保持し、それにより、コミット及び非コミットステータスを追跡することができる。したがって、その特定の資産のためのセールスフォースIDを有するブロックチェーン資産IDは、別のエンティティによる任意の変更のために監視することもできる。
特定の実施形態によれば、ブロックチェーン資産内のデータは、ホスト組織の参加ノードを介してホスト組織内で利用可能であり、したがって、最新のコピーは、データがコミットされたと仮定して、分散台帳からホスト組織が常時利用可能である。
一実施形態によれば、ホスト組織で認証するユーザは、仮想チェーンインターフェースがそのユーザのホスト組織識別子をブロックチェーンにより利用される暗号IDに文脈的にマッピングする結果をもたらす。このような方法では、暗号IDが仮想チェーンインターフェース1405により全てのトランザクションに対して供給されるので、ユーザはそれを知り又は提供する必要がない。
図15は、ユーザ、顧客、及びサブスクライバにクラウドベースのオンデマンド機能を提供するために、このような機能を実行するプロセッサ及びメモリによりサポートされるデータベースシステム実装などのクラウドベースのコンピューティング環境において、分散台帳技術のための仮想チェーンモデルを実現する方法1500を示すフロー図を示す。
方法1500は、ハードウェア(例えば、回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば、処理デバイス上で実行される命令)を含み得る処理論理により実行されて、本明細書に記載のシステム及び方法に従って実行、送信、受信、解析、トリガ、プッシュ、推奨、定義、取り出し、パース、持続、公開、ロード、動作、生成、記憶、維持、作成、返信、提示、インターフェース、通信、クエリ、処理、提供、決定、表示、更新、送出などの様々な動作を実行し得る。例えば、図1以下に示されるホストされたコンピューティング環境111、ブロックチェーンサービスインターフェース1150、及びそのデータベースシステム130、並びに本明細書に記載する他のシステム及びコンポーネントは、説明される方法論を実現することができる。以下で列挙されるブロック及び/又は動作のいくつかは、特定の実施形態に従って任意である。提示されるブロックの番号付けは明りょうさのためであり、様々なブロックが発生しなければならない動作の順序を規定することは意図されない。
図15に示す方法1500を参照し、ブロック1505において、処理論理は、ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させ、複数のテナントの各々は、ブロックチェーンでの参加ノードである。
ブロック1510において、処理論理は、ユーザデバイスからログイン要求を受信する。
ブロック1515において、処理論理は、ホスト組織でユーザデバイスを認証する。
ブロック1520において、処理論理は、認証されたユーザデバイスを、認証されたユーザデバイスに対応するブロックチェーンの暗号IDと相関させる。
ブロック1525において、処理論理は、ブロックチェーンに対して実行されるべきユーザデバイスからの構造化クエリを受信し、構造化クエリは、トランザクションコマンドと、トランザクションコマンドが実行されるべきデータオブジェクトを指定する。
ブロック1530において、処理論理は、構造化クエリのトランザクションコマンドをネイティブブロックチェーンプロトコルコードに翻訳し、データオブジェクトをブロックチェーン内に記憶されたブロックチェーン資産IDに翻訳して、ネイティブブロックチェーントランザクションを形成する。
ブロック1535において、処理論理は、ブロックチェーンでネイティブブロックチェーントランザクションを実行する。
方法1500の別の実施形態によれば、構造化クエリを介して指定されるデータオブジェクトは、ホスト組織オブジェクトIDを介して指定され、データオブジェクトをブロックチェーン資産IDに翻訳することは、ホスト組織の仮想チェーンインターフェースにより維持される1:1マッピングに基づいて、ホスト組織オブジェクトIDをブロックチェーン資産IDに翻訳することを含む。
方法1500の別の実施形態によれば、認証されたユーザデバイスを、認証されたユーザデバイスに対応するブロックチェーンの暗号IDと相関させることは、ホスト組織でユーザデバイスを認証するために利用されるuserIDに基づいて、又は認証されたユーザデバイスに文脈的に関連づけられた顧客組織ID(OrgID)に基づいてブロックチェーンの暗号IDを識別することを含み、ユーザデバイスは、OrgIDに関連づけられた顧客組織の認証されたメンバである。
別の実施形態によれば、方法1500はさらに、構造化クエリからの複数のクエリ要素をクエリパーサを介してパースしてクエリ要素を識別することと、パースされたクエリ要素をクエリ論理トランスレータを介してネイティブブロックチェーンプロトコルコードに翻訳してネイティブブロックチェーントランザクションを形成することを含む。
方法1500の別の実施形態によれば、ネイティブブロックチェーントランザクションは、ユーザデバイスから受信された構造化クエリに基づいて暗号ID、ブロックチェーン内に記憶されたブロックチェーン資産ID、及び資産IDのペイロードから追加され又は取り出されるべきデータを指定する。
方法1500の別の実施形態によれば、ブロックチェーンでネイティブブロックチェーントランザクションを実行することは、ブロックチェーンを介して非同期トランザクションを実行することと、ネイティブブロックチェーントランザクションのステータスを追跡して、ネイティブブロックチェーントランザクションが保留中か、コミットされているか、又は失敗しているかを判定する。
別の実施形態によれば、方法1500はさらに、構造化クエリを介して指定されたデータオブジェクトに対応するホスト組織オブジェクトIDと共にブロックチェーン資産IDを双方維持し、ブロックチェーン資産IDに関連づけられたブロックチェーン内の任意のイベントをサブスクライブすることによりブロックチェーン資産IDに基づいてネイティブブロックチェーントランザクションのステータスを追跡することと、ブロックチェーン資産IDに関連づけられたブロックチェーンからイベントを受信することと、ブロックチェーン資産IDをホスト組織オブジェクトIDに相関させることと、イベントをユーザデバイスに通知することであり、イベントは、(i)ネイティブブロックチェーントランザクションが保留中のままである、(ii)ネイティブブロックチェーントランザクションがブロックチェーンに対してコミットされている、又は(iii)ネイティブブロックチェーントランザクションが失敗した、のうち1つを指定する、ことを含む。
別の実施形態によれば、方法1500はさらに、ネイティブブロックチェーントランザクションが失敗したと判定することと、ネイティブブロックチェーントランザクションが失敗したことをユーザデバイスに通知することを含むネイティブブロックチェーントランザクションのロールバック手順を実行することを含む。
方法1500の別の実施形態によれば、ユーザデバイスからの構造化クエリは、先行トランザクションが保留中及び非コミット状態のままであるブロックチェーン資産に対応し、構造化クエリによりアドレス指定されたブロックチェーン資産が保留中及び非コミット状態のままである先行トランザクションを条件とすることをユーザデバイスに対して示す。
方法1500の別の実施形態によれば、構造化クエリは、SELECTコマンドターム、UPDATEコマンドターム、又はINSERTコマンドタームのうちの1つを指定し、構造化クエリのトランザクションコマンドを翻訳することは、SELECTコマンドターム、UPDATEコマンドターム、又はINSERTコマンドタームをブロックチェーンに準拠したネイティブのコマンドタームに翻訳することを含む。
特定の実施形態によれば、命令を記憶させた非一時的コンピュータ読取可能記憶媒体があり、命令が少なくともプロセッサ及びメモリをその中に有するホスト組織のシステムにより実行されたときに、命令はシステムに、以下の動作:ホスト組織の複数のテナントのためにブロックチェーンに対するブロックチェーンインターフェースを動作させることであり、複数のテナントの各々は、ブロックチェーンでの参加ノードである、ことと、ユーザデバイスからログイン要求を受信することと、ホスト組織でユーザデバイスを認証することと、認証されたユーザデバイスを、認証されたユーザデバイスに対応するブロックチェーンの暗号IDと相関させることと、ブロックチェーンに対して実行されるべきユーザデバイスからの構造化クエリを受信することであり、構造化クエリは、トランザクションコマンドと、トランザクションコマンドが実行されるべきデータオブジェクトを指定する、ことと、構造化クエリのトランザクションコマンドをネイティブブロックチェーンプロトコルコードに翻訳し、データオブジェクトをブロックチェーン内に記憶されたブロックチェーン資産IDに翻訳してネイティブブロックトランザクションを形成することと、ブロックチェーンでネイティブブロックチェーントランザクションを実行することと、を実行させる。
別の実施形態によれば、ホスト組織において実行するシステムがあり、当該システムは、命令を記憶するメモリと、命令を実行するプロセッサを含み、プロセッサは、ホスト組織の複数のテナントのためのブロックチェーンに対するブロックチェーンインターフェースであり、複数のテナントの各々は、ブロックチェーンでの参加ノードである、ブロックチェーンインターフェースと、ユーザデバイスからのログイン要求を受信する受信インターフェースと、ホスト組織でユーザデバイスを認証する認証器と、認証されたユーザデバイスを、認証されたユーザデバイスに対応するブロックチェーンの暗号IDと相関させる仮想チェーンインターフェースと、ブロックチェーンに対して実行されるべきユーザデバイスからの構造化クエリを受信する上記受信インターフェースであり、構造化クエリは、トランザクションコマンドと、トランザクションコマンドが実行されるべきデータオブジェクトを指定する、上記受信インターフェースと、構造化クエリのトランザクションコマンドをネイティブチェーンブロックプロトコルコードに翻訳し、データオブジェクトをブロックチェーン内に記憶されたブロックチェーン資産IDに翻訳してネイティブブロックチェーントランザクションを形成するクエリ論理トランスレータと、ブロックチェーンでネイティブブロックチェーントランザクションを実行するブロックチェーンサービスインターフェースと、を実行する。
図16Aは、説明される実施形態による、オンデマンドデータベースサービスが動作し得る環境1698のブロック図を示す。環境1698は、ユーザシステム1612、ネットワーク1614、システム1616、プロセッサシステム1617、アプリケーションプラットフォーム1618、ネットワークインターフェース1620、テナントデータストレージ1622、システムデータストレージ1624、プログラムコード1626、及びプロセス空間1628を含んでもよい。他の実施形態において、環境1698は、列挙されたコンポーネントの全てを有するわけではない場合があり、かつ/あるいは上に列挙されたコンポーネントに代わって又は追加で他のコンポーネントを有してもよい。
環境1698は、オンデマンドデータベースサービスが存在する環境である。ユーザシステム1612は、データベースユーザシステムにアクセスするためにユーザにより使用される任意のマシン又はシステムでもよい。例えば、ユーザシステム1612のいずれかは、ハンドヘルドコンピューティングデバイス、モバイルフォン、ラップトップコンピュータ、ワークステーション、及び/又はコンピューティングデバイスのネットワークでもよい。図16Aに(及び、図16Bでより詳細に)示されるように、ユーザシステム1612は、ネットワーク1614を介してオンデマンドデータベースサービスと相互作用してもよく、それがシステム1616である。
システム1616などのオンデマンドデータベースサービスは、必ずしもデータベースシステムの構築及び/又は維持に関係する必要はない外部ユーザに利用可能であるが、代わりに、ユーザがデータベースシステムを必要とするときに(例えば、ユーザの要求に応じて)それらの使用に利用可能であり得るデータベースシステムである。いくつかのオンデマンドデータベースサービスは、共通データベースイメージのテーブルに記憶された1つ以上のテナントからの情報を記憶してマルチテナントデータベースシステム(multi-tenant database system、MTS)を形成し得る。したがって、「オンデマンドデータベースサービス1616」と「システム1616」は、本明細書において交換可能に用いられる。データベースイメージは、1つ以上のデータベースオブジェクトを含んでもよい。関係データベース管理システム(RDMS)又は同等物が、データベースオブジェクトに対して情報の記憶及び取り出しを実行してもよい。アプリケーションプラットフォーム1618は、ハードウェア及び/又はソフトウェア、例えばオペレーティングシステムなどの、システム1616のアプリケーションを実行可能にするフレームワークでもよい。一実施形態において、オンデマンドデータベースサービス1616は、オンデマンドデータベースサービスのプロバイダにより開発された1つ以上のアプリケーションを作成、管理、及び実行すること、ユーザがユーザシステム1612を介してオンデマンドデータベースサービスにアクセスすること、又はサードパーティアプリケーション開発者がユーザシステム1612を介してオンデマンドデータベースサービスにアクセスすることを可能にするアプリケーションプラットフォーム1618を含んでもよい。
ユーザシステム1612のユーザは、そのそれぞれのキャパシティが異なってもよく、特定のユーザシステム1612のキャパシティは専ら、現在のユーザに対する許可(許可レベル)により決定されてもよい。例えば、販売員が、特定のユーザシステム1612を使用してシステム1616と相互作用している場合、そのユーザシステムは、その販売員に割り振られたキャパシティを有する。しかしながら、管理者が、そのユーザシステムを使用してシステム1616と相互作用している間、そのユーザシステムは、その管理者に割り振られたキャパシティを有する。階層的役割モデルを有するシステムでは、1つの許可レベルのユーザは、より下位の許可レベルのユーザによりアクセス可能なアプリケーション、データ、及びデータベース情報へのアクセスを有し得るが、より上位の許可レベルのユーザによりアクセス可能な特定のアプリケーション、データベース情報、及びデータへのアクセスを有さない場合がある。したがって、異なるユーザは、ユーザのセキュリティ又は許可レベルに依存して、アプリケーション及びデータベース情報へのアクセス及び修正に関して異なる能力を有する。
ネットワーク1614は、互いに通信するデバイスの任意のネットワーク又はネットワークの組み合わせである。例えば、ネットワーク1614は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうち任意の1つ又は任意の組み合わせであり得る。現在使用されているコンピュータネットワークの最も一般的なタイプは、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)ネットワークであるため、大文字「I」を用いて「インターネット(Internet)」としばしば呼ばれるネットワークのグローバルインターネットワークのようなネットワークが、本明細書の多くの例で用いられる。しかしながら、TCP/IPは頻繁に実装されるプロトコルであるが、請求される実施形態が利用し得るネットワークはそのように限定されないことが理解される。
ユーザシステム1612は、TCP/IPを使用してシステム1616と通信し、より上位のネットワークレベルでは、HTTP、FTP、AFS、WAPなどの他の一般的なインターネットプロトコルを通信するのに使用してもよい。HTTPが使用される例では、ユーザシステム1612は、システム1616におけるHTTPサーバとの間でHTTPメッセージを送受信するために、一般に「ブラウザ」と呼ばれるHTTPクライアントを含んでもよい。そのようなHTTPサーバは、システム1616とネットワーク1614との間の単独のネットワークインターフェースとして実装されてもよいが、他の手法が同様に又は代わりに使用されてもよい。いくつかの実装において、システム1616とネットワーク1614との間のインターフェースは、ラウンドロビンHTTPリクエスト分配器などの負荷共有機能を含み、負荷のバランスをとり、入ってくるHTTPリクエストを複数のサーバにわたり均等に分配する。少なくとも、そのサーバにアクセスしているユーザについて、複数のサーバの各々は、MTSのデータへのアクセスを有するが、代わりに、他の代替的な構成が使用されてもよい。
一実施形態において、図16Aに示すシステム1616は、ウェブベースの顧客関係管理(CRM)システムを実現する。例えば、一実施形態において、システム1616は、CRMソフトウェアアプリケーションを実装及び実行し、ユーザシステム1612との間で関連データ、コード、フォーム、ウェブページ、及び他の情報を提供し、関連データ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すように構成されたアプリケーションサーバを含む。マルチテナントシステムでは、複数のテナントのデータが同じ物理データベースオブジェクト内に記憶され得るが、テナントデータは典型的には、当該データが明示的に共有されない限り、1つのテナントのデータが他のテナントのデータと論理的に別個に保持され、それにより、1つのテナントが他のテナントのデータへのアクセスを有さないように配置される。特定の実施形態において、システム1616は、CRMアプリケーション以外の、又は追加のアプリケーションを実現する。例えば、システム1616は、CRMアプリケーションを含む複数のホストされた(標準及びカスタム)アプリケーションへのテナントアクセスを提供してもよい。ユーザ(又はサードパーティ開発者)アプリケーションは、CRMを含んでも含まなくてもよいが、アプリケーションプラットフォーム1618によりサポートされてもよく、アプリケーションプラットフォーム1618は、アプリケーションの作成、1つ以上のデータベースオブジェクトへの記憶、及びシステム1616のプロセス空間内の仮想マシンにおけるアプリケーションの実行を管理する。
システム1616の要素の1つの配置が図16Aに示されており、ネットワークインターフェース1620、アプリケーションプラットフォーム1618、テナントデータ1623のためのテナントデータストレージ1622、システム1616と可能性として複数のテナントがアクセス可能なシステムデータ1625のためのシステムデータストレージ1624、システム1616の様々な機能を実現するプログラムコード1626、及びアプリケーションホスティングサービスの一部としてアプリケーションを実行するなど、MTSシステムプロセス及びテナント特有のプロセスを実行するプロセス空間1628が含まれる。システム1616上で実行され得るさらなるプロセスには、データベースインデクシングプロセスが含まれる。
図16Aに示されるシステムにおけるいくつかの要素は、ここではごく簡単に説明される従来の良く知られた要素を含む。例えば、各ユーザシステム1612は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話、若しくは任意のワイヤレスアクセスプロトコル(WAP)対応デバイス、又はインターネット若しくは他のネットワーク接続に直接又は間接的にインターフェースすることが可能な任意の他のコンピュータデバイスを含んでもよい。ユーザシステム1612は典型的には、HTTPクライアント、例えば、MicrosoftのInternet Explorerブラウザ、Mozilla又はFirefoxブラウザ、Opera、又はスマートフォン、タブレット、PDA、若しくは他の無線デバイスの場合のWAP対応ブラウザなどのブラウジングプログラムを実行し、ユーザシステム1612のユーザ(例えば、マルチテナントデータベースシステムのサブスクライバ)が、ネットワーク1614を介してシステム1616からそれが利用可能な情報、ページ、及びアプリケーションにアクセスし、処理し、閲覧することを可能にする。各ユーザシステム1612はさらに典型的には、システム1616又は他のシステム若しくはサーバにより提供されるページ、フォーム、アプリケーション、及び他の情報と関連してディスプレイ(例えば、モニタ画面、LCDディスプレイ等)にブラウザにより提供されるグラフィカルユーザインターフェース(GUI)と相互作用するための、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つ以上のユーザインターフェースデバイスを含む。例えば、ユーザインターフェースデバイスを使用して、システム1616によりホストされるデータ及びアプリケーションにアクセスし、記憶されたデータに対して検索を実行し、さもなければ、ユーザがユーザに提示され得る様々なGUIページと相互作用することを可能にすることができる。上で論じられたように、実施形態は、ネットワークの特定のグローバルインターネットワークを参照するインターネットでの使用に適している。しかしながら、インターネットの代わりにイントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースのネットワーク、任意のLAN又はWANなどの他のネットワークを使用できることが理解される。
一実施形態によれば、各ユーザシステム1612及びそのコンポーネントの全てが、インテル(登録商標)ペンティアム(登録商標)プロセッサなどの中央処理ユニットを使用して実行されるコンピュータコードを含むブラウザなどのアプリケーションを使用してオペレータ構成可能である。同様に、システム1616(及び、複数が存在する場合のMTSのさらなるインスタンス)及びそれらのコンポーネントの全てが、インテルペンティアム(登録商標)プロセッサなど及び/又は複数のプロセッサユニットを含み得るプロセッサシステム1617などの中央処理ユニットを使用して実行するコンピュータコードを含むアプリケーションを使用してオペレータ構成可能でもよい。
一実施形態によれば、各システム1616は、ウェブページ、フォーム、アプリケーション、データ、及びメディアコンテンツをユーザ(クライアント)システム1612に提供してシステム1616のテナントとしてのユーザシステム1612によるアクセスをサポートするように構成される。したがって、システム1616は、各テナントのデータを、該データが共有されない限り別個に保持するセキュリティメカニズムを提供する。複数のMTSが使用される場合、それらは互いに近接して(例えば、単一の建物又はキャンパス内に位置するサーバファームに)配置されてもよく、あるいは互いから遠隔の場所に分散されてもよい(例えば、1つ以上のサーバがA市に配置され、1つ以上のサーバがB市に配置される)。本明細書で用いられるとき、各MTSは、局所的に又は1つ以上の地理的位置にわたり分散された1つ以上の論理的及び/又は物理的に接続されたサーバを含んでもよい。さらに、用語「サーバ」は、処理ハードウェア及びプロセス空間と、当該分野で良く知られた関連するストレージシステム及びデータベースアプリケーション(例えば、OODBMS又はRDBMS)とを含むコンピュータシステムを含むことが意図される。「サーバシステム」及び「サーバ」はしばしば、本明細書で交換可能に使用されることが理解される。同様に、本明細書に記載のデータベースオブジェクトは、単一のデータベース、分散データベース、分散データベースの集合、冗長のオンライン若しくはオフラインバックアップ又は他の冗長性を有するデータベース等として実現することができ、分散データベース又はストレージネットワーク及び関連する処理インテリジェンスを含んでもよい。
図16Bは、説明される実施形態による、図16Aの要素とそのような要素間の様々な可能な相互接続との実施形態の別のブロック図を示す。図16Bは、環境1699をさらに示す。しかしながら、図16Bでは、一実施形態におけるシステム1616の要素及び様々な相互接続がさらに詳細に示される。より具体的には、図16Bは、ユーザシステム1612が、プロセッサシステム1612A、メモリシステム1612B、入力システム1612C、及び出力システム1612Dを含み得ることを示す。図16Bは、ネットワーク1614及びシステム1616を示す。さらに、図16Bは、システム1616がテナントデータストレージ1622を含み、テナントデータストレージ1622はその中にテナントデータ1623を有することを示し、テナントデータ1623は、例えば、テナントストレージ空間1627、テナントデータ1629、及びアプリケーションメタデータ1631を含む。システムデータストレージ1624は、その中にシステムデータ1625を有するものとして示されている。さらに、アプリケーションサーバ16001〜Nの拡大された詳細の中に示されているのは、ユーザインターフェース(UI)1630、アプリケーションプログラムインターフェース(API)1632、アプリケーションプラットフォーム1618が含むPL/SOQL1634、保存ルーチン1636、アプリケーションセットアップメカニズム1638、プロセス空間1628が含むシステムプロセス空間1602、テナント1〜Nのプロセス空間1604、及びテナント管理プロセス空間1610である。他の実施形態において、環境1699は、上に列挙されたものと同じ要素を有さなくてもよく、かつ/あるいは上に列挙されたものに代わって又は追加で他の要素を有してもよい。
ユーザシステム1612、ネットワーク1614、システム1616、テナントデータストレージ1622、及びシステムデータストレージ1624は、図16Aにおいて上で論じた。図16Bに示すように、システム1616は、HTTPアプリケーションサーバ1600、アプリケーションプラットフォーム1618、テナントデータストレージ1622、及びシステムデータストレージ1624のセットとして実現される(図16Aの)ネットワークインターフェース1620を含んでもよい。さらに、個々のテナントプロセス空間1604及びテナント管理プロセス空間1610を含むシステムプロセス空間1602が示されている。各アプリケーションサーバ1600は、ユーザシステム1612の要求にサービスするために、テナントデータストレージ1622及びその中のテナントデータ1623、並びにシステムデータストレージ1624及びその中のシステムデータ1625に対して構成されてもよい。テナントデータ1623は、個々のテナントストレージエリア(例えば、テナントストレージ空間1627)に分割されてもよく、これは、データの物理的配置及び/又は論理的配置のいずれかでもよい。各テナントストレージ空間1627内で、テナントデータ1629、及びアプリケーションメタデータ1631が、各ユーザに対して同様に割り当てられてもよい。例えば、ユーザの最も最近使用した(most recently used、MRU)アイテムのコピーが、テナントデータ1629に記憶されてもよい。同様に、テナントである組織全体のためのMRUアイテムのコピーが、テナントストレージ空間1627に保管されてもよい。UI730はユーザインターフェースを提供し、API1632は、システム1616常駐プロセスへのアプリケーションプログラマインターフェースを、ユーザシステム1612のユーザ及び/又は開発者に提供する。テナントデータ及びシステムデータは、1つ以上のOracle(登録商標)データベースなどの様々なデータベースに格納されてもよい。
アプリケーションプラットフォーム1618は、アプリケーション開発者によるアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズム1638を含み、これは、例えば、テナント管理プロセス空間1610により管理される1つ以上のテナントプロセス空間1604としてのサブスクライバによる実行のために、保存ルーチン1636によりテナントデータストレージ1622にメタデータとして保存されてもよい。このようなアプリケーションへの呼び出しは、API1632へのプログラミング言語スタイルインターフェース拡張を提供するPL/SOQL1634を使用してコード化されてもよい。アプリケーションへの呼び出しは、1つ以上のシステムプロセスにより検出されてもよく、該システムプロセスは、呼び出しを行うサブスクライバのためのアプリケーションメタデータ1631の取り出しと、仮想マシンにおけるアプリケーションとしてのメタデータの実行を管理する。
各アプリケーションサーバ1600は、異なるネットワーク接続を介して、例えばシステムデータ1625及びテナントデータ1623へのアクセスを有するデータベースシステムに通信上結合されてもよい。例えば、1つのアプリケーションサーバ16001が、ネットワーク1614(例えば、インターネット)を介して結合されてもよく、別のアプリケーションサーバ1600N‐1が、直接ネットワークリンクを介して結合されてもよく、別のアプリケーションサーバ1600Nが、さらに異なるネットワーク接続により結合されてもよい。トランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)は、アプリケーションサーバ1600とデータベースシステムとの間で通信するための典型的なプロトコルである。しかしながら、使用されるネットワーク相互接続に依存してシステムを最適化するために他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
特定の実施形態において、各アプリケーションサーバ1600は、テナントである任意の組織に関連づけられた任意のユーザの要求を取り扱うように構成される。任意の理由で任意の時点にサーバプールからアプリケーションサーバを追加及び除去できることが望ましいため、好ましくは、特定のアプリケーションサーバ1600に対するユーザ及び/又は組織のサーバアフィニティは存在しない。したがって、一実施形態において、ロードバランシング機能(例えば、F5 Big‐IPロードバランサ)を実現するインターフェースシステムは、アプリケーションサーバ1600とユーザシステム1612との間で通信上結合され、アプリケーションサーバ1600への要求を分配する。一実施形態において、ロードバランサは、最小接続アルゴリズムを使用して、ユーザ要求をアプリケーションサーバ1600にルーティングする。ラウンドロビン及び観測応答時間などのロードバランシングアルゴリズムの他の例がさらに使用されてもよい。例えば、特定の実施形態において、同じユーザからの3つの連続した要求が3つの異なるアプリケーションサーバ1600に当たることがあり、異なるユーザからの3つの要求が同じアプリケーションサーバ1600に当たることがある。このようにして、システム1616はマルチテナントであり、システム1616は、異なるユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶及びそれらへのアクセスを取り扱う。
ストレージの一例として、1つのテナントが、各販売員がシステム1616を使用してその販売プロセスを管理する販売陣(sales force)を採用する会社であり得る。ゆえに、ユーザは、全てがそのユーザの個人的販売プロセスに適用可能なコンタクトデータ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、目標及び進捗データ等を(例えば、テナントデータストレージ1622に)維持することができる。MTS構成の一例において、アクセス、閲覧、修正、報告、送信、計算等すべきデータ及びアプリケーションの全てが、ネットワークアクセス以上のものを有さないユーザシステムにより維持及びアクセスできるため、ユーザは、多くの異なるユーザシステムのいずれかから販売努力及びサイクルを管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーでインターネットアクセスを有する場合、販売員は、顧客がロビーに到着するのを待つ間、その顧客に関する重要なアップデートを得ることができる。
各ユーザのデータは、各ユーザの雇用者にかかわらず他のユーザのデータとは別個であり得るが、いくつかのデータは、テナントである所与の組織に対する複数のユーザ又は全ユーザにより共有され又はアクセス可能な組織全体のデータでもよい。ゆえに、システム1616により管理される、テナントレベルで割り振られるいくつかのデータ構造があり、一方、他のデータ構造はユーザレベルで管理され得る。MTSは、あり得る競合者を含む複数のテナントをサポートする可能性があるため、MTSは、データ、アプリケーション、及びアプリケーション使用を別個に保つセキュリティプロトコルを有してもよい。さらに、多くのテナントが、独自のシステムを維持するのでなくMTSへのアクセスを選択する可能性があるため、冗長性、アップタイム、及びバックアップは、MTSで実装され得るさらなる機能である。ユーザ特有のデータ及びテナント特有のデータに追加で、システム1616は、複数のテナントにより使用可能なシステムレベルのデータ又は他のデータをさらに維持してもよい。このようなシステムレベルのデータには、テナント間で共有可能な産業レポート、ニュース、投稿などを含んでもよい。
特定の実施形態において、ユーザシステム1612(クライアントシステムでもよい)は、アプリケーションサーバ1600と通信してシステム1616からのシステムレベル及びテナントレベルのデータを要求及び更新し、これは、テナントデータストレージ1622及び/又はシステムデータストレージ1624への1つ以上のクエリの送信を必要としてもよい。システム1616(例えば、システム1616内のアプリケーションサーバ1600)は、所望の情報にアクセスするように設計された1つ以上のSQL文(例えば、1つ以上のSQLクエリ)を自動的に生成する。システムデータストレージ1624は、データベースから要求されたデータにアクセスするためのクエリプランを生成してもよい。
各データベースは、一般に、予め定義されたカテゴリに適合されたデータを含む論理テーブルのセットなどのオブジェクトの集合として見ることができる。「テーブル」は、データオブジェクトの1つの表現であり、本明細書では、説明されるオブジェクト及びカスタムオブジェクトの概念的な説明を簡略化するために使用されることがある。「テーブル」及び「オブジェクト」は、本明細書では交換可能に用いられ得ることが理解される。各テーブルは通常、閲覧可能スキーマ内に列又はフィールドとして論理的に配置された1つ以上のデータカテゴリを含む。テーブルの各行又はレコードは、フィールドにより定義された各カテゴリのデータのインスタンスを含む。例えば、CRMデータベースは、名前、住所、電話番号、ファックス番号などの基本コンタクト情報のためのフィールドを有する顧客を記述するテーブルを含み得る。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報のフィールドを含む購入注文を記述してもよい。いくつかのマルチテナントデータベースシステムにおいて、全てのテナントによる使用のために標準エンティティテーブルが提供されてもよい。CRMデータベースアプリケーションでは、このような標準エンティティには、各々が予め定義されたフィールドを含むアカウント、コンタクト、リード、及び機会データのテーブルを含んでもよい。ワード「エンティティ」は、本明細書において「オブジェクト」及び「テーブル」と交換可能に用いられ得ることが理解される。
いくつかのマルチテナントデータベースシステムにおいて、テナントは、カスタムオブジェクトを作成及び記憶することを可能にされてもよく、あるいは、例えば、カスタムインデックスフィールドを含む標準オブジェクトに対するカスタムフィールドを作成することにより、標準エンティティ又はオブジェクトをカスタマイズすることを可能にされてもよい。特定の実施形態において、例えば、全てのカスタムエンティティデータ行は、組織ごとの複数の論理テーブルを含み得る単一のマルチテナント物理テーブルに記憶される。それらの複数の「テーブル」が実際には1つの大きいテーブルに記憶されていること、又はそれらのデータが他の顧客のデータと同じテーブルに記憶され得ることは、顧客に対して透過的である。
図17は、一実施形態による、コンピュータシステムの例示的な形態のマシン1700の概略表現を示し、その中で、マシン/コンピュータシステム1700に本明細書で論じられる方法のうちのいずれか1つ以上を実行させる命令セットが実行され得る。代替的な実施形態において、マシンは、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、又はパブリックインターネット内の他のマシンに接続され(例えば、ネットワーク化され)てもよい。マシンは、クライアント‐サーバネットワーク環境のサーバ又はクライアントマシンのキャパシティで、ピアツーピア(又は分散)ネットワーク環境のピアマシンとして、オンデマンドサービス環境内のサーバ又は一連のサーバとして動作してもよい。マシンの特定の実施形態は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、セルラー電話、ウェブ電化製品、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、コンピューティングシステム、又はそのマシンが取るべきアクションを指定する(順次又はその他の)命令のセットを実行することができる任意のマシンの形態でもよい。さらに、単一のマシンのみが示されているが、用語「マシン」はさらに、本明細書で論じられる方法のいずれか1つ以上を実行するための命令のセット(又は、複数のセット)を個々又は連帯的に実行するマシン(例えば、コンピュータ)の任意の集合を含むとみなされるものとする。
例示的なコンピュータシステム1700は、プロセッサ1702、メインメモリ1704(例えば、読取専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えば同期DRAM(SDRAM)又はランバスDRAM(RDRAM)等、スタティックメモリ、例えばフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、揮発性だが高データレートのRAM等)、及びセカンダリメモリ1718(例えば、ハードディスクドライブ及び永続的データベース及び/又はマルチテナントデータベース実装を含む永続的記憶デバイス)を含み、これらは、バス1730を介して互いに通信する。メインメモリ1704は、ホスト組織のテナント及びユーザをパブリック又はプライベートの利用可能なサポートされたブロックチェーンとインターフェースするためのブロックチェーンサービスインターフェース1724を含む。メインメモリ1704は、ブロックチェーン合意マネージャ1723及びブロックバリデータ1725をさらに含む。メインメモリ1704及びそのサブ要素は、本明細書で論じられる方法を実行するために、処理論理1726及びプロセッサ1702と関連して動作可能である。
プロセッサ1702は、マイクロプロセッサ、中央処理ユニット等の1つ以上の汎用処理デバイスを表す。より詳細には、プロセッサ1702は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、他の命令セットを実現するプロセッサ、又は命令セットの組み合わせを実現するプロセッサでもよい。プロセッサ1702はさらに、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つ以上の専用処理デバイスでもよい。プロセッサ1702は、本明細書で論じられる動作及び機能を実行する処理論理1726を実行するように構成される。
コンピュータシステム1700は、ネットワークインターフェースカード1708をさらに含んでもよい。コンピュータシステム1700は、ユーザインターフェース1710(ビデオディスプレイユニット、液晶ディスプレイなど)、英数字入力装置1712(例えば、キーボード)、カーソル制御装置1714(例えば、マウス)、及び信号生成装置1716(例えば、統合型スピーカ)をさらに含んでもよい。コンピュータシステム1700は、周辺装置1736(例えば、無線又は有線通信装置、メモリ装置、記憶装置、オーディオ処理装置、ビデオ処理装置等)をさらに含んでもよい。
セカンダリメモリ1718は、本明細書に記載される方法又は機能のいずれか1つ以上を具現化する命令の1つ以上のセット(例えば、ソフトウェア1722)が記憶される非一時的マシン読取可能記憶媒体又は非一時的コンピュータ読取可能記憶媒体又は非一時的マシンアクセス可能記憶媒体1731を含んでもよい。ソフトウェア1722はさらに、コンピュータシステム1700によるその実行の間、メインメモリ1704内及び/又はプロセッサ1702内に完全に又は少なくとも部分的に存在することがあり、メインメモリ1704及びプロセッサ1702もまた、マシン読取可能記憶媒体を構成する。ソフトウェア1722はさらに、ネットワークインターフェースカード1708を介してネットワーク1720を通じて送信又は受信されてもよい。
請求項の何れも、正確なワード「means for」の後に分詞が続かない限り、35 U.S.C.§115の段落6を援用することを意図していない。本明細書に開示された対象事項は、例として特定の実施形態に関して説明されたが、請求される実施形態は、開示の明示的に列挙された実施形態に限定されないことが理解されるべきである。反対に、本開示は、当業者に明らかなように、様々な修正及び同様の構成をカバーすることを意図している。したがって、別記の特許請求の範囲は、全てのそのような修正及び同様の構成を包含するように、最も広い解釈を与えられるべきである。上記の説明は、例示的であり限定的ではないことを意図していることを理解されたい。多くの他の実施形態が、上記の説明を読んで理解した当業者に明らかとなろう。したがって、開示された対象事項の範囲は、別記の特許請求の範囲を参照して、そのような請求項が権利を与えられる同等物の全範囲と共に決定されるべきである。