JP2021518705A - ブロックチェーン台帳のためのランタイム自己修正 - Google Patents

ブロックチェーン台帳のためのランタイム自己修正 Download PDF

Info

Publication number
JP2021518705A
JP2021518705A JP2020550639A JP2020550639A JP2021518705A JP 2021518705 A JP2021518705 A JP 2021518705A JP 2020550639 A JP2020550639 A JP 2020550639A JP 2020550639 A JP2020550639 A JP 2020550639A JP 2021518705 A JP2021518705 A JP 2021518705A
Authority
JP
Japan
Prior art keywords
data block
ledger
blocks
block
distributed ledger
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.)
Granted
Application number
JP2020550639A
Other languages
English (en)
Other versions
JP7177576B2 (ja
Inventor
バセト、サルマン、アブドゥル
ディレンバーガー、ドンナ、エヌ、エング
ノヴォトニ、ペトル
チャン、チイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021518705A publication Critical patent/JP2021518705A/ja
Application granted granted Critical
Publication of JP7177576B2 publication Critical patent/JP7177576B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message 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/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Quality & Reliability (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Finance (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

例示の操作は、台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別すること、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得すること、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定すること、および置換データ・ブロックが有効であると決定したことに応じて、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えることのうちの1つまたは複数を含むことができる。

Description

本出願は、一般に、エラー検出に関し、より詳細には、分散型台帳(ブロックチェーンなどの)の破損データ・ブロックをランタイムに自動検出し、同じ分散型台帳を共有する別のコンピューティング・ノードに格納されているデータに基づいて破損データ・ブロックを自己修正するコンピューティング・ノードに関する。
台帳は、一般に、トランザクションが記録されるエントリの会計簿として定義される。一方、分散型台帳は、多数のコンピューティング・ノードにわたり全体的にまたは部分的に複製されるデジタル台帳である。分散型台帳は暗号の性質によってセキュリティ保護することができ、暗号分散型台帳(CDL)とも呼ばれる。CDLは、以下の特性、すなわち、不可逆性(例えば、トランザクションは、記録された後、取り消すことができない)、アクセス可能性(例えば、いかなる当事者も、CDLに全体的にまたは部分的にアクセスすることができる)、時系列およびタイムスタンプ付き(例えば、すべての参加当事者は、トランザクションがいつ台帳に追加されたか、およびどの順序で追加されたかを知っている)、合意ベース(トランザクションは、ネットワークの当事者によって一般に全員一致で是認された場合にのみ追加される)、検証可能性(トランザクションはすべて暗号的に確認することができる)などのうちの少なくともいくつかを有することができる。暗号分散型台帳の1つの非限定の例は、ブロックチェーンである。
ブロックチェーンなどの分散型台帳は、一般に、継続的に増加する記録のリストを格納する。ブロックチェーンは、金融トランザクションでしばしば使用されるが、商品およびサービス(すなわち、製品、パッケージ、ステータスなど)、デジタル通貨、株式、株主権、ソフトウェア・モデル、専有データ、および他の情報に関連する情報などの他のデータを格納することができる。分散化方式は、分散化ネットワークに権限および信頼を提供し、そのノードが、それらのトランザクションを公開のまたは秘密の「ブロック」に連続的におよび順次記録できるようにし、ブロックチェーンと呼ばれる固有の「チェーン」を作り出す。ハッシュ・コードを介した暗号法を使用して、トランザクション・ソースの認証をセキュリティ保護し、中央の仲介者を排除する。分散型台帳は、その変更不能な性質により、改ざんおよび改訂からセキュリティ保護される。例えば、各ブロックは、タイムスタンプと、前のブロックへのリンクとを含むことができる。ブロックチェーンを使用して、情報を保持、追跡、転送、および確認することができる。ブロックチェーン・ネットワーク内のブロックチェーン・ピアは、1つまたは複数の他のブロックチェーン・ノードとの承認(endorsement)および合意プロトコルを通して、ブロックチェーン台帳へのトランザクションをトリガすることができ、1つのエンティティがそれ自体でブロックチェーン台帳を変更できないことを保証する。
従来、ブロックチェーン・ピア・ノードは、単に、新しいデータ・ブロックをブロックチェーン台帳に付加する。すなわち、ブロックチェーン・ノードは、一般に、以前に格納された既存のデータ・ブロックを修正またはそうでなければ勝手に変更するのではなく、単に新しいデータ・ブロックを追加する。この理由の1つは、分散型台帳の変更不能な性質、および新しいデータが分散型台帳に追加される前に必要とされる承認および合意プロセスのためである。しかしながら、ブロックチェーン台帳内のデータ・ブロックは、悪意のある攻撃、システム故障、ソフトウェア・エラーなどのような様々な理由のために時間とともに破損していくことがある。そのため、ブロックチェーン台帳内の好ましくないブロックを修復するメカニズムが必要とされる。
それゆえに、当技術分野では、前記の問題に対処することが必要である。
第1の態様から考察すると、本発明は、破損データ・ブロックを管理するためにコンピューティング・システムを提供し、このシステムは、分散型台帳を格納するメモリと、台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別し、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得し、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定し、置換データ・ブロックが有効であるという決定に応じて、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えるように構成されたプロセッサとを含む。
第1の態様から考察すると、本発明は、破損データ・ブロックを管理する方法を提供し、この方法は、台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別することと、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得することと、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定することと、置換データ・ブロックが有効であると決定したことに応じて、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えることとを含む。
さらなる態様から考察すると、本発明は、破損データ・ブロックを管理するためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、処理回路によって可読であり、本発明のステップを実行する方法を実行するために処理回路で実行するための命令を格納するコンピュータ可読記憶媒体を含む。
さらなる態様から考察すると、本発明は、コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、プログラムがコンピュータで実行されるとき、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
1つの例示の実施形態は、台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別すること、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得すること、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定すること、および置換データ・ブロックが有効であると決定したことに応じて、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えることのうちの少なくとも1つを含む方法を提供することができる。
別の例示の実施形態は、分散型台帳を格納するメモリ、および台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別し、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得し、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定し、置換データ・ブロックが有効であると決定したことに応じて、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えるように構成されたプロセッサのうちの少なくとも1つを含むシステムを提供することができる。
さらなる例示の実施形態は、プロセッサによって読み取られたとき、台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別すること、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得すること、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定すること、および、置換データ・ブロックが有効であると決定したことに応じて、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えることのうちの少なくとも1つをプロセッサに実行させる命令を含む非一過性コンピュータ可読媒体を提供することができる。
次に、本発明の実施形態が、単に例として、添付図面を参照して説明される。
例示の実施形態による、複数のブロックチェーン・ピアを含むブロックチェーン・ネットワークを示す図である。 例示の実施形態による、分散型台帳と相互作用する台帳検証スレッドを示す図である。 例示の実施形態による、ピア・ノード・ブロックチェーン・アーキテクチャ構成を示す図である。 例示の実施形態による、破損ブロックを自己修正するためのブロックチェーン・ノード間のトランザクションの流れを示す図である。 例示の実施形態による、許可型ブロックチェーン・ネットワークを示す図である。 例示の実施形態による、台帳修正プロセスの複数の例を示す図である。 例示の実施形態による、分散型台帳の破損データ・ブロックを自己修正するための方法を示す流れ図である。 例示の実施形態による、本明細書で説明する1つまたは複数の操作に従ってブロックチェーンで様々な操作を実行するように構成された物理インフラストラクチャを示す図である。 例示の実施形態による、ブロックチェーンでスマート・コントラクト条件を実施するように構成された、契約当事者と仲介サーバとの間のスマート・コントラクト構成を示す図である。 例示の実施形態の1つまたは複数をサポートするように構成されたコンピュータ・システムを示す図である。
本明細書の図に概して記載および図示されている本構成要素は、多種多様な異なる構成で配列および設計されてもよいことが容易に理解されよう。添付の図に表されているような、方法、装置、非一過性コンピュータ可読媒体、およびシステムのうちの少なくとも1つの実施形態の以下の詳細な説明は、特許請求される本出願の範囲を限定することを意図するものではなく、単に選択された実施形態を表している。
本明細書の全体にわたって説明される本特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。例えば、本明細書の全体を通して、「例示の実施形態」、「いくつかの実施形態」という句、または他の同様の言語の使用は、実施形態に関連して記載される特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれ得るという事実を指す。本明細書の全体を通して、「例示の実施形態において」、「ある実施形態において」、もしくは「他の実施形態において」という句、または他の同様の言語の出現は、必ずしも、すべてが同じグループの実施形態を指すのではなく、記載される特徴、構造、または特性は、1つまたは複数の実施形態において任意の適切な方法で組み合わされてもよい。
加えて、「メッセージ」という用語が実施形態の説明において使用されていることがあるが、本出願は、パケット、フレーム、データグラムなどのような多くのタイプのネットワーク・データに適用することができる。「メッセージ」という用語は、パケット、フレーム、データグラム、およびそれらの等価物をさらに含む。さらに、特定のタイプのメッセージおよびシグナリングが例示的な実施形態に示されることがあるが、それらは特定のタイプのメッセージに限定されず、本出願は特定のタイプのシグナリングに限定されない。
従来、ブロックチェーン・ピアは、分散型台帳を実装している複数のノードが新しいブロックについて合意に達すると、新しいデータ・ブロックを既存のブロックのチェーンに付加するかまたはそうでなければコミットすることによって、分散型台帳を単に変更する。しかしながら、ブロックチェーン・ピアは、分散型台帳の以前に格納されたブロックを検証することはできない。言い換えれば、ブロックチェーン・ピアは、分散型台帳が正確であることを保証することができない。その結果、破損データ・ブロックが分散型台帳のローカル・コピー内に存在し、ブロックチェーン・ネットワーク全体内で問題を引き起こすことがある。
例示の実施形態は、分散型台帳の以前に格納されたブロックを検証することができる台帳検証スレッドを実装することによってこれらの問題に解決策を与える方法、デバイス、ネットワーク、またはシステム、あるいはその組合せを提供する。台帳検証スレッドは、データ・ブロックが破損状態になったとき、様々な異なる検証方法を使用して検出することができる。破損データ・ブロックの識別に応じて、台帳検証スレッドは、同じチャネルの別のブロックチェーン・ピアから置換データ・ブロックを取得し、置換データ・ブロックを検証し、破損データ・ブロックを、検証された置換データ・ブロックに置き換えることができる。その結果、台帳検証スレッドは、台帳の1つまたは複数のブロックが悪意のあるアクティビティ、ソフトウェア・エラー、ハードウェア障害などにより破損状態になった場合に、分散型台帳を自己修復する(すなわち、自己修正する)ことができる。周期的な時間間隔、台帳への変更、管理者からの要求などのような様々なトリガが、ランタイム検証プロセスを開始させることができる。本明細書の説明および図は、ブロックチェーンに関して説明されているが、本出願は、任意のタイプの分散型台帳に等しく適用される。
台帳(デジタル台帳、分散型台帳、変更不能台帳などとも呼ばれる)は、ブロックチェーン・ネットワークによって実行およびコミットされたすべてのトランザクションの記録を含んでいるので、ブロックチェーン・システムの重要な構成要素である。台帳は、さらに、トランザクションの署名およびデータ・ブロックのハッシュ値などの他のメタデータを有する。それゆえに、台帳の無傷性および完全性は、ブロックチェーンが正しく効果的に機能するために重要である。典型的なブロックチェーン・ネットワークでは、各ブロックチェーン・ピア・ノードは、台帳の完全なコピーを維持し、それを記憶媒体に一連のファイルとして格納するが、それは、破損に対して脆弱である。破損は、例えば、悪意のあるユーザがピア・ノードにハッキングし、台帳を格納するファイルを故意に変更することがある、ハードウェア障害が生じることがある、ソフトウェア・バグが台帳ファイルを破損することがある、など、多くの理由のために起こることがある。
Hyperledger Fabricなどの多くのブロックチェーン・システムでは、ピア・ノードは、単に台帳の末尾に新しいブロックを付加し、台帳の既存のブロックを定期的に検証しない方法で機能する。その結果、台帳の破損ブロックを時間内に検出することができず、それは、多くの理由でブロックチェーン・システムにとって有害となることがある。例えば、ピア開始時に、ピアは、破損した台帳に起因して起動し損なうことがある。別の例として、ピア・ランタイム中に、ブロックチェーン分析ワークロードが、ピア・ノードで実行されており、破損ブロックのトランザクションにアクセスする必要がある場合、トランザクションに正常にアクセスすることができない。したがって、分析ワークロードは、この破損ブロックの存在のために失敗することがある。
ブロックチェーン・システムの機能への破損ブロックの影響を低減するために、例示の実施形態は、ブロックチェーン台帳などのデジタル台帳のランタイム自己修正メカニズムに関する。様々な態様によれば、別個のスレッド(すなわち、台帳検証スレッド)が、定期的にピア・ノードで実行されており、このピアの台帳のブロックを検証する。破損ブロックが検出された場合、台帳検証スレッドは、破損ブロックの正しいバージョンを有し得る別のピア(すなわちピアP2)を選択することができ、他のピアに置換ブロックを要求する。P2は、要求を受け取ると、要求しているピアを検証し、要求しているピアが正当である場合、対応するブロックを送ることができる。次いで、P1は、置換ブロックを受け取った後、ブロックを検証し、受け取ったブロックが有効である場合には破損したものを置き換える。そうでなければ、P1は、P2から受け取ったブロックが有効でない場合、異なるピア(すなわちP3)に同じブロックを依頼することができる。システムは、ユーザ(例えば、管理者など)が、どのような頻度でスレッドを実行するかおよび台帳のどの部分を検証する必要があるかなどの多くのやり方で台帳検証スレッドを構成できるように設けられる。
記憶媒体上のファイルのセットである台帳と異なり、台帳検証スレッドは、ブロックチェーン・ピアのメモリで実行されるかまたはそうでなければブロックチェーン・ピアとつながりのあるプログラムである。プログラムのコンパイル済みコードが、台帳とは別に格納されてもよい。詳細は実装に依存することができる。例えば、台帳検証スレッドがピアの一部として実装される場合、台帳検証スレッド・プログラムは、ピアのプログラムと同じように保護する(すなわち、安全なコンテナ内の隔離された場所に格納する)ことができる。別の例として、台帳検証スレッドが独立したプログラムとして実装される場合、台帳検証スレッドは、ピアのプログラムと違う独立したセキュリティ構成を有することができ、それによって、管理者は、より高いセキュリティ設定を構成することができる。どちらの場合も、台帳検証スレッド・プログラムは、台帳から完全に切り離すことができ、破損の原因または不正な行為者は、プログラムにアクセスできないことになる。さらに、台帳検証スレッドは、ブロックチェーンで取引するユーザに対して完全に隠されてもよい。すなわち、ブロックチェーン・ユーザは、スレッドと対話することができないが、しかしながら、ブロックチェーン管理者は、メカニズムを構成し、それを開始および停止することができる。
台帳検証スレッドがピアの一部として実装される場合、台帳検証スレッド・プログラムは、ピア・コードの一部としてインストールされ(追加され)、ピアと一緒に開始および停止することができる。別の例として、台帳検証スレッドが独立したプログラムとして実装される場合、管理者は、スレッドを独立したソフトウェアとして使用して、台帳に接続し、オンデマンドでアルゴリズムを実行することができる。さらに、台帳検証スレッドがピアの一部として実装される場合、検証は、バックグラウンド・プロセス/スレッドとすることができ、様々な可能な方法でトリガすることができ、その方法には、限定はしないが、以下が含まれる。(1)スレッドは、周期的に台帳を検証し、そこで、前のスキャンが終了した後、特定の期間にトリガされる、(2)スレッドは、ピア・ノードのリソース(すなわち、CPU、メモリなど)の利用が閾値よりも低いときにトリガされ得る、(3)スレッドは、管理者によって明確にトリガされ得る。台帳検証スレッドが独立したプログラムとして実装される場合、管理者は、オンデマンドで台帳検証スレッドを実行することができる。
図1は、例示の実施形態による、複数のブロックチェーン・ピアを含むブロックチェーン・ネットワーク100を示す。図1の例を参照すると、ネットワーク100は、ブロックチェーン・ノード110、112、114、116、118、および120を含み、それらは、インターネット、プライベート・ネットワークなどのようなネットワーク130を介して接続される。この例では、ノード(110〜120)のどれでも、ピア、エンドーサ(endorser)、オーダラ(orderer)などのような1つまたは複数の役割を果たすことができる。様々な態様によれば、ノード110〜120のどれでも、それぞれのノードによって格納された分散型台帳のデータ・ブロックを確認/検証するために、そこにインストールされたおよびそこで実行される台帳検証スレッドを有することができる。
例えば、ブロックチェーン・ノード110は、ブロックチェーン・ノード110が格納した分散型台帳のコピーを確認するために、そこで実行される台帳検証スレッドを有することができる。破損ブロックが存在していると台帳検証スレッドが決定すると、台帳検証スレッドは、ブロックチェーン・ノード110に、他のノード112、114、116、118、および120のいずれかに置換ブロックの要求を送らせることができる。それに応じて、置換ブロックが取得され、ブロックチェーン・ノード110は、置換ブロックを確認することができる。成功裏に確認されると、ブロックチェーン・ノード110は、破損ブロックを置換ブロックに置き換えることができる。しかしながら、検証が成功しない場合、ブロックチェーン・ノード110は、別のノードから置換ブロックを要求することができる。
図2は、例示の実施形態による、分散型台帳180と相互作用する台帳検証スレッド160を示す。この例では、台帳検証スレッド160(すなわち、プログラムおよびコンパイル済みコード)と分散型台帳180のファイルとの両方は、台帳検証スレッド160と分散型台帳180とが互いに分離されるように、メモリ150において格納される。様々な実施形態によれば、台帳検証スレッド160は、このピアの分散型台帳180の完全性をチェックする、ブロックチェーン・ピア・ノードで実行されるプログラムを含むことができる。台帳検証スレッド160は、台帳上の破損された1つまたは複数のデータ・ブロックを検出するための破損検出器モジュール162と、台帳上のどのブロックが影響されているかを検出するための被影響ブロック・モジュール164と、破損ブロックに対する正しいブロックを1つまたは複数の隣接するピア・ノードから取得するためのリクエスタ・モジュール166と、少なくとも破損データ・ブロックを置換データ・ブロックと置き換える(および場合によっては他の後続のデータ・ブロックを置き換える)ための置換器モジュール168とを含むことができる。
破損ブロック検出モジュール162は、様々な破損検出プロセスを実施することができる。ピアは多くの台帳を含むことができ、各台帳はリンクされたリストに論理的に編成される。リンクされたリストの各項目はブロックを表し、同じ台帳の異なるブロックはハッシュ・ポインタによって接続される。各ブロックは、ヘッダ・セクションおよびデータ・セクションを含む。ブロック・ヘッダは、前のブロックのハッシュ値を含む。基本的に、ブロックBは、以下の条件hash(B)==nextBlock.Header.prevBlockHashが満たされる場合、有効であると見なされる。そうでなければ、ブロックBは破損ブロックと見なされる。
様々な実施形態によれば、多数の手法の中からの1つまたは複数の方法を使用して、台帳内の破損したブロックを検出することができる。例えば、破損検出は、171において、台帳を順次スキャンし、ハッシュ値と比較することによって各ブロックを検証することを含むことができるが、それは、CPUに負担をかけることがある。
別の例として、破損検出は、172において、以前にメモリ150に格納されたバックアップとの台帳のビット単位(bit-by-bit)の比較を実行することを含むことができる。この手法は、ハッシュ値を計算するよりも速いストリーミング方法で、台帳をバックアップと比較することができる。しかし、台帳バックアップは、いつも有効であるとは限らず、攻撃に対して脆弱である可能性がある。
別の例として、173において、破損検出は、現在要求されているブロックなどに基づいた分析ワークロードからのアクセス・パターンに基づいてデータ・ブロックをプリフェッチすることができる。この例では、いくつかのブロックをプリフェッチおよび検証することができる。プリフェッチ操作は、ブロック間の関係について通知するヒューリスティックに基づくことができる。このヒューリスティックに基づき、ブロックがアクセスされると、関連するブロックがプリフェッチおよび検証される。例えば、ヒューリスティックは、ブロック・アクセスの局所性原理に基づくことができ、ブロックがアクセスされると、近い将来に近くのブロックがアクセスされる確率が高いことが認められる。
別の例として、174において、破損検出器は、ブロックを検証するためにチェックサム・アルゴリズム(例えば、巡回冗長検査(CRC)など)を実装することができる。この手法は、ブロックごとにチェックサムを作成し、このチェックサムを使用してブロックを検証することができる。CRCなどの高速チェックサム生成アルゴリズムは、ブロックのハッシュを計算するよりも速い。しかし、チェックサム・データも、攻撃に対して脆弱である可能性がある。CRCは、ハッシュ・ベース手法とは多少違うように動作することができる。この場合、CRCアルゴリズムを使用して、ブロック和の並列リスト(parallel list)を作成することができる。これらの和が、ハッシュの代わりにチェックされる。そうすることの利点は、この手法の速度が速いことである。データは、チェック・アルゴリズムとプロセスのメモリに保持されるので、これらは、台帳が脆弱である攻撃に対して脆弱ではない。
別の例として、175において、破損検出は、すべてではなくいくつかの検証すべきブロックをランダムに選ぶ場合がある。この手法は、CPUの消費が台帳全体を検証することよりも少ないが、台帳のすべてのブロックの正当性を保証できるとは限らない確率的手法である。
ピアは、置換ブロックを受け取ると、既定のブロックチェーン・アクションであり得る、次に続くブロックに格納されたブロックのハッシュを使用することを含む様々な方法でブロックの有効性を決定することができる。別の例として、ピアは、ピアのメモリに格納されたブロックのハッシュを使用することができる。この例では、ピアは、起動時にピアを横断して検証していたときにこのハッシュを得ることができる。
ピアは様々な方法で選択できることも理解されるべきである。例えば、ブロックが破損ブロックとして検出された場合、ピア(すなわち、ピア1)は、正しいブロックを得るために別のピアに連絡をとる必要がある。台帳修正プロセスのより良好な性能を達成するために、ピアは、ネットワーク接続がより良好な別のピアを選ぶことができる。ピアは様々な場所にわたることがあり、様々なピアの間のネットワーク品質は時々変化する。より良好なネットワーク接続はブロック送信を促進し、それにより、台帳修正プロセスの性能を改善することができる。一例として、ネットワーク接続の品質は、「ping」の待ち時間によって測定することができる。別の例として、ピアは、それほどビジーでない別のピアを選ぶことができる。様々なピアで実行されているワークロードは同じではない。例えば、Hyperledger Fabricでは、いくつかのピア・ノードは単にブロックをコミットするが、いくつかの他のピア・ノードは、さらに、トランザクションをシミュレートする必要がある。それゆえに、それほど集中的でないワークロードを実行しているピア・ノードを選ぶほうが良いことがあり、その結果、そのピアは、要求に対してより迅速に対応することができ、それは、さらに、台帳修正プロセスの性能を改善する。
本明細書で説明するように、ブロックチェーンは、互いに通信する多数のノードを含む分散型システムである。ブロックチェーンは、チェーンコードと呼ばれるプログラム(例えば、スマート・コントラクトなど)を操作し、状態および台帳データを保持し、トランザクションを実行する。いくつかのトランザクションは、チェーンコードで呼び出された操作である。概して、ブロックチェーン・トランザクションは、一般に、特定のブロックチェーン・メンバによって「承認(endorsed)」されなければならず、承認されたトランザクションのみが、ブロックチェーンにコミットされ、ブロックチェーンの状態に影響を与えることができる。承認されない他のトランザクションは無視される。管理機能およびパラメータのための1つまたは複数の特別なチェーンコードが存在することがあり、システム・チェーンコードと総称される。
ノードは、ブロックチェーン・システムの通信エンティティである。「ノード」は、異なるタイプの多数のノードを同じ物理サーバ上で実行できるという意味で、論理機能を実行することができる。ノードは、信頼ドメインにおいてグループ化され、ノードを様々な方法で制御する論理エンティティに関連付けられる。ノードには、トランザクション呼出し(Transaction-invocation)をエンドーサ(例えば、ピア)にサブミットし、トランザクション提案(Transaction-proposal)を順序付けサービス(例えば、順序付けノード)にブロードキャストするクライアントまたはサブミッティング・クライアント・ノードなどの様々なタイプが含まれてもよい。別のタイプのノードは、クライアントがサブミットしたトランザクションを受け取り、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードである。ピアは、必要条件ではないが、エンドーサの役割を有することもできる。順序付けサービス・ノードまたはオーダラは、すべてのノードのための通信サービスを実行するノードであり、トランザクションをコミットし、またブロックチェーンのワールドステートを変更するときのシステムのピア・ノードの各々へのブロードキャストなどの配信保証(delivery guarantee)を実装し、これは、通常、制御およびセットアップ情報を含む初期のブロックチェーン・トランザクションの別名である。
本明細書で説明するように、台帳は、ブロックチェーンのすべての状態遷移の順序付けられた改ざん防止付き記録である。状態遷移は、参加当事者(例えば、クライアント・ノード、順序付けノード、エンドーサノード、ピア・ノードなど)によってサブミットされたチェーンコード呼出し(すなわち、トランザクション)から生じてもよい。トランザクションは、作成、更新、削除などのような1つまたは複数のオペランドとして台帳にコミットされる1組のアセット・キーと値のペアをもたらすことができる。台帳は、変更不能な順序付け済み記録をブロックに格納するために使用されるブロックチェーン(チェーンとも呼ばれる)を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースをさらに含む。一般に、チャネル当たり1つの台帳が存在する。各ピア・ノードは、それらのピア・ノードがメンバであるチャネルごとに台帳のコピーを維持する。
チェーンは、ハッシュ・リンクされたブロックとして構造化されたトランザクション・ログであり、各ブロックは、N個のトランザクションのシーケンスを含み、ここで、Nは1以上である。ブロック・ヘッダは、ブロックのトランザクションのハッシュ、ならびに前のブロックのヘッダのハッシュを含む。このようにして、台帳のすべてのトランザクションは、順序付けられ、暗号によって相互にリンクされ得る。その結果、ハッシュ・リンクを壊さずに、台帳データを改ざんすることはできない。最も最近追加されたブロックチェーン・ブロックのハッシュは、それ以前に生じたチェーンのあらゆるトランザクションを表し、すべてのピア・ノードが一貫した信頼のできる状態であることを保証することを可能にする。チェーンは、ブロックチェーン・ワークロードの追記のみの性質(append-only nature)を効率的にサポートするピア・ノード・ファイル・システム(すなわち、ローカル、付属ストレージ、クラウドなど)に格納されてもよい。
変更不能な台帳の現在の状態は、チェーン・トランザクション・ログに含まれるすべてのキーの最新の値を表す。現在の状態は、チャネルに知られている最新のキー値を表すので、時には、ワールドステートと呼ばれる。チェーンコード呼出しは、台帳の現在の状態のデータに対してトランザクションを実行する。これらのチェーンコードの相互作用を効率的にするために、最新のキーの値を状態データベースに格納することができる。状態データベースは、単に、チェーンのトランザクション・ログへのインデックス付けされたビューとすることができ、それゆえに、それは、チェーンからいつでも再生成することができる。状態データベースは、ピア・ノード開始時に、およびトランザクションが受入れられる前に、自動的に回復されてもよい(または必要ならば生成されてもよい)。
図3は、例示の実施形態による、ブロックチェーン・アーキテクチャ構成200を示す。図3を参照すると、ブロックチェーン・アーキテクチャ200は、特定のブロックチェーン要素、例えば、ブロックチェーン・ノード202のグループを含むことができる。ブロックチェーン・ノード202は、1つまたは複数のノード204〜210を含むことができる。(4つのノードが、単に例として示されている)。これらのノードは、ブロックチェーン・トランザクション追加および検証プロセス(合意)などのいくつかのアクティビティに参加する。ブロックチェーン・ノード204〜210の1つまたは複数は、トランザクションを承認することができ、アーキテクチャ200のすべてのブロックチェーン・ノードに順序付けサービスを提供することができる。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層216に格納されたブロックチェーン変更不能台帳に書き込むことを要求することができ、そのコピーが、さらに、下支えの物理インフラストラクチャ214に格納されてもよい。ブロックチェーン構成は、格納されたプログラム/アプリケーション・コード220(例えば、チェーンコード、スマート・コントラクトなど)にアクセスおよび実行するためにアプリケーション・プログラム・インタフェース(API)222にリンクされた1つまたは複数のアプリケーション224を含むことができ、それは、参加者によって求められたカスタマイズ化構成に従って作成されてもよく、それ自体の状態を維持し、それ自体のアセットを制御し、外部情報を受け取ることができる。これは、トランザクションとしてデプロイされ、分散型台帳への追記を介して、すべてのブロックチェーン・ノード204〜210にインストールされ得る。
ブロックチェーン・ベースまたはプラットフォーム212は、ブロックチェーン・データ、サービス(例えば、暗号トラスト・サービス、仮想実行環境など)、および、下支えの物理コンピュータ・インフラストラクチャの様々な層とを含むことができ、これらは、新しいトランザクションを受け取り格納し、データ・エントリにアクセスしようとしている監査役にアクセスを与えるために使用することができる。ブロックチェーン層216は、プログラム・コードを処理し、物理インフラストラクチャ214に関与するのに必要な仮想実行環境へのアクセスを提供するインタフェースを公開することができる。暗号トラスト・サービス218を使用して、アセット交換トランザクションなどのトランザクションを確認し、情報を秘密に保つことができる。
図3のブロックチェーン・アーキテクチャ構成は、ブロックチェーン・プラットフォーム212によって公開された1つまたは複数のインタフェースおよび提供されるサービスを介して、プログラム/アプリケーション・コード220を処理および実行することができる。コード220は、ブロックチェーン・アセットを制御することができる。例えば、コード220は、データを格納および転送することができ、スマート・コントラクトおよび条件またはその実行の対象である他のコード要素に関連付けられたチェーンコードの形態でノード204〜210によって実行されてもよい。非限定の例として、スマート・コントラクトは、リマインダ、更新、または変更、更新などの対象となる他の通知、あるいはその組合せを実行するために作成することができる。スマート・コントラクトは、それ自体を使用して、認定とアクセス要件、および台帳の使用に関連するルールを識別することができる。例えば、情報226は、ブロックチェーン層216に含まれる1つまたは複数の処理エンティティ(例えば、仮想マシン)で処理することができる。結果228は、台帳に追加されるデータのブロックを含むことができる。物理インフラストラクチャ214を利用して、本明細書に記載されたデータまたは情報のうちのいずれかを取得することができる。
チェーンコード内で、スマート・コントラクトを、高レベル・アプリケーションおよびプログラミング言語を介して作成し、次いで、ブロックチェーン内のブロックに書き込むことができる。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散型ネットワーク)により、登録、格納、または複製、あるいはその組合せが行われる実行可能コードを含むことができる。トランザクションは、スマート・コントラクトに関連する条件が満たされたことに応じて実行できるスマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態への信頼のできる変更をトリガすることができる。スマート・コントラクトの実行によって生じたブロックチェーン台帳への変更は、1つまたは複数の合意プロトコルを通してブロックチェーン・ピアの分散型ネットワークの全体にわたって自動的に複製され得る。
スマート・コントラクトは、キー−値のペアのフォーマットでブロックチェーンにデータを書き込むことができる。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納された値を読み出し、それをアプリケーション操作で使用することができる。スマート・コントラクト・コードは、様々な論理演算の出力をブロックチェーンに書き込むことができる。コードを使用して、仮想マシンまたは他のコンピューティング・プラットフォームで一時的なデータ構造を作成することができる。ブロックチェーンに書き込まれたデータは、公開することができ、または暗号化し秘密として維持することができ、あるいはその両方を行うことができる。スマート・コントラクトによって使用/生成された一時データは、提供された実行環境によってメモリに保持され、次いで、ブロックチェーンで必要とされるデータが識別された後、削除される。
チェーンコードは、追加の機能とともに、スマート・コントラクトのコード解釈を含むことができる。本明細書で説明するように、チェーンコードは、合意プロセスの間にチェーン検証ソフトによって一緒に実行および検証される、コンピューティング・ネットワークに配置されたプログラム・コードとすることができる。チェーンコードは、ハッシュを受け取り、以前に格納された特徴抽出器の使用によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取得する。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュとが一致した場合、チェーンコードは、要求されたサービスに認定キーを送る。チェーンコードは、暗号の詳細に関連付けられたブロックチェーン・データに書き込むことができる。
図4は、例示の実施形態による、破損ブロックを自己修正するためのブロックチェーン・ノード間のトランザクションの流れ250を示す。この例では、ブロックチェーン・ノード204は、ブロックチェーン・ノード204によって管理される分散型台帳の破損データ・ブロックを自動検出し自己修復する。ここでは、破損した台帳は、ブロックチェーン・ノード204によって格納されているローカル・コピーであり得る。231において、ブロックチェーン・ノード204で実行される台帳検証スレッドは、図2の171〜175で上述した方法のうちの1つまたは複数を使用して、台帳検証プロセスを実行する。232において、ブロックチェーン・ノード204の台帳検証スレッドは、破損ブロックを検出する。233において、ブロックチェーン・ノード204は、置換ブロックを受け取るべきブロックチェーン・ノード206を識別および選択し、置換ブロックの要求を送信する。置換ブロックの要求は、破損ブロックのIDを含むことができ、1つまたは複数の後続ブロックのIDをさらに含むことができる。要求がブロックチェーン・ノード206に到着すると、要求は、ブロックチェーン・ノード206の台帳検証スレッドによって処理されるのではなく、代わりに、Hyperledger Fabricに存在し、そのような要求をリッスンし、それに応じてブロックを戻す組み込みルーチン/機能によって処理され得る。
234において、選択されたブロックチェーン・ノード206は、要求元のブロックチェーン・ノード204を、1つまたは複数の暗号キー、ブロック・データなどを使用して検証し、置換ブロックをブロックチェーン・ノード204に送信する。ここで、ブロックチェーン・ノード204は、235において、置換ブロックを検証し、ブロックチェーン・ノード204は、そのブロックが有効である場合、破損ブロックをブロックチェーン・ノード206から受け取った置換ブロックと置き換えることができる。しかしながら、この例では、236において、ブロックチェーン・ノード204の台帳検証スレッドは、置換ブロックが有効でないと決定する。それゆえに、237において、台帳検証スレッドは、次のブロックチェーン・ノード208を選択し、それにより、237において、ブロックチェーン・ノード204は、置換ブロックの要求を次のブロックチェーン・ノード208に送る。238において、ブロックチェーン・ノード208は、ブロックチェーン・ノード204を検証し、ブロックチェーン・ノード204によって要求された置換ブロックのコピーを送信する。239において、ブロックチェーン・ノード204で実行されている台帳検証スレッドは、置換ブロックの有効性を確認し、240において破損ブロックを置き換える。
図5は、分散型の分散されたピア・ツー・ピア・アーキテクチャと、ユーザの役割および許可を管理する認証局318とを特徴とする許可型ブロックチェーン・ネットワーク300の一例を示す。この例では、ブロックチェーン・ユーザ302は、許可型ブロックチェーン・ネットワーク310にトランザクションをサブミットすることができる。この例では、そのトランザクションは、デプロイ、呼出し、照会とすることができ、SDKを活用するクライアント側アプリケーションを通して、REST APIなどによって直接発行され得る。信頼できるビジネス・ネットワークは、監査役(例えば、米国の株式市場の証券取引委員会)などの規制当局システム314へのアクセスを与えることができる。一方、ノード312のブロックチェーン・ネットワーク・オペレータ・システムは、規制当局システム314を「監査役」としておよびブロックチェーン・ユーザ302を「クライアント」として登録することなどのメンバの許可を管理する。監査役は、台帳の照会にのみ制限されることがあるが、一方、クライアントは、特定のタイプのチェーンコードをデプロイし、呼び出し、照会することを認可されることがある。
ブロックチェーン開発者システム316は、チェーンコードおよびクライアント側アプリケーションを書く。ブロックチェーン開発者システム316は、RESTインタフェースを通してネットワークにチェーンコードを直接配置することができる。従来のデータ・ソース330からの資格情報をチェーンコードに含めるために、開発者システム316は、データにアクセスするのにアウトオブバンド接続を使用することができる。この例では、ブロックチェーン・ユーザ302は、ピア・ノード312を通してネットワークに接続する。トランザクションを続行する前に、ピア・ノード312は、認証局318からユーザの登録およびトランザクション証明書を取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン・ネットワーク310で取引するために、これらのデジタル証明書を所有しなければならない。一方、チェーンコードを駆動しようとするユーザは、従来のデータ・ソース330で資格情報を確認するように要求されることがある。ユーザの認定を確認するために、チェーンコードは、従来の処理プラットフォーム320を通してこのデータへのアウトオブバンド接続を使用することができる。
図6は、例示の実施形態による、台帳修正プロセスの複数の例を示す。この例では、ブロックチェーン台帳400は、3つのファイル(すなわち、ファイル1、ファイル2、およびファイル3)を含む複数のファイルから構成される。この例では、台帳検証スレッドは、第2のファイル(ファイル410)に格納されている破損データ・ブロック(ブロックA)を検出する。Hyperledger Fabricなどのブロックチェーン・システムでは、台帳は、複数の固定サイズファイルとして物理的に編成され、ブロックは、これらのファイルに連続した形態で格納される。図6の例に示されるように、第2のファイル410のブロックAは壊れたブロックとして検出される。一方、ブロックA’は、別のピアから取得され検証された正しいブロックである。ブロックAのサイズがブロックA’のサイズと等しくない場合、ブロックAをブロックA’と単に置き換えると、ブロックBに上書きされるか、またはブロックAとブロックBとの間にギャップが残される(そしてブロックBに加えて任意の他の後続ブロックに問題を引き起こす)ことがある。それゆえに、台帳修正プロセスは、最初に、第2のファイル410のサイズが変わったかどうかを決定/チェックすることができる。
図6の例に示されるように、台帳検証スレッドによって実行される台帳修正プロセスは、ブロックAの後に続く第2のファイル410のすべてのブロックを置き換えることがある。例えば、プロセス411において、台帳修正プロセスは、データ・ブロックAのサイズが本来あるべきサイズよりも小さいので、ブロックA、ブロックB、およびブロックCを置き換える。一方、プロセス412の例では、台帳修正プロセスは、データ・ブロックAのサイズが本来あるべきサイズよりも大きいので、ブロックA、ブロックB、およびブロックCを置き換える。その他に、データ・ブロックAのサイズが変わらない(そして全ファイル・サイズを変更しない)場合、ブロックAのみを上書きすることができる。
理解されるように、ブロックは、ファイル・システムのファイルに格納される。一般に、1つのファイルは、連続的な一連のブロックを含む。それゆえに、悪意のあるユーザが、ブロックAを含むファイルを開き、いくつかのランダムなバイトをそのファイルのブロックAがある場所に追加する場合、ブロックAは、プロセス412のケースのように大きくなることになる。同様に、悪意のあるユーザがそのファイルのいくつかのバイトを削除する場合、ブロックAはプロセス411のケースのように小さくなることになる。データ・ブロックAをデータ・ブロックA’と置き換える場合、ブロックAおよびブロックA’は、ファイルの同じオフセットで開始する必要があるが、しかしながら、ブロックA’のサイズはブロックAのサイズよりも大きく、ブロックAとブロックBとが元の台帳ファイルで隣接している。したがって、ブロックAがブロックA’と置き換えられる場合、ブロックBの一部がブロックA’によって上書きされることになり、それは許容できない。
別の例として、ブロックAが破損して大きくなった場合、ブロックAをブロックA’に単に置き換えると、ブロックA’とブロックBとの間にファイル欠陥(file hole)を残すことになり、それは、やはり、台帳の完全性を壊す。その上、ブロックAが破損されて、大きくなるかまたは小さくなる場合、これにより、そのファイルのすべての後続のブロックがオフセットされる。それゆえに、この場合、ブロックAしか破損されていないにもかかわらず、その特定のファイルのすべての後続のブロック(すなわち、この例では、ブロックBおよびブロックC)が、台帳全体の完全性を保証するために、置き換えられるべきである。したがって、ブロックBおよびCが破損されなかったとしても、ファイル全体を修正するために、ブロックはすべて、ファイルの連続性を保証するように正しいシーケンスに書き直される必要がある。
一方、プロセス413の第3のケースでは、ブロックAは破損されているが、そのサイズが変わっていない。言い換えれば、ブロックA’のサイズはブロックAのサイズに等しく、このファイルのすべての後続のブロックのオフセットは同じままである。それゆえに、ブロックAをブロックA’に単に置き換えることにより、破損ブロックAは直されることになる。同時に、ブロックBは上書きされないことになり、そしてまたブロックA’とブロックBとの間にファイル欠陥は存在しない。
図7は、例示の実施形態による、分散型台帳の破損データ・ブロックを自己修正するための方法500を示す。例えば、方法500は、クラウド・プラットフォーム、サーバ、デスクトップ・コンピュータ、ユーザ・デバイスなどで実装されてもよいブロックチェーン・ピア・ノードなどのコンピューティング・ノードによって実行することができる。図7を参照すると、510において、この方法は、台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別することを含むことができる。例えば、台帳検証スレッドは、分散型台帳を構成するファイルとは別に格納されているコンパイル済みコードを有するメモリで実行されるプログラムを含むことができる。分散型台帳ファイルは、分散型台帳と対話しているユーザ/ノードから分離されるか、またはそうでなければ隠されてもよい。
様々な態様によれば、破損した1つまたは複数のデータ・ブロックは、様々な方法のいずれかによって検出することができる。例えば台帳検証スレッドを介して破損データ・ブロックを識別することは、分散型台帳のデータ・ブロックを順次スキャンし、ランタイムに生成された、順次スキャンされたデータ・ブロックのそれぞれのハッシュ値に基づいて、順次スキャンされたデータ・ブロックを検証して、破損データ・ブロックを識別することを含むことができる。別の例として、台帳検証スレッドを介して破損データ・ブロックを識別することは、分散型台帳のバックアップ・コピーとの分散型台帳のビット単位の比較を実行して、ビット単位の比較に基づいて破損データ・ブロックを識別することを含むことができる。別の例として、台帳検証スレッドを介して破損データ・ブロックを識別することは、分散型台帳から現在選択されているデータ・ブロックに関連するブロック・アクセス・パターンに基づいて分散型台帳からデータ・ブロックをプリフェッチし、プリフェッチされたデータ・ブロックのそれぞれのハッシュに基づいてプリフェッチされたデータ・ブロックを検証して、プリフェッチされたデータ・ブロックから破損データ・ブロックを識別することを含むことができる。別の例として、台帳検証スレッドを介して破損データ・ブロックを識別することは、分散型台帳のデータ・ブロックをそれぞれのデータ・ブロックの以前に生成されたチェックサム値に基づいて順次検証して、チェックサム値に基づいて破損データ・ブロックを識別することを含むことができる。別の例として、台帳検証スレッドを介して破損データ・ブロックを識別することは、分散型台帳からデータ・ブロックをランダムに選択し、ランダムに選択されたデータ・ブロックのそれぞれのハッシュに基づいてランダムに選択されたデータ・ブロックを検証して、ランダムに選択されたデータ・ブロックから破損データ・ブロックを識別することを含むことができる。
520において、この方法は、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得することを含むことができる。ピアは、ランダムに選択されてもよく、または現在のスループット、場所、現在のワークロード、ブロックチェーン・ピアのタイプ(例えば、承認ノード、編成ノード、ピア・ノードなど)などのような1つまたは複数の属性に基づいて選択されてもよい。530において、この方法は、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定することを含むことができ、置換データ・ブロックが有効であると決定したことに応じて、540において、この方法は、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えることを含むことができる。いくつかの実施形態では、以前に格納された検証ブロックは、台帳検証スレッドを実行するブロックチェーン・ノードの台帳のバックアップ・コピーに以前に格納されたブロックとすることができる。別の例として、置換データ・ブロックは、ブロックのチェーン内の次に続くデータ・ブロックから得られるブロックのハッシュ値に基づいて検証することができる。
いくつかの実施形態では、破損ブロックは、元のブロックのサイズを変更し、それにより、台帳のサイズの変更を引き起こすことがある。それゆえに、単に破損ブロックを置き換えると、台帳に欠陥が残ることがあり(すなわち、破損ブロックのサイズが小さい場合)、または隣接するブロックの一部が上書きされることがある(すなわち、破損ブロックのサイズが大きい場合)。それゆえに、いくつかの実施形態では、この方法は、破損データ・ブロックが元のデータ・ブロックのブロック・サイズを変更したと決定された場合、分散型台帳のブロックのチェーンにおける1つまたは複数の次に続くデータ・ブロックについての置換データ・ブロックを取得することをさらに含むことができる。
図8は、例示の実施形態による操作の例示の方法の1つまたは複数に従ってブロックチェーンで様々な操作を実行するように構成された例示の物理インフラストラクチャを示す。図8を参照すると、例示の構成600は、ブロックチェーン620とスマート・コントラクト640とを有する物理インフラストラクチャ610を含み、物理インフラストラクチャ610は、例示の実施形態のいずれかに含まれる操作ステップ612のいずれかを実行することができる。ステップ/操作612は、1つまたは複数の流れ図または論理図あるいはその両方で説明または示されるステップのうちの1つまたは複数を含むことができる。ステップは、コンピュータ・システム構成の物理インフラストラクチャ610に常駐する1つまたは複数のスマート・コントラクト640またはブロックチェーン620あるいはその両方に書き込まれるかまたはそれから読み出される出力または書き込まれた情報を表すことができる。データは、実行されたスマート・コントラクト640またはブロックチェーン620あるいはその両方から出力され得る。物理インフラストラクチャ610は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組合せを含むことができる。
図9は、例示の実施形態による、ブロックチェーンでスマート・コントラクト条件を実施するように構成された、契約当事者と仲介サーバとの間の例示のスマート・コントラクト構成を示す。図9を参照すると、構成650は、1つまたは複数のユーザ・デバイス652またはユーザ・デバイス656あるいはその両方を明確に識別するスマート・コントラクト640によって駆動される通信セッション、アセット転送セッション、またはプロセスもしくは手順を表すことができる。スマート・コントラクト実行の実行、動作、および結果は、サーバ654で管理することができる。スマート・コントラクト640の内容は、スマート・コントラクト・トランザクションの当事者であるエンティティ652および656のうちの1つまたは複数によるデジタル署名を必要とすることがある。スマート・コントラクト実行の結果は、ブロックチェーン・トランザクションとしてブロックチェーンに書き込むことができる。
上述の実施形態は、ハードウェアで、プロセッサによって実行されるコンピュータ・プログラムで、ファームウェアで、または上述のものの組合せで実装することができる。コンピュータ・プログラムは、記憶媒体などのコンピュータ可読媒体で具現することができる。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(「RAM」)、フラッシュ・メモリ、読出し専用メモリ(「ROM」)、消去可能プログラマブル読出し専用メモリ(「EPROM」)、電気的消去可能プログラマブル読出し専用メモリ(「EEPROM」)、レジスタ、ハードディスク、リムーバブル・ディスク、コンパクト・ディスク読出し専用メモリ(「CD−ROM」)、または当技術分野で知られている任意の他の形態の記憶媒体に常駐することができる。
例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み出し、記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。代替では、記憶媒体はプロセッサに一体化されてもよい。プロセッサおよび記憶媒体は、特定用途向け集積回路(「ASIC」)に常駐することができる。代替では、プロセッサおよび記憶媒体は、別々の構成要素として常駐してもよい。例えば、図10は、上述の構成要素などのいずれかを表すかまたはそれに一体化され得る例示のコンピュータ・システム・アーキテクチャ700を示す。
図10は、本明細書に記載された本出願の実施形態の使用または機能の範囲に関していかなる限定も示唆するものではない。それとは関係なく、コンピューティング・ノード700は、先に記載された機能のいずれかを実装または実行あるいはその両方を行うことができる。
コンピューティング・ノード700には、多数の他の汎用または専用コンピューティング・システム環境または構成で操作可能なコンピュータ・システム/サーバ702がある。コンピュータ・システム/サーバ702で使用するのに適する可能性があるよく知られているコンピューティング・システム、環境、または構成、あるいはその組合せの例には、限定はしないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、携帯型またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベース・システム、セット・トップ・ボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上述のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境、などが含まれる。
コンピュータ・システム/サーバ702は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ702は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実践することができる。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルとリモートの両方のコンピュータ・システム記憶媒体に配置することができる。
図10に示されるように、クラウド・コンピューティング・ノード700のコンピュータ・システム/サーバ702は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ702の構成要素は、限定はしないが、1つまたは複数のプロセッサまたは処理ユニット704と、システム・メモリ706と、システム・メモリ706を含む様々なシステム構成要素をプロセッサ704に結合するバスとを含むことができる。
バスは、メモリ・バスもしくはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィック・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサもしくはローカル・バスを含むいくつかのタイプのバス構造のうちのいずれか1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
コンピュータ・システム/サーバ702は、一般に、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ702によってアクセス可能な任意の利用可能な媒体とすることができ、それは、揮発性と不揮発性の両方の媒体、着脱可能と着脱不能の両方の媒体を含む。システム・メモリ706は、1つの実施形態では、他の図の流れ図を実装する。システム・メモリ706は、ランダム・アクセス・メモリ(RAM)710またはキャッシュ・メモリ712あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ702は、他の着脱可能/着脱不能な揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含むことができる。単に例として、着脱不能な不揮発性の磁気媒体(図示せず、一般に「ハード・ドライブ」と呼ばれる)からの読出しおよびそれへの書込みのためのストレージ・システム714が、備えられてもよい。図示されていないが、着脱可能な不揮発性の磁気ディスク(例えば、「フロッピー(登録商標)ディスク」)からの読出しおよびそれへの書込みのための磁気ディスク・ドライブと、CD−ROM、DVD−ROM、または他の光学媒体などの着脱可能な不揮発性の光ディスクからの読出しまたはそれへの書込みのための光ディスク・ドライブとが、備えられてもよい。そのような場合に、各々は、1つまたは複数のデータ媒体インタフェースによってバスに接続することができる。以下でさらに図示および説明するように、メモリ706は、本出願の様々な実施形態の機能を実行するように構成された1組の(例えば、少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。
1組の(少なくとも1つの)プログラム・モジュール718を有するプログラム/ユーティリティ716は、限定ではなく例としてメモリ706に、ならびにオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに格納することができる。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データの各々、またはそれらのいくつかの組合せは、ネットワーク環境の実装を含むことができる。プログラム・モジュール718は、一般に、本明細書に記載されるような本出願の様々な実施形態の機能または方法あるいはその両方を実行する。例えば、1つまたは複数のプログラム・モジュール718は、破損データを検出した際に分散型台帳を検証および自己修正するための、本明細書に記載された台帳検証スレッドを実施することができる。
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現され得る。その結果、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはすべて一般に本明細書において「回路」、「モジュール」、もしくは「システム」と呼ばれることがあるソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形態をとることができる。さらに、本出願の態様は、コンピュータ可読プログラム・コードが具現された1つまたは複数のコンピュータ可読媒体で具現されたコンピュータ・プログラム製品の形態をとることができる。
コンピュータ・システム/サーバ702は、キーボード、ポインティング・デバイス、ディスプレイ722などの1つまたは複数の外部デバイス720、ユーザがコンピュータ・システム/サーバ702と対話することを可能にする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ702が1つまたは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信することもできる。そのような通信は、I/Oインタフェース724を介して行うことができる。さらにまた、コンピュータ・システム/サーバ702は、ネットワーク・アダプタ726を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えばインターネット)、あるいはその組合せなどの1つまたは複数のネットワークと通信することができる。図示のように、ネットワーク・アダプタ726は、バスを介して、コンピュータ・システム/サーバ702の他の構成要素と通信する。図示されていないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方が、コンピュータ・システム/サーバ702とともに使用されてもよいことが理解されるべきである。例には、限定はしないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが含まれる。
様々な実施形態によれば、メモリ706は、ブロックチェーン・ピアなどのブロックチェーン・ネットワークの複数のノードにわたって格納および複製される分散型台帳のローカル・コピーを格納することができる。一方、プロセッサ704は、台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている破損データ・ブロックを識別し、分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、選択されたピアから置換データ・ブロックを取得し、ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、置換データ・ブロックが有効であるかどうかを決定し、置換データ・ブロックが有効であるという決定に応じて、分散型台帳上で破損データ・ブロックを置換データ・ブロックに置き換えるように構成することができる。例えば、プロセッサ704は、プロセッサ、オペレーティング・システム、ハードウェア(ネットワーク・インタフェース726など)を制御する台帳検証スレッドを実行して、破損データ検出および置換プロセスを実行することができる。
システム、方法、および非一過性コンピュータ可読媒体のうちの少なくとも1つの例示的な実施形態が、添付の図面に示され、前述の詳細な説明に記載されたが、本出願は、開示された実施形態に限定されるのではなく、以下の特許請求の範囲に記載および定義されるように、多数の再配置、変更、および置換が可能であることが理解されよう。例えば、様々な図のシステムの機能は、本明細書に記載されたモジュールまたは構成要素の1つまたは複数によって、あるいは分散型アーキテクチャで実行することができ、送信機、受信機、または両方のペアを含むことができる。例えば、個々のモジュールによって実行される機能のすべてまたは一部は、これらのモジュールの1つまたは複数によって実行されてもよい。さらに、本明細書に記載された機能は、様々な時点に、様々なイベントに関連して、モジュールまたは構成要素の内部または外部で実行されてもよい。さらに、様々なモジュール間で送られる情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、または複数のプロトコルを介して、あるいはその両方を介して、モジュール間で送られ得る。さらに、モジュールのいずれかによって送られまたは受け取られるメッセージは、直接、または他のモジュールの1つまたは複数を介して、あるいはその両方で、送られるかまたは受け取られてもよい。
当業者は、「システム」が、パーソナル・コンピュータ、サーバ、コンソール、携帯情報端末(PDA)、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意の他の好適なコンピューティング・デバイス、あるいはデバイスの組合せとして具現され得ることを理解するであろう。上述の機能を「システム」によって実行されるとして提示することは、決して本出願の範囲を限定するものではなく、多くの実施形態のうちの1つの例を提供するものである。実際、本明細書で開示される方法、システム、および装置は、コンピューティング技術と両立する局所形態および分散形態で実施することができる。
本明細書に記載されたシステムの機能のいくつかは、それらの実施態様の独立性をさらに特に強調するために、モジュールとして提示されていることに留意されたい。例えば、モジュールは、カスタム超大規模集積(VLSI)回路もしくはゲート・アレイ、論理チップなどの既製の半導体を用いた素子、トランジスタ、または他の個別の構成要素を含むハードウェア回路として実装することができる。モジュールはまた、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ・ロジック、プログラマブル・ロジック・デバイス、グラフィック処理ユニットなどのようなプログラマブル・ハードウェア・デバイスで実装することができる。
モジュールはまた、様々なタイプのプロセッサによる実行のために少なくとも部分的にソフトウェアで実装することができる。例えば、実行可能コードの識別されたユニットは、例えば、オブジェクト、プロシージャ、または機能として編成することができるコンピュータ命令の1つまたは複数の物理的または論理的ブロックを含むことができる。それにもかかわらず、識別されたモジュールの実行ファイルは、物理的に一緒に配置する必要はなく、異なる場所に格納された異種の命令を含むことができ、異種の命令は、論理的に一緒に結合されたとき、モジュールを構成し、モジュールの規定された目的を達成する。さらに、モジュールは、例えば、ハードディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、またはデータを格納するために使用される任意の他のそのような媒体とすることができるコンピュータ可読媒体に格納されてもよい。
実際、実行可能コードのモジュールは、単一の命令または多くの命令とすることができ、さらに、いくつかの異なるコード・セグメントにわたって、異なるプログラムの間で、およびいくつかのメモリ・デバイスにわたって分散されてもよい。同様に、操作データは、本明細書では、モジュール内で識別され示されてもよく、任意の適切な形態で具現され任意の適切なタイプのデータ構造内で編成されてもよい。操作データは、単一のデータセットとして収集されてもよく、または異なるストレージ・デバイスにわたることを含む異なる場所にわたって分散されてもよく、少なくとも部分的に、単にシステムまたはネットワークに電子信号として存在してもよい。
本明細書の図に概して記載および図示されている本出願の構成要素は、多種多様な異なる構成で配列および設計することができることが容易に理解されよう。したがって、実施形態の詳細な説明は、特許請求される本出願の範囲を限定するものではなく、単に本出願の選択された実施形態を表している。
当業者は、上述が、異なる順序のステップ、または開示されているものと異なる構成のハードウェア要素、あるいはその両方で実践できることを容易に理解されよう。それゆえに、本出願が、これらの好ましい実施形態に基づいて記載されているが、特定の変更、変形、および代替の構造が明白であることが当業者には明らかであろう。
本出願の好ましい実施形態が記載されているが、記載された実施形態は単に例示であり、本出願の範囲は、その等価物および変更の全範囲(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど)で考えられるとき、添付の特許請求の範囲によってのみ定義されるべきであることが理解されるべきである。

Claims (20)

  1. 破損データ・ブロックを管理するためのコンピューティング・システムであって、前記システムが、
    分散型台帳を格納するメモリと、
    台帳検証スレッドを介して、前記分散型台帳のブロックのチェーン内に格納されている前記破損データ・ブロックを識別し、前記分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、前記選択されたピアから置換データ・ブロックを取得し、前記ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、前記置換データ・ブロックが有効であるかどうかを決定し、前記置換データ・ブロックが有効であるという前記決定に応じて、前記分散型台帳上で前記破損データ・ブロックを前記置換データ・ブロックに置き換えるように構成されたプロセッサと
    を含む、コンピューティング・システム。
  2. 前記台帳検証スレッドは、前記メモリで実行され、前記分散型台帳を構成するファイルとは別に格納されているコンパイル済みコードを有するプログラムを含む、請求項1に記載のコンピューティング・システム。
  3. 前記プロセッサは、前記破損データ・ブロックが元のデータ・ブロックのブロック・サイズを変更したと決定された場合、前記ブロックのチェーンにおける次に続くデータ・ブロックについての置換データ・ブロックを取得するようにさらに構成される、請求項1または2のいずれかに記載のコンピューティング・システム。
  4. 前記以前に格納された検証ブロックが、前記台帳検証スレッドを実行するブロックチェーン・ノードの前記分散型台帳のバックアップ・コピーに格納された正しいブロックを含む、請求項1ないし3のいずれかに記載のコンピューティング・システム。
  5. 前記プロセッサが、前記分散型台帳のデータ・ブロックを順次スキャンし、ランタイムに生成された、前記順次スキャンされたデータ・ブロックのそれぞれのハッシュ値に基づいて、前記順次スキャンされたデータ・ブロックを検証して、前記破損データ・ブロックを識別するように構成される、請求項1ないし4のいずれかに記載のコンピューティング・システム。
  6. 前記プロセッサが、前記分散型台帳のバックアップ・コピーとの前記分散型台帳のビット単位の比較を実行して、前記ビット単位の比較に基づいて前記破損データ・ブロックを識別するように構成される、請求項1ないし5のいずれかに記載のコンピューティング・システム。
  7. 前記プロセッサが、前記分散型台帳から現在選択されているデータ・ブロックに関連するブロック・アクセス・パターンに基づいて前記分散型台帳からデータ・ブロックをプリフェッチし、前記プリフェッチされたデータ・ブロックのそれぞれのハッシュに基づいて前記プリフェッチされたデータ・ブロックを検証して、前記プリフェッチされたデータ・ブロックから前記破損データ・ブロックを識別するように構成される、請求項1ないし6のいずれかに記載のコンピューティング・システム。
  8. 前記プロセッサが、前記分散型台帳のデータ・ブロックを前記それぞれのデータ・ブロックの以前に生成されたチェックサム値に基づいて順次検証して、前記チェックサム値に基づいて前記破損データ・ブロックを識別するように構成される、請求項1ないし7のいずれかに記載のコンピューティング・システム。
  9. 前記プロセッサが、前記分散型台帳からデータ・ブロックをランダムに選択し、前記ランダムに選択されたデータ・ブロックのそれぞれのハッシュに基づいて前記ランダムに選択されたデータ・ブロックを検証して、前記ランダムに選択されたデータ・ブロックから前記破損データ・ブロックを識別するように構成される、請求項1ないし8のいずれかに記載のコンピューティング・システム。
  10. 破損データ・ブロックを管理するための方法であって、前記方法が、
    台帳検証スレッドを介して、分散型台帳のブロックのチェーン内に格納されている前記破損データ・ブロックを識別することと、
    前記分散型台帳へのアクセスを有する複数のブロックチェーン・ピアの中からブロックチェーン・ピアを選択し、前記選択されたピアから置換データ・ブロックを取得することと、
    前記ブロックのチェーンに関連する以前に格納された検証ブロックのうちの1つまたは複数に基づいて、前記置換データ・ブロックが有効であるかどうかを決定することと、
    前記置換データ・ブロックが有効であると決定したことに応じて、前記分散型台帳上で前記破損データ・ブロックを前記置換データ・ブロックに置き換えることと
    を含む、方法。
  11. 前記台帳検証スレッドが、前記分散型台帳を構成するファイルとは別に格納されているコンパイル済みコードを有するメモリで実行されるプログラムを含む、請求項10に記載の方法。
  12. 前記取得することは、前記破損データ・ブロックが元のデータ・ブロックのブロック・サイズを変更したと決定された場合、前記ブロックのチェーンにおける次に続くデータ・ブロックについての置換データ・ブロックを取得することをさらに含む、請求項10または11のいずれかに記載の方法。
  13. 前記以前に格納された検証ブロックが、前記台帳検証スレッドを実行するブロックチェーン・ノードの前記分散型台帳のバックアップ・コピーに格納された正しいブロックを含む、請求項10ないし12のいずれかに記載の方法。
  14. 前記台帳検証スレッドを介して前記破損データ・ブロックを前記識別することが、前記分散型台帳のデータ・ブロックを順次スキャンし、ランタイムに生成された、前記順次スキャンされたデータ・ブロックのそれぞれのハッシュ値に基づいて、前記順次スキャンされたデータ・ブロックを検証して、前記破損データ・ブロックを識別することを含む、請求項10ないし13のいずれかに記載の方法。
  15. 前記台帳検証スレッドを介して前記破損データ・ブロックを前記識別することが、前記分散型台帳のバックアップ・コピーとの前記分散型台帳のビット単位の比較を実行して、前記ビット単位の比較に基づいて前記破損データ・ブロックを識別することを含む、請求項10ないし14のいずれかに記載の方法。
  16. 前記台帳検証スレッドを介して前記破損データ・ブロックを前記識別することが、前記分散型台帳から現在選択されているデータ・ブロックに関連するブロック・アクセス・パターンに基づいて前記分散型台帳からデータ・ブロックをプリフェッチし、前記プリフェッチされたデータ・ブロックのそれぞれのハッシュに基づいて前記プリフェッチされたデータ・ブロックを検証して、前記プリフェッチされたデータ・ブロックから前記破損データ・ブロックを識別することを含む、請求項10ないし15のいずれかに記載の方法。
  17. 前記台帳検証スレッドを介して前記破損データ・ブロックを前記識別することが、前記分散型台帳のデータ・ブロックを前記それぞれのデータ・ブロックの以前に生成されたチェックサム値に基づいて順次検証して、前記チェックサム値に基づいて前記破損データ・ブロックを識別することを含む、請求項10ないし16のいずれかに記載の方法。
  18. 前記台帳検証スレッドを介して前記破損データ・ブロックを前記識別することが、前記分散型台帳からデータ・ブロックをランダムに選択し、前記ランダムに選択されたデータ・ブロックのそれぞれのハッシュに基づいて前記ランダムに選択されたデータ・ブロックを検証して、前記ランダムに選択されたデータ・ブロックから前記破損データ・ブロックを識別することを含む、請求項10ないし17のいずれかに記載の方法。
  19. 破損データ・ブロックを管理するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
    処理回路によって可読であり、請求項10ないし18のいずれかに記載の方法を実行するために前記処理回路によって実行するための命令を格納するコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品。
  20. コンピュータ可読媒体に格納され、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータで実行されるとき、請求項10ないし18のいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
JP2020550639A 2018-03-27 2019-03-08 ブロックチェーン台帳のためのランタイム自己修正 Active JP7177576B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/937,375 2018-03-27
US15/937,375 US10754989B2 (en) 2018-03-27 2018-03-27 Runtime self-correction for blockchain ledgers
PCT/EP2019/055894 WO2019185329A1 (en) 2018-03-27 2019-03-08 Runtime self-correction for blockchain ledgers

Publications (2)

Publication Number Publication Date
JP2021518705A true JP2021518705A (ja) 2021-08-02
JP7177576B2 JP7177576B2 (ja) 2022-11-24

Family

ID=65767003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020550639A Active JP7177576B2 (ja) 2018-03-27 2019-03-08 ブロックチェーン台帳のためのランタイム自己修正

Country Status (5)

Country Link
US (1) US10754989B2 (ja)
EP (1) EP3776208B1 (ja)
JP (1) JP7177576B2 (ja)
CN (1) CN111868689A (ja)
WO (1) WO2019185329A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111869159B (zh) * 2018-04-27 2023-05-02 株式会社东芝 篡改检测系统及篡改检测方法
US10985907B2 (en) * 2018-05-16 2021-04-20 International Business Machines Corporation Identifying faults in a blockchain ordering service
US11296864B2 (en) 2018-05-16 2022-04-05 International Business Machines Corporation Identifying faults in a blockchain ordering service
CN109086325A (zh) * 2018-06-29 2018-12-25 阿里巴巴集团控股有限公司 基于区块链的数据处理方法和装置
US20200042305A1 (en) * 2018-07-31 2020-02-06 Toshiba Tec Kabushiki Kaisha System and method for secure peer deployment of software to networked devices
CN111783114B (zh) 2018-08-06 2024-04-02 创新先进技术有限公司 区块链交易方法及装置、电子设备
US10671315B2 (en) 2018-08-17 2020-06-02 Bank Of America Corporation Blockchain architecture for selective data restore and migration
US11334439B2 (en) 2018-08-29 2022-05-17 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US11196542B2 (en) 2018-08-29 2021-12-07 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
US10901957B2 (en) * 2018-08-29 2021-01-26 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
CN109359974B (zh) * 2018-08-30 2020-10-30 创新先进技术有限公司 区块链交易方法及装置、电子设备
SG11202103850WA (en) 2018-10-16 2021-05-28 Eluvio Inc Decentralized content fabric
US11645376B2 (en) * 2018-11-27 2023-05-09 International Business Machines Corporation Device-based database system
US10671515B1 (en) * 2018-11-30 2020-06-02 Bank Of America Corporation Recording and playback of electronic event sequence in a distributed ledger system
MX2019006095A (es) * 2018-12-29 2019-08-14 Alibaba Group Holding Ltd Sistema y metodo para proteccion de informacion.
US11836259B2 (en) * 2019-01-16 2023-12-05 EMC IP Holding Company LLC Blockchain technology for regulatory compliance of data management systems
JP7344543B2 (ja) * 2019-07-12 2023-09-14 シスナ株式会社 有価物管理システム
EP3923546B1 (en) 2019-08-01 2022-05-18 Advanced New Technologies Co., Ltd. Shared blockchain data storage based on error correction code
EP3794532B1 (en) * 2019-08-01 2021-11-03 Advanced New Technologies Co., Ltd. Shared blockchain data storage based on error correction code
US11297029B2 (en) * 2019-10-02 2022-04-05 Paypal, Inc. System and method for unified multi-channel messaging with block-based datastore
CN110874486B (zh) * 2019-10-18 2023-10-17 蚂蚁区块链科技(上海)有限公司 一种块链式账本中的数据读取方法、装置及设备
US11907199B2 (en) * 2019-10-23 2024-02-20 Hewlett Packard Enterprise Development Lp Blockchain based distributed file systems
US11868339B2 (en) 2019-10-23 2024-01-09 Hewlett Packard Enterprise Development Lp Blockchain based distributed file systems
US11803461B2 (en) 2019-10-30 2023-10-31 Hewlett Packard Enterprise Development Lp Validation of log files using blockchain system
US11349637B2 (en) * 2019-11-04 2022-05-31 International Business Machines Corporation Random node selection for permissioned blockchain
CN111078662B (zh) * 2019-11-22 2023-01-06 苏州浪潮智能科技有限公司 一种区块链数据存储方法与装置
CA3098769C (en) * 2019-11-27 2021-08-17 Alipay (Hangzhou) Information Technology Co., Ltd. Asynchronous processing of blockchain blocks
CN111428277B (zh) * 2020-03-20 2023-08-18 中国建设银行股份有限公司 区块链数据的校验方法、装置及系统
CN111475571A (zh) * 2020-03-31 2020-07-31 深圳微众信用科技股份有限公司 一种企业数据存储方法、装置及设备
US11762844B2 (en) 2020-12-30 2023-09-19 Itron, Inc. Secure trimming of blockchain in a resource-constrained network
US11720540B2 (en) 2020-12-30 2023-08-08 Itron, Inc. Secure blockchain data recovery
US11588620B2 (en) 2020-12-30 2023-02-21 Itron, Inc. Forming a blockchain in low-bandwidth, resource-constrained network
US11249866B1 (en) * 2021-04-22 2022-02-15 Microsoft Technology Licensing, Llc Snapshot-based data corruption detection
US11522726B1 (en) 2021-06-29 2022-12-06 Fmr Llc Systems and methods for reading, storing, and correcting historical records in distributed ledgers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003065225A1 (fr) * 2002-01-31 2003-08-07 Matsushita Electric Industrial Co., Ltd. Dispositif de memoire, appareil terminal et systeme de reparation de donnees
US20170228371A1 (en) * 2016-02-05 2017-08-10 Manifold Technology, Inc. Blockchain-enhanced database
US20180082296A1 (en) * 2016-09-21 2018-03-22 R-Stor Inc. Systems and methods for using a distributed ledger for data handling
JP2021503676A (ja) * 2017-11-20 2021-02-12 オーブック・インコーポレイテッドOBOOK Inc. ブロックチェーンに基づく部屋在庫管理システム

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3668631A (en) 1969-02-13 1972-06-06 Ibm Error detection and correction system with statistically optimized data recovery
US5233618A (en) 1990-03-02 1993-08-03 Micro Technology, Inc. Data correcting applicable to redundant arrays of independent disks
JPH09330273A (ja) 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US5844919A (en) 1996-09-16 1998-12-01 Cirrus Logic, Inc. Sector and track level error correction system for disc storage systems
US7296213B2 (en) 2002-12-11 2007-11-13 Nvidia Corporation Error correction cache for flash memory
DK3457586T3 (da) * 2008-02-04 2021-09-27 Nokia Technologies Oy Fremgangsmåde og indretning til overførsel af antennekonfigurations-informationer via maskering
JP5548419B2 (ja) * 2009-09-30 2014-07-16 富士通株式会社 署名生成装置、署名検証装置、署名生成方法、署名検証方法、署名生成プログラム、および署名検証プログラム
WO2013039534A1 (en) * 2011-09-12 2013-03-21 Microsoft Corporation Querying and repairing data
JP5687648B2 (ja) * 2012-03-15 2015-03-18 株式会社東芝 半導体記憶装置およびプログラム
KR102025340B1 (ko) * 2012-11-27 2019-09-25 삼성전자 주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치, 이를 포함하는 캐쉬 메모리 및 컴퓨터 시스템
US9152502B2 (en) * 2012-12-21 2015-10-06 Microsoft Technology Licensing, Llc Data error detection and correction using hash values
US20170140408A1 (en) * 2015-11-16 2017-05-18 Bank Of America Corporation Transparent self-managing rewards program using blockchain and smart contracts
US10713654B2 (en) * 2016-01-21 2020-07-14 International Business Machines Corporation Enterprise blockchains and transactional systems
US10404469B2 (en) * 2016-04-08 2019-09-03 Chicago Mercantile Exchange Inc. Bilateral assertion model and ledger implementation thereof
US10133503B1 (en) * 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
US10360021B2 (en) * 2016-08-19 2019-07-23 Veniam, Inc. Systems and methods for reliable software update in a network of moving things including, for example, autonomous vehicles
GB2557277A (en) * 2016-12-02 2018-06-20 Cavendish Wood Ltd A distributed ledger
US11797982B2 (en) * 2017-01-06 2023-10-24 FirstBlood Technologies, Inc. Digital ledger authentication using address encoding
CN107391292B (zh) * 2017-03-24 2020-09-15 北京瑞卓喜投科技发展有限公司 针对保持区块体数据实现勘误的区块链验证方法及系统
CN107451007B (zh) * 2017-03-24 2020-11-06 北京瑞卓喜投科技发展有限公司 针对增加区块进行勘误的区块链的验证方法及系统
CN107391291B (zh) * 2017-03-24 2020-12-25 北京瑞卓喜投科技发展有限公司 修改区块链即有区块体数据的区块链勘误方法及系统
US10394634B2 (en) * 2017-06-30 2019-08-27 Intel Corporation Drive-based storage scrubbing
US11580238B2 (en) * 2018-01-29 2023-02-14 Vinay Kumar Agarwal Proof-of-approval distributed ledger

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003065225A1 (fr) * 2002-01-31 2003-08-07 Matsushita Electric Industrial Co., Ltd. Dispositif de memoire, appareil terminal et systeme de reparation de donnees
US20170228371A1 (en) * 2016-02-05 2017-08-10 Manifold Technology, Inc. Blockchain-enhanced database
US20180082296A1 (en) * 2016-09-21 2018-03-22 R-Stor Inc. Systems and methods for using a distributed ledger for data handling
JP2019532419A (ja) * 2016-09-21 2019-11-07 アール−ストール インコーポレイテッド データ処理用の分散型台帳を使用するためのシステム及び方法
JP2021503676A (ja) * 2017-11-20 2021-02-12 オーブック・インコーポレイテッドOBOOK Inc. ブロックチェーンに基づく部屋在庫管理システム

Also Published As

Publication number Publication date
US10754989B2 (en) 2020-08-25
JP7177576B2 (ja) 2022-11-24
EP3776208B1 (en) 2024-01-17
WO2019185329A1 (en) 2019-10-03
CN111868689A (zh) 2020-10-30
EP3776208A1 (en) 2021-02-17
US20190303621A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
JP7177576B2 (ja) ブロックチェーン台帳のためのランタイム自己修正
JP7382108B2 (ja) ブロックチェーンのための効率的な検証
US11526487B2 (en) Database world state integrity validation
US11151236B2 (en) File verification database system
US10985907B2 (en) Identifying faults in a blockchain ordering service
US11296864B2 (en) Identifying faults in a blockchain ordering service
US20200013025A1 (en) Conditional deferred transactions for blockchain
US11387979B2 (en) Partially-ordered blockchain
US20220138212A1 (en) Blockchain implementing reliability database
JP7228322B2 (ja) ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理
JP2022504348A (ja) ブロックチェーン・リソースを格納するブロックチェーン通知ボード
US11025430B2 (en) File provenance database system
US11139960B2 (en) File redaction database system
US11354198B2 (en) Snapshot for world state recovery
CN111796968A (zh) 受数据库交易保证的提交
US11070563B2 (en) Trace-based transaction validation and commitment
US11379316B2 (en) Snapshot restoration
WO2022116761A1 (en) Self auditing blockchain
US10834122B2 (en) Prevention of majority attacks
US10831850B2 (en) Secure URL shortening
US11032355B2 (en) Trustless notification service

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200930

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20200923

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210816

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221014

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20221102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221109

R150 Certificate of patent or registration of utility model

Ref document number: 7177576

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150