JP7051458B2 - ブロックチェーンバージョン制御システム - Google Patents

ブロックチェーンバージョン制御システム Download PDF

Info

Publication number
JP7051458B2
JP7051458B2 JP2018006067A JP2018006067A JP7051458B2 JP 7051458 B2 JP7051458 B2 JP 7051458B2 JP 2018006067 A JP2018006067 A JP 2018006067A JP 2018006067 A JP2018006067 A JP 2018006067A JP 7051458 B2 JP7051458 B2 JP 7051458B2
Authority
JP
Japan
Prior art keywords
block
source code
blockchain
identifier
version control
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
JP2018006067A
Other languages
English (en)
Other versions
JP2018152050A (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 JP2018152050A publication Critical patent/JP2018152050A/ja
Application granted granted Critical
Publication of JP7051458B2 publication Critical patent/JP7051458B2/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
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/3297Cryptographic 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 time stamps, e.g. generation of time stamps
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

著作権通知
本特許文献の開示の一部は、著作権保護を受ける資料を含む。著作権者は、特許文献又は特許開示が米国特許商標庁の特許ファイル又は記録に出現する限り、何人によるそのファクシミリ複製に対しても異義を有さないが、そうでない場合は何であれすべての著作権を留保する。
1つ以上の実装が、一般に、ブロックチェーン分散データベースに関し、詳細には、ブロックチェーン技術に基づいて分散ソフトウェア開発のためにスキーマ進化を管理することに関する。
マルチテナントデータベースシステムにおいて、顧客組織(さらに、「テナント」としても参照される)は、1つの論理データベース内のデータベースリソースを共有することがある。データベースはそれ自体、典型的に共有され、各テナントは、各テナントに属する行又はレコードを識別するために使用できる組織識別子(orgID)列又はフィールドに典型的に関連づけられる。各テナントは、その独自のカスタムデータを提供することがあり、このことは、カスタムオブジェクト及びカスタムフィールドを定義することと、カスタムインデックスフィールドとして動作するように1つ以上のカスタムフィールドを指定することとを含み得る。マルチテナントデータベースシステムのオーナ/オペレータは、ソフトウェア開発プラットフォーム(SDP)、統合開発環境(IDE)、ソフトウェア開発キット(SDK)等を提供して、テナントがカスタムフィールドを指定し、かつその他の方法でマルチテナントデータベースシステム内に自身のテナント空間を構成することを可能にすることがある。マルチテナントデータベースシステムのオーナ/オペレータは、テナントのエージェントによる使用のためにプレビルトしたカスタマイズ可能なクエリアプリケーションをさらに提供することがあり、そのため、これらエージェントは、テナントのテナント空間内のデータにアクセスし、かつ/あるいは該データを編集することができる。これらの場合、マルチテナントデータベースシステムのオーナ/オペレータは、SDP、IDE、SDK、及び/又はアプリケーションプログラミングインターフェース(API)を提供して、テナントがクエリアプリケーションをカスタマイズすることを可能にすることがある。しかしながら、テナント空間構成に対するリビジョン及び/又はクエリアプリケーションに対するリビジョンを編成し、かつ/あるいは制御することは、特に、テナントが比較的大きいチームの開発者/管理者を用いてテナント空間及び/又はクエリアプリケーションをカスタマイズするとき、困難である可能性がある。
典型的なソースコード管理ソリューションは、開発者のチームがソースファイルに表わされたコード及び宣言構造の中央リポジトリを共有することを可能にすることができる。これら管理ソリューションは、さらに、開発者がソースファイルを変更し、他の開発者により作られた上記構造を含むファイルを一緒にマージし、ソフトウェアプロダクトをビルド及びリリースするシステムの必要を果たすことを可能にする。多くの場合、これら管理ソリューションは、ソースリポジトリに対するアクセスを有さない他のサードパーティ開発者がその独自のプロダクトを作成するのに使用する必要があるSDPであり得る。しかしながら、典型的なソースコード管理ソリューションは、あるリリースから次のリリースへの変更/リビジョンの構造互換性を確保するルールが配慮されることを確保するためのメカニズムを含まない。こうしたルールを固守するのに失敗することは、「スキーマ進化」問題として参照されることがある。スキーマ進化問題に対するいくつかのソリューションには、開発者が開発ルールを順守したコードを開発することができるように開発ルールを公開することが含まれる。しかしながら、スキーマ進化ルールに永遠性を与えることは、これらがそれ自体、開発者によりソースとして修正されることがあり、互換性の保証を提供しないことを意味する。逆に、ソースコード管理プラットフォームは、集中型オンラインサービスを使用してソースファイルの様々なバージョンを取り込んで、開発ルールのテーブルに対してこれらを検証することができるが、こうしたソリューションは、すべての開発者にオンラインを強制する可能性があり、ゆえに、接続を切られた開発を除外する可能性がある。このことは、ソースファイルの正確なマニフェストが参照されることを確保するようにソースコードシステムの外部の分岐構造をモデル化するためのルールテーブルに負荷をかけるおそれがある。
含まれる図面は例示目的のものであり、開示される発明システム、装置、方法、及びコンピュータ読取可能記憶媒体のとり得る構造及び動作の例を提供する役割を果たす。これら図面は、開示される実現の主旨及び範囲から逸脱することなく当業者によりなされ得る形式及び詳細のいかなる変更も限定しない。
いくつかの実現による、オンデマンドデータベースサービスが使用され得る一例示的な環境のブロック図を示す。 いくつかの実現による、図1Aの要素の例示的な実現とこれら要素間の例示的な相互接続とのブロック図を示す。 様々な実施形態に従う、ユーザシステムのコンポーネントがデータベースシステムのコンポーネントと対話する配置を示す。 様々な実施形態に従う、バージョン制御ブロックチェーンのブロックの例示的な要素を示す。 様々な実施形態に従う、バージョン制御ブロックチェーンに追加されるべきブロックを生成する処理を示す。 バージョン制御ブロックチェーンに含めるためにブロックを立証する処理を示す。
本明細書において論じられる実施形態は、ブロックチェーン技術に基づいて分散ソフトウェア開発環境のスキーマ進化を管理することに向けられる。実施形態において、ルールテーブルが、ブロックチェーン技術を用いて新しい又は編集されたレコードを検証する(validates)マルチテナントデータベースシステムなどの集中型オンラインサービスに対して外部で、シリアル化される(serialized)ことができる。ブロックチェーン技術を用いて、上記サービスは、前のバージョン及び互換性ルールのヒストリを配慮することなく変更のシーケンス(例えば、ブロックチェーン等)にアペンドすることについて、新しい/編集されたレコードが受け入れられ得ないことを確保することができる。いくつかの実施形態において、新しい/編集されたレコードは、ブロックチェーンのヒストリ全体が該新しい/編集されたレコードに含まれるときのみ受け入れられ得る。実施形態において、1つ以上のソースアーチファクトのリリースヒストリのスタンプ又は他の識別子を含むレコードが、データベースレコードとして表わされ、変更レコードのブロックにシリアル化されることができ、これらブロックは、次いで、改ざん不可能な鍵を用いて署名され、一緒に連鎖されることができる。こうして、開発者は、リリースの先頭に戻る連鎖されたレコードのヒストリを含まないレコードを追加又は変更することができない。
実施形態において、中央サービスは、これら変更を取り込むことができ、変更レコードの各ブロックに対してただ1つの後継が許可されるように、ルールテーブルを用いてロックステップにおいてソース変更の単一の幹(trunk)分岐が管理されることを確保することができる。このことは、インプリメンタへ戻る変更の調和を強制して、リリースヒストリが配慮されることを確保することができる。他の実施形態において、中央サービスは、所望に応じて、又は様々なスキーマ開発ポリシーに基づいて、他の分岐トポロジを許可してもよい。いくつかの実施形態において、1つ以上のユーザシステムが、例えば、ブロックチェーンに対する追加についてブロックを検証して、変更レコードの各ブロックに対してただ1つの後継が許可されるように分散型ルールテーブルに従ってソース変更の単一の幹分岐が管理されることを確保することなどによって集中型サービスのタスクを実行する、分散型アーキテクチャが実現されてもよい。
開示される実装によるシステム、装置、コンピュータ読取可能記憶媒体、及び方法の例が、本セクションで説明される。これら例は、単に開示される実装の文脈を追加し、その理解を支援するために提供されている。ゆえに、開示される実装は、提供される特定の詳細のうちいくつか又はすべてなしに実践され得ることが当業者に明らかであろう。他の例において、本明細書において「ブロック」としても参照される特定のプロセス又は方法の動作は、開示される実装を不要に分かりにくくすることを回避するために、詳細には説明されていない。他の実装及び用途がさらに可能であり、そのようなものとして、下記の例は、範囲又は設定のいずれかにおいて決定的又は限定的とみなされるべきでない。
下記の詳細な説明において、添付図面に対して参照が行われ、添付図面は説明の一部を形成し、添付図面内には例示として特定の実現が示される。これら開示される実現は当業者が上記実現を実践することが可能であるよう十分詳細に説明されるが、これら例は限定的でなく、そのため他の実現が使用されてもよく、開示される実現に対してその趣旨及び範囲から逸脱することなく変更が行われてもよいことが理解されるべきである。例えば、本明細書に図示及び説明される方法のブロックは、いくつかの他の実現において、必ずしも示された順序で実行されない。さらに、いくつかの他の実現において、開示される方法は、説明されるよりもより多くの又はより少ないブロックを含んでもよい。別の例として、本明細書において別個のブロックとして説明されるいくつかのブロックは、いくつかの他の実現において組み合わせられてもよい。逆に、本明細書において単一のブロックとして説明され得るものが、いくつかの他の実現において複数のブロックで実現されてもよい。さらに、接続詞「又は」は、別段示されない限り、適切な場合、包含的な意味を意図される。すなわち、フレーズ「A、B、又はC」は、「A」、「B」、「C」、「A及びB」、「B及びC」、「A及びC」、並びに「A、B、及びC」の可能性を含むように意図される。
本明細書において説明及び参照されるいくつかの実現は、ユーザクエリを解決することに役立つアーティクル(articles)を識別するシステム、装置、コンピュータ実現方法、及びコンピュータ読取可能記憶媒体に向けられる。
データベースシステムは、顧客サポートクエリに関連づけられたケースを表示することがある。データベースシステムは、新しいケースに関連した他のケースについて検索を開始することができる。データベースシステムは、ターム重み付けアルゴリズム、例えばモアライクディス(more like this)(MLT)などを用いて、新しいケース内に提供されたタイトル及び/又は説明から関連タームを抽出することができる。関連タームは、次いで、関連したケースを識別する検索クエリ内で使用される。
データベースシステムは、関連したケースにリンクされたアーティクルを識別し、アーティクルをランク付けし、ランク付けに基づく順序でリモートのユーザシステム上にアーティクルを表示させる。データベースシステムは、アーティクルにリンクされた関連したケースの数に基づいてアーティクルをランク付けすることができる。データベースシステムはまた、他のパラメータ、例えば関連したケースの関連度スコア、ケースに割り当てられたラベル、関連したケースの最後の修正日付などに基づいてアーティクルをランク付けしてもよい。
データベースシステムは、同様の語彙を使用して同様の顧客問題を説明する関連したケースを最初見つけることにより、より関連するアーティクルを識別することができる。データベースシステムは、次いで、前の問題を解決するのに役立つと前に判定されたアーティクルを識別する。ゆえに、データベースシステムは、問題を説明するために顧客により使用される語彙とこれら問題に対するソリューションを説明するためにアーティクル内で使用される語彙との間のギャップを埋めることができる。
いくつかの実現において、本明細書において説明されるユーザは、対話的オンライン「企業ソーシャルネットワーク」のユーザ(又は、「メンバ」)であり、上記「企業ソーシャルネットワーク」はさらに本明細書において「企業ソーシャルネットワーキングシステム」、「企業協働ネットワーク」として、あるいはより簡素に「企業ネットワーク」としても参照される。こうしたオンラインの企業ネットワークは、人々の間のやりとりを容易にする一般的方法にますますなっており、人々のうち誰もが、企業ユーザとして認識されることがある。オンライン企業ソーシャルネットワークの一例は、カリフォルニア州サンフランシスコのsalesforce.com社により提供されるChatter(登録商標)である。salesforce.com社は、企業ソーシャルネットワーキングサービス、顧客関係管理(CRM)サービス、及び他のデータベース管理サービスのプロバイダであり、上記のうちいずれも、いくつかの実現において本明細書に開示される手法と関連してアクセスされ、使用されることができる。これらの様々なサービスは、本明細書において説明されるようにクラウドコンピューティング環境において、例えば、マルチテナントデータベースシステムの文脈において提供できる。説明される手法又はプロセスのいくつかは、ローカルでソフトウェアをインストールする必要なく、すなわち、クラウドを通じて利用可能なサービスと対話するユーザのコンピューティングデバイス上で実現できる。開示される実現は、Chatter(登録商標)とより一般的に企業ソーシャルネットワーキングとを参照して説明されることがあるが、開示される手法はChatter(登録商標)にもsalesforce.com社により提供されるいかなる他のサービス及びシステムにも限定されず、例えば、マルチテナントデータベースシステムの一部でもなく企業ソーシャルネットワーキングサービスも提供しないクラウドベースシステムなどの様々な他のデータベースシステムの文脈において実現されてもよいことを当業者は理解するべきである。
本明細書において用いられるとき、用語「テナント」は、ソフトウェアインスタンスに対して特定の特権で一般的アクセスを共有するユーザのグループを含むことができる。マルチテナントアーキテクチャ、例えば本明細書において論じられるものなどは、テナント固有データ、ユーザ管理、テナント固有機能性、構成、カスタマイズ、非機能的属性、関連づけられたアプリケーション等のうち1つ以上を典型的に含むソフトウェアインスタンスの専用共有分を、テナントに提供することができる。マルチテナンシーは、別個のソフトウェアインスタンスが異なるテナントのために動作するマルチインスタンスアーキテクチャと対照をなす。
図1Aは、いくつかの実現に従うオンデマンドデータベースサービスが使用され得る環境10の一例のブロック図を示す。環境10は、ユーザシステム12と、ネットワーク14と、データベースシステム16(さらに、本明細書において「クラウドベースシステム」としても参照される)と、プロセッサシステム17と、アプリケーションプラットフォーム18と、ネットワークインターフェース20と、テナントデータ23を記憶するテナントデータベース22と、システムデータ25を記憶するシステムデータベース24と、システム16の様々な機能を実現するプログラムコード26と、データベースシステムプロセス及びテナント固有プロセスを実行し、例えば、アプリケーションホスティングサービスの一部としてアプリケーションを実行するプロセス空間28とを含む。いくつかの他の実現において、環境10は、これらコンポーネント又はシステムのすべてを有さなくてもよく、あるいは、上記でリストアップされたコンポーネントに対して代わりに又は追加で他のコンポーネント又はシステムを有してもよい。
いくつかの実現において、環境10は、オンデマンドデータベースサービスが存在する環境である。オンデマンドデータベースサービス、例えば、システム16を用いて実現できるサービスなどは、システム16に対するアクセスを所有、維持、又は提供する、企業の外部のユーザに対して利用可能にされるサービスである。上記で説明されたように、こうしたユーザは、一般に、システム16を構築又は維持することに関与する必要がない。代わりに、システム16により提供されたリソースは、ユーザがシステム16により提供されるサービスを必要とするとき、すなわちユーザの要望に応じて、こうしたユーザの使用に対して利用可能であり得る。いくつかのオンデマンドデータベースサービスは、1つ以上のテナントからの情報を共通のデータベースイメージのテーブルに記憶してマルチテナントデータベースシステム(MTS)を形成することができる。用語「マルチテナントデータベースシステム」は、データベースシステムのハードウェア及びソフトウェアの様々な要素が1以上の顧客又はテナントにより共有され得るシステムを参照することができる。例えば、所与のアプリケーションサーバが、多数の顧客の要求を同時に処理してもよく、所与のデータベーステーブルが、潜在的にさらにより多数の顧客のフィードアイテムなどのデータの行を記憶してもよい。データベースイメージには、1つ以上のデータベースオブジェクトを含むことができる。関係データベース管理システム(RDBMS)又はその均等物は、データベースオブジェクトに対して情報の記憶及び取り出しを実行することができる。
アプリケーションプラットフォーム18は、システム16のアプリケーションが実行することを可能にするフレームワーク、例えば、システム16のハードウェア又はソフトウェアインフラストラクチャなどであり得る。いくつかの実現において、アプリケーションプラットフォーム18は、オンデマンドデータベースサービスのプロバイダ、ユーザシステム12を介してオンデマンドデータベースサービスにアクセスするユーザ、又はユーザシステム12を介してオンデマンドデータベースサービスにアクセスするサードパーティアプリケーション開発者により開発された1つ以上のアプリケーションの作成、管理、及び実行を可能にする。
いくつかの実現において、システム16は、ウェブベース顧客関係管理(CRM)システムを実現する。例えば、いくつかのこうした実現において、システム16は、CRMソフトウェアアプリケーションを実現及び実行し、ユーザシステム12への及びユーザシステム12からの関連したデータ、コード、フォーム、レンダリング可能なウェブページ及び文書、並びに他の情報を提供し、かつ、関連したデータ、オブジェクト、及びウェブページコンテンツをデータベースシステムに記憶し、データベースシステムから取り出すように構成された、アプリケーションサーバを含む。いくつかのMTS実現において、複数のテナントのためのデータが、テナントデータベース22内の同じ物理データベースオブジェクトに記憶されてもよい。いくつかのこうした実現において、テナントデータは、こうしたデータが明白に共有されない限り、あるテナントが別のテナントのデータに対するアクセスを有さないように、あるテナントのデータが他のテナントのデータとは論理的に別個に保持されるようにテナントデータベース22の記憶媒体内に配列される。システム16はまた、CRMアプリケーション以外の、又はCRMアプリケーションに対して追加のアプリケーションを実現する。例えば、システム16は、CRMアプリケーションを含む複数のホストされた(標準及びカスタムの)アプリケーションに対するテナントアクセスを提供することができる。CRMを含んでもよく含まなくてもよい、ユーザ(又は、サードパーティ開発者)アプリケーションが、アプリケーションプラットフォーム18によりサポートされてもよい。アプリケーションプラットフォーム18は、アプリケーションの1つ以上のデータベースオブジェクトへの作成及び記憶と、システム16のプロセス空間における1つ以上の仮想マシン内でのアプリケーションの実行とを管理する。
いくつかの実現によれば、各システム16は、ウェブページ、フォーム、アプリケーション、データ、及びメディアコンテンツをユーザ(クライアント)システム12に提供して、システム16のテナントとしてのユーザシステム12によるアクセスをサポートするように構成される。そのようなものとして、システム16は、データが共有されない限り各テナントのデータを別個に保持するようにセキュリティメカニズムを提供する。2つ以上のMTSが使用される場合、これらは互いに近接して(例えば、単一の建物又はキャンパス内に位置するサーバファーム内に)位置してもよく、あるいは、これらは互いから遠隔の位置(例えば、市Aに位置する1つ以上のサーバと、市Bに位置する1つ以上のサーバ)に分散されてもよい。本明細書において用いられるとき、各MTSは、ローカルで分散されているか又は1つ以上の地理的位置にわたる、1つ以上の論理的又は物理的に接続されたサーバを含むことがある。さらに、用語「サーバ」は、当分野において周知である処理ハードウェア及びプロセス空間と、メモリデバイス又はデータベースなどの関連づけられた記憶媒体と、いくつかの例ではデータベースアプリケーション(例えば、OODBMS又はRDBMS)とを含むコンピューティングデバイス又はシステムを参照するように意図される。さらに、「サーバシステム」と「サーバ」とは本明細書においてしばしば置き換え可能に用いられることが理解されるべきである。同様に、本明細書において説明されるデータベースオブジェクトは、単一のデータベース、分散型データベース、分散型データベースの集合、冗長オンライン若しくはオフラインバックアップ又は他の冗長性を有するデータベース等の一部として実現されてもよく、分散型データベース又はストレージネットワークと関連づけられた処理インテリジェンスとを含むことができる。
ネットワーク14は、互いに通信するシステム又はデバイスの任意のネットワーク又はネットワークの組み合わせであり、あるいはこれらを含んでもよい。例えば、ネットワーク14は、LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、テレフォンネットワーク、ワイヤレスネットワーク、セルラーネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な構成のうち任意の1つ又は任意の組み合わせであり、あるいはこれらを含んでもよい。ネットワーク14は、TCP/IP(トランスファーコントロールプロトコル及びインターネットプロトコル)ネットワーク、例えば、(大文字の「I」を用いて)「インターネット」としてしばしば参照されるネットワークのグローバルインターネットワークなどを含んでもよい。インターネットは、本明細書における例のうち多くで用いられる。しかしながら、TCP/IPは頻繁に実現されるプロトコルであるが、開示される実現が使用できるネットワークはそのように限定されないことが理解されるべきである。
ユーザシステム12は、TCP/IPと、より高いネットワークレベルではHTTP、FTP、AFS、WAPなどの通信するための他の一般的インターネットプロトコルとを用いて、システム16と通信することができる。HTTPが使用される一例において、各ユーザシステム12は、システム16のHTTPサーバへの及びHTTPサーバからのHTTP信号を送信及び受信するために、「ウェブブラウザ」又は簡素に「ブラウザ」として一般に参照されるHTTPクライアントを含むことができる。こうしたHTTPサーバは、システム16とネットワーク14との間の単独のネットワークインターフェース20として実現されてもよく、しかし、これら手法に対して追加で又は代わりに他の手法が用いられてもよい。いくつかの実現において、システム16とネットワーク14との間のネットワークインターフェース20は、ロードシェアリング機能性、例えば、ロードのバランスをとり、かつ入来HTTP要求を複数のサーバにわたり均等に分散するラウンドロビンHTTP要求分配器などを含む。MTS実現では、サーバの各々がMTSデータに対するアクセスを有することができ、しかしながら、他の代替的な構成が代わりに用いられてもよい。
ユーザシステム12は、データベースシステム16にアクセスするためにユーザにより使用可能な任意のコンピューティングデバイス又は他のデータ処理装置若しくはシステムとして実現されてよい。例えば、ユーザシステム12のうち任意のものが、デスクトップコンピュータ、ワークステーション、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピューティングデバイス、モバイルセルラーフォン(例えば、「スマートフォン」)、若しくは任意の他のWi‐Fi(登録商標)対応デバイス、ワイヤレスアクセスプロトコル(WAP)対応デバイス、又はインターネット若しくは他のネットワークに直接又は間接的にインターフェースをとることができる他のコンピューティングデバイスであってもよい。用語「ユーザシステム」及び「コンピューティングデバイス」は本明細書において、互いに、及び用語「コンピュータ」と置き換え可能に用いられる。上記で説明されたように、各ユーザシステム12は、HTTPクライアント、例えば、WebKitプラットフォームに基づくウェブブラウザ、Microsoft(登録商標)のインターネットエクスプローラブラウザ、Apple(登録商標)のSafari(登録商標)、Google(登録商標)のChrome(登録商標)、Opera(登録商標)のブラウザ、又はMozilla(登録商標)のFirefox(登録商標)ブラウザなどのウェブブラウジング(又は、簡素に「ブラウジング」)プログラムを典型的に実行して、ユーザシステム12のユーザ(例えば、システム16により提供されるオンデマンドサービスの加入者)がネットワーク14を通じてシステム16からの自身に利用可能な情報、ページ、及びアプリケーションにアクセスし、かつこれらを処理し、閲覧することを可能にする。
各ユーザシステム12はまた、システム16又は他のシステム若しくはサーバにより提供されたページ、フォーム、アプリケーション、及び他の情報と関連してユーザシステム12のディスプレイ(例えば、他の可能性の中でもモニタ画面、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ)上にブラウザにより提供されたグラフィカルユーザインターフェース(GUI)と対話するように、1つ以上のユーザ入力デバイス、例えばキーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペン、又はスタイラスなどを典型的に含む。例えば、ユーザインターフェースデバイスが使用されて、システム16によりホストされたデータ及びアプリケーションにアクセスし、記憶されたデータに対して検索を実行し、その他の方法でユーザがユーザに提示され得る様々なGUIページと対話することを可能にすることができる。上記で論じられたように、実現は、インターネットとの使用に適するが、他のネットワークがインターネットに対して代わりに又は追加で使用されてもよく、例えば、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースネットワーク、任意のLAN又はWANなどである。
ユーザシステム12のユーザは、そのそれぞれのキャパシティにおいて異なってもよく、特定のユーザシステム12のキャパシティは、こうしたユーザシステムの現在のユーザに対するパーミッション(パーミッションレベル)によって全体的に決定されてもよい。例えば、販売員が特定のユーザシステム12を使用してシステム16と対話している場合、そのユーザシステムは、上記販売員に割り振られたキャパシティを有することができる。しかしながら、管理者がそのユーザシステム12を使用してシステム16と対話する間、そのユーザシステムは管理者に割り振られたキャパシティを有することができる。階層的ロールモデルが使用される場合、あるパーミッションレベルのユーザは、より低いパーミッションレベルのユーザによりアクセス可能なアプリケーション、データ、及びデータベース情報に対するアクセスを有することができ、しかし、より高いパーミッションレベルのユーザによりアクセス可能な特定のアプリケーション、データベース情報、及びデータに対するアクセスを有さないことがある。ゆえに、異なるユーザは、ユーザのそれぞれのセキュリティ又はパーミッションレベル(さらに、「承認」としても参照される)に依存して、アプリケーション及びデータベース情報にアクセスすること及びこれらを修正することに関して異なる能力を一般に有することになる。
いくつかの実現によれば、各ユーザシステム12、及びそのコンポーネントのうちいくつか又はすべてが、Intel(登録商標) Pentium(登録商標)プロセッサなどの中央処理ユニット(CPU)を用いて実行されるコンピュータコードを含むブラウザなどのアプリケーションを用いてオペレータ構成可能である。同様に、システム16(及び、2つ以上が存在する場合のMTSのさらなるインスタンス)、及びそのコンポーネントのすべてが、プロセッサシステム17を用いて動作するコンピュータコードを含むアプリケーションを用いてオペレータ構成可能であってもよく、プロセッサシステム17は、Intel Pentium(登録商標)プロセッサなどを含み得るCPU、又は複数のCPUを含むように実現されてもよい。
システム16は、本明細書に説明されるプロセスの実現のいくつかを実行するためにサーバ又は他のコンピューティングシステム(又は、こうしたサーバ若しくはコンピューティングシステムの集合)により実行可能であり、あるいは該サーバ又は他のコンピューティングシステムをプログラムするために使用される、非一時的命令を記憶させた有形のコンピュータ読取可能媒体を含む。例えば、コンピュータプログラムコード26は、本明細書に説明されるようにウェブページ、アプリケーション、並びに他のデータ及びメディアコンテンツを相互通信及び処理するようにシステム16を操作及び構成する命令を実現することができる。いくつかの実現において、コンピュータコード26はダウンロード可能であり、ハードディスクに記憶されてもよいが、プログラムコード全体又はこれらの一部はまた、ROM又はRAMなどの周知である任意の他の揮発性又は不揮発性のメモリ媒体又はデバイスに記憶されてもよく、あるいは、プログラムコードを記憶することができる任意の媒体、例えば、フロッピーディスク、光ディスク、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、マイクロドライブ、及び磁気光ディスクを含む任意タイプの回転媒体、並びに磁気若しくは光学カード、ナノシステム(分子メモリICを含む)、又は、命令若しくはデータを記憶するのに適した任意の他タイプのコンピュータ読取可能媒体若しくはデバイス上で提供されてもよい。さらに、プログラムコード全体又はその一部は、周知のように送信媒体を通じて、例えばインターネットを通じてソフトウェアソースから、又は別のサーバから、送信され、ダウンロードされてもよく、あるいは、周知の任意の通信媒体及びプロトコル(例えば、TCP/IP、HTTP、HTTPS、イーサネット(登録商標)等)を用いて、周知の任意の他の既存のネットワーク接続(例えば、エクストラネット、VPN、LAN等)を通じて送信されてもよい。さらに、開示される実現のコンピュータコードは、サーバ又は他のコンピューティングシステム上で実行できる任意のプログラミング言語、例えば、C、C++、HTML、任意の他のマークアップ言語、JavaTM(登録商標)、Javascript(登録商標)、ActiveX(登録商標)、任意の他のスクリプティング言語、例えばVBScriptなどにおいて具現化されてもよく、周知である多くの他のプログラミング言語が使用されてもよい(JavaTMはSun Microsystems社の商標である。)。
図1Bは、いくつかの実現による図1Aの要素の例示的な実現とこれら要素間の例示的な相互接続とのブロック図を示す。すなわち、図1Bもまた環境10を例示し、しかし図1Bでは、システム16の様々な要素とこうした要素間の様々な相互接続とが、いくつかのより特定の実現に従ってさらなる特定性で示される。さらに、図1Bにおいて、ユーザシステム12は、プロセッサシステム12A、メモリシステム12B、入力システム12C、出力システム12D、及び通信システム12Eを含む。プロセッサシステム12Aは、1つ以上のプロセッサ、例えば、シングルコア又はマルチコアプロセッサを含む1つ以上の中央処理ユニット(CPU)、1つ以上のグラフィックス処理ユニット(GPU)、1つ以上のフィールドプログラマブルゲートアレイ(FPGA)、又は、算術的、論理的、及び/又は入力/出力オペレーションを実行するようにプログラムコード及び/又はソフトウェアモジュールを実行することができる任意の他の電子回路などの、任意の適切な組み合わせを含むことができる。メモリシステム12Bは、1つ以上のメモリデバイス、例えば、揮発ストレージデバイス(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)等)及び不揮発メモリデバイス(例えば、読取専用メモリ(ROM)、フラッシュメモリ等)などの、任意の適切な組み合わせを含むことができる。入力システム12Cは、入力デバイス、例えば、1つ以上のタッチスクリーンインターフェース、キーボード、マウス、トラックボール、スキャナ、カメラ、又はネットワークに対するインターフェースなどの、任意の適切な組み合わせを含むことができる。出力システム12Dは、出力デバイス、例えば、1つ以上のディスプレイデバイス、プリンタ、ネットワークに対するインターフェースなどの、任意の適切な組み合わせを含むことができる。通信システム12Eは、無線ネットワーク又は有線ネットワークと通信する回路を含むことができる。通信システム12Eは、リンク15(さらに、「チャネル15」、「ネットワーキングレイヤトンネル15」などとして参照される)を確立するために使用されてもよく、リンク15を通して、ユーザシステム12はデータベースシステム16と通信することができる。通信システム12Eは、特定の無線通信プロトコル(例えば、Wi‐Fi及び/又はIEEE802.11プロトコル)、セルラー通信プロトコル(例えば、ロングタームエボリューション(LTE(登録商標))など)、ワイヤレスパーソナルエリアネットワーク(WPAN)プロトコル(例えば、IEEE802.15.4~802.15.5プロトコル、Bluetooth(登録商標)又はBluetooth low energy(BLE)等)、及び/又は有線の通信プロトコル(例えば、イーサネット、ファイバ分散データインターフェース(FDDI)、ポイントツーポイント(PPP)等)に対して専用にされた1つ以上のプロセッサ(例えば、ベースバンドプロセッサ等)を含んでもよい。通信システム12Eは、固体又は非固体の媒体を通して変調された電磁放射を用いて無線/有線ネットワーク及び/又は他のユーザシステム12との通信を可能にするハードウェアデバイスをさらに含んでもよい。こうしたハードウェアデバイスは、スイッチ、フィルタ、増幅器、アンテナ素子などを含んで、電波を生成し又はその他の方法で生じさせてデータを1つ以上の他のデバイスに送信することと、受信した信号をデジタルデータなどの使用可能な情報にコンバートすることとによって、無線での又はワイヤを通しての通信を容易にしてもよく、上記情報は、ユーザシステム12の1つ以上の他のコンポーネントに提供されてもよい。データベースシステム16と通信する(例えば、送信する/受信する)ために、ユーザシステム12は、通信システム12Eを用いて、データベースシステム16のネットワークインターフェース20とのリンク15を確立してもよい。
図1Bにおいて、ネットワークインターフェース20は、一組のHTTPアプリケーションサーバ100~100として実現される。各アプリケーションサーバ100は、さらに本明細書において「アプリサーバ」としても参照され、テナントデータベース22及びその中のテナントデータ23、並びにシステムデータベース24及びその中のシステムデータ25と通信して、ユーザシステム12から受信した要求を果たすように構成される。テナントデータ23は、個々のテナントストレージ空間112に分割されることができ、テナントストレージ空間112は、物理的又は論理的に配置又は分割されてもよい。各テナントストレージ空間112内で、ユーザストレージ114及びアプリケーションメタデータ116が、各ユーザについて同様に割り当てられることができる。例えば、ユーザの最も最近使用した(MRU)アイテムのコピーが、ユーザストレージ114に記憶されてもよい。同様に、テナントである組織全体のMRUアイテムのコピーが、テナントストレージ空間112に記憶されてもよい。
プロセス空間28は、システムプロセス空間102、個々のテナントプロセス空間104、及びテナント管理プロセス空間110を含む。アプリケーションプラットフォーム18は、アプリケーション開発者のアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズム38を含む。こうしたアプリケーション及びその他が、例えば、テナント管理プロセス110により管理される1つ以上のテナントプロセス空間104として、加入者による実行のために、保存ルーチン36によりメタデータとしてテナントデータベース22に保存されてもよい。こうしたアプリケーションに対する起動は、PL/SOQL34を用いてコード化されてもよく、PL/SOQL34は、API32に対するプログラミング言語スタイルインターフェース拡張である。いくつかのPL/SOQL言語実現の詳細な説明が、Craig WeissmanによるMETHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICEと題され2010年6月1日に発行された、本明細書においてその全体を参照により及びすべての目的のために援用される、本発明の譲受人に譲渡された米国特許第7,730,478号で論じられている。アプリケーションに対する起動は、1つ以上のシステムプロセスにより検出でき、上記システムプロセスは、起動を行い、かつ仮想マシン内でアプリケーションとしてメタデータを実行する加入者のために、アプリケーションメタデータ116を取り出すことを管理する。
図1Bのシステム16は、ユーザシステム12におけるユーザ又は開発者に対する、システム16常駐プロセスへのユーザインターフェース(UI)30及びアプリケーションプログラミングインターフェース(API)32をさらに含む。いくつかの他の実現において、環境10は、上記でリストアップされた要素と同じ要素を有さなくてもよく、あるいは、上記でリストアップされた要素に対して代わりに又は追加で他の要素を有してもよい。
各アプリケーションサーバ100は、異なるネットワーク接続を介して、例えばテナントデータ23及びシステムデータ25に対するアクセスをそれぞれ有するテナントデータベース22及びシステムデータベース24に、通信可能に結合されることができる。例えば、1つのアプリケーションサーバ100はネットワーク14(例えば、インターネット)を介して結合でき、別のアプリケーションサーバ100N‐1は直接ネットワークリンクを介して結合でき、別のアプリケーションサーバ100はさらに異なるネットワーク接続によって結合できる。トランスファーコントロールプロトコル及びインターネットプロトコル(TCP/IP)は、アプリケーションサーバ100とシステム16との間で通信するために使用できる典型的なプロトコルの例である。しかしながら、使用されるネットワーク相互接続に依存してシステム16を最適化するように他のトランスポートプロトコルが使用されてもよいことが当業者に明らかであろう。
いくつかの実現において、各アプリケーションサーバ100は、システム16のテナントである任意の組織に関連づけられた任意のユーザの要求を扱うように構成される。任意の時間に様々な理由のためにサーバプールからのアプリケーションサーバ100を追加及び削除できることが望ましい可能性があるため、いくつかの実現において、特定のアプリケーションサーバ100に対するユーザ又は組織のサーバアフィニティが存在しない。いくつかのこうした実現において、ロードバランシング機能(例えば、F5 Big‐IPロードバランサ)を実現するインターフェースシステムが、アプリケーションサーバ100とユーザシステム12との間に通信可能に結合されて、アプリケーションサーバ100に対する要求を分配する。1つの実現において、ロードバランサは、最小接続アルゴリズムを使用して、アプリケーションサーバ100に対するユーザ要求をルーティングする。ロードバランシングアルゴリズムの他の例、例えば、ラウンドロビン及び観察された応答時間などが、使用されてもよい。例えば、いくつかの例において、同一ユーザからの3つの連続した要求が3つの異なるアプリケーションサーバ100に至ることがあり、異なるユーザからの3つの要求が同一のアプリケーションサーバ100に至ることがある。このようにして、例として、システム16はマルチテナントシステムであり得、このシステム16は、いろいろなユーザ及び組織にわたる異なるオブジェクト、データ、及びアプリケーションの記憶とこれらに対するアクセスとを扱う。
1つの例示的なストレージ使用事例において、あるテナントが、各販売員がシステム16を使用して自身の態様を管理するところの販売陣(sales force)を採用する会社であり得る。ユーザは、すべてがユーザ個人の販売プロセスに適用可能である連絡先データ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、ゴール及び進捗データ等を(例えば、テナントデータベース22の中に)維持することができる。MTS配置の一例において、アクセス、閲覧、修正、報告、送信、算出等すべきデータ及びアプリケーションのすべてが、ネットワークアクセスを超えるものを有さないユーザシステム12により維持され、アクセスされることができるため、ユーザは、自身の販売努力及びサイクルを多くの種々のユーザシステムのうちいずれかから管理することができる。例えば、販売員が顧客を訪問し、顧客がそのロビーにおいてインターネットアクセスを有する場合、販売員は、ロビーで顧客が到着するのを待つ間に、この顧客に関する重要なアップデートを得ることができる。
各ユーザの雇用主にかかわらず、各ユーザのデータは他のユーザのデータとは別個に記憶できるが、いくつかのデータは、テナントである所与の組織の複数のユーザ又はユーザ全員によって共有されるか又はアクセス可能である組織範囲のデータであってもよい。ゆえに、テナントレベルで割り当てられたシステム16により管理されるいくつかのデータ構造が存在し得ると同時に、他のデータ構造がユーザレベルで管理されてもよい。MTSが、あり得る競合他社を含む複数のテナントをサポートすることができるため、MTSは、データ、アプリケーション、及びアプリケーション使用を別個に保持するセキュリティプロトコルを有してもよい。さらに、多くのテナントが、自身の独自システムを維持するよりもMTSへのアクセスを選ぶ可能性があるため、冗長性、アップタイム、及びバックアップが、MTSにおいて実現され得るさらなる機能である。ユーザ固有データ及びテナント固有データに加えて、システム16は、複数のテナントにより使用可能なシステムレベルのデータ又は他のデータをさらに維持してもよい。こうしたシステムレベルのデータには、複数テナント間で共有可能な産業レポート、ニュース、投稿メッセージ等を含むことができる。
いくつかの実現において、ユーザシステム12(これは、さらにクライアントシステムであり得る)は、アプリケーションサーバ100と通信して、システム16からのシステムレベル及びテナントレベルのデータを要求し、更新する。こうした要求及び更新は、1つ以上のクエリをテナントデータベース22又はシステムデータベース24に送信することを含んでもよい。システム16(例えば、システム16の中のアプリケーションサーバ100)は、所望の情報にアクセスするように設計された1つ以上のSQLステートメント(例えば、1つ以上のSQLクエリ)を自動的に生成することができる。システムデータベース24は、データベースからの要求されたデータにアクセスするためのクエリプランを生成してもよい。用語「クエリプラン」は、データベースシステム内の情報にアクセスするために使用される1つ以上のオペレーションを一般に参照する。
各データベースは、所定の又はカスタマイズ可能なカテゴリに合わせられたデータを含む、一組の論理テーブルなどのオブジェクトの集合として一般に見ることができる。「テーブル」はデータオブジェクトの一表現であり、本明細書において、いくつかの実現に従うオブジェクト及びカスタムオブジェクトの概念的説明を簡素化するのに使用されることがある。「テーブル」及び「オブジェクト」は本明細書において置き換え可能に使用され得ることが理解されるべきである。各テーブルは、可視のスキーマの中の列又はフィールドとして論理的に配置された1つ以上のデータカテゴリを一般に含む。テーブルの各行又は要素は、フィールドによって定義された各カテゴリについてのデータのインスタンスを含むことができる。例えば、CRMデータベースが、名前、住所、電話番号、ファックス番号などの基本的な連絡先情報のフィールドで顧客を説明するテーブルを含んでもよい。別のテーブルが、顧客、プロダクト、販売価格、日付などの情報のフィールドを含む購入注文を記述してもよい。いくつかのMTS実現において、すべてのテナントによる使用のために、標準のエンティティテーブルが提供されてもよい。CRMデータベースアプリケーションについて、こうした標準のエンティティには、ケース、アカウント、連絡先、リード、及び機会のデータオブジェクトのテーブルを含み、各々が、予め定義されたフィールドを含んでもよい。本明細書において用いられるとき、用語「エンティティ」もまた、「オブジェクト」及び「テーブル」と置き換え可能に使用されることがある。
いくつかのMTS実現において、テナントは、カスタムオブジェクトを作成し、記憶することを可能にされ、あるいは、例えばカスタムインデックスフィールドを含むカスタムフィールドを標準のオブジェクトに対して作成することにより、標準のエンティティ又はオブジェクトをカスタマイズすることを可能にされてもよい。WeissmanらによるCUSTOM ENTITIES AND FIELDS IN A MULTI-TENANT DATABASE SYSTEMと題され2010年8月17日に発行された、本明細書においてその全体を参照により及びすべての目的のために援用される、本発明の譲受人に譲渡された米国特許第7,779,039号は、マルチテナントデータベースシステムにおいてカスタムオブジェクトを作成し、標準オブジェクトをカスタマイズするためのシステム及び方法を教示している。いくつかの実現において、例えば、すべてのカスタムエンティティデータ行が単一のマルチテナントの物理テーブルに記憶され、このテーブルは組織ごとに複数の論理テーブルを含むことがある。顧客の複数の「テーブル」が実際は1つの大きいテーブルに記憶されること、又は、顧客のデータが他の顧客のデータと同じテーブルに記憶され得ることは、顧客に対して透過的である。
図2は、様々な例示的実施形態に従う、ユーザシステム12のコンポーネントがデータベースシステム16のコンポーネントと対話する配置200を示す。図示されるように、ユーザシステム12は、図1A及び図1Bに関して前に論じられたプロセッサシステム12A、メモリシステム12B、入力システム12C、出力システム12D、及び通信システム12Eを含むことができる。データベースシステム16は、図1A及び図1Bに関して前に論じられたようにプロセッサシステム17、ネットワークインターフェース20、データベース22、及びプログラムコード26を含むことができる。
ユーザシステム12を参照し、メモリシステム12Bは、オペレーティングシステム(OS)(図示されていない)、環境205、アプリケーション210、及び1つ以上のデータベース(図示されていない)を含むことができる。OSは、コンピュータハードウェア及びソフトウェアリソースを管理し、ユーザシステム12のアプリケーションに一般的サービスを提供することができる。OSは、ハードウェアデバイスに対するインターフェースを提供する1つ以上のドライバ及び/又はAPIを含んでもよく、これにより、OS及びアプリケーション210は、ハードウェア機能にアクセスすることが可能になる。いくつかの実施形態において、OSは、2つ以上の別個のアプリケーションを接続し、あるいはOS及び/又はドライバ/APIから利用可能なコンポーネントを越えてアプリケーションを下層のハードウェアコンポーネントに接続することができる、ミドルウェアを含んでもよい。OSは、汎用目的オペレーティングシステム、又は、具体的にユーザシステム12のために書かれ又は適合されたオペレーティングシステムであってもよい。
アプリケーション210は、例えば、ユーザシステム12がスマートフォン、タブレットコンピュータなどのモバイルデバイスで実現されるときなどに、ユーザシステム12で動作するように設計されたソフトウェアアプリケーションであり得る。アプリケーション210を実現するプロセッサシステム12Aは、データベース16からのデータを要求及び取得し、アプリケーション210のコンテナ又はウェブブラウザにグラフィカルユーザインターフェース(GUI)をレンダリングすることができてもよい。様々な実施形態において、ウェブページ及び/又はGUIは、データ解析GUI、例えば、Salesforce WaveTMダッシュボードなどを含んでもよく、データ解析GUIは、企業クラウド内又はオンデマンドサービス環境内(例えば、データベースシステム16内のテナント空間)に存在するデータの視覚的表現を提供することができる。アプリケーション210は、環境205を用いて開発されるネイティブアプリケーション、ウェブアプリケーション、又はハイブリッドアプリケーション(又は、これらの変形)であり得る。アプリケーション210はまた、他のツール/プログラミング言語、例えば本明細書において論じられるものなどで開発され(あるいは、これらと対話するように構成され)てもよい。
環境205は、ソフトウェア開発環境(SDE)、統合開発環境(IDE)、ソフトウェア開発キット(SDK)、ソフトウェア開発プラットフォーム(SDP)、又は、テナント開発者がテナント空間にアクセスするためのアプリケーション(例えば、アプリケーション210)を作成することを可能にする他の同様のプラットフォーム若しくはフレームワークであり得る。実施形態において、環境205は、ソースコードエディタ、ビルド自動化ツール、デバッガ、コンパイラ、インタプリタ、及び/又は、アプリケーションを構築することにおいて開発者を支援することができる他の同様のツールを含んでよい。実施形態において、環境205は、1つ以上のスキーマ313b(例えば、図3参照)を開発及び編集するGUIを提供することができるスキーマビルダをさらに含んでもよく、スキーマ313bは、1つ以上のデータベースオブジェクトの構造又は他の同様のデータ編成を説明する、グラフ又は他の同様の構造であり得る。スキーマビルダのGUIは、開発者が1つ以上のデータベースオブジェクト内の様々なレコード、フィールド、及び要素間の関係を含むデータモデルを閲覧及び修正することを可能にすることができる。実施形態において、環境205は、開発者が1つ以上のアーチファクト(artifacts)313(例えば、図3参照)を生成及び修正することを可能にする様々なツール(例えば、モデリング言語アプリケーション等)を提供することができ、アーチファクト313には、ユース/ビジネスケース解析、プロジェクト計画、リスクアセスメント等;クラス図;フローチャート;システム図;コンパイルされたソースコード;スキーマ(例えば、拡張マークアップ言語(XML)スキーマ、文書型定義(Document Type Definitions)(DTD)、リラクシング(Relax-NG)、スキマトロン(Schematron)、XMLスキーマ定義(XML Schema Definitions)(XSD)等);オブジェクトモデル(例えば、文書オブジェクトモデル(Document Object Model)(DOM)、Javaオブジェクトモデル、Rubyオブジェクトモデル等);及び/又はソースコードに関連づけられた他の同様のアーチファクトを含むことができる。実施形態において、アーチファクト313は、さらに又は別法として、ソースコード自体を含んでもよい。
いくつかの実施形態において、環境205は、ウェブベース又はクラウドベースの環境であってもよく、この環境は、ネイティブアプリケーション、ウェブアプリケーション、又はハイブリッドアプリケーション(又は、これらの変形)であってもよい。ウェブベース又はクラウドベースの環境205は、GUIを含んでもよく、GUIは、ユーザシステムにより実現されるウェブブラウザ又はコンテナ内に、バックエンドサービス(例えば、データベースシステム16、クラウドサービスプロバイダ等)により実現されるSDE/IDE/SDK/SDPをレンダリングする。GUIは、例えば本明細書に論じられる通信プロトコル及び/又はAPIを用いて、開発者が様々な開発ツールにアクセスすることを可能にすることができる。ウェブベース又はクラウドベースの環境205のクライアント側部分は、サーバ側開発ツール及び/又はプログラミング言語、例えばPHP、Node.js、ASP.NET、及び/又は、HTMLをレンダリングする他の同様の技術などで;ウェブサイト開発ツール及び/又はプログラミング言語、例えばHTML、カスケーディングスタイルシート(CSS)、Javascript、JQueryなどを用いて;及び/又は、プラットフォーム固有開発ツール及び/又はプログラミング言語(例えば、Visualforce(登録商標) Android(登録商標) StudioTM IDE、Apple(登録商標) iOS(登録商標) SDKなど)を用いて開発されてもよい。用語「プラットフォーム固有」は、ユーザシステム12により実現されるプラットフォーム、及び/又はデータベースシステム16により実現されるプラットフォームを参照することがある。実施形態において、環境205は、カリフォルニア州サンフランシスコのsalesforce.com社により提供されるForce.com IDE(登録商標)であってもよい。
OS、データベース、環境205、及びアプリケーション210の適切な実現と、ユーザシステム12の一般的機能性とは、知られているか又は市販されており、特に本明細書における開示を考慮し、当業者によって容易に実現される。しかしながら、環境205は、本明細書に論じられる様々な実施形態に従いブロックチェーン技術を用いて実現されるバージョン制御システム(又は、これらの一部)をさらに含むことができる。
典型的なソフトウェア開発プラットフォームモデルは、分散型バージョン制御システム(VCS)、例えばGIT、マーキュリアル(Mercurial)などを通して、高度に分散化されたワークフローをサポートするように進化している。これらモデルは、ソースコードの完全なビューを開発者の独自のクライアントデバイスに提供することにより、開発者がリモートで作業することを可能にすることができる。このことは、開発者が自由に自身が好きな時間及び場所で作業できるようにするが、こうしたシステムにおける変更に対してガバナンスを強制することは、複雑かつ面倒になる可能性があり、なぜならば、上記ソースコードが、納入されるプロダクトのレコードの完全体系であるように取られるからである。ソフトウェアリリースのためのコードを構成するものに加えて、特定の導出された不変条件(invariants)を維持するために、様々な実施形態が、ソースコードに対してだけでなく、さらにソースコードを更新する/編集するための不変条件ルールに適用できる変更に対しても課される制約を用いて、ローカルに検証できる不変条件を表すように改ざん耐性メカニズムを提供する。
ソースコードを更新する/編集するための不変条件ルールは、追跡及び強制するのに特に重要である可能性があり、例えば、スキーマ進化及びAPI変更を統制するルールなどであり、なぜならば、API変更が、これらAPIに対してビルトインの依存関係を有する(例えば、テナントデータにアクセスするためにAPIに依存する)様々なアプリケーション(例えば、テナントデータにアクセスするのに使用されるアプリケーション)に影響する可能性があるからである。アプリケーションのリリースされたインターフェースに対する変更は、該変更が実現又はリリースされた後にこうしたアプリケーションが内部的な一貫性を保有するときでさえ、テナント統合を破壊する可能性があり、回避されるべきである。従来のVCSは、ソースコードの各バージョンに関連づけられたインデックスを記憶することができ、より新しいバージョンが、アプリケーションを破壊し及び/又は他のエラーを含むコードを含むとき、上記インデックスが使用されて、リリースされたソースコードのより古いバージョンに戻ることができる。しかしながら、インデックスが使用される場合でさえ、ソースコードのより古いバージョンは、依然として故意の又は不注意な改ざんにさらされ、このことは、リリースされたアプリケーションがユーザによりインストール及び使用されるまで、問題があることを発見することなく開発者が不変条件ルールを迂回することを可能にすることになる。様々な実施形態において、不変条件ルールの違反は、様々なソフトウェア開発段階の間、例えば接続を切られたビルドプロセスの間などに、立証可能及び強制可能であり得る。実施形態において、ルールの表現は、特定のプロジェクト又はアプリケーションで作業する様々な開発者に分散されることができる。不変条件ルールの配布なしでは、開発者は、その変更が不変条件ルールと調和できないことを認識することなく、相当な期間の時間、ソースコードに対する変更を行う可能性がある。
さらに、様々な実施形態が、リビジョン制御ツリーグラフ(さらに、「ツリー」としても参照される)の分岐上で変更が単調に行われ得ることを提供する。例えば、2以上の開発者が、正当であると独立して決定され得るソースコードに対する変更を行うとき、こうした変更が、並行してプロジェクト又はアプリケーションツリーにアペンドされる場合、これら変更は、バージョンヒストリ内に調和不能なフォークを作成する可能性がある。このことは、2以上のユーザがアプリケーションの異なるバージョンをインストールすることを結果としてもたらす可能性があり、各バージョンは、ツリー内の異なるフォークに基づく。これらバージョンが一緒にマージされるとき、互いに共存することができず、かつユーザのアップグレード可能性に影響することなしに調和できない変更が、存在する可能性があることになる。したがって、実施形態は、例えば、変更が順次的に及び/又はコンセンサスアルゴリズムの影響下で行われることを必要とすることにより、変更が単調に行われるべきであることを提供する。
様々な実施形態において、ブロックチェーン技術が使用されて、ソースコード及び編集/更新ルールが改ざん耐性であり、分散され、単調であることを確保することができる。ブロックチェーン(例えば、ブロックチェーン214)は、ブロック(例えば、ブロック212)と呼ばれる順序付けられたレコードのリストを維持することができる分散型データベースであってもよく、各ブロックは、ブロックチェーン内の前のブロックに対するリンクを含む。ブロックチェーンは、ブロックの垂直スタックとして視覚化されてもよく、第1のブロック(さらに、「起源ブロック(genesis block)」としても参照される)がスタックの土台の役割を果たすことができ、ブロックの「高さ」が第1のブロックからのブロックの距離を参照することができる。さらに、「トップブロック」又は「最上ブロック」は、ブロックチェーンに対する最も最近の追加であったブロックを参照することができる。
様々な実施形態において、ソフトウェアアーチファクト(例えば、アーチファクト313)がパブリックに対してリリースされるとき、検証システム(例えば、ユーザシステム、及び/又は集中型ソースコードリポジトリとして動作するデータベースシステム)によりリリースされるアーチファクトに署名することが、アプリケーション(例えば、アプリケーション210)のサーフェスエリアに対する変更とブロックチェーンの公開とのログレコードのブロックをアペンドしてもよい。実施形態において、上記検証システム又は別の検証システムが、すでにアペンドされたブロックに後継ブロックがアペンドされることを可能にせず、単調さを提供してもよい。前のブロックは署名され、ブロックチェーンに含まれるため、検証システムは、変更のヒストリが変造されておらず、ゆえに改ざん耐性であることをさらに提供することができる。しかしながら、ブロックチェーンは、リリースヒストリを横断し、かつそれをアプリケーションに対するソースコードのアクティブ開発バージョンと比較するツールで、パブリックにされ、ローカルの開発ワークスペースにコピーされることがあるため、アプリケーションの完全性に対するチェックは、完全に集中型であるか、完全に分散型であるか、あるいは部分的に集中型であり及び/又は部分的に分散型である方法で、増分的に行われてもよい。
前に論じられたように、実施形態において、環境205は、開発者(例えば、ユーザシステム12のユーザ)がアーチファクト313(例えば、図3参照)を生成することを可能にすることができる様々なツールを含み、あるいは該ツールに対するアクセスを提供することができる。プロセッサシステム12Aは、(例えば、図3により図示及び説明されるような)アーチファクト313、現在ブロック識別子(cb_id)、前ブロック識別子(pb_id)、及び/又は他の同様のコンテンツ又は情報をとりわけ含むブロック212(例えば、図2により示されるブロック212n+1)を生成するように、環境205を(例えば、環境205のプログラムコード及び/又はソフトウェアモジュールを実行することによって)又は別個のブロック生成器(図2に示されていない)を実現することができる。ブロック212を生成するために、プロセッサシステム12Aは、アーチファクト313をシリアル化し、シリアル化されたアーチファクト313を暗号化して(encipher)cb_id及びpb_idを取得するように、環境205又はブロック生成器を実現することができる。実施形態において、cb_idは、現在のブロックの識別子であり得、これは、暗号ハッシュアルゴリズム、例えば、セキュアハッシュアルゴリズム(SHA)2の暗号ハッシュアルゴリズムのセット(例えば、SHA‐226、SHA‐256、SHA‐512等)、SHA3等における関数などを用いて生成されたハッシュであってもよい。他のハッシュアルゴリズム又は暗号関数が使用されてもよく、例えば、本明細書に論じられる任意タイプの鍵付き(keyed)若しくは鍵なし(unkeyed)暗号ハッシュ関数及び/又は任意の他の関数などである。pb_idは、cb_idを生成するのに使用されるのと同一又は同様の暗号ハッシュアルゴリズムを用いて生成されるハッシュであってもよく、しかし、前のブロック212(「親ブロック」、「前ブロック」などとして参照される)を参照するのに使用されてもよい。こうして、各ブロック212をその親ブロック212にリンクするIDのシーケンスが、起源ブロック212まで戻るチェーンを作成し得る。
プロセッサシステム12Aは、生成されたブロック212を含む要求メッセージ211(さらに、「メッセージ211」、「ユーザ発行メッセージ211」などとしても参照される)を生成するように環境205を実現することができ、生成されたブロック212を識別されたブロックチェーン214に含めるためにメッセージ211をデータベースシステム16に送信するように通信システム12Eを制御することができる。実施形態において、メッセージ211(又は、ブロック212)は、プロジェクト/特徴/アプリケーション識別子(ID)、ブロックチェーンID、テナント若しくは組織ID(org_id)、ユーザID(user_id)、認証クレデンシャル(例えば、鍵情報、デジタル署名、デジタル証明書等)、タイムスタンプ、及び/又は他の同様の識別子若しくは情報をさらに含んでもよい。プロジェクト/特徴/アプリケーションIDは、すべてのブロックチェーン214にわたりグローバルに一意のIDであってもよい。
さらに、プロセッサシステム12Aは、例えば、楕円曲線暗号(elliptic curve cryptographic)(ECC)アルゴリズム、楕円曲線暗号デジタル署名アルゴリズム(Elliptic Curve cryptography Digital Signature Algorithm)(ECDSA)、リベスト・シャミア・エーデルマン(Rivest-Shamir-Adleman)(RSA)暗号、マークル(Merkle)署名スキーム、高度エンクリプションシステム(advanced encryption system)(AES)アルゴリズム、トリプルデータエンクリプションアルゴリズム(triple data encryption algorithm)(3DES)、前に論じられたSHAのうち任意のもの、及び/又は同様のものを用いて、送信の前にブロック212及び/又はメッセージ211をデジタル署名し、かつ/あるいはエンクリプトする(encrypt)ことができる。
実施形態において、メッセージ211はHTTPメッセージであってもよく、ブロック212はHTTPメッセージのヘッダ又はボディ部分に位置してもよい。メッセージ211を伝達するために他のメッセージタイプが使用されてもよく、例えば、セッション開始プロトコル(SIP)メッセージ、セキュアシェル(SSH)メッセージ、若しくは図1A~図1Bに関して論じられたインターネットプロトコルメッセージのうち任意のもの、及び/又は具体的にユーザシステム12とデータベース16との間で通信するために使用される独占の又はプラットフォーム固有のメッセージタイプなどである。使用されるメッセージタイプ及び/又はエンクリプション方法にかかわらず、メッセージ211は、ブロック212の立証とブロック212をリポジトリ251に含めることとのためにデータベースシステム16に送信されてよい。
データベースシステム16のネットワークインターフェース20は、メッセージ211を取得し、このメッセージをブロックチェーンエンジン250に提供することができ、ブロックチェーンエンジン250は、解析のためにメッセージ211からブロック212を抽出することができる。プログラムコード26は、データベースシステム16の様々な機能を実現するために使用されるプログラムコードに追加で、ブロックチェーンエンジン250を含むことができる。ブロックチェーンエンジン250のプログラムコードを含むプログラムコード26は、プロセッサシステム17により実行されてよい。ブロックチェーンエンジン250は、ブロックチェーン214に含まれるべきブロック212を取得し、1つ以上のルール215に対してブロック212を処理し/評価し、かつ潜在ブロック212をブロックチェーン214にアペンドする、プログラムコード及び/又はソフトウェアモジュールであり得る。
実施形態において、データベースシステム16は、複数のユーザシステム12からの対応するブロック212を含む複数のメッセージ211を取得することができる。図2により示される例において、ブロックチェーン214はブロック212乃至212を含むことができ、ここでnは番号である。ブロックチェーン214は、「バージョン制御ブロックチェーン」などとして参照されることがある。ユーザシステム12のユーザは、212の後にブロックチェーン214に含めるために、その独自のブロック212n+1を各々生成することができる。こうした実施形態において、データベースシステム16は、取得されたブロック212を認証し、かつ/あるいは立証し(verify)、ブロック214に含めるために競合ブロック212間の衝突を解決することができる。立証及び/又は衝突解決には、ブロック212のコンテンツを解析することと、ブロック212が不変条件ルール215(さらに、「ルール215」としても参照される)を順守するかどうかを決定することとを含むことができる。
ルール215(さらに、「不変条件ルール215」、「ブロック検証ルール215」、「検証ルール215」、「ブロック立証ルール215」、「立証ルール215」などとしても参照される)は、データ構造又はデータオブジェクト内に説明されるブロック212の要件又は基準であり得る。従来のブロックチェーンシステムにおいては、コンセンサスアルゴリズムが使用されて、ブロックチェーンに追加すべきブロックを検証することがある。例えば、ビットコインブロックチェーンは、ブロックを識別することを必要とするプルーフオブワーク(proof-of-work)(PoW)システムであり、ブロックは、SHA256を用いて2回ハッシュされたとき、ターゲット値より小さい数を生み出す。ターゲット値は、ブロックのハッシュ内のリーディングゼロビットの必要数である。
実施形態において、ルール215は、コンセンサスアルゴリズムに対して追加で、又は代わりに使用されてよい。ルール215は、ブロック212がブロックチェーン215に追加されるために満たさなければならない要件又は基準であってもよい。いくつかの実施形態において、ルール215のいくつかは、ブロック212がブロックチェーン214に追加され得る前にアーチファクト313が満足しなければならない要件又基準であってもよい。こうしたタイプのルール215は、「フォーマットルール」、「フォームルール」などとして参照されることがある。例えば、フォームルール215は、アーチファクト313に含まれなければならない様々なフォーマッティング、命名取り決め、機能タイプ等を含むことができる。実施形態において、フォーマットルール215は実行可能コードを含んでもよく、この実行可能コードは、フォーマット問題及び/又はリリース互換性問題のためにアーチファクト313を解析するソフトウェアモジュール又はアルゴリズム(例えば、解析手法/機能、システムルール、ポリシー定義等)を含むことができる。
いくつかの実施形態において、ルール215のいくつかは、立証デバイス(例えば、集中型ブロックチェーンVCSにおけるデータベースシステム16、及び/又は分散型ブロックチェーンVCSにおけるユーザシステム12)がブロック212を処理することを完了しなければならないという要件又は基準を含んでもよい。こうしたタイプのルール215は、「正当性ルール」、「立証ルール」、「検証ルール」などとして参照されることがある。実施形態において、正当性ルール215は実行可能コードを含むことができ、この実行可能コードは、立証手順の間にブロック212に適用されるべきソフトウェアモジュール又はアルゴリズム(例えば、ハッシュアルゴリズム、解析手法等)を含むことができる。立証ルール215は、例えば、解読された(deciphered)pb_idが正しい形式であり、かつ/あるいは前のブロック212を正確に指し示すかどうかを決定すること、後継又は親ブロック212(例えば、ブロック212)が現在のブロック212(例えば、ブロック212n+1)についてすでに作成されたかどうかを決定すること、現在のブロック212により示されたリリースされたアプリケーションに対するソースコード変更、追加、及び/又は削除が後方互換性を破壊することになるかどうかを決定すること、及び/又は他の同様のルールを含むことができる。前に論じられた様々なルール215が、特定のブロックチェーン214のために個々に適合されてもよい。
図示されるように、データベースシステム16は、ブロックチェーン214とブロックチェーン214に関連づけられたルール215とを記憶するリポジトリ251を含む。リポジトリ251は、ブロックチェーン技術を用いて同時的なアプリケーション開発により実現された変更を統合し、かつアプリケーションの異なるバージョンを分離する、データストア又はストレージシステムであり得る。図2は、単一のブロックチェーン214と単一のルール215のセットとを含むリポジトリ251を示すが、様々な実施形態において、リポジトリ251は、複数のブロックチェーン214と関連づけられたルール215とを含んでもよく、個々のブロックチェーン214は、1つ以上のテナントのための個々の特徴、プロジェクト、及び/又はアプリケーションを表現することができる。いくつかの実施形態において、リポジトリ251は、複数のブロックチェーン214を含むアプリケーションツリー構造を含んでもよく、各ブロックチェーン214は、アプリケーションツリー構造の分岐である。こうした実施形態において、各ブロックチェーン214は、個々の開発チーム又は他の同様のユーザグループにより生み出された/開発されたソースコードリビジョンを含むことができる。例えば、第1のブロックチェーン214が、第1のリリース日付にリリースされるべき第1のチームにより開発されたアプリケーションの第1の特徴であってもよく、第2のブロックチェーン214が、第2のリリース日付にリリースされるべき第2のチームにより開発されたアプリケーションの第2の特徴であってもよく、以下同様である。実施形態において、リポジトリ251は、複数のブロックチェーン214をマルチテナント方式で記憶するMTCであってもよく、リポジトリ251のハードウェア及びソフトウェアの様々な要素は、1以上の顧客又はテナントにより共有され得る。
実施形態において、ユーザシステム12Aのユーザから現在のブロック212(例えば、ブロック212n+1)を受信すると、ブロックチェーンエンジン250を実現するプロセッサシステム17は、メッセージ211をデクリプトし(decrypt)、ブロック212を解読して、ブロック212n+1に含まれる情報(例えば、アーチファクト313、cb_id、pb_id等)を取得することができる。ブロックチェーンエンジン250は、次いで、解読されたブロック212n+1に関連づけられたブロックチェーン214に対応するルールを取得するために、要求又はクエリ216をリポジトリ251に送信することができる。応答において、ブロックチェーンエンジン250は、解読されたブロック212n+1に対応するルール215を含む指示217を取得することができ、ブロック212n+1のコンテンツが取得されたルール215を順守するかどうかを決定することができる。解読されたブロック212n+1が、ルール215を順守すると決定された場合、ブロックチェーンエンジン250は、指示218をリポジトリ251に送信することができ、これは、ブロック212n+1と、前のブロック(例えば、ブロック212)の後にブロック212n+1をブロックチェーン214にアペンドするための命令/コマンドとを含むことができる。ブロック212n+1がブロックチェーン214に追加された後、ブロックチェーンエンジン250は、ブロックチェーン214に対するブロック212n+1の追加を示す指示219を取得することができる。いくつかの実施形態において、指示219は、ブロック212n+1をブロックチェーン214にアペンドすることにおける失敗又はエラーが発生した場合、こうした失敗又はエラーを示してもよい。ひとたび指示219がブロックチェーンエンジン250により取得されると、ブロックチェーンエンジン250を実現するプロセッサシステム17は、応答メッセージ220を生成し、応答メッセージ220(さらに、「応答220」としても参照される)をブロック212をサブミットしたユーザシステム12に送信するようにネットワークインターフェース20に命令することができる。実施形態において、応答220は、任意タイプのインターネットプロトコルメッセージ、例えば、前に論じられたもの、及び/又は具体的にユーザシステム12とデータベースシステム16との間で通信するために使用される独占の又はプラットフォーム固有のメッセージタイプなどであってよい。
ブロックチェーンエンジン250が、解読されたブロック212n+1がルール215を順守しないと決定した場合、ブロックチェーンエンジン250を実現するプロセッサシステム17は、ブロック212がブロックチェーン214にアペンドされなかったと示す応答メッセージ220(例えば、拒否メッセージ)と拒否の理由(例えば、正当性ルール215の不順守、フォーマットルール215の不順守、タイミング問題、処理問題、例えばデクリプション及び/又は解読失敗等)とを生成することができる。ブロックチェーンエンジン250により実行される衝突解決メカニズムの例が、図3~図5に関して図示及び説明される。
応答メッセージ220(さらに、「応答220」としても参照される)は、ユーザインターフェースデータ221を含んでもよい。ユーザインターフェースデータ221は、出力システム12Dにより視覚的表現222としてコンパイル及びレンダリングされ得る、コンピュータ読取可能な形式の様々なデータ又はデータオブジェクトを含むことができる。様々なデータ又はデータオブジェクトが使用されて、前に論じられた指示219及び/又は拒否メッセージを伝達することができる。一例において、ユーザインターフェースデータ221は、1つ以上の拡張マークアップ言語(XML)文書、1つ以上のJavaScriptオブジェクトノーテーション(JavaScript Object Notation)(JSON)文書、及び/又は、ユーザシステム12によって実現される環境205のコンテナ及び/又はブラウザによりデコード及びレンダリングされ得る何らかの他の適切なデータフォーマットであり得る。ひとたび応答220がユーザシステム12により受信されると、環境205を実現するプロセッサシステム12Aは、ユーザインターフェースデータ221を抽出し、視覚的表現222を生成することができ、これは、出力システム12Dを用いて表示されてもよい。
図2により示される配置200は、本明細書に論じられる様々な実施形態を実現するための集中型VCSの一例であり得る。他の実施形態において、配置200は、ユーザシステム12の1つ以上が検証システムとして動作することができる分散型ブロックチェーンVCSであってもよい。こうした実施形態において、検証システムは、ブロックチェーンエンジン250のプログラムコードを含むことができ、前に説明された、ブロックチェーンエンジン250の機能を実行することができる。こうした実施形態において、検証システムは、前に論じられた様々な正当性及びフォーマット立証手順を実行するためのルール215の分散型バージョンと、ブロックチェーン214のローカルのコピーとをさらに含むことができる。いくつかの実施形態において、様々な正当性及びフォーマット立証手順は、コンセンサスアルゴリズム、例えば、PoWアルゴリズム、プルーフオブステーク(proof-of-stake)(PoS)アルゴリズム、プルーフオブバーン(proof-of-burn)アルゴリズム、プルーフオブアクティビティ(proof-of-activity)アルゴリズム、プルーフオブキャパシティ(proof-of-capacity)アルゴリズム、実用的ビザンチンフォールトトレランス(practical byzantine fault tolerance)(PBFT)アルゴリズム、リップル(Ripple)プロトコルベースアルゴリズム、及び/又は同様のものなどと関連して実行されてもよい。コンセンサスアルゴリズムは、例えば、新しいルール215を採用し、かつ/あるいはルール215を変更するため、あるいはユーザシステム12のユーザのアイデンティティを検証するために、分散型ブロックチェーンVCSにおいて使用されてもよい。
分散型ブロックチェーンVCSの一例において、ユーザシステム12は、前に説明されたのと同一又は同様の仕方でブロック212n+1及びメッセージ211を生成することができる。ユーザシステム12は、次いで、メッセージ211を、1つ以上の検証システム、例えば、ホワイトリスト登録されたユーザシステム12、特別な又は管理的な特権を有するユーザシステム12などにブロードキャストすることができる。次いで、検証システムのいくつか又はすべてが、そのルール215のローカルコピーを用いて様々な立証手順を実行することにより、ブロック212n+1を別個に立証することができる。いくつかの実施形態において、検証システムは、ブロック212n+1を立証するために、コンセンサスアルゴリズムをさらに使用してもよい(例えば、PoWシステムにおいてハッシュをチェックするのに費やされるプロセッササイクル数をチェックすること、PoSシステムにおいてユーザにより作成又は変更されたコード/アーチファクト/スキーマの量をチェックすること等)。こうした実施形態において、使用されるべきコンセンサスアルゴリズムが、メッセージ211内に示されてもよい。
正当性/フォーマット立証手順を用いて、検証システムは、ブロック212n+1が正しく立証されたと示す確認値を生成することができ、確認値を含む確認メッセージ(例えば、メッセージ220と同様)を他の検証システムにブロードキャストすることができる。他の検証システムは、次いで、確認メッセージ内の確認値を、検証手順を用いて生成されたその独自の確認値と比較することができる。確認値がマッチする場合、ブロック212n+1は立証されたとみなされてよく、ひとたびブロック212n+1が立証されると、各検証システムは、ブロック212n+1をブロックチェーン214にアペンドすることができる。ひとたびブロック212n+1が検証システムにより正しく検証されると、ブロック212n+1は他のユーザシステム12に送信されてもよく、そのため、ブロックチェーン214のそのローカルのバージョンに、ブロック212n+1がアペンドされることができる。
さらに、又は別法として、ひとたびブロック212n+1が検証システムにより正しく検証されると、ブロック212n+1は、リポジトリ251に記憶するためにデータベースシステム16に送信されてもよい。こうした実施形態は、「部分分散型ブロックチェーンVCS」又は「部分集中型ブロックチェーンVCS」として参照されることがある。
図3は、様々な実施形態に従う、ブロックチェーン214のブロック212の例示的な要素を示す。図示されるように、各ブロック212は、現在ブロック識別子(cb_id)305、前ブロック識別子(pb_id)310、アーチファクト313等を含むことができる。
ブロック0 212は、ブロックチェーン214の起源ブロックであり得る。起源ブロック212は、ブロックチェーン214内のすべてのブロック212の共通の祖先であり得る。起源ブロック212は、アプリケーション又はその一部のオリジナルリリース(例えば、リリース1)のソースコード又はアーチファクト313を含むことができる。様々な実施形態において、起源ブロック212は、オリジナルリリースのスキーマ、オブジェクトモデル、又は何らかの他タイプのアーチファクト313の視覚的表現、及び/又はオブジェクト及び/又はデータベースオブジェクト間の関係の視覚的表現を含むことができる。起源ブロック212は、cb_id 305とpb_id 310とをさらに含むことができる。実施形態において、cb_id及びpb_id。実施形態において、cb_id 305は、起源ブロック212のコンテンツのハッシュ(例えば、図3により示されるhash(313))を含むことができる。実施形態において、pb_id 310は、起源ブロック識別子(gb_id)として参照されることがある。実施形態において、gb_idは、起源ブロック212のコンテンツのハッシュ;所定の数;ゼロの値;ソースコードのタイムスタンプ、アーチファクト313;ソースコードの作成者に関連づけられたorg_id、アーチファクト313;ソースコードの作成者に関連づけられたuser_id、アーチファクト313;及び/又は同様のものであり得る。
実施形態において、cb_id 305及びpb_id 310は、ブロック212のヘッダ部分に位置してもよく、アーチファクト313は、ブロック212のボディ又はペイロード部分に位置してもよい。図3には示されないが、いくつかの実施形態において、ブロック212は、ブロック212のヘッダ部分又はペイロード部分の中にorg_id、user_id、特徴/プロジェクト/ソースコードID、ブロックチェーンID、認証クレデンシャル、タイムスタンプ、及び/又は同様の情報を含むことができる。
ブロック1 212は、アプリケーション又はその一部の第2のリリース(リリース2)のソースコード又はアーチファクト313を含むブロックであり得る。アーチファクト313は、起源ブロック212に含まれる第1のリリースのオリジナルソースコードに対する変更を含むことができる。例えば、アーチファクト313は、オブジェクトAの追加フィールドfを含むことができる。いくつかの実施形態において、ブロック212は、アーチファクト313により変造されたオブジェクト及び/又はデータベースオブジェクト間の関係の視覚的表現を含むことができる。ブロック212は、cb_id 305をさらに含むことができ、これは、ブロック212のコンテンツのハッシュ(例えば、図3により示されるhash(313))であり得る。ブロック212は、pb_id 310をさらに含むことができ、これは、前のブロック212のcb_id(例えば、図3により示されるhash(313)又はcb_id 305)であり得る。pb_id 310は、ブロック212を起源ブロック212にリンクすることができ、このことは、ブロック1 212とブロック0 212との間の矢印で示される。
起源ブロック212と同様に、実施形態において、cb_id 305及びpb_id 310はブロック212のヘッダ部分に位置してもよく、アーチファクト313はブロック212のボディ又はペイロード部分に位置してもよい。さらに、ブロック212は、ブロック212と同じタイプのさらなる情報、例えば、org_id、user_id、特徴/プロジェクト/ソースコードID、ブロックチェーンID、認証クレデンシャル、タイムスタンプ、ルートハッシュ又は値(例えば、gb_id)、及び/又は同様の情報などを、ブロック212のヘッダ部分又はペイロード部分に含んでもよい。
ブロック2 212‐1、212‐2、及び212‐3は各々、アプリケーション又はその一部の第3のリリース(例えば、リリース3)のソースコード又は個々のアーチファクト313を含むブロックであり得る。ブロック212‐1、212‐2、及び212‐3の各々は、ブロック212の子としてブロックチェーンに含めるために異なるユーザシステム12によりサブミットされた競合ブロックであり得る。ブロック212‐1、212‐2、及び212‐3の各々は、その独自の対応するアーチファクト313、スキーマ313、及びcb_id 305を含むことができる。ブロック212‐1、212‐2、及び212‐3内のアーチファクト313が互いに異なるため、これらブロックのcb_id 305もまた、互いに異なり得る。しかしながら、ブロック212‐1、212‐2、及び212‐3がブロックチェーン214内の同じスポットについて競合しているため、各ブロック212‐1、212‐2、及び212‐3内のpb_id 310は、これらが同じ前のブロック212を各々指し示すので、同じ値を有し得る。前のブロック212と同様に、pb_id 310‐1は、ブロック212‐1をブロック212にリンクすることができ、このことは、ブロック2 212‐1とブロック1 212との間の矢印で示される。
起源ブロック212及び前のブロック212と同様に、実施形態において、cb_id 305及びpb_id 310はブロック212のヘッダ部分に位置してもよく、アーチファクト313はブロック212のボディ又はペイロード部分に位置してもよい。さらに、ブロック212は、ブロック212及び212と同じタイプのさらなる情報、例えば、org_id、user_id、特徴/プロジェクト/ソースコードID、ブロックチェーンID、認証クレデンシャル、タイムスタンプ、及び/又は同様の情報などを、ブロック212のヘッダ部分又はペイロード部分に含んでもよい。いくつかの実施形態において、ブロック212は、ルート又はトップハッシュ、例えばgb_id及び/又は同様のものなどをさらに含んでもよい。
図3により示される例は、ブロック212‐1と212‐2との間の一例示的な「レース状態」を含む。レース状態は、これらブロックが同様の時間にサブミットされることに基づいてもよく、一例として、ブロック212‐1は、(例えば、212‐1内のタイムスタンプで示されるように)ブロック212‐2の前に検証され、あるいは作成されている。このシナリオにおいて、ブロック212‐2は、ブロックチェーン214にアペンドされることを拒否されることがあり(図3の「X」矢印で示される)、なぜならば、ブロック212‐1がブロック212に対する後継ブロックとしてすでに作成されたからである。
図3に示される例は、ブロック212‐1と212‐3との間の不変条件変更/衝突状態をさらに含む。不変条件変更状態は、ユーザ/開発者が前のブロック212との後方互換性を破壊し得る方法でソースコード、アーチファクト313を変造しようとすることに基づいてもよい。図3に示される例において、ブロック212‐3は、さらなるアーチファクト313‐3「m→m(String);」を含み得る。このシナリオにおいて、ブロック212‐3は、ブロックチェーン214にアペンドされることを拒否されることがあり(図3において「X」矢印で示される)、なぜならば、さらなるアーチファクト313‐3が、後方互換性破壊を結果としてもたらす可能性があるからである。
図4~図5は、様々な例示的実施形態に従う、処理400及び500をそれぞれ示す。例示目的のために、処理400~500の動作は、検証システムにより実行されているものとして説明され、該検証システムは、図1A~図1B及び図2に関して論じられたデータベースシステム16及び/又はユーザシステム12であり得る。しかしながら、多数の実現、配置、及び/又は環境において、他のコンピューティングデバイスが処理400~500を動作させてもよいことが留意されるべきである。実施形態において、検証システムはプログラムコードを含むことができ、このプログラムコードは、プロセッサシステムにより実行されると、処理400~500の様々な動作を検証システムに実行させる。動作の特定の例及び順序が図4~図5に示されるが、様々な実施形態において、これら動作は再度順序付けられてもよく、さらなる動作に分離されてもよく、組み合わせられてもよく、あるいは完全に省略されてもよい。
図4は、様々な実施形態に従う、ブロックチェーン214に追加されるべきブロック212を生成する処理400を示す。処理400は動作405で開始することができ、動作405において、検証システムのプロセッサシステムが、ソースコード、アーチファクト313を取得することができる。検証システムがデータベースシステム16である実施形態において、プロセッサシステム17により実現されるブロックチェーンエンジン250が、ネットワークインターフェース20を介してユーザシステム12により送信されたメッセージ内のソースコード、アーチファクト、オブジェクトモデル、スキーマ等を取得することができる。こうした実施形態において、ユーザシステム12のプロセッサシステム12Aが、環境205を実現することにより上記メッセージを生成し、送信することができる。検証システムがユーザシステム12である実施形態においては、プロセッサシステム12Aにより実現されるブロックチェーンエンジン250が、例えば、APIを介して環境205から、ソースコード、アーチファクト313を取得することができる。
動作410において、検証システムのプロセッサシステムは、ソースコード、アーチファクト、オブジェクトモデル、スキーマ等をシリアル化して、シリアル化されたデータを取得することができる。上記シリアル化は、ソースコード、アーチファクト、オブジェクトモデル、スキーマ等を、例えばデータベースオブジェクト、ファイル、バッファ等に記憶できるフォーマットに、及び/又はネットワーク14を通じた送信のためにパケットフォーマットに、フォーマットすること又は翻訳することを含むことができる。
動作415において、検証システムのプロセッサシステムは、シリアル化されたデータを暗号化して、cb_id305を取得することができる。実施形態において、動作415は、シリアル化されたデータを、ハッシュ関数又は他の同様のアルゴリズム、例えば本明細書において論じられたものなどに入力することを含んでもよく、上記ハッシュ関数又は他の同様のアルゴリズムは、暗号又はコードを文字ストリング又は数として出力することができる。
動作420において、検証システムのプロセッサシステムは、cb_id305を含むようにブロック212を生成することができる。動作425において、検証システムのプロセッサシステムは、生成されたブロック212が起源ブロック212であるか否かを決定することができる。このことは、ソースコード、アーチファクト、オブジェクトモデル、スキーマ等の中からの指示、及び/又は環境205を通して取得される指示に基づいてもよい。動作425において、検証システムのプロセッサシステムが、生成されたブロック212が起源ブロック212であると決定した場合、検証システムのプロセッサシステムは動作430に進んで、gb_idを取得し、gb_idを生成されたブロック212に挿入することができる。このgb_idは、前に論じられたgb_idと同一又は同様であってもよい。動作425において、検証システムのプロセッサシステムが、生成されたブロック212が起源ブロック212でないと決定した場合、検証システムのプロセッサシステムは動作435に進んで、pb_id310を取得し、pb_idを生成されたブロック212に挿入することができる。このpb_id310は、前に論じられたpb_id310と同一又は同様であってもよい。実施形態において、動作420~435は、cb_id305、pb_id310、又はgb_idを、生成されたブロック212のヘッダ部分に挿入することを含んでもよい。
動作430又は435を実行した後、検証システムのプロセッサシステムは動作440に進んで、シリアル化されたデータを、生成されたブロック212に挿入することができる。シリアル化されたデータは、生成されたブロック212のボディ又はペイロード部分に挿入されてもよい。実施形態において、動作440及び/又は動作430~435は、他の情報、例えば、タイムスタンプ、前に論じられた1つ以上の識別子、コンセンサスアルゴリズムなどを、ブロック212のヘッダ又はペイロード部分に挿入することをさらに含んでもよい。動作445において、検証システムのプロセッサシステムは、図2に関して論じられたメッセージ211を生成することができ、生成されたブロック212をメッセージ211に挿入することができる。さらに、又は別法として、様々な実施形態において、動作445は、他の情報、例えば、タイムスタンプ、前に論じられた1つ以上の識別子、コンセンサスアルゴリズムなどを、メッセージ211のヘッダ又はペイロード部分に挿入することをさらに含んでもよい。動作450において、検証システムのプロセッサシステムは、既知の手順に従ってメッセージ211(又は、メッセージ211のコンテンツ)をエンクリプトし、かつ/あるいはデジタル署名することができる。
動作455において、検証システムのプロセッサシステムは、ブロック212の立証のための、エンクリプトされたメッセージ211の別の検証システムに対する送信を制御することができる。検証システムがユーザシステム12である実施形態において、プロセッサシステム12Aにより実現されるブロックチェーンエンジン250が、メッセージ211を送信するように通信システム12Eを制御することができる。検証システムがデータベースシステム16である実施形態においては、プロセッサシステム17により実現されるブロックチェーンエンジン250が、ブロック212を別の検証システムに送信することなく、立証手順をそれ自体で実行することができる。さらに、又は別法として、プロセッサシステム17により実現されるブロックチェーンエンジン250は、メッセージ211を別の検証システムに送信するようにネットワークインターフェース20に命令してもよい。一例示的な立証手順が、図5に関して図示され、説明される。動作455の実行の後、処理400は終了してもよく、あるいは必要に応じて繰り返してもよい。
図5は、様々な他の実施形態に従う、バージョン制御ブロックチェーン214に含めるためにブロック212を立証する処理500を示す。処理500は動作505で開始することができ、動作505において、検証システムのプロセッサシステムが、ブロックチェーン214に追加されるべきブロック212(さらに、「潜在ブロック212」などとしても参照される)を含むメッセージを取得することができる。動作510において、検証システムのプロセッサシステムは、メッセージ211(又は、メッセージ211のコンテンツ)をデクリプトして、潜在ブロック212を取得することができる。
動作515において、検証システムのプロセッサシステムは、潜在ブロック212を解読して、第1の値を取得することができる。いくつかの実施形態において、第1の値は、潜在ブロック212のヘッダ部分に含まれるpb_id310であり得る。いくつかの実施形態において、第1の値は、潜在ブロック212に含まれる様々な識別子又は情報、例えば前に論じられた様々な識別子/情報などの、組み合わせであってもよい。動作520において、検証システムのプロセッサシステムは、ブロックチェーン214内の最上ブロック212に含まれるコンテンツに基づいて第2の値を生成することができる。実施形態において、プロセッサシステムは、潜在ブロック212の第1の値に基づいて最上ブロック212から第2の値を取得してもよい。例えば、第1の値が、潜在ブロック212のヘッダ部分に含まれるpb_id310であるとき、第2の値は、最上ブロック212のヘッダ部分に含まれるcb_id305であってもよい。
動作525において、検証システムのプロセッサシステムは、第1の値が第2の値に等しいかどうかを決定することができる。こうして、検証システムのプロセッサシステムは、潜在ブロック212が最上ブロック212に十分にリンクされているかどうかを決定することができる。動作525において、検証システムのプロセッサシステムが、第1の値が第2の値に等しくないと決定した場合、検証システムのプロセッサシステムは動作565に進んで、拒否メッセージを生成し、潜在ブロック212を提供したシステムに送信することができる。
動作525において、検証システムのプロセッサシステムが、第1の値が第2の値に等しいと決定した場合、検証システムのプロセッサシステムは動作530に進んで、ルール215を取得し、ブロック212に対して立証手順を実行することができる。立証手順は、潜在ブロック212に含まれるシリアル化されたデータのフォーマットが様々なフォーマッティングルールを順守するかどうかを決定すること、及び/又は、様々な互換性ルールを順守するかどうかを決定することなどを含んでもよい。いくつかの実施形態において、立証手順は、シリアル化されたデータをシリアル化解除すること(de-serializing)を含んでもよい。実施形態において、シリアル化されたデータは、動作515において潜在ブロック212が解読されたときに取得されてもよい。さらに、いくつかの実施形態において、動作520及び525は、立証手順の一部であるとみなされてもよい。
動作535において、検証システムのプロセッサシステムは、動作530において実行された立証手順に基づいて、潜在ブロック212が正当なブロック212であるか、あるいはその他の方法で正しく立証されているかどうかを決定することができる。動作535において、検証システムのプロセッサシステムが、潜在ブロック212が正当ブロック212でないと決定した場合、検証システムのプロセッサシステムは動作565に進んで、拒否メッセージを生成し、潜在ブロック212を提供したシステムに送信することができる。
動作535において、検証システムのプロセッサシステムが、潜在ブロック212が正当ブロック212であると決定した場合、検証システムのプロセッサシステムは動作540に進んで、確認メッセージを生成し、他の検証システムにブロードキャストすることができる。いくつかの実施形態において、確認メッセージは、確認値を含んでもよい。実施形態において、確認値は、第1の値と第2の値とが互いにマッチしたこと(例えば、動作515~525参照)を示す数、文字、ストリング等であってもよく、他の実施形態において、確認メッセージが、第1の値及び/又は第2の値を含んでもよい。様々な実施形態において、確認メッセージは、潜在ブロック212が検証システムにより正しく立証されたと示す任意の情報を含むことができる。
動作545において、検証システムのプロセッサシステムは、別の検証システムにより生成された別の確認メッセージの受信を制御することができる。実施形態において、別の確認メッセージは、動作505~540に関して前に論じられたのと同一又は同様の仕方で、別の検証システムにより生成され、ブロードキャストされてもよい。検証システムがユーザシステム12である実施形態において、プロセッサシステム12Aにより実現されるブロックチェーンエンジン250が、確認メッセージを受信するように通信システム12Eを制御することができる。検証システムがデータベースシステム16である実施形態においては、プロセッサシステム17により実現されるブロックチェーンエンジン250が、確認メッセージを受信するようにネットワークインターフェース20を制御することができる。
動作550において、検証システムのプロセッサシステムは、別の確認メッセージに含まれる別の確認値が、動作540において確認メッセージで送信された確認値にマッチするかどうかを決定することができる。動作550において、検証システムのプロセッサシステムが、別の確認メッセージに含まれる別の確認値が、確認メッセージで送信された確認値にマッチしないと決定した場合、検証システムのプロセッサシステムは動作565に進んで、拒否メッセージを生成し、潜在ブロック212を提供したシステムに送信することができる。
動作550において、検証システムのプロセッサシステムが、別の確認メッセージに含まれる別の確認値が、確認メッセージで送信された確認値にマッチすると決定した場合、検証システムのプロセッサシステムは動作555に進んで、潜在ブロック212をブロックチェーン214にアペンドすることができる。検証システムがデータベースシステム16である実施形態において、プロセッサシステム17により実現されるブロックチェーンエンジン250が、潜在ブロック212をリポジトリ215に、リポジトリ215に記憶されたブロックチェーン214に潜在ブロックを追加するための命令と共に提供することができる。検証システムがユーザシステム12である実施形態においては、プロセッサシステム12Aにより実現されるブロックチェーンエンジン250が、潜在ブロック212を、ブロックチェーン214のローカルの記憶されたバージョンにアペンドすることができる。いくつかの実施形態において、ブロックチェーン214のローカルのバージョンは、ローカルのソースコードリポジトリに記憶されてもよく、これは、前に論じられたリポジトリ215と同一又は同様であってもよい。
動作560において、検証システムのプロセッサシステムは、検証メッセージを生成し、潜在ブロック212を提供したシステム及び/又はネットワーク内の他のシステムに送信することができる。いくつかの実施形態において、例えば集中型ブロックチェーンVCS実現などにおいて、検証メッセージは、潜在ブロック212がブロックチェーン214に追加されたと示すことにより、確認の役割を単に果たしてもよい。いくつかの実施形態において、例えば分散型ブロックチェーンVCS及び/又は部分分散型ブロックチェーンVCS実現などにおいて、検証メッセージは、ネットワーク内の他のシステムに対しての、潜在ブロック212をブロックチェーン214のそのローカルのバージョンに追加するための、命令の役割を果たしてもよい。動作560又は動作565の実行の後、処理500は終了してもよく、あるいは必要に応じて繰り返してもよい。
本明細書に論じられる実現の特定の態様の特定の詳細は、開示される実現の主旨及び範囲から逸脱することなしに任意の適切な仕方で組み合わせられてもよい。しかしながら、他の実現が、各個々の態様に関する特定の実現、又はこれら個々の態様の特定の組み合わせに向けられてもよい。さらに、開示された例は本明細書において、複数のテナントをサポートすることができるオンデマンドデータベースサービスのためのフロントエンドを提供するアプリケーションサーバを有するシステムにおいてオンデマンドデータベースサービス環境が実現される実現を参照してしばしば説明されるが、本実現は、マルチテナントデータベース又はアプリケーションサーバ上の展開に限定されない。実現は、請求される実現の範囲から逸脱することなく、他のデータベースアーキテクチャ、すなわちORACLE(登録商標)、IBM(登録商標)によるDB2(登録商標)などを用いて実践されてもよい。
さらに、開示された実現のいくつかは、制御論理の形式を含め、かつモジュール方式又は統合された方式のハードウェア又はソフトウェアを用いて、様々なタイプのハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせの形式で具現化できることが理解されるべきである。ハードウェア、並びにハードウェア及びソフトウェアの組み合わせを用いて、他の方法又はメソッドが可能である。さらに、本出願において説明されたソフトウェアコンポーネント又は関数のうち任意のものが、例えば、既存の又はオブジェクト指向の手法を用いて、任意の適切なコンピュータ言語、例えばJava、C++、又はPerlなどを用いて、1つ以上のプロセッサにより実行されるソフトウェアコードとして実現されてもよい。ソフトウェアコードは、コンピュータ若しくはプロセッサ実行可能命令又はコマンドとして、物理的な非一時的なコンピュータ読取可能媒体に記憶されてもよい。適切な媒体の例には、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、磁気媒体、例えばハードドライブ若しくはフロッピーディスクなど、若しくは光学媒体、例えばコンパクトディスク(CD)若しくはDVD(デジタル多用途ディスク)など、フラッシュメモリ、及び同様のもの、又は上記記憶若しくは送信デバイスの任意の組み合わせが含まれる。
ソフトウェア/プログラムコードをエンコードされたコンピュータ読取可能媒体は、互換性のあるデバイスと共にパッケージ化されてもよく、あるいは他のデバイスから別個に(例えば、インターネットダウンロードを介して)提供されてもよい。任意のこうしたコンピュータ読取可能媒体が、単一のコンピューティングデバイス又はコンピュータシステム全体に又はこれらの中に存在してもよく、システム又はネットワーク内の他のコンピュータ読取可能媒体の間にあってもよい。コンピュータシステム、又は他のコンピューティングデバイスが、本明細書において言及された結果のうち任意のものをユーザに提供するモニタ、プリンタ、又は他の適切なディスプレイを含んでもよい。
いくつかの実現が本明細書において説明されたが、これらは限定でなく単に例として提示されたことが理解されるべきである。ゆえに、本出願の広さ及び範囲は、本明細書に説明された実現のいずれによっても限定されるべきでなく、下記の及び後に提出される請求項並びにその均等物に従ってのみ定義されるべきである。

