(57)【要約】  実施形態は、カタログインスタンスと称されるエコシステムフルノードによって維持される、たとえば、部分的に分散型ブロックチェーンとして実現されるような、分散型台帳を用いるソフトウェアコンポーネント・エコシステムの実現を容易にするシステムおよび方法を含む。さまざまな登録トランザクション（たとえば、デベロッパ登録、ネームスペース登録、使用登録など）は、１つ以上のカタログインスタンスによって分散型ブロックチェーンに追加され得る。ブロックをブロックチェーンに追加するステップは、トレンディングトランザクションのツリーハッシュを用いて新しいブロックのためのブロックハッシュを生成するステップを含み得る。新しいブロックはまた、直前のブロックのハッシュを含んでいるかまたは組込んでいる。
2020526820.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のプロセッサによって実行するべき論理を含む１つ以上の有形な媒体であって、前記論理は、実行されると、以下の複数の動作を実行することによってソフトウェアコンポーネント・エコシステムを実現するように動作可能であり、前記以下の複数の動作は、
ユーザ入力デバイスから１つ以上の信号を受取って、デベロッパエンティティの識別名を規定する動作と、
ユーザ入力デバイスから１つ以上の信号を受取って、前記デベロッパエンティティが前記識別名を登録することを認可されていることを確認するのに使用可能な安全な検証メカニズムを規定する動作と、
前記安全な検証メカニズムと関連付けてデベロッパエンティティ名を含むカタログエントリを記録する動作と、
前記カタログエントリと関連付けてトランザクションを実行して、ソフトウェアコンポーネントを転送する動作と、
前記カタログエントリを用いて、前記トランザクションを検証する動作とを含み、これにより、前記トランザクションを特徴付けるデータがカタログにコミットされる、１つ以上の有形な媒体。
【請求項２】
前記安全な検証メカニズムは公開鍵およびデジタル署名を含む、請求項１に記載の１つ以上の有形な記憶媒体。
【請求項３】
前記ソフトウェアコンポーネント・エコシステムにおける複数のノードに前記カタログエントリを伝搬する動作をさらに含む、請求項２に記載の１つ以上の有形な記憶媒体。
【請求項４】
前記複数のノードの各々は、分散型ブロックチェーン台帳のレプリカまたは近似レプリカを維持する前記複数のノードと協調して前記分散型ブロックチェーン台帳を実現するためのコードを含むカタログインスタンスを表わす、請求項３に記載の１つ以上の有形な記憶媒体。
【請求項５】
前記エントリにネームスペースを割付ける動作をさらに含む、請求項２に記載の１つ以上の有形な記憶媒体。
【請求項６】
複数の相互通信カタログインスタンスを含む、請求項１に記載の分散型ピア・ツー・ピア・コンポーネント・エコシステムのコンポーネントカタログのインスタンスを用いて、
前記デベロッパエンティティ名に関するデベロッパエンティティ登録情報を受取るステップと、
前記デベロッパエンティティ登録情報を検証して、前記デベロッパエンティティ登録情報を、デベロッパエンティティ登録の記録またはブロックとして、前記複数の相互通信カタログインスタンスの各々にアクセス可能であるブロックチェーンとして実現される分散型データベースにコミットすることにより、前記分散型ピア・ツー・ピア・コンポーネント・エコシステムのフルノードすべてに対して前記デベロッパエンティティ登録情報を伝搬するステップとを実行する、請求項１に記載の１つ以上の有形な記憶媒体。
【請求項７】
前記受取るステップは、
前記デベロッパエンティティ名と、登録が実行されているカタログインスタンスに関連付けられた公開鍵と、前記デベロッパエンティティ名に関連付けられたデジタル署名とをデベロッパエンティティにより供給するステップの後に行なわれ、前記デジタル署名は、前記複数の相互通信カタログインスタンスのカタログインスタンスで、デベロッパエンティティアイデンティティを確認するのに使用可能である、請求項６に記載の１つ以上の有形な記憶媒体。
【請求項８】
前記分散型ピア・ツー・ピア・コンポーネント・エコシステムの前記フルノードは、前記複数の相互通信カタログインスタンスを含む、請求項６に記載の１つ以上の有形な記憶媒体。
【請求項９】
ネームスペース登録プロセス中の１つ以上の供給されたネームスペースをデベロッパ登録情報に関連付けることによって、
前記デベロッパエンティティ登録情報を伝搬した後、前記ネームスペース登録プロセスの開始および実現に応答して、１つ以上のネームスペースをデベロッパエンティティに割付けることをさらに含む、請求項６に記載の１つ以上の有形な記憶媒体。
【請求項１０】
いくつかの記録が前記ブロックチェーンの一連の記録にコミットされる後まで、デベロッパエンティティのための前記ネームスペース登録プロセスの実現を選択的に遅延させることをさらに含む、請求項９に記載の１つ以上の有形な記憶媒体。
【請求項１１】
以下の複数の動作を実行することによってソフトウェアコンポーネント・エコシステムを実現するための方法であって、前記以下の複数の動作は、
ユーザ入力デバイスから１つ以上の信号を受取って、デベロッパエンティティの識別名を規定することと、
ユーザ入力デバイスから１つ以上の信号を受取って、安全な検証メカニズムを規定することと、
前記安全な検証メカニズムと関連付けてデベロッパエンティティ名を含むカタログエントリを記録することと、
前記カタログエントリと関連付けてトランザクションを実行してソフトウェアコンポーネントを転送することと、
前記カタログエントリを用いて前記トランザクションを検証することと、を含む、方法。
【請求項１２】
前記安全な検証メカニズムは、公開鍵およびデジタル署名を含む、請求項１１に記載の１つ以上の有形な記憶媒体。
【請求項１３】
前記ソフトウェアコンポーネント・エコシステムにおける複数のノードに対して前記カタログエントリを伝搬することをさらに含む、請求項１２に記載の１つ以上の有形な記憶媒体。
【請求項１４】
前記複数のノードの各々は、
分散型ブロックチェーン台帳のレプリカまたは近似レプリカを維持する複数のノードと協調して前記分散型ブロックチェーン台帳を実現するためのコードを含むカタログインスタンスを表している、請求項１３に記載の１つ以上の有形な記憶媒体。
【請求項１５】
前記エントリにネームスペースを割付けることをさらに含む、請求項１２に記載の１つ以上の有形な記憶媒体。
【請求項１６】
複数の相互通信カタログインスタンスを含む、請求項１に記載の分散型ピア・ツー・ピア・コンポーネント・エコシステムのコンポーネントカタログのインスタンスを用いて、
前記デベロッパエンティティ名に関するデベロッパエンティティ登録情報を受取ることと、
前記デベロッパエンティティ登録情報を検証して、前記デベロッパエンティティ登録情報を、デベロッパエンティティ登録の記録またはブロックとして、前記複数の相互通信カタログインスタンスの各々にアクセス可能であるブロックチェーンとして実現される分散型データベースに対してコミットすることにより、前記分散型ピア・ツー・ピア・コンポーネント・エコシステムのフルノードすべてに対して前記デベロッパエンティティ登録情報を伝搬することとを実行する、請求項１１に記載の１つ以上の有形な記憶媒体。
【請求項１７】
前記受取ることは、
前記デベロッパエンティティ名と、登録が実行されているカタログインスタンスに関連付けられた公開鍵と、前記デベロッパエンティティ名に関連付けられたデジタル署名とをデベロッパエンティティにより供給することの後に行なわれ、前記デジタル署名は、前記複数の相互通信カタログインスタンスのカタログインスタンスで、デベロッパエンティティアイデンティティを確認するのに使用可能である、請求項１６に記載の１つ以上の有形な記憶媒体。
【請求項１８】
前記分散型ピア・ツー・ピア・コンポーネント・エコシステムの前記フルノードは、前記複数の相互通信カタログインスタンスを含む、請求項１６に記載の１つ以上の有形な記憶媒体。
【請求項１９】
ネームスペース登録プロセス中の１つ以上の供給されたネームスペースをデベロッパ登録情報に関連付けることによって、
前記デベロッパエンティティ登録情報を伝搬した後、ネームスペース登録プロセスの開始および実現に応答して、１つ以上のネームスペースをデベロッパエンティティに割付けることをさらに含む、請求項１６に記載の１つ以上の有形な記憶媒体。
【請求項２０】
装置であって、
１つ以上のプロセッサと、
論理とを含み、前記論理は、前記１つ以上のプロセッサによって実行するべき１つ以上の有形な媒体において符号化され、前記論理は、実行されると、
ユーザ入力デバイスから１つ以上の信号を受取って、デベロッパエンティティの識別名を規定し、
ユーザ入力デバイスから１つ以上の信号を受取って、安全な検証メカニズムを規定し、
前記安全な検証メカニズムと関連付けてデベロッパエンティティ名を含むカタログエントリを記録し、
前記カタログエントリと関連付けてトランザクションを実行して、ソフトウェアコンポーネントを転送し、
前記カタログエントリを用いて前記トランザクションを検証する、
ように動作可能である、装置。
【請求項２１】
装置であって、
１つ以上のプロセッサと、
論理とを含み、前記論理は、前記１つ以上のプロセッサによって実行するべき１つ以上の有形な媒体において符号化され、前記論理は、実行されると、
前記ソフトウェアコンポーネント・エコシステムの第１のノードにおいてトランザクション情報を受取り、
前記第１のノードを用いて、前記ソフトウェアコンポーネント・エコシステムを特徴付ける１つ以上のイベント、発生、特性または関係の文書化を含む前記第１のトランザクションに前記トランザクション情報をパッケージし、
前記第１のノードと、前記第１のノードと相互に通信する１つ以上の追加のノードとによって維持される１つ以上の分散型未検証待ち行列に前記トランザクションを選択的に伝搬し、
前記１つ以上の分散型未検証待ち行列において前記第１のトランザクションを含む１つ以上のトランザクションが、処理されるべきであるとともに、前記第１のノードおよび前記１つ以上の追加のノードによって維持される分散型ブロックチェーンの新しいブロックに含まれべきであると判断し、
前記１つ以上のトランザクションを用いて第１のハッシュを演算し、
前記ブロックチェーンの端末ブロックに関連付けられた前のブロックハッシュと前記第１のハッシュとを用いて、前記ブロックチェーンの前記新しいブロックについての新しいハッシュを演算し、
前記第１のトランザクションを含む前記１つ以上のトランザクションを、前記ブロックチェーンのうち前記新しいハッシュを組込んだ前記新しいブロックに組込み、
前記ブロックチェーンの後ろに前記新しいブロックを追加する、
ように動作可能である、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１７年６月３０日付けで提出された、「分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法（SYSTEM AND METHOD FOR MANAGING A PUBLIC SOFTWARE COMPONENT ECOSYSTEM USING A DISTRIBUTED LEDGER）」と題された米国仮特許出願連続番号第６２／５２７，４７９号（弁理士事件番号：ＯＲＡＣＰ０２００Ｐ１／ＯＲＡ１８０００１−ＵＳ−ＰＳＰ−１）と、２０１７年９月１日付けで提出された、「ブロックチェーン特徴を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステム（SYSTEM FOR MANAGING A PUBLIC SOFTWARE COMPONENT ECOSYSTEM USING BLOCKCHAIN FEATURES）」と題された米国仮特許出願連続番号第６２／５５３，４０６号（弁理士事件番号：ＯＲＡＣＰ０２００Ｐ２／ＯＲＡ１８０００１−ＵＳ−ＰＳＰ−２）と、２０１７年１２月１日付けで提出された、「分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法（SYSTEM AND METHOD FOR MANAGING A PUBLIC SOFTWARE COMPONENT ECOSYSTEM USING A DISTRIBUTED LEDGER）」と題された米国特許出願連続番号第１５／８２９，６８４号（弁理士事件番号：ＯＲＡＣＰ０２００／ＯＲＡ１８０００１−ＵＳＮＰ）との利益を主張するものであって、あらゆる目的で本願中に十分に記載されるように、引用によってここに援用されている。
【背景技術】
【０００２】
背景
本願は、コンピューティングに関し、より特定的には、エコシステムのパーティシパント間でソフトウェアコンポーネントなどのコンピューティングリソースを共有するのに適したコンピューティング・エコシステムに関する。
【０００３】
ソフトウェアコンポーネント・エコシステムを実現および制御するためのシステムおよび方法は、アプリストアおよびオープンソースソフトウェア開発プラットフォームを含む、要求の厳しいさまざまなアプリケーションにおいて採用されている。このようなアプリケーションは、エコシステムにおいて発生するトランザクションを選択的に処理してその明細を明らかにするとともに、トランザクション情報を活用してエコシステムの効率的な動作を確実にするための効率的なメカニズムを必要とすることが多い。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、コンテンツ（たとえば、ソフトウェアプログラムおよびコンポーネント、データ、オブジェクトなど）をやり取りするためのコンピューティング・エコシステムは、アプリストアの所有者などによって中心的に制御されているか、または、相対的に制御されていない。しかしながら、中心的に制御されたエコシステムは、相応にロバストな中央管理インフラストラクチャを実現したり、このようなシステム上のスケーラビリティおよびディザスタリカバリを管理したりするコストや、それらの管理に関する要員配置の全体的コストなどのさまざまな不利益を被る可能性がある。したがって、コンピューティング・エコシステムの効率的な実現および制御を容易にするためのシステムおよび方法が依然として必要とされている。
【課題を解決するための手段】
【０００５】
要約
例示的な実施形態は、部分的に分散型ブロックチェーン台帳を用いて、分散型エコシステムにおいて行われるトランザクション、たとえば（以下においてより十分に説明される）さまざまなタイプの登録トランザクションを維持、保証、検証、更新、監視、または他の場合には制御もしくは実施することによって、分散制御を用いてソフトウェアコンポーネント・エコシステムを実現することを容易にするシステムおよび方法を開示する。分散型エコシステムの（この明細書中においてカタログインスタンスと称されるかまたは表現される）エコシステムノードは、１つ以上のトランザクションを含む新しいブロックの追加を含む、共有されたブロックチェーン台帳（この明細書中においては単にブロックチェーンとも称される）を管理するためのソフトウェアを実行する。
【０００６】
ソフトウェアコンポーネント・エコシステムの実現を容易にするための例示的な方法は、ユーザ入力デバイスから１つ以上の信号を受取って、デベロッパエンティティの識別名を規定するステップと、ユーザ入力デバイスから１つ以上の信号を受取って、デベロッパエンティティが識別名を登録することが認可されていることを検証するのに使用可能な安全な検証メカニズムを規定するステップと、カタログ（たとえば、ノードおよび付随する分散型台帳を実現するカタログ）に、検証メカニズムに関連したデベロッパ名を含むエントリを記録するステップと、カタログエントリに関連したコンポーネントアップロード、コンポーネントダウンロード、または他のコンポーネント転送を実行して、ソフトウェアコンポーネントを転送するステップと、カタログエントリ（たとえば、デベロッパエンティティ登録トランザクションエントリ）を用いて、コンポーネントアップロード、コンポーネントダウンロードまたは他のソフトウェアコンポーネント転送に関するトランザクションを検証する（たとえば、分散型台帳にトランザクションをコミットする）ステップとを含む。これにより、トランザクションを含むデータが分散型台帳にコミットされる。
【０００７】
より具体的な実施形態においては、例示的な方法はさらに、安全な検証メカニズムがデベロッパエンティティに関連付けられた公開鍵およびデジタル署名を含むことを規定する。記録されたカタログエントリが初めに未検証の待ち行列に入れられてから、カタログエントリの複製がソフトウェアコンポーネント・エコシステムにおける複数のノードに伝搬される。複数のノードの各々は、分散型ブロックチェーン台帳のレプリカまたは近似レプリカを維持する他の複数のノードと協調して分散型ブロックチェーン台帳を実現するためのコードを含むカタログインスタンスを表している。
【０００８】
したがって、この明細書中に記載される特定の実施形態は、分散型台帳（たとえば、分散型ブロックチェーン）におけるトランザクションデータの登録を容易にするための効率的なメカニズムを提供する。トランザクションに関する情報を用いて、パーティシパントおよび関連するコンポーネントの信頼を確実にすること、コンポーネントのアイデンティティ、保全性、由来または起源、サポート状態などを管理および検証すること、ソフトウェアコンポーネントへの適切なライセンス付与を確実にすること、利用可能なソフトウェアサポートサービスに関する情報を提供すること、コンポーネントのコンシューマおよび／またはコントリビュータなどのユーザを承認すること、矛盾する名前または混乱させる名前を持ったコンポーネントが提供されたときに起こる可能性のある問題を防止または軽減すること、ソフトウェアコンポーネントの更新および／またはリコールを容易にすることなどを可能にするが、これらすべての場合、別個に管理されたコアコントローラを用いる必要はない。
【０００９】
明細書の残りの部分および添付の図面を参照することによって、この明細書中に開示されている特定の実施形態の性質および利点がさらに理解され得る。
【図面の簡単な説明】
【００１０】
【図１】ソフトウェアコンポーネントを選択的に共有するとともに、分散型ブロックチェーン台帳を用いてトランザクションを登録するための、一般化されたピア・ツー・ピア・コンピューティング・エコシステムの第１の例を示す図である。
【図２】図１のピア・ツー・ピア・コンピューティング・エコシステムの第１の例の実現例を示すより詳細な図である。
【図３】図１および図２のピア・ツー・ピア・コンピューティング・エコシステムのピアまたはノードとして機能する個々のデベロッパコンピューティングシステムの詳細な例を示す図であって、例示的なユーザインターフェイス（User Interface：ＵＩ）制御およびオプションと、ユーザデベロッパコンピューティングシステムがピア・ツー・ピア・エコシステムのノードとして機能するようにユーザデベロッパコンピューティングシステムをピア・ツー・ピア・エコシステムに連結するのに用いられるとともにカタログインスタンスに含まれ得る例示的なモジュールとを含む。
【図４】図１〜図３の実施形態を用いて分散型ブロックチェーン台帳にデベロッパエンティティを登録するための第２の例示的なエコシステムおよび付随するカタログインスタンスプロセスを示す図であって、第２の例示的なシステムは図１〜図３の実施形態に従って実現され得る。
【図５】図４の第２の例示的なエコシステムによって実現可能な第１の例示的な方法を示すフロー図である。
【図６】ソフトウェアコンポーネントのカタログをブラウズするための、かつ、付随するコンピューティングシステムがアクセスできるカタログインスタンスによって維持されるカタログからソフトウェアコンポーネントをサーチ、ダウンロード、編集および削除するためのさまざまなＵＩ制御およびオプションを提供するとともに、図３のユーザデベロッパコンピューティングシステムなどのコンピューティングシステム上に表示され得る例示的なＵＩディスプレイスクリーンを示す図である。
【図７】ピア・ツー・ピア・ソフトウェアコンポーネント・エコシステムの、カタログインスタンスと称されるノードによって維持されるブロックチェーンの初期状態を示す、第３の例示的なエコシステムおよび付随するコンピューティング環境を例示する第１のブロック図である。
【図８】第１の例示的なトランザクション（すなわち、デベロッパ登録トランザクション）が発端元カタログインスタンス（たとえば、第１のカタログインスタンス）によってカタログインスタンスのうち未検証の待ち行列に伝搬された後における、図７の第３の例示的なシステムを示す第２のブロック図である。
【図９】デベロッパ登録トランザクションを処理（たとえば、検証または確認）するために（選択ルールまたはアルゴリズムに従って）選択されたカタログインスタンス（たとえば、第２のカタログインスタンス）による、最初のデベロッパ登録トランザクションの検証およびブロックチェーンに対するコミットの処理中における、図８の第３の例示的なシステムを示す第３のブロック図である。
【図１０】選択されたカタログインスタンスによるブロックチェーンのブロックの演算中における、図９の第３の例示的なシステムを示す第４のブロック図であって、ブロックは、未検証の待ち行列に、図９のデベロッパ登録トランザクションを含むペンディングトランザクションを含む。
【図１１】第２のカタログインスタンスによって処理されたブロックがブロックチェーンにコミットされて、エコシステムのカタログインスタンスの各々によって維持されるブロックチェーンレプリカに伝搬された後における、図１０の例示的なシステムを示す第５のブロック図である。
【図１２】第２のカタログインスタンスが第２のトランザクション（すなわち、第１のネームスペース登録トランザクション）を開始して、ソフトウェアコンポーネント・エコシステムにおける他のカタログインスタンスのうち未検証の待ち行列に第２のトランザクションを伝搬した後における、図１１の例示的なシステムを示す第６のブロック図である。
【図１３】第３のカタログインスタンスが第３のトランザクション（すなわち、第２のネームスペース登録トランザクション）を開始して、これがソフトウェアコンポーネント・エコシステムにおける他のカタログインスタンスのうち未検証の待ち行列に伝搬された後における、図１２の例示的なシステムを示す第７のブロック図である。
【図１４】ブロックチェーンに含めるべき付加的なブロックを検証するために第１のカタログインスタンスが選択された後における、図１３の例示的なシステムを示す第８のブロック図であって、付加的なブロックは図１２の第２のトランザクションおよび図１３の第３のトランザクションを組込むためのものである。
【図１５】ソフトウェアコンポーネント・エコシステムのブロックチェーンに追加されるべき付加的なブロックの演算中における、第１のカタログインスタンスを示す図１４の例示的なシステムを示す第９のブロック図である。
【図１６】第１のカタログインスタンスが付加的なブロックの処理を完了して、ソフトウェアコンポーネント・エコシステムのブロックチェーンに付加的なブロックを伝搬した後における、図１５の例示的なシステムを示す第１０のブロック図である。
【図１７】図１〜図１６の実施形態によって実現可能な第２の例示的な方法を示すフロー図である。
【図１８】図１〜図１７の実施形態を実現するのに使用可能であるシステムおよび付随のコンピューティング環境を示す概略ブロック図である。
【図１９】図１〜図１８の実施形態を実現するのに使用可能なコンピューティングデバイスを示す概略ブロック図である。
【発明を実施するための形態】
【００１１】
実施形態の詳細な説明
説明を目的として、ソフトウェアコンポーネント・エコシステムは、分散型コンピューティングリソース（たとえば、カタログインスタンス、付随する分散型ブロックチェーンなど）への／からのソフトウェアコンポーネントのアップロードおよび／またはダウンロードを可能にするように構成された、ネットワーク化された分散型コンピューティングリソースの集合を含むものであれば如何なるコンピューティング環境であってもよい。ネットワーク化されたコンピューティング環境は、相互通信コンピュータ、すなわち、コンピュータネットワーク、たとえば、ローカルエリアネットワーク（local area network：ＬＡＮ）、ワイドエリアネットワーク（wide area network：ＷＡＮ（たとえば、インターネット））、クラウドインフラストラクチャおよびサービスなど、を含むものであれば如何なるコンピューティング環境であってもよい。同様に、ネットワーク化されたソフトウェアアプリケーションは、ネットワークを介して１つ以上のコンピューティングリソース（たとえば、サーバ）と通信することまたはそれらを用いることを容易にするように適合されたコンピュータコードであってもよい。
【００１２】
なお、コンピューティングリソース（たとえば、エコシステムのネットワークを介して相互に通信し得るコンピュータシステム）の集合がこの明細書中においてノードと称されていることに留意されたい。所与のノード（たとえば、ソフトウェアコンポーネントカタログのインスタンス（この明細書中においてはカタログインスタンスと称される））は、他のノードと相互に通信するとともに選択的にデータ（たとえば、エコシステムについての登録情報を含むブロックチェーンのレプリカ）を共有するためのソフトウェアと、（たとえば、さまざまな登録の完了を案内するためのユーザインターフェイスソフトウェアによる）トランザクションの生成を容易にするためのソフトウェアと、エコシステムのルールへの準拠を確実にすることによりピア・ツー・ピア・エコシステムの実現を可能にするためのソフトウェアとを含んでいてもよい。
【００１３】
説明の便宜上、ピア・ツー・ピア・ネットワークまたはエコシステムは、コンピュータネットワークにわたって分散されるとともに、プロセスワークロードの共有を容易にするために相互に通信し得るコンピューティングリソース（たとえば、コンピュータシステムおよび／またはソフトウェアアプリケーション）、すなわちノード、の任意の集合であってもよい。
【００１４】
なお、従来から、ピア・ツー・ピア・ネットワークのピアまたはノードは、ネットワークによって提供されるデータおよび機能にアクセスする同様の特権を有していることに留意されたい。しかしながら、ピア・ツー・ピア・ネットワークのピアまたはノードは、その用語がこの明細書中において用いられている場合、同様に特権が付与される必要はない。たとえば、フルノードと称されるいくつかのノードには最大限に特権が与えられており、すなわち、エコシステムブロックチェーンからの読出しおよびエコシステムブロックチェーンへの書込みを行う特権を維持している。さほど特権が与えられていないノードは、エコシステムブロックチェーンにアクセスするためのプロキシとしてフルノードを使用する必要があるかもしれない。なお、「ピア・ツー・ピア・ネットワーク」および「ピア・ツー・ピア・エコシステム」という語はこの明細書中では同義で用いられる可能性があることに留意されたい。
【００１５】
説明の便宜上、ソフトウェア機能は、コンピュータコード（すなわち、ソフトウェア）を介して提供される如何なる機能、能力または特徴（たとえば、格納されたデータまたは配置されたデータ）であってもよい。概して、ソフトウェア機能はユーザインターフェイスおよび付随するユーザインターフェイス制御および特徴を用いることによってアクセス可能になり得る。ソフトウェア機能は以下の動作を含み得る。たとえば、コンピューティングオブジェクト（たとえば、トランザクションに関連付けられたビジネスオブジェクト）に関するデータを検索する動作、企業の人員を昇進させたり、採用したり解雇したりするなどの企業関連のタスクを実行する動作、注文する動作、分析を計算する動作、特定のダイアログボックスを開始する動作、検索を実行する動作、などである。
【００１６】
ブロックチェーンは、ブロックと称される、リンクされた記録の順番付けされたリストであってもよく、この場合、ブロックチェーンは、新しいブロックをブロックチェーンの終端に加えることによって発展させることができるが、より前のブロックの挿入は、より後のブロックが最初にブロックチェーンから展開されないかまたは削除されない限り、禁止される。ブロックチェーンのうちさまざまなブロックには、ブロックチェーンへの組込み時にタイムスタンプが付されることが多い。ブロックチェーンは、たとえば、所与のコンピューティング環境またはエコシステムのノードにインストールされ得る分散型ソフトウェアアプリケーションまたはネットワーク化されたソフトウェアアプリケーションを用いて実現されてもよい。ブロック間のリンクは、新しいブロックに適用される１つ以上のハッシュを実現することによって実現されてもよい。この場合、１つ以上のハッシュは、１つ以上の前のブロックからの情報を活用または使用する。ブロックチェーンを用いることでトランザクションの分散型台帳を実現することができる。
【００１７】
説明の便宜上、分散型台帳は、ネットワークの複数のノード間で共有される共有デジタルデータの集合であってもよく、そのコピーが複数のノード間で複製されて格納され得る。分散型台帳によって維持されるデータはノード間で同期されてもよい。
【００１８】
したがって、分散型台帳は、一種の分散型データベース（すなわち、複数のエンティティのネットワークに連結されたさまざまなエンティティ間でデータを格納するためのメカニズム）として機能し得る。ノードは、ネットワークに連結される如何なるコンピュータシステムおよび／またはソフトウェアアプリケーションおよび／またはソフトウェアシステムまたはこれらのグループであってもよい。ここに記載されるノードは一般に「カタログインスタンス」と称される。というのも、これらノードは、付随するコンピューティング・エコシステムの他のノードおよび／またはパーティシパントがカタログに格納されたデータにアクセスするのを容易にするからである。
【００１９】
トランザクションは、エコシステムの１つ以上の局面を記述しているイベント、状態、プロパティまたは他の情報を記載する情報の任意の集合であり得る。この場合、１つ以上の局面は、参加しているデベロッパエンティティ、ソフトウェアコンポーネントコンシューマエンティティ、コントリビュータエンティティ、プロキシ化されたエコシステムパーティシパントおよびシステム、ソフトウェアコンポーネント相互関係、ソフトウェアコンポーネントのダウンロードおよび／またはアップロードのインスタンス、ソフトウェアコンポーネントのサポート状態、コンポーネント由来情報などを含み得る。トランザクションは、この用語が用いられている文脈に応じて、エコシステムにおける活動（たとえば、デベロッパエンティティ登録、ネームスペース登録、コントリビュータ登録など）を記述するデータの集合を指すこともある。または、代替的には、トランザクションは、実際の活動（たとえば、コンポーネントをダウンロードすること）を指すこともある。
【００２０】
活動またはタスクを表しているトランザクションは十分に自動化されてもよく、またはマニュアルでの承認または他の検証活動などの人のワークフロータスクを含んでいてもよい。したがって、トランザクションはブロックチェーンにおける単一のもの（たとえば、情報の集合）として表わされる可能性もあるが、トランザクションのいくつかの形態は、実際には、ワークフローが処理されるのに応じて台帳中に記録することができる別個のサブトランザクションに分解されてもよい。したがって、「トランザクション」という語はまた、その語が用いられている文脈に応じて、情報（たとえばコンピューティングオブジェクト）の集合を伝達する動作を指している可能性もあり、情報（たとえばコンピューティングオブジェクト）の実際の集合を指している可能性もある。
【００２１】
たとえば、個々のソフトウェアデベロッパ（たとえば、コンポーネントコントリビュータ）がコンポーネントエコシステムに登録する場合、この明細書中に記載されているように、コントリビュータ登録プロセスに関する（たとえば、これを文書化する）情報は、エコシステムのブロックチェーンに組込むための準備として、カタログインスタンスのうち１つ以上の未検証の待ち行列に伝搬されてもよい。情報の収集および／または転送はトランザクションと称されてもよく、収集された情報を維持するコンピューティングオブジェクトはまた、トランザクション（たとえば、デベロッパ登録トランザクション）と称されてもよい。図１を参照すると、このようなトランザクションは、（たとえば、登録機能１６によって）収集され得るとともに、分散型台帳１４のブロックチェーン２０のうち１つ以上のブロックに選択的にコミットされ得る。
【００２２】
なお、ブロックチェーン２０および分散型台帳１４が特定の実現例において同等であり得ることに留意されたい。しかしながら、この例示的な実施形態においては、分散型台帳１４はブロックチェーン２０を含むものとして示されている。というのも、分散型台帳１４は、ブロックチェーン２０の単なる実現例とは対照的に、付加的な機能を含み得るからである。たとえば、特定の実現例においては、分散型台帳１４は、パーティシパントコンピュータシステム１２のノードによってローカルで使用される他のデータベースフォーマットにブロックチェーン２０を変換することを可能にするための付加的なコードを含み得るとともに、カタログインスタンス・データストア１８の別々のインスタンスに対してコンポーネントを選択的に分散させることを可能にし得る。
【００２３】
所与のノードには、所与のコンピューティング環境またはエコシステムにおいて異なる特権が割付けられてもよい。同様の特権を持つノードは、それが１つ以上の特定のタスクの実現に関係しているので、タスクを完了させるためのピアと称されている。説明の便宜上、ピア・ツー・ピア・エコシステムは、少なくとも部分的に、エコシステムの別々のノードまたはピアを介して実現される１つ以上の分散型またはネットワーク化ソフトウェアアプリケーションによって実現される如何なるエコシステムまたはコンピューティング環境であってもよい。
【００２４】
この明細書中に記載されるさまざまな例示的な実施形態は、ソフトウェアコンポーネントカタログインスタンスのノードを含むピア・ツー・ピア・ソフトウェアコンポーネント・エコシステムによって実現される。以下により十分に記載される例示的なソフトウェアコンポーネントカタログインスタンスはさまざまなソフトウェアアプリケーションを実行し得る。これらさまざまなソフトウェアアプリケーションは、（ソフトウェアコンポーネントのデータベースを含み得る）ローカルデータストアを維持および管理するためのソフトウェア、セキュリティおよび許可機能を実現するためのソフトウェア、さまざまなタイプの登録（それらの例が以下においてより十分に記載されている）を可能にするためのユーザインターフェイス（ＵＩ）ディスプレイスクリーンを生成するためのソフトウェア、エコシステムのための未検証のトランザクション待ち行列を管理するためのソフトウェア、他のカタログインスタンスと通信するためのソフトウェア、エコシステムブロックチェーンのレプリカを維持するためのソフトウェア、エコシステムのブロックチェーンのための新しいブロックをコンピューティングする（すなわち、検証するかまたは確認する）ためのソフトウェア、エコシステムの１つ以上のカタログインスタンスによる検証（およびブロックチェーンブロックへの包含）のためのトランザクションをサブミットするためのソフトウェア、１つ以上のブロックをブロックチェーンに追加するのに必要な演算を実行するためにカタログインスタンスを選択するための任意のアルゴリズムを実現するためのソフトウェア、ブロックをブロックチェーンに追加するのに必要なハッシュを演算するためのソフトウェア、などを含み得る。
【００２５】
概して、デベロッパおよび／またはビジネスのコミュニティは、ソフトウェアコンポーネント・エコシステムを用いて、情報、リソースおよびコンポーネントのやり取りを可能にするかまたは容易にする共通の技術的プラットフォームを用いてソフトウェアおよびサービスのための共有の市場と協働的に対話してもよい。
【００２６】
ソフトウェアコンポーネント・エコシステムは、デベロッパ、ベンダーおよび顧客によって使用される再使用可能なソフトウェアコンポーネントのオープンなエコシステムとして実現され得る。このようなエコシステムは、ネットワーク化されたインフラストラクチャまたは「クラウド」インフラストラクチャならびに付随するプロセスおよびサービスのまわりに構築されてもよい。しかしながら、本発明の特定の実施形態は特定の処理プラットフォーム、技術およびインフラストラクチャに関して記載され得るが、他の変形例も可能であり、異なるシステムに適合されてもよい。
【００２７】
ソフトウェアコンポーネント・エコシステムについての１設計は、信頼、アイデンティティ、保全性、サポート、ネームスペース、コンポーネントのアイデンティティ、知的財産、製品リコール、由来およびライセンシングなどのさまざまな局面の検討事項を含んでいる。他の局面についての特徴を含むこともできる。さまざまな特徴および局面が特定の実施形態に関連付けて記載されているが、特定の実施形態がさまざまな異なるセットの記載特徴を使用できることが明らかになるはずである。特徴は省略または変更されてもよく、付加的な特徴が含まれてもよい。
【００２８】
この明細書中に記載される特定の実施形態は、１つ以上の信号をユーザ入力デバイスから受取ってデベロッパエンティティの識別名を規定すること；１つ以上の信号をユーザ入力デバイスから受取って安全な検証メカニズムを規定すること；検証メカニズムに関連したデベロッパ名を含むエントリをカタログに記録すること；カタログエントリに関連したトランザクションを実行してソフトウェアコンポーネントを転送すること；および、カタログエントリを用いてトランザクションを検証すること；によってソフトウェアコンポーネント・エコシステムを実現するための装置、記憶媒体および方法を提供する。付加的な特徴は、カタログにおけるエントリによって規定されるエンティティにネームスペースを割付けることを可能にする。
【００２９】
従来より、ソフトウェアデベロッパは、ソフトウェアアプリケーションの開発および関連するファイルの格納を容易にするために特定のクラウドサービスをサブスクライブし得る。ソフトウェアアプリケーションまたはプロセスフロー開発のために構成されるクラウドサービスは、ここではプロセスクラウドサービス（Process Cloud Service：ＰＣＳ）と称される。
【００３０】
プロセスクラウドサービスは、開発されている所与のソフトウェアプログラムによって用いられるファイルおよび他のオブジェクトを格納するためにネットワーク化されたデータベースを使用する可能性がある。サーバ側開発環境はブラウザを介してデベロッパにアクセスであってもよい。開発環境は、開発されたソフトウェアアプリケーションファイルがＰＣＳデータベースに格納されるように、ＰＣＳにバックアップされていてもよい。
【００３１】
説明の便宜上、コンピューティング環境は、コンピュータ処理を伴う１つ以上のタスクを実行するために用いられるコンピューティングリソースの如何なる集合であってもよい。コンピュータはメモリと通信する如何なるプロセッサであってもよい。コンピューティングリソースは、コンピューティング環境の如何なるコンポーネント、メカニズムまたは能力もしくはその量であってもよく、プロセッサ、メモリ、ソフトウェアアプリケーション、ユーザ入力デバイスおよび出力デバイス、サーバなどを含むがこれらに限定されない。コンピューティングリソースの例は、１つ以上のウェブサービス、アプリケーションプログラミングインターフェイス（Application Programming Interface：ＡＰＩ）などによって提供されるデータおよび／またはソフトウェア機能を含む。
【００３２】
エンタープライズコンピューティング環境はビジネスまたは組織のために用いられる如何なるコンピューティング環境であってもよい。一例としてのエンタープライズコンピューティング環境は、ネットワークにわたって分散されたさまざまなコンピューティングリソースを含み、さらに、イントラネットウェブサーバ、データベース、ローカルのハードディスクまたはファイルサーバ上のファイル、電子メールシステム、ドキュメント管理システム、ポータルなどの上にあるプライベートの共有コンテンツを含み得る。
【００３３】
所与のソフトウェアアプリケーションは、構成するソフトウェアアプリケーションまたはモジュール（たとえば、サービス、機能、手順、コンピューティングオブジェクト、など）含み得る（が、必ずしも含むものではない）。したがって、「ソフトウェアアプリケーション」という語は、ネットワーク化されたソフトウェアアプリケーションまたはそれらが一体化されたグループを含んでいてもよい。
【００３４】
この明細書中に記載される特定の実施形態は、プロセスベースのソフトウェアアプリケーションの開発、展開および実現に特に有用である。プロセスベースのソフトウェアアプリケーションは、プロセス要素またはソフトウェア活動とも称されるステップの１つ以上のシーケンスによって定義可能な如何なるソフトウェアアプリケーションであってもよい。「プロセス要素」、「フロー要素」、「ソフトウェア要素」および「ソフトウェアプロセス要素」という語はこの明細書中では同義であって、たとえば、イベント、活動、ゲートウエイ、サブプロセスなどの任意のステップを指していることもある。プロセスベースのソフトウェアアプリケーションのステップのシーケンスはプロセスフローと称されることもある。プロセスフローは、ユーザインターフェイス（ＵＩ）ディスプレイスクリーンにおけるスイムレーンを介してモデル化されて例示されることが多い。プロセスベースのアプリケーションは、さまざまなプロセスステップのためのさまざまなウェブーサビスおよび関連するソフトウェアコンポーネントを利用し得る複合アプリケーションによって実現されることが多い。
【００３５】
一般に、ソフトウェアおよびプロダクト開発の普及形態は「ソフトウェア・エコシステム」と称され得る。ソフトウェアエコシステムは、ソフトウェアおよびサービスのための共有市場と協働的に機能して対話する１セットのデベロッパおよび／またはビジネスを、それらの間の関係とともに含み得る。これらの関係は、共通の技術的プラットフォームを含み得るとともに、情報、リソースおよびコンポーネントのやり取りによって機能し得る。
【００３６】
ソフトウェアコンポーネント・エコシステムは特定タイプのソフトウェア・エコシステムであってもよく、主な特徴として、ソフトウェアコンポーネントの開発および交換を含む。ソフトウェアコンポーネント・エコシステムにおいては、デベロッパ、パートナおよび顧客によって使用されるように再使用可能なソフトウェアコンポーネントのオープンエコシステムを促進することが望ましいかもしれない。しばしば、このようなエコシステムはネットワーク化されたまたは「クラウド」のインフラストラクチャ、プロセスおよびサービスのまわりに構築されることとなる。しかしながら、本発明の特定の実施形態は、特定の処理プラットフォーム、技術およびインフラストラクチャに関連付けて記載され得るが、他の変更も可能であり、異なるシステムに適合されてもよい。
【００３７】
明瞭にするために、いくつかの周知のコンポーネント、たとえば、ハードドライブ、プロセッサ、オペレーティングシステム、電源、ルータ、インターネット・サービス・プロバイダ（Internet Service Provider：ＩＳＰ）、ワークフロー・オーケストレータ、プロセススケジューラ、プロセスクラウド、ビジネスプロセスマネジメントシステム、エコシステムデベロッパエンティティ、エコシステムコントリビュータエンティティ、エコシステムコンシューマ、統合開発環境、プロキシシステム、アイデンティティ管理システム、認証機関（Certificate Authority：ＣＡ）などは、図中に必ずしも明確にコールアウトされているわけではない。しかしながら、本教示を利用できる当業者であれば、所与の実現例についてのニーズを満たすためにいずれのコンポーネントを実装するべきかと、それらコンポーネントを如何に実装するべきかとについて認識するだろう。
【００３８】
図１は、（１つ以上のカタログインスタンス・データストア１８に格納されるような）ソフトウェアコンポーネントを選択的に共有するための、かつ、分散型ブロックチェーン台帳１４および２０を用いてトランザクションを登録するための、一般化されたピア・ツー・ピア・コンピューティング・エコシステム１０の第１の例を示す。
【００３９】
なお、一般的に、システム１０のさまざまなモジュールのグループ分けは例示的なものであって、さまざまに異なっていてもよく、たとえば、この教示の範囲から逸脱することなく、特定のモジュールが他のモジュールと組合わされてもよく、もしくは他のモジュール内に実装されてもよく、または、それ以外の場合には、モジュールが、ネットワーク間で、もしくは１つ以上のコンピューティングデバイスもしくは仮想マシン内において（図示されるのとは）異なる態様で分散されていてもよい。たとえば、例示的な登録機能１６、カタログインスタンス・データストア１８および分散型台帳１４は、パーティシパントコンピュータシステム１２とは（明瞭さのために）別個に示されているが、実際には、このようなエンティティは、関連するピア・ツー・ピア・ネットワークに関与しいている１つ以上のパーティシパントコンピュータシステム１２によって実現されている。
【００４０】
パーティシパントであるシステム１２は、デベロッパエンティティ（たとえば、個々のデベロッパが属する企業または組織）を含み得る。デベロッパエンティティは、コード（たとえばソフトウェアコンポーネント）を１つ以上のいわゆるカタログインスタンスに付与する）いわゆるコントリビュータを含み得る。これら１つ以上のいわゆるカタログインスタンスを用いることで、登録機能１６を実現するとともに、デベロッパが１つ以上のカタログインスタンス・データストア１８において維持されているソフトウェアコンポーネントとの対話（たとえば、ダウンロード、アップロードなど）を行うこと可能にする。デベロッパエンティティおよび関連するデベロッパはまた、ローカルのカタログインスタンスからソフトウェアコンポーネントをダウンロード（すなわち、消費）してもよい。
【００４１】
カタログインスタンス・データストア１８からソフトウェアコンポーネントをダウンロードする人またはエンティティはコンシューマと呼ばれる。カタログインスタンス・データストア１８にソフトウェアコンポーネントをアップロードする人またはエンティティは、コントリビュータと呼ばれる。一般に、デベロッパエンティティは、この明細書中においてその語が用いられている場合、コントリビュータおよびコンシューマの両方、またはコントリビュータだけを含む可能性がある。しかしながら、ソフトウェアコンポーネントのコンシューマとしてのみ機能するエンティティはこの明細書中ではデベロッパエンティティとは呼ばれない。
【００４２】
デベロッパエンティティがたとえば登録機能１６を用いてカタログインスタンスに登録する場合、および、そのコンシューマがローカルのカタログインスタンス・データストア１８にソフトウェアコンポーネントをダウンロードする場合、または、そのコントリビュータがローカルのカタログインスタンス・データストア１８からソフトウェアコンポーネントをアップロードする場合、これらの活動に関するデータは、検証されると、分散型台帳１４および付随する検証済みブロックチェーン２０に登録される。
【００４３】
なお、特定の実施形態においては、デベロッパエンティティの登録がいわゆるデベロッパエンティティ登録トランザクションを生成することに留意されたい。デベロッパエンティティ登録トランザクションの後には、（代替的には、特定の実現例におけるデベロッパエンティティ登録の一部であり得る）ネームスペース登録が続けて行われてもよい。たとえば、登録機能１６を用いるネームスペース登録の間、ネームスペースはデベロッパエンティティに関連付けられ、対応する情報はネームスペース登録として分散型台帳１４に格納される。
【００４４】
デベロッパエンティティ登録および関連するネームスペース登録の後、個々のコントリビュータおよびコンシューマは、さらに、関連するデベロッパエンティティおよびネームスペースに関連付けて登録してもよい。コントリビュータが、既に登録済みのソフトウェアコンポーネントを別のカタログインスタンス（すなわち、デベロッパエンティティが直接通信しているローカルのカタログインスタンス以外のカタログインスタンス）にアップロードすると、別個のアップロードトランザクションが使用可能となる。
【００４５】
コンポーネントのダウンロードトランザクション、コンポーネントの使用登録などを含むがこれらに限定されない他のさまざまなタイプの登録も可能である。以下においてより十分に説明されるように、一般に、各々のタイプの登録に関する情報は、検証後、分散型台帳１４のブロックチェーン２０にコミットされる。
【００４６】
分散型台帳１４は、管理上（たとえば、ノード管理、アイデンティティ管理など）のタスクを（たとえば、図１においてアイテム１４〜１８によって集合的に表されている）カタログインスタンスおよび／またはローカルのアイデンティティドメインに対して委譲することを可能にするとともに、パーティシパントが、すなわち分散型台帳１４のブロックチェーン２０に登録されたトランザクションによって、関連するエコシステム１０に関するトランザクションについての整合性のあるビューまたは概要にアクセスすることも可能にする。
【００４７】
この例示的な実施形態においては、分散型台帳１４内のトランザクションは、エンティティおよび／またはそれにサブミットされたトランザクションのレジストラに関連付けられた役割に従って許可される。トランザクションは、トランザクションに用いられるノード（たとえばカタログインスタンス）の性質に従ってさらに許可されてもよい。たとえば、いくつかのノードがフルノードであり得るのに対して、他のノードは、ブロックチェーン２０のブロックを検証する際にアクセスして関与するための特権が削減されてしまっている可能性もある。
【００４８】
異なる態様で許可され得る例示的な役割は、（デベロッパエンティティアイデンティティの検証、デベロッパエンティティに対するネームスペース割付けの検証などを担う可能性のある）コミュニティリーダーの役割；（デベロッパエンティティのアイデンティティ、コントリビュータ、コンポーネントのアイデンティティなどの登録および／または管理を担う可能性のある）デベロッパの役割；（コンポーネント使用登録を担う可能性のある）ディストリビュータの役割；（コンポーネント使用登録に関与し得る）コンシューマ、などを含む。
【００４９】
なお、エコシステム１０などの分散型システムおよびピア・ツー・ピアシステムにおいては、トランザクション登録および関連するデータ登録が重要となり得ることに留意されたい。データ（たとえば、登録および関連するソフトウェアコンポーネントに関するデータ）は複数の位置に存在している。すなわち、データは、パーティシパントコンピュータシステム１２のフルノード間で複製される。
【００５０】
したがって、データ（たとえばトランザクションデータ）が１つのノードによって変更される場合、この変更（および関連するトランザクション）がパーティシパントコンピュータシステム１２のフルノードすべてに伝搬されることが重要であり得る。トランザクションデータがソフトウェアコンポーネント登録に関係している場合、分散型台帳１４および付随するブロックチェーン２０にコミットされるトランザクションに実際のソフトウェアコンポーネント全体を格納することは非実用的であるかもしれない。したがって、所与のソフトウェアコンポーネントを格納するために用いられるファイル（すなわち分散媒体）のハッシュは、ブロックチェーン２０に、すなわち、ソフトウェアコンポーネント登録のために、登録される可能性がある。
【００５１】
図２は、図１のピア・ツー・ピア・コンピューティング・エコシステム１０の第１の例の実現例３０を示すより詳細な図である。図１および図２を参照すると、図２の実現例３０は、デベロッパエンティティシステム２２と、図１のパーティシパントコンピュータシステム１２を含む外部のプロキシ化されたシステム５０とを含むものとして示されている。
【００５２】
デベロッパエンティティシステム２２は、分散型台帳１４を実現するパーティシパントシステム（たとえば、図１のシステム１２）のクラウド５４と通信する。この実現例３０においては、クラウド５４はさらに、１つ以上のアイデンティティドメイン４４を含む。１つ以上のアイデンティティドメイン４４は、コミットされたトランザクションを読取る目的のために、かつ、ブロックチェーン２０にトランザクションをコミットするために、（たとえばカタログインスタンス３２を介して）分散型台帳１４および付随するブロックチェーン２０へのアクセスを可能にするよりも前に、デベロッパエンティティおよび個々のユーザを認可するために用いられてもよい。
【００５３】
なお、特定の実現例において、（他のカタログインスタンスと選択的に対話するために、かつ、予め定められた許可に関連付けられた予め定められたセットの機能を選択的に実現するために）カタログインスタンス３２も認証および許可され得ることに留意されたい。
【００５４】
例示的なデベロッパエンティティシステム２２は、デベロッパエンティティ（たとえば、付随のピア・ツー・ピア・ネットワークおよび関連するエコシステム３０のさまざまな動作に関与することができる企業または組織）の１つ以上のコンピューティングシステムを表している。説明の便宜上、デベロッパエンティティは、カタログインスタンス３２の１つ以上を用いてこのようなエンティティとして登録することができる、１以上の人々のグループならびに付随するコンピューティングシステムおよびコンピューティングリソースを表していてもよい。この例示的な示実施形態においては、デベロッパエンティティは、たとえば、デベロッパエンティティシステム２２のデベロッパエンティティと関連付けて登録される個々のコントリビュータおよび／またはコンシューマによって、カタログインスタンス３２のローカルコンポーネントカタログ３６からソフトウェアコンポーネントをアップロード（付与）するとともにソフトウェアコンポーネントをダウンロード（消費）するための特権に関連付けられている。
【００５５】
デベロッパエンティティ（たとえば、企業）は、たとえば企業の名前を含み得るネームスペースに関連付けられている。所与のネームスペースは名前の階層構造を含み得る。名前の階層構造は、（所与のデベロッパエンティティの階層的ネームスペースにおける最高レベルノードであり得る）デベロッパエンティティの名前に関連付けられたさまざまなソフトウェアコンポーネントの名前を含み得る。
【００５６】
なお、デベロッパエンティティおよび関連するシステム２２だけでなく、他のタイプのエンティティも、この教示の範囲から逸脱することなくエコシステム３０に関与し得ることに留意されたい。なお、デベロッパエンティティシステム２２および（１つ以上のカタログインスタンスを用いるためにデベロッパエンティティシステム２２のうち１つ以上によってプロキシされている）外部のプロキシ化されたシステム５０だけが図２に示されているが、他のタイプのシステムもエコシステム３０に関与し得ることに留意されたい。
【００５７】
この例示的な実施形態においては、デベロッパエンティティシステム２２は、エコシステム３０のフルノードをホストする１つ以上のコンピューティングシステム（たとえば、実際のコンピュータおよび／または仮想マシン）を含む。フルノードはカタログインスタンス３２によって表わされている。説明の便宜上、フルノードは、データ（たとえば、トランザクションデータ）にアクセスするとともに当該データをブロックチェーン分散型台帳１４に提供するための特権の十分な読取り、書込みおよびコミットを行うものであれば如何なるノードであってもよい。
【００５８】
例示的なカタログインスタンス３２は、付随するエコシステム３０の他のノード（カタログインスタンス）に複製されるかまたは伝搬される、ブロックチェーン分散型台帳１４のレプリカである台帳レプリカ３４を含む。台帳レプリカは未検証の待ち行列３８を含む。未検証の待ち行列３８は、ブロックチェーンレプリカ４０へのコミットのためにペンディング中である１つ以上の未検証のトランザクションを含み得る。なお、ローカルの未検証の待ち行列３８およびブロックチェーンレプリカ４０のデータが他のノード間で共有されるかまたは他のノードに伝搬され、その後、クラウド５４のうちの分散型の未検証の待ち行列４６および関連するブロックチェーン分散型台帳ブロックチェーン２０を表すことになることに留意されたい。
【００５９】
例示的なカタログインスタンス３２はさらに、ローカルコンポーネントカタログ３６を含むかまたはローカルコンポーネントカタログ３６と通信する。ローカルコンポーネントカタログ３６は、カタログインスタンス３２にアップロードされたソフトウェアコンポーネントを維持する。このソフトウェアコンポーネントは、ローカルコンポーネントカタログ３６におけるコンポーネントの特権コンシューマによってダウンロードされる可能性もある。以下においてより十分に説明されるように、ローカルコンポーネントカタログ３６との各々の対話には、対話を文書化する関連トランザクションが付随している。
【００６０】
所与のトランザクションは、最初に、未検証の待ち行列３８にロードされ、他のカタログインスタンス（ノード）の他の未検証の待ち行列４６に伝搬され、次いで、トランザクション妥当性チェックが実行されると、代表的な分散型ブロックチェーン２０全体にコミットされる。トランザクション・コミットプロセスは、トランザクションの集合についての１つ以上のハッシュと、トランザクションの集合がコミットされることとなるブロックチェーン２０の関連ブロックについての１つ以上のハッシュとを計算するために、１つ以上のカタログインスタンス３２を用いることを必要とする。ブロックチェーン４０および２０にコミットされるべきトランザクションの集合は、未検証の待ち行列３８および４６から選別される。
【００６１】
デベロッパエンティティシステム２２はさらに、１つ以上のカタログインスタンス３２と通信する１つ以上のレジストラコンピューティングシステム４２を含む。この例示的な実施形態においては、レジストラシステム４２は、１つ以上のカタログインスタンス３２に登録をサブミットするために、認可されている（かまたは認可された人によって用いられている）任意のコンピューティングシステムであり得る。なお、デベロッパエンティティシステム２２のうちの或るデベロッパエンティティの１つ以上のコンピューティングシステム上で実行されるカタログインスタンス３２がデベロッパエンティティシステム２２のローカルデベロッパエンティティである限りにおいては、ローカルカタログインスタンスと称されることに留意されたい。
【００６２】
なお、レジストラシステム４２のレジストラが１つ以上のクラウドベースのアイデンティティドメイン４４を介するデベロッパエンティティシステム２２のデベロッパエンティティの代わりに、レジストラとして機能することが認証され得ることに留意されたい。レジストラは、デベロッパエンティティ機密（たとえば、公開鍵インフラストラクチャ（public key infrastructure：ＰＫＩ）を用いる場合、秘密鍵）を維持し得る。
【００６３】
レジストラシステム４２は、デベロッパエンティティシステム２２のデベロッパエンティティの一部である、個々のデベロッパシステム２４（たとえば、個々のソフトウェアコンポーネントコントリビュータおよび／またはコンシューマによって用いられるコンピューティングシステム）、他のコントリビュータシステム２６（たとえば、プロキシ化されたアップローダ）、および、他のユーザーシステム２８（たとえば、プロキシ化されたダウンローダ）のための（たとえば、トランザクション登録のための）プロキシとして機能し得る。
【００６４】
さらに、特定の実現例においては、レジストラシステム４２はまた、必ずしもデベロッパエンティティシステム２２の一部ではない外部のプロキシ化されたシステム５０のための１つのプロキシ（または複数のプロキシ）として機能してもよい。たとえば、外部の統合開発環境（Integrated Development Environment：ＩＤＥ））は、場合によっては、カタログインスタンス３２および付随するローカルコンポーネントカタログ３６のうち１つ以上と対話するインターフェイスとして、デベロッパエンティティのレジストラシステム４２の使用が認可されてもよい。
【００６５】
例示的な使用事例のシナリオにおいては、図４および図５に関連付けて以下により十分に記載されるように、デベロッパエンティティ（たとえば、デベロッパエンティティシステム２２の所有者）は、初めに、デベロッパエンティティ登録と称されるプロセスにおいてデベロッパエンティティとしてカタログインスタンス３２に登録する。次いで、関連するデベロッパエンティティ登録情報はトランザクションとしてパッケージされるとともに、トランザクションに対する妥当性チェックと、ローカルのブロックチェーン４０および付随する分散型ブロックチェーン２０に対する検証済みトランザクションとしての最終的なコミットとに備えて、ローカルのブロックチェーン台帳レプリカ３４の未検証の待ち行列３８にサブミットされる。
【００６６】
デベロッパエンティティ登録の後には、さまざまな追加のタイプの登録（たとえば、デベロッパエンティティネームスペース登録）が続けられてもよい。これにより、デベロッパエンティティシステム２２のデベロッパエンティティの名前（および／または他のネームスペース）が登録される。
【００６７】
個々のコントリビュータ（たとえば、デベロッパエンティティシステム２２のデベロッパエンティティの個々のデベロッパ）についての登録が次に行なわれてもよい。コントリビュータは、登録済みのデベロッパエンティティ名および／または追加の（コントリビュータによって）要求されたネームスペースに関連付けて、ブロックチェーン２０に登録される。特定のコントリビュータについての（たとえば、アイデンティティドメイン４４および付随の認証機関（ＣＡ）によって獲得され得るような）公開鍵およびデジタル署名を提供することによっても、登録の認証を確認すること、すなわち、コントリビュータが認可されて、カタログインスタンス３２とローカルのソフトウェアコンポーネントカタログ３６によって与えられる付随するソフトウェアコンポーネント機能（たとえば、ソフトウェアコンポーネントのダウンロードおよびアップロード）との使用のために適切に許可されることを確認すること、が容易になり得る。
【００６８】
他のタイプの登録および関連するトランザクションは、（たとえば、ローカルコンポーネントカタログ３６にソフトウェアコンポーネントをアップロードする準備のために行われ得るような）ソフトウェアコンポーネント登録と、オプションのコンポーネント使用登録と組合わせたコンシューマコンポーネントダウンロード登録と、コンポーネント使用登録と、を含む。
【００６９】
他のタイプの登録も、依然として、この教示の範囲から逸脱するなく実現可能である。たとえば、（たとえば、１つのソフトウェアコンポーネントが別のソフトウェアコンポーネント内で用いられる場合の）ソフトウェアコンポーネントのネスト型使用を追跡する登録、ローカルコンポーネントカタログ状態情報の登録（たとえば、ローカルコンポーネントカタログ３６における利用可能なソフトウェアコンポーネントのリスト化）、与えられた機能、などである。
【００７０】
一般に、ブロックチェーン分散型台帳１４にさまざまなタイプの登録情報を収集することにより、エコシステム３０全体のために多くの利点が得られる可能性がある。たとえば、この明細書中に記載される実施形態を用いることにより、ソフトウェアコンポーネント間の名前の不一致を回避すること、特定のコンポーネントが第三者サプライヤによってサポートされることを、特定のコンポーネントが如何にサポートされるかと特定のコンポーネントを如何に選択的にリコールするかとに鑑みて確実にすることを含む、コンポーネントサポートサービスの効率的な管理、コンポーネントの不正変更を検出すること、知的所有権を実施してコンポーネントの由来および所有権を追跡すること、特定のコンポーネントのためのソフトウェアライセンスが有効であるどうかをチェックすること、コンポーネント有効性の検証を全体的に可能化すること等、が容易になり得る。これはすべて、この明細書中に記載されるように、分散型カタログインスタンス３２を用いることによって実質的に置換および改善され得る従来の中心制御メカニズムを必要とすることなく、達成することができる。
【００７１】
図３は、図１および図２のピア・ツー・ピア・コンピューティング・エコシステム１０および３０のピアまたはノードとして機能する個々の例示的なデベロッパコンピューティングシステム６２の詳細例を示しており、例示的なＵＩディスプレイスクリーン７０の例示的なＵＩ制御およびオプションと、カタログインスタンス３２に含まれ得る例示的なモジュール３４〜４０および６０〜６８とを含んでいる。カタログインスタンス３２を用いることで、（デベロッパシステム６２と組合わされてクラウド１４によって表され得る）ピア・ツー・ピア・エコシステムに個々のデベロッパコンピューティングシステム６２を連結し、これにより、個々のデベロッパコンピューティングシステム６２および付随するカタログインスタンス３２がピア・ツー・ピア・エコシステム全体のノードとして機能する。
【００７２】
なお、例示のために、個々のデベロッパシステム６２上で実行されているカタログインスタンス３２が示されることに留意されたい。しかしながら、実際には、個々のデベロッパシステム６２は、図２のデベロッパエンティティシステム２２のデベロッパエンティティによって所有され得るかまたは当該デベロッパエンティティに関連付けられ得る。したがって、個々のデベロッパシステム６２は、図２のデベロッパエンティティシステム２２のうちの１つを表わしている可能性もある。
【００７３】
この例示的な実施形態においては、個々のデベロッパシステム６２は、付随するピア・ツー・ピア・エコシステムのノードと、個々のソフトウェアコンポーネントコントリビュータおよび／またはコンシューマのシステムとの両方として機能する。なお、本実施形態においては、デベロッパシステム６２の個々のデベロッパはまた、単に、ローカルコンポーネントカタログ３６への／からのソフトウェアコンポーネントのダウンロード動作および／またはアップロード動作だけではなく、トランザクション登録を実現する目的で、カタログインスタンス３２および関連する機能にアクセスできるレジストラとしても機能することに留意されたい。
【００７４】
例示的なデベロッパシステム６２は、ＵＩディスプレイスクリーン７０と通信するカタログインスタンス（この明細書中においては第１のカタログインスタンスまたはカタログインスタンス１と称される）３２を含む。カタログインスタンス３２はさらに、付随するピア・ツー・ピア・エコシステムをホストするネットワークまたはクラウド１４上で実行される分散型ブロックチェーン台帳４６、２０と通信する。
【００７５】
説明の便宜上、ＵＩディスプレイスクリーンは、ディスプレイ上に提供される如何なるソフトウェア生成描写であってもよい。描写の例は、ウィンドウ、ダイアログボックス、表示されたテーブル、および他のグラフィカルユーザインターフェイス特徴、たとえば、ブラウザなどのソフトウェアを介してユーザに提示されるユーザインターフェイス制御などを含む。単一の境界内に含まれているユーザインターフェイスディスプレイスクリーンはビューまたはウィンドウと称される。ビューまたはウィンドウは、サブビューまたはサブウィンドウ、ダイアログボックス、グラフ、テーブルなどのセクションを含み得る。いくつかの場合には、ユーザインターフェイスディスプレイスクリーンは、ディスプレイ上にその時点で表示されているすべてのアプリケーションウィンドウを指していることもある。
【００７６】
ＵＩ制御は、ユーザがデータを入力および閲覧すること、および／またはユーザインターフェイスと対話すること、を可能にするように適合されたユーザインターフェイス・ディスプレイスクリーンのうち表示された任意の要素またはコンポーネントであってもよい。ユーザインターフェイス制御の追加の例は、ボタン、ドロップダウンメニュー、メニューアイテム、タップアンドホールド機能などを含む。同様に、ユーザインターフェイス制御信号は、ソフトウェアのための入力として提供される如何なる信号であってもよい。この場合、入力は、ソフトウェアに関連付けられたユーザインターフェイスディスプレイスクリーンおよび／またはソフトウェアアプリケーションに影響を及ぼす。
【００７７】
例示的なカタログインスタンス３２はローカルの台帳レプリカ３４を含む。ローカルの台帳レプリカ３４は、分散型ブロックチェーン２０のうち、複製された（他のカタログインスタンスまたはノード間で複製された）未検証の待ち行列３８およびブロックチェーンレプリカ４０を含む。カタログインスタンス３２はさらに、（たとえば、リレーショナルデータベースまたは他のタイプのデータベースによって実現され得る）ローカルコンポーネントカタログ３６、ＵＩコード生成モジュール６０、台帳インターフェイス型モジュール６４、セキュリティおよび許可モジュール６２、ならびにブロック演算モジュール６６を含む。カタログインスタンスコントローラ６８はカタログインスタンス３２のさまざまな他のモジュール３４、３６、６０〜６６の間の相互通信を接続し、制御し、ルーティングすることを容易にする。
【００７８】
例示的なＵＩディスプレイスクリーン７０ならびに付随するＵＩ制御およびオプションは、コントリビュータおよびコンシューマの登録を容易にするためのＵＩ制御；コンポーネント登録；ローカルコンポーネントカタログ３６において利用可能なソフトウェアコンポーネントについてのコンポーネントサーチおよび／またはビュー；コンポーネント保全性、コンポーネント識別などの検証；ソフトウェアコンポーネントのソース、由来、ライセンス条件、サポート状態などの確認；デベロッパエンティティネームスペースの登録；コントリビュータ登録；コンポーネントのアップロードおよび／またはダウンロードの登録；ソフトウェアコンポーネントを登録解除するためのＵＩ制御またはオプション；などを含む。
【００７９】
なお、例示的なＵＩディスプレイスクリーン７０を介して利用可能なＵＩ制御の正確な数およびタイプは実現例特有のものであって、本教示の範囲から逸脱することなく所与の実現例のニーズに応じて異なり得ることに留意されたい。さらに、ＵＩ制御およびオプション７０のうちの１つ以上は、（たとえば、ウィザード形式で）複数のＵＩディスプレイスクリーンによって実現されてもよい。
【００８０】
この例示的な実施形態においては、ＵＩディスプレイスクリーン７０のさまざまなＵＩ制御およびオプションは、カタログインスタンス３２のＵＩコード生成モジュール６０からのレンダリング命令に基づいて生成される。
【００８１】
セキュリティおよび許可モジュール６２は、個々のデベロッパシステム６２のデベロッパエンティティによって確立されたルールを考慮して、個々のユーザおよびデベロッパエンティティの認証および許可を容易にし得る。セキュリティおよび許可モジュール６２はさらに、さまざまなセキュリティおよび許可機能の実現を容易にするために、図２の１つ以上のアイデンティティドメイン４４と通信してもよい。なお、セキュリティおよび許可モジュール６２によって実行される正確な機能が実現例特有のものであって、所与の実現例のニーズに応じて異なり得ることに留意されたい。
【００８２】
カタログインスタンス３２のブロック演算モジュール６６は、分散型台帳および付随するコンピューティングクラウドおよびエコシステム１４の分散型ブロックチェーン２０に含めるようにトランザクションの次のブロックを計算する（すなわち、検証する）ために、カタログインスタンス３２が（たとえば、合意アルゴリズムに従って、またはラウンドロビン選択によって）選択されている場合に、ローカルの未検証の待ち行列３８におけるペンディングトランザクションについてのハッシュの演算を容易にするための、かつ、ブロックチェーン４０、２０のブロックについてのハッシュを演算するためのコードを含む。
【００８３】
台帳インターフェイス型モジュール６４は、未検証の待ち行列３８を、他のカタログインスタンス（すなわち、エコシステムのノード）の未検証の待ち行列４６に入力する新しいトランザクションを伝搬することを容易にするためのコードを含む。台帳インターフェイス型モジュール６４はさらに、分散型ブロックチェーン２０を複製するとともにブロックチェーン２０の最新レプリカ４０を維持するためのコードを含む。
【００８４】
ローカルコンポーネントカタログ３６は、認可されたコンシューマによって選択的にダウンロードされ得るソフトウェアコンポーネントを維持する。ソフトウェアコンポーネントは、登録済みのデベロッパエンティティネームスペースおよび対応する登録済みデベロッパエンティティに関連付けて、認可済みおよび登録済みのコントリビュータによってローカルコンポーネントカタログ３６にアップロードされてもよい。
【００８５】
図４は、第２の例示的システム８０、デベロッパエンティティを登録するための付随するカタログインスタンスプロセス９４、および付随するデベロッパエンティティ登録トランザクション８４を、図１〜図３の分散型ブロックチェーン台帳２０と共に示す。この場合、第２の例示的システム８０は図１〜図３の実施形態に従って実現されてもよい。
【００８６】
例示的なシステム８０においては、たとえば、図２のレジストラシステム４２のユーザに対応するレジストラ８２は、レジストラシステム４２と、図３の付随するＵＩディスプレイスクリーンおよびオプション７０とを用いて、デベロッパエンティティ登録トランザクション８４をサブミットする。デベロッパエンティティ登録トランザクション８４は、（たとえば、図２のデベロッパエンティティシステム２２のデベロッパエンティティに対応する）デベロッパエンティティ名８６、デベロッパエンティティの公開鍵８８、およびデベロッパエンティティのデジタル署名９０を含む。
【００８７】
なお、デジタル署名９０が公開鍵インフラストラクチャ（ＰＫＩ）に従って実現され得るとともに、登録されているデベロッパエンティティの秘密鍵を含み得ることに留意されたい。デジタル署名は、（たとえば、アイデンティティドメインおよび付随する認証機関、たとえば図２のアイデンティティドメイン４４によって）認可された（すなわち、分散型ブロックチェーン台帳２０および付随の分散型エコシステムに登録することが認可された）デベロッパエンティティの代わりに、レジストラ８２が登録をサブミットしていることの確認を容易にする。
【００８８】
この例示的な実施形態においては、レジストラ８２は、第１のカタログインスタンス（たとえば、図３のカタログインスタンス３２）に対してデベロッパエンティティトランザクション８２をサブミットする。第１のカタログインスタンス３２は、次いで、最初のデベロッパエンティティ登録プロセス９４を実行してから、選択されたカタログインスタンス（たとえば、第１のカタログインスタンス３２、第２のカタログインスタンス１１０または第３のカタログインスタンス１１２）による分散型ブロックチェーン２０に対する最終的なコミット１１４のために他のカタログインスタンス１１０、１１２の未検証の待ち行列に対してトランザクション８４を伝搬する。選択されたカタログインスタンス（たとえば、第３のカタログインスタンス１１２）は、そのブロックチェーン演算モジュール（たとえば、図３のモジュール６６）を用いて、トランザクションハッシュおよびブロックハッシュを演算することにより、分散型ブロックチェーン台帳２０に対してトランザクション８４をコミットしてもよい。
【００８９】
最初のデベロッパエンティティ登録プロセス９４は、分散型ブロックチェーン台帳２０のトランザクションを後でコミットするためにカタログインスタンスに対してトランザクション８４をサブミットする前に、デベロッパエンティティ登録トランザクション８４の前処理の形式として、さまざまなステップ９８〜１０８を含む。最初の署名検証ステップ９８は、たとえば、アイデンティティドメイン（たとえば、図２のアイデンティティドメイン４４）の認証機関（ＣＡ）を参照するデジタル署名９０の検証を含む。
【００９０】
デジタル署名９０が検証された後、プロセス９４は、同じデベロッパエンティティ名８６の既存のデベロッパエンティティ登録のいずれについても、分散型ブロックチェーン２０および／または任意の付随する未検証の待ち行列１０６をチェックする。他の同様のデベロッパトランザクションが予め登録されている（かまたは、他の場合には、その時点で未検証である待ち行列に存在している）場合、現在のデベロッパエンティティ登録プロセス９４は、不一致の検出により中断される。
【００９１】
次に、オプションのコミュニティーリード検証ステップ１０２は、（エコシステムの）オプションのコミュニティーリードで、コミュニティリードが分散型ブロックチェーン２０へのデベロッパエンティティトランザクション８４の登録に異議を有しているかどうかをチェックするステップを含む。コミュニティリードは、任意には、コミュニティリードがトランザクションをブロックすることが認可（または許可）されなければならないという何らかの理由で、デベロッパエンティティ登録トランザクション８４をブロックしてもよい。
【００９２】
オプションのコミュニティリード検証ステップ１０２の後、登録トランザクション８４は、たとえばトランザクション生成ステップ１０４によって、未検証の待ち行列に含めるためにパッケージされてハッシュされる。なお、ステップ９８〜１０２のうちいずれかが終了しない場合にはデベロッパエンティティトランザクション登録プロセス９４が中断されることに留意されたい。
【００９３】
デベロッパエンティティ登録トランザクション８４は、ローカルの未検証の待ち行列３８にサブミットされた後、伝搬ステップ１０８において、コミット処理１１４の準備のために、他のカタログインスタンス１１０、１１２および付随する未検証の待ち行列（たとえば、図３の待ち行列４６）に伝搬される。これにより、未検証の待ち行列３８および対応するレプリカ（たとえば、図２のレプリカ４６）における１つ以上のペンディングトランザクションの集合が、分散型ブロックチェーン２０のうち１つ以上のブロックとしてコミットされるために処理される。
【００９４】
なお、この例示的な実施形態においては、複数のエンティティが１つ以上のクラウドアイデンティティドメイン（たとえば、図２のドメイン４４）によってプロビジョニングされているので、所与のカタログインスタンス３２、１１０、１１２がシステム８０のすべてのユーザおよびパーティシパントエンティティについての情報を識別するために既にアクセスしていたかもしれないことに留意されたい。
【００９５】
なお、図２のクラウドアイデンティティドメイン４４の使用が、特定の実現例において省略され得る範囲において、任意であることに留意されたい。たとえば、代替的には、ユーザおよびエンティティは、クラウドアイデンティティドメイン以外の他の手段によって識別され得る。さらに、他の実施形態においては、特定のユーザが識別されないままであるかまたは匿名のままであってもよい。
【００９６】
しかしながら、この例においては、各々のユーザおよびエンティティは、図２のアイデンティティドメイン４４内における予め定められたアイデンティティに関連付けられている。
【００９７】
この例示的な実施形態は、個々のデベロッパ役割に関連付けられた許可と、個々の組織を表しているデベロッパエンティティに関連付けられた許可とを識別して関連付ける。
【００９８】
複数の個体が単一のエンティティ（たとえば、企業）のためのコンポーネントを開発し得る可能性があり、このため、複数の個体のアイデンティティは、ソフトウェアコンポーネントの所有権および有効性の検証の目的で用いられ得る特定のデベロッパエンティティアイデンティティに（１つ以上のアイデンティティドメインにわたって）マッピングされるかまたは関連付けられることとなる。
【００９９】
しかしながら、分散型ブロックチェーン２０は、デベロッパエンティティについての識別子と公開鍵との間のマッピングまたは関連付けを記録する。この例示的な実施形態においては、格納されたアイデンティティは、デベロッパエンティティのアイデンティティを表わしている。ソフトウェアコンポーネントをカタログインスタンスに書込むおよび／またはアップロードする（とともに、コンポーネントおよび当該アップロードをブロックチェーン２０に登録する）特定の個体はコントリビュータと称される。
【０１００】
したがって、デベロッパエンティティ登録プロセス９４は、デベロッパエンティティの自己登録を表わしている。レジストラ８２は、システム８０にアクセスできるとともにデベロッパエンティティの登録を希望している如何なるユーザであってもよい。
【０１０１】
したがって、（特定の実現例の需要に応じて異なり得る）例示的なデベロッパエンティティ登録プロセス９４は、レジストラ８２を任意に認証した後、（たとえば、図３のＵＩ制御およびオプション７０間に含まれ得るような）「デベロッパエンティティ」ＵＩおよび付随のＵＩ制御の「作成」を用いて、デベロッパエンティティ（たとえば、少なくとも識別名）についての情報８４、ただし場合によってはコンタクト情報などを供給することを含む。付加的には、レジストラ８２はまた、公開鍵８８を供給し、トランザクションにデジタル署名することにより、たとえば、結果として、主張された鍵（たとえば、デベロッパエンティティ秘密鍵）を備えたデジタル署名９０が得られることとなる。
【０１０２】
カタログインスタンスプロセス９４は、次いで、（ステップ９８において）供給された公開鍵を用いて署名９０を検証し、これにより、レジストラ８２が機密の片割れ半分を両方（たとえば、登録されているデベロッパエンティティに関連付けられた公共鍵および秘密鍵の両方）とも所有していることを証明する。次に、（ステップ１００において）カタログインスタンス３２は、関連するカタログデータストア（たとえば、図３のローカルコンポーネントカタログ３６、ならびに／または、図３のローカルの未検証の待ち行列３８および／もしくはローカルのブロックチェーンレプリカ４０）をチェックして、デベロッパエンティティがまだ規定されていないかまたは規定されるプロセス中であることを確実にする。
【０１０３】
任意には、コミュニティリード検証ステップ１０２は、デベロッパエンティティトランザクション８４に対応する要求を検証する。たとえば、特定の実現例においては、追加の手作業の工程（たとえば、署名すべき書類事務）は、分散型ブロックチェーン２０に対するトランザクション８４のコミットよりも前に、デベロッパエンティティ登録の前段階プロセスを完了する必要があるかもしれない。最後に、登録トランザクションは、（ステップ１０４において）作成および／またはフォーマットされて、（ステップ１０８において）他のカタログインスタンス１１０および１１２に伝搬される。
【０１０４】
伝搬後、所与の登録トランザクションは、分散型ブロックチェーン２０にコミットされるまで、未検証の待ち行列（たとえば、図３の未検証の待ち行列４６）のレプリカに位置することとなるだろう。作成されたトランザクションは、信頼されていない（すなわち、未検証の）トランザクションとしてエコシステムの他のすべてのフルノード（たとえば、カタログインスタンス１１０および１１２）に伝搬される。未検証の待ち行列３８は、未検証の待ち行列の未検証のトランザクションがブロックチェーン２０にコミットされるまで、対象である未検証のトランザクションに配置することが可能であり得る。
【０１０５】
分散型ブロックチェーン２０に対するデベロッパエンティティトランザクション８４のコミット後、関連するデベロッパエンティティは、分散型ブロックチェーン２０にその時点でコミットされているデベロッパエンティティ登録トランザクション８４において維持されているとおりに、デベロッパエンティティのアイデンティティに依拠する追加のトランザクションの開始を可能にするのに十分なほどに信頼されていると見なされる。
【０１０６】
要約すると、図４は、デベロッパエンティティのアイデンティティ（すなわち、デベロッパアイデンティティ）のために台帳記入を作成するためのシステム８０内の基本コンポーネントを例示している。
【０１０７】
システム８０が示しているレジストラ８２は、コンピュータシステム４２および付随するカタログインスタンスユーザインターフェイスを用いて、デベロッパエンティティトランザクション情報８４によって示されているようにデベロッパエンティティを規定する。レジストラ８２は、このプロセスの前に任意に認証することができる。
【０１０８】
レジストラシステム４２のユーザインターフェイスは、レジストラ８２が、識別名８６およびセキュリティメカニズム（たとえば、公開鍵８８およびデジタル署名９０）などのデベロッパアイデンティティについての情報８６〜９０を供給することを可能にするＵＩ制御およびオプションを含む。
【０１０９】
なお、レジストラ８２が人、ビジネスエンティティ、自動化プロセスなどであり得ることに留意されたい。人がレジストラ８２である場合、デベロッパエンティティ登録を実現するためのユーザインターフェイスは、（デスクトップパソコン、ラップトップ、タブレット、スマートフォンまたは他のデバイスであり得る）レジストラシステム４２を介してアクセス可能である。
【０１１０】
さまざまな実施形態においては、ユーザインターフェイスおよび付随のレジストラシステム４２は、全体的または部分的には、ネットワークを介して連結されるサーバ、クラウドサービスなどの遠隔設置されたプロセッサによって、処理することができる。レジストラの機能が自動的に実行される場合、プロセスは、任意の好適な処理ハードウェアおよびソフトウェアを用いてそれら機能を実行することができる。一般には、特に規定のない限り、この明細書中に記載される機能は、さまざまな地理的区域において、さまざまな時点に位置するハードウェアとソフトウェアとの任意の組合せによって実行することができる。
【０１１１】
デベロッパエンティティトランザクション８４を含む情報８６〜９０は、（この例示的な実施形態においてカタログプロセスとも称される）デベロッパエンティティ登録プロセス９４を実現するための、第１のカタログインスタンス３２に対する要求によって転送される。
【０１１２】
カタログプロセス８４内に示されるように、ステップ９８〜１０８は、供給された公開鍵８８を用いて署名９０を検証するステップ、（同じエンティティが既に規定されている場合には）既存のデベロッパエンティティについてチェックするステップ、および、任意には、コミュニティリードに検証（たとえば、手作業で署名する書類事務）を実行させるステップを含む。これらのステップのうちのいずれかに失敗すると、プロセスが中断される。それ以外の場合、トランザクション８４はフォーマットされて、未検証の待ち行列３８に組込まれるようにサブミットされる。
【０１１３】
カタログプロセス９４は、対象のレジストラ８２、デベロッパエンティティまたは他の実行者から遠隔で実行することができる。たとえば、カタログプロセス９４および他のカタログプロセスの機能は、ピア位置などにあるサーバコンピュータ、クラウドサービス、パーソナルコンピュータシステム上で実行することができる。
【０１１４】
追加のカタログインスタンス１１０および１１２は、第１のカタログインスタンス３２のピアの存在を示している。ステップ１０２でフォーマットされたトランザクション８４は、未検証の状態でそれら１１０、１１２に伝搬される。最終的に、十分な未検証のトランザクションが待ち行列３８内に存在している場合、これらトランザクションが検証されて、これらのカタログインスタンス３２、１１０、１１２のうちの１つによって（ブロックチェーン２０のブロックとして）台帳にコミットされることとなる。検証されたトランザクション、すなわちデベロッパエンティティの定義は、この場合、カタログインスタンス３２、１１０、１１２すべてがアクセス許可を読取った分散型ブロックチェーン２０を介して、これらすべてのカタログインスタンス３２、１１０、１１２にとって利用可能になるだろう。トランザクションがコミットされると、カタログインスタンス３２、１１０、１１２はすべて、複製のデベロッパエンティティ登録（すなわち、複数のトランザクション）の生成を防止することとなる。いくつかの実施形態においては、カタログインスタンス３２、１１０、１１２は、最初のトランザクションが未検証の状態であっても、複製を防止し得る。
【０１１５】
デベロッパエンティティがエコシステム８０上で登録されて検証されたときには、デベロッパエンティティはフルノード３２、１１０、１１２すべてに伝搬されてしまっていることになるだろう。その後、１つ以上のネームスペースがデベロッパエンティティに割付けられてもよい。ネームスペース登録プロセスは、デベロッパエンティティ機密を所有しているいずれの個体によっても開始することができるという点で、最初のデベロッパエンティティ登録プロセスと同様であり得る。
【０１１６】
カタログエントリおよびインスタンスのピア・ツー・ピア伝搬および検証は、仮想通貨実現例（たとえばBitcoin、Dogecoinなど）において用いられる共有台帳のアプローチと同様であり得る。しかしながら、仮想通貨のシステムとは対照的に、ブロックの生成は演算集約的にされる必要はない。なぜなら、企図されるソフトウェアコンポーネント・エコシステム８０が、要望に応じて（たとえば、図２の例示的なアイデンティティドメイン４４によって）認証することができる既知のエンティティを含んでいるからである。したがって、（仮想通貨アプリケーションにおいて「マイニング（mining）」と称されることもある）時間のかかる演算要件は不要となる。
【０１１７】
図５は、図４の第２の例示的システムおよび付随するエコシステム８０によって実現可能であるとともに図１〜図３の関連するエコシステムによっても実現可能である第１の例示的な方法１２０を示すフロー図である。
【０１１８】
第１の例示的な方法１２０は、たとえば、図４のレジストラ８２によって、デベロッパエンティティ名、公開鍵およびデジタル署名をカタログインスタンス（たとえば図４のカタログインスタンス３２）に対してサブミットするステップを含む、追加情報サブミットステップ１２２を含む。
【０１１９】
次に、（たとえば、図４のデベロッパエンティティ登録トランザクション情報８４に対応する）サブミットされた情報は、検証ステップ１２４において検証され、次いで、情報がブロックチェーンおよび／または未検証の待ち行列において複製のエントリを表わしているかどうかがチェックされる。これらのチェック１２４および１２６がともにパスした場合、関連するデベロッパエンティティ登録トランザクションがステップ１２８において未検証の待ち行列の上に配置されて、ステップ１３０において他のカタログインスタンスに伝搬される。それ以外の場合、トランザクション登録プロセスが処理は異常終了する。
【０１２０】
他のカタログインスタンス（すなわち、ノード）に対するトランザクションの伝搬の後、これらノードは、他のカタログインスタンスに対するトランザクションを伝搬しているカタログインスタンス（たとえば、図４のカタログインスタンス３２）についてピア資格条件が満たされているかどうかを集約的に判断してもよい。登録を実行するカタログインスタンスが（所与の実現例のニーズに応じて異なり得る）予め定められたピア資格条件を満たさない場合、登録プロセスは失敗となる。それ以外の場合、利用可能なカタログインスタンスのうちのカタログインスタンスは、分散型ブロックチェーン台帳（たとえば、図４のブロックチェーン２０）に対してトランザクションをコミットするのに必要とされる演算（たとえば、ハッシュの演算）を実行するためにステップ１３４において選択される。
【０１２１】
１つ以上のトランザクションのグループを検証済み待ち行列から分散型ブロックチェーン（たとえば、図４のブロックチェーン２０）に転送するために演算を実行するための所与のカタログインスタンスを選択するのに用いられるアルゴリズムまたは方法は、実現例特有のものであるとともに、所与の実現例のニーズに応じて異なり得る。たとえば、特定の実施形態においては、第１の利用可能なカタログインスタンス（または最も利用可能なコンピューティングリソースを用いたインスタンス）は、演算を実行するためにカタログインスタンスとして選択されており、他の実現例においては、カタログインスタンスは、どのカタログインスタンスが演算を実行すべきであるかを判断するためにカタログインスタンスの多数決を取ってもよく、さらに他の実現例においては、カタログインスタンスは、（ラウンドロビンアプローチによって）ブロックを順番にコミットしてもよい。
【０１２２】
要約すると、図５は、図４のシステム８０によって実現され得る方法１２０のフローチャートを示す。ステップ１２２は、図４の分散型ブロックチェーン台帳２０にコミットされるべき新しいトランザクションとして集合的に提案されているデベロッパエンティティ名、公開鍵およびデジタル署名を受取るために実行される。
【０１２３】
ステップ１２４においては、デジタル署名を検証するためにチェックがなされる。検証が失敗すると、プロセスが障害状態で終了し、トランザクションは台帳にコミットされない。それ以外の場合、署名が検証をパスする場合、ステップ１２６に進んで、複製のエンティティ（たとえば、先に用いられていた名前）についてチェックがなされる。チェック１２６が失敗すると、上述のようにプロセス１２０は異常終了する。それ以外の場合、待ち行列にトランザクションを配置するためにステップ１２８が実行される。次に、ステップ１３０において、トランザクションが、ネットワーク上の他のピアプロセス（すなわち、ピア・ツー・ピア・コンポーネント・エコシステムの一部である）にとって利用可能にされる。
【０１２４】
ステップ１３２および１３４は、基礎をなす台帳のルールに従ってトランザクションを含むブロックを検証し、次いで、トランザクションがコミットされた分散型ブロックチェーン台帳（たとえば、図４のブロックチェーン２０）によって、トランザクション情報をコミットしてすべてのカタログインスタンスにわたって共有する。
【０１２５】
図６は、ＵＩディスプレイスクリーン７０を介する図３のユーザデベロッパコンピューティングシステム６２などのコンピューティングシステム上に表示され得る例示的なＵＩディスプレイスクリーン１４０を示す。例示的なＵＩディスプレイスクリーン１４０は、ソフトウェアコンポーネントのカタログをブラウズしたり、（たとえば、サーチボタン１４６によって）サーチしたり、（たとえば、ダウンロードボタン１４８によって）ダウンロードしたり、（たとえば、編集ボタン１５０によって）編集したり、付随するコンピューティングシステムがアクセスするカタログインスタンス（たとえば、図３のカタログインスタンス３２）によって維持されるカタログエントリ／オプション１４４からソフトウェアコンポーネント１５６、１５８、１８６、１８８を（たとえば、削除ボタン１５２によって）削除したりするための、さまざまなＵＩ制御およびオプション１４４〜１８０を含む。
【０１２６】
この例示的な実施形態においては、カタログ１４４におけるソフトウェアコンポーネントは、特徴とされるコンポーネント１６０およびプライベートコンポーネント１８０に分割される１つ以上の対応するコンポーネントカード１５６、１５８、１８６および１８８によって示される。
【０１２７】
ソフトウェアコンポーネントの各々は、コンポーネント名１６２、１７２、１９２および２０２、対応するファイル名１６４、１７４、１９４および２０４、ならびに記述１６６、１７６、１９６、２０６を含む。所与のコンポーネントＵＩカード１５６、１５８、１８６、１８８がユーザによって選択されてもよい。カードを右クリックすると追加のユーザオプションが現われ得る。これら追加のユーザオプションは、たとえば、所与のコンポーネントについてより多くの情報のドリルダウンを行なったり、コンポーネントと対話する（たとえば、コンポーネントをダウンロードする）ために追加のユーザオプションおよび制御にアクセスしたりするためのものである。なお、カードの右クリックとは対照的に、「詳細ボタン」の選択などの他のＵＩアフォーダンスが、本教示の範囲から逸脱することなく用いられてもよい。
【０１２８】
要約すると、例示的なＵＩディスプレイスクリーン１４０はカタログＵＩのうちの例示的な一部分を表わしている。ＵＩディスプレイスクリーン１４０は、ソフトウェアコンポーネントについての情報を含むさまざまな例示的ＵＩカードまたはサムネイル１５６、１５８、１８６、１８８を示している。
【０１２９】
なお、各々のコンポーネントカード１５６、１５８、１８６、１８８が追加情報を示し得ること、たとえば、グラフ図の情報または画像（たとえば、コンポーネントが生成するＵＩディスプレイスクリーンの画像）、著者情報、ネームスペース指定、コンポーネントについてのさらに詳細な説明、所与のコンポーネントの状態（たとえば、開発サイクルにおけるサポート状態または位置）、コンポーネントがダウンロードされた回数、コンポーネントがデモであるか否か、などを含み得ることに留意されたい。他の実施形態においては、他のタイプの情報を提供することに加えて、コンポーネントを表わすためのさまざまな方法を用いることができる。
【０１３０】
例示的なコンポーネントＵＩカード１５６の場合、名前は「ｏｒａ−ｃａｒｄ−ｌａｙｏｕｔ」と示される。この例示的な方式における名前の最初の部分「ｏｒａ」は、基礎の「ネームスペース」と称される。その後ろに、完全かつ固有のコンポーネント名を形成するための追加のテキストを追加することができる。
【０１３１】
なお、コンポーネントについてのネームスペースも、図６に示されるコンポーネント名接頭辞アプローチと同様に、またはこの代わりに、いくつかのシステムにおけるコンポーネントメタデータ中のどこかに記録され得ることに留意されたい。しかしながら、どちらのアプローチにおいても、関連するエコシステムにおける各コンポーネントごとに最終的に固有となるネームスペースおよびコンポーネント名が、ローカルのソフトウェアコンポーネントカタログの利用可能なソフトウェアコンポーネントを示す所与のＵＩディスプレイスクリーンに示される。エコシステムは、いくつかの実施形態においては、所与のいずれかのコンポーネントについての固有のアイデンティティを規定するために、ネームスペースおよびコンポーネント名に加えて、合成アイデンティティ、たとえば、１２８ビットのユニバーサルユニーク識別子（Universal Unique IDentifier：ＵＵＩＤ）、を割付けてもよい。
【０１３２】
各々のデベロッパエンティティには基礎のネームスペースが割当てられる。基礎のネームスペースは、１つ以上の用語であり得、その後ろに、デベロッパが選択する際の追加の記述子または名前が追加され得る。（たとえば、コンポーネントＵＩカード１８６のファイル名１９４に対応する）名前「ｏｊｘ」は、図６に示されるコンポーネントにおける基礎のネームスペース指示子の別の例である。なお、図６の例においては、基礎のネームスペースが３文字であるが、他の実施形態においては、如何なる数またはタイプの指示を用いていもよいことに留意されたい。
【０１３３】
なお、さまざまなコンポーネントＵＩカード１５６、１５８、１８６、１８８が、各々の識別されたコンポーネントに関連付けられたブロックチェーン登録情報に関する追加情報を示し得ることに留意されたい。たとえば、検証されてブロックチェーン台帳にコミットされた情報（たとえば、コンポーネントを供給する際に用いられるコンポーネント名、ネームスペース、所有者、状態およびライセンス情報も閲覧可能である。
【０１３４】
この例示的な実施形態においては、カタログＵＩは、付随するブロックチェーントランザクションにおけるそのコンポーネントについての対応する登録のチェックサムと一致するチェックサムを有していることなどによって、検証されるダウンロードすべきソフトウェアコンポーネントについてのＵＩカードを表示するだけであるだろう。
【０１３５】
なお、ユーザがたとえばコンポーネントをダウンロードなどの動作を実行する場合、ダウンロードプロセスは、そのコンポーネントのためのダウンロード登録プロセスの完了を含み得ることに留意されたい。さらに、例示的なＵＩディスプレイスクリーン１４０に示されるもの以外の追加のＵＩ制御およびオプションが実現可能であることに留意されたい。たとえば、さまざまなタイプのブロックチェーン登録トランザクションなどを開始する、コンポーネントをアップロードするための追加のオプションが提供されてもよい。
【０１３６】
図７は、第３の例示的システム２１０によって表わされるピア・ツー・ピア・ソフトウェアコンポーネント・エコシステムの（カタログインスタンスと称される）相互に通信するノード２１４〜２１８によって維持されるブロックチェーン２１２および２３０の初期状態を例示する（ソフトウェアコンポーネント・エコシステムを表わす）第３の例示的なシステム２１０を説明する第１のブロック図である。図７は、空のルートブロック２１２（ブロック０）を備えた（ブロックチェーンのブロック２１２の分散型レプリカ２３０〜２３６として明示する）ブロックチェーンを含むシステム２１０の例示的な初期状態を示す。
【０１３７】
この例示的な実施形態においては、３つのカタログインスタンス２１４〜２１８は、さまざまなコンピュータシステムおよび／または仮想マシン上で実行されるソフトウェアを表わす。この場合、コンピュータシステムおよび／または仮想マシンはネットワークを介して相互に通信する。カタログインスタンス２１４〜２１８は、１つ以上のクラウド（たとえば、１つ以上の相互通信サーバの集合）によって実現されてもよい。
【０１３８】
カタログインスタンス２１４〜２１８の各々は未検証の待ち行列２２４〜２２６と共に初期状態で示されている。説明の便宜上、未検証の待ち行列は、コンピューティングオブジェクトが処理されてブロックチェーン２３０〜２３６に含まれる前に、コンピューティングオブジェクト（たとえば、１つ以上のトランザクションに対応するコンピューティングオブジェクト）を格納するための如何なるデータストレージメカニズムであってもよい。なお、ブロックチェーン２３０〜２３６が、カタログインスタンス２１４〜２１８間で共有されるかまたは複製されるブロックチェーンの個々のレプリカを含むことに留意されたい。
【０１３９】
カタログインスタンス２３０〜２２６の内容２１２の共有は、各々のカタログインスタンス２１４〜２１８によって実現されるソフトウェアによって実現されてもよい。この場合、ソフトウェアは、それぞれのブロックチェーン２３０〜２３６間でのブロックチェーン内容２１２の複製を含む、カタログインスタンス２１４〜２１８間の通信を可能にするためのコンピュータコードを含む。なお、ブロックチェーン２３０〜２３６がその時点で最初のルートブロック（最初の端末ブロック、ブロック０またはゼロ番目のブロックとも称される）２１２だけを含んでいることに留意されたい。最初は、最初の端末ブロック２１２には、他の場合にブロック２１２のペイロードセクション２２０に格納される可能性もあるトランザクションが無い可能性がある。
【０１４０】
なお、この明細書中に記載されるとともに以下においてより詳細に説明されるトランザクションペイロード、トランザクションハッシュ、トランザクション公開鍵、ブロックハッシュ、ブロックペイロードなどは単なる例示に過ぎず、この教示の範囲から逸脱しない程度に異なっていてもよい。さらに、実現可能なトランザクションのほんの小規模な例示的サブセットだけがこの明細書中においてより十分に例示および記載されている。この教示を利用できる当業者であれば、所与の実現例のニーズを満たすために、過度の実験を行うことなく、さまざまなエコシステムノードによって選択的にアクセスできるようにブロックチェーンに収集、検証、格納するために、この明細書中に記載される実施形態を容易に実現および使用し得る。
【０１４１】
最初の端末ブロック２１２はこの使用事例においてはゼロである（前のハッシュと称される）前のブロックのハッシュのためのフィールドを備えたハッシュセクション２２２を含む。ハッシュセクション２２２はさらに、例示の目的で、＃２ａｂ４と示される現在のハッシュ（ブロックチェーンのための開始ハッシュとも称される）を含む。なお、ハッシュ記号「＃２ａｂ４」の「＃」は、ＳＨＡ−２５６（Secure Hash Algorithm（セキュアハッシュアルゴリズム）−２５６）または他のタイプのハッシュであり得る、より長いハッシュ値についてのワイルドカード文字またはプレースホールダを表わし得ることに留意されたい。使用される正確なタイプのハッシュは実現例特有のものであってもよく、本教示の範囲から逸脱しない程度に異なっていてもよい。
【０１４２】
図８は、第１の例示的トランザクション（すなわち、デベロッパ登録トランザクション）２４０が、本使用事例において第１のカタログインスタンス２１４である発生元カタログインスタンス（たとえば、第１のカタログインスタンス）によって、カタログインスタンス２１４〜２１８の未検証の待ち行列２２４〜２２６に伝搬された後における、図７の第３の例示的システム２１０を示す第２のブロック図である。
【０１４３】
なお、所与のカタログインスタンス２１４〜２１８が、所与のカタログインスタンス２１４〜２１８に対するアクセスのために（たとえば、公開鍵インフラストラクチャ（ＰＫＩ）によって）認証されたデベロッパエンティティ（または他のエンティティ）のデベロッパコンピュータ（デベロッパシステムと称される）と通信し得ることに留意されたい。カタログインスタンス２１４〜２１８は、ソフトウェアコンポーネントのデベロッパ、コントリビュータおよび／またはコンシューマが、カタログインスタンス２１４〜２１８での初期認証および登録中に供給されるクレデンシャルに関連付けられた特権に従って、認証済みの特定のカタログインスタンス２１４〜２１８へのおよび／またはからのソフトウェアコンポーネントのアップロードおよび／またはダウンロードを実行することを可能にするためのＵＩディスプレイスクリーンを生成することを容易にするために、ソフトウェアを実行してもよい。
【０１４４】
なお、所与のデベロッパ（および／またはコントリビュータ、コンシューマなどの）エンティティ（たとえば、企業）は、特定のデベロッパユーザおよび関連するコンピュータシステムをカタログインスタンス２１４〜２１８の１つ以上にインターフェイス接続するために、レジストラエンティティを用いてもよい。たとえば、トランザクションのダウンロードおよび／またはアップロード、さまざまなタイプの登録の開始、などを実行するためにカタログインスタンス２１４〜２１８と通信するデベロッパおよび関連するコンピュータシステムは、デベロッパが属するデベロッパエンティティのためのプロキシとして機能し得る。
【０１４５】
図８に示されるように、この使用事例においては、第１のカタログインスタンス２１４は、ブロックチェーン２３０〜２３４に登録されるべき第１のトランザクション２４０を受取っていた。第１のカタログインスタンス２１４は、第１のトランザクション２４０を作成して第１の未検証の待ち行列２２４に格納するとともに第１のトランザクション２４０のコピーまたはレプリカをエコシステムノード２１４〜２１８の他の未検証の待ち行列２２６〜２２６に伝搬することを容易にするためのコンピュータコードを含む。
【０１４６】
第１の例示的なトランザクション２４０は、（たとえば、「レジスタデベロッパ」トランザクションタイプを指定する）タイプ情報と、デベロッパエンティティ情報（たとえば、「example.com」）とを含む第１のトランザクションペイロードセクション２５０を含む。なお、第１のトランザクション２４０のトランザクションペイロードセクション２５０に格納されたデータが単に例示的なものに過ぎず、本教示の範囲から逸脱しない程度に異なり得ることに留意されたい。
【０１４７】
さらに、この教示の範囲から逸脱することなく、トランザクション２４０の他のセクションからの１つ以上のデータアイテム（たとえば、ハッシュセクション２５２）が、ペイロードセクション２５０に含まれていてもよく、および／または、この逆も同様に可能であってもよい。第１の例示的トランザクション２４０のハッシュセクション２５２は、第１のトランザクション２４０のデベロッパエンティティ登録者に関連付けられた第１のトランザクションハッシュ（たとえば、＃１７７ｅ）および公開鍵（たとえば、＃ｅ５６ｃ）を含む。
【０１４８】
第１のデベロッパ登録トランザクション２４０の生成後、第１のカタログインスタンス２１４は、他のカタログインスタンス２１６および２１８の未検証の待ち行列２２６および２２６に最初に格納するために第１のトランザクション２４０を伝搬するためのピア・ツー・ピア・エコシステムソフトウェアおよびソフトウェアインターフェイス型ブロックチェーンを含む。なお、他のノード２１６および２１８が、ネットワークレイテンシなどに応じて、必ずしも同時に第１のトランザクション２４０を受取らない可能性もあることに留意されたい。
【０１４９】
図９は、デベロッパ登録トランザクション２４０を処理（たとえば、検証または確認）するために（選択ルールまたはアルゴリズムに従って）選択されたカタログインスタンス（たとえば、第２のカタログインスタンス２１６）による、最初のデベロッパ登録トランザクション２４０の検証およびブロックチェーン２３０〜２３６に対するコミットの処理中における、図８の第３の例示的なシステムを示す第３のブロック図である。
【０１５０】
なお、ブロックチェーン２３０〜２３６のブロックに組込むべきトランザクション２４０の処理および検証をカタログインスタンス２１４〜２１８のいずれが担うこととなるかを判断するのに用いられる選択ルールまたはアルゴリズムは、実現例特有のものであってもよく、所与の実現例のニーズに応じて異なっていてもよいことに留意されたい。たとえば、特定の実施形態においては、第１の利用可能なカタログインスタンス２１４〜２１８が処理のために選択される。他の実施形態においては、単一のカタログインスタンス２１４〜２１８が、ブロックチェーンブロックへの組込みのためにすべてのトランザクションの処理専用にされている。他の実施形態においては、すべてのカタログインスタンス２１４〜２１８がトランザクションを同時に処理するとともに、最初に処理を完了するべきカタログインスタンス２１４〜２１８が、結果として生じる検証済みブロックをブロックチェーン２３０〜２３６に対してコミットする。他の実施形態においては、ブロックの処理を完了するのに必要な処理と労力が、カタログインスタンス２１４〜２１８の各々に関連付けられた信頼性スコアまたはメトリックに従って割付けられてもよい。他の実施形態においては、どのカタログインスタンス２１４〜２１８が１つ以上のトランザクションの所与のセットを処理すべきかをこれらカタログインスタンス２１４〜２１８が判断することを可能にするためのコンセンサスまたは投票メカニズムが用いられる。
【０１５１】
第１のデベロッパ登録トランザクション２４０の（この明細書中においてトランザクション検証または確認と称される）処理中に、選択されたカタログインスタンス２１６は、最初に、第１のトランザクション２４０が組込まれるべきブロックについてのツリーハッシュを演算する。ツリーハッシュ（たとえばマークルツリー）は、（この場合、第１のデベロッパ登録トランザクション２４０だけを含む）すべてのペンディングトランザクションのハッシュを含んでいる。結果として生じるツリーハッシュ（たとえば、＃ＤＤ３４）は、以下においてより十分に記載されるように、第１のデベロッパ登録トランザクション２４０のために作成されたブロックに組込まれている。
【０１５２】
要約すると、ブロックチェーン２３０〜２３６における新しいブロックに対するトランザクションのコミットに備えて、任意の顕著なトランザクションをロールアップするように、カタログインスタンスによって実現されるプラグ接続可能な検証機能に基づいて、１つ以上のノード（カタログインスタンス２１４〜２１８）が割当てられる。
【０１５３】
ノードがいくつ含まれているかについての判断は実現例ごとに異なり得る。ノードがすべて信頼されている単純な実現例においては、単一のノードがトランザクション確認を担っている可能性がある。他の実現例においては、複数のノードが同時に検証を行なって、結果を比較してコンセンサスを得る可能性もある。トランザクション確認プロセスおよびブロック生成は、基礎をなすブロックチェーン実現例の詳細に基づいて異なっていてもよい。この例示的な実施形態においては、ハッシュ値（たとえば、Ｔ１ハッシュ＃ＤＤ３４）を計算するための難易度レベルを選択的に変える必要はない。しかしながら、特定のエコシステム内の全体的な信頼レベルに応じて、および／または、共有されたブロックチェーン２３０〜２３６に対するトランザクション２４０のコミットを含むトランザクション確認を実行するために割当てられた個々のカタログインスタンス２１４〜２１８に関連付けられた信頼レベルに従って、ブロックハッシュ演算難易度レベル（および／または他のプルーフオブワーク（proof-of-work）の難易度レベル）がスケーリングされ得ることに留意されたい。
【０１５４】
図１０は、選択されたカタログインスタンス２１６によるブロックチェーン２３０〜２３６のためのブロック２６０の（検証または確認とも称される）演算中における、図９の第３の例示的なシステム２１０を示す第４のブロック図であって、ブロック２６０は、図９のデベロッパ登録トランザクション２４０を含む未検証の待ち行列２２４〜２２６にペンディングトランザクションを含んでいる（この場合、Ｔ１とも称されるトランザクション２４０を１つだけ含んでいる）。
【０１５５】
第２のカタログインスタンス２１６は、（Ｔ１ツリーハッシュ＃ＤＤ３４の演算後に）ブロック２６０の確認を完了する。ここでは、第１のブロック２６０についての第１のブロックハッシュ（＃６ｃｃｆ）を作成することを含む。ブロック１（Ｂ１）ハッシュとも称される第１のブロックハッシュ（＃６ｃｃｆ）は、前のブロックハッシュ（Ｂ０ハッシュ＃２ａｂ４）を選択的にハッシュすることによって、および／または、（所与の実現例のニーズを満たすために必要であり得るかまたは必要であり得ない）Ｔ１ツリーハッシュ＃ＤＤ３４および他の情報（たとえば、第１のデベロッパ登録トランザクション（Ｔ１）２４０に格納された情報）と組合わせるかもしくは組込むことによって、演算される。結果として得られるＢ１ハッシュは、直前のブロック２１２のハッシュ（Ｂ０ハッシュ）と共に第１のブロック（Ｂ１）２６０に含まれている。
【０１５６】
なお、第１のブロック（Ｂ１）２６０が、第１のトランザクション２４０またはそのハッシュされたバージョンもしくは符号化されたバージョンを含むトランザクションセクション２６２を含むことに留意されたい。例示を目的として、Ｂ１ブロック（Ｂ１ハッシュ）＃６ｃｃｆのためのハッシュと、前のブロック（Ｂ０ハッシュ）＃２ａｂ４のためのハッシュとを含むハッシュセクション２６６が示される。
【０１５７】
トランザクションセクション２６２はＴ１ツリーハッシュ＃ＤＤ３４を用いて符号化されてもよい。この例示的な実施形態においては、Ｂ１ブロックは、Ｔ１ツリーハッシュ＃ＤＤ３４、Ｂ１ハッシュ＃６ｃｃｆｆ、およびＢ０ハッシュ＃２ａｂ４を含む少なくとも３つのハッシュと、第１のトランザクション（Ｔ１）２４０のための公開鍵＃ｅ５６ｃとを含むかまたは組込んでいる。Ｂ１ブロック２６０におけるＴ１トランザクション２４０はまた、図９に示されるように（Ｔ１ツリーハッシュ＃ＤＤ３４を演算するのに用いられる）Ｔ１トランザクションハッシュ＃１７７ｅを組込んでいてもよく、および／または格納していてもよい。
【０１５８】
公開鍵＃ｅ５６ｃはまたハッシュを表わしていてもよい。さらに、特定の実現例において、Ｂ１ハッシュ＃６ｃｃｆが、Ｂ１ブロック２６０を符号化するかもしくはハッシュするために用いられてもよく、および／または、Ｂ１ブロック２６０を表すコンピューティングオブジェクトもしくは記録に単に含まれていてもよいことに留意されたい。
【０１５９】
（Ｔ１トランザクション２４０を符号化するのに用いられ得る）Ｔ１ツリーハッシュ＃ＤＤ３４を含むさまざまなハッシュ２６６の演算後、Ｂ１ブロックが検証されており、第２のカタログインスタンス（Ｃ２）２１６によるエコシステム２１０の他のカタログインスタンス２１４および２１８への伝搬の準備ができている。
【０１６０】
要約すると、第２のカタログインスタンス２１６は、Ｔ１ツリーハッシュ＃ＤＤ３４および関連するトランザクションを記録する新しいブロック２６０を作成する。新しく確認されたブロック２６０は、図１１に示されるように、ブロックチェーン２３０〜２３６の端末ブロックになる。
【０１６１】
図１１は、第２のカタログインスタンス２１６によって処理されたブロック２６０がブロックチェーン２３０〜２３６にコミットされて、エコシステム２１０のカタログインスタンス２１４〜２１８の各々によって維持されるブロックチェーンレプリカに伝搬された後における、図１０の例示的なシステムを示す第５のブロック図である。なお、Ｔ１トランザクション２４０がこのとき検証されて、他のカタログインスタンス２１４〜２１８に伝搬されたブロック２６０にコミットされているので、Ｔ１トランザクション２４０が未検証の待ち行列（すなわち、そのレプリカ）２２４〜２２６から除外されることに留意されたい。
【０１６２】
図１２は、第２のカタログインスタンスが第２のトランザクション（すなわち、第１のネームスペース登録トランザクションＴ２）２７０を開始して、ソフトウェアコンポーネント・エコシステム２１０における他のカタログインスタンス２１４〜２１８のうち未検証の待ち行列２２４〜２２６に対して第２のトランザクションＴ２２７０を伝搬した後における、図１１の例示的なシステム２１０を示す第６のブロック図である。
【０１６３】
第２の例示的なトランザクション（Ｔ２）２７０は例示的なトランザクションペイロードセクション２７２を含む。例示的なトランザクションペイロードセクション２７２は、（たとえば、このトランザクション２７０がネームスペーストランザクションであることを示している）トランザクションタイプ情報と、Ｔ２トランザクション２７０に関連付けられたデベロッパエンティティ名（たとえば、example.com）と、Ｔ２トランザクション２７０に関連付けられたネームスペース登録に結び付けられるデベロッパエンティティ（example.com）に関連付けられたネームスペース情報（たとえば、１つ以上の付加的な名前および／または用語の集合のために用いられ得る名前）とを含む。例示を目的として、Ｔ２トランザクション２７０のためのトランザクションハッシュ（Ｔ２ハッシュ＃４ａｆ５ｅ）を備えたハッシュセクション２７４を含むＴ２トランザクションが示されている。
【０１６４】
図１２のこの使用事例においては、第２のカタログインスタンス２１６は、Ｔ２トランザクション２７０の生成と、他のカタログインスタンス２１４および２１８の未検証の待ち行列２２４〜２２６へのその後の伝搬とを容易にする。
【０１６５】
要約すると、ネームスペーストランザクション（Ｔ２）２７０が、デベロッパエンティティについての新しいネームスペース（たとえば、ＥＣＯＭ）を登録するために（たとえば、デベロッパエンティティexample.comのレジストラによって）サブミットされる。第２のカタログインスタンス２１６は、ＥＣＯＭと称されるネームスペースについてのデベロッパエンティティによるネームスペース登録トランザクションを表わすＴ２トランザクション２７０を作成する。このＴ２トランザクション２７０は、エコシステム２１０にわたってブロードキャストされるので、他のすべてのノード２１４〜２１８がそのコピーを受取るが、依然として、ブロックチェーン２３０〜２３６のいずれのブロックにおいても記されておらず、このため、その状態は図１２においてペンディング中である。なお、受取りタイミングがネットワークレイテンシまたは他の要因に依存する可能性があるので、すべてのノード２１４および２１８がトランザクションを同時に受取るとは限らないことに留意されたい。
【０１６６】
なお、カタログインスタンス２１４〜２１８がいずれも、（これらすべてが、ファイル上に検証済みデベロッパエンティティを有しているように、たとえば、ブロックチェーン２３０〜２３６のＢ１ブロック２６０に格納されているように）トランザクション（たとえば、Ｔ２トランザクション）を収集、処理および伝搬し得る一方で、例示を目的として、この使用事例が第２のカタログインスタンス２１６によるトランザクション生成を含むことに留意されたい。
【０１６７】
なお、いくつかの実現例においては、本来のデベロッパ登録がブロックチェーン２３０〜２３６におけるいくつかのブロックの深さになるまで、デベロッパに対するネームスペースの登録が選択的に制限されている。この場合、この深さは、ブロックチェーン２３０〜２３６に対する読取り／書込みアクセスを行うカタログインスタンス２１４〜２１８および／または他のノードに関連付けられた実現例および信頼のレベルに応じて異なっていてもよい。これにより、デベロッパ登録が明確に限定されていることと、我々がたとえばエコシステムにおいて用いているコンセンサスメカニズムが信頼されていないかまたは十分に信頼されていないカタログインスタンスを採用している場合にオプションの違いによってデベロッパ登録がロールバックされ得ないようにすることと、を確実することが容易になり得る。
【０１６８】
図１３は、第３のカタログインスタンス２１８が第３のトランザクション（すなわち、第２のネームスペース登録トランザクションＴ３）２８０を開始して、これがソフトウェアコンポーネント・エコシステムにおける他のカタログインスタンス２１４，２１６のうち未検証の待ち行列２２４〜２２６に伝搬された後における、図１２の例示的なシステム２１０を示す第７のブロック図である。
【０１６９】
Ｔ３トランザクション２８０はまた、トランザクションペイロードセクション２８２と、Ｔ３トランザクションのためのハッシュ（Ｔ３ハッシュ＃４５ｂｆ）を含むハッシュセクション２８４とを含む。なお、別個のハッシュセクション２８４が図１２のトランザクション２７０および図１３のトランザクション２８０に示されている一方で、トランザクションハッシュ（＃４ａｆ５ｅ、＃４５ｂｆ）がそれぞれのトランザクション２７０および２８０を符号化するのに用いられ得ることに留意されたい。
【０１７０】
要約すると、ブロックチェーン２３０〜２３６に対するＴ３トランザクションのコミットの準備のために第３のカタログインスタンス２１８が未検証の待ち行列２２４〜２２６にＴ３トランザクション２８０をサブミットしていることを除いては、第３のカタログインスタンス２１８によるＴ３トランザクションの生成および伝搬は、Ｔ２トランザクションの生成および伝搬と同様に実行される。
【０１７１】
図１４は、ブロックチェーン２３０〜２３６に含めるべき付加的なブロック（以下の図１５に示されるように、Ｂ２）を検証するために第１のカタログインスタンス２１４が選択された後における、図１３の例示的なシステム２１０を示す第８のブロック図であって、付加的なブロックは図１２の第２のトランザクション（Ｔ２）２７０および図１３の第３のトランザクション（Ｔ３）２８０を組込むためのものである。なお、所与のブロックについて確認を実行するために特定のカタログインスタンス（たとえば、第１のカタログインスタンス２１４）を選択することは、予め定められた選択メカニズム（たとえば、ルールおよび／またはアルゴリズム）に従って行なわれてもよいことに留意されたい。正確なルールまたはアルゴリズムは実現例特有のものであって、所与の実現例のニーズに応じて異なり得る。
【０１７２】
第１のカタログインスタンス２１４は、さまざまなトランザクションハッシュ２７４および２８４（たとえば、それぞれ＃４ａｆ５ｅおよび＃４５ｂｆ）を用いてツリーハッシュを計算することによって、ペンディング中のトランザクション２４０および２８０の組込みの準備のために、演算を開始する。ハッシュがどのように計算されるかについての正確な詳細は実現例特有のものであって、異なっていてもよい。この教示を利用できる当業者であれば、過度の実験なしに所与の実現例のニーズを満たすために、特定のハッシュアルゴリズムを容易に選択および実現し得る。
【０１７３】
図１５は、ソフトウェアコンポーネント・エコシステム２１０のブロックチェーン２３０〜２３６に追加されるべき付加的なブロックの演算中における、第１のカタログインスタンスを示す図１４の例示的なシステムを示す第９のブロック図である。Ｂ２ブロック２９０はトランザクションセクション２９２を含む。トランザクションセクション２９２は、組合わされたツリーハッシュ（Ｔ２トランザクションハッシュとＴ３トランザクションハッシュとを組合わせたものであって、Ｔ２−Ｔ３ツリーハッシュ＃Ａ３２４と表される）およびＴ２およびＴ３トランザクション２９４を含むかまたは組込んでいる。ハッシュセクション２９６は前のブロックハッシュ（Ｂ１ハッシュ＃６ｃｃｆ）および現在のブロックハッシュ（Ｂ２ハッシュ＃ｄ２１ｄ）を含む。
【０１７４】
したがって、第１のカタログインスタンス２１４は、Ｔ２（図１４の７０）およびＴ３（図１４の８０）のツリーハッシュを組込んだ新しいブロック２９０を作成する（すなわち、ブロック検証を実行する）。Ｂ１ハッシュ＃６ｃｃｆは、前のハッシュ（すなわち、ブロック２６０のハッシュ）を表わしている。Ｂ２ハッシュは、組合わされたツリーハッシュ＃Ａ３２４、Ｂ１ハッシュ＃６ｃｃｆ、および、任意には追加情報（たとえば、制御情報および／またはトランザクションセクション２９２からの情報）に基づいて計算される。ブロック２９０が構築されて、さまざまな付随ハッシュについての計算が完了すると、Ｂ２ブロックは、図１６に示されるように、新しいブロックＢ２として組込まれるようにブロックチェーン２３０〜２３６に伝搬される。
【０１７５】
図１６は、第１のカタログインスタンス２１４が付加的なブロックの処理を完了して、ソフトウェアコンポーネント・エコシステム２１０のブロックチェーン２３０〜２３６に付加的なブロック２９０を伝搬した後における、図１５の例示的なシステム２１０を示す第１０のブロック図である。関連するＴ２（図１４の７０）およびＴ３（図１４の８０）トランザクション２９４は、Ｂ２ブロック２９０にコミットされた後に、未検証の待ち行列２２４〜２２６から除外される。
【０１７６】
なお、ソフトウェアコンポーネント登録、コンポーネント使用登録、および、他のトランザクションタイプを含むさまざまなタイプのさらに別のトランザクションが３つのトランザクションＴ１、Ｔ２、Ｔ３について上述されたのと同様の態様で進められ得ることに留意されたい。ゼロまたはより多くのトランザクションが、（未検証の待ち行列２２４〜２２６とも称される）ペンディング中のトランザクション待ち行列から選択的に処理されて確認済みブロックにされてもよく、これが、次いで、チェーン２３０〜２３６に追加される。
【０１７７】
ブロックチェーン２３０〜２３６に対して読取り／書込みアクセスを行う新しいカタログインスタンスまたは他のノードが作成されて、エコシステム２１０に追加される場合、新しいノードがブロックチェーン２３０〜２３６を処理して、ブロックチェーン２３０〜２３６における登録に基づいてシステム２１０についての正確なビューを再構築することができる。いくつかの実現例においては、システム２１０は、ブロックチェーン２３０〜２３６から情報を選択的に抽出し、便宜的に異なる形式で格納するかまたは性能を向上させ得る。ブロックチェーン２３０〜２３６は、ブロックチェーン２３０〜２３６内の情報から再構築することができる、エコシステム２１０の重要な状態を記述する真実および情報のソースを表わしてもよい。
【０１７８】
従来より、コンピューティング・エコシステムは、概して、１．集中制御（たとえば、アップル（Apple）のアプリストア）、または、２．いわゆるワイルドウェスト（Wild West）（たとえば、独立したデベロッパ製品についてウェブをブラウズするユーザのウィンドウズ（登録商標）（Ｗｉｎｄｏｗｓ（登録商標））モバイルメソッド）に限定されている。
【０１７９】
なお、１つ以上のブロックチェーン特徴を用いることは、他のタイプのデータ記録またはデータベースとは対照的に、既に信頼されているコンピューティング環境（すなわち、ネットワークノードおよびリソースのうちのいくつかまたはすべてが既に制御されていて信頼されているエコシステム）においては、（以下に記載されるいくつかの実施形態の範囲内の特定の実現例の場合）実質的に不必要であり得ることに留意されたい。このようなエコシステムは、トランザクションについてのコンセンサスベースの評価を必要としない可能性もあり得るので、競合、チェイニングおよびハッシングは、ブロックチェーン以外の別のタイプの分散型データベースによって実現され得る、タイムスタンプが押された登録の分散型ストレージほど重要ではあり得ない。
【０１８０】
したがって、（提案されたエコシステムの局面を含む）さまざまな実施形態は必ずしもすべてがブロックチェーン分散型台帳の使用を必要とするわけではない。ブロックチェーン実現例は、特に、信頼されていない環境を含む実現例における特定の実施形態を表わし得る。
【０１８１】
言いかえれば、「プルーフオブワーク」と称されるメカニズムを用いる「ブロックチェーン」は、いくつかの信頼されている環境において要求される必要がない。なお、図７〜図１６に関連付けて上述された特定の実施形態においては、「ブロックを演算する作業」は、ハッシュの演算によって実現できることに留意されたい。
【０１８２】
図１７は、図１〜図１６の実施形態によって実現可能な第２の例示的な方法３００のフロー図である。例示的な方法３００は、ソフトウェアコンポーネント・エコシステム（たとえば、図１〜図３の実施形態に従って構築されるエコシステム）を実現することを容易にする。
【０１８３】
第２の例示的な方法３００は第１のステップ３０２を含む。第１のステップ３０２は、ユーザ入力デバイスから１つ以上の信号を受取って、デベロッパエンティティの識別名を規定するステップを含む。たとえば、図４を参照すると、これは、デベロッパエンティティトランザクション８４（すなわち、デベロッパエンティティ名８６）に関するレジストラ８２からの入力を受取るレジストラシステム４２を含み得る。
【０１８４】
第２のステップ３０４は、ユーザ入力デバイスから１つ以上の信号を受取って、（デベロッパエンティティが識別名を登録することが認可されていることを確認するために使用可能である）安全な検証メカニズムを規定するステップを含む。たとえば、図４を参照すると、セキュリティメカニズムは、デベロッパエンティティ検証のための公開鍵８８およびデジタル署名９０を処理するための公開鍵インフラストラクチャを実現し得る、たとえば、アイデンティティドメイン（たとえば、図２のアイデンティティドメイン４４）および／またはカタログインスタンス３２のセキュリティおよび許可モジュール（たとえば、図３のモジュール６２）によって使用されるべき、公開鍵８８およびデジタル署名９０を含み得る。
【０１８５】
第３のステップは、カタログ（たとえば、図４の第１のカタログインスタンス３２）によって実現される分散型データベースにエントリを記録するステップを含む。最初の記録するステップは、ブロックチェーン２０を同様に含む分散型台帳（たとえば、図３の分散型台帳１４）を実現する分散型データベースの分散型未検証待ち行列３８における対応するエントリを記録する前にデベロッパエンティティトランザクションデータを検証するステップを含み得る。記録されたエントリがブロックチェーン２０にコミットされると、この記録されたエントリは、図３の分散型台帳１４および付随のブロックチェーン２０に登録されることが明らかである。最初に記録されたエントリは検証メカニズムに関連付したデベロッパ名を含む。
【０１８６】
第４のステップ３０８は、カタログ（すなわち、カタログソフトウェアの実行インスタンスによって実現される分散型データベースまたは台帳）のエントリに関連付けてトランザクションを実行して、ソフトウェアコンポーネントを転送するステップを含む。このトランザクションも、登録済みのデベロッパエンティティおよび１つ以上の関連するネームスペースと関連付けてコントリビュータとして台帳に登録した登録済みコントリビュータ（たとえば、個々のデベロッパ）によるソフトウェアコンポーネントダウンロード登録トランザクションとして、分散型台帳（たとえば、分散型台帳１４および付随の分散型ブロックチェーン２０）に登録されてもよい。
【０１８７】
第５のステップ３１０は、カタログインスタンスの分散型台帳（たとえば、図３の分散型台帳１４）のブロックチェーン（たとえば、図３のブロックチェーン２０）における（デベロッパエンティティ登録トランザクションに対応する）カタログエントリ（すなわちエントリ）を用いて、ソフトウェアコンポーネントダウンロードトランザクションを記述する別のトランザクションの（図３の分散型台帳１４のブロックチェーン２０に対する）登録およびコミットを検証（すなわち、完了）するステップを含む。
【０１８８】
なお、説明の便宜上、カタログは、分散型台帳（たとえば、ブロックチェーン）を実現するためのコードのセットであってもよい。カタログは、利用可能なソフトウェアコンポーネントのローカルデータベースを含んでいてもよくまたは含んでいなくてもよい。なぜなら、このようなデータベースは、本教示の範囲から逸脱することなく、カタログとは別個に実現することができるからである。しかしながら、この明細書中に記載されるさまざまな実施形態においては、所与のカタログインスタンスは、利用可能なコンポーネントのローカルデータベースと対話するとともに当該ローカルデータベースを維持するためのコンピュータコード（たとえば、図３のローカルコンポーネントカタログストア３６）も含む。「カタログ」および「カタログインスタンス」という語はこの明細書中では同義で用いられてもよい。
【０１８９】
なお、方法３００は、本教示の範囲から逸脱することなく変更され得ることに留意されたい。たとえば、付加的なステップが追加されてもよい。いくつかのステップが置換えられてもよい。ステップは削除または交換されてもよい。さらに、追加の修正またはさらなる詳細が、方法３００のさまざまなステップ３２０〜３１０に追加されてもよく、および／または当該さまざまなステップ３２０〜３１０から削除されてもよい。
【０１９０】
たとえば、第２の例示的な方法３００はさらに、安全な検証メカニズムが公開鍵およびデジタル署名を含むことを規定している。方法３００は、ソフトウェアコンポーネント・エコシステムにおける複数のノード（たとえば、カタログインスタンス）に対してカタログエントリを伝搬するステップをさらに規定し得る。
【０１９１】
第２の例示的な方法３００は、複数のノードの各々が、分散型ブロックチェーン台帳のレプリカまたは近似レプリカを維持する他の複数のノードと協調して分散型ブロックチェーン台帳を実現するためのコードを含むカタログインスタンスを表わすことをさらに規定し得る。
【０１９２】
第２の例示的な方法３００はさらに、エントリにネームスペースを割付けるための（たとえば、ネームスペース登録トランザクションを関連する分散型ブロックチェーン２０に登録するための）プロセスをさらに規定し得る。
【０１９３】
第２の例示的な方法３００はさらに、以下のステップを規定してもよく、および／または以下のステップと置換えられてもよい。以下のステップは、複数の相互通信カタログインスタンスを含む分散型ピア・ツー・ピア・コンポーネント・エコシステムのコンポーネントカタログのインスタンスを用いることで、デベロッパエンティティ名に関するデベロッパ登録エンティティ情報を受取るステップと、デベロッパエンティティ情報を検証して、デベロッパエンティティ登録の記録またはブロックとして、複数の相互通信カタログインスタンスの各々にアクセス可能であるブロックチェーンとして実現される分散型データベースにコミットすることにより、ピア・ツー・ピア・コンポーネント・エコシステムのフルノードすべてに対してデベロッパエンティティ登録情報を伝搬するステップを実行する。
【０１９４】
第２の例示的な方法３００はさらに、デベロッパエンティティ名と、登録が実行されているカタログインスタンスに関連付けられた公開鍵と、デベロッパエンティティ名に関連付けられるとともに複数の相互通信カタログインスタンスのカタログインスタンスでデベロッパエンティティアイデンティティを確認するのに使用可能な（デベロッパエンティティ機密（すなわち秘密鍵）を用いる）デジタル署名とをデベロッパエンティティによって供給するステップの後に、デベロッパ登録エンティティ情報を受取るステップが行われることを規定し得る。
【０１９５】
ピア・ツー・ピア・コンポーネント・エコシステムのフルノードは、複数の相互通信カタログインスタンスを含み得る。第２の例示的な方法３００はさらに、デベロッパエンティティ登録情報を伝搬した後、ネームスペース登録プロセス中に供給された１つ以上のネームスペースをデベロッパ登録情報に関連付けるステップによってネームスペース登録プロセスの開始および実現に応答して、デベロッパエンティティに対して１つ以上のネームスペースを割付けるステップ規定し得る。
【０１９６】
第２の例示的な方法３００はさらに、いくつかの記録またはブロックがブロックチェーンの一連の記録にコミットされる後まで、デベロッパエンティティについてのネームスペース登録プロセスの実現を選択的に遅延させるステップを含み得る。
【０１９７】
図１８は、図１〜図１７の実施形態を実現するのに使用可能なシステム９００および付随のコンピューティング環境を示す概略ブロック図である。例示的なシステム９００は、本発明の実施形態に従った分散型ソフトウェアコンポーネント・エコシステムを実現することができる。実施形態は、（たとえば、ユーザデバイスに常駐している）スタンドアロンのアプリケーションとして、または、クライアント側およびサーバ側のコードの組合せを用いて実現されるウェブベースのアプリケーションとして、実現され得る。
【０１９８】
汎用システム９００は、デスクトップコンピュータ９６０、ノートブックコンピュータ９７０、スマートフォン９８０、携帯電話９８５およびタブレット９９０を含むユーザデバイス９６０〜９９０を含む。汎用のシステム９００は、ウェブページまたは他のタイプの電子文書およびＵＩならびに／または実行アプリケーションを表示およびナビゲートすることができるシンクライアントコンピュータ、インターネット接続可能な携帯電話、モバイルインターネットアクセスデバイス、タブレット、電子ブック、または携帯情報端末などの如何なるタイプのユーザデバイスともインターフェイスを取ることができる。システム９００は５つのユーザデバイスとともに示されてるが、ユーザデバイスはいくつでもサポートされ得る。
【０１９９】
ウェブサーバ９１０は、ウェブページ、電子文書、企業データまたは他のコンテンツ、およびユーザコンピュータからの他のデータについての、ウェブブラウザおよびスタンドアロンのアプリケーションからの要求を処理するために用いられる。ウェブサーバ９１０はまた、企業活動に関するデータの、ＲＳＳフィードなどのプッシュデータまたは合成コンテンツを提供してもよい。
【０２００】
アプリケーションサーバ９２０は１つ以上のアプリケーションを操作する。アプリケーションは、任意のプログラミング言語、たとえば、Java（登録商標）、Ｃ、Ｃ＋＋、Ｃ＃など、または任意のスクリプト言語、たとえば、JavaScript（登録商標）もしくはＥＣＭＡＳｃｒｉｐｔ（European Computer Manufacturers Association Script（欧州コンピュータ製造者協会スクリプト））、Perl、PHP（Hypertext Preprocessor:ハイパーテキストプリプロセッサ）、Python、RubyまたはTCL（Tool Command Language：ツールコマンド言語）などで書込まれた１つ以上のスクリプトまたはプログラムとして実現することができる。アプリケーションは、Rails、Enterprise JavaBeans、または、.NET.などのライブラリまたはアプリケーションフレームワークを用いて構築することができる。ウェブコンテンツは、ＨＴＭＬ（HyperText Markup Language：ハイパーテキスト・マークアップ言語）、ＣＳＳ（Cascading Style Sheets：カスケーディング・スタイル・シート）、ならびに、テンプレート言語およびパーサーを含む他のウェブ技術を用いて作成され得る。
【０２０１】
アプリケーションサーバ９２０上で実行されるデータアプリケーションは、入力データおよびユーザコンピュータ要求を処理するように適合されており、データストレージデバイスまたはデータベース９３０からのデータを格納するかまたは検索することができる。データベース９３０は、データアプリケーションによって作成されて用いられるデータを格納している。一実施形態においては、データベース９３０は、ＳＱＬフォーマットコマンドまたは他のデータベースクエリ言語に応答して、データを格納、更新および検索するように適合されたリレーショナルデータベースを含む。他の実施形態は、非構造的な体系的なデータストレージアーキテクチャおよびＮｏＳＱＬ（Not Only SQL）データベースを用いてもよい。
【０２０２】
一実施形態においては、アプリケーションサーバ９２０は、プログラムまたはスクリプトを実行することができる１つ以上の汎用コンピュータを含む。一実施形態においては、ウェブサーバ９１０は、１つ以上の汎用コンピュータ上で実行されるアプリケーションとして実現される。ウェブサーバ９１０およびアプリケーションサーバ９２０は同じコンピュータ上で組合わされて実行されてもよい。
【０２０３】
電子通信ネットワーク９４０〜９５０は、ユーザコンピュータ９６０〜９９０と、ウェブサーバ９１０と、アプリケーションサーバ９２０と、データベース９３０との間の通信を可能にする。一実施形態においては、ネットワーク９４０〜９５０はさらに、有線ネットワーク９４０および無線ネットワーク９５０を含む電気通信デバイスまたは光通信デバイスのいずれかの形態を含み得る。ネットワーク９４０〜９５０はまた、イーサネット（登録商標）ネットワークなどの１つ以上のローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、セルラーキャリアデータネットワーク；および、仮想プライベートネットワークなどの仮想ネットワークを組込んでいてもよい。
【０２０４】
当該システムは、本発明の一実施形態に従ってアプリケーションを実行するための一例である。別の実施形態においては、アプリケーションサーバ９１０、ウェブサーバ９２０および任意にはデータベース９３０は、単一のサーバコンピュータアプリケーションおよびシステムと組合わせることができる。さらに別の実施形態においては、アプリケーションサーバ９１０、ウェブサーバ９２０およびデータベース９３０の１つ以上を実現するために、仮想化および仮想マシンアプリケーションが用いられてもよい。
【０２０５】
さらに別の実施形態においては、ウェブおよびアプリケーションサービング機能のすべてまたは一部は、ユーザコンピュータの各々の上で実行されるアプリケーションに一体化されていてもよい。たとえば、ユーザコンピュータ上のJavaScriptアプリケーションは、アプリケーションのデータ部分および表示部分を検索するかまたは分析するために用いられてもよい。
【０２０６】
図２および図１８に関連付けて、一例として、ウェブサーバ９１０、アプリケーションサーバ９２０およびデータストレージデバイス／データベース９３０は、ブラウザを介して個々のコンピュータシステムにさらにアクセス可能であるカタログインスタンス３２に対応するサーバ側アプリケーションをホストすることによって、図２の分散型台帳１４を実現するために用いられてもよい。代替的には、または付加的には、個々のコンピューティングデバイス９５０、９８５、９７０、９８０、９９０は、有線ネットワーク９４０および／または無線ネットワーク９５０を用いてピア・ツー・ピア・コンポーネント・エコシステムにネットワーク化されるカタログインスタンスソフトウェアを実行してもよい。
【０２０７】
図１９は、図１〜図１８の実施形態を実現するために使用可能なコンピューティングデバイスを示す概略ブロック図である。図１９のシステム５００は、この明細書中における特定の実現例に記載されているステップを実行することを容易にするものとして記載されている一方で、記載されたステップを実行するために、システム５００の任意の好適なコンポーネントもしくはコンポーネントの組合せ、または、システム５００に関連付けられた任意の好適な一つのプロセッサまたは複数のプロセッサが用いられてもよい。
【０２０８】
図１９は、この明細書中に記載される実現例のために用いられ得る例示的なコンピューティングシステム５００のブロック図を示す。たとえば、コンピューティングシステム５００は、図１８のサーバデバイス９１０および９２０を実現するとともに、この明細書中に記載される方法の実現例を実行するために用いられてもよい。いくつかの実現例においては、コンピューティングシステム５００は、プロセッサ５０２、オペレーティングシステム５０４、メモリ５０６、および入出力（input/output：Ｉ／Ｏ）インターフェイス５０８を含んでいてもよい。さまざまな実現例においては、プロセッサ５０２は、この明細書中に記載されるさまざまな機能および特徴を実現するとともに、この明細書中に記載される方法の実現例を実行するために用いられてもよい。プロセッサ５０２がこの明細書中に記載される実現例を実行するものとして記載されているが、システム５００の任意の好適なコンポーネントもしくはコンポーネントの組合せ、または、システム５００に関連付けられた任意の好適な１つのプロセッサまたは複数のプロセッサ、または、任意の好適なシステムが、記載されるステップを実行してもよい。この明細書中に記載される実現例は、ユーザデバイス上で、サーバ上で、またはこれら両方の組合せに対して実行されてもよい。
【０２０９】
コンピューティングデバイス５００はまた、メモリ５０６上に格納され得るか、または、他の好適な任意の記憶位置もしくはコンピュータ読取可能媒体上に格納され得るソフトウェアアプリケーション５１０を含む。ソフトウェアアプリケーション５１０は、プロセッサ５０２がこの明細書中に記載される機能および他の機能を実行することを可能にする命令を提供する。コンピューティングシステム５００のコンポーネントは、１つ以上のプロセッサによって、または、ハードウェアデバイスの任意の組合せによって、さらには、ハードウェア、ソフトウェア、ファームウェアなどの任意の組合せによって、実現されてもよい。
【０２１０】
例示を容易にするために、図１９は、プロセッサ５０２、オペレーティングシステム５０４、メモリ５０６、Ｉ／Ｏインターフェイス５０８およびソフトウェアアプリケーション５１０の各々ごとに１つのブロックを示す。これらのブロック５０２、５０４、５０６、５０８および５１０は、複数のプロセッサ、オペレーティングシステム、メモリ、Ｉ／Ｏインターフェイス、およびソフトウェアアプリケーションを表わし得る。さまざまな実現例においては、コンピューティングシステム５００は図示されるコンポーネントをすべて有していなくてもよく、および／または、この明細書中に示される以外の他のタイプのコンポーネント、もしくはこの明細書中に記載されるものに加えて他のタイプのコンポーネントを含む他の要素を有していてもよい。
【０２１１】
一例として、図３および図１９を参照すると、図１９のコンピューティングデバイス５００は図３の個々のデベロッパシステム６２を実現するために用いられてもよい。
【０２１２】
特定の実施形態に関して説明がなされてきたが、これらの特定の実施形態は単に例示的なものに過ぎず、限定的なものではない。
【０２１３】
特定の実施形態に関して説明がなされてきたが、これらの特定の実施形態は単に例示的なものに過ぎず、限定的なものではない。
【０２１４】
如何なる好適なプログラミング言語を用いても、Ｃ、Ｃ＋＋、Ｊａｖａ、アセンブリ言語などを含む特定の実施形態のルーチンを実現することができる。手続き指向型またはオブジェクト指向型などのさまざまなプログラミング技術を用いることができる。ルーチンは単一の処理装置または複数のプロセッサ上で実行することができる。ステップ、動作または演算は特定の順序で表わされ得るが、この順序はさまざまな特定の実施形態において変更されてもよい。いくつかの特定の実施形態においては、この明細書中で連続的なものとして示されている複数のステップは同時に実行することができる。
【０２１５】
特定の実施形態は、命令実行システム、装置、システムもしくはデバイスによって、またはそれらに関連付けて用いられるようにコンピュータ読取可能記憶媒体において実現されてもよい。特定の実施形態は、ソフトウェアもしくはハードウェアまたはそれらの組合せで制御論理の形態で実現することができる。制御論理は、１つ以上のプロセッサによって実行されると、特定の実施形態において記載されているものを実行するように動作可能であり得る。
【０２１６】
特定の実施形態は、特定用途向け集積回路、プログラマブルロジックデバイス、フィールドプログラマブルゲートアレイ、光学的、化学的、生物学的、量子的またはナノ設計型のシステム、コンポーネントおよびメカニズムを用いることによる、プログラムド汎用デジタルコンピュータを用いることによって実現されてもよい。一般に、特定の実施形態の機能は当該技術において公知である如何なる手段によっても達成することができる。分散型のネットワーク化システム、コンポーネントおよび／または回路を用いることができる。データの通信または転送は有線、無線または他のいずれかの手段によってなされてもよい。
【０２１７】
添付の図面／図に示される要素のうちの１つ以上が、特定用途に応じて有用となるように、さらに分離された態様もしくは一体化された態様で、または場合によっては削除されるかもしくは動作不能にされた態様で実現可能であることも認識されるだろう。コンピュータが上述の方法のうちのいずれかを実行することを可能にするために機械読取り可能媒体に記憶することができるプログラムまたはコードを実現することも精神および範囲内にある。
【０２１８】
この明細書中で、かつ添付の特許請求の範囲全体にわたって用いられる「ａ」、「ａｎ」および「ｔｈｅ」という語は、文脈に別段明確な指示がない限り、複数の指示対象を含んでいる。また、この明細書中で、かつ添付の特許請求の範囲全体にわたって用いられる「ｉｎ」の意味は、文脈に別段明確な指示がない限り、「において（ｉｎ）」および「の上に（ｏｎ）」の意味を含んでいる。
【０２１９】
このように、特定の実施形態をこの明細書中に記載してきたが、上述の開示において変更、さまざまな変形および置換えの許容範囲が意図されており、場合によっては、特定の実施形態のいくつかの特徴が、上述の範囲および精神から逸脱することなく他の特徴を対応させて使用することなく採用され得ることが認識されるだろう。したがって、特定の状況または材料を本質的な範囲および精神に適合させるために多くの変更がなされてもよい。
【図１】
2020526820.tif 000003
【図２】
2020526820.tif 000004
【図３】
2020526820.tif 000005
【図４】
2020526820.tif 000006
【図５】
2020526820.tif 000007
【図６】
2020526820.tif 000008
【図７】
2020526820.tif 000009
【図８】
2020526820.tif 000010
【図９】
2020526820.tif 000011
【図１０】
2020526820.tif 000012
【図１１】
2020526820.tif 000013
【図１２】
2020526820.tif 000014
【図１３】
2020526820.tif 000015
【図１４】
2020526820.tif 000016
【図１５】
2020526820.tif 000017
【図１６】
2020526820.tif 000018
【図１７】
2020526820.tif 000019
【図１８】
2020526820.tif 000020
【図１９】
2020526820.tif 000021
【国際調査報告】
2020526820.tif 000022
2020526820.tif 000023
2020526820.tif 000024