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

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

▶ セールスフォース ドット コム インコーポレイティッドの特許一覧

特許7434557ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法
<>
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図1
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図2
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図3
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図4
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図5
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図6
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図7
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図8
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図9
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図10
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図11A
  • 特許-ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法 図11B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-09
(45)【発行日】2024-02-20
(54)【発明の名称】ブロックチェーン並びに収集された資産及びデバイス情報を用いて資産を立証するシステム又は方法
(51)【国際特許分類】
   G06Q 30/00 20230101AFI20240213BHJP
【FI】
G06Q30/00
【請求項の数】 16
(21)【出願番号】P 2022535053
(86)(22)【出願日】2020-12-10
(65)【公表番号】
(43)【公表日】2023-02-16
(86)【国際出願番号】 IB2020061718
(87)【国際公開番号】W WO2021116950
(87)【国際公開日】2021-06-17
【審査請求日】2022-06-09
(31)【優先権主張番号】16/714,623
(32)【優先日】2019-12-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】パドマナブハン,プリスビ クリシュナン
【審査官】円子 英紀
(56)【参考文献】
【文献】特表2019-511758(JP,A)
【文献】国際公開第2019/177764(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
1つ以上のコンピューティングデバイスのセットにより実施される資産立証の方法であって、前記資産立証は資産に関連づけられた識別情報を利用し、当該方法は、
前記1つ以上のコンピューティングデバイスのセットのうちの第1のコンピューティングデバイスを使用するユーザから資産に関する第1の資産情報を収集するステップと、
前記第1のコンピューティングデバイスから第2の資産情報を収集するステップと、
前記ユーザから発生元識別情報を収集するステップであり、前記発生元識別情報は前記資産の所有者を識別する、ステップと、
前記第1の資産情報前記第2の資産情報と前記発生元識別情報との組み合わせからマークルトライツリーを生成するステップであり、前記マークルトライツリーのフォーマットは、前記第1の資産情報と前記第2の資産情報と前記発生元識別情報とのうちの2つ以上を使用して部分的ハッシュが生成されることを可能にし、前記生成された部分的ハッシュは、前記資産の識別子との部分的マッチを可能にする、ステップと、
前記マークルトライツリーをブロックチェーンに追加するステップと、
を含む方法。
【請求項2】
前記第1のコンピューティングデバイスは、資産立証システム内の信頼されたデバイスである、請求項1に記載の方法。
【請求項3】
前記ユーザからの前記第1の資産情報は、時間、製品在庫管理単位、シリアル番号、又は資産記述を含む、請求項1に記載の方法。
【請求項4】
前記第2の資産情報は、コンピューティングデバイス識別子、時間、日付、温度、又は画像化情報を含む、請求項1に記載の方法。
【請求項5】
資産立証プロセスを実行するように構成された装置であって、
コンピュータ実行可能命令を記憶したそれぞれの非一時的コンピュータ読取可能媒体を有する1つ以上のコンピューティングデバイスのセット
を含み、前記コンピュータ実行可能命令は、前記1つ以上のコンピューティングデバイスのセットにより実行されたときに、当該装置に、
前記1つ以上のコンピューティングデバイスのセットのうちの第1のコンピューティングデバイスを使用するユーザから資産に関する第1の資産情報を収集し、
前記第1のコンピューティングデバイスから第2の資産情報を収集し、
前記ユーザから発生元識別情報を収集し、前記発生元識別情報は前記資産の所有者を識別し、
前記第1の資産情報前記第2の資産情報と前記発生元識別情報との組み合わせからマークルトライツリーを生成し、前記マークルトライツリーのフォーマットは、前記第1の資産情報と前記第2の資産情報と前記発生元識別情報とのうちの2つ以上を使用して部分的ハッシュが生成されることを可能にし、前記生成された部分的ハッシュは、前記資産の識別子との部分的マッチを可能にし、
前記マークルトライツリーをブロックチェーンに追加す
ことをさせる、装置
【請求項6】
前記第1のコンピューティングデバイスは、資産立証システム内の信頼されたデバイスである、請求項に記載の装置
【請求項7】
前記ユーザからの前記第1の資産情報は、時間、製品在庫管理単位、シリアル番号、又は資産記述を含む、請求項に記載の装置
【請求項8】
前記第2の資産情報は、コンピューティングデバイス識別子、時間、日付、温度、又は画像化情報を含む、請求項に記載の装置
【請求項9】
1つ以上のコンピューティングデバイスのセットにより実施される資産立証の方法であって、前記資産立証は資産の識別情報を利用し、当該方法は、
前記1つ以上のコンピューティングデバイスのセットのうちの第1のコンピューティングデバイスを使用する第1のユーザからの資産に関する第1の資産情報の第1のバージョン
前記第1のコンピューティングデバイスから第2の資産情報の第1のバージョン、及び
前記第1のユーザからの譲渡人識別情報の第1のバージョンであり、前記資産の譲渡における譲渡人を識別する、譲渡人識別情報の第1のバージョン
のうちの2つ以上を収集するステップと、
1のハッシュセットを生成するステップであり、前記第1のハッシュセットは、前記第1の資産情報の第1のバージョンのハッシュ、前記第2の資産情報の第1のバージョンのハッシュ、又は前記譲渡人識別情報の第1のバージョンのハッシュのうちの2つ以上を含む、ステップと、
前記第1のハッシュセットを、ブロックチェーンに記憶されたマークルトライツリー内の第2のハッシュセットと比較するステップであり、前記資産を伴う前のトランザクションの間、前記マークルトライツリーは生成され、前記ブロックチェーンに追加されており、前記マークルトライツリーは、前記1つ以上のコンピューティングデバイスのセットのうちの第2のコンピューティングデバイスを使用して収集された前記資産に関する第1の資産情報の第2のバージョンと、前記第2のコンピューティングデバイスから収集された第2の資産情報の第2のバージョンと、第2のユーザから収集された譲渡人識別情報の第2のバージョンとの組み合わせから生成されている、ステップと、
少なくとも前記第1のハッシュセットが前記第2のハッシュセットと部分的にマッチすることに応答して前記資産を立証するステップと、
を含む方法。
【請求項10】
設置者又は製造者又は前の資産保持者にさらなる立証情報について問い合わせるステップ、
をさらに含む請求項に記載の方法。
【請求項11】
前記資産の前記立証に応答してトランザクション情報を前記ブロックチェーンに記憶するステップ、
をさらに含む請求項に記載の方法。
【請求項12】
前記第2の資産情報の第1及び第2のバージョンは、コンピューティングデバイス識別子、時間、日付、温度、又は画像化情報を含む、請求項に記載の方法。
【請求項13】
資産立証プロセスを実行するように構成された装置であって、
コンピュータ実行可能命令を記憶したそれぞれの非一時的コンピュータ読取可能媒体を有する1つ以上のコンピューティングデバイスのセット
を含み、前記コンピュータ実行可能命令は、前記1つ以上のコンピューティングデバイスのセットにより実行されたときに、当該装置に、
前記1つ以上のコンピューティングデバイスのセットのうちの第1のコンピューティングデバイスを使用する第1のユーザからの資産に関する第1の資産情報の第1のバージョン
前記第1のコンピューティングデバイスから第2の資産情報の第1のバージョン、及び
前記第1のユーザからの譲渡人識別情報の第1のバージョンであり、前記資産の譲渡における譲渡人を識別する、譲渡人識別情報の第1のバージョン
のうちの2つ以上を収集し、
1のハッシュセットを生成し、前記第1のハッシュセットは、前記第1の資産情報の第1のバージョンのハッシュ、前記第2の資産情報の第1のバージョンのハッシュ、又は前記譲渡人識別情報の第1のバージョンのハッシュのうちの2つ以上を含み、
前記第1のハッシュセットを、ブロックチェーンに記憶されたマークルトライツリー内の第2のハッシュセットと比較し、前記資産を伴う前のトランザクションの間、前記マークルトライツリーは生成され、前記ブロックチェーンに追加されており、前記マークルトライツリーは、前記1つ以上のコンピューティングデバイスのセットのうちの第2のコンピューティングデバイスを使用して収集された前記資産に関する第1の資産情報の第2のバージョンと、前記第2のコンピューティングデバイスから収集された第2の資産情報の第2のバージョンと、第2のユーザから収集された譲渡人識別情報の第2のバージョンとの組み合わせから生成されており、
少なくとも前記第1のハッシュセットが前記第2のハッシュセットと部分的にマッチすることに応答して資産を立証す
ことをさせる、装置
【請求項14】
当該装置は、さらに、設置者又は製造者又は前の資産保持者にさらなる立証情報について問い合わせるようにさせられる、請求項1に記載の装置
【請求項15】
当該装置は、さらに、前記資産の前記立証に応答してトランザクション情報を前記ブロックチェーンに記憶するようにさせられる、請求項1に記載の装置
【請求項16】
前記第2の資産情報の第1及び第2のバージョンは、コンピューティングデバイス識別子、時間、日付、温度、又は画像化情報を含む、請求項1に記載の装置
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、2019年12月13日に出願された米国特許出願第16/714,623号の利益を主張し、該出願はここで参照により組み込まれる。
【0002】
[技術分野]
1つ以上の実装が、分散台帳及びブロックチェーンプラットフォームの分野に関し、より具体的には、実施形態は、関連情報をブロックチェーンに記憶して資産立証及び検証を実施するシステム、方法、及び装置に関する。
【背景技術】
【0003】
ブロックチェーンは、暗号法を用いてリンク及び安全化されるレコード/ブロックの継続的に拡張されるリストである。詳細には、ブロックチェーン内のあらゆるブロックは、直前のブロックの暗号ハッシュ、現在のブロックのタイムスタンプ、及びトランザクションデータ(例えば、ブロックチェーンネットワーク内のピアに関連づけられた情報の追加/修正)を含むことができる。さらに、ブロックチェーンは、チェーンに追加される新しいブロックを立証/検証するシステムを介してピアツーピアネットワークを通じて共有及び管理することができ、それにより、ブロックチェーン内のブロックは、全ての後続ブロックの改変なしに改変することはできず、これは、ネットワークの合意を必要とする。このアーキテクチャは、暗号法の使用を通じてブロック内に記憶された情報のセキュリティ、ピアツーピアネットワークの使用を通じた情報の共有/分散、ブロック追加の合意の使用を通じた信頼性、並びに暗号法の使用、ブロックのチェーン化/リンク、及びピア分散を通じてブロック内に記憶された情報の不変性(immutability)を可能にする(例えば、ブロックチェーンネットワークの各ピアは、ネットワーク内の全ての立証/検証されたトランザクションの台帳を維持することができる)。ブロックチェーンは、金融データを含む多くの異なるタイプのデータを記憶するために利用することができる。このような金融データは、分散された台帳として機能するブロックチェーンに記憶することができる。
【0004】
ブロックチェーン内の分散された台帳は、そのブロックチェーンの参加者全てにより共有される。分散台帳技術(Distributed Ledger Technology、DLT)は、従来の金融システムの欠点の種類の多くに対処及び克服するのに役立つが、この技術は、それにもかかわらず、このようなDLT及び関連するブロックチェーンプラットフォームを利用する者にさらなる利益をもたらすように拡張することができる。
【0005】
偽造とは、当該商品の知的財産権所有者(例えば、商標権者、特許権者、又は著作権者)の認可なしでの、小売り(例えば、衣料品、電子製品、及び他の消費財)及びデジタル(例えば、ソフトウェア、デジタルメディア、及び同様のデジタルコンテンツ)を含む商品の生産である。偽造は、世界中で毎年、権利保持者に数十億ドルを失わせている。特定の市場における、及び特定のタイプの商品に対する偽造に対抗する手段は、効果がない。
【図面の簡単な説明】
【0006】
以下の図は、同様の要素を参照するために同様の参照番号を使用している。以下の図は様々な例示的な実装を示すが、代替的な実装は別記の特許請求の範囲の主旨及び範囲内にある。
図1】いくつかの例示的な実装による、立証管理を含む一例示的なサプライチェーンの図である。
図2】いくつかの例示的な実装による、立証管理システムの一部として設置者又は製造者により実施される一例示的なプロセスのフローチャートである。
図3】いくつかの例示的な実装による、立証管理システムの一部として立証者により実施される一例示的なプロセスのフローチャートである。
図4】いくつかの例示的な実装による、一例示的なアーキテクチャの図である。
図5】いくつかの例示的な実装による、別の例示的なアーキテクチャの図である。
図6】いくつかの説明される実施形態による、スマートフローコントラクトエンジンを利用して作成されるブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャの図である。
図7】いくつかの例示的な実装による、一例示的なインターフェース及びデバイスの図である。
図8】説明される実施形態による、オンデマンドデータベースサービスが動作し得る一環境のブロック図である。
図9】説明される実施形態による、オンデマンドデータベースサービスが動作し得る一環境の別のブロック図である。
図10】いくつかの実施形態による、コンピュータシステムの例示的な形態のマシンの図である。
図11A】一例示的な実装アーキテクチャである。
図11B】一例示的な実装アーキテクチャである。
【発明を実施するための形態】
【0007】
以下の説明は、偽造に対抗するための立証(verification)プロセス、システム、及び装置のための方法及び装置について説明する。立証システムは、製造又は設置の時点で製品に関する情報を収集し、そのデータをブロックチェーンに記憶する。製品は、サプライチェーンの他のポイントで、又は次の販売において、最初に収集された情報のサブセットを収集し、その情報がブロックチェーンに記憶された情報と相関することを立証する信頼されたデバイスにより、立証することができる。
【0008】
立証システムの実施形態は、信頼されたデバイス、立証アプリケーション、及びブロックチェーンストレージのセットを含む。「セット」は、本明細書で用いられるとき、1つのアイテムを含む任意の整数個のアイテムを指す。各資産に記憶される情報には、ブロックチェーン、ブロックチェーンネットワーク、及び立証システム情報の組み合わせと共に、資産のアイデンティティ(identity)を生成するときに使用されたファクタが含まれる。立証アプリケーションは、資産の起点において、例えば、売り手、開発者、製造者、又は部品設置者(part installer)などにおいて、信頼されたデバイスにより実行される。資産が消費者に売却され又は譲渡される(transferred)とき、例えば、自動車部品が設置されるとき、信頼されたデバイス上の立証アプリケーションは、信頼されたデバイスの識別子、光の彩度、深度、色相などの画像化情報、日付、時間、温度、部品又は資産識別子、製品在庫管理単位(stock keeping unit、SKU)、及び同様の情報を含むことができる情報のセットに基づいて、一意識別子(unique identifier)を生成することができる。この資産の一意識別子は、次いで、一意識別子が生成された際の情報と共に、その消費者(顧客)のためのブロックチェーン内のブロックのセットに記憶される。このブロックチェーンに記憶される情報は、ハッシュ及び暗号化することができる。立証システム及び特定の参加者に対して登録されている信頼されたデバイスのみが、このブロックチェーンの追加を実行することができる。いくつかの実装において、認可されていないデバイス及び参加者がブロックチェーンにトランザクションを追加しようとした場合、ブロックチェーンにおけるスマートコントラクトがトランザクションを拒絶する。換言すれば、立証システムは、立証アプリケーションを有する認可されていないデバイス又は認可されていないユーザがこの情報を生成することを許容しない。認可された信頼されたデバイスのみが、ブロックチェーンに資産情報を追加することができる。いくつかの実装において、資産関連データは、ブロックチェーン内のマークルトライツリー(merkle trie tree)において構造化され、それにより、資産関連データは、消費者id(ハッシュ)+位置(ハッシュ)+部品_sku(ハッシュ)などのフォーマットに従い、次いで、他のパラメータが、このデータ下のマークルトライツリーに記憶される。これにおいて、より低い階層のデータは、資産の一意識別子を生成するために使用された入力データである。
【0009】
いくつかの実装において、立証アプリケーション及び信頼されたデバイスは、資産の画像を撮影し、ブロックチェーンにおいて(例えば、マークルトライツリーの一部として)そのピクチャの一意ハッシュをアップロードし、画像を分散ストアに投稿する。
【0010】
立証アプリケーションは、さらに、資産のさらなる販売又は譲渡があるとき、信頼されたデバイスで利用される。再販売又は譲渡に利用される立証アプリケーションは、起点において利用される立証アプリケーションと同じ又は類似とすることができる。しかしながら、立証アプリケーションは、再販売又は譲渡では別様に機能する。資産の再販売又は譲渡のための立証アプリケーションは、譲渡人及び譲受人から一部の情報を収集する。立証アプリケーションは、資産に関する(例えば、画像化による)情報をさらに収集することができる。立証アプリケーションにより収集された情報に基づいて、立証アプリケーションは、SKU情報及び位置情報と共にマークルトライツリーを検索することができる。収集された情報についてブロックチェーン内にマッチ(match)が見つかった場合、立証者(verifier)は、ブロックチェーンに資産を追加した参加者に関する情報を含む、資産に関する保護又は暗号化された情報にアクセスすることができる。立証アプリケーションは、さらに、比較のために表示されるように設置又は発生(origination)の画像にアクセスすることを要求することができる。いくつかの実装において、立証プロセスの間、譲渡人と譲受人は、プライバシーを提供するために、共有又は記憶されない。資産の譲渡に関連する日付及び時間情報は、温度及び同様のファクタが記録されたものと同じであったかを立証するために使用することができる。立証アプリケーションは、マークルトライツリー内の情報の深さを調べ、収集された情報を、一意識別子が生成されたときにマークルトライツリーに記録された同様の情報の深さと相関させることにより、資産の立証の基礎をなすことができる。立証アプリケーションは、ブロックチェーン内の他のパラメータを使用して、一意識別子を(例えば、ハッシュアルゴリズムを使用して)再生成することができる。再生成された一意識別子が真の元の一意識別子とマッチする場合、資産は立証される。一意識別子がマッチしない場合、いくつかの実装において、現在の譲渡に関連する情報を立証するために、最後の譲受人又は発生元(originator)として示される参加者に通知を送ることができる。
【0011】
立証システムは、許可ありの(permissioned)システムであり、これにおいて、デバイスは、関連するブロックチェーンに記憶された情報にアクセスし、その中の情報に追加又は修正することができるためには、立証システムに登録されなければならない。デバイスは、デバイスが立証システムにアクセスし、相互作用することを承認されていることを立証するために、任意のプロセスを使用して立証システムに登録することができる。信頼されたデバイスは、信頼されたデバイスの改ざん及びなりすましを防止するために、ハードウェア又はソフトウェア保護を含むことができる。さらに、ユーザ及び立証アプリケーションも、信頼されたデバイスを利用し又は立証システムと相互作用する許可を与えられる前に、立証又は認証することができる。ユーザ及び立証アプリケーションの立証又は認証のための任意のプロセスを利用することができる。
【0012】
本明細書において以下で図面を参照して、実施形態をさらに詳細に説明する。
【0013】
図1は、立証システムの一例示的な実装の図である。この例では、立証システムを利用して、資産の例示的なセットの真正性を追跡及び立証する。この例では、自動車部品が追跡され、詳細には、タイヤである資産105である。この例における資産105の起源は、タイヤ製造者でもよい。起源の場所において、起源の場所が立証システムに参加している場合、信頼されたデバイス101Aが、立証アプリケーション103Aを実行することができる。立証アプリケーション103Aは、画像化又は同様のセンサ入力により、及び認証されたユーザ(すなわち、アカウントを有し、パスワード又は同様の認証方法などのクレデンシャルを立証したユーザ)から収集された情報を介して、資産105に関する情報を収集することができる。いくつかの実装において、収集される情報は、ネットワークを通じてアクセス可能なサービスから取得することができ、例えば、天候サービス又は時間ソースから、天候、時間、及び日付情報が取得される。立証アプリケーション103Aは、立証システムの一部であるブロックチェーンシステム107において、立証システムのブロックチェーン109内のエントリを作成する。ブロックのセットを資産のために追加することができ、立証アプリケーション103Aにより収集された情報が含まれる。立証アプリケーション103Aは、資産105のためにブロックチェーン109に暗号化及び記憶される一意識別子を生成することができる。他の収集されたデータは、暗号化形式又は非暗号化形式のいずれかで記憶することができ、例えば、マークルトライツリーの形式で、一意識別子に関連づけることができる。資産の画像化、又は相当の空間を占める同様の情報などのいくつかの収集されたデータは、分散ストレージシステム111に記憶することができる。分散ストレージシステム111は、ネットワーク通信を介して立証システムを介してアクセス可能な任意の数のストレージ位置を含むことができる。分散ストレージシステム111に記憶されているデータは、一意識別子を生成するように処理することができ、この一意識別子は、次に、データの取り出しを可能にするためにストレージ位置に関連づけることができる。
【0014】
資産105がブロックチェーン109に追加された後、資産105のその後の譲渡を立証することができる。この例では、タイヤが車の製造者に売却され、車に設置される。車の製造者は、信頼されたデバイス101B及び立証アプリケーション103Bを介して、タイヤが真正であることを立証することができる。立証アプリケーション103Bの認証されたユーザは、ブロックチェーン109に記憶された情報と比較される、資産105に関する情報を収集し、一意識別子が、比較のために再生成される。資産105が立証された場合、トランザクションがブロックチェーン109に追加され、資産105に関連するトランザクションの間に収集された情報が含まれる。この情報は、次いで、資産105のその後の譲渡において、例えば、タイヤを有する車が顧客に売却される場合に、信頼されたデバイス101C及び立証アプリケーション103Cが資産105を立証しようとする譲渡2において、比較に使用することができる。
【0015】
図2は、いくつかの例示的な実装による、立証管理システムの一部として設置者、製造者、又は発生元により実施される一例示的なプロセスのフローチャートである。このプロセスは、資産の起点において立証アプリケーションにより実行される。このプロセスは、立証アプリケーションを介して、認証されたユーザにより開始される。認証されたユーザは、資産に関する情報を立証アプリケーションに入力する。入力情報には、資産に関連する記述、識別子(例えば、シリアル又は部品番号、及び/又はSKU)、画像化、発生元情報、位置及び同様の情報を含むことができる(ブロック201)。発生元情報には、個人又は企業の行政識別子、クレジットカード情報、銀行情報、及び同様の情報を含むことができる。画像化などの、いくつかのタイプの収集された情報は、立証アプリケーションによりさらなる詳細について分析することができる。例えば、照明、色相、勾配、及び同様の画像化情報を分析し、収集することができる。
【0016】
立証アプリケーションにより、信頼されたデバイスから、又は外部ソースから、さらなる情報を収集することができる(ブロック203)。デバイスから収集された情報は、デバイス識別情報(例えば、macアドレス又は同様の識別子)を含んでもよい。日付、時刻、及び同様の情報をデバイスから収集してもよい。全地球測位(Global positioning)情報をデバイスから収集してもよい。デバイスの位置に関して、温度、湿度、及び同様のデータなどの天候情報をデバイスから、オンラインソースから収集してもよい。資産及び資産の発生に関連して、任意の数及び組み合わせのデータ点を収集することができる。いくつかの実装において、収集された情報には、無線周波数識別子(RFID)、近距離通信(NFC)識別情報、スプレーマークなどの赤外線(IR)マーク、及び添付され、埋め込まれ、又は同様に資産の一部であり得る同様の識別情報を含むことができる。これらのさらなる識別子は、SKU、シリアル番号、及び部品番号を含む他の識別情報の代わりに、又は該他の情報と組み合わせて利用することができる。
【0017】
収集された情報又はその任意のサブセットを使用して、例えば、収集されたデータのサブセットに対してハッシュアルゴリズムを使用して、一意識別子を生成することができる(ブロック205)。一実装において、一意識別子は、消費者ID(ハッシュ)+位置(ハッシュ)+部品_sku(ハッシュ)とすることができる。次いで、一意識別子及び収集された情報の任意のサブセットは、立証アプリケーションにより、立証システムのためのブロックチェーンに追加することができる(ブロック207)。一意識別子は、暗号化され、ブロックチェーンに記憶され得る。さらなる情報、特に、一意識別子を生成するために使用された情報は、暗号化されてか又は平文で、一意識別子と共にブロックチェーン内に記憶され得る。さらなる情報は、マークルトライツリーの形式で記憶することができる。マークルトライツリーのフォーマットにより、一意識別子との部分的マッチを可能にすることができるマークルトライツリーのより低いレベルに記憶された情報を使用して部分的ハッシュを生成することができる。
【0018】
ブロックチェーンに容易に記憶することができないさらなる情報は、分散ストレージ位置に記憶することができる(ブロック209)。任意のタイプの分散ストレージシステムを利用して、資産の画像、又は相当の空間を占める同様のデータなどのさらなる情報を記憶することができる。3次元スキャン、ビデオ、コンピュータ支援設計(CAD)図面又は概略図、及び同様の情報がこの方法で記憶されてもよい。リンク又は同様の位置情報をブロックチェーンに記憶して、分散ストレージシステムに記憶されたデータの位置を特定することができる。いくつかの実装において、分散ストレージシステムに記憶された各アイテムは、資産の一意識別子と同様に生成された一意識別子を有することができ、これは、位置情報と共にブロックチェーンに記憶される。
【0019】
図3は、いくつかの例示的な実装による、立証管理システムの一部として立証者により実施される一例示的なプロセスのフローチャートである。
【0020】
このプロセスは、資産の譲渡の時点において立証アプリケーションにより実行される。このプロセスは、立証アプリケーションを介して、認証されたユーザにより開始される。認証されたユーザは、資産に関する情報を立証アプリケーションに入力する。入力情報には、資産に関連する記述、識別子(例えば、シリアル又は部品番号、及び/又はSKU)、画像化、譲渡人及び譲受人情報、位置及び同様の情報を含むことができる(ブロック301)。譲渡人及び譲受人情報には、個人又は企業の行政識別子、クレジットカード情報、銀行情報、及び同様の情報を含むことができる。画像化などの、いくつかのタイプの収集された情報は、立証アプリケーションによりさらなる詳細について分析することができる。例えば、照明、色相、勾配、及び同様の画像化情報を分析し、収集することができる。
【0021】
立証アプリケーションにより、信頼されたデバイスから、又は外部ソースから、さらなる情報を収集することができる(ブロック303)。デバイスから収集された情報は、デバイス識別情報(例えば、macアドレス又は同様の識別子)を含んでもよい。日付、時刻、及び同様の情報をデバイスから収集してもよい。全地球測位情報をデバイスから収集してもよい。デバイスの位置に関して、温度、湿度、及び同様のデータなどの天候情報をデバイスから、オンラインソースから収集してもよい。収集されるこの情報は、前の譲渡又は起源、及び/又は現在の譲渡に関連し得る。資産及び資産の発生及び/又は譲渡に関連して、任意の数及び組み合わせのデータ点を収集することができる。
【0022】
収集された情報又はその任意のサブセットを使用して、例えば、収集されたデータのサブセットに対してハッシュアルゴリズムを使用して、一意識別子を生成することができる(ブロック305)。発生又は前の譲渡で使用されたのと同じ、一意識別子を生成するアルゴリズム又はプロセスが、立証で使用される。次いで、一意識別子及び収集された情報の任意のサブセットを使用して、マッチする情報及び一意識別子についてブロックチェーン内で検索することができる(ブロック307)。立証システムは、ブロックチェーンにおいて比較のために、記憶された一意識別子を復号することができる。さらなる情報、特に、一意識別子を生成するために使用された情報も、必要な場合に復号することができ、あるいはブロックチェーン内で平文の場合に、一意識別子と共に比較することができる。一意識別子及びさらなる情報のマッチは、マークルトライツリーに記憶されたデータの特性に起因して、完全なマッチより小さくすることができる。立証システムは、マッチ度合いが構成された閾値を超える立証を決定するように構成することができる。このような場合、資産は立証されたとみなされる(ブロック309)。
【0023】
しかしながら、収集された情報及び生成された一意識別子が閾値を満たさない場合、資産の譲渡人又は発生元からさらなる情報を要求することができる(ブロック307)。これは、ブロックチェーン内の情報により識別された譲渡人に電子的に問い合わせるか、又は立証アプリケーションを介してユーザにさらなる情報を入力するように問い合わせる形式とすることができる。いくつかの実装において、収集されたデータ点のうち任意のものが問い合わせられ、異なる重み付けを有する異なるデータ点と比較され得る。さらなる情報を収集することができない場合、又は、さらなる情報により、マッチが構成された閾値を超えることができない場合、立証プロセスは失敗と指定され(ブロック317)、この場合、資産は立証されず、立証システムはさらなるトランザクションを記録しない。資産が立証された場合、トランザクション情報がブロックチェーンに記憶され、資産が譲渡人から譲受人に譲渡されたことを示し、このさらなるトランザクションデータは、資産のさらなる譲渡の場合に、将来の立証に利用される(ブロック315)。発生のトランザクションと同様に、ブロックチェーンに容易に記憶できないさらなる情報がある場合、それは分散ストレージ位置に記憶することができる。
【0024】
図4は、いくつかの例示的な実装による、一例示的なアーキテクチャの図である。一例示的な実装において、ホストされた(hosted)コンピューティング環境411は、ホスト組織410を介して複数のユーザクライアントデバイス406A~C(例えば、モバイルデバイス、スマートフォン、タブレット、PCなど)と通信可能にインターフェースされる。データベースシステム430は、データベース455A及び455Bを含み、例えば、顧客組織405A~C(例えば、そのようなデータベースシステム430のユーザ、又はマルチテナントデータベースタイプのデータベースシステムのテナント、又はそのようなデータベースシステムの加入ユーザ)のために、アプリケーションコード、オブジェクトデータ、テーブル、データセット、及びユーザデータを含む基礎をなすデータベースレコードを記憶する。そのようなデータベースは、例えば、特定の実施形態による関係データベースシステム455A及び非関係データベースシステム455Bを含む様々なデータベースシステムタイプを含む。
【0025】
特定の実施形態において、クライアント‐サーバコンピューティングアーキテクチャが、データベースシステム430の特徴、機能性、又はコンピューティングリソースを補足するために利用されてもよく、あるいは代わりに、コンピューティンググリッド、又はワークサーバのプール、又はホストされたコンピューティングアーキテクチャの何らかの組み合わせが、データベースシステム430に関連してホスト組織410の要求される計算ワークロード及び処理の一部又は全部を提供してもよい。
【0026】
図示の実施形態に示されるデータベースシステム430は、ホスト組織410内のデータベース機能性とコード実行環境を実現する、複数の基礎をなすハードウェア、ソフトウェア、及び論理要素420を含む。
【0027】
一実施形態によれば、データベースシステム430は、基礎をなすデータベースシステム実装455A及び455Bを利用して、クエリインターフェース480を介してデータベースシステム430と通信するデータベースクエリ及び他のデータベースシステム430とのデータ相互作用をサービスする。データベースシステム430のハードウェア、ソフトウェア、及び論理要素420は、顧客組織(405A、405B、及び405C)とは別個及び区別可能であり、顧客組織は、ネットワーク425を介してホスト組織410に通信可能にインターフェースすることにより、ホスト組織410により提供されるウェブサービス及び他のサービス提供を利用する。このような方法で、ホスト組織410は、サブスクライブしている(subscribing)顧客組織405A~Cに対するオンデマンドサービス、オンデマンドデータベースサービス、又はクラウドコンピューティングサービスを実現し得る。
【0028】
一実装において、各顧客組織405A~Cは、別個及び区別可能なリモート組織、ホスト組織410内の組織グループ、ホスト組織410のビジネスパートナー、又はホスト組織410により提供されるクラウドコンピューティングサービスをサブスクライブする顧客組織405A~Cからなる群から選択されるエンティティである。
【0029】
さらに、ホスト組織410は、ネットワーク425(例えば、パブリックネットワーク、インターネット、又は同様のネットワーク)を介して顧客組織405A~Cからの入力及び他の要求415を受信することが示されている。例えば、入ってくる検索クエリ、データベースクエリ、API要求、ユーザクライアントデバイス406A~Cで表示されたグラフィカルユーザインターフェース及び表示との相互作用、又は他の入力が、顧客組織405A~Cから受信されてデータベースシステム430に対して処理されてもよく、あるいは、そのようなクエリが、データベース455又はクエリインターフェース480に対する実行のために入力及び他の要求415から構築されてもよく、それに従って、結果416が、次いで、顧客組織405A~Cのユーザクライアントデバイス406A~Cのうち1つのユーザなどの発信元又は要求元に返される。
【0030】
一実装において、要求415は、ホスト組織410内のウェブサーバ475で受信され、あるいは該ウェブサーバ475にサブミットされる。ホスト組織410は、ホスト組織410及びそのデータベースシステム430による処理に対する様々な要求を受け取ることができる。ウェブサーバ475で受信される、入ってくる要求415は、ホスト組織410からどのサービスが提供されるべきかを指定することができ、例えば、クエリ要求、検索要求、ステータス要求、データベーストランザクション、グラフィカルユーザインターフェース要求及び相互作用、顧客組織405A~Cの1つのためにデータを取り出し、更新し、又は記憶する処理要求、コード実行要求などである。ウェブサーバ475は、クエリインターフェース480のためにネットワーク425を介して様々な顧客組織405A~Cからの要求415を受信し、ウェブベースのインターフェース又は他のグラフィカル表示を、エンドユーザユーザクライアントデバイス406A~C又はそのようなデータ要求415を発するマシンに提供することを担うことができる。
【0031】
ホスト組織で受信される特定の要求415は、ホスト組織410のブロックチェーンサービスインターフェース490が仲介者として動作するブロックチェーンに向けることができる。
【0032】
クエリインターフェース480は、データベースシステム430のデータベース及び記憶コンポーネントに対して要求されたクエリを受信及び実行し、説明される方法論を促進するために結果セット、応答、又は他の要求されたデータを返すことができる。さらに、クエリインターフェース480は、クエリをウェブサーバ475から、検索クエリを処理するデータベース455に対する実行のためにデータベースシステム430に、又はホスト組織のコンピューティング環境411の他の利用可能なデータストアに渡す機能を提供する。一実施形態において、クエリインターフェース480は、データベース455又は他のデータストアに対してクエリが実行され得るアプリケーションプログラミングインターフェース(API)を実装する。さらに、クエリインターフェース480は、ブロックチェーンサービスインターフェース490との相互運用性を提供し、したがって、ホスト組織410は、クエリインターフェース480を介してデータベースシステム430との間でトランザクションを実行し、又は、ホスト組織410が参加ノードであるか又は参加ノード433と通信している接続されたブロックチェーン上へブロックチェーントランザクションをトランザクション処理する(transact)ことができ、あるいは、ホスト組織410は、データベースシステム430により永続化される(persisted)(クエリインターフェース480を介してアクセス可能な)データを伴うトランザクション、及び接続されたブロックチェーンにより永続化される(例えば、参加ノード433から、又は、ホスト組織がそのようなブロックチェーン上の参加ノードを動作させている場合には接続されたブロックチェーンから直接、アクセス可能な)データを伴うトランザクションの双方のトランザクションを実行することができる。
【0033】
特定の実施形態において、クエリインターフェース480のアプリケーションプログラミングインターフェース(API)は、プログラマ、開発者、及び管理者がAPIコール元命令の必要及び特定の要件に応じてブロックチェーンサービスインターフェース490若しくはデータベースシステム430又は双方と相互作用することができるAPIモデルを提供する。
【0034】
ホスト組織410は、ウェブサーバ475を介してか又はスタンドアロンインターフェースとして要求インターフェース476を実現して、ユーザクライアントデバイス406A~Cから要求パケット又は他の要求415を受信することができる。さらに、要求インターフェース476は、ホスト組織410からユーザクライアントデバイス406A~Cへの出て行く方向の応答パケット又は他のリプライ及び応答1D16の返信をサポートする。認証器(Authenticator)440は、ホスト組織のために動作し、ホスト組織、並びにホスト組織410によりホストされたリソース及びサービス、例えば立証システムなどへのアクセスの獲得を試みるユーザを立証し、認証し、その他の方法で認定(credential)する。
【0035】
さらに、ホスト組織410内には、ブロックチェーン合意マネージャの双方をその中に含むブロックチェーンサービスインターフェース490が示されており、ブロックチェーン合意マネージャは、テナント、顧客組織、又はホスト組織自体410がサポートされたブロックチェーン上の参加ノードとして動作するプライベート及びパブリックブロックチェーンの合意管理を容易にする。さらに、立証サービス(verification services)491が示されており、これは、ユーザクライアントデバイス406A~Cにより実施される立証アプリケーションと組み合わせて本明細書で上述した立証プロセスを可能にする。このように、立証サービス491及び立証アプリケーションは、関連して動作して、図1図3を参照して本明細書にさらに記載する立証システム機能を実現する
【0036】
ここで示すように、ブロックチェーンサービスインターフェース490は、ホスト組織410を他の参加ノード433と(例えば、ネットワーク425を介して)通信上インターフェースして、ホスト組織410がブロックチェーンプロトコル準拠ノードとして作用することにより利用可能なブロックチェーンプロトコルに参加することを可能にし、これは次に、ホスト組織410がそのようなブロックチェーン内の情報にアクセスすることを可能にすると共に、ホスト組織410が他の参加ノード433に、ホスト組織410によりサポートされ、ホスト組織410により顧客及びサブスクライバ(subscribers)に提供される任意の数のブロックチェーンプロトコルについてブロックチェーンサービスを提供することを可能にする。特定の実施形態において、ホスト組織410は、ブロックチェーンプロトコルを提供し、このブロックチェーンプロトコル上でホスト組織が参加ノードとしても動作するという双方をなす。他の実施形態において、ホスト組織は、ホスト組織410が他者により提供されたブロックチェーンプロトコルと相互作用することができるように、単に参加ノードとして動作する。
【0037】
ブロックチェーンは、ブロック単位でグループ化されたレコードの連続的に成長するリストであり、該ブロックは、一緒にリンクされ、暗号法を用いて安全化されている。各ブロックは、前のブロックへのリンクとしてのハッシュポインタ、タイムスタンプ、及びトランザクションデータを典型的に含む。設計により、ブロックチェーンは本来的に、データの修正に対して耐性がある。ブロックチェーンシステムは本質的に、2者間のトランザクションを効率的かつ立証可能な方法で記録するオープンな分散された台帳であり、これもまた不変(immutable)かつ恒久的である。分散台帳(共有又は共通台帳とも呼ばれ、あるいは分散台帳技術(DLT)と呼ばれる)は、複数のノードにわたり地理的に分散された複製、共有、及び同期されたデジタルデータの合意である。ノードは、異なるサイト、国、機関、ユーザコミュニティ、顧客組織、ホスト組織、ホストされたコンピューティング環境、又はアプリケーションサーバに位置してもよい。中央管理者や中央集権的なデータストレージは存在しない。
【0038】
ブロックチェーンシステムは、ノードのピアツーピア(P2P)ネットワークを使用し、合意アルゴリズムは、ノードにわたるデジタルデータの複製を保証する。ブロックチェーンシステムは、パブリック又はプライベートのいずれでもよい。必ずしも全ての分散台帳が、分散された合意の安全かつ有効な達成を成功裏に提供するためにブロックのチェーンを使用するわけではなく、ブロックチェーンは、分散台帳と考えられるデータ構造の1つのタイプに過ぎない。
【0039】
P2Pコンピューティング又はネットワーキングは、ピア間でタスク又はワークロードを分ける分散アプリケーションアーキテクチャである。ピアは、ノードのピアツーピアネットワークを形成するアプリケーションにおいて、同等に特権を与えられ、同等に能力を有する参加者である。ピアは、そのリソースの一部、例えば処理パワー、ディスクストレージ、又はネットワーク帯域幅などを、サーバ又はホストによる中央の協調の必要なく、他のネットワーク参加者が直接利用できるようにする。リソースの消費と供給が分けられている従来のクライアント‐サーバモデルと対照的に、ピアは、リソースの供給者と消費者の双方である。ゆえに、ピアツーピアネットワークは、クライアントとサーバの双方としてネットワーク上の他のノードに同時に機能する等しいピアノードの概念を中心に設計されている。
【0040】
分散台帳として使用するために、ブロックチェーンは、新しいブロックを検証するプロトコルに集合的に従うピアツーピアネットワークにより典型的に管理される。ひとたび記録されると、任意の所与のブロック内のデータは、全ての後続ブロックの改変なしに遡及的に改変することはできず、これには、ネットワークの過半数(majority)の共謀を必要とする。このようにして、ブロックチェーンは、設計上安全であり、高いビザンチンフォールトトレラント性(Byzantine fault tolerance)を有する分散コンピューティングシステムの一例である。したがって、非中央集権的な合意がブロックチェーンにより達成されている。これにより、ブロックチェーンは、イベント、医療記録、保険記録、及び他の記録管理アクティビティ、例えばアイデンティティ管理、トランザクション処理、文書化の出所、又は投票などの記録に適している。
【0041】
ブロックチェーンデータベースは、ピアツーピアネットワークと分散タイムスタンプ付け(timestamping)サーバを使用して自律的に管理される。ブロック形式のレコードは、集合的な自己利益により動機づけられるノード間の協働により、ブロックチェーン内で認証される。結果として、データセキュリティに関する参加者の不確実性が最小化される。ブロックチェーンの使用は、デジタル資産の再現性という特性を取り除く。それは、各価値単位、例えば資産が1回だけ移転されたことを裏付け、二重支出(double spending)の問題を解決する。
【0042】
ブロックチェーン内のブロックは各々、ハッシュされてマークルツリーに符号化される有効なトランザクションのバッチ(「ブロック」)を保持する。各ブロックは、ブロックチェーン内の先行ブロックのハッシュを含み、この2つをリンクする。リンクされたブロックはチェーンを形成する。この反復プロセスが、時にジェネシスブロック又はルートブロックと呼ばれるチェーン内の最初のブロックまで遡って、前のブロックの完全性を裏付ける。
【0043】
ブロックチェーンは、そのネットワークにわたりデータを記憶することにより、データが中央に保持され、単一のオーソリティにより制御されることに伴うリスクを排除する。ホスト組織410は、ホスト組織410などの単一の責任を負うエージェントに大量のデータを提供する能力を含む広範なデータ処理及び記憶サービスを提供するが、ブロックチェーンサービスは異なり、それにより、ホスト組織410は、そのようなサービスの単一のオーソリティではなく、むしろ、ブロックチェーンサービスインターフェース490を介し、利用可能なブロックチェーンプロトコルのための多くのノードのうちの1つであり、あるいはブロックチェーンプロトコルマネージャ及びプロバイダとして動作し、一方、ブロックチェーンサービスインターフェース490を介してホスト組織410と通信する他の参加ノード433は、ホスト組織410により提供される利用可能なブロックチェーンプロトコルに従って準拠した分散台帳技術(DLT)を実現することにより、ブロックチェーン内に記憶された情報のリポジトリとして集合的に動作する。
【0044】
非中央集権的なブロックチェーンは、アドホックメッセージパッシング及び分散ネットワーキングを使用することができる。ブロックチェーンネットワークは、コンピュータハッカーが活用し得る脆弱性の中央集権的なポイントがない。同様に、それは中央の障害点も有さない。ブロックチェーンセキュリティメソッドは、公開鍵暗号の使用を含む。公開鍵は、ブロックチェーン上のアドレスである。ネットワークにわたり送信される値トークンは、そのアドレスに属するものとして記録される。秘密鍵は、その所有者にデジタル資産へのアクセスを与えるパスワードのようなもの、又は、その他の方法でブロックチェーンがサポートする様々な機能と相互作用する手段である。ブロックチェーンに記憶されたデータは、一般に破損しないと考えられる。これは、ブロックチェーンがその利点を有するところである。中央集権的なデータはより制御可能であるが、情報及びデータ操作が共通する。ブロックチェーンは、そのようなデータを非中央集権化することにより、関与する誰に対してもデータを透過的にする。
【0045】
非中央集権的なシステム内の特定のブロックチェーンプロトコルのためのあらゆる参加ノード433は、その特定のブロックチェーンプロトコルのためのブロックチェーンのコピーを有する。データ品質は、大規模なデータベース複製及び計算的信頼により維持される。データベースの中央集権的なオフィシャルのコピーは存在せず、デフォルトでは、どのユーザも参加ノード433のいずれも、他より信頼されているわけではないが、このデフォルトは、以下でより詳細に説明されるように、特定の特化されたブロックチェーンプロトコルを介して改変されてもよい。ブロックチェーントランザクションは、ソフトウェアを使用してネットワークにブロードキャストされ、該ソフトウェアを介して、ノードとして動作しているときのホスト組織410を含む任意の参加ノード433が、このようなトランザクションブロードキャストを受信する。ブロードキャストメッセージは、ベストエフォートベースで配信される。ノードは、トランザクションを検証し、該トランザクションをそれらが構築しているブロックに追加し、次いで、完成したブロックを他のノードにブロードキャストする。ブロックチェーンは、プルーフオブワーク(proof-of-work)などの様々なタイムスタンプ付けスキームを使用して、変更をシリアライズする。代わりの合意が、ホスト組織により提供されかつサポートされる様々なブロックチェーンプロトコルと関連して利用されてもよく、そのような合意メカニズムには、例えば、いくつか例を挙げると、プルーフオブステーク(proof-of-stake)、プルーフオブオーソリティ(proof-of-authority)、及びプルーフオブバーン(proof-of-burn)が含まれる。
【0046】
オープンブロックチェーンは、一般に公開されているが閲覧するために物理的なアクセスを依然として必要とする従来の伝統的な所有権記録よりユーザフレンドリである。早期のブロックチェーンのほとんどが許可なし(permissionless)であったため、いわゆる「ブロックチェーン」の特定の受け入れられる定義についていくらかの議論があり、例えば、中央オーソリティによりタスクを課され認可された(許可された)立証者を有するプライベートシステムはブロックチェーンと考えられるかどうかなどである。許可された立証者の概念は、本明細書に記載される許可ありのアクセス制御プロセスとは別個である。許可あり(permissioned)又はプライベートのチェーンの支持者は、用語ブロックチェーンが、データをタイムスタンプ付きブロックにグループ化する任意のデータ構造に適用され得ると主張している。これらのブロックチェーンは、データベースにおけるマルチバージョン同時実行制御(multiversion concurrency control、MVCC)の分散バージョンとして機能する。MVCCが、2つのトランザクションがデータベース内の単一のオブジェクトを同時に修正することを防止するのと同様に、ブロックチェーンは、2つのトランザクションが一ブロックチェーン内で同じ単一のアウトプットを消費することを防止する。様々なタイプのブロックチェーン技術に適用される意味又は特定の用語にかかわらず、「ブロックチェーン」に関して本明細書に記載される方法論は、従来のブロックチェーンプロトコル実装を拡張してさらなる柔軟性を提供し、記載のブロックチェーン実装に対する新しいサービス及びユースケースを切り開き、ホスト組織110のブロックチェーンサービスインターフェース190により提供又はサポートされる特定のブロックチェーンプロトコルに依存して、プライベート及びパブリック双方のメカニズムが本明細書で説明され、ホスト組織110によりサポートされる異なる実装のために必要に応じて利用される。
【0047】
本明細書で論じられるように、実施形態は、許可あり又はパブリックのブロックチェーンに適用可能な特定の場合のためのブロックチェーンアクセス制御を提供するが、オープンで、許可なしの、又はパブリックのブロックチェーンネットワークの利点は、悪い行為者に対する防護が必要なく、アクセス制御が一般に必要ないことである。これは、ブロックチェーンをトランスポート層として使用して、他者の承認や信頼なくアプリケーションがネットワークに追加され得ることを意味する。反対に、許可ありの(例えば、プライベートの)ブロックチェーンは、アクセス制御層を使用して、ネットワークに対して誰がアクセスを有するかを管理する。実施形態は、さらに、プライベート又はパブリックのブロックチェーンの内部又は外部のエンティティのためのアクセス制御を提供する。パブリックブロックチェーンネットワークと対照的に、プライベートブロックチェーンネットワーク上のバリデータは、例えば、ネットワーク所有者、又はコンソーシアムの1以上のメンバにより調べられる。これらは、既知のノードに依存してトランザクションを検証する。許可ありのブロックチェーンは、「コンソーシアム」又は「ハイブリッド」ブロックチェーンとも呼ばれている。今日、多くの企業は、パブリックブロックチェーンシステムから独立した、プライベートブロックチェーンを有するブロックチェーンネットワーク、又はブロックチェーンベースの分散台帳を使用している。
【0048】
図5は、いくつかの例示的な実装による、別の例示的なアーキテクチャの図である。この例示的なアーキテクチャでは、ブロックチェーンサービスインターフェース490及び立証サービス491は、図1図3に関連してさらに記載される立証システムをサポートするように動作する。
【0049】
この例において、ホスト組織410は、プロセッサ及びメモリを(例えば、データベースシステム430の実行ハードウェア、ソフトウェア、及び論理420内に)有するホストされたコンピューティング環境411を含み、これらは、ブロックチェーン合意マネージャ491及びブロックチェーンメタデータ定義マネージャ496を含むブロックチェーンサービスインターフェース490を動作させるのに役立つ。さらに、ブロックチェーン599に書き込まれ又はブロックチェーン599上へトランザクション処理されるデータ、メタデータ、及びレコードのアドレス指定(addressing)能力を提供するインデックス516が示されている。
【0050】
図示のように、インデックス516はホスト組織のデータベースシステム430内に記憶されるが、代替的に、マークルツリーインデックス516はブロックチェーン自体に書き込まれ、記憶されてもよく、したがって、ホスト組織のクエリインターフェース480へのアクセスを欠くブロックチェーンの参加ノードは、それにもかかわらずマークルツリーインデックス516を(ブロックチェーンに記憶されているとき)取り出し、次いで、マークルツリーインデックス516から取り出されたアドレスを使用してブロックチェーン上のアドレス指定可能ブロックを直接参照し、所望のレコード、データ又はメタデータを取り出すことができ、ブロックチェーン全体をトラバースし又は必要なレコードのためにブロックチェーンを検索する必要はない。
【0051】
図示のように、ブロックチェーン599の最後の標準ブロック442内に示されるように別のインデックス516が示されている。1つのインデックス516のみが必要とされるが、インデックス516は許容される方法でいずれかの場所に記憶されてよい。
【0052】
下部でより詳細に示されるマークルツリーインデックス516は、ABCDEのハッシュを有するレベル0のマークルルートを示しており、その後に、2つのハッシュノードを有するハッシュ層が続き、ハッシュABCを有する第1のハッシュノード及びハッシュDEを有する第2のハッシュノードであり、その後に、ハッシュA、B、C、D、及びEにより識別されるデータリーフ内のデータブロックが続き、各々がブロックチェーン上のアドレス指定可能ブロックのアドレス指定情報を含む。
【0053】
マークルツリーインデックス516の使用と関連してブロックチェーン599上にデータ及びメタデータを記憶することは、データレコードを取り出すためにブロックチェーンの複数のブロック441及び442を検索することが必要ないため、既知のデータ記憶スキームより一層効率的である。むしろ、インデックス516は、所望のブロックのアドレスを取り出すために最初検索され、これはかなり高速で効率的であり、次いで、インデックス516から取り出されたアドレスを用いて、ブロックチェーン599上のアドレス指定可能ブロックからレコードが直接取り出される。
【0054】
データが従来の手法を用いてブロックチェーン内に記憶されると、ブロックチェーン内のデータ量は記憶データの総ボリュームの点で激増し、スケーラビリティの問題を生じ、結果として問題のある非効率性をもたらす。ブロックチェーンに記憶されるデータの総ボリュームは、時間と共に持続不可能に激増又は増大する傾向があり、なぜならば、記憶されたレコードが更新又は修正されるたび、修正されたレコードの全体をブロックチェーンに再書き込みすることが必要だからであり、これは次いで、最も最近の、最新のレコードになるが、全ての前のバージョン及びコピーがブロックチェーン内に保有されており、ゆえに、相当な重複したデータエントリが記憶される結果をもたらす。このようなアプローチの利点は、レコード全体がブロックチェーン上の単一のブロックから取り出され得ることであり、同じレコードのためにブロックチェーン上の前のブロックを戻って参照する必要がない。しかし、このような記憶スキームは、記憶の観点からはかなり非効率的である。
【0055】
あるいは、従来のアプローチによれば、ブロックチェーン内に記憶されたレコードに対する修正のみが記憶されてもよく、ゆえに、結果として、修正されたデータはブロックチェーン上の新しいブロックに書き込まれ、修正不可能なデータはブロックチェーンの先行ブロックから取り出し可能である。このアプローチは、ブロックチェーンにより記憶されるデータの総量を減らす。残念ながら、修正されたレコードのいかなるデータ取り出しもブロックチェーン上の複数のブロックからの検査及び取り出しを必要とし、ゆえに、データの冗長性及び持続不可能な増大の問題を軽減するが、その問題を望ましくないデータ取り出しの非効率の問題と交換している。
【0056】
このようにして、ブロックチェーン599内に記憶されるレコード及び情報のデータ管理が改善される。さらに、メタデータがブロックチェーン内にさらに記憶されて、記憶されたレコードに関するさらなる情報及びコンテキストを提供してもよく、データレコードの各々とそのようなデータレコードを記述するメタデータは、インデックス516の使用を通じてより容易に取り出し可能である。このようなメタデータにより、ビジネス又は他のエンティティは、ブロックチェーンに書き込まれたレコードのそのようなコンテキスト及びメタデータを失う従来のアプローチを用いるより一層容易に、ブロックチェーンから取り出されたデータレコードを使用可能なフォーマットに戻すように変換することができる。
【0057】
図6は、いくつかの説明される実施形態による、スマートフローコントラクトエンジンを利用して作成されるブロックチェーン実装型スマートコントラクトのさらなる詳細を有する別の例示的なアーキテクチャの図である。この例示的なアーキテクチャでは、立証サービス491は、スマートコントラクトに関連して、図1図3に関連して記載される立証システムをサポートして、立証システムの態様を実施するように動作する。
【0058】
詳細には、ここで、スマートフローコントラクトエンジン605を今や含み、GUIマネージャ610をさらに含むブロックチェーンサービスインターフェース490がホスト組織内に示される。
【0059】
ブロックチェーンは分散台帳を利用するため、スマートコントラクトの作成と実行は、特に初心者ユーザには、技術的に複雑な可能性がある。その結果、スマートフロービジュアルデザイナは、スマートコントラクトの実装をより容易に可能にする。結果として生じるスマートフローコントラクトは、顧客及びユーザが任意の所与のブロックチェーンプロトコルで使用されるプログラミング言語について心配する必要をなくすブロックチェーントランスレータ(blockchain translator)630により作成される、数学的に立証可能な自動生成コードを有する。さらに、スマートフローコントラクトエンジンは、ブロックチェーントランスレータ630と協調してブロックチェーンの参加ノードの各々で実行可能な必須のネイティブコードを生成するビジュアルデザイナを実現し、ゆえに、スマートコントラクトの容易な処理及び立証をさらに可能にする。特定の実施形態によれば、各スマートフローコントラクトは、数学コードに基づく立証可能な暗号化スキームを利用する。
【0060】
フローデザイナは、GUIベースのガイド付きフロー設計体験を通してアプリケーション及びカスタマイズされたプロセスフローを設計するための簡素な、直感的な、ウェブベースのインターフェースをユーザに提供する。フローデザイナは、必ずしもコーディング技能を有さず又はブロックチェーンに精通していない初心者ユーザでも、さもなければ複雑な機能を作成することを可能にする。
【0061】
GUIマネージャ610は、フローデザイナGUI611インターフェースをユーザデバイスに提示し、これを介し、ユーザは、ホスト組織と相互作用することができる。スマートフローコントラクトエンジン605は、GUIマネージャと協調して、ユーザにより提供される様々なルール、条件、及び動作を解釈してスマートフローコントラクトを生成し、これは次いで、ターゲットブロックチェーンプロトコルに翻訳され、あるいは書き込まれる。
【0062】
フローデザイナGUI611を介して、ユーザは、ビジュアルフロー要素を利用して、特定のプロセス、イベント、合意、コントラクト、購入、又は何らかの他のトランザクションがどのように発生する必要があるかを、依存関係、チェック、必要なプロセス入力及び出力、トリガ等を含み、完全に定義することができる。
【0063】
フローデザイナGUI611を使用し、ユーザは、動作ブロックを単にドラッグアンドドロップし、様々な条件と「if then else」イベント、例えば、このイベントが発生した場合にこのアクションをとる、などを定義する。ここで示されるように、ユーザ定義条件621、モニタリングすべきイベント621、「if」then「else」トリガ623、及び資産識別子624を含む様々なユーザ定義のスマートコントラクトブロックが存在する。
【0064】
ユーザが、その動作ブロック、条件、トリガ、及びイベントの全てを含むフローの定義を完了すると、スマートフローコントラクトエンジンは、個々のブロックの各々を取得し、それらをブロックチェーントランスレータ630を介してネイティブターゲットブロックチェーンプロトコルに翻訳し、次いで、ブロックチェーンサービスインターフェース490を介して、翻訳されたスマートフローコントラクト645をブロックチェーン640に書き込むためのトランザクションを生成する。
【0065】
ブロックチェーンへトランザクション処理されると、ブロックチェーンでのあらゆる参加ノードはスマートコントラクトのコピーを有することになり、したがって、任意の所与のイベントが発生した場合、対応するトリガ又はルール又は条件が全ての参加ノードに閲覧可能になり、そのうちのいくつかは、次いで、スマートコントラクトにより定義されるイベントに基づいてアクションをとることができる。
【0066】
ホスト組織のブロックチェーンサービスインターフェース490は、顧客、ユーザ、及びサブスクライバに、異なるブロックチェーンへのアクセスを提供し、そのうちいくつかはホスト組織410により管理され、例えばプライベートブロックチェーンであり、他はパブリックブロックチェーンであり、このようなパブリックブロックチェーン上のノードとして参加するホスト組織410を介してアクセス可能である。いずれにせよ、各ブロックチェーンは、異なるブロックチェーンプロトコルを利用し、それぞれのブロックチェーンと通信するためにインターフェースが使用しなければならない様々なルール、構成、及び、可能性として異なる言語を有する。結果的に、ここに示されるブロックチェーントランスレータ630は、ユーザ定義のスマートコントラクトブロックを、結果として生じるスマートコントラクトが書き込まれ又はトランザクション処理されるべきターゲットブロックチェーン640のネイティブの又は必要な言語及び構造に翻訳する。
【0067】
スマートコントラクトがブロックチェーン645へトランザクション処理され、ブロードキャストされると、それはブロックチェーン内で実行され、次いで、ユーザ定義のスマートコントラクトブロックにより定められるその規定が実行され、強制される。
【0068】
一実装によれば、ユーザ定義のスマートコントラクトブロックを生成するために、セールスフォースドットコムのビジュアルフローデザイナが利用され、それらは、次いで、ブロックチェーンスマートコントラクトに翻訳される。他の実施形態によれば、異なるビジュアルフローデザイナが利用され、ブロックチェーントランスレータ630が、ユーザ定義のスマートコントラクトブロックをブロックチェーンスマートコントラクトに翻訳する。
【0069】
結果として生じるネイティブブロックチェーンプロトコルスマートコントラクト要素635は、スマートコントラクトが書き込まれるべきブロックチェーン640により指示されたコード、構造、又は言語内に具現化され得る。例えば、スマートコントラクトがイーサリアムに書き込まれるべき場合、ブロックチェーントランスレータ430は、ユーザ定義のスマートコントラクトブロックをイーサリアム準拠の「ソリディティ(Solidity)」プログラミング言語に翻訳しなければならない。ソリディティは、具体的にイーサリアムでスマートコントラクトを実現するためのコントラクト指向の高水準言語である。この言語は、C++、Python、及びJavaScript(登録商標)の影響を受け、イーサリアム仮想マシン(Ethereum Virtual Machine、EVM)をターゲットにするように設計されている。スマートコントラクト要素は、投票、クラウドファンディング、ブラインドオークション、マルチシグネチャウォレット、及び多くの他の機能のためのサポートを含む。
【0070】
反対に、スマートコントラクトがハイパーレジャー(Hyperledger)に書き込まれるべき場合、言語は異なり、他の機能の中でも、スマートコントラクトのための分散台帳ブロックチェーンの使用を可能にするGoプログラミング言語を利用する。
【0071】
スマートコントラクトは有益であり、多くのブロックチェーンプロトコルによりサポートされるが、それらは、ターゲットにされる特定のブロックチェーンに依存して異なる言語でプログラムされるという要件に対して、実現するのに煩雑な可能性がある。したがって、ユーザは、プログラミング構造だけでなく、問題のブロックチェーンプロトコルに必要なプログラミング言語の特定の構文的ニュアンスも理解しなければならない。
【0072】
スマートフローコントラクトエンジン605を利用することにより、初心者ユーザでも、フローデザイナでスマートコントラクト要素を生成し、次いでブロックチェーントランスレータ630を利用して、ユーザにより定義されたスマートコントラクト要素を具現化するネイティブブロックチェーンプログラミング言語コードを実際にレンダリングすることにより、準拠したスマートコントラクトを作成することができ、その後、ブロックチェーンサービスインターフェース490は、ブロックチェーンへのスマートコントラクトのトランザクション処理を取り扱う。
【0073】
いくつかの実装において、立証システムの立証要件は、スマートコントラクト及びスマートコントラクトエンジン605を使用して実現し、実施することができる。
【0074】
図7は、いくつかの例示的な実装による、一例示的なインターフェース及びデバイスの図である。立証アプリケーションは、データを入力し、立証プロセスをナビゲートするためのGUI710を提供する。ここに示されるように、立証システム内の信頼されたデバイスなどのコンピューティングデバイス799で実行されるGUI710があり、GUI710は立証アプリケーションにより提示され、あるいはホスト組織の立証サービスによりコンピューティングデバイスにプッシュされる。
【0075】
ここに示されるように、GUI710は、ユーザがブロックチェーンに記憶される新しい資産の作成を開始することを可能にする。ここに示されるように、「新規エンティティ定義(New Entity Definition)」GUIが提示され、これにおいて、ユーザは、部品番号、シリアル番号、SKU、所有者情報、及び本明細書に記載される資産に関して収集されるべき同様の情報などを収集するために、提案されたデータを入力することにより、新しい資産を作成することができる。保存(save)をクリックすると、作成を開始し、ホスト組織のブロックチェーンサービスを介してブロックチェーンに追加する要求を送信する。立証アプリケーションは、さらなるデータの収集、デバイスからのデータの捕捉、画像の捕捉のための同様のインターフェース、及び同様のデータ収集インターフェースを提示することができる。
【0076】
図8は、説明される実施形態による、オンデマンドデータベースサービスが動作し得る一環境のブロック図である。環境898は、ユーザシステム812、ネットワーク814、システム816、プロセッサシステム817、アプリケーションプラットフォーム818、ネットワークインターフェース820、テナントデータストレージ822、システムデータストレージ824、プログラムコード826、及びプロセス空間828を含んでもよい。他の実施形態において、環境898は、列挙されたコンポーネントの全てを有さなくてもよく、かつ/あるいは、上記で列挙されたものに代わって又は追加で他の要素を有してもよい。
【0077】
環境898は、オンデマンドデータベースサービスが存在する環境である。ユーザシステム812は、データベースユーザシステムにアクセスするためにユーザにより使用される任意のマシン又はシステムでもよい。例えば、ユーザシステム812のいずれかは、ハンドヘルドコンピューティングデバイス、モバイルフォン、ラップトップコンピュータ、ワークステーション、及び/又はコンピューティングデバイスのネットワークでもよい。図8に(及び、図9でより詳細に)示されるように、ユーザシステム812は、ネットワーク814を介してオンデマンドデータベースサービスと相互作用してもよく、それがシステム816である。
【0078】
システム816などのオンデマンドデータベースサービスは、必ずしもデータベースシステムの構築及び/又は維持に関係する必要はない外部ユーザに利用可能にされるデータベースシステムであるが、代わりに、ユーザがデータベースシステムを必要とするときに(例えば、ユーザの要求に応じて)それらの使用に利用可能でもよい。いくつかのオンデマンドデータベースサービスは、共通データベースイメージのテーブルに記憶された1つ以上のテナントからの情報を記憶してマルチテナントデータベースシステム(multi-tenant database system、MTS)を形成し得る。したがって、「オンデマンドデータベースサービス816」と「システム816」は、本明細書において交換可能に用いられる。データベースイメージは、1つ以上のデータベースオブジェクトを含んでもよい。関係データベース管理システム(RDMS)又は同等物が、データベースオブジェクトに対して情報の記憶及び取り出しを実行してもよい。アプリケーションプラットフォーム818は、ハードウェア及び/又はソフトウェア、例えばオペレーティングシステムなどの、システム816のアプリケーションを実行可能にするフレームワークでもよい。一実施形態において、オンデマンドデータベースサービス816は、オンデマンドデータベースサービスのプロバイダにより開発された1つ以上のアプリケーションを作成、管理、及び実行すること、ユーザがユーザシステム812を介してオンデマンドデータベースサービスにアクセスすること、又はサードパーティアプリケーション開発者がユーザシステム812を介してオンデマンドデータベースサービスにアクセスすることを可能にするアプリケーションプラットフォーム818を含んでもよい。
【0079】
ユーザシステム812のユーザは、そのそれぞれのキャパシティが異なってもよく、特定のユーザシステム812のキャパシティは専ら、現在のユーザに対するパーミッション(パーミッションレベル)により決定されてもよい。例えば、販売員が、特定のユーザシステム812を使用してシステム816と相互作用している場合、そのユーザシステムは、その販売員に割り振られたキャパシティを有する。しかしながら、管理者が、そのユーザシステムを使用してシステム816と相互作用している間、そのユーザシステムは、その管理者に割り振られたキャパシティを有する。階層的役割モデルを有するシステムでは、1つのパーミッションレベルのユーザは、より下位のパーミッションレベルのユーザによりアクセス可能なアプリケーション、データ、及びデータベース情報へのアクセスを有し得るが、より上位のパーミッションレベルのユーザによりアクセス可能な特定のアプリケーション、データベース情報、及びデータへのアクセスを有さない場合がある。したがって、異なるユーザは、ユーザのセキュリティ又はパーミッションレベルに依存して、アプリケーション及びデータベース情報へのアクセス及び修正に関して異なる能力を有する。
【0080】
ネットワーク814は、互いに通信するデバイスの任意のネットワーク又はネットワークの組み合わせである。例えば、ネットワーク814は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうち任意の1つ又は任意の組み合わせであり得る。現在使用されているコンピュータネットワークの最も一般的なタイプは、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)ネットワーク、例えば、大文字「I」を用いて「インターネット(Internet)」としばしば呼ばれるネットワークのグローバルインターネットワークなどであるため、そのネットワークが、本明細書の例の多くで用いられる。しかしながら、TCP/IPは頻繁に実装されるプロトコルであるが、請求される実施形態が利用し得るネットワークはそのように限定されないことが理解される。
【0081】
ユーザシステム812は、TCP/IPを使用してシステム816と通信し、より上位のネットワークレベルでは、HTTP、FTP、AFS、WAPなどの他の一般的なインターネットプロトコルを通信するのに使用してもよい。HTTPが使用される例では、ユーザシステム812は、システム816におけるHTTPサーバとの間でHTTPメッセージを送受信するために、一般に「ブラウザ」と呼ばれるHTTPクライアントを含んでもよい。そのようなHTTPサーバは、システム816とネットワーク814との間の単独のネットワークインターフェースとして実装されてもよいが、他の手法が同様に又は代わりに使用されてもよい。いくつかの実装において、システム816とネットワーク814との間のインターフェースは、ラウンドロビンHTTPリクエスト分配器などの負荷分散機能を含み、負荷のバランスをとり、入ってくるHTTPリクエストを複数のサーバにわたり均等に分配する。少なくとも、そのサーバにアクセスしているユーザについて、複数のサーバの各々は、MTSのデータへのアクセスを有するが、代わりに、他の代替的な構成が使用されてもよい。
【0082】
一実施形態において、図8に示すシステム816は、立証システムを実現する。例えば、一実施形態において、システム816は、立証サービスソフトウェアアプリケーションを実装及び実行し、ユーザシステム812との間で関連データ、コード、フォーム、ウェブページ、及び他の情報を提供し、関連データ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すように構成されたアプリケーションサーバを含む。マルチテナントシステムでは、複数のテナントのデータが同じ物理データベースオブジェクト内に記憶され得るが、テナントデータは典型的には、当該データが明示的に共有されない限り、1つのテナントのデータが他のテナントのデータと論理的に別個に保持され、それにより、1つのテナントが他のテナントのデータへのアクセスを有さないように配置される。特定の実施形態において、システム816は、立証サービス以外の、又は追加のアプリケーションを実現する。例えば、システム816は、立証サービスアプリケーションを含む複数のホストされた(標準及びカスタム)アプリケーションへのテナントアクセスを提供してもよい。ユーザ(又はサードパーティ開発者)アプリケーションは、立証サービスを含んでも含まなくてもよいが、アプリケーションプラットフォーム818によりサポートされてもよく、アプリケーションプラットフォーム818は、アプリケーションの作成、1つ以上のデータベースオブジェクトへの記憶、及びシステム816のプロセス空間内の仮想マシンにおけるアプリケーションの実行を管理する。
【0083】
システム816の要素の1つの配置が図8に示されており、ネットワークインターフェース820、アプリケーションプラットフォーム818、テナントデータ823のためのテナントデータストレージ822、システム816と可能性として複数のテナントがアクセス可能なシステムデータ825のためのシステムデータストレージ824、システム816の様々な機能を実現するプログラムコード826、及びアプリケーションホスティングサービスの一部としてアプリケーションを実行するなど、MTSシステムプロセス及びテナント特有のプロセスを実行するプロセス空間828が含まれる。システム816上で実行され得るさらなるプロセスには、データベースインデキシングプロセスが含まれる。
【0084】
図8に示されるシステムにおけるいくつかの要素は、ここではごく簡単に説明される従来の良く知られた要素を含む。例えば、各ユーザシステム812は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話、若しくは任意のワイヤレスアクセスプロトコル(WAP)対応デバイス、又はインターネット若しくは他のネットワーク接続に直接又は間接的にインターフェースすることが可能な任意の他のコンピュータデバイスを含んでもよい。ユーザシステム812は典型的には、HTTPクライアント、例えば、Microsoft(登録商標)のInternet Explorerブラウザ、Mozilla(登録商標)又はFirefox(登録商標)ブラウザ、Opera(登録商標)、又はスマートフォン、タブレット、PDA、若しくは他の無線デバイスの場合のWAP対応ブラウザなどのブラウジングプログラムを実行し、ユーザシステム812のユーザ(例えば、マルチテナントデータベースシステムのサブスクライバ)が、ネットワーク814を介してシステム816からそれが利用可能な情報、ページ、及びアプリケーションにアクセスし、処理し、閲覧することを可能にする。各ユーザシステム812はさらに典型的には、システム816又は他のシステム若しくはサーバにより提供されるページ、フォーム、アプリケーション、及び他の情報と関連してディスプレイ(例えば、モニタ画面、LCDディスプレイ等)にブラウザにより提供されるグラフィカルユーザインターフェース(GUI)と相互作用するための、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つ以上のユーザインターフェースデバイスを含む。例えば、ユーザインターフェースデバイスを使用して、システム816によりホストされるデータ及びアプリケーションにアクセスし、記憶されたデータに対して検索を実行し、さもなければ、ユーザがユーザに提示され得る様々なGUIページと相互作用することを可能にすることができる。上記で論じられたように、実施形態は、ネットワークの特定のグローバルインターネットワークを参照するインターネットでの使用に適している。しかしながら、インターネットの代わりにイントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースのネットワーク、任意のLAN又はWANなどの他のネットワークを使用できることが理解される。
【0085】
一実施形態によれば、各ユーザシステム812及びそのコンポーネントの全てが、インテル(登録商標)ペンティアム(登録商標)プロセッサなどの中央処理ユニットを使用して実行されるコンピュータコードを含むブラウザなどのアプリケーションを使用してオペレータ構成可能である。同様に、システム816(及び、複数が存在する場合のMTSのさらなるインスタンス)及びそれらのコンポーネントの全てが、インテルペンティアム(登録商標)プロセッサなど及び/又は複数のプロセッサユニットを含み得るプロセッサシステム817などの中央処理ユニットを使用して実行するコンピュータコードを含むアプリケーションを使用してオペレータ構成可能でもよい。
【0086】
一実施形態によれば、各システム816は、ウェブページ、フォーム、アプリケーション、データ、及びメディアコンテンツをユーザ(クライアント)システム812に提供してシステム816のテナントとしてのユーザシステム812によるアクセスをサポートするように構成される。したがって、システム816は、各テナントのデータを、該データが共有されない限り別個に保持するセキュリティメカニズムを提供する。複数のMTSが使用される場合、それらは互いに近接して(例えば、単一の建物又はキャンパス内に位置するサーバファームに)配置されてもよく、あるいは互いから遠隔の場所に分散されてもよい(例えば、1つ以上のサーバがA市に配置され、1つ以上のサーバがB市に配置される)。本明細書で用いられるとき、各MTSは、局所的に又は1つ以上の地理的位置にわたり分散された1つ以上の論理的及び/又は物理的に接続されたサーバを含んでもよい。さらに、用語「サーバ」は、処理ハードウェア及びプロセス空間と、当該分野で良く知られた関連するストレージシステム及びデータベースアプリケーション(例えば、OODBMS又はRDBMS)とを含むコンピュータシステムを含むことが意図される。「サーバシステム」及び「サーバ」はしばしば、本明細書で交換可能に使用されることが理解される。同様に、本明細書に記載のデータベースオブジェクトは、単一のデータベース、分散データベース、分散データベースの集合、冗長のオンライン若しくはオフラインバックアップ又は他の冗長性を有するデータベース等として実現することができ、分散データベース又はストレージネットワーク及び関連する処理インテリジェンスを含んでもよい。
【0087】
図9は、説明される実施形態による、オンデマンドデータベースサービスが動作し得る一環境の別のブロック図である。ユーザシステム812は、プロセッサシステム812A、メモリシステム812B、入力システム812C、及び出力システム812Dを含み得る。図9は、ネットワーク814及びシステム816を示す。さらに、図9は、システム816がテナントデータストレージ822を含み得、テナントデータストレージ822はその中にテナントデータ823を有することを示し、テナントデータ823は、例えば、テナントストレージ空間827、テナントデータ829、及びアプリケーションメタデータ831を含む。システムデータストレージ824は、その中にシステムデータ825を有するものとして示されている。さらに、アプリケーションサーバ8001~Nの拡大された詳細の中に示されているのは、ユーザインターフェース(UI)830、アプリケーションプログラムインターフェース(API)832、アプリケーションプラットフォーム818が含むPL/SOQL834、保存ルーチン836、アプリケーションセットアップメカニズム838、プロセス空間1828が含むシステムプロセス空間802、テナント1~Nのプロセス空間804、及びテナント管理プロセス空間810である。他の実施形態において、環境899は、上記で列挙されたものと同じ要素を有さなくてもよく、かつ/あるいは上記で列挙されたものに代わって又は追加で他の要素を有してもよい。
【0088】
ユーザシステム812、ネットワーク814、システム816、テナントデータストレージ822、及びシステムデータストレージ824は、図8において上記で論じた。図9に示すように、システム816は、HTTPアプリケーションサーバ800、アプリケーションプラットフォーム818、テナントデータストレージ822、及びシステムデータストレージ824のセットとして実現される(図8の)ネットワークインターフェース820を含んでもよい。さらに、個々のテナントプロセス空間804及びテナント管理プロセス空間810を含むシステムプロセス空間802が示されている。各アプリケーションサーバ800は、ユーザシステム812の要求にサービスするために、テナントデータストレージ822及びその中のテナントデータ823、並びにシステムデータストレージ824及びその中のシステムデータ825に対して構成されてもよい。テナントデータ823は、個々のテナントストレージエリア(例えば、テナントストレージ空間827)に分割されてもよく、これは、データの物理的配置及び/又は論理的配置のいずれかでもよい。各テナントストレージ空間827内で、テナントデータ829、及びアプリケーションメタデータ831が、各ユーザに対して同様に割り当てられてもよい。例えば、ユーザの最も最近使用した(most recently used、MRU)アイテムのコピーが、テナントデータ829に記憶されてもよい。同様に、テナントである組織全体のためのMRUアイテムのコピーが、テナントストレージ空間827に保管されてもよい。UI830はユーザインターフェースを提供し、API832は、システム816常駐プロセスへのアプリケーションプログラマインターフェースを、ユーザシステム812のユーザ及び/又は開発者に提供する。テナントデータ及びシステムデータは、1つ以上のOracle(登録商標)データベースなどの様々なデータベースに格納されてもよい。
【0089】
アプリケーションプラットフォーム818は、アプリケーション開発者によるアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズム838を含み、これは、例えば、テナント管理プロセス空間810により管理される1つ以上のテナントプロセス空間804としてのサブスクライバによる実行のために、保存ルーチン836によりテナントデータストレージ822にメタデータとして保存されてもよい。このようなアプリケーションへの呼び出しは、API832へのプログラミング言語スタイルインターフェース拡張を提供するPL/SOQL834を使用してコード化されてもよい。アプリケーションへの呼び出しは、1つ以上のシステムプロセスにより検出されてもよく、該システムプロセスは、呼び出しを行うサブスクライバのためのアプリケーションメタデータ831の取り出しと、仮想マシンにおけるアプリケーションとしてのメタデータの実行を管理する。
【0090】
各アプリケーションサーバ800は、異なるネットワーク接続を介して、例えばシステムデータ825及びテナントデータ823へのアクセスを有するデータベースシステムに通信上結合されてもよい。例えば、1つのアプリケーションサーバ8001が、ネットワーク814(例えば、インターネット)を介して結合されてもよく、別のアプリケーションサーバ800N‐1が、直接ネットワークリンクを介して結合されてもよく、別のアプリケーションサーバ800Nが、さらに異なるネットワーク接続により結合されてもよい。トランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)は、アプリケーションサーバ800とデータベースシステムとの間で通信するための典型的なプロトコルである。しかしながら、使用されるネットワーク相互接続に依存してシステムを最適化するために他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
【0091】
特定の実施形態において、各アプリケーションサーバ800は、テナントである任意の組織に関連づけられた任意のユーザの要求を取り扱うように構成される。任意の理由で任意の時点にサーバプールからアプリケーションサーバを追加及び除去できることが望ましいため、好ましくは、特定のアプリケーションサーバ800に対するユーザ及び/又は組織のサーバアフィニティは存在しない。したがって、一実施形態において、ロードバランシング機能(例えば、F5 Big‐IPロードバランサ)を実現するインターフェースシステムが、アプリケーションサーバ800とユーザシステム812との間で通信上結合され、アプリケーションサーバ800への要求を分配する。一実施形態において、ロードバランサは、最小接続アルゴリズムを使用して、ユーザ要求をアプリケーションサーバ800にルーティングする。ラウンドロビン及び観測応答時間などのロードバランシングアルゴリズムの他の例がさらに使用されてもよい。例えば、特定の実施形態において、同じユーザからの3つの連続した要求が3つの異なるアプリケーションサーバ800に当たることがあり、異なるユーザからの3つの要求が同じアプリケーションサーバ800に当たることがある。このようにして、システム816はマルチテナントであり、システム816は、異なるユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶及びそれらへのアクセスを取り扱う。
【0092】
ストレージの一例として、1つのテナントが、各販売員がシステム816を使用してその販売プロセスを管理する販売陣(sales force)を採用する会社であり得る。ゆえに、ユーザは、全てがそのユーザの個人的販売プロセスに適用可能なコンタクトデータ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、目標及び進捗データ等を(例えば、テナントデータストレージ822に)維持することができる。MTS構成の一例において、アクセス、閲覧、修正、報告、送信、計算等すべきデータ及びアプリケーションの全てが、ネットワークアクセス以上のものを有さないユーザシステムにより維持及びアクセスできるため、ユーザは、多くの異なるユーザシステムのいずれかから自身の販売努力及びサイクルを管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーでインターネットアクセスを有する場合、販売員は、顧客がロビーに到着するのを待つ間、その顧客に関する重要なアップデートを得ることができる。
【0093】
各ユーザのデータは、各ユーザの雇用者にかかわらず他のユーザのデータとは別個であり得るが、いくつかのデータは、テナントである所与の組織に対する複数のユーザ又は全ユーザにより共有され又はアクセス可能な組織全体のデータでもよい。ゆえに、システム816により管理される、テナントレベルで割り振られるいくつかのデータ構造があり得、一方、他のデータ構造はユーザレベルで管理され得る。MTSは、あり得る競合者を含む複数のテナントをサポートする可能性があるため、MTSは、データ、アプリケーション、及びアプリケーション使用を別個に保つセキュリティプロトコルを有してもよい。さらに、多くのテナントが、独自のシステムを維持するのでなくMTSへのアクセスを選択する可能性があるため、冗長性、アップタイム、及びバックアップは、MTSで実装され得るさらなる機能である。ユーザ特有のデータ及びテナント特有のデータに追加で、システム816は、複数のテナントにより使用可能なシステムレベルのデータ又は他のデータをさらに維持してもよい。このようなシステムレベルのデータには、テナント間で共有可能な産業レポート、ニュース、投稿などを含んでもよい。
【0094】
特定の実施形態において、ユーザシステム812(クライアントシステムでもよい)は、アプリケーションサーバ800と通信してシステム816からのシステムレベル及びテナントレベルのデータを要求及び更新し、これは、テナントデータストレージ822及び/又はシステムデータストレージ824への1つ以上のクエリの送信を必要としてもよい。システム816(例えば、システム816内のアプリケーションサーバ800)は、所望の情報にアクセスするように設計された1つ以上のSQL文(例えば、1つ以上のSQLクエリ)を自動的に生成する。システムデータストレージ824は、データベースからの要求されたデータにアクセスするためのクエリプランを生成してもよい。
【0095】
各データベースは、一般に、予め定義されたカテゴリに適合されたデータを含む論理テーブルのセットなどのオブジェクトの集合として見ることができる。「テーブル」は、データオブジェクトの1つの表現であり、本明細書では、本明細書で説明されるオブジェクト及びカスタムオブジェクトの概念的な説明を簡略化するために使用されることがある。「テーブル」及び「オブジェクト」は、本明細書では交換可能に用いられ得ることが理解される。各テーブルは通常、閲覧可能スキーマ内に列又はフィールドとして論理的に配置された1つ以上のデータカテゴリを含む。テーブルの各行又はレコードは、フィールドにより定義された各カテゴリのデータのインスタンスを含む。例えば、CRMデータベースは、名前、住所、電話番号、ファックス番号などの基本コンタクト情報のためのフィールドを有する顧客を記述するテーブルを含み得る。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報のフィールドを含む購入注文を記述してもよい。いくつかのマルチテナントデータベースシステムにおいて、全てのテナントによる使用のために標準エンティティテーブルが提供されてもよい。CRMデータベースアプリケーションでは、このような標準エンティティには、各々が予め定義されたフィールドを含むアカウント、コンタクト、リード、及び機会データのテーブルを含んでもよい。語「エンティティ」は、本明細書において「オブジェクト」及び「テーブル」と交換可能に用いられ得ることが理解される。
【0096】
いくつかのマルチテナントデータベースシステムにおいて、テナントは、カスタムオブジェクトを作成及び記憶することを可能にされてもよく、あるいは、例えば、カスタムインデックスフィールドを含む標準オブジェクトに対するカスタムフィールドを作成することにより、標準エンティティ又はオブジェクトをカスタマイズすることを可能にされてもよい。特定の実施形態において、例えば、全てのカスタムエンティティデータ行は、組織ごとの複数の論理テーブルを含み得る単一のマルチテナント物理テーブルに記憶される。それらの複数の「テーブル」が実際には1つの大きいテーブルに記憶されていること、又はそれらのデータが他の顧客のデータと同じテーブルに記憶され得ることは、顧客に対して透過的である。
【0097】
図10は、いくつかの実施形態による、コンピュータシステムの例示的な形態のマシンの図である。一実施形態による、コンピュータシステムの例示的な形態のマシン1000は、その中で、マシン/コンピュータシステム1000に本明細書で論じられる方法のうちのいずれか1つ以上を実行させる命令セットが実行され得る。代替的な実施形態において、マシンは、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、又はパブリックインターネット内の他のマシンに接続され(例えば、ネットワーク化され)てもよい。マシンは、クライアント‐サーバネットワーク環境のサーバ又はクライアントマシンのキャパシティで、ピアツーピア(又は分散)ネットワーク環境のピアマシンとして、オンデマンドサービス環境内のサーバ又は一連のサーバとして動作してもよい。マシンの特定の実施形態は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、セルラー電話、ウェブ電化製品、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、コンピューティングシステム、又はそのマシンが取るべきアクションを指定する(順次又はその他の)命令のセットを実行することができる任意のマシンの形態でもよい。さらに、単一のマシンのみが示されているが、用語「マシン」はさらに、本明細書で論じられる方法のいずれか1つ以上を実行するための命令のセット(又は、複数のセット)を個々又は連帯的に実行するマシン(例えば、コンピュータ)の任意の集合を含むとみなされるものとする。
【0098】
例示的なコンピュータシステム1000は、プロセッサ1002、メインメモリ1004(例えば、読取専用メモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えば同期DRAM(SDRAM)又はランバスDRAM(RDRAM)等、スタティックメモリ、例えばフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、揮発性だが高データレートのRAM等)、及びセカンダリメモリ1018(例えば、ハードディスクドライブ及び永続的データベース及び/又はマルチテナントデータベース実装を含む永続的記憶デバイス)を含み、これらは、バス1030を介して互いに通信する。メインメモリ1004は、ブロックチェーン立証サービス又はアプリケーション1023を含む。他のブロックチェーンインターフェース1025の機能も、メインメモリ1004に記憶することができる。メインメモリ1004及びそのサブ要素は、本明細書で論じられる方法を実行するために、処理論理1026及びプロセッサ1002と関連して動作可能である。
【0099】
プロセッサ1002は、マイクロプロセッサ、中央処理ユニット等の1つ以上の汎用処理デバイスを表す。より詳細には、プロセッサ1002は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、他の命令セットを実現するプロセッサ、又は命令セットの組み合わせを実現するプロセッサでもよい。プロセッサ1002はさらに、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つ以上の専用処理デバイスでもよい。プロセッサ1002は、本明細書で論じられる動作及び機能を実行する処理論理1026を実行するように構成される。
【0100】
コンピュータシステム1000は、ネットワークインターフェースカード1008をさらに含んでもよい。コンピュータシステム1000は、ユーザインターフェース1010(ビデオディスプレイユニット、液晶ディスプレイなど)、英数字入力装置1012(例えば、キーボード)、カーソル制御装置1014(例えば、マウス)、及び信号生成装置1016(例えば、統合型スピーカ)をさらに含んでもよい。コンピュータシステム1000は、周辺装置1036(例えば、無線又は有線通信装置、メモリ装置、記憶装置、オーディオ処理装置、ビデオ処理装置等)をさらに含んでもよい。
【0101】
セカンダリメモリ1018は、本明細書に記載される方法又は機能のいずれか1つ以上を具現化する命令の1つ以上のセット(例えば、ソフトウェア1022)が記憶される非一時的マシン読取可能記憶媒体又は非一時的コンピュータ読取可能記憶媒体又は非一時的マシンアクセス可能記憶媒体1031を含んでもよい。ソフトウェア1022はさらに、コンピュータシステム1000によるその実行の間、メインメモリ1004内及び/又はプロセッサ1002内に完全に又は少なくとも部分的に存在することがあり、メインメモリ1004及びプロセッサ1002もまた、マシン読取可能記憶媒体を構成する。ソフトウェア1022はさらに、ネットワークインターフェースカード1008を介してネットワーク1020を通じて送信又は受信されてもよい。
【0102】
用語「ユーザ」は、システム及び/又はサービスを使用するエンティティ(例えば、個人)を参照する一般的な用語である。マルチテナントアーキテクチャは、各テナントに、ソフトウェアインスタンスの専用シェアと、(典型的には)ユーザ管理、テナント特有の機能性、構成、カスタマイズ、非機能的プロパティ、関連アプリケーション等のためのテナント特有のデータを入力する能力を提供する。マルチテナンシー(Multi-tenancy)は、マルチインスタンスアーキテクチャと対照をなし、これは、別個のソフトウェアインスタンスが異なるテナントのために動作する。テナントには、サービスを提供するソフトウェアインスタンスに対する特定の特権を有する共通のアクセスを共有するユーザのグループが含まれる。テナントは、組織(例えば、企業、企業内の部署等)でもよい。テナントは、システム及び/又はサービスに対する1つ以上の役割を有することができる。例えば、顧客関係管理(CRM)システム又はサービスの文脈において、テナントは、CRMシステム又はサービスを使用してベンダの1以上の顧客に関してテナントが有する情報を管理する、ベンダでもよい。別の例として、データアズアサービス(Data as a Service、DAAS)の文脈において、1つのテナントセットが、データを提供するベンダでもよく、別のテナントセットが、ベンダのデータのうち異なるもの又は全ての顧客でもよい。別の例として、プラットフォームアズアサービス(Platform as a Service、PAAS)の文脈において、1つのテナントセットが、アプリケーション/サービスを提供する第三者アプリケーション開発者でもよく、別のテナントセットが、第三者アプリケーション開発者のうち異なるもの又は全ての顧客でもよい。ユーザは、システム及び/又はサービスに対して1つ以上の役割を有することができる。いくつかの例を提供するために、ユーザは、テナント(例えば、ベンダ又は顧客)の代表者(「エンドユーザ」と呼ばれることもある)、システム及び/又はサービスを提供する企業の代表者(例えば、管理者)、及び/又はプラットフォームアズアサービス(PAAS)上でアプリケーションを作成及び維持している第三者アプリケーション開発者の代表者(例えば、プログラマ)でもよい。
【0103】
例示的な電子デバイス
[電子デバイス及びマシン読取可能媒体]
上記の実装の1つ以上の部分は、ソフトウェア、及び/又はソフトウェアとハードウェアの組み合わせを含んでもよい。電子デバイス(コンピューティングデバイス、コンピュータ等とも呼ばれる)は、プロセッサのセット上での実行のためのコード(これは、ソフトウェア命令から構成され、コンピュータプログラムコード又はコンピュータプログラムと呼ばれることもある)を記憶し、及び/又はデータを記憶するために、1つ以上のマシン読取可能記憶媒体(例えば、磁気ディスク、光ディスク、読取専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、ソリッドステートドライブ(SSD))に結合された1つ以上のプロセッサのセットなどの、ハードウェア及びソフトウェアを含む。例えば、電子デバイスは、不揮発性メモリ(より遅い読み取り/書き込み時間を有し、例えば、磁気ディスク、光ディスク、読取専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、SSD)及び揮発性メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM))を含んでもよく、ここで、不揮発性メモリは、電子デバイスがオフにされたとき又は電力がその他の方法で除去されたときでもコード/データを永続化し、電子デバイスは、動作の間、その電子デバイスのプロセッサのセットにより実行されるべきコードの部分を、その電子デバイスの不揮発性メモリから揮発性メモリにコピーし、なぜならば、揮発性メモリは、典型的には、より速い読み取り/書き込み時間を有するためである。別の例として、電子デバイスは、電子デバイスがオフにされたときコード/データを永続化し、かつ十分に速い読み取り/書き込み時間を有する不揮発性メモリ(例えば、相変化メモリ)を含んでもよく、それにより、コード/データは、実行されるべきコード/データの部分を揮発性メモリにコピーするのでなく、プロセッサのセットに直接提供する(例えば、プロセッサのセットのキャッシュにロードする)ことができ、換言すれば、この不揮発性メモリは、長期記憶装置及びメインメモリの双方として動作し、したがって、電子デバイスは、メインメモリのための揮発性メモリを全く有さず、あるいは少量のみ有してもよい。コード及び/又はデータをマシン読取可能記憶媒体に記憶することに追加で、典型的な電子デバイスは、1つ以上のマシン読取可能伝送媒体(キャリアとも呼ばれる)(例えば、電気的、光学的、無線、音響、又は他の形式の伝搬信号、例えば、搬送波、赤外線信号など)を介してコード及び/又はデータを伝送することができる。例えば、典型的な電子デバイスは、他の電子デバイスとのネットワーク接続を確立するため(伝搬信号を用いてコード及び/又はデータを送信及び/又は受信するため)に、1つ以上の物理ネットワークインターフェースのセットも含む。したがって、電子デバイスは、1つ以上のマシン読取可能媒体(コンピュータ読取可能媒体とも呼ばれる)を用いてコード及び/又はデータを(内部的に、及び/又はネットワークを介して他の電子デバイスとの間で)記憶及び送信することができる。
【0104】
電子デバイスは、様々な目的で使用される。例えば、電子デバイス(サーバ電子デバイスと呼ばれることもある)は、サービスと通信するためにクライアントソフトウェア(クライアントコード又はエンドユーザクライアントと呼ばれることもある)を実行する別の電子デバイス(クライアント電子デバイス、クライアントコンピューティングデバイス、又はクライアントデバイスと呼ばれることもある)にサービスを提供するために使用される1つ以上のサーバとして、当該電子デバイスに動作させるコードを実行することができる。サーバ及びクライアントの電子デバイスは、それぞれ、管理者(管理ユーザとしても知られる)及びエンドユーザの役割のユーザにより操作されてもよい。
【0105】
図11Aは、いくつかの例示的な実装による、電子デバイス1100を示すブロック図である。図11Aは、1つ以上のプロセッサ1122のセットと、1つ以上のネットワークインターフェース1124のセット(無線及び/又は有線)と、ソフトウェア1128(1つ以上のプロセッサ1122のセットにより実行可能な命令を含む)を記憶された非一時的マシン読取可能記憶媒体1126とを備える、ハードウェア1120を含む。前述のエンドユーザクライアント及び立証サービスの各々は、1つ以上の電子デバイス1100に実装されてもよい。一実装において、1)エンドユーザクライアントの各々は、1つ以上の電子デバイス1100のうち別個のものに実装される(例えば、ユーザにより操作されるユーザ電子デバイス内であり、ソフトウェア1128は、エンドユーザクライアントを実現してXYZサービスとのインターフェースをとるためのソフトウェアを表す(例えば、webブラウザ、ネイティブクライアント、ポータル、コマンドラインインターフェース、及び/又はシンプルオブジェクトアクセスプロトコル(Simple Object Access Protocol、SOAP)や表現状態転送(Representational State Transfer、REST)などのプロトコルに基づくアプリケーションプログラムインターフェース(API))。2)XYZサービスは、1つ以上の電子デバイス1100のうち1つ以上の別個のセットにおいて実装される(例えば、1つ以上のサーバ電子デバイスのセットであり、ソフトウェア1128は、XYZサービスを実現するためのソフトウェアを表す)。さらに、3)動作において、エンドユーザクライアント及びXYZサービスを実現する電子デバイスは、通信上(例えば、ネットワークにより)結合され、それらの間に(又は、1つ以上の他のレイヤを通じて)、立証情報を立証サービスにサブミットし、立証関連情報をエンドユーザクライアントに返すための接続を確立する。電子デバイスの他の構成が、他の実装で使用されてもよい(例えば、一実装では、エンドユーザクライアント及びXYZサービスが単一の電子デバイス1100上に実装される)。
【0106】
計算仮想化を使用する電子デバイスにおいて、1つ以上のプロセッサ1122のセットは、典型的には、仮想化レイヤ1108及びソフトウェアコンテナ1104A~Rをインスタンス化するためのソフトウェアを実行する(例えば、オペレーティングシステムレベルの仮想化では、仮想化レイヤ1108は、各々が1つ以上のアプリケーションのセットを実行するために使用され得る複数のソフトウェアコンテナ1104A~R(別個のユーザ空間インスタンスを表し、仮想化エンジン、仮想プライベートサーバ、又はジェイル(jails)とも呼ばれる)の作成を可能にするオペレーティングシステムのカーネル(又は、ベースオペレーティングシステム上で実行されるシム(shim))を表す。完全仮想化では、仮想化レイヤ1108は、ハイパーバイザ(仮想マシンモニタ(VMM)と呼ばれることもある)、又はホストオペレーティングシステム上で実行されるハイパーバイザを表し、ソフトウェアコンテナ1104A~Rは各々、ハイパーバイザにより実行される仮想マシンと呼ばれるソフトウェアコンテナのしっかり分離された形式を表し、ゲストオペレーティングシステムを含んでもよい。準仮想化(para-virtualization)では、仮想マシンで動作しているオペレーティングシステム又はアプリケーションは、最適化の目的で仮想化の存在の認識することができる)。再びになるが、計算仮想化が使用される電子デバイスにおいて、動作の間、ソフトウェア1128のインスタンス(インスタンス1106Aとして示される)は、仮想化レイヤ1108上のソフトウェアコンテナ1104A内で実行される。計算仮想化が使用されない電子デバイスでは、ホストオペレーティングシステム上のインスタンス1106Aは、「ベアメタル」電子デバイス1100上で実行される。インスタンス1106Aのインスタンス化と、実装されている場合に仮想化レイヤ1108及びソフトウェアコンテナ1104A~Rは、まとめてソフトウェアインスタンス1102と呼ばれる。
【0107】
電子デバイスの代替的な実装は、上述したものから多くのバリエーションを有してもよい。例えば、カスタマイズされたハードウェア及び/又はアクセラレータが、電子デバイス内でさらに使用されてもよい。
【0108】
[ネットワークデバイス]
ネットワークデバイス(ND)は、ネットワーク上の他の電子デバイス(例えば、他のネットワークデバイス、ユーザ電子デバイス、サーバ電子デバイス)を通信上相互接続する電子デバイスである。いくつかのネットワークデバイスは、複数のネットワーキング機能(例えば、ルーティング、ブリッジング、スイッチング、レイヤ2集約、セッションボーダー制御、サービス品質、及び/又は加入者管理)のサポートを提供し、及び/又は複数のアプリケーションサービス(例えば、データ、音声、及びビデオ)のサポートを提供する「複数サービスネットワークデバイス」である。
【0109】
[例示的な環境]
図11Bは、いくつかの実装による、立証アプリケーション又は立証サービスが配置され得る一環境のブロック図である。システム1140は、立証サービスを含むサービス1142を提供するためのハードウェア(1つ以上の電子デバイスのセット)及びソフトウェアを含む。システム1140は、ネットワーク1182を介してユーザ電子デバイス1180A~Sに結合される。サービス1142は、1つ以上の他の組織のために作業するユーザ1184A~Sのうち1以上(外部ユーザと呼ばれることもある)に利用可能にされるオンデマンドサービスでもよく、それにより、これらの組織は、必ずしもシステムの構築及び/又は維持に関与する必要はないが、代わりに、必要とされるときに(例えば、ユーザ1184A~Sの要求で)サービス1142を使用する。サービス1142は、1つ以上のアプリケーションプログラミングインターフェース(API)(例えば、表現状態転送(REST)API)を介して互いに、及び/又はユーザ電子デバイス1180A~Sのうち1つ以上と通信してもよい。ユーザ電子デバイス1180A~Sは、ユーザ1184A~Sにより操作される。
【0110】
一実装において、システム1140は、立証システム及びサービス、顧客関係管理(CRM)サービス(例えば、セールスフォースドットコム社によるSales Cloud)、契約/提案/見積りサービス(例えば、セールスフォースドットコム社によるSalesforce CPQ)、顧客サポートサービス(例えば、セールスフォースドットコム社によるService Cloud及びField Service Lightning)、マーケティングサービス(例えば、セールスフォースドットコム社によるMarketing Cloud、Salesforce DMP、及びPardot)、コマースサービス(例えば、セールスフォースドットコム社によるCommerce Cloud Digital、Commerce Cloud Order Management、及びCommerce Cloud Store)、外部ビジネスデータソースとの通信(例えば、セールスフォースドットコム社によるSalesforce Connect)、生産性サービス(例えば、セールスフォースドットコム社によるQuip)、データベースアズアサービス(database as a service)(例えば、セールスフォースドットコム社によるDatabase.comTM)、データアズアサービス(Data as a Service、DAAS)(例えば、セールスフォースドットコム社によるData.com)、プラットフォームアズアサービス(Platform as a Service、PAAS)(例えば、実行ランタイム及びアプリケーション(アプリ)開発ツール;例えば、セールスフォースドットコム社によるHerokuTM Enterprise、Thunder、並びにForce.com(登録商標)及びLightningなど)、分析サービス(例えば、セールスフォースドットコム社によるEinstein Analytics、Sales Analytics、及び/又はService Analytics)、コミュニティサービス(例えば、セールスフォースドットコム社によるCommunity Cloud及びChatter)、モノのインターネット(Internet of Things、IoT)サービス(例えば、セールスフォースドットコム社によるSalesforce IoT及びIoT Cloud)、業界特有のサービス(例えば、セールスフォースドットコム社によるFinancial Services Cloud及びHealth Cloud)、及び/又はインフラストラクチャアズアサービス(Infrastructure as a Service、IAAS)(例えば、仮想マシン、サーバ、及び/又はストレージ)などの、複数のサービスをサポートするマルチテナントクラウドコンピューティングアーキテクチャである。例えば、システム1140は、アプリケーションプラットフォーム1144のプロバイダにより開発された1つ以上のアプリケーションを作成、管理、及び実行し、ユーザがユーザ電子デバイス1180A~Sのうち1つ以上を介してシステム1140にアクセスし、又は第三者アプリケーション開発者がユーザ電子デバイス1180A~Sのうち1つ以上を介してシステム1140にアクセスするPAASを可能にするアプリケーションプラットフォーム1144を含んでもよい。
【0111】
いくつかの実装において、サービス1142のうち1つ以上は、テナントデータ1148のための1つ以上のマルチテナントデータベース1146と、システム1140がアクセス可能なシステムデータ1152のためのシステムデータストレージ1150を利用してもよい。特定の実装において、システム1140は、サーバ電子デバイス上で実行され、任意のテナントに関連づけられた任意の認可されたユーザに対する要求を取り扱うように構成された、1つ以上のサーバのセットを含む(ユーザ及び/又はテナントの、特定のサーバへのサーバアフィニティはない)。ユーザ電子デバイス1180A~Sは、システム1140のサーバと通信して、システム1140によりホストされるテナントレベルのデータ及びシステムレベルのデータを要求及び更新し、応答して、システム1140(例えば、システム1140内の1つ以上のサーバ)は自動的に、1つ以上のマルチテナントデータベース1146及び/又はシステムデータストレージ1150からの所望の情報にアクセスするように設計された1つ以上の構造化問合せ言語(Structured Query Language、SQL)文(例えば、1つ以上のSQLクエリ)を生成してもよい。
【0112】
いくつかの実装において、サービス1142は、ユーザ電子デバイス1180A~Sからのクエリに応答して、及び、1)複数のテナントに共通する構成(例えば、フォーム、レポート、ワークフロー、ユーザアクセス特権、ビジネスロジック)を記述するメタデータ、及び/又は2)テナント特有であり、テナント特有の構成(例えば、テーブル、レポート、ダッシュボード、インターフェース等)を記述し、マルチテナントデータベースに記憶されるメタデータ、を含むメタデータに従って、実行時に動的に作成された仮想アプリケーションを使用して実装される。その目的のため、プログラムコード1160は、メタデータからアプリケーションデータを実現するランタイムエンジンでもよく、すなわち、コンパイルされたランタイムエンジン(システムカーネルとしても知られる)、テナントデータ、及びメタデータの明確な分離があり、これは、システムカーネルとテナント特有のアプリケーション及びスキーマとを独立して更新することを可能にし、事実上、あるものが他のものに影響を及ぼすリスクがない。さらに、一実装において、アプリケーションプラットフォーム1144は、アプリケーション開発者によるアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズムを含み、これは、保存ルーチンによりメタデータとして保存されてもよい。XYZサービスを含むこのようなアプリケーションへの呼び出しは、プログラミング言語スタイルインターフェースを提供する手続き型言語/構造化オブジェクト問合せ言語(Procedural Language/Structured Object Query Language、PL/SOQL)を使用してコード化されてもよい。いくつかのPL/SOQL言語実装の詳細な説明は、2007年9月21日に出願されたCraig Weissmanによる「METHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICE」と題された米国特許7,730,478号において論じられている。アプリケーションへの呼び出しは、1つ以上のシステムプロセスにより検出されてもよく、該システムプロセスは、テナントが呼び出しを行うためのアプリケーションメタデータを取り出すこと、及びメタデータをソフトウェアコンテナ(例えば、仮想マシン)内のアプリケーションとして実行することを管理する。
【0113】
ネットワーク1182は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうちいずれか1つ又は任意の組み合わせでもよい。ネットワークは、電気電子技術者協会(Institute of Electrical and Electronics Engineers、IEEE)プロトコル、第3世代パートナーシッププロジェクト(3rd Generation Partnership Project、3GPP(登録商標))プロトコル、又は類似の有線及び/又は無線プロトコルを含む1つ以上のネットワークプロトコルに準拠してもよく、システム1140とユーザ電子デバイス1180A~Sとの間でデータをルーティングするための1つ以上の中間デバイスを含んでもよい。
【0114】
各ユーザ電子デバイス1180A~S(例えば、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、パーソナルデジタルアシスタント(PDA)、スマートフォンなど)は、典型的には、システム1140により提供されたページ、フォーム、アプリケーション、及び他の情報と関連してディスプレイ(例えば、モニタ画面、液晶ディスプレイ(LCD)等)上に提供されたグラフィカルユーザインターフェース(GUI)と相互作用するために、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つ以上のユーザインターフェースデバイスを含む。例えば、ユーザインターフェースデバイスを使用して、システム1140によりホストされるデータ及びアプリケーションにアクセスし、記憶されたデータに対する検索を実行し、その他の方法でユーザ1184がユーザ1184に提示され得る様々なGUIページと対話できるようにすることができる。ユーザ電子デバイス1180A~Sは、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)を使用してシステム1140と通信し、より高いネットワークレベルでは、ハイパーテキストトランスファープロトコル(HTTP)、FTP、アンドリューファイルシステム(Andrew File System、AFS)、無線アプリケーションプロトコル(WAP)、ファイルトランスファープロトコル(FTP)、ネットワークファイルシステム(NFS)、シンプルオブジェクトアクセスプロトコル(SOAP)や表現状態転送(REST)などのプロトコルに基づくアプリケーションプログラムインターフェース(API)などの、通信するための他のネットワーキングプロトコルを使用してもよい。HTTPが使用される一例において、1つ以上のユーザ電子デバイス1180A~Sは、システム1140のサーバとの間でHTTPメッセージを送信及び受信するために、一般に「ブラウザ」と呼ばれるHTTPクライアントを含んでもよく、ゆえに、ユーザ電子デバイス1180A~Sのユーザ1184は、ネットワーク1182を介してシステム1140からのそれに利用可能な情報、ページ、及びアプリケーションにアクセスし、処理し、閲覧することができる。
【0115】
結語
上記説明では、より完全な理解を提供するために、リソース区分/共有/複製の実装、システムコンポーネントのタイプ及び相互関係、並びに論理区分/統合の選択などの、多数の特定の詳細が説明されている。しかしながら、当業者には、本発明がこのような特定の詳細なしに実施され得ることが理解されるであろう。他の例では、制御構造、論理実装、OPコード、オペランドを指定する手段、及び完全なソフトウェア命令シーケンスは詳細に示されておらず、なぜならば、当業者は、含まれる説明により、過度の実験なしに記載されているものを実装することができるためである。
【0116】
明細書中の「1つの実装」、「一実装」、「一例示的な実装」等への参照は、記載された実装が特定の特徴、構造、又は特性を含み得るが、あらゆる実装が必ずしも上記特定の特徴、構造、又は特性を含まなくてもよいことを示す。さらに、このようなフレーズは、必ずしも同じ実装を参照していない。さらに、特定の特徴、構造、又は特性がある実装に関連して記載されているとき、明示的に記載されているか否かにかかわらず、他の実装に関連してそのような特徴、構造、又は特性に影響を及ぼすことは当業者の知識の範囲内であることが提示される。
【0117】
破線境界で囲まれたテキスト及びブロック(例えば、大きいダッシュ、小さいダッシュ、ドット・ダッシュ、及びドット)は、本明細書において、いくつかの実装にさらなる特徴を追加する任意の動作及び/又は構造を説明するために用いられることがある。しかしながら、そのような表記は、これらが唯一の選択肢又は任意動作であること、及び/又は実線境界を有するブロックが特定の実装において任意でないことを意味するものとみなされるべきではない。
【0118】
以下の説明及び特許請求の範囲において、用語「結合される」がその派生語と共に用いられることがある。「結合される」は、互いに直接物理的又は電気的に接触している可能性又はそうでない可能性のある2つ以上の要素が、協働し又は互いに相互作用することを示すために用いられる。
【0119】
フロー図における動作は、他の図における例示的な実装を参照して説明されている。しかしながら、フロー図の動作は、他の図を参照して論じたもの以外の実装により実行することができ、これらの他の図を参照して論じた実装は、フロー図を参照して論じたものと異なる動作を実行することができる。
【0120】
図中のフロー図は、特定の実装により実行される特定の動作順序を示しているが、そのような順序は例示的であることを理解されたい(例えば、代替的な実装が、異なる順序で動作を実行する、特定の動作を組み合わせる、特定の動作を重ねるなどしてもよい)。
【0121】
上記説明はいくつかの例示的な実装を含むが、当業者は、本発明が説明された実装に限定されず、添付の特許請求の範囲の主旨及び範囲内で修正及び改変を実施できることを認識するであろう。したがって、本説明は、限定的でなく例示的なものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B