JP7159348B2 - 誤り訂正符号に基づく動的なブロックチェーンデータの記憶 - Google Patents

誤り訂正符号に基づく動的なブロックチェーンデータの記憶 Download PDF

Info

Publication number
JP7159348B2
JP7159348B2 JP2020560985A JP2020560985A JP7159348B2 JP 7159348 B2 JP7159348 B2 JP 7159348B2 JP 2020560985 A JP2020560985 A JP 2020560985A JP 2020560985 A JP2020560985 A JP 2020560985A JP 7159348 B2 JP7159348 B2 JP 7159348B2
Authority
JP
Japan
Prior art keywords
blockchain
blocks
node
nodes
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020560985A
Other languages
English (en)
Other versions
JP2021528884A (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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Publication of JP2021528884A publication Critical patent/JP2021528884A/ja
Application granted granted Critical
Publication of JP7159348B2 publication Critical patent/JP7159348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/004Notarisation, Time-Stamp, Date-Stamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/005Network, LAN, Remote Access, Distributed System
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Description

本明細書は、誤り訂正符号に基づくブロックチェーンデータの記憶に関する。
コンセンサスネットワーク、および/またはブロックチェーンネットワークとも呼ばれ得る、分散型台帳システム(DLS)は、参加するエンティティがデータを安全にかつ変更不可能に記憶することを可能にする。DLSは一般に、どのような特定のユーザ事例にも言及することなく、ブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークのタイプの例には、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークがあり得る。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御する選ばれたエンティティのグループのために提供され、アクセス制御レイヤを含む。
ブロックチェーンベースのプログラムは、分散型コンピューティングプラットフォームによって実行され得る。たとえば、分散型コンピューティングプラットフォームは、スマートコントラクトを実行するためのランタイム環境を提供する仮想マシンを含み得る。ブロックチェーンコンピューティングプラットフォームは、トランザクションベースの状態機械として見ることができる。プラットフォームにおける状態データは、ワールドステートと呼ばれるグローバルな共有される状態へと組み立てられ得る。ワールドステートは、アカウントアドレスとアカウント状態との間のマッピングを含む。ワールドステートは、マークルパトリシア木(MPT)などのデータ構造に記憶され得る。
状態データを除き、ブロックチェーンネットワークは、ブロックデータおよびインデックスデータなどの他のタイプのデータも記憶することができる。ブロックデータは、ブロックヘッダおよびブロックボディを含み得る。ブロックヘッダは、特定のブロックの識別情報を含んでもよく、ブロックボディは、そのブロックについて確認されるトランザクションを含んでもよい。トランザクションが次々にブロックチェーンへと入れられるにつれて、状態データおよびブロックデータのサイズは非常に大きくなり得る。一部のDLSでは、1つ1つのノードがブロックチェーンの全体のコピーを記憶し、これにより大量の記憶空間が占有され得る。これは、すべてのブロックデータおよび状態データが、ブロックチェーンに記録された最初のトランザクションへと戻って記憶されるからである。一部のDLSでは、少数の共有ノードがブロックチェーンの全体のコピーを記憶し、ブロックチェーンデータを他のブロックチェーンノードと共有するが、これは「データ不平等」を生み出し得る。すなわち、データが異なるノードに不均一に分散していると、データの大半を記憶するノードに障害があるとき、データセキュリティのリスクが高くなり得る。
したがって、データ品質とデータ処理の効率を維持する方式で、そのような記憶を可能にすることが望ましいであろう。必要とされる元のデータを復元して取り出すことが可能でありながら、計算リソースまたはメモリの消費を減らす方式で、DLSの中のノードへのデータの記憶を可能にすることも望ましいであろう。いくつかの場合、新しいブロックチェーンノードがブロックチェーンネットワークに追加されるとき、新しいブロックチェーンノードがデータ記憶の負荷を共有して、したがって既存のブロックチェーンノードのストレージの消費量を減らすことが望ましいであろう。
本主題の説明される実施形態は、単独または組合せで、1つまたは複数の特徴を含み得る。
たとえば、一実施形態では、ブロックチェーンノードによって実行されるブロックチェーンデータの記憶のためのコンピュータで実行される方法が開示される。ブロックチェーンノードは、ブロックチェーンの1つまたは複数のブロックに対して誤り訂正コーディング(ECC)を実行するための要求を受信し、ブロックチェーンネットワークの少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータに基づいて1つまたは複数のブロックを取得し、1つまたは複数の符号化されたブロックを生成するために1つまたは複数のブロックのECCを実行することができ、1つまたは複数の符号化されたブロックのコードレートは、ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数およびブロックチェーンネットワークのブロックチェーンノードの総数に等しい。
いくつかの実施形態では、これらの全般的な、および特定の態様は、システム、方法、もしくはコンピュータプログラム、またはシステム、方法、およびコンピュータプログラムの任意の組合せを使用して実装され得る。前述の、および他の説明される実施形態は各々、任意選択で、以下の特徴のうちの1つまたは複数を含み得る。
いくつかの実施形態では、少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータは、1つまたは複数のブロックのECC符号化されたバージョンから分割された複数のデータセットであり、1つまたは複数のブロックを取得することはさらに、ブロックチェーンノードにローカルに記憶されている1つまたは複数のブロックのECC符号化されたバージョンから分割された1つまたは複数のデータセットを特定することと、ローカルに記憶されている1つまたは複数のデータセットおよび少なくとも1つのブロックチェーンノードから受信された複数のデータセットに基づいて、1つまたは複数のブロックを復号することとを備える。
いくつかの実施形態では、少なくとも1つのブロックチェーンノードは、少なくとも1つのフルブロックチェーンノードであり、1つまたは複数のブロックを取得することはさらに、少なくとも1つのフルブロックチェーンノードから1つまたは複数のブロックを取り出すことを備える。
いくつかの実施形態では、1つまたは複数のブロックは第1の1つまたは複数のブロックであり、第1の1つまたは複数のブロックを取り出すことはさらに、少なくとも1つのフルブロックチェーンノードに第1の1つまたは複数のブロックのハッシュ値を送信することと、少なくとも1つのフルブロックチェーンノードから第2の1つまたは複数のブロックを受信することと、第2の1つまたは複数のブロックのハッシュ値が第1の1つまたは複数のブロックのハッシュ値と同じである場合、第2の1つまたは複数のブロックが真正であると決定することとを備える。
いくつかの実施形態では、要求は、コードレートと、1つまたは複数の符号化されたブロックの各々の符号化されたブロックを複数のデータセットに分割し、複数のデータセットをブロックチェーンネットワークのブロックチェーンノードに割り当てるための命令とを含む。
いくつかの実施形態では、1つまたは複数の符号化されたブロックの各々の符号化されたブロックに対して、ブロックチェーンノードはさらに、命令に従って、符号化されたブロックを複数のデータセットへと分割し、命令に従って、ブロックチェーンノードに割り当てられた複数のデータセットのうちの少なくとも1つを記憶することができる。
いくつかの実施形態では、ブロックチェーンノードはさらに、ブロックチェーンノードに割り当てられた複数のデータセットのうちの少なくとも1つ以外の複数のデータセットの残りをハッシュして複数のデータセットの残りに対応するハッシュ値を生成し、ハッシュ値を記憶し、1つまたは複数のブロックおよび複数のデータセットの残りを削除することができる。
いくつかの実施形態では、要求は第1の要求であり、1つまたは複数の符号化されたブロックは第1の1つまたは複数の符号化されたブロックであり、ブロックチェーンノードはさらに、1つまたは複数のブロックを記憶している新しいブロックチェーンノードがブロックチェーンネットワークに追加されたことに応答して、ブロックチェーンの1つまたは複数のブロックに対してECCを実行するための第2の要求を受信し、新しいブロックチェーンノードから1つまたは複数のブロックを取り出し、第2の1つまたは複数の符号化されたブロックを生成するために1つまたは複数のブロックのECCを実行することができ、第2の1つまたは複数の符号化されたブロックのコードレートは、ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数および新しいブロックチェーンノードが追加された後のブロックチェーンノードの総数に等しい。
いくつかの実施形態では、新しいブロックチェーンノードは、ブロックチェーンのコピーを記憶するフルノードである。
いくつかの実施形態では、ブロックチェーンノードの計算リソースの利用率が所定の値以下であるとき、ECCが実行される。
いくつかの実施形態では、ECCは、冗長ビットを1つまたは複数のブロックに追加することによって実行される消失訂正符号である。
本明細書に従った方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることが理解される。すなわち、本明細書に従った方法は、本明細書で具体的に説明される態様および特徴の組合せに限定されず、提供される態様と特徴の任意の組合せも含む。
本明細書の1つまたは複数の実施形態の詳細が、添付の図面および以下の説明において記載される。本明細書の他の特徴および利点は、この説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
本明細書の実施形態を実行するために使用され得る環境の例を示す図である。 本明細書の実施形態による、アーキテクチャの例を示す図である。 本明細書の実施形態による、ブロックデータの符号化とハッシュ化のプロセスの例を示す図である。 本明細書の実施形態による、データ記憶方式の例を示す図である。 本明細書の実施形態による、ブロックデータの符号化とハッシュ化のプロセスの別の例を示す図である。 本明細書の実施形態による、ブロックチェーンネットワークにブロックチェーンノードを追加することの例を示す図である。 本明細書の実施形態に従って実行され得るプロセスの例を示す図である。 本明細書の実施形態による、装置のモジュールの例を示す図である。
様々な図面における同様の参照番号および指定は同様の要素を示す。
本明細書は、誤り訂正符号(ECC)に基づく記憶のためにブロックチェーンデータを処理するための技術を説明する。これらの技術は一般に、ブロックチェーンの1つまたは複数のブロックに対して誤り訂正コーディング(ECC)を実行するための要求を受信することと、ブロックチェーンネットワークの少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータに基づいて1つまたは複数のブロックを取得することと、1つまたは複数の符号化されたブロックを生成するために1つまたは複数のブロックのECCを実行することとを伴い、1つまたは複数の符号化されたブロックのコードレートは、ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数およびブロックチェーンネットワークのブロックチェーンノードの総数に等しい。
本明細書で説明されるように、ブロックチェーンネットワークは、状態データ、ブロックデータ、およびインデックスデータなどの、異なるタイプのデータを記憶することができる。ブロックデータはブロックチェーンネットワークの中のすべてのトランザクションを含み、そうすると、新しいブロックがブロックチェーンに常に追加されるにつれて、大量の記憶空間を占有することがある。稀にアクセスされるブロック(たとえば、かなり前にブロックチェーンに追加されたブロック)のデータに対しては特に、ブロックチェーンノードがすべてのブロックデータを各々記憶するのは非効率であり得る。したがって、本明細書の実施形態は、ストレージの消費量を減らすために、各ブロックチェーンノードが稀にアクセスされるブロックの一部分を記憶することと、必要なときに他のブロックチェーンノードからブロックデータの残りを取り出すこととを実現する。しかしながら、障害のあるノードまたは信頼性のないノードがブロックチェーンネットワークに存在する場合、取り出されたデータを信用することができず、データ喪失が発生することがある。
いくつかの実施形態では、ブロックチェーンノードは、稀にアクセスされるブロックを符号化するために、消失訂正符号などのECCを実行することができる。ECC符号化されたブロックは次いで、複数のデータセットへと分割され得る。複数のデータセットは、あるデータ記憶方式に基づいて記憶するために、インデクシングされ異なるブロックチェーンノードに割り当てられ得る。稀にアクセスされるブロックからのデータが、スマートコントラクトを実行するためにブロックチェーンノードによって必要とされるとき、ブロックチェーンノードは、ECC符号化されたブロックを形成して元のブロックを復元するために、インデックスに基づいて他のブロックチェーンノードから対応するデータセットを取り出すことができる。ECC符号化されたブロックを共有することによって、真正ではないデータが存在する場合でも、またはデータ喪失が発生する場合でも、正直ブロックチェーンノードの割合がECCのコードレート以上である限り、元のブロックデータを復元することができる。
いくつかの実施形態では、新しいブロックチェーンノードが、ブロックチェーンネットワークにフルノードとして追加される。新しく追加されたフルノードは、他のノードによって共有されないブロックの追加のコピーを記憶する。ブロックの追加のコピーは、記憶に関して冗長性をブロックチェーンネットワークに追加することができる。本明細書の実施形態は、ブロックに対してECCを再実行し、符号化されたブロックを他のブロックチェーンノードと共有してストレージの消費量を減らすための技法を提供する。ECCは、計算リソースをよりうまく利用するために、CPU使用率が低いときにもブロックチェーンノードによって再実行され得る。
本明細書で説明される技法は、いくつかの技術的な効果を生み出す。たとえば、本主題の実施形態は、ブロックチェーンネットワークの記憶リソースの負担を減らしながら、ブロックチェーンノードの計算効率とデータ平等性を維持する。稀にアクセスされるブロック(たとえば、より古いブロック)に対して、各ブロックチェーンノード上に誤り訂正コーディング(ECC)符号化されたブロック(符号化されたブロックとも本明細書で呼ばれる)の一部分のみを保存し、符号化されたブロックの残りを必要なときに他のブロックチェーンノードから取り出すことによって、ブロックチェーンノードの記憶リソースを節約することができる。
いくつかの実施形態では、ECC符号化されたブロックは、複数のデータセットへと分割され得る。ブロックチェーンノードは、複数のデータセットの選択された部分と、データセットの残りに対応するハッシュ値とを記憶することができる。この選択は、ブロックチェーンネットワークのブロックチェーンノードにより合意されるデータ記憶方式に基づき得る。複数のデータセットおよびハッシュ値は、ECC符号化されたブロックと関連付けられるブロックIDによりインデクシングされ得る。ブロックからのデータがブロックチェーンノードによってアクセスされることが必要であるとき、ブロックチェーンノードは、他のブロックチェーンノードからデータセットの残りを取り出すことができる。ブロックチェーンノードは、対応するハッシュ値を他のブロックチェーンノードに送信して、データセットの残りを取り出すことができる。ハッシュ値は不可逆的であるので、ブロックチェーンノードは、受信されたデータをハッシュしてハッシュされた値をローカルに記憶されているハッシュ値と比較することによって、受信されたデータが真正であるかどうかを検証することができる。したがって、データセキュリティを確保することができ、障害のあるノードを特定することができる。ブロックチェーンノードが障害のあるブロックチェーンノードから真正ではないデータを受信する場合でも、真正ではないデータの百分率が、ECCにより許容される誤りのあるまたは欠けているビットの最大の割合以下である限り、対応するブロックを復元することができる。
いくつかの場合、新しいブロックチェーンノードは、ブロックチェーンネットワークにフルノードとして追加される。新しく追加されるフルノードは、他のノードによって共有されないブロックの追加のコピーを記憶する。ブロックの追加のコピーは、記憶に関して冗長性をブロックチェーンネットワークに追加する。そのような場合、冗長性とストレージの消費量を減らすために、ECCがより高いコードレートを用いてブロックに対して再実行され得る。計算リソースをよりうまく利用するために、ECCを再実行することは、CPU使用率が低いときに実行され得る。
本明細書の実施形態に対するさらなる文脈を提供するために、および上で紹介されたように、コンセンサスネットワーク(たとえば、ピアツーピアノードからなる)とも呼ばれ得る分散型台帳システム(DLS)、およびブロックチェーンネットワークは、参加するエンティティがトランザクションを安全かつ変更不可能に行いデータを記憶することを可能にする。全般にブロックチェーンという用語が特定のネットワークおよび/または使用事例と関連付けられるが、本明細書では、どのような特定の使用事例にも言及することなくDLSを全般的に指すために、ブロックチェーンが使用される。
ブロックチェーンは、トランザクションが変更不可能である方式でトランザクションを記憶するデータ構造である。したがって、ブロックチェーンに記録されたトランザクションは、信頼性があり信用に値する。ブロックチェーンは1つまたは複数のブロックを含む。チェーンの中の各ブロックは、チェーンにおいてその直前にある以前のブロックに、その以前のブロックの暗号ハッシュを含むことによってリンクされる。各ブロックはまた、タイムスタンプ、固有の暗号ハッシュ、および1つまたは複数のトランザクションを含む。ブロックチェーンネットワークのノードによってすでに検証されているトランザクションは、ハッシュされてマークル木へと符号化される。マークル木は、木の葉ノードにおけるデータがハッシュされるデータ構造であり、木の各枝の中のすべてのハッシュが、枝の根において連結される。このプロセスは木の上に向かって木全体の根まで続き、その根は木の中のすべてのデータを表すハッシュを記憶する。木に記憶されているトランザクションであることを意図しているハッシュは、それが木の構造と矛盾しないかどうかを決定することによって迅速に検証され得る。
ブロックチェーンは、トランザクションを記憶するための非集中的なまたは少なくとも部分的に非集中的なデータ構造であるが、ブロックチェーンネットワークは、トランザクションをブロードキャストすること、検証すること、および妥当性確認することなどによって、1つまたは複数のブロックチェーンを管理し、更新し、維持する、コンピューティングノードのネットワークである。上で紹介されたように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。本明細書の実施形態は、コンソーシアムブロックチェーンネットワークを参照して本明細書でさらに詳しく説明される。しかしながら、本明細書の実施形態は、任意の適切なタイプのブロックチェーンネットワークにおいて実現され得ることが企図される。
一般に、コンソーシアムブロックチェーンネットワークは、参加しているエンティティ以外には非公開である。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、コンセンサスノードと呼ばれ得る認可されたノードのセットによって制御され、1つまたは複数のコンセンサスノードはそれぞれのエンティティ(たとえば、金融機関、保険会社)によって運営される。たとえば、10個のエンティティ(たとえば、金融機関、保険会社)のコンソーシアムがコンソーシアムブロックチェーンネットワークを運営することができ、それらのエンティティの各々がコンソーシアムブロックチェーンネットワークの中の少なくとも1つのノードを運用する。
いくつかの例では、コンソーシアムブロックチェーンネットワーク内で、グローバルブロックチェーンが、すべてのノードにわたって複製されるブロックチェーンとして提供される。すなわち、すべてのコンセンサスノードが、グローバルブロックチェーンに関して完全なステートコンセンサスの状態にある。コンセンサス(たとえば、ブロックチェーンへのブロックの追加に対する合意)を達成するために、コンセンサスプロトコルは、コンソーシアムブロックチェーンネットワーク内で実装される。たとえば、コンソーシアムブロックチェーンネットワークは、以下でさらに詳しく説明される、実用的ビザンチンフォールトトレランス(PBFT)コンセンサスを実施することができる。
図1は、本明細書の実施形態を実行するために使用され得る環境100の例を示す図である。いくつかの例では、環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に参加することを可能にする。環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはこれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、有線通信リンクおよび/またはワイヤレス通信リンクを介してアクセスされ得る。いくつかの例では、ネットワーク110は、コンソーシアムブロックチェーンネットワーク102との、およびその中での通信を可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表す。いくつかの場合、コンピューティングデバイス106、108は、クラウドコンピューティングシステム(図示せず)のノードであってもよく、または各コンピューティングデバイス106、108は、ネットワークによって相互接続されるある数のコンピュータを含む別個のクラウドコンピューティングシステムであってもよく、分散型処理システムとして機能していてもよい。
図示された例では、コンピューティングシステム106、108は各々、コンソーシアムブロックチェーンネットワーク102の中のノードとしての参加を可能にする任意の適切なコンピューティングシステムを含み得る。コンピューティングデバイスの例は、限定はされないが、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例では、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102とインターフェースするための1つまたは複数のコンピュータで実行されるサービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティが1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどの、第1のエンティティ(たとえば、ユーザA)のコンピュータで実行されるサービスをホストすることができる。コンピューティングシステム108は、第2のエンティティが1つまたは複数の他のエンティティ(たとえば、他のユーザ)との対話を管理するために使用するトランザクション管理システムなどの、第2のエンティティ(たとえば、ユーザB)のコンピュータで実行されるサービスをホストすることができる。図1の例では、コンソーシアムブロックチェーンネットワーク102はノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102に参加する、第1のエンティティ、および第2のエンティティのノードをそれぞれ提供する。
図2は、本明細書の実施形態によるアーキテクチャ200の例を示す。例示的な概念的アーキテクチャ200は、参加者A、参加者B、および参加者Cにそれぞれ対応する、参加者システム202、204、206を含む。各参加者(たとえば、ユーザ、企業)が、そのうちの少なくともいくつかがブロックチェーン216に情報を変更不可能に記録する、複数のノード214を含むピアツーピアネットワークとして提供されるブロックチェーンネットワーク212に参加する。単一のブロックチェーン216がブロックチェーン212内に図式的に示されているが、本明細書でさらに詳しく説明されるように、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。
図示される例では、各参加者システム202、204、206は、それぞれ参加者A、参加者B、および参加者Cによって、またはその代わりに提供され、ブロックチェーンネットワーク内のそれぞれのノード214として機能する。本明細書で使用されるように、ノードは一般に、ブロックチェーンネットワーク212に接続される個々のシステム(たとえば、コンピュータ、サーバ)を指し、それぞれの参加者がブロックチェーンネットワークに参加することを可能にする。図2の例では、参加者は各ノード214に対応する。しかしながら、参加者がブロックチェーンネットワーク212内の複数のノード214を運用でき、かつ/または複数の参加者がノード214を共有できることが企図される。いくつかの例では、参加者システム202、204、206は、プロトコル(たとえばハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、かつ/またはリモートプロシージャコール(RPC)を使用して、ブロックチェーンネットワーク212と通信し、またはそれを通じて通信する。
ノード214は、ブロックチェーンネットワーク212内での参加の度合いが異なり得る。たとえば、一部のノード214はコンセンサスプロセスに参加することができるが(たとえば、ブロックチェーン216にブロックを追加するマイナーノードのように)、他のノード214はコンセンサスプロセスに参加しない。別の例として、一部のノード214はブロックチェーン216の完全なコピーを記憶するが、他のノード214はブロックチェーン216の部分のコピーのみを記憶する。たとえば、データアクセス特権が、それぞれの参加者がそれぞれのシステム内に記憶するブロックチェーンデータを制限することができる。図2の例では、参加者システム202、204、および206は、ブロックチェーン216のそれぞれの完全なコピー216'、216''、および216'''を記憶する。
ブロックチェーン(たとえば、図2のブロックチェーン216)はブロックのチェーンからなり、各ブロックがデータを記憶する。データの例は、2つ以上の参加者間のトランザクションを表すトランザクションデータを含む。トランザクションが非限定的な例として本明細書で使用されるが、任意の適切なデータ(たとえば、文書、画像、ビデオ、オーディオ)がブロックチェーンに記憶され得ることが企図される。トランザクションの例には、限定はされないが、価値のある何か(たとえば、資産、製品、サービス、通貨)の交換があり得る。トランザクションデータは、ブロックチェーン内に変更不可能に記憶される。すなわち、トランザクションデータを変更することはできない。
ブロックに記憶する前に、トランザクションデータはハッシュ化される。ハッシュ化は、トランザクションデータ(文字列データとして与えられる)を固定長のハッシュ値(やはり文字列データとして与えられる)に変換するプロセスである。ハッシュ値をハッシュ解除してトランザクションデータを取得するのは不可能である。ハッシュ化は、トランザクションデータのわずかな変化ですら完全に異なるハッシュ値をもたらすことを確実にする。さらに、上で述べられたように、ハッシュ値は固定長である。すなわち、トランザクションデータのサイズにかかわらず、ハッシュ値の長さは一定である。ハッシュ化は、ハッシュ関数を通じてトランザクションデータを処理し、ハッシュ値を生成することを含む。ハッシュ関数の例には、限定はされないが、256ビットのハッシュ値を出力するセキュアハッシュアルゴリズム(SHA)-256がある。
複数のトランザクションのトランザクションデータは、ハッシュされブロックに記憶される。たとえば、2つのトランザクションのハッシュ値が与えられ、それら自体が別のハッシュを与えるためにハッシュされる。このプロセスは、ブロックに記憶されるべきすべてのトランザクションに対して、単一のハッシュ値が与えられるまで繰り返される。このハッシュ値は、マークル根ハッシュと呼ばれ、ブロックのヘッダに記憶される。トランザクションのどのような変化もハッシュ値の変化をもたらし、最終的にはマークル根ハッシュの変化をもたらす。
ブロックはコンセンサスプロトコルを通じてブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードが、コンセンサスプロトコルに参加し、ブロックがブロックチェーンに追加されるようにするための作業を実行する。そのようなノードはコンセンサスノードと呼ばれる。上で紹介されたように、PBFTがコンセンサスプロトコルの非限定的な例として使用される。コンセンサスノードは、ブロックチェーンにトランザクションを追加するためにコンセンサスプロトコルを実行し、ブロックチェーンネットワークの全体の状態を更新する。
さらに詳しく述べると、コンセンサスノードは、ブロックヘッダを生成し、ブロックの中のトランザクションのすべてをハッシュし、ブロックの中のすべてのトランザクションに対して単一のハッシュ値(マークル根ハッシュ)が与えられるまで、ハッシュ値をペアで組み合わせてさらなるハッシュ値を生成する。このハッシュがブロックヘッダに追加される。コンセンサスノードはまた、ブロックチェーンの中の直近のブロック(すなわち、ブロックチェーンに追加された最後のブロック)のハッシュ値を決定する。コンセンサスノードはまた、ノンス値およびタイムスタンプをブロックヘッダに追加する。
一般に、PBFTは、ビザンチンフォールト(たとえば、機能不全のノード、悪意のあるノード)に耐性がある、実用的ビザンチン状態機械複製を行う。これは、障害が発生すると仮定する(たとえば、独立したノード障害の存在、および/またはコンセンサスノードによって送信される操作されたメッセージの存在を仮定する)ことによって、PBFTにおいて達成される。PBFTでは、コンセンサスノードは、主要コンセンサスノードおよびバックアップコンセンサスノードを含むシーケンスにおいて提供される。主要コンセンサスノードは定期的に変更される。トランザクションは、ブロックチェーンネットワークのワールドステートに関して合意に達したブロックチェーンネットワーク内のすべてのコンセンサスノードによって、ブロックチェーンに追加される。このプロセスにおいて、コンセンサスノード間でメッセージが送信され、各コンセンサスノードは、メッセージが指定されたピアノードから受信されることを証明し、メッセージが送信の間に修正されなかったことを検証する。
PBFTにおいて、コンセンサスプロトコルは複数の段階で提供され、すべてのコンセンサスノードが同じ状態で開始する。初めに、クライアントが、サービス動作(たとえば、ブロックチェーンネットワーク内でトランザクションを実行すること)を発動するために、要求を主要コンセンサスノードに送信する。要求を受信したことに応答して、主要コンセンサスノードは、要求をバックアップコンセンサスノードにマルチキャストする。バックアップコンセンサスノードは要求を実行し、各々がクライアントに返答を送信する。クライアントは、閾値の数の返答が受信されるまで待つ。いくつかの例では、クライアントはf+1個の返答が受信されるまで待ち、fはブロックチェーンネットワーク内で許容され得る障害のあるコンセンサスノードの最大の数である。PBFTにおいて、障害のあるコンセンサスノードの最大の数は、コンセンサスノードの総数の1/3未満である必要がある。最終結果は、ブロックチェーンに追加されるべき記録の順序について十分な数のコンセンサスノードが合意に達するというものであり、記録は受け入れられるか拒絶されるかのいずれかである。
一部のブロックチェーンネットワークでは、トランザクションのプライバシーを維持するために、暗号化が実施される。たとえば、ブロックチェーンネットワークの中の他のノードがトランザクションの詳細を識別できないように、2つのノードがトランザクションを非公開に保つことを望む場合、ノードはトランザクションデータを暗号化することができる。暗号化の例には、限定はされないが、対称暗号化および非対称暗号化がある。対称暗号化は、暗号化(プレーンテキストから暗号文を生成すること)と復号(暗号文からプレーンテキストを生成すること)の両方に対して単一の鍵を使用する、暗号化プロセスを指す。対称暗号化では、同じ鍵が複数のノードに対して利用可能であるので、各ノードがトランザクションデータを暗号化/復号することができる。
非対称暗号化は、秘密鍵および公開鍵を各々含む鍵のペアを使用し、秘密鍵はそれぞれのノードだけに知られており、公開鍵はブロックチェーンネットワークの中の任意のまたはすべての他のノードに知られている。ノードは、データを暗号化するために別のノードの公開鍵を使用することができ、暗号化されたデータは、他のノードの秘密鍵を使用して復号され得る。たとえば、図2を再び参照すると、参加者Aは、データを暗号化するために参加者Bの公開鍵を使用し、暗号化されたデータを参加者Bに送信することができる。参加者Bは、秘密鍵を使用して暗号化されたデータ(暗号文)を復号し、元のデータ(プレーンテキスト)を抽出することができる。ノードの公開鍵を用いて暗号化されるメッセージは、ノードの秘密鍵を使用してのみ復号され得る。
非対称暗号化はデジタル署名を提供するために使用され、これは、トランザクションの参加者が、トランザクションの他の参加者ならびにトランザクションの有効性を確認することを可能にする。たとえば、ノードはメッセージにデジタル署名することができ、別のノードは、参加者Aのデジタル署名に基づいてメッセージがノードによって送信されたことを確認することができる。デジタル署名は、メッセージが途中で改竄されないことを確実にするためにも使用され得る。たとえば、再び図2を参照すると、参加者Aはメッセージを参加者Bに送信することになる。参加者Aは、メッセージのハッシュを生成し、次いで秘密鍵を使用して、ハッシュを暗号化して、暗号化されたハッシュとしてデジタル署名を提供する。参加者Aは、デジタル署名をメッセージに付加し、デジタル署名を伴うメッセージを参加者Bに送信する。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を復号し、ハッシュを抽出する。参加者Bは、メッセージをハッシュしてハッシュを比較する。ハッシュが同じである場合、参加者Bは、メッセージが本当に参加者Aからのものであり、改竄されていないことを確認することができる。
図3は、本明細書の実施形態による、ブロックデータの符号化およびハッシュ化のプロセス300の例を示す。この例では、ブロックチェーンノード302、304、306、および308である、4つのブロックチェーンノードのブロックチェーンネットワークが示されている。符号化およびハッシュ化のプロセス300を例示するために、ブロックチェーンノード302を例として使用すると、ブロックチェーンノード302は、ブロック312のブロックボディにブロックチェーンネットワークのブロックデータを記憶することができる。示される例では、ブロックデータがブロック100に記憶される。その後、ブロックチェーンノード302は、他のブロックチェーンノード304、306、および308とのコンセンサスプロセスに関与することができる。コンセンサスプロセスの間、ブロックチェーンノード302は、ブロックチェーン上に対応するブロックを作成するために、proof of work(PoW)またはproof of stake(PoS)などのコンセンサスアルゴリズムを実行することができる。
いくつかの実施形態では、ブロックチェーンノード302は、1つまたは複数の稀にアクセスされるブロックを特定することができる。実際には、ブロックが作成されてからより長いほど、スマートコントラクトを実行することなどの動作のために対応するブロックデータが必要とされる可能性がより低くなる。ブロックチェーンノード302は、ローカルに記憶されているブロックが所定の長さの時間の間にブロックチェーン上で作成された昔のブロックであるとき、ローカルに記憶されているブロックが稀にアクセスされると決定することができる。たとえば、その所定の長さの時間は、ブロックが作成される平均時間の1倍または2倍であり得る。いくつかの例では、スマートコントラクトを実行するためにブロックの中のブロックデータが所定の長さの時間の間に取り出されないときも、ブロックは稀にアクセスされるもの決定され得る。
稀にアクセスされるブロックを特定した後で、ブロックチェーンノード302は、稀にアクセスされるブロックの各々のブロックボディの中のブロックデータのECC314を実行することができる。ECCは、冗長ビット(冗長性とも呼ばれる)をデータに追加することによって、信頼できない送信を介したデータのエラーまたは喪失を制御するために使用され得る。冗長ビットは、多くの元の情報ビットの複素関数であり得る。冗長性は、データの再送信なしでデータのエラーまたは喪失が訂正されることを可能にできる。元の情報は、符号化された出力に文字通り現れることも現れないこともある。符号化された出力の中の修正されていない元の情報を含むECC符号はシステマティックECC符号と呼ばれるが、それを含まないものはノンシステマティックECC符号と呼ばれる。ECCによって訂正され得るエラーまたは欠けているビットの最大の割合は、ECC符号の設計によって決定される。したがって、異なる条件に対して、異なる誤り訂正符号が適している。一般に、より強いECC符号はより高い冗長性を引き起こし、これは、符号のストレージ消費量を増やし、符号化された情報が送信されるべきである場合、通信効率を下げる。
1つの例示的なECCは消失訂正符号であり得る。消失訂正符号を使用すると、k個のシンボルのメッセージを、n個のシンボルを伴う符号語へと符号化することができ、kおよびnは自然数であり、k<nである。メッセージは、nシンボルの符号語のサブセットから復元され得る。分数r=k/nが消失訂正符号のコードレートである。
ECCを使用することによって、ブロックチェーンノードの各々は、符号化されたブロックデータの一部分を記憶し、必要なときに他のブロックチェーンノードから符号化されたブロックデータの残りを取り出すことができる。いくつかの実施形態では、ECCは、ブロックチェーンノード302の計算リソースの利用率が所定の値(たとえば、40%)未満であるときに実行され得る。したがって、ブロックチェーンノード302上での他の計算動作との干渉を減らすことができる。いくつかの実施形態では、ブロックチェーンノード302の記憶空間の使用率が所定の百分率以上であるときに、ECCが実行され得るので、ECCの後で、符号化されたブロックデータの何らかの部分が、記憶空間を空けるために削除され得る。
再び例としてブロック100を使用して、ブロックチェーンノード302が、稀にアクセスされるブロックとしてブロック100を決定し、ECC314を実行すると仮定すると、ECC符号化されるデータは、データ記憶方式に基づいて複数のデータセットへと分割され得る。データ記憶方式は、データがブロックチェーンネットワーク内でどこに、かつ/またはどのように記憶されるべきかを定義する、コンピュータ実行可能命令のセットとして提供され得る。いくつかの例では、データ記憶方式は、プルーフオブオーソリティを伴う信用されるノードによって提供され、ブロックチェーンノードによって合意され得る。いくつかの例では、データ記憶方式は、コンセンサスを通じてブロックチェーンノードによって合意され得る。一般に、データ記憶方式は、ブロックチェーンネットワークの中のブロックチェーンノードの数に基づいて、符号化されたデータを複数のデータセットに分割するための、1つまたは複数の所定の規則を含み得る。データ記憶方式はまた、ブロックチェーンノードの各々によって記憶またはハッシュされるべき複数のデータセットのうちの1つまたは複数のデータセットの割当てを含み得る。データ平等性を確保するために、データ記憶方式は、ブロックチェーンネットワークの各ブロックチェーンノードによって記憶されるべき少なくとも1つのデータセットの割当てを含み得る。
図3に示される例では、ブロック100の符号化されたブロックデータは、Data1、Data2、Data3、およびVdata1という4つのデータセットへと分割され、それらの各々が、ブロックチェーンノード302、304、306、および308のうちの1つによって記憶されるべきである。Vdata1は、誤り訂正のためにECCの冗長ビットを表すことができる。Data1は、データ記憶方式に従ってブロックチェーンノード302によって記憶されるものとして選択される。Data2、Data3、およびVdata1は、ハッシュ値Dhash2、Dhash3、およびVhash1をそれぞれ生成するために、別々にハッシュされる(316)ものとして選択される。本明細書の実施形態によれば、符号化されたデータは、ブロックチェーンネットワークが4つより多くのノードを有するとき、4つより多くのデータセットへ分割され得る。いくつかの例では、ブロックチェーンノードの各々が、1つより多くのデータセットを記憶し、他のノードによって記憶されるものとして割り当てられるデータセットの残りをハッシュすることができる。
ここで図4を参照すると、図4は、本明細書の実施形態によるデータ記憶方式400の例を示す。より前に論じられたように、Data1は、データ記憶方式400に従ってブロックチェーンノード302によって記憶されるものとして選択される。データ記憶方式400に基づいて、ブロックチェーンノード304は、Data2を記憶し、Data1、Data3、およびVdata1を別々にハッシュして、ハッシュ値Dhash1、Dhash3、およびVhash1をそれぞれ生成する。ブロックチェーンノード306は、Data3を記憶し、Data1、Data2、およびVdata1を別々にハッシュして、ハッシュ値Dhash1、Dhash2、およびVhash1をそれぞれ生成する。ブロックチェーンノード308は、Vdata1を記憶し、Data1、Data2、およびVdata3を別々にハッシュして、ハッシュ値Dhash1、Dhash2、およびDhash3をそれぞれ生成する。
図3に戻ると、ハッシュ値が同じブロックの符号化されたデータセットに対応するので、それらはブロックのブロックIDによってインデクシングされ得る。たとえば、ブロックチェーンノード302は、ブロックID100を用いて、ブロック100と関連付けられるData1、Dhash1、Dhash2、およびVhash1をインデクシングすることができる。したがって、ブロックチェーンノード302は、インデクシングされたブロックIDを使用して、ハッシュ値をそれらの対応するブロックにマッピングすることができる。データセットおよびハッシュ値をインデクシングすることのより詳細な例が、図6の説明において論じられる。
データ記憶方式に従って、他のデータ記憶方式がブロックチェーンノード302、304、306、および308のために行われ得ることが理解されるべきである。いくつかの例では、ブロック100の符号化されたブロックデータは、4つより多くのデータセットに分割され得る。データ記憶方式に従って、他のデータ記憶方式がブロックチェーンノード502、504、506、および508のために作られ得ることが理解されるべきである。
Dhash2、Dhash3、およびVhash1を生成して記憶した後で、ブロックチェーンノード302は、記憶空間を節約するためにストレージからData2、Data3、およびVdata1を削除することができる。したがって、各ブロックに対して、ブロックチェーンノード302は、ブロック全体の代わりに、1つのECC符号化されたデータセット(すなわち、Data1)および3つのハッシュ値(すなわち、Dhash2、Dhash3、およびVhash1)のみを記憶する。したがって、記憶空間を大幅に減らすことができる。ブロック100と同様に、符号化およびハッシュ化のプロセスは、ブロックチェーンノード304、306、および308によって記憶される他の稀にアクセスされるブロックのために実行され得る。
ブロック100のブロックデータがスマートコントラクトを実行するために必要であるとブロックチェーンノード302が決定するとき、ブロックチェーンノード302は、データ記憶方式に従って、ブロックチェーンノード304、306、および308からそれぞれ、Data2、Data3、およびVdata1を取り出すことができる。他のブロックチェーンノード304、306、および308からデータセットを取り出すために、ブロックチェーンノード302は、データ記憶方式に従って取り出されるべきデータセットに対応するハッシュ値を送信することができる。
たとえば、Data2を取り出すために、ブロックチェーンノード302は、Dhash2をブロックチェーンノード304に送信することができる。ブロックチェーンノード304がData2を記憶している場合、ブロックチェーンノード304は、Dhash2を受信したことに応答して、Data2をブロックチェーンノード302に返信することができる。ブロックチェーンノード304からData2を受信した後で、ブロックチェーンノード302は、受信されたデータセットをハッシュし、ハッシュ値をDhash2と比較することができる。ハッシュ値がDhash2と同じである場合、ブロックチェーンノード302は、受信されたデータセットが真正であると決定することができる。そうではない場合、受信されたデータセットは真正ではないと決定される。受信されたデータセットが真正ではないと決定されると、ブロックチェーンノード302は、ブロックチェーンノード304を障害のあるノード(またはビザンチンノード)として報告することができる。ブロックチェーンノード302によって受信される真正ではないデータの百分率が、ECCによって訂正され得るエラーのあるビットまたは欠けているビットの最大の割合以下である場合、ブロック100は、ローカルに記憶され受信されるデータセットから復元され得る。
前に説明されたように、ブロックチェーンネットワークは、状態データ、ブロックデータ、およびインデックスデータなどの、異なるタイプのデータを記憶することができる。MPTまたは固定深度マークル木(FDMT)などの、コンテンツアドレス指定された状態木として、状態データが記憶されることが多い。コンテンツアドレス指定された状態木は、本質的に増分的である。すなわち、アカウント状態の変化は、既存の状態木の値を更新するだけではなく新しい木構造を追加することによって反映される。したがって、コンテンツアドレス指定される状態木は、ブロックがブロックチェーンに連続的に追加されるとき、サイズが非常に大きくなり得る。FDMT記憶方式のもとで、状態データは、現在のブロックと関連付けられる現在の状態データおよびブロックチェーンのすべてのブロックと関連付けられる過去の状態データへと分離され得る。FDMTの中の大半のデータは、稀に使用される過去の状態データである。1つ1つのコンセンサスノードにすべての過去の状態データを記憶することは、記憶リソースの使用量に関して非常に非効率であり得る。
いくつかの実施形態では、ブロックデータを符号化して共有したのと同様に、消失訂正符号などのECCは、過去の状態データを符号化するために使用され得る。ブロックチェーンネットワークの中の各コンセンサスノードは、過去の状態データの一部分のみを記憶し、ストレージの消費量を減らすために他のノードから過去の状態データの残りを取り出す。元の過去の状態データの代わりにECC符号化された過去の状態データを共有することによって、真正ではないデータが存在する場合であっても、またはデータ喪失が発生する場合であっても、真正ではないデータまたはデータ喪失の百分率が、ECCによって訂正され得るエラーのあるビットまたは欠けているビットの最大の割合以下である限り、元の過去の状態データを復元することができる。
図5は、本明細書の実施形態による、ブロックデータの符号化およびハッシュ化のプロセス500の別の例を示す。この例では、ブロックチェーンノード502、504、506、および508である、4つのブロックチェーンノードのブロックチェーンネットワークが図示されている。符号化およびハッシュ化のプロセス500を示すための例としてブロックチェーンノード502を使用すると、新しいブロックデータがブロック512に追加されると、ブロックチェーンノード502は、ブロックデータを符号化するためにECC514を実行することができる。図3の説明において論じられる符号化およびハッシュ化のプロセス300と比較して、ブロックチェーンノード502は、ブロックデータがブロックに書き込まれるにつれてブロックデータ上でECCを実行する。したがって、ブロックチェーンノード502は、ブロック全体を記憶する必要はなく、代わりに、データ記憶方式に基づいて、ECC符号化されたブロックデータの選択された部分と、符号化されたブロックデータの残りに対応するハッシュ値とを記憶することができる。この符号化およびハッシュ化のプロセス500は特に、ブロックチェーンノード502のディスク空間が少ないシナリオに対して適切であり得る。
いくつかの実施形態では、ブロックとしてデータを記憶する代わりに、ブロックチェーンノード502は、ログ先行書き込み(WAL)ファイルまたは他の同様のロールフォワードジャーナルファイルを記憶することができる。WALファイルは、コミットされているがブロックチェーンノード502によってまだ記憶されていないブロックデータを記録することができる。WALファイルを使用すると、元のブロックチェーンデータをデータベースファイルに保存することができるが、ブロックチェーンデータの変更を別個のWALファイルに書き込むことができる。その変更を用いたロールフォワードへのコミットは、元のブロックチェーンデータに書き込むことなく発生し得る。この構成は、変更がWALファイルにコミットされながら、ブロックチェーンデータが継続的に動作することを可能にする。符号化およびハッシュ化のプロセス500を通じて行われる変更を記憶するためにWALファイルを使用することによって、ブロックチェーンノード502は、適切なときにバックグラウンドでECCを実行しながら、コンセンサスのためのブロックデータを有することを示すことができる。したがって、ECCは、コンセンサスプロセスの計算効率またはレイテンシに対する影響を減らすために、ブロックチェーンノード302の計算リソースの利用率が低いときに実行され得る。
いくつかの実施形態では、ブロックチェーンノード502は、バッファにブロックデータを記憶することができる。ブロックチェーンノード502は、データのサイズが所定の閾値より大きいとき、またはバッファが満杯であるとき、バッファに記憶されているブロックデータにECCを実行することができる。ECCを実行した後で、ブロックチェーンノード502は、以下の説明において論じられるように、符号化されたブロックデータおよびハッシュ値を記憶するために、符号化およびハッシュ化のプロセス500に従うことができる。
ブロック100を例として使用すると、ECCを実行した後で、符号化されたブロックデータは、データ記憶方式に基づいて複数のデータセットへと分割され得る。図3の例において論じられる例と同様に、ブロック100の符号化されたブロックデータを、Data1、Data2、Data3、およびVdata1である4つのデータセットへと分割することができ、これらは、ブロックチェーンノード502、504、506、および508のうちの1つによって記憶されるべきである。Vdata1は、ECCの冗長ビットを表すことができる。Data1は、データ記憶方式に従って、ブロックチェーンノード502によって記憶されるものとして選択される。Data2、Data3、およびVdata1は、それぞれハッシュ値Dhash2、Dhash3、およびVhash1を生成するために、別々にハッシュされる(516)ものとして選択される。
ハッシュ値は、ハッシュ値の対応するブロックのブロックIDによってインデクシングされ得る。たとえば、ブロックチェーンノード502は、ブロックID100を用いて、ブロック100と関連付けられるData1、Dhash1、Dhash2、およびVhash1をインデクシングすることができる。したがって、ブロックチェーンノード502は、インデクシングされたブロックIDを使用して、ハッシュ値をそれらの対応するブロックにマッピングすることができる。データセットおよびハッシュ値をインデクシングすることのより詳細な例が、図6の説明において論じられる。
データ記憶方式に従って、他のデータ記憶方式が1つまたは複数のブロックチェーンノード502、504、506、および508のために作られ得ることが理解されるべきである。たとえば、ブロック100の符号化されたブロックデータは、4つより多くのデータセットへと分割され得る。ブロックチェーンノード502、504、506、および508の各々が、1つより多くのデータセットを記憶し、他のノードによって記憶されるデータセットの残りをハッシュすることができる。
Dhash2、Dhash3、およびVhash1を生成した後で、ブロックチェーンノード502は、Data1、Dhash2、Dhash3、およびVhash1を記憶し、ストレージからData2、Data3、およびVdata1を削除して記憶空間を節約することができる。したがって、ブロックチェーンの各ブロックに対して、ブロックチェーンノード502は、記憶空間を節約するために、元のブロックデータの代わりに1つのデータセット(すなわち、Data1)およびECC符号化されたブロックデータの3つのハッシュ値(すなわち、Dhash2、Dhash3、およびVhash1)だけを記憶する。ブロック100のブロックデータがスマートコントラクトを実行するために必要とされることを、ブロックチェーンノード502が決定するとき、ブロックチェーンノード502は、データ記憶方式に従って、ブロックチェーンノード504、506、および508からそれぞれ、Data2、Data3、およびVdata1を取り出すことができる。
他のブロックチェーンノード504、506、および508からデータセットを取り出すために、ブロックチェーンノード502は、データ記憶方式に従って、取り出されるべきデータセットに対応するハッシュ値を送信することができる。たとえば、Data2を取り出すために、ブロックチェーンノード502は、Dhash2をブロックチェーンノード504に送信することができる。ブロックチェーンノード504がData2を記憶している場合、ブロックチェーンノード504は、Dhash2を受信したことに応答して、Data2をブロックチェーンノード502に返信することができる。ブロックチェーンノード504からData2を受信した後で、ブロックチェーンノード502は、受信されたデータセットをハッシュし、ハッシュ値をDhash2と比較することができる。ハッシュ値がDhash2と同じである場合、ブロックチェーンノード502は、受信されたデータセットが真正であると決定することができる。それ以外の場合、受信されたデータセットは真正ではないと決定され得る。受信されたデータセットが真正ではないものとして決定されるとき、ブロックチェーンノード502は、ブロックチェーンノード504を障害のあるノード(またはビザンチンノード)として報告することができる。ブロックチェーンノード502によって受信される真正ではないデータの百分率が、ECCによって訂正され得るエラーのあるビットまたは欠けているビットの最大の割合以下である場合、ブロック100は、ローカルに記憶されており受信されたデータセットから復元され得る。
前に論じられたように、符号化およびハッシュ化のプロセスを実行することによって、ブロックチェーンデータは、ECC符号化され、複数のデータセットへと分割され得る。記憶空間を節約するために、各ブロックチェーンノードは、データ記憶方式に基づいて、複数のデータセットのうちの1つまたは複数およびデータセットの残りのハッシュ値を記憶することができる。記憶されているデータセットおよびハッシュ値は、ブロックチェーンノードが他のノードからデータセットを取り出して元のデータを復元するために、ブロックIDを用いてインデクシングされ得る。
図6は、本明細書の実施形態による、ブロックチェーンネットワークにブロックチェーンノードを追加することの例600を示す。前に論じられたように、符号化およびハッシュ化のプロセスが、ブロックチェーンネットワークのストレージの消費量を実質的に減らすために実行され得る。PBFTコンセンサスプロトコルのもとでは、ブロックチェーンノードの総数がNにより表記され、障害のあるブロックチェーンノードの数がfにより表記される場合、ブロックチェーンネットワークがビザンチンフォールトトレラントであるには、N>3fを満たさなければならない。たとえば、4ノードのブロックチェーンネットワークにおいて、PBFTコンセンサスプロトコルのもとでは、ブロックチェーンネットワークによって許容可能な障害のあるノードの最大の数は1である。したがって、ブロックチェーンノードが3/4より大きくないコードレートで元のブロックチェーンデータ(または元のデータ)にECCを実行し(すなわち、元のデータの比率が符号化されるデータ全体の3/4より大きくない)、各々が符号化されるブロックチェーンデータ(または符号化される)の4分の1を記憶する場合、ブロックチェーンノードのうちの1つが障害のあるノードであったとしても、元のデータを復元することができる。冗長率は、ブロックチェーンネットワークのブロックチェーンノードにより記憶されている符号化されたデータおよび元のデータの総量を、元のデータのコピーの量で割ったものとして定義され得る。この例では、いずれのブロックチェーンノードも元のデータを記憶しないので、冗長率はコードレートの逆数(すなわち、符号化されたデータの量を元のデータで割ったもの)であり、これは4/3である。
図示される例600では、ブロック1から100が生成されるとき、ブロックチェーンネットワークの中に、ノード1、2、3、および4という4つのブロックチェーンノードがあると仮定される。PBFTコンセンサスプロトコルのもとでは、ブロックチェーンネットワークによって必要とされる正直ブロックチェーンノードの最小の数は3である。図3および図5の説明において論じられたような符号化とハッシュ化のプロセスを適用すると、ブロック1から100は各々、3/4という最大コードレートで符号化され得る。符号化されたブロックは各々、4つのブロックチェーンノードによって記憶されるべき元のデータの3つのデータセットおよび冗長ビットの1つのデータセットへと分割され得る。
ノード5は、ブロック101の生成の間にフルノードとしてブロックチェーンネットワークに追加される。すなわち、ノード5は、ブロック1から100の全体のコピーを記憶するが、ブロック101の生成から始まる4つの既存のブロックチェーンノードとの符号化およびハッシュ化のプロセスに参加する。ブロック101から200の生成の間にブロックチェーンネットワークが5つのブロックチェーンノードを有すると仮定すると、PBFTコンセンサスプロトコルのもとでは、ブロックチェーンネットワークによって必要とされる正直ブロックチェーンノードの最小の数は4である。したがって、ブロック101から200は各々、4/5という最大コードレートで符号化され得る。符号化されたブロックは各々、ブロックチェーンネットワークの中の5つのブロックチェーンノードによって記憶されるべき元のデータの4つのデータセットおよび冗長ビットの1つのデータセットへと分割され得る。
ノード6は、ブロック201の生成の間にフルノードとしてブロックチェーンネットワークに追加される。すなわち、ノード6は、ブロック1から200の全体のコピーを記憶するが、ブロック201の生成以降、ブロックチェーンネットワークの他のブロックチェーンノードとの符号化およびハッシュ化のプロセスに参加する。ブロックチェーンネットワークがブロック201から300の生成の間に6つのブロックチェーンノードを有すると仮定すると、PBFTコンセンサスプロトコルのもとでは、ブロックチェーンネットワークによって必要とされる正直ブロックチェーンノードの最小の数は5である。したがって、ブロック201から300は各々、5/6という最大コードレートで符号化され得る。符号化されたブロックは各々、ブロックチェーンネットワークの中の6つのブロックチェーンノードによって記憶されるべき元のデータの4つのデータセットおよび冗長ビットの2つのデータセットへと分割され得る。
ノード7は、ブロック301の生成の間にフルノードとしてブロックチェーンネットワークに追加される。すなわち、ノード7は、ブロック1から300の全体のコピーを記憶するが、ブロック301の生成以降、ブロックチェーンネットワークの他のブロックチェーンノードとの符号化およびハッシュ化のプロセスに参加する。ブロックチェーンネットワークがブロック301から400の生成の間に7つのブロックチェーンノードを有すると仮定すると、PBFTコンセンサスプロトコルのもとでは、ブロックチェーンネットワークによって必要とされる正直ブロックチェーンノードの最小の数は5である。したがって、ブロック301から400は各々、5/7という最大コードレートで符号化され得る。符号化されたブロックは各々、ブロックチェーンネットワークの中の7つのブロックチェーンノードによって記憶されるべき元のデータの5つのデータセットおよび冗長ビットの2つのデータセットへと分割され得る。
ノード8は、ブロック401の生成の間にフルノードとしてブロックチェーンネットワークに追加される。すなわち、ノード8は、ブロック1から400の全体のコピーを記憶するが、ブロック401の生成以降、ブロックチェーンネットワークの他のブロックチェーンノードとの符号化およびハッシュ化のプロセスに参加する。ブロックチェーンネットワークがブロック401から500の生成の間に8つのブロックチェーンノードを有すると仮定すると、PBFTコンセンサスプロトコルのもとでは、ブロックチェーンネットワークによって必要とされる正直ブロックチェーンノードの最小の数は6である。したがって、ブロック401から500は各々、3/4という最大コードレートで符号化され得る。符号化されたブロックは各々、ブロックチェーンネットワークの中の8つのブロックチェーンノードによって記憶されるべき元のデータの6つのデータセットおよび冗長ビットの2つのデータセットへと分割され得る。
ノード9は、ブロック501の生成の間にフルノードとしてブロックチェーンネットワークに追加される。すなわち、ノード9は、ブロック1から500の全体のコピーを記憶するが、ブロック501の生成以降、ブロックチェーンネットワークの他のブロックチェーンノードとの符号化およびハッシュ化のプロセスに参加する。
Figure 0007159348000001
Table 1(表1)は、上の例600に従った、9つのブロックチェーンノードを伴うブロックチェーンネットワークのもとでの、ブロック1~500の冗長率およびフォールトトレランスを示す。ノード1、2、3、および4は、ECC符号化されたブロック1~100から分割されたデータセットを記憶する。ノード5、6、7、8、および9は、元のブロック1から100を記憶する。ブロック1から100を符号化するためのコードレートは3/4であるので、ノード1、2、3、および4は元のブロックの4/3個のコピーを記憶する。ノード5、6、7、8、および9は各々、元のブロックの1つのコピーを記憶する。したがって、ブロック1から100を記憶することの冗長率は、5+4/3である。フォールトトレランスは、ブロックチェーンネットワークにより許容され得る障害のあるブロックチェーンノードの比率である。ノード5、6、7、8、および9は元のブロック1から100を記憶するので、それらのうちの任意の1つが正直ブロックチェーンノードである限り、そのノードが元のブロックをブロックチェーンネットワークの他のブロックチェーンノードに提供することができる。ノード5、6、7、8、および9がすべて障害のあるブロックチェーンノードである場合、元のブロックのコピーを復元するためには、データセットを記憶するノード1、2、3、および4のうちの3つが正直ノードである必要がある。したがって、9つのブロックチェーンノードのうちの最大で6つが、障害のあるブロックチェーンノードであってもよい。フォールトトレランスは2/3である。
ブロック101から200に対して、ノード1、2、3、4、および5は、ECC符号化されたブロック101~200から分割されたデータセットを記憶する。ノード6、7、8、および9は元のブロックを記憶する。ブロック101から200を符号化するためのコードレートは4/5であるので、ノード1、2、3、4、および5は、元のブロックの5/4個のコピーを記憶する。ノード6、7、8、および9は各々、元のブロックの1つのコピーを記憶する。したがって、ブロック101から200を記憶することの冗長率は4+5/4である。9つのブロックチェーンノードのうちの最大で5つが、障害のあるブロックチェーンノードであってもよい。フォールトトレランスは5/9である。
ブロック201から300に対して、ノード1、2、3、4、5、および6は、ECC符号化されたブロック201~300から分割されたデータセットを記憶する。ノード7、8、および9は元のブロックを記憶する。ブロック201から300を符号化するためのコードレートは2/3であるので、ノード1、2、3、4、5、および6は、元のブロックの6/5個のコピーを記憶する。ノード7、8、および9は各々、元のブロックの1つのコピーを記憶する。したがって、ブロック201から300を記憶することの冗長率は3+6/5である。9つのブロックチェーンノードのうちの最大で4つが、障害のあるブロックチェーンノードであってもよい。フォールトトレランスは4/9である。
ブロック301から400に対して、ノード1、2、3、4、5、6、および7は、ECC符号化されたブロック301~400から分割されたデータセットを記憶する。ノード8および9は元のブロックを記憶する。ブロック301から400を符号化するためのコードレートは5/7であるので、ノード1、2、3、4、5、6、および7は、元のブロックの7/5個のコピーを記憶する。ノード8および9は各々、元のブロックの1つのコピーを記憶する。したがって、ブロック301から400を記憶することの冗長率は2+7/5である。9つのブロックチェーンノードのうちの最大で4つが、障害のあるブロックチェーンノードであってもよい。フォールトトレランスは4/9である。
ブロック401から500に対して、ノード1、2、3、4、5、6、7、および8は、ECC符号化されたブロック301~400から分割されたデータセットを記憶する。ノード9は元のブロックを記憶する。ブロック401から500を符号化するためのコードレートは3/4であるので、ノード1、2、3、4、5、6、7、および8は、元のブロックの4/3個のコピーを記憶する。ノード9は元のブロックの1つのコピーを記憶する。したがって、ブロック401から500を記憶することの冗長率は1+7/5である。9つのブロックチェーンノードのうちの最大で3つが、障害のあるブロックチェーンノードであってもよい。フォールトトレランスは1/3である。
ブロックチェーンノードがブロック1から500にECC符号化を再実行することに合意する場合、9つのブロックチェーンノードのブロックチェーンネットワークにより許容可能な障害のあるブロックチェーンノードの最大の数は2であるので、ECCの最大コードレートは7/9である。符号化およびハッシュ化のプロセスを実行した後、フォールトトレランスは2/9に下がる。一方、冗長率は9/7に下がり、これはプロセスを再実行する前の冗長率よりはるかに低い。したがって、元のブロックが少なくとも1つのブロックチェーンノードに記憶されるときに符号化とハッシュ化のプロセスを再実行すると、システムの冗長率およびストレージの消費量が実質的に減る。
いくつかの場合、ブロックチェーンノードは、それが記憶しているブロックチェーンデータが所定のデータ量の閾値を超えると決定することがある。そのような場合、ブロックチェーンノードは、ブロックチェーンネットワークの冗長率を下げるために、1つまたは複数のブロックに符号化およびハッシュ化のプロセスを再実行するための要求を他のブロックチェーンノードに対して開始することができる。いくつかの場合、符号化およびハッシュ化のプロセスを再実行するための要求は、ブロックチェーンネットワークの冗長率が所定の閾値より大きいと決定したことなどに応答して、ブロックチェーンネットワークの外側の信用されるノードによって開始され得る。たとえば、例600に図示されるような9つのブロックチェーンノードを伴うブロックチェーンネットワークに対して、PBFTプロトコルのもとでの最小の冗長率は9/7である。信用されるノードは、1つまたは複数のブロックの冗長率が2を超えるとき、要求を開始することができる。いくつかの実施形態では、ブロックは、それらの冗長率に基づいて符号化およびハッシュ化のプロセスを再実行するものとのして選択され得る。冗長率の高いブロックは、ストレージの節約がより大きいので、より高い優先度で選択され得る。
符号化およびハッシュ化のプロセスを再実行するための要求は、許容可能な障害のあるブロックチェーンノードの最大の数(すなわち、f/(3f+1))を考慮するECCを実行するための最大コードレートを含み得る。要求は、1つまたは複数の符号化されたブロックの各々の符号化されたブロックを複数のデータセットに分割し、複数のデータセットをブロックチェーンネットワークのブロックチェーンノードに割り当てる命令も含み得る。たとえば、命令は、各々の符号化されたブロックが9つのデータセットへと分割されることを命令することができ、各データセットは9つのブロックチェーンノードのうちの1つに割り当てられることになる。いくつかの場合、図3から図5の説明において論じられるように、命令はデータ記憶方式によって提供される。
要求がブロックチェーンノードによって開始される場合、ブロックチェーンネットワークは、要求に含まれる命令に従い、PBFTアルゴリズムの3段階のプロセス(前準備段階、準備段階、およびコミット段階)を経て、再実行ECCのコンセンサスに達することができる。要求を開始するブロックチェーンノードは、PBFTアルゴリズムを実行するための主要ブロックチェーンノードとして活動することができる。要求を受信する任意のブロックチェーンノードが、主要ブロックチェーンノードから1つまたは複数のブロックを特定して取り出すことができる。
ブロックチェーンノードはまた、要求がプルーフオブオーソリティを伴う信用されるノードから受信される場合、命令に従ってECCを直接再実行することができる。そのような場合、要求は、1つまたは複数のブロックを記憶する少なくとも1つのブロックチェーンノードを特定する識別情報も含み得る。要求を受信するブロックチェーンノードは次いで、要求に基づいて1つまたは複数のブロックを記憶するブロックチェーンネットワークの少なくとも1つのブロックチェーンノードを特定し、少なくとも1つのブロックチェーンノードのうちの1つから1つまたは複数のブロックを取り出すことができる。
1つまたは複数のブロックを取り出すために、ブロックチェーンノードは、1つまたは複数のブロックのハッシュ値を少なくとも1つのブロックチェーンノードのうちの1つに送信することができる。いくつかの例では、ハッシュ値はブロックチェーンのブロックヘッダに記憶される。1つまたは複数のブロックを受信した後で、ブロックチェーンノードは、受信された1つまたは複数のブロックのハッシュ値を、送信した対応するハッシュ値と比較することによって、受信された1つまたは複数のブロックが真正であるかどうかを決定することができる。ハッシュ値が同じである場合、受信された1つまたは複数のブロックは真正であると決定され得る。それ以外の場合、ブロックチェーンノードは、1つまたは複数のブロックが障害のあるノードとして受信されることをブロックチェーンノードに報告することができる。
ブロックチェーンノードは次いで、要求において与えられるコードレートに基づいて1つまたは複数のブロックのECCを実行して、1つまたは複数の符号化されたブロックを生成することができる。図6に示される例では、1つまたは複数の符号化されたブロックの各々の符号化されたブロックに対して、ブロックチェーンノードは、命令に従って、符号化されたブロックを9つのデータセットへと分割し、命令に従って、ブロックチェーンノードに割り当てられた9つのデータセットのうちの少なくとも1つを記憶することができる。ブロックチェーンノードは次いで、複数のデータセットのうちの残りの8つをハッシュして残りの8つのデータセットに対応するハッシュ値を生成し、ハッシュ値を記憶し、1つまたは複数のブロックを削除することができる。その後、1つまたは複数のブロックのための符号化とハッシュ化のプロセスは完了する。
符号化とハッシュ化のプロセスがすべての利用可能なブロックに対して完了した後で、ブロックチェーンネットワークの冗長率が所定のデータ記憶閾値をまだ超えている場合、またはブロックチェーンノードのストレージの消費量が所定のデータ記憶閾値より多い場合、ブロックチェーンノードは、ブロックチェーンネットワークに追加される新しいブロックチェーンノードに応答して、符号化とハッシュ化のプロセスの別のラウンドを惹起するように他のブロックチェーンノードに通知することができる。たとえば、ノード9が追加される前に、8つのブロックチェーンノードがブロック1から400に対して符号化とハッシュ化のプロセスを実行し、ブロックチェーンノードのストレージの消費量がノード8のストレージ容量の90%をまだ超えている場合、ノード8は、ノード8が追加された後で生成されたブロックに対して符号化とハッシュ化のプロセスの別のラウンドを実行するために、通知をノード1から7に送信することができる。
図7は、本明細書の実施形態に従って実行され得るプロセス700の例を示す。便宜的に、プロセス700は、ブロックチェーンノードによって実行されるものとして説明される。ブロックチェーンノードは、1つまたは複数の位置に位置し本明細書に従って適切にプログラムされた、コンピュータまたは1つまたは複数のコンピュータのシステムであり得る。たとえば、ブロックチェーンノードは、適切にプログラムされたコンピューティングシステム、たとえば図1のコンピューティングシステム106、108の中のコンピューティングデバイスであってもよく、プロセス700を実行することができる。
702において、ブロックチェーンノードは、ブロックチェーンの1つまたは複数のブロックに対してECCを実行するための要求を受信する。いくつかの場合、要求は、コードレートと、1つまたは複数の符号化されたブロックの各々の符号化されたブロックを複数のデータセットに分割し、複数のデータセットをブロックチェーンネットワークのブロックチェーンノードに割り当てるための命令とを含む。
704において、ブロックチェーンノードは、ブロックチェーンネットワークの少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータに基づいて、1つまたは複数のブロックを取得する。いくつかの場合、少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータは、1つまたは複数のブロックのECC符号化されたバージョンから分割された複数のデータセットであり、ブロックチェーンノードは、ブロックチェーンノードにローカルに記憶されている1つまたは複数のブロックのECC符号化されたバージョンから分割された1つまたは複数のデータセットを特定することと、ローカルに記憶されている1つまたは複数のデータセットおよび少なくとも1つのブロックチェーンノードから受信された複数のデータセットに基づいて1つまたは複数のブロックを復号することとによって、1つまたは複数のブロックを取得する。
いくつかの場合、少なくとも1つのブロックチェーンノードは少なくとも1つのフルブロックチェーンノードであり、ブロックチェーンノードは、少なくとも1つのフルブロックチェーンノードから1つまたは複数のブロックを取り出すことによって1つまたは複数のブロックを取得する。
706において、ブロックチェーンノードは、1つまたは複数の符号化されたブロックを生成するために1つまたは複数のブロックのECCを実行し、1つまたは複数の符号化されたブロックのコードレートは、ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数およびブロックチェーンネットワークのブロックチェーンノードの総数に等しい。
いくつかの場合、1つまたは複数のブロックは第1の1つまたは複数のブロックであり、第1の1つまたは複数のブロックを取り出すことはさらに、少なくとも1つのフルブロックチェーンノードに第1の1つまたは複数のブロックのハッシュ値を送信することと、少なくとも1つのフルブロックチェーンノードから第2の1つまたは複数のブロックを受信することと、第2の1つまたは複数のブロックのハッシュ値が第1の1つまたは複数のブロックのハッシュ値と同じである場合、第2の1つまたは複数のブロックが真正であると決定することとを備える。
いくつかの場合、1つまたは複数の符号化されたブロックの各々の符号化されたブロックに対して、ブロックチェーンノードはさらに、命令に従って、符号化されたブロックを複数のデータセットへと分割し、命令に従って、ブロックチェーンノードに割り当てられた複数のデータセットのうちの少なくとも1つを記憶することができる。
いくつかの場合、ブロックチェーンノードはさらに、ブロックチェーンノードに割り当てられた複数のデータセットのうちの少なくとも1つ以外の複数のデータセットの残りをハッシュして複数のデータセットの残りに対応するハッシュ値を生成し、ハッシュ値を記憶し、1つまたは複数のブロックおよび複数のデータセットの残りを削除することができる。
いくつかの場合、要求は第1の要求であり、1つまたは複数の符号化されたブロックは第1の1つまたは複数の符号化されたブロックであり、ブロックチェーンノードはさらに、1つまたは複数のブロックを記憶している新しいブロックチェーンノードがブロックチェーンネットワークに追加されたことに応答して、ブロックチェーンの1つまたは複数のブロックに対してECCを実行するための第2の要求を受信し、新しいブロックチェーンノードから1つまたは複数のブロックを取り出し、第2の1つまたは複数の符号化されたブロックを生成するために1つまたは複数のブロックのECCを実行することができ、第2の1つまたは複数の符号化されたブロックのコードレートは、ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数および新しいブロックチェーンノードが追加された後のブロックチェーンノードの総数に等しい。
いくつかの場合、新しいブロックチェーンノードは、ブロックチェーンのコピーを記憶するフルノードである。いくつかの場合、ブロックチェーンノードの計算リソースの利用率が所定の値以下であるとき、ECCが実行される。いくつかの場合、ECCは、冗長ビットを1つまたは複数のブロックに追加することによって実行される消失訂正符号である。
図8は、本明細書の実施形態による装置800のモジュールの例の図である。装置800は、ブロックチェーンデータを記憶して処理するように構成されるブロックチェーンノードの実施形態の例であり得る。装置800は上で説明された実施形態に対応することができ、装置800は、ブロックチェーンの1つまたは複数のブロックに対してECCを実行するための要求を受信する受信モジュール802と、ブロックチェーンネットワークの少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータに基づいて1つまたは複数のブロックを取得する取得モジュール804と、1つまたは複数の符号化されたブロックを生成するために1つまたは複数のブロックのECCを実行する符号化モジュール806とを含み、1つまたは複数の符号化されたブロックのコードレートは、ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数およびブロックチェーンネットワークのブロックチェーンノードの総数に等しい。
いくつかの実施形態では、少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータは、1つまたは複数のブロックのECC符号化されたバージョンから分割された複数のデータセットであり、取得モジュール804はさらに、ブロックチェーンノードにローカルに記憶されている1つまたは複数のブロックのECC符号化されたバージョンから分割された1つまたは複数のデータセットを特定することと、ローカルに記憶されている1つまたは複数のデータセットおよび少なくとも1つのブロックチェーンノードから受信された複数のデータセットに基づいて、1つまたは複数のブロックを復号することとを実行する。
いくつかの実施形態では、少なくとも1つのブロックチェーンノードは少なくとも1つのフルブロックチェーンノードであり、取得モジュールはさらに、少なくとも1つのフルブロックチェーンノードから1つまたは複数のブロックを取り出すことを実行する。
いくつかの実施形態では、1つまたは複数のブロックは第1の1つまたは複数のブロックであり、第1の1つまたは複数のブロックを取り出すことはさらに、少なくとも1つのフルブロックチェーンノードに第1の1つまたは複数のブロックのハッシュ値を送信することと、少なくとも1つのフルブロックチェーンノードから第2の1つまたは複数のブロックを受信することと、第2の1つまたは複数のブロックのハッシュ値が第1の1つまたは複数のブロックのハッシュ値と同じである場合、第2の1つまたは複数のブロックが真正であると決定することとを備える。
いくつかの実施形態では、要求は、コードレートと、1つまたは複数の符号化されたブロックの各々の符号化されたブロックを複数のデータセットへと分割し、複数のデータセットをブロックチェーンネットワークのブロックチェーンノードに割り当てるための命令とを含む。
いくつかの実施形態では、1つまたは複数の符号化されたブロックの各々の符号化されたブロックに対して、装置800はさらに、命令に従って、符号化されたブロックを複数のデータセットへと分割するための分割サブモジュールと、命令に従って、ブロックチェーンノードに割り当てられた複数のデータセットのうちの少なくとも1つを記憶するための記憶サブモジュールとを備える。
いくつかの実施形態では、装置800はさらに、ブロックチェーンノードに割り当てられた複数のデータセットのうちの少なくとも1つ以外の複数のデータセットの残りをハッシュして複数のデータセットの残りに対応するハッシュ値を生成するためのハッシュサブモジュールと、ハッシュ値を記憶するための記憶サブモジュールと、1つまたは複数のブロックおよび複数のデータセットの残りを削除するための削除サブモジュールとを備える。
いくつかの実施形態では、要求は第1の要求であり、1つまたは複数の符号化されたブロックは第1の1つまたは複数の符号化されたブロックであり、受信サブモジュール802はさらに、1つまたは複数のブロックを記憶している新しいブロックチェーンノードがブロックチェーンネットワークに追加されたことに応答して、ブロックチェーンの1つまたは複数のブロックに対してECCを実行するための第2の要求を受信し、取り出しサブモジュールがさらに、新しいブロックチェーンノードから1つまたは複数のブロックを取り出し、符号化モジュール806がさらに、第2の1つまたは複数の符号化されたブロックを生成するために1つまたは複数のブロックのECCを実行し、第2の1つまたは複数の符号化されたブロックのコードレートは、ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数および新しいブロックチェーンノードが追加された後のブロックチェーンノードの総数に等しい。
いくつかの実施形態では、新しいブロックチェーンノードは、ブロックチェーンのコピーを記憶するフルノードである。いくつかの実施形態では、ブロックチェーンノードの計算リソースの利用率が所定の値以下であるとき、ECCが実行される。いくつかの実施形態では、ECCは、冗長ビットを1つまたは複数のブロックに追加することによって実行される消失訂正符号である。
前述の実施形態において示されたシステム、装置、モジュール、またはユニットは、コンピュータチップもしくはエンティティを使用することによって実装されてもよく、または、ある機能を有する製品を使用することによって実装されてもよい。典型的な実施形態のデバイスはコンピュータであり、このコンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであってもよい。
装置の中の各モジュールの機能および役割の実施形態のプロセスについては、前述の方法における対応するステップの実施形態のプロセスを参照することができる。簡潔にするために、詳細はここでは省略される。
装置の実施形態は基本的に方法の実施形態に対応するので、関連する部分については、方法の実施形態の関連する説明を参照することができる。前に説明された装置の実施形態は例にすぎない。別々の部分として説明されたモジュールは物理的に別れていてもいなくてもよく、モジュールとして表示される部分は、物理的なモジュールであってもなくてもよく、1つの場所に位置していてもよく、またはいくつかのネットワークモジュールに分散していてもよい。モジュールの一部またはすべてが、本明細書の解決法の目的を達成するために、実際の要求に基づいて選択され得る。当業者は、創造的な努力なしで本出願の実施形態を理解して実施することができる。
図8を再び参照すると、図8は、内部機能モジュールおよびブロックチェーンノードの構造を示すものとして解釈され得る。実行主体は本質的に電子デバイスであってもよく、この電子デバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能命令を記憶するように構成される1つまたは複数のコンピュータ可読メモリとを含む。いくつかの実施形態では、1つまたは複数のコンピュータ可読メモリは、1つまたは複数のプロセッサに結合され、本明細書で説明されるようなアルゴリズム、方法、機能、プロセス、フロー、および手順を実行するように1つまたは複数のプロセッサによって実行可能なプログラミング命令を記憶している。本明細書はまた、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると1つまたは複数のプロセッサに本明細書で提供された方法の実施形態に従った動作を実行させる命令を記憶した、1つまたは複数の非一時的コンピュータ可読記憶媒体を提供する。
本明細書はさらに、本明細書で提供される方法を実施するためのシステムを提供する。このシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると1つまたは複数のプロセッサに本明細書で提供される方法の実施形態に従った動作を実行させる命令を記憶した1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含む。
本主題の実施形態ならびに本明細書で説明される活動および動作は、デジタル電子回路において、有形に具現化されたコンピュータソフトウェアもしくはファームウェアにおいて、本明細書で開示された構造とその構造的な均等物を含むコンピュータハードウェアにおいて、または、それらの1つまたは複数の組合せにおいて実施され得る。本明細書で説明される主題の実施形態は、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、コンピュータプログラム担体に符号化された1つまたは複数のコンピュータプログラム、たとえばコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。たとえば、コンピュータプログラム担体は、命令が符号化または記憶されている1つまたは複数のコンピュータ可読記憶媒体を含み得る。担体は、磁気ディスク、磁気光学ディスク、もしくは光学ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、または他のタイプの媒体などの、有形な非一時的コンピュータ可読媒体であり得る。代替または追加として、担体は、人工的に生成された伝播信号、たとえば、データ処理装置による実行のための適切な受信機装置への送信のために情報を符号化するために生成される、機械で生成された電気信号、光学信号、または電磁信号であり得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらの1つまたは複数の組合せであってもよく、またはその一部であってもよい。コンピュータ記憶媒体は伝播信号ではない。
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、もしくはコードと呼ばれることも、または表現されることもあるコンピュータプログラムは、コンパイル型言語もしくはインタプリタ型言語、または宣言型言語もしくは手続型言語を含む、任意の形式のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、または、モジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境において実行するのに適した他のユニットとしてを含めて、任意の形式で展開されてもよく、この環境は、1つまたは複数の位置においてデータ通信ネットワークにより相互接続される1つまたは複数のコンピュータを含み得る。
コンピュータプログラムは、必須ではないが、ファイルシステムの中のファイルに対応し得る。コンピュータプログラムは、他のプログラムまたはデータを保持するファイルの一部分に記憶されてもよく、たとえば、1つまたは複数のスクリプトが、マークアップ言語ドキュメントに、対象のプログラムに専用の単一のファイルに、または複数の協調するファイル、たとえば1つまたは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイルに記憶される。
コンピュータプログラムの実行のためのプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、実行のためのコンピュータプログラムの命令、ならびにプロセッサに結合された非一時的コンピュータ可読媒体からのデータを受信する。
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。データ処理装置は、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィクス処理装置)を含み得る。装置はまた、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含み得る。
本明細書で説明されるプロセスおよび論理フローは、1つまたは複数のコンピュータまたはプロセッサが、入力データを操作して出力を生成することによって動作をするように1つまたは複数のコンピュータプログラムを実行することにより、実行され得る。プロセスおよび論理フローはまた、専用の論理回路、たとえばFPGA、ASIC、もしくはGPUによって、または、専用の論理回路と1つまたは複数のプログラムされたコンピュータの組合せによって実行され得る。
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサもしくは両方に、または、任意の他の種類の中央処理装置に基づき得る。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたは両方から、命令およびデータを受信する。コンピュータの要素は、命令を実行するための中央処理装置と、命令とデータを記憶するための1つまたは複数のメモリデバイスとを含み得る。中央処理装置およびメモリは、専用の論理回路によって補助され、またはそれに組み込まれ得る。
一般に、コンピュータはまた、1つまたは複数の記憶デバイスを含み、または、それからデータを受信し、もしくはそれにデータを移送するように動作可能に結合される。記憶デバイスは、たとえば、磁気ディスク、磁気光学ディスク、もしくは光学ディスク、ソリッドステートドライブ、または、任意の他のタイプの非一時的なコンピュータ可読媒体であり得る。しかしながら、コンピュータはそのようなデバイスを有する必要はない。したがって、コンピュータは、ローカルの、および/またはリモートの1つまたは複数のメモリなどの、1つまたは複数の記憶デバイスに結合され得る。たとえば、コンピュータは、コンピュータの必須のコンポーネントである1つまたは複数のローカルメモリを含んでもよく、または、コンピュータは、クラウドネットワークの中の1つまたは複数のリモートメモリに結合されてもよい。その上、コンピュータは、別のデバイス、たとえばいくつか挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、たとえばユニバーサルシリアルバス(USB)フラッシュドライブに埋め込まれ得る。
コンポーネントは、直接、または1つまたは複数の中間コンポーネントを介してのいずれかで、電気的にまたは光学的に互いに結合されるなどして交換可能であることによって、互いに「結合され」得る。コンポーネントは、コンポーネントの一方が他方に統合される場合にも、互いに「結合され」得る。たとえば、プロセッサに統合される記憶コンポーネント(たとえば、L2キャッシュコンポーネント)は、プロセッサに「結合される」。
ユーザとの対話を実現するために、本明細書で説明される主題の実施形態は、情報をユーザに表示するための表示デバイス、たとえばLCD(液晶ディスプレイ)モニタと、ユーザがそれによって入力をコンピュータに与えることができる入力デバイス、たとえば、キーボードおよびポインティングデバイス、たとえばマウス、トラックボール、もしくはタッチパッドを有するコンピュータ上で実装されてもよく、またはそれと通信するように構成されてもよい。他の種類のデバイスも、ユーザとの対話を可能にするために使用され得る。たとえば、ユーザに与えられるフィードバックは、任意の形式の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音声入力、発話入力、または触覚入力を含む、任意の形式で受け取られてもよい。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、それから文書を受信することによって、たとえば、ユーザのデバイス上のウェブブラウザに、そのウェブブラウザから受信された要求に応答してウェブページを送信することによって、または、ユーザデバイス、たとえばスマートフォンもしくは電子タブレット上で実行されるアプリと対話することによって、ユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージを、個人デバイス、たとえばメッセージングアプリケーションを実行しているスマートフォンに送信し、返事としてユーザから応答メッセージを受信することによって、ユーザと対話することができる。
本明細書は、システム、装置、およびコンピュータプログラムコンポーネントに関連して「ように構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作または活動を実行するように構成されるということは、動作中にシステムにその動作または活動を実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せが、システムにインストールされていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作または活動を実行するように構成されることは、データ処理装置によって実行されると、装置にその動作または活動を実行させる命令を1つまたは複数のプログラムが含むことを意味する。専用の論理回路が特定の動作または活動を実行するように構成されることは、回路がその動作または活動を実行する電子論理回路を有することを意味する。
本明細書は多くの特定の実施形態の詳細を含むが、これらは、特許請求の範囲自体により定義される特許請求されるものの範囲に対する限定として解釈されるべきではなく、むしろ、特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。別々の実施形態の文脈で本明細書において説明されるいくつかの特徴はまた、単一の実施形態において組合せで実現され得る。逆に、単一の実施形態の文脈で説明される様々な特徴が、複数の実施形態において別々に、または任意の適切な部分組合せで実現されてもよい。その上、特徴は、何らかの組合せで活動するものとして上で説明されることがあり、そのように最初に特許請求されることすらあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除されてもよく、特許請求の範囲は、部分組合せまたは部分組合せの変形を対象とし得る。
同様に、動作が特定の順序で図面において図示され特許請求の範囲において記載されるが、これは、望ましい結果を達成するために、そのような動作が示される特定の順序または逐次的な順序で実行されること、またはすべての示される動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上で説明された実施形態における様々なシステムモジュールとコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されるプログラムコンポーネントとシステムは一般に、単一のソフトウェア製品において一緒に統合されてもよく、複数のソフトウェア製品へとパッケージングされてもよいことが理解されるべきである。
本主題の特定の実施形態が説明されてきた。他の実施形態が、以下の特許請求の範囲内にある。たとえば、特許請求の範囲において記載される活動は、異なる順序で実行されてもよく、それでも望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示される特定の順序または逐次的な順序を必ずしも必要としない。場合によっては、マルチタスキングおよび並列処理が有利であり得る。
100 環境
102 コンソーシアムブロックチェーンネットワーク
106 コンピューティングデバイス
108 コンピューティングデバイス
110 ネットワーク
200 アーキテクチャ
202 参加者A
204 参加者B
206 参加者C
212 ブロックチェーンネットワーク
214 ノード
216 ブロックチェーン
216'、216''、216''' コピー
300 符号化およびハッシュ化のプロセス
302 ブロックチェーンノード
304 ブロックチェーンノード
306 ブロックチェーンノード
308 ブロックチェーンノード
312 ブロック
314 ECC
400 データ記憶方式
500 符号化およびハッシュ化のプロセス
502 ブロックチェーンノード
504 ブロックチェーンノード
506 ブロックチェーンノード
508 ブロックチェーンノード
512 ブロック
514 ECC
600 例
700 プロセス
800 装置
802 受信モジュール
804 取得モジュール
806 符号化モジュール

Claims (16)

  1. ブロックチェーンネットワークのブロックチェーンノードによって実行されるブロックチェーンデータを処理するためのコンピュータで実行される方法であって、前記方法が、
    ブロックチェーンの1つまたは複数のブロックに対して誤り訂正コーディング(ECC)を実行するための要求を受信するステップと、
    前記ブロックチェーンネットワークの少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータに基づいて前記1つまたは複数のブロックを取得するステップと、
    1つまたは複数の符号化されたブロックを生成するために前記1つまたは複数のブロックのECCを実行するステップとを含み、前記1つまたは複数の符号化されたブロックのコードレートが、前記ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数の、前記ブロックチェーンネットワークのブロックチェーンノードの総数の分数以下であり
    前記少なくとも1つのブロックチェーンノードから受信された前記ブロックチェーンデータが、前記1つまたは複数のブロックのECC符号化されたバージョンから分割された複数のデータセットであり、前記1つまたは複数のブロックを取得するステップがさらに、
    前記ブロックチェーンノードにローカルに記憶されている前記1つまたは複数のブロックの前記ECC符号化されたバージョンから分割された1つまたは複数のデータセットを特定するステップと、
    ローカルに記憶されている前記1つまたは複数のデータセットおよび前記少なくとも1つのブロックチェーンノードから受信された前記複数のデータセットに基づいて、前記1つまたは複数のブロックを復号するステップとを含む、
    方法。
  2. 前記少なくとも1つのブロックチェーンノードが、少なくとも1つのフルブロックチェーンノードであり、前記1つまたは複数のブロックを取得するステップがさらに、前記少なくとも1つのフルブロックチェーンノードから前記1つまたは複数のブロックを取り出すステップを含む、
    請求項1に記載の方法。
  3. 前記1つまたは複数のブロックが第1の1つまたは複数のブロックであり、前記第1の1つまたは複数のブロックを取り出すステップがさらに、
    前記少なくとも1つのフルブロックチェーンノードに前記第1の1つまたは複数のブロックのハッシュ値を送信するステップと、
    前記少なくとも1つのフルブロックチェーンノードから第2の1つまたは複数のブロックを受信するステップと、
    前記第2の1つまたは複数のブロックのハッシュ値が前記第1の1つまたは複数のブロックのハッシュ値と同じである場合、前記第2の1つまたは複数のブロックが真正であると決定するステップとを含む、
    請求項2に記載の方法。
  4. 前記要求が、前記コードレートと、前記1つまたは複数の符号化されたブロックの各々を複数のデータセットに分割し、前記複数のデータセットを前記ブロックチェーンネットワークの前記ブロックチェーンノードに割り当てるための命令とを含む、
    請求項1から3のいずれか一項に記載の方法。
  5. 前記1つまたは複数の符号化されたブロックの各々の符号化されたブロックに対して、
    前記命令に従って、前記符号化されたブロックを前記複数のデータセットへと分割するステップと、
    前記命令に従って、前記ブロックチェーンノードに割り当てられた前記複数のデータセットのうちの少なくとも1つを記憶するステップとをさらに含む、
    請求項4に記載の方法。
  6. ブロックチェーンネットワークのブロックチェーンノードによって実行されるブロックチェーンデータを処理するためのコンピュータで実行される方法であって、前記方法が、
    ブロックチェーンの1つまたは複数のブロックに対して誤り訂正コーディング(ECC)を実行するための要求を受信するステップと、
    前記ブロックチェーンネットワークの少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータに基づいて前記1つまたは複数のブロックを取得するステップと、
    1つまたは複数の符号化されたブロックを生成するために前記1つまたは複数のブロックのECCを実行するステップとを含み、前記1つまたは複数の符号化されたブロックのコードレートが、前記ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数の、前記ブロックチェーンネットワークのブロックチェーンノードの総数の分数以下であり
    前記少なくとも1つのブロックチェーンノードが、少なくとも1つのフルブロックチェーンノードであり、前記1つまたは複数のブロックを取得するステップがさらに、前記少なくとも1つのフルブロックチェーンノードから前記1つまたは複数のブロックを取り出すステップを含み、
    前記1つまたは複数のブロックが第1の1つまたは複数のブロックであり、前記第1の1つまたは複数のブロックを取り出すステップがさらに、
    前記少なくとも1つのフルブロックチェーンノードに前記第1の1つまたは複数のブロックのハッシュ値を送信するステップと、
    前記少なくとも1つのフルブロックチェーンノードから第2の1つまたは複数のブロックを受信するステップと、
    前記第2の1つまたは複数のブロックのハッシュ値が前記第1の1つまたは複数のブロックのハッシュ値と同じである場合、前記第2の1つまたは複数のブロックが真正であると決定するステップとを含む、
    方法。
  7. 前記要求が、前記コードレートと、前記1つまたは複数の符号化されたブロックの各々を複数のデータセットに分割し、前記複数のデータセットを前記ブロックチェーンネットワークの前記ブロックチェーンノードに割り当てるための命令とを含む、
    請求項6に記載の方法。
  8. 前記1つまたは複数の符号化されたブロックの各々の符号化されたブロックに対して、
    前記命令に従って、前記符号化されたブロックを前記複数のデータセットへと分割するステップと、
    前記命令に従って、前記ブロックチェーンノードに割り当てられた前記複数のデータセットのうちの少なくとも1つを記憶するステップとをさらに含む、
    請求項7に記載の方法。
  9. ブロックチェーンネットワークのブロックチェーンノードによって実行されるブロックチェーンデータを処理するためのコンピュータで実行される方法であって、前記方法が、
    ブロックチェーンの1つまたは複数のブロックに対して誤り訂正コーディング(ECC)を実行するための要求を受信するステップと、
    前記ブロックチェーンネットワークの少なくとも1つのブロックチェーンノードから受信されたブロックチェーンデータに基づいて前記1つまたは複数のブロックを取得するステップと、
    1つまたは複数の符号化されたブロックを生成するために前記1つまたは複数のブロックのECCを実行するステップとを含み、前記1つまたは複数の符号化されたブロックのコードレートが、前記ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数の、前記ブロックチェーンネットワークのブロックチェーンノードの総数の分数以下であり、
    前記要求が、前記コードレートと、前記1つまたは複数の符号化されたブロックの各々を複数のデータセットに分割し、前記複数のデータセットを前記ブロックチェーンネットワークの前記ブロックチェーンノードに割り当てるための命令とを含み、
    前記1つまたは複数の符号化されたブロックの各々の符号化されたブロックに対して、
    前記命令に従って、前記符号化されたブロックを前記複数のデータセットへと分割するステップと、
    前記命令に従って、前記ブロックチェーンノードに割り当てられた前記複数のデータセットのうちの少なくとも1つを記憶するステップとをさらに含む、
    方法。
  10. 前記ブロックチェーンノードに割り当てられた前記複数のデータセットのうちの前記少なくとも1つ以外の前記複数のデータセットの残りをハッシュして前記複数のデータセットの前記残りに対応するハッシュ値を生成するステップと、
    前記複数のデータセットの前記残りに対応する前記ハッシュ値を記憶するステップと、
    前記1つまたは複数のブロックおよび前記複数のデータセットの前記残りを削除するステップとをさらに含む、
    請求項5、8、または9に記載の方法。
  11. 前記要求が第1の要求であり、前記1つまたは複数の符号化されたブロックが第1の1つまたは複数の符号化されたブロックであり、前記方法がさらに、
    前記1つまたは複数のブロックを記憶している新しいブロックチェーンノードが前記ブロックチェーンネットワークに追加されたことに応答して、ブロックチェーンの前記1つまたは複数のブロックに対してECCを実行するための第2の要求を受信するステップと、
    前記新しいブロックチェーンノードから前記1つまたは複数のブロックを取り出するステップと、
    第2の1つまたは複数の符号化されたブロックを生成するために前記1つまたは複数のブロックのECCを実行するステップとを含み、前記第2の1つまたは複数の符号化されたブロックのコードレートが、前記ブロックチェーンネットワークにより必要とされる正直ブロックチェーンノードの最小の数の、前記新しいブロックチェーンノードが追加された後のブロックチェーンノードの総数の分数以下である
    請求項10に記載の方法。
  12. 前記新しいブロックチェーンノードが、前記ブロックチェーンのコピーを記憶するフルノードである、
    請求項11に記載の方法。
  13. 前記ブロックチェーンノードの計算リソースの利用率が所定の値以下であるとき、前記ECCが実行される、
    請求項1から12のいずれか一項に記載の方法。
  14. 前記ECCが、冗長ビットを前記1つまたは複数のブロックに追加することによって実行される消失訂正符号である、
    請求項1から13のいずれか一項に記載の方法。
  15. ブロックチェーンデータを処理するためのシステムであって、
    1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサに結合され、請求項1から14のいずれか一項に記載の方法を実行するように前記1つまたは複数のプロセッサによって実行可能な命令が記憶されている、1つまたは複数のコンピュータ可読メモリとを備える、
    システム。
  16. ブロックチェーンデータを処理するための装置であって、前記装置が、請求項1から14のいずれか一項に記載の方法を実行するための複数のモジュールを備える、
    装置。
JP2020560985A 2019-11-13 2019-11-13 誤り訂正符号に基づく動的なブロックチェーンデータの記憶 Active JP7159348B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/118180 WO2020035093A2 (en) 2019-11-13 2019-11-13 Dynamic blockchain data storage based on error correction code

Publications (2)

Publication Number Publication Date
JP2021528884A JP2021528884A (ja) 2021-10-21
JP7159348B2 true JP7159348B2 (ja) 2022-10-24

Family

ID=69525953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020560985A Active JP7159348B2 (ja) 2019-11-13 2019-11-13 誤り訂正符号に基づく動的なブロックチェーンデータの記憶

Country Status (9)

Country Link
US (1) US11030044B2 (ja)
EP (1) EP3769235B1 (ja)
JP (1) JP7159348B2 (ja)
KR (1) KR102430135B1 (ja)
CN (1) CN111386519B (ja)
AU (1) AU2019321746A1 (ja)
CA (1) CA3098936A1 (ja)
SG (1) SG11202010722RA (ja)
WO (1) WO2020035093A2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11706320B2 (en) * 2021-05-28 2023-07-18 International Business Machines Corporation Scalable leader-based total order broadcast protocol for distributed computing systems
US11665067B2 (en) 2021-05-28 2023-05-30 International Business Machines Corporation Managing reconfigurations of distributed computing systems
US11606205B2 (en) 2021-05-28 2023-03-14 International Business Machines Corporation Causal total order broadcast protocols using trusted execution environments

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
CN109871366A (zh) 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法
CN110175212A (zh) 2019-05-22 2019-08-27 杭州复杂美科技有限公司 区块链分布式存储方法、数据读取方法、设备和存储介质
US20190278765A1 (en) 2018-12-19 2019-09-12 Alibaba Group Holding Limited Shared secret-based blockchain storage

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255108B2 (en) 2016-01-26 2019-04-09 International Business Machines Corporation Parallel execution of blockchain transactions
EP3860037A1 (en) * 2016-02-23 2021-08-04 Nchain Holdings Limited Cryptographic method and system for secure extraction of data from a blockchain
WO2017175073A1 (en) * 2016-04-05 2017-10-12 Vchain Technology Limited Method and system for managing personal information within independent computer systems and digital networks
GB201607476D0 (en) * 2016-04-29 2016-06-15 Eitc Holdings Ltd Operating system for blockchain IOT devices
US20170345011A1 (en) * 2016-05-26 2017-11-30 Hitfin, Inc. System and method executed on a blockchain network
US11146535B2 (en) * 2016-10-12 2021-10-12 Bank Of America Corporation System for managing a virtual private ledger and distributing workflow of authenticated transactions within a blockchain distributed network
US10361853B2 (en) * 2016-10-12 2019-07-23 Bank Of America Corporation Automated data authentication and service authorization via cryptographic keys in a private blockchain
US10554746B2 (en) * 2016-11-14 2020-02-04 International Business Machines Corporation Decentralized immutable storage blockchain configuration
US20180276626A1 (en) * 2017-03-21 2018-09-27 Dappsters, LLC Blockchain systems and methods
US11095432B2 (en) * 2017-04-05 2021-08-17 Samsung Sds Co., Ltd. System for processing data based on blockchain and operating method thereof
CN107592292B (zh) * 2017-07-26 2019-08-09 阿里巴巴集团控股有限公司 一种区块链节点间通信方法及装置
US11570003B2 (en) * 2017-10-04 2023-01-31 Jintai Ding Quantumproof blockchain
CN108335106A (zh) * 2018-01-24 2018-07-27 深圳壹账通智能科技有限公司 基于区块链的零知识多账本兑换转账方法、装置及存储介质
CN108418795B (zh) * 2018-01-30 2019-05-28 百度在线网络技术(北京)有限公司 跨区块链的数据访问方法、装置、系统及计算机可读介质
US11728995B2 (en) * 2018-04-09 2023-08-15 American Express Travel Related Services Company, Inc. Reward point transfers using blockchain
US11563557B2 (en) * 2018-04-24 2023-01-24 International Business Machines Corporation Document transfer processing for blockchains
US10965673B2 (en) * 2018-05-11 2021-03-30 Civic Technologies, Inc. User ID codes for online verification
CN108809517A (zh) 2018-05-22 2018-11-13 泰康保险集团股份有限公司 一种区块链网络中的信息获取方法及装置
TWI661706B (zh) * 2018-05-23 2019-06-01 蔣永和 運用區塊鏈技術之節點系統及其運行方法
US11017112B2 (en) * 2018-07-03 2021-05-25 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US10694032B2 (en) * 2018-08-05 2020-06-23 Michael Francis Byrne Systems and methods for blockchain wireless services in a controlled environment
CN110169015B (zh) * 2018-12-13 2022-03-01 创新先进技术有限公司 在分布式系统中的网络节点之间达成共识
US11481375B2 (en) * 2019-01-31 2022-10-25 Apifiny Group Inc. Point-to-point distributed decentralized system
US11327551B2 (en) * 2019-02-14 2022-05-10 Micron Technology, Inc. Methods and apparatus for characterizing memory devices
US11256778B2 (en) * 2019-02-14 2022-02-22 Micron Technology, Inc. Methods and apparatus for checking the results of characterized memory searches
US10957416B2 (en) * 2019-02-14 2021-03-23 Micron Technology, Inc. Methods and apparatus for maintaining characterized memory devices
KR20200101211A (ko) * 2019-02-19 2020-08-27 삼성전자주식회사 전자 장치 및 이를 이용한 블록 체인의 전자 서명 서비스 방법
US11150978B2 (en) * 2019-04-26 2021-10-19 Bank Of America Corporation Automated system for intelligent error correction within an electronic blockchain ledger
CN110096894B (zh) * 2019-05-10 2023-01-17 东北大学 一种基于区块链的数据匿名共享系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
US20190278765A1 (en) 2018-12-19 2019-09-12 Alibaba Group Holding Limited Shared secret-based blockchain storage
CN109871366A (zh) 2019-01-17 2019-06-11 华东师范大学 一种基于纠删码的区块链分片存储与查询方法
CN110175212A (zh) 2019-05-22 2019-08-27 杭州复杂美科技有限公司 区块链分布式存储方法、数据读取方法、设备和存储介质

Also Published As

Publication number Publication date
US20210073075A1 (en) 2021-03-11
JP2021528884A (ja) 2021-10-21
EP3769235A2 (en) 2021-01-27
EP3769235B1 (en) 2022-07-06
KR102430135B1 (ko) 2022-08-05
AU2019321746A1 (en) 2021-05-27
SG11202010722RA (en) 2020-11-27
CN111386519B (zh) 2022-04-15
KR20210058746A (ko) 2021-05-24
WO2020035093A2 (en) 2020-02-20
US11030044B2 (en) 2021-06-08
WO2020035093A3 (en) 2020-09-03
CA3098936A1 (en) 2020-02-20
CN111386519A (zh) 2020-07-07
EP3769235A4 (en) 2021-05-19

Similar Documents

Publication Publication Date Title
JP7012879B2 (ja) 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のコンセンサス
US11307927B2 (en) Indexing and recovering encoded blockchain data
US11233654B2 (en) Blockchain data storage based on error correction code for permissioned blockchain network
JP7050955B2 (ja) 共有されたブロックチェーンデータの記憶の優先順位付け
JP7004423B2 (ja) 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のデータセキュリティ
CN111095218B (zh) 基于纠错编码存储共享的区块链数据的方法、系统及装置
US11175987B2 (en) Shared blockchain data storage based on error correction code
JP7159348B2 (ja) 誤り訂正符号に基づく動的なブロックチェーンデータの記憶

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220523

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221012

R150 Certificate of patent or registration of utility model

Ref document number: 7159348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150