Claims (20)

  1. バージョン制御ブロックチェーンを実現するコンピュータプログラムであって、
    ソースコード又は前記ソースコードに関連づけられたアーチファクトを取得し、
    前記ソースコード又は前記アーチファクトをシリアル化してシリアル化されたデータを取得し、
    前記シリアル化されたデータを暗号化して現在ブロック識別子(cb_id)を取得し、
    ブロックを生成して前記cb_id及び別の識別子を含め、前記別の識別子は、前記ブロックが前記バージョン制御ブロックチェーンの起源ブロックであるとき起源ブロック識別子(gb_id)であり、前記別の識別子は、前記生成されたブロックが前記起源ブロックでないとき前記バージョン制御ブロックチェーン内の前のブロックの前ブロック識別子(pb_id)であり、
    前記ソースコード又は前記アーチファクトが、前記ソースコードの前のバージョンとの後方互換性を破壊し得る方法で前記ソースコードの前記前のバージョンを変えていないと立証されたとき、前記生成されたブロックを前記バージョン制御ブロックチェーンに追加する
    ように動作可能な命令セットを含むコンピュータプログラム。
  2. 記命令セットは、
    前記生成されたブロックの前記別の識別子を取得又は生成し、
    前記バージョン制御ブロックチェーンの最上ブロックからcb_idを取得し、
    前記別の識別子が前記最上ブロックからの前記cb_idに等しいとき、前記生成されたブロックが正当であると決定する
    ことを含み、前記ブロックの前記バージョン制御ブロックチェーンへの追加の前、前記生成されたブロックを検証するように動作可能である、請求項1に記載のコンピュータプログラム。
  3. 前記命令セットは、
    前記暗号化されたシリアル化されたデータと前記別の識別子とを前記ブロックのヘッダセクションに挿入し、
    前記シリアル化されたデータを前記ブロックのペイロードセクションに挿入する
    ように動作可能である、請求項に記載のコンピュータプログラム。
  4. 前記ブロックが前記起源ブロックであるとき、前記命令セットは、
    ンセンサスアルゴリズムの指示を前記ブロックに、前記ヘッダセクション又は前記ペイロードセクションに挿入する
    ように動作可能である、請求項に記載のコンピュータプログラム。
  5. 前記命令セットは、
    ッセージを生成して前記生成されたブロックを含め
    前記ブロックの前記メッセージへの挿入の後、前記メッセージをエンクリプトし、
    前記ブロックの前記バージョン制御ブロックチェーンへの追加の前、検証のために前記エンクリプトされたメッセージを別のデバイスに送信する
    ように動作可能である、請求項に記載のコンピュータプログラム。
  6. 前記命令セットは、
    別のメッセージを取得し、
    前記別のメッセージをデクリプトして別のブロックを取得し、
    ルールテーブルに従って、又は前記コンセンサスアルゴリズムに従って、前記別のブロックを検証し、
    前記別のブロックが正しく検証されたとき、前記別のブロックを前記バージョン制御ブロックチェーンに追加する
    ように動作可能である、請求項に記載のコンピュータプログラム。
  7. 前記別のブロックを検証するために、前記命令セットは、
    前記別のブロックから第1の値を取得し、
    前記バージョン制御ブロックチェーンの最上ブロックに基づいて第2の値を生成し、
    前記第1の値が前記第2の値に等しいとき、前記別のブロックが正当であると示す
    ように動作可能である、請求項に記載のコンピュータプログラム。
  8. 前記pb_idは、前記前のブロックの暗号化されたコンテンツ、前記ソースコード若しくは前記アーチファクトのリリースヒストリ識別子、前記ソースコード若しくは前記アーチファクトに関連づけられたアプリケーション識別子、前記ソースコード若しくは前記アーチファクトのプロジェクト識別子、又はこれらの組み合わせを含み、
    前記gb_idは、所定の数、ゼロの値、前記ソースコード若しくは前記アーチファクトのタイムスタンプ、前記ソースコード若しくは前記アーチファクトの作成者に関連づけられた組織識別子、前記ソースコード若しくは前記アーチファクトの作成者に関連づけられたユーザ識別子、前記ブロックのコンテンツのハッシュ、又はこれらの組み合わせである、
    請求項1乃至7のうちいずれか1項に記載のコンピュータプログラム。
  9. ブロックチェーンバージョン制御システムを実現するデータベースシステムであって、
    ユーザシステムからメッセージを取得するネットワークインターフェースであって、前記メッセージはバージョン制御ブロックチェーンに追加されるべき潜在ブロックを含み、前記潜在ブロックのコンテンツはソースコード、前記ソースコードに関連づけられたアーチファクト、又は前記ソースコードに関連づけられたスキーマを含む、ネットワークインターフェースと、
    プロセッサシステムであって、
    前記潜在ブロックを解読して前記潜在ブロックの前記コンテンツを取得し、
    前記潜在ブロックから識別子取得し、前記の別の識別子は、前記潜在ブロックが前記バージョン制御ブロックチェーンの起源ブロックであるとき起源ブロック識別子(gb_id)であり、あるいは生成されたブロックが前記起源ブロックでないとき前記バージョン制御ブロックチェーン内の前のブロックの前ブロック識別子(pb_id)であり、
    前記バージョン制御ブロックチェーン内の最上ブロックから現在ブロック識別子(cb_id)を取得し、前記cb_idは、前記コンテンツの前のバージョンのシリアル化されたデータから生成されたハッシュ値であり、
    ブロック立証ルール又はコンセンサスアルゴリズムに基づいて前記潜在ブロック前記コンテンツを立証し、前記潜在ブロックの前記コンテンツを立証するために、前記プロセッサシステムは、前記ブロック立証ルール又は前記コンセンサスアルゴリズムに従って前記pb_idが前記cb_idと実質的に同一であるとき前記潜在ブロックを正しく立証されていると宣言し、
    記ブロックの前記コンテンツが正しく立証されたとき、前記潜在ブロックを前記バージョン制御ブロックチェーンに追加する
    プロセッサシステムと、
    を含むデータベースシステム。
  10. 1の値を決定するために、前記プロセッサシステムは、
    記潜在ブロックのヘッダ部分内の前記pb_idを取得し
    前記最上ブロックのヘッダ部分から前記cb_idを取得する、
    請求項9に記載のデータベースシステム。
  11. データストレージデバイスにより実現されたソースコードリポジトリ、をさらに含み、前記ソースコードリポジトリは前記バージョン制御ブロックチェーンを記憶する、
    請求項9に記載のデータベースシステム。
  12. 前記潜在ブロックを前記バージョン制御ブロックチェーンに追加するために、前記プロセッサシステムは、
    前記潜在ブロックを前記ソースコードリポジトリに提供し、
    前記潜在ブロックの前記コンテンツが立証されたとき前記潜在ブロックを前記バージョン制御ブロックチェーンにアペンドするように前記ソースコードリポジトリに命令する、
    請求項1に記載のデータベースシステム。
  13. 前記プロセッサシステムは、
    前記ソースコードリポジトリから前記ブロック立証ルールを取得し、
    前記潜在ブロックを解読して前記潜在ブロックの前記コンテンツを取得する、
    請求項1に記載のデータベースシステム。
  14. 前記ブロック立証ルールはフォーマットルールを含み、前記潜在ブロックを立証するために、前記プロセッサシステムは、
    前記潜在ブロックの前記コンテンツが前記フォーマットルールを順守するかどうかを決定するように解析機能を実現する、
    請求項1に記載のデータベースシステム。
  15. 前記pb_idは、前記前のブロックの暗号化されたコンテンツ、前記ソースコード若しくは前記アーチファクトのリリースヒストリ識別子、前記ソースコード若しくは前記アーチファクトに関連づけられたアプリケーション識別子、前記ソースコード若しくは前記アーチファクトのプロジェクト識別子、又はこれらの組み合わせを含み、
    前記gb_idは、所定の数、ゼロの値、前記ソースコード若しくは前記アーチファクトのタイムスタンプ、前記ソースコード若しくは前記アーチファクトの作成者に関連づけられた組織識別子、前記ソースコード若しくは前記アーチファクトの作成者に関連づけられたユーザ識別子、前記ブロックのコンテンツのハッシュ、又はこれらの組み合わせである、
    請求項9乃至14のうちいずれか1項に記載のデータベースシステム。
  16. ブロックチェーンバージョン制御システムを実現するユーザシステムであって、
    アプリケーションを開発する環境を実現するプロセッサシステムであり、前記環境は、
    1つ以上のユーザ入力に基づいて、バージョン制御ブロックチェーンのブロックに含まれるべきコンテンツを取得し、前記コンテンツは、ソースコード、前記ソースコードに関連づけられたアーチファクト、又は前記ソースコードに関連づけられたスキーマを含み
    前記コンテンツをシリアル化して、シリアル化されたデータを取得し、
    前記シリアル化されたデータを暗号化して現在ブロック識別子(cb_id)を取得し、
    前記バージョン制御ブロックチェーン内の前のブロックの前ブロック識別子(pb_id)を取得し、
    前記ブロックを生成して前記cb_id、前記pb_id、及び前記シリアル化されたデータを含め
    ブロック立証ルール又はコンセンサスアルゴリズムに基づいて前記ブロックの前記コンテンツを立証し、前記ブロックの前記コンテンツを立証するために、前記プロセッサシステムは、前記ブロック立証ルール又は前記コンセンサスアルゴリズムに従って前記pb_idが前記cb_idと実質的に同一であるとき前記ブロックを正しく立証されていると宣言する
    ように動作可能である、プロセッサシステムと、
    前記バージョン制御ブロックチェーンに含めるために前記生成されたブロックを検証システムに送信する通信システムと、
    を含むユーザシステム。
  17. 前記プロセッサシステムは、
    前記cb_id及び前記pb_idを前記ブロックのヘッダセクションに挿入し、
    前記シリアル化されたデータを前記ブロックのペイロードセクションに挿入する
    ように前記環境を実現する、請求項16に記載のユーザシステム。
  18. 前記プロセッサシステムは、
    前記pb_id及び前記cb_idの前記ブロックへの挿入の後、メッセージを生成し、
    前記ブロックの前記メッセージへの挿入の後、前記メッセージをエンクリプトする
    ように前記環境を実現する、請求項17に記載のユーザシステム。
  19. 前記プロセッサシステムは、
    別のメッセージを取得し、
    前記別のメッセージをデクリプトして前記別のメッセージ内の別のブロックの別のコンテンツを取得し、
    前記別のブロックの前記別のコンテンツを立証し、
    前記別のブロックが正しく立証されたとき、前記別のブロックを前記バージョン制御ブロックチェーンのローカルに記憶されたバージョンに追加する
    ように前記環境を実現する、請求項1に記載のユーザシステム。
  20. 前記別のブロックの前記コンテンツを立証するために、前記プロセッサシステムは、
    前記別のブロックのヘッダ部分から別のpb_idを取得し、
    前記バージョン制御ブロックチェーンの最上ブロックのヘッダ部分から別のcb_idを取得し、
    前記別のpb_idが前記別のcb_idに等しいとき、前記別のブロックが正当であると示す
    ように前記環境を実現する、請求項19に記載のユーザシステム。
