(57)【特許請求の範囲】
【請求項１】
ブロックチェーンアプリケーションをテストするための、コンピュータにより実施される方法であって、1つまたは複数のプロセッサによって実行され、
プロダクションブロックチェーンへの読出し専用アクセスを有するテストブロックチェーンコンテナをインスタンス化するステップと、
前記プロダクションブロックチェーンからテスト環境にブロックのセットをコピーして、テストブロックチェーンを用意するステップであって、前記テストブロックチェーンコンテナが前記テストブロックチェーンへの読出しおよび書込みアクセスを有する、ステップと、
ブロックチェーンアプリケーションのテストを実行するステップであって、前記テストの結果、前記テストブロックチェーンにテストブロックのセットが順次付加され、各テストブロックが少なくとも部分的にテストデータを含み、前記テストの実行中に前記プロダクションブロックチェーンにプロダクションブロックが付加される、ステップと
を含む、方法。
【請求項２】
プロダクションブロックチェーンコンテナが、用意され、前記プロダクションブロックチェーンへの読出しおよび書込みアクセスを有し、前記テストブロックチェーンへのアクセスをもたない、請求項1に記載の方法。
【請求項３】
ブロックチェーンネットワークに参加しているサーバシステム内で、前記プロダクションブロックチェーンコンテナが前記テストブロックチェーンコンテナと並列に用意される、請求項2に記載の方法。
【請求項４】
前記テスト中に、複数のノードが、前記テストブロックチェーンにテストブロックを付加するためのコンセンサスプロトコルを実行し、前記複数のノードの各ノードが、前記テストブロックチェーンのコピーを維持する、請求項1に記載の方法。
【請求項５】
前記テスト中に前記テストブロックチェーンに付加されたテストブロックを削除するステップと、
第2のテストを実行し、その結果、前記テストブロックチェーンにテストブロックの第2のセットが順次付加されるステップと
をさらに含む、請求項1に記載の方法。
【請求項６】
前記テストの終了に応答して、前記テストに参加している複数のノードの各ノードについて、テストブロックチェーンコンテナを終了させるステップをさらに含む、請求項1に記載の方法。
【請求項７】
1つまたは複数のプロセッサに結合され、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、ブロックチェーンアプリケーションをテストするための動作を実行させる命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記動作が、
プロダクションブロックチェーンへの読出し専用アクセスを有するテストブロックチェーンコンテナをインスタンス化すること、
前記プロダクションブロックチェーンからテスト環境にブロックのセットをコピーして、テストブロックチェーンを用意することであって、前記テストブロックチェーンコンテナが前記テストブロックチェーンへの読出しおよび書込みアクセスを有する、用意すること、および
ブロックチェーンアプリケーションのテストを実行することであって、前記テストの結果、前記テストブロックチェーンにテストブロックのセットが順次付加され、各テストブロックが少なくとも部分的にテストデータを含み、前記テストの実行中に前記プロダクションブロックチェーンにプロダクションブロックが付加される、実行すること
を含む、非一時的コンピュータ可読記憶媒体。
【請求項８】
プロダクションブロックチェーンコンテナが、用意され、前記プロダクションブロックチェーンへの読出しおよび書込みアクセスを有し、前記テストブロックチェーンへのアクセスをもたない、請求項7に記載のコンピュータ可読記憶媒体。
【請求項９】
ブロックチェーンネットワークに参加しているサーバシステム内で、前記プロダクションブロックチェーンコンテナが前記テストブロックチェーンコンテナと並列に用意される、請求項8に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記テスト中に、複数のノードが、前記テストブロックチェーンにテストブロックを付加するためのコンセンサスプロトコルを実行し、前記複数のノードの各ノードが、前記テストブロックチェーンのコピーを維持する、請求項7に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記動作が、
前記テスト中に前記テストブロックチェーンに付加されたテストブロックを削除すること、および
第2のテストを実行し、その結果、前記テストブロックチェーンにテストブロックの第2のセットが順次付加されること
をさらに含む、請求項7に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記動作が、前記テストの終了に応答して、前記テストに参加している複数のノードの各ノードについて、テストブロックチェーンコンテナを終了させることをさらに含む、請求項7に記載のコンピュータ可読記憶媒体。
【請求項１３】
システムであって、
コンピューティングデバイスと、
前記コンピューティングデバイスに結合され、前記コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに、ブロックチェーンアプリケーションをテストするための動作を実行させる命令を記憶したコンピュータ可読記憶デバイスと
を含み、前記動作が、
プロダクションブロックチェーンへの読出し専用アクセスを有するテストブロックチェーンコンテナをインスタンス化すること、
前記プロダクションブロックチェーンからテスト環境にブロックのセットをコピーして、テストブロックチェーンを用意することであって、前記テストブロックチェーンコンテナが前記テストブロックチェーンへの読出しおよび書込みアクセスを有する、用意すること、および
ブロックチェーンアプリケーションのテストを実行することであって、前記テストの結果、前記テストブロックチェーンにテストブロックのセットが順次付加され、各テストブロックが少なくとも部分的にテストデータを含み、前記テストの実行中に前記プロダクションブロックチェーンにプロダクションブロックが付加される、実行すること
を含む、システム。
【請求項１４】
プロダクションブロックチェーンコンテナが、用意され、前記プロダクションブロックチェーンへの読出しおよび書込みアクセスを有し、前記テストブロックチェーンへのアクセスをもたない、請求項13に記載のシステム。
【請求項１５】
ブロックチェーンネットワークに参加しているサーバシステム内で、前記プロダクションブロックチェーンコンテナが前記テストブロックチェーンコンテナと並列に用意される、請求項14に記載のシステム。
【請求項１６】
前記テスト中に、複数のノードが、前記テストブロックチェーンにテストブロックを付加するためのコンセンサスプロトコルを実行し、前記複数のノードの各ノードが、前記テストブロックチェーンのコピーを維持する、請求項13に記載のシステム。
【請求項１７】
前記動作が、
前記テスト中に前記テストブロックチェーンに付加されたテストブロックを削除すること、および
第2のテストを実行し、その結果、前記テストブロックチェーンにテストブロックの第2のセットが順次付加されること
をさらに含む、請求項13に記載のシステム。
【請求項１８】
前記動作が、前記テストの終了に応答して、前記テストに参加している複数のノードの各ノードについて、テストブロックチェーンコンテナを終了させることをさらに含む、請求項13に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
コンセンサスネットワークおよび/またはブロックチェーンネットワークとも呼ばれることのある分散型台帳システム(DLS)は、参加エンティティが安全かつ変更不可能にデータを記憶させることを可能にするものである。DLSは、特定のユーザ事例(例えば暗号通貨)に関係なく一般にブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークの例示的タイプとしては、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークがあり得る。パブリックブロックチェーンネットワークはオープンであり、あらゆるエンティティがDLSを使用し、コンセンサスプロセスに参加することができるようになっている。プライベートブロックチェーンネットワークは、特定のエンティティのために設けられ、この特定のエンティティが、読出し許可および書込み許可を中央制御する。コンソーシアムブロックチェーンネットワークは、選択された1群のエンティティのために設けられ、これらのエンティティがコンセンサスプロセスを制御し、コンソーシアムブロックチェーンネットワークはまた、アクセス制御層(access control layer)を含む。
【０００２】
ブロックチェーンネットワーク内で実行されるアプリケーション(これにはスマートコントラクトを含むことができる)を作成することができる。統合開発環境(IDE)があれば、アプリケーションの開発が可能である。例示的IDEとしては、Zug、SwitzerlandのEthereum Foundationによって提供される、Solidityでスマートコントラクトを作成するためのRemix IDEがある。場合によっては、IDEにより、例えばデバッグを目的としてスマートコントラクトをテストすることが可能である。しかし、テスト中、動作がプロダクションブロックチェーン上で実行される。この結果、テスト環境が不安定になり、プロダクション環境が汚染される。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の実施形態は、ブロックチェーンアプリケーションをテストするための、コンピュータにより実施される方法を含む。より詳細には、本開示の実施形態は、プロダクションブロックチェーンに影響を及ぼさずにアプリケーションをテストすることを可能にする、ブロックチェーンネットワーク用テストプラットフォームを対象とする。
【０００４】
いくつかの実施形態では、アクションは、プロダクションブロックチェーンへの読出し専用アクセスを有するテストブロックチェーンコンテナをインスタンス化すること、プロダクションブロックチェーンからテスト環境にブロックのセットをコピーして、テストブロックチェーンを用意することであって、テストブロックチェーンコンテナがテストブロックチェーンへの読出しおよび書込みアクセスを有する、用意すること、およびブロックチェーンアプリケーションのテストを実行することであって、テストの結果、テストブロックチェーンに、各テストブロックが少なくとも部分的にテストデータを含むテストブロックのセットが順次付加され、テストの実行中にプロダクションブロックチェーンにプロダクションブロックが付加される、実行することを含む。他の実施形態は、コンピュータ記憶デバイス上に符号化された方法のアクションを実施するように構成された、対応するシステム、装置、およびコンピュータプログラムを含む。
【０００５】
これらのまた他の実施形態は、それぞれが次の特徴のうちの1つまたは複数をオプションで含んでよい:プロダクションブロックチェーンコンテナが、用意され、プロダクションブロックチェーンへの読出しおよび書込みアクセスを有し、テストブロックチェーンへのアクセスをもたない;ブロックチェーンネットワークに参加しているサーバシステム内で、プロダクションブロックチェーンコンテナがテストブロックチェーンコンテナと並列に用意される;テスト中に、複数のノードが、テストブロックチェーンにテストブロックを付加するためのコンセンサスプロトコルを実行し、複数のノードの各ノードが、テストブロックチェーンのコピーを維持する;アクションは、テスト中にテストブロックチェーンに付加されたテストブロックを削除すること、および第2のテストを実行し、その結果、テストブロックチェーンにテストブロックの第2のセットが順次付加されること、をさらに含む;アクションは、テストの終了に応答して、テストに参加している複数のノードの各ノードについて、テストブロックチェーンコンテナを終了させることをさらに含む。
【０００６】
本開示は、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると本明細書において提供される方法の実施形態による動作を1つまたは複数のプロセッサに実施させる命令がその上に記憶された、1つまたは複数の非一時的コンピュータ可読記憶媒体も提供する。
【０００７】
本開示は、本明細書において提供される方法を実施するためのシステムをさらに提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると本明細書において提供される方法の実施形態による動作を1つまたは複数のプロセッサに実施させる命令がその上に記憶された、1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含む。
【０００８】
本開示による方法が、本明細書において説明する態様および特徴のどんな組合せも含み得ることが、理解されよう。すなわち、本開示による方法は、本明細書において具体的に説明する態様および特徴の組合せに限定されるのではなく、提供される態様および特徴のどんな組合せも含む。
【０００９】
本開示の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明内に記載される。本開示の他の特徴および利点が、説明および図面から、また特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【００１０】
【図１】本開示の実施形態を実行するために使用することのできる例示的環境を示す図である。
【図２】本開示の実施形態による例示的テストプラットフォームを示す図である。
【図３】例示的プロダクションブロックチェーン、および本開示の実施形態による例示的テストブロックチェーンを概略的に示す図である。
【図４】本開示の実施形態に従って実行することのできる例示的プロセスを示す図である。
【発明を実施するための形態】
【００１１】
さまざまな図面中の同様の参照符号は、同様の要素を示す。
【００１２】
本開示の実施形態は、ブロックチェーンアプリケーションをテストするための、コンピュータにより実施される方法を含む。より詳細には、本開示の実施形態は、プロダクションブロックチェーンに影響を及ぼさずにアプリケーションをテストすることを可能にする、ブロックチェーンネットワーク用テストプラットフォームを対象とする。いくつかの実施形態では、アクションは、プロダクションブロックチェーンへの読出し専用アクセスを有するテストブロックチェーンコンテナをインスタンス化すること、プロダクションブロックチェーンからテスト環境にブロックのセットをコピーして、テストブロックチェーンを用意することであって、テストブロックチェーンコンテナがテストブロックチェーンへの読出しおよび書込みアクセスを有する、用意すること、およびブロックチェーンアプリケーションのテストを実行することであって、テストの結果、テストブロックチェーンに、各テストブロックが少なくとも部分的にテストデータを含むテストブロックのセットが順次付加され、テストの実行中にプロダクションブロックチェーンにプロダクションブロックが付加される、実行することを含む。
【００１３】
本開示の実施形態にさらなる文脈を提供すべく、また上で紹介したように、コンセンサスネットワーク(例えばピアツーピアノードから成る)およびブロックチェーンネットワークとも呼ばれることのある分散型台帳システム(DLS)は、参加エンティティが安全かつ変更不可能にトランザクションを行い、データを記憶させることを可能にするものである。ブロックチェーンという用語は一般に、ビットコイン暗号通貨ネットワークと関連付けられるが、ブロックチェーンは、本明細書では、特定の使用事例に関係なく一般にDLSのことを指すのに使用される。上で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして設けられ得る。
【００１４】
パブリックブロックチェーンネットワークでは、コンセンサスプロセスがコンセンサスネットワークのノードによって制御される。例えば、数百のエンティティが、数千のエンティティが、数百万のエンティティでさえもが、パブリックブロックチェーンネットワークに協力することができ、その各々が、パブリックブロックチェーンネットワーク内の少なくとも1つのノードを運営する。したがって、パブリックブロックチェーンネットワークは、参加エンティティに関するパブリックなネットワークと見なすことができる。いくつかの例では、エンティティ(ノード)の大多数がどのブロックにも、ブロックが有効になりブロックチェーンネットワークのブロックチェーン(分散型台帳)に追加されるように、サインしなければならない。例示的パブリックブロックチェーンネットワークとしては、ビットコインネットワークがあり、それはピアツーピア支払い(peer-to-peer payment)ネットワークである。ビットコインネットワークは、ブロックチェーンと呼ばれる分散型台帳を利用する。しかし、上記したように、ブロックチェーンという用語は、ビットコインネットワークに関係なく一般に分散型台帳のことを指すのに使用される。
【００１５】
一般には、パブリックブロックチェーンネットワークは、パブリックトランザクションをサポートする。パブリックトランザクションは、パブリックブロックチェーンネットワーク内の全てのノードと共有され、またグローバルブロックチェーン(global blockchain)内に記憶される。グローバルブロックチェーンとは、全てのノードにわたって複製されるブロックチェーンである。すなわち、全てのノードは、グローバルブロックチェーンに対して完全なステートコンセンサス状態(perfect state consensus)にある。コンセンサス(例えばブロックチェーンにブロックを追加するという合意)を得るために、パブリックブロックチェーンネットワーク内でコンセンサスプロトコルが実施される。例示的コンセンサスプロトコルとしては、限定はしないが、ビットコインネットワーク内で実施されるプルーフオブワーク(POW)がある。
【００１６】
一般には、プライベートブロックチェーンネットワークは、特定のエンティティのために設けられ、この特定のエンティティが、読出し許可および書込み許可を中央制御する。エンティティは、どのノードがブロックチェーンネットワークに参加できるかを制御する。それゆえ、プライベートブロックチェーンネットワークは、一般に許可型ネットワーク(permissioned network)と呼ばれ、これは、誰がネットワークへの参加を許されるかに、またそれらの参加レベル(例えば、ある特定のトランザクションのみへの参加)に、制限を課すものである。さまざまなタイプのアクセス制御メカニズムを使用することができる(例えば、既存の参加者が新たなエンティティの追加に関して投票する、規制当局が受入れを制御することができる)。
【００１７】
一般には、コンソーシアムブロックチェーンネットワークは、参加エンティティの間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスが、権限付与されたノードのセットによって制御され、1つまたは複数のノードが、それぞれに対応するエンティティ(例えば金融機関、保険会社)によって運営されている。例えば、10個のエンティティ(例えば金融機関、保険会社)から成るコンソーシアムが、コンソーシアムブロックチェーンネットワークを運営することができ、その各々が、コンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを運営する。したがって、コンソーシアムブロックチェーンネットワークは、参加エンティティに関するプライベートなネットワークと見なすことができる。いくつかの例では、各エンティティ(ノード)がどのブロックにも、ブロックが有効になりブロックチェーンに追加されるように、サインしなければならない。いくつかの例では、エンティティ(ノード)の少なくともサブセット(例えば少なくとも7のエンティティ)がどのブロックにも、ブロックが有効となりブロックチェーンに追加されるように、サインしなければならない。
【００１８】
本開示の実施形態について、本明細書では、参加エンティティの間でパブリックであるコンソーシアムブロックチェーンネットワークに即してさらに詳細に説明する。しかし、本開示の実施形態がどんな適切なタイプのブロックチェーンネットワークにおいても実現できることが、企図される。
【００１９】
本開示の実施形態について、本明細書では、上記の文脈に鑑みてさらに詳細に説明する。より詳細には、また上で紹介したように、本開示の実施形態は、プロダクションブロックチェーンに影響を及ぼさずにアプリケーションをテストすることを可能にする、ブロックチェーンネットワーク用テストプラットフォームを対象とする。
【００２０】
図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)の、トランザクション管理システムなどのコンピュータにより実施されるサービスをホストすることができ、このトランザクション管理システムは、第2のエンティティがその、1つまたは複数の他のエンティティ(例えば他のユーザ)とのトランザクションを管理するために使用するものである。図1の例では、コンソーシアムブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表されており、コンピューティングシステム106、108はそれぞれ、第1のエンティティおよび第2のエンティティのノードとなっており、それらはコンソーシアムブロックチェーンネットワーク102に参加している。
【００２２】
コンソーシアムブロックチェーンネットワークなどのブロックチェーンネットワークでは、アプリケーションを、開発し、テストし、ブロックチェーンネットワーク内で実行できるようにデプロイすることができる。例示的アプリケーションとしては、限定はしないが、スマートコントラクトがあり得る。スマートコントラクトは、さまざまな当事者に影響を及ぼす契約条項を有する現実世界の適法契約の、デジタル表現と説明することができる。スマートコントラクトは、この例示的文脈においては、コンソーシアムブロックチェーンネットワーク内に実装され、記憶され、コンソーシアムブロックチェーンネットワーク内で(必要に応じて)更新され、実行される。スマートコントラクトに関連する契約当事者(例えば買い手および売り手)は、コンソーシアムブロックチェーンネットワーク内のノードとして表される。
【００２３】
いくつかの例では、スマートコントラクトはデータを記憶することができ、このデータは、情報、事実、関連付け、残高、および契約実行のための論理を実施するのに必要となる他の任意の情報を記録するために使用することができる。スマートコントラクトは、関数から成るコンピュータ実行可能プログラムと説明することができ、この場合、スマートコントラクトのインスタンスを作成し、その中の論理を実行するために関数を呼び出すことができる。
【００２４】
技術的な観点からいうと、スマートコントラクトは、オブジェクトおよびオブジェクト指向クラスに基づいて実装することができる。例えば、スマートコントラクトの条項およびコンポーネントを、スマートコントラクトを実装したアプリケーションによって取り扱われるオブジェクトとして表すことができる。スマートコントラクト(またはスマートコントラクト内のオブジェクト)は、他のオブジェクト指向オブジェクトのように、別のスマートコントラクト(または同じスマートコントラクト内のオブジェクト)を呼び出すことができる。オブジェクトによって行われる呼出しは、例えば、別のクラスのオブジェクトを作成する、更新する、削除する、伝搬させるための、または別のクラスのオブジェクトとやり取りするための、呼出しとすることができる。オブジェクト間の呼出しは、関数、メソッド、アプリケーションプログラミングインターフェース(API)、または他の呼出しメカニズムとして実装することができる。例えば、第1のオブジェクトが、第2のオブジェクトを作成するための関数を呼び出すことができる。
【００２５】
スマートコントラクトなどのアプリケーションを開発し、テストし、ブロックチェーンネットワークにデプロイするために、統合開発環境(IDE)を使用することができる。例示的IDEとしては、Zug、SwitzerlandのEthereum Foundationによって提供される、Solidityでスマートコントラクトを作成するためのRemix IDEがある。場合によっては、IDEにより、例えばデバッグを目的としてスマートコントラクトをテストすることが可能である。しかし、テスト中、動作がプロダクションブロックチェーン上で実行される。この結果、テスト環境が不安定になり、プロダクション環境が汚染される。Remix IDEを非限定的な例として用いると、Remix IDEは、スマートコントラクトを修正および実行するためのJavaScript(登録商標)エミュレーションと、プロダクションブロックチェーンに対するWeb3 provider接続性とを提供する。いくつかの例では、プロダクションブロックチェーンは、ブロックチェーンネットワーク内の、ブロックチェーンネットワークに参加しているエンティティ間のトランザクションを記録するために使用されるライブブロックチェーンのことを指す。したがって、Remix IDE内でのテスト中にトランザクション動作が実行されるとき、動作はプロダクションブロックチェーン上で実行される。さまざまな問題の中でもとりわけこれが、テストトランザクションがプロダクションブロックチェーンを汚染する原因となっている。さらに、プロダクションブロックチェーンを模擬するブロックチェーンテスト環境は、作成し維持することが困難な場合がある。例えば、プロダクションデータを除去する、または生成し直すと、テストランごとにテスト環境全体を作成し直すことが必要になる場合がある。
【００２６】
これに鑑みて、本開示の実施形態は、プロダクションブロックチェーンに影響を及ぼさずにアプリケーションをテストすることを可能にする、ブロックチェーンネットワーク用テストプラットフォームを提供する。いくつかの実施形態では、また本明細書においてさらに詳細に説明するように、本開示のテストプラットフォームは、コンテナを使用して読出し/書込みアクセスを制限し、またプロダクションブロックチェーンの少なくとも一部分を含むテストブロックチェーンを用意する。本開示のテストプラットフォームは、プロダクションブロックチェーンへのテストデータの書込みを回避し、テストランとテストランとの間のテストプラットフォームの効率の良いリセットを可能にする。
【００２７】
図2は、本開示の実施形態による例示的テストプラットフォーム200を示す。図示の例では、テストプラットフォーム200はサーバシステム201を含み、サーバシステム201は、アドミニストレーティブツール202、プロダクションブロックチェーンコンテナ204、プロダクションブロックデータ206、テストブロックチェーンコンテナ210、およびテストブロックデータ212をホストする。単一のサーバシステム201が図示されているが、サーバシステム201が1つまたは複数のサーバリソースを表し得ることが、企図される。いくつかの例では、アドミニストレーティブツール202は、1つまたは複数のコンピュータ実行可能プログラムとして設けられ、アドミニストレーティブツール202により、本開示の実施形態に従ってテスト環境をセットアップ、使用、および解体することが可能である。
【００２８】
いくつかの実施形態では、プロダクションブロックチェーンコンテナ204およびテストブロックチェーンコンテナ210は、それぞれがコンテナとして設けられ、コンテナは、コードおよびコード依存関係をパッケージングするソフトウェアのユニットと説明することができる。さらに詳細には、コンテナは、アプリケーションをそれらが実際に実行される環境から切り離すことのできる論理パッケージングを提供し、それにより、コンテナベースのアプリケーションが、ターゲット環境のタイプ(例えばサーバシステム201)に関わらず、容易にかつ一貫してデプロイされることが可能である。例示的コンテナとしては、限定はしないが、San Francisco、CA USAのDocker、Inc.によって提供されるドッカーコンテナがある。本開示の実施形態について、本明細書では、ドッカーコンテナに即してさらに詳細に説明する。しかし、本開示の実施形態がどんな適切なコンテナを用いても実現できることが、企図される。
【００２９】
いくつかの実施形態では、プロダクションブロックチェーンコンテナ204が、サーバシステム201がブロックチェーンネットワークと対話するためのアプリケーションを実行する。例えば、サーバシステム201は、ブロックチェーンネットワーク内のノードとして動作することができ、プロダクションブロックチェーンコンテナ204が、ブロックチェーンネットワークに参加する(例えばブロックチェーンネットワークにトランザクションを公開する、トランザクションのコンセンサス処理に参加する、ブロックチェーンのローカルコピーを維持する)という機能を実行する。いくつかの例では、プロダクションブロックデータ206が、プロダクションブロックチェーンのローカルコピーを記憶する。ブロックチェーンネットワークにわたるトランザクションの結果としてプロダクションブロックチェーンが更新される(例えばプロダクションブロックチェーンに新たなブロックが追加される)とき、プロダクションブロックチェーンコンテナ204はその更新内容をプロダクションブロックデータ206に書き込む。このようにして、プロダクションブロックデータ206は、ブロックチェーンネットワークのノードにわたって記憶されているプロダクションブロックチェーンのコピーと一致している。図2に示すように、プロダクションブロックチェーンコンテナ204は、プロダクションブロックデータ206への読出しおよび書込みアクセスを有する。
【００３０】
本開示の実施形態によれば、テストブロックチェーンコンテナ210が用意され、テストブロックチェーンコンテナ210は、テストに使用されるブロックチェーン環境を表す。テストブロックチェーンコンテナ210には、プロダクションブロックデータ206に対しては読出しアクセスが設けられるにすぎない。このようにして、テストブロックチェーンコンテナ210は、プロダクションブロックデータ206に書き込むことができず、テスト実行を通じたプロダクションブロックチェーンの汚染が回避される。アプリケーション(例えばスマートコントラクト)のテストを実行するために、テストブロックチェーンコンテナ210が、プロダクションブロックデータ206からブロックデータをコピーする。テストブロックチェーンコンテナ210がテスト動作を実行し、その結果、テストブロックが生成する。テストブロックチェーンコンテナ210はこのテストブロックを、テストブロックデータ212内に記憶されているテストブロックチェーンに書き込む。
【００３１】
図3は、例示的プロダクションブロックチェーン302、および本開示の実施形態による例示的テストブロックチェーン304を概略的に示す。いくつかの実施形態では、テストブロックチェーンコンテナ210がプロダクションブロックチェーン302からテストブロックチェーン304を作成し、プロダクションブロックチェーンとテストブロックチェーン304とは、ノード(例えばサーバシステム201)によって並列に使用される。テストブロックチェーン304は、プロダクションブロックチェーン302の1つまたは複数のブロックをコピーすることによって作成される。図3の例では、テストブロックチェーン304は、プロダクションブロックチェーン302のブロック[0001]-[0004]をコピーすることによって作成される。すなわち、テストブロックチェーンコンテナ210が、プロダクションブロックデータ206からブロック[0001]-[0004]のブロックデータをコピーし、そのブロックデータをテストブロックデータ212に書き込む。
【００３２】
いくつかの実施形態では、テストブロックチェーン304は、プロダクションブロックチェーン302全体のコピーとして作成される。例えば、テストブロックチェーン304は、時間t0において作成されてよい。いくつかの例では、時間t0において、プロダクションブロックチェーン302はブロック[0001]-[0004]しか含んでいない。したがって、テストブロックチェーン304は、時間t0におけるプロダクションブロックチェーン302の完全なコピーとして作成される。
【００３３】
時間t0の後、アプリケーションのテストが実施され、テストの一環として生成されたブロックがテストブロックチェーン304に追加される。例えば、Remix IDEによって提供されるJavaScript(登録商標)仮想マシン(VM)は、ランタイム環境を模擬する。したがって、IDEは、コンセンサスやブロックなどのブロックチェーンリンク動作の模擬を保障することはできない。例えば、プロダクション動作の際には、ブロックチェーンネットワークに参加しているノードの間で、どのブロックがブロックチェーンに追加されるべきかについて合意に達するために、ブロックチェーンネットワークによってコンセンサスプロトコルが利用される。
【００３４】
いくつかの例では、コンセンサスデータがプロダクションブロックチェーンに記憶されないことがあり、したがって、プロダクションブロックチェーン動作のリンクを模擬することができないとノード(例えばサーバシステム201)が判定した場合、テストブロックチェーン動作環境がプロダクションブロックチェーン動作を再現する。この結果、テスト環境内にプロダクションデータと同一のテストブロック(ブロック0005-0008)が生成される。したがって、プロダクションブロックチェーン302とテストブロックチェーン304とは、並列にかつ互いに独立に実行され得る。具体的には、また本開示の実施形態によれば、テストブロックチェーン304は、プロダクションブロックチェーン302に影響を及ぼさずに修正することができ、逆も同様である。本明細書において、例えば図2を参照して説明したように、テストブロックチェーンコンテナ210はプロダクションブロックデータ206から読み出し、したがって、テストブロックチェーンコンテナ210は、テスト実行中に全てのプロダクションブロックデータ206へのアクセスを有する。このようにして、テストブロックチェーン304は、テスト中(例えば時間t0の後)にテストブロックチェーン304にブロックが追加されるとき、プロダクションデータを反映させる。プロダクションチェーン(302)は、テストデータフォルダへのアクセスを有していない。
【００３５】
いくつかの実施形態では、テストが完了されてよく、テスト結果が精査されてよい。テストの後続のラウンドが実施されることが決定されてよい。いくつかの例では、テストブロックチェーン304に追加されたテストブロックのセットが削除される(例えばブロック[0005]-[0008])。テストの後続のラウンドが実行され、テストブロックチェーン304に新たなテストブロックが順次付加される。いくつかの実施形態では、さらなるテストラウンドが実施されないことが決定された場合、テストブロックチェーンを収容するテスト環境がリセットされてよい。管理ツールが、終了すべきテストケースを特定し、テストチェーンを実行する1つまたは複数のノードのリストを生成する。テストブロックチェーンコンテナ210は、1つまたは複数の特定されたノードを収容するこのリストに基づいて終了される。
【００３６】
図4は、本開示の実施形態に従って実行することのできる例示的プロセス400を示す。いくつかの実施形態では、例示的プロセス400は、1つまたは複数のコンピューティングデバイスを用いて実行される1つまたは複数のコンピュータ実行可能プログラムを用いて、実施されてよい。例示的プロセス400は、1つまたは複数の上述した図に関するものである。一般には、この例示的プロセスは、本開示の実施形態に従ってブロックチェーンアプリケーションを作成し維持することを対象とする。
【００３７】
本明細書において、例えば図2を参照して説明したように、プロダクションブロックチェーンへの読出し専用アクセスを有するテストチェーンコンテナをインスタンス化すること(ステップ402)。
【００３８】
それぞれ図3および図2によってさらに明細に示したように、プロダクションブロックチェーンからテスト環境にブロックのセットをコピーして、テストブロックチェーンを用意することであって、テストチェーンコンテナがテストブロックチェーンへの読出しおよび書込みアクセスを有する、用意すること(ステップ404)。
【００３９】
本明細書において、例えば図3を参照して説明したように、ブロックチェーンアプリケーションのテストを実行することであって、テストの結果、テストブロックチェーンに、各テストブロックが少なくとも部分的にテストデータを含むテストブロックのセットが順次付加され、テストの実行中にプロダクションブロックチェーンにプロダクションブロックが付加される、実行すること(ステップ406)。
【００４０】
説明した特徴は、デジタル電子回路の形で、またはコンピュータハードウェア、コンピュータファームウェア、コンピュータソフトウェアの形で、またはそれらの組合せの形で実装されてよい。装置は、プログラマブルプロセッサによって実行できるように情報キャリア内に(例えば機械可読記憶デバイス内に)有形に具現化されたコンピュータプログラム製品の形で実装されてよく、方法ステップは、プログラマブルプロセッサが、説明した実施形態の機能を実施するための命令のプログラムを、入力データに作用し出力を生成することにより実行することによって実施されてよい。説明した特徴は、有利には、データ記憶システムからデータおよび命令を受領し、そこにデータおよび命令を送出するように結合された少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含むプログラマブルシステム上で実行可能な、1つまたは複数のコンピュータプログラムの形で実装されてよい。コンピュータプログラムは、ある特定のアクティビティを実施するために、またはある特定の結果をもたらすために、コンピュータ内で直接的または間接的に使用されてよい命令のセットである。コンピュータプログラムは、コンパイル型またはインタープリタ型言語を含む、任意の形態のプログラミング言語で記述されてよく、またそれは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境において使用するのに適した他のユニットとして、を含めて、任意の形態でデプロイされてよい。
【００４１】
命令のプログラムを実行するのに適したプロセッサとしては、例として、汎用と専用両方のマイクロプロセッサ、および任意の種類のコンピュータの単独のプロセッサ、または複数のプロセッサのうちの1つがある。一般に、プロセッサは、読出し専用メモリまたはランダムアクセスメモリまたはその両方から、命令およびデータを受領する。コンピュータの要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリとを含んでよい。一般に、コンピュータはまた、データファイルを記憶するための1つまたは複数の大容量記憶デバイスを含むか、またはそれと通信するように動作可能に結合されてよく、そのようなデバイスとしては、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、および光ディスクがある。コンピュータプログラム命令およびデータを有形に具現化するのに適した記憶デバイスとしては、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性記憶領域がある。プロセッサおよびメモリは、特定用途向け集積回路(ASIC)によって補われてもよく、それに組み込まれてもよい。
【００４２】
ユーザとの対話を可能にするために、特徴は、情報をユーザに表示するための、陰極線管(CRT)モニタや液晶ディスプレイ(LCD)モニタなどの表示デバイスと、ユーザがそれによってコンピュータに入力することのできる、キーボードおよびマウスやトラックボールなどのポインティングデバイスとを有する、コンピュータ上に実装されてよい。
【００４３】
特徴は、データサーバなどのバックエンド構成要素を含むか、またはアプリケーションサーバやインターネットサーバなどのミドルウェア構成要素を含むか、またはグラフィカルユーザインターフェースもしくはインターネットブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含むか、またはそれらの任意の組合せを含む、コンピュータシステム内に実装されてよい。システムの構成要素は、通信ネットワークなど、任意の形態または媒体のデジタルデータ通信によって接続されてよい。通信ネットワークの例としては、例えば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、ならびにインターネットを形成するコンピュータおよびネットワークがある。
【００４４】
コンピュータシステムは、クライアントおよびサーバを含んでよい。クライアントとサーバは一般に、互いに遠隔にあり、典型的には、説明したものなどのネットワークを通じて対話する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれに対応するコンピュータ上でランし、それらのコンピュータプログラムが互いにクライアント-サーバ関係を有することによって生じる。
【００４５】
加えて、図中に示す論理フローは、所望の結果を達成するために、図示の特定の順序、または順番を必要としない。加えて、他のステップが設けられてもよく、説明したフローからステップがなくされてもよく、他の構成要素が、説明したシステムに追加されてもよく、そこから除去されてもよい。したがって、他の実施形態が、添付の特許請求の範囲に記載の範囲に含まれる。
【００４６】
以上、本開示のいくつかの実施形態について説明してきた。とはいえ、本開示の趣旨および範囲から逸脱することなくさまざまな修正が加えられ得ることが理解されよう。したがって、他の実施形態が、添付の特許請求の範囲に記載の範囲に含まれる。
【符号の説明】
【００４７】
100  例示的環境
102  コンソーシアムブロックチェーンネットワーク
106  コンピューティングデバイス、コンピューティングシステム
108  コンピューティングデバイス、コンピューティングシステム
110  ネットワーク
200  例示的テストプラットフォーム
201  サーバシステム
202  アドミニストレーティブツール
204  プロダクションブロックチェーンコンテナ
206  プロダクションブロックデータ
210  テストブロックチェーンコンテナ
212  テストブロックデータ
302  例示的プロダクションブロックチェーン、プロダクションチェーン
304  例示的テストブロックチェーン
【図１】
0006727435.tif 000002
【図２】
0006727435.tif 000003
【図３】
0006727435.tif 000004
【図４】
0006727435.tif 000005