JP7110248B2 - 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法 - Google Patents

分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法 Download PDF

Info

Publication number
JP7110248B2
JP7110248B2 JP2019571965A JP2019571965A JP7110248B2 JP 7110248 B2 JP7110248 B2 JP 7110248B2 JP 2019571965 A JP2019571965 A JP 2019571965A JP 2019571965 A JP2019571965 A JP 2019571965A JP 7110248 B2 JP7110248 B2 JP 7110248B2
Authority
JP
Japan
Prior art keywords
catalog
developer
transaction
developer entity
ecosystem
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019571965A
Other languages
English (en)
Other versions
JP2020526820A5 (ja
JP2020526820A (ja
Inventor
ダンカン,ミルズ
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2020526820A publication Critical patent/JP2020526820A/ja
Publication of JP2020526820A5 publication Critical patent/JP2020526820A5/ja
Priority to JP2022115505A priority Critical patent/JP7361165B2/ja
Application granted granted Critical
Publication of JP7110248B2 publication Critical patent/JP7110248B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/20Network management software packages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Description

関連出願の相互参照
本願は、2017年6月30日付けで提出された、「分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法(SYSTEM AND METHOD FOR MANAGING A PUBLIC SOFTWARE COMPONENT ECOSYSTEM USING A DISTRIBUTED LEDGER)」と題された米国仮特許出願連続番号第62/527,479号(弁理士事件番号:ORACP0200P1/ORA180001-US-PSP-1)と、2017年9月1日付けで提出された、「ブロックチェーン特徴を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステム(SYSTEM FOR MANAGING A PUBLIC SOFTWARE COMPONENT ECOSYSTEM USING BLOCKCHAIN FEATURES)」と題された米国仮特許出願連続番号第62/553,406号(弁理士事件番号:ORACP0200P2/ORA180001-US-PSP-2)と、2017年12月1日付けで提出された、「分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法(SYSTEM AND METHOD FOR MANAGING A PUBLIC SOFTWARE COMPONENT ECOSYSTEM USING A DISTRIBUTED LEDGER)」と題された米国特許出願連続番号第15/829,684号(弁理士事件番号:ORACP0200/ORA180001-USNP)との利益を主張するものであって、あらゆる目的で本願中に十分に記載されるように、引用によってここに援用されている。
背景
本願は、コンピューティングに関し、より特定的には、エコシステムのパーティシパント間でソフトウェアコンポーネントなどのコンピューティングリソースを共有するのに適したコンピューティング・エコシステムに関する。
ソフトウェアコンポーネント・エコシステムを実現および制御するためのシステムおよび方法は、アプリストアおよびオープンソースソフトウェア開発プラットフォームを含む、要求の厳しいさまざまなアプリケーションにおいて採用されている。このようなアプリケーションは、エコシステムにおいて発生するトランザクションを選択的に処理してその明細を明らかにするとともに、トランザクション情報を活用してエコシステムの効率的な動作を確実にするための効率的なメカニズムを必要とすることが多い。
従来、コンテンツ(たとえば、ソフトウェアプログラムおよびコンポーネント、データ、オブジェクトなど)をやり取りするためのコンピューティング・エコシステムは、アプリストアの所有者などによって中心的に制御されているか、または、相対的に制御されていない。しかしながら、中心的に制御されたエコシステムは、相応にロバストな中央管理インフラストラクチャを実現したり、このようなシステム上のスケーラビリティおよびディザスタリカバリを管理したりするコストや、それらの管理に関する要員配置の全体的コストなどのさまざまな不利益を被る可能性がある。したがって、コンピューティング・エコシステムの効率的な実現および制御を容易にするためのシステムおよび方法が依然として必要とされている。
要約
例示的な実施形態は、部分的に分散型ブロックチェーン台帳を用いて、分散型エコシステムにおいて行われるトランザクション、たとえば(以下においてより十分に説明される)さまざまなタイプの登録トランザクションを維持、保証、検証、更新、監視、または他の場合には制御もしくは実施することによって、分散制御を用いてソフトウェアコンポーネント・エコシステムを実現することを容易にするシステムおよび方法を開示する。分散型エコシステムの(この明細書中においてカタログインスタンスと称されるかまたは表現される)エコシステムノードは、1つ以上のトランザクションを含む新しいブロックの追加を含む、共有されたブロックチェーン台帳(この明細書中においては単にブロックチェーンとも称される)を管理するためのソフトウェアを実行する。
ソフトウェアコンポーネント・エコシステムの実現を容易にするための例示的な方法は、ユーザ入力デバイスから1つ以上の信号を受取って、デベロッパエンティティの識別名を規定するステップと、ユーザ入力デバイスから1つ以上の信号を受取って、デベロッパエンティティが識別名を登録することが認可されていることを検証するのに使用可能な安全な検証メカニズムを規定するステップと、カタログ(たとえば、ノードおよび付随する分散型台帳を実現するカタログ)に、検証メカニズムに関連したデベロッパ名を含むエントリを記録するステップと、カタログエントリに関連したコンポーネントアップロード、コンポーネントダウンロード、または他のコンポーネント転送を実行して、ソフトウェアコンポーネントを転送するステップと、カタログエントリ(たとえば、デベロッパエンティティ登録トランザクションエントリ)を用いて、コンポーネントアップロード、コンポーネントダウンロードまたは他のソフトウェアコンポーネント転送に関するトランザクションを検証する(たとえば、分散型台帳にトランザクションをコミットする)ステップとを含む。これにより、トランザクションを含むデータが分散型台帳にコミットされる。
より具体的な実施形態においては、例示的な方法はさらに、安全な検証メカニズムがデベロッパエンティティに関連付けられた公開鍵およびデジタル署名を含むことを規定する。記録されたカタログエントリが初めに未検証の待ち行列に入れられてから、カタログエントリの複製がソフトウェアコンポーネント・エコシステムにおける複数のノードに伝搬される。複数のノードの各々は、分散型ブロックチェーン台帳のレプリカまたは近似レプリカを維持する他の複数のノードと協調して分散型ブロックチェーン台帳を実現するためのコードを含むカタログインスタンスを表している。
したがって、この明細書中に記載される特定の実施形態は、分散型台帳(たとえば、分散型ブロックチェーン)におけるトランザクションデータの登録を容易にするための効率的なメカニズムを提供する。トランザクションに関する情報を用いて、パーティシパントおよび関連するコンポーネントの信頼を確実にすること、コンポーネントのアイデンティティ、保全性、由来または起源、サポート状態などを管理および検証すること、ソフトウェアコンポーネントへの適切なライセンス付与を確実にすること、利用可能なソフトウェアサポートサービスに関する情報を提供すること、コンポーネントのコンシューマおよび/またはコントリビュータなどのユーザを承認すること、矛盾する名前または混乱させる名前を持ったコンポーネントが提供されたときに起こる可能性のある問題を防止または軽減すること、ソフトウェアコンポーネントの更新および/またはリコールを容易にすることなどを可能にするが、これらすべての場合、別個に管理されたコアコントローラを用いる必要はない。
明細書の残りの部分および添付の図面を参照することによって、この明細書中に開示されている特定の実施形態の性質および利点がさらに理解され得る。
ソフトウェアコンポーネントを選択的に共有するとともに、分散型ブロックチェーン台帳を用いてトランザクションを登録するための、一般化されたピア・ツー・ピア・コンピューティング・エコシステムの第1の例を示す図である。 図1のピア・ツー・ピア・コンピューティング・エコシステムの第1の例の実現例を示すより詳細な図である。 図1および図2のピア・ツー・ピア・コンピューティング・エコシステムのピアまたはノードとして機能する個々のデベロッパコンピューティングシステムの詳細な例を示す図であって、例示的なユーザインターフェイス(User Interface:UI)制御およびオプションと、ユーザデベロッパコンピューティングシステムがピア・ツー・ピア・エコシステムのノードとして機能するようにユーザデベロッパコンピューティングシステムをピア・ツー・ピア・エコシステムに連結するのに用いられるとともにカタログインスタンスに含まれ得る例示的なモジュールとを含む。 図1~図3の実施形態を用いて分散型ブロックチェーン台帳にデベロッパエンティティを登録するための第2の例示的なエコシステムおよび付随するカタログインスタンスプロセスを示す図であって、第2の例示的なシステムは図1~図3の実施形態に従って実現され得る。 図4の第2の例示的なエコシステムによって実現可能な第1の例示的な方法を示すフロー図である。 ソフトウェアコンポーネントのカタログをブラウズするための、かつ、付随するコンピューティングシステムがアクセスできるカタログインスタンスによって維持されるカタログからソフトウェアコンポーネントをサーチ、ダウンロード、編集および削除するためのさまざまなUI制御およびオプションを提供するとともに、図3のユーザデベロッパコンピューティングシステムなどのコンピューティングシステム上に表示され得る例示的なUIディスプレイスクリーンを示す図である。 ピア・ツー・ピア・ソフトウェアコンポーネント・エコシステムの、カタログインスタンスと称されるノードによって維持されるブロックチェーンの初期状態を示す、第3の例示的なエコシステムおよび付随するコンピューティング環境を例示する第1のブロック図である。 第1の例示的なトランザクション(すなわち、デベロッパ登録トランザクション)が発端元カタログインスタンス(たとえば、第1のカタログインスタンス)によってカタログインスタンスのうち未検証の待ち行列に伝搬された後における、図7の第3の例示的なシステムを示す第2のブロック図である。 デベロッパ登録トランザクションを処理(たとえば、検証または確認)するために(選択ルールまたはアルゴリズムに従って)選択されたカタログインスタンス(たとえば、第2のカタログインスタンス)による、最初のデベロッパ登録トランザクションの検証およびブロックチェーンに対するコミットの処理中における、図8の第3の例示的なシステムを示す第3のブロック図である。 選択されたカタログインスタンスによるブロックチェーンのブロックの演算中における、図9の第3の例示的なシステムを示す第4のブロック図であって、ブロックは、未検証の待ち行列に、図9のデベロッパ登録トランザクションを含むペンディングトランザクションを含む。 第2のカタログインスタンスによって処理されたブロックがブロックチェーンにコミットされて、エコシステムのカタログインスタンスの各々によって維持されるブロックチェーンレプリカに伝搬された後における、図10の例示的なシステムを示す第5のブロック図である。 第2のカタログインスタンスが第2のトランザクション(すなわち、第1のネームスペース登録トランザクション)を開始して、ソフトウェアコンポーネント・エコシステムにおける他のカタログインスタンスのうち未検証の待ち行列に第2のトランザクションを伝搬した後における、図11の例示的なシステムを示す第6のブロック図である。 第3のカタログインスタンスが第3のトランザクション(すなわち、第2のネームスペース登録トランザクション)を開始して、これがソフトウェアコンポーネント・エコシステムにおける他のカタログインスタンスのうち未検証の待ち行列に伝搬された後における、図12の例示的なシステムを示す第7のブロック図である。 ブロックチェーンに含めるべき付加的なブロックを検証するために第1のカタログインスタンスが選択された後における、図13の例示的なシステムを示す第8のブロック図であって、付加的なブロックは図12の第2のトランザクションおよび図13の第3のトランザクションを組込むためのものである。 ソフトウェアコンポーネント・エコシステムのブロックチェーンに追加されるべき付加的なブロックの演算中における、第1のカタログインスタンスを示す図14の例示的なシステムを示す第9のブロック図である。 第1のカタログインスタンスが付加的なブロックの処理を完了して、ソフトウェアコンポーネント・エコシステムのブロックチェーンに付加的なブロックを伝搬した後における、図15の例示的なシステムを示す第10のブロック図である。 図1~図16の実施形態によって実現可能な第2の例示的な方法を示すフロー図である。 図1~図17の実施形態を実現するのに使用可能であるシステムおよび付随のコンピューティング環境を示す概略ブロック図である。 図1~図18の実施形態を実現するのに使用可能なコンピューティングデバイスを示す概略ブロック図である。
実施形態の詳細な説明
説明を目的として、ソフトウェアコンポーネント・エコシステムは、分散型コンピューティングリソース(たとえば、カタログインスタンス、付随する分散型ブロックチェーンなど)への/からのソフトウェアコンポーネントのアップロードおよび/またはダウンロードを可能にするように構成された、ネットワーク化された分散型コンピューティングリソースの集合を含むものであれば如何なるコンピューティング環境であってもよい。ネットワーク化されたコンピューティング環境は、相互通信コンピュータ、すなわち、コンピュータネットワーク、たとえば、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN(たとえば、インターネット))、クラウドインフラストラクチャおよびサービスなど、を含むものであれば如何なるコンピューティング環境であってもよい。同様に、ネットワーク化されたソフトウェアアプリケーションは、ネットワークを介して1つ以上のコンピューティングリソース(たとえば、サーバ)と通信することまたはそれらを用いることを容易にするように適合されたコンピュータコードであってもよい。
なお、コンピューティングリソース(たとえば、エコシステムのネットワークを介して相互に通信し得るコンピュータシステム)の集合がこの明細書中においてノードと称されていることに留意されたい。所与のノード(たとえば、ソフトウェアコンポーネントカタログのインスタンス(この明細書中においてはカタログインスタンスと称される))は、他のノードと相互に通信するとともに選択的にデータ(たとえば、エコシステムについての登録情報を含むブロックチェーンのレプリカ)を共有するためのソフトウェアと、(たとえば、さまざまな登録の完了を案内するためのユーザインターフェイスソフトウェアによる)トランザクションの生成を容易にするためのソフトウェアと、エコシステムのルールへの準拠を確実にすることによりピア・ツー・ピア・エコシステムの実現を可能にするためのソフトウェアとを含んでいてもよい。
説明の便宜上、ピア・ツー・ピア・ネットワークまたはエコシステムは、コンピュータネットワークにわたって分散されるとともに、プロセスワークロードの共有を容易にするために相互に通信し得るコンピューティングリソース(たとえば、コンピュータシステムおよび/またはソフトウェアアプリケーション)、すなわちノード、の任意の集合であってもよい。
なお、従来から、ピア・ツー・ピア・ネットワークのピアまたはノードは、ネットワークによって提供されるデータおよび機能にアクセスする同様の特権を有していることに留意されたい。しかしながら、ピア・ツー・ピア・ネットワークのピアまたはノードは、その用語がこの明細書中において用いられている場合、同様に特権が付与される必要はない。たとえば、フルノードと称されるいくつかのノードには最大限に特権が与えられており、すなわち、エコシステムブロックチェーンからの読出しおよびエコシステムブロックチェーンへの書込みを行う特権を維持している。さほど特権が与えられていないノードは、エコシステムブロックチェーンにアクセスするためのプロキシとしてフルノードを使用する必要があるかもしれない。なお、「ピア・ツー・ピア・ネットワーク」および「ピア・ツー・ピア・エコシステム」という語はこの明細書中では同義で用いられる可能性があることに留意されたい。
説明の便宜上、ソフトウェア機能は、コンピュータコード(すなわち、ソフトウェア)を介して提供される如何なる機能、能力または特徴(たとえば、格納されたデータまたは配置されたデータ)であってもよい。概して、ソフトウェア機能はユーザインターフェイスおよび付随するユーザインターフェイス制御および特徴を用いることによってアクセス可能になり得る。ソフトウェア機能は以下の動作を含み得る。たとえば、コンピューティングオブジェクト(たとえば、トランザクションに関連付けられたビジネスオブジェクト)に関するデータを検索する動作、企業の人員を昇進させたり、採用したり解雇したりするなどの企業関連のタスクを実行する動作、注文する動作、分析を計算する動作、特定のダイアログボックスを開始する動作、検索を実行する動作、などである。
ブロックチェーンは、ブロックと称される、リンクされた記録の順番付けされたリストであってもよく、この場合、ブロックチェーンは、新しいブロックをブロックチェーンの終端に加えることによって発展させることができるが、より前のブロックの挿入は、より後のブロックが最初にブロックチェーンから展開されないかまたは削除されない限り、禁止される。ブロックチェーンのうちさまざまなブロックには、ブロックチェーンへの組込み時にタイムスタンプが付されることが多い。ブロックチェーンは、たとえば、所与のコンピューティング環境またはエコシステムのノードにインストールされ得る分散型ソフトウェアアプリケーションまたはネットワーク化されたソフトウェアアプリケーションを用いて実現されてもよい。ブロック間のリンクは、新しいブロックに適用される1つ以上のハッシュを実現することによって実現されてもよい。この場合、1つ以上のハッシュは、1つ以上の前のブロックからの情報を活用または使用する。ブロックチェーンを用いることでトランザクションの分散型台帳を実現することができる。
説明の便宜上、分散型台帳は、ネットワークの複数のノード間で共有される共有デジタルデータの集合であってもよく、そのコピーが複数のノード間で複製されて格納され得る。分散型台帳によって維持されるデータはノード間で同期されてもよい。
したがって、分散型台帳は、一種の分散型データベース(すなわち、複数のエンティティのネットワークに連結されたさまざまなエンティティ間でデータを格納するためのメカニズム)として機能し得る。ノードは、ネットワークに連結される如何なるコンピュータシステムおよび/またはソフトウェアアプリケーションおよび/またはソフトウェアシステムまたはこれらのグループであってもよい。ここに記載されるノードは一般に「カタログインスタンス」と称される。というのも、これらノードは、付随するコンピューティング・エコシステムの他のノードおよび/またはパーティシパントがカタログに格納されたデータにアクセスするのを容易にするからである。
トランザクションは、エコシステムの1つ以上の局面を記述しているイベント、状態、プロパティまたは他の情報を記載する情報の任意の集合であり得る。この場合、1つ以上の局面は、参加しているデベロッパエンティティ、ソフトウェアコンポーネントコンシューマエンティティ、コントリビュータエンティティ、プロキシ化されたエコシステムパーティシパントおよびシステム、ソフトウェアコンポーネント相互関係、ソフトウェアコンポーネントのダウンロードおよび/またはアップロードのインスタンス、ソフトウェアコンポーネントのサポート状態、コンポーネント由来情報などを含み得る。トランザクションは、この用語が用いられている文脈に応じて、エコシステムにおける活動(たとえば、デベロッパエンティティ登録、ネームスペース登録、コントリビュータ登録など)を記述するデータの集合を指すこともある。または、代替的には、トランザクションは、実際の活動(たとえば、コンポーネントをダウンロードすること)を指すこともある。
活動またはタスクを表しているトランザクションは十分に自動化されてもよく、またはマニュアルでの承認または他の検証活動などの人のワークフロータスクを含んでいてもよい。したがって、トランザクションはブロックチェーンにおける単一のもの(たとえば、情報の集合)として表わされる可能性もあるが、トランザクションのいくつかの形態は、実際には、ワークフローが処理されるのに応じて台帳中に記録することができる別個のサブトランザクションに分解されてもよい。したがって、「トランザクション」という語はまた、その語が用いられている文脈に応じて、情報(たとえばコンピューティングオブジェクト)の集合を伝達する動作を指している可能性もあり、情報(たとえばコンピューティングオブジェクト)の実際の集合を指している可能性もある。
たとえば、個々のソフトウェアデベロッパ(たとえば、コンポーネントコントリビュータ)がコンポーネントエコシステムに登録する場合、この明細書中に記載されているように、コントリビュータ登録プロセスに関する(たとえば、これを文書化する)情報は、エコシステムのブロックチェーンに組込むための準備として、カタログインスタンスのうち1つ以上の未検証の待ち行列に伝搬されてもよい。情報の収集および/または転送はトランザクションと称されてもよく、収集された情報を維持するコンピューティングオブジェクトはまた、トランザクション(たとえば、デベロッパ登録トランザクション)と称されてもよい。図1を参照すると、このようなトランザクションは、(たとえば、登録機能16によって)収集され得るとともに、分散型台帳14のブロックチェーン20のうち1つ以上のブロックに選択的にコミットされ得る。
なお、ブロックチェーン20および分散型台帳14が特定の実現例において同等であり得ることに留意されたい。しかしながら、この例示的な実施形態においては、分散型台帳14はブロックチェーン20を含むものとして示されている。というのも、分散型台帳14は、ブロックチェーン20の単なる実現例とは対照的に、付加的な機能を含み得るからである。たとえば、特定の実現例においては、分散型台帳14は、パーティシパントコンピュータシステム12のノードによってローカルで使用される他のデータベースフォーマットにブロックチェーン20を変換することを可能にするための付加的なコードを含み得るとともに、カタログインスタンス・データストア18の別々のインスタンスに対してコンポーネントを選択的に分散させることを可能にし得る。
所与のノードには、所与のコンピューティング環境またはエコシステムにおいて異なる特権が割付けられてもよい。同様の特権を持つノードは、それが1つ以上の特定のタスクの実現に関係しているので、タスクを完了させるためのピアと称されている。説明の便宜上、ピア・ツー・ピア・エコシステムは、少なくとも部分的に、エコシステムの別々のノードまたはピアを介して実現される1つ以上の分散型またはネットワーク化ソフトウェアアプリケーションによって実現される如何なるエコシステムまたはコンピューティング環境であってもよい。
この明細書中に記載されるさまざまな例示的な実施形態は、ソフトウェアコンポーネントカタログインスタンスのノードを含むピア・ツー・ピア・ソフトウェアコンポーネント・エコシステムによって実現される。以下により十分に記載される例示的なソフトウェアコンポーネントカタログインスタンスはさまざまなソフトウェアアプリケーションを実行し得る。これらさまざまなソフトウェアアプリケーションは、(ソフトウェアコンポーネントのデータベースを含み得る)ローカルデータストアを維持および管理するためのソフトウェア、セキュリティおよび許可機能を実現するためのソフトウェア、さまざまなタイプの登録(それらの例が以下においてより十分に記載されている)を可能にするためのユーザインターフェイス(UI)ディスプレイスクリーンを生成するためのソフトウェア、エコシステムのための未検証のトランザクション待ち行列を管理するためのソフトウェア、他のカタログインスタンスと通信するためのソフトウェア、エコシステムブロックチェーンのレプリカを維持するためのソフトウェア、エコシステムのブロックチェーンのための新しいブロックをコンピューティングする(すなわち、検証するかまたは確認する)ためのソフトウェア、エコシステムの1つ以上のカタログインスタンスによる検証(およびブロックチェーンブロックへの包含)のためのトランザクションをサブミットするためのソフトウェア、1つ以上のブロックをブロックチェーンに追加するのに必要な演算を実行するためにカタログインスタンスを選択するための任意のアルゴリズムを実現するためのソフトウェア、ブロックをブロックチェーンに追加するのに必要なハッシュを演算するためのソフトウェア、などを含み得る。
概して、デベロッパおよび/またはビジネスのコミュニティは、ソフトウェアコンポーネント・エコシステムを用いて、情報、リソースおよびコンポーネントのやり取りを可能にするかまたは容易にする共通の技術的プラットフォームを用いてソフトウェアおよびサービスのための共有の市場と協働的に対話してもよい。
ソフトウェアコンポーネント・エコシステムは、デベロッパ、ベンダーおよび顧客によって使用される再使用可能なソフトウェアコンポーネントのオープンなエコシステムとして実現され得る。このようなエコシステムは、ネットワーク化されたインフラストラクチャまたは「クラウド」インフラストラクチャならびに付随するプロセスおよびサービスのまわりに構築されてもよい。しかしながら、本発明の特定の実施形態は特定の処理プラットフォーム、技術およびインフラストラクチャに関して記載され得るが、他の変形例も可能であり、異なるシステムに適合されてもよい。
ソフトウェアコンポーネント・エコシステムについての1設計は、信頼、アイデンティティ、保全性、サポート、ネームスペース、コンポーネントのアイデンティティ、知的財産、製品リコール、由来およびライセンシングなどのさまざまな局面の検討事項を含んでいる。他の局面についての特徴を含むこともできる。さまざまな特徴および局面が特定の実施形態に関連付けて記載されているが、特定の実施形態がさまざまな異なるセットの記載特徴を使用できることが明らかになるはずである。特徴は省略または変更されてもよく、付加的な特徴が含まれてもよい。
この明細書中に記載される特定の実施形態は、1つ以上の信号をユーザ入力デバイスから受取ってデベロッパエンティティの識別名を規定すること;1つ以上の信号をユーザ入力デバイスから受取って安全な検証メカニズムを規定すること;検証メカニズムに関連したデベロッパ名を含むエントリをカタログに記録すること;カタログエントリに関連したトランザクションを実行してソフトウェアコンポーネントを転送すること;および、カタログエントリを用いてトランザクションを検証すること;によってソフトウェアコンポーネント・エコシステムを実現するための装置、記憶媒体および方法を提供する。付加的な特徴は、カタログにおけるエントリによって規定されるエンティティにネームスペースを割付けることを可能にする。
従来より、ソフトウェアデベロッパは、ソフトウェアアプリケーションの開発および関連するファイルの格納を容易にするために特定のクラウドサービスをサブスクライブし得る。ソフトウェアアプリケーションまたはプロセスフロー開発のために構成されるクラウドサービスは、ここではプロセスクラウドサービス(Process Cloud Service:PCS)と称される。
プロセスクラウドサービスは、開発されている所与のソフトウェアプログラムによって用いられるファイルおよび他のオブジェクトを格納するためにネットワーク化されたデータベースを使用する可能性がある。サーバ側開発環境はブラウザを介してデベロッパにアクセスであってもよい。開発環境は、開発されたソフトウェアアプリケーションファイルがPCSデータベースに格納されるように、PCSにバックアップされていてもよい。
説明の便宜上、コンピューティング環境は、コンピュータ処理を伴う1つ以上のタスクを実行するために用いられるコンピューティングリソースの如何なる集合であってもよい。コンピュータはメモリと通信する如何なるプロセッサであってもよい。コンピューティングリソースは、コンピューティング環境の如何なるコンポーネント、メカニズムまたは能力もしくはその量であってもよく、プロセッサ、メモリ、ソフトウェアアプリケーション、ユーザ入力デバイスおよび出力デバイス、サーバなどを含むがこれらに限定されない。コンピューティングリソースの例は、1つ以上のウェブサービス、アプリケーションプログラミングインターフェイス(Application Programming Interface:API)などによって提供されるデータおよび/またはソフトウェア機能を含む。
エンタープライズコンピューティング環境はビジネスまたは組織のために用いられる如何なるコンピューティング環境であってもよい。一例としてのエンタープライズコンピューティング環境は、ネットワークにわたって分散されたさまざまなコンピューティングリソースを含み、さらに、イントラネットウェブサーバ、データベース、ローカルのハードディスクまたはファイルサーバ上のファイル、電子メールシステム、ドキュメント管理システム、ポータルなどの上にあるプライベートの共有コンテンツを含み得る。
所与のソフトウェアアプリケーションは、構成するソフトウェアアプリケーションまたはモジュール(たとえば、サービス、機能、手順、コンピューティングオブジェクト、など)含み得る(が、必ずしも含むものではない)。したがって、「ソフトウェアアプリケーション」という語は、ネットワーク化されたソフトウェアアプリケーションまたはそれらが一体化されたグループを含んでいてもよい。
この明細書中に記載される特定の実施形態は、プロセスベースのソフトウェアアプリケーションの開発、展開および実現に特に有用である。プロセスベースのソフトウェアアプリケーションは、プロセス要素またはソフトウェア活動とも称されるステップの1つ以上のシーケンスによって定義可能な如何なるソフトウェアアプリケーションであってもよい。「プロセス要素」、「フロー要素」、「ソフトウェア要素」および「ソフトウェアプロセス要素」という語はこの明細書中では同義であって、たとえば、イベント、活動、ゲートウエイ、サブプロセスなどの任意のステップを指していることもある。プロセスベースのソフトウェアアプリケーションのステップのシーケンスはプロセスフローと称されることもある。プロセスフローは、ユーザインターフェイス(UI)ディスプレイスクリーンにおけるスイムレーンを介してモデル化されて例示されることが多い。プロセスベースのアプリケーションは、さまざまなプロセスステップのためのさまざまなウェブーサビスおよび関連するソフトウェアコンポーネントを利用し得る複合アプリケーションによって実現されることが多い。
一般に、ソフトウェアおよびプロダクト開発の普及形態は「ソフトウェア・エコシステム」と称され得る。ソフトウェアエコシステムは、ソフトウェアおよびサービスのための共有市場と協働的に機能して対話する1セットのデベロッパおよび/またはビジネスを、それらの間の関係とともに含み得る。これらの関係は、共通の技術的プラットフォームを含み得るとともに、情報、リソースおよびコンポーネントのやり取りによって機能し得る。
ソフトウェアコンポーネント・エコシステムは特定タイプのソフトウェア・エコシステムであってもよく、主な特徴として、ソフトウェアコンポーネントの開発および交換を含む。ソフトウェアコンポーネント・エコシステムにおいては、デベロッパ、パートナおよび顧客によって使用されるように再使用可能なソフトウェアコンポーネントのオープンエコシステムを促進することが望ましいかもしれない。しばしば、このようなエコシステムはネットワーク化されたまたは「クラウド」のインフラストラクチャ、プロセスおよびサービスのまわりに構築されることとなる。しかしながら、本発明の特定の実施形態は、特定の処理プラットフォーム、技術およびインフラストラクチャに関連付けて記載され得るが、他の変更も可能であり、異なるシステムに適合されてもよい。
明瞭にするために、いくつかの周知のコンポーネント、たとえば、ハードドライブ、プロセッサ、オペレーティングシステム、電源、ルータ、インターネット・サービス・プロバイダ(Internet Service Provider:ISP)、ワークフロー・オーケストレータ、プロセススケジューラ、プロセスクラウド、ビジネスプロセスマネジメントシステム、エコシステムデベロッパエンティティ、エコシステムコントリビュータエンティティ、エコシステムコンシューマ、統合開発環境、プロキシシステム、アイデンティティ管理システム、認証機関(Certificate Authority:CA)などは、図中に必ずしも明確にコールアウトされているわけではない。しかしながら、本教示を利用できる当業者であれば、所与の実現例についてのニーズを満たすためにいずれのコンポーネントを実装するべきかと、それらコンポーネントを如何に実装するべきかとについて認識するだろう。
図1は、(1つ以上のカタログインスタンス・データストア18に格納されるような)ソフトウェアコンポーネントを選択的に共有するための、かつ、分散型ブロックチェーン台帳14および20を用いてトランザクションを登録するための、一般化されたピア・ツー・ピア・コンピューティング・エコシステム10の第1の例を示す。
なお、一般的に、システム10のさまざまなモジュールのグループ分けは例示的なものであって、さまざまに異なっていてもよく、たとえば、この教示の範囲から逸脱することなく、特定のモジュールが他のモジュールと組合わされてもよく、もしくは他のモジュール内に実装されてもよく、または、それ以外の場合には、モジュールが、ネットワーク間で、もしくは1つ以上のコンピューティングデバイスもしくは仮想マシン内において(図示されるのとは)異なる態様で分散されていてもよい。たとえば、例示的な登録機能16、カタログインスタンス・データストア18および分散型台帳14は、パーティシパントコンピュータシステム12とは(明瞭さのために)別個に示されているが、実際には、このようなエンティティは、関連するピア・ツー・ピア・ネットワークに関与しいている1つ以上のパーティシパントコンピュータシステム12によって実現されている。
パーティシパントであるシステム12は、デベロッパエンティティ(たとえば、個々のデベロッパが属する企業または組織)を含み得る。デベロッパエンティティは、コード(たとえばソフトウェアコンポーネント)を1つ以上のいわゆるカタログインスタンスに付与する)いわゆるコントリビュータを含み得る。これら1つ以上のいわゆるカタログインスタンスを用いることで、登録機能16を実現するとともに、デベロッパが1つ以上のカタログインスタンス・データストア18において維持されているソフトウェアコンポーネントとの対話(たとえば、ダウンロード、アップロードなど)を行うこと可能にする。デベロッパエンティティおよび関連するデベロッパはまた、ローカルのカタログインスタンスからソフトウェアコンポーネントをダウンロード(すなわち、消費)してもよい。
カタログインスタンス・データストア18からソフトウェアコンポーネントをダウンロードする人またはエンティティはコンシューマと呼ばれる。カタログインスタンス・データストア18にソフトウェアコンポーネントをアップロードする人またはエンティティは、コントリビュータと呼ばれる。一般に、デベロッパエンティティは、この明細書中においてその語が用いられている場合、コントリビュータおよびコンシューマの両方、またはコントリビュータだけを含む可能性がある。しかしながら、ソフトウェアコンポーネントのコンシューマとしてのみ機能するエンティティはこの明細書中ではデベロッパエンティティとは呼ばれない。
デベロッパエンティティがたとえば登録機能16を用いてカタログインスタンスに登録する場合、および、そのコンシューマがローカルのカタログインスタンス・データストア18にソフトウェアコンポーネントをダウンロードする場合、または、そのコントリビュータがローカルのカタログインスタンス・データストア18からソフトウェアコンポーネントをアップロードする場合、これらの活動に関するデータは、検証されると、分散型台帳14および付随する検証済みブロックチェーン20に登録される。
なお、特定の実施形態においては、デベロッパエンティティの登録がいわゆるデベロッパエンティティ登録トランザクションを生成することに留意されたい。デベロッパエンティティ登録トランザクションの後には、(代替的には、特定の実現例におけるデベロッパエンティティ登録の一部であり得る)ネームスペース登録が続けて行われてもよい。たとえば、登録機能16を用いるネームスペース登録の間、ネームスペースはデベロッパエンティティに関連付けられ、対応する情報はネームスペース登録として分散型台帳14に格納される。
デベロッパエンティティ登録および関連するネームスペース登録の後、個々のコントリビュータおよびコンシューマは、さらに、関連するデベロッパエンティティおよびネームスペースに関連付けて登録してもよい。コントリビュータが、既に登録済みのソフトウェアコンポーネントを別のカタログインスタンス(すなわち、デベロッパエンティティが直接通信しているローカルのカタログインスタンス以外のカタログインスタンス)にアップロードすると、別個のアップロードトランザクションが使用可能となる。
コンポーネントのダウンロードトランザクション、コンポーネントの使用登録などを含むがこれらに限定されない他のさまざまなタイプの登録も可能である。以下においてより十分に説明されるように、一般に、各々のタイプの登録に関する情報は、検証後、分散型台帳14のブロックチェーン20にコミットされる。
分散型台帳14は、管理上(たとえば、ノード管理、アイデンティティ管理など)のタスクを(たとえば、図1においてアイテム14~18によって集合的に表されている)カタログインスタンスおよび/またはローカルのアイデンティティドメインに対して委譲することを可能にするとともに、パーティシパントが、すなわち分散型台帳14のブロックチェーン20に登録されたトランザクションによって、関連するエコシステム10に関するトランザクションについての整合性のあるビューまたは概要にアクセスすることも可能にする。
この例示的な実施形態においては、分散型台帳14内のトランザクションは、エンティティおよび/またはそれにサブミットされたトランザクションのレジストラに関連付けられた役割に従って許可される。トランザクションは、トランザクションに用いられるノード(たとえばカタログインスタンス)の性質に従ってさらに許可されてもよい。たとえば、いくつかのノードがフルノードであり得るのに対して、他のノードは、ブロックチェーン20のブロックを検証する際にアクセスして関与するための特権が削減されてしまっている可能性もある。
異なる態様で許可され得る例示的な役割は、(デベロッパエンティティアイデンティティの検証、デベロッパエンティティに対するネームスペース割付けの検証などを担う可能性のある)コミュニティリーダーの役割;(デベロッパエンティティのアイデンティティ、コントリビュータ、コンポーネントのアイデンティティなどの登録および/または管理を担う可能性のある)デベロッパの役割;(コンポーネント使用登録を担う可能性のある)ディストリビュータの役割;(コンポーネント使用登録に関与し得る)コンシューマ、などを含む。
なお、エコシステム10などの分散型システムおよびピア・ツー・ピアシステムにおいては、トランザクション登録および関連するデータ登録が重要となり得ることに留意されたい。データ(たとえば、登録および関連するソフトウェアコンポーネントに関するデータ)は複数の位置に存在している。すなわち、データは、パーティシパントコンピュータシステム12のフルノード間で複製される。
したがって、データ(たとえばトランザクションデータ)が1つのノードによって変更される場合、この変更(および関連するトランザクション)がパーティシパントコンピュータシステム12のフルノードすべてに伝搬されることが重要であり得る。トランザクションデータがソフトウェアコンポーネント登録に関係している場合、分散型台帳14および付随するブロックチェーン20にコミットされるトランザクションに実際のソフトウェアコンポーネント全体を格納することは非実用的であるかもしれない。したがって、所与のソフトウェアコンポーネントを格納するために用いられるファイル(すなわち分散媒体)のハッシュは、ブロックチェーン20に、すなわち、ソフトウェアコンポーネント登録のために、登録される可能性がある。
図2は、図1のピア・ツー・ピア・コンピューティング・エコシステム10の第1の例の実現例30を示すより詳細な図である。図1および図2を参照すると、図2の実現例30は、デベロッパエンティティシステム22と、図1のパーティシパントコンピュータシステム12を含む外部のプロキシ化されたシステム50とを含むものとして示されている。
デベロッパエンティティシステム22は、分散型台帳14を実現するパーティシパントシステム(たとえば、図1のシステム12)のクラウド54と通信する。この実現例30においては、クラウド54はさらに、1つ以上のアイデンティティドメイン44を含む。1つ以上のアイデンティティドメイン44は、コミットされたトランザクションを読取る目的のために、かつ、ブロックチェーン20にトランザクションをコミットするために、(たとえばカタログインスタンス32を介して)分散型台帳14および付随するブロックチェーン20へのアクセスを可能にするよりも前に、デベロッパエンティティおよび個々のユーザを認可するために用いられてもよい。
なお、特定の実現例において、(他のカタログインスタンスと選択的に対話するために、かつ、予め定められた許可に関連付けられた予め定められたセットの機能を選択的に実現するために)カタログインスタンス32も認証および許可され得ることに留意されたい。
例示的なデベロッパエンティティシステム22は、デベロッパエンティティ(たとえば、付随のピア・ツー・ピア・ネットワークおよび関連するエコシステム30のさまざまな動作に関与することができる企業または組織)の1つ以上のコンピューティングシステムを表している。説明の便宜上、デベロッパエンティティは、カタログインスタンス32の1つ以上を用いてこのようなエンティティとして登録することができる、1以上の人々のグループならびに付随するコンピューティングシステムおよびコンピューティングリソースを表していてもよい。この例示的な示実施形態においては、デベロッパエンティティは、たとえば、デベロッパエンティティシステム22のデベロッパエンティティと関連付けて登録される個々のコントリビュータおよび/またはコンシューマによって、カタログインスタンス32のローカルコンポーネントカタログ36からソフトウェアコンポーネントをアップロード(付与)するとともにソフトウェアコンポーネントをダウンロード(消費)するための特権に関連付けられている。
デベロッパエンティティ(たとえば、企業)は、たとえば企業の名前を含み得るネームスペースに関連付けられている。所与のネームスペースは名前の階層構造を含み得る。名前の階層構造は、(所与のデベロッパエンティティの階層的ネームスペースにおける最高レベルノードであり得る)デベロッパエンティティの名前に関連付けられたさまざまなソフトウェアコンポーネントの名前を含み得る。
なお、デベロッパエンティティおよび関連するシステム22だけでなく、他のタイプのエンティティも、この教示の範囲から逸脱することなくエコシステム30に関与し得ることに留意されたい。なお、デベロッパエンティティシステム22および(1つ以上のカタログインスタンスを用いるためにデベロッパエンティティシステム22のうち1つ以上によってプロキシされている)外部のプロキシ化されたシステム50だけが図2に示されているが、他のタイプのシステムもエコシステム30に関与し得ることに留意されたい。
この例示的な実施形態においては、デベロッパエンティティシステム22は、エコシステム30のフルノードをホストする1つ以上のコンピューティングシステム(たとえば、実際のコンピュータおよび/または仮想マシン)を含む。フルノードはカタログインスタンス32によって表わされている。説明の便宜上、フルノードは、データ(たとえば、トランザクションデータ)にアクセスするとともに当該データをブロックチェーン分散型台帳14に提供するための特権の十分な読取り、書込みおよびコミットを行うものであれば如何なるノードであってもよい。
例示的なカタログインスタンス32は、付随するエコシステム30の他のノード(カタログインスタンス)に複製されるかまたは伝搬される、ブロックチェーン分散型台帳14のレプリカである台帳レプリカ34を含む。台帳レプリカは未検証の待ち行列38を含む。未検証の待ち行列38は、ブロックチェーンレプリカ40へのコミットのためにペンディング中である1つ以上の未検証のトランザクションを含み得る。なお、ローカルの未検証の待ち行列38およびブロックチェーンレプリカ40のデータが他のノード間で共有されるかまたは他のノードに伝搬され、その後、クラウド54のうちの分散型の未検証の待ち行列46および関連するブロックチェーン分散型台帳ブロックチェーン20を表すことになることに留意されたい。
例示的なカタログインスタンス32はさらに、ローカルコンポーネントカタログ36を含むかまたはローカルコンポーネントカタログ36と通信する。ローカルコンポーネントカタログ36は、カタログインスタンス32にアップロードされたソフトウェアコンポーネントを維持する。このソフトウェアコンポーネントは、ローカルコンポーネントカタログ36におけるコンポーネントの特権コンシューマによってダウンロードされる可能性もある。以下においてより十分に説明されるように、ローカルコンポーネントカタログ36との各々の対話には、対話を文書化する関連トランザクションが付随している。
所与のトランザクションは、最初に、未検証の待ち行列38にロードされ、他のカタログインスタンス(ノード)の他の未検証の待ち行列46に伝搬され、次いで、トランザクション妥当性チェックが実行されると、代表的な分散型ブロックチェーン20全体にコミットされる。トランザクション・コミットプロセスは、トランザクションの集合についての1つ以上のハッシュと、トランザクションの集合がコミットされることとなるブロックチェーン20の関連ブロックについての1つ以上のハッシュとを計算するために、1つ以上のカタログインスタンス32を用いることを必要とする。ブロックチェーン40および20にコミットされるべきトランザクションの集合は、未検証の待ち行列38および46から選別される。
デベロッパエンティティシステム22はさらに、1つ以上のカタログインスタンス32と通信する1つ以上のレジストラコンピューティングシステム42を含む。この例示的な実施形態においては、レジストラシステム42は、1つ以上のカタログインスタンス32に登録をサブミットするために、認可されている(かまたは認可された人によって用いられている)任意のコンピューティングシステムであり得る。なお、デベロッパエンティティシステム22のうちの或るデベロッパエンティティの1つ以上のコンピューティングシステム上で実行されるカタログインスタンス32がデベロッパエンティティシステム22のローカルデベロッパエンティティである限りにおいては、ローカルカタログインスタンスと称されることに留意されたい。
なお、レジストラシステム42のレジストラが1つ以上のクラウドベースのアイデンティティドメイン44を介するデベロッパエンティティシステム22のデベロッパエンティティの代わりに、レジストラとして機能することが認証され得ることに留意されたい。レジストラは、デベロッパエンティティ機密(たとえば、公開鍵インフラストラクチャ(public key infrastructure:PKI)を用いる場合、秘密鍵)を維持し得る。
レジストラシステム42は、デベロッパエンティティシステム22のデベロッパエンティティの一部である、個々のデベロッパシステム24(たとえば、個々のソフトウェアコンポーネントコントリビュータおよび/またはコンシューマによって用いられるコンピューティングシステム)、他のコントリビュータシステム26(たとえば、プロキシ化されたアップローダ)、および、他のユーザーシステム28(たとえば、プロキシ化されたダウンローダ)のための(たとえば、トランザクション登録のための)プロキシとして機能し得る。
さらに、特定の実現例においては、レジストラシステム42はまた、必ずしもデベロッパエンティティシステム22の一部ではない外部のプロキシ化されたシステム50のための1つのプロキシ(または複数のプロキシ)として機能してもよい。たとえば、外部の統合開発環境(Integrated Development Environment:IDE))は、場合によっては、カタログインスタンス32および付随するローカルコンポーネントカタログ36のうち1つ以上と対話するインターフェイスとして、デベロッパエンティティのレジストラシステム42の使用が認可されてもよい。
例示的な使用事例のシナリオにおいては、図4および図5に関連付けて以下により十分に記載されるように、デベロッパエンティティ(たとえば、デベロッパエンティティシステム22の所有者)は、初めに、デベロッパエンティティ登録と称されるプロセスにおいてデベロッパエンティティとしてカタログインスタンス32に登録する。次いで、関連するデベロッパエンティティ登録情報はトランザクションとしてパッケージされるとともに、トランザクションに対する妥当性チェックと、ローカルのブロックチェーン40および付随する分散型ブロックチェーン20に対する検証済みトランザクションとしての最終的なコミットとに備えて、ローカルのブロックチェーン台帳レプリカ34の未検証の待ち行列38にサブミットされる。
デベロッパエンティティ登録の後には、さまざまな追加のタイプの登録(たとえば、デベロッパエンティティネームスペース登録)が続けられてもよい。これにより、デベロッパエンティティシステム22のデベロッパエンティティの名前(および/または他のネームスペース)が登録される。
個々のコントリビュータ(たとえば、デベロッパエンティティシステム22のデベロッパエンティティの個々のデベロッパ)についての登録が次に行なわれてもよい。コントリビュータは、登録済みのデベロッパエンティティ名および/または追加の(コントリビュータによって)要求されたネームスペースに関連付けて、ブロックチェーン20に登録される。特定のコントリビュータについての(たとえば、アイデンティティドメイン44および付随の認証機関(CA)によって獲得され得るような)公開鍵およびデジタル署名を提供することによっても、登録の認証を確認すること、すなわち、コントリビュータが認可されて、カタログインスタンス32とローカルのソフトウェアコンポーネントカタログ36によって与えられる付随するソフトウェアコンポーネント機能(たとえば、ソフトウェアコンポーネントのダウンロードおよびアップロード)との使用のために適切に許可されることを確認すること、が容易になり得る。
他のタイプの登録および関連するトランザクションは、(たとえば、ローカルコンポーネントカタログ36にソフトウェアコンポーネントをアップロードする準備のために行われ得るような)ソフトウェアコンポーネント登録と、オプションのコンポーネント使用登録と組合わせたコンシューマコンポーネントダウンロード登録と、コンポーネント使用登録と、を含む。
他のタイプの登録も、依然として、この教示の範囲から逸脱するなく実現可能である。たとえば、(たとえば、1つのソフトウェアコンポーネントが別のソフトウェアコンポーネント内で用いられる場合の)ソフトウェアコンポーネントのネスト型使用を追跡する登録、ローカルコンポーネントカタログ状態情報の登録(たとえば、ローカルコンポーネントカタログ36における利用可能なソフトウェアコンポーネントのリスト化)、与えられた機能、などである。
一般に、ブロックチェーン分散型台帳14にさまざまなタイプの登録情報を収集することにより、エコシステム30全体のために多くの利点が得られる可能性がある。たとえば、この明細書中に記載される実施形態を用いることにより、ソフトウェアコンポーネント間の名前の不一致を回避すること、特定のコンポーネントが第三者サプライヤによってサポートされることを、特定のコンポーネントが如何にサポートされるかと特定のコンポーネントを如何に選択的にリコールするかとに鑑みて確実にすることを含む、コンポーネントサポートサービスの効率的な管理、コンポーネントの不正変更を検出すること、知的所有権を実施してコンポーネントの由来および所有権を追跡すること、特定のコンポーネントのためのソフトウェアライセンスが有効であるどうかをチェックすること、コンポーネント有効性の検証を全体的に可能化すること等、が容易になり得る。これはすべて、この明細書中に記載されるように、分散型カタログインスタンス32を用いることによって実質的に置換および改善され得る従来の中心制御メカニズムを必要とすることなく、達成することができる。
図3は、図1および図2のピア・ツー・ピア・コンピューティング・エコシステム10および30のピアまたはノードとして機能する個々の例示的なデベロッパコンピューティングシステム62の詳細例を示しており、例示的なUIディスプレイスクリーン70の例示的なUI制御およびオプションと、カタログインスタンス32に含まれ得る例示的なモジュール34~40および60~68とを含んでいる。カタログインスタンス32を用いることで、(デベロッパシステム62と組合わされてクラウド14によって表され得る)ピア・ツー・ピア・エコシステムに個々のデベロッパコンピューティングシステム62を連結し、これにより、個々のデベロッパコンピューティングシステム62および付随するカタログインスタンス32がピア・ツー・ピア・エコシステム全体のノードとして機能する。
なお、例示のために、個々のデベロッパシステム62上で実行されているカタログインスタンス32が示されることに留意されたい。しかしながら、実際には、個々のデベロッパシステム62は、図2のデベロッパエンティティシステム22のデベロッパエンティティによって所有され得るかまたは当該デベロッパエンティティに関連付けられ得る。したがって、個々のデベロッパシステム62は、図2のデベロッパエンティティシステム22のうちの1つを表わしている可能性もある。
この例示的な実施形態においては、個々のデベロッパシステム62は、付随するピア・ツー・ピア・エコシステムのノードと、個々のソフトウェアコンポーネントコントリビュータおよび/またはコンシューマのシステムとの両方として機能する。なお、本実施形態においては、デベロッパシステム62の個々のデベロッパはまた、単に、ローカルコンポーネントカタログ36への/からのソフトウェアコンポーネントのダウンロード動作および/またはアップロード動作だけではなく、トランザクション登録を実現する目的で、カタログインスタンス32および関連する機能にアクセスできるレジストラとしても機能することに留意されたい。
例示的なデベロッパシステム62は、UIディスプレイスクリーン70と通信するカタログインスタンス(この明細書中においては第1のカタログインスタンスまたはカタログインスタンス1と称される)32を含む。カタログインスタンス32はさらに、付随するピア・ツー・ピア・エコシステムをホストするネットワークまたはクラウド14上で実行される分散型ブロックチェーン台帳46、20と通信する。
説明の便宜上、UIディスプレイスクリーンは、ディスプレイ上に提供される如何なるソフトウェア生成描写であってもよい。描写の例は、ウィンドウ、ダイアログボックス、表示されたテーブル、および他のグラフィカルユーザインターフェイス特徴、たとえば、ブラウザなどのソフトウェアを介してユーザに提示されるユーザインターフェイス制御などを含む。単一の境界内に含まれているユーザインターフェイスディスプレイスクリーンはビューまたはウィンドウと称される。ビューまたはウィンドウは、サブビューまたはサブウィンドウ、ダイアログボックス、グラフ、テーブルなどのセクションを含み得る。いくつかの場合には、ユーザインターフェイスディスプレイスクリーンは、ディスプレイ上にその時点で表示されているすべてのアプリケーションウィンドウを指していることもある。
UI制御は、ユーザがデータを入力および閲覧すること、および/またはユーザインターフェイスと対話すること、を可能にするように適合されたユーザインターフェイス・ディスプレイスクリーンのうち表示された任意の要素またはコンポーネントであってもよい。ユーザインターフェイス制御の追加の例は、ボタン、ドロップダウンメニュー、メニューアイテム、タップアンドホールド機能などを含む。同様に、ユーザインターフェイス制御信号は、ソフトウェアのための入力として提供される如何なる信号であってもよい。この場合、入力は、ソフトウェアに関連付けられたユーザインターフェイスディスプレイスクリーンおよび/またはソフトウェアアプリケーションに影響を及ぼす。
例示的なカタログインスタンス32はローカルの台帳レプリカ34を含む。ローカルの台帳レプリカ34は、分散型ブロックチェーン20のうち、複製された(他のカタログインスタンスまたはノード間で複製された)未検証の待ち行列38およびブロックチェーンレプリカ40を含む。カタログインスタンス32はさらに、(たとえば、リレーショナルデータベースまたは他のタイプのデータベースによって実現され得る)ローカルコンポーネントカタログ36、UIコード生成モジュール60、台帳インターフェイス型モジュール64、セキュリティおよび許可モジュール62、ならびにブロック演算モジュール66を含む。カタログインスタンスコントローラ68はカタログインスタンス32のさまざまな他のモジュール34、36、60~66の間の相互通信を接続し、制御し、ルーティングすることを容易にする。
例示的なUIディスプレイスクリーン70ならびに付随するUI制御およびオプションは、コントリビュータおよびコンシューマの登録を容易にするためのUI制御;コンポーネント登録;ローカルコンポーネントカタログ36において利用可能なソフトウェアコンポーネントについてのコンポーネントサーチおよび/またはビュー;コンポーネント保全性、コンポーネント識別などの検証;ソフトウェアコンポーネントのソース、由来、ライセンス条件、サポート状態などの確認;デベロッパエンティティネームスペースの登録;コントリビュータ登録;コンポーネントのアップロードおよび/またはダウンロードの登録;ソフトウェアコンポーネントを登録解除するためのUI制御またはオプション;などを含む。
なお、例示的なUIディスプレイスクリーン70を介して利用可能なUI制御の正確な数およびタイプは実現例特有のものであって、本教示の範囲から逸脱することなく所与の実現例のニーズに応じて異なり得ることに留意されたい。さらに、UI制御およびオプション70のうちの1つ以上は、(たとえば、ウィザード形式で)複数のUIディスプレイスクリーンによって実現されてもよい。
この例示的な実施形態においては、UIディスプレイスクリーン70のさまざまなUI制御およびオプションは、カタログインスタンス32のUIコード生成モジュール60からのレンダリング命令に基づいて生成される。
セキュリティおよび許可モジュール62は、個々のデベロッパシステム62のデベロッパエンティティによって確立されたルールを考慮して、個々のユーザおよびデベロッパエンティティの認証および許可を容易にし得る。セキュリティおよび許可モジュール62はさらに、さまざまなセキュリティおよび許可機能の実現を容易にするために、図2の1つ以上のアイデンティティドメイン44と通信してもよい。なお、セキュリティおよび許可モジュール62によって実行される正確な機能が実現例特有のものであって、所与の実現例のニーズに応じて異なり得ることに留意されたい。
カタログインスタンス32のブロック演算モジュール66は、分散型台帳および付随するコンピューティングクラウドおよびエコシステム14の分散型ブロックチェーン20に含めるようにトランザクションの次のブロックを計算する(すなわち、検証する)ために、カタログインスタンス32が(たとえば、合意アルゴリズムに従って、またはラウンドロビン選択によって)選択されている場合に、ローカルの未検証の待ち行列38におけるペンディングトランザクションについてのハッシュの演算を容易にするための、かつ、ブロックチェーン40、20のブロックについてのハッシュを演算するためのコードを含む。
台帳インターフェイス型モジュール64は、未検証の待ち行列38を、他のカタログインスタンス(すなわち、エコシステムのノード)の未検証の待ち行列46に入力する新しいトランザクションを伝搬することを容易にするためのコードを含む。台帳インターフェイス型モジュール64はさらに、分散型ブロックチェーン20を複製するとともにブロックチェーン20の最新レプリカ40を維持するためのコードを含む。
ローカルコンポーネントカタログ36は、認可されたコンシューマによって選択的にダウンロードされ得るソフトウェアコンポーネントを維持する。ソフトウェアコンポーネントは、登録済みのデベロッパエンティティネームスペースおよび対応する登録済みデベロッパエンティティに関連付けて、認可済みおよび登録済みのコントリビュータによってローカルコンポーネントカタログ36にアップロードされてもよい。
図4は、第2の例示的システム80、デベロッパエンティティを登録するための付随するカタログインスタンスプロセス94、および付随するデベロッパエンティティ登録トランザクション84を、図1~図3の分散型ブロックチェーン台帳20と共に示す。この場合、第2の例示的システム80は図1~図3の実施形態に従って実現されてもよい。
例示的なシステム80においては、たとえば、図2のレジストラシステム42のユーザに対応するレジストラ82は、レジストラシステム42と、図3の付随するUIディスプレイスクリーンおよびオプション70とを用いて、デベロッパエンティティ登録トランザクション84をサブミットする。デベロッパエンティティ登録トランザクション84は、(たとえば、図2のデベロッパエンティティシステム22のデベロッパエンティティに対応する)デベロッパエンティティ名86、デベロッパエンティティの公開鍵88、およびデベロッパエンティティのデジタル署名90を含む。
なお、デジタル署名90が公開鍵インフラストラクチャ(PKI)に従って実現され得るとともに、登録されているデベロッパエンティティの秘密鍵を含み得ることに留意されたい。デジタル署名は、(たとえば、アイデンティティドメインおよび付随する認証機関、たとえば図2のアイデンティティドメイン44によって)認可された(すなわち、分散型ブロックチェーン台帳20および付随の分散型エコシステムに登録することが認可された)デベロッパエンティティの代わりに、レジストラ82が登録をサブミットしていることの確認を容易にする。
この例示的な実施形態においては、レジストラ82は、第1のカタログインスタンス(たとえば、図3のカタログインスタンス32)に対してデベロッパエンティティトランザクション82をサブミットする。第1のカタログインスタンス32は、次いで、最初のデベロッパエンティティ登録プロセス94を実行してから、選択されたカタログインスタンス(たとえば、第1のカタログインスタンス32、第2のカタログインスタンス110または第3のカタログインスタンス112)による分散型ブロックチェーン20に対する最終的なコミット114のために他のカタログインスタンス110、112の未検証の待ち行列に対してトランザクション84を伝搬する。選択されたカタログインスタンス(たとえば、第3のカタログインスタンス112)は、そのブロックチェーン演算モジュール(たとえば、図3のモジュール66)を用いて、トランザクションハッシュおよびブロックハッシュを演算することにより、分散型ブロックチェーン台帳20に対してトランザクション84をコミットしてもよい。
最初のデベロッパエンティティ登録プロセス94は、分散型ブロックチェーン台帳20のトランザクションを後でコミットするためにカタログインスタンスに対してトランザクション84をサブミットする前に、デベロッパエンティティ登録トランザクション84の前処理の形式として、さまざまなステップ98~108を含む。最初の署名検証ステップ98は、たとえば、アイデンティティドメイン(たとえば、図2のアイデンティティドメイン44)の認証機関(CA)を参照するデジタル署名90の検証を含む。
デジタル署名90が検証された後、プロセス94は、同じデベロッパエンティティ名86の既存のデベロッパエンティティ登録のいずれについても、分散型ブロックチェーン20および/または任意の付随する未検証の待ち行列106をチェックする。他の同様のデベロッパトランザクションが予め登録されている(かまたは、他の場合には、その時点で未検証である待ち行列に存在している)場合、現在のデベロッパエンティティ登録プロセス94は、不一致の検出により中断される。
次に、オプションのコミュニティーリード検証ステップ102は、(エコシステムの)オプションのコミュニティーリードで、コミュニティリードが分散型ブロックチェーン20へのデベロッパエンティティトランザクション84の登録に異議を有しているかどうかをチェックするステップを含む。コミュニティリードは、任意には、コミュニティリードがトランザクションをブロックすることが認可(または許可)されなければならないという何らかの理由で、デベロッパエンティティ登録トランザクション84をブロックしてもよい。
オプションのコミュニティリード検証ステップ102の後、登録トランザクション84は、たとえばトランザクション生成ステップ104によって、未検証の待ち行列に含めるためにパッケージされてハッシュされる。なお、ステップ98~102のうちいずれかが終了しない場合にはデベロッパエンティティトランザクション登録プロセス94が中断されることに留意されたい。
デベロッパエンティティ登録トランザクション84は、ローカルの未検証の待ち行列38にサブミットされた後、伝搬ステップ108において、コミット処理114の準備のために、他のカタログインスタンス110、112および付随する未検証の待ち行列(たとえば、図3の待ち行列46)に伝搬される。これにより、未検証の待ち行列38および対応するレプリカ(たとえば、図2のレプリカ46)における1つ以上のペンディングトランザクションの集合が、分散型ブロックチェーン20のうち1つ以上のブロックとしてコミットされるために処理される。
なお、この例示的な実施形態においては、複数のエンティティが1つ以上のクラウドアイデンティティドメイン(たとえば、図2のドメイン44)によってプロビジョニングされているので、所与のカタログインスタンス32、110、112がシステム80のすべてのユーザおよびパーティシパントエンティティについての情報を識別するために既にアクセスしていたかもしれないことに留意されたい。
なお、図2のクラウドアイデンティティドメイン44の使用が、特定の実現例において省略され得る範囲において、任意であることに留意されたい。たとえば、代替的には、ユーザおよびエンティティは、クラウドアイデンティティドメイン以外の他の手段によって識別され得る。さらに、他の実施形態においては、特定のユーザが識別されないままであるかまたは匿名のままであってもよい。
しかしながら、この例においては、各々のユーザおよびエンティティは、図2のアイデンティティドメイン44内における予め定められたアイデンティティに関連付けられている。
この例示的な実施形態は、個々のデベロッパ役割に関連付けられた許可と、個々の組織を表しているデベロッパエンティティに関連付けられた許可とを識別して関連付ける。
複数の個体が単一のエンティティ(たとえば、企業)のためのコンポーネントを開発し得る可能性があり、このため、複数の個体のアイデンティティは、ソフトウェアコンポーネントの所有権および有効性の検証の目的で用いられ得る特定のデベロッパエンティティアイデンティティに(1つ以上のアイデンティティドメインにわたって)マッピングされるかまたは関連付けられることとなる。
しかしながら、分散型ブロックチェーン20は、デベロッパエンティティについての識別子と公開鍵との間のマッピングまたは関連付けを記録する。この例示的な実施形態においては、格納されたアイデンティティは、デベロッパエンティティのアイデンティティを表わしている。ソフトウェアコンポーネントをカタログインスタンスに書込むおよび/またはアップロードする(とともに、コンポーネントおよび当該アップロードをブロックチェーン20に登録する)特定の個体はコントリビュータと称される。
したがって、デベロッパエンティティ登録プロセス94は、デベロッパエンティティの自己登録を表わしている。レジストラ82は、システム80にアクセスできるとともにデベロッパエンティティの登録を希望している如何なるユーザであってもよい。
したがって、(特定の実現例の需要に応じて異なり得る)例示的なデベロッパエンティティ登録プロセス94は、レジストラ82を任意に認証した後、(たとえば、図3のUI制御およびオプション70間に含まれ得るような)「デベロッパエンティティ」UIおよび付随のUI制御の「作成」を用いて、デベロッパエンティティ(たとえば、少なくとも識別名)についての情報84、ただし場合によってはコンタクト情報などを供給することを含む。付加的には、レジストラ82はまた、公開鍵88を供給し、トランザクションにデジタル署名することにより、たとえば、結果として、主張された鍵(たとえば、デベロッパエンティティ秘密鍵)を備えたデジタル署名90が得られることとなる。
カタログインスタンスプロセス94は、次いで、(ステップ98において)供給された公開鍵を用いて署名90を検証し、これにより、レジストラ82が機密の片割れ半分を両方(たとえば、登録されているデベロッパエンティティに関連付けられた公共鍵および秘密鍵の両方)とも所有していることを証明する。次に、(ステップ100において)カタログインスタンス32は、関連するカタログデータストア(たとえば、図3のローカルコンポーネントカタログ36、ならびに/または、図3のローカルの未検証の待ち行列38および/もしくはローカルのブロックチェーンレプリカ40)をチェックして、デベロッパエンティティがまだ規定されていないかまたは規定されるプロセス中であることを確実にする。
任意には、コミュニティリード検証ステップ102は、デベロッパエンティティトランザクション84に対応する要求を検証する。たとえば、特定の実現例においては、追加の手作業の工程(たとえば、署名すべき書類事務)は、分散型ブロックチェーン20に対するトランザクション84のコミットよりも前に、デベロッパエンティティ登録の前段階プロセスを完了する必要があるかもしれない。最後に、登録トランザクションは、(ステップ104において)作成および/またはフォーマットされて、(ステップ108において)他のカタログインスタンス110および112に伝搬される。
伝搬後、所与の登録トランザクションは、分散型ブロックチェーン20にコミットされるまで、未検証の待ち行列(たとえば、図3の未検証の待ち行列46)のレプリカに位置することとなるだろう。作成されたトランザクションは、信頼されていない(すなわち、未検証の)トランザクションとしてエコシステムの他のすべてのフルノード(たとえば、カタログインスタンス110および112)に伝搬される。未検証の待ち行列38は、未検証の待ち行列の未検証のトランザクションがブロックチェーン20にコミットされるまで、対象である未検証のトランザクションに配置することが可能であり得る。
分散型ブロックチェーン20に対するデベロッパエンティティトランザクション84のコミット後、関連するデベロッパエンティティは、分散型ブロックチェーン20にその時点でコミットされているデベロッパエンティティ登録トランザクション84において維持されているとおりに、デベロッパエンティティのアイデンティティに依拠する追加のトランザクションの開始を可能にするのに十分なほどに信頼されていると見なされる。
要約すると、図4は、デベロッパエンティティのアイデンティティ(すなわち、デベロッパアイデンティティ)のために台帳記入を作成するためのシステム80内の基本コンポーネントを例示している。
システム80が示しているレジストラ82は、コンピュータシステム42および付随するカタログインスタンスユーザインターフェイスを用いて、デベロッパエンティティトランザクション情報84によって示されているようにデベロッパエンティティを規定する。レジストラ82は、このプロセスの前に任意に認証することができる。
レジストラシステム42のユーザインターフェイスは、レジストラ82が、識別名86およびセキュリティメカニズム(たとえば、公開鍵88およびデジタル署名90)などのデベロッパアイデンティティについての情報86~90を供給することを可能にするUI制御およびオプションを含む。
なお、レジストラ82が人、ビジネスエンティティ、自動化プロセスなどであり得ることに留意されたい。人がレジストラ82である場合、デベロッパエンティティ登録を実現するためのユーザインターフェイスは、(デスクトップパソコン、ラップトップ、タブレット、スマートフォンまたは他のデバイスであり得る)レジストラシステム42を介してアクセス可能である。
さまざまな実施形態においては、ユーザインターフェイスおよび付随のレジストラシステム42は、全体的または部分的には、ネットワークを介して連結されるサーバ、クラウドサービスなどの遠隔設置されたプロセッサによって、処理することができる。レジストラの機能が自動的に実行される場合、プロセスは、任意の好適な処理ハードウェアおよびソフトウェアを用いてそれら機能を実行することができる。一般には、特に規定のない限り、この明細書中に記載される機能は、さまざまな地理的区域において、さまざまな時点に位置するハードウェアとソフトウェアとの任意の組合せによって実行することができる。
デベロッパエンティティトランザクション84を含む情報86~90は、(この例示的な実施形態においてカタログプロセスとも称される)デベロッパエンティティ登録プロセス94を実現するための、第1のカタログインスタンス32に対する要求によって転送される。
カタログプロセス84内に示されるように、ステップ98~108は、供給された公開鍵88を用いて署名90を検証するステップ、(同じエンティティが既に規定されている場合には)既存のデベロッパエンティティについてチェックするステップ、および、任意には、コミュニティリードに検証(たとえば、手作業で署名する書類事務)を実行させるステップを含む。これらのステップのうちのいずれかに失敗すると、プロセスが中断される。それ以外の場合、トランザクション84はフォーマットされて、未検証の待ち行列38に組込まれるようにサブミットされる。
カタログプロセス94は、対象のレジストラ82、デベロッパエンティティまたは他の実行者から遠隔で実行することができる。たとえば、カタログプロセス94および他のカタログプロセスの機能は、ピア位置などにあるサーバコンピュータ、クラウドサービス、パーソナルコンピュータシステム上で実行することができる。
追加のカタログインスタンス110および112は、第1のカタログインスタンス32のピアの存在を示している。ステップ102でフォーマットされたトランザクション84は、未検証の状態でそれら110、112に伝搬される。最終的に、十分な未検証のトランザクションが待ち行列38内に存在している場合、これらトランザクションが検証されて、これらのカタログインスタンス32、110、112のうちの1つによって(ブロックチェーン20のブロックとして)台帳にコミットされることとなる。検証されたトランザクション、すなわちデベロッパエンティティの定義は、この場合、カタログインスタンス32、110、112すべてがアクセス許可を読取った分散型ブロックチェーン20を介して、これらすべてのカタログインスタンス32、110、112にとって利用可能になるだろう。トランザクションがコミットされると、カタログインスタンス32、110、112はすべて、複製のデベロッパエンティティ登録(すなわち、複数のトランザクション)の生成を防止することとなる。いくつかの実施形態においては、カタログインスタンス32、110、112は、最初のトランザクションが未検証の状態であっても、複製を防止し得る。
デベロッパエンティティがエコシステム80上で登録されて検証されたときには、デベロッパエンティティはフルノード32、110、112すべてに伝搬されてしまっていることになるだろう。その後、1つ以上のネームスペースがデベロッパエンティティに割付けられてもよい。ネームスペース登録プロセスは、デベロッパエンティティ機密を所有しているいずれの個体によっても開始することができるという点で、最初のデベロッパエンティティ登録プロセスと同様であり得る。
カタログエントリおよびインスタンスのピア・ツー・ピア伝搬および検証は、仮想通貨実現例(たとえばBitcoin、Dogecoinなど)において用いられる共有台帳のアプローチと同様であり得る。しかしながら、仮想通貨のシステムとは対照的に、ブロックの生成は演算集約的にされる必要はない。なぜなら、企図されるソフトウェアコンポーネント・エコシステム80が、要望に応じて(たとえば、図2の例示的なアイデンティティドメイン44によって)認証することができる既知のエンティティを含んでいるからである。したがって、(仮想通貨アプリケーションにおいて「マイニング(mining)」と称されることもある)時間のかかる演算要件は不要となる。
図5は、図4の第2の例示的システムおよび付随するエコシステム80によって実現可能であるとともに図1~図3の関連するエコシステムによっても実現可能である第1の例示的な方法120を示すフロー図である。
第1の例示的な方法120は、たとえば、図4のレジストラ82によって、デベロッパエンティティ名、公開鍵およびデジタル署名をカタログインスタンス(たとえば図4のカタログインスタンス32)に対してサブミットするステップを含む、追加情報サブミットステップ122を含む。
次に、(たとえば、図4のデベロッパエンティティ登録トランザクション情報84に対応する)サブミットされた情報は、検証ステップ124において検証され、次いで、情報がブロックチェーンおよび/または未検証の待ち行列において複製のエントリを表わしているかどうかがチェックされる。これらのチェック124および126がともにパスした場合、関連するデベロッパエンティティ登録トランザクションがステップ128において未検証の待ち行列の上に配置されて、ステップ130において他のカタログインスタンスに伝搬される。それ以外の場合、トランザクション登録プロセスが処理は異常終了する。
他のカタログインスタンス(すなわち、ノード)に対するトランザクションの伝搬の後、これらノードは、他のカタログインスタンスに対するトランザクションを伝搬しているカタログインスタンス(たとえば、図4のカタログインスタンス32)についてピア資格条件が満たされているかどうかを集約的に判断してもよい。登録を実行するカタログインスタンスが(所与の実現例のニーズに応じて異なり得る)予め定められたピア資格条件を満たさない場合、登録プロセスは失敗となる。それ以外の場合、利用可能なカタログインスタンスのうちのカタログインスタンスは、分散型ブロックチェーン台帳(たとえば、図4のブロックチェーン20)に対してトランザクションをコミットするのに必要とされる演算(たとえば、ハッシュの演算)を実行するためにステップ134において選択される。
1つ以上のトランザクションのグループを検証済み待ち行列から分散型ブロックチェーン(たとえば、図4のブロックチェーン20)に転送するために演算を実行するための所与のカタログインスタンスを選択するのに用いられるアルゴリズムまたは方法は、実現例特有のものであるとともに、所与の実現例のニーズに応じて異なり得る。たとえば、特定の実施形態においては、第1の利用可能なカタログインスタンス(または最も利用可能なコンピューティングリソースを用いたインスタンス)は、演算を実行するためにカタログインスタンスとして選択されており、他の実現例においては、カタログインスタンスは、どのカタログインスタンスが演算を実行すべきであるかを判断するためにカタログインスタンスの多数決を取ってもよく、さらに他の実現例においては、カタログインスタンスは、(ラウンドロビンアプローチによって)ブロックを順番にコミットしてもよい。
要約すると、図5は、図4のシステム80によって実現され得る方法120のフローチャートを示す。ステップ122は、図4の分散型ブロックチェーン台帳20にコミットされるべき新しいトランザクションとして集合的に提案されているデベロッパエンティティ名、公開鍵およびデジタル署名を受取るために実行される。
ステップ124においては、デジタル署名を検証するためにチェックがなされる。検証が失敗すると、プロセスが障害状態で終了し、トランザクションは台帳にコミットされない。それ以外の場合、署名が検証をパスする場合、ステップ126に進んで、複製のエンティティ(たとえば、先に用いられていた名前)についてチェックがなされる。チェック126が失敗すると、上述のようにプロセス120は異常終了する。それ以外の場合、待ち行列にトランザクションを配置するためにステップ128が実行される。次に、ステップ130において、トランザクションが、ネットワーク上の他のピアプロセス(すなわち、ピア・ツー・ピア・コンポーネント・エコシステムの一部である)にとって利用可能にされる。
ステップ132および134は、基礎をなす台帳のルールに従ってトランザクションを含むブロックを検証し、次いで、トランザクションがコミットされた分散型ブロックチェーン台帳(たとえば、図4のブロックチェーン20)によって、トランザクション情報をコミットしてすべてのカタログインスタンスにわたって共有する。
図6は、UIディスプレイスクリーン70を介する図3のユーザデベロッパコンピューティングシステム62などのコンピューティングシステム上に表示され得る例示的なUIディスプレイスクリーン140を示す。例示的なUIディスプレイスクリーン140は、ソフトウェアコンポーネントのカタログをブラウズしたり、(たとえば、サーチボタン146によって)サーチしたり、(たとえば、ダウンロードボタン148によって)ダウンロードしたり、(たとえば、編集ボタン150によって)編集したり、付随するコンピューティングシステムがアクセスするカタログインスタンス(たとえば、図3のカタログインスタンス32)によって維持されるカタログエントリ/オプション144からソフトウェアコンポーネント156、158、186、188を(たとえば、削除ボタン152によって)削除したりするための、さまざまなUI制御およびオプション144~180を含む。
この例示的な実施形態においては、カタログ144におけるソフトウェアコンポーネントは、特徴とされるコンポーネント160およびプライベートコンポーネント180に分割される1つ以上の対応するコンポーネントカード156、158、186および188によって示される。
ソフトウェアコンポーネントの各々は、コンポーネント名162、172、192および202、対応するファイル名164、174、194および204、ならびに記述166、176、196、206を含む。所与のコンポーネントUIカード156、158、186、188がユーザによって選択されてもよい。カードを右クリックすると追加のユーザオプションが現われ得る。これら追加のユーザオプションは、たとえば、所与のコンポーネントについてより多くの情報のドリルダウンを行なったり、コンポーネントと対話する(たとえば、コンポーネントをダウンロードする)ために追加のユーザオプションおよび制御にアクセスしたりするためのものである。なお、カードの右クリックとは対照的に、「詳細ボタン」の選択などの他のUIアフォーダンスが、本教示の範囲から逸脱することなく用いられてもよい。
要約すると、例示的なUIディスプレイスクリーン140はカタログUIのうちの例示的な一部分を表わしている。UIディスプレイスクリーン140は、ソフトウェアコンポーネントについての情報を含むさまざまな例示的UIカードまたはサムネイル156、158、186、188を示している。
なお、各々のコンポーネントカード156、158、186、188が追加情報を示し得ること、たとえば、グラフ図の情報または画像(たとえば、コンポーネントが生成するUIディスプレイスクリーンの画像)、著者情報、ネームスペース指定、コンポーネントについてのさらに詳細な説明、所与のコンポーネントの状態(たとえば、開発サイクルにおけるサポート状態または位置)、コンポーネントがダウンロードされた回数、コンポーネントがデモであるか否か、などを含み得ることに留意されたい。他の実施形態においては、他のタイプの情報を提供することに加えて、コンポーネントを表わすためのさまざまな方法を用いることができる。
例示的なコンポーネントUIカード156の場合、名前は「ora-card-layout」と示される。この例示的な方式における名前の最初の部分「ora」は、基礎の「ネームスペース」と称される。その後ろに、完全かつ固有のコンポーネント名を形成するための追加のテキストを追加することができる。
なお、コンポーネントについてのネームスペースも、図6に示されるコンポーネント名接頭辞アプローチと同様に、またはこの代わりに、いくつかのシステムにおけるコンポーネントメタデータ中のどこかに記録され得ることに留意されたい。しかしながら、どちらのアプローチにおいても、関連するエコシステムにおける各コンポーネントごとに最終的に固有となるネームスペースおよびコンポーネント名が、ローカルのソフトウェアコンポーネントカタログの利用可能なソフトウェアコンポーネントを示す所与のUIディスプレイスクリーンに示される。エコシステムは、いくつかの実施形態においては、所与のいずれかのコンポーネントについての固有のアイデンティティを規定するために、ネームスペースおよびコンポーネント名に加えて、合成アイデンティティ、たとえば、128ビットのユニバーサルユニーク識別子(Universal Unique IDentifier:UUID)、を割付けてもよい。
各々のデベロッパエンティティには基礎のネームスペースが割当てられる。基礎のネームスペースは、1つ以上の用語であり得、その後ろに、デベロッパが選択する際の追加の記述子または名前が追加され得る。(たとえば、コンポーネントUIカード186のファイル名194に対応する)名前「ojx」は、図6に示されるコンポーネントにおける基礎のネームスペース指示子の別の例である。なお、図6の例においては、基礎のネームスペースが3文字であるが、他の実施形態においては、如何なる数またはタイプの指示を用いていもよいことに留意されたい。
なお、さまざまなコンポーネントUIカード156、158、186、188が、各々の識別されたコンポーネントに関連付けられたブロックチェーン登録情報に関する追加情報を示し得ることに留意されたい。たとえば、検証されてブロックチェーン台帳にコミットされた情報(たとえば、コンポーネントを供給する際に用いられるコンポーネント名、ネームスペース、所有者、状態およびライセンス情報も閲覧可能である。
この例示的な実施形態においては、カタログUIは、付随するブロックチェーントランザクションにおけるそのコンポーネントについての対応する登録のチェックサムと一致するチェックサムを有していることなどによって、検証されるダウンロードすべきソフトウェアコンポーネントについてのUIカードを表示するだけであるだろう。
なお、ユーザがたとえばコンポーネントをダウンロードなどの動作を実行する場合、ダウンロードプロセスは、そのコンポーネントのためのダウンロード登録プロセスの完了を含み得ることに留意されたい。さらに、例示的なUIディスプレイスクリーン140に示されるもの以外の追加のUI制御およびオプションが実現可能であることに留意されたい。たとえば、さまざまなタイプのブロックチェーン登録トランザクションなどを開始する、コンポーネントをアップロードするための追加のオプションが提供されてもよい。
図7は、第3の例示的システム210によって表わされるピア・ツー・ピア・ソフトウェアコンポーネント・エコシステムの(カタログインスタンスと称される)相互に通信するノード214~218によって維持されるブロックチェーン212および230の初期状態を例示する(ソフトウェアコンポーネント・エコシステムを表わす)第3の例示的なシステム210を説明する第1のブロック図である。図7は、空のルートブロック212(ブロック0)を備えた(ブロックチェーンのブロック212の分散型レプリカ230~236として明示する)ブロックチェーンを含むシステム210の例示的な初期状態を示す。
この例示的な実施形態においては、3つのカタログインスタンス214~218は、さまざまなコンピュータシステムおよび/または仮想マシン上で実行されるソフトウェアを表わす。この場合、コンピュータシステムおよび/または仮想マシンはネットワークを介して相互に通信する。カタログインスタンス214~218は、1つ以上のクラウド(たとえば、1つ以上の相互通信サーバの集合)によって実現されてもよい。
カタログインスタンス214~218の各々は未検証の待ち行列224~226と共に初期状態で示されている。説明の便宜上、未検証の待ち行列は、コンピューティングオブジェクトが処理されてブロックチェーン230~236に含まれる前に、コンピューティングオブジェクト(たとえば、1つ以上のトランザクションに対応するコンピューティングオブジェクト)を格納するための如何なるデータストレージメカニズムであってもよい。なお、ブロックチェーン230~236が、カタログインスタンス214~218間で共有されるかまたは複製されるブロックチェーンの個々のレプリカを含むことに留意されたい。
カタログインスタンス230~226の内容212の共有は、各々のカタログインスタンス214~218によって実現されるソフトウェアによって実現されてもよい。この場合、ソフトウェアは、それぞれのブロックチェーン230~236間でのブロックチェーン内容212の複製を含む、カタログインスタンス214~218間の通信を可能にするためのコンピュータコードを含む。なお、ブロックチェーン230~236がその時点で最初のルートブロック(最初の端末ブロック、ブロック0またはゼロ番目のブロックとも称される)212だけを含んでいることに留意されたい。最初は、最初の端末ブロック212には、他の場合にブロック212のペイロードセクション220に格納される可能性もあるトランザクションが無い可能性がある。
なお、この明細書中に記載されるとともに以下においてより詳細に説明されるトランザクションペイロード、トランザクションハッシュ、トランザクション公開鍵、ブロックハッシュ、ブロックペイロードなどは単なる例示に過ぎず、この教示の範囲から逸脱しない程度に異なっていてもよい。さらに、実現可能なトランザクションのほんの小規模な例示的サブセットだけがこの明細書中においてより十分に例示および記載されている。この教示を利用できる当業者であれば、所与の実現例のニーズを満たすために、過度の実験を行うことなく、さまざまなエコシステムノードによって選択的にアクセスできるようにブロックチェーンに収集、検証、格納するために、この明細書中に記載される実施形態を容易に実現および使用し得る。
最初の端末ブロック212はこの使用事例においてはゼロである(前のハッシュと称される)前のブロックのハッシュのためのフィールドを備えたハッシュセクション222を含む。ハッシュセクション222はさらに、例示の目的で、#2ab4と示される現在のハッシュ(ブロックチェーンのための開始ハッシュとも称される)を含む。なお、ハッシュ記号「#2ab4」の「#」は、SHA-256(Secure Hash Algorithm(セキュアハッシュアルゴリズム)-256)または他のタイプのハッシュであり得る、より長いハッシュ値についてのワイルドカード文字またはプレースホールダを表わし得ることに留意されたい。使用される正確なタイプのハッシュは実現例特有のものであってもよく、本教示の範囲から逸脱しない程度に異なっていてもよい。
図8は、第1の例示的トランザクション(すなわち、デベロッパ登録トランザクション)240が、本使用事例において第1のカタログインスタンス214である発生元カタログインスタンス(たとえば、第1のカタログインスタンス)によって、カタログインスタンス214~218の未検証の待ち行列224~226に伝搬された後における、図7の第3の例示的システム210を示す第2のブロック図である。
なお、所与のカタログインスタンス214~218が、所与のカタログインスタンス214~218に対するアクセスのために(たとえば、公開鍵インフラストラクチャ(PKI)によって)認証されたデベロッパエンティティ(または他のエンティティ)のデベロッパコンピュータ(デベロッパシステムと称される)と通信し得ることに留意されたい。カタログインスタンス214~218は、ソフトウェアコンポーネントのデベロッパ、コントリビュータおよび/またはコンシューマが、カタログインスタンス214~218での初期認証および登録中に供給されるクレデンシャルに関連付けられた特権に従って、認証済みの特定のカタログインスタンス214~218へのおよび/またはからのソフトウェアコンポーネントのアップロードおよび/またはダウンロードを実行することを可能にするためのUIディスプレイスクリーンを生成することを容易にするために、ソフトウェアを実行してもよい。
なお、所与のデベロッパ(および/またはコントリビュータ、コンシューマなどの)エンティティ(たとえば、企業)は、特定のデベロッパユーザおよび関連するコンピュータシステムをカタログインスタンス214~218の1つ以上にインターフェイス接続するために、レジストラエンティティを用いてもよい。たとえば、トランザクションのダウンロードおよび/またはアップロード、さまざまなタイプの登録の開始、などを実行するためにカタログインスタンス214~218と通信するデベロッパおよび関連するコンピュータシステムは、デベロッパが属するデベロッパエンティティのためのプロキシとして機能し得る。
図8に示されるように、この使用事例においては、第1のカタログインスタンス214は、ブロックチェーン230~234に登録されるべき第1のトランザクション240を受取っていた。第1のカタログインスタンス214は、第1のトランザクション240を作成して第1の未検証の待ち行列224に格納するとともに第1のトランザクション240のコピーまたはレプリカをエコシステムノード214~218の他の未検証の待ち行列226~226に伝搬することを容易にするためのコンピュータコードを含む。
第1の例示的なトランザクション240は、(たとえば、「レジスタデベロッパ」トランザクションタイプを指定する)タイプ情報と、デベロッパエンティティ情報(たとえば、「example.com」)とを含む第1のトランザクションペイロードセクション250を含む。なお、第1のトランザクション240のトランザクションペイロードセクション250に格納されたデータが単に例示的なものに過ぎず、本教示の範囲から逸脱しない程度に異なり得ることに留意されたい。
さらに、この教示の範囲から逸脱することなく、トランザクション240の他のセクションからの1つ以上のデータアイテム(たとえば、ハッシュセクション252)が、ペイロードセクション250に含まれていてもよく、および/または、この逆も同様に可能であってもよい。第1の例示的トランザクション240のハッシュセクション252は、第1のトランザクション240のデベロッパエンティティ登録者に関連付けられた第1のトランザクションハッシュ(たとえば、#177e)および公開鍵(たとえば、#e56c)を含む。
第1のデベロッパ登録トランザクション240の生成後、第1のカタログインスタンス214は、他のカタログインスタンス216および218の未検証の待ち行列226および226に最初に格納するために第1のトランザクション240を伝搬するためのピア・ツー・ピア・エコシステムソフトウェアおよびソフトウェアインターフェイス型ブロックチェーンを含む。なお、他のノード216および218が、ネットワークレイテンシなどに応じて、必ずしも同時に第1のトランザクション240を受取らない可能性もあることに留意されたい。
図9は、デベロッパ登録トランザクション240を処理(たとえば、検証または確認)するために(選択ルールまたはアルゴリズムに従って)選択されたカタログインスタンス(たとえば、第2のカタログインスタンス216)による、最初のデベロッパ登録トランザクション240の検証およびブロックチェーン230~236に対するコミットの処理中における、図8の第3の例示的なシステムを示す第3のブロック図である。
なお、ブロックチェーン230~236のブロックに組込むべきトランザクション240の処理および検証をカタログインスタンス214~218のいずれが担うこととなるかを判断するのに用いられる選択ルールまたはアルゴリズムは、実現例特有のものであってもよく、所与の実現例のニーズに応じて異なっていてもよいことに留意されたい。たとえば、特定の実施形態においては、第1の利用可能なカタログインスタンス214~218が処理のために選択される。他の実施形態においては、単一のカタログインスタンス214~218が、ブロックチェーンブロックへの組込みのためにすべてのトランザクションの処理専用にされている。他の実施形態においては、すべてのカタログインスタンス214~218がトランザクションを同時に処理するとともに、最初に処理を完了するべきカタログインスタンス214~218が、結果として生じる検証済みブロックをブロックチェーン230~236に対してコミットする。他の実施形態においては、ブロックの処理を完了するのに必要な処理と労力が、カタログインスタンス214~218の各々に関連付けられた信頼性スコアまたはメトリックに従って割付けられてもよい。他の実施形態においては、どのカタログインスタンス214~218が1つ以上のトランザクションの所与のセットを処理すべきかをこれらカタログインスタンス214~218が判断することを可能にするためのコンセンサスまたは投票メカニズムが用いられる。
第1のデベロッパ登録トランザクション240の(この明細書中においてトランザクション検証または確認と称される)処理中に、選択されたカタログインスタンス216は、最初に、第1のトランザクション240が組込まれるべきブロックについてのツリーハッシュを演算する。ツリーハッシュ(たとえばマークルツリー)は、(この場合、第1のデベロッパ登録トランザクション240だけを含む)すべてのペンディングトランザクションのハッシュを含んでいる。結果として生じるツリーハッシュ(たとえば、#DD34)は、以下においてより十分に記載されるように、第1のデベロッパ登録トランザクション240のために作成されたブロックに組込まれている。
要約すると、ブロックチェーン230~236における新しいブロックに対するトランザクションのコミットに備えて、任意の顕著なトランザクションをロールアップするように、カタログインスタンスによって実現されるプラグ接続可能な検証機能に基づいて、1つ以上のノード(カタログインスタンス214~218)が割当てられる。
ノードがいくつ含まれているかについての判断は実現例ごとに異なり得る。ノードがすべて信頼されている単純な実現例においては、単一のノードがトランザクション確認を担っている可能性がある。他の実現例においては、複数のノードが同時に検証を行なって、結果を比較してコンセンサスを得る可能性もある。トランザクション確認プロセスおよびブロック生成は、基礎をなすブロックチェーン実現例の詳細に基づいて異なっていてもよい。この例示的な実施形態においては、ハッシュ値(たとえば、T1ハッシュ#DD34)を計算するための難易度レベルを選択的に変える必要はない。しかしながら、特定のエコシステム内の全体的な信頼レベルに応じて、および/または、共有されたブロックチェーン230~236に対するトランザクション240のコミットを含むトランザクション確認を実行するために割当てられた個々のカタログインスタンス214~218に関連付けられた信頼レベルに従って、ブロックハッシュ演算難易度レベル(および/または他のプルーフオブワーク(proof-of-work)の難易度レベル)がスケーリングされ得ることに留意されたい。
図10は、選択されたカタログインスタンス216によるブロックチェーン230~236のためのブロック260の(検証または確認とも称される)演算中における、図9の第3の例示的なシステム210を示す第4のブロック図であって、ブロック260は、図9のデベロッパ登録トランザクション240を含む未検証の待ち行列224~226にペンディングトランザクションを含んでいる(この場合、T1とも称されるトランザクション240を1つだけ含んでいる)。
第2のカタログインスタンス216は、(T1ツリーハッシュ#DD34の演算後に)ブロック260の確認を完了する。ここでは、第1のブロック260についての第1のブロックハッシュ(#6ccf)を作成することを含む。ブロック1(B1)ハッシュとも称される第1のブロックハッシュ(#6ccf)は、前のブロックハッシュ(B0ハッシュ#2ab4)を選択的にハッシュすることによって、および/または、(所与の実現例のニーズを満たすために必要であり得るかまたは必要であり得ない)T1ツリーハッシュ#DD34および他の情報(たとえば、第1のデベロッパ登録トランザクション(T1)240に格納された情報)と組合わせるかもしくは組込むことによって、演算される。結果として得られるB1ハッシュは、直前のブロック212のハッシュ(B0ハッシュ)と共に第1のブロック(B1)260に含まれている。
なお、第1のブロック(B1)260が、第1のトランザクション240またはそのハッシュされたバージョンもしくは符号化されたバージョンを含むトランザクションセクション262を含むことに留意されたい。例示を目的として、B1ブロック(B1ハッシュ)#6ccfのためのハッシュと、前のブロック(B0ハッシュ)#2ab4のためのハッシュとを含むハッシュセクション266が示される。
トランザクションセクション262はT1ツリーハッシュ#DD34を用いて符号化されてもよい。この例示的な実施形態においては、B1ブロックは、T1ツリーハッシュ#DD34、B1ハッシュ#6ccff、およびB0ハッシュ#2ab4を含む少なくとも3つのハッシュと、第1のトランザクション(T1)240のための公開鍵#e56cとを含むかまたは組込んでいる。B1ブロック260におけるT1トランザクション240はまた、図9に示されるように(T1ツリーハッシュ#DD34を演算するのに用いられる)T1トランザクションハッシュ#177eを組込んでいてもよく、および/または格納していてもよい。
公開鍵#e56cはまたハッシュを表わしていてもよい。さらに、特定の実現例において、B1ハッシュ#6ccfが、B1ブロック260を符号化するかもしくはハッシュするために用いられてもよく、および/または、B1ブロック260を表すコンピューティングオブジェクトもしくは記録に単に含まれていてもよいことに留意されたい。
(T1トランザクション240を符号化するのに用いられ得る)T1ツリーハッシュ#DD34を含むさまざまなハッシュ266の演算後、B1ブロックが検証されており、第2のカタログインスタンス(C2)216によるエコシステム210の他のカタログインスタンス214および218への伝搬の準備ができている。
要約すると、第2のカタログインスタンス216は、T1ツリーハッシュ#DD34および関連するトランザクションを記録する新しいブロック260を作成する。新しく確認されたブロック260は、図11に示されるように、ブロックチェーン230~236の端末ブロックになる。
図11は、第2のカタログインスタンス216によって処理されたブロック260がブロックチェーン230~236にコミットされて、エコシステム210のカタログインスタンス214~218の各々によって維持されるブロックチェーンレプリカに伝搬された後における、図10の例示的なシステムを示す第5のブロック図である。なお、T1トランザクション240がこのとき検証されて、他のカタログインスタンス214~218に伝搬されたブロック260にコミットされているので、T1トランザクション240が未検証の待ち行列(すなわち、そのレプリカ)224~226から除外されることに留意されたい。
図12は、第2のカタログインスタンスが第2のトランザクション(すなわち、第1のネームスペース登録トランザクションT2)270を開始して、ソフトウェアコンポーネント・エコシステム210における他のカタログインスタンス214~218のうち未検証の待ち行列224~226に対して第2のトランザクションT2270を伝搬した後における、図11の例示的なシステム210を示す第6のブロック図である。
第2の例示的なトランザクション(T2)270は例示的なトランザクションペイロードセクション272を含む。例示的なトランザクションペイロードセクション272は、(たとえば、このトランザクション270がネームスペーストランザクションであることを示している)トランザクションタイプ情報と、T2トランザクション270に関連付けられたデベロッパエンティティ名(たとえば、example.com)と、T2トランザクション270に関連付けられたネームスペース登録に結び付けられるデベロッパエンティティ(example.com)に関連付けられたネームスペース情報(たとえば、1つ以上の付加的な名前および/または用語の集合のために用いられ得る名前)とを含む。例示を目的として、T2トランザクション270のためのトランザクションハッシュ(T2ハッシュ#4af5e)を備えたハッシュセクション274を含むT2トランザクションが示されている。
図12のこの使用事例においては、第2のカタログインスタンス216は、T2トランザクション270の生成と、他のカタログインスタンス214および218の未検証の待ち行列224~226へのその後の伝搬とを容易にする。
要約すると、ネームスペーストランザクション(T2)270が、デベロッパエンティティについての新しいネームスペース(たとえば、ECOM)を登録するために(たとえば、デベロッパエンティティexample.comのレジストラによって)サブミットされる。第2のカタログインスタンス216は、ECOMと称されるネームスペースについてのデベロッパエンティティによるネームスペース登録トランザクションを表わすT2トランザクション270を作成する。このT2トランザクション270は、エコシステム210にわたってブロードキャストされるので、他のすべてのノード214~218がそのコピーを受取るが、依然として、ブロックチェーン230~236のいずれのブロックにおいても記されておらず、このため、その状態は図12においてペンディング中である。なお、受取りタイミングがネットワークレイテンシまたは他の要因に依存する可能性があるので、すべてのノード214および218がトランザクションを同時に受取るとは限らないことに留意されたい。
なお、カタログインスタンス214~218がいずれも、(これらすべてが、ファイル上に検証済みデベロッパエンティティを有しているように、たとえば、ブロックチェーン230~236のB1ブロック260に格納されているように)トランザクション(たとえば、T2トランザクション)を収集、処理および伝搬し得る一方で、例示を目的として、この使用事例が第2のカタログインスタンス216によるトランザクション生成を含むことに留意されたい。
なお、いくつかの実現例においては、本来のデベロッパ登録がブロックチェーン230~236におけるいくつかのブロックの深さになるまで、デベロッパに対するネームスペースの登録が選択的に制限されている。この場合、この深さは、ブロックチェーン230~236に対する読取り/書込みアクセスを行うカタログインスタンス214~218および/または他のノードに関連付けられた実現例および信頼のレベルに応じて異なっていてもよい。これにより、デベロッパ登録が明確に限定されていることと、我々がたとえばエコシステムにおいて用いているコンセンサスメカニズムが信頼されていないかまたは十分に信頼されていないカタログインスタンスを採用している場合にオプションの違いによってデベロッパ登録がロールバックされ得ないようにすることと、を確実することが容易になり得る。
図13は、第3のカタログインスタンス218が第3のトランザクション(すなわち、第2のネームスペース登録トランザクションT3)280を開始して、これがソフトウェアコンポーネント・エコシステムにおける他のカタログインスタンス214,216のうち未検証の待ち行列224~226に伝搬された後における、図12の例示的なシステム210を示す第7のブロック図である。
T3トランザクション280はまた、トランザクションペイロードセクション282と、T3トランザクションのためのハッシュ(T3ハッシュ#45bf)を含むハッシュセクション284とを含む。なお、別個のハッシュセクション284が図12のトランザクション270および図13のトランザクション280に示されている一方で、トランザクションハッシュ(#4af5e、#45bf)がそれぞれのトランザクション270および280を符号化するのに用いられ得ることに留意されたい。
要約すると、ブロックチェーン230~236に対するT3トランザクションのコミットの準備のために第3のカタログインスタンス218が未検証の待ち行列224~226にT3トランザクション280をサブミットしていることを除いては、第3のカタログインスタンス218によるT3トランザクションの生成および伝搬は、T2トランザクションの生成および伝搬と同様に実行される。
図14は、ブロックチェーン230~236に含めるべき付加的なブロック(以下の図15に示されるように、B2)を検証するために第1のカタログインスタンス214が選択された後における、図13の例示的なシステム210を示す第8のブロック図であって、付加的なブロックは図12の第2のトランザクション(T2)270および図13の第3のトランザクション(T3)280を組込むためのものである。なお、所与のブロックについて確認を実行するために特定のカタログインスタンス(たとえば、第1のカタログインスタンス214)を選択することは、予め定められた選択メカニズム(たとえば、ルールおよび/またはアルゴリズム)に従って行なわれてもよいことに留意されたい。正確なルールまたはアルゴリズムは実現例特有のものであって、所与の実現例のニーズに応じて異なり得る。
第1のカタログインスタンス214は、さまざまなトランザクションハッシュ274および284(たとえば、それぞれ#4af5eおよび#45bf)を用いてツリーハッシュを計算することによって、ペンディング中のトランザクション240および280の組込みの準備のために、演算を開始する。ハッシュがどのように計算されるかについての正確な詳細は実現例特有のものであって、異なっていてもよい。この教示を利用できる当業者であれば、過度の実験なしに所与の実現例のニーズを満たすために、特定のハッシュアルゴリズムを容易に選択および実現し得る。
図15は、ソフトウェアコンポーネント・エコシステム210のブロックチェーン230~236に追加されるべき付加的なブロックの演算中における、第1のカタログインスタンスを示す図14の例示的なシステムを示す第9のブロック図である。B2ブロック290はトランザクションセクション292を含む。トランザクションセクション292は、組合わされたツリーハッシュ(T2トランザクションハッシュとT3トランザクションハッシュとを組合わせたものであって、T2-T3ツリーハッシュ#A324と表される)およびT2およびT3トランザクション294を含むかまたは組込んでいる。ハッシュセクション296は前のブロックハッシュ(B1ハッシュ#6ccf)および現在のブロックハッシュ(B2ハッシュ#d21d)を含む。
したがって、第1のカタログインスタンス214は、T2(図14の70)およびT3(図14の80)のツリーハッシュを組込んだ新しいブロック290を作成する(すなわち、ブロック検証を実行する)。B1ハッシュ#6ccfは、前のハッシュ(すなわち、ブロック260のハッシュ)を表わしている。B2ハッシュは、組合わされたツリーハッシュ#A324、B1ハッシュ#6ccf、および、任意には追加情報(たとえば、制御情報および/またはトランザクションセクション292からの情報)に基づいて計算される。ブロック290が構築されて、さまざまな付随ハッシュについての計算が完了すると、B2ブロックは、図16に示されるように、新しいブロックB2として組込まれるようにブロックチェーン230~236に伝搬される。
図16は、第1のカタログインスタンス214が付加的なブロックの処理を完了して、ソフトウェアコンポーネント・エコシステム210のブロックチェーン230~236に付加的なブロック290を伝搬した後における、図15の例示的なシステム210を示す第10のブロック図である。関連するT2(図14の70)およびT3(図14の80)トランザクション294は、B2ブロック290にコミットされた後に、未検証の待ち行列224~226から除外される。
なお、ソフトウェアコンポーネント登録、コンポーネント使用登録、および、他のトランザクションタイプを含むさまざまなタイプのさらに別のトランザクションが3つのトランザクションT1、T2、T3について上述されたのと同様の態様で進められ得ることに留意されたい。ゼロまたはより多くのトランザクションが、(未検証の待ち行列224~226とも称される)ペンディング中のトランザクション待ち行列から選択的に処理されて確認済みブロックにされてもよく、これが、次いで、チェーン230~236に追加される。
ブロックチェーン230~236に対して読取り/書込みアクセスを行う新しいカタログインスタンスまたは他のノードが作成されて、エコシステム210に追加される場合、新しいノードがブロックチェーン230~236を処理して、ブロックチェーン230~236における登録に基づいてシステム210についての正確なビューを再構築することができる。いくつかの実現例においては、システム210は、ブロックチェーン230~236から情報を選択的に抽出し、便宜的に異なる形式で格納するかまたは性能を向上させ得る。ブロックチェーン230~236は、ブロックチェーン230~236内の情報から再構築することができる、エコシステム210の重要な状態を記述する真実および情報のソースを表わしてもよい。
従来より、コンピューティング・エコシステムは、概して、1.集中制御(たとえば、アップル(Apple)のアプリストア)、または、2.いわゆるワイルドウェスト(Wild West)(たとえば、独立したデベロッパ製品についてウェブをブラウズするユーザのウィンドウズ(登録商標)(Windows(登録商標))モバイルメソッド)に限定されている。
なお、1つ以上のブロックチェーン特徴を用いることは、他のタイプのデータ記録またはデータベースとは対照的に、既に信頼されているコンピューティング環境(すなわち、ネットワークノードおよびリソースのうちのいくつかまたはすべてが既に制御されていて信頼されているエコシステム)においては、(以下に記載されるいくつかの実施形態の範囲内の特定の実現例の場合)実質的に不必要であり得ることに留意されたい。このようなエコシステムは、トランザクションについてのコンセンサスベースの評価を必要としない可能性もあり得るので、競合、チェイニングおよびハッシングは、ブロックチェーン以外の別のタイプの分散型データベースによって実現され得る、タイムスタンプが押された登録の分散型ストレージほど重要ではあり得ない。
したがって、(提案されたエコシステムの局面を含む)さまざまな実施形態は必ずしもすべてがブロックチェーン分散型台帳の使用を必要とするわけではない。ブロックチェーン実現例は、特に、信頼されていない環境を含む実現例における特定の実施形態を表わし得る。
言いかえれば、「プルーフオブワーク」と称されるメカニズムを用いる「ブロックチェーン」は、いくつかの信頼されている環境において要求される必要がない。なお、図7~図16に関連付けて上述された特定の実施形態においては、「ブロックを演算する作業」は、ハッシュの演算によって実現できることに留意されたい。
図17は、図1~図16の実施形態によって実現可能な第2の例示的な方法300のフロー図である。例示的な方法300は、ソフトウェアコンポーネント・エコシステム(たとえば、図1~図3の実施形態に従って構築されるエコシステム)を実現することを容易にする。
第2の例示的な方法300は第1のステップ302を含む。第1のステップ302は、ユーザ入力デバイスから1つ以上の信号を受取って、デベロッパエンティティの識別名を規定するステップを含む。たとえば、図4を参照すると、これは、デベロッパエンティティトランザクション84(すなわち、デベロッパエンティティ名86)に関するレジストラ82からの入力を受取るレジストラシステム42を含み得る。
第2のステップ304は、ユーザ入力デバイスから1つ以上の信号を受取って、(デベロッパエンティティが識別名を登録することが認可されていることを確認するために使用可能である)安全な検証メカニズムを規定するステップを含む。たとえば、図4を参照すると、セキュリティメカニズムは、デベロッパエンティティ検証のための公開鍵88およびデジタル署名90を処理するための公開鍵インフラストラクチャを実現し得る、たとえば、アイデンティティドメイン(たとえば、図2のアイデンティティドメイン44)および/またはカタログインスタンス32のセキュリティおよび許可モジュール(たとえば、図3のモジュール62)によって使用されるべき、公開鍵88およびデジタル署名90を含み得る。
第3のステップは、カタログ(たとえば、図4の第1のカタログインスタンス32)によって実現される分散型データベースにエントリを記録するステップを含む。最初の記録するステップは、ブロックチェーン20を同様に含む分散型台帳(たとえば、図3の分散型台帳14)を実現する分散型データベースの分散型未検証待ち行列38における対応するエントリを記録する前にデベロッパエンティティトランザクションデータを検証するステップを含み得る。記録されたエントリがブロックチェーン20にコミットされると、この記録されたエントリは、図3の分散型台帳14および付随のブロックチェーン20に登録されることが明らかである。最初に記録されたエントリは検証メカニズムに関連付したデベロッパ名を含む。
第4のステップ308は、カタログ(すなわち、カタログソフトウェアの実行インスタンスによって実現される分散型データベースまたは台帳)のエントリに関連付けてトランザクションを実行して、ソフトウェアコンポーネントを転送するステップを含む。このトランザクションも、登録済みのデベロッパエンティティおよび1つ以上の関連するネームスペースと関連付けてコントリビュータとして台帳に登録した登録済みコントリビュータ(たとえば、個々のデベロッパ)によるソフトウェアコンポーネントダウンロード登録トランザクションとして、分散型台帳(たとえば、分散型台帳14および付随の分散型ブロックチェーン20)に登録されてもよい。
第5のステップ310は、カタログインスタンスの分散型台帳(たとえば、図3の分散型台帳14)のブロックチェーン(たとえば、図3のブロックチェーン20)における(デベロッパエンティティ登録トランザクションに対応する)カタログエントリ(すなわちエントリ)を用いて、ソフトウェアコンポーネントダウンロードトランザクションを記述する別のトランザクションの(図3の分散型台帳14のブロックチェーン20に対する)登録およびコミットを検証(すなわち、完了)するステップを含む。
なお、説明の便宜上、カタログは、分散型台帳(たとえば、ブロックチェーン)を実現するためのコードのセットであってもよい。カタログは、利用可能なソフトウェアコンポーネントのローカルデータベースを含んでいてもよくまたは含んでいなくてもよい。なぜなら、このようなデータベースは、本教示の範囲から逸脱することなく、カタログとは別個に実現することができるからである。しかしながら、この明細書中に記載されるさまざまな実施形態においては、所与のカタログインスタンスは、利用可能なコンポーネントのローカルデータベースと対話するとともに当該ローカルデータベースを維持するためのコンピュータコード(たとえば、図3のローカルコンポーネントカタログストア36)も含む。「カタログ」および「カタログインスタンス」という語はこの明細書中では同義で用いられてもよい。
なお、方法300は、本教示の範囲から逸脱することなく変更され得ることに留意されたい。たとえば、付加的なステップが追加されてもよい。いくつかのステップが置換えられてもよい。ステップは削除または交換されてもよい。さらに、追加の修正またはさらなる詳細が、方法300のさまざまなステップ320~310に追加されてもよく、および/または当該さまざまなステップ320~310から削除されてもよい。
たとえば、第2の例示的な方法300はさらに、安全な検証メカニズムが公開鍵およびデジタル署名を含むことを規定している。方法300は、ソフトウェアコンポーネント・エコシステムにおける複数のノード(たとえば、カタログインスタンス)に対してカタログエントリを伝搬するステップをさらに規定し得る。
第2の例示的な方法300は、複数のノードの各々が、分散型ブロックチェーン台帳のレプリカまたは近似レプリカを維持する他の複数のノードと協調して分散型ブロックチェーン台帳を実現するためのコードを含むカタログインスタンスを表わすことをさらに規定し得る。
第2の例示的な方法300はさらに、エントリにネームスペースを割付けるための(たとえば、ネームスペース登録トランザクションを関連する分散型ブロックチェーン20に登録するための)プロセスをさらに規定し得る。
第2の例示的な方法300はさらに、以下のステップを規定してもよく、および/または以下のステップと置換えられてもよい。以下のステップは、複数の相互通信カタログインスタンスを含む分散型ピア・ツー・ピア・コンポーネント・エコシステムのコンポーネントカタログのインスタンスを用いることで、デベロッパエンティティ名に関するデベロッパ登録エンティティ情報を受取るステップと、デベロッパエンティティ情報を検証して、デベロッパエンティティ登録の記録またはブロックとして、複数の相互通信カタログインスタンスの各々にアクセス可能であるブロックチェーンとして実現される分散型データベースにコミットすることにより、ピア・ツー・ピア・コンポーネント・エコシステムのフルノードすべてに対してデベロッパエンティティ登録情報を伝搬するステップを実行する。
第2の例示的な方法300はさらに、デベロッパエンティティ名と、登録が実行されているカタログインスタンスに関連付けられた公開鍵と、デベロッパエンティティ名に関連付けられるとともに複数の相互通信カタログインスタンスのカタログインスタンスでデベロッパエンティティアイデンティティを確認するのに使用可能な(デベロッパエンティティ機密(すなわち秘密鍵)を用いる)デジタル署名とをデベロッパエンティティによって供給するステップの後に、デベロッパ登録エンティティ情報を受取るステップが行われることを規定し得る。
ピア・ツー・ピア・コンポーネント・エコシステムのフルノードは、複数の相互通信カタログインスタンスを含み得る。第2の例示的な方法300はさらに、デベロッパエンティティ登録情報を伝搬した後、ネームスペース登録プロセス中に供給された1つ以上のネームスペースをデベロッパ登録情報に関連付けるステップによってネームスペース登録プロセスの開始および実現に応答して、デベロッパエンティティに対して1つ以上のネームスペースを割付けるステップ規定し得る。
第2の例示的な方法300はさらに、いくつかの記録またはブロックがブロックチェーンの一連の記録にコミットされる後まで、デベロッパエンティティについてのネームスペース登録プロセスの実現を選択的に遅延させるステップを含み得る。
図18は、図1~図17の実施形態を実現するのに使用可能なシステム900および付随のコンピューティング環境を示す概略ブロック図である。例示的なシステム900は、本発明の実施形態に従った分散型ソフトウェアコンポーネント・エコシステムを実現することができる。実施形態は、(たとえば、ユーザデバイスに常駐している)スタンドアロンのアプリケーションとして、または、クライアント側およびサーバ側のコードの組合せを用いて実現されるウェブベースのアプリケーションとして、実現され得る。
汎用システム900は、デスクトップコンピュータ960、ノートブックコンピュータ970、スマートフォン980、携帯電話985およびタブレット990を含むユーザデバイス960~990を含む。汎用のシステム900は、ウェブページまたは他のタイプの電子文書およびUIならびに/または実行アプリケーションを表示およびナビゲートすることができるシンクライアントコンピュータ、インターネット接続可能な携帯電話、モバイルインターネットアクセスデバイス、タブレット、電子ブック、または携帯情報端末などの如何なるタイプのユーザデバイスともインターフェイスを取ることができる。システム900は5つのユーザデバイスとともに示されてるが、ユーザデバイスはいくつでもサポートされ得る。
ウェブサーバ910は、ウェブページ、電子文書、企業データまたは他のコンテンツ、およびユーザコンピュータからの他のデータについての、ウェブブラウザおよびスタンドアロンのアプリケーションからの要求を処理するために用いられる。ウェブサーバ910はまた、企業活動に関するデータの、RSSフィードなどのプッシュデータまたは合成コンテンツを提供してもよい。
アプリケーションサーバ920は1つ以上のアプリケーションを操作する。アプリケーションは、任意のプログラミング言語、たとえば、Java(登録商標)、C、C++、C#など、または任意のスクリプト言語、たとえば、JavaScript(登録商標)もしくはECMAScript(European Computer Manufacturers Association Script(欧州コンピュータ製造者協会スクリプト))、Perl、PHP(Hypertext Preprocessor:ハイパーテキストプリプロセッサ)、Python、RubyまたはTCL(Tool Command Language:ツールコマンド言語)などで書込まれた1つ以上のスクリプトまたはプログラムとして実現することができる。アプリケーションは、Rails、Enterprise JavaBeans、または、.NET.などのライブラリまたはアプリケーションフレームワークを用いて構築することができる。ウェブコンテンツは、HTML(HyperText Markup Language:ハイパーテキスト・マークアップ言語)、CSS(Cascading Style Sheets:カスケーディング・スタイル・シート)、ならびに、テンプレート言語およびパーサーを含む他のウェブ技術を用いて作成され得る。
アプリケーションサーバ920上で実行されるデータアプリケーションは、入力データおよびユーザコンピュータ要求を処理するように適合されており、データストレージデバイスまたはデータベース930からのデータを格納するかまたは検索することができる。データベース930は、データアプリケーションによって作成されて用いられるデータを格納している。一実施形態においては、データベース930は、SQLフォーマットコマンドまたは他のデータベースクエリ言語に応答して、データを格納、更新および検索するように適合されたリレーショナルデータベースを含む。他の実施形態は、非構造的な体系的なデータストレージアーキテクチャおよびNoSQL(Not Only SQL)データベースを用いてもよい。
一実施形態においては、アプリケーションサーバ920は、プログラムまたはスクリプトを実行することができる1つ以上の汎用コンピュータを含む。一実施形態においては、ウェブサーバ910は、1つ以上の汎用コンピュータ上で実行されるアプリケーションとして実現される。ウェブサーバ910およびアプリケーションサーバ920は同じコンピュータ上で組合わされて実行されてもよい。
電子通信ネットワーク940~950は、ユーザコンピュータ960~990と、ウェブサーバ910と、アプリケーションサーバ920と、データベース930との間の通信を可能にする。一実施形態においては、ネットワーク940~950はさらに、有線ネットワーク940および無線ネットワーク950を含む電気通信デバイスまたは光通信デバイスのいずれかの形態を含み得る。ネットワーク940~950はまた、イーサネット(登録商標)ネットワークなどの1つ以上のローカルエリアネットワーク、インターネットなどのワイドエリアネットワーク、セルラーキャリアデータネットワーク;および、仮想プライベートネットワークなどの仮想ネットワークを組込んでいてもよい。
当該システムは、本発明の一実施形態に従ってアプリケーションを実行するための一例である。別の実施形態においては、アプリケーションサーバ910、ウェブサーバ920および任意にはデータベース930は、単一のサーバコンピュータアプリケーションおよびシステムと組合わせることができる。さらに別の実施形態においては、アプリケーションサーバ910、ウェブサーバ920およびデータベース930の1つ以上を実現するために、仮想化および仮想マシンアプリケーションが用いられてもよい。
さらに別の実施形態においては、ウェブおよびアプリケーションサービング機能のすべてまたは一部は、ユーザコンピュータの各々の上で実行されるアプリケーションに一体化されていてもよい。たとえば、ユーザコンピュータ上のJavaScriptアプリケーションは、アプリケーションのデータ部分および表示部分を検索するかまたは分析するために用いられてもよい。
図2および図18に関連付けて、一例として、ウェブサーバ910、アプリケーションサーバ920およびデータストレージデバイス/データベース930は、ブラウザを介して個々のコンピュータシステムにさらにアクセス可能であるカタログインスタンス32に対応するサーバ側アプリケーションをホストすることによって、図2の分散型台帳14を実現するために用いられてもよい。代替的には、または付加的には、個々のコンピューティングデバイス950、985、970、980、990は、有線ネットワーク940および/または無線ネットワーク950を用いてピア・ツー・ピア・コンポーネント・エコシステムにネットワーク化されるカタログインスタンスソフトウェアを実行してもよい。
図19は、図1~図18の実施形態を実現するために使用可能なコンピューティングデバイスを示す概略ブロック図である。図19のシステム500は、この明細書中における特定の実現例に記載されているステップを実行することを容易にするものとして記載されている一方で、記載されたステップを実行するために、システム500の任意の好適なコンポーネントもしくはコンポーネントの組合せ、または、システム500に関連付けられた任意の好適な一つのプロセッサまたは複数のプロセッサが用いられてもよい。
図19は、この明細書中に記載される実現例のために用いられ得る例示的なコンピューティングシステム500のブロック図を示す。たとえば、コンピューティングシステム500は、図18のサーバデバイス910および920を実現するとともに、この明細書中に記載される方法の実現例を実行するために用いられてもよい。いくつかの実現例においては、コンピューティングシステム500は、プロセッサ502、オペレーティングシステム504、メモリ506、および入出力(input/output:I/O)インターフェイス508を含んでいてもよい。さまざまな実現例においては、プロセッサ502は、この明細書中に記載されるさまざまな機能および特徴を実現するとともに、この明細書中に記載される方法の実現例を実行するために用いられてもよい。プロセッサ502がこの明細書中に記載される実現例を実行するものとして記載されているが、システム500の任意の好適なコンポーネントもしくはコンポーネントの組合せ、または、システム500に関連付けられた任意の好適な1つのプロセッサまたは複数のプロセッサ、または、任意の好適なシステムが、記載されるステップを実行してもよい。この明細書中に記載される実現例は、ユーザデバイス上で、サーバ上で、またはこれら両方の組合せに対して実行されてもよい。
コンピューティングデバイス500はまた、メモリ506上に格納され得るか、または、他の好適な任意の記憶位置もしくはコンピュータ読取可能媒体上に格納され得るソフトウェアアプリケーション510を含む。ソフトウェアアプリケーション510は、プロセッサ502がこの明細書中に記載される機能および他の機能を実行することを可能にする命令を提供する。コンピューティングシステム500のコンポーネントは、1つ以上のプロセッサによって、または、ハードウェアデバイスの任意の組合せによって、さらには、ハードウェア、ソフトウェア、ファームウェアなどの任意の組合せによって、実現されてもよい。
例示を容易にするために、図19は、プロセッサ502、オペレーティングシステム504、メモリ506、I/Oインターフェイス508およびソフトウェアアプリケーション510の各々ごとに1つのブロックを示す。これらのブロック502、504、506、508および510は、複数のプロセッサ、オペレーティングシステム、メモリ、I/Oインターフェイス、およびソフトウェアアプリケーションを表わし得る。さまざまな実現例においては、コンピューティングシステム500は図示されるコンポーネントをすべて有していなくてもよく、および/または、この明細書中に示される以外の他のタイプのコンポーネント、もしくはこの明細書中に記載されるものに加えて他のタイプのコンポーネントを含む他の要素を有していてもよい。
一例として、図3および図19を参照すると、図19のコンピューティングデバイス500は図3の個々のデベロッパシステム62を実現するために用いられてもよい。
特定の実施形態に関して説明がなされてきたが、これらの特定の実施形態は単に例示的なものに過ぎず、限定的なものではない。
特定の実施形態に関して説明がなされてきたが、これらの特定の実施形態は単に例示的なものに過ぎず、限定的なものではない。
如何なる好適なプログラミング言語を用いても、C、C++、Java、アセンブリ言語などを含む特定の実施形態のルーチンを実現することができる。手続き指向型またはオブジェクト指向型などのさまざまなプログラミング技術を用いることができる。ルーチンは単一の処理装置または複数のプロセッサ上で実行することができる。ステップ、動作または演算は特定の順序で表わされ得るが、この順序はさまざまな特定の実施形態において変更されてもよい。いくつかの特定の実施形態においては、この明細書中で連続的なものとして示されている複数のステップは同時に実行することができる。
特定の実施形態は、命令実行システム、装置、システムもしくはデバイスによって、またはそれらに関連付けて用いられるようにコンピュータ読取可能記憶媒体において実現されてもよい。特定の実施形態は、ソフトウェアもしくはハードウェアまたはそれらの組合せで制御論理の形態で実現することができる。制御論理は、1つ以上のプロセッサによって実行されると、特定の実施形態において記載されているものを実行するように動作可能であり得る。
特定の実施形態は、特定用途向け集積回路、プログラマブルロジックデバイス、フィールドプログラマブルゲートアレイ、光学的、化学的、生物学的、量子的またはナノ設計型のシステム、コンポーネントおよびメカニズムを用いることによる、プログラムド汎用デジタルコンピュータを用いることによって実現されてもよい。一般に、特定の実施形態の機能は当該技術において公知である如何なる手段によっても達成することができる。分散型のネットワーク化システム、コンポーネントおよび/または回路を用いることができる。データの通信または転送は有線、無線または他のいずれかの手段によってなされてもよい。
添付の図面/図に示される要素のうちの1つ以上が、特定用途に応じて有用となるように、さらに分離された態様もしくは一体化された態様で、または場合によっては削除されるかもしくは動作不能にされた態様で実現可能であることも認識されるだろう。コンピュータが上述の方法のうちのいずれかを実行することを可能にするために機械読取り可能媒体に記憶することができるプログラムまたはコードを実現することも精神および範囲内にある。
この明細書中で、かつ添付の特許請求の範囲全体にわたって用いられる「a」、「an」および「the」という語は、文脈に別段明確な指示がない限り、複数の指示対象を含んでいる。また、この明細書中で、かつ添付の特許請求の範囲全体にわたって用いられる「in」の意味は、文脈に別段明確な指示がない限り、「において(in)」および「の上に(on)」の意味を含んでいる。
このように、特定の実施形態をこの明細書中に記載してきたが、上述の開示において変更、さまざまな変形および置換えの許容範囲が意図されており、場合によっては、特定の実施形態のいくつかの特徴が、上述の範囲および精神から逸脱することなく他の特徴を対応させて使用することなく採用され得ることが認識されるだろう。したがって、特定の状況または材料を本質的な範囲および精神に適合させるために多くの変更がなされてもよい。

Claims (12)

  1. 1つ以上のプロセッサに実行されることによってソフトウェアコンポーネント・エコシステムを実現するための方法であって、
    前記ソフトウェアコンポーネント・エコシステムは、デベロッパエンティティによってアップロードされるソフトウェアコンポーネントを維持し、前記ソフトウェアコンポーネントは、前記デベロッパエンティティ以外のパーティシパントエンティティにとって再利用可能であり、
    前記方法は、
    ユーザ入力デバイスから1つ以上の信号を受取って、前記デベロッパエンティティの識別名をデベロッパエンティティ名として規定することと、
    ユーザ入力デバイスから1つ以上の信号を受取って、安全な検証メカニズムを規定することと、
    前記安全な検証メカニズムと関連付けて前記デベロッパエンティティ名を含むカタログエントリを記録することと、
    前記カタログエントリと関連付けてトランザクションを実行して、前記ソフトウェアコンポーネントを転送することと、
    前記カタログエントリを用いて、前記トランザクションを検証することとを含む、方法。
  2. 前記安全な検証メカニズムは公開鍵およびデジタル署名を含む、請求項1に記載の方法。
  3. 前記ソフトウェアコンポーネント・エコシステムにおける複数のノードに前記カタログエントリを伝搬することをさらに含む、請求項2に記載の方法。
  4. 前記複数のノードの各々は、分散型ブロックチェーン台帳のレプリカまたは近似レプリカを維持する前記複数のノードと協調して前記分散型ブロックチェーン台帳を実現するためのコードを含むカタログインスタンスを表わす、請求項3に記載の方法。
  5. 1つ以上のプロセッサに実行されることによってソフトウェアコンポーネント・エコシステムを実現するための方法であって、前記方法は、
    ユーザ入力デバイスから1つ以上の信号を受取って、デベロッパエンティティの識別名をデベロッパエンティティ名として規定することと、
    ユーザ入力デバイスから1つ以上の信号を受取って、安全な検証メカニズムを規定することと、
    前記安全な検証メカニズムと関連付けて前記デベロッパエンティティ名を含むカタログエントリを記録することと、
    前記カタログエントリと関連付けてトランザクションを実行して、ソフトウェアコンポーネントを転送することと、
    前記カタログエントリを用いて、前記トランザクションを検証することと、
    前記カタログエントリにネームスペースを割付けることとを含、方法。
  6. 1つ以上のプロセッサに実行されることによってソフトウェアコンポーネント・エコシステムを実現するための方法であって、前記方法は、
    ユーザ入力デバイスから1つ以上の信号を受取って、デベロッパエンティティの識別名をデベロッパエンティティ名として規定することと、
    ユーザ入力デバイスから1つ以上の信号を受取って、安全な検証メカニズムを規定することと、
    前記安全な検証メカニズムと関連付けて前記デベロッパエンティティ名を含むカタログエントリを記録することと、
    前記カタログエントリと関連付けてトランザクションを実行して、ソフトウェアコンポーネントを転送することと、
    前記カタログエントリを用いて、前記トランザクションを検証することとを含み、
    前記ソフトウェアコンポーネント・エコシステムは、複数の相互通信カタログインスタンスを含む分散型ピア・ツー・ピア・コンポーネント・エコシステムとして実現され、
    前記方法は、前記分散型ピア・ツー・ピア・コンポーネント・エコシステムのコンポーネントカタログのインスタンスを用いて、
    前記デベロッパエンティティ名に関するデベロッパエンティティ登録情報を受取るステップと、
    前記デベロッパエンティティ登録情報を検証して、前記デベロッパエンティティ登録情報を、デベロッパエンティティ登録の記録またはブロックとして、前記複数の相互通信カタログインスタンスの各々にアクセス可能であるブロックチェーンとして実現される分散型データベースにコミットすることにより、前記分散型ピア・ツー・ピア・コンポーネント・エコシステムのフルノードすべてに対して前記デベロッパエンティティ登録情報を伝搬するステップとを実行する、方法。
  7. 前記受取るステップは、
    前記デベロッパエンティティ名と、登録が実行されているカタログインスタンスに関連付けられた公開鍵と、前記デベロッパエンティティ名に関連付けられたデジタル署名とをデベロッパエンティティにより供給するステップの後に行なわれ、前記デジタル署名は、前記複数の相互通信カタログインスタンスのカタログインスタンスで、デベロッパエンティティアイデンティティを確認するのに使用可能である、請求項6に記載の方法。
  8. 前記分散型ピア・ツー・ピア・コンポーネント・エコシステムの前記フルノードは、前記複数の相互通信カタログインスタンスを含む、請求項6に記載の方法。
  9. ネームスペース登録プロセス中の1つ以上の供給されたネームスペースをデベロッパ登録情報に関連付けることによって、
    前記デベロッパエンティティ登録情報を伝搬した後、前記ネームスペース登録プロセスの開始および実現に応答して、1つ以上のネームスペースをデベロッパエンティティに割付けることをさらに含む、請求項6に記載の方法。
  10. いくつかの記録が前記ブロックチェーンの一連の記録にコミットされる後まで、デベロッパエンティティのための前記ネームスペース登録プロセスの実現を選択的に遅延させることをさらに含む、請求項9に記載の方法。
  11. 請求項1~10のいずれか1項に記載の方法を1つ以上のプロセッサに実行させる、プログラム。
  12. 請求項11に記載のプログラムが格納されたメモリと、
    前記プログラムを実行するための1つ以上のプロセッサとを備える、装置。
JP2019571965A 2017-06-30 2018-06-28 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法 Active JP7110248B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022115505A JP7361165B2 (ja) 2017-06-30 2022-07-20 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762527479P 2017-06-30 2017-06-30
US62/527,479 2017-06-30
US201762553406P 2017-09-01 2017-09-01
US62/553,406 2017-09-01
US15/829,684 US10810004B2 (en) 2017-06-30 2017-12-01 System and method for managing a public software component ecosystem using a distributed ledger
US15/829,684 2017-12-01
PCT/US2018/040105 WO2019006177A1 (en) 2017-06-30 2018-06-28 SYSTEM AND METHOD FOR MANAGING A PUBLIC SOFTWARE COMPONENT ECOSYSTEM USING A DISTRIBUTED REGISTER

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022115505A Division JP7361165B2 (ja) 2017-06-30 2022-07-20 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法

Publications (3)

Publication Number Publication Date
JP2020526820A JP2020526820A (ja) 2020-08-31
JP2020526820A5 JP2020526820A5 (ja) 2021-07-26
JP7110248B2 true JP7110248B2 (ja) 2022-08-01

Family

ID=64738230

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019571965A Active JP7110248B2 (ja) 2017-06-30 2018-06-28 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法
JP2022115505A Active JP7361165B2 (ja) 2017-06-30 2022-07-20 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022115505A Active JP7361165B2 (ja) 2017-06-30 2022-07-20 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法

Country Status (5)

Country Link
US (2) US10810004B2 (ja)
EP (1) EP3646529B1 (ja)
JP (2) JP7110248B2 (ja)
CN (1) CN110870253B (ja)
WO (1) WO2019006177A1 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US11277412B2 (en) * 2018-05-28 2022-03-15 Royal Bank Of Canada System and method for storing and distributing consumer information
US10628578B2 (en) * 2013-03-15 2020-04-21 Imagine Communications Corp. Systems and methods for determining trust levels for computing components using blockchain
US10936721B1 (en) * 2018-03-01 2021-03-02 Amdocs Development Limited System, method, and computer program for splitting and distributing a privileged software component into dependent components in order to deliver better security
US10438170B2 (en) * 2017-01-05 2019-10-08 International Business Machines Corporation Blockchain for program code credit and programmer contribution in a collective
US10810004B2 (en) * 2017-06-30 2020-10-20 Oracle International Corporation System and method for managing a public software component ecosystem using a distributed ledger
US11010736B2 (en) * 2017-09-12 2021-05-18 Northwestern University System and method for reducing information volume in a blockchain distribution network
US10659473B2 (en) * 2017-11-09 2020-05-19 Nokia Solutions And Networks Oy Method and apparatus for blockchain powered integrity protection system
JP7287279B2 (ja) * 2017-12-04 2023-06-06 ソニーグループ株式会社 情報処理装置、情報処理方法およびプログラム
US10924489B2 (en) * 2018-01-19 2021-02-16 International Business Machines Corporation Building trusted public blockchain networks based on participants' digital social behavior
US11438139B2 (en) * 2018-02-07 2022-09-06 Raouf Boutaba Blockchain based secure naming and update verification
US10756904B1 (en) * 2018-02-22 2020-08-25 EMC IP Holding Company LLC Efficient and secure distributed ledger maintenance
US10673775B2 (en) * 2018-02-27 2020-06-02 International Business Machines Corporation Orchestration engine using a blockchain for a cloud resource digital ledger
US11940958B2 (en) * 2018-03-15 2024-03-26 International Business Machines Corporation Artificial intelligence software marketplace
US11487851B2 (en) * 2018-03-19 2022-11-01 International Business Machines Corporation Using blockchain for flexible application licensing
SG11202009660SA (en) * 2018-03-29 2020-10-29 Agency Science Tech & Res Methods of distributing software across a network and distribution systems
KR102181600B1 (ko) * 2018-03-30 2020-11-23 주식회사 코인플러그 블록체인 기반의 통합 로그인 방법, 단말 및 이를 이용한 서버
US11003799B2 (en) * 2018-04-20 2021-05-11 Marlabs Innovations Private Limited System and method for integrity assurance in a virtual environment
US11108544B2 (en) 2018-07-02 2021-08-31 International Business Machines Corporation On-chain governance of blockchain
US11165826B2 (en) 2018-07-02 2021-11-02 International Business Machines Corporation On-chain governance of blockchain
US11095433B2 (en) 2018-07-02 2021-08-17 International Business Machines Corporation On-chain governance of blockchain
US11924323B2 (en) * 2018-07-02 2024-03-05 International Business Machines Corporation On-chain governance of blockchain
US10972479B2 (en) * 2018-08-02 2021-04-06 Balanced Media Technology, LLC Task completion using a blockchain network
US10917793B2 (en) * 2018-08-17 2021-02-09 T-Moblle USA, Inc. Verifying network subsystem integrity with blockchain
US20200106623A1 (en) * 2018-09-28 2020-04-02 NEC Laboratories Europe GmbH Method and system for a trusted execution environment-based proof of stake protocol
US10942910B1 (en) 2018-11-26 2021-03-09 Amazon Technologies, Inc. Journal queries of a ledger-based database
US11196567B2 (en) * 2018-11-26 2021-12-07 Amazon Technologies, Inc. Cryptographic verification of database transactions
US11119998B1 (en) 2018-11-26 2021-09-14 Amazon Technologies, Inc. Index and view updates in a ledger-based database
US11036708B2 (en) 2018-11-26 2021-06-15 Amazon Technologies, Inc. Indexes on non-materialized views
US11282076B2 (en) * 2018-12-14 2022-03-22 American Express Travel Related Services Company, Inc. Transaction account data maintenance using blockchain
US11222099B2 (en) * 2019-02-08 2022-01-11 Synergex Group Methods, systems, and media for authenticating users using blockchains
US11204933B2 (en) * 2019-05-23 2021-12-21 Advanced New Technologies Co., Ltd. Data manipulation record storage method, system, apparatus, and device
CN114341799A (zh) 2019-06-20 2022-04-12 瑞典爱立信有限公司 用于基于分布式账本技术的在云计算系统中的服务映像部署的方法和系统
EP3804220B1 (en) * 2019-08-12 2021-12-22 Advanced New Technologies Co., Ltd. Blockchain-based trusted platform
US11574219B2 (en) * 2019-09-27 2023-02-07 Rockwell Automation Technologies, Inc. System and method for industrial automation rules engine
US11200040B2 (en) * 2020-01-08 2021-12-14 The Boeing Company Distributed ledger for software distribution in a wireless ad hoc network for ad-hoc data processing on a source node
US11416474B2 (en) * 2020-04-05 2022-08-16 International Business Machines Corporation Blockchain-based software library access and usage management
US11954716B2 (en) * 2020-05-26 2024-04-09 Jpmorgan Chase Bank, N.A. System and method for decentralized marketplaces
US11249750B2 (en) 2020-06-23 2022-02-15 Bank Of America Corporation Implementing a distributed register to verify the stability of an application server environment for software development and testing
US11775276B2 (en) * 2020-10-27 2023-10-03 Incentive Marketing Group, Inc. Methods and systems for application integration and macrosystem aware integration
US11803416B1 (en) 2020-12-16 2023-10-31 Wells Fargo Bank, N.A. Selection and management of devices for performing tasks within a distributed computing system
US20220207386A1 (en) * 2020-12-28 2022-06-30 EMC IP Holding Company LLC Best outcome aiops modeling with data confidence fabrics
US11726773B2 (en) 2021-05-19 2023-08-15 Micro Focus Llc Software supply chain quality control evaluation using blockchain
CN113656762A (zh) * 2021-08-12 2021-11-16 支付宝(杭州)信息技术有限公司 管理第三方软件的方法和装置
US20230081416A1 (en) * 2021-09-10 2023-03-16 International Business Machines Corporation Anonymous private shared partitions in blockchain networks

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314540A (ja) 2001-04-17 2002-10-25 Nippon Telegraph & Telephone West Corp ネットワーク診断システム、及びネットワーク診断方法
JP2014514670A (ja) 2011-05-04 2014-06-19 アルカテル−ルーセント コンピュータ・ネットワーク内のサーバにアクセスするサーバ、システム、方法、コンピュータ・プログラム、およびコンピュータ・プログラム製品
US20180167217A1 (en) 2016-12-14 2018-06-14 International Business Machines Corporation Container-based Operating System and Method
JP2018128723A (ja) 2017-02-06 2018-08-16 株式会社日立製作所 信用度管理システムおよび信用度管理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091576A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Programming interface for a computer platform
US20130138798A1 (en) * 2011-11-29 2013-05-30 International Business Machines Corporation Predictive and dynamic resource provisioning with tenancy matching of health metrics in cloud systems
CN102929630A (zh) * 2012-10-31 2013-02-13 中标软件有限公司 一种基于分布式协同开发环境下的代码管理方法及系统
JP2015095051A (ja) * 2013-11-11 2015-05-18 キヤノン株式会社 情報処理装置およびライセンス管理システム及びライセンス管理方法
US9606788B2 (en) * 2014-04-30 2017-03-28 Microsoft Technology Licensing, Llc Dynamic update installer for customized software
CN105227545B (zh) * 2015-09-07 2018-09-25 上海联彤网络通讯技术有限公司 智能操作平台中实现用户和开发者划分控制的系统及方法
US20170116693A1 (en) * 2015-10-27 2017-04-27 Verimatrix, Inc. Systems and Methods for Decentralizing Commerce and Rights Management for Digital Assets Using a Blockchain Rights Ledger
AU2016354668A1 (en) * 2015-11-09 2018-06-28 Roger Hanna A distributed user profile identity verification system for e-commerce transaction security
US10608896B2 (en) * 2016-11-10 2020-03-31 International Business Machines Corporation Enforce pre-optimized service contracts associated with containers
US10169614B2 (en) * 2016-11-17 2019-01-01 International Business Machines Corporation Container update system
US10810004B2 (en) * 2017-06-30 2020-10-20 Oracle International Corporation System and method for managing a public software component ecosystem using a distributed ledger
US10795977B2 (en) * 2017-08-24 2020-10-06 Oracle International Corporation Digital asset traceability and assurance using a distributed ledger

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002314540A (ja) 2001-04-17 2002-10-25 Nippon Telegraph & Telephone West Corp ネットワーク診断システム、及びネットワーク診断方法
JP2014514670A (ja) 2011-05-04 2014-06-19 アルカテル−ルーセント コンピュータ・ネットワーク内のサーバにアクセスするサーバ、システム、方法、コンピュータ・プログラム、およびコンピュータ・プログラム製品
US20180167217A1 (en) 2016-12-14 2018-06-14 International Business Machines Corporation Container-based Operating System and Method
JP2020503598A (ja) 2016-12-14 2020-01-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンテナベースのオペレーティング・システムおよび方法
JP2018128723A (ja) 2017-02-06 2018-08-16 株式会社日立製作所 信用度管理システムおよび信用度管理方法

Also Published As

Publication number Publication date
CN110870253A (zh) 2020-03-06
CN110870253B (zh) 2023-04-28
JP7361165B2 (ja) 2023-10-13
JP2022141841A (ja) 2022-09-29
EP3646529B1 (en) 2022-06-08
US20210004224A1 (en) 2021-01-07
JP2020526820A (ja) 2020-08-31
US20190004789A1 (en) 2019-01-03
US11775285B2 (en) 2023-10-03
EP3646529A1 (en) 2020-05-06
WO2019006177A1 (en) 2019-01-03
US10810004B2 (en) 2020-10-20

Similar Documents

Publication Publication Date Title
JP7110248B2 (ja) 分散型台帳を用いて公共のソフトウェアコンポーネント・エコシステムを管理するためのシステムおよび方法
JP7092868B2 (ja) 分散型台帳を用いるデジタルアセット・トレーサビリティおよび保証
JP7451565B2 (ja) 共有の秘密及び読み取りの合意を用いてメタデータ駆動型ブロックチェーン上で忘れられる権利を実施するシステム又は方法
US11803537B2 (en) Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT)
US11886421B2 (en) Systems, methods, and apparatuses for distributing a metadata driven application to customers and non-customers of a host organization using distributed ledger technology (DLT)
US11783024B2 (en) Systems, methods, and apparatuses for protecting consumer data privacy using solid, blockchain and IPFS integration
JP6800184B2 (ja) ドキュメント管理及びコラボレーション・システム
US11449478B2 (en) Blockchain implemented data migration audit trail
JP2021512416A (ja) クラウドベースのコンピューティング環境において分散台帳技術のためのインテリジェントな合意、スマートな合意、及び重み付き合意のモデルを実現するシステム、方法、及び装置
CN113711536A (zh) 从区块链网络中提取数据
WO2022020284A1 (en) Security platform and method for efficient access and discovery
CN115769241A (zh) 针对经许可的区块链的隐私保护架构
WO2022007548A1 (en) Blockchain implementation to securely store information off-chain
CN116325833A (zh) 将设备标识集成到区块链的许可框架中
US20220100733A1 (en) Transaction reordering in blockchain
Demichev et al. Business process engineering for data storing and processing in a collaborative distributed environment based on provenance metadata, smart contracts and blockchain technology
US20220311595A1 (en) Reducing transaction aborts in execute-order-validate blockchain models
CN114579585A (zh) 区块链选择性世界状态数据库

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210604

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220610

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220720

R150 Certificate of patent or registration of utility model

Ref document number: 7110248

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150