JP2018006067A 2017-03-10 2018-01-18 ブロックチェーンバージョン制御システム Active JP7051458B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/456,278 2017-03-10
US15/456,278 US10579368B2 (en) 2017-03-10 2017-03-10 Blockchain version control systems

Publications (2)

Publication Number Publication Date
JP2018152050A JP2018152050A (ja) 2018-09-27
JP7051458B2 true JP7051458B2 (ja) 2022-04-11

Family

ID=63259148

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018006067A Active JP7051458B2 (ja) 2017-03-10 2018-01-18 ブロックチェーンバージョン制御システム

Country Status (3)

Country Link
US (1) US10579368B2 (ja)
JP (1) JP7051458B2 (ja)
DE (1) DE102017130467A1 (ja)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180157688A1 (en) * 2016-12-03 2018-06-07 Dell Products, Lp Ledger-chained distributed information handling systems and methods
CN107196900B (zh) 2017-03-24 2020-04-24 创新先进技术有限公司 一种共识校验的方法及装置
KR101882802B1 (ko) * 2017-04-17 2018-07-27 주식회사 코인플러그 Utxo 기반 프로토콜을 이용한 블록체인 기반의 문서 관리 방법 및 이를 이용한 문서 관리 서버
US11281641B1 (en) * 2017-05-23 2022-03-22 Amazon Technologies, Inc. Evaluating encoding history for late encoding binding of data
CN109118214B (zh) * 2017-06-26 2020-11-17 华为技术有限公司 运行智能合约的方法和装置
US10635433B2 (en) * 2017-08-24 2020-04-28 General Electric Company Cross application behavior customization
US10795977B2 (en) * 2017-08-24 2020-10-06 Oracle International Corporation Digital asset traceability and assurance using a distributed ledger
US11256799B2 (en) 2017-08-29 2022-02-22 Seagate Technology Llc Device lifecycle distributed ledger
US11251975B1 (en) * 2017-09-27 2022-02-15 Seagate Technology Llc Block chain based trusted security infrastructure
US10491375B2 (en) * 2017-10-05 2019-11-26 Accenture Global Solutions Limited Secure verification of conditions of a contract using a set of verification tools
US11341490B2 (en) * 2017-10-11 2022-05-24 International Business Machines Corporation Carbon footprint blockchain network
US10790982B2 (en) * 2017-10-27 2020-09-29 Secureworks Corp. Systems and methods for block chain authentication
CA3084089A1 (en) * 2017-12-19 2019-06-27 Blockchain It Solutions Pty Ltd A system and method for implementing a computer network
US10630769B2 (en) * 2017-12-26 2020-04-21 Akamai Technologies, Inc. Distributed system of record transaction receipt handling in an overlay network
US20190207748A1 (en) * 2017-12-29 2019-07-04 Seagate Technology Llc Blockchain storage device
US10628389B2 (en) * 2018-01-25 2020-04-21 Merck Sharp & Dohme Corp. Verification of data provenance for existing computer systems
EP3759630A4 (en) * 2018-03-02 2021-11-24 Blocksafe Technologies, Inc. BLOCKCHAIN ACCESS CONTROL SYSTEMS AND METHODS
US11615060B2 (en) 2018-04-12 2023-03-28 ISARA Corporation Constructing a multiple entity root of trust
JP7036665B2 (ja) * 2018-05-22 2022-03-15 株式会社日立製作所 データ管理方法およびデータ管理システム
EP3584736A1 (en) 2018-06-18 2019-12-25 Panasonic Intellectual Property Corporation of America Management method, management apparatus, and program
US11157622B2 (en) * 2018-07-10 2021-10-26 International Business Machines Corporation Blockchain technique for agile software development framework
US11194911B2 (en) 2018-07-10 2021-12-07 International Business Machines Corporation Blockchain technique for agile software development framework
CN109242453B (zh) 2018-08-07 2021-03-23 创新先进技术有限公司 一种基于中心化结算与区块链存证的交易方法及系统
WO2020030891A1 (en) 2018-08-07 2020-02-13 Perpetual Altruism Limited Computer implemented method and system for updating a database system for a blockchain version control system; computer implemented methods of auctioning an item for a seller, and computer implemented method of updating a smart contract
US11237815B2 (en) * 2018-08-23 2022-02-01 Citrix Systems, Inc. Service pool architecture for multitenant services to support canary release
US10656936B2 (en) * 2018-08-30 2020-05-19 Dell Products L.P. Systems and methods for software integrity validation using blockchain
CN109101662B (zh) * 2018-09-18 2021-05-14 百度在线网络技术(北京)有限公司 区块生成方法、装置、设备及存储介质
US11030211B2 (en) * 2018-09-21 2021-06-08 Salesforce.Com, Inc. Migrating page layout representations of database entries
CN109308188B (zh) * 2018-09-25 2021-06-22 四川长虹电器股份有限公司 一种基于区块链的版本控制方法及系统
CN109408108A (zh) * 2018-10-12 2019-03-01 天津理工大学 一种基于区块链的软件版本数据管理系统及建立方法
KR102424197B1 (ko) * 2018-10-30 2022-07-21 삼성에스디에스 주식회사 블록체인 기반 데이터 관리 방법, 장치 및 그 시스템
US20200133658A1 (en) * 2018-10-30 2020-04-30 EMC IP Holding Company LLC Change governance using blockchain
JP6692013B2 (ja) * 2018-10-31 2020-05-13 国立大学法人 奈良先端科学技術大学院大学 ソフトウェアビルドプロセス記録システムおよび方法ならびにソフトウェアビルドプロセス監視プログラム
US11308194B2 (en) 2018-10-31 2022-04-19 Seagate Technology Llc Monitoring device components using distributed ledger
US20200142693A1 (en) * 2018-11-07 2020-05-07 International Business Machines Corporation Transparent code processing
US11144645B2 (en) * 2018-11-19 2021-10-12 International Business Machines Corporation Blockchain technique for immutable source control
US11170108B2 (en) * 2018-11-19 2021-11-09 International Business Machines Corporation Blockchain technique for immutable source control
US10824345B2 (en) 2018-11-29 2020-11-03 Intuit Inc. Systems and methods for storing object state on hash chains
EP3549022B1 (en) * 2018-11-30 2021-08-18 Advanced New Technologies Co., Ltd. Testing platform for blockchain networks
KR102236897B1 (ko) * 2018-12-17 2021-04-07 주식회사 렙딥 영상 데이터 위변조 방지 방법 및 시스템
US11194961B2 (en) * 2018-12-31 2021-12-07 Salesforce.Com, Inc. Systems, methods, and apparatuses for adding a document history graph and corresponding hash value to a blockchain in a cloud based computing environment
US11971874B2 (en) * 2019-01-31 2024-04-30 Salesforce, Inc. Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT)
US11899817B2 (en) 2019-01-31 2024-02-13 Salesforce, Inc. Systems, methods, and apparatuses for storing PII information via a metadata driven blockchain using distributed and decentralized storage for sensitive user information
US11824864B2 (en) 2019-01-31 2023-11-21 Salesforce, Inc. Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (DLT)
US11803537B2 (en) * 2019-01-31 2023-10-31 Salesforce, Inc. Systems, methods, and apparatuses for implementing an SQL query and filter mechanism for blockchain stored data using distributed ledger technology (DLT)
US11811769B2 (en) 2019-01-31 2023-11-07 Salesforce, Inc. Systems, methods, and apparatuses for implementing a declarative, metadata driven, cryptographically verifiable multi-network (multi-tenant) shared ledger
EP3596613B1 (en) * 2019-03-14 2022-05-04 Advanced New Technologies Co., Ltd. Methods and devices for acquiring and recording tracking information on blockchain
US10412086B1 (en) * 2019-03-22 2019-09-10 Trace, LLC Systems and methods for validating device permissions of computing devices to execute code on a decentralized database
KR102229879B1 (ko) * 2019-03-25 2021-03-19 (주)블록체인글로벌 소스코드관리방법, 이를 수행하는 소스코드관리서버, 및 이를 이용한 소스코드개발방법
US11314763B2 (en) * 2019-03-26 2022-04-26 Centurylink Intellectual Property Llc Off-chain functionality for data contained in blocks of blockchain
CN109992285B (zh) * 2019-04-02 2022-09-16 杭州秘猿科技有限公司 区块链代码块独立升级方法、装置及电子设备
FI20195264A1 (en) * 2019-04-02 2020-10-03 Telia Co Ab Procedure and node for storing data in a network
KR102000244B1 (ko) * 2019-04-02 2019-07-16 주식회사 한국정보보호경영연구소 형태보존 암호화가 적용된 영지식증명 기반의 블록체인 시스템 및 그의 제어 방법
US11126425B2 (en) * 2019-04-19 2021-09-21 Sarcos Corp. Version history management using a blockchain
US11995647B2 (en) 2019-04-30 2024-05-28 Salesforce, Inc. System and method of providing interoperable distributed and decentralized ledgers using consensus on consensus and delegated consensus
US11386233B2 (en) 2019-04-30 2022-07-12 JFrog, Ltd. Data bundle generation and deployment
US11880349B2 (en) 2019-04-30 2024-01-23 Salesforce, Inc. System or method to query or search a metadata driven distributed ledger or blockchain
US11106554B2 (en) 2019-04-30 2021-08-31 JFrog, Ltd. Active-active environment control
US11886390B2 (en) 2019-04-30 2024-01-30 JFrog Ltd. Data file partition and replication
US11340894B2 (en) 2019-04-30 2022-05-24 JFrog, Ltd. Data file partition and replication
US11307848B2 (en) * 2019-07-01 2022-04-19 Bank Of America Corporation System for electronic integration and deployment of computer code in a code development network
US10972289B2 (en) * 2019-07-19 2021-04-06 JFrog, Ltd. Software release verification
EP3889868A1 (en) * 2019-09-02 2021-10-06 Advanced New Technologies Co., Ltd. Managing blockchain-based centralized ledger systems
US10585882B1 (en) 2019-09-23 2020-03-10 Trace, LLC Systems and methods for writing updates to and/or reading previously stored updates of assets implemented as smart contracts on a decentralized database
US11868339B2 (en) 2019-10-23 2024-01-09 Hewlett Packard Enterprise Development Lp Blockchain based distributed file systems
US11907199B2 (en) 2019-10-23 2024-02-20 Hewlett Packard Enterprise Development Lp Blockchain based distributed file systems
US11941021B2 (en) * 2019-10-25 2024-03-26 Accenture Global Solutions Limited Automatic creation of blockchain network infrastructures
US11803461B2 (en) * 2019-10-30 2023-10-31 Hewlett Packard Enterprise Development Lp Validation of log files using blockchain system
WO2020035090A2 (en) 2019-11-08 2020-02-20 Alipay (Hangzhou) Information Technology Co., Ltd. Lightweight decentralized application platform
WO2020035089A2 (en) * 2019-11-08 2020-02-20 Alipay (Hangzhou) Information Technology Co., Ltd. System and method for blockchain-based decentralized application development
CN110989994B (zh) * 2019-11-18 2024-04-26 腾讯科技(深圳)有限公司 基于区块链的代码版本管理方法、装置、终端及存储介质
CN111190583B (zh) * 2019-12-31 2021-10-22 华为技术有限公司 关联冲突块呈现方法和设备
US11695829B2 (en) 2020-01-09 2023-07-04 JFrog Ltd. Peer-to-peer (P2P) downloading
WO2020143852A2 (en) 2020-04-15 2020-07-16 Alipay (Hangzhou) Information Technology Co., Ltd. Distributed blockchain data storage under account model
CN111630507A (zh) * 2020-04-20 2020-09-04 支付宝(杭州)信息技术有限公司 账户模型下的分布式区块链数据存储
EP3834157B1 (en) 2020-04-22 2023-09-13 Alipay (Hangzhou) Information Technology Co., Ltd. Managing transaction requests in ledger systems
WO2020143855A2 (en) 2020-04-22 2020-07-16 Alipay (Hangzhou) Information Technology Co., Ltd. Managing transaction requests in ledger systems
SG11202103074PA (en) 2020-04-22 2021-04-29 Alipay Hangzhou Inf Tech Co Ltd Managing transaction requests in ledger systems
US11340875B2 (en) * 2020-06-02 2022-05-24 Sri International Searchable storage of sequential application programs
US11972440B1 (en) * 2020-06-05 2024-04-30 Trace Labs Llc Systems and methods for providing a decentralized anti-counterfeit solution for supply chain tracking using single-use codes
CN112037058B (zh) * 2020-08-28 2024-03-26 平安科技(深圳)有限公司 数据验证方法、装置及存储介质
CN112035143B (zh) * 2020-09-01 2023-08-18 中国银行股份有限公司 基于区块链的接口信息更新方法、节点及系统
CN111932260B (zh) * 2020-09-18 2021-01-26 杭州趣链科技有限公司 一种智能合约版本的管理方法、设备及可读存储介质
US10958450B1 (en) * 2020-10-15 2021-03-23 ISARA Corporation Constructing a multiple-entity root certificate data block chain
US11456949B1 (en) * 2020-11-18 2022-09-27 Quickbase, Inc. Routing networks with asynchronous message backup and replay
US11860680B2 (en) * 2020-11-24 2024-01-02 JFrog Ltd. Software pipeline and release validation
CN112948827A (zh) * 2021-01-11 2021-06-11 杭州复杂美科技有限公司 一种源码编译验证方法、系统、设备和储存介质
US20220269523A1 (en) * 2021-02-25 2022-08-25 The Bank Of New York Mellon System and method of code execution at a virtual machine allowing for extendibility and monitoring of customized applications and services
CN113239359A (zh) * 2021-04-26 2021-08-10 中央财经大学 一种区块链可信容器安全加固系统及方法
US11928049B2 (en) 2021-05-10 2024-03-12 Bank Of America Corporation Blockchain system for source code testing and script generation with artificial intelligence
US11726773B2 (en) 2021-05-19 2023-08-15 Micro Focus Llc Software supply chain quality control evaluation using blockchain
CN112990929A (zh) * 2021-05-20 2021-06-18 北京百度网讯科技有限公司 区块链社区治理的方法、装置、设备和存储介质
WO2022249259A1 (ja) * 2021-05-24 2022-12-01 富士通株式会社 検索方法、検索プログラム、および情報処理装置
US11789703B2 (en) 2021-06-21 2023-10-17 Hearsch Jariwala Blockchain-based source code modification detection and tracking system and method for artificial intelligence platforms
CN113608777B (zh) * 2021-07-30 2023-09-29 广东全塑智联科技有限公司 一种基于区块链的项目代码版本控制方法及系统
DE102022000817A1 (de) * 2022-03-09 2023-09-14 Mercedes-Benz Group AG Verfahren zur Dokumentation einer Typkonfiguration für eine Recheneinrichtung, Computerprogramm sowie Datenträger

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013515305A (ja) 2009-12-22 2013-05-02 フィリップ・モーリス・プロダクツ・ソシエテ・アノニム 製造品目を定めてこの製造品目に関するデータを記憶するための方法及び装置
US20170031676A1 (en) 2015-07-27 2017-02-02 Deja Vu Security, Llc Blockchain computer data distribution

