JP2023506634A - 部分的に順序付けられたブロックチェーン - Google Patents
部分的に順序付けられたブロックチェーン Download PDFInfo
- Publication number
- JP2023506634A JP2023506634A JP2022535969A JP2022535969A JP2023506634A JP 2023506634 A JP2023506634 A JP 2023506634A JP 2022535969 A JP2022535969 A JP 2022535969A JP 2022535969 A JP2022535969 A JP 2022535969A JP 2023506634 A JP2023506634 A JP 2023506634A
- Authority
- JP
- Japan
- Prior art keywords
- blocks
- blockchain
- block
- transactions
- slot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000004044 response Effects 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 86
- 230000008569 process Effects 0.000 claims description 45
- 238000011084 recovery Methods 0.000 claims description 17
- 238000010200 validation analysis Methods 0.000 abstract description 37
- 230000006870 function Effects 0.000 description 36
- 230000015654 memory Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 22
- 230000001419 dependent effect Effects 0.000 description 16
- 238000010801 machine learning Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000008520 organization Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 8
- 238000005065 mining Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000002131 composite material Substances 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 244000141353 Prunus domestica Species 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000003137 locomotive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F21/645—Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error 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/2053—Error 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/2094—Redundant storage or storage space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Non-Alcoholic Beverages (AREA)
Abstract
例示的な動作は、隣接するブロックチェーン・ピアおよび順序付けサービス・ノードのうちの1つまたは複数からブロックチェーンのブロックを受信することと、受信されたブロックのうちからブロックチェーン内の同じスロットに属する2つ以上のブロックを識別することと、2つ以上の識別されたブロックの同時の実行によって、2つ以上の識別されたブロックの妥当性を並列に確認することと、2つ以上の識別されたブロックの妥当性確認に応答して、2つ以上の識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納することとのうちの1つまたは複数を含んでよい。
Description
本出願は、一般に、データをブロックチェーンに格納することに関連しており、より詳細には、非依存ブロックが、線形的順序の代わりにスロットで順序付けられ、それによって、ブロック・データへの改善されたデータ・アクセスを可能にする、ブロックチェーン台帳に関連している。
集中データベースは、データを単一のデータベース(例えば、データベース・サーバ)に格納して一か所で維持する。この位置は、多くの場合、中央コンピュータであり、例えば、デスクトップの中央処理装置(CPU:central processing unit)、サーバCPU、またはメインフレーム・コンピュータである。集中データベースに格納された情報は、通常、複数の異なる位置からアクセス可能である。複数のユーザまたはクライアント・ワークステーションが、例えばクライアント/サーバ構成に基づいて、集中データベースを使用して同時に作業することができる。集中データベースは、単一の位置のため、特にセキュリティの目的で、管理、維持、および制御するのが容易である。集中データベース内では、すべてのデータの単一の格納場所が、特定のデータのセットのみが1つの一次記録を含むということも意味するため、データの冗長性が最小限に抑えられる。
しかし、集中データベースは重大な欠点を抱えている。例えば、耐故障性が考慮されていない場合、集中データベースには、単一障害点が存在する。したがって、ハードウェア故障(例えば、ハードウェア、ファームウェア、またはソフトウェア、あるいはその組み合わせの故障)が発生した場合、データベース内のすべてのデータが失われ、すべてのユーザの作業が中断される。加えて、集中データベースは、ネットワークの接続性に大きく依存している。その結果、接続の速度が低下すると、各データベース・アクセスに必要な時間が増加する。別の欠点は、単一の位置に起因する、集中データベースの通信量が増えた場合のボトルネックの発生である。さらに、集中データベースは、データの1つのコピーのみがデータベースによって維持されるため、データへの制限されたアクセスを提供する。
近年、組織は、中央の実体によって制限されない方法で、複数の位置からアクセスできるデータを安全に格納するための手段として、ブロックチェーンに目を向けている。ブロックチェーン・ネットワークでは、ピアが、データを集合的に管理し、ブロックチェーンに格納する役割を担う。ブロックチェーンは、中央機関なしで、データの冗長性、アクセスの複数のノードなどを提供する。従来のブロックチェーンは、データ・ブロックをブロックの線形的順序で格納し、各ブロックが、直前のブロックにハッシュ・リンクされる、などとなる。このリンクは、直前のブロックのハッシュを格納するブロックの結果である。これらのリンクは、ブロックチェーンと呼ばれるブロックの順次的なチェーンを作り出す。
妥当性確認(合意プロトコルと呼ばれることもある)は、ブロックチェーン・ピアが正しい状態のブロックチェーンを含んでいることを保証するため、ブロックチェーンの基本的側面である。許可型ブロックチェーンでは、ブロックチェーン・ピアが、ブロック間のハッシュ・リンクを検証することによって、ブロックチェーンの状態の妥当性を確認することができる。これを実行するには、ブロックチェーン・ピアが、ブロックの線形チェーンでの各リンクのハッシュの妥当性確認を実行する必要がある。ブロックチェーンは、数千個または数百万個のブロックにさえ増大する可能性がある。したがって、妥当性確認プロセスは、かなりの時間およびリソースを必要とすることがある。そのため、これらの欠点および制限を克服する解決策が必要とされている。
第1の実施形態から見ると、本発明は、隣接するブロックチェーン・ピアおよび順序付けサービス・ノードのうちの1つまたは複数からブロックチェーンのブロックを受信するように構成されたネットワーク・インターフェイスと、受信されたブロックのうちからブロックチェーン内の同じスロットに属する2つ以上のブロックを識別し、2つ以上の識別されたブロックの同時の実行によって、2つ以上の識別されたブロックの妥当性を並列に確認し、2つ以上の識別されたブロックの妥当性確認に応答して、2つ以上の識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納するように構成されたプロセッサとを備えている装置を提供する。
本発明は、同じスロットに属する2つ以上の識別されたブロックが、互いに対して非依存ブロックである、装置を提供するのが好ましい。
本発明は、プロセッサが、2つ以上の識別されたブロックを、ブロックチェーン・ピアの2つ以上の独立したプロセッサ・コア上で並列に、同時に実行するように構成される、装置を提供するのが好ましい。
本発明は、プロセッサが、起動プロセスおよび回復プロセスのうちの少なくとも1つのために、ローカルなブロックチェーン台帳を初期化するようにさらに構成される、装置を提供するのが好ましい。
本発明は、プロセッサが、直前のスロットに属するブロックチェーン上の2つ以上の他のブロックを識別するようにさらに構成される、装置を提供するのが好ましい。
本発明は、プロセッサが、これらの2つ以上の他のブロックが、同じスロットに属する2つ以上の識別されたブロックに依存していない場合、これらの2つ以上の識別されたブロックと並列に、直前のスロットに属する2つ以上のブロックの妥当性を確認するようにさらに構成される、装置を提供するのが好ましい。
本発明は、プロセッサが、受信されたブロックに格納されているハッシュ値に基づいて、受信されたブロックのうちのどのブロックが同じスロットに属しているかを識別するように構成される、装置を提供するのが好ましい。
本発明は、プロセッサが、ブロックの直前のハッシュ値が、ブロックチェーン上の直前のスロットに格納された複数のブロックのハッシュの関数である場合に、このブロックが現在のスロットに属しているということを決定する、装置を提供するのが好ましい。
別の態様から見ると、本発明は、隣接するブロックチェーン・ピアおよび順序付けサービス・ノードのうちの1つまたは複数からブロックチェーンのブロックを受信することと、受信されたブロックのうちからブロックチェーン内の同じスロットに属する少なくとも2つのブロックを識別することと、少なくとも2の識別されたブロックの同時の実行によって、少なくとも2つの識別されたブロックの妥当性を並列に確認することと、少なくとも2つの識別されたブロックの妥当性確認に応答して、少なくとも2つの識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納することとのうちの1つまたは複数を含む方法を提供する。
本発明は、同じスロットに属する2つ以上の識別されたブロックが、互いに対して非依存ブロックである、方法を提供するのが好ましい。
本発明は、妥当性確認が、2つ以上の識別されたブロックを、ブロックチェーン・ピアの2つ以上の独立したプロセッサ・コア上で並列に、同時に実行することを含む、方法を提供するのが好ましい。
本発明は、起動プロセスおよび回復プロセスのうちの少なくとも1つの間に、ローカルなブロックチェーン台帳を初期化することをさらに含む方法を提供するのが好ましい。
本発明は、直前のスロットに属するブロックチェーン上の2つ以上の他のブロックを識別することをさらに含む方法を提供するのが好ましい。
本発明は、これらの2つ以上の他のブロックが、同じスロットに属する2つ以上の識別されたブロックに依存していない場合、これらの2つ以上の識別されたブロックと並列に、直前のスロットに属する2つ以上の他のブロックの妥当性を確認することをさらに含む方法を提供するのが好ましい。
本発明は、識別することが、受信されたブロックに格納されているハッシュ値に基づいて、受信されたブロックのうちのどのブロックが同じスロットに属しているかを識別することを含む、方法を提供するのが好ましい。
本発明は、識別することが、ブロックの直前のハッシュ値が、ブロックチェーン上の直前のスロットに格納された複数のブロックのハッシュの関数である場合に、このブロックが現在のスロットに属しているということを決定することを含む、方法を提供するのが好ましい。
別の態様から見ると、本発明は、命令を含んでいる非一過性コンピュータ可読媒体を提供し、これらの命令は、プロセッサによって読み取られたときに、プロセッサに、隣接するブロックチェーン・ピアおよび順序付けサービス・ノードのうちの1つまたは複数からブロックチェーンのブロックを受信することと、受信されたブロックのうちからブロックチェーン内の同じスロットに属する少なくとも2つのブロックを識別することと、少なくとも2の識別されたブロックの同時の実行によって、少なくとも2つの識別されたブロックの妥当性を並列に確認することと、少なくとも2つの識別されたブロックの妥当性確認に応答して、少なくとも2つの識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納することとのうちの1つまたは複数を実行させる。
本発明は、同じスロットに属する2つ以上の識別されたブロックが、互いに対して非依存ブロックである、非一過性コンピュータ可読媒体を提供するのが好ましい。
本発明は、妥当性確認が、2つ以上の識別されたブロックを、ブロックチェーン・ピアの2つ以上の独立したプロセッサ・コア上で並列に、同時に実行することを含む、非一過性コンピュータ可読媒体を提供するのが好ましい。
本発明は、方法が、起動プロセスおよび回復プロセスのうちの少なくとも1つの間に、ローカルなブロックチェーン台帳を初期化することをさらに含む、非一過性コンピュータ可読媒体を提供するのが好ましい。
本明細書の図において一般的に説明され、示されているように、本明細書のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、添付の図において表された方法、装置、非一過性コンピュータ可読媒体、およびシステムのうちの少なくとも1つの実施形態に関する以下の詳細な説明は、請求されている本出願の範囲を制限するよう意図されておらず、単に選択された実施形態を代表している。
本明細書全体を通して説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせられるか、または削除されてよい。例えば、語句「実施形態例」、「一部の実施形態」、またはその他の同様の言葉の使用は、本明細書全体を通じて、実施形態に関連して説明された特定の特徴、構造、または特性が少なくとも1つの実施形態に含まれてよいということを指している。したがって、語句「実施形態例」、「一部の実施形態において」、「その他の実施形態において」、またはその他の同様の言葉の出現は、本明細書全体を通じて、必ずしもすべてが実施形態の同じグループを指しておらず、説明された特徴、構造、または特性は、1つまたは複数の実施形態において、任意の適切な方法で組み合わせられるか、または削除されてよい。さらに、各図では、要素間の任意の接続は、示された接続が一方向または双方向の矢印である場合でも、一方向通信または双方向通信あるいはその両方を許可することができる。また、図面に示された任意のデバイスは、異なるデバイスであることができる。例えば、情報を送信しているモバイル・デバイスが示された場合、その情報を送信するために、有線デバイスも使用され得る。
加えて、「メッセージ」という用語が実施形態の説明において使用されていることがあるが、本出願は、多くの種類のネットワークおよびデータに適用されてよい。さらに、特定の種類の接続、メッセージ、および信号伝達が実施形態例において示されることがあるが、本出願は、特定の種類の接続、メッセージ、および信号伝達に限定されない。
実施形態例は、ブロックが線形的順序の代わりにスロット内に配置される、部分的に順序付けられたブロックチェーン台帳のための方法、システム、コンポーネント、非一過性コンピュータ可読媒体、デバイス、またはネットワーク、あるいはその組み合わせを提供する。
1つの実施形態では、本出願は、互いに通信する複数のノードを含んでいる分散ストレージ・システムである分散型データベース(ブロックチェーンなど)を利用する。分散型データベースは、相互に信頼できない関係者(party)間でレコードを維持することができる分散型台帳に似ている、追加専用の変更不可能なデータ構造を含む。信頼できない関係者は、本明細書ではピアまたはピア・ノードと呼ばれる。各ピアは、データベース・レコードのコピーを維持し、単一のピアは、分散されたピア間で合意に達することなく、データベース・レコードを変更することができない。例えば、ピアは、ブロックチェーン格納トランザクションの妥当性を確認し、それらの格納トランザクションをブロックにグループ化し、ブロック上にハッシュ・チェーンを構築するために、合意プロトコルを実行してよい。このプロセスは、一貫性のために、必要に応じて、格納トランザクションを順序付けることによって台帳を形成する。さまざまな実施形態では、許可型ブロックチェーンまたは許可なしブロックチェーンあるいはその両方が使用され得る。パブリック・ブロックチェーンまたは許可なしブロックチェーンには、特定の識別情報なしで、誰でも参加することができる。パブリック・ブロックチェーンは、ネイティブ暗号通貨を含み、プルーフ・オブ・ワーク(PoW:Proof of Work)などのさまざまなプロトコルに基づいて、合意を使用することができる。一方、許可型ブロックチェーン・データベースは、資金、商品、情報などを交換する企業などの、共通の目標を共有しているが、互いに完全には信用していない実体のグループ内で、安全な相互作用を提供する。
本出願は、分散型ストレージ方式に合わせてある、「スマート・コントラクト」または「チェーンコード」と呼ばれる、任意のプログラム可能な論理を操作するブロックチェーンを利用することができる。場合によっては、システム・チェーンコードと呼ばれる、管理機能およびパラメータのための特殊なチェーンコードが存在することがある。アプリケーションは、ブロックチェーン・データベースの改ざん防止の特性、および署名または署名ポリシーと呼ばれるノード間の基礎になる合意を活用する、信頼できる分散されたアプリケーションであるスマート・コントラクトをさらに利用することができる。このアプリケーションに関連付けられたブロックチェーン・トランザクションは、ブロックチェーンにコミットされる前に「署名される」ことができ、一方、署名されていないトランザクションは無視される。署名ポリシーは、チェーンコードが、トランザクションの署名者を、署名に必要なピア・ノードのセットの形態で指定できるようにする。クライアントが、トランザクションを、署名ポリシーで指定されたピアに送信するときに、トランザクションの妥当性を確認するためのトランザクションが実行される。妥当性確認の後に、トランザクションが順序付けフェーズに移行し、順序付け段階では、合意プロトコルが使用され、ブロックにグループ化された、署名されたトランザクションの順序付けられたシーケンスを生成する。
本出願は、ブロックチェーン・システムの通信実体であるノードを利用することができる。「ノード」は、異なる種類の複数のノードが同じ物理サーバ上で実行され得るという意味で、論理機能を実行してよい。ノードは、信頼できるドメイン内でグループ化され、さまざまな方法でそれらのノードを制御する論理的実体に関連付けられる。ノードは、トランザクション呼び出しを署名者(例えば、ピア)にサブミットし、トランザクション提案を順序付けサービス(例えば、順序付けノード)にブロードキャストするクライアントまたはサブミット・クライアント・ノードなどの、さまざまな種類を含んでよい。別の種類のノードは、クライアントがサブミットしたトランザクションを受信し、トランザクションをコミットし、ブロックチェーン・トランザクションの台帳の状態およびコピーを維持することができるピア・ノードである。ピアは署名者の役割を持つこともできるが、これは必須要件ではない。順序付けサービス・ノードまたは順序付けノードは、すべてのノードのための通信サービスを実行するノードであり、トランザクションをコミットするとき、およびブロックチェーンの世界状態(world state)(通常は制御情報および設定情報を含んでいる初期ブロックチェーン・トランザクションの別名)を変更するときの、システム内のピア・ノードの各々へのブロードキャストなどの、配信保証を実施する。
本出願は、ブロックチェーンのすべての状態遷移の順序付けられた改ざん防止機能付きレコードである台帳を利用することができる。状態遷移は、参加している関係者(例えば、クライアント・ノード、順序付けノード、署名者ノード、ピア・ノードなど)によってサブミットされたチェーンコード呼び出し(すなわち、トランザクション)から生じてよい。各参加している関係者(ピア・ノードなど)は、台帳のコピーを維持することができる。トランザクションは、1つまたは複数のオペランド(作成、更新、削除など)として台帳にコミットされているアセットのキーと値のペアのセットをもたらしてよい。台帳は、変更不可能な順序付けられたレコードをブロックに格納するために使用されるブロックチェーン(チェーンとも呼ばれる)を含む。台帳は、ブロックチェーンの現在の状態を維持する状態データベースも含む。
本出願は、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであるチェーンを利用することができ、各ブロックはN個のトランザクションのシーケンスを含んでおり、Nは1以上である。ブロック・ヘッダーは、ブロックのトランザクションのハッシュ、および前のブロックのヘッダーのハッシュを含んでいる。このようにして、台帳のすべてのトランザクションが順序付けられ、暗号によって一緒にリンクされてよい。したがって、ハッシュ・リンクを壊さずに台帳データを改ざんすることはできない。直前に追加されたブロックチェーンのブロックのハッシュは、それ以前に発生したチェーン上のすべてのトランザクションを表し、すべてのピア・ノードが一貫性のある信頼できる状態にあることを保証できるようにする。チェーンは、ブロックチェーンのワークロードの追加専用という性質を効率的にサポートするピア・ノードのファイル・システム(すなわち、ローカル、取り付けられたストレージ、クラウドなど)に格納されてよい。
変更不可能な台帳の現在の状態は、チェーンのトランザクション・ログに含まれているすべてのキーの最新の値を表す。現在の状態は、チャネルに知られている最新のキーの値を表すため、世界状態と呼ばれることもある。チェーンコード呼び出しは、台帳の現在の状態のデータに対してトランザクションを実行する。それらのチェーンコードの相互作用を効率的にするために、最新のキーの値が状態データベースに格納されてよい。状態データベースは、単にチェーンのトランザクション・ログへのインデックス付きビューであってよく、したがって、いつでもチェーンから再生成され得る。状態データベースは、ピア・ノードの起動時に、トランザクションが受け取られる前に、自動的に回復されて(必要な場合は、生成されて)よい。
Hyperledger Fabricなどのブロックチェーン・フレームワークは、企業向けの許可型の分散型台帳技術(DLT:distributed ledger technology)を提供する。許可型ブロックチェーンではアクセスがブロックチェーンのメンバーのみに制限されるため、許可型ブロックチェーンは、パブリック・ブロックチェーンとは異なっている。Hyperledger Fabricは、実行順序妥当性確認(execute-order-validate)と呼ばれる、ブロックチェーン・トランザクションを台帳に格納するための新しいアーキテクチャを採用することで、高い評価を得ている。Hyperledger Fabricは、産業およびパブリック・ドメインの両方において使用される汎用のブロックチェーン・アーキテクチャとして知られている。
実行順序妥当性確認ブロックチェーン・ネットワークの主要な要素の1つは、順序付けサービス(本明細書では、順序付けノードとも呼ばれる)である。順序付けノードの役割は、順序付けられた方法で実行されたブロックを、ブロックチェーン・ピアの各台帳に格納するためにブロックチェーン・ピアに提供することである。順序付けノードは、共有された通信チャネルをクライアントおよびピアに提供し、トランザクションを含んでいるメッセージのためのブロードキャスト・サービスを提供する。順序付けノードは、トランザクションが厳密に順序付けられること(すなわち、すべてのトランザクションが別のトランザクションの厳密に前または後になること)も保証する。
順序付けノードが十分なトランザクションを受信し、それらのトランザクションを順序付けた場合、順序付けノードはブロックを生成し、それらのブロックを、ブロックチェーン・ネットワークに参加しているブロックチェーン・ピアにブロードキャストする。各ブロックは、ブロックチェーン上の直前のブロックのハッシュを含む。これによって、2つのブロック間にリンクを作成する。新しいブロックが作成されるときに、このプロセスが継続的に繰り返される。その結果は、順次的な線形的順序のブロックになる。しかし、ブロックのサイズが制限される。さらに、そのようなブロックの妥当性確認は、ブロックの線形的順序で、各ハッシュの妥当性確認を必要とする。これは、妥当性確認プロセスの間に、数百個、数千個、または数百万個ものハッシュが検証されることを引き起こす可能性がある。
実施形態例は、部分的に順序付けられたトランザクションまたは部分的に順序付けられたブロックと呼ばれる、ブロックチェーン台帳のブロックのための新しい順序付けプロセスを採用する。ブロックは、数百個または数千個のトランザクションを格納することがある。しかし、すべてのブロックが互いに依存関係を有しているわけではない。例えば、新しいブロックは、直前のブロックのトランザクションに依存しないことがある。本明細書に記載されたシステムは、この非依存性を利用し、ブロックチェーン台帳でのスロットの使用を採用する。スロットは、複数のブロックを互いに並列に、かつ他のスロットとは順序通りに保持するために、順序付けサービスによって使用されてよい。例えば、スロットは、2つ以上のブロックを保持してよく、2つ以上のブロックの各々は、前のスロットへのハッシュ・リンクを含んでよい。この例では、現在のスロット内の2つ以上のブロックの各々は、1つのブロック(直前のブロックなど)へのハッシュ・リンクを含むのではなく、前のスロット内のブロックの組み合わせに基づくハッシュ関数を含んでよい。
部分的に順序付けられたブロックチェーン(およびそれに含まれるトランザクション)の利点の一部としては、並列にブロックの妥当性を確認する/ブロックを実行する能力が挙げられる。従来のブロックチェーンでは、妥当性確認が線形的順序で発生し、各ブロック・ハッシュが順次的な順序で検証される。その結果は、線形的方法で実行される連続的な一連のハッシュの検証になる。これに対して、部分的に順序付けられたブロックチェーンは、複数のブロック(例えば、同じスロット内のブロックなど)を並列に実行する/妥当性を確認することを可能にする。これによって、ブロックチェーンの妥当性確認に必要な時間を大幅に短縮することができる。部分的に順序付けられたブロックチェーンによって生み出されるその他の利点として、より速いピアの回復/起動、より速い問い合わせ処理、改善されたトランザクションのスループットのためのブロックの選択的な妥当性確認、改善されたトランザクションのスループットおよび問い合わせ応答時間のための任意の編成のピアのグループによる異なるDAGに基づく方法の採用、トランザクションの暗号化されたブロックの順序付けなども挙げられる。
図1Aは、実施形態例に従って、実行順序妥当性確認フレームワークに従うブロックチェーン・ネットワーク100を示している。図1Aを参照すると、ブロックチェーン・ネットワーク100は、ブロックチェーン台帳(ブロックチェーン110)の分散されたコピーを格納する複数のブロックチェーン・ピア121、122、123、および124を含んでいる。クライアント(図示されていない)は、ブロックチェーン110上の格納のために、ブロックチェーン・ピア121~124を介してトランザクションを提案してよい。トランザクションがブロックチェーン110にコミットされることができるようになる前に、トランザクションは、1つまたは複数の署名ピアによって実行されてよい。ブロックチェーン・ピア121~124のいずれかが署名者の役割を果たしてよい。
正常に実行されたトランザクションは、次に、(例えば、クライアントなどによって)順序付けノード120に提供されてよい。順序付けノード120は、トランザクションを受信し、タイムスタンプに基づいて順序付け、順序付けられたトランザクションをブロックに格納する。十分なトランザクションが受信されたか、または既定の時間制限を過ぎた場合、順序付けられたトランザクションを保持している新しいブロックが切り取られ、格納のためにブロックチェーン・ピア121~124に送信されてよい。ブロックをブロックチェーン110の各コピーに格納する前に、ブロックチェーン・ピア121~124の各々がトランザクションの妥当性を再度確認してよい。しかし、順序付けノード120がブロックを線形的順序で順序付けるのではなく、順序付けノード120は、図1Bに示されているように、部分的に順序付けられたブロック/トランザクションを作成してよい。
具体的には、図1Bは、実施形態例に従って、部分的に順序付けられたブロックチェーン台帳110の例を示している。理解されるであろうように、すべてのトランザクションが、それらのトランザクション間で依存関係を有しているわけではなく、現在のブロック内のトランザクションが、ブロックチェーン上の前の各ブロックに常に依存しているわけでもない。部分的順序付けは、この考え方を利用して、非依存ブロック(互いに依存するトランザクションを何も含まないブロック)をブロックチェーン台帳上の同じスロットに格納できるメカニズムを提供する。スロットが大きくなりすぎるのを防ぐために、順序付けノード120は、スロット・サイズの最大値、または終了時間、あるいはその組み合わせなどを実装してよい。
さまざまな実施形態によれば、順序付けノード120は、できるだけ長い間(またはスロット・サイズの最大値もしくは終了時間に達するまで)、ブロック間の依存関係を回避することができるような方法で、トランザクションを配置することができる。加えて、実施形態例は、ブロックチェーン台帳上のスロットの概念を採用する。スロットは、基本的に、ブロックチェーン台帳に並列に配置され得る(従来は順次的な線形である)ブロックのグループである。並列に配置されたスロットは、垂直に(並列に)実行されることができ、一方、台帳の異なるスロットは、従来のブロックの線形的順序とは対照的に、水平に(次々に連続して)実行される。時間の目的で、同じスロット内のブロックは等しいと仮定される。システムは、どのブロックも互いに依存するトランザクションを含んでいないため、この概念を採用することができ、このようにして、同じスロット内の異なるブロック間のタイミング差の重要性を取り除く。
図1Bは、各ブロック115の4つのスロット111、112、113、および114の例を示している。スロットが2つ以上のブロックを含む必要はない。言い換えると、スロットは、単一のブロックのみを含んでよく、または2つ以上のブロックを含んでもよい。また、各スロット111~114内のブロックの数は、順序付けノード120によって監視されるスロット・サイズ、終了時間などによって制限されてよい。
同じスロット内のトランザクションの場合、トランザクションは、順序付けノード120によって識別されて実施されるさまざまな特性を有してよい。例えば、スロット112のブロック(例えば、ブロック9)内のトランザクションは、その同じブロック(例えば、ブロック9)内のトランザクションに依存することができ、または前のスロット111(または複数のスロット)のブロック(例えば、ブロック8)に存在するトランザクションに依存することができる。しかし、ブロック内のトランザクションは、同じスロット内の他のブロックのトランザクションに依存することができない。したがって、ブロック9は、ブロック10、11、または12に依存するトランザクションを含むことができず、逆にブロック10、11、または12は、ブロック9に依存するトランザクションを含むことができない。新しいブロックが、現在のスロットのブロックに存在するいずれかのトランザクションに依存するトランザクションを含んでいる場合、順序付けノード120は、新しいスロットを作成する。例えば、スロット112を作成している間に、順序付けノード112が、ブロック10に依存するトランザクションを受信した場合、順序付けノードは、ブロック13を作成し、それと同時にスロット113を作成してもよい。
一方、各ブロックに格納されている前のハッシュ値は、従来の順次的な線形的ブロックチェーンにおける前のハッシュ値とは異なっている。図1Bの例では、前のハッシュ値を作成するために、関数116が使用される。例えば、同じスロット内のブロックの各々は、同じ前のハッシュ値を格納してよい。さらに、前のハッシュ値は、直前のスロットのハッシュ値/ブロックの組み合わせに基づいて生成された値であってよい。例えば、ブロック13、14、および15は、同じスロット113(スロットiとも呼ばれる)に属している。ここで、ブロック13、14、および15の各々は、直前のスロット112に属するブロック9、10、11、および12のハッシュの組み合わせに基づき、かつブロック9、10、11、および12の前のハッシュ値116に基づく、前のハッシュ値を格納してよい。これによって、スロットの順次的性質を維持しながら、同じスロット内のブロック間の並列性も可能にすることを保証する。
さまざまな実施形態によれば、スロット(i)内の新しいブロックの前のハッシュ値は、前のスロット(i-1)に存在するブロックのハッシュの関数(Fn)である。関数Fnの例としては、前のスロット内のブロックのハッシュの排他的ORが挙げられる。別の例としては、Fn関数は、前のスロット内のブロックの複合ハッシュであってよい。例えば、複合ハッシュは、前のスロット内のブロックのハッシュの関数としてのキーの二次ハッシュであってよい。
図1Bの例では、ブロック9~12は互いに依存しておらず、したがって、同じスロット112に属している。一方、ブロック13内のトランザクションのうちの少なくとも1つがブロック9~12のうちの1つに存在するトランザクションに依存しているため、ブロック13は、非依存関係の要件に違反している。したがって、順序付けノード120は新しいスロット113を作成し、ブロック13がスロット13に追加される。さらに、ブロック13の前のハッシュ値は、前のスロット112に存在するブロックに基づく関数116である。一方、残りのブロック14および15はブロック13内のトランザクションに依存しておらず、互いに依存してもいない。したがって、ブロック14および15がスロット113に追加される。一方、ブロック16は、依存関係要件に違反しているか、またはブロック16は、スロット制限パラメータの後に受信される。
例えば、計算コストが爆発的に増えるのを防ぐために、順序付けノード120は、スロット・サイズ要件および終了時間要件のうちの1つまたは複数を実装してよい。スロット・サイズ要件は、1つのスロットに存在することができるブロック(またはトランザクション)の数を制限する。スロット内のブロックの数が、割り当てられスロット・サイズ・パラメータに達した場合、順序付けノード120は新しいスロットを切り取り、次のブロックを新しいスロットに配置する。別の例として、終了時間パラメータは、順序付けノード120がブロックを現在のスロットに追加することができる、割り当てられた最大時間である。終了時間パラメータは、新しいスロットが作成されたときにタイマーを開始する順序付けノード120によって追跡されてよい。ここで、順序付けノード120は、タイマーの期限が切れる/タイマーが完了するまで、ブロックをスロットに追加し続ける。順序付けノード120が新しいスロットを開始するときに、順序付けノード120は、タイマーを再開する。図1Bの例では、スロット113の作成中にタイマーの期限が切れ、タイマーの期限切れの後にブロック16が作成されたということが仮定される。したがって、ブロック16が新しいスロット114に追加される。
順序付けノード120は、現在のスロットに属しているブロック内のトランザクションによって読み取れたか、または書き込まれたキーを含んでいる、スロット読み取りセット(slot read set)およびスロット書き込みセット(slot write set)を維持してよい。スロットのサイズを制限することによって、これらのセットを維持するために順序付けノード120によって使用されるリソースが抑制される。一部の実施形態では、順序付けノード120が新しいトランザクションを受信したときに、現在のスロットのいずれかの前のブロック内のトランザクションに応じて、新しいスロットが作成されてもよい。この場合、順序付けノードによって使用されるリソースが自動的にリセットされる。スロットのサイズに対する制限は、現在のスロットのいずれかの前のブロック内のトランザクションに依存する新しいトランザクションを受信しない場合に、順序付けノードが圧倒されないことを保証する。スロットの実際のサイズは、順序付けノードで使用できるリソースに応じて設定されることができる。さらに、スロットのサイズが制限されない場合、多数の直前のブロックが受信されるのを待機する必要があるため、前のブロックのハッシュの妥当性確認が長時間を要することがある。各ピアが所有している制限された数のプロセッサのため、スロット内のすべてのブロックの妥当性が並列に確認されなくてよい。
別の例として、スロットが開いている時間を制限することによって、これらのセットを維持するために順序付けノード120によって使用されるリソースが抑制される。スロットが開いている時間に対する制限は、同様に、現在のスロットのいずれかの前のブロック内のトランザクションに依存する新しいトランザクションを受信しない場合に、順序付けノード120が圧倒されないことを保証する。スロットが開いている実際の時間は、順序付けノードで使用できるリソースに応じて設定されることができる。スロットが開いている時間が制限されない場合、スロットに最初に/初期に含まれているトランザクションは、長い待ち時間よる悪影響を受ける。
これらの例では、次の3つのシナリオで新しいスロットが作成されてよい。例えば、順序付けノード120が新しいトランザクションを受信したときに、現在のスロットのいずれかの前のブロック内のトランザクションに応じて、新しいスロットが作成されてよい。別の例として、順序付けノード120は、スロット・サイズに達したときに、新しいスロットを作成してよい。別の例として、順序付けノード120は、終了時間に達したときに新しいスロットを作成してよい。
一方、ブロックチェーン・ピア121~124は、ブロックが作成された後に、順序付けノード120からブロックを受信してよい。ここで、ブロックチェーン・ピア121~124は、1つずつブロックを受信してよい。したがって、ブロックチェーン・ピアには、ブロックチェーン台帳110内のスロット/ブロックの部分的順序が直ちに明らかではない。ブロックチェーン・ピア(例えば、121~124)が、順序付けノード120からブロードキャストされた新しいブロックを受信したときに、ブロックチェーン・ピアは、新しいブロック内の前のハッシュ値が前のスロットに存在するブロックのハッシュの関数であるかどうかをチェックすることによって、このブロックが現在のスロットに属しているかどうかをチェックしてよい。
前のハッシュが前のスロットのハッシュの関数でない場合、ブロックチェーン・ピアは、新しいブロックが次のスロットに属しているかどうかをチェックしてよい。この場合、新しいブロックが次のスロットに属しているのであれば、新しいブロック内の前のハッシュ値が、現在のスロット内のブロックのハッシュの関数であるはずである。ハッシュ値を正常にチェックできた場合、ブロックチェーン・ピアは、現在のスロットのポインタをインクリメントし、新しいスロットをブロックチェーン台帳に作成する。ハッシュ値が一致しない場合、ブロックチェーン・ピアは、このブロック内のトランザクションが依存している可能性がある現在のスロット内の一部のブロックをまだ受信していない。さらに、ブロックチェーン・ネットワーク内の冗長性に起因して、各ブロックがすべてのピアによって受信されることが期待される。ブロックチェーン・ピアは、ブロックをバッファに格納し、ブロックが現在のスロットに属しているかどうかを定期的にチェックしてよい。
トランザクションの依存関係を追跡するために、順序付けノード120は、ハッシュ・セットを使用して、スロット内のブロックごとにトランザクションのキーを追跡してよい。この例では、トランザクションは、あるブロックまたは前のスロット内のブロックに存在するトランザクションのみに依存する場合に、そのブロックに追加されることができる。一方、トランザクションを現在のスロットに追加できない場合、順序付けノード120は、新しいスロットを作成してそこにトランザクションを追加するか、またはこのトランザクションを保留して、現在のスロットに追加できる他のトランザクションを処理することを、決定することができる。この場合、順序付けノード120は、保留されたトランザクションのためにリソースの枯渇が発生しないことを保証するための手段(例えば、トランザクションがブロックに含まれる前の待機時間に対する制限)を取ることができる。
キーごとに、順序付けノード120は、(どのブロックに存在する)どのトランザクションが読み取られて変更されるかに関する分離したメタデータを維持してよい。この方法は、メモリ要件に関する費用が高くなるが、このメタデータは、ピアが順序付けノード120を信用する許可型プラットフォームの場合、有利である可能性がある。ピアがブロックチェーン・ネットワーク100に参加した場合、ピアは、ブロックの受信を開始する。既存のシナリオでは、ピアは、現在受信されているブロックのトランザクションの妥当性を確認できるようになる前に、すべての前のブロックを要求しなければならない。しかし、実施形態例では、部分的順序付けのため、ブロックチェーン・ピアは、現在のブロック内のトランザクションが依存しているブロックのみを要求することができる。
順序付けノード120によって生成されたハッシュ・セットは、現在のスロットに属しているブロック内のトランザクションによって読み取れたか、または書き込まれたすべてのキーのセットを含んでよい。順序付けノード120は、ハッシュ・セットまたはリンク・リストまたは配列などを介して、さまざまなデータ構造でこのセットを維持することができる。一部の実施形態では、順序付けノード120は、スロット読み取りセットおよびスロット書き込みセットを含んでいる2つのセットを維持してよい。スロット読み取りセットは、現在のスロット内のブロックに属しているトランザクションによって読み取られたキーを含んでよい。スロット書き込みセットは、現在のスロット内のブロックに属しているトランザクションによって書き込まれたキーを含んでよい。新しいトランザクションが受信された場合、順序付けノード120は、そのトランザクションの読み取り/書き込みセットを、スロット読み取りセットおよびスロット書き込みセットと比較してよい。この比較を使用して、順序付けノード120は、トランザクションが、現在のスロットに属しているブロックに挿入されることができるか、または新しいスロットを必要とするかを決定することができる。
別の例として、順序付けノード120は、クライアントによってサブミットされたトランザクションの有向非環状グラフ(DAG:directed acyclic graph)を作成してよい。この例では、同じ接続されたコンポーネントに属しているトランザクションが、同じブロックに配置されるか、または異なるスロットにわたって異なるブロックに配置されることができる。加えて、異なるコンポーネントに属しているトランザクションが、同じスロット(ただし、同じスロット内の異なるブロック)に挿入されることができる。
実施形態例は、従来の直線的に順序付けられたブロックチェーンを上回る大きな利点を提供する。例えば、実施形態例は、ブロックチェーンのトランザクション間で部分的順序付けを実施する順序付けノードについて説明する。順序付けノードは、ある期間内に到着する異なるトランザクションのキーの間の依存関係を識別し、異なるブロックを作成し、任意のピアによって同時に実行されることができるそれらのブロック(すなわち、ブロックチェーン台帳内のスロット)を一緒に順序付けてよい。ブロックの前のハッシュは、前のスロット内のブロックのハッシュの関数(例えば、ハッシュの排他的OR、複合ハッシュなど)を含む。一部の実施形態では、スロット内のブロックの数は、スロット内で許可されるブロックの最大数、またはそれ以上ブロックを現在のスロットに追加できなくなるまでのタイムアウト時間によって制限される。一部の実施形態では、順序付けノードは、スロットに収まるブロックの数を確実に最大化している間はトランザクションのリソースが枯渇しないことを保証する。
図2Aは、実施形態例に従って、ブロックチェーン・アーキテクチャの構成200を示している。図2Aを参照すると、ブロックチェーン・アーキテクチャ200は、特定のブロックチェーン要素(例えば、ブロックチェーン・ノードのグループ202)を含んでよい。ブロックチェーン・ノード202は、1つまたは複数のノード204~210を含んでよい(単に例として、これらの4つのノードが示されている)。これらのノードは、ブロックチェーン・トランザクションの追加および妥当性確認プロセス(合意)などの、複数の活動に参加する。ブロックチェーン・ノード204~210のうちの1つまたは複数は、署名ポリシーに基づいてトランザクションに署名してよく、アーキテクチャ200内のすべてのブロックチェーン・ノードのための順序付けサービスを提供してよい。ブロックチェーン・ノードは、ブロックチェーン認証を開始し、ブロックチェーン層216に格納されたブロックチェーンの変更不可能な台帳に書き込もうとしてよく、この書き込みのコピーが、基盤になる物理的インフラストラクチャ214にも格納されてよい。ブロックチェーンの構成は、格納されたプログラム/アプリケーション・コード220(例えば、チェーンコード、スマート・コントラクトなど)にアクセスして実行するためにアプリケーション・プログラミング・インターフェイス(API:application programming interfaces)222にリンクされた1つまたは複数のアプリケーション224を含んでよく、プログラム/アプリケーション・コード220は、参加者によって要求されてカスタマイズされた構成に従って作成することができ、それら自身の状態を維持し、それら自身のアセットを制御し、外部の情報を受信することができる。ブロックチェーンの構成は、トランザクションとしてデプロイし、分散型台帳に追加することによって、すべてのブロックチェーン・ノード204~210にインストールすることができる。
ブロックチェーン・ベースまたはプラットフォーム212は、ブロックチェーン・データのさまざまな層と、サービス(例えば、暗号信用サービス、仮想実行環境など)と、新しいトランザクションを受信して格納し、データ・エントリにアクセスしようとしている監査人にアクセスを提供するために使用されてよい、基盤になる物理的コンピュータ・インフラストラクチャとを含んでよい。ブロックチェーン層216は、プログラム・コードを処理し、物理的インフラストラクチャ214に参加させるために必要な仮想実行環境へのアクセスを提供するインターフェイスを公開してよい。暗号信用サービス218は、アセット交換トランザクションなどのトランザクションを検証し、情報をプライベートに保つために使用されてよい。
図2Aのブロックチェーン・アーキテクチャの構成は、ブロックチェーン・プラットフォーム212によって公開された1つまたは複数のインターフェイスおよび提供されたサービスを介して、プログラム/アプリケーション・コード220を処理および実行してよい。コード220は、ブロックチェーンのアセットを制御してよい。例えば、コード220は、データを格納および転送することができ、スマート・コントラクトおよび条件を含む関連するチェーンコードまたは実行の対象になるその他のコード要素の形態で、ノード204~210によって実行されてよい。非限定的な例として、リマインダ、更新、または変更、更新の対象になるその他の通知、あるいはその組み合わせなどを実行するために、スマート・コントラクトが作成されてよい。スマート・コントラクト自体は、権限付与およびアクセスの要件ならびに台帳の使用に関連付けられたルールを識別するために使用され得る。例えば、書き込みデータ228を含んでいるブロックチェーンに書き込まれる処理結果を作成するために、読み取りデータ226が、ブロックチェーン層216に含まれている1つまたは複数の処理実体(例えば、仮想マシン)によって処理されてよい。物理的インフラストラクチャ214は、本明細書に記載されたデータまたは情報のいずれかを取り出すために利用されてよい。
高水準のアプリケーションおよびプログラミング言語を使用して、スマート・コントラクトが作成され、その後、ブロックチェーン内のブロックに書き込まれてよい。スマート・コントラクトは、ブロックチェーン(例えば、ブロックチェーン・ピアの分散ネットワーク)への登録、格納、または複製、あるいはその組み合わせが実行される実行可能コードを含んでよい。トランザクションは、スマート・コントラクトが満たされていることに関連付けられた条件に応答して実行され得る、スマート・コントラクト・コードの実行である。スマート・コントラクトの実行は、デジタル・ブロックチェーン台帳の状態に対する信頼できる変更をトリガーしてよい。スマート・コントラクトの実行によって引き起こされるブロックチェーン台帳に対する変更は、1つまたは複数の合意プロトコルを介して、ブロックチェーン・ピアの分散ネットワーク全体に自動的に複製されてよい。
スマート・コントラクトは、データをキーと値のペアの形式でブロックチェーンに書き込んでよい。さらに、スマート・コントラクト・コードは、ブロックチェーンに格納された値を読み取り、それらをアプリケーションの動作において使用することができる。スマート・コントラクト・コードは、さまざまな論理演算の出力をブロックチェーンに書き込むことができる。このコードは、仮想マシンまたはその他のコンピューティング・プラットフォーム内の一時的データ構造を作成するために使用されてよい。ブロックチェーンに書き込まれたデータは、パブリックになること、またはプライベートとして暗号化されて維持されること、あるいはその両方が行われ得る。スマート・コントラクトによって使用/生成される一時的データは、提供された実行環境によってメモリ内に保持され、ブロックチェーンに必要なデータが識別された後に削除される。
チェーンコードは、追加機能と共に、スマート・コントラクトのコード解釈を含んでよい。本明細書に記載されているように、チェーンコードは、コンピューティング・ネットワーク上にデプロイされるプログラム・コードであってよく、合意プロセス中に、チェーン・バリデータによって一緒に実行されて妥当性を確認される。チェーンコードは、ハッシュを受信し、以前に格納された特徴抽出機能の使用によって作成されたデータ・テンプレートに関連付けられたハッシュをブロックチェーンから取り出す。ハッシュ識別子のハッシュと、格納された識別子テンプレート・データから作成されたハッシュが一致する場合、チェーンコードは、権限付与キーを、要求されたサービスに送信する。チェーンコードは、暗号の詳細に関連付けられたデータをブロックチェーンに書き込んでよい。
図2Bは、実施形態例に従って、ブロックチェーンのノード間のブロックチェーン・トランザクション・フロー250の例を示している。図2Bを参照すると、トランザクション・フローは、アプリケーション・クライアント・ノード260によって署名ピア・ノード281に送信されるトランザクション提案291を含んでよい。署名ピア281は、クライアントの署名を検証し、チェーンコード関数を実行してトランザクションを開始してよい。出力は、チェーンコードの結果、チェーンコードに読み取られたキー/値のバージョンのセット(読み取りセット)、およびチェーンコードに書き込まれたキー/値のセット(書き込みセット)を含んでよい。提案応答292が、承認されている場合は署名と共に、クライアント260に返送される。クライアント260は、署名をトランザクションのペイロード293にまとめて、順序付けサービス・ノード284にブロードキャストする。その後、順序付けサービス・ノード284は、順序付けられたトランザクションをチャネル上でブロックとしてすべてのピア281~283に配信する。ブロックチェーンへのコミットの前に、各ピア281~283がトランザクションの妥当性を確認してよい。例えば、ピアは、指定されたピアの正しい割り当てが結果に署名し、トランザクションのペイロード293に対する署名を認証したことを確認するために、署名ポリシーをチェックしてよい。
再び図2Bを参照すると、クライアント・ノード260が、要求を構築してピア・ノード281(署名者)に送信することによって、トランザクション291を開始する。クライアント260は、サポートされているソフトウェア開発キット(SDK:software development kit)を利用するアプリケーションを含んでよく、このアプリケーションは、使用可能なAPIを利用してトランザクション提案を生成する。提案は、データが台帳から読み取られること、または台帳に書き込まれること(すなわち、アセットの新しいキーと値のペアを書き込むこと)、あるいはその両方を実行できるように、チェーンコード関数を呼び出すことの要求である。SDKは、トランザクション提案を、適切に設計された形式(例えば、遠隔手続き呼び出し(RPC:remote procedure call)を経由するプロトコル・バッファ)にパッケージ化するためのシムとして機能し、クライアントの暗号認証情報を受け取って、トランザクション提案の一意の署名を生成してよい。
それに応じて、署名ピア・ノード281は、(a)トランザクション提案が適切に形成されていること、(b)トランザクションが過去にすでにサブミットされていないこと(リプレイアタック保護)、(c)署名が有効であること、および(d)そのチャネルに対する提案された操作を実行するための適切な権限がサブミッター(例では、クライアント260)に与えられていることを検証してよい。署名ピア・ノード281は、トランザクション提案の入力を、呼び出されるチェーンコード関数への引数として受け取ってよい。その後、チェーンコードが、現在の状態データベースに対して実行され、応答値、読み取りセット、および書き込みセットを含んでいるトランザクション結果を生成する。ただしこの時点では、台帳に対する更新は行われない。292で、値のセットが、署名ピア・ノード281の署名と共に、提案応答292としてクライアント260のSDKに返され、このSDKが、アプリケーションが使用するためのペイロードを構文解析する。
それに応じて、クライアント260のアプリケーションが、署名ピアの署名を検査/検証し、提案応答を比較して、提案応答が同じであるかどうかを判定する。チェーンコードが単に台帳に問い合わせた場合、アプリケーションは問い合わせ応答を検査し、通常は、トランザクションを順序付けノード・サービス284にサブミットしない。クライアント・アプリケーションが、台帳を更新するためにトランザクションを順序付けノード・サービス284にサブミットしようとしている場合、アプリケーションは、サブミットする前に、指定された署名ポリシーが満たされているかどうか(すなわち、トランザクションに必要なすべてのピア・ノードがトランザクションに署名したかどうか)を判定する。ここで、クライアントは、トランザクションの複数の関係者のうちの1つのみを含んでよい。この場合、各クライアントは、それ自身の署名ノードを含んでよく、各署名ノードがトランザクションに署名する必要がある。アーキテクチャは、アプリケーションが応答を検査しないことを選択するか、またはその他の方法で署名されていないトランザクションを転送する場合でも、署名ポリシーが、ピアによってまだ実施され、コミット妥当性確認フェーズで維持されるようにする。
検査に成功した後に、ステップ293で、クライアント260が、署名をトランザクションにまとめ、順序付けノード284へのトランザクション・メッセージ内でトランザクション提案およびトランザクション応答をブロードキャストする。トランザクションは、読み取り/書き込みセット、署名ピアの署名、およびチャネルIDを含んでよい。順序付けノード284は、その動作を実行するために、トランザクションの内容全体を検査する必要はなく、代わりに順序付けノード284は、単に、トランザクションをネットワーク内のすべてのチャネルから受信して、チャネル別に経時的に順序付けし、チャネルごとにトランザクションのブロックを作成してよい。
トランザクションのブロックは、順序付けノード284からチャネル上のすべてのピア・ノード281~283に配信される。いずれかの署名ポリシーが満たされていることを保証するため、および読み取りセットがトランザクションの実行によって生成されて以来、読み取りセットの変数に関して台帳の状態に対する変更がないことを保証するために、ブロック内のトランザクション294の妥当性が確認される。ブロック内のトランザクションは、有効または無効であるとしてタグ付けされる。さらに、ステップ295で、各ピア・ノード281~283は、ブロックをチャネルのチェーンに追加し、有効なトランザクションごとに、書き込みセットが現在の状態データベースにコミットされる。トランザクション(呼び出し)が変更不可能なようにチェーンに追加されたことをクライアント・アプリケーションに通知するため、およびトランザクションの妥当性が確認されたか、または無効にされたかを通知するために、イベントが発行される。
図3Aは許可型ブロックチェーン・ネットワーク300の例を示しており、許可型ブロックチェーン・ネットワーク300は、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ302は、許可型ブロックチェーン304に対するトランザクションを開始してよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、SDKを利用するクライアント側のアプリケーションを介して、APIを介して直接的に、などによって、発行されてよい。ネットワークは、監査人などのレギュレータ306へのアクセスを提供してよい。ブロックチェーン・ネットワーク・オペレータ308は、レギュレータ306を「監査人」として登録し、ブロックチェーン・ユーザ302を「クライアント」として登録するなど、メンバーの許可を管理する。監査人を、台帳への問い合わせのみに制限することができ、一方、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うための権限をクライアントに与えることができる。
ブロックチェーン開発者310は、チェーンコードおよびクライアント側のアプリケーションを書き込むことができる。ブロックチェーン開発者310は、インターフェイスを介して、チェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース312からの認証情報をチェーンコードに含めるために、開発者310は、帯域外(out-of-band)接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ302は、ピア・ノード314を介して許可型ブロックチェーン304に接続する。ピア・ノード314は、いずれかのトランザクションを開始する前に、ユーザの登録およびトランザクションの証明書を、ユーザの役割および許可を管理する認証機関316から取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン304上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用しようとしているユーザは、従来のデータ・ソース312上のそれらのユーザの認証情報を検証することが必要になることがある。ユーザの権限付与を確認するために、チェーンコードは、従来の処理プラットフォーム318を介して、このデータへの帯域外接続を使用することができる。
図3Bは許可型ブロックチェーン・ネットワーク320の別の例を示しており、許可型ブロックチェーン・ネットワーク320は、分散型の非集中的ピアツーピア・アーキテクチャを特徴とする。この例では、ブロックチェーン・ユーザ322は、トランザクションを許可型ブロックチェーン324にサブミットしてよい。この例では、トランザクションは、デプロイ、呼び出し、または問い合わせであることができ、SDKを利用するクライアント側のアプリケーションを介して、APIを介して直接的に、などによって、発行されてよい。ネットワークは、監査人などのレギュレータ326へのアクセスを提供してよい。ブロックチェーン・ネットワーク・オペレータ328は、レギュレータ326を「監査人」として登録し、ブロックチェーン・ユーザ322を「クライアント」として登録するなど、メンバーの許可を管理する。監査人を、台帳への問い合わせのみに制限することができ、一方、特定の種類のチェーンコードのデプロイ、呼び出し、および問い合わせを行うための権限をクライアントに与えることができる。
ブロックチェーン開発者330は、チェーンコードおよびクライアント側のアプリケーションを書き込む。ブロックチェーン開発者330は、インターフェイスを介して、チェーンコードをネットワークに直接デプロイすることができる。従来のデータ・ソース332からの認証情報をチェーンコードに含めるために、開発者330は、帯域外接続を使用してデータにアクセスすることができる。この例では、ブロックチェーン・ユーザ322は、ピア・ノード334を介してネットワークに接続する。ピア・ノード334は、いずれかのトランザクションを開始する前に、ユーザの登録およびトランザクションの証明書を認証機関336から取得する。場合によっては、ブロックチェーン・ユーザは、許可型ブロックチェーン324上でトランザクションを実行するために、それらのデジタル証明書を所有しなければならない。一方、チェーンコードを利用しようとしているユーザは、従来のデータ・ソース332上のそれらのユーザの認証情報を検証することが必要になることがある。ユーザの権限付与を確認するために、チェーンコードは、従来の処理プラットフォーム338を介して、このデータへの帯域外接続を使用することができる。
一部の実施形態では、本明細書におけるブロックチェーンは、許可なしブロックチェーンであってよい。参加するために許可を必要とする許可型ブロックチェーンとは対照的に、誰でも許可なしブロックチェーンに参加することができる。例えばユーザは、許可なしブロックチェーンに参加するために、個人のアドレスを作成し、トランザクションをサブミットすることによって、したがってエントリを台帳に追加することによって、ネットワークとの情報のやりとりを開始してよい。さらに、すべての関係者が、ノードをシステム上で実行すること、およびトランザクションの検証に役立つようにマイニング・プロトコルを採用することを選択できる。
図3Cは、複数のノード354を含んでいる許可なしブロックチェーン352によって処理されているトランザクションのプロセス350を示している。送信側356は、許可なしブロックチェーン352を介して、支払いまたはその他の形態の値(例えば、証書、医療記録、契約、商品、サービス、またはデジタル・レコードにカプセル化され得る任意のその他のアセット)を受信側358に送信することを望んでいる。1つの実施形態では、送信側デバイス356および受信側デバイス358の各々は、トランザクション・パラメータのユーザ・インターフェイス制御および表示を提供する(ブロックチェーン352に関連付けられた)デジタル・ウォレットを有してよい。それに応じて、トランザクションがブロックチェーン352全体のノード354にブロードキャストされる。ブロックチェーン352のネットワーク・パラメータに応じて、ノードが、許可なしブロックチェーン352の作成者によって確立されたルール(事前に定義されるか、または動的に割り当てられてよい)に基づいてトランザクションを検証する(360)。例えば、この検証は、関わっている関係者の識別情報を検証することなどを含んでよい。トランザクションは、直ちに検証されてよく、またはトランザクションは、他のトランザクションと共にキューに配置されてよく、ノード354は、ネットワーク・ルールのセットに基づいてトランザクションが有効であるかどうかを判定する。
構造362内で、有効なトランザクションがブロック内に形成され、ロック(ハッシュ)を使用して封印される。このプロセスは、マイニング・ノードによって、ノード354間で実行されてよい。マイニング・ノードは、特に、許可なしブロックチェーン352のブロックをマイニングして作成するために、追加のソフトウェアを利用してよい。各ブロックは、ネットワークによって合意されたアルゴリズムを使用して作成されたハッシュ(例えば、256ビットの数値など)によって識別されてよい。各ブロックは、ヘッダー、チェーン内の前のブロックのヘッダーのハッシュへのポインタまたは参照、および有効なトランザクションのグループを含んでよい。前のブロックのハッシュへの参照は、ブロックの安全な独立したチェーンの作成に関連付けられる。
ブロックをブロックチェーンに追加できるようになる前に、ブロックの妥当性が確認されなければならない。許可なしブロックチェーン352の妥当性確認は、ブロックのヘッダーから得られたパズルに対する解であるプルーフ・オブ・ワーク(PoW)を含んでよい。図3Cの例には示されていないが、ブロックの妥当性確認ための別のプロセスは、プルーフ・オブ・ステークである。アルゴリズムが、数学問題を解くマイナーに報酬を与えるプルーフ・オブ・ワークとは異なり、プルーフ・オブ・ステークでは、ウェルス(wealth)(「ステーク」としても定義される)に応じて、新しいブロックの作成者が確定的方法で選択される。その後、選択されたノードによって、同様の証明が実行される。
マイニング364で、ノードは、解がネットワーク全体にわたるターゲットを満たすまで、1つの変数に対して漸進的な変更を行うことによって、ブロックを解こうとする。これによってPoWを作成し、それによって、正しい答えを保証する。言い換えると、可能性のある解は、計算リソースが問題を解くことにおいて消耗されたということを証明しなければならない。一部の種類の許可なしブロックチェーンでは、マイナーに、ブロックを正しくマイニングしたことに対する報酬として価値(例えば、コインなど)が与えられることがある。
ここで、攻撃者が、1つのブロックの変更を受け入れるために、その後のすべてのブロックを変更しなければならないため、PoWプロセスは、ブロックの変更と共に、ブロックチェーンの変更を極めて困難にする。さらに、新しいブロックがマイニングされるにつれて、ブロックを変更することの困難さが増大し、その後のブロックの数が増加する。配布366で、正常に妥当性が確認されたブロックが、許可なしブロックチェーン352全体に配布され、すべてのノード354が、そのブロックを、許可なしブロックチェーン352の監査可能な台帳であるマジョリティ・チェーン(majority chain)に追加する。さらに、送信側356によってサブミットされたトランザクションにおける価値が、受信側デバイス358のデジタル・ウォレットに預け入れられるか、またはその他の方法で転送される。
図4Aは、実施形態例に従って、ピアの動作中に並列にブロックの妥当性を確認するプロセス400Aを示している。図4Aを参照すると、ブロックチェーン・ピア420は、ブロックチェーン424および状態データベース426を含んでいるローカルなブロックチェーン台帳422を復元するときに、起動プロセスまたは回復プロセスの間に、複数のブロック411~414を同時に取り出してよい。
デフォルトでは、既存のブロックチェーン・プロトコルにおいて、ブロックチェーン・ピアは、リブート中に多くのアプリケーションを開始する必要があり、それと同時に、ブロックチェーンの異なるブロックを順々に実行する。これは、ブロックが順次に実行されるため、起動時間が長くなることにつながる。しかし、実施形態例では、ブロックチェーン・ピア420が、ブロック411~414を並列に実行してよく、これによって、ブロックチェーン410全体のブロックの妥当性確認を完了するために必要な時間を節約する。スロット内のトランザクションの部分的順序付けのため、複数のブロックの並列な妥当性確認を使用できる。これによって、故障したピアまたは初めて起動している新しいピアあるいはその両方の、より高速な回復が得られる。
例えば、ブロックチェーン・ピア420は、複数の物理的コアを使用して、回復プロセスを加速してよい。ブロックチェーン・ピア420は、回復プロセスを開始した場合、ゴシップ・プロトコルを介して別のピア(図示されていない)からブロックを受信する。それに応じて、ブロックチェーン・ピア420は、同じスロットに属しているブロック411~414を識別してよい。同じスロットに属しているこれらのブロック411~414は、(場合によっては、ブロックチェーン・ピア420内の複数の物理的コア上で実行される)複数のスレッドを使用して同時に復元されることができる。このブロック間の並列性は、線形的順序でブロックを実行しなければならない現在のシステムと比較して、回復時間を改善する。
例えば、プロセス400Aの間に、ブロックチェーン・ピア420は、隣接するピアからブロックを収集してよい。この収集プロセスは、起動中または再起動中に実行されてよい。ブロックチェーン・ピア420は、ローカルな台帳422を初期化してもよい。ブロックチェーン・ピア420は、ブロック411~414を同時に取り出し、異なるコア/プロセッサを独立して同時に使用して、(追加の処理なしで)ブロック411~414の妥当性を同時に確認してよい。ブロックチェーン・ピア420は、ブロックチェーン・ピア420の異なるコアによって、状態データベース426を並列に更新してよい。これによって、ピアの回復/起動時間の短縮が得られる。ブロックチェーン410内のトランザクションが部分的に順序付けられた状態で、追加の処理なしで、同じスロットに属している複数のブロックの妥当性を並列に確認することができる。
図4Bは、実施形態例に従って、問い合わせ検索動作中にブロックの妥当性確認をスキップするプロセス400Bを示している。図4Bを参照すると、ブロックチェーン・ピア420が、ブロック415に格納されたトランザクションに関する問い合わせを受信している。この問い合わせは、クライアント430などから受信されてよい。それに応じて、ブロックチェーン・ピア420は、ブロックチェーン410内のブロック415および前のブロックの妥当性を確認してよい。しかし、ブロックチェーン・ピア420は、従来のブロックチェーン台帳において実行されるように、すべてのブロックの妥当性を確認するのではなく、ブロック415に依存していないブロックをスキップし、妥当性確認プロセスから除去してよい。
デフォルトでは、既存のブロックチェーン・プロトコルにおいて、ピア・ノードが、現在のブロックのキーに関する問い合わせに応答する前に、現在のブロックのすべての前のブロックの妥当性を確認しなければならない。これは、ブロックの妥当性が順次に確認されるため、問い合わせの応答時間が長くなることにつながる。しかし、現在のブロック内のキーは、前のブロックに依存しないことがある。それにもかかわらず、問い合わせに応答する前に、チェーン上の前のブロックの妥当性を確認することは必須である。これに対して、プロセス400Bでは、ブロックチェーン・ピア420は、問い合わせに応答する前に、すべての先行ブロックを実行する必要がなく、これによって、問い合わせに応答するために必要な時間を節約する。例えば、ブロックチェーン・ピア420は、問い合わせのブロック415を含んでいるスロット(i)内のブロックをスキップしてよい。加えて、ブロックチェーン・ピア420は、他のブロック(例えば、スロット(i-1))がブロック415の依存しているトランザクションを含んでいない場合、それらのブロックをスキップしてよい。このスキップは、あるブロックがブロック415に依存するまで継続されてよい。
例えば、ブロックチェーン・ピア420は、スロット(i)のブロック415に格納されているトランザクションに関する問い合わせを受信してよい。現在のブロックと同じスロット(i)内の他のブロックの妥当性確認は、保留中であってよい(または、ブロックチェーン・ピア420によって受信されなくてさえよい)。しかし、ブロックチェーン・ピア420は、問い合わせに応答する前に、これらのブロックをスキップし、(同じスロット内の他のブロックの妥当性確認に気にせずに)現在のブロックのみの妥当性を確認してよい。したがって、ブロックチェーン・ピアは、ブロック415の前にあるチェーン内の次のブロックを識別し、中間の残りのブロックをスキップしてよい。これによって、問い合わせの応答時間の高速化/改善が得られる。さらに、現在のブロックの妥当性確認の後に、状態データベース426が更新され、問い合わせの応答が提供される。同じスロット内の残りのブロックの妥当性が確認された後に、それに応じて、状態データベース426が更新される。しかし、それらの更新は、問い合わせの応答に影響を与えない。
図4Cは、実施形態例に従って、並列処理の選択肢を決定するためにトランザクションをDAGにマッピングするプロセス400Cを示す図である。組織は、ブロックチェーン・ネットワーク内の複数のピアを実行することができる。デフォルトでは、既存のブロックチェーン・プロトコルにおいて、組織内のすべてのピアが、各ブロック内のトランザクションを独立して順次に実行することによって、すべての有効なトランザクションを状態データベースにコミットする。一部の実施形態では、トランザクション応答時間が制限されないように、アンカー・ピア・ノードのみが、各ブロック内のトランザクションの妥当性を直ちに確認する必要があってよい。各組織内の他のピアは、ブロックをバッファリングし、可能な場合は並列に、トランザクションを実行することができる。実施形態例は、部分的に順序付けられたトランザクションの概念に基づいて、トランザクションを分割し、組織の複数のブロックチェーン・ピアを使用して並列に実行することができるメカニズムを提供する。
具体的には、図4Cのプロセス400Cを参照すると、ブロックチェーン・ピア420は、複数のスロットにわたる並列性もさらに利用するために、隣接するスロット内のブロックに存在するトランザクションから、DAG構造442、444、および446を構築することができる。図4Cの例では、3つのブロック(ブロックA、B、およびC)が同じスロットに配置される。部分的に順序付けられたトランザクションの特徴の1つは、同じスロット内の2つのブロックが、互いに依存するトランザクションを含むことができないということである。しかし、各ブロックは、依存するトランザクションを含んでよい。例えば、ブロックA、B、およびCの各々は、一連の内部の依存するトランザクションを含んでよい。ブロックチェーン・ピア420は、DAGを使用して、これらの内部の依存関係をグラフ化することができる。DAG構造では、ノードがトランザクションを表し、リンクがトランザクション間の依存関係を表す。さらに、ブロックチェーン・ピア420(またはその他のサービス)は、同じ組織の複数のピアにわたって2つの依存するトランザクションが同時に実行されないように、DAG構造442、444、および446に基づいて、並列に処理されるトランザクションを分割してよい。
例えば、順序付けノードは、各ブロックを組織の複数のピアのうちのアンカー・ピアに配信してよい。図4Cでは、ブロックチェーン・ピア420がアンカー・ノードを表している。ブロックチェーン・ピア420は、受信した各ブロックを、組織内の他のすべてのブロックチェーン・ピア(図示されていない)に送信してよい。さらに、ブロックチェーン・ピア420は、ブロックのトランザクションの妥当性を順序通りに確認してよい(したがって、トランザクション実行状態にあるクライアントにとって、遅延が存在しない)。この妥当性確認は、図4Aの例におけるように、同じスロットに属するブロックの並列な妥当性確認に基づいてよい。
さらに、組織内の他のピアは、ブロックをバッファリングしてから、それらのブロックの妥当性を確認し、トランザクション間の並列な妥当性確認が実現可能であるかどうかを見つけ出すことができる。これらのピアは、スロット-i内のブロックをバッファリングし、これらのブロック内のトランザクションを、スロット-iより後のスロットのトランザクションと並列に実行できるかどうかを見つけ出すことができる。ピアは、スロット-iの各ブロックおよびスロット-(i+1)のブロックからDAGを構築し、スロット-iのブロックと一緒に、スロット-(i+1)のそのブロックの妥当性を確認できるかどうかを見つけ出すことができる。依存関係が存在しない場合、スロット-(i+1)のブロックは、スロット-(i)のブロックと並列に実行されることができる。この目的は、改善されたトランザクションのスループットを達成することである。同じ組織内の異なるピアは、DAGに基づく並列性のこのようなさまざまな組み合わせを実施してよい。この例において説明されたように、異なるピアが、異なるレベルの並列性を実施するため、同じピアが、異なる問い合わせに対して、最も早く問い合わせの応答を計算することができないことがある。受信された問い合わせは、問い合わせの応答をより速く計算することができる組織の任意のピアによって、応答されることができる。これを実行するために、ブロックチェーン・ピア420は、各ブロックA、B、およびCからDAGを構築し、3つのブロックのトランザクションが並列に実行され得るか、または互いに依存しているかを判定してよい。DAG442では、ブロックAの互いに依存しているトランザクションが示されている。同様に、DAG444および446では、ブロックBおよびC内の互いに依存しているトランザクションが、それぞれ示されている。
この例では、DAGは、異なるグループのトランザクション間に依存関係が存在しないように、したがって、トランザクションの他のグループと並列に、トランザクションのグループの妥当性が確認され得るように、トランザクションをグループに分離するのに役立つ。DAGに基づく分析を使用してトランザクションの妥当性を確認する目的は、トランザクションの妥当性を並列に確認し、このようにして、改善されたトランザクションのスループットを達成することである。
図4Dは、実施形態例に従って、新しいトランザクションの格納中に選択的にブロックの妥当性を確認するプロセス400Dを示している。デフォルトでは、既存のブロックチェーン・プロトコルにおいて、ブロックチェーン・ピアが、現在のブロックのトランザクションの妥当性を確認する前に、現在のブロックのすべての前のブロックの妥当性を確認する必要がある。これは、低いトランザクションのスループットにつながる。特に、前のブロック内のキーが、現在のブロックを実行しているピアの対象にならないことがある(例えば、前のブロックが、同じネットワーク内の異なるスマート・コントラクトに関連するトランザクションを含んでいる、などである)。実施形態例では、ブロックチェーン・ピア420は、現在のブロック内のトランザクションの妥当性を確認する前に、すべての先行ブロックの妥当性を確認する必要がなくてよく、これが、より高いトランザクションのスループットをもたらす。
図4Dのプロセス400Dでは、ブロックチェーン・ピア420が、現在のトランザクションが依存している前のトランザクションの詳細を(それらのブロック番号と共に)順序付けノードから取得してよく、これは、順序付けノードで使用できるメタデータ(例えば、ハッシュ・セットなど)のため、可能になる。ブロックチェーン・ピア420は、現在のトランザクションの妥当性を確認する前に、現在のトランザクションの依存する先行トランザクションのみの妥当性を選択的に確認することができる(前のブロック内の他のトランザクションの妥当性確認を待機しない)。これによって、改善されたトランザクションのスループットが得られる。
図1Bに関して説明されたように、順序付けノードは、(例えば、対象のROI率を定期的に更新するために)いずれかの特定のキーと値のペアを更新するトランザクションのリストを(これらのトランザクションの各々が存在するブロックと共に)含んでよい。このメタデータは、順序付けノードで維持される。このメタデータは、各キーの識別情報およびその依存関係を含んでよい。ここで、ブロックチェーン・ピア420は、トランザクションの読み取り/書き込みセットのキーを識別する。このようにして、ピアは、これらのキーの各々のメタデータ(すなわち、特定のキーを更新する選択的なトランザクションおよびブロック)を順序付けノードから見つけようとする。図4Dの例では、ブロックチェーン・ピア420が、ブロック37のトランザクションを受信する。順序付けノードからのハッシュ・セットに基づいて、ブロックチェーン・ピア420は、ブロック37のトランザクションのキーの依存関係がブロック29、17、および16に含まれているということを識別する。したがって、ブロックチェーン・ピア420は、すべてのブロックの妥当性を確認するのではなく、ブロック37内のトランザクションに依存しているブロック29、17、および16のみの妥当性を選択的に確認してよい。
図4Dの例では、ブロックチェーン・ピア420が、現在のブロック内のトランザクションの先行トランザクションの詳細を(これらのトランザクションが含まれているブロック番号と共に)、順序付けノードによって維持されているメタデータから取得してよい。ブロック内(または複数のブロックにわたる)異なるトランザクションが、異なるスマート・コントラクトに依存してよい。したがって、すべてのトランザクションが互いに関連するわけではない。
図4Dの例では、ブロックチェーン・ピア420が、ブロック37内の現在のトランザクションの依存するトランザクションを含んでいる選択的なブロックのみを処理してよい。この場合、それらの選択されたブロック内の現在のトランザクションの依存しないトランザクションの妥当性も確認されない。これによって、現在のブロックのすべての先行ブロックのトランザクションの妥当性確認を完了するという要件を克服し、これによって、トランザクションのスループットを大きく改善する。
図4Eは、実施形態例に従って、データの暗号化されたブロックを部分的に順序付けするプロセス400Eを示している。この例では、順序付けノード450は、トランザクションが暗号化される(したがって、依存関係が隠蔽される)状況においてさえ、ブロックの部分的順序付けを実施することができる。例えば、プライバシーに対する懸念に起因して、トランザクションは、読み取り/書き込みセットと共に、暗号化されることがある。順序付けノード450がトランザクションをスロット単位の方法で配置できるようにするために、各暗号化されたトランザクションに、キーが関連付けられてよい。ここで、クライアント、ピアなどのトランザクションのサブミッターによって、キーが割り当てられてよい。互いに関連付けられたトランザクションは、同じキーと共にサブミットされてよい。図4Eの例では、キーは、「品質」、「支払い」、および「輸送」である。
この例では、キーは、トランザクションに割り当てられ、異なるキー名を含んでよい。同じキーを含むトランザクションは、互いに依存してよい。しかし、異なるキーを含むトランザクションは、それらのトランザクション間で依存関係を有するべきではない。例えば、品質キーを含むトランザクションの読み取り/書き込みセットは、輸送キーが割り当てられたトランザクションの読み取り/書き込みセットと異なるべきである。さまざまな実施形態によれば、順序付けノード450は、暗号化されたトランザクションの場合、これらのキーを活用して、トランザクションをスロットに配置し、並列性の利点を利用してよい。具体的には、順序付けノード450は、品質キーを含むトランザクションのブロックをクラスタ452に割り当て、支払いキーを含むトランザクションのブロックをクラスタ454に割り当て、輸送キーを含むトランザクションのブロックをクラスタ456に割り当てる。ここで、すべてのトランザクションが暗号化されているが、順序付けノードは、ブロックごとにキーのクラスタを識別する。
さまざまな実施形態によれば、順序付けノード450は、ブロックをブロックチェーン460上のスロットに配置することができる。具体的には、クラスタ442、444、および446の各々からの1つのブロックが、同じスロットで並列に順序付けられてよい。したがって、スロット内のブロックの最大数は、キーのクラスタの数に等しくなることができる。ここでブロックは、格納されているトランザクションのキーを表すように、識別子462でラベル付けされる。このようにして、暗号化されたトランザクションが、まだスロットに配置されることができる。キーは、トランザクションのサブミッターによって、トランザクションごとに割り当てられる。順序付けノード450は、これらのキーを使用して、同じキーを含むトランザクションのブロックがどのスロットに分類されるべきかを決定する。
図5は、実施形態例に従って、ピアの動作中に並列にブロックの妥当性を確認する方法500を示している。例えば、方法500は、ピアの回復動作、ピアの起動動作などの間に実行されてよい。図5を参照すると、510で、この方法は、隣接するブロックチェーン・ピアからブロックチェーンのブロックを受信することを含んでよい。例えば、ブロックは、起動プロセス、回復プロセス、妥当性確認などの間に、ブロックチェーン・ピアによって受信されてよい。隣接するピアは、ブロックを受信しているピアと同じブロックチェーン・ネットワークに含まれてよい。一部の実施形態では、ブロックチェーン・ピアが回復動作または起動動作を実行している場合、この方法は、起動プロセスおよび回復プロセスのうちの少なくとも1つの間にローカルなブロックチェーン台帳を初期化することを、さらに含んでよい。
520で、この方法は、受信されたブロックのうちから、ブロックチェーン内の同じスロットに属している2つ以上のブロックを識別することを含んでよい。例えば、これらの2つ以上のブロックは、スロット内の他のブロック内のトランザクションに対して依存していないトランザクションのみを含んでよい。例えば、第1および第2のブロックは、第1のブロック内のどのトランザクションも、第2のブロック内のトランザクション依存していない場合、かつ第2のブロック内のどのトランザクションも、第1のブロック内のトランザクション依存していない場合に、非依存ブロックと見なされてよい。しかし、第1のブロック内のトランザクションが、第1のブロック内の他のトランザクションに依存してよいということが可能である。同様に、第2のブロック内のトランザクションは、第2のブロック内の他のトランザクションに依存してよい。しかし、トランザクションは、ブロック間の依存関係を有していなくてよい。
一部の実施形態では、識別することは、受信されたブロックに格納されているハッシュ値に基づいて、受信されたブロックのうちのどのブロックが同じスロットに属しているかを識別することを含んでよい。一部の実施形態では、識別することは、ブロックの直前のハッシュ値が、ブロックチェーン上の直前のスロットに格納された複数のブロックのハッシュの関数である場合に、このブロックが現在のスロットに属しているということを決定することを含んでよい。
530で、この方法は、2つ以上の識別されたブロックの同時の実行によって、2つ以上の識別されたブロックの妥当性を並列に確認することを含んでよい。さらに、540で、この方法は、2つ以上の識別されたブロックの妥当性確認に応答して、2つ以上の識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納することを含んでよい。さまざまな実施形態によれば、妥当性確認は、ブロックチェーン・ピアの2つ以上の独立したプロセッサ・コア上で並列に(時間的に重複して)、2つ以上の識別されたブロックを同時に実行することを含んでよい。
一部の実施形態では、この方法は、直前のスロットに属するブロックチェーン上の2つ以上の他のブロックを識別することをさらに含んでよい。この例では、この方法は、これらの2つ以上の他のブロックが、同じスロットに属する2つ以上の識別されたブロックに依存していない場合、これらの2つ以上の識別されたブロックと並列に、直前のスロットに属する2つ以上の他のブロックの妥当性を確認することをさらに含んでよい。
図6Aは、実施形態例に従ってさまざまな動作を実行するように構成された物理的インフラストラクチャ610を含んでいる例示的なシステム600を示している。図6Aを参照すると、物理的インフラストラクチャ610は、モジュール612およびモジュール614を含んでいる。モジュール614は、実施形態例のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含んでいる。ステップ/動作608は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。物理的インフラストラクチャ610、モジュール612、およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。さらに、モジュール612およびモジュール614は同じモジュールであってよい。
図6Bは、実施形態例に従ってさまざまな動作を実行するように構成された別の例示的なシステム640を示している。図6B参照すると、システム640はモジュール612および614を含んでいる。モジュール614は、実施形態例のいずれかに含まれる(モジュール612内の)動作ステップ608のいずれかを実行してよい、ブロックチェーン620およびスマート・コントラクト630(ブロックチェーン620に存在してよい)を含んでいる。ステップ/動作608は、説明されたか、または図に示された実施形態のうちの1つまたは複数を含んでよく、1つまたは複数のスマート・コントラクト630またはブロックチェーン620あるいはその両方から書き込まれるか、または読み取られる、出力されたか、または書き込まれた情報を表してよい。物理的インフラストラクチャ610、モジュール612、およびモジュール614は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせを含んでよい。さらに、モジュール612およびモジュール614は同じモジュールであってよい。
図6Cは、実施形態例に従って、契約当事者間でのスマート・コントラクトの構成、およびブロックチェーンに対してスマート・コントラクトの条件を実施するように構成された仲介サーバを利用するように構成された例示的なシステムを示している。図6Cを参照すると、構成650は、通信セッション、アセット転送セッション、あるいはプロセスまたは手順を表してよく、これらは、1つまたは複数のユーザ・デバイス652または656あるいはその両方を明示的に識別するスマート・コントラクト630によって動作させられる。スマート・コントラクトの実行の、実行、動作、および結果は、サーバ654によって管理されてよい。スマート・コントラクト630の内容は、スマート・コントラクト・トランザクションの関係者である実体652および656のうちの1つまたは複数によるデジタル署名を要求してよい。スマート・コントラクトの実行結果は、ブロックチェーン・トランザクションとしてブロックチェーン620に書き込まれてよい。スマート・コントラクト630は、1つまたは複数のコンピュータ、サーバ、プロセッサ、メモリ、または無線通信デバイス、あるいはその組み合わせに存在してよい、ブロックチェーン620に存在する。
図6Dは、実施形態例に従って、ブロックチェーンを含んでいるシステム660を示している。図6Dの例を参照すると、アプリケーション・プログラミング・インターフェイス(API)ゲートウェイ662が、ブロックチェーンの論理(例えば、スマート・コントラクト630またはその他のチェーンコード)およびデータ(例えば、分散型台帳など)にアクセスするための共通インターフェイスを提供する。この例では、APIゲートウェイ662は、1つまたは複数の実体652および656をブロックチェーン・ピア(すなわち、サーバ654)に接続することによってブロックチェーンに対してトランザクション(呼び出し、問い合わせなど)を実行するための共通インターフェイスである。ここで、サーバ654は、世界状態および分散型台帳のコピーを保持するブロックチェーン・ネットワークのピア・コンポーネントであり、これらのコピーは、クライアント652および656が世界状態に関するデータを問い合わせること、およびトランザクションをブロックチェーン・ネットワークにサブミットすることを可能にし、スマート・コントラクト630および署名ポリシーに応じて、署名ピアがスマート・コントラクト630を実行する。
前述の実施形態は、ハードウェアにおいて、プロセッサによって実行されるコンピュータ・プログラムにおいて、ファームウェアにおいて、またはこれらの組み合わせにおいて実装されてよい。コンピュータ・プログラムは、ストレージ媒体などのコンピュータ可読媒体に具現化されてよい。例えば、コンピュータ・プログラムは、ランダム・アクセス・メモリ(RAM:random access memory)、フラッシュ・メモリ、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory)、電子的消去可能プログラマブル読み取り専用メモリ(EEPROM:electrically erasable programmable read-only memory)、レジスタ、ハード・ディスク、取り外し可能なディスク、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disk read-only memory)、または従来技術において知られた任意のその他の形態のストレージ媒体に存在してよい。
例示的なストレージ媒体は、プロセッサがストレージ媒体から情報を読み取り、ストレージ媒体に情報を書き込むことができるように、プロセッサに結合されてよい。代替方法では、ストレージ媒体はプロセッサと一体であってよい。プロセッサおよびストレージ媒体は、特定用途向け集積回路(ASIC:application specific integrated circuit)に存在してよい。代替方法では、プロセッサおよびストレージ媒体は、個別のコンポーネントとして存在してよい。
図7Aは、実施形態例に従って、分散型台帳720に追加されている新しいブロックのプロセス700を示しており、図7Bは、実施形態例に従って、ブロックチェーンの新しいデータ・ブロック構造730の内容を示している。図7Aを参照すると、クライアント(図示されていない)は、トランザクションをブロックチェーン・ノード711、712、または713、あるいはその組み合わせにサブミットしてよい。クライアントは、ブロックチェーン720に対する活動を規定するための、いずれかのソースから受信された命令であってよい。一例として、クライアントは、ブロックチェーンのトランザクションを提案するデバイス、人、または実体などの要求者の代わりに動作するアプリケーションであってよい。複数のブロックチェーン・ピア(例えば、ブロックチェーン・ノード711、712、および713)が、ブロックチェーン・ネットワークの状態および分散型台帳720のコピーを維持してよい。クライアントによって提案されたトランザクションをシミュレートして署名する署名ピア、および署名を検証し、トランザクションの妥当性を確認し、トランザクションを分散型台帳720にコミットするコミット・ピアを含む、さまざまな種類のブロックチェーン・ノード/ピアが、ブロックチェーン・ネットワーク内に存在してよい。この例では、ブロックチェーン・ノード711、712、および713は、署名者ノード、コミッター・ノード(committer node)、あるいはその両方の役割を実行してよい。
分散型台帳720は、ブロック内の変更不可能な順序付けられたレコードを格納するブロックチェーン、およびブロックチェーン722の現在の状態を維持する状態データベース724(現在の世界状態)を含む。1つのチャネルにつき1つの分散型台帳720が存在してよく、各ピアが、そのピアがメンバーであるチャネルごとに、分散型台帳720のそれ自身のコピーを維持する。ブロックチェーン722は、ハッシュ・リンク・ブロックとして構造化されたトランザクション・ログであり、各ブロックがN個のトランザクションのシーケンスを含む。ブロックは、図7Bに示されているコンポーネントなどの、さまざまなコンポーネントを含んでよい。ブロックのリンク(図7Aの矢印によって示されている)は、前のブロックのヘッダーのハッシュを、現在のブロックのブロック・ヘッダー内に追加することによって生成されてよい。このようにして、ブロックチェーン722上のすべてのトランザクションが、順序付けられ、暗号によって一緒にリンクされ、ハッシュ・リンクを壊さずにブロックチェーン・データを改ざんすることを防ぐ。さらに、これらのリンクのため、ブロックチェーン722内の最新のブロックが、その前に来たすべてのトランザクションを表す。ブロックチェーン722は、追加専用のブロックチェーンのワークロードをサポートするピアのファイル・システム(ローカルまたは取り付けられたストレージ)に格納されてよい。
ブロックチェーン722および分散型台帳720の現在の状態が、状態データベース724に格納されてよい。ここで、現在の状態データは、ブロックチェーン722のチェーン・トランザクション・ログにこれまで含まれたすべてのキーの最新の値を表す。チェーンコード呼び出しは、状態データベース724内の現在の状態に対してトランザクションを実行する。それらのチェーンコードの相互作用を極めて効率的にするために、すべてのキーの最新の値が状態データベース724に格納される。状態データベース724は、ブロックチェーン722のトランザクション・ログへのインデックス付きビューを含んでよく、したがって、いつでもチェーンから再生成され得る。状態データベース724は、ピアの起動時に、トランザクションが受け取られる前に、自動的に回復されてよい(または必要な場合に生成されてよい)。
署名ノードは、トランザクションをクライアントから受信し、シミュレーション結果に基づいてトランザクションに署名する。署名ノードは、トランザクション提案をシミュレートするスマート・コントラクトを保持する。署名ノードがトランザクションに署名するときに、署名ノードは、シミュレートされたトランザクションの署名を示す署名ノードからクライアント・アプリケーションへの署名された応答である、トランザクションの署名を生成する。トランザクションに署名する方法は、チェーンコード内で指定されることがある署名ポリシーによって決まる。署名ポリシーの例は、「署名ピアの大部分がトランザクションに署名しなければならない」である。異なるチャネルは、異なる署名ポリシーを有してよい。署名されたトランザクションは、クライアント・アプリケーションによって順序付けサービス710に転送される。
順序付けサービス710は、署名されたトランザクションを受け取り、それらをブロック内に順序付けし、ブロックをコミット・ピアに配信する。例えば、順序付けサービス710は、トランザクションのしきい値に達したか、タイマーがタイムアウトするか、または別の条件の場合に、新しいブロックを開始してよい。図7Aの例では、ブロックチェーン・ノード712は、ブロックチェーン720に格納するための新しいデータの新しいデータ・ブロック730を受信したコミット・ピアである。ブロックチェーン内の第1のブロックは、ブロックチェーン、ブロックチェーンのメンバー、格納されたデータなどに関する情報を含んでいるジェネシス・ブロックと呼ばれてよい。
順序付けサービス710は、順序付けノードのクラスタで構成されてよい。順序付けサービス710は、トランザクション、スマート・コントラクトを処理することも、共有台帳を維持することもない。むしろ、順序付けサービス710は、署名されたトランザクションを受け取ってよく、それらのトランザクションが分散型台帳720にコミットされる順序を指定する。ブロックチェーン・ネットワークのアーキテクチャは、「順序付け」の特定の実装(例えば、Solo、Kafka、BFTなど)が着脱可能なコンポーネントになるように設計されてよい。
トランザクションは、一貫性のある順序で分散型台帳720に書き込まれる。トランザクションの順序は、トランザクションがネットワークにコミットされるとき状態データベース724に対する更新が有効であることを保証するように確立される。暗号パズルを解くことまたはマイニングによって順序付けが発生する暗号通貨ブロックチェーン・システム(例えば、ビットコインなど)とは異なり、この例では、分散型台帳720の関係者が、そのネットワークに最も適した順序付けメカニズムを選択してよい。
順序付けサービス710は、新しいデータ・ブロック730を初期化し、新しいデータ・ブロック730がコミット・ピア(例えば、ブロックチェーン・ノード711、712、および713)にブロードキャストされてよい。それに応じて、各コミット・ピアは、読み取りセットおよび書き込みセットが状態データベース724内の現在の世界状態にまだ一致することをチェックして確認することによって、新しいデータ・ブロック730内のトランザクションの妥当性を確認する。特に、コミット・ピアは、署名者がトランザクションをシミュレートしたときに存在していた読み取られたデータが、状態データベース724内の現在の世界状態と同一であるかどうかを判定することができる。コミット・ピアがトランザクションの妥当性を確認した場合、トランザクションが分散型台帳720のブロックチェーン722に書き込まれ、状態データベース724が、読み取り/書き込みセットからの書き込みデータに更新される。トランザクションが失敗した場合、すなわち、コミット・ピアが、読み取り/書き込みセットが状態データベース724内の現在の世界状態に一致しないということを検出した場合、ブロック内に順序付けられたトランザクションは、そのブロックにまだ含まれるが、無効としてマーク付けされ、状態データベース724が更新されない。
図7Bを参照すると、分散型台帳720のブロックチェーン722に格納された新しいデータ・ブロック730(データ・ブロックとも呼ばれる)が、ブロック・ヘッダー740、ブロック・データ750、およびブロック・メタデータ760などの、複数のデータ・セグメントを含んでよい。図7Bに示された新しいデータ・ブロック730およびその内容などの、さまざまな示されたブロックおよびそれらの内容が、例にすぎず、実施形態例の範囲を制限するよう意図されていないということが、理解されるべきである。新しいデータ・ブロック730は、ブロック・データ750内のN個(例えば、1、10、100、500、1000、2000、3000など)のトランザクションのトランザクション情報を格納してよい。
さまざまな実施形態によれば、新しいデータ・ブロック730は、ブロック・ヘッダー740内のブロックチェーン上の前のスロットへのリンクを含んでよい。特に、ブロック・ヘッダー740は、ブロックの前のスロットのハッシュ関数742を含んでよい。一部の実施形態では、ハッシュ関数742は、直前のスロットに含まれているブロックのセットのハッシュ(またはブロックのセット内の文書のハッシュ)の排他的ORを含んでよい。別の例として、ハッシュ関数742は、前のスロットに含まれているブロックのセットのハッシュ(またはブロックのセット内の文書のハッシュ)の複合ハッシュを含んでよい。
ブロック・ヘッダー740は、新しいデータ・ブロック730の一意のブロック番号、ブロック・データ750のハッシュなどを含んでもよい。新しいデータ・ブロック730のブロック番号は、一意であり、0から開始する漸進的/連続的順序などのさまざまな順序で割り当てられてよい。
ブロック・データ750は、新しいデータ・ブロック730内に記録された各トランザクションのトランザクション情報を格納してよい。例えば、トランザクション・データは、トランザクションの種類、バージョン、タイムスタンプ、分散型台帳720のチャネルID、トランザクションID、エポック、ペイロードの可視性、チェーンコード・パス(トランザクションのデプロイ)、チェーンコード名、チェーンコードのバージョン、入力(チェーンコードおよび関数)、公開鍵および証明書などのクライアント(作成者)の識別、クライアントの署名、署名者の識別情報、署名者の署名、提案のハッシュ、チェーンコード・イベント、応答の状態、名前空間、書き込みセット(トランザクションによって読み取られたキーおよびバージョンのリストなど)、書き込みセット(キーと値のリストなど)、開始キー、終了キー、キーのリスト、マークル・ツリー・クエリ・サマリーなどのうちの1つまたは複数を含んでよい。トランザクション・データは、N個のトランザクションの各々に格納されてよい。
ブロック・メタデータ760は、メタデータの複数のフィールドを(例えば、バイト配列などとして)格納してよい。メタデータ・フィールドは、ブロック作成時の署名、最後の構成ブロックへの参照、ブロック内の有効なトランザクションと無効なトランザクションを識別するトランザクション・フィルタ、ブロックを順序付けた順序付けサービスの永続的な最後のオフセットなどを含んでよい。順序付けサービス710によって署名、最後の構成ブロック、および順序付けノードのメタデータが追加されてよい。一方、ブロックのコミッター(ブロックチェーン・ノード712など)は、署名ポリシー、読み取り/書き込みセットの検証などに基づいて、有効/無効情報を追加してよい。トランザクション・フィルタは、ブロック・データ750内のトランザクションの数に等しいサイズのバイト配列、およびトランザクションが有効/無効だったかどうかを識別する妥当性確認コードを含んでよい。一部の実施形態では、図7Bに示されていないが、ブロック・メタデータ760は、推奨されるスマート・コントラクトのメタデータをその内部に格納してよい。
図7Cは、本明細書に記載された実施形態に従って、デジタル・コンテンツのためのブロックチェーン770の実施形態を示している。デジタル・コンテンツは、1つまたは複数のファイルおよび関連する情報を含んでよい。これらのファイルは、媒体、画像、ビデオ、音声、テキスト、リンク、グラフィックス、アニメーション、Webページ、文書、またはデジタル・コンテンツのその他の形態を含んでよい。ブロックチェーンの変更不可能な追加専用の特徴は、デジタル・コンテンツの完全性、有効性、および信頼性を保護するための予防手段として役立ち、認容性ルールが適用される法的手続きにおいて、あるいは証拠が考慮されるか、またはデジタル情報の提示および使用がその他の方法で対象になる、その他の設定において、ブロックチェーンの使用を適切にする。この場合、デジタル・コンテンツはデジタル証拠と呼ばれることがある。
ブロックチェーンは、さまざまな方法で形成されてよい。1つの実施形態では、デジタル・コンテンツは、ブロックチェーン自体に含まれ、ブロックチェーン自体からアクセスされてよい。例えば、ブロックチェーンの各ブロックは、参照情報(例えば、ヘッダー、値など)のハッシュ値を、関連するデジタル・コンテンツと共に格納してよい。その後、ハッシュ値および関連するデジタル・コンテンツは、一緒に暗号化されてよい。したがって、各ブロックのデジタル・コンテンツは、ブロックチェーン内の各ブロックを復号することによってアクセスされてよく、各ブロックのハッシュ値は、前のブロックを参照するための基礎として使用されてよい。これは、次のように示されてよい。
ブロック1 ブロック2・・・・ブロックN
ハッシュ値1 ハッシュ値2 ハッシュ値N
デジタル・コンテンツ1 デジタル・コンテンツ2 デジタル・コンテンツN
ブロック1 ブロック2・・・・ブロックN
ハッシュ値1 ハッシュ値2 ハッシュ値N
デジタル・コンテンツ1 デジタル・コンテンツ2 デジタル・コンテンツN
1つの実施形態では、デジタル・コンテンツがブロックチェーンに含まれなくてよい。例えば、ブロックチェーンは、デジタル・コンテンツを含んでいない各ブロックの内容の暗号化されたハッシュを格納してよい。デジタル・コンテンツは、元のファイルのハッシュ値に関連して、別のストレージ領域またはメモリ・アドレスに格納されてよい。他のストレージ領域は、ブロックチェーンを格納するために使用されるストレージ・デバイスと同じストレージ・デバイスであってよく、または異なるストレージ領域もしくは分離したリレーショナル・データベースであってもよい。各ブロックのデジタル・コンテンツは、対象のブロックのハッシュ値を取得するか、または問い合わせ、次に、実際のデジタル・コンテンツに対応して格納されているハッシュ値をストレージ領域内で検索することによって、参照またはアクセスされてよい。この動作は、例えば、データベース・ゲートキーパーによって実行されてよい。これは、次のように示されてよい。
ブロックチェーン ストレージ領域
ブロック1のハッシュ値 ブロック1のハッシュ値・・・内容
・ ・
・ ・
・ ・
ブロックNのハッシュ値 ブロックNのハッシュ値・・・内容
ブロックチェーン ストレージ領域
ブロック1のハッシュ値 ブロック1のハッシュ値・・・内容
・ ・
・ ・
・ ・
ブロックNのハッシュ値 ブロックNのハッシュ値・・・内容
図7Cの実施形態例では、ブロックチェーン770は、順序付けられたシーケンスで暗号によってリンクされた複数のブロック7781、7782、...778Nを含んでおり、N≧1である。ブロック7781、7782、...778Nをリンクするための使用される暗号化は、複数の鍵付きハッシュ関数または鍵なしハッシュ関数のいずれかであってよい。1つの実施形態では、ブロック7781、7782、...778Nは、ブロック内の情報に基づいて入力からnビットの英数字出力を生成するハッシュ関数の対象になる(nは256または別の数である)。そのようなハッシュ関数の例としては、SHA型(SHAは、セキュア・ハッシュ・アルゴリズム(Secured Hash Algorithm)を表す)アルゴリズム、マークル・ダンガード・アルゴリズム、HAIFAアルゴリズム、マークル・ツリー・アルゴリズム、ノンスに基づくアルゴリズム、および非衝突耐性PRFアルゴリズムが挙げられるが、これらに限定されない。別の実施形態では、ブロック7781、7782、...778Nは、ハッシュ関数とは異なる関数によって、暗号によってリンクされてよい。例示の目的で、以下では、ハッシュ関数(例えば、SHA-2)を参照して説明が行われる。
ブロックチェーン内のブロック7781、7782、...778Nの各々は、ヘッダー、ファイルのバージョン、および値を含む。ヘッダーおよび値は、ブロックチェーン内のハッシュ処理の結果として、ブロックごとに異なる。1つの実施形態では、値がヘッダーに含まれてよい。以下でさらに詳細に説明されるように、ファイルのバージョンは、元のファイルであるか、または元のファイルの異なるバージョンであってよい。
ブロックチェーン内の最初のブロック7781は、ジェネシス・ブロックと呼ばれ、ヘッダー7721、元のファイル7741、および初期値7761を含んでいる。ジェネシス・ブロックに使用される(実際には、その後のすべてのブロックにおいて使用される)ハッシュ処理方式は、変化してよい。例えば、最初のブロック7781内のすべての情報が一緒に同時にハッシュされてよく、または最初のブロック7781内の情報の各々または一部が別々にハッシュされ、その後、別々にハッシュされた部分のハッシュが実行されてよい。
ヘッダー7721は、1つまたは複数の初期パラメータを含んでよく、初期パラメータは、例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル、期間、媒体形式、ソース、記述的キーワード、あるいは元のファイル7741もしくはブロックチェーンまたはその両方に関連付けられたその他の情報、あるいはその組み合わせを含んでよい。ヘッダー7721は、自動的に(例えば、ブロックチェーン・ネットワーク管理ソフトウェアによって)生成されるか、またはブロックチェーンの参加者によって手動で生成されてよい。ブロックチェーン内の他のブロック7782~778N内のヘッダーとは異なり、ジェネシス・ブロック内のヘッダー7721は、単に前のブロックが存在しないため、前のブロックを参照しない。
ジェネシス・ブロック内の元のファイル7741は、例えば、ブロックチェーンに含まれる前の処理を伴うか、または伴わずに、デバイスによって捕捉されたデータであってよい。元のファイル7741は、システムのインターフェイスを介して、デバイス、媒体ソース、またはノードから受信される。元のファイル7741はメタデータに関連付けられ、メタデータは、例えば、ユーザ、デバイス、またはシステム・プロセッサあるいはその組み合わせによって、手動または自動のいずれかで、生成されてよい。メタデータは、元のファイル7741に関連して、最初のブロック7781に含まれてよい。
ジェネシス・ブロック内の値7761は、元のファイル7741の1つまたは複数の一意の属性に基づいて生成された初期値である。1つの実施形態では、1つまたは複数の一意の属性は、元のファイル7741のハッシュ値、元のファイル7741のメタデータ、およびファイルに関連付けられたその他の情報を含んでよい。1つの実装では、初期値7761は、以下の一意の属性に基づいてよい。
1)SHA-2によって元のファイルに対して計算されたハッシュ値
2)発信デバイスID
3)元のファイルの開始タイムスタンプ
4)元のファイルの初期ストレージ位置
5)元のファイルおよび関連するメタデータを現在制御するためのソフトウェアのブロックチェーン・ネットワーク・メンバーID
1)SHA-2によって元のファイルに対して計算されたハッシュ値
2)発信デバイスID
3)元のファイルの開始タイムスタンプ
4)元のファイルの初期ストレージ位置
5)元のファイルおよび関連するメタデータを現在制御するためのソフトウェアのブロックチェーン・ネットワーク・メンバーID
ブロックチェーン内の他のブロック7782~778Nも、ヘッダー、ファイル、および値を含む。しかし、最初のブロック7721とは異なり、他のブロック内のヘッダー7722~772Nの各々は、直前のブロックのハッシュ値を含む。直前のブロックのハッシュ値は、単に前のブロックのヘッダーのハッシュであってよく、または前のブロック全体のハッシュ値であってよい。先行するブロックのハッシュ値を残りのブロックの各々に含めることによって、矢印780によって示されているように、N番目のブロックからジェネシス・ブロック(および関連する元のファイル)まで戻りブロックごとのトレースを実行することができ、監査可能かつ変更不可能な証拠保全を確立する。
他のブロック内のヘッダー7722~772Nの各々は、一般に、他の情報(例えば、バージョン番号、タイムスタンプ、ノンス、ルート情報、難易度、合意プロトコル、あるいは対応するファイルもしくはブロックチェーンまたはその両方に関連付けられたその他のパラメータまたは情報、あるいはその組み合わせ)を含んでもよい。
他のブロック内のファイル7742~774Nは、例えば実行される処理の種類に応じて、ジェネシス・ブロック内の元のファイルと同じであってよく、または元のファイルの変更されたバージョンであってよい。実行される処理の種類は、ブロックごとに変化してよい。処理は、例えば、情報を編集するか、またはその他の方法で情報の内容を変更するか、情報をファイルから取り除くか、または情報をファイルに追加するなどの、先行するブロック内のファイルの任意の変更を含んでよい。
追加的または代替的に、処理は、先行するブロックからファイルを単にコピーすること、ファイルのストレージ位置を変更すること、1つまたは複数の先行するブロックからのファイルを分析すること、ファイルをあるストレージまたはメモリ位置から別のストレージまたはメモリ位置に移動すること、あるいはブロックチェーンのファイルもしくは関連するメタデータまたはその両方に対して動作を実行することを含んでよい。ファイルを分析することを含んでいる処理は、例えば、さまざまな分析、統計値、またはファイルに関連付けられたその他の情報を追加すること、含めること、またはその他の方法で関連付けることを含んでよい。
他のブロック内の他のブロック7762~776Nの各々に含まれる値は、実行された処理の結果として、一意の値であり、すべて異なっている。例えば、いずれか1つのブロック内の値は、前のブロック内の値の更新されたバージョンに対応する。この更新は、値が割り当てられたブロックのハッシュに反映される。したがって、ブロックの値は、ブロック内で何の処理が実行されたかの指示を提供し、ブロックチェーンを元のファイルまで戻りトレースすることも可能にする。このトレースは、ブロックチェーン全体を通じて、ファイルの証拠保全を確認する。
例えば、ファイル内で示されている人の識別情報を保護するために、前のブロック内のファイルの一部が編集されるか、遮断されるか、または画素化される場合について考える。この場合、編集されたファイルを含んでいるブロックは、例えば、編集がどのように実行されたか、誰が編集を実行したか、編集が発生したタイムスタンプなどの、編集されたファイルに関連付けられたメタデータを含むであろう。このメタデータがハッシュされ、値を形成してよい。ブロックのメタデータが、前のブロック内の値を形成するためにハッシュされた情報と異なっているため、値は、互いに異なっており、復号されたときに回復されてよい。
1つの実施形態では、次のうちのいずれか1つまたは複数が発生した場合に、現在のブロックの値を形成するように、前のブロックの値が更新されてよい(例えば、新しいハッシュ値が計算されてよい)。新しいハッシュ値は、この実施形態例では、以下に示された情報のすべてまたは一部をハッシュすることによって計算されてよい。
a)ファイルがいずれかの方法で処理された場合(例えば、ファイルが編集されたか、コピーされたか、変更されたか、アクセスされたか、またはその他の動作が実行された場合)に、新しいSHA-2によって計算されたハッシュ値
b)ファイルの新しいストレージ位置
c)ファイルに関連付けられている識別された新しいメタデータ
d)あるブロックチェーンの参加者から別のブロックチェーンの参加者へのファイルのアクセスまたは制御の移動
a)ファイルがいずれかの方法で処理された場合(例えば、ファイルが編集されたか、コピーされたか、変更されたか、アクセスされたか、またはその他の動作が実行された場合)に、新しいSHA-2によって計算されたハッシュ値
b)ファイルの新しいストレージ位置
c)ファイルに関連付けられている識別された新しいメタデータ
d)あるブロックチェーンの参加者から別のブロックチェーンの参加者へのファイルのアクセスまたは制御の移動
図7Dは、1つの実施形態例に従って、ブロックチェーン790内のブロックの構造を表すことができるブロックの実施形態を示している。ブロック(ブロックi)は、ヘッダー772i、ファイル774i、および値776iを含んでいる。
ヘッダー772iは、本明細書において説明された、前のブロック(ブロックi-1)のハッシュ値、および例えば情報の種類のいずれかであってよい、追加の参照情報(例えば、参照、特性、パラメータなどを含んでいるヘッダー情報)を含む。すべてのブロックは、当然ながらジェネシス・ブロックを除いて、前のブロックのハッシュを参照する。前のブロックのハッシュ値は、単に前のブロック内のヘッダーのハッシュであるか、またはファイルおよびメタデータを含む、前のブロック内の情報のすべてもしくは一部のハッシュであってよい。
ファイル774iは、データ1、データ2、...、データNなどの複数のデータを順に含んでいる。データは、データに関連付けられた内容または特性あるいはその両方を記述するメタデータ(メタデータ1、メタデータ2、...、メタデータN)でタグ付けされる。例えば、データごとのメタデータは、データのタイムスタンプ、データのプロセス、データに示された人またはその他の内容を示しているキーワード、またはファイルの有効性および内容を全体として確立し、特に、例えば以下で説明される実施形態に関連して説明されるように、デジタル証拠を使用するのに役立つことができるその他の特徴、あるいはその組み合わせを示すための情報を含んでよい。メタデータに加えて、各データは、改ざん、ファイル内のギャップ、およびファイル全体の連続的な参照を防ぐために、前のデータへの参照(参照1、参照2、...、参照N)でタグ付けされてよい。
メタデータが(例えば、スマート・コントラクトを介して)データに割り当てられた後に、ハッシュを変更せずにメタデータを変更することはできず、ハッシュの変更は、無効であると容易に識別され得る。したがって、メタデータは、ブロックチェーン内の参加者による使用のためにアクセスされてよい、情報のデータ・ログを作成する。
値776iは、前に説明された情報の種類のいずれかに基づいて計算されたハッシュ値またはその他の値である。例えば、いずれかの特定のブロック(ブロックi)の場合、そのブロックの値は、そのブロックに対して実行された処理(例えば、新しいハッシュ値、新しいストレージ位置、関連するファイルの新しいメタデータ、制御もしくはアクセスの移動、識別子、またはその他の動作もしくは追加される情報)を反映するように更新されてよい。各ブロック内の値が、ファイルおよびヘッダーのデータのメタデータから分離しているように示されているが、別の実施形態では、値は、このメタデータに部分的または全体的に基づいてよい。
ブロックチェーン770が形成された後に、いずれかの時点で、ブロック全体にわたる値のトランザクション履歴に関してブロックチェーンに問い合わせることによって、ファイルの変更不可能な証拠保全が取得されてよい。この問い合わせ手順または追跡手順は、最後に含まれたブロック(例えば、最後の(N番目の)ブロック)の値を復号することから開始してよく、その後、ジェネシス・ブロックに達し、元のファイルが回復されるまで、他のブロックの値を復号し続ける。復号は、さらに各ブロックでヘッダーおよびファイルならびに関連するメタデータを復号することを含んでもよい。
復号は、各ブロックで行われた暗号化の種類に基づいて実行される。この復号は、秘密鍵、公開鍵、または公開鍵と秘密鍵のペアの使用を含んでよい。例えば、非対称暗号化が使用される場合、ブロックチェーンの参加者またはネットワーク内のプロセッサが、既定のアルゴリズムを使用して公開鍵および秘密鍵のペアを生成してよい。公開鍵および秘密鍵は、何らかの数学的関係によって互いに関連付けられる。公開鍵は、他のユーザからメッセージを受信するためのアドレス(例えば、IPアドレスまたは自宅住所)として機能するように、パブリックに配布されてよい。秘密鍵は、秘密に保たれ、他のブロックチェーンの参加者に送信されるメッセージにデジタル署名するために使用される。署名は、受信者が送信者の公開鍵を使用して検証することができるように、メッセージに含まれる。このようにして、受信者は、送信者のみがこのメッセージを送信できたということを確信することができる。
鍵のペアを生成することは、ブロックチェーンにアカウントを作成することに類似しているが、実際は、どこにも登録する必要はない。また、ブロックチェーンに対して実行されたすべてのトランザクションが、秘密鍵を使用して送信者によってデジタル署名される。この署名は、アカウントの所有者のみが(スマート・コントラクトによって決定された許可の範囲内である場合に)ブロックチェーンのファイルを追跡して処理することができるということを保証する。
図8Aおよび8Bは、本明細書に組み込まれて使用されてよい、ブロックチェーンの追加の使用事例を示している。特に、図8Aは、機械学習(人工知能)データを格納するブロックチェーン810の例800を示している。機械学習は、新しいデータに対する正確な予測のための予測モデルを構築するために、大量の履歴データ(またはトレーニング・データ)に依存する。機械学習ソフトウェア(例えば、ニューラル・ネットワークなど)は、多くの場合、非直感的パターンを発見するために、数百万レコードを取捨選択することができる。
図8Aの例では、ホスト・プラットフォーム820が、アセット830の予測監視のための機械学習モデルを構築してデプロイする。ここで、ホスト・プラットフォーム820は、クラウド・プラットフォーム、工業用サーバ、Webサーバ、パーソナル・コンピュータ、ユーザ・デバイスなどであってよい。アセット830は、航空機、機関車、タービン、医療機器、石油ガス機器、ボート、船、車両などの、任意の種類のアセット(例えば、機械または機器など)であることができる。別の例として、アセット830は、株式、通貨、デジタル・コイン、保険などの、無形のアセットであってよい。
ブロックチェーン810は、機械学習モデルのトレーニング・プロセス802およびトレーニング済み機械学習モデルに基づく予測プロセス804の両方を大幅に改善するために使用され得る。例えば、802では、データを収集するためにデータ科学者/技術者またはその他のユーザを必要とするのではなく、アセット830自体によって(または、図示されていない中間物を介して)、ブロックチェーン810に関する履歴データが格納されてよい。これによって、予測モデルのトレーニングを実行するときにホスト・プラットフォーム820によって必要とされる収集時間を大幅に減らすことができる。例えば、スマート・コントラクトを使用して、データを、元の場所からブロックチェーン810に真っすぐに、直接かつ確実に転送することができる。スマート・コントラクトは、ブロックチェーン810を使用して、収集されたデータのセキュリティおよび所有権を保証することによって、アセットから、機械学習モデルを構築するためにデータを使用する個人に、データを直接送信することができる。これによって、アセット830間のデータの共有を可能にする。
収集されたデータは、合意メカニズムに基づいてブロックチェーン810に格納されてよい。合意メカニズムは、記録されているデータが検証されており、正確であることを保証するために、(許可されたノードを)制御する。記録されたデータは、タイムスタンプが付与され、暗号によって署名されており、変更不可能である。したがって、記録されたデータは、監査可能、透過的、かつ安全である。ブロックチェーンに直接書き込むIoTデバイスを追加することによって、特定の場合(すなわち、サプライ・チェーン、医療、物流などの場合)に、データが記録される頻度を増やし、その精度を向上させることができる。
さらに、収集されたデータに対する機械学習モデルのトレーニングは、ホスト・プラットフォーム820による一連の改良およびテストを必要とし得る。各改良およびテストは、機械学習モデルの知識を拡張するのに役立つように、追加データまたは以前に考慮されなかったデータに基づいてよい。802では、ホスト・プラットフォーム820によって、異なるトレーニング・ステップおよびテスト・ステップ(および関連するデータ)がブロックチェーン810に格納されてよい。機械学習モデルの各改良(例えば、変数、重みなどにおける変更)は、ブロックチェーン810に格納されてよい。これによって、モデルがどのようにトレーニングされたか、およびモデルをトレーニングするためにどのデータが使用されたかの検証可能な証明を提供する。さらに、ホスト・プラットフォーム820が最終的なトレーニング済みモデルを実現した場合、得られたモデルがブロックチェーン810に格納されてよい。
モデルがトレーニングされた後に、そのモデルは、活動中の環境にデプロイされてよく、最終的なトレーニング済み機械学習モデルの実行に基づく予測/決定を行うことができる。例えば、804で、機械学習モデルは、航空機、風力タービン、医療機械などのアセットのための状態監視保全(CBM:condition-based maintenance)に使用されてよい。この例では、アセット830からフィードバックされたデータが機械学習モデルに入力され、故障イベント、エラー・コードなどのイベント予測を行うために使用されてよい。ホスト・プラットフォーム820で機械学習モデルの実行によって行われた決定は、監査可能/検証可能な証明を提供するために、ブロックチェーン810に格納されてよい。1つの非限定的な例として、機械学習モデルは、アセット830の部品での将来の停止/故障を予測し、その部品を交換するように警告または通知を作成してよい。この決定の背後にあるデータが、ホスト・プラットフォーム820によってブロックチェーン810に格納されてよい。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン810で、またはブロックチェーン810に関して発生することができる。
ブロックチェーンの新しいトランザクションが新しいブロックに一緒に集められ、既存のハッシュ値に追加されることができる。次に、このハッシュ値が暗号化されて、新しいブロックの新しいハッシュを生成する。この新しいハッシュが、トランザクションが暗号化されるときなどに、トランザクションの次のリストに追加される。この結果は、先行するすべてのブロックのハッシュ値をそれぞれ含んでいるブロックのチェーンである。これらのブロックを格納するコンピュータは、ブロックのハッシュ値を定期的に比較し、それらのコンピュータがすべて合意していることを確認する。合意していないすべてのコンピュータは、問題を引き起こしているレコードを破棄する。この方法は、ブロックチェーンの改ざん防止を保証することに適しているが、完璧ではない。
このシステムを不正に操作する1つの方法は、不正なユーザが、ハッシュを変更しないような方法で、トランザクションのリストを自分の都合の良いように変更することである。これは、総当たり攻撃によって実行されることができ、言い換えると、レコードを変更し、結果を暗号化し、ハッシュ値が同じであるかどうかを確認することによって、実行されることができる。ハッシュ値が同じでない場合、一致するハッシュを見つけるまで、何度も繰り返して試みる。ブロックチェーンのセキュリティは、通常のコンピュータが、宇宙の年齢などの、全く非実用的な時間的尺度にわたってしかこの種の総当たり攻撃を実行できないという考えに基づく。それに対して、量子コンピュータは非常に高速(数千倍高速)であり、したがって、非常に大きい脅威をもたらす。
図8Bは、量子コンピューティング攻撃に対して保護するために量子鍵配送(QKD:quantum key distribution)を実装する量子セキュアなブロックチェーン852の例850を示している。この例では、ブロックチェーン・ユーザは、QKDを使用して互いの識別情報を検証することができる。この検証では、光子などの量子的粒子を使用して情報を送信し、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、送信者および受信者が、ブロックチェーンを介して、互いの識別情報を確認することができる。
図8Bの例では、4人のユーザ(854、856、858、および860)が存在している。ユーザのペアの各々は、ユーザ自身の間で秘密鍵862(すなわち、QKD)を共有することができる。この例には4つのノードが存在するため、ノードの6つのペアが存在し、したがって、QKDAB、QKDAC、QKDAD、QKDBC、QKDBD、およびQKDCDを含む6つの異なる秘密鍵862が使用される。各ペアは、光子などの量子的粒子を使用して情報を送信することによってQKDを作成することができ、この情報は、破壊することなく盗聴者によってコピーされることが不可能である。このようにして、ユーザのペアが互いの識別情報を確認することができる。
ブロックチェーン852の動作は、(i)トランザクションの作成、および(ii)新しいトランザクションを集めるブロックの構築という2つの手順に基づく。新しいトランザクションは、従来のブロックチェーン・ネットワークと同様に作成されてよい。各トランザクションは、送信者、受信者、作成時間、転送される量(または値)、送信者が操作のための資金を持っていることを正当化する参照トランザクションのリストに関する情報などを含んでよい。次に、このトランザクション・レコードは、すべての他のノードに送信され、未確認トランザクションのプールに入力される。ここで、2人の関係者(すなわち、854~860のうちのユーザのペア)が、共有秘密鍵862(QKD)を提供することによって、トランザクションを認証する。この量子署名は、すべてのトランザクションに添付され、改ざんを極めて困難にすることができる。各ノードは、ブロックチェーン852のローカル・コピーに関してトランザクションのエントリをチェックし、各トランザクションが十分な資金を持っていることを検証する。しかし、トランザクションはまだ確認されていない。
ブロックに対して従来のマイニング・プロセスを実行するのではなく、ブロードキャスト・プロトコルを使用して、分散された方法でブロックが作成されてよい。既定の期間(例えば、数秒、数分、数時間など)に、ネットワークがブロードキャスト・プロトコルをいずれかの未確認トランザクションに適用してよく、それによって、トランザクションの正しいバージョンに関してビザンチン合意(合意)を達成する。例えば、各ノードは、プライベートな値(その特定のノードのトランザクション・データ)を所有してよい。1回目に、ノードは、プライベートな値を互いに送信する。その後、ノードは、前回他のノードから受信した情報を伝達する。ここで、本物のノードが、新しいブロック内のトランザクションの完全なセットを作成することができる。この新しいブロックは、ブロックチェーン852に追加されることができる。1つの実施形態では、本明細書において説明されたか、または示されたか、あるいはその両方である特徴または動作あるいはその両方が、ブロックチェーン852で、またはブロックチェーン852に関して発生することができる。
図9は、本明細書において説明されたか、または示されたか、あるいはその両方である実施形態例のうちの1つまたは複数をサポートする例示的なシステム900を示している。システム900は、他の多数の汎用または特殊用途のコンピューティング・システム環境または構成で運用できるコンピュータ・システム/サーバ902を備えている。コンピュータ・システム/サーバ902と共に使用するのに適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例としては、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
コンピュータ・システム/サーバ902は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明されてよい。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含んでよい。コンピュータ・システム/サーバ902は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
図9に示すように、クラウド・コンピューティング・ノード900内のコンピュータ・システム/サーバ902は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ902のコンポーネントは、1つまたは複数のプロセッサまたはプロセッシング・ユニット904、システム・メモリ906、およびシステム・メモリ906を含むさまざまなシステム・コンポーネントをプロセッサ904に結合するバスを含んでよいが、これらに限定されない。
バスは、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、任意の複数の種類のバス構造のうちの1つまたは複数を表す。例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、およびPCI(Peripheral Component Interconnects)バスを含むが、これらに限定されない。
コンピュータ・システム/サーバ902は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム/サーバ902によってアクセスできる任意の使用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体を含む。システム・メモリ906は、1つの実施形態では、他の図のフロー図を実装する。システム・メモリ906は、ランダム・アクセス・メモリ(RAM:random access memory)910またはキャッシュ・メモリ912あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ902は、その他の取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含んでよい。単に例として、取り外し不可、不揮発性の磁気媒体(図示されておらず、通常は「ハード・ドライブ」と呼ばれる)に対する読み取りと書き込みを行うために、ストレージ・システム914を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、1つまたは複数のデータ媒体インターフェイスによってバスに接続することができる。下で詳細に示され、説明されるように、メモリ906は、本出願のさまざまな実施形態の機能を実行するように構成された一連の(例えば、少なくとも1つの)プログラム・モジュールを備える少なくとも1つのプログラム製品を含んでよい。
例えば、一連の(少なくとも1つの)プログラム・モジュール918を含んでいるプログラム/ユーティリティ916がメモリ906に格納されてよいが、これに限定されず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせの各々は、ネットワーク環境の実装を含んでよい。プログラム・モジュール918は、通常、本明細書に記載された本出願のさまざまな実施形態の機能または方法あるいはその両方を実行する。
当業者によって理解されるように、本出願の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化されてよい。したがって、本出願の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様を組み合わせる実施形態の形態を取ってよく、これらはすべて、本明細書では、一般に「回路」、「モジュール」、または「システム」と呼ばれてよい。さらに、本出願の形態は、コンピュータ可読プログラム・コードが具現化されている1つまたは複数のコンピュータ可読媒体において具現化されたコンピュータ・プログラム製品の形態を取ってよい。
また、コンピュータ・システム/サーバ902は、キーボード、ポインティング・デバイス、ディスプレイ922などの1つまたは複数の外部デバイス920、ユーザがコンピュータ・システム/サーバ902と情報をやりとりできるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ902が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信することもできる。このような通信は、I/Oインターフェイス924を介して行うことができる。さらに、コンピュータ・システム/サーバ902は、ローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組み合わせなどの1つまたは複数のネットワークと、ネットワーク・アダプタ926を介して通信することができる。図示されているように、ネットワーク・アダプタ926は、バスを介してコンピュータ・システム/サーバ902の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム/サーバ902と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
システム、方法、および非一過性コンピュータ可読媒体のうちの少なくとも1つの実施形態例が添付の図面において示され、前述の詳細な説明において説明されたが、本出願が、開示された実施形態に限定されず、以下の特許請求の範囲によって示され、定義されているように、多数の再配置、変更、および置き換えを行うことができるということが理解されるであろう。例えば、さまざまな図のシステムの機能は、本明細書に記載されたモジュールまたはコンポーネントのうちの1つまたは複数によって、あるいは分散アーキテクチャにおいて実行することができ、送信器、受信器、またはその両方のペアを含んでよい。例えば、個々のモジュールによって実行される機能の全部または一部は、それらのモジュールのうちの1つまたは複数によって実行されてよい。さらに、本明細書に記載された機能は、さまざまな時間に、さまざまなイベントに関して、モジュールまたはコンポーネントの内部または外部で、実行されてよい。また、さまざまなモジュールの間で送信される情報は、データ・ネットワーク、インターネット、音声ネットワーク、インターネット・プロトコル・ネットワーク、無線デバイス、有線デバイスのうちの少なくとも1つを介して、または複数のプロトコルを介して、あるいはその組み合わせを介して、モジュール間で送信され得る。また、モジュールのいずれかによって送信または受信されるメッセージは、直接的に、または他のモジュールのうちの1つまたは複数を介して、あるいはその両方によって、送信または受信されてよい。
当業者は、「システム」を、パーソナル・コンピュータ、サーバ、コンソール、PDA(personal digital assistant)、携帯電話、タブレット・コンピューティング・デバイス、スマートフォン、または任意のその他の適切なコンピューティング・デバイス、あるいはデバイスの組み合わせとして具現化できるということを、理解するであろう。「システム」によって実行されている前述の機能を提示することは、本出願の範囲を限定するように全く意図されておらず、多くの実施形態のうちの1つの例を提供するよう意図されている。実際に、本明細書で開示された方法、システム、および装置は、計算技術に一致する局所的な分散された形態で実装されてよい。
本明細書において説明されたシステムの特徴の一部が、それらの実装の独立性を特により強調するために、モジュールとして提示されていることに、注意するべきである。例えば、モジュールは、カスタム超大規模集積(VLSI:very large-scale integration)回路またはゲート・アレイ、論理チップなどの市販の半導体、トランジスタ、またはその他の個別のコンポーネントを備えているハードウェア回路として実装されてよい。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理デバイス、グラフィックス・プロセッシング・ユニットなどの、プログラム可能なハードウェア・デバイスにおいて実装されてもよい。
モジュールは、さまざまな種類のプロセッサによって実行するために、ソフトウェアにおいて少なくとも部分的に実装されてもよい。例えば、実行可能コードの識別されたユニットは、例えばオブジェクト、プロシージャ、または関数として編成されてよいコンピュータ命令の1つまたは複数の物理的または論理的ブロックを備えてよい。それにもかかわらず、識別されたモジュールの実行可能によって、物理的に一緒に配置される必要はなく、異なる位置に格納された異種の命令を含んでよく、それらの命令は、論理的に一緒に結合された場合にモジュールを備え、モジュールの規定された目的を達成する。さらに、モジュールはコンピュータ可読媒体に格納されてよく、このコンピュータ可読媒体は、例えば、ハード・ディスク・ドライブ、フラッシュ・デバイス、ランダム・アクセス・メモリ(RAM)、テープ、またはデータの格納に使用される任意のその他の媒体であってよい。
実際に、実行可能コードのモジュールは、単一の命令であるか、または多くの命令であることができ、複数の異なるコード・セグメントにわたって、異なるプログラム間および複数のメモリ・デバイスにまたがって、分散されてもよい。同様に、操作可能なデータが、識別され、本明細書ではモジュール内で示されてよく、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内で編成されてよい。操作可能なデータは、単一のデータ・セットとして収集されてよく、または異なるストレージ・デバイスを含む、異なる位置にわたって分散されてよく、システムまたはネットワーク上の単なる電子信号として、少なくとも部分的に存在してよい。
本明細書の図において概略的に説明され、示されているように、本出願のコンポーネントが、多種多様な異なる構成で配置および設計されてよいということが、容易に理解されるであろう。したがって、実施形態の詳細な説明は、請求される本出願の範囲を限定するよう意図されておらず、単に、本出願の選択された実施形態を表している。
当業者は、開示された順序とは異なる順序でステップを使用して、または開示された構成におけるハードウェア要素とは異なるハードウェア要素を使用して、あるいはその両方を使用して、前述の内容を実践できるということを、容易に理解するであろう。したがって、本出願は、これらの好ましい実施形態に基づいて説明されたが、特定の変更、変形、および代替の構造が明白であるということは、当業者にとって明らかであろう。
本出願の好ましい実施形態が説明されたが、説明された実施形態が単なる例であり、それらの実施形態と同等のものおよびそれらの実施形態に対する変更の完全な範囲(例えば、プロトコル、ハードウェア・デバイス、ソフトウェア・プラットフォームなど)で考えた場合、本出願の範囲が添付の特許請求の範囲のみによって定義されるべきであるということが、理解されるべきである。
Claims (20)
- 隣接するブロックチェーン・ピアおよび順序付けサービス・ノードのうちの1つまたは複数からブロックチェーンのブロックを受信するように構成されたネットワーク・インターフェイスと、
前記受信されたブロックのうちから前記ブロックチェーン内の同じスロットに属する2つ以上のブロックを識別し、前記2つ以上の識別されたブロックの同時の実行によって、前記2つ以上の識別されたブロックの妥当性を並列に確認し、前記2つ以上の識別されたブロックの妥当性確認に応答して、前記2つ以上の識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納するように構成されたプロセッサとを備える、装置。 - 前記同じスロットに属する前記2つ以上の識別されたブロックが、互いに対して非依存ブロックである、請求項1に記載の装置。
- 前記プロセッサが、前記2つ以上の識別されたブロックを、前記ブロックチェーン・ピアの2つ以上の独立したプロセッサ・コア上で並列に、同時に実行するように構成される、請求項1に記載の装置。
- 前記プロセッサが、起動プロセスおよび回復プロセスのうちの少なくとも1つのために、前記ローカルなブロックチェーン台帳を初期化するようにさらに構成される、請求項1に記載の装置。
- 前記プロセッサが、直前のスロットに属する前記ブロックチェーン上の2つ以上の他のブロックを識別するようにさらに構成される、請求項1に記載の装置。
- 前記プロセッサが、前記2つ以上の他のブロックが、前記同じスロットに属する前記2つ以上の識別されたブロックに依存していない場合、前記2つ以上の識別されたブロックと並列に、前記直前のスロットに属する前記2つ以上のブロックの妥当性を確認するようにさらに構成される、請求項5に記載の装置。
- 前記プロセッサが、前記受信されたブロックに格納されているハッシュ値に基づいて、前記受信されたブロックのうちのどのブロックが前記同じスロットに属しているかを識別するように構成される、請求項1に記載の装置。
- 前記プロセッサが、ブロックの直前のハッシュ値が、前記ブロックチェーン上の直前のスロットに格納された複数のブロックのハッシュの関数である場合に、前記ブロックが現在のスロットに属しているということを決定する、請求項1に記載の装置。
- 隣接するブロックチェーン・ピアおよび順序付けサービス・ノードのうちの1つまたは複数からブロックチェーンのブロックを受信することと、
前記受信されたブロックのうちから、前記ブロックチェーン内の同じスロットに属している2つ以上のブロックを識別することと、
前記2つ以上の識別されたブロックの同時の実行によって、前記2つ以上の識別されたブロックの妥当性を並列に確認することと、
前記2つ以上の識別されたブロックの妥当性確認に応答して、前記2つ以上の識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納することとを含む、方法。 - 前記同じスロットに属する前記2つ以上の識別されたブロックが、互いに対して非依存ブロックである、請求項9に記載の方法。
- 前記妥当性確認が、前記2つ以上の識別されたブロックを、前記ブロックチェーン・ピアの2つ以上の独立したプロセッサ・コア上で並列に、同時に実行することを含む、請求項9に記載の方法。
- 起動プロセスおよび回復プロセスのうちの少なくとも1つの間に、前記ローカルなブロックチェーン台帳を初期化することをさらに含む、請求項9に記載の方法。
- 直前のスロットに属する前記ブロックチェーン上の2つ以上の他のブロックを識別することをさらに含む、請求項9に記載の方法。
- 前記2つ以上の他のブロックが、前記同じスロットに属する前記2つ以上の識別されたブロックに依存していない場合、前記2つ以上の識別されたブロックと並列に、前記直前のスロットに属する前記2つ以上の他のブロックの妥当性を確認することをさらに含む、請求項13に記載の方法。
- 前記識別することが、前記受信されたブロックに格納されているハッシュ値に基づいて、前記受信されたブロックのうちのどのブロックが前記同じスロットに属しているかを識別することを含む、請求項9に記載の方法。
- 前記識別することが、ブロックの直前のハッシュ値が、前記ブロックチェーン上の直前のスロットに格納された複数のブロックのハッシュの関数である場合に、前記ブロックが現在のスロットに属しているということを決定することを含む、請求項9に記載の方法。
- 命令を含んでいる非一過性コンピュータ可読媒体であって、前記命令が、プロセッサによって読み取られたときに、前記プロセッサに、
隣接するブロックチェーン・ピアおよび順序付けサービス・ノードのうちの1つまたは複数からブロックチェーンのブロックを受信することと、
前記受信されたブロックのうちから、前記ブロックチェーン内の同じスロットに属している2つ以上のブロックを識別することと、
前記2つ以上の識別されたブロックの同時の実行によって、前記2つ以上の識別されたブロックの妥当性を並列に確認することと、
前記2つ以上の識別されたブロックの妥当性確認に応答して、前記2つ以上の識別されたブロックをブロックチェーン・ピアのローカルなブロックチェーン台帳に格納することとを含んでいる方法を実行させる、非一過性コンピュータ可読媒体。 - 前記同じスロットに属する前記2つ以上の識別されたブロックが、互いに対して非依存ブロックである、請求項17に記載の非一過性コンピュータ可読媒体。
- 前記妥当性確認が、前記2つ以上の識別されたブロックを、前記ブロックチェーン・ピアの2つ以上の独立したプロセッサ・コア上で並列に、同時に実行することを含む、請求項17に記載の非一過性コンピュータ可読媒体。
- 前記方法が、起動プロセスおよび回復プロセスのうちの少なくとも1つの間に、前記ローカルなブロックチェーン台帳を初期化することをさらに含む、請求項17に記載の非一過性コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/726,198 US11387979B2 (en) | 2019-12-23 | 2019-12-23 | Partially-ordered blockchain |
US16/726,198 | 2019-12-23 | ||
PCT/IB2020/061961 WO2021130607A1 (en) | 2019-12-23 | 2020-12-15 | Partially-ordered blockchain |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023506634A true JP2023506634A (ja) | 2023-02-17 |
Family
ID=76438961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022535969A Pending JP2023506634A (ja) | 2019-12-23 | 2020-12-15 | 部分的に順序付けられたブロックチェーン |
Country Status (8)
Country | Link |
---|---|
US (1) | US11387979B2 (ja) |
JP (1) | JP2023506634A (ja) |
KR (1) | KR20220044306A (ja) |
CN (1) | CN115210741B (ja) |
AU (1) | AU2020414467B2 (ja) |
DE (1) | DE112020005289B4 (ja) |
GB (1) | GB2606111A (ja) |
WO (1) | WO2021130607A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392467B2 (en) * | 2019-04-17 | 2022-07-19 | Microsoft Technology Licensing, Llc | Failover between decentralized identity stores |
US11387979B2 (en) * | 2019-12-23 | 2022-07-12 | International Business Machines Corporation | Partially-ordered blockchain |
JP7348878B2 (ja) * | 2020-04-22 | 2023-09-21 | 株式会社日立製作所 | 分散台帳管理方法、分散台帳システム、およびノード |
US11949788B1 (en) * | 2020-11-21 | 2024-04-02 | CodeNotary Inc. | System and method to shorten cryptographic proofs |
US11373170B1 (en) * | 2021-04-20 | 2022-06-28 | Dmg Blockchain Solutions, Inc. | Custom mempool protocol associated with processing of cryptographic events |
US11936794B2 (en) * | 2021-09-16 | 2024-03-19 | Masterard International Incorporated | Method and system for parallel processing of smart contracts in permissioned blockchains |
US11849039B2 (en) * | 2021-11-29 | 2023-12-19 | Circle Internet Financial Limited | Parallel block processing in blockchains |
US20230229321A1 (en) * | 2022-01-04 | 2023-07-20 | Bank Of America Corporation | System and method for improving memory resource allocations in database blocks using blockchain |
CN115225529B (zh) * | 2022-06-13 | 2024-03-01 | 广州大学 | 一种支持多类别区块链系统的高仿真平台 |
US20240061801A1 (en) * | 2022-08-16 | 2024-02-22 | Chain Reaction Ltd. | Cryptocurrency miner and multicast read |
US20240062170A1 (en) * | 2022-08-22 | 2024-02-22 | Chain Reaction Ltd. | Cryptocurrency miner and job distribution |
US11924351B1 (en) * | 2023-02-09 | 2024-03-05 | Hong Kong Applied Science and Technology Research Institute Company Limited | Optimizing data transactions and verification on a blockchain network |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5014268A (en) * | 1989-01-11 | 1991-05-07 | Alcatel Na, Inc. | Parallel time slot interchanger matrix and switch block module for use therewith |
US20160374442A1 (en) * | 2015-06-26 | 2016-12-29 | Huizhou Jincheng Creative Technology Co., Ltd. | New-type Non-contact information data shielding and anti-theft card sleeve device and Manufacturing Method thereof |
US10255108B2 (en) | 2016-01-26 | 2019-04-09 | International Business Machines Corporation | Parallel execution of blockchain transactions |
US10114980B2 (en) | 2016-07-21 | 2018-10-30 | Acronis International Gmbh | System and method for verifying data integrity using a blockchain network |
US20180158034A1 (en) | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Dynamic reordering of blockchain transactions to optimize performance and scalability |
CN106530088B (zh) | 2016-12-19 | 2023-11-17 | 杜伯仁 | 基于区块链安全节点对证券产品进行交易的方法 |
US11216874B2 (en) * | 2017-03-09 | 2022-01-04 | Jpmorgan Chase Bank, N.A. | Method and system for aggregating foreign exchange measures |
US10560270B2 (en) | 2017-05-03 | 2020-02-11 | International Business Machines Corporation | Optimal data storage configuration in a blockchain |
EP3669282B1 (en) * | 2017-09-20 | 2022-11-02 | Samsung Electronics Co., Ltd. | Method and apparatus for managing a service request in a blockchain network |
EP3468095A1 (en) | 2017-10-06 | 2019-04-10 | Siemens Aktiengesellschaft | Transaction selection device for selecting blockchain transactions |
GB201717499D0 (en) * | 2017-10-24 | 2017-12-06 | Copa Fin Ltd | Data storage and verification |
AU2019200933B1 (en) * | 2017-10-27 | 2019-05-23 | Digital Asset (Switzerland) GmbH | Computer system and method for distributed privacy-preserving shared execution of one or more processes |
US11257073B2 (en) * | 2018-01-31 | 2022-02-22 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing machine learning models for smart contracts using distributed ledger technologies in a cloud based computing environment |
CN108990002A (zh) | 2018-06-27 | 2018-12-11 | 柳州市蓝海数链科技有限公司 | 一种区块链数据处理方法、装置、终端及存储介质 |
CN109242681B (zh) | 2018-08-21 | 2020-11-20 | 京东数字科技控股有限公司 | 资产数据的存储方法、装置、设备及系统 |
US11379828B2 (en) * | 2018-08-30 | 2022-07-05 | International Business Machines Corporation | Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing |
US11521202B2 (en) * | 2018-08-30 | 2022-12-06 | International Business Machines Corporation | Distributed computing and storage network implementing high integrity, high bandwidth, low latency, secure processing |
WO2019072305A2 (en) | 2018-12-28 | 2019-04-18 | Alibaba Group Holding Limited | PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS |
US11387979B2 (en) * | 2019-12-23 | 2022-07-12 | International Business Machines Corporation | Partially-ordered blockchain |
US11223487B2 (en) * | 2020-03-19 | 2022-01-11 | Jinan University | Method and system for secure blockchain-based vehicular digital forensics |
CA3094539A1 (en) * | 2020-07-23 | 2022-01-23 | The Toronto-Dominion Bank | Multidirectional synchronization of confidential data using distributed ledgers |
-
2019
- 2019-12-23 US US16/726,198 patent/US11387979B2/en active Active
-
2020
- 2020-12-15 GB GB2210344.4A patent/GB2606111A/en not_active Withdrawn
- 2020-12-15 JP JP2022535969A patent/JP2023506634A/ja active Pending
- 2020-12-15 KR KR1020227006958A patent/KR20220044306A/ko unknown
- 2020-12-15 CN CN202080072521.1A patent/CN115210741B/zh active Active
- 2020-12-15 WO PCT/IB2020/061961 patent/WO2021130607A1/en active Application Filing
- 2020-12-15 AU AU2020414467A patent/AU2020414467B2/en active Active
- 2020-12-15 DE DE112020005289.3T patent/DE112020005289B4/de active Active
Also Published As
Publication number | Publication date |
---|---|
WO2021130607A1 (en) | 2021-07-01 |
GB202210344D0 (en) | 2022-08-31 |
US11387979B2 (en) | 2022-07-12 |
DE112020005289T5 (de) | 2022-09-01 |
US20210194672A1 (en) | 2021-06-24 |
KR20220044306A (ko) | 2022-04-07 |
CN115210741A (zh) | 2022-10-18 |
CN115210741B (zh) | 2023-06-16 |
GB2606111A (en) | 2022-10-26 |
AU2020414467A1 (en) | 2022-03-17 |
WO2021130607A8 (en) | 2022-07-28 |
AU2020414467B2 (en) | 2023-11-16 |
DE112020005289B4 (de) | 2024-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2020414467B2 (en) | Partially-ordered blockchain | |
US11694110B2 (en) | Aggregated machine learning verification for database | |
US11943237B2 (en) | Malicious peer identification for database block sequence | |
JP7499852B2 (ja) | 許可型ブロックチェーンのためのランダムなノード選択 | |
US11949691B2 (en) | Malicious peer identification | |
US11194555B2 (en) | Optimization of execution of smart contracts | |
JP2023504492A (ja) | データ・オブジェクトの効率的しきい値ストレージ | |
US11251938B2 (en) | Blockchain verification using non-consecutive blocks | |
JP2023520859A (ja) | ブロックチェーンのより高速なビュー変更 | |
US20200394470A1 (en) | Efficient verification of maching learning applications | |
AU2021210206B2 (en) | Index structure for blockchain ledger | |
US11489663B2 (en) | Correlation-based hash tree verification | |
US20220138550A1 (en) | Blockchain for artificial intelligence training | |
US11238029B2 (en) | Runtime endorsement policy determination | |
US11580098B2 (en) | Multi-client transaction validation | |
US11379472B2 (en) | Schema-based pruning of blockchain data | |
JP2023524715A (ja) | ネットワーク間の識別情報プロビジョニング | |
US20220329411A1 (en) | Blockchain processing offload to network device | |
JP2023520632A (ja) | データの保護のためのノイズ・トランザクション | |
JP2023530594A (ja) | 分散型データベースにおける許可されたイベント処理 | |
US20220292202A1 (en) | Verifiable training of model in untrusted environment | |
JP2023551458A (ja) | Oprfを介したブロックチェーンネットワークにおける鍵再生 | |
JP2023520634A (ja) | 文脈完全性の維持 | |
WO2023046409A1 (en) | Digital asset platform with hsm verification | |
JP2023551160A (ja) | Dltネットワークの自動化されたマージ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221226 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230525 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240613 |