(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-06
(45)【発行日】2024-12-16
(54)【発明の名称】分散不変データオブジェクトの試験
(51)【国際特許分類】
G06F 11/36 20060101AFI20241209BHJP
【FI】
G06F11/36 196
G06F11/36 188
(21)【出願番号】P 2023544460
(86)(22)【出願日】2022-01-19
(86)【国際出願番号】 US2022012900
(87)【国際公開番号】W WO2022159438
(87)【国際公開日】2022-07-28
【審査請求日】2024-06-20
(32)【優先日】2021-11-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-01-23
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-01-18
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】523278261
【氏名又は名称】ディド ソリューションズ,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】スタブロス,ロバート
(72)【発明者】
【氏名】テューレック,ブライアン
(72)【発明者】
【氏名】スタブロス,イアン
【審査官】松平 英
(56)【参考文献】
【文献】特開2020-177658(JP,A)
【文献】特表2020-502621(JP,A)
【文献】国際公開第2020/222142(WO,A1)
【文献】米国特許出願公開第2019/0251018(US,A1)
【文献】米国特許出願公開第2020/0372168(US,A1)
【文献】韓国登録特許第10-2160379(KR,B1)
【文献】中国特許出願公開第108681965(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
11/07
11/28-11/36
(57)【特許請求の範囲】
【請求項1】
1つ又は複数の通信可能に結合される処理システムによって実行される、分散システム内のノードを試験するための方法であって、
前記分散システム内の分散不変データオブジェクト(DIDO)を処理し管理するために使用される分散システムをエミュレートするように複数の仮想ノードを構成することと、
試験環境によって、前記エミュレートされた分散システムの試験を開始することであって、前記試験は、第1のDIDOに対して1つ又は複数のトランザクションを実行して前記エミュレートされた分散システムにおいて修正済みの第1のDIDOを得ることを含む、ことと、
前記試験環境によって、前記修正済みの第1のDIDOを検証済みシステムによって前記第1のDIDOから生成されている第2のDIDOと比較することによって前記エミュレートされた分散システムを確認することと、
前記エミュレートされた分散システム内の各仮想ノードが検証済みノードを含む場合に前記試験を実行することによって、前記試験環境によって前記試験のベースライン結果を生成することと、
前記試験環境によって、前記エミュレートされた分散システム内の少なくとも1つの仮想ノードを追加し又は修正した後で前記試験を実行することによって得られる追加の結果と前記ベースライン結果を比較することと、
前記ベースライン結果が前記追加の結果とマッチする場合に、前記試験環境によって、前記追加され若しくは修正された少なくとも1つの仮想ノード又は前記エミュレートされた分散システムを検証することと
を含む、方法。
【請求項2】
前記1つ又は複数のトランザクションの少なくとも1つが前記エミュレートされた分散システム内で試験中のノードによって実行される、請求項1に記載の方法。
【請求項3】
前記修正済みの第1のDIDOのコンテンツが前記第2のDIDOのコンテンツに対応する場合に前記試験中のノードを検証すること
を更に含む、請求項2に記載の方法。
【請求項4】
前記第1のDIDOが参照DIDOのコピーであり、前記第2のDIDOは前記第1のDIDOの同一コピーに対する前記1つ又は複数のトランザクションを前記検証済みシステムに行わせることによって得られる、請求項1に記載の方法。
【請求項5】
前記参照DIDOは1つ又は複数のトランザクションレコードを安全に保つように構成される第1の分散台帳を含み、前記第2のDIDOは第2の分散台帳を含み、前記修正済みの第1のDIDOは第3の分散台帳を含み、それぞれの分散台帳が独立に保たれる、請求項4に記載の方法。
【請求項6】
前記第2の分散台帳内の復号情報が前記第3の分散台帳内の対応する復号情報とマッチするとき、前記修正済みの第1のDIDOのコンテンツが前記第2のDIDOのコンテンツに対応する、請求項5に記載の方法。
【請求項7】
前記検証済みシステムが現実世界のシステムであり、前記参照DIDO、前記第2のDIDO、及び前記1つ又は複数のトランザクションが対応する記録時点において前記現実世界のシステムからコピーされる、請求項4に記載の方法。
【請求項8】
前記エミュレートされた分散システムを使用して試験計画を実行するための試験タイムラインの開始点を構成することであって、前記1つ又は複数のトランザクションが前記試験計画によって定められる、こと
を更に含む、請求項1に記載の方法。
【請求項9】
第1の運用モードでは前記試験タイムラインが実時間と一致した速度で実行され、第2の運用モードでは実時間と異なる速度で実行される、請求項8に記載の方法。
【請求項10】
前記試験タイムラインを前記開始点に再設定した後、前記第1のDIDOの未修正バージョンを用いて前記試験を再開すること
を更に含む、請求項8に記載の方法。
【請求項11】
少なくとも1つの仮想ノードに前記第1のDIDOの分散台帳を修正させるように前記試験計画を構成することであって、前記分散台帳を修正することは、前記試験タイムラインに従って前記分散台帳によって保たれる情報を暗号化するために時間依存の暗号法を使用することを含む、こと
を更に含む、請求項8に記載の方法。
【請求項12】
前記複数の仮想ノード内の様々な仮想ノードを実装するように複数の物理ノードを構成することであって、前記複数の物理ノードは互いに地理的に離れた位置にある物理ノードを含む、こと
を更に含む、請求項1に記載の方法。
【請求項13】
前記複数の仮想ノードの少なくとも1つのノードがコンテナを含む、請求項1に記載の方法。
【請求項14】
前記エミュレートされた分散システム内に仮想ツインノードを含めることであって、前記仮想ツインノードは前記エミュレートされた分散システム内で1つ又は複数の他のツインノードによって共有される識別子を使用してアドレス指定される、ことと、
前記仮想ツインノードを追加し又は修正した後で前記試験を実行することによって得られる前記追加の結果と前記ベースライン結果を比較することと、
前記ベースライン結果が、前記仮想ツインノードを追加し又は修正した後で前記試験を実行することによって得られる前記追加の結果とマッチする場合に、前記追加され若しくは修正された仮想ツインノード又は前記エミュレートされた分散システムを検証することと
を更に含む、請求項1に記載の方法。
【請求項15】
前記エミュレートされた分散システム内に物理ツインノードを含めることであって、前記物理ツインノードは前記エミュレートされた分散システム内で1つ又は複数の他のツインノードによって共有される識別子を使用してアドレス指定される、ことと、
前記物理ツインノードを追加し又は修正した後で前記試験を実行することによって得られる前記追加の結果と前記ベースライン結果を比較することと、
前記ベースライン結果が、前記物理ツインノードを追加し又は修正した後で前記試験を実行することによって得られる前記追加の結果とマッチする場合に、前記追加され若しくは修正された物理ツインノード又は前記エミュレートされた分散システムを検証することと
を更に含む、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本願は、参照によりその全内容を以下で完全に記載されているものとして及び全ての適用可能な目的で本明細書に援用する、2022年1月18日に米国特許局に出願された米国非仮特許出願第17/578,432号、2021年1月23日に米国特許局に出願された米国仮特許出願第63/140,849号、及び2021年11月22日に米国特許局に出願された米国仮特許出願第63/282,042号の優先権及び利益を主張する。
【0002】
技術分野
本発明はシステムの試験環境に関し、より具体的には、訓練用、試験用、及びシミュレーション用とすることができる仮想ノードの仮想ネットワークとして構成される、展開された試験プラットフォームに関する。
【背景技術】
【0003】
背景
2009年にSatoshi Nakamotoという人物又はその名前を使用する人々の集団がやがてBitcoinを支える原動力となる論文を書いた。Bitcoinは非集中型のネットワーク化された分散コンピューティング技術に基づく最初の成功した暗号通貨であった。この技術の核心にあるのは、ブロックチェーン内で保持されるトランザクションを使用して更新され、プルーフオブワークを使用して確認される分散台帳である。
【0004】
一定のよく知られている技術は今日の計算に著しい影響を与え続けている。例えばコンテナ及び仮想マシンが当技術分野でよく知られており、分散コンピューティングに著しい影響を及ぼした。コンテナは、アプリケーション並びにその対応するランタイムライブラリ及び依存関係を含むパッケージ又はイメージとして定めることができる。より最近では、Docker(登録商標)等のターンキーコンテナ製品及び管理が普及しており、Kubernetes(登録商標)等の成功裏のコンテナオーケストレーション製品の存在を自然にもたらした。仮想マシンは、物理コンピュータの動作をエミュレートするソフトウェアコンピュータとして定めることができる。コンテナ及び仮想マシンは、物理的な処理環境の設計要件及び機能に応じてアプリケーションの展開及びスケーリングを可能にし得る。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
本開示の一定の態様は、分散コンピューティングシステムの動作及び要素を安全且つ高信頼に試験するために使用することができるシステム、機器、及び方法を提供する。一部の態様では、物理的な又は現実世界の分散コンピューティングシステムをエミュレートするために、物理的な処理装置、仮想マシン、及び/又は分散コンテナの何らかの組み合わせを使用して試験システムを実装することができる。
【0006】
本開示の一態様では、分散システム内のノードを試験するための方法が、分散不変データオブジェクト(DIDO:distributed immutable data object)を処理し管理するために使用される分散システムをエミュレートするために複数の仮想ノードを構成すること、エミュレートされた分散システムの試験を開始することであって、試験は第1のDIDOに対して1つ又は複数のトランザクションを実行して修正済みの第1のDIDOを得ることを含む、開始すること、及び修正済みの第1のDIDOを検証済みシステムによって第1のDIDOから生成されている第2のDIDOと比較することによってエミュレートされた分散システムを確認することを含む。
【0007】
本開示の一態様では、分散システムのための試験プラットフォームが、複数の仮想ノードの1つ又は複数を動作させるようにそれぞれ構成される複数の処理システムと、複数の処理システムに結合され、DIDOを処理し管理するために使用される分散システムをエミュレートするように複数の仮想ノードが構成されるように複数の仮想ノードを通信可能に結合するように構成されるネットワークと、試験管理プロセッサとを含む。試験管理プロセッサは、エミュレートされた分散システムの試験を開始することであって、試験は第1のDIDOに対して1つ又は複数のトランザクションを実行して修正済みの第1のDIDOを得ることを含む、開始すること、及び修正済みの第1のDIDOを検証済みシステムによって第1のDIDOから生成されている第2のDIDOと比較することによってエミュレートされた分散システムを確認することを行うように構成され得る。
【0008】
本開示の一態様では、仮想環境を構成するための方法は、仮想ネットワーク内の複数の仮想ノードの間で分散システムを展開する当該分散システムに関する試験、シミュレーション、又は訓練に対する要求に応答して仮想ノードの仮想ネットワークを構成すること、複数の仮想ノードから試験、シミュレーション、又は訓練の結果を受信すること、及び複数のノードから受信される試験、シミュレーション、又は訓練の結果を組み合わせることによって要求に対する応答を提供することを含む。
【0009】
本開示の一態様では、システムが仮想ノードの仮想ネットワーク及び仮想環境マネージャを含む。仮想環境マネージャは、当該分散システムに関する試験、シミュレーション、又は訓練に対する要求に応答して仮想ノードの仮想ネットワークを構成し、仮想ネットワーク内の複数の仮想ノードの間で分散システムを展開し、複数の仮想ノードから試験、シミュレーション、又は訓練の結果を受信し、複数のノードから受信される試験、シミュレーション、又は訓練の結果を組み合わせることによって要求に対する応答を提供することができる。
【図面の簡単な説明】
【0010】
図面の簡単な説明
【
図1】ブロックチェーンベースの分散台帳を策定する一例の一定の側面を示す。
【
図2】本開示の一定の態様に従って構成される分散試験環境(TE)の第1の例を示す。
【
図3】本開示の一定の態様に従って構成され得る仮想ノードを示す。
【
図4】本開示の一定の態様に従って提供される分散不変データオブジェクト(DIDO)TEの構成可能な特徴を示す。
【
図5】本開示の一定の態様に従ってDIDO TEプラットフォームを定めるためのプロセスを示す流れ図である。
【
図6】本開示の一定の態様に従ってDIDO TEノードセットを定めるためのプロセスを示す流れ図である。
【
図7】本開示の一定の態様に従ってDIDO TE仮想ネットワークを定めるためのプロセスを示す流れ図である。
【
図8】本開示の一定の態様に従ってDIDOを初期化するための一定の構成設定を示す。
【
図9】本開示の一定の態様による、DIDO TE内で使用されるコードデバッギングの一例を示す。
【
図10】本開示の一定の態様による、DIDO TEモニタの一例を示す。
【
図11】本開示の一定の態様による、悪意あるエージェントの試験の一例を示す。
【
図12】本開示の一定の態様による、DIDO TEマネージャの一例を示す。
【
図13】本開示の一定の態様に従って提供される試験及び試験計画の構造の一例を示す。
【
図14】本開示の一定の態様による、DIDO TEを使用して実行される試験を定めるためのプロセスを示す流れ図である。
【
図15】本開示の一定の態様による、DIDO TEを使用して試験を実行するためのプロセスを示す流れ図である。
【
図16】本開示の一定の態様に従って構成される分散TEの第2の例を示す。
【
図17】本開示の一定の態様による、試験プラットフォームを構成することを示す流れ図である。
【
図18】本開示の一定の態様による、試験プラットフォームを使用することを示す流れ図である。
【発明を実施するための形態】
【0011】
詳細な説明
添付図面に関して以下に記載する詳細な説明は様々な構成の説明であることを意図し、本明細書に記載の概念を実践し得る唯一の構成を表すことは意図しない。詳細な説明は、様々な概念の完全な理解を与えるための具体的詳細を含む。但し、それらの概念はそれらの具体的詳細なしに実践できることが当業者に明らかになる。一部の例では、かかる概念を不明瞭にすることを避けるために、よく知られている構造及びコンポーネントをブロック図形式で示している。
【0012】
試験しようとするシステムが分散システムである場合、システムの試験に関連する困難は大幅に増加する。分散システムのコンポーネント及びプラットフォームは世界中の何処にでも物理的に位置し得る。適切に試験することは、対象の専門家、分散型製品の専門家、ハードウェアの専門家、オペレーティングシステムの専門家、試験の専門家等を必要とする。かかる試験は、指定の期間内の人、資源、及び試験シナリオを調整するための管理の専門家も必要とする。
【0013】
暗号通貨は分散コンピューティングに依拠する例を与える。Bitcoin(登録商標)等の暗号通貨の成功によってもたらされた分散コンピューティングに対する期待の上昇は、分散コンピューティングシステム全般及び具体的には暗号通貨の機会及び利益に参加する企業及び投資家側の大いなる熱狂及び活力をもたらした。分散コンピューティング製品、とりわけ暗号通貨は本質的に利益共同体(COI:community-of-interest)の一部として開発される。正しく管理されなければ、COIは分散システムの成功に対するリスクを悪化させ得る。
【0014】
暗号通貨は、運営のためにデジタル媒体に依拠する取引所メカニズム内で使用される資産の一種に適用される用語である。一部の例では、コインの所有権のレコードが分散台帳内に記録され保持される。分散台帳は分散台帳技術及びコンピュータ化されたデータベースを使用して実装され得る。分散台帳によって保たれるトランザクションレコードを保護するために、強固な暗号化技術が使用される。一部の例では、ブロックチェーンを使用して分散台帳を構築することができ、ブロックチェーンでは台帳のエントリ、レコード、又はトランザクションがブロックとして保持され、各ブロックは前のブロックの暗号学的ハッシュ及びタイムスタンプを含む。
【0015】
図1は、ブロックチェーンベースの分散台帳100を策定する一例の一定の側面を示す。分散台帳100は、ブロック104、106、108、110、112、114、116を含むその後のブロックがそこから作成される第1のブロック102から始まる。各ブロックは、ツリー構造へとハッシュ化され符号化される1つ又は複数の有効なトランザクションを保つ。各ブロックは、その後の各ブロックをその直前のブロックにリンクする、ブロックチェーン内の前のブロックの暗号学的ハッシュを含む。一例では、ブロック104がブロック102の暗号学的ハッシュを含み、ブロック106がブロック104の暗号学的ハッシュを含む。ブロック102、104、及び106がチェーンを形成する。一部の例では、分枝又はオーファンであるその後のブロック112又は114が、メインチェーン内に含まれる先行ブロック104又は108から作成される対応するその後のブロック106又は110と並行して又はそれらに加えて作成される。
【0016】
ブロックチェーンは、ノード間通信プロトコル及び新たなブロック104、106、108、110、112、114、116を作成するために使用される検証プロトコルに従って動作するピアツーピアネットワークによって制御され管理され得る。暗号通貨の制御は非集中型のやり方で行われるが、基礎技術はセキュアバイデザインだと考えられる。トランザクションがブロック内に記録されるとき、その後で生成された全てのブロックを修正することなしにブロックを修正することはできない。
【0017】
本開示の一定の態様は、分散コンピューティングシステムを試験するために安全且つ高信頼に使用することができるコミュニティベースの試験を使用する。一部の例では、本明細書で開示するコミュニティベースの試験は、
図1に示すブロックチェーンベースの分散台帳100等の分散台帳を操作し又は管理する分散コンピューティングシステムを試験し、検証し、権限を与え、又は認定するために使用することができる。分散コンピューティングを採用することは、既存の企業が克服するための幾つかの新たな及び固有の技術的問題を示し、自らの制御外のネットワーク及びコンピュータ上で実行される製品に参加するために企業が適応することも必要とする。分散コンピューティングに基づく製品を使用することは、企業が共通の目標を達成するためにコミュニティ内のピアとして参加することを要求し得る一方、参加企業は試験される製品の品質に対する信頼を保つことができる。
【0018】
従来のコミュニティベースの試験を暗号通貨に使用することは、反復的なやり方で容易に行うことはできない。ブロックチェーンの使用は、台帳を修正することを含む如何なる試験もブロックチェーンを取り消しできないやり方で変更することを必然的に伴う。その結果、繰り返される如何なる試験も修正済みのブロックチェーンに対して実行される。更に、試験中に不良のシステムによって生じるエラー又は問題はブロックチェーンから除去する又は取り消すことができず、エラーがある又は問題があるデータがブロックチェーン内に残る。
【0019】
本開示の一定の態様は、ブロックチェーン内に永続的なフットプリントを残すことなしに暗号通貨及び他のブロックチェーンベースのシステムを試験するために、既存の物理インフラ上に確立することができる仮想化された環境を提供する。予め構成されたコンテキスト及びブロックチェーンを有する所望の開始点から試験を反復的に開始できるように、この仮想化された環境は複数回初期化することができる。試験の結果は評価することができ、同一の仮想システム構成又は修正済みの若しくは更新済みのシステム構成を用いて試験を再実行することができる。仮想システムは、物理システム又は物理システムの側面をエミュレート又はシミュレートするように構成され得る。本開示では、現実世界のシステムの挙動を模倣しかかる挙動と密にマッチするとき、その仮想システムは物理的な現実世界のシステムをエミュレートする。本開示では、現実世界のシステムの1つ又は複数の挙動とマッチすることなしに現実世界のシステムを模倣するとき、その仮想システムは物理的な現実世界のシステムをシミュレートする。例えばエミュレーションは現実世界の速度で走るタイムラインに従って動作し得るのに対し、シミュレーションは加速された又は減速されたタイムラインに従って動作し得る。
【0020】
一部の例では、実時間に固定又はロックされない仮想システムの時間を定めることができる。例えばタイムラインの開始点は、仮想ネットワーク上の仮想システムを始動するとき構成することができる。従って、一貫したやり方でトランザクションが記録されていることを確認するために、ブロックチェーン内の同一のその後のブロックを同じ仮想時間において仮想化されたシステムの異なる実行において作成することができる。一例では、仮想システムの時間を使用することは、一定の時間依存の暗号ハッシュアルゴリズムが複数の試験サイクル中に予測可能な又は再現性のある結果をもたらすことを可能にする。シミュレーションのために、仮想システムの時間は実時間とつながりがなくてもよく、実時間と異なる速度で進み仮想時間の拡大又は圧縮を可能にすることができる。
【0021】
本開示の一定の態様は、新たな、再構成された、或いは未試験のシステムを採用する潜在的リスクを、企業目標によって設定される許容差による許容レベルの範囲内に保つ単純化された試験環境を提供することができる。分散不変データオブジェクト(DIDO)又は複数のDIDOを使用することにより、試験手順を単純化し、試験のための分散システムを始動するプロセスを著しく短縮することができる試験環境が提供される。本明細書で開示する試験環境は、本明細書では「分散不変データオブジェクト試験環境(DIDO TE)」と呼ぶ場合がある。「DIDO」という用語は、ネットワークにわたる完全性及び一貫性を保つためのコンセンサスアルゴリズムを使用し、ピアの分散ネットワークにわたる分散されたデータ及び計算をサポートする基礎技術を指すためにも使用することができる。DIDOは、DIDO内に含まれる又はDIDOによって管理される一定のデータオブジェクトが決して変更できない程度に不変である。データの新しいコピーが作成可能であり、元のデータと共存可能だが、DIDOのそれぞれの新たなコピーはDIDOの前のバージョン又はDIDO内を後方へポイントする。現実世界のDIDOがDIDO TE内のベースラインDIDOとして使用されるために作成される場合、DIDOの異なるバージョンが作成され得る。ベースラインDIDOのバージョンは、ベースラインDIDOの同一コピーが試験計画に従ってDIDO TE内で操作される場合に作成され得る。ベースラインDIDOの異なるバージョンは、試験結果を評価するとき比較することができる。試験計画の一部又は全ての実行後、ベースラインDIDOのバージョンの初期コンテンツをベースラインDIDOの同じバージョンのコンテンツと比較することができる。
【0022】
DIDOが構成され又はインスタンス化された後、ユーザはDIDO TEを使用してシステムを厳格に試験することができる。DIDO TEは、実行される様々な種類の試験を可能にするための仮想化され、コンテナ化された試験台として実装され得る。DIDO TEは複数の仮想ノードを含むことができ、各仮想ノードは分散されたシステム実装間の比較試験及び評価を含む1つ又は複数の種類の試験を実行するように構成される。DIDO TEは試験、シミュレーション、又は訓練のために使用することができる。一部の例では、DIDO TEは、定められたタイムライン、1つ又は複数の予め構成された不変オブジェクト、及び予め構成された不変オブジェクトを含む一連のアクション又はトランザクションを使用し、システムコンポーネントの動作を検証し又は認証するために使用され得る。後者の例では、知られている再現性のあるコンテキストを作成及び再作成することができ、対応する仕様に従って機能するシステム、ノード、プラットフォーム、及び機能要素から決定論的な結果を予期することができる。
【0023】
一部の例では、新たな又は更新されたプラットフォームを試験するようにDIDO TEを構成することができる。運用システムに影響を及ぼすことなしに又は運用システムを損なうことなしに現実世界の動作条件下で新たなプラットフォームを試験することが概して望ましい。DIDO TEは、現実世界の運用システムの構成要素をエミュレートする様々な仮想ノードで構成され得る。人工タイムラインをDIDO TEのために定めることができる。DIDO TEは現実世界の運用システムから捕捉される現実世界のステータス情報、データ、及び1つ又は複数のDIDOのコピーで構成され得る。その後、DIDO TEはDIDO TEマネージャによって構成される選択された時点において動作を開始することができる。DIDO TEは検証された仮想ノードで最初に構成し、試験計画のための1つ又は複数のベースラインを生成するために使用することができる。ベースラインは、指定の又は識別されたDIDO TE上で実行される対応する試験計画の後に続く試験からの期待される結果を定めることができる。その後、DIDO TEは、試験計画を使用して新たな又は更新された物理ノードをエミュレートするDIDO TEに導入される新たな又は修正された仮想ノードを行使するために使用され得る。試験計画は、新たな又は修正された仮想ノード及びベースラインと比較される結果を含むDIDO TEを使用して実行され得る。結果は、試験結果の実行後にDIDO TEから捕捉されるステータス情報、データ、及び1つ又は複数のDIDOを含み得る。結果は、修正された仮想ノード及び/又は1つ若しくは複数の検証された仮想ノードから集められる情報を含み得る。結果は、例えば試験計画を使用して集められるDIDOのバージョンとベースラインによって与えられるDIDOのバージョンとの差を解析することを含み得る。試験計画は、仮想ノード又は1つ若しくは複数の個々のノードのシステムの能力、信頼性、及び機能を試験することを意図するイベント又はストレス要因の反復、タイミングの変化、及び導入を含み得る。
【0024】
一部の例では、DIDO TEは検証されたノードの物理ネットワークのシミュレーションを行うように構成され得る。一部の例では、一定の物理ネットワーク又はノードが試験中のシステム、ネットワーク、又はノードによってエミュレートされるシミュレーションを行うようにDIDO TEを構成することができる。シミュレーションは、変化する条件下の又は通常動作では滅多に起こらない条件下の物理システムの性能及び信頼性を評価し又は予測するために実行され得る。シミュレーションは、全体的なシステム性能又は個々のノード、ノード群、ノードの種類、若しくは同じ種類のノードのバージョンの性能を評価するために使用することができる。例えばシミュレーションは、電池の消耗率を減らし温度上昇を軽減するためにプロセッサのスロットリングが使用されるとき、セルラ電話装置を含むノード内の処理能力が失われる効果を調べることができる。DIDO TEは、現実世界の運用システムの構成要素をエミュレートする様々な仮想ノードで構成され得る。人工タイムラインをDIDO TEのために定めることができる。一部の状況では、人工タイムラインが現実世界のシステムと同じ速度(フルレート)で進むことができる。一部のシミュレーションでは、長期間の現実世界の動作をより管理可能な試験期間内でシミュレートするために、人工タイムラインを現実世界のシステムに対して加速することができる。一部のシミュレーションでは、人工タイムラインを現実世界のシステムに対して減速することができる。減速することは、複雑で素早く生じるトランザクションの可視性を改善し得る。DIDO TEは現実世界の運用システムから捕捉される現実世界のステータス情報、データ、及び1つ又は複数のDIDOのコピーで構成され得る。その後、DIDO TEはDIDO TEマネージャによって構成される選択された時点において動作を開始することができる。DIDO TEは検証された仮想ノードで最初に構成し、スクリプト又は試験計画のための1つ又は複数のベースラインを生成するために使用することができる。その後、DIDO TEは、スクリプト又は試験計画を使用して新たな又は更新された物理ノードをエミュレートするDIDO TEに導入される新たな又は修正された仮想ノードを行使するために使用され得る。
【0025】
一部の例では、DIDO TEを訓練目的で構成することができる。訓練目的で、DIDO TEは行われる訓練の性質に基づく試験又はシミュレーションモードについて構成され得る。一部の例では、システムの適切な動作に関して研修者を精通させ指南し、識別及び解決及びエラー処理を発行するように構成される予め構成されたフローを提供するスクリプト駆動DIDO TEを使用してエンドユーザ又はシステムオペレータを訓練することができる。一部の例では、システム機能、開発ツール、及びトラブルシューティングに関して研修者を精通させ指南する、DIDO TE上で実行される試験計画を使用してシステムエンジニア及び開発者を訓練することができる。
【0026】
図2は、試験環境又は(DIDO TE202)を含む又は組み込むDIDO試験フレームワーク200の一例を示す。DIDO試験フレームワーク200は、DIDOソリューションに固有の概念並びにDIDO TE内のノードの分散ネットワークの制御及び管理を容易にすることができるインタフェースの特化された集約で構成される任意の環境内で動作し得る。DIDO試験フレームワーク200は、一連の分散ワークフロープロセスによるオンデマンドワークフローを指揮することができる。一例では、DIDO試験フレームワーク200が、ステータス又は制御要求を伝達するためにメールボックスメッセージングパラダイムを提供し、実装し、又は使用することができる。
【0027】
定められたワークフローの段階の全体を通して、プロセスが産出され、メッセージが作用され、応答が受信され、作業の完了後に資源が解放される。プロセスは分散アプリケーションのやり方で分散させることができ、一部の実装形態ではDIDO試験フレームワーク200は自らのインスタンスをホストし、システムが無限に成長することを可能にし得る。
【0028】
一定の例では、DIDO TE202は、Erlangオープンテレコムプラットフォーム(OTP)のコアコンポーネントであり、本明細書ではErlang仮想マシンと呼ばれ得る、BEAM仮想マシン等の仮想マシンと共に使用するように構成され得るElixir関数型プログラミング言語等の関数型プログラミング言語に基づいて構築することができる。他の例では、他の仮想マシン及び関連するプログラミング言語を使用することができる。図示のDIDO TE202は、カスタムアプリケーションプログラミングインタフェース(API)によってメッセージング層を管理する4つのメインアプリケーションを有する。一部の例では、これらのAPIとの対話は公開REST(representational state transfer)インタフェースによって、又は単純で使い易いグラフィカルユーザインタフェース(GUI)によって行うことができる。「RESTインタフェース」という用語は、ウェブプロトコル及び技術を使用する分散システムフレームワークを指し得る。RESTアーキテクチャはクライアント及びサーバの対話に関係し得る。アプリケーションは任意のホストオペレーティングシステムのためにパッケージ化し、分配可能にし、それにより隔離された動作環境の移植性及び使用を可能にし得る。
【0029】
図示の例では、DIDO TE202が試験環境マネージャ204を含み得る。試験環境マネージャ204は、1つ又は複数の仮想ノード212を構成するように動作する1つ又は複数の通信可能に結合される処理システムを含み得る。一部の例では、仮想ノード212が試験環境マネージャ204又は試験環境マネージャ204のコンポーネントである処理システムと物理的に併設され得る。一部の例では、仮想ノード212が、離れている及びローカルエリアネットワーク又はインターネット等の広域ネットワークを介して試験環境マネージャ204と通信し得る位置にあることができる。DIDO TE202は、試験環境マネージャ204を仮想ノード212と隔てる物理的距離に関係なく試験環境マネージャ204が仮想ノード212と通信することを可能にする仮想ネットワーク210を含むこと又はかかる仮想ネットワーク210を構成することができる。一部の例では、仮想ネットワーク210が、物理的な現実世界の分散システム内の距離、レイテンシ、及びノードと管理システムとの間の通信に使用される通信プロトコルを表すように構成され得る。
【0030】
一部の実装形態では、DIDO TE202と対話しそれを構成するためのユーザフレンドリなウェブGUIをホストするために、セキュアHTTP(S)ウェブサーバ(DIDOウェブサーバ222)が使用され得る。一部の実装形態では、DIDOウェブサーバ222のアプリケーションが、クライアント及びサードパーティアプリケーションのアクセスのためにRESTインタフェースと共同ホストされ得る。これらの2つのサービスは、使用事例の柔軟性及び機能実装の容易さのために密に結合することができる。サードパーティ認証は、将来の追加のプラグイン機能のための複数の統合の可能性をアプリケーションに与える。
【0031】
本開示の一態様によれば、1組の試験計画230内で定められる一連のトランザクション及び/又はイベントを使用し、仮想ネットワーク210、1つ又は複数の仮想ノード212、及び/又はエミュレート若しくはシミュレートされたシステムを試験することができる。試験は、1組の試験計画230内の複数のアクティブな試験計画を使用して行うことができる。一部の例では、DIDO TE202によってシミュレートされ得る悪意あるエージェント208によって引き起こされる又は悪意あるエージェント208に関連するシミュレートされたイベントを試験が含み得る。
【0032】
一例では、受入試験計画238に従って受入試験を行うように1つ又は複数の仮想ノードを構成することができる。受入試験は、ソフトウェアシステムが要求仕様を満たしたかどうかを判定するために実行することができる技法である。要求仕様は、ソフトウェアシステムに要求される機能的な及び非機能的な特徴を記述し得る。
【0033】
一部の例では、ブラックボックス試験計画246に従ってブラックボックス試験を行うように1つ又は複数の仮想ノードを構成することができ、ブラックボックス試験はソフトウェアの機能が知られていないソフトウェア試験の一種として定義され得る。試験は製品の内部知識なしに実行することができる。一部の例では、ブラックボックス試験が構文駆動型試験及び同値分割を含み得る。構文駆動型試験は、コンパイラ等の一部の言語又は文脈自由文法によって表され得る言語によって構文的に表され得るシステムに適用することができる。後者の例では、各文法規則が少なくとも1回使用されるように試験を生成することができる。同値分割は、類の各要素が同様のやり方で機能するように、システムの入力ドメインを幾つかの同値類に分割することを含み得る。多くの種類の入力が同様のやり方で動作し、同様の入力をグループ化することができ、試験は各グループの1つの入力に対してのみ実行することができる。例えば同値類の各要素は同様に動作し、類の或る要素に対して実行される試験項目が何らかのエラーを招く場合、類の他の要素は同じエラーを伴って試験に応答することが予期され得る。
【0034】
一部の例では、エンドツーエンド試験計画240に従ってエンドツーエンド試験(E2E試験)を実行するように1つ又は複数の仮想ノードを構成することができる。E2E試験は、アプリケーションワークフローを始まりから終わりまで試験することを含むソフトウェア試験方法を指し得る。この方法は、統合及びデータの完全性に関してシステムを検証するために現実のシナリオを再現することを狙う。アプリケーションがハードウェア、ネットワークの接続性、外部依存関係、データベース、及び他のアプリケーションとどのように通信するのかを明らかにするために、仮想ノードはアプリケーションに関して構成される全ての動作を実行することによってE2E試験を実行する。典型的には、E2E試験は機能試験及びシステム試験の完了後に実行される。
【0035】
一部の例では、統合試験計画236に従って統合試験を行うように1つ又は複数の仮想ノードを構成することができる。統合試験は、個々のコンポーネントを試験してそれらがどのように一緒に機能するのかを明らかにするために実行することができる。統合試験は、個々の又は独立型の要素として適切に機能すると判定されている、及び統合時に明確なバグがないモジュールを試験するために行われ得る。統合試験は最も一般的な機能試験の種類であり、自動化された試験を使用して実行され得る。典型的には、様々な開発者が他のモジュールへの参照なしにシステム又はソフトウェアの様々なモジュールを同時に並行して構築する。それらの開発者は、ブラックボックス及びホワイトボックス機能確認を含む広範な単体試験を個々のモジュールに対して行うことができる。統合試験はデータ及び動作コマンドをモジュール間で流れさせることによって行われ、モジュールは個々のコンポーネントではなく全システムの一部として動作させられる。統合試験は、ユーザインタフェース操作、データ形式、動作タイミング、アプリケーションプログラミングインタフェース(API)呼び出し、並びにデータベースアクセス及びユーザインタフェース操作に関する問題を明らかにすることができる。
【0036】
一部の例では、相互運用性試験計画252に従って相互運用性試験を行うように1つ又は複数の仮想ノードを構成することができる。相互運用性試験は、個々のコンポーネントがコンポーネント群内で機能する能力を試験するために実行することができる。相互運用性は、仮想ノード又は機能コンポーネントの性能の変動への応答を試験するように構成され得る。例えば高速通信リンクによってアクセスされる併設されるノード又は機能コンポーネントは、遅い通信リンク上でアクセスされる遠隔地にあるノードよりも低いレイテンシで(即ち素早く)応答することができる。相互運用性試験は、試験中の仮想装置がタイミングスキューに妨げられることなくトランザクション及びイベントに適切に応答できることを確実にするために実行することができる。相互運用性試験は、データ及び動作コマンドをモジュール間で流れさせることによって行うことができ、モジュールは個々のコンポーネントではなく全システムの一部として動作させられる。相互運用性試験は、タイミング変動及び統合試験によって対処される1組の問題に関係する他の変動に対処し得る。
【0037】
一部の例では、インタフェース試験計画250に従ってノード間のインタフェース試験を行うように1つ又は複数の仮想ノードを構成することができる。インタフェースは、2つのコンポーネントを統合する接続を含むことができ、API、ウェブサービス、及び他の種類の接続サービスを含むことができる。インタフェースは、装置とユーザとの間の通信を可能にするコマンド、メッセージ、及び他の属性の組を含むソフトウェアを含み得る。インタフェース試験は、2つの異なるソフトウェアシステム間の通信が正しく行われるかどうかを確認するソフトウェア試験の種類として実行され得る。
【0038】
一部の例では、回帰試験計画234に従って回帰試験を行うように1つ又は複数の仮想ノードを構成することができる。回帰試験は、過去に開発され試験された仮想ノードのネットワークが1つ又は複数のノードの変更後に期待通りに機能することを確実にするために、機能的要件及び非機能的要件に関する試験を反復的に実行することを含み得る。障害又はエラーは、機能に関する回帰と呼ぶことができる。回帰試験を必要とする変更は、電子又は他のハードウェアコンポーネントのバグ修正、ソフトウェア強化、構成変更、及び置換を含む。欠陥が見つかるたびに回帰試験スイートは増大する傾向があるので、試験の自動化がしばしば関与する。時として、試験の適切なサブセットを決定するために影響波及解析が行われる(非回帰解析)。
【0039】
一部の例では、サニティテスト計画248に従ってサニティテストを行うように1つ又は複数の仮想ノードを構成することができる。サニティテストは回帰試験のサブセットであり得る。サニティテストは、加えられたコードの変更が期待通りに機能していることを確実にするために行われる。サニティテストは、ソフトウェアビルドの試験が続行可能かどうかを検査するためのストッページ(stoppage)である。サニティテストの1つの目的は、詳細な試験を行うことなしにアプリケーションの機能性を検証することである。重大なバグ修正が行われた後等、サニティテストは概してプロダクション展開が直ちに要求されるビルドに対して行われる。
【0040】
一部の例では、スモークテスト計画244に従ってスモークテストを行うように1つ又は複数の仮想ノードを構成することができる。スモークテストは、基本機能が機能しているかどうかを確認するために新たな又は更新されたソフトウェアビルドに対して行われ得る。スモークテストは、典型的には任意の新たなビルドに対して行われる最初の試験である。スモークテストでは、システムの最も重要な機能又はコンポーネントを対象として含むように試験項目が選ばれる。目的は網羅的な試験を行うことではなく、システムの重大な機能が期待通りに機能していることを確認することである。
【0041】
一部の例では、単体試験計画232に従って単体試験を行うように1つ又は複数の仮想ノードを構成することができる。単体試験は、コンポーネント内のコードの各部分が所望の又は予期される出力を与えることを確実にするために行われる。単体試験は、典型的にはコンポーネントに関するインタフェース及び仕様を対象とする。コードの各単体が別の単体に進む前に独立して徹底的に試験されるので、単体試験はコード開発の文書化を提供し得る。単体試験は、中断する可能性が最も高いコードを実行することによって機能試験をサポートする。
【0042】
一部の例では、ホワイトボックス試験計画242に従ってホワイトボックス試験を行うように1つ又は複数の仮想ノードを構成することができる。ホワイトボックス試験は、ブラックボックス試験を超えてデータ構造、内部設計、コード構造、及びソフトウェアの機能を含む内部構造を解析する技法を使用する。ホワイトボックス試験はガラスボックス試験、クリアボックス試験、又は構造試験とも呼ばれ得る。
【0043】
DIDO TEは、本明細書ではDIDO参照アーキテクチャ(DIDO-RA)と呼ばれる参照アーキテクチャに基づき得る。DIDO TEは、広くアクセス可能及び利用可能とすることができる固有の動的な分散型のサービスとしての試験環境(TEaaS:testing environment as a service)を提供する。DIDO TEは、DIDOを含む又は使用するプラットフォームのための広範なユーザシナリオを扱う。DIDO TEは、ピアツーピア、スマートコントラクトを有するブロックチェーン、及びクラスタ化されたアプリケーションを含む使用事例のために仮想ノードのネットワークを素早く展開することができる。
【0044】
一部の例では、機能する製品のコアは以下のDIDO TE機能を含むは。
・相互運用性試験のために必要な全ての資源が割り当てられた状態で、仮想化されたネットワーク内で複数の種類のノードを作成可能な機能。
・試験の準備ができている仮想化されたネットワーク上で1つの仮想化されたノードから数千の仮想化されたノードへと素早くスケーリング可能な機能。
【0045】
一部の例では、試験環境マネージャ204はDIDO TEフレームワーク200のコアエンジン及びコントローラである。試験環境マネージャ204は、DIDO仮想ネットワーク、アプリケーション、試験事例の実行、及び資源管理の全ライフサイクルを管理し制御する。DIDO試験マネージャAPIは、任意の分散アプリケーションのための拡張性及び固有プロトコルサポートを確実にするためのカスタムインテグラルノードコマンドマップを含み得る。カスタム資源オーケストレーション及び管理プロトコルは、様々なオペレーティングシステム及び他の環境選択及びサポートパラメータに関する仮想ノードの構成を可能にする。一部の例では、仮想ノードは仮想マシン又はコンテナであり得る。
【0046】
図3は、
図2に示すDIDO試験フレームワーク200の一部を実装するために使用することができるプラットフォーム304を提供する仮想ノード302の例を示す。仮想ノード302は、本開示の一定の態様に従って構成することができる異なる仮想ノードの種類312、322を使用して実装することができる。第1の仮想ノードの種類312は、Erlang仮想マシン等の仮想マシンを使用して実装することができる。第1の仮想ノードの種類312によって提供されるプラットフォーム314は、選択される仮想マシンに適合するコンポーネントで構成され得る。第2の仮想ノードの種類322はコンテナを使用して実装することができる。コンテナは、Kubernetes(登録商標)等のコンテナオーケストレーションプラットフォームと対話するためにカスタムフレームワークを使用してDIDOアプリケーションを包むことができる。一例では、IOTA仮想ノードのインスタンス化を開始する前にコンテキスト及び他の情報を仮想ノードに与えることにより、IOTAネットワーク等の)オープンソースの分散台帳暗号通貨ネットワークのノードを仮想ノード上で実装することができる。第2の仮想ノードの種類322によって提供されるプラットフォーム324は、コンテナの動作をサポートするように構成され得る。
【0047】
図4は、本開示の一定の態様に従って提供されるDIDO TEシステムの一定の構成可能な特徴を示す。DIDO TEプラットフォーム400は、ハードウェア及びソフトウェアモジュールの何らかの組み合わせを使用して実装することができるコンポーネントの例を含む。DIDO TEプラットフォーム400は、標的のDIDOプロダクション環境をエミュレートするやり方で所望のランタイムシステムを実行するように構成可能なプロセッサを含む1つ又は複数の処理回路を使用することができる。一部の例では、処理回路は標的のDIDOプロダクション環境内で使用されるプロセッサの種類を含み得る。一部の例では、処理回路は標的のDIDOプロダクション環境内で使用されるプロセッサの種類をエミュレートすることができる仮想マシンの制御下で動作させることができる。
【0048】
例えば
図5に更に示すように、DIDO TEプラットフォーム400はTEマネージャによって定めることができる。DIDO TEプラットフォーム400は、ハードウェア及びソフトウェアモジュールの何らかの組み合わせを使用して実装することができるコンポーネントの組み合わせ402を含む。TEマネージャは、ハードウェアプラットフォーム404によって採用されるハードウェアのバージョン406又は古さを含む、使用されるハードウェアプラットフォーム404の種類を定めることができる。一例では、ハードウェアプラットフォーム404はプロセッサの種類並びに関連する資源及び周辺装置によって特徴付けられ得る。別の例では、ハードウェアプラットフォーム404は、プロセッサ及び関連する資源及び周辺装置を有する無線モデム、ユーザインタフェース、及び/又はシステムオンチップによって提供される1組の機能を有する携帯電話等の装置の種類によって特徴付けられ得る。TEマネージャは、指定のランタイムバージョン410を有し得るランタイムプラットフォーム408を含むランタイム環境を定め得る。ランタイムプラットフォーム408は、オペレーティングシステム、デバイスドライバ、割り込みスキーム、及びハードウェアプラットフォーム404の要素を制御し又はかかる要素と対話する他のモジュールを表すことができる。ランタイムプラットフォーム408は標準によって定められた、市販の、又は独自開発のオペレーティングシステムを含み得る。一部の例では、オペレーティングシステムがUnix、Linux、Windows、Java、VM等又はそれらの派生物のバージョンであり得る。TEマネージャは、定められたオペレーティングシステムのための又はプログラミング言語のためのランタイムライブラリ(例えばSolidity)を含む1つ又は複数のライブラリを定めることができる。
【0049】
TEマネージャはDIDOプラットフォーム412、及び一部の例ではDIDOプラットフォーム412のバージョン414を定め得る。DIDOプラットフォーム412は、Ethereum、Polkadot、Iota、惑星間ファイルシステム(IPFS)等の標準によって定められた、市販の、又は独自開発のDIDO環境を含み得る。
【0050】
DIDO TEノードプラットフォームの種類420は、ハードウェア及びソフトウェアモジュールの何らかの組み合わせを使用して実装することができるコンポーネントの組み合わせ422を含む。DIDO TEノードプラットフォームの種類420は、DIDO TE内でDIDOノードを構成し又は使用することができる様々なやり方を表す。各DIDO TEノードはDIDO TEプラットフォーム424に関連することができ、TEのバージョン426又はインスタンス化、DIDO TEノードによって実装されるプラットフォームの種類428、及びDIDO TEノードが担う役割430に従って構成され得る。DIDO TEプラットフォーム424はDIDO TEノードプラットフォームの種類420のインスタンス化を示し又はそれに対応することができ、仮想マシン、コンテナ、又は他の種類の仮想ノードとして識別され又は分類され得る。DIDO TEノードは、ウォレット、フルノード、ライトノード、アーカイブノード、又は他のノード等の役割430で動作され得る。
【0051】
DIDO TEノードセット440は、TE内で一意に識別され得る1組の再利用可能なノードを定める。DIDO TEノードセット440は、ハードウェア及びソフトウェアモジュールの何らかの組み合わせを使用して実装することができるコンポーネントの組み合わせ442を含む。DIDO TEノードセット440は、ノードセット名444によって識別することができ、指定された数446のノードを含む1組のノードに関連し得る。DIDO TEノードセット440は、ノードの1つ又は複数の構成種類448を示し得る。一部の例では、各DIDO TEノードセット440が全て同じ種類の1組のノードを定める。
【0052】
DIDO TE仮想ネットワーク460は、DIDO TEノードセット440の集合を定める。DIDO TE仮想ネットワーク460は、ハードウェア及びソフトウェアモジュールの何らかの組み合わせを使用して実装することができるコンポーネントの組み合わせ462を含む。DIDO TE仮想ネットワーク460は仮想ネットワーク名464を使用して識別することができ、集合内の定められた数のノード466を含み得る。
【0053】
図5は、DIDO TEプラットフォームを定めるためのプロセスを示す流れ
図500である。このプロセスは、DIDO TEアドミニストレータ及びDIDO TEマネージャの参加を含み得る。DIDO TEアドミニストレータは、新たなDIDO TEプラットフォームのリストを作成することを担い得る。DIDO TEアドミニストレータは、DIDO TEプラットフォームを作成し確認する必要がない。一部の例では、DIDO TEアドミニストレータがDIDO TEプラットフォームの或るものを作成し確認することができる。DIDO TEマネージャは、DIDO TEにとって入手可能なDIDO TEノード種類リストを保つ。DIDO TEプラットフォームが認証され承認されると、DIDO TEアドミニストレータによって保たれるDIDOノードTEプラットフォーム定義データストア502内にエントリを作成することができる。DIDOノードTEプラットフォーム定義データストア502又はデータストア502のコピーであるローカルデータストア522は、DIDO TEマネージャにとってアクセス可能であり得る。一例では、データストア502、522が例えばURLを含むプラットフォームコンポーネントへの参照を保つ。
【0054】
DIDO TEアドミニストレータは、DIDO TEプラットフォームの必要性を識別し、又はDIDO TEプラットフォームに対する要求504を受信し得る。要求されたTEプラットフォームを記述するメタデータ506がアドミニストレータによって提供されてもよく、DIDO TEノードプラットフォーム定義データストア502に対して行われるクエリにより、DIDO TEアドミニストレータはブロック508で適切なプラットフォームが存在するかどうかを判定することができる。一部の例では、適切な又はマッチするDIDO TEプラットフォームがDIDO TEノードプラットフォーム定義データストア502内に存在し、プロセスが終了し得る。一部の例では、適切な又はマッチするDIDO TEプラットフォームがまだ定義されておらず、プラットフォームの定義を作成するための要求510がDIDO TEマネージャに対して行われる。DIDO TEマネージャはプラットフォームを作成し又は構成することができ、新たなDIDO TEプラットフォーム定義のためのエントリをDIDOノードTEプラットフォーム定義データストア502、522内に作成し得る。タスクの完了時にマネージャが要求のステータスをアドミニストレータに通知し、又は要求がタイムアウトし得る。
【0055】
図6は、DIDO TEノードセットを定めるためのプロセスを示す流れ
図600である。このプロセスは、DIDO TEアドミニストレータ及びDIDO TEマネージャの参加を含み得る。DIDO TEアドミニストレータは、DIDO TEノードセットのリストを管理し保つことを担い得る。DIDO TEアドミニストレータは、DIDO TEノードセットを作成し確認する必要がないが、一部の例ではDIDO TEアドミニストレータはDIDO TEノードセットの或るものを作成し確認することができる。DIDO TEマネージャは、DIDO TEに使用可能なDIDO TEノードセットのリストを保つ。DIDO TEノードセットが認証され承認されると、DIDO TEノードセット種類定義データストア602内にDIDO TEプラットフォームのためのエントリを作成することができる。
【0056】
DIDO TEアドミニストレータは、DIDO TEノードセット定義の要求604又は必要性を識別し又は受信し得る。DIDO TEノードセットを記述するメタデータ606がアドミニストレータによって提供されてもよく、適切な又はマッチするノードセット定義が既に存在するかどうかをブロック608で判定するために、DIDO TEノードセット種類定義データストア602に対するクエリを行うことができる。一部の例では、適切な又はマッチするDIDO TEノードセットが既に定義されており、プロセスが終了し得る。適切な又はマッチするDIDO TEノードセットがまだ定義されていない場合、ノードセット定義を作成するための、及び新たなDIDO TEノードセット定義のためのエントリをDIDOノードセット種類定義データストア602内に作成するための要求610がDIDO TEマネージャに送信され得る。タスクの完了時にマネージャが要求のステータスをアドミニストレータに通知し、又は要求がタイムアウトし得る。アドミニストレータは、作成されたノードセット定義をブロック622及び624で確認できない場合に典型的には知らされる。一例では、確認の失敗はiOS装置上でIotaアーカイブノードを作成するためのアドミニストレータによる要求から生じ得る。
【0057】
図7は、DIDO TE仮想ネットワークを定めるためのプロセスを示す流れ
図700である。このプロセスは、DIDO TEアドミニストレータ及びDIDO TEマネージャの参加を含み得る。DIDO TEアドミニストレータは、DIDO仮想ネットワークのリストを管理し保つことを担い得る。DIDO TEアドミニストレータは、DIDO TE仮想ネットワークを作成し確認する必要がないが、一部の実装形態ではDIDO TEアドミニストレータは一定のDIDO TE仮想ネットワークを作成し確認するように構成され得る。DIDO TEマネージャは、DIDO TEと共に使用するために利用可能なDIDO TE仮想ネットワークのリストをDIDO TE仮想ネットワーク定義データストア702内に保つことができる。DIDO TE仮想ネットワークが認証され承認されると、DIDO TE仮想ネットワーク定義データストア702内にエントリを作成することができる。
【0058】
DIDO TEアドミニストレータは、DIDO TE仮想ネットワーク定義の必要性又は要求704を受信し又は識別し得る。要求されたDIDO TE仮想ノードを記述するメタデータ706がアドミニストレータによって生成されてもよく又はアドミニストレータに与えられてもよく、適切な仮想ネットワーク定義が存在するかどうかを判定するために、DIDO TE仮想ネットワーク定義データストア702に対して行われるクエリへの応答をブロック708で使用することができる。一部の例では、適切な又はマッチするDIDO TE仮想ネットワークが既に定義されており、プロセスが終了し得る。DIDO TE仮想ネットワークがまだ定義されていない場合、DIDO TE仮想ネットワークを作成するための、及び新たなDIDO TE仮想ネットワーク定義のためのエントリをDIDO TE仮想ネットワーク定義データストア702内に作成するための要求710がDIDO TEマネージャに対して行われる。タスクの完了時にマネージャが要求のステータスをアドミニストレータに通知し、又は要求がタイムアウトし得る。アドミニストレータは、作成されたノードセット定義をブロック722及び724で確認できない場合に典型的には知らされる。一例では、確認の失敗はマイナーがない状態でEthereumを使用して仮想ネットワークを作成するためのアドミニストレータによる要求後に生じ得る。
【0059】
図8は、本開示の一定の態様に従ってDIDOを初期化するための一定の構成設定800を示す。試験環境マネージャ204は、様々な種類の多数の構成設定を扱うのに適している。例えば、ノードの数、ノードの種類、及びプラットフォームがトポグラフィ内で追跡されるように試験環境を構成することができる。このシナリオでは、全てのノードが新たな初期台帳(例えばジェネシスブロック)に基づく。
【0060】
図9は、本開示の一定の態様による、試験環境内で構成され得るコードデバッギング設定900の定義上の例を示す。
図10は、本開示の一定の態様によるDIDO TEモニタリング1000の定義上の例を示す。
図11は、本開示の一定の態様による、悪意あるエージェントの試験の定義上の例を示す。
図12は、本開示の一定の態様によるDIDO TEマネージャ構成1200の一例を示す。
【0061】
DIDOエディタ環境は、ウェブベースの統合開発環境(IDE)の全ライフサイクルを管理し制御するように構成され得る。DIDOエディタ環境は
図2に示すDIDO TE202に匹敵することができ、試験環境マネージャ204の等価物を含み得る。とりわけDIDO TEの範囲内でDIDOのためのスマートコントラクトを編集し、展開し、試験したいそれぞれのユーザのために各IDEが作成され管理される。各DIDOの向上した使いやすさをもたらし固有の機能をサポートするために、このIDEは複数のプラグインを使用してカスタマイズされる。
【0062】
DIDO TEノードコマンド及び制御は、DIDO又はその環境のライフサイクルを命令又は制御するための追加のベクトルを提供するDIDOのための補足的アプリケーションである。一例では、ユーザの願望及び需要を完全にサポートするために、DIDO TEノードコマンド及び制御アプリケーションは、さもなければ内部APIを有さない又は追加の制御を必要とする分散アプリケーションを管理し構成するためのAPIを提供する。
【0063】
一部の例では、試験環境をGoogle Cloud(登録商標)、Amazon AWS(登録商標)、及びMicrosoft Azure(登録商標)等のクラウドサービス上にホストすることができる。試験環境を仮想化することは、エージェントを誤ってコンピュータネットワークに(例えば商行為に、公に、又は独自開発のサイバースペース等に)送り出すことに対する懸念を高めることなしに悪質な又は悪意あるエージェントを試験することを可能にする。
【0064】
図13は、本開示の一定の態様に従って提供される試験1300及び1組の試験計画1302の構造の一例を示す。1組の試験計画1302は、
図2内に示す1組の試験計画230内のに対応し得る。様々な例において、静的試験又は動的試験が以下を含む11個以上の試験計画を含む:
・単体試験
・統合試験
・エンドツーエンド試験(E2E試験)
・スモークテスト
・サニティテスト
・回帰試験
・受入試験
・ホワイトボックス試験
・ブラックボックス試験
・インタフェース試験
・相互運用性試験
・悪意ある行為者試験(
図11参照)
【0065】
各試験計画は、予期される結果と比較するための試験結果を生成する複数の試験ステップで構成される試験セットを定め得る。
【0066】
DIDO TEは、ノードのDIDO TE仮想ネットワークを使用して行われる体系化された再現可能な試験を可能にする。試験セット1304は、試験ネットワーク内の単一のDIDO仮想ノード、仮想ノードのサブセット、又は全ての仮想ノードを実行することができる。試験は、1組の試験計画1302内の試験計画及び試験セット1304を一意に識別する試験定義に関連することができ、又はかかる試験定義を使用して制御され得る。試験セット1304は1つ又は複数の試験ステップ1306を含むことができ、各試験ステップ1306は試験ステップ1306に関する予期される試験結果を定める。試験ステップ1306は、試験ステップ1306の成果を捕捉する試験結果をもたらすことが予期される。
【0067】
図14は、DIDO TEを使用して実行される試験を定めるためのプロセスを示す流れ
図1400である。このプロセスは、DIDO TEアドミニストレータ及びDIDO TEマネージャの参加を含み得る。DIDO TEアドミニストレータは、DIDO TE試験のリストを管理し保つことを担う。DIDO TEアドミニストレータは、DIDO TE試験を作成し確認する必要がない。一部の例では、DIDO TEアドミニストレータがDIDO TE試験の或るものを作成し確認するように構成され得る。DIDO TEマネージャは、DIDO TEと共に使用するために利用可能なDIDO TEのリストをDIDO TE試験定義データストア1402内に保つことができる。DIDO TE試験が認証され承認されると、DIDO TE試験定義データストア1402にエントリが作成される。
【0068】
一例では、DIDO TEアドミニストレータがDIDO TE試験定義の要求1404を受信することができ、或いはDIDO TE試験定義の必要性を識別し得る。DIDO TE試験を記述するメタデータ1406がアドミニストレータによって生成されてもよく又はアドミニストレータに与えられてもよく、適切な試験定義が既に定められているかどうかを判定するために、DIDO TE試験定義データストア1402に対して行われるクエリへの応答をブロック1408で使用することができる。DIDO TE試験がまだ定義されていない場合、試験を作成するための、及び新たな試験定義のためのエントリをDIDO試験データストア内に作成するための要求1410がDIDO TEマネージャに対して行われる。タスクの完了時にDIDO TEマネージャが要求のステータスをDIDO TEアドミニストレータに通知し、又は要求がタイムアウトし得る。アドミニストレータは、作成されたDIDO TE試験定義をブロック1422及び1424で確認できない場合に典型的には知らされる。一例では確認の失敗は、予期される結果をもたらすことなしに試験を作成するための要求がアドミニストレータによって提供された後で生じ得る。
【0069】
図15は、DIDO TEを使用して試験を実行するためのプロセスを示す流れ
図1500である。
図2を引き続き参照し、このプロセスはDIDO TEリポジトリマネージャ、DIDO TE品質マネージャ、及びDIDO TEマネージャの参加を含み得る。DIDO TEリポジトリマネージャ又はDIDO TEアドミニストレータは品質評価を作成し又は行う必要がない。DIDO TE品質マネージャがベースコードの修正を解析し、その修正がリリースされる前に品質を保証するために新たなベースコードに対して行う必要がある試験のリストを定義する。品質評価を必要としないベースコードへの変更の一例は、コードベース内のコメントの追加又は修正であり得る。DIDO TE試験マネージャは、製品がリリースされる前に製品の品質を保証するのに必要な試験の全てを実行することを担う。試験プロセスの終了時に、必要な試験のそれぞれについて生成される個々の試験報告から品質評価報告が生成される。
【0070】
一例では、DIDO TEリポジトリマネージャが行うべき品質評価の必要性を識別する。リポジトリの品質評価を開始するために、試験手順を記述するメタデータがDIDO TEリポジトリマネージャによってDIDO TE品質マネージャに与えられる。DIDO TE品質マネージャはベースコードリポジトリを解析し、ベースコードの品質を保証するためにどの試験を行う必要があるのかを決定する。DIDO TE試験マネージャが試験のリストを端から端まで処理し、行われた個々の試験を対象として含み全体的な結果を要約する試験報告を作成する。タスクの完了時にDIDO TE試験マネージャが要求のステータスをDIDO TE品質マネージャに通知し、又は試験要求がタイムアウトする。
【0071】
様々な例において、相互運用性試験のために必要な全ての資源が割り当てられた状態で、仮想化されたネットワーク内で複数の種類のノードが作成される。システムは、仮想化されたネットワーク上で1つの仮想化されたノードから数千の仮想化されたノードへとスケーリングされ得る。一部の例では、試験プラットフォームは1秒又はコンマ1秒単位で測定可能な時間枠の中で構成することができ動作可能とすることができる。エージェントを誤って送り出すことに対する懸念なしに悪質な又は悪意あるエージェントの試験を可能にするために、試験環境は仮想化することができる。コンテナオーケストレーションを用いた分散システムの包括的な静的試験及び動的試験を可能にするために、コンテナオーケストレーションを使用することができる。
【0072】
図16は、DIDO TEフレームワーク1600の一例を示す。DIDO TE1602は、DIDOソリューションに固有の概念並びにDIDO内のノードの分散ネットワークの制御及び管理を容易にするインタフェースの特化された集約を含む任意の環境内で動作し得るフレームワークを提供する。DIDO TEフレームワーク1600は、例えばステータス又は制御要求を伝達するためにメールボックスメッセージングパラダイム又はインタフェースを使用することができる一連の分散ワークフロープロセス1610によるオンデマンドワークを指揮することができる。定められたワークフローの段階の全体を通して、プロセスが産出され、メッセージが作用され、応答が受信され、作業の完了後に資源が解放される。これらのプロセスは任意の分散アプリケーションと同様のやり方で分散されるので、フレームワークは自らをホストすることさえでき、システムが無限に成長することを可能にし得る。
【0073】
一例では、DIDO TE1602は、Erlang仮想マシンと共に使用するように構成され得るElixir関数型プログラミング言語等の関数型プログラミング言語に基づいて構築される。図示のDIDO TE1602は、カスタムアプリケーションプログラミングインタフェース(API)によってメッセージング層を管理するアプリケーションを実行可能な試験環境マネージャ1604を含む。一部の例では、これらのAPIとの対話は公開RESTインタフェースによって、又は単純で使い易いグラフィカルユーザインタフェース(GUI)によって行うことができる。「RESTインタフェース」という用語は、ウェブプロトコル及び技術を使用する分散システムフレームワークを指し得る。RESTアーキテクチャはクライアント及びサーバの対話に関係し得る。アプリケーションは任意のホストオペレーティングシステムのためにパッケージ化し、分配可能にし、それにより隔離された動作環境の移植性及び使用を可能にし得る。
【0074】
一部の例では、DIDO TE1602試験環境と対話しそれを構成するためのユーザフレンドリなウェブGUIをホストするために、セキュアHTTP(S)ウェブサーバ(DIDOウェブ)が使用され得る。このアプリケーションは、クライアント及びサードパーティアプリケーションアクセスのためのRESTインタフェースもホストする。これらの2つのサーバは、使用事例の柔軟性及び機能実装の容易さのために密に結合することができる。サードパーティ認証は、将来の追加のプラグイン機能のための複数の統合の可能性をアプリケーションに与える。
【0075】
システム内の各ノードは物理ノード又は仮想ノードとすることができる。システム内の全てのノードは、割り当てられた一意識別子(ノードID)によって識別され得る。一定の態様によれば、同じノードIDを用いて複数のノードを定めることができ、共通のノードIDを共有するノードの対をツインと呼ぶことができる。ツインはアクティブシステム内で同時にアクティブになることはできない。つまり、ツインのアドレスを有するノードの1つのインスタンスだけがアクティブであることができ、アクティブな又は稼働中のシステム内で任意の特定の時点においてアドレス指定され得る。一部の実装形態では、ノードの物理的なインスタンス化(現実世界のツイン1618)又は仮想インスタンス(例えば仮想ツインプール1614内のノード)から選択されるツインに対してトラフィックをルートするようにスイッチング回路又はコンポーネントを構成することができる。スイッチは、同じノードIDを有するノードの複数のインスタンスがアクティブな又は稼働中のシステム内で存在することを可能にするように動作させることができる。同じノードIDを有する仮想ノードは仮想ツインプール1614の一部として存在し得る。ランタイム中に使用するために、仮想ツインプール1614内のインスタンスから選択するように仮想ツインスイッチ1616を構成することができる。仮想ツインプール1614に加えて、物理ノード1612のインスタンスはツインとして存在し動作し得る。仮想ツインスイッチ1616は、仮想ツインプール1614内の仮想ノードの何れかの代わりに物理ノード1612の使用を可能にするように構成され得る。初期化中、コントローラ又は仮想ツインスイッチ1616は、物理ノード1612又は仮想ツインプール1614内の仮想ツインを使用すべきかどうかを決定することができる。物理ノード1612は、仮想世界と物理世界との間のギャップを橋渡しするための追加の構成パラメータを必要とし得る。
【0076】
図17は、
図2のDIDO TEフレームワーク200内に示す試験環境マネージャ204、又は
図16のDIDO TEフレームワーク1600内に示す試験環境マネージャ1604を含み得る試験プラットフォームを構成するための方法を示す流れ
図1700である。ブロック1702で、試験環境マネージャ204又は1604が、当該分散システムに関する試験、シミュレーション、又は訓練のための要求に応答して仮想ノードの仮想ネットワークを構成することができる。ブロック1704で、試験環境マネージャ204又は1604は仮想ネットワーク内の複数の仮想ノードの間で分散システムを展開することができる。ブロック1706で、試験環境マネージャ204又は1604は、複数の仮想ノードから試験、シミュレーション、又は訓練の結果を受信することができる。ブロック1708で、試験環境マネージャ204又は1604は、複数のノードから受信される試験、シミュレーション、又は訓練の結果を組み合わせることによって要求への応答を提供することができる。
【0077】
一部の例では、試験環境マネージャ204又は1604は、複数の仮想ノードの仮想ノードを実装するように複数の物理ノードのそれぞれを構成することができる。複数の物理ノードは互いに地理的に離れた位置にある物理ノードを含み得る。一部の例では、仮想ネットワークが少なくとも1つの物理ノードと連携する。例えば試験、シミュレーション、又は訓練は、仮想ネットワークと対話する現実世界の装置、ノード、又はシステムを使用して実行され得る。後者の例では、現実世界の装置、ノード、又はシステムが、試験中の暗号サーバ若しくは装置、ノード、又はシステムを含み得る。
【0078】
一例では、仮想ネットワークの少なくとも1つのノードがコンテナを含む。一例では、仮想ネットワークの少なくとも1つのノードが仮想マシンを含む。
【0079】
一例では、試験環境マネージャ204又は1604は、要求が試験に関係するとき1組の試験手順で計画を構成し、仮想ネットワークのノードの間で試験手順の一部を割り当て、試験手順の結果を受信し、複数のノードから受信される試験手順の結果を組み合わせることによって試験結果を提供することができる。
【0080】
様々な例において、試験環境マネージャ204又は1604は、少なくとも1つの仮想ノードにDIDOを修正させ、修正済みのDIDOを試験の結果内で提供させるように試験計画230、1622を構成することができる。DIDOは、1つ又は複数のトランザクションレコードを安全に保つように構成される分散台帳を含み得る。
【0081】
様々な例において、試験環境マネージャ204又は1604は、仮想ノードの仮想ネットワーク上で試験計画230、1622を実行するためのタイムラインを構成することができる。タイムラインは実時間と一致して実行され得る。タイムラインは実時間よりも速い速度で実行され得る。タイムラインは実時間よりも遅い速度で実行され得る。試験環境マネージャ204又は1604は、試験、シミュレーション、又は訓練ベースの実行を繰り返すことができる。仮想ノードの仮想ネットワーク上で試験計画230、1622を実行するためのタイムラインは、試験、シミュレーション、又は訓練の実行ごとに再開される。試験環境マネージャ204又は1604は、少なくとも1つの仮想ノードにDIDOの分散台帳を修正させるように試験計画230、1622を構成することができる。分散台帳を修正することは、分散台帳によって保たれる情報を暗号化するために時間依存の暗号法を使用することを含み得る。タイムラインは、時間依存の暗号法に影響を及ぼすように構成され得る。
【0082】
一例では、試験環境マネージャ204又は1604は、仮想ネットワーク内の各仮想ノードが検証済みノードを含む場合に試験、シミュレーション、又は訓練を実行し、仮想ネットワーク内の少なくとも1つの仮想ノードを追加し又は修正した後で試験、シミュレーション、又は訓練を実行することによって得られる追加の結果とベースライン結果を比較し、追加の結果とベースライン結果の比較に基づいて追加された若しくは修正された仮想ノード又は仮想ネットワークを検証することによって試験計画230、1622のためのベースライン結果を生成することができる。
【0083】
図18は、分散システム内のノードを試験するための方法を示す流れ
図1800である。分散システムは、
図2のDIDO TEフレームワーク200内に示す試験環境マネージャ204、又は
図16のDIDO TEフレームワーク1600内に示すDIDO試験マネージャ1604を含み得る。ブロック1802で、試験環境マネージャ204又は1604が、DIDOを処理し管理するために使用される分散システムをエミュレートするように複数の仮想ノードを構成することができる。ブロック1804で、試験環境マネージャ204又は1604がエミュレートされた分散システムの試験を開始することができ、試験は第1のDIDOに対して1つ又は複数のトランザクションを実行して修正済みの第1のDIDOを得ることを含む。ブロック1806で、試験環境マネージャ204又は1604が、修正済みの第1のDIDOを検証済みシステムによって第1のDIDOから生成されている第2のDIDOと比較することによってエミュレートされた分散システムを確認することができる。一部の例では、トランザクションの少なくとも1つがエミュレートされた分散システム内で試験中のノードによって実行される。試験中のノードは、修正済みの第1のDIDOのコンテンツが第2のDIDOのコンテンツに対応する場合に検証され得る。
【0084】
一定の例では、第1のDIDOが参照DIDOのコピーである。第2のDIDOは、第1のDIDOの同一コピーに対する1つ又は複数のトランザクションを検証済みシステムに行わせることによって得ることができる。参照DIDOは、1つ又は複数のトランザクションレコードを安全に保つように構成される第1の分散台帳を含む又はかかる分散台帳に関連し得る。第2のDIDOは第2の分散台帳を含み得る。修正済みの第1のDIDOは第3の分散台帳を含む。これらの分散台帳のそれぞれは独立に保たれ得る。第2の分散台帳内の復号情報が第3の分散台帳のDIDO内の対応する復号情報とマッチするとき、修正済みの第1のDIDOのコンテンツは第2のDIDOのコンテンツに対応すると考えることができる。検証済みシステムは現実世界のシステムとすることができる。参照DIDO、第2のDIDO、及び1つ又は複数のトランザクションは対応する記録時点において現実世界のシステムからコピーされ得る。
【0085】
一部の実装形態では、試験環境マネージャ204又は1604が、エミュレートされた分散システムを使用して試験計画230、1622を実行するための試験タイムラインの開始点を構成し得る。1つ又は複数のトランザクションが試験計画230、1622によって定められる。第1の運用モードでは、試験タイムラインが実時間と一致した速度で実行される。第2の運用モードでは、試験タイムラインが実時間と異なる速度で実行される。試験環境マネージャ204又は1604は、試験タイムラインを開始点に再設定した後、第1のDIDOの未修正バージョンを用いて試験を再開することができる。試験環境マネージャ204又は1604は、少なくとも1つの仮想ノードに第1のDIDOの分散台帳を修正させるように試験計画230、1622を構成することができる。分散台帳を修正することは、試験タイムラインに従い、分散台帳によって保たれる情報を暗号化するために時間依存の暗号法を使用することを含み得る。
【0086】
一部の例では、試験環境マネージャ204又は1604が、複数の仮想ノード内の様々な仮想ノードを実装するように複数の物理ノードを構成することができる。複数の物理ノードは互いに地理的に離れた位置にある物理ノードを含み得る。一例では、複数の仮想ノードの少なくとも1つのノードがコンテナを含む。
【0087】
一定の実装形態では、試験環境マネージャ204又は1604が、エミュレートされた分散システム内の各仮想ノードが検証済みノードを含む場合に試験を実行することによって試験計画230、1622のベースライン結果を生成し、エミュレートされた分散システム内の少なくとも1つの仮想ノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較し、ベースライン結果が追加の結果とマッチする場合に追加され若しくは修正された仮想ノード又はエミュレートされた分散システムを検証するように構成され得る。エミュレートされた分散システム内に仮想ツインノードを含めることができ、仮想ツインノードはエミュレートされた分散システム内で1つ又は複数の他のツインノードによって共有される識別子を使用してアドレス指定される。試験環境マネージャ204又は1604は、仮想ツインノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較することができ、ベースライン結果が追加の結果とマッチする場合に少なくとも1つの追加され若しくは修正された仮想ツインノード又はエミュレートされた分散システムを検証することができる。試験環境マネージャ204又は1604は、1つ又は複数の他のツインノード内の物理ツインノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較し、ベースライン結果が追加の結果とマッチする場合に追加され若しくは修正された物理ツインノード又はエミュレートされた分散システムを検証することができる。
【0088】
請求項17及び18の方法は、分散システムを使用して実装される試験プラットフォーム又は試験環境として実装することができる。試験プラットフォーム又は試験環境は、複数の仮想ノードの1つ又は複数を動作させるようにそれぞれ構成される複数の処理システムと、複数の処理システムに結合され、DIDOを処理し管理するために使用される分散システムをエミュレートするように複数の仮想ノードが構成されるように複数の仮想ノードを通信可能に結合するように構成されるネットワークと、試験管理プロセッサとを有し得る。試験管理プロセッサは、エミュレートされた分散システムの試験を開始するように構成することができ、試験は第1のDIDOに対して1つ又は複数のトランザクションを実行して修正済みの第1のDIDOを得ることを含む。試験管理プロセッサは、修正済みの第1のDIDOを検証済みシステムによって第1のDIDOから生成されている第2のDIDOと比較することによってエミュレートされた分散システムを確認するように更に構成され得る。
【0089】
一部の例では、1つ又は複数のトランザクションの少なくとも1つがエミュレートされた分散システム内の試験中の仮想ノードによって実行される。試験管理プロセッサは、修正済みの第1のDIDOのコンテンツが第2のDIDOのコンテンツに対応する場合に試験中の仮想ノードを検証するように更に構成され得る。
【0090】
第1のDIDOは参照DIDOのコピーとすることができ、及び/又は第2のDIDOは第1のDIDOの同一コピーに対する1つ又は複数のトランザクションを検証済みシステムに行わせることによって得られる。検証済みシステムは現実世界のシステムを含み得る。参照DIDO、第2のDIDO、及び1つ又は複数のトランザクションは、対応する記録時点において現実世界のシステムからコピーされ得る。
【0091】
一部の実装形態では、試験管理プロセッサが、エミュレートされた分散システム内の各仮想ノードが検証済みノードを含む場合に試験を実行することによって試験計画230、1622のためのベースライン結果を生成し、エミュレートされた分散システム内にツインノードを含め、仮想ツインノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較し、ベースライン結果が追加の結果とマッチする場合に少なくとも1つの追加され若しくは修正されたツインノード又はエミュレートされた分散システムを検証するように更に構成される。ツインノードは、エミュレートされた分散システム内で1つ又は複数の他のツインノードによって共有される識別子を使用してアドレス指定され得る。
【0092】
一部の実装例を以下の番号付きの条項に記載する:
1.分散不変データオブジェクト(DIDO)を処理し管理するために使用される分散システムをエミュレートするように複数の仮想ノードを構成すること、エミュレートされた分散システムの試験を開始することであって、試験は第1のDIDOに対して1つ又は複数のトランザクションを実行して修正済みの第1のDIDOを得ることを含む、開始すること、及び修正済みの第1のDIDOを検証済みシステムによって第1のDIDOから生成されている第2のDIDOと比較することによってエミュレートされた分散システムを確認することを含む、分散システム内のノードを試験するための方法。
2.1つ又は複数のトランザクションの少なくとも1つがエミュレートされた分散システム内で試験中のノードによって実行される、条項1に記載の方法。
3.修正済みの第1のDIDOのコンテンツが第2のDIDOのコンテンツに対応する場合に試験中のノードを検証することを更に含む、条項1又は2に記載の方法。
4.第1のDIDOが参照DIDOのコピーであり、第2のDIDOは第1のDIDOの同一コピーに対する1つ又は複数のトランザクションを検証済みシステムに行わせることによって得られる、条項1~3の何れか一項に記載の方法。
5.参照DIDOは1つ又は複数のトランザクションレコードを安全に保つように構成される第1の分散台帳を含み、第2のDIDOは第2の分散台帳を含み、修正済みの第1のDIDOは第3の分散台帳を含み、それぞれの分散台帳が独立に保たれる、条項4に記載の方法。
6.第2の分散台帳内の復号情報が第3の分散台帳のDIDO内の対応する復号情報とマッチするとき、修正済みの第1のDIDOのコンテンツは第2のDIDOのコンテンツに対応する、条項5に記載の方法。
7.検証済みシステムが現実世界のシステムであり、参照DIDO、第2のDIDO、及び1つ又は複数のトランザクションが対応する記録時点において現実世界のシステムからコピーされる、条項4~6の何れか一項に記載の方法。
8.エミュレートされた分散システムを使用して試験計画を実行するための試験タイムラインの開始点を構成することであって、1つ又は複数のトランザクションが試験計画によって定められる、構成することを更に含む、条項1~7の何れか一項に記載の方法。
9.第1の運用モードでは試験タイムラインが実時間と一致した速度で実行され、第2の運用モードでは実時間と異なる速度で実行される、条項8に記載の方法。
10.試験タイムラインを開始点に再設定した後、第1のDIDOの未修正バージョンを用いて試験を再開することを更に含む、条項8又は9に記載の方法。
11.少なくとも1つの仮想ノードに第1のDIDOの分散台帳を修正させるように試験計画を構成することであって、分散台帳を修正することは、試験タイムラインに従って分散台帳によって保たれる情報を暗号化するために時間依存の暗号法を使用することを含む、構成することを更に含む、条項8~10の何れか一項に記載の方法。
12.複数の仮想ノード内の様々な仮想ノードを実装するように複数の物理ノードを構成することであって、複数の物理ノードは互いに地理的に離れた位置にある物理ノードを含む、構成することを更に含む、条項1~11の何れか一項に記載の方法。
13.複数の仮想ノードの少なくとも1つのノードがコンテナを含む、条項1~12の何れか一項に記載の方法。
14.エミュレートされた分散システム内の各仮想ノードが検証済みノードを含む場合に試験を実行することによって試験のベースライン結果を生成すること、及びエミュレートされた分散システム内の少なくとも1つの仮想ノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較すること、及びベースライン結果が追加の結果とマッチする場合に追加され若しくは修正された仮想ノード又はエミュレートされた分散システムを検証することを更に含む、条項1~13の何れか一項に記載の方法。
15.エミュレートされた分散システム内に仮想ツインノードを含めることであって、仮想ツインノードはエミュレートされた分散システム内で1つ又は複数の他のツインノードによって共有される識別子を使用してアドレス指定される、含めること、仮想ツインノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較すること、及びベースライン結果が追加の結果とマッチする場合に少なくとも1つの追加され若しくは修正された仮想ツインノード又はエミュレートされた分散システムを検証することを更に含む、条項14に記載の方法。
16.1つ又は複数の他のツインノード内の物理ツインノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較すること、及びベースライン結果が追加の結果とマッチする場合に追加され若しくは修正された物理ツインノード又はエミュレートされた分散システムを検証することを更に含む、条項14又は15に記載の方法。
17.複数の仮想ノードの1つ又は複数を動作させるようにそれぞれ構成される複数の処理システムと、複数の処理システムに結合され、分散不変データオブジェクト(DIDO)を処理し管理するために使用される分散システムをエミュレートするように複数の仮想ノードが構成されるように複数の仮想ノードを通信可能に結合するように構成されるネットワークと、試験管理プロセッサとを含む、分散システムのための試験プラットフォームであって、試験管理プロセッサは、エミュレートされた分散システムの試験を開始することであって、試験は第1のDIDOに対して1つ又は複数のトランザクションを実行して修正済みの第1のDIDOを得ることを含む、開始すること、及び修正済みの第1のDIDOを検証済みシステムによって第1のDIDOから生成されている第2のDIDOと比較することによってエミュレートされた分散システムを確認することを行うように構成される、試験プラットフォーム。
18.1つ又は複数のトランザクションの少なくとも1つがエミュレートされた分散システム内の試験中の仮想ノードによって実行され、修正済みの第1のDIDOのコンテンツが第2のDIDOのコンテンツに対応する場合に試験中の仮想ノードを検証するように試験管理プロセッサが更に構成される、条項17に記載の試験プラットフォーム。
19.第1のDIDOが参照DIDOのコピーであり、第2のDIDOは第1のDIDOの同一コピーに対する1つ又は複数のトランザクションを検証済みシステムに行わせることによって得られ、検証済みシステムは現実世界のシステムであり、参照DIDO、第2のDIDO、及び1つ又は複数のトランザクションは、対応する記録時点において現実世界のシステムからコピーされる、条項17又は18に記載の試験プラットフォーム。
20.試験管理プロセッサが、エミュレートされた分散システム内の各仮想ノードが検証済みノードを含む場合に試験を実行することによって試験計画のためのベースライン結果を生成すること、エミュレートされた分散システム内にツインノードを含めることであって、ツインノードはエミュレートされた分散システム内で1つ又は複数の他のツインノードによって共有される識別子を使用してアドレス指定される、含めること、仮想ツインノードを追加し又は修正した後で試験を実行することによって得られる追加の結果とベースライン結果を比較すること、及びベースライン結果が追加の結果とマッチする場合に少なくとも1つの追加され若しくは修正されたツインノード又はエミュレートされた分散システムを検証することを行うように更に構成される、条項17~19の何れか一項に記載の試験プラットフォーム。
【0093】
先の説明は本明細書に記載した様々な態様を当業者が実践できるようにするために行った。それらの態様に対する様々な修正を当業者なら容易に思い付き、本明細書で定める全般的な原理は他の態様にも適用され得る。従って特許請求の範囲は、本明細書で示した態様に限定されることは意図せず、言語による特許請求の範囲と合致する全ての範囲が与えられるべきであり、或る要素を単数形で言及することは、別段の定めがない限り「唯一の」という意味ではなく「1つ又は複数の」という意味であることを意図する。別段の定めがない限り「一部の、幾つかの(some)」という用語は1つ又は複数を指す。本開示の全体を通して記載した様々な態様の要素に対する、当業者に知られており又は後で当業者が知ることになる全ての構造上の及び機能上の等価物を参照によって本明細書に明確に援用し、特許請求の範囲によって包含することを意図する。更に、本明細書で開示した如何なる内容も、かかる開示が特許請求の範囲の中で明確に列挙されていようがいまいが公に供することを意図するものではない。請求項の如何なる要素も、その要素が「~するための手段(means for)」という句を使用して明確に列挙されている場合を除き、又は方法クレームの場合はその要素が「~するためのステップ(step for)」という句を使用して列挙されている場合を除き、米国特許法第112条6項の規定の下で解釈すべきではない。