Family Cites Families (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649104A (en) 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
US5608872A (en) 1993-03-19 1997-03-04 Ncr Corporation System for allowing all remote computers to perform annotation on an image and replicating the annotated image on the respective displays of other comuters
US7991347B1 (en) 1994-04-07 2011-08-02 Data Innovation Llc System and method for accessing set of digital data at a remote site
US5577188A (en) 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
US7181758B1 (en) 1994-07-25 2007-02-20 Data Innovation, L.L.C. Information distribution and processing system
GB2300991B (en) 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
WO1996042172A2 (en) 1995-06-09 1996-12-27 Philips Electronics N.V. Method for enabling a user to fetch a specific information item from a set of information items, and a system for carrying out such a method
US5715450A (en) 1995-09-27 1998-02-03 Siebel Systems, Inc. Method of selecting and presenting data from a database using a query language to a user of a computer system
US5821937A (en) 1996-02-23 1998-10-13 Netsuite Development, L.P. Computer method for updating a network design
US5831610A (en) 1996-02-23 1998-11-03 Netsuite Development L.P. Designing networks
US5873096A (en) 1997-10-08 1999-02-16 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
US6604117B2 (en) 1996-03-19 2003-08-05 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
WO1998038586A1 (en) 1997-02-26 1998-09-03 Siebel Systems, Inc. Method of determining the visibility to a remote databaseclient of a plurality of database transactions using simplified visibility rules
WO1998040804A2 (en) 1997-02-26 1998-09-17 Siebel Systems, Inc. Distributed relational database
AU6654798A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions using a networked proxy server
AU6440398A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
WO1998038583A1 (en) 1997-02-26 1998-09-03 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions having variable visibility strengths
AU6183798A (en) 1997-02-27 1998-09-29 Siebel Systems, Inc. Method of migrating to a successive level of a software distribution incorporating local modifications
WO1998040805A2 (en) 1997-02-27 1998-09-17 Siebel Systems, Inc. Method of synchronizing independently distributed software and database schema
EP1015997A4 (en) 1997-02-28 2006-03-29 Siebel Systems Inc PARTLY REPLICATED DISTRIBUTED DATABASE WITH MULTIPLE LEVELS FROM REMOTE CLIENTS
US5983227A (en) 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
US6169534B1 (en) 1997-06-26 2001-01-02 Upshot.Com Graphical user interface for customer information management
US5918159A (en) 1997-08-04 1999-06-29 Fomukong; Mundi Location reporting satellite paging system with optional blocking of location reporting
US6560461B1 (en) 1997-08-04 2003-05-06 Mundi Fomukong Authorized location reporting paging system
US6236978B1 (en) 1997-11-14 2001-05-22 New York University System and method for dynamic profiling of users in one-to-one applications
US20020059095A1 (en) 1998-02-26 2002-05-16 Cook Rachael Linette System and method for generating, capturing, and managing customer lead information over a computer network
US6732111B2 (en) 1998-03-03 2004-05-04 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US6161149A (en) 1998-03-13 2000-12-12 Groupserve, Inc. Centrifugal communication and collaboration method
US6772229B1 (en) 2000-11-13 2004-08-03 Groupserve, Inc. Centrifugal communication and collaboration method
US5963953A (en) 1998-03-30 1999-10-05 Siebel Systems, Inc. Method, and system for product configuration
EP1105826A1 (en) 1998-08-27 2001-06-13 Upshot Corporation A method and apparatus for network-based sales force management
AU6410699A (en) 1998-10-13 2000-05-01 Chris Cheah Method and system for controlled distribution of information over a network
US6549908B1 (en) 1998-11-18 2003-04-15 Siebel Systems, Inc. Methods and apparatus for interpreting user selections in the context of a relation distributed as a set of orthogonalized sub-relations
US6728960B1 (en) 1998-11-18 2004-04-27 Siebel Systems, Inc. Techniques for managing multiple threads in a browser environment
US6601087B1 (en) 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
AU2707200A (en) 1998-11-30 2000-06-19 Siebel Systems, Inc. Assignment manager
AU1838300A (en) 1998-11-30 2000-06-19 Siebel Systems, Inc. Smart scripting call centers
EP1135723A4 (en) 1998-11-30 2005-02-16 Siebel Systems Inc DEVELOPMENT TOOL, METHOD AND SYSTEM FOR CUSTOMER SERVICE APPLICATIONS
WO2000033235A1 (en) 1998-11-30 2000-06-08 Siebel Systems, Inc. State models for monitoring processes
US7356482B2 (en) 1998-12-18 2008-04-08 Alternative Systems, Inc. Integrated change management unit
US6574635B2 (en) 1999-03-03 2003-06-03 Siebel Systems, Inc. Application instantiation based upon attributes and values stored in a meta data repository, including tiering of application layers objects and components
US20020072951A1 (en) 1999-03-03 2002-06-13 Michael Lee Marketing support database management method, system and program product
US6288717B1 (en) 1999-03-19 2001-09-11 Terry Dunkle Headline posting algorithm
US6907566B1 (en) 1999-04-02 2005-06-14 Overture Services, Inc. Method and system for optimum placement of advertisements on a webpage
US7698160B2 (en) 1999-05-07 2010-04-13 Virtualagility, Inc System for performing collaborative tasks
US8095413B1 (en) 1999-05-07 2012-01-10 VirtualAgility, Inc. Processing management information
US6411949B1 (en) 1999-08-12 2002-06-25 Koninklijke Philips Electronics N.V., Customizing database information for presentation with media selections
US6621834B1 (en) 1999-11-05 2003-09-16 Raindance Communications, Inc. System and method for voice transmission over network protocols
US7454509B2 (en) 1999-11-10 2008-11-18 Yahoo! Inc. Online playback system with community bias
US6535909B1 (en) 1999-11-18 2003-03-18 Contigo Software, Inc. System and method for record and playback of collaborative Web browsing session
US6671714B1 (en) 1999-11-23 2003-12-30 Frank Michael Weyer Method, apparatus and business system for online communications with online and offline recipients
US6324568B1 (en) 1999-11-30 2001-11-27 Siebel Systems, Inc. Method and system for distributing objects over a network
US6654032B1 (en) 1999-12-23 2003-11-25 Webex Communications, Inc. Instant sharing of documents on a remote server
US7136860B2 (en) 2000-02-14 2006-11-14 Overture Services, Inc. System and method to determine the validity of an interaction on a network
US7266502B2 (en) 2000-03-31 2007-09-04 Siebel Systems, Inc. Feature centric release manager method and system
US6577726B1 (en) 2000-03-31 2003-06-10 Siebel Systems, Inc. Computer telephony integration hotelling method and system
US6336137B1 (en) 2000-03-31 2002-01-01 Siebel Systems, Inc. Web client-server system and method for incompatible page markup and presentation languages
US6732100B1 (en) 2000-03-31 2004-05-04 Siebel Systems, Inc. Database access method and system for user role defined access
US6434550B1 (en) 2000-04-14 2002-08-13 Rightnow Technologies, Inc. Temporal updates of relevancy rating of retrieved information in an information search system
US7730072B2 (en) 2000-04-14 2010-06-01 Rightnow Technologies, Inc. Automated adaptive classification system for knowledge networks
US6842748B1 (en) 2000-04-14 2005-01-11 Rightnow Technologies, Inc. Usage based strength between related information in an information retrieval system
US6665655B1 (en) 2000-04-14 2003-12-16 Rightnow Technologies, Inc. Implicit rating of retrieved information in an information search system
US6763501B1 (en) 2000-06-09 2004-07-13 Webex Communications, Inc. Remote document serving
US7069231B1 (en) 2000-07-20 2006-06-27 Oracle International Corporation Methods and systems for defining, applying and executing customer care relationship plans
KR100365357B1 (ko) 2000-10-11 2002-12-18 엘지전자 주식회사 무선통신 단말기의 데이터 통신 방법
US7581230B2 (en) 2001-02-06 2009-08-25 Siebel Systems, Inc. Adaptive communication application programming interface
USD454139S1 (en) 2001-02-20 2002-03-05 Rightnow Technologies Display screen for a computer
US7310687B2 (en) 2001-03-23 2007-12-18 Cisco Technology, Inc. Methods and systems for managing class-based condensation
US7363388B2 (en) 2001-03-28 2008-04-22 Siebel Systems, Inc. Method and system for direct server synchronization with a computing device
US7174514B2 (en) 2001-03-28 2007-02-06 Siebel Systems, Inc. Engine to present a user interface based on a logical structure, such as one for a customer relationship management system, across a web site
US6829655B1 (en) 2001-03-28 2004-12-07 Siebel Systems, Inc. Method and system for server synchronization with a computing device via a companion device
US20030018705A1 (en) 2001-03-31 2003-01-23 Mingte Chen Media-independent communication server
US20030206192A1 (en) 2001-03-31 2003-11-06 Mingte Chen Asynchronous message push to web browser
US6732095B1 (en) 2001-04-13 2004-05-04 Siebel Systems, Inc. Method and apparatus for mapping between XML and relational representations
US7761288B2 (en) 2001-04-30 2010-07-20 Siebel Systems, Inc. Polylingual simultaneous shipping of software
US6782383B2 (en) 2001-06-18 2004-08-24 Siebel Systems, Inc. System and method to implement a persistent and dismissible search center frame
US6763351B1 (en) 2001-06-18 2004-07-13 Siebel Systems, Inc. Method, apparatus, and system for attaching search results
US6728702B1 (en) 2001-06-18 2004-04-27 Siebel Systems, Inc. System and method to implement an integrated search center supporting a full-text search and query on a database
US6711565B1 (en) 2001-06-18 2004-03-23 Siebel Systems, Inc. Method, apparatus, and system for previewing search results
US20030004971A1 (en) 2001-06-29 2003-01-02 Gong Wen G. Automatic generation of data models and accompanying user interfaces
US7761535B2 (en) 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US6826582B1 (en) 2001-09-28 2004-11-30 Emc Corporation Method and system for using file systems for content management
US6978445B2 (en) 2001-09-28 2005-12-20 Siebel Systems, Inc. Method and system for supporting user navigation in a browser environment
US6993712B2 (en) 2001-09-28 2006-01-31 Siebel Systems, Inc. System and method for facilitating user interaction in a browser environment
US6724399B1 (en) 2001-09-28 2004-04-20 Siebel Systems, Inc. Methods and apparatus for enabling keyboard accelerators in applications implemented via a browser
US8359335B2 (en) 2001-09-29 2013-01-22 Siebel Systems, Inc. Computing system and method to implicitly commit unsaved data for a world wide web application
US7962565B2 (en) 2001-09-29 2011-06-14 Siebel Systems, Inc. Method, apparatus and system for a mobile web client
US7146617B2 (en) 2001-09-29 2006-12-05 Siebel Systems, Inc. Method, apparatus, and system for implementing view caching in a framework to support web-based applications
US6901595B2 (en) 2001-09-29 2005-05-31 Siebel Systems, Inc. Method, apparatus, and system for implementing a framework to support a web-based application
US7289949B2 (en) 2001-10-09 2007-10-30 Right Now Technologies, Inc. Method for routing electronic correspondence based on the level and type of emotion contained therein
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US6804330B1 (en) 2002-01-04 2004-10-12 Siebel Systems, Inc. Method and system for accessing CRM data via voice
US7058890B2 (en) 2002-02-13 2006-06-06 Siebel Systems, Inc. Method and system for enabling connectivity to a data system
US7672853B2 (en) 2002-03-29 2010-03-02 Siebel Systems, Inc. User interface for processing requests for approval
US7131071B2 (en) 2002-03-29 2006-10-31 Siebel Systems, Inc. Defining an approval process for requests for approval
US6850949B2 (en) 2002-06-03 2005-02-01 Right Now Technologies, Inc. System and method for generating a dynamic interface via a communications network
US7437720B2 (en) 2002-06-27 2008-10-14 Siebel Systems, Inc. Efficient high-interactivity user interface for client-server applications
US8639542B2 (en) 2002-06-27 2014-01-28 Siebel Systems, Inc. Method and apparatus to facilitate development of a customer-specific business process model
US7594181B2 (en) 2002-06-27 2009-09-22 Siebel Systems, Inc. Prototyping graphical user interfaces
US20040010489A1 (en) 2002-07-12 2004-01-15 Rightnow Technologies, Inc. Method for providing search-specific web pages in a network computing environment
US7251787B2 (en) 2002-08-28 2007-07-31 Siebel Systems, Inc. Method and apparatus for an integrated process modeller
US7069497B1 (en) 2002-09-10 2006-06-27 Oracle International Corp. System and method for applying a partial page change
US9448860B2 (en) 2003-03-21 2016-09-20 Oracle America, Inc. Method and architecture for providing data-change alerts to external applications via a push service
US7904340B2 (en) 2003-03-24 2011-03-08 Siebel Systems, Inc. Methods and computer-readable medium for defining a product model
US7406501B2 (en) 2003-03-24 2008-07-29 Yahoo! Inc. System and method for instant messaging using an e-mail protocol
JP2006521641A (ja) 2003-03-24 2006-09-21 シーベル システムズ,インコーポレイティド カスタム共通オブジェクト
US7711680B2 (en) 2003-03-24 2010-05-04 Siebel Systems, Inc. Common common object
US8762415B2 (en) 2003-03-25 2014-06-24 Siebel Systems, Inc. Modeling of order data
US7685515B2 (en) 2003-04-04 2010-03-23 Netsuite, Inc. Facilitating data manipulation in a browser-based user interface of an enterprise business application
US7412455B2 (en) 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US7620655B2 (en) 2003-05-07 2009-11-17 Enecto Ab Method, device and computer program product for identifying visitors of websites
US7409336B2 (en) 2003-06-19 2008-08-05 Siebel Systems, Inc. Method and system for searching data based on identified subset of categories and relevance-scored text representation-category combinations
US20040260659A1 (en) 2003-06-23 2004-12-23 Len Chan Function space reservation system
US7237227B2 (en) 2003-06-30 2007-06-26 Siebel Systems, Inc. Application user interface template with free-form layout
US7694314B2 (en) 2003-08-28 2010-04-06 Siebel Systems, Inc. Universal application network architecture
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US7269590B2 (en) 2004-01-29 2007-09-11 Yahoo! Inc. Method and system for customizing views of information associated with a social network user
US7289976B2 (en) 2004-12-23 2007-10-30 Microsoft Corporation Easy-to-use data report specification
US7747648B1 (en) 2005-02-14 2010-06-29 Yahoo! Inc. World modeling using a relationship network with communication channels to entities
US7827208B2 (en) 2006-08-11 2010-11-02 Facebook, Inc. Generating a feed of stories personalized for members of a social network
US7945653B2 (en) 2006-10-11 2011-05-17 Facebook, Inc. Tagging digital media
US8209308B2 (en) 2006-05-01 2012-06-26 Rueben Steven L Method for presentation of revisions of an electronic document
US9135228B2 (en) 2006-05-01 2015-09-15 Domo, Inc. Presentation of document history in a web browsing application
US8566301B2 (en) 2006-05-01 2013-10-22 Steven L. Rueben Document revisions in a collaborative computing environment
US7853881B1 (en) 2006-07-03 2010-12-14 ISQ Online Multi-user on-line real-time virtual social networks based upon communities of interest for entertainment, information or e-commerce purposes
US7779475B2 (en) 2006-07-31 2010-08-17 Petnote Llc Software-based method for gaining privacy by affecting the screen of a computing device
US8095531B2 (en) 2006-10-03 2012-01-10 Salesforce.Com, Inc. Methods and systems for controlling access to custom objects in a database
US7730478B2 (en) 2006-10-04 2010-06-01 Salesforce.Com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
US8082301B2 (en) 2006-11-10 2011-12-20 Virtual Agility, Inc. System for supporting collaborative activity
US8954500B2 (en) 2008-01-04 2015-02-10 Yahoo! Inc. Identifying and employing social network relationships
US8073850B1 (en) 2007-01-19 2011-12-06 Wordnetworks, Inc. Selecting key phrases for serving contextually relevant content
US8719287B2 (en) 2007-08-31 2014-05-06 Business Objects Software Limited Apparatus and method for dynamically selecting componentized executable instructions at run time
US20090100342A1 (en) 2007-10-12 2009-04-16 Gabriel Jakobson Method and system for presenting address and mapping information
US8504945B2 (en) 2008-02-01 2013-08-06 Gabriel Jakobson Method and system for associating content with map zoom function
US8490025B2 (en) 2008-02-01 2013-07-16 Gabriel Jakobson Displaying content associated with electronic mapping systems
US9449333B2 (en) 2008-02-01 2016-09-20 Gabriel Jakobson Online advertising associated with electronic mapping systems
US8032297B2 (en) 2008-05-08 2011-10-04 Gabriel Jakobson Method and system for displaying navigation information on an electronic map
US8014943B2 (en) 2008-05-08 2011-09-06 Gabriel Jakobson Method and system for displaying social networking navigation information
US8646103B2 (en) 2008-06-30 2014-02-04 Gabriel Jakobson Method and system for securing online identities
US8296748B2 (en) * 2008-07-24 2012-10-23 Intel Corporation Method and system for intermediate representation of source code
US8510664B2 (en) 2008-09-06 2013-08-13 Steven L. Rueben Method and system for displaying email thread information
US8661056B1 (en) 2008-11-03 2014-02-25 Salesforce.Com, Inc. System, method and computer program product for publicly providing web content of a tenant using a multi-tenant on-demand database service
US8510045B2 (en) 2009-12-22 2013-08-13 Steven L. Rueben Digital maps displaying search-resulting points-of-interest in user delimited regions
US8583587B2 (en) 2010-03-08 2013-11-12 Salesforce.Com, Inc. System, method and computer program product for performing one or more actions utilizing a uniform resource locator
US8925041B2 (en) 2010-04-01 2014-12-30 Salesforce.Com, Inc. System, method and computer program product for performing one or more actions based on a determined access permissions for a plurality of users
US8566654B2 (en) 2010-08-13 2013-10-22 Salesforce.Com, Inc. Debugging site errors by an admin as a guest user in a multi-tenant database environment
US8943002B2 (en) 2012-02-10 2015-01-27 Liveperson, Inc. Analytics driven engagement
US8769017B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system having document object model element interaction detection
US8756275B2 (en) 2012-02-17 2014-06-17 Zebedo Variable speed collaborative web browsing system
US8769004B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system integrated with social networks
US9608829B2 (en) * 2014-07-25 2017-03-28 Blockchain Technologies Corporation System and method for creating a multi-branched blockchain with configurable protocol rules
US20170264428A1 (en) * 2016-03-08 2017-09-14 Manifold Technology, Inc. Data storage system with blockchain technology
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
US10438170B2 (en) * 2017-01-05 2019-10-08 International Business Machines Corporation Blockchain for program code credit and programmer contribution in a collective

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013515305A (ja) 2009-12-22 2013-05-02 フィリップ・モーリス・プロダクツ・ソシエテ・アノニム 製造品目を定めてこの製造品目に関するデータを記憶するための方法及び装置
US20170031676A1 (en) 2015-07-27 2017-02-02 Deja Vu Security, Llc Blockchain computer data distribution

Also Published As

Publication number Publication date
US20180260212A1 (en) 2018-09-13
JP2018152050A (ja) 2018-09-27
US10579368B2 (en) 2020-03-03
DE102017130467A1 (de) 2018-09-13

Similar Documents

Publication Publication Date Title
JP7051458B2 (ja) ブロックチェーンバージョン制御システム
JP6800184B2 (ja) ドキュメント管理及びコラボレーション・システム
US10193953B2 (en) Self describing configuration
US11290282B2 (en) Facilitating dynamic end-to-end integrity for data repositories in an on-demand services environment
Chandra et al. Python requests essentials
US10586061B2 (en) Federated search
US9430449B2 (en) Systems, methods, and media for managing editable previews of webpages
US9646064B2 (en) Template based software container
US20170116436A1 (en) Automatic operation detection on protected field
US20170116428A1 (en) Support sharing the same table for protected and non-protected data columns
EP3365832B1 (en) Self describing configuration with support for sharing data tables
US20190238619A1 (en) Techniques for coordinating the sharing of content among applications
EP3716126B1 (en) Automatic operation detection on protected field with support for federated search
US20200169393A1 (en) Secure handling of customer-supplied encryption secrets
US9525673B1 (en) Content protection for extract, transform, load (ETL) scripts
US10380347B2 (en) Hierarchical runtime analysis framework for defining vulnerabilities
Van Baarsen GitLab Cookbook
Milanesio Learning Gerrit Code Review
US20180018745A1 (en) Licensing as a service (laas)
EP3142320B1 (en) Remote modification of a document database by a mobile telephone device
Heckman Designing platform independent mobile apps and services
Loizides Development of a SaaS Inventory Management System
Kurtz et al. Pro Drupal as an Enterprise Development Platform
Rovira Sánchez Verification of Self-Sovereign Identities in Ethereum applied to a Media Reuse Smart Contracts Scenario
Guerrero et al. Security model in XSA

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220304

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: 20220329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220330

R150 Certificate of patent or registration of utility model

Ref document number: 7051458

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150