(57)【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって実行される、ブロックチェーンネットワーク内のファンクションアズアサービス(FaaS)プラットフォームを提供するコンピュータ実装方法であって、
前記ブロックチェーンネットワーク内の第1のブロックチェーンノードが、前記ブロックチェーンネットワーク内の前記第1のブロックチェーンノードまたは第2のブロックチェーンノードに関連するスマートコントラクトを使用してトランザクションを実行するための要求を開始するステップと、
前記スマートコントラクトが、前記トランザクションを実行するための前記要求を受信するステップと、
前記スマートコントラクトが、実行されるべき前記トランザクションの第1の関数を決定するステップと、
前記ブロックチェーンネットワーク内で実行する第1の関数コントローラが、前記トランザクションの前記第1の関数を実行するための第1の関数呼出しを前記スマートコントラクトから受信するステップであって、前記第1の関数呼出しが実行のための前記第1の関数呼出しのデータを含む、受信するステップと、
前記第1の関数コントローラが、実行のための前記第1の関数呼出しの前記データを第1の関数構成要素に送信するステップと、
前記第1の関数構成要素が、実行のための前記第1の関数呼出しの前記データに基づいて前記トランザクションの前記第1の関数を実行するステップと、
前記第1の関数コントローラが、第1の関数実行結果を前記第1の関数構成要素から受信するステップと、
前記スマートコントラクトによる前記第1の関数実行結果に少なくとも部分的に基づく前記トランザクションの実行の前に、前記第1の関数コントローラが、前記第1の関数実行結果を前記スマートコントラクトに提供するステップと
を含む、コンピュータ実装方法。
【請求項２】
前記第1の関数呼出しが、前記トランザクションの前記第1の関数のアドレスおよび前記トランザクションの前記第1の関数のバージョン識別子をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項３】
前記トランザクションの前記第1の関数の前記バージョン識別子が、前記トランザクションの前記第1の関数の最新バージョンが実行されるべきであることを指示するヌルである、請求項2に記載のコンピュータ実装方法。
【請求項４】
前記第1の関数コントローラが、前記第1の関数呼出しに応じて実行された前記トランザクションの前記第1の関数のバージョンに関連する統計を更新するステップをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項５】
前記統計が、前記トランザクションの前記第1の関数の各バージョンが実行されている回数を指示する、請求項4に記載のコンピュータ実装方法。
【請求項６】
前記ブロックチェーンネットワーク内で実行する第2の関数コントローラが、前記トランザクションの第2の関数を実行するための第2の関数呼出しを前記スマートコントラクトから受信するステップであって、前記第2の関数呼出しが実行のための前記第2の関数呼出しのデータを含み、前記トランザクションの前記第2の関数が前記トランザクションの前記第1の関数とは異なり、前記第2の関数コントローラが前記第1の関数コントローラとは異なる、受信するステップと、
前記第2の関数コントローラが、実行のための前記第2の関数呼出しの前記データを第2の関数構成要素に送信するステップであって、前記第2の関数構成要素が前記第1の関数構成要素とは異なる、送信するステップと、
前記第2の関数構成要素が、実行のための前記第2の関数呼出しの前記データに基づいて前記トランザクションの前記第2の関数を実行するステップと、
前記第2の関数コントローラが、第2の関数実行結果を前記第2の関数構成要素から受信するステップと、
前記スマートコントラクトによる前記第2の関数実行結果に少なくとも部分的に基づく前記トランザクションの実行の前に、前記第2の関数コントローラが、前記第2の関数実行結果を前記スマートコントラクトに提供するステップと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項７】
前記トランザクションの前記第1の関数および前記トランザクションの前記第2の関数が異なるプロバイダによって提供される、請求項6に記載のコンピュータ実装方法。
【請求項８】
1つまたは複数のコンピュータにブロックチェーンネットワーク内でファンクションアズアサービス(FaaS)プラットフォームを提供する動作を実行させる1つまたは複数のコンピュータによって実行される命令で符号化された1つまたは複数の非一時的コンピュータ可読記憶媒体であって、前記動作が、
前記ブロックチェーンネットワーク内の第1のブロックチェーンノードが、前記ブロックチェーンネットワーク内の前記第1のブロックチェーンノードまたは第2のブロックチェーンノードに関連するスマートコントラクトを使用してトランザクションを実行するための要求を開始することと、
前記スマートコントラクトが、前記トランザクションを実行するための前記要求を受信することと、
前記スマートコントラクトが、実行されるべき前記トランザクションの第1の関数を決定することと、
前記ブロックチェーンネットワーク内で実行する第1の関数コントローラが、前記トランザクションの前記第1の関数を実行するための第1の関数呼出しを前記スマートコントラクトから受信することであって、前記第1の関数呼出しが実行のための前記第1の関数呼出しのデータを含む、受信することと、
前記第1の関数コントローラが、実行のための前記第1の関数呼出しの前記データを第1の関数構成要素に送信することと、
前記第1の関数構成要素が、実行のための前記第1の関数呼出しの前記データに基づいて前記トランザクションの前記第1の関数を実行することと、
前記第1の関数コントローラが、第1の関数実行結果を前記第1の関数構成要素から受信することと、
前記スマートコントラクトによる前記第1の関数実行結果に少なくとも部分的に基づく前記トランザクションの実行の前に、前記第1の関数コントローラが、前記第1の関数実行結果を前記スマートコントラクトに提供することと
を含む、1つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項９】
前記第1の関数呼出しが、前記トランザクションの前記第1の関数のアドレスおよび前記トランザクションの前記第1の関数のバージョン識別子をさらに含む、請求項8に記載の1つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記トランザクションの前記第1の関数の前記バージョン識別子が、前記トランザクションの前記第1の関数の最新バージョンが実行されるべきであることを指示するヌルである、請求項9に記載の1つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記動作が、前記第1の関数コントローラが、前記第1の関数呼出しに応じて実行された前記トランザクションの前記第1の関数のバージョンに関連する統計を更新することをさらに含む、請求項8に記載の1つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記統計が、前記トランザクションの前記第1の関数の各バージョンが実行されている回数を指示する、請求項11に記載の1つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記動作が、
前記ブロックチェーンネットワーク内で実行する第2の関数コントローラが、前記トランザクションの第2の関数を実行するための第2の関数呼出しを前記スマートコントラクトから受信することであって、前記第2の関数呼出しが実行のための前記第2の関数呼出しのデータを含み、前記トランザクションの前記第2の関数が前記トランザクションの前記第1の関数とは異なり、前記第2の関数コントローラが前記第1の関数コントローラとは異なる、受信することと、
前記第2の関数コントローラが、実行のための前記第2の関数呼出しの前記データを第2の関数構成要素に送信することであって、前記第2の関数構成要素が前記第1の関数構成要素とは異なる、送信することと、
前記第2の関数構成要素が、実行のための前記第2の関数呼出しの前記データに基づいて前記トランザクションの前記第2の関数を実行することと、
前記第2の関数コントローラが、第2の関数実行結果を前記第2の関数構成要素から受信することと、
前記スマートコントラクトによる前記第2の関数実行結果に少なくとも部分的に基づく前記トランザクションの実行の前に、前記第2の関数コントローラが、前記第2の関数実行結果を前記スマートコントラクトに提供することと
をさらに含む、請求項8に記載の1つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記トランザクションの前記第1の関数および前記トランザクションの前記第2の関数が異なるプロバイダによって提供される、請求項13に記載の1つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１５】
システムであって、
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに結合され、ブロックチェーンネットワーク内でファンクションアズアサービス(FaaS)プラットフォームを提供する動作を実行するために前記1つまたは複数のコンピュータによって実行される命令で記憶された、1つまたは複数のメモリと
を備え、前記動作が、
前記ブロックチェーンネットワーク内の第1のブロックチェーンノードが、前記ブロックチェーンネットワーク内の前記第1のブロックチェーンノードまたは第2のブロックチェーンノードに関連するスマートコントラクトを使用してトランザクションを実行するための要求を開始することと、
前記スマートコントラクトが、前記トランザクションを実行するための前記要求を受信することと、
前記スマートコントラクトが、実行されるべき前記トランザクションの第1の関数を決定することと、
前記ブロックチェーンネットワーク内で実行する第1の関数コントローラが、前記トランザクションの前記第1の関数を実行するための第1の関数呼出しを前記スマートコントラクトから受信することであって、前記第1の関数呼出しが実行のための前記第1の関数呼出しのデータを含む、受信することと、
前記第1の関数コントローラが、実行のための前記第1の関数呼出しの前記データを第1の関数構成要素に送信することと、
前記第1の関数構成要素が、実行のための前記第1の関数呼出しの前記データに基づいて前記トランザクションの前記第1の関数を実行することと、
前記第1の関数コントローラが、第1の関数実行結果を前記第1の関数構成要素から受信することと、
前記スマートコントラクトによる前記第1の関数実行結果に少なくとも部分的に基づく前記トランザクションの実行の前に、前記第1の関数コントローラが、前記第1の関数実行結果を前記スマートコントラクトに提供することと
を含む、システム。
【請求項１６】
前記第1の関数呼出しが、前記トランザクションの前記第1の関数のアドレスおよび前記トランザクションの前記第1の関数のバージョン識別子をさらに含む、請求項15に記載のシステム。
【請求項１７】
前記トランザクションの前記第1の関数の前記バージョン識別子が、前記トランザクションの前記第1の関数の最新バージョンが実行されるべきであることを指示するヌルである、請求項16に記載のシステム。
【請求項１８】
前記動作が、前記第1の関数コントローラが、前記第1の関数呼出しに応じて実行された前記トランザクションの前記第1の関数のバージョンに関連する統計を更新することをさらに含む、請求項15に記載のシステム。
【請求項１９】
前記統計が、前記トランザクションの前記第1の関数の各バージョンが実行されている回数を指示する、請求項18に記載のシステム。
【請求項２０】
前記動作が、
前記ブロックチェーンネットワーク内で実行する第2の関数コントローラが、前記トランザクションの第2の関数を実行するための第2の関数呼出しを前記スマートコントラクトから受信することであって、前記第2の関数呼出しが実行のための前記第2の関数呼出しのデータを含み、前記トランザクションの前記第2の関数が前記トランザクションの前記第1の関数とは異なり、前記第2の関数コントローラが前記第1の関数コントローラとは異なる、受信することと、
前記第2の関数コントローラが、実行のための前記第2の関数呼出しの前記データを第2の関数構成要素に送信することであって、前記第2の関数構成要素が前記第1の関数構成要素とは異なる、送信することと、
前記第2の関数構成要素が、実行のための前記第2の関数呼出しの前記データに基づいて前記トランザクションの前記第2の関数を実行することと、
前記第2の関数コントローラが、第2の関数実行結果を前記第2の関数構成要素から受信することと、
前記スマートコントラクトによる前記第2の関数実行結果に少なくとも部分的に基づく前記トランザクションの実行の前に、前記第2の関数コントローラが、前記第2の関数実行結果を前記スマートコントラクトに提供することと
をさらに含む、請求項15に記載のシステム。
【請求項２１】
前記トランザクションの前記第1の関数および前記トランザクションの前記第2の関数が異なるプロバイダによって提供される、請求項20に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックチェーンネットワーク内のファンクションアズアサービス（ＦａａＳ）プラットフォームに関する。
【背景技術】
【０００２】
コンセンサスネットワークおよび/またはブロックチェーンネットワークと呼ばれることもある分散元帳システム(DLS:Distributed ledger systems)は、参加エンティティがデータをセキュアに不変に記憶することを可能にする。DLSは、一般に、いずれの特定の使用事例(たとえば、暗号通貨)とも無関係に、ブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークの例示的なタイプは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークを含み得る。パブリックブロックチェーンネットワークは、すべてのエンティティがDLSを使用し、コンセンサスプロセスに参加するために開かれる。プライベートブロックチェーンネットワークは、読取り許可および書込み許可を中央で制御する特定のエンティティに提供される。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御するエンティティのえり抜きのグループに提供され、アクセス制御レイヤを含む。
【０００３】
スマートコントラクトは、ブロックチェーンネットワーク内で実行して、1つまたは複数の関数を実行することができる。スマートコントラクトは、コード化関数を含むモノリシックアプリケーションとして説明される場合がある。モノリシックアプリケーションとして、スマートコントラクト(たとえば、各関数のコーディング、スマートコントラクト全体の更新をもたらす、関数の更新)をサポートするために、比較的ロバストな開発動作が必要とされる場合がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書の実装形態は、ブロックチェーンネットワーク内にアプリケーションをプロビジョニングするためのコンピュータ実装方法を含む。より詳細には、本明細書の実装形態は、ブロックチェーンネットワーク内で実行するアプリケーションに関数をプロビジョニングするためのファンクションアズアサービス(FaaS:function-as-a-service)プラットフォームを対象とする。
【０００５】
いくつかの実装形態では、活動は、ブロックチェーンネットワーク内で実行する第1の関数コントローラが、第1の関数を実行するための第1の関数呼出しをスマートコントラクトから受信するステップであって、第1の関数呼出しが第1の関数の実行のためのデータを含む、受信するステップと、第1の関数コントローラが、第1の関数呼出しのデータを第1の関数構成要素に送信するステップであって、第1の関数構成要素が第1の関数呼出しのデータに基づいて第1の関数を実行する、送信するステップと、第1の関数コントローラが、第1の関数結果を第1の関数構成要素から受信するステップと、第1の関数コントローラが、第1の関数結果をスマートコントラクトに提供するステップとを含む。他の実装形態は、コンピュータ記憶デバイス上で符号化された、これらの方法の活動を実行するように構成された、対応するシステム、装置、およびコンピュータプログラムを含む。
【０００６】
これらのおよび他の実装形態は、各々、以下の特徴のうちの1つまたは複数を随意に含み得る:第1の関数呼出しは、第1の関数のアドレスおよび第1の関数のバージョン識別子をさらに含む;バージョン識別子は、第1の関数の最新バージョンが実行されるべきであることを指示するヌルである;活動は、第1の関数コントローラが、第1の関数呼出しに応じて実行された第1の関数のバージョンに関連する統計を更新するステップをさらに含む;統計は、第1の関数の各バージョンが実行されている回数を指示する;活動は、ブロックチェーンネットワーク内で実行する第2の関数コントローラが、第2の関数を実行するための第2の関数呼出しをスマートコントラクトから受信するステップであって、第2の関数呼出しが第2の関数の実行に関するデータを含む、受信するステップであって、第2の関数が第1の関数とは異なり、第2の関数コントローラが第1の関数コントローラとは異なる、受信するステップと、第2の関数コントローラが、第2の関数呼出しのデータを第2の関数構成要素に送信するステップであって、第2の関数構成要素が第2の関数呼出しのデータに基づいて第2の関数を実行し、第2の関数構成要素が第1の関数構成要素とは異なる、送信するステップと、第2の関数コントローラが第2の関数構成要素から生じる第2の関数を受信するステップと、第2の関数コントローラが、第2の関数結果をスマートコントラクトに提供するステップとをさらに含む;第1の関数および第2の関数は異なるプロバイダによって提供される;スマートコントラクトは関数結果に少なくとも部分的に基づいてトランザクションを実行する、トランザクションはブロックチェーンネットワーク内のブロックチェーン内に記録されている。
【０００７】
本明細書はまた、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供する方法の実装形態による動作を実行させる命令を記憶した、1つまたは複数の非一時的コンピュータ可読記憶媒体を提供する。
【０００８】
本明細書は、本明細書で提供する方法を実装するためのシステムをさらに提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると1つまたは複数のプロセッサに本明細書で提供する方法の実装形態に従って動作を実行させる命令を記憶した、1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含む。
【０００９】
本明細書によるこれらの方法は、本明細書で説明する態様および特徴の任意の組合せを含み得ることが諒解される。すなわち、本明細書による方法は、本明細書で詳細に説明する態様および特徴の組合せに限定されず、提供する態様および特徴の任意の組合せをやはり含む。
【００１０】
本明細書の1つまたは複数の実装形態の詳細が、添付の図面および下記の説明に記載される。本明細書の他の特徴および利点は、説明および図面から、また特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】本明細書の実装形態を実行するために使用され得る例示的な環境を示す図である。
【図２】本明細書の実装形態による例示的な概念アーキテクチャを示す図である。
【図３】本明細書の実装形態による、ファンクションアズアサービス(FaaS)プラットフォームに対する例示的な概念アーキテクチャを示す図である。
【図４】本明細書の実装形態による、構成要素間の通信を示すスイムレーン図である。
【図５】本明細書の実装形態に従って実行され得る例示的なプロセスを示す図である。
【発明を実施するための形態】
【００１２】
様々な図面における同様の参照番号は、同様の要素を示す。
【００１３】
本明細書の実装形態は、ブロックチェーンネットワーク内にアプリケーションをプロビジョニングするためのコンピュータ実装方法を含む。より詳細には、本明細書の実装形態は、ブロックチェーンネットワーク内で実行するアプリケーションに関数をプロビジョニングするためのファンクションアズアサービス(FaaS)プラットフォームを対象とする。いくつかの実装形態では、活動は、ブロックチェーンネットワーク内で実行する関数コントローラが、関数を実行するための関数呼出しをスマートコントラクトから受信するステップであって、関数呼出しが関数の実行のためのデータを含む、受信するステップと、関数コントローラが、関数呼出しのデータを関数構成要素に送信するステップであって、関数構成要素が関数呼出しのデータに基づいて関数を実行する、送信するステップと、関数コントローラが、関数結果を関数構成要素から受信するステップと、関数コントローラが、関数結果をスマートコントラクトに提供するステップとを含む。
【００１４】
本明細書の実装形態に関してさらなる文脈を提供するために、上記で紹介したように、(たとえば、ピアツーピアノードで構成された)コンセンサスネットワークおよびブロックチェーンネットワークと呼ばれることもある分散元帳システム(DLS)は、参加エンティティが、トランザクションをセキュアに不変に行い、データを記憶することを可能にする。ブロックチェーンという用語は、概して、ビットコイン暗号通貨ネットワークに関連付けられるが、ブロックチェーンは、本明細書において、任意の特定の使用事例とは無関係に、概してDLSを指すために使用される。上記で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。
【００１５】
パブリックブロックチェーンネットワークでは、コンセンサスプロセスはコンセンサスネットワークのノードによって制御される。たとえば、数百のエンティティ、数千のエンティティ、数百万のエンティティですら、パブリックブロックチェーンネットワーク内で協働することができ、エンティティは各々、パブリックブロックチェーンネットワーク内の少なくとも1つのノードを動作させる。したがって、パブリックブロックチェーンネットワークは、参加エンティティに対してパブリックネットワークと見なされ得る。いくつかの例では、大部分のエンティティ(ノード)は、ブロックを有効化させ、ブロックチェーンネットワークのブロックチェーン(分散元帳)に追加するために、すべてのブロックに署名しなければならない。例示的なパブリックブロックチェーンネットワークは、ピアツーピア支払いネットワークであるビットコインネットワークを含む。ビットコインネットワークは、ブロックチェーンと呼ばれる分散元帳を活用する。上記のように、ブロックチェーンという用語は、しかしながら、概して、ビットコインネットワークとは特に無関係に分散元帳を指すために使用される。
【００１６】
概して、パブリックブロックチェーンネットワークは、公開トランザクションをサポートする。公開トランザクションは、パブリックブロックチェーンネットワーク内のノードのすべてと共有され、グローバルブロックチェーン内に記憶される。グローバルブロックチェーンは、すべてのノードにわたって複製されるブロックチェーンである。すなわち、すべてのノードは、グローバルブロックチェーンに関して完全な状態コンセンサスである。コンセンサス(たとえば、ブロックチェーンに対してブロックを追加する合意)を達成するために、パブリックブロックチェーンネットワーク内でコンセンサスプロトコルが実装される。例示的なコンセンサスプロトコルは、限定はしないが、ビットコインネットワーク内で実装されるプルーフオブワーク(POW:proof-of-work)を含む。
【００１７】
概して、プライベートブロックチェーンネットワークは、読取り許可および書込み許可を中央で制御する特定のエンティティに提供される。エンティティは、どのノードがブロックチェーンネットワークに参加することが可能であるかを制御する。したがって、プライベートブロックチェーンネットワークは、概して、誰がネットワークに参加することが可能にされるか、およびそれらの参加レベル(たとえば、一定のトランザクションのみ)に制限を設ける、許可されたネットワークを指す。様々なタイプのアクセス制御機構が使用され得る(たとえば、既存の参加者は、新しいエンティティの追加に投票する、規制当局は、承認を制御し得る)。
【００１８】
概して、コンソーシアムブロックチェーンネットワークは、参加エンティティ間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、許可されたノードのセットによって制御され、1つまたは複数のノードは、それぞれのエンティティ(たとえば、金融機関、保険会社)によって動作させられる。たとえば、10個のエンティティのコンソーシアム(たとえば、金融機関、保険会社)は、コンソーシアムブロックチェーンネットワークを動作させることができ、エンティティの各々は、コンソーシアムブロックチェーンネットワーク内で少なくとも1つのノードを動作させる。したがって、コンソーシアムブロックチェーンネットワークは、参加エンティティに対してプライベートネットワークと見なされ得る。いくつかの例では、各エンティティ(ノード)は、ブロックを有効化させ、ブロックチェーンに追加するために、すべてのブロックに署名しなければならない。いくつかの例では、エンティティ(ノード)の少なくともサブセット(たとえば、少なくとも7個のエンティティ)は、ブロックを有効化させ、ブロックチェーンに追加するために、すべてのブロックに署名しなければならない。
【００１９】
本明細書の実装形態は、参加するエンティティの間で公開されているパブリックブロックチェーンネットワークを参照して、本明細書でさらに詳細に説明される。しかしながら、本明細書の実装形態は、任意の適したタイプのブロックチェーンネットワーク内で実現され得ることが企図される。本明細書で説明する技法はパブリックブロックチェーンネットワークに関連するとして指示されるが、これらの技法は、変更の有無にかかわらず、プライベートブロックチェーンネットワークおよびコンソーシアムブロックチェーンネットワークを含めて、他のタイプのブロックチェーンネットワーク内で使用されてもよい。
【００２０】
本明細書の実装形態は、上記の文脈に鑑みて本明細書でさらに詳細に説明される。より詳細には、上で紹介したように、本明細書の実装形態は、ブロックチェーンネットワーク内で実行するアプリケーションに関数をプロビジョニングするためのFaaSプラットフォームを対象とする。このようにして、開発者は、比較的軽い(たとえば、コーディングの点で)アプリケーション(たとえば、スマートコントラクト)を開発することができ、本明細書のFaaSプラットフォームによって1つまたは複数の関数を呼び出すことができる。
【００２１】
本明細書の実装形態に関してさらなる文脈を提供するために、ブロックチェーンネットワーク内で、ブロックチェーンネットワーク内で実行するためのアプリケーションが開発、テスト、および展開され得る。例示的なアプリケーションは、限定はしないが、スマートコントラクトを含み得る。スマートコントラクトは、様々な当事者に影響を及ぼす契約条項を有する、現実世界の法的契約のデジタル表現として説明される場合がある。スマートコントラクトは、例示的な文脈で、コンソーシアムブロックチェーンネットワーク内で実装、記憶、更新(必要に応じて)、および実行される。スマートコントラクトに関連する契約当事者(たとえば、買い手および売り手)は、コンソーシアムブロックチェーンネットワーク内のノードとして表現される。
【００２２】
いくつかの例では、スマートコントラクトは、情報、事実、関連性、バランス、および契約実行のための論理を実装するために必要な任意の他の情報を記録するために使用され得るデータを記憶することができる。スマートコントラクトは、スマートコントラクトのインスタンスを作成することができ、その中で論理を実行するための関数が呼び出される、関数からなるコンピュータ実行可能プログラムとして説明される場合がある。
【００２３】
スマートコントラクトという技術用語は、オブジェクトクラスおよびオブジェクト指向クラスに基づいて実装され得る。たとえば、スマートコントラクトの条件および構成要素は、スマートコントラクトを実装するアプリケーションによって処理されるオブジェクトとして表現され得る。スマートコントラクト(または、スマートコントラクト内のオブジェクト)は、他のオブジェクト指向オブジェクトとまったく同様に別のスマートコントラクト(または、同じスマートコントラクト内のオブジェクト)を呼び出すことができる。オブジェクトによって行われる呼出しは、たとえば、別のクラスのオブジェクトを作成すること、更新すること、削除すること、伝搬すること、またはそれらのオブジェクトと通信するための呼出しであり得る。オブジェクト間の呼出しは、関数、方法、アプリケーションプログラミングインターフェース(API)、または他の呼出し機構として実装され得る。たとえば、第1のオブジェクトは、第2のオブジェクトを作成するための関数を呼び出すことができる。
【００２４】
統合開発環境(IDE)を使用して、ブロックチェーンネットワークに対するスマートコントラクトなどのアプリケーションを開発、テスト、および展開することができる。例示的なIDEは、スマートコントラクトをSolidityで作成するための、スイス、ツークのEthereum Foundationによって提供されるRemix IDEを含む。
【００２５】
図1は、本明細書の実装形態を実行するために使用され得る例示的な環境100を示す。いくつかの例では、例示的な環境100は、エンティティがプライベートブロックチェーンネットワーク102に参加することを可能にする。例示的な環境100は、コンピューティングシステム106、108と、ネットワーク110とを含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはこれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、有線および/またはワイヤレス通信リンクを介してアクセスされ得る。
【００２６】
示した例では、コンピューティングシステム106、108は、各々、プライベートブロックチェーンネットワーク102内のノードとして参加を可能にする任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスは、限定はしないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例では、コンピューティングシステム106、108は、プライベートブロックチェーンネットワーク102と対話するための1つまたは複数のコンピュータ実装サービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティ(たとえば、ユーザA)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなどの、第1のエンティティのコンピュータ実装サービスをホストし得る。コンピューティングシステム108は、第2のエンティティ(たとえば、ユーザB)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのそのトランザクションを管理するために使用するトランザクション管理システムなど、第2のエンティティのコンピュータ実装サービスをホストし得る。図1の例では、プライベートブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、プライベートブロックチェーンネットワーク102に参加する第1のエンティティおよび第2のエンティティのノードをそれぞれ提供する。
【００２７】
図2は、本明細書の実装形態による例示的な概念アーキテクチャ200を示す。例示的な概念アーキテクチャ200は、エンティティレイヤ202と、ホストされたサービスレイヤ204と、ブロックチェーンネットワークレイヤ206とを含む。示した例では、エンティティレイヤ202は3つのエンティティ、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)を含み、各エンティティは、それぞれのトランザクション管理システム208を有する。
【００２８】
示した例では、ホストされたサービスレイヤ204は、各トランザクション管理システム208に対するインターフェース210を含む。いくつかの例では、それぞれのトランザクション管理システム208は、プロトコル(たとえば、ハイパーテキストトランスファープロトコルセキュア(HTTPS))を使用してネットワーク(たとえば、図1のネットワーク110)を介してそれぞれのインターフェース210と通信する。いくつかの例では、各インターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンネットワークレイヤ206との間の通信接続を提供する。より詳細には、インターフェース210は、ブロックチェーンネットワークレイヤ206のブロックチェーンネットワーク212と通信する。いくつかの例では、インターフェース210とブロックチェーンネットワークレイヤ206との間の通信はリモートプロシージャコール(RPC:remote procedure calls)を使用して行われる。いくつかの例では、インターフェース210は、それぞれのトランザクション管理システム208に対してブロックチェーンネットワークノードを「ホストする」。たとえば、インターフェース210は、ブロックチェーンネットワーク212にアクセスするためのアプリケーションプログラミングインターフェース(API)を提供する。
【００２９】
本明細書で説明するように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を不変に記録する複数のノード214を含む、ピアツーピアネットワークとして提供される。単一のブロックチェーン216が概略的に示されているが、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。たとえば、各ノード214は、ブロックチェーンのコピーを記憶する。いくつかの実装形態では、ブロックチェーン216は、プライベートブロックチェーンネットワークに参加する2つ以上のエンティティの間で実行されるトランザクションに関連する情報を記憶する。
【００３０】
図3は、本明細書の実装形態による、FaaSプラットフォーム300に対する例示的な概念アーキテクチャを示す。本明細書でさらに詳細に説明するように、FaaSプラットフォーム300は、図3のスマートコントラクト302など、スマートコントラクトの実行をサポートする関数をプロビジョニングするために使用される。いくつかの例では、スマートコントラクト302は、ブロックチェーンのブロック304内に記録されるトランザクションを実行することができる。
【００３１】
図3の例では、FaaSプラットフォーム300は、たとえば、スマートコントラクト302の実行を促進する活動を開始するノードであり得るトランザクションイニシエータ306を含む。たとえば、トランザクションイニシエータ306は、スマートコントラクト302の実行を誘発するための要求308を送ることができる。いくつかの例では、スマートコントラクト302は、要求を受信し、スマートコントラクト302内にプログラムされた論理を実行する。本明細書の実装形態によれば、論理は、FaaSプラットフォーム300の1つまたは複数の関数アプリケーション312に対する呼出しを含み得る。
【００３２】
いくつかの例では、関数アプリケーション312の各々は、それぞれの関数プロバイダ310によって提供される。たとえば、関数プロバイダ310は、入力を受信し、関数を実行し、出力を提供するための関数アプリケーションを開発するエンティティ(たとえば、開発者)を含み得る。いくつかの例では、各関数アプリケーション312は、関数コントローラ314と、1つまたは複数の関数316、318、320(関数コード)とを含む。関数プロバイダ310は、関数(たとえば、関数316)の初期バージョンを提供することができ、その関数を更新して後続のバージョン(たとえば、関数318、320)を提供することができる。
【００３３】
いくつかの実装形態では、スマートコントラクト302は、スマートコントラクト302が関数を呼び出すポイントまで実行する。スマートコントラクト302は、関数呼出しをそれぞれの関数アプリケーション312に送り、その呼出しは関数アプリケーション312によって処理されるべき入力を含む。関数呼出しは、それぞれの関数コントローラ314によって受信される。関数コントローラ314は、入力を関数316、318、320の適切なバージョンに経路指定する。入力を受信する関数316、318、320は、入力を処理して出力を提供し、出力はスマートコントラクト302に送り返される。
【００３４】
いくつかの実装形態では、FaaSプラットフォーム300によって提供される関数アプリケーションは、ブロックチェーン内に記憶され、FaaSプラットフォーム300に登録される。いくつかの例では、登録は、関数の情報をユーザ(たとえば、スマートコントラクトの開発者)に明らかにする。例示的な情報は、限定はしないが、プロバイダ310の識別子、関数の記述、関数のバージョン、および関数の統計(たとえば、各バージョンが呼び出された回数)を含み得る。ユーザは、たとえば、各関数に関連する信頼レベルの指示として情報を使用することができる。たとえば、スマートコントラクトを開発するユーザは、登録を検討し、必要とされる関数を識別することができ、関数を呼び出すようにスマートコントラクトをプログラムすることができる。
【００３５】
以下は、本明細書の実装形態による、FaaSプラットフォームの設計および使用を示すための非限定的な例である。FaaSプロバイダ(たとえば、図3の関数プロバイダ310)とも呼ばれる、1つまたは複数の関数プロバイダは、1つまたは複数のコンピュータ実行可能関数を提供する。たとえば、関数プロバイダは、関数を実行するためのコンピュータ実行可能コードを開発することができ、関数は、入力を受信し、入力を処理し、出力を提供する。例示的な関数は、限定はしないが、任意の長さのメッセージを入力として受信し、チェックサムを出力として(たとえば、128ビット(16オクテット)チェックサム)を製作するRivest-Shamir-Adleman(RSA)チェックサム関数を含み得る。いくつかの例では、関数は純粋関数である。すなわち、この関数は、状態情報を伴わない、繰返し可能な呼出しおよび/またはネスト呼出しである。
【００３６】
いくつかの実装形態では、関数に対して(FaaSコントローラとも呼ばれる)関数コントローラ(図3の関数コントローラ314)が提供される。いくつかの例では、関数コントローラおよび関数はともに、FaaSアプリケーション(たとえば、図3の関数アプリケーション312)とも呼ばれる関数アプリケーションを形成する。いくつかの例では、関数コントローラは、関数のバージョンに関する統計および記憶、ならびに呼出し情報を処理する。下のTable 1(表1)は、関数コントローラによって記憶された例示的な情報を示す。
【００３７】
【表１】
0006756914.tif 000002
【００３８】
いくつかの実装形態では、関数が製作使用の準備を整えたとき、関数プロバイダは、関数(コンピュータ実行可能関数コードとして)をブロックチェーンネットワークに提出し、関数コードにブロックチェーンネットワーク内の一意のアドレスが割り当てられる(たとえば、23d61f4a88f90be1290c0eeab344992e1a2e8f6d)。いくつかの例では、関数コントローラは、ブロックチェーンネットワークにも提出され、ブロックチェーンネットワーク内のその独自の一意のアドレスが割り当てられる。いくつかの例では、関数が最初にブロックチェーンネットワークに提出されるとき、最新バージョン値(たとえば、latestVersion)はデフォルト(たとえば、1.0.0)に設定される。いくつかの例では、関数はアドレスおよびバージョン値(たとえば、23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0)に基づいてバージョンマップ内に記録され、関数に関する統計は空である。
【００３９】
いくつかの実装形態では、FaaSプラットフォームの1つまたは複数の関数を呼び出す、1つまたは複数のスマートコントラクト(たとえば、スマートコントラクト302)を作成することができる。いくつかの例では、スマートコントラクトを作成するユーザは、関連する関数情報(たとえば、記述、アドレス、バージョン、統計)を有する利用可能な関数のライブラリを閲覧することができ、1つまたは複数の関数を呼び出すようにスマートコントラクトをプログラムし得る。たとえば、スマートコントラクトは、上記で紹介した例示的なRSAチェックサム関数を呼び出す論理を含み得る。いくつかの例では、スマートコントラクトは、呼び出されるべき関数のバージョン(たとえば、1.0.0)を指示するバージョン識別子を含み得る。いくつかの例では、バージョン識別子は、空(すなわち、ヌル)であり得、これは関数の最新バージョンが呼び出されるべきであることを指示する。いくつかの実装形態では、スマートコントラクトが完了し、使用準備が整った後で、スマートコントラクトはブロックチェーンネットワークに提出され、スマートコントラクトはブロックチェーンネットワーク内の一意のアドレス(たとえば、39a1509440f8c549dfd6e995def14b1ce3c98e5d)が割り当てられる。
【００４０】
いくつかの実装形態では、関数コードに対する最終的なアップグレード(update)の影響がスマートコントラクトの実行論理に影響を及ぼす衝撃を防ぐために、関数コントローラのバージョンマップ(versionMap)が更新される。上記の非限定的な例を続けると、RSAチェックサム関数に対する関数アプリケーションのバージョンマップは、以下に更新される:
{
"39a1509440f8c549dfd6e995def14b1ce3c98e5d"
:"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0"
}
これは、例示的なスマートコントラクトが例示的なRSAチェックサム関数の第1のバージョンを使用することを指示する。すなわち、関数の第1のバージョンは、常に、特定のスマートコントラクトが関数を呼び出すときに使用されることになる。
【００４１】
図4は、本明細書の実装形態による、構成要素間の通信を示すスイムレーン図400である。本明細書の実装形態によれば、スマートコントラクトを使用するトランザクションを開始する(402)。たとえば、ブロックチェーンネットワーク内のノード(たとえば、自動的に、またはトランザクションイニシエータ404としてサーブするユーザによって促進される)は、スマートコントラクト(たとえば、スマートコントラクト406)を使用してトランザクションを開始することができる。スマートコントラクトは、トランザクションを完了するために必要とされる関数を識別する(408)。いくつかの例では、スマートコントラクトの論理の実行の間に、1つまたは複数のFaaSアプリケーション412に対して1つまたは複数の関数呼出しを行うことができる(410)。各FaaSアプリケーション412は、FaaSコントローラ414とFaaSコード416とを含む。FaaSアプリケーション412は、各プロバイダに対して存在し得る。
【００４２】
上記の例を引き続き参照すると、スマートコントラクトは、RASチェックサム値に関する関数呼出し410を送信することができる。いくつかの例では、関数呼出しは、FaaSコード416によって実行するために関数コントローラ414によって受信される。いくつかの例では、関数呼出しは、関数に対する入力およびバージョン変数を含み、バージョン変数は、実行されるべき関数のバージョンを指示する。いくつかの例では、関数呼出しは、実行されるべきバージョンを指定せず(たとえば、バージョン値はヌルである)、その場合、関数の最新バージョンが使用される。
【００４３】
関数コントローラは、入力(たとえば、メッセージ)を処理して出力(たとえば、チェックサム値)を提供する。関数要求418は、FaaSコード416でできている。上述のように、関数応答420において、関数の指定バージョンまたは関数の最新バージョンが実行される。さらに、関数の実行されたバージョンに対応する呼出し統計マップカウント値が更新される422(たとえば、増分される)。上記の例を続けると、初めに呼び出された後で、例示的なRSAチェックサム関数に対する統計コンテンツが以下として提供され得る:
{
"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0":1
}
【００４４】
関数結果424がスマートコントラクトに提供され、スマートコントラクトは、次いで、トランザクションを完了することができる(426)。ブロックチェーン(たとえば、ブロックチェーン430)はトランザクションを記録することができる(428)。確認432をトランザクションイニシエータ404に送ることができる。
【００４５】
ステップ410〜424のシーケンスを、スマートコントラクト406によって呼び出される各関数に対して繰り返すことができる。たとえば、スマートコントラクト406は、2つの異なるFaaSプロバイダから2つの関数を呼び出し、各々から関数結果を受信することができ、スマートコントラクト406はそれらの関数結果を使用してトランザクションを完了する。
【００４６】
いくつかの実装形態では、関数プロバイダは、前に提供された関数を更新することができる。たとえば、関数プロバイダは、関数の少なくとも一部分を記録して、実行を効率的に改善することができる(たとえば、より迅速に、より少ない演算リソース)。したがって、関数の後続のバージョンが提供され得る。上記の例を続けると、RSAチェックサム関数の第2のバージョンを提供し、ブロックチェーンネットワークに提出することができる。関数の第2のバージョンは、ブロックチェーンネットワーク内の一意のアドレス(たとえば、2aae6a1150787a834382d0202ef1e89e3bc89d4d)が割り当てられる。
関数コントローラ内の最終バージョン値(latestVersion)は、更新バージョンのアドレスおよびバージョン識別子(たとえば、2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0)を含むように更新される。
【００４７】
スマートコントラクトを使用する別のトランザクション(第2のトランザクション)が開始される。たとえば、上記の例を引き続き参照すると、スマートコントラクトは、RASチェックサム値に関する関数呼出しを送信することができる。いくつかの例では、関数呼出しは、関数コントローラによって受信される。いくつかの例では、関数呼出しは、関数に対する入力およびバージョン変数を含み、バージョン変数は、実行されるべき関数のバージョンを指示する。
【００４８】
いくつかの実装形態では、関数コントローラは、同じスマートコントラクト(たとえば、39a1509440f8c549dfd6e995def14b1ce3c98e5d)が関数呼出しを発行したことを認識する。したがって、関数の別のバージョン(たとえば、2.0.0)が利用可能であるが、関数の最後に使用されたバージョン(たとえば、1.0.0)が使用される。関数は、入力(たとえば、メッセージ)を処理して出力(たとえば、チェックサム値)を提供し、関数の実行されたバージョンに対応する呼出し統計マップカウント値が増分される。上記の例を続けると、2回目に呼び出された後で、例示的なRSAチェックサム関数に対する統計コンテンツが以下として提供され得る:
{
"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0":2
}
【００４９】
いくつかの実装形態では、スマートコントラクトは関数の他のバージョンを使用することができると判定され得る。たとえば、スマートコントラクトを発信し、特定のバージョン(たとえば、1.0.0)が使用されるべきであったことを指示したユーザは、スマートコントラクトの後続バージョン(たとえば、2.0.0)が十分であると判定することができる。したがって、ユーザは、バージョンマップ内のバージョン識別子を更新すること(たとえば、異なるバージョンを指定すること、またはバージョン識別子をヌルに設定すること)ができる。非限定的な例では、バージョン識別子はヌルに設定される。このようにして、スマートコントラクトが次回関数呼出しを行うとき、関数の最新バージョンが使用されることになる。
【００５０】
スマートコントラクトを使用する別のトランザクション(第3のトランザクション)が開始される。たとえば、上記の例を引き続き参照すると、スマートコントラクトは、RASチェックサム値に関する関数呼出しを送信することができる。いくつかの例では、関数呼出しは、関数コントローラによって受信される。いくつかの例では、関数呼出しは、関数に対する入力およびバージョン変数を含み、バージョン変数は、実行されるべき関数のバージョンを指示する。
【００５１】
いくつかの実装形態では、関数コントローラは、同じスマートコントラクト(たとえば、39a1509440f8c549dfd6e995def14b1ce3c98e5d)が関数呼出しを発行したが、バージョン識別子はヌルであることを認識する。したがって、関数の第1のバージョン(たとえば、1.0.0)が前に使用されているが、関数の最後に使用されたバージョン(たとえば、2.0.0)が使用される。関数は、入力(たとえば、メッセージ)を処理して出力(たとえば、チェックサム値)を提供し、関数の実行されたバージョンに対応する呼出し統計マップカウント値が増分される。上記の例を続けると、例示的なRSAチェックサム関数に対する統計コンテンツが以下として提供され得る:
{
"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0":2
"2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0":1
}
【００５２】
図5は、本明細書の実装形態に従って実行され得る例示的なプロセス500を示す。いくつかの実装形態では、例示的なプロセス500は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行され得る。
【００５３】
502において、トランザクションを開始する。たとえば、トランザクションは、ブロックチェーンネットワークの一部であるスマートコントラクトを使用することができる。トランザションは、自動的に開始されてよいか、またはトランザクションはユーザによって促進されてもよい。トランザクションは、たとえば、ユーザがスマートコントラクト内で使用するための乱数を生成するために使用しているトランザクションであり得る。
【００５４】
504において、スマートコントラクトは関数を呼び出す。一例として、関数呼出し410は、FaaSプラットフォームによって提供される乱数生成器関数を呼び出すためなどに行うことができる。いくつかの実装形態では、関数呼出しはさらに、関数のアドレスおよび関数のバージョン識別子を含み得る。たとえば、スマートコントラクト406は、関数呼出し410内に、関数に関連するブロックチェーン内のアドレス、および呼び出されるべき関数の特定のバージョンを識別するバージョン番号を含み得る。
【００５５】
506において、スマートコントラクトは結果を受信する。たとえば、FaaSアプリケーション412は、乱数関数によって判定される乱数など、関数結果424を提供し得る。508において、スマートコントラクトは、結果に基づいてトランザクションを完了する。一例として、乱数が受信された後で、スマートコントラクト406は、ユーザによって要求された乱数動作を完了することができる。510において、トランザクションはブロックチェーンに書き込まれる。たとえば、トランザクション428は記録され、乱数関数が別の時点で使用されていることを指示する統計を更新することができる。
【００５６】
説明した特徴は、デジタル電子回路の形で、またはコンピュータハードウェア、ファームウェア、ソフトウェアの形で、またはそれらの組合せの形で実装され得る。この装置は、プログラマブルプロセッサによって実行するために情報キャリア内で(たとえば、機械可読記憶デバイス内で)有形に実施されるコンピュータプログラム製品の形で実装され得、方法ステップは、入力データを操作し、出力を生成することによって、説明した実装形態の関数を実行するための命令のプログラムを実行するプログラマブルプロセッサによって実行され得る。説明した特徴は、データ記憶システムからデータおよび命令を受信し、データ記憶システムにデータおよび命令を送信するために結合された、少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含む、プログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラム内で有利に実装され得る。コンピュータプログラムは、一定の活動を実行するため、または一定の結果をもたらすためにコンピュータ内で直接的または間接的に使用され得る命令のセットである。コンピュータプログラムは、コンパイル型言語またはインタープリタ型言語を含めて、任意の形態のプログラミング言語で書き込まれてよく、コンピュータプログラムは、スタンドアロン型プログラムとして、またはモジュール、構成要素、サブルーチン、またはコンピューティング環境で使用するのに適した他のユニットを含めて、任意の形態で展開され得る。
【００５７】
命令のプログラムを実行するのに適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のコンピュータの唯一のプロセッサまたは複数のプロセッサのうちの1つを含む。概して、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信することになる。コンピュータの要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリとを含み得る。概して、コンピュータは、データファイルを記憶するための1つまたは複数の大容量記憶デバイスを含んでもよいか、またはそれと通信するように動作可能に結合されてもよく、そのようなデバイスは、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスク、磁気光学ディスク、および光ディスクを含む。コンピュータプログラム命令およびデータを有形に実施するのに適した記憶デバイスは、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスク、磁気光学ディスク、およびCD-ROMディスクおよびDVD-ROMディスクを含めて、すべての形態の非揮発性メモリを含む。プロセッサおよびメモリは、特定用途向け集積回路(ASIC)によって補完され得るか、またはその中に組み込まれ得る。
【００５８】
ユーザとの対話を提供するために、これらの特徴は、情報をユーザに表示するための、陰極線管(CRT)モニタまたは液晶ディスプレイ(LCD)モニタなどのディスプレイデバイスと、キーボードと、それによりユーザがコンピュータに入力を提供することができる、マウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータ上で実装され得る。
【００５９】
これらの特徴は、データサーバなどのバックエンド構成要素を含むか、もしくはアプリケーションサーバまたはインターネットサーバなどのミドルウェア構成要素を含むか、またはグラフィカルユーザインターフェースまたはインターネットブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含むか、あるいはそれらの任意の組合せを含む、コンピュータシステム内で実装され得る。このシステムの構成要素は、通信ネットワークなど、任意の形態または媒体のデジタルデータ通信によって接続され得る。通信ネットワークの例は、たとえば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、ならびにコンピュータおよびインターネットを形成するネットワークを含む。
【００６０】
コンピュータシステムは、クライアントとサーバとを含み得る。クライアントおよびサーバは、概して、互いから離れており、一般に、説明したネットワークなど、ネットワークを介して対話する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行し、互いに対してクライアント-サーバ関係を有するコンピュータプログラムにより生じる。
【００６１】
加えて、図に示した論理フローは、所望の結果を達成するために、示した特定の順序、または連続的順序を必要としない。加えて、他のステップを提供することができ、または説明したフローからステップをなくすことができ、説明したシステムに他の構成要素を追加すること、または説明したシステムから他の要素を除去することができる。したがって、他の実装形態が以下の特許請求の範囲内に入る。
【００６２】
本明細書のいくつかの実装形態について説明してきた。それでもなお、本明細書の精神および範囲から逸脱せずに、様々な修正を行うことが可能であることを理解されよう。したがって、他の実装形態が以下の特許請求の範囲内に入る。
【符号の説明】
【００６３】
100  環境
102  プライベートブロックチェーンネットワーク
106  コンピューティングシステム
108  コンピューティングシステム
110  ネットワーク
200  概念アーキテクチャ
202  エンティティレイヤ
204  ホストサービスレイヤ
206  ブロックチェーンネットワークレイヤ
208  各取引管理システム
210  インターフェース
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
300  FaaSプラットフォーム
302  スマートコントラクト
304  ブロック
306  トランザクションイニシエータ
308  要求
310  関数プロバイダ
312  機能アプリケーション
314  関数コントローラ
316  関数
318  関数
320  関数
400  スイムレーン図
404  トランザクションイニシエータ
410  関数呼出し
412  FaaSアプリケーション
414  FaaSコントローラ
416  FaaSコード
418  関数要求
420  関数応答
424  関数結果
430  ブロックチェーン
432  確認
500  プロセス
【図１】
0006756914.tif 000003
【図２】
0006756914.tif 000004
【図３】
0006756914.tif 000005
【図４】
0006756914.tif 000006
【図５】
0006756914.tif 000007