JP2023511886A - 競合フリー・バージョン制御 - Google Patents
競合フリー・バージョン制御 Download PDFInfo
- Publication number
- JP2023511886A JP2023511886A JP2022544063A JP2022544063A JP2023511886A JP 2023511886 A JP2023511886 A JP 2023511886A JP 2022544063 A JP2022544063 A JP 2022544063A JP 2022544063 A JP2022544063 A JP 2022544063A JP 2023511886 A JP2023511886 A JP 2023511886A
- Authority
- JP
- Japan
- Prior art keywords
- document
- blockchain
- processor
- file
- block
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 79
- 230000015654 memory Effects 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 22
- 238000012795 verification Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 12
- 230000009471 action Effects 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 238000010801 machine learning Methods 0.000 description 15
- 230000008520 organization Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000005065 mining Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000012549 training Methods 0.000 description 5
- 238000010200 validation analysis Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000002427 irreversible effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 206010011878 Deafness Diseases 0.000 description 1
- 102100032467 Transmembrane protease serine 13 Human genes 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 230000003137 locomotive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000000765 microspectrophotometry Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 235000019799 monosodium phosphate Nutrition 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3297—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q2220/00—Business processing using cryptography
- G06Q2220/10—Usage protection of distributed data files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Power Engineering (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Storage Device Security (AREA)
Abstract
例示の動作は、文書プロセッサ・ノードにより、文書識別子(ID)とともにファイルを受信すること、文書プロセッサ・ノードにより、ファイルのハッシュを生成すること、文書プロセッサ・ノードにより、ファイルのハッシュと、文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出すること、文書プロセッサ・ノードにより、参加ノードに文書アクセス許可を割り当てること、および、IDに基づく文書のバージョンを参加ノードに通知することのうちの1または複数を含んでもよい。
Description
本発明は、概して、文書ストレージ・システムに関し、より詳細には、競合フリー・バージョン制御に関する。
中央集権型(centralized)データベースは、1つの場所の単一のデータベース(例えば、データベース・サーバ)にデータを格納し、維持する。この位置は、例えば、デスクトップの中央処理装置(CPU)、サーバCPUまたはメインフレームコンピュータなどの中央コンピュータであることが多い。中央集権型データベースに格納される情報は、典型的には、複数の異なる地点からアクセス可能である。複数のユーザまたはクライアント・ワークステーションは、例えば、クライアント/サーバ構成に基づいて、中央集権型データベース上で同時に作業することができる。中央集権型データベースは、その単一の場所を理由として、特にセキュリティの目的のために管理、維持、および制御することが容易である。中央集権型データベース内では、全てのデータの単一の格納場所が、所与のデータのセットが1つの一次レコードを有することも暗に示すので、データの冗長性が最小化される。
しかしながら、中央集権型データベースには有意な欠点がある。例えば、中央集権型データベースは、単一障害点(single point of failure)を有する。特に、対故障性の検討なく、故障が発生した場合(例えば、ハードウェア、ファームウェアもしくはソフトウェアまたはその組み合わせの障害)、データベース内の全てのデータが失われ、全てのユーザの作業が中断される。加えて、中央集権型データベースは、ネットワーク接続性に高度に依存する。その結果、接続が遅くなると、各データベース・アクセスに必要な時間が増大する。別の欠点は、中央集権型データベースが単一の位置に起因した高いトラフィックを経験する場合にボトルネックが発生することである。さらに、中央集権型データベースは、データベースによってデータの1つのコピーのみが維持されるので、データへの限定されたアクセスを提供する。その結果、重大な問題を引き起こしたり格納されたデータを上書きしたりするリスクなく、多数のデバイスが同時に同一のデータ片にアクセスすることができない。さらに、データベース・ストレージ・システムが最小限のデータ冗長性を有するかまたは全く有していないので、バックアップ・ストレージからの手動操作を介する以外に、想定外に失われたデータを回収することは非常に困難である。
現代のサプライチェーンは、しばしば、基礎となるブロックチェーンに基づいて実装される。サプライチェーン・ビジビリティ、商品のトラッキングおよびトレーシング、請求書の突合せのようなブロックチェーン・ベースの解決策の大部分は、共有ビジネス・ロジックの実行のために、文書の交換および文書周りのワークフローを必要とする。文書が電子メールまたは各組織のファイル・ストアに維持されることから、複数の組織のワークフロー全体にわたって文書履歴の証明を維持することは困難である。文書の管理ミスは、商品の移動を遅延させたり、支払いの失念または遅延、請求書、税金および関連する紛争を調整するための人手による検証処理など、これらの組織において大きな非効率性をもたらす。
従って、ブロックチェーンに基づく競合フリー文書バージョン制御が望まれる。よって、当該技術分野において、上述した問題に対処する必要がある。
第1の側面からみると、本発明は、競合フリー・バージョン制御のためのシステムを提供し、このシステムは、文書プロセッサ・ノードのプロセッサと、機械可読命令が格納されるメモリとを含み、機械可読命令は、プロセッサによって実行されたときに、プロセッサに、文書識別子(ID)とともにファイルを受信することと、ファイルのハッシュを生成することと、ファイルのハッシュと、文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出することと、参加ノードに文書アクセス許可を割り当てることと、IDに基づく文書のバージョンを参加ノードに通知することとを行わせる。
さらなる側面からみると、本発明は、競合フリー・バージョン制御のための方法を提供し、この方法は、文書プロセッサ・ノードにより、文書識別子(ID)とともにファイルを受信するステップと、文書プロセッサ・ノードにより、ファイルのハッシュを生成するステップと、文書プロセッサ・ノードにより、ファイルのハッシュと、文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出するステップと、文書プロセッサ・ノードにより、参加ノードに文書アクセス許可を割り当てるステップと、IDに基づく文書のバージョンを参加ノードに通知するステップとを含む。
さらなる側面からみると、本発明は、命令を含む非一時的コンピュータ可読媒体を提供し、この命令は、プロセッサによって実行されたときに、プロセッサに、文書識別子(ID)とともにファイルを受信することと、ファイルのハッシュを生成することと、ファイルのハッシュと、文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出することと、参加ノードに文書アクセス許可を割り当てることと、IDに基づく文書のバージョンを参加ノードに通知することとを実行させる。
さらなる側面からみると、本発明は、競合フリー・バージョン制御のためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品は、処理回路によって読み取り可能で、本発明のステップを実行するための方法を実行するための処理回路による実行のための命令を格納するコンピュータ可読ストレージ媒体を含む。
さらなる側面からみると、本発明は、コンピュータ可読媒体に格納され、デジタルコンピュータの内部メモリにロード可能なコンピュータ・プログラムを提供し、このコンピュータ・プログラムは、プログラムがコンピュータ上で実行されたときに、本発明のステップを実行するためのソフトウェアコード部分を含む。
1つの例示的な実施形態は、プロセッサおよびメモリを含むシステムを提供し、プロセッサは、文書識別子(ID)とともにファイルを受信すること、ファイルのハッシュを生成することと、ファイルのハッシュと、文書ID、文書のロケータとを包含するブロックチェーン・トランザクションを送出すること、参加ノードに文書アクセス許可を割り当てることと、および、IDに基づく文書のバージョンを参加ノードに通知することのうちの1または複数を実行するように構成される。
別の例示的な実施形態は、プロセッサとメモリとを含むシステムを提供し、プロセッサは、ユーザノードから、文書IDを包含する文書アクセス要求を受信すること、文書IDに基づき、ブロックチェーン台帳から文書の暗号化されたURLおよび文書のソース・ハッシュを獲得すること、文書の復号されたURLに基づいて、文書所有者ノードのストレージから受信した文書を検証すること、および、検証に応答して、文書所有者ノードのストレージから受信した文書をユーザノードに送信することのうちの1または複数を実行するように構成される。
別の例示的な実施形態は、プロセッサとメモリとを含むシステムを提供し、プロセッサは、文書と、ブロックチェーン・トランザクションに関連付けられる文書のバージョンの所有者を識別する署名付きデジタル受領書とを受信すること、署名付きデジタル受領書に基づいて文書のバージョンを検証すること、および、ブロックチェーンの台帳に記録された文書のハッシュに基づいて、競合フリー文書バージョニングを可能にするスマート・コントラクトを実行することのうちの1または複数を実行するように構成される。
別の例示的な実施形態は、文書プロセッサ・ノードによって、文書識別子(ID)とともにファイルを受信するステップ、文書プロセッサ・ノードによって、ファイルのハッシュを生成するステップ、文書プロセッサ・ノードによって、ファイルのハッシュと、文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出するステップ、文書プロセッサ・ノードによって、参加ノードに文書アクセス許可を割り当てるステップ、および、IDに基づく文書のバージョンを参加ノードに通知するステップのうちの1または複数を含む方法を提供する。
別の例示的な実施形態は、ブロックチェーン・プロセッサ・ノードにより、ユーザノードから、文書IDを包含する文書アクセス要求を受信するステップ、ブロックチェーン・プロセッサ・ノードにより、文書IDに基づき、ブロックチェーン台帳から文書の暗号化されたURLおよび文書のソース・ハッシュを獲得するステップ、ブロックチェーン・プロセッサ・ノードにより、文書の復号されたURLに基づいて、文書所有者ノードのストレージから受信した文書を検証するステップ、および、検証に応答して、文書所有者ノードのストレージから受信した文書をユーザノードに送信するステップのうちの1または複数を含む方法を提供する。
別の例示的な実施形態は、文書プロセッサ・ノードにより、文書と、ブロックチェーン・トランザクションに関連付けられる文書のバージョンの所有者を識別する署名付きデジタル受領書とを受信するステップ、文書プロセッサ・ノードにより、署名付きデジタル受領書に基づいて文書のバージョンを検証するステップ、ブロックチェーンの台帳に記録された文書のハッシュに基づいて、競合フリーの文書バージョニングを可能にするスマート・コントラクトを実行するステップのうちの1または複数を含む方法を提供する。
さらなる例示的な実施形態は、プロセッサによって読み取られると、プロセッサに、文書識別子(ID)とともにファイルを受信すること、ファイルのハッシュを生成すること、ファイルのハッシュと、文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出すること、参加ノードに文書アクセス許可を割り当てること、および、IDに基づく文書のバージョンを参加ノードに通知することのうちの1または複数を実行するようにする命令を含む、非一時的なコンピュータ可読媒体を提供する。
さらなる例示的な実施形態は、プロセッサによって読み取られると、プロセッサに、ユーザノードから、文書IDを包含する文書アクセス要求を受信すること、文書IDに基づき、ブロックチェーン台帳から文書の暗号化されたURLおよび文書のソース・ハッシュを獲得すること、文書の復号されたURLに基づいて、文書所有者ノードのストレージから受信した文書を検証すること、および、検証に応答して、文書所有者ノードのストレージから受信した文書をユーザノードに送信することのうちの1または複数を実行するようにする命令を含む、非一時的なコンピュータ可読媒体を提供する。
さらなる例示的な実施形態は、プロセッサによって読み取られると、プロセッサに、文書と、ブロックチェーン・トランザクションに関連付けられる文書のバージョンの所有者を識別する署名付きデジタル受領書とを受信すること、署名付きデジタル受領書に基づいて文書のバージョンを検証すること、および、ブロックチェーンの台帳に記録された文書のハッシュに基づいて、競合フリーの文書バージョニングを可能にするスマート・コントラクトを実行することのうちの1または複数を実行するようにする命令を含む、非一時的なコンピュータ可読媒体を提供する。
従って、当該技術分野においては、上述した問題に対処する必要がある。
以下の図面において示されるように、単に一例として好ましい実施形態を参照ながら、本発明が説明される。
本明細書において図面に一般的に記載され、図示されるような、具体例の構成要素は、種々の異なる構成をもって配置され、設計されてもよいことが容易に理解されるであろう。したがって、添付の図面に示される方法、装置、非一時的コンピュータ可読媒体およびシステムの少なくとも1つの実施形態の以下の詳細な説明は、特許請求されるように本願の範囲を限定することを意図するものではなく、単に選択された実施形態を代表するものである。
本明細書を通じて説明される具体的な特徴、構造または特性は、1または複数の実施形態において、任意の適切なやり方で組み合わされ、または除去されてもよい。例えば、本明細書を一貫して、”例示の実施形態”、”いくつかの実施形態”または他の同様の文言の使用は、本実施形態に関連して説明された特定の特徴、構造または特性が、少なくとも1つの実施形態に含まれる可能性があるという事実を示す。よって、本明細書を一貫して、”例示の実施形態”、”いくつかの実施形態における”、”いくつかの実施形態における”、”例示の実施形態”の句の出現は、必ずしも全て同一の実施形態の群を指すわけではなく、1または複数の実施形態において、記載された特徴、構造または特性が、任意の適切なやり方で組み合わされ、または除去されてもよい。さらに、図においては、任意の要素間の接続は、図示された接続が一方向または双方向の矢印であっても、一方向もしくは双方向またはその両方の通信を可能としてもよい。また、図に示した任意のデバイスは、別のデバイスであってもよい。例えば、モバイル・デバイスが情報を送信することが示される場合には、その情報を送信するために有線のデバイスが使用されてもよい。
加えて、”メッセージ”という用語は、実施形態の説明において使用される可能性があるが、本出願は、多くの種類のネットワークおよびデータに適用されてもよい。さらに、例示的な実施形態において、ある種類の接続、メッセージおよびシグナリングが示される可能性があるが、本出願は、ある種類の接続、メッセージおよびシグナリングに限定されるものではない。
例示の実施形態は、ブロックチェーンに基づく競合フリーの文書バージョン制御を提供するための方法、システム、コンポーネント、非一時的コンピュータ可読媒体、デバイスもしくはネットワークまたはその組み合わせを提供する。
一実施形態においては、アプリケーションは、互いに通信する複数のノードを含む分散ストレージ・システムである非中央集権型データベース(ブロックチェーンなど)を利用する。非中央集権型データベースは、相互に信頼されない当事者間のレコードを維持することが可能な分散台帳に類似した追記のみの変更不可能なデータ構造を含む。信頼されてない当事者は、本明細書では、ピアまたはピア・ノードと参照される。各ピアは、データベース・レコードのコピーを維持し、分散されたピア間でコンセンサスに達することなく、単一のピアがデータベース・レコードを変更することができない。例えば、ピアは、コンセンサス・プロトコルを実行してブロックチェーンのストレージ・トランザクションを妥当性確認(validate)し、ストレージ・トランザクションをブロックにグループ化し、ブロックにわたりハッシュチェーンを構築することができる。この処理は、必要に応じて、一貫性のためにストレージ・トランザクションを順序付けることによって台帳を形成する。種々の実施形態においては、許可型(Permissioned)もしくは非許可型(Permissionless)またはその両方のブロックチェーンを使用してもよい。パブリックまたは非許可型ブロックチェーンでは、特定の身元なしで誰もが参加することができる。パブリック・ブロックチェーンは、ネイティブな暗号通貨に関与することができ、プルーフ・オブ・ワーク(PoW)のような種々のプロトコルに基づくコンセンサスを使用してもよい。一方、許可型ブロックチェーン・データベースは、資金、商品、情報などを交換するビジネスといった、共通の目的を共有しているが互いに完全には信頼していないエンティティのグループ間の安全な相互作用を提供する。
このアプリケーションは、非中央集権型ストレージスキームに仕立てられ、”スマート・コントラクト”または”チェーンコード”と参照される任意のプログラマブル・ロジックを動作させるブロックチェーンを利用することができる。いくつかの場合、システムチェーンコードと呼ばれる、管理機能およびパラメータのために特化されたチェーンコードが存在する可能性がある。本出願は、ブロックチェーン・データベースの改ざん防止性および基礎となるノード間のコンセンサスを利用する、信頼された分散アプリケーションであるスマート・コントラクトをさらに利用することができ、この基礎となるノード間のコンセンサスは、エンドースメントまたはエンドースメント・ポリシーとも参照される。本出願に関連するブロックチェーン・トランザクションは、ブロックチェーンにコミットされる前に”エンドース”され得る一方、エンドースされていないトランザクションは無視される。エンドースメント・ポリシーは、エンドースメントに必要なピア・ノードのセットの形態で、チェーンコードが、トランザクションに対しエンドーサ(endorser)を指定することを可能にする。クライアントが、エンドースメント・ポリシーで指定されたピアにトランザクションを送信すると、トランザクションが実行され、トランザクションが妥当性確認される。妥当性確認後、トランザクションは、順序付けフェーズに入り、そこでは、コンセンサス・プロトコルが使用されて、ブロックにグループ化された、エンドースされたトランザクションの順序付けられたシーケンスを生成する。
このアプリケーションは、ブロックチェーン・システムの通信エンティティであるノードを利用することができる。"ノード"は、同一の物理サーバ上で異なる種類の複数のノードが実行可能であるという意味で、論理的機能を実行することができる。ノードは、信頼ドメインにおいてグループ化され、種々のやり方でそれらを制御する論理エンティティに関連付けられる。ノードは、エンドーサ(例えば、ピア)にトランザクション呼び出し(invocation)を送出(submit)し、順序付けサービス(例えば、順序付けノード)にトランザクション提案をブロードキャストする、クライアントまたは送信クライアント・ノードのような異なる種類を含むことができる。別の種類のノードは、クライアントが送出したトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードである。要件ではないが、ピアは、エンドーサの役割も有することができる。順序付けサービス・ノードまたはオーダラ(orderer)は、全てのノードに対する通信サービスを実行するノードであり、トランザクションをコミットし、ブロックチェーンの世界状態を変更する際に、システム内のピア・ノードの各々に対するブロードキャストなどの送達保証を実装し、ここで、ブロックチェーンの世界状態は、通常は制御および設定情報を含む、初期ブロックチェーン・トランザクションの別の名称である。
このアプリケーションは、ブロックチェーンの全ての状態遷移の順序付けられた耐タンパ性のレコードである台帳を利用することができる。状態遷移は、参加している当事者(例えば、クライアント・ノード、順序付けノード、エンドーサ・ノード、ピア・ノードなど)によって送出されたチェーンコード呼出し(すなわち、トランザクション)から生じてもよい。各参加している当事者(ピア・ノードなど)は、台帳のコピーを維持する。トランザクションは、作成、更新、削除などの1つまたは複数のオペランドとして台帳にコミットされるアセットのキーと値のペアのセットをもたらし得る。台帳は、変更不可能な順序付けされたレコードをブロックに格納するために使用されるブロックチェーン(チェーンとも呼ばれる)を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。
このアプリケーションは、ハッシュリンクされたブロックとして構造化されたトランザクション・ログであり、Nが1以上であるとして、各ブロックは、N個のトランザクションのシーケンスを含む、チェーンを利用することができる。ブロックヘッダは、ブロックのトランザクションのハッシュおよび前のブロックのヘッダのハッシュを含む。このようにして、台帳上の全てのトランザクションが順序付けられ、暗号的に互いにリンクされてもよい。したがって、ハッシュリンクを破壊せずに台帳データを改ざんすることは不可能である。直近に追加されたブロックチェーン・ブロックのハッシュは、それ以前に発生したチェーン上の全てのトランザクションを表し、全てのピア・ノードが、一貫性があり、信用できる状態にあることを保証することを可能とする。チェーンは、ピア・ノードのファイル・システム(すなわち、ローカル、アタッチド・ストレージ、クラウドなど)に格納されてよく、ブロックチェーンのワークロードの追記のみという性質を効率的にサポートする。
変更不可能な台帳の現在の状態は、チェーンのトランザクション・ログに含まれる全てのキーに対する最新の値を表す。現在の状態が、チャネルで知られている最新のキーの値を表すため、世界状態と参照されることもある。チェーンコード呼出しは、台帳の現在の状態データに対してトランザクションを実行する。これらのチェーンコードの相互作用を効率的なものとするために、キーの最新の値が状態データベースに格納されてもよい。状態データベースは、簡単には、チェーンのトランザクション・ログへのインデックス付きビューであってよく、したがって、いつでもチェーンから再生成することができる。状態データベースは、ピア・ノードが起動した際に、トランザクションが受け取られる前に、自動的に回復され(必要な場合は、生成され)てもよい。
本明細書で説明され、また図示される即時の解決策のいくつかの利点は、ブロックチェーンに基づく競合フリー文書バージョン制御のための方法およびシステムを含む。例示的な実施形態は、変更不可能性、デジタル署名および信頼できる唯一の情報源であることのようなデータベースの特徴を拡張することによって、時間および信頼性の問題を解決する。例示的な実施形態は、ブロックチェーン・ネットワークに基づく競合フリー文書バージョン制御のための解決策を提供する。ブロックチェーン・ネットワークは、アセット・タイプおよびスマート・コントラクトに基づいてアセットを管理するルールに基づいて同質であってもよい。
ブロックチェーンは、ブロックチェーンが、中央ストレージではなく、むしろ分散され、変更不可能で、安全なストレージであり、ノードがストレージ内のレコードに対する変更を共有する必要があるという点で、従来のデータベースとは相違する。ブロックチェーンに固有であり、ブロックチェーンを実装するのに役立ついくつかの特性には、これらに限定されるものではないが、変更不可能な台帳、スマート・コントラクト、セキュリティ、プライバシー、非中央集権、コンセンサス、エンドースメント、アクセス性などが含まれるが、これらは、本明細書においてさらに説明される。種々の側面によれば、ブロックチェーンに基づく競合フリー文書バージョン制御のためのシステムは、ブロックチェーンに内在しかつ固有の変更不可能な責任(immutable accountability)、セキュリティ、プライバシー、許可された非中央集権化(permitted decentralization)、スマート・コントラクトの利用可能性、エンドースメントおよびアクセス可能性に起因して実装される。特に、ブロックチェーン台帳データは、変更不可能であり、ブロックチェーンに基づく競合フリー文書バージョン制御のための効率的な方法を提供する。また、ブロックチェーンにおける暗号化の使用は、セキュリティを提供し、信頼を構築する。スマート・コントラクトは、ライフ・サイクルを完全なものにするためにアセットの状態を管理する。例示的なブロックチェーンは、権限が非中央集権化されている。したがって、各エンドユーザは、アクセスするためのそれ自身の台帳コピーを有してもよい。複数の組織(およびピア)が、ブロックチェーン・ネットワークにオンボードされてもよい。キーとなる組織は、エンドース・ピアとして働き、スマート・コントラクトの実行結果、読み出しセットおよび書き込みセットの妥当性確認を行う。言い換えれば、ブロックチェーンに内在する特徴は、競合フリー文書バージョン制御のための方法の効率的な実装を提供する。
例示的な実施形態の利点の1つは、それが、ブロックチェーン・ベースのシステムにおいて競合フリー文書バージョン制御のための方法を実装することによって、コンピューティング・システムの機能性を改善することである。本明細書で説明されるブロックチェーン・システムを通して、コンピューティング・システムは、分散台帳、ピア、暗号化技術、MSPおよびイベント・ハンドリングなどの能力へのアクセスを提供することによって、ブロックチェーンに基づく競合フリー文書バージョン制御のための機能性を実行することができる。また、ブロックチェーンは、ビジネス・ネットワークを作成し、ユーザまたは組織を参加のためにオンボードさせることを可能にする。このように、ブロックチェーンは、単なるデータベースではない。ブロックチェーンは、ユーザおよびオンボード/オフボード組織のビジネス・ネットワークを作成し、スマート・コントラクトの形態でサービス・プロセスを協働および実行する能力を備えている。
例示的な実施形態は、伝統的なデータベースを超えた多くの利点を提供する。例えば、ブロックチェーンを通して実施形態は、ブロックチェーンに内在し、かつ固有の変更不可能な説明責任、セキュリティ、プライバシー、許可された非中央集権化、スマート・コントラクトの利用可能性およびアクセス可能性を提供する。
一方、従来のデータベースは、すべての関係者がビジネス・ネットワークに参加するわけではなく、信頼されたコラボレーションを生み出さず、デジタル・アセットの効率的なストレージを提供しないことから、例示的な実施形態を実装するために使用することができないであろう。伝統的なデータベースは、改ざん防止機構付きストレージを提供せず、格納されているデジタル・アセットの保全を提供しない。よって、ブロックチェーンに基づく競合フリー文書バージョン制御のための提案された方法は、伝統的なデータベースで実装することができない。
一方、伝統的なデータベースを例示的な実施形態を実装するために使用した場合、例示的な実施形態は、検索能力、セキュリティの欠如および遅いトランザクションの速度のような不必要な欠点を被るであろう。加えて、ブロックチェーン・ネットワークにおける競合フリー文書バージョン制御のための自動化された方法は、単純に不可能であろう。
したがって、例示的な実施形態は、複数の組織のなかでの文書バージョン制御の技術分野における問題に対する具体的な解決策を提供する。
例示的な実施形態は、また、ブロックチェーンのブロック構造内にデータがどのように格納されるかを変更する。例えば、デジタル・アセット・データは、データブロックのある部分内(すなわち、ヘッダ、データ・セグメントまたはメタデータ内)に安全に格納されてもよい。ブロックチェーンのデータブロック内にデジタル・アセット・データを格納することにより、デジタル・アセット・データは、ブロックのハッシュリンクされたチェーンを介して、変更不可能なブロックチェーン台帳に追記されてもよい。いくつかの実施形態においては、データブロックは、ブロックチェーンの伝統的なブロック構造内にアセットと一緒に格納されていないデジタル・アセットに関連付けられた個人データを有することで、伝統的なデータブロックとは異なっている可能性がある。デジタル・アセットに関連付けられた個人データを除去することによって、ブロックチェーンは、変更不可能な説明責任およびセキュリティに基づく匿名性の利益を提供することができる。
例示的な実施形態によれば、ブロックチェーンに基づく競合フリー文書バージョン制御のためのシステムおよび方法が提供される。ビジネス・ワークフローに参加する各組織は、ブロックチェーン・ネットワークに接続されたブロックチェーン文書プロセッサ(例えば、指定されたノード)を使用する。組織用の文書プロセッサは、まず、組織のファイル・ストアに接続してもよい。これにより、ファイルが組織の境界を離れないようにすることができる。次に、ブロックチェーン文書プロセッサは、組織のインスタンスIDおよびその公開鍵によって固有に識別される文書プロセッサを登録する。文書プロセッサは、
複数の組織ネットワークにわたる文書識別子およびそれに関連付けられるファイルの所有権を主張し、
文書識別子(ID)に対して、アップロードされたファイルをバージョニングするために更新順序を決定し、
ビジネスプロセスが、承認、拒絶および承継のような文書に関連するステータスを確実に関連することを可能にする
ためにブロックチェーン・コンセンサス・メカニズムを使用してもよい。
複数の組織ネットワークにわたる文書識別子およびそれに関連付けられるファイルの所有権を主張し、
文書識別子(ID)に対して、アップロードされたファイルをバージョニングするために更新順序を決定し、
ビジネスプロセスが、承認、拒絶および承継のような文書に関連するステータスを確実に関連することを可能にする
ためにブロックチェーン・コンセンサス・メカニズムを使用してもよい。
1つの例示的な実施形態においては、文書バージョニングは、以下のように実装される:
ユーザは、固有の文書識別子(ID)とともにファイルを文書プロセッサ(例えば、ブロックチェーン・ノード)にアップロードする;
チェーン外コンポーネントは、組織のファイル・ストアにファイルを格納する;
台帳コンポーネントは、文書ID、関連するファイルのハッシュ、所有するインスタンスIDおよび暗号化された文書URLとともに、ブロックチェーン・トランザクションを署名し、送出する;
ブロックチェーン・トランザクションは、文書識別子が既に使用中であるかどうかを判定する;
文書識別子が台帳上に存在しない場合、トランザクションの送出者が、文書の所有者として割り当てられる。次いで、所有者は、文書にアクセス、更新またはレビューするために読者、編集者、レビューアなどのエコシステム内の他の参加者(例えば、ブロックチェーン・ノード)に許可を割り当てることができる;
文書識別子が既に存在する場合には、送出者のアクセスが第1に検証される;
送出者が要求された許可を有する場合、文書の新しいバージョンが追加され、所有者および文書へのアクセスを有する他の者に通知される。
ユーザは、固有の文書識別子(ID)とともにファイルを文書プロセッサ(例えば、ブロックチェーン・ノード)にアップロードする;
チェーン外コンポーネントは、組織のファイル・ストアにファイルを格納する;
台帳コンポーネントは、文書ID、関連するファイルのハッシュ、所有するインスタンスIDおよび暗号化された文書URLとともに、ブロックチェーン・トランザクションを署名し、送出する;
ブロックチェーン・トランザクションは、文書識別子が既に使用中であるかどうかを判定する;
文書識別子が台帳上に存在しない場合、トランザクションの送出者が、文書の所有者として割り当てられる。次いで、所有者は、文書にアクセス、更新またはレビューするために読者、編集者、レビューアなどのエコシステム内の他の参加者(例えば、ブロックチェーン・ノード)に許可を割り当てることができる;
文書識別子が既に存在する場合には、送出者のアクセスが第1に検証される;
送出者が要求された許可を有する場合、文書の新しいバージョンが追加され、所有者および文書へのアクセスを有する他の者に通知される。
複数の組織が同一IDに基づく文書を送出する場合、ブロックチェーンにおけるトランザクション順序が、文書のバージョニングを保証し、組織間の文書バージョニングおよび所有権のいかなる競合も回避する。さらに、所有者、編集者、およびレビューアは、文書のバージョンに対してステータス・メッセージを記録してもよい。
別の例示的な実施形態によれば、文書は、所有者(例えば、組織A)のファイル・ストレージに格納され、暗号化された文書URLのみがブロックチェーンに記録される。組織Bのユーザは、文書ID、および、任意選択でバージョン番号を使用して、ブロックチェーン文書プロセッサBを介して文書へアクセスすることを要求する。ブロックチェーン文書プロセッサBは、ブロックチェーン・トランザクションを送出して、暗号化されたURL、所有者のインスタンスID(プロセッサA)および文書のハッシュなどの文書の詳細を受信する。ブロックチェーン文書プロセッサBは、次いで、要求元のユーザの詳細、暗号化されたURLおよびプロセッサBの公開鍵と一緒に、所有者の文書処理から文書を受け取る要求を送信する。プロセッサAは、次いで、ブロックチェーン・トランザクションを送出し、プロセッサBがネットワークに参加している有効なエンティティであり、ユーザが要求された文書にアクセスする資格があるかどうかをまず検証する。成功裏な検証の後、プロセッサAは、文書URLを復号し、組織Aのファイル・ストアから文書を読み出し、プロセッサBに文書を送信する。プロセッサBは、文書を受信し、受信した文書ハッシュが元のハッシュと一致することを検証し、次いで、文書を要求した組織Bのユーザに文書を送信する。
さらに別の例示的な実施形態によれば、文書のプルーフィングは、以下のように実装される。所有者または文書で作業する他の者は、対応するブロックチェーン・トランザクションに関連して、文書のバージョンの所有者/送出者についての主張を保持する署名付きデジタル受領書を受け取ることができる。デジタル受領書を用いて、匿名ユーザまたはブロックチェーン・ネットワークの任意の参加者は、文書が、ブロックチェーンに登録されたオリジナル文書と同一であることを検証することができる。文書を検証するために、検証者は、文書および所有者/編集者によって共有されたその受領書を文書プロセッサに送信することができる。文書プロセッサ・ブロックチェーン・ノードは、受領書における主張および検証するために送出された文書のハッシュを、ブロックチェーン台帳に記録された詳細と照合するためのブロックチェーン・トランザクションを送出する。ブロックチェーン台帳は、文書上での参加者によって取られたすべての読み出し、更新および検証のアクションのアクセスログを維持する。よって、文書プロセッサは、競合フリー文書バージョニングを可能とし、ビジネス・フロー中のブロックチェーン外部との改ざん防止機構付きの文書交換を保証する。
図1Aは、例示的な実施形態による、ブロックチェーンに基づく競合フリー文書バージョン制御のためのロジック・ネットワーク図を示す。
図1Aを参照すると、例示的なネットワーク100は、参加者ノード105に接続された文書プロセッサ・ノード102を含む。文書プロセッサ・ノード102は、文書IDおよびハッシュ110を格納するための台帳108を有するブロックチェーン106に接続されてもよい。この例は、1つの文書プロセッサ・ノード102のみを詳細に説明しているが、複数のこのようなノードがブロックチェーン106に接続されてもよい。文書プロセッサ・ノード102は、追加の構成要素を含んでもよく、本明細書で説明されるコンポーネントの一部が、本明細書で開示される文書プロセッサ・ノード102の範囲から逸脱することなく、削除され、もしくは修正され、またはその両方がなされてもよいことが理解されるべきである。文書プロセッサ・ノード102は、コンピューティング・デバイスまたはサーバ・コンピュータなどであってよく、また、プロセッサ104を含んでもよく、このプロセッサ104は、半導体ベースのマイクロプロセッサ、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)もしくは他のハードウェア・デバイスまたはその組み合わせであってもよい。単一のプロセッサ104が示されているが、文書プロセッサ・ノード102は、文書プロセッサ・ノード102のシステムの範囲から逸脱することなく、複数のプロセッサ、複数のコアなどを含んでもよいことが理解されるべきである。
文書プロセッサ・ノード102は、また、その上にプロセッサ104によって実行可能な機械可読命令を格納してもよい非一時的コンピュータ可読媒体112を含んでもよい。機械可読命令の例は、114~122として示され、以下でさらに説明される。非一時的コンピュータ可読媒体112の例は、実行可能命令を含むかまたは格納する、電子、磁気、光学または他の物理ストレージ・デバイスを含んでもよい。例えば、非一時的コンピュータ可読媒体112は、ランダム・アクセス・メモリ(RAM)、電気的消去可能プログラマブル・リード・オンリー・メモリ(EEPROM)、ハード・ディスク、光ディスクまたは他のタイプのストレージ・デバイスであってもよい。
プロセッサ104は、機械可読命令114を実行して、文書識別子(ID)とともにファイルを受信してもよい。上述のように、ブロックチェーン台帳108は、文書に関連するハッシュおよびID110を格納してもよい。ブロックチェーン106のネットワークは、複数の参加者ノード105のためにトランザクションを管理する1または複数のスマート・コントラクトを使用するように構成されてもよい。
プロセッサ104は、機械可読命令116を実行して、ファイルのハッシュを生成してもよい。プロセッサ104は、機械可読命令118を実行して、ファイルのハッシュ、文書IDおよび文書のロケータを包含するブロックチェーン・トランザクションを送出してもよい。プロセッサ104は、機械可読命令120を実行して、文書アクセス許可を参加者ノード105に割り当ててもよい。プロセッサ104は、機械可読命令122を実行して、IDに基づく文書のバージョンを参加者ノード105に通知してもよい。
図1Bは、例示的な実施形態による、ブロックチェーンに基づく競合フリー文書バージョン制御のためのロジック・ネットワーク図を示す。
図1Bを参照すると、例示的なネットワーク130は、ユーザノード103および文書所有者ノード105に接続されたブロックチェーン・プロセッサ・ノード102’を含む。ブロックチェーン・プロセッサ・ノード102’は、文書ハッシュ110を格納するための台帳108を有するブロックチェーン106に接続されてもよい。この例は、1つのブロックチェーン・プロセッサ・ノード102’のみを詳細に説明しているが、複数のこのようなノードがブロックチェーン106に接続されてもよい。ブロックチェーン・プロセッサ・ノード102’は、追加の構成要素を含んでもよく、本明細書で説明されるコンポーネントの一部が、本明細書で開示されるブロックチェーン・プロセッサ・ノード102’の範囲から逸脱することなく、削除され、もしくは修正され、またはその両方がなされてもよいことが理解されるべきである。ブロックチェーン・プロセッサ・ノード102’は、コンピューティング・デバイスまたはサーバ・コンピュータなどであってよく、また、プロセッサ104を含んでもよく、このプロセッサ104は、半導体ベースのマイクロプロセッサ、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)もしくは他のハードウェア・デバイスまたはその組み合わせであってもよい。単一のプロセッサ104が示されているが、ブロックチェーン・プロセッサ・ノード102’は、ブロックチェーン・プロセッサ・ノード102’システムの範囲から逸脱することなく、複数のプロセッサ、複数のコアなどを含んでもよいことが理解されるべきである。
ブロックチェーン・プロセッサ・ノード102’は、また、その上にプロセッサ104によって実行可能な機械可読命令を格納してもよい非一時的コンピュータ可読媒体112’を含んでもよい。機械可読命令の例は、113~119として示され、以下でさらに説明される。非一時的コンピュータ可読媒体112’の例は、実行可能命令を含むかまたは格納する、電子、磁気、光学または他の物理ストレージ・デバイスを含んでもよい。例えば、非一時的コンピュータ可読媒体112’は、ランダム・アクセス・メモリ(RAM)、電気的消去可能プログラマブル・リード・オンリー・メモリ(EEPROM)、ハード・ディスク、光ディスクまたは他のタイプのストレージ・デバイスであってもよい。
プロセッサ104は、機械可読命令113を実行して、ユーザノード103から、文書IDを包含する文書アクセス要求を受信してもよい。上述のように、ブロックチェーン台帳108は、検証用の文書ハッシュを格納してもよい。ブロックチェーン106のネットワークは、複数の参加者ノードためにトランザクションを管理する1または複数のスマート・コントラクトを使用するように構成されてもよい。
プロセッサ104は、機械可読命令115を実行して、文書IDに基づき、ブロックチェーン台帳から文書の暗号化されたURLおよび文書のソース・ハッシュを獲得してもよい。プロセッサ104は、機械可読命令117を実行して、文書の復号されたURLに基づいて、文書所有者ノード105のストレージから受信した文書を検証してもよい。プロセッサ104は、機械可読命令119を実行して、検証することに応答して、文書所有者ノード105のストレージから受信した文書をユーザノードに送信しもよい。
図1Cは、例示的な実施形態による、ブロックチェーン・ネットワークにおける競合フリー文書バージョニングのためのロジック・ネットワーク図を示す。
図1Cを参照すると、例示的なネットワーク140は、アクセスログおよび文書ハッシュ110を格納するための台帳108を有するブロックチェーン106に接続された文書プロセッサ・ノード102’’を含む。この例は、1つの文書プロセッサ・ノード102’’のみを詳細に説明しているが、複数のこのようなノードがブロックチェーン106に接続されてもよい。文書プロセッサ・ノード102’’は、追加の構成要素を含んでもよく、本明細書で説明されるコンポーネントの一部が、本明細書で開示される文書プロセッサ・ノード102’’の範囲から逸脱することなく、削除され、もしくは修正され、またはその両方がなされてもよいことが理解されるべきである。文書プロセッサ・ノード102’’は、コンピューティング・デバイスまたはサーバ・コンピュータなどであってよく、また、プロセッサ104を含み、このプロセッサ104は、半導体ベースのマイクロプロセッサ、中央処理ユニット(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)もしくは他のハードウェア・デバイスまたはその組み合わせであってもよい。単一のプロセッサ104が示されているが、文書プロセッサ・ノード102’’は、文書プロセッサ・ノード102’’のシステムの範囲から逸脱することなく、複数のプロセッサ、複数のコアなどを含んでもよいことが理解されるべきである。
文書プロセッサ・ノード102’’は、また、その上にプロセッサ104によって実行可能な機械可読命令を格納してもよい非一時的コンピュータ可読媒体112’’を含んでもよい。機械可読命令の例は、121~125として示され、以下でさらに説明される。非一時的コンピュータ可読媒体112’’の例は、実行可能命令を含むかまたは格納する、電子、磁気、光学または他の物理ストレージ・デバイスを含んでもよい。例えば、非一時的コンピュータ可読媒体112’’は、ランダム・アクセス・メモリ(RAM)、電気的消去可能プログラマブル・リード・オンリー・メモリ(EEPROM)、ハード・ディスク、光ディスクまたは他のタイプのストレージ・デバイスであってもよい。
プロセッサ104は、機械可読命令121を実行して、文書と、ブロックチェーン106トランザクションに関連付けられる文書のバージョンの所有者を識別する署名付きデジタル受領書とを受信してもよい。上述のように、ブロックチェーン台帳108は、文書ハッシュ110を格納してもよい。ブロックチェーン106のネットワークは、複数のブロックチェーン・ノードのためにトランザクションを管理する1または複数のスマート・コントラクトを使用するように構成されてもよい。
プロセッサ104は、機械可読命令123を実行して、署名付きデジタル受領書に基づいて文書のバージョンを検証してもよい。プロセッサ104は、機械可読命令125を実行して、ブロックチェーン106の台帳108に記録された文書のハッシュに基づいて、競合フリー文書バージョニングを可能にするスマート・コントラクトを実行してもよい。
図2Aは、例示の実施形態によるブロックチェーンのアーキテクチャ構成200を示す。図2Aを参照すると、ブロックチェーン・アーキテクチャ200は、所定のブロックチェーン要素、例えば、ブロックチェーン・ノード202のグループを含んでよい。ブロックチェーン・ノード202は、1または複数のノード204~210を含んでよい(これら4つのノードは単に例として示される)。これらのノードは、ブロックチェーン・トランザクションの追加および妥当性確認プロセス(コンセンサス)のような複数の活動に参加する。ブロックチェーン・ノード204~210のうちの1以上は、エンドースメント・ポリシーに基づいてトランザクションをエンドースしてもよく、アーキテクチャ200内の全てのブロックチェーン・ノードに対する順序付けサービスを提供してもよい。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層216に格納されるブロックチェーンの変更不可能な台帳に書き込もうとしてもよく、このコピーが、土台となる物理インフラストラクチャ214にも格納されてもよい。ブロックチェーン構成は、格納されたプログラム/アプリケーション・コード220(例えば、チェーンコード、スマート・コントラクトなど)にアクセスし、実行するためのアプリケーション・プログラミング・インタフェース(API)222にリンクされた1または複数のアプリケーション224を含んでよく、ここで、プログラム/アプリケーション・コード220は、参加者が求めるカスタマイズされた構成に従って作成されてもよく、それら自身の状態を維持し、それら自身のアセットを制御し、外部の情報を受信することができる。これは、分散台帳に追記することによって、トランザクションとしてデプロイされ、全てのブロックチェーン・ノード204~210にインストールされ得る。
ブロックチェーン・ベースまたはプラットフォーム212は、ブロックチェーン・データ、サービス(例えば、暗号的トラスト・サービス(cryptographic trust services)、仮想実行環境など)および土台となる物理的コンピュータ・インフラストラクチャの種々の層を含み、物理的コンピュータ・インフラストラクチャは、新しいトランザクションを受信し、格納し、データ・エントリにアクセスを求める監査人にアクセスを提供するために使用され得る。ブロックチェーン層216は、プログラム・コードを処理するため、物理インフラストラクチャ214に従事させる(engage)ために必要な仮想実行環境へのアクセスを提供するインタフェースを公開することができる。暗号的トラスト・サービス218は、アセット交換トランザクションなどのトランザクションを検証し、情報の秘密を保つために使用することができる。
図2Aのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム212によって、公開された1または複数のインタフェースおよび提供されたサービスを介して、プログラム/アプリケーション・コード220を処理および実行することができる。コード220は、ブロックチェーンのアセットを制御してもよい。例えば、コード220は、データを格納および転送してもよく、スマート・コントラクトおよび条件あるいは実行の対象になる他のコード要素を伴う関連チェーンコードの形態で、ノード204~210によって実行されてもよい。非限定的な例として、スマート・コントラクトは、リマインダ、更新もしくは変更、更新などを対象としたその他の通知またはその組み合わせなどを実行するために作成されてもよい。スマート・コントラクトは、それ自体、認証およびアクセスの要件および台帳の使用に関連付けられたルールを識別するために使用されてもよい。例えば、文書情報226は、ブロックチェーン層216に含まれている1または複数の処理エンティティ(例えば、仮想マシン)によって処理されてもよい。結果228は、参加ノードの中でコンフリクトフリーである文書バージョンを含んでもよい。物理インフラストラクチャ214は、本明細書に記載される任意のデータまたは情報を回収する(retrieve)ために利用されてもよい。
スマート・コントラクトは、高水準のアプリケーションおよびプログラミング言語を介して作成され、その後、ブロックチェーン内のブロックに書き込まれてもよい。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散ネットワーク)への登録、格納もしくは複製またはその組み合わせが行われる実行可能コードを含んでもよい。トランザクションは、スマート・コントラクトに関連付けられる条件が満たされることに応答して実行され得る、スマート・コントラクト・コードの実行である。スマート・コントラクトを実行することは、デジタル・ブロックチェーン台帳の状態に対する信頼される変更をトリガすることができる。スマート・コントラクトの実行によってもたらされるブロックチェーン台帳に対する変更は、1または複数のコンセンサス・プロトコルを通じて、ブロックチェーン・ピアの分散ネットワーク全体に自動的に複製され得る。
スマート・コントラクトは、キー・バリュー・ペアの形式でブロックチェーンに書き込まれ得る。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納された値を読み出し、それらをアプリケーションの動作において使用してもよい。スマート・コントラクト・コードは、種々の論理演算の出力をブロックチェーンに書き込んでもよい。コードは、仮想マシンまたはその他のコンピューティング・プラットフォームにおいて一時的なデータ構造を作成するために使用されてもよい。ブロックチェーンに書き込まれるデータは、公開されてもよく、もしくは暗号化されて秘密が維持されてもよく、またはその両方が行われてもよい。スマート・コントラクトによって使用/生成される一時的データは、供給される実行環境によってメモリ内に保持され、ブロックチェーンのために必要なデータが識別された後に削除される。
チェーンコードは、追加の機能と共にスマート・コントラクトのコード解釈を含んでもよい。本明細書に記載されるように、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードであってもよく、ここで、コンセンサス・プロトコル中にそれがチェーン・バリデータ(chain validators)によって一緒に実行されて、妥当性確認される。チェーンコードは、ハッシュを受信し、以前に格納された特徴抽出(feature extractor)の使用によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから回収する。ハッシュ識別(hash identifier)のハッシュと、格納された識別テンプレート・データから作成されたハッシュとが一致する場合、チェーンコードは、要求元サービスに認証キーを送信する。チェーンコードは、暗号の詳細に関連付けられたブロックチェーン・データを書き込んでもよい。
図2Bは、例示の実施形態による、ブロックチェーンのノード間のブロックチェーン・トランザクション・フロー250の例を示す。図2Bを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード260によってエンドース・ピア・ノード(endorsing peer node)281に送信されるトランザクション提案(transaction proposal)291を含んでもよい。エンドース・ピア・ノード281は、クライアント署名を検証し、チェーンコード関数を実行してトランザクションを開始することができる。出力は、チェーンコードの結果、チェーンコードに読み出されたキー/バリューのバージョンのセット(読み出しセット)およびチェーンコードに書き込まれたキー/バリューのセット(書き込みセット)を含んでよい。承認される場合、提案応答292がエンドースメント署名と共にクライアント・ノード260に返送される。クライアント260は、エンドースメントをトランザクションのペイロード293に組み込み、順序付けサービス・ノード284にブロードキャストする。順序付けサービス・ノード284は、それから、順序付けられたトランザクションをブロックとしてチャネル上の全てのピア・ノード281~283に配信する。ブロックチェーンへコミットする前に、各ピア・ノード281~283は、トランザクションを妥当性確認することができる。例えば、ピアは、エンドースメント・ポリシーをチェックして、指定されたピアの正しい割り当てが結果に署名し、トランザクションのペイロード293に対する署名を認証したことを保証することができる。
再び図2Bを参照すると、クライアント・ノード260が、要求を構築して、エンドーサであるピア・ノード281に送信することによって、トランザクション291を開始する。クライアント260は、サポートされるソフトウェア開発キット(SDK)を利用するアプリケーションを含んでよく、これは、トランザクション提案を生成するために利用可能なAPIを利用する。提案は、チェーンコード関数を呼び出して、データが台帳から読み出されること、もしくは台帳に書き込まれること(つまり、アセットについて新しいキーおよび値のペアを書き込むこと)またはその両方を実行できるようにすることを求める要求である。SDKは、トランザクション提案を、適切に設計された形式(例えば、遠隔手続呼び出し(RPC)上のプロトコル・バッファ)にパッケージ化し、クライアントの暗号クレデンシャルを取得し、トランザクション提案についての一意の署名を生成するためのシム(shim)として機能を果たすことができる。
それに応答して、エンドース・ピア・ノード281は、(a)トランザクション提案が適切に形成されていること、(b)トランザクションが過去にすでに送出されたものではないこと(リプレイ・アタック保護)、(c)署名が有効であること、および(d)送出者(この例では、クライアント260)が、そのチャネル上で提案される操作を実行するために適切に認証されていること、を検証することができる。エンドース・ピア・ノード281は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として取ってもよい。チェーンコードは、その後、現在の状態データベースに対して実行され、応答値、読み出しセットおよび書き込みセットを含むトランザクション結果を生成する。しかしながら、この時点では、台帳に対する更新は行われない。292において、値のセットが、エンドース・ピア・ノード281の署名とともに、提案応答292として、クライアント260のSDKに返され、このSDKは、アプリケーションが取得するためにペイロードをパース(parse)する。
それに応答して、クライアント260のアプリケーションは、エンドース・ピアの署名を検査/検証し、提案応答を比較して、提案応答が同一であるか否かを判定する。チェーンコードがただ台帳に照会した場合、アプリケーションは、照会応答を検査するであろうし、典型的には、トランザクションを順序付けサービス・ノード284に送出しないであろう。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けサービス・ノード284に送出することを意図する場合、アプリケーションは、送出することの前に、指定されたエンドースメント・ポリシーが満たされるかどうか(すなわち、トランザクションに必要な全てのピア・ノードがトランザクションをエンドースしたか)を判定する。ここで、クライアントは、トランザクションの複数の当事者のうちの1つのみを含んでもよい。この場合、各クライアントは、それ自身のエンドース・ノードを含んでよく、各エンドース・ノードがトランザクションをエンドースする必要があるであろう。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、あるいは別の方法でエンドースされていないトランザクションを転送する場合でさえ、エンドースメント・ポリシーは、コミット検証フェーズにおいて、ピアによって未だ強制され、守られるであろう。
成功裏な検査の後、ステップ293で、クライアント260は、エンドースメントをトランザクションに組み込み、トランザクション・メッセージ内でトランザクション提案およびトランザクション応答を順序付けノード284へブロードキャストする。トランザクションは、読み出しセット、書き込みセット、エンドース・ピアの署名およびチャネルIDを含んでもよい。順序付けノード284は、その動作を実行するために、トランザクションの内容全体を検査する必要はなく、代わりに、順序付けノード284は、単に、ネットワーク内の全てのチャネルからトランザクションを受信し、チャネル別に経時的に順序付けし、チャネル別のトランザクションのブロックを作成することができる。
トランザクションのブロックは、チャネル上で順序付けノード284から全てのピア・ノード281~283に配信される。ブロック内のトランザクション294は、妥当性確認されて、任意の署名ポリシーが満たされることを保証し、かつ、読み出しセットがトランザクションの実行によって生成されて以来、読み出しセットの変数について台帳の状態に変更がないことを保証する。ブロック内のトランザクションは、有効であるまたは無効であるとしてタグ付けされる。さらに、ステップ295において、各ピア・ノード281~283は、チャネルのチェーンにブロックを追記し、正当なトランザクションごとに、現在の状態データベースに書き込みセットがコミットされる。イベントが発行されて、トランザクション(呼び出し)が変更不可能にチェーンに追記されたことをクライアント・アプリケーションに通知し、かつ、トランザクションが有効であったかまたは無効であったかを通知する。
図3Aは、分散型で非中葉集権型のピア・ツーピアのアーキテクチャを特徴とする、許可型ブロックチェーン・ネットワーク300の例を示す。この例では、ブロックチェーンのユーザ302は、許可型ブロックチェーン304に対しトランザクションを開始することができる。この例では、トランザクションは、デプロイ、呼び出し、または照会であってよく、SDKを利用するクライアント・サイド・アプリケーションを通して、例えばAPIなどを直接介して発行されてもよい。ネットワークは、監査人などの規制者(regulator)306にアクセスを提供してもよい。ブロックチェーン・ネットワークの運用者308は、規制者306を「監査人」として登録したり、ブロックチェーンのユーザ302を「クライアント」として登録したりといったように、メンバの認可を管理する。監査人は、台帳への照会のみに限定されてもよく、一方、クライアントには、特定の種類のチェーンコードのデプロイ、呼び出しおよび照会を行う認可が与えられてもよい。
ブロックチェーンの開発者310は、チェーンコードおよびクライアント・サイド・アプリケーションを書く。ブロックチェーン開発者310は、インタフェースを介して、ネットワークにチェーンコードを直接デプロイしてもよい。従来型のデータ・ソース312からのクレデンシャルをチェーンコードに含めるため、開発者310は、帯域外接続(out-of-band)を使用してデータにアクセスしてもよい。この例では、ブロックチェーンのユーザ302は、ピア・ノード314を介して、許可型ブロックチェーン304に接続する。任意のトランザクションを開始する前に、ピア・ノード314は、ユーザの登録およびトランザクション証明書を、ユーザの役割および許可を管理する認証局316から取得する。いくつかの場合、ブロックチェーンのユーザは、許可型ブロックチェーン304上でトランザクションを行うために、それらのデジタル証明書を所有しなければならない。一方、チェーンコードを動作させようとするユーザは、従来型のデータ・ソース312上で彼らのクレデンシャルを検証することを要求される可能性がある。ユーザの認証を確認するために、チェーンコードは、従来型の処理プラットフォーム318を介して、このデータへの帯域外接続を用いてもよい。
図3Bは、分散型で非中葉集権型のピア・ツーピアのアーキテクチャを特徴とする、許可型ブロックチェーン・ネットワーク320の別の例を示す。この例では、ブロックチェーンのユーザ322は、許可型ブロックチェーン324にトランザクションを送出することができる。この例では、トランザクションは、デプロイ、呼び出しまたは照会であってよく、SDKを利用するクライアント・サイド・アプリケーションを通して、例えばAPIなどを直接介して発行されてもよい。ネットワークは、監査人などの規制者326にアクセスを提供することができる。ブロックチェーン・ネットワークの運用者328は、規制者326を「監査人」として登録したり、ブロックチェーンのユーザ322を「クライアント」として登録したりするといったようにメンバの認可を管理する。監査人は、台帳への照会のみに制限されてもよく、一方、クライアントには、特定の種類のチェーンコードのデプロイ、呼び出しおよび問い合わせを行う認可が与えられてもよい。
ブロックチェーン開発者330は、チェーンコードおよびクライアント・サイド・アプリケーションを書く。ブロックチェーン開発者330は、インタフェースを介して、ネットワークにチェーンコードを直接デプロイしてもよい。従来型のデータ・ソース332からのクレデンシャルをチェーンコードに含めるため、開発者330は、帯域外接続を使用してデータにアクセスしてもよい。この例では、ブロックチェーンのユーザ322は、ピア・ノード334を介して、ネットワークに接続する。任意のトランザクションを開始する前に、ピア・ノード334は、ユーザの登録およびトランザクション証明書を認証局336から取得する。いくつかの場合、ブロックチェーンのユーザは、許可型ブロックチェーン324上でトランザクションを行うために、それらのデジタル証明書を有しなければならない。一方、チェーンコードを動作させようとするユーザは、従来型のデータ・ソース332上で彼らのクレデンシャルを検証することを要求される可能性がある。ユーザの認証を確認するために、チェーンコードは、従来型の処理プラットフォーム338を介して、このデータへの帯域外接続を用いてもよい。
いくつかの実施形態においては、本明細書のブロックチェーンは、非許可型ブロックチェーンであってもよい。参加に許可を必要とする許可型ブロックチェーンとは対照的に、誰でも非許可型ブロックチェーンに参加することができる。例えば、非許可型ブロックチェーンに参加するためには、ユーザは、個人のアドレスを生成し、トランザクションを送出し、ひいては、台帳にエントリを追加することによってネットワークと対話を開始することができる。加えて、全ての当事者は、システム上でノードを実行させ、マイニング・プロトコルを使用して、トランザクションを検証するのを支援する選択肢を有する。
図3Cは、複数のノード354を含む非許可型ブロックチェーン352によってトランザクションが処理されるプロセス350を示す。送信者356は、非許可型ブロックチェーン352を介して、受信者358に対し、支払または他の形式の価値(例えば、権利証書、医療記録、契約、商品、サービス、またはデジタル記録にカプセル化され得る他のアセット)を送信することを望む。一実施形態においては、送信者デバイス356および受信者デバイス358の各々は、ユーザ・インタフェース制御およびトランザクションパラメータ表示を提供する(ブロックチェーン352に関連する)デジタルウォレットを有してもよい。これに応答して、トランザクションは、ノード354へブロックチェーン352全体にブロードキャストされる。ブロックチェーン352のネットワーク・パラメータに依存して、ノードは、非許可型ブロックチェーン352の作成者によって確立されたルール(これは事前定義または動的に割り当てられてもよい)に基づいて、トランザクションを検証する(360)。例えば、これは、関与する当事者の同一性を検証することを含んでもよい。トランザクションは、即時検証されてもよく、または、他のトランザクションと共にキューに置かれて、ノード354は、ネットワークのルールのセットに基づいてトランザクションが有効であるかどうかを判定する。
構造362においては、有効なトランザクションがブロックに形成され、ロック(ハッシュ)で封印される。このプロセスは、ノード354のうちのマイニング・ノードによって実行されてもよい。マイニング・ノードは、マイニングし、非許可型ブロックチェーン352用のブロックを生成するための特化した追加のソフトウェアを利用することができる。各ブロックは、ネットワークによって合意されたアルゴリズムを使用して作成されたハッシュ(例えば、256ビット数など)によって識別することができる。各ブロックは、ヘッダ、チェーンにおける前ブロックのヘッダのハッシュへのポインタまたは参照および有効なトランザクションのグループを含んでもよい。前ブロックのハッシュへの参照は、ブロックのセキュアな独立チェーンの作成に関連付けられる。
ブロックをブロックチェーンに追加できる前に、ブロックは、妥当性確認されなければならない。非許可型ブロックチェーン352のための妥当性検証は、ブロックのヘッダから導出されるパズルへの解である、プルーフ・オブ・ワーク(PoW)を含んでもよい。図3Cの例には示されないが、ブロックを妥当性検証する別の処理は、プルーフ・オブ・ステークである。アルゴリズムが数理的な問題を解くマイナに報酬を与えるプルーフ・オブ・ワークとは異なり、プルーフ・オブ・ステークでは、新しいブロックの作成者が、ステークとも参照されるその富に依存して決定論的なやり方で選ばれる。そして、選択された/選ばれたノードによって類似のプルーフが実行される。
マイニング364では、ノードは、解がネットワーク幅の対象を満たすまで、1つの変数に増分変化を加えることによってブロックを解くことを試みる。これにより、PoWが作成され、正しい回答が保証される。言い換えれば、潜在的な解が、問題を解く際に計算資源が使い尽くされたことを証明しなければならない。いくつかの種類の非許可型ブロックチェーンでは、マイナには、ブロックを正しく採掘することに対して、価値(例えば、コインなど)が与えられてもよい。
ここで、攻撃者は、1つのブロックの変更が受け入れられるためには、後続の全てのブロックを変更しなければならないため、PoWプロセスは、ブロックのチェーン化と並んで、ブロックチェーンの変更を極めて困難なものとする。さらに、新しいブロックが採掘されると、ブロックの変更の困難性は増大し、後続するブロックの数が増加する。配信366では、成功裏に妥当性確認されたブロックは、非許可型ブロックチェーン352を通して配信され、全てのノード354は、非許可型ブロックチェーン352の監査可能な台帳である大多数のチェーンにブロックを追加する。さらに、送信者356によって送出されたトランザクションの価値は、受信者デバイス358のデジタルウォレットに預け入れられるか、他の方法で移転される。
図4Aは、例示的な実施形態による、ブロックチェーンに基づく競合フリー文書バージョン制御の例示的な方法のフロー図400を示す。図4Aを参照すると、方法400は、以下に説明するステップのうちの1または複数を含んでもよい。
図4Aは、文書プロセッサ・ノード102(図1A参照)によって実行される、例示的な方法のフローチャートを示す。図4Aに示される方法400は、追加の動作を含んでもよく、また、そこで説明された動作のいくつかが、方法400の範囲から逸脱することなく、削除され、もしくは修正され、またはその両方がなされてもよいことが理解されるべきである。方法400の説明は、また、説明の目的で図1Aに示された特徴を参照しながらなされる。特に、文書プロセッサ・ノード102のプロセッサ104は、方法400に含まれる動作の一部または全部を実行することができる。
図4Aを参照すると、ブロック412においては、プロセッサ104は、文書識別子(ID)とともにファイルを受信してもよい。ブロック414においては、プロセッサ104は、ファイルのハッシュを生成してもよい。ブロック416においては、プロセッサ104は、ファイルのハッシュ、文書IDおよび文書のロケータを包含するブロックチェーン・トランザクションを送出してもよい。ブロック418においては、プロセッサ104は、文書アクセス許可を参加ノードに割り当ててもよい。ブロック420においては、プロセッサ104は、IDに基づく文書のバージョンを参加ノードに通知してもよい。
図4Bは、例示的な実施形態による例示的な方法のフロー図450を示す。図4Bを参照すると、方法450は、以下のステップのうちの1つまたは複数を含んでもよい。ブロック452においては、プロセッサ104は、チェーン外ノードにファイルを提供して、ローカル・ファイル・ストアに格納させてもよい。ブロック454においては、プロセッサ104は、ブロックチェーンの台帳に格納されていない、IDに基づく文書の所有権の割り当てを受け取ってもよい。ブロック456においては、プロセッサ104は、ブロックチェーンの台帳に文書が格納されている場合、検証を提供してもよい。文書のロケータは、暗号化されたユニフォーム・リソース・ロケータ(URL)であってもよいことに留意されたい。ブロック458においては、プロセッサ104は、複数の参加ノードが同一のIDに基づく文書を送出することに応答したブロックチェーン・トランザクション順序に基づいて、文書のバージョニングを保証してもよい。ブロック459においては、プロセッサ104は、参加ノード間で競合フリーな文書所有権を提供してもよい。
図4Cは、例示的な実施形態による、ブロックチェーンに基づく競合フリー文書バージョン制御の例示的な方法のフロー図460を示す。図4Cを参照すると、方法460は、以下に説明するステップのうちの1または複数を含んでもよい。
図4Cは、ブロックチェーン・プロセッサ・ノード102(図1B参照)によって実行される例示的な方法のフローチャートを示す。図4Cに示された方法460は、追加の動作を含んでもよく、また、ここで説明される動作のいくつかは、方法460の範囲から逸脱することなく削除され、もしくは修正され、またはその両方がなされてもよいことが理解されるべきである。方法460の説明は、説明のために図1Bに示された特徴を参照しながらなされる。特に、ブロックチェーン・プロセッサ・ノード102のプロセッサ104は、方法460に含まれる動作の一部または全てを実行してもよい。
図4Cを参照すると、ブロック462においては、プロセッサ104は、文書IDを包含する文書アクセス要求をユーザノードから受信してもよい。ブロック464においては、プロセッサ104は、文書IDに基づいて、文書の暗号化されたURLと文書のソース・ハッシュとをブロックチェーン台帳から獲得してもよい。ブロック466においては、プロセッサ104は、文書の復号されたURLに基づいて、文書所有者ノードのストレージから受信された文書を検証してもよい。ブロック468においては、プロセッサ104は、検証に応答して、文書所有者ノードのストレージから受信した文書をユーザノードに送信してもよい。
図4Dは、例示的な実施形態による例示的な方法のフロー図470を示す。図4Dを参照すると、方法470は、以下のステップのうちの1または複数を含んでもよい。文書アクセス要求は、文書所有者のインスタンスIDを含んでもよい。ブロック472においては、プロセッサ104は、文書所有者のインスタンスIDに基づいて、文書所有者ノードのストレージから文書を受信するための要求を送信してもよい。要求は、文書の暗号化されたURLと、ブロックチェーン・プロセッサ・ノードの公開鍵とを含んでもよいことに留意されたい。ブロック474においては、プロセッサ104は、文書所有者ノードによるブロックチェーン・プロセッサ・ノードの検証に応答して、文書所有者ノードから文書を受信してもよい。ブロック476においては、プロセッサ104は、受信された文書のハッシュを文書のソース・ハッシュと比較することによって、受信された文書を検証してもよい。ブロック478においては、プロセッサ104は、文書のURLを復号してもよい。
図4Eは、例示的な実施形態による、ブロックチェーンに基づく競合フリー文書バージョニングの例示的な方法のフロー図480を示す。図4Eを参照すると、方法480は、以下に説明するステップのうちの1または複数を含んでもよい。
図4Eは、文書プロセッサ・ノード102’’(図1C参照)によって実行される例示的な方法のフローチャートを示す。図4Eに示された方法480は、追加の動作を含んでもよく、また、そこで説明される動作のいくつかが、方法480の範囲から逸脱することなく削除され、もしくは修正され、または両方がなされてもよいことが理解されるべきである。方法480の説明は、説明のために図1Cに示された特徴を参照しながらなされる。特に、文書プロセッサ・ノード102’’のプロセッサ104は、方法480に含まれる動作の一部または全部を実行してもよい。
図4Eを参照すると、ブロック482においては、プロセッサ104は、文書と、ブロックチェーン・トランザクションに関連する文書のバージョンの所有者を識別する署名付きデジタル受領書とを受信してもよい。ブロック484においては、プロセッサ104は、署名されたデジタル受信に基づいて、文書のバージョンを検証してもよい。ブロック486においては、プロセッサ104は、ブロックチェーンの台帳に記録された文書のハッシュに基づいて、競合フリー文書バージョニングを可能にするスマート・コントラクトを実行してもよい。
図4Fは、例示的な実施形態による例示的な方法のフロー図490を示す。図4Fを参照すると、方法490は、以下のステップのうちの1または複数を含んでもよい。文書プロセッサが、署名付きデジタル受領書に基づいて、ブロックチェーン外部との文書の改ざん防止機構付きの交換を保証してもよいことに留意されたい。
ブロック492においては、プロセッサ104は、文書のハッシュを生成してもよい。ブロック494においては、プロセッサ104は、署名付きデジタル受領書および文書のハッシュを、ブロックチェーンの台帳に記録された文書の詳細と比較してもよい。ブロック496においては、プロセッサ104は、文書のバージョンを検証することに応答して、ブロックチェーン上に検証データを記録してもよい。ブロック498においては、プロセッサ104は、ブロックチェーン台帳上で文書のアクセスログを維持してもよい。ブロック499においては、プロセッサ104は、文書上で実行された読み取り、更新および検証の動作を含むアクセスログのためのイベントを生成してもよい。
図5Aは、例示の実施形態による種々の動作を実行するように構成された物理インフラストラクチャ510を含む例示のシステム500を示す。図5Aを参照すると、物理インフラストラクチャ510は、モジュール512およびモジュール514を含む。モジュール514は、ブロックチェーン520およびスマート・コントラクト530(これは、ブロックチェーン520に存在してもよい)を含み、これらは、例示の実施形態のいずれかに含まれている(モジュール512における)動作ステップ508のいずれかを実行することができる。ステップ/動作508は、説明されたまたは示された実施形態の1以上を含んでもよく、1または複数のスマート・コントラクト530もしくはブロックチェーン520またはその両方から書き込まれまたは読み出される出力または書き込まれた情報を表す。物理インフラストラクチャ510、モジュール512およびモジュール514は、1または複数のコンピュータ、サーバ、プロセッサ、メモリもしくは無線通信デバイスまたはその組み合わせを含んでもよい。さらに、モジュール512およびモジュール514は、同一のモジュールであってもよい。
図5Bは、例示の実施形態による、種々の動作を実行するように構成された別の例示のシステム540を示す。図5Bを参照すると、システム540は、モジュール512およびモジュール514を含む。モジュール514は、ブロックチェーン520と、スマート・コントラクト530(ブロックチェーン520に存在してもよい)とを含み、これらは、例示の実施形態のいずれかに含まれる(モジュール512における)動作ステップ508のいずれかを実行することができる。ステップ/動作508は、説明されたまたは示された実施形態の1以上を含んでもよく、1または複数のスマート・コントラクト530もしくはブロックチェーン520またはその両方から書き込まれまたは読み出される出力または書き込まれた情報を表す。モジュール512およびモジュール514は、1または複数のコンピュータ、サーバ、プロセッサ、メモリもしくは無線通信デバイスまたはその組み合わせを含んでもよい。さらに、モジュール512およびモジュール514は、同一のモジュールであってもよい。
図5Cは、例示の実施形態による、契約する当事者間でのスマート・コントラクトの構成を利用するように構成された例示のシステムおよびブロックチェーン上でスマート・コントラクト条項を執行するように構成された仲介サーバを示す。図5Cを参照すると、構成550は、通信セッション、アセット移転セッションまたはプロセスあるいは手順を表してよく、これらは、1または複数のユーザ・デバイス552もしくは556またはその両方を明示的に識別する、スマート・コントラクト530によって駆動される。スマート・コントラクトの実行、動作および実行結果は、サーバ554によって管理されてもよい。スマート・コントラクト530の内容は、スマート・コントラクトのトランザクションの当事者であるエンティティ552および556のうちの1以上によるデジタル署名を要求してもよい。スマート・コントラクト実行の結果は、ブロックチェーン・トランザクションとしてブロックチェーン520に書き込まれてもよい。スマート・コントラクト530は、1または複数のコンピュータ、サーバ、プロセッサ、メモリもしくは無線通信デバイスまたはその組み合わせ上に存在し得るブロックチェーン520上に存在する。
図5Dは、例示の実施形態による、ブロックチェーンを含むシステム560を示す。図5Dの例を参照すると、アプリケーション・プログラミング・インタフェース(API)ゲートウェイ562が、ブロックチェーンのロジック(例えば、スマート・コントラクト530または他のチェーンコード)およびデータ(例えば、分散台帳など)にアクセスするための共通のインタフェースを提供する。この例では、APIゲートウェイ562は、1または複数のエンティティ552,556をブロックチェーン・ピア(つまりサーバ554)に接続することによって、ブロックチェーン上でトランザクション(呼び出し、照会など)を行うための共通のインタフェースである。ここで、サーバ554は、世界状態および分散台帳のコピーを保持するブロックチェーン・ネットワーク・ピア・コンポーネントであり、クライアント552および556が、世界状態状のデータを照会し、ブロックチェーン・ネットワークにトランザクションを送出することを可能とし、ブロックチェーン・ネットワークでは、エンドース・ピアが、スマート・コントラクト530およびエンドースメント・ポリシー応じて、スマート・コントラクト530を実行するであろう。
上記実施形態は、ハードウェアにおいて、プロセッサにより実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、またはこれらの組み合わせにおいて実装されてもよい。コンピュータ・プログラムは、ストレージ媒体などのコンピュータ可読媒体に具現化されてもよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(RAM)、フラッシュ・メモリ、リード・オンリー・メモリ(ROM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROM)、電子的消去可能プログラマブル・リード・オンリー・メモリ(EEPROM)、レジスタ、ハード・ディスク、リムーバブル・ディスク、コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、または当該技術分野において知られた任意のその他の形態のストレージ媒体に存在してもよい。
例示的なストレージ媒体は、プロセッサに接続されて、プロセッサがストレージ媒体から情報を読み出し、ストレージ媒体に情報を書き込むことができるようにしてもよい。代替においては、ストレージ媒体は、プロセッサと統合されてもよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路(ASIC)において存在してもよい。代替においては、プロセッサおよびストレージ媒体は、個別のコンポーネントとして存在してもよい。
図6Aは、例示の実施形態による、分散台帳620に新しいブロックが追加されるプロセス600を示し、図6Bは、例示の実施形態による、ブロックチェーンのための新しいデータブロック構造630の内容を示す。図6Aを参照すると、クライアント(図示せず)は、ブロックチェーン・ノード611、612もしくは613またはその組み合わせにトランザクションを送出してもよい。クライアントは、ブロックチェーン620上で活動を実行するための任意のソースから受信した命令であってもよい。一例として、クライアントは、ブロックチェーンに対してトランザクションを提案するために、デバイス、人またはエンティティのような、要求者に代理して動作するアプリケーションであってもよい。複数のブロックチェーン・ピア(例えば、ブロックチェーン・ノード611,612,613)は、ブロックチェーン・ネットワークの状態および分散台帳620のコピーを維持してもよい。異なる種類のブロックチェーン・ノード/ピアがブロックチェーン・ネットワーク内に存在してもよく、これには、クライアントによって提案されたトランザクションをシミュレートし、エンドースするエンドース・ピアと、エンドースメントを検証し、トランザクションの妥当性確認し、トランザクションを分散台帳620にコミットするコミット・ピアが含まれる。この例では、ブロックチェーン・ノード611,612,613は、エンドーサ・ノード、コミッタ・ノードまたはその両方の役割を果たすことができる。
分散台帳620は、変更不可能な順序付けられたレコードをブロックに格納するブロックチェーンと、ブロックチェーン622の現在の状態(現在の世界状態)を維持する状態データベース624とを含む。チャネル毎に1つの分散台帳620が存在してもよく、各ピアは、それがメンバであるチャネルごとに分散台帳620のコピーを維持する。ブロックチェーン622は、各ブロックがN個のトランザクションのシーケンスを包含するハッシュ・リンク・ブロックとして構造化されたトランザクション・ログである。ブロックは、図6Bに示すような種々のコンポーネントを含んでもよい。(図6Aの矢印で示す)ブロックのリンクは、現在のブロックのブロックヘッダ内に先行するブロックのヘッダのハッシュを追加することによって生成されてもよい。このようにして、ブロックチェーン622上の全てのトランザクションは、順序付けられ、ハッシュリンクを破壊することなくブロックチェーン・データを改ざんできないように暗号的にリンクされる。さらに、リンクに起因して、ブロックチェーン622内の最新のブロックは、それ以前に来たすべてのトランザクションを表す。ブロックチェーン622は、追記のみのブロックチェーンのワークロードをサポートするピア・ファイル・システム(ローカルまたはアタッチド・ストレージ)上に格納されてもよい。
ブロックチェーン622および分散台帳622の現在の状態は、状態データベース624に格納されてもよい。ここで、現在の状態データは、ブロックチェーン622のチェーン・トランザクション・ログにこれまで含まれた全てのキーに対する最新の値を表す。チェーンコード呼び出し(invocation)は、状態データベース624における現在の状態に対しトランザクションを実行する。これらのチェーンコードの相互作用を極めて効率的にするために、全てのキーの最新の値が状態データベース624に格納される。状態データベース624は、ブロックチェーン622のトランザクション・ログに索引付けされたビューを含んでもよく、それは、したがって、任意の時点でチェーンから再生成することができる。状態データベース624は、トランザクションを受領する前に、ピアが起動する際に自動的に回復される(または必要に応じて生成される)。
エンドース・ノードは、クライアントからトランザクションを受信し、シミュレートされた結果に基づいて、トランザクションをエンドースする。エンドース・ノードは、トランザクション提案をシミュレートするスマート・コントラクトを保持する。エンドース・ノードがトランザクションをエンドースすると、エンドース・ノードは、エンドース・ノードからの署名された応答であり、クライアント・アプリケーションにシミュレートされたトランザクションのエンドースメントを示すトランザクション・エンドースメントを作成する。トランザクションをエンドースする方法は、チェーンコードで指定されてもよいエンドースメント・ポリシーに依存する。エンドースメント・ポリシーの一例は、”過半数のエンドース・ピアがトランザクションをエンドースしなければならない”というものである。異なるチャネルが、異なるエンドースメント・ポリシーを有していてもよい。エンドースされたトランザクションは、クライアント・アプリケーションによって、順序付けサービス610に転送される。
順序付けサービス610は、エンドースされたトランザクションを受け付け、それらをブロックに順序付けし、ブロックをコミット・ピアに配信する。例えば、順序付けサービス610は、トランザクションの閾値に達した場合、タイマーがタイムアウトした場合または他の条件で新しいブロックを開始してもよい。図6Aの例では、ブロックチェーン・ノード612は、ブロックチェーン620上に格納するための新しいデータ・新しいデータブロック630を受信するコミット・ピアである。ブロックチェーン内の第1のブロックは、起源ブロック(genesis block)とも参照され、起源ブロックは、ブロックチェーンに関する情報、そのメンバ、それに格納されたデータなどを含む。
順序付けサービス610は、オーダラのクラスタから構成されていてもよい。順序付けサービス610は、トランザクション、スマート・コントラクトを処理せず、または共有台帳を維持しない。むしろ、順序付けサービス610は、エンドースされたトランザクションを受領することができ、それらのトランザクションが分散台帳620にコミットされる順序を特定する。ブロックチェーン・ネットワークのアーキテクチャは、”順序付け”の特定の実現(例えば、Solo、Kafka、BFTなど)がプラグ可能なコンポーネントとなるように設計されてもよい。
トランザクションは、分散台帳620に一貫した順序で書き込まれる。トランザクションの順序は、状態データベース624に対する更新が、これらがネットワークにコミットされた場合に有効となることを保証するように確立される。暗号パズルを解くことまたはマイニングによって順序付けが生じる暗号通貨ブロックチェーン・システム(例えば、Bitcoin(登録商標)など)とは異なり、この例においては、分散台帳620の当事者は、そのネットワークに最適な順序付けメカニズムを選択することができる。
順序付けサービス610が新しいデータブロック630を初期化する場合、新しいデータブロック630が、コミット・ピア(例えば、ブロックチェーン・ノード611,612,613)にブロードキャストされてもよい。これに応答して、各コミット・ピアは、読み出しセットおよび書き込みセットが依然として状態データベース624内の現在の世界の状態に適合することを確認することによって、新しいデータブロック630内のトランザクションを妥当性確認する。具体的には、コミット・ピアは、エンドーサがトランザクションをシミュレートしたときに存在した読み出しデータが、状態データベース624における現在の世界の状態と同一であるか否かを判定することができる。コミット・ピアがトランザクションを妥当性確認すると、トランザクションは、分散台帳620上のブロックチェーン622に書き込まれ、状態データベース624は、読み出し-書き込みセットからの書き込みデータで更新される。トランザクションが失敗した場合、すなわち、コミット・ピアが、読み出し-書き込みセットが状態データベース624内の現在の世界の状態に一致しないと判断した場合は、ブロックに順序付けられたトランザクションは、そのブロックにまだ含まれているが、無効であるとマークされ、状態データベース624は、更新されないであろう。
図6Bを参照すると、分散台帳620のブロックチェーン622に格納される新しいデータブロック630(データブロックとも参照される)は、ブロックヘッダ640、ブロックデータ650およびブロック・メタデータ660のような複数のデータ・セグメントを含んでもよい。新しいデータブロック630およびその内容のような、図6Bに示されるような種々の描写されたブロックおよびこれらの内容は、単なる例であり、例示の実施形態の範囲を限定することを意味しないことが理解されるべきである。新しいデータブロック630は、ブロックデータ650内にN(例えば、1、10、100、500、1000、2000、3000など)個のトランザクションのトランザクション情報を格納してもよい。新しいデータブロック630は、ブロックヘッダ640内に(例えば、図6Aのブロックチェーン622上の)前のブロックへのリンクを含んでもよい。特に、ブロックヘッダ640は、前のブロックのヘッダのハッシュを含んでもよい。ブロックヘッダ640は、固有のブロック番号、新しいデータブロック630のブロックデータ650のハッシュなどを含んでもよい。新しいデータブロック630のブロック番号は、一意であり、ゼロから開始して増分/連続の順序のような種々の順序で割り当てられてもよい。
ブロックデータ650は、新しいデータブロック630内に記録された各トランザクションのトランザクション情報を格納してもよい。例えば、トランザクション・データは、トランザクションの種類、バージョン、タイムスタンプ、分散台帳620のチャネルID、トランザクションID、エポック、ペイロード可視性、チェーンコードのパス(デプロイtx)、チェーンコードの名前、チェーンコードのバージョン、入力(チェーンコードおよび関数)、公開鍵および証明書などのクライアント(作成者)識別子、クライアントの署名、エンドーサの識別子、エンドーサの署名、提案ハッシュ、チェーンコード・イベント、応答ステータス、名前空間、読み出しセット(キーおよびトランザクションによって読み出されたバージョンのリストなど)、書き込みセット(キーおよび値のリストなど)、開始キー、終了キー、キーのリスト、マークル木照会サマリなどのうちの1以上を含んでもよい。トランザクション・データは、N個のトランザクションの各々について格納されていてもよい。
いくつかの実施形態においては、ブロックデータ650は、また、ブロックチェーン622内のブロックのハッシュリンクされたチェーンに付加的情報を加える新規データ662を格納してもよい。付加的情報は、本明細書で説明されまたは図示されるステップ、特徴、プロセスもしくは動作またはその組み合わせのうちの1または複数を含む。したがって、新規データ662は、分散台帳620上のブロックの変更不可能なログに格納することができる。このような新規データ662を格納する利点の一部は、本明細書に開示されまた図示された種々の実施形態に反映される。図6Bにおいては新規データ662がブロックデータ650内で示されているが、ブロックヘッダ640またはブロック・メタデータ660内に配置されてもよい。
ブロック・メタデータ660は、メタデータの複数フィールド(例えば、バイト配列などとして)を格納することができる。メタデータ・フィールドは、ブロック作成での署名、最後の構成ブロックへの参照、ブロック内の有効なトランザクションおよび無効なトランザクションを識別するトランザクション・フィルタ、ブロックを順序付ける順序付けサービスの存続する最後のオフセットなどを含んでもよい。署名、最後の構成ブロックおよびオーダラのメタデータは、順序付けサービス610によって追加されてもよい。一方、ブロックのコミッター(ブロックチェーン・ノード612など)は、エンドースメント・ポリシー、読み出し/書き込みセットの妥当性確認などに基づいて有効/無効情報を追加することができる。トランザクション・フィルタは、ブロックデータ650におけるトランザクションの数に等しいサイズのバイト配列と、トランザクションが有効/無効であるか否かを識別する妥当性確認コードとを含んでもよい。
図6Cは、本明細書に記載された実施形態による、デジタル・コンテンツ用のブロックチェーン670の実施形態を示す。デジタル・コンテンツは、1または複数のファイルおよび関連情報を含んでもよい。ファイルは、メディア、画像、ビデオ、オーディオ、テキスト、リンク、グラフィックス、アニメーション、ウェブページ、文書、または他の形式のデジタル・コンテンツを含んでもよい。変更不可能なブロックチェーンの追記のみの側面は、デジタル・コンテンツの完全性、有効性および真正性を保護するためのセーフガードとして機能し、証拠能力規則(admissibility rules)が適用される訴訟手続き、または、証拠が考慮されたり、または他の方法でデジタル情報の提示および使用に関心があったりする他のセッティングにおける使用に適している。この場合、デジタル・コンテンツは、デジタル証拠と参照されることがある。
ブロックチェーンは、種々の方法で形成することができる。一実施形態においては、デジタル・コンテンツがブロックチェーン自体に含まれ、ブロックチェーン自体からアクセスされてもよい。例えば、ブロックチェーンの各ブロックは、関連するデジタル・コンテンツと並行して参照情報(例えば、ヘッダ、値など)のハッシュ値を格納してもよい。ハッシュ値および関連するデジタル・コンテンツは、次いで、一緒に暗号化されてもよい。よって、ブロックチェーン内の各ブロックを復号することにより、各ブロックのデジタル・コンテンツがアクセスされてもよく、各ブロックのハッシュ値は、前のブロックを参照する基礎として使用されてもよい。これは次のように示すことができる:
一実施形態においては、デジタル・コンテンツは、ブロックチェーンに含まれなくてもよい。例えば、ブロックチェーンは、いずれのデジタル・コンテンツもなく、各ブロックの内容の暗号化されたハッシュを格納してもよい。デジタル・コンテンツは、元のファイルのハッシュ値に関連付けて他のストレージ領域またはメモリアドレスに格納されてもよい。他のストレージ領域は、ブロックチェーンを格納するために使用されるものと同一のストレージ・デバイスであってもよいし、異なるストレージ領域であってもよいし、別個のリレーショナル・データベースであってさえもよい。各ブロックのデジタル・コンテンツには、関心のあるブロックのハッシュ値を取得または照会し、実際のデジタル・コンテンツに対応して格納される、ストレージ領域において値を有するものをルックアップすることによって、参照またはアクセスすることができる。この操作は、例えば、データベースのゲートキーパーによって実行されてもよい。これは次のように示すことができる:
図6Cの例示の実施形態においては、ブロックチェーン670は、N≧1であるとして、順序付けされた順序で暗号的にリンクされた複数のブロック6781,6782,…678Nを含む。ブロック6781,6782,…678Nをリンクするために使用される暗号化は、複数の鍵付きまたは鍵なしのハッシュ関数のうちの任意のものであってもよい。一実施形態においては、ブロック6781,6782,…678Nは、ブロック内の情報に基づく入力からnビットの英数字出力(ここで、nは、256または他の数である)を生成するハッシュ関数を受ける。そのようなハッシュ関数の例としては、これらに限定されるものではないが、SHAタイプ(SHAは、Secured Hash Algorithmを意味する)アルゴリズム、マークル-ダンガード・アルゴリズム、HAIFAアルゴリズム、マークル木アルゴリズム、ノンスベースド・アルゴリズムおよび非衝突耐性PRFアルゴリズムが含まれる。別の実施形態においては、ブロック6781,6782,…678Nは、ハッシュ関数とは異なる関数で暗号的にリンクされていてもよい。以下の説明は、例えば、例えばSHA-2などのハッシュ関数を参照してなされる。
ブロックチェーン内のブロック6781,6782,…678Nの各々は、ヘッダと、ファイルのバージョンと、値とを含む。ヘッダおよび値は、ブロックチェーンにおけるハッシュ化の結果、各ブロックで異なる。一実施形態においては、値は、ヘッダに含められてもよい。以下により詳細に説明するように、ファイルのバージョンは、元のファイルであってもよいし、元のファイルの異なるバージョンであってもよい。
ブロックチェーンにおける第1ブロック6781は、起源ブロックと参照され、ヘッダ6721と、元のファイル6741と、初期値6761とを含む。起源ブロックおよび実際に後続するブロックで使用されるハッシュ・スキームは変化し得る。例えば、第1ブロック6781内の全ての情報をまとめて一度にハッシュ化してもよいし、第1ブロック6781の情報の各々または一部を別個にハッシュ化した後、別個にハッシュ化された部分のハッシュを行うようにしてもよい。
ヘッダ6721は、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易レベル、コンセンサス・プロトコル、持続時間、メディア・フォーマット、ソース、記述キーワードもしくは、(元のファイル6741もしくはブロックチェーンまたはその両方に関連する)他の情報、またはその組み合わせを含んでもよい1または複数の初期パラメータを含んでもよい。ヘッダ6721は、(例えばブロックチェーン・ネットワーク管理ソフトウェアによって)自動的に、またはブロックチェーン参加者によって手動で生成されてもよい。起源ブロックのヘッダ6721は、ブロックチェーン内の他のブロック6782~678Nのヘッダとは異なり、前ブロックを参照しないが、単に前のブロックが存在しないためである。
起源ブロック内の元のファイル6741は、例えば、ブロックチェーンに含める前の処理とともに、またはそれなしで、デバイスによってキャプチャされたデータであってもよい。元のファイル6741は、デバイス、メディアソースまたはノードからシステムのインタフェースを介して受信される。元のファイル6741は、メタデータに関連付けられ、メタデータは、例えば、ユーザ、デバイスもしくはシステム・プロセッサまたはその組み合わせによって、手動または自動のいずれかで生成される。メタデータは、元のファイル6741に関連する第1ブロック6781に含まれていてもよい。
起源ブロック内の値6761は、元のファイル6741の1または複数の固有の属性に基づいて生成された初期値である。一実施形態においては、1または複数の固有の属性は、元のファイル6741のハッシュ値と、元のファイル6741のメタデータと、ファイルに関連付けられた他の情報とを含んでもよい。一実施形態においては、初期値6761は、以下の固有の属性に基づくことができる:
(1)元のファイルについてSHA-2で計算されたハッシュ値
(2)発生デバイスID
(3)元のファイルの開始タイムスタンプ
(4)元のファイルの初期格納位置
(5)元のファイルおよび関連メタデータを現在管理するソフトウェアのためのブロックチェーン・ネットワーク・メンバID
(1)元のファイルについてSHA-2で計算されたハッシュ値
(2)発生デバイスID
(3)元のファイルの開始タイムスタンプ
(4)元のファイルの初期格納位置
(5)元のファイルおよび関連メタデータを現在管理するソフトウェアのためのブロックチェーン・ネットワーク・メンバID
ブロックチェーン内の他のブロック6782~678Nも、ヘッダと、ファイルと、値と有する。しかしながら、第1ブロック6721とは異なり、他のブロックのヘッダ6722~672Nの各々は、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、ただ前のブロックのヘッダのハッシュであってもよいし、前のブロック全体のハッシュ値であってもよい。先行するブロックのハッシュ値を残りのブロックの各々に含むことにより、矢印680で示すように、ブロック単位でN番目のブロックから起源ブロック(および関連する元のファイル)まで遡ってトレースを行い、監査可能で変更不可能な管理の連鎖(chain-of-custody)を確立することができる。
他のブロックにおけるヘッダ6722~672Nの各々は、他の情報、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易レベル、コンセンサス・プロトコル、もしくは(概して対応するファイルもしくはブロックチェーンまたはその両方に関連する)他のパラメータまたは情報またはその組み合わせを含んでもよい。
他のブロックにおけるファイル6742~674Nは、元のファイルと等しくてもよいし、例えば、実行される処理の種類に応じて、起源ブロックにおける元のファイルの変形バージョンであってもよい。実行される処理の種類は、ブロック毎に変化してもよい。処理は、例えば、情報の改定のような、先行するブロック内のファイルの任意の変更、または他の方法で、ファイルの内容を変更し、ファイルから情報を取り去り、もしくはファイルに情報を加えるもしくは追記することを含んでもよい。
追加的に、または代替的に、処理は、ただ前のブロックからファイルをコピーすること、ファイルの格納位置を変更すること、1または複数の先行するブロックからのファイルを解析すること、ファイルを一のストレージまたはメモリ位置から他へ移動すること、またはブロックチェーンのファイルもしくはその関連するメタデータまたはその両方に対するアクションを実行することを含んでもよい。ファイルを分析することを含む処理は、例えば、ファイルに関連する種々の分析結果、統計または他の情報を追記するか、含ませるかかまたは他の方法で関連付けることを含んでもよい。
他のブロック6762~676Nの各々における値は、固有の値であり、処理が実行される結果として、全て異なる。例えば、任意の1つのブロック内の値は、前ブロックにおける値の更新されたバージョンに対応する。更新は、値が割り当てられるブロックのハッシュに反映される。ブロックの値は、したがって、ブロック内で如何なる処理が行われたかの表示を提供し、また、ブロックチェーンを通して元のファイルに遡ってトレーシングすることを可能にする。このトレーシングにより、ブロックチェーン全体にわたるファイルの管理の連鎖が確認される。
例えば、ファイルに示された人物の同一性を保護するために、前のブロック内のファイルの部分が改訂され、遮断され(blocked out)またはピクセル化(pixelated)されるケースを考える。この場合、改訂されたファイルを含むブロックは、改訂されたファイルに関連付けられたメタデータ、例えば、どのように改訂が行われたか、誰が改訂を実行したか、改訂が生じたタイムスタンプなどを含むであろう。メタデータは、ハッシュ化されて値を形成することができる。ブロックについてのメタデータが、前ブロックにおける値を形成するためにハッシュ化された情報とは異なることを理由として、値は、互いに異なり、復号された場合に回復され得る。
一実施形態においては、以下のいずれか1つまたは複数が起こる場合に、前ブロックの値が、更新されて(例えば、計算された新しいハッシュ値となり)、現在のブロックの値を形成し得る。新しいハッシュ値は、この例示の実施形態においては、以下に示す情報の全部または一部をハッシュすることによって計算してもよい:
(a)ファイルが任意の方法で処理された場合(例えば、ファイルが改訂され、複製され、改変され、アクセスされ、または他のアクションが取られた場合)の新しくSHA-2で計算されたハッシュ値
(b)ファイルの新たな格納位置
(c)ファイルに関連して識別された新しいメタデータ
(d)一のブロックチェーン参加者から他のブロックチェーン参加者へのファイルのアクセスまたは制御の移転
(a)ファイルが任意の方法で処理された場合(例えば、ファイルが改訂され、複製され、改変され、アクセスされ、または他のアクションが取られた場合)の新しくSHA-2で計算されたハッシュ値
(b)ファイルの新たな格納位置
(c)ファイルに関連して識別された新しいメタデータ
(d)一のブロックチェーン参加者から他のブロックチェーン参加者へのファイルのアクセスまたは制御の移転
図6Dは、一実施形態による、ブロックチェーン690内のブロックの構造を表すことができる、ブロックの実施形態を示す。ブロックBlockiは、ヘッダ672iと、ファイル674iと、値676iとを含む。
ヘッダ672iは、前ブロックBlocki-1のハッシュ値と、追加の参照情報とを含み、追加の参照情報は、例えば、本明細書で議論する情報の種類(例えば、参照、特性、パラメータなどを含むヘッダ情報)の任意のものであってもよい。全てのブロックは、もちろん起源ブロックを除いて、前のブロックのハッシュを参照する。前のブロックのハッシュ値は、ただ前のブロックにおけるヘッダのハッシュであってもよいし、ファイルおよびメタデータを含む前のブロックにおける情報の全部または一部のハッシュであってもよい。
ファイル674iは、順に、Data1、Data2,…DataNのように複数のデータを含む。データには、データに関連付けられえた内容もしくは特性またはその両方を記述する、Metadata1,Metadata2,…,MetadataNといったメタデータがタグ付けされる。例えば、各データのメタデータは、データについてのタイムスタンプを示す情報、データを処理するための情報、データに示される人または他のコンテンツを示すキーワード、もしくは、全体としてのファイルの有効性および内容を確立する助けになる可能性のある他の特徴、より具体的には、以下で議論する実施形態に関連して説明されるようなデジタル証拠の使用を含む。メタデータに加えて、各データは、改ざん、ファイルにおけるギャップ、ファイルを通した連続参照を防止するために、前のデータへの参照REF1、REF2…REFNがタグ付けされる。
(例えば、スマート・コントラクトを介して)メタデータがデータに割り当てられると、メタデータは、ハッシュの変更なしに、改変することができず、これは無効であると容易に識別することが可能となる。メタデータは、このように、ブロックチェーンの参加者が使用のためにアクセスし得る情報のデータログを作成する。
値676iは、ハッシュ値、または、以前に議論した任意の種類の情報に基づいて計算される他の値である。例えば、任意の所与のブロックBlockiについて、そのブロックについての値は、更新されて、そのブロックに対し実行された処理、例えば、関連するファイルについての新しいハッシュ値、新しい格納位置、新しいメタデータ、制御またはアクセスの移転、識別子、または加えられるべき他のアクションまたは情報、を反映することができる。各ブロックにおける値が、ファイルおよびヘッダのデータについてのメタデータとは別個であるとして示されているが、他の実施形態においては、値は、部分的にまたは全体としてこのメタデータに基づいてもよい。
ブロックチェーン670が一度形成されると、任意の時点で、ブロックを横断して値のトランザクション履歴をブロックチェーンに照会することによって、ファイルに対する変更不可能な管理の連鎖が得られる。この照会またはトラッキング手順は、最も現在に含められるブロックの値(例えば、最後(N番目)のブロック)を復号することによって開始し、その後、起源ブロックに到達し、元のファイルが回復されるまで他のブロックの値を連続的に復号する。なお、復号は、ヘッダおよびファイル並びに関連メタデータをブロック毎に復号することを含んでもよい。
復号は、各ブロックで起こった暗号化の種類に基づいて実行される。これは、秘密鍵、公開鍵、または公開鍵-秘密鍵ペアの使用を含んでもよい。例えば、非対称暗号化が用いられる場合、ネットワーク内のブロックチェーン参加者またはプロセッサは、所定のアルゴリズムを用いて公開鍵および秘密鍵のペアを生成することができる。公開鍵および秘密鍵は、ある数学的関係を介して互いに関連付けられる。公開鍵は、例えばIPアドレスやホームアドレスといった、他のユーザからのメッセージを受信するためのアドレスとして使用できるように一般に配布されてもよい。秘密鍵は、秘密が維持されて、他のブロックチェーン参加者に送信されるメッセージをデジタル的に署名するために使用される。署名は、受信者が送信者の公開鍵を使用して検証することができるようにメッセージに含まれる。このようにして、受信者は、送信者のみがこのメッセージを送信することができることを確信することができる。
鍵ペアを生成することは、ブロックチェーン上でアカウントを作成することと類似し得るが、実際にはどこにも登録する必要がない。また、ブロックチェーン上で実行されるすべてのトランザクションが、送信者によって、その秘密鍵を使用してデジタル署名される。この署名は、アカウントの所有者のみが、(スマート・コントラクトによって決定される許可の範囲内にある場合に)ブロックチェーンのファイルを追跡および処理することができることを保証する。
図7Aおよび図7Bは、本明細書中において組み込まれ、使用されてもよいブロックチェーン用のユースケースの追加の例を示す。特に、図7Aは、機械学習(人工知能)データを格納するブロックチェーン710の例700を示す。機械学習は、新規データに対する正確な予測のための予測モデルを構築するために膨大な量の履歴データ(または訓練データ)に依拠する。機械学習ソフトウェア(例えば、ニューラル・ネットワークなど)は、多くの場合、非直感的なパターンを発見するために何百万ものレコードをふるいにかける。
図7Aの例においては、ホスト・プラットフォーム720は、アセット730の予測的モニタリングのための機械学習モデルを構築し、デプロイする。ここで、ホスト・プラットフォーム720は、クラウド・プラットフォーム、産業用サーバ、ウェブサーバ、パーソナル・コンピュータ、ユーザ・デバイスなどであってもよい。アセット730は、航空機、機関車、タービン、医療機械および装置、オイルおよびガス設備、ボート、船舶、車両などのような任意の種類のアセット(例えば、機械または機器など)であってもよい。別の例として、アセット730は、ストック、通貨、デジタルコイン、保険などのような無形のアセットであってもよい。
ブロックチェーン710を使用して、機械学習モデルの訓練プロセス702および訓練済み機械学習モデルに基づく予測プロセス704の両方を有意に改善することができる。例えば、702において、データを収集するためのデータ・サイエンティスト/エンジニアまたは他のユーザを求めるよりむしろ、アセット730自身によって(または、図示しない仲介を介して)履歴データがブロックチェーン710上に格納されてもよい。これにより、予測モデルの訓練を行う際にホスト・プラットフォーム720が必要とする収集時間を大幅に短縮することができる。例えば、スマート・コントラクトを使用することにより、データを、元の場所からブロックチェーン710へ直接的かつ確実に転送することができる。ブロックチェーン710を使用して、収集されたデータのセキュリティおよび所有権を確保することによって、スマート・コントラクトは、アセットから、機械学習モデルを構築するためにデータを使用する個人へデータを直接送信することができる。これにより、アセット730の間でデータを共有することが可能となる。
収集されたデータは、コンセンサス・メカニズムに基づいてブロックチェーン710に格納されてもよい。コンセンサス・メカニズムは、記録されるデータが、検証されかつ正確であることを保証するために(許容されたノード)を引き込む。記録されたデータは、タイムスタンプされ、暗号的に署名され、変更不可能となる。したがって、それは、監査可能で、透明かつ安全である。ブロックチェーンに直接書き込むIoTデバイスを追加することにより、ある場合(つまり、サプライチェーン、ヘルスケア、ロジスティックスなど)には、データが記録される頻度および精度の両方を向上させることができる。
さらに、収集されたデータでの機械学習モデルの訓練は、ホスト・プラットフォーム720による改良およびテストの複数のラウンドを必要とする場合がある。各ラウンドは、追加のデータまたは、機械学習モデルの知識を拡張するのに役立つと以前は考慮されていなかったデータに基づくことができる。702において、異なる訓練およびテストのステップ(およびこれらに関連するデータ)が、ホスト・プラットフォーム720によってブロックチェーン710上に格納されてもよい。機械学習モデルの各改良(例えば、変数、重みなどの変化)が、ブロックチェーン710上に格納されてもよい。これにより、モデルがどのように訓練され、いかなるデータがモデルを訓練するために使用されたのかについて検証可能なプルーフが提供される。さらに、ホスト・プラットフォーム720が最終的に訓練済みモデルを実現した場合、結果として得られたモデルは、ブロックチェーン710に格納されてもよい。
モデルが訓練された後、モデルは、ライブ環境にデプロイされてもよく、ライブ環境では、最終的に訓練された機械学習モデルの実行に基づいて予測/決定を行うことができる。例えば、704において、航空機、風力タービン、ヘルスケア・マシンなどのアセットのためのコンディション・ベースド・メンテナンスのために機械学習モデルが使用されてもよい。この例では、アセット730からフィードバックされたデータが、機械学習モデルに入力され、故障イベント、エラーコードなどのイベント予測を行うために使用されてもよい。ホスト・プラットフォーム720での機械学習モデルの実行によってなされた決定は、監査可能/検証可能なプルーフを提供するためにブロックチェーン710に格納されてもよい。1つの非限定的な例として、機械学習モデルは、アセット730の部品の将来の破損/故障を予測し、部品を交換するための警告または通知を作成することができる。この決定の背景となるデータは、ホスト・プラットフォーム720によってブロックチェーン710上に格納されてもよい。一の実施形態においては、本明細書で説明もしくは図示またはその両方がなされる機能もしくはアクションまたはその両方は、ブロックチェーン710において、またはブロックチェーン710に関して発生してもよい。
ブロックチェーンのための新しいトランザクションは、新しいブロックに一緒にまとめられて、既存のハッシュ値に加えられてもよい。次いで、これは、暗号化されて、新しいブロックに対する新しいハッシュを作成する。これは、それらが暗号化された場合、次のトランザクションのリストに追加される。結果は、それぞれがすべての先行するブロックのハッシュ値を含むブロックのチェーンである。これらのブロックを格納するコンピュータは、それらのハッシュ値を定期的に比較し、それらが全て合意にあることを確実にする。合意しないコンピュータは、問題を起こしているレコードを破棄する。このアプローチは、ブロックチェーンの耐タンパ性を確実にするために優秀であるが、完全ではない。
不正ユーザがこのシステムに勝負するための1つの方法は、彼らの好みに、しかしハッシュを変化させないやり方で、トランザクションのリストを変更することである。これは、ブルートフォースによって、言い換えると、レコードを変更し、結果を暗号化し、ハッシュ値が同じであるかどうかを求めることによって、行うことができる。そして、そうでなければ、一致するハッシュを発見するまで、何度も試行するのである。ブロックチェーンの安全性は、普通のコンピュータが、この種のブルートフォース攻撃を、宇宙の年齢のような全く非現実的な時間スケールにわたってのみ実行することができるとの確信に基づいている。これとは対照的に、量子計算機は、はるかに速く(数1000倍速く)、結果としてより大きな脅威をもたらす。
図7Bは、量子コンピューティング攻撃に対して防護するために量子鍵配送(QKD)を実装する量子安全ブロックチェーン752の例750を示す。この例では、ブロックチェーンのユーザは、QKDを用いて互いの同一性を検証することができる。これは、盗聴者がそれを破壊せずに複製することができない、光子のような量子的な粒子を用いて情報を送信する。このようにして、ブロックチェーンを介した送信者および受信者は、互いの同一性を確信することができる。
図7Bの例においては、4人のユーザ754,756,758および760が存在している。ユーザのペアの各々は、それらの間で秘密鍵762(つまり、QKD)を共有することができる。この例では、4つのノードがあるため、6組のノードのペアが存在し、よって、QKDAB、QKDAC、QKDAD、QKDBC、QKDBD、QKDCDを含む、6つの異なる秘密鍵762が使用される。各ペアは、盗聴者がそれを破壊せずに複製することができない、光子のような量子的な粒子を用いて情報を送信することによって、QKDを作成することができる。このようにして、ユーザのペアは、互いの同一性を確信することができる。
ブロックチェーン752の動作は、2つの手続、(i)トランザクションの作成および(ii)新たなトランザクションを集約するブロックの構築に基づく。新しいトランザクションは、伝統的なブロックチェーン・ネットワークと同様に作成されてもよい。各トランザクションは、送信者、受信者、作成時刻、転送すべき量(または値)、送信者が操作のための資金を有することを正当だと証明する参照トランザクションのリストなどについての情報を含んでもよい。このトランザクション・レコードは、そして、他の全てのノードに送信され、ここでは、未だ確認されていないトランザクションのプールに入れられる。ここで、2つの当事者(つまり、754~760にうちのユーザのペア)は、彼らの共有秘密鍵762(QKD)を提供することによってトランザクションを認証する。この量子署名は、すべてのトランザクションに添付されてもよく、改ざんすることを極めて困難なもとする。各ノードは、ブロックチェーン752のローカルのコピーに関してそれらのエントリをチェックし、各トランザクションが十分な資金を有することを検証する。しかしながら、トランザクションは、未だ確認されない。
ブロックに対する伝統的なマイニング処理を実行するよりはむしろ、ブロックは、ブロードキャスト・プロトコルを用いて、非中央集権的なやり方で生成されてもよい。所定の時間(例えば、秒、分、時間など)で、ネットワークは、未だ確認されていないトランザクションに対しブロードキャスト・プロトコルを適用し、それによって、トランザクションの正確なバージョンに関するビザンチン合意(コンセンサス)を実現することができる。例えば、各ノードは、秘密の値(その特定のノードのトランザクション・データ)を所持することができる。第1のラウンドでは、ノードは、かれらの秘密の値を互いに送信する。後続のラウンドでは、ノードは、前回のラウンドで他のノードから受信した情報を通信する。ここで、信頼できるノードは、新しいブロック内で完全なトランザクションのセットを作成する能力を有する。この新しいブロックは、ブロックチェーン752に追加されてもよい。一の実施形態においては、本明細書で説明もしくは図示またはその両方がなされる機能もしくはアクションまたはその両方は、ブロックチェーン752において、またはブロックチェーン752に関して発生してもよい。
図8は、本明細書に記載もしくは図示されたまたはその両方がなされた例示の実施形態の1以上をサポートする例示のシステム800を示す。システム800は、コンピュータ・システム/サーバ802を含み、コンピュータ・システム/サーバ802は、多数の他の汎用または特定目的のコンピューティング・システム環境または構成とともに動作可能である。コンピュータ・システム/サーバ802と使用するのに適したよく知られたコンピューティング・システム、環境もしくは構成またはその組み合わせの例には、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースド・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、これらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などが含まれる。
コンピュータ・システム/サーバ802は、プログラム・モジュールなどのコンピュータ・システム実行可能な命令がコンピュータ・システムによって実行される一般的な文脈において説明される。一般的に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含んでもよい。コンピュータ・システム/サーバ802は、通信ネットワークを介してリンクされる遠隔の処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境において実践されてもよい。分散クラウド・コンピューティング環境においては、プログラム・モジュールは、メモリ・ストレージ・デバイスを含んでいる、ローカルおよび遠隔の両方のコンピュータ・システム・ストレージ媒体に位置してもよい。
図8に示されるように、クラウド・コンピューティング・ノード800におけるコンピュータ・システム/サーバ802が、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ802のコンポーネントは、これらに限定されるものではないが、1つまたは複数のプロセッサまたは処理ユニット804と、システム・メモリ806と、システム・メモリ806を含む種々のシステム・コンポーネントをプロセッサ804に接続するバスとを含んでもよい。
バスは、種々のバス・アーキテクチャのうちの任意のものを用いる、メモリバスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、プロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のうちの1以上を表す。例として、このようなアーキテクチャには、これらに限定されるものではないが、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バスおよびペリフェラル・コンポーネント・インターコネクト(PCI)バスが含まれる。
コンピュータ・システム/サーバ802は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ802によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体と不揮発性媒体の両方のリムーバブル媒体および非リムーバブル媒体を含む。システム・メモリ806は、一実施形態において、他の図面のフロー図を実装する。システム・メモリ806は、ランダム・アクセス・メモリ(RAM)810もしくはキャッシュ・メモリ812またはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含んでもよい。コンピュータ・システム/サーバ802は、他のリムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、ストレージ・システム814は、非リムーバブル、不揮発性の磁気媒体(図示しないが、通常「ハード・ドライブ」と呼ばれる)からの読み出しと、該磁気媒体への書き込みを行うために提供されてもよい。図示しないが、リムーバブル、不揮発性の磁気ディスク(たとえば、「フロッピー(登録商標)ディスク」)からの読み出しと、該磁気ディスへの書き込みを行うための磁気ディスク・ドライブおよびCD-ROM、DVD-ROMまたは他の光媒体などのリムーバブル、不揮発性の光ディスクからの読み出しと該光ディスクへの書き込みを行うための光ディスク・ドライブが提供されてもよい。そのような実例において、各々は、1または複数のデータ媒体インタフェースによってバスに接続されてもよい。以下でさらに詳細に示され、説明されるように、メモリ806は、本出願の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(たとえば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでよい。
プログラム・モジュール818のセット(少なくとも1つ)を有するプログラム/ユーティリティ816が、限定ではなく例として、メモリ806に格納されてもよく、オペレーティング・システム、1または複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データも同様である。オペレーティング・システム、1または複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データの各々またはこれらのいくつかの組み合せは、ネットワーク環境の実装を含んでもよい。プログラム・モジュール818は、概して、本明細書に記載の本出願の種々の実施形態の機能もしくは方法論またはその両方を実行する。
当業者によって理解されるように、本出願の側面は、システム、方法またはコンピュータ・プログラム製品として具現化されてもよい。したがって、本出願の側面は、全体としてハードウェアの実施形態、全体としてソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの側面とハードウェアの側面とを組み合わせた実施形態の形態を取ってよく、これらの全ては、本明細書において、概して「回路」、「モジュール」、または「システム」と参照される可能性がある。さらに、本出願の側面は、そこでコンピュータ可読プログラム・コードが具現化される1または複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態を取ってもよい。
コンピュータ・システム/サーバ802は、キーボード、ポインティング・デバイス、ディスプレイ822などの1または複数の外部デバイス820;ユーザがコンピュータ・システム/サーバ802と対話できるようにする1または複数のデバイス;もしくはコンピュータ・システム/サーバ802が1または複数の他のコンピューティング・デバイスと通信するのを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)またはその組み合わせと通信してもよい。このような通信は、I/Oインタフェース824を介して生じる可能性がある。さらに、コンピュータ・システム/サーバ802は、ネットワーク・アダプタ826を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)もしくは公衆ネットワーク(たとえば、インターネット)またはその組み合わせなどの1または複数のネットワークと通信することができる。図示されるように、ネットワーク・アダプタ826は、バスを介して、コンピュータ・システム/サーバ802の他のコンポーネントと通信する。図示されていないが、他のハードウェア・コンポーネントもしくはソフトウェア・コンポーネントまたはその両方がコンピュータ・システム/サーバ802と関連して使用されてもよいことを理解されたい。例には、これらに限定されないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブおよびデータ・アーカイブ・ストレージ・システムなどが含まれる。
システム、方法および非一時的コンピュータ可読媒体のうちの少なくとも1つの例示の実施形態が添付の図面において示され、上述した詳細な説明において説明されたが、本出願は、開示される実施形態に限定されるものではなく、以下の特許請求の範囲によって明らかにされかつ定義されるように、多数の再配置、変更および置き換えを行うことができることが理解されるであろう。例えば、種々の図面のシステムの能力は、本明細書に記載されたモジュールまたはコンポーネントのうちの1以上によって実行されてもよく、あるいは分散アーキテクチャにおいて実行されてもよく、送信器、受信器、またはその両方のペアを含んでもよい。例えば、個別のモジュールによって実行される機能性の全部または一部は、それらのモジュールのうちの1以上によって実行されてもよい。さらに、本明細書に記載された機能性は、種々の時間に、種々のイベントに関して、モジュールまたはコンポーネントの内部または外部で、実行されてもよい。また、種々のモジュールの間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスもしくは複数のプロトコルまたはその組み合わせの少なくとも1つを介して、モジュール間で送信されてもよい。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、もしくは他のモジュールのうちの1以上を介して、またはその両方によって、送信または受信されてもよい。
当業者は、”システム”を、パーソナル・コンピュータ、サーバ、コンソール、パーソナル・デジタル・アシスタント(PDA)、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意のその他の適切なコンピューティング・デバイスまたはデバイスの組み合わせとして具現化することができることを理解するであろう。上記の機能を”システム”によって実行されるものとして提示することは、如何なる方法においても本出願の範囲を限定するよう意図するものではなく、多くの実施形態のうちの1つの例を提供することを意図するものである。実際、本明細書で開示される方法、システムおよび装置は、コンピューティング技術に整合して局所化され、分散された形態で実装されてもよい。
本明細書において説明されるシステムの機能のいくつかが、とりわけそれらの実装の独立性を強調するためにモジュールとして提示されたことに留意されたい。例えば、モジュールは、カスタム超大規模集積(VLSI)回路またはゲート・アレイ、ロジック・チップ、トランジスタまたはその他のディスクリート部品などの市販の半導体を含むハードウェア回路として実装されてもよい。モジュールは、また、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィックス処理ユニットなどの、プログラム可能なハードウェア・デバイスにおいて実装されてもよい。
モジュールは、種々のタイプのプロセッサによる実行のためのソフトウェアにおいて少なくとも部分的に実装されてもよい。実行可能コードの識別されたユニットは、例えば、オブジェクト、プロシージャまたは関数として組織され得るコンピュータ命令の1または複数の物理的または論理的ブロックを含んでもよい。それにもかかわらず、識別されたモジュールの実行ファイルは、物理的に一緒に配置される必要はなく、異なる位置に格納された異なる命令を含んでもよく、それらの命令は、論理的に一緒に結合された場合に、モジュールを含み、モジュールの定まった目的を達成する。さらに、モジュールは、コンピュータ可読媒体に格納されてよく、このコンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、またはデータを格納するために用いられる任意の他の媒体であってもよい。
実際、実行可能なコードのモジュールは、単一の命令であってもよいし、または多数の命令であってもよいし、複数の異なるコード・セグメントにわたって、異なるプログラムの中でおよび複数のメモリ・デバイスにまたがって分散されてもよい。同様に、動作データは、本明細書において、モジュール内で識別され、図示され得るが、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内に組織化されてもよい。動作データは、単一のデータ・セットとして収集されてよいし、または、異なるストレージ・デバイスを含む異なる位置にわたって分散されてよいし、システムまたはネットワーク上の電子信号として単に少なくとも部分的に存在してもよい。
本明細書の図面において一般的に説明され、図示されるように、本出願の構成要素は、多種多様な異なる構成で配置および設計されてもよいことが容易に理解されるであろう。よって、実施形態の詳細な説明は、特許請求されるように本出願の範囲を限定するよう意図するものではなく、単に本出願の選択された実施形態を代表するに過ぎない。
当業者であれば、上記が、開示されるものと比べて、異なる順序のステップで、もしくは異なる構成におけるハードウェア要素で、またはその両方で実践することができることを容易に理解するであろう。したがって、これらの好ましい実施形態に基づいて本出願が説明されたが、一定の変更、変形および代替の構築が明白であるとことは当業者にとって明らかであろう。
本出願の好ましい実施形態が説明されたが、説明された実施形態は、単なる例示であり、本出願の範囲は、それらの等価物および変更の全範囲(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど)を考慮した場合、添付の特許請求の範囲単独で定義されるべきということが理解されたい。
Claims (16)
- 競合フリー・バージョン制御のためのシステムであって、
文書プロセッサ・ノードのプロセッサと、
機械可読命令が格納されるメモリと
を含み、前記機械可読命令は、前記プロセッサによって実行されたときに、前記プロセッサに、
文書識別子(ID)とともにファイルを受信することと、
前記ファイルのハッシュを生成することと、
前記ファイルの前記ハッシュと、前記文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出することと、
参加ノードに文書アクセス許可を割り当てることと、
前記IDに基づく前記文書のバージョンを前記参加ノードに通知することと
を行わせる、システム。 - 前記命令が、前記プロセッサに、さらに、チェーン外ノードに前記ファイルを提供して、ローカル・ファイル・ストアに格納させる、請求項1に記載のシステム。
- 前記命令は、前記プロセッサに、さらに、ブロックチェーンの台帳に格納されない、前記IDに基づく前記文書の所有権の割り当てをさらに受信させる、請求項1または2に記載のシステム。
- 前記命令は、前記プロセッサに、さらに、前記文書がブロックチェーンの台帳に格納される場合、検証を提供させることを特徴とする、請求項1~3のいずれか1項に記載のシステム。
- 前記文書のロケータは、暗号化されたユニフォーム・リソース・ロケータである、請求項1~4のいずれか1項に記載のシステム。
- 前記命令は、前記プロセッサに、さらに、複数の参加ノードが同一のIDに基づく前記文書を送出したことに応答したブロックチェーン・トランザクションの順序に基づいて前記文書のバージョニングを保証するようにする、請求項1~5のいずれか1項に記載のシステム。
- 前記命令は、前記プロセッサに、さらに、前記参加ノードの中で競合フリー文書所有権を提供させる、請求項6に記載のシステム。
- 競合フリー・バージョン制御のための方法であって、
文書プロセッサ・ノードにより、文書識別子(ID)とともにファイルを受信するステップと、
前記文書プロセッサ・ノードにより、前記ファイルのハッシュを生成するステップと、
前記文書プロセッサ・ノードにより、前記ファイルの前記ハッシュと、前記文書IDと、文書のロケータとを包含するブロックチェーン・トランザクションを送出するステップと、
前記文書プロセッサ・ノードにより、参加ノードに文書アクセス許可を割り当てるステップと、
前記IDに基づく前記文書のバージョンを前記参加ノードに通知するステップと
を含む、方法。 - さらに、チェーン外ノードに前記ファイルを提供して、ローカル・ファイル・ストアに格納させるステップを含む、請求項8に記載の方法。
- さらに、ブロックチェーンの台帳に格納されない、前記IDに基づく前記文書の所有権の割り当てをさらに受信するステップを含む、請求項8または9に記載の方法。
- さらに、前記文書がブロックチェーンの台帳に格納される場合、検証を提供するステップを含む、請求項8~10のいずれか1項に記載の方法。
- 前記文書のロケータは、暗号化されたユニフォーム・リソース・ロケータである、請求項8~11のいずれか1項に記載の方法。
- さらに、複数の参加ノードが同一のIDに基づく前記文書を送出したことに応答したブロックチェーン・トランザクションの順序に基づいて前記文書のバージョニングを保証するステップを含む、請求項8~12のいずれか1項に記載の方法。
- さらに、前記参加ノードの中で競合フリー文書所有権を提供するステップを含む、請求項13に記載の方法。
- コンピュータ・プログラム製品であって、
処理回路によって読み取り可能で、請求項8~14のいずれか1項に記載の方法を実行するための前記処理回路によって実行される命令を格納する、コンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。 - プログラムがコンピュータ上で実行されたときに、請求項8~14のいずれか1項に記載の方法を実行するためのソフトウェアコード部分を含む、コンピュータ可読媒体に格納され、デジタルコンピュータの内部メモリにロード可能なコンピュータ・プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/747,410 US11403348B2 (en) | 2020-01-20 | 2020-01-20 | Conflict-free version control |
US16/747,410 | 2020-01-20 | ||
PCT/IB2021/050240 WO2021148907A1 (en) | 2020-01-20 | 2021-01-14 | Conflict-free version control |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023511886A true JP2023511886A (ja) | 2023-03-23 |
Family
ID=76857064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022544063A Pending JP2023511886A (ja) | 2020-01-20 | 2021-01-14 | 競合フリー・バージョン制御 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11403348B2 (ja) |
JP (1) | JP2023511886A (ja) |
CN (1) | CN114981773A (ja) |
DE (1) | DE112021000219T5 (ja) |
GB (1) | GB2607519A (ja) |
WO (1) | WO2021148907A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113015974B (zh) * | 2019-10-21 | 2024-05-28 | 谷歌有限责任公司 | 针对隐私保护的可验证同意 |
US11341509B1 (en) | 2020-11-13 | 2022-05-24 | Gleipnir Technologies Llc | Voting system to prevent fraud using blockchain technology |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676501B2 (en) | 2008-03-22 | 2010-03-09 | Wilson Kelce S | Document integrity verification |
US8321460B2 (en) | 2009-06-11 | 2012-11-27 | Oracle International Corporation | Populating a cache system based on privileges |
US9398985B2 (en) | 2009-06-12 | 2016-07-26 | The Procter & Gamble Company | Prestrained stretched laminates |
US8479298B2 (en) | 2010-07-30 | 2013-07-02 | At&T Intellectual Property I, L.P. | Method for encrypting and embedding information in a URL for content delivery |
US9397985B1 (en) * | 2015-04-14 | 2016-07-19 | Manifold Technology, Inc. | System and method for providing a cryptographic platform for exchanging information |
US10193696B2 (en) | 2015-06-02 | 2019-01-29 | ALTR Solutions, Inc. | Using a tree structure to segment and distribute records across one or more decentralized, acylic graphs of cryptographic hash pointers |
US20170091756A1 (en) | 2015-07-14 | 2017-03-30 | Fmr Llc | Point-to-Point Transaction Guidance Apparatuses, Methods and Systems |
US20170046689A1 (en) | 2015-07-14 | 2017-02-16 | Fmr Llc | Crypto Voting and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems |
US10402792B2 (en) | 2015-08-13 | 2019-09-03 | The Toronto-Dominion Bank | Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers |
US10425428B2 (en) | 2015-08-20 | 2019-09-24 | Guardtime Sa | Verification lineage tracking and transfer control of data sets |
US9855785B1 (en) | 2016-04-04 | 2018-01-02 | Uipco, Llc | Digitally encoded seal for document verification |
CN107527286A (zh) | 2016-06-20 | 2017-12-29 | 惠众商务顾问(北京)有限公司 | 社区区块链多态链接及智能化处理装置 |
US10868674B2 (en) * | 2016-08-12 | 2020-12-15 | ALTR Solutions, Inc. | Decentralized database optimizations |
US11461485B2 (en) * | 2016-08-12 | 2022-10-04 | ALTR Solutions, Inc. | Immutable bootloader and firmware validator |
US10554753B2 (en) * | 2017-07-06 | 2020-02-04 | Acronis International Gmbh | System and method for service level agreement based data storage and verification |
US11063744B2 (en) * | 2017-10-20 | 2021-07-13 | Sap Se | Document flow tracking using blockchain |
GB201803815D0 (en) * | 2018-03-09 | 2018-04-25 | Nchain Holdings Ltd | Computer-implemented methods and systems |
US11582042B2 (en) | 2018-03-16 | 2023-02-14 | General Electric Company | Industrial data verification using secure, distributed ledger |
WO2019218055A1 (en) * | 2018-05-15 | 2019-11-21 | Kelvin Zero Inc. | Systems, methods, and devices for secure blockchain transaction and subnetworks |
WO2019226580A1 (en) * | 2018-05-21 | 2019-11-28 | Integra, Inc. | Blockchain-anchored smart documents |
US10771240B2 (en) | 2018-06-13 | 2020-09-08 | Dynamic Blockchains Inc | Dynamic blockchain system and method for providing efficient and secure distributed data access, data storage and data transport |
US11196551B2 (en) * | 2018-06-27 | 2021-12-07 | International Business Machines Corporation | Automated task management on a blockchain based on predictive and analytical analysis |
US11146381B2 (en) * | 2018-11-16 | 2021-10-12 | Adobe Inc. | Traceability of edits to digital documents via distributed ledgers |
US11238170B2 (en) | 2020-02-27 | 2022-02-01 | Microsoft Technology Licensing, Llc | Delegation using pairwise decentralized identifier |
US11693948B2 (en) * | 2020-08-04 | 2023-07-04 | International Business Machines Corporation | Verifiable labels for mandatory access control |
-
2020
- 2020-01-20 US US16/747,410 patent/US11403348B2/en active Active
-
2021
- 2021-01-14 WO PCT/IB2021/050240 patent/WO2021148907A1/en active Application Filing
- 2021-01-14 GB GB2211980.4A patent/GB2607519A/en active Pending
- 2021-01-14 DE DE112021000219.8T patent/DE112021000219T5/de active Pending
- 2021-01-14 JP JP2022544063A patent/JP2023511886A/ja active Pending
- 2021-01-14 CN CN202180008171.7A patent/CN114981773A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210224333A1 (en) | 2021-07-22 |
US11403348B2 (en) | 2022-08-02 |
GB2607519A (en) | 2022-12-07 |
WO2021148907A1 (en) | 2021-07-29 |
CN114981773A (zh) | 2022-08-30 |
DE112021000219T5 (de) | 2022-09-22 |
GB202211980D0 (en) | 2022-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022548168A (ja) | プライベート・ブロックチェーンからの更新のチェーン外通知 | |
CA3175619C (en) | Cross-network identity provisioning | |
US11275859B2 (en) | Preservation of privacy in large datasets | |
JP2022553674A (ja) | 存在するチェーン・コードに基づくチェーン・コード推奨 | |
JP2023513420A (ja) | ブロックチェーン台帳のためのインデックス構造 | |
US11455403B2 (en) | Privacy-preserving document sharing | |
US11455598B2 (en) | Automated conflict resolution | |
US20210256145A1 (en) | Preservation of privacy in large datasets | |
US11675854B2 (en) | Conflict-free version control | |
US20210224253A1 (en) | Conflict-free version control | |
US11354425B2 (en) | Privacy-preserving document sharing | |
US20210264419A1 (en) | Resolution of conflicting data | |
JP2023511886A (ja) | 競合フリー・バージョン制御 | |
US11683185B2 (en) | Entity certification management | |
US11792022B2 (en) | Resolution of conflicting data | |
US11310311B2 (en) | Media obfuscation | |
US20210314155A1 (en) | Trusted ledger stamping | |
US20210150597A1 (en) | Automated invoicing | |
US11222292B2 (en) | Data linkage across multiple participants | |
US11526467B2 (en) | Document storage and verification | |
US12019585B2 (en) | Document storage and verification | |
US20210248271A1 (en) | Document verification | |
US11856109B2 (en) | Entity certification management | |
US11570152B2 (en) | Data linkage across multiple participants | |
US11556517B2 (en) | Blockchain maintenance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220727 |
|
RD16 | Notification of change of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7436 Effective date: 20220720 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230622 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240